{"version":3,"file":"index-CJ8pmkRR.cjs","sources":["../src/helpers/byte-encoding.ts","../src/constants/config.ts","../src/memory-volume.ts","../src/helpers/digest.ts","../src/memory-handler.ts","../src/persistence/wasm-module-cache.ts","../src/helpers/wasm-cache.ts","../src/helpers/wasm-cdn.ts","../src/threading/process-context.ts","../src/helpers/event-loop.ts","../src/constants/internal-vfs-paths.ts","../src/polyfills/events.ts","../src/polyfills/buffer.ts","../src/polyfills/stream.ts","../src/polyfills/fs.ts","../src/polyfills/path.ts","../src/polyfills/process.ts","../src/polyfills/net.ts","../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/utils.js","../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/_md.js","../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/_u64.js","../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/sha2.js","../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/sha512.js","../src/polyfills/sync-digest.ts","../src/polyfills/crypto.ts","../src/cross-origin.ts","../node_modules/.pnpm/set-cookie-parser@3.1.1/node_modules/set-cookie-parser/lib/set-cookie.js","../src/polyfills/fetch-response.ts","../src/polyfills/http.ts","../src/polyfills/https.ts","../src/polyfills/url.ts","../src/polyfills/querystring.ts","../src/polyfills/util.ts","../src/polyfills/tty.ts","../src/polyfills/os.ts","../src/constants/cdn-urls.ts","../node_modules/.pnpm/brotli@1.3.3/node_modules/brotli/dec/streams.js","../node_modules/.pnpm/brotli@1.3.3/node_modules/brotli/dec/bit_reader.js","../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../node_modules/.pnpm/brotli@1.3.3/node_modules/brotli/dec/dictionary.bin.js","../node_modules/.pnpm/brotli@1.3.3/node_modules/brotli/dec/dictionary-browser.js","../node_modules/.pnpm/brotli@1.3.3/node_modules/brotli/dec/dictionary.js","../node_modules/.pnpm/brotli@1.3.3/node_modules/brotli/dec/huffman.js","../node_modules/.pnpm/brotli@1.3.3/node_modules/brotli/dec/context.js","../node_modules/.pnpm/brotli@1.3.3/node_modules/brotli/dec/prefix.js","../node_modules/.pnpm/brotli@1.3.3/node_modules/brotli/dec/transform.js","../node_modules/.pnpm/brotli@1.3.3/node_modules/brotli/dec/decode.js","../node_modules/.pnpm/brotli@1.3.3/node_modules/brotli/decompress.js","../node_modules/.pnpm/pako@2.2.0/node_modules/pako/dist/pako.esm.mjs","../src/polyfills/zlib.ts","../src/polyfills/dns.ts","../src/polyfills/volume-registry.ts","../src/polyfills/chokidar.ts","../src/polyfills/ws.ts","../src/polyfills/fsevents.ts","../src/polyfills/readdirp.ts","../src/polyfills/module.ts","../src/polyfills/perf_hooks.ts","../src/polyfills/worker_threads.ts","../src/helpers/esbuild-engine.ts","../node_modules/.pnpm/acorn@8.17.0/node_modules/acorn/dist/acorn.mjs","../src/syntax-transforms.ts","../src/polyfills/esbuild.ts","../node_modules/.pnpm/acorn-jsx@5.3.2_acorn@8.17.0/node_modules/acorn-jsx/xhtml.js","../node_modules/.pnpm/acorn@8.17.0/node_modules/acorn/dist/acorn.js","../node_modules/.pnpm/acorn-jsx@5.3.2_acorn@8.17.0/node_modules/acorn-jsx/index.js","../src/polyfills/rollup.ts","../src/polyfills/v8.ts","../src/polyfills/readline.ts","../src/polyfills/tls.ts","../src/polyfills/http2.ts","../src/polyfills/cluster.ts","../src/polyfills/dgram.ts","../src/polyfills/vm.ts","../src/polyfills/inspector.ts","../src/polyfills/async_hooks.ts","../src/polyfills/domain.ts","../src/polyfills/diagnostics_channel.ts","../src/polyfills/console.ts","../src/polyfills/repl.ts","../src/polyfills/test.ts","../src/polyfills/trace_events.ts","../src/polyfills/wasi.ts","../src/polyfills/sea.ts","../node_modules/.pnpm/wa-sqlite@1.0.0/node_modules/wa-sqlite/src/sqlite-constants.js","../node_modules/.pnpm/wa-sqlite@1.0.0/node_modules/wa-sqlite/src/sqlite-api.js","../node_modules/.pnpm/wa-sqlite@1.0.0/node_modules/wa-sqlite/dist/wa-sqlite.mjs","../src/polyfills/sqlite.ts","../src/polyfills/quic.ts","../src/polyfills/lightningcss.ts","../src/helpers/napi-wasm-worker.ts","../src/polyfills/assert.ts","../src/polyfills/string_decoder.ts","../src/polyfills/timers.ts","../src/polyfills/punycode.ts","../src/polyfills/constants.ts","../node_modules/.pnpm/resolve.exports@2.0.3/node_modules/resolve.exports/dist/index.mjs","../src/script-engine.ts","../node_modules/.pnpm/comlink@4.4.2/node_modules/comlink/dist/esm/comlink.mjs","../src/worker-sandbox.ts","../src/iframe-sandbox.ts","../src/threading/process-handle.ts","../src/threading/shared-vfs.ts","../src/threading/sync-channel.ts","../src/threading/process-manager.ts","../src/threading/vfs-bridge.ts","../src/engine-factory.ts","../src/isolation-helpers.ts","../src/packages/registry-client.ts","../src/packages/version-resolver.ts","../src/threading/inline-worker.ts","../src/threading/worker-pool.ts","../src/threading/task-queue.ts","../src/threading/offload-types.ts","../src/threading/offload.ts","../src/persistence/tarball-cache.ts","../src/packages/archive-extractor.ts","../src/module-transformer.ts","../src/persistence/binary-snapshot.ts","../src/packages/installer.ts","../src/integrations/shared/errors.ts","../src/cookie-jar.ts","../src/request-proxy.ts","../src/sdk/nodepod-fs.ts","../src/sdk/nodepod-process.ts","../src/sdk/nodepod-terminal.ts","../src/shell/shell-completions.ts","../src/shell/shell-parser.ts","../src/shell/shell-helpers.ts","../src/shell/commands/file-ops.ts","../src/shell/commands/directory.ts","../src/shell/commands/text-processing.ts","../src/shell/commands/search.ts","../src/shell/commands/shell-env.ts","../src/shell/shell-builtins.ts","../src/sdk/nodepod-fs-client.ts","../src/persistence/idb-cache.ts","../src/sdk/nodepod.ts","../src/threading/worker-vfs.ts","../src/index.ts"],"sourcesContent":["// Chunked to avoid blowing the call stack on large buffers\r\nconst SEGMENT_SIZE = 8192;\r\n\r\nexport function bytesToBase64(data: Uint8Array): string {\r\n  const segments: string[] = [];\r\n  for (let offset = 0; offset < data.length; offset += SEGMENT_SIZE) {\r\n    const end = Math.min(offset + SEGMENT_SIZE, data.length);\r\n    let chunk = '';\r\n    for (let i = offset; i < end; i++) {\r\n      chunk += String.fromCharCode(data[i]);\r\n    }\r\n    segments.push(chunk);\r\n  }\r\n  return btoa(segments.join(''));\r\n}\r\n\r\nexport function base64ToBytes(encoded: string): Uint8Array {\r\n  const raw = atob(encoded);\r\n  const result = new Uint8Array(raw.length);\r\n  for (let i = 0; i < raw.length; i++) {\r\n    result[i] = raw.charCodeAt(i);\r\n  }\r\n  return result;\r\n}\r\n\r\n// Pre-computed hex lookup table\r\nconst HEX_TABLE: string[] = new Array(256);\r\nfor (let i = 0; i < 256; i++) {\r\n  HEX_TABLE[i] = (i < 16 ? '0' : '') + i.toString(16);\r\n}\r\n\r\nexport function bytesToHex(data: Uint8Array): string {\r\n  const chars = new Array(data.length);\r\n  for (let i = 0; i < data.length; i++) {\r\n    chars[i] = HEX_TABLE[data[i]];\r\n  }\r\n  return chars.join('');\r\n}\r\n\r\nexport function bytesToLatin1(data: Uint8Array): string {\r\n  const segments: string[] = [];\r\n  for (let offset = 0; offset < data.length; offset += SEGMENT_SIZE) {\r\n    const end = Math.min(offset + SEGMENT_SIZE, data.length);\r\n    let chunk = '';\r\n    for (let i = offset; i < end; i++) {\r\n      chunk += String.fromCharCode(data[i]);\r\n    }\r\n    segments.push(chunk);\r\n  }\r\n  return segments.join('');\r\n}\r\n","// Centralized config constants. Import from here instead of hardcoding.\r\n\r\n// ---------------------------------------------------------------------------\r\n// Runtime version strings\r\n// ---------------------------------------------------------------------------\r\n\r\nexport const VERSIONS = {\r\n  NODE: \"v22.12.0\",\r\n  NODE_BARE: \"22.12.0\",\r\n  NPM: \"10.0.0\",\r\n  PNPM: \"9.15.4\",\r\n  YARN: \"4.6.0\",\r\n  BUN: \"1.1.38\",\r\n  BUN_V: \"v1.1.38\",\r\n  GIT: \"2.43.0\",\r\n} as const;\r\n\r\nexport const NODE_SUB_VERSIONS = {\r\n  node: VERSIONS.NODE_BARE,\r\n  v8: \"11.3.244.8\",\r\n  uv: \"1.44.2\",\r\n  modules: \"115\",\r\n  openssl: \"3.0.13\",\r\n  napi: \"9\",\r\n  webcontainer: \"1.0.0\",\r\n} as const;\r\n\r\n// ---------------------------------------------------------------------------\r\n// npm registry\r\n// ---------------------------------------------------------------------------\r\n\r\nexport const NPM_REGISTRY_URL = \"https://registry.npmjs.org\";\r\nexport const NPM_REGISTRY_URL_SLASH = \"https://registry.npmjs.org/\";\r\n\r\n// ---------------------------------------------------------------------------\r\n// CDN (pako only -- the rest are in cdn-urls.ts)\r\n// ---------------------------------------------------------------------------\r\n\r\nexport const PINNED_PAKO = \"2.1.0\";\r\nexport const CDN_PAKO = `https://esm.sh/pako@${PINNED_PAKO}`;\r\n\r\n// ---------------------------------------------------------------------------\r\n// Module resolution file extensions\r\n// ---------------------------------------------------------------------------\r\n\r\nexport const RESOLVE_EXTENSIONS = [\r\n  \".js\",\r\n  \".ts\",\r\n  \".jsx\",\r\n  \".tsx\",\r\n  \".mjs\",\r\n  \".cjs\",\r\n  \".json\",\r\n] as const;\r\n\r\nexport const MAIN_FIELD_EXTENSIONS = [\r\n  \".js\",\r\n  \".ts\",\r\n  \".tsx\",\r\n  \".mts\",\r\n  \".jsx\",\r\n  \".json\",\r\n  \".mjs\",\r\n  \".cjs\",\r\n] as const;\r\n\r\nexport const INDEX_FILES = [\r\n  \"index.js\",\r\n  \"index.ts\",\r\n  \"index.tsx\",\r\n  \"index.mjs\",\r\n  \"index.cjs\",\r\n] as const;\r\n\r\nexport const IMPORTS_FIELD_EXTENSIONS = [\r\n  \".js\",\r\n  \".ts\",\r\n  \".cjs\",\r\n  \".mjs\",\r\n  \".json\",\r\n] as const;\r\n\r\nexport const ESBUILD_LOADER_MAP: Record<string, string> = {\r\n  \".ts\": \"ts\",\r\n  \".tsx\": \"tsx\",\r\n  \".js\": \"js\",\r\n  \".mjs\": \"js\",\r\n  \".cjs\": \"js\",\r\n  \".jsx\": \"jsx\",\r\n  \".json\": \"json\",\r\n  \".css\": \"css\",\r\n  \".map\": \"json\",\r\n  \".txt\": \"text\",\r\n  \".wasm\": \"file\",\r\n};\r\n\r\n// ---------------------------------------------------------------------------\r\n// Mock system environment\r\n// ---------------------------------------------------------------------------\r\n\r\nexport const MOCK_OS = {\r\n  PLATFORM: \"linux\" as const,\r\n  ARCH: \"x64\" as const,\r\n  TYPE: \"Linux\",\r\n  RELEASE: \"5.10.0\",\r\n  VERSION: \"#1 SMP\",\r\n  MACHINE: \"x86_64\",\r\n  HOSTNAME: \"localhost\",\r\n  HOMEDIR: \"/home/user\",\r\n  TMPDIR: \"/tmp\",\r\n  SHELL: \"/bin/bash\",\r\n  USERNAME: \"user\",\r\n  ENDIANNESS: \"LE\" as const,\r\n} as const;\r\n\r\nexport const MOCK_IDS = {\r\n  UID: 1000,\r\n  GID: 1000,\r\n} as const;\r\n\r\nexport const MOCK_FS = {\r\n  BLOCK_SIZE: 4096,\r\n  BLOCK_CALC_SIZE: 512,\r\n} as const;\r\n\r\nexport const MOCK_CPU = {\r\n  MODEL: \"Virtual CPU\",\r\n  SPEED: 2400,\r\n  COUNT: 2,\r\n} as const;\r\n\r\nexport const MOCK_MEMORY = {\r\n  TOTAL: 4 * 1024 * 1024 * 1024,\r\n  FREE: 2 * 1024 * 1024 * 1024,\r\n  RSS: 50 * 1024 * 1024,\r\n  HEAP_TOTAL: 30 * 1024 * 1024,\r\n  HEAP_USED: 20 * 1024 * 1024,\r\n  EXTERNAL: 1 * 1024 * 1024,\r\n} as const;\r\n\r\nexport const MOCK_LOADAVG: readonly [number, number, number] = [0.5, 0.5, 0.5];\r\n\r\nexport const DEFAULT_TERMINAL = {\r\n  COLUMNS: 80,\r\n  ROWS: 24,\r\n  FONT_SIZE: 13,\r\n} as const;\r\n\r\nexport const MOCK_PROCESS = {\r\n  PID: 1,\r\n  PPID: 0,\r\n  TITLE: \"node\",\r\n  EXEC_PATH: \"/usr/local/bin/node\",\r\n} as const;\r\n\r\n// ---------------------------------------------------------------------------\r\n// Default environment variables\r\n// ---------------------------------------------------------------------------\r\n\r\nexport const DEFAULT_ENV = {\r\n  NODE_ENV: \"development\",\r\n  PATH: \"/usr/local/bin:/usr/bin:/bin\",\r\n  HOME: \"/\",\r\n  SHELL: \"/bin/sh\",\r\n  TERM: \"xterm-256color\",\r\n  COLORTERM: \"truecolor\",\r\n  REQUIRES_WASM: \"true\",\r\n  npm_config_user_agent: `npm/${VERSIONS.NPM} node/${VERSIONS.NODE} linux x64 workspaces/false`,\r\n  npm_execpath: \"/usr/local/lib/node_modules/npm/bin/npm-cli.js\",\r\n  npm_node_execpath: \"/usr/local/bin/node\",\r\n} as const;\r\n\r\n// ---------------------------------------------------------------------------\r\n// Timeouts and limits\r\n// ---------------------------------------------------------------------------\r\n\r\nexport const TIMEOUTS = {\r\n  SYNC_OP: 120_000,\r\n  WAIT_LOOP_TICK: 200,\r\n  SW_HEARTBEAT: 20_000,\r\n  /** cap on navigator.serviceWorker.ready so init doesn't hang forever if the\r\n   *  SW gets stuck installing/waiting */\r\n  SW_ACTIVATION: 10_000,\r\n  WORKER_REAP_INTERVAL: 10_000,\r\n  WORKER_IDLE_TIMEOUT: 30_000,\r\n  WORKER_INIT_TIMEOUT: 30_000,\r\n  HTTP_KEEP_ALIVE: 5000,\r\n  HTTP_HEADERS: 60000,\r\n  // Cold-start budget for an in-process HTTP request handler. Some Vite plugin\r\n  // pipelines do real work the FIRST time a request arrives -- e.g. Tailwind\r\n  // v4's @tailwindcss/vite spins up @tailwindcss/oxide-wasm32-wasi, which\r\n  // compiles a large napi-rs WASM, instantiates emnapi's worker pool and runs\r\n  // an initial content scan -- while rolldown is still streaming dep-\r\n  // optimization tsfn calls into the same engine-worker thread. The combined\r\n  // load can push the first /src/index.css response past 2 minutes (issue #54),\r\n  // so we give it a generous ceiling. Subsequent requests hit warm caches and\r\n  // return in milliseconds.\r\n  HTTP_DISPATCH_SAFETY: 300000,\r\n} as const;\r\n\r\nexport const LIMITS = {\r\n  MAX_RESOLVE_DEPTH: 50,\r\n  MODULE_CACHE_MAX: 2000,\r\n  MAX_WORKERS_CAP: 6,\r\n} as const;\r\n\r\n// ---------------------------------------------------------------------------\r\n// Port range for net.Server.listen(0)\r\n// ---------------------------------------------------------------------------\r\n\r\nexport const PORT_RANGE = {\r\n  BASE: 3000,\r\n  RANGE: 1000,\r\n} as const;\r\n\r\n// ---------------------------------------------------------------------------\r\n// CDN\r\n// ---------------------------------------------------------------------------\r\n\r\nexport const DEFAULT_NODEPOD_CDN = \"https://unpkg.com/@scelar/nodepod/dist/index.js\";\r\n\r\n// ---------------------------------------------------------------------------\r\n// PIDs\r\n// ---------------------------------------------------------------------------\r\n\r\nexport const MOCK_PID = {\r\n  BASE: 1000,\r\n  RANGE: 10000,\r\n} as const;\r\n\r\n// ---------------------------------------------------------------------------\r\n// Shell constants\r\n// ---------------------------------------------------------------------------\r\n\r\nexport const LS_BLOCK_SIZE = 512;\r\nexport const YES_REPEAT_COUNT = 100;\r\n\r\n// ---------------------------------------------------------------------------\r\n// WebSocket opcodes (RFC 6455)\r\n// ---------------------------------------------------------------------------\r\n\r\nexport const WS_OPCODE = {\r\n  TEXT: 0x01,\r\n  BINARY: 0x02,\r\n  CLOSE: 0x08,\r\n  PING: 0x09,\r\n  PONG: 0x0a,\r\n} as const;\r\n","// in-memory VFS with POSIX-like semantics\r\n\r\nimport type { VolumeSnapshot, VolumeEntry } from './engine-types';\r\nimport { bytesToBase64, base64ToBytes } from './helpers/byte-encoding';\r\nimport { MOCK_IDS, MOCK_FS } from './constants/config';\r\nimport type { MemoryHandler } from './memory-handler';\r\n\r\nexport interface VolumeNode {\r\n  kind: 'file' | 'directory' | 'symlink';\r\n  content?: Uint8Array;\r\n  children?: Map<string, VolumeNode>;\r\n  target?: string;\r\n  modified: number;\r\n  // lean spawn mode: file known to exist (from a lazy readdir listing) but\r\n  // content not yet fetched from the main thread\r\n  lazy?: boolean;\r\n  // size reported by the main thread for a lazy stub (stat without content)\r\n  lazySize?: number;\r\n}\r\n\r\n// lean spawn mode: synchronous fallback consulted on read misses for paths\r\n// under lazy directory names (e.g. node_modules excluded from the spawn\r\n// snapshot). Implementations block on a SAB round-trip to the main thread.\r\nexport interface VolumeMissHandler {\r\n  readFile(path: string): Uint8Array | null;\r\n  readdir(path: string): Array<{ name: string; isDirectory: boolean }> | null;\r\n  stat(path: string): { isFile: boolean; isDirectory: boolean; size: number } | null;\r\n}\r\n\r\ntype FileChangeHandler = (filePath: string, content: string) => void;\r\ntype FileDeleteHandler = (filePath: string) => void;\r\ntype VolumeEventHandler = FileChangeHandler | FileDeleteHandler;\r\n\r\nexport interface FileStat {\r\n  isFile(): boolean;\r\n  isDirectory(): boolean;\r\n  isSymbolicLink(): boolean;\r\n  isBlockDevice(): boolean;\r\n  isCharacterDevice(): boolean;\r\n  isFIFO(): boolean;\r\n  isSocket(): boolean;\r\n  size: number;\r\n  mode: number;\r\n  mtime: Date;\r\n  atime: Date;\r\n  ctime: Date;\r\n  birthtime: Date;\r\n  mtimeMs: number;\r\n  atimeMs: number;\r\n  ctimeMs: number;\r\n  birthtimeMs: number;\r\n  nlink: number;\r\n  uid: number;\r\n  gid: number;\r\n  dev: number;\r\n  ino: number;\r\n  rdev: number;\r\n  blksize: number;\r\n  blocks: number;\r\n  atimeNs: bigint;\r\n  mtimeNs: bigint;\r\n  ctimeNs: bigint;\r\n  birthtimeNs: bigint;\r\n}\r\n\r\nexport type WatchEventKind = 'change' | 'rename';\r\nexport type WatchCallback = (event: WatchEventKind, name: string | null) => void;\r\n\r\nexport interface FileWatchHandle {\r\n  close(): void;\r\n  ref(): this;\r\n  unref(): this;\r\n  on(event: string, listener: (...args: unknown[]) => void): this;\r\n  once(event: string, listener: (...args: unknown[]) => void): this;\r\n  removeListener(event: string, listener: (...args: unknown[]) => void): this;\r\n  off(event: string, listener: (...args: unknown[]) => void): this;\r\n  addListener(event: string, listener: (...args: unknown[]) => void): this;\r\n  removeAllListeners(event?: string): this;\r\n  emit(event: string, ...args: unknown[]): boolean;\r\n}\r\n\r\n// minimal EventEmitter-based FSWatcher for fs.watch()\r\nclass FSWatcher implements FileWatchHandle {\r\n  private _listeners = new Map<string, Array<(...args: unknown[]) => void>>();\r\n  private _closeFn: (() => void) | null = null;\r\n  private _closed = false;\r\n\r\n  constructor(closeFn: () => void) {\r\n    this._closeFn = closeFn;\r\n  }\r\n\r\n  close(): void {\r\n    if (this._closed) return;\r\n    this._closed = true;\r\n    if (this._closeFn) { this._closeFn(); this._closeFn = null; }\r\n    // emit 'close' before clearing listeners so subscribers actually get it.\r\n    // chokidar and friends wait on this event to know the handle's released.\r\n    this.emit(\"close\");\r\n    this._listeners.clear();\r\n  }\r\n  ref(): this { return this; }\r\n  unref(): this { return this; }\r\n\r\n  on(event: string, listener: (...args: unknown[]) => void): this {\r\n    if (!this._listeners.has(event)) this._listeners.set(event, []);\r\n    this._listeners.get(event)!.push(listener);\r\n    return this;\r\n  }\r\n  addListener(event: string, listener: (...args: unknown[]) => void): this {\r\n    return this.on(event, listener);\r\n  }\r\n  once(event: string, listener: (...args: unknown[]) => void): this {\r\n    const wrapped = (...args: unknown[]) => {\r\n      this.removeListener(event, wrapped);\r\n      listener(...args);\r\n    };\r\n    return this.on(event, wrapped);\r\n  }\r\n  off(event: string, listener: (...args: unknown[]) => void): this {\r\n    return this.removeListener(event, listener);\r\n  }\r\n  removeListener(event: string, listener: (...args: unknown[]) => void): this {\r\n    const list = this._listeners.get(event);\r\n    if (list) {\r\n      const idx = list.indexOf(listener);\r\n      if (idx >= 0) list.splice(idx, 1);\r\n    }\r\n    return this;\r\n  }\r\n  removeAllListeners(event?: string): this {\r\n    if (event) this._listeners.delete(event);\r\n    else this._listeners.clear();\r\n    return this;\r\n  }\r\n  emit(event: string, ...args: unknown[]): boolean {\r\n    const list = this._listeners.get(event);\r\n    if (!list || list.length === 0) return false;\r\n    for (const fn of [...list]) {\r\n      try { fn(...args); } catch (e) { console.error('[FSWatcher] listener error:', e); }\r\n    }\r\n    return true;\r\n  }\r\n}\r\n\r\ninterface ActiveWatcher {\r\n  callback: WatchCallback;\r\n  recursive: boolean;\r\n  active: boolean;\r\n}\r\n\r\nexport interface SystemError extends Error {\r\n  code: string;\r\n  errno: number;\r\n  syscall: string;\r\n  path?: string;\r\n}\r\n\r\nexport function makeSystemError(\r\n  code: 'ENOENT' | 'ENOTDIR' | 'EISDIR' | 'EEXIST' | 'ENOTEMPTY',\r\n  syscall: string,\r\n  targetPath: string,\r\n  detail?: string\r\n): SystemError {\r\n  const errnoTable: Record<string, number> = {\r\n    ENOENT: -2,\r\n    ENOTDIR: -20,\r\n    EISDIR: -21,\r\n    EEXIST: -17,\r\n    ENOTEMPTY: -39,\r\n  };\r\n\r\n  const descriptions: Record<string, string> = {\r\n    ENOENT: 'no such file or directory',\r\n    ENOTDIR: 'not a directory',\r\n    EISDIR: 'is a directory',\r\n    EEXIST: 'file already exists',\r\n    ENOTEMPTY: 'directory not empty',\r\n  };\r\n\r\n  const err = new Error(\r\n    detail || `${code}: ${descriptions[code]}, ${syscall} '${targetPath}'`\r\n  ) as SystemError;\r\n  err.code = code;\r\n  err.errno = errnoTable[code];\r\n  err.syscall = syscall;\r\n  err.path = targetPath;\r\n  return err;\r\n}\r\n\r\nexport class MemoryVolume {\r\n  private tree: VolumeNode;\r\n  private textEncoder = new TextEncoder();\r\n  private textDecoder = new TextDecoder();\r\n  // lean spawn mode (see VolumeMissHandler)\r\n  private _missHandler: VolumeMissHandler | null = null;\r\n  private _lazyDirNames: string[] = [];\r\n  private _lazyListed = new Set<string>();\r\n  private _lazyNegative = new Set<string>();\r\n  // paths invalidated by main (large-file broadcast) — re-fetchable via the\r\n  // miss handler even when outside the lazy dir names\r\n  private _lazyInvalidated = new Set<string>();\r\n  // unique ino per path. rust walkdir with follow_links(true) tracks visited\r\n  // (dev,ino) pairs to break cycles, so ino=0 for everything makes it drop\r\n  // every file as \"already visited\".\r\n  private _inos = new Map<string, number>();\r\n  private _nextIno = 1;\r\n  private _inoFor(path: string): number {\r\n    let n = this._inos.get(path);\r\n    if (n === undefined) {\r\n      n = this._nextIno++;\r\n      this._inos.set(path, n);\r\n    }\r\n    return n;\r\n  }\r\n\r\n  // decode arbitrary input to UTF-8. handles Uint8Array (including SAB-backed\r\n  // which TextDecoder rejects directly), ArrayBuffer, other TypedArray views,\r\n  // and plain arrays from postMessage(Array.from(u8)). must never throw —\r\n  // broadcast calls this and a throw would hide writes from watchers\r\n  private decodeText(data: unknown): string {\r\n    try {\r\n      if (data == null) return \"\";\r\n      if (data instanceof Uint8Array) {\r\n        if (typeof SharedArrayBuffer !== \"undefined\" && data.buffer instanceof SharedArrayBuffer) {\r\n          const copy = new Uint8Array(data.byteLength);\r\n          copy.set(data);\r\n          return this.textDecoder.decode(copy);\r\n        }\r\n        return this.textDecoder.decode(data);\r\n      }\r\n      if (data instanceof ArrayBuffer) {\r\n        return this.textDecoder.decode(data);\r\n      }\r\n      if (ArrayBuffer.isView(data as any)) {\r\n        const view = data as ArrayBufferView;\r\n        const u8 = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\r\n        if (typeof SharedArrayBuffer !== \"undefined\" && u8.buffer instanceof SharedArrayBuffer) {\r\n          const copy = new Uint8Array(u8.byteLength);\r\n          copy.set(u8);\r\n          return this.textDecoder.decode(copy);\r\n        }\r\n        return this.textDecoder.decode(u8);\r\n      }\r\n      if (Array.isArray(data) || (typeof (data as any).length === \"number\")) {\r\n        const u8 = Uint8Array.from(data as ArrayLike<number>);\r\n        return this.textDecoder.decode(u8);\r\n      }\r\n      return String(data);\r\n    } catch {\r\n      return \"\";\r\n    }\r\n  }\r\n\r\n  // normalize any input shape that can reach writeFileSync (string, Uint8Array,\r\n  // ArrayBuffer, TypedArray view, plain array) into a proper Uint8Array\r\n  private toBytes(data: unknown): Uint8Array {\r\n    if (typeof data === \"string\") return this.textEncoder.encode(data);\r\n    if (data == null) return new Uint8Array(0);\r\n    if (data instanceof Uint8Array) return data;\r\n    if (data instanceof ArrayBuffer) return new Uint8Array(data);\r\n    if (ArrayBuffer.isView(data as any)) {\r\n      const view = data as ArrayBufferView;\r\n      return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\r\n    }\r\n    if (Array.isArray(data) || typeof (data as any).length === \"number\") {\r\n      return Uint8Array.from(data as ArrayLike<number>);\r\n    }\r\n    return this.textEncoder.encode(String(data));\r\n  }\r\n  private activeWatchers = new Map<string, Set<ActiveWatcher>>();\r\n  private subscribers = new Map<string, Set<VolumeEventHandler>>();\r\n  private _handler: MemoryHandler | null;\r\n\r\n  constructor(handler?: MemoryHandler | null) {\r\n    this._handler = handler ?? null;\r\n    this.tree = {\r\n      kind: 'directory',\r\n      children: new Map(),\r\n      modified: Date.now(),\r\n    };\r\n  }\r\n\r\n  // ---- Event subscription ----\r\n\r\n  on(event: 'change', handler: FileChangeHandler): this;\r\n  on(event: 'delete', handler: FileDeleteHandler): this;\r\n  on(event: string, handler: VolumeEventHandler): this {\r\n    if (!this.subscribers.has(event)) {\r\n      this.subscribers.set(event, new Set());\r\n    }\r\n    this.subscribers.get(event)!.add(handler);\r\n    return this;\r\n  }\r\n\r\n  off(event: 'change', handler: FileChangeHandler): this;\r\n  off(event: 'delete', handler: FileDeleteHandler): this;\r\n  off(event: string, handler: VolumeEventHandler): this {\r\n    const handlers = this.subscribers.get(event);\r\n    if (handlers) handlers.delete(handler);\r\n    return this;\r\n  }\r\n\r\n  private broadcast(event: 'change', path: string, content: string): void;\r\n  private broadcast(event: 'delete', path: string): void;\r\n  private broadcast(event: string, ...args: unknown[]): void {\r\n    const handlers = this.subscribers.get(event);\r\n    if (handlers) {\r\n      for (const handler of handlers) {\r\n        try {\r\n          (handler as (...a: unknown[]) => void)(...args);\r\n        } catch (e) {\r\n          console.error('Volume event handler error:', e);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  // ---- Stats ----\r\n\r\n  getStats(): { fileCount: number; totalBytes: number; dirCount: number; watcherCount: number } {\r\n    let fileCount = 0;\r\n    let totalBytes = 0;\r\n    let dirCount = 0;\r\n    const walk = (node: VolumeNode) => {\r\n      if (node.kind === 'file') {\r\n        fileCount++;\r\n        totalBytes += node.content?.byteLength ?? 0;\r\n      } else if (node.kind === 'directory') {\r\n        dirCount++;\r\n        if (node.children) {\r\n          for (const child of node.children.values()) walk(child);\r\n        }\r\n      }\r\n    };\r\n    walk(this.tree);\r\n    let watcherCount = 0;\r\n    for (const set of this.activeWatchers.values()) watcherCount += set.size;\r\n    return { fileCount, totalBytes, dirCount, watcherCount };\r\n  }\r\n\r\n  /** Clean up all watchers, subscribers, and global listeners. */\r\n  dispose(): void {\r\n    this.activeWatchers.clear();\r\n    this.subscribers.clear();\r\n    this.globalChangeListeners.clear();\r\n    if (this._handler) {\r\n      this._handler.statCache.clear();\r\n      this._handler.pathNormCache.clear();\r\n    }\r\n  }\r\n\r\n  // ---- Snapshot serialization ----\r\n\r\n  toSnapshot(excludePrefixes?: string[], excludeDirNames?: Set<string>): VolumeSnapshot {\r\n    const entries: VolumeEntry[] = [];\r\n    this.collectEntries('/', this.tree, entries, excludePrefixes, excludeDirNames);\r\n    return { entries };\r\n  }\r\n\r\n  private collectEntries(\r\n    currentPath: string,\r\n    node: VolumeNode,\r\n    result: VolumeEntry[],\r\n    excludePrefixes?: string[],\r\n    excludeDirNames?: Set<string>,\r\n  ): void {\r\n    if (excludePrefixes) {\r\n      for (const prefix of excludePrefixes) {\r\n        if (currentPath === prefix || currentPath.startsWith(prefix + '/')) return;\r\n      }\r\n    }\r\n\r\n    if (node.kind === 'file') {\r\n      let data = '';\r\n      if (node.content && node.content.length > 0) {\r\n        data = bytesToBase64(node.content);\r\n      }\r\n      result.push({ path: currentPath, kind: 'file', data });\r\n    } else if (node.kind === 'symlink') {\r\n      result.push({ path: currentPath, kind: 'file', data: `symlink:${node.target}` });\r\n    } else if (node.kind === 'directory') {\r\n      result.push({ path: currentPath, kind: 'directory' });\r\n      if (node.children) {\r\n        for (const [name, child] of node.children) {\r\n          // Skip excluded directory names at any depth (e.g. node_modules, .cache)\r\n          if (excludeDirNames && child.kind === 'directory' && excludeDirNames.has(name)) continue;\r\n          const childPath = currentPath === '/' ? `/${name}` : `${currentPath}/${name}`;\r\n          this.collectEntries(childPath, child, result, excludePrefixes, excludeDirNames);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  // restore from a binary snapshot (flat ArrayBuffer + offset manifest, used by workers)\r\n  static fromBinarySnapshot(snapshot: { manifest: Array<{ path: string; offset: number; length: number; isDirectory: boolean }>; data: ArrayBuffer }): MemoryVolume {\r\n    const vol = new MemoryVolume();\r\n    const fullData = new Uint8Array(snapshot.data);\r\n\r\n    // directories first, then by depth\r\n    const sorted = [...snapshot.manifest].sort((a, b) => {\r\n      if (a.isDirectory && !b.isDirectory) return -1;\r\n      if (!a.isDirectory && b.isDirectory) return 1;\r\n      return a.path.split(\"/\").length - b.path.split(\"/\").length;\r\n    });\r\n\r\n    for (const entry of sorted) {\r\n      if (entry.path === \"/\") continue;\r\n      if (entry.isDirectory) {\r\n        if (!vol.existsSync(entry.path)) vol.mkdirSync(entry.path, { recursive: true });\r\n      } else {\r\n        const parentDir = entry.path.substring(0, entry.path.lastIndexOf(\"/\")) || \"/\";\r\n        if (parentDir !== \"/\" && !vol.existsSync(parentDir)) {\r\n          vol.mkdirSync(parentDir, { recursive: true });\r\n        }\r\n        const content = fullData.slice(entry.offset, entry.offset + entry.length);\r\n        vol.writeInternal(vol.normalize(entry.path), content, false);\r\n      }\r\n    }\r\n\r\n    return vol;\r\n  }\r\n\r\n  static fromSnapshot(snapshot: VolumeSnapshot): MemoryVolume {\r\n    const vol = new MemoryVolume();\r\n\r\n    const sorted = snapshot.entries\r\n      .map((entry, idx) => ({ entry, depth: entry.path.split('/').length, idx }))\r\n      .sort((a, b) => a.depth - b.depth || a.idx - b.idx)\r\n      .map(x => x.entry);\r\n\r\n    for (const entry of sorted) {\r\n      if (entry.path === '/') continue;\r\n\r\n      if (entry.kind === 'directory') {\r\n        vol.mkdirSync(entry.path, { recursive: true });\r\n      } else if (entry.kind === 'file') {\r\n        let content: Uint8Array;\r\n        if (entry.data) {\r\n          content = base64ToBytes(entry.data);\r\n        } else {\r\n          content = new Uint8Array(0);\r\n        }\r\n        const parentDir = entry.path.substring(0, entry.path.lastIndexOf('/')) || '/';\r\n        if (parentDir !== '/' && !vol.existsSync(parentDir)) {\r\n          vol.mkdirSync(parentDir, { recursive: true });\r\n        }\r\n        vol.writeInternal(vol.normalize(entry.path), content, false);\r\n      }\r\n    }\r\n\r\n    return vol;\r\n  }\r\n\r\n  // ---- Path utilities ----\r\n\r\n  private normalize(p: string): string {\r\n    if (this._handler) {\r\n      const cached = this._handler.pathNormCache.get(p);\r\n      if (cached !== undefined) return cached;\r\n    }\r\n    if (!p.startsWith('/')) p = '/' + p;\r\n    const parts = p.split('/').filter(Boolean);\r\n    const resolved: string[] = [];\r\n    for (const part of parts) {\r\n      if (part === '..') resolved.pop();\r\n      else if (part !== '.') resolved.push(part);\r\n    }\r\n    const result = '/' + resolved.join('/');\r\n    if (this._handler) this._handler.pathNormCache.set(p, result);\r\n    return result;\r\n  }\r\n\r\n  // assumes pre-normalized input (starts with '/', no '..' or double slashes)\r\n  private segments(p: string): string[] {\r\n    if (p === '/') return [];\r\n    // skip leading '/' then split — no empty strings since input is normalized\r\n    return p.substring(1).split('/');\r\n  }\r\n\r\n  private parentOf(p: string): string {\r\n    const idx = p.lastIndexOf('/');\r\n    return idx <= 0 ? '/' : p.slice(0, idx);\r\n  }\r\n\r\n  private nameOf(p: string): string {\r\n    const idx = p.lastIndexOf('/');\r\n    return p.slice(idx + 1);\r\n  }\r\n\r\n  private locateRaw(p: string): VolumeNode | undefined {\r\n    if (p === '/') return this.tree;\r\n    let current = this.tree;\r\n    let start = 1; // skip leading '/'\r\n    const len = p.length;\r\n    while (start < len) {\r\n      let end = p.indexOf('/', start);\r\n      if (end === -1) end = len;\r\n      const seg = p.substring(start, end);\r\n      start = end + 1;\r\n      if (current.kind === 'symlink') {\r\n        const resolved = this.locateRaw(current.target!);\r\n        if (!resolved || resolved.kind !== 'directory') return undefined;\r\n        current = resolved;\r\n      }\r\n      if (current.kind !== 'directory' || !current.children) return undefined;\r\n      const child = current.children.get(seg);\r\n      if (!child) return undefined;\r\n      current = child;\r\n    }\r\n    return current;\r\n  }\r\n\r\n  private locate(p: string): VolumeNode | undefined {\r\n    const node = this.locateRaw(p);\r\n    if (!node) return undefined;\r\n    // follow final symlink\r\n    if (node.kind === 'symlink') {\r\n      return this.locate(node.target!);\r\n    }\r\n    return node;\r\n  }\r\n\r\n  private ensureDir(p: string): VolumeNode {\r\n    if (p === '/') return this.tree;\r\n    let current = this.tree;\r\n    let start = 1; // skip leading '/'\r\n    const len = p.length;\r\n    while (start < len) {\r\n      let end = p.indexOf('/', start);\r\n      if (end === -1) end = len;\r\n      const seg = p.substring(start, end);\r\n      start = end + 1;\r\n      if (!current.children) current.children = new Map();\r\n      let child = current.children.get(seg);\r\n      if (!child) {\r\n        child = { kind: 'directory', children: new Map(), modified: Date.now() };\r\n        current.children.set(seg, child);\r\n      } else if (child.kind !== 'directory') {\r\n        throw new Error(`ENOTDIR: not a directory, '${p}'`);\r\n      }\r\n      current = child;\r\n    }\r\n    return current;\r\n  }\r\n\r\n  // same as ensureDir but returns the list of segments it actually had to create,\r\n  // so mkdirSync(recursive: true) can fire one addDir per new dir and stay quiet\r\n  // about ones that already existed\r\n  private ensureDirTracked(p: string): { node: VolumeNode; created: string[] } {\r\n    const created: string[] = [];\r\n    if (p === '/') return { node: this.tree, created };\r\n    let current = this.tree;\r\n    let start = 1;\r\n    const len = p.length;\r\n    let currentPath = '';\r\n    while (start < len) {\r\n      let end = p.indexOf('/', start);\r\n      if (end === -1) end = len;\r\n      const seg = p.substring(start, end);\r\n      start = end + 1;\r\n      currentPath = currentPath + '/' + seg;\r\n      if (!current.children) current.children = new Map();\r\n      let child = current.children.get(seg);\r\n      if (!child) {\r\n        child = { kind: 'directory', children: new Map(), modified: Date.now() };\r\n        current.children.set(seg, child);\r\n        created.push(currentPath);\r\n      } else if (child.kind !== 'directory') {\r\n        throw new Error(`ENOTDIR: not a directory, '${p}'`);\r\n      }\r\n      current = child;\r\n    }\r\n    return { node: current, created };\r\n  }\r\n\r\n  // ---- Internal write ----\r\n\r\n  // expects pre-normalized path\r\n  private writeInternal(norm: string, data: string | Uint8Array | unknown, notify: boolean): void {\r\n    const lastSlash = norm.lastIndexOf('/');\r\n    const parentPath = lastSlash <= 0 ? '/' : norm.slice(0, lastSlash);\r\n    const name = norm.slice(lastSlash + 1);\r\n\r\n    if (!name) {\r\n      throw new Error(`EISDIR: illegal operation on a directory, '${norm}'`);\r\n    }\r\n\r\n    const parent = this.ensureDir(parentPath);\r\n    const existed = parent.children!.has(name);\r\n    // callers may pass any buffer-ish shape (ArrayBuffer, TypedArray view, plain\r\n    // array from postMessage, Node Buffer). storing anything but a Uint8Array\r\n    // would break every downstream read\r\n    const bytes = this.toBytes(data);\r\n\r\n    parent.children!.set(name, {\r\n      kind: 'file',\r\n      content: bytes,\r\n      modified: Date.now(),\r\n    });\r\n\r\n    if (this._handler) this._handler.invalidateStat(norm);\r\n\r\n    if (notify) {\r\n      this.triggerWatchers(norm, existed ? 'change' : 'rename');\r\n      // pass the normalized Uint8Array so decodeText gets a real BufferSource —\r\n      // raw `data` would throw for plain arrays\r\n      this.broadcast('change', norm, typeof data === 'string' ? data : this.decodeText(bytes));\r\n      this.notifyGlobalListeners(norm, existed ? 'change' : 'add');\r\n    }\r\n  }\r\n\r\n  // ---- Lean spawn mode: lazy hydration ----\r\n\r\n  // Install a synchronous fallback for read misses under the given directory\r\n  // names (lean spawn snapshots exclude e.g. node_modules). Pass null to\r\n  // remove. Only read paths consult the handler; writes behave as always.\r\n  setMissHandler(handler: VolumeMissHandler | null, lazyDirNames: string[] = []): void {\r\n    this._missHandler = handler;\r\n    this._lazyDirNames = handler ? lazyDirNames.slice() : [];\r\n    this._lazyListed.clear();\r\n    this._lazyNegative.clear();\r\n  }\r\n\r\n  // Main broadcast said this file changed but was too large to ship bytes.\r\n  // Drop the local copy silently; the next read pulls fresh content through\r\n  // the miss handler (works for any path, not just lazy dir names). No-op\r\n  // without a miss handler — better a stale copy than a lost file.\r\n  markLazyInvalidated(p: string): void {\r\n    if (!this._missHandler) return;\r\n    const norm = this.normalize(p);\r\n    this._lazyNegative.delete(norm);\r\n    this._lazyInvalidated.add(norm);\r\n    const parent = this.locate(this.parentOf(norm));\r\n    if (parent?.kind === 'directory') {\r\n      parent.children?.delete(this.nameOf(norm));\r\n    }\r\n    if (this._handler) this._handler.invalidateStat(norm);\r\n  }\r\n\r\n  private _isUnderLazy(norm: string): boolean {\r\n    if (!this._missHandler) return false;\r\n    if (this._lazyInvalidated.has(norm)) return true;\r\n    if (this._lazyDirNames.length === 0) return false;\r\n    let start = 1;\r\n    const len = norm.length;\r\n    while (start < len) {\r\n      let end = norm.indexOf('/', start);\r\n      if (end === -1) end = len;\r\n      const seg = norm.substring(start, end);\r\n      if (this._lazyDirNames.includes(seg)) return true;\r\n      start = end + 1;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  // Try to materialize a missing path from the miss handler. Returns true if\r\n  // the path exists locally afterwards. Never notifies watchers (hydration is\r\n  // not a \"change\" — the file logically existed all along).\r\n  private _hydrateMiss(norm: string): boolean {\r\n    if (!this._missHandler || this._lazyNegative.has(norm) || !this._isUnderLazy(norm)) {\r\n      return false;\r\n    }\r\n    let st: { isFile: boolean; isDirectory: boolean; size: number } | null = null;\r\n    try { st = this._missHandler.stat(norm); } catch { st = null; }\r\n    if (!st) {\r\n      this._lazyNegative.add(norm);\r\n      return false;\r\n    }\r\n    if (st.isDirectory) {\r\n      this.ensureDir(norm);\r\n      return true;\r\n    }\r\n    let bytes: Uint8Array | null = null;\r\n    try { bytes = this._missHandler.readFile(norm); } catch { bytes = null; }\r\n    if (bytes === null) {\r\n      this._lazyNegative.add(norm);\r\n      return false;\r\n    }\r\n    this.writeInternal(norm, bytes, false);\r\n    return true;\r\n  }\r\n\r\n  // Fetch content for a lazy stub created by _lazyList.\r\n  private _hydrateStub(norm: string, node: VolumeNode): void {\r\n    node.lazy = false;\r\n    if (!this._missHandler) return;\r\n    let bytes: Uint8Array | null = null;\r\n    try { bytes = this._missHandler.readFile(norm); } catch { bytes = null; }\r\n    node.content = bytes ?? new Uint8Array(0);\r\n    node.lazySize = undefined;\r\n    node.modified = Date.now();\r\n    if (this._handler) this._handler.invalidateStat(norm);\r\n  }\r\n\r\n  // Fetch only the size for a lazy stub — stat must not pull full content\r\n  // (readdir { withFileTypes } stats every entry; fetching content there\r\n  // would turn one listing into N content round-trips).\r\n  private _hydrateStubStat(norm: string, node: VolumeNode): void {\r\n    if (!this._missHandler || node.lazySize !== undefined) return;\r\n    let st: { isFile: boolean; isDirectory: boolean; size: number } | null = null;\r\n    try { st = this._missHandler.stat(norm); } catch { st = null; }\r\n    node.lazySize = st?.size ?? 0;\r\n  }\r\n\r\n  // Fully hydrate a subtree before structural changes (rename/link). A moved\r\n  // lazy stub would otherwise try to fetch content under its NEW path, which\r\n  // the main thread doesn't know about.\r\n  private _hydrateTree(norm: string, node: VolumeNode): void {\r\n    if (!this._missHandler) return;\r\n    if (node.kind === 'file') {\r\n      if (node.lazy) this._hydrateStub(norm, node);\r\n      return;\r\n    }\r\n    if (node.kind !== 'directory') return;\r\n    this._lazyList(norm, node);\r\n    if (!node.children) return;\r\n    for (const [name, child] of node.children) {\r\n      const childPath = norm === '/' ? `/${name}` : `${norm}/${name}`;\r\n      this._hydrateTree(childPath, child);\r\n    }\r\n  }\r\n\r\n  // Populate a lazy directory's listing once: union of proxy entries and any\r\n  // local children (local wins). Subdirs become unlisted lazy dirs; files\r\n  // become content-less stubs hydrated on first read/stat.\r\n  private _lazyList(norm: string, node: VolumeNode): void {\r\n    if (!this._missHandler || this._lazyListed.has(norm) || !this._isUnderLazy(norm)) {\r\n      return;\r\n    }\r\n    this._lazyListed.add(norm);\r\n    let entries: Array<{ name: string; isDirectory: boolean }> | null = null;\r\n    try { entries = this._missHandler.readdir(norm); } catch { entries = null; }\r\n    if (!entries) return;\r\n    if (!node.children) node.children = new Map();\r\n    for (const entry of entries) {\r\n      if (node.children.has(entry.name)) continue;\r\n      node.children.set(\r\n        entry.name,\r\n        entry.isDirectory\r\n          ? { kind: 'directory', children: new Map(), modified: Date.now() }\r\n          : { kind: 'file', lazy: true, modified: Date.now() },\r\n      );\r\n    }\r\n  }\r\n\r\n  // ---- Public synchronous API ----\r\n\r\n  existsSync(p: string): boolean {\r\n    const norm = this.normalize(p);\r\n    let node = this.locate(norm);\r\n    if (!node && this._missHandler && this._hydrateMiss(norm)) {\r\n      node = this.locate(norm);\r\n    }\r\n    return node !== undefined;\r\n  }\r\n\r\n  statSync(p: string): FileStat {\r\n    const norm = this.normalize(p);\r\n\r\n    if (this._handler) {\r\n      const cached = this._handler.statCache.get(norm);\r\n      if (cached !== undefined) return cached;\r\n    }\r\n\r\n    let node = this.locate(norm);\r\n    if (!node && this._missHandler && this._hydrateMiss(norm)) {\r\n      node = this.locate(norm);\r\n    }\r\n    if (!node) throw makeSystemError('ENOENT', 'stat', p);\r\n    if (node.lazy) this._hydrateStubStat(norm, node);\r\n\r\n    const fileSize =\r\n      node.kind === 'file' ? (node.content?.length ?? node.lazySize ?? 0) : 0;\r\n    const ts = node.modified;\r\n\r\n    const result: FileStat = {\r\n      isFile: () => node.kind === 'file',\r\n      isDirectory: () => node.kind === 'directory',\r\n      isSymbolicLink: () => false,\r\n      isBlockDevice: () => false,\r\n      isCharacterDevice: () => false,\r\n      isFIFO: () => false,\r\n      isSocket: () => false,\r\n      size: fileSize,\r\n      mode: node.kind === 'directory' ? 0o755 : 0o644,\r\n      mtime: new Date(ts),\r\n      atime: new Date(ts),\r\n      ctime: new Date(ts),\r\n      birthtime: new Date(ts),\r\n      mtimeMs: ts,\r\n      atimeMs: ts,\r\n      ctimeMs: ts,\r\n      birthtimeMs: ts,\r\n      nlink: 1,\r\n      uid: MOCK_IDS.UID,\r\n      gid: MOCK_IDS.GID,\r\n      dev: 0,\r\n      ino: this._inoFor(norm),\r\n      rdev: 0,\r\n      blksize: MOCK_FS.BLOCK_SIZE,\r\n      blocks: Math.ceil(fileSize / MOCK_FS.BLOCK_CALC_SIZE),\r\n      atimeNs: BigInt(ts) * 1000000n,\r\n      mtimeNs: BigInt(ts) * 1000000n,\r\n      ctimeNs: BigInt(ts) * 1000000n,\r\n      birthtimeNs: BigInt(ts) * 1000000n,\r\n    };\r\n\r\n    if (this._handler) this._handler.statCache.set(norm, result);\r\n    return result;\r\n  }\r\n\r\n  lstatSync(p: string): FileStat {\r\n    const norm = this.normalize(p);\r\n    let node = this.locateRaw(norm);\r\n    if (!node && this._missHandler && this._hydrateMiss(norm)) {\r\n      node = this.locateRaw(norm);\r\n    }\r\n    if (!node) throw makeSystemError('ENOENT', 'lstat', p);\r\n\r\n    if (node.kind === 'symlink') {\r\n      const ts = node.modified;\r\n      return {\r\n        isFile: () => false,\r\n        isDirectory: () => false,\r\n        isSymbolicLink: () => true,\r\n        isBlockDevice: () => false,\r\n        isCharacterDevice: () => false,\r\n        isFIFO: () => false,\r\n        isSocket: () => false,\r\n        size: (node.target || '').length,\r\n        mode: 0o120777,\r\n        mtime: new Date(ts),\r\n        atime: new Date(ts),\r\n        ctime: new Date(ts),\r\n        birthtime: new Date(ts),\r\n        mtimeMs: ts,\r\n        atimeMs: ts,\r\n        ctimeMs: ts,\r\n        birthtimeMs: ts,\r\n        nlink: 1,\r\n        uid: 1000,\r\n        gid: 1000,\r\n        dev: 0,\r\n        ino: this._inoFor(norm),\r\n        rdev: 0,\r\n        blksize: MOCK_FS.BLOCK_SIZE,\r\n        blocks: 0,\r\n        atimeNs: BigInt(ts) * 1000000n,\r\n        mtimeNs: BigInt(ts) * 1000000n,\r\n        ctimeNs: BigInt(ts) * 1000000n,\r\n        birthtimeNs: BigInt(ts) * 1000000n,\r\n      };\r\n    }\r\n    return this.statSync(norm);\r\n  }\r\n\r\n  readFileSync(p: string): Uint8Array;\r\n  readFileSync(p: string, encoding: 'utf8' | 'utf-8'): string;\r\n  readFileSync(p: string, encoding?: 'utf8' | 'utf-8'): Uint8Array | string {\r\n    const norm = this.normalize(p);\r\n    let node = this.locate(norm);\r\n    if (!node && this._missHandler && this._hydrateMiss(norm)) {\r\n      node = this.locate(norm);\r\n    }\r\n    if (!node) throw makeSystemError('ENOENT', 'open', p);\r\n    if (node.kind !== 'file') throw makeSystemError('EISDIR', 'read', p);\r\n    if (node.lazy) this._hydrateStub(norm, node);\r\n\r\n    const bytes = node.content || new Uint8Array(0);\r\n    if (encoding === 'utf8' || encoding === 'utf-8') {\r\n      return this.decodeText(bytes);\r\n    }\r\n    return bytes;\r\n  }\r\n\r\n  writeFileSync(p: string, data: string | Uint8Array | ArrayBuffer | ArrayBufferView | unknown): void {\r\n    const norm = this.normalize(p);\r\n    this.writeInternal(norm, data, true);\r\n  }\r\n\r\n  // runtime cache write — skips watcher and onGlobalChange notifications\r\n  writeCacheSync(p: string, data: string | Uint8Array | ArrayBuffer | ArrayBufferView | unknown): void {\r\n    const norm = this.normalize(p);\r\n    this.writeInternal(norm, data, false);\r\n  }\r\n\r\n  mkdirSync(p: string, options?: { recursive?: boolean }): void {\r\n    const norm = this.normalize(p);\r\n\r\n    if (options?.recursive) {\r\n      const { created } = this.ensureDirTracked(norm);\r\n      for (const path of created) {\r\n        if (this._handler) this._handler.invalidateStat(path);\r\n        this.triggerWatchers(path, 'rename');\r\n        this.notifyGlobalListeners(path, 'addDir');\r\n      }\r\n      return;\r\n    }\r\n\r\n    const parentPath = this.parentOf(norm);\r\n    const name = this.nameOf(norm);\r\n    if (!name) return;\r\n\r\n    const parent = this.locate(parentPath);\r\n    if (!parent) throw makeSystemError('ENOENT', 'mkdir', parentPath);\r\n    if (parent.kind !== 'directory') throw makeSystemError('ENOTDIR', 'mkdir', parentPath);\r\n    if (parent.children!.has(name)) throw makeSystemError('EEXIST', 'mkdir', p);\r\n\r\n    parent.children!.set(name, {\r\n      kind: 'directory',\r\n      children: new Map(),\r\n      modified: Date.now(),\r\n    });\r\n\r\n    if (this._handler) this._handler.invalidateStat(norm);\r\n    this.triggerWatchers(norm, 'rename');\r\n    this.notifyGlobalListeners(norm, 'addDir');\r\n  }\r\n\r\n  readdirSync(p: string): string[] {\r\n    const norm = this.normalize(p);\r\n    let node = this.locate(norm);\r\n    if (!node && this._missHandler && this._hydrateMiss(norm)) {\r\n      node = this.locate(norm);\r\n    }\r\n    if (!node) throw makeSystemError('ENOENT', 'scandir', p);\r\n    if (node.kind !== 'directory') throw makeSystemError('ENOTDIR', 'scandir', p);\r\n    if (this._missHandler) this._lazyList(norm, node);\r\n    return Array.from(node.children!.keys());\r\n  }\r\n\r\n  unlinkSync(p: string): void {\r\n    const norm = this.normalize(p);\r\n    const parentPath = this.parentOf(norm);\r\n    const name = this.nameOf(norm);\r\n\r\n    const parent = this.locate(parentPath);\r\n    if (!parent || parent.kind !== 'directory') throw makeSystemError('ENOENT', 'unlink', p);\r\n\r\n    const target = parent.children!.get(name);\r\n    if (!target) throw makeSystemError('ENOENT', 'unlink', p);\r\n    if (target.kind !== 'file') throw makeSystemError('EISDIR', 'unlink', p);\r\n\r\n    parent.children!.delete(name);\r\n    if (this._handler) this._handler.invalidateStat(norm);\r\n    this.triggerWatchers(norm, 'rename');\r\n    this.broadcast('delete', norm);\r\n    this.notifyGlobalListeners(norm, 'unlink');\r\n  }\r\n\r\n  rmdirSync(p: string): void {\r\n    const norm = this.normalize(p);\r\n    const parentPath = this.parentOf(norm);\r\n    const name = this.nameOf(norm);\r\n\r\n    if (!name) throw new Error(`EPERM: operation not permitted, '${p}'`);\r\n\r\n    const parent = this.locate(parentPath);\r\n    if (!parent || parent.kind !== 'directory') throw makeSystemError('ENOENT', 'rmdir', p);\r\n\r\n    const target = parent.children!.get(name);\r\n    if (!target) throw makeSystemError('ENOENT', 'rmdir', p);\r\n    if (target.kind !== 'directory') throw makeSystemError('ENOTDIR', 'rmdir', p);\r\n    if (target.children!.size > 0) throw makeSystemError('ENOTEMPTY', 'rmdir', p);\r\n\r\n    parent.children!.delete(name);\r\n    if (this._handler) this._handler.invalidateStat(norm);\r\n\r\n    // fire watchers so recursive `/`-watchers learn the directory is gone.\r\n    // without this, a worker's fs.rmSync() silently drops rmdir events — main\r\n    // thread's VFSBridge never sees the empty subdir and later renames into\r\n    // that location fail with ENOTEMPTY\r\n    this.triggerWatchers(norm, 'rename');\r\n    this.broadcast('delete', norm);\r\n    this.notifyGlobalListeners(norm, 'unlink');\r\n  }\r\n\r\n  renameSync(from: string, to: string): void {\r\n    const normFrom = this.normalize(from);\r\n    const normTo = this.normalize(to);\r\n\r\n    const fromParent = this.locate(this.parentOf(normFrom));\r\n    if (!fromParent || fromParent.kind !== 'directory') throw makeSystemError('ENOENT', 'rename', from);\r\n\r\n    const fromName = this.nameOf(normFrom);\r\n    let node = fromParent.children!.get(fromName);\r\n    if (!node && this._missHandler && this._hydrateMiss(normFrom)) {\r\n      node = fromParent.children!.get(fromName);\r\n    }\r\n    if (!node) throw makeSystemError('ENOENT', 'rename', from);\r\n\r\n    // a moved lazy subtree would hydrate under the wrong (new) path — pull\r\n    // everything local before the move\r\n    if (this._missHandler) this._hydrateTree(normFrom, node);\r\n\r\n    const toParent = this.ensureDir(this.parentOf(normTo));\r\n    const toName = this.nameOf(normTo);\r\n\r\n    // collect all descendant paths BEFORE the move so we can fire events for\r\n    // each child after. needed for directory renames (e.g. Vite's atomic move\r\n    // of `/.vite/deps_temp_XXX` → `/.vite/deps`) — otherwise watchers and\r\n    // cross-thread VFS sync never see that files moved\r\n    const descendantPairs: Array<{ oldPath: string; newPath: string; isDir: boolean }> = [];\r\n    if (node.kind === 'directory') {\r\n      const walk = (n: VolumeNode, oldBase: string, newBase: string) => {\r\n        if (n.kind !== 'directory' || !n.children) return;\r\n        for (const [childName, childNode] of n.children) {\r\n          const childOld = oldBase === '/' ? '/' + childName : oldBase + '/' + childName;\r\n          const childNew = newBase === '/' ? '/' + childName : newBase + '/' + childName;\r\n          descendantPairs.push({\r\n            oldPath: childOld,\r\n            newPath: childNew,\r\n            isDir: childNode.kind === 'directory',\r\n          });\r\n          if (childNode.kind === 'directory') walk(childNode, childOld, childNew);\r\n        }\r\n      };\r\n      walk(node, normFrom, normTo);\r\n    }\r\n\r\n    // if the target already exists, remove it first — matches POSIX rename\r\n    // semantics that Vite relies on for the deps_temp → deps commit\r\n    if (toParent.children!.has(toName)) {\r\n      toParent.children!.delete(toName);\r\n    }\r\n    fromParent.children!.delete(fromName);\r\n    toParent.children!.set(toName, node);\r\n\r\n    if (this._handler) {\r\n      this._handler.invalidateStat(normFrom);\r\n      this._handler.invalidateStat(normTo);\r\n      for (const pair of descendantPairs) {\r\n        this._handler.invalidateStat(pair.oldPath);\r\n        this._handler.invalidateStat(pair.newPath);\r\n      }\r\n    }\r\n\r\n    // fire watcher + global-listener events for the top-level move\r\n    this.triggerWatchers(normFrom, 'rename');\r\n    this.triggerWatchers(normTo, 'rename');\r\n    this.notifyGlobalListeners(normFrom, 'unlink');\r\n    this.notifyGlobalListeners(normTo, 'add');\r\n\r\n    // fire events for every descendant so recursive watchers (the worker→main\r\n    // vfs-sync handler, HMR watchers, etc.) see every moved path. without this,\r\n    // Vite's atomic commit `deps_temp_XXX` → `deps` is invisible to the main\r\n    // thread's VFS and all bundled dep files stay at the old path\r\n    for (const pair of descendantPairs) {\r\n      this.triggerWatchers(pair.oldPath, 'rename');\r\n      this.triggerWatchers(pair.newPath, 'rename');\r\n      this.notifyGlobalListeners(pair.oldPath, 'unlink');\r\n      this.notifyGlobalListeners(pair.newPath, 'add');\r\n    }\r\n  }\r\n\r\n  accessSync(p: string, _mode?: number): void {\r\n    if (!this.existsSync(p)) throw makeSystemError('ENOENT', 'access', p);\r\n  }\r\n\r\n  copyFileSync(src: string, dest: string): void {\r\n    const data = this.readFileSync(src);\r\n    this.writeFileSync(dest, data);\r\n  }\r\n\r\n  realpathSync(p: string): string {\r\n    const norm = this.normalize(p);\r\n    let node = this.locateRaw(norm);\r\n    if (!node && this._missHandler && this._hydrateMiss(norm)) {\r\n      node = this.locateRaw(norm);\r\n    }\r\n    if (!node) throw makeSystemError('ENOENT', 'realpath', p);\r\n    if (node.kind === 'symlink') {\r\n      return this.realpathSync(node.target!);\r\n    }\r\n    return norm;\r\n  }\r\n\r\n  symlinkSync(target: string, linkPath: string, _type?: string): void {\r\n    const normLink = this.normalize(linkPath);\r\n    const parentPath = this.parentOf(normLink);\r\n    const name = this.nameOf(normLink);\r\n\r\n    if (!name) throw new Error(`EISDIR: invalid symlink path, '${linkPath}'`);\r\n    const parent = this.ensureDir(parentPath);\r\n\r\n    parent.children!.set(name, {\r\n      kind: 'symlink',\r\n      target: this.normalize(target),\r\n      modified: Date.now(),\r\n    });\r\n\r\n    if (this._handler) this._handler.invalidateStat(normLink);\r\n    this.triggerWatchers(normLink, 'rename');\r\n    this.notifyGlobalListeners(normLink, 'add');\r\n  }\r\n\r\n  readlinkSync(p: string): string {\r\n    const norm = this.normalize(p);\r\n    const node = this.locateRaw(norm);\r\n    if (!node) throw makeSystemError('ENOENT', 'readlink', p);\r\n    if (node.kind !== 'symlink') {\r\n      const err = new Error(`EINVAL: invalid argument, readlink '${p}'`) as SystemError;\r\n      err.code = 'EINVAL';\r\n      err.errno = -22;\r\n      err.syscall = 'readlink';\r\n      err.path = p;\r\n      throw err;\r\n    }\r\n    return node.target!;\r\n  }\r\n\r\n  linkSync(existingPath: string, newPath: string): void {\r\n    const normExisting = this.normalize(existingPath);\r\n    const existing = this.locate(normExisting);\r\n    if (!existing) throw makeSystemError('ENOENT', 'link', existingPath);\r\n    if (existing.kind !== 'file') throw makeSystemError('EISDIR', 'link', existingPath);\r\n    // sharing a content-less stub would alias undefined content\r\n    if (existing.lazy) this._hydrateStub(normExisting, existing);\r\n\r\n    const normNew = this.normalize(newPath);\r\n    const parentPath = this.parentOf(normNew);\r\n    const name = this.nameOf(normNew);\r\n    const parent = this.ensureDir(parentPath);\r\n\r\n    parent.children!.set(name, {\r\n      kind: 'file',\r\n      content: existing.content,\r\n      modified: existing.modified,\r\n    });\r\n\r\n    if (this._handler) this._handler.invalidateStat(normNew);\r\n    this.triggerWatchers(normNew, 'rename');\r\n    this.notifyGlobalListeners(normNew, 'add');\r\n  }\r\n\r\n  chmodSync(_p: string, _mode: number): void {\r\n    // no-op besides existence check, VFS doesn't track permissions\r\n    const norm = this.normalize(_p);\r\n    if (!this.locate(norm)) throw makeSystemError('ENOENT', 'chmod', _p);\r\n  }\r\n\r\n  chownSync(_p: string, _uid: number, _gid: number): void {\r\n    const norm = this.normalize(_p);\r\n    if (!this.locate(norm)) throw makeSystemError('ENOENT', 'chown', _p);\r\n  }\r\n\r\n  appendFileSync(p: string, data: string | Uint8Array | unknown): void {\r\n    const norm = this.normalize(p);\r\n    let existing: Uint8Array = new Uint8Array(0);\r\n    const node = this.locate(norm);\r\n    if (node && node.kind === 'file') {\r\n      if (node.lazy) this._hydrateStub(norm, node);\r\n      existing = node.content || new Uint8Array(0);\r\n    }\r\n    const bytes = this.toBytes(data);\r\n    const combined = new Uint8Array(existing.length + bytes.length);\r\n    combined.set(existing);\r\n    combined.set(bytes, existing.length);\r\n    this.writeInternal(norm, combined, true);\r\n  }\r\n\r\n  truncateSync(p: string, len: number = 0): void {\r\n    const norm = this.normalize(p);\r\n    const node = this.locate(norm);\r\n    if (!node) throw makeSystemError('ENOENT', 'truncate', p);\r\n    if (node.kind !== 'file') throw makeSystemError('EISDIR', 'truncate', p);\r\n    if (node.lazy) this._hydrateStub(norm, node);\r\n    const content = node.content || new Uint8Array(0);\r\n    if (len < content.length) {\r\n      node.content = content.slice(0, len);\r\n    } else if (len > content.length) {\r\n      const bigger = new Uint8Array(len);\r\n      bigger.set(content);\r\n      node.content = bigger;\r\n    }\r\n    node.modified = Date.now();\r\n\r\n    if (this._handler) this._handler.invalidateStat(norm);\r\n    this.triggerWatchers(norm, 'change');\r\n    this.notifyGlobalListeners(norm, 'change');\r\n  }\r\n\r\n  // ---- Async wrappers ----\r\n\r\n  readFile(\r\n    p: string,\r\n    optionsOrCb?: { encoding?: string } | ((err: Error | null, data?: Uint8Array | string) => void),\r\n    cb?: (err: Error | null, data?: Uint8Array | string) => void\r\n  ): void {\r\n    const actualCb = typeof optionsOrCb === 'function' ? optionsOrCb : cb;\r\n    const opts = typeof optionsOrCb === 'object' ? optionsOrCb : undefined;\r\n    try {\r\n      const data = opts?.encoding\r\n        ? this.readFileSync(p, opts.encoding as 'utf8')\r\n        : this.readFileSync(p);\r\n      if (actualCb) setTimeout(() => actualCb(null, data), 0);\r\n    } catch (err) {\r\n      if (actualCb) setTimeout(() => actualCb(err as Error), 0);\r\n    }\r\n  }\r\n\r\n  stat(p: string, cb?: (err: Error | null, stats?: FileStat) => void): void {\r\n    try {\r\n      const stats = this.statSync(p);\r\n      if (cb) setTimeout(() => cb(null, stats), 0);\r\n    } catch (err) {\r\n      if (cb) setTimeout(() => cb(err as Error), 0);\r\n    }\r\n  }\r\n\r\n  lstat(p: string, cb?: (err: Error | null, stats?: FileStat) => void): void {\r\n    this.stat(p, cb);\r\n  }\r\n\r\n  readdir(\r\n    p: string,\r\n    optionsOrCb?: { withFileTypes?: boolean } | ((err: Error | null, files?: string[]) => void),\r\n    cb?: (err: Error | null, files?: string[]) => void\r\n  ): void {\r\n    const actualCb = typeof optionsOrCb === 'function' ? optionsOrCb : cb;\r\n    try {\r\n      const files = this.readdirSync(p);\r\n      if (actualCb) setTimeout(() => actualCb(null, files), 0);\r\n    } catch (err) {\r\n      if (actualCb) setTimeout(() => actualCb(err as Error), 0);\r\n    }\r\n  }\r\n\r\n  realpath(p: string, cb?: (err: Error | null, resolved?: string) => void): void {\r\n    try {\r\n      const resolved = this.realpathSync(p);\r\n      if (cb) setTimeout(() => cb(null, resolved), 0);\r\n    } catch (err) {\r\n      if (cb) setTimeout(() => cb(err as Error), 0);\r\n    }\r\n  }\r\n\r\n  access(p: string, modeOrCb?: number | ((err: Error | null) => void), cb?: (err: Error | null) => void): void {\r\n    const actualCb = typeof modeOrCb === 'function' ? modeOrCb : cb;\r\n    try {\r\n      this.accessSync(p);\r\n      if (actualCb) setTimeout(() => actualCb(null), 0);\r\n    } catch (err) {\r\n      if (actualCb) setTimeout(() => actualCb(err as Error), 0);\r\n    }\r\n  }\r\n\r\n  // ---- File watchers ----\r\n\r\n  watch(\r\n    target: string,\r\n    optionsOrCb?: { persistent?: boolean; recursive?: boolean; encoding?: string } | WatchCallback,\r\n    cb?: WatchCallback\r\n  ): FileWatchHandle {\r\n    const norm = this.normalize(target);\r\n\r\n    let opts: { persistent?: boolean; recursive?: boolean } = {};\r\n    let actualCb: WatchCallback | undefined;\r\n\r\n    if (typeof optionsOrCb === 'function') {\r\n      actualCb = optionsOrCb;\r\n    } else if (optionsOrCb) {\r\n      opts = optionsOrCb;\r\n      actualCb = cb;\r\n    } else {\r\n      actualCb = cb;\r\n    }\r\n\r\n    const handle = new FSWatcher(() => {\r\n      watcher.active = false;\r\n      const set = this.activeWatchers.get(norm);\r\n      if (set) {\r\n        set.delete(watcher);\r\n        if (set.size === 0) this.activeWatchers.delete(norm);\r\n      }\r\n    });\r\n\r\n    const watcher: ActiveWatcher = {\r\n      callback: (event, filename) => {\r\n        if (actualCb) actualCb(event, filename);\r\n        handle.emit('change', event, filename);\r\n      },\r\n      recursive: opts.recursive || false,\r\n      active: true,\r\n    };\r\n\r\n    if (!this.activeWatchers.has(norm)) {\r\n      this.activeWatchers.set(norm, new Set());\r\n    }\r\n    this.activeWatchers.get(norm)!.add(watcher);\r\n\r\n    return handle;\r\n  }\r\n\r\n  private triggerWatchers(changedPath: string, event: WatchEventKind): void {\r\n    // changedPath is already normalized by the caller — no need to re-normalize\r\n    const norm = changedPath;\r\n    const lastSlash = norm.lastIndexOf('/');\r\n    const fileName = norm.slice(lastSlash + 1);\r\n    const directParent = lastSlash <= 0 ? '/' : norm.slice(0, lastSlash);\r\n\r\n    const direct = this.activeWatchers.get(norm);\r\n    if (direct) {\r\n      for (const w of direct) {\r\n        if (w.active) {\r\n          try { w.callback(event, fileName); } catch (e) { console.error('Watcher error:', e); }\r\n        }\r\n      }\r\n    }\r\n\r\n    // walk up the tree to notify parent/recursive watchers\r\n    let current = directParent;\r\n    let relative = fileName;\r\n\r\n    while (current) {\r\n      const parentWatchers = this.activeWatchers.get(current);\r\n      if (parentWatchers) {\r\n        for (const w of parentWatchers) {\r\n          if (w.active) {\r\n            if (w.recursive || current === directParent) {\r\n              try { w.callback(event, relative); } catch (e) { console.error('Watcher error:', e); }\r\n            }\r\n          }\r\n        }\r\n      }\r\n\r\n      if (current === '/') break;\r\n      const idx = current.lastIndexOf('/');\r\n      const currentName = current.slice(idx + 1);\r\n      relative = currentName + '/' + relative;\r\n      current = idx <= 0 ? '/' : current.slice(0, idx);\r\n    }\r\n\r\n  }\r\n\r\n  // ---- Global change listeners (for chokidar/HMR bridging) ----\r\n  private globalChangeListeners = new Set<(path: string, event: string) => void>();\r\n\r\n  onGlobalChange(cb: (path: string, event: string) => void): () => void {\r\n    this.globalChangeListeners.add(cb);\r\n    return () => { this.globalChangeListeners.delete(cb); };\r\n  }\r\n\r\n  private notifyGlobalListeners(path: string, event: string): void {\r\n    for (const cb of this.globalChangeListeners) {\r\n      try { cb(path, event); } catch (e) { console.error('Global VFS listener error:', e); }\r\n    }\r\n  }\r\n\r\n  // ---- Stream-like APIs ----\r\n\r\n  createReadStream(p: string): {\r\n    on: (event: string, cb: (...args: unknown[]) => void) => void;\r\n    pipe: (dest: unknown) => unknown;\r\n  } {\r\n    const self = this;\r\n    const handlers: Record<string, ((...args: unknown[]) => void)[]> = {};\r\n\r\n    const readable = {\r\n      on(event: string, cb: (...args: unknown[]) => void) {\r\n        if (!handlers[event]) handlers[event] = [];\r\n        handlers[event].push(cb);\r\n        return readable;\r\n      },\r\n      pipe(dest: unknown) { return dest; },\r\n    };\r\n\r\n    setTimeout(() => {\r\n      try {\r\n        const data = self.readFileSync(p);\r\n        handlers['data']?.forEach(cb => cb(data));\r\n        handlers['end']?.forEach(cb => cb());\r\n      } catch (err) {\r\n        handlers['error']?.forEach(cb => cb(err));\r\n      }\r\n    }, 0);\r\n\r\n    return readable;\r\n  }\r\n\r\n  createWriteStream(p: string): {\r\n    write: (data: string | Uint8Array) => boolean;\r\n    end: (data?: string | Uint8Array) => void;\r\n    on: (event: string, cb: (...args: unknown[]) => void) => void;\r\n  } {\r\n    const self = this;\r\n    const pending: Uint8Array[] = [];\r\n    const handlers: Record<string, ((...args: unknown[]) => void)[]> = {};\r\n    const enc = this.textEncoder;\r\n\r\n    return {\r\n      write(data: string | Uint8Array): boolean {\r\n        pending.push(typeof data === 'string' ? enc.encode(data) : data);\r\n        return true;\r\n      },\r\n      end(data?: string | Uint8Array): void {\r\n        if (data) pending.push(typeof data === 'string' ? enc.encode(data) : data);\r\n        const totalLen = pending.reduce((sum, chunk) => sum + chunk.length, 0);\r\n        const merged = new Uint8Array(totalLen);\r\n        let pos = 0;\r\n        for (const chunk of pending) {\r\n          merged.set(chunk, pos);\r\n          pos += chunk.length;\r\n        }\r\n        self.writeFileSync(p, merged);\r\n        handlers['finish']?.forEach(cb => cb());\r\n        handlers['close']?.forEach(cb => cb());\r\n      },\r\n      on(event: string, cb: (...args: unknown[]) => void) {\r\n        if (!handlers[event]) handlers[event] = [];\r\n        handlers[event].push(cb);\r\n        return this;\r\n      },\r\n    };\r\n  }\r\n}\r\n","// DJB2 hash for cache keys\r\nexport function quickDigest(input: string): string {\r\n  let accumulator = 0;\r\n  for (let i = 0; i < input.length; i++) {\r\n    accumulator = ((accumulator << 5) - accumulator) + input.charCodeAt(i);\r\n    accumulator |= 0;\r\n  }\r\n  return accumulator.toString(36);\r\n}\r\n","// Centralized memory optimization handler for Nodepod.\r\n// Provides LRU caches, heap monitoring, and pressure callbacks.\r\n\r\nimport type { FileStat } from './memory-volume';\r\n\r\n/* ---- LRU Cache ---- */\r\n\r\nexport class LRUCache<K, V> {\r\n  private _map = new Map<K, V>();\r\n  private _capacity: number;\r\n\r\n  constructor(capacity: number) {\r\n    this._capacity = Math.max(1, capacity);\r\n  }\r\n\r\n  get(key: K): V | undefined {\r\n    if (!this._map.has(key)) return undefined;\r\n    const value = this._map.get(key)!;\r\n    // Move to most-recently-used position\r\n    this._map.delete(key);\r\n    this._map.set(key, value);\r\n    return value;\r\n  }\r\n\r\n  set(key: K, value: V): void {\r\n    if (this._map.has(key)) {\r\n      this._map.delete(key);\r\n    } else if (this._map.size >= this._capacity) {\r\n      // Evict least-recently-used (first entry in Map)\r\n      const oldest = this._map.keys().next().value;\r\n      if (oldest !== undefined) this._map.delete(oldest);\r\n    }\r\n    this._map.set(key, value);\r\n  }\r\n\r\n  has(key: K): boolean {\r\n    return this._map.has(key);\r\n  }\r\n\r\n  delete(key: K): boolean {\r\n    return this._map.delete(key);\r\n  }\r\n\r\n  clear(): void {\r\n    this._map.clear();\r\n  }\r\n\r\n  get size(): number {\r\n    return this._map.size;\r\n  }\r\n\r\n  keys(): IterableIterator<K> {\r\n    return this._map.keys();\r\n  }\r\n\r\n  values(): IterableIterator<V> {\r\n    return this._map.values();\r\n  }\r\n}\r\n\r\n/* ---- Options ---- */\r\n\r\nexport interface MemoryHandlerOptions {\r\n  /** LRU capacity for path normalization cache. Default: 2048 */\r\n  pathNormCacheSize?: number;\r\n  /** LRU capacity for stat result cache. Default: 512 */\r\n  statCacheSize?: number;\r\n  /** LRU capacity for module resolve cache. Default: 4096 */\r\n  resolveCacheSize?: number;\r\n  /** LRU capacity for package.json manifest cache. Default: 256 */\r\n  manifestCacheSize?: number;\r\n  /** LRU capacity for source transform cache. Default: 512 */\r\n  transformCacheSize?: number;\r\n  /** Max modules before trimming node_modules entries. Default: 512 */\r\n  moduleSoftCacheSize?: number;\r\n  /** Heap usage threshold in MB to trigger pressure callbacks. Default: 350 */\r\n  heapWarnThresholdMB?: number;\r\n  /** Monitoring poll interval in ms. Default: 30000 */\r\n  monitorIntervalMs?: number;\r\n  /** Max process stdout/stderr accumulation in bytes. Default: 4194304 (4MB) */\r\n  maxProcessOutputBytes?: number;\r\n}\r\n\r\nconst DEFAULTS: Required<MemoryHandlerOptions> = {\r\n  pathNormCacheSize: 2048,\r\n  statCacheSize: 512,\r\n  resolveCacheSize: 4096,\r\n  manifestCacheSize: 256,\r\n  transformCacheSize: 512,\r\n  moduleSoftCacheSize: 512,\r\n  heapWarnThresholdMB: 350,\r\n  monitorIntervalMs: 30_000,\r\n  maxProcessOutputBytes: 4_194_304,\r\n};\r\n\r\n/* ---- MemoryHandler ---- */\r\n\r\nexport class MemoryHandler {\r\n  readonly options: Required<MemoryHandlerOptions>;\r\n  readonly pathNormCache: LRUCache<string, string>;\r\n  readonly statCache: LRUCache<string, FileStat>;\r\n  readonly transformCache: LRUCache<string, string>;\r\n\r\n  private _monitorTimer: ReturnType<typeof setInterval> | null = null;\r\n  private _pressureCallbacks: Array<() => void> = [];\r\n  private _destroyed = false;\r\n\r\n  constructor(opts?: MemoryHandlerOptions) {\r\n    this.options = { ...DEFAULTS, ...opts };\r\n    this.pathNormCache = new LRUCache(this.options.pathNormCacheSize);\r\n    this.statCache = new LRUCache(this.options.statCacheSize);\r\n    this.transformCache = new LRUCache(this.options.transformCacheSize);\r\n  }\r\n\r\n  /** Invalidate a cached stat entry (call on file write/delete). */\r\n  invalidateStat(normalizedPath: string): void {\r\n    this.statCache.delete(normalizedPath);\r\n  }\r\n\r\n  /** Register a callback to be invoked when heap pressure is detected. Returns unsubscribe fn. */\r\n  onPressure(cb: () => void): () => void {\r\n    this._pressureCallbacks.push(cb);\r\n    return () => {\r\n      const idx = this._pressureCallbacks.indexOf(cb);\r\n      if (idx >= 0) this._pressureCallbacks.splice(idx, 1);\r\n    };\r\n  }\r\n\r\n  /** Start periodic heap monitoring. */\r\n  startMonitoring(): void {\r\n    if (this._monitorTimer || this._destroyed) return;\r\n    this._monitorTimer = setInterval(() => this._checkHeap(), this.options.monitorIntervalMs);\r\n  }\r\n\r\n  /** Stop monitoring. */\r\n  stopMonitoring(): void {\r\n    if (this._monitorTimer) {\r\n      clearInterval(this._monitorTimer);\r\n      this._monitorTimer = null;\r\n    }\r\n  }\r\n\r\n  /** Clear all owned caches. */\r\n  flush(): void {\r\n    this.pathNormCache.clear();\r\n    this.statCache.clear();\r\n    this.transformCache.clear();\r\n  }\r\n\r\n  /** Full cleanup — stop monitoring, flush caches. */\r\n  destroy(): void {\r\n    this._destroyed = true;\r\n    this.stopMonitoring();\r\n    this.flush();\r\n    this._pressureCallbacks.length = 0;\r\n  }\r\n\r\n  private _checkHeap(): void {\r\n    const perf = typeof performance !== 'undefined' ? (performance as any) : null;\r\n    if (!perf?.memory) return;\r\n    const usedMB = perf.memory.usedJSHeapSize / 1_048_576;\r\n    if (usedMB > this.options.heapWarnThresholdMB) {\r\n      for (const cb of this._pressureCallbacks) {\r\n        try { cb(); } catch { /* ignore */ }\r\n      }\r\n    }\r\n  }\r\n}\r\n","// IndexedDB-backed cache of compiled WebAssembly.Module objects, keyed by\r\n// content hash. Chromium and Firefox support structured-cloning compiled\r\n// modules into IDB, which lets warm reloads skip recompiling 10-16MB\r\n// binaries entirely. Browsers without clone support (and non-browser\r\n// environments) degrade to a no-op: every operation is best-effort and a\r\n// failure is just a cache miss.\r\n\r\nconst DB_NAME = \"nodepod-wasm-modules\";\r\nconst STORE_NAME = \"wasmModules\";\r\nconst DB_VERSION = 1;\r\n\r\nconst MAX_ENTRIES = 32;\r\nconst MAX_AGE_MS = 30 * 24 * 60 * 60 * 1000; // 30 days\r\n\r\ninterface WasmModuleEntry {\r\n  module: WebAssembly.Module;\r\n  storedAt: number;\r\n}\r\n\r\nexport interface WasmModuleCache {\r\n  get(hash: string): Promise<WebAssembly.Module | null>;\r\n  put(hash: string, module: WebAssembly.Module): Promise<void>;\r\n  close(): void;\r\n}\r\n\r\n// Fast synchronous content hash: dual-lane FNV-1a over the full buffer plus\r\n// the byte length. Used as the in-memory (L1) cache key where we cannot\r\n// await crypto.subtle. One pass over 16MB costs single-digit milliseconds.\r\nexport function quickWasmHash(bytes: Uint8Array): string {\r\n  let h1 = 0x811c9dc5;\r\n  let h2 = 0xcbf29ce4;\r\n  for (let i = 0; i < bytes.length; i++) {\r\n    const b = bytes[i];\r\n    h1 = Math.imul(h1 ^ b, 0x01000193) >>> 0;\r\n    h2 = Math.imul(h2 ^ b, 0x01000197) >>> 0;\r\n  }\r\n  return `${h1.toString(16)}-${h2.toString(16)}-${bytes.length.toString(16)}`;\r\n}\r\n\r\n// Strong content hash for the persistent (IDB) key. Falls back to the quick\r\n// hash when crypto.subtle is unavailable (insecure contexts).\r\nexport async function wasmContentHash(bytes: Uint8Array): Promise<string> {\r\n  try {\r\n    const subtle = globalThis.crypto?.subtle;\r\n    if (subtle) {\r\n      const buf = bytes.buffer.slice(\r\n        bytes.byteOffset,\r\n        bytes.byteOffset + bytes.byteLength,\r\n      ) as ArrayBuffer;\r\n      const digest = await subtle.digest(\"SHA-256\", buf);\r\n      return Array.from(new Uint8Array(digest))\r\n        .map((b) => b.toString(16).padStart(2, \"0\"))\r\n        .join(\"\");\r\n    }\r\n  } catch {\r\n    /* fall through */\r\n  }\r\n  return \"fnv:\" + quickWasmHash(bytes);\r\n}\r\n\r\nfunction openDB(): Promise<IDBDatabase | null> {\r\n  if (typeof indexedDB === \"undefined\") return Promise.resolve(null);\r\n  return new Promise((resolve) => {\r\n    try {\r\n      const req = indexedDB.open(DB_NAME, DB_VERSION);\r\n      req.onupgradeneeded = () => {\r\n        const db = req.result;\r\n        if (!db.objectStoreNames.contains(STORE_NAME)) {\r\n          db.createObjectStore(STORE_NAME);\r\n        }\r\n      };\r\n      req.onsuccess = () => resolve(req.result);\r\n      req.onerror = () => resolve(null);\r\n    } catch {\r\n      resolve(null);\r\n    }\r\n  });\r\n}\r\n\r\nfunction idbGet(db: IDBDatabase, key: string): Promise<WasmModuleEntry | null> {\r\n  return new Promise((resolve, reject) => {\r\n    try {\r\n      const tx = db.transaction(STORE_NAME, \"readonly\");\r\n      const req = tx.objectStore(STORE_NAME).get(key);\r\n      req.onsuccess = () => resolve((req.result as WasmModuleEntry) ?? null);\r\n      req.onerror = () => reject(req.error);\r\n    } catch (e) {\r\n      reject(e);\r\n    }\r\n  });\r\n}\r\n\r\nfunction idbPut(db: IDBDatabase, key: string, value: WasmModuleEntry): Promise<void> {\r\n  return new Promise((resolve, reject) => {\r\n    try {\r\n      const tx = db.transaction(STORE_NAME, \"readwrite\");\r\n      // .put() throws synchronously with DataCloneError if this browser\r\n      // can't structured-clone a WebAssembly.Module (historically Safari)\r\n      tx.objectStore(STORE_NAME).put(value, key);\r\n      tx.oncomplete = () => resolve();\r\n      tx.onerror = () => reject(tx.error);\r\n    } catch (e) {\r\n      reject(e);\r\n    }\r\n  });\r\n}\r\n\r\n// Evict expired entries, then oldest-first until at most MAX_ENTRIES remain.\r\n// Compiled modules can be tens of MB each, so the count bound doubles as a\r\n// rough byte budget.\r\nfunction idbPrune(db: IDBDatabase): Promise<void> {\r\n  return new Promise((resolve) => {\r\n    try {\r\n      const tx = db.transaction(STORE_NAME, \"readwrite\");\r\n      const store = tx.objectStore(STORE_NAME);\r\n      const req = store.openCursor();\r\n      const now = Date.now();\r\n      const kept: Array<{ key: IDBValidKey; storedAt: number }> = [];\r\n\r\n      req.onsuccess = () => {\r\n        const cursor = req.result;\r\n        if (cursor) {\r\n          const entry = cursor.value as WasmModuleEntry;\r\n          if (!entry?.storedAt || now - entry.storedAt > MAX_AGE_MS) {\r\n            cursor.delete();\r\n          } else {\r\n            kept.push({ key: cursor.key, storedAt: entry.storedAt });\r\n          }\r\n          cursor.continue();\r\n          return;\r\n        }\r\n        if (kept.length > MAX_ENTRIES) {\r\n          kept.sort((a, b) => a.storedAt - b.storedAt);\r\n          const evictTx = db.transaction(STORE_NAME, \"readwrite\");\r\n          const evictStore = evictTx.objectStore(STORE_NAME);\r\n          for (const e of kept.slice(0, kept.length - MAX_ENTRIES)) {\r\n            evictStore.delete(e.key);\r\n          }\r\n        }\r\n        resolve();\r\n      };\r\n      req.onerror = () => resolve();\r\n      tx.onerror = () => resolve();\r\n    } catch {\r\n      resolve();\r\n    }\r\n  });\r\n}\r\n\r\nasync function createCache(): Promise<WasmModuleCache | null> {\r\n  const db = await openDB();\r\n  if (!db) return null;\r\n\r\n  // Flipped to false the first time a structured clone of a Module fails,\r\n  // so we stop paying for doomed put() attempts.\r\n  let cloneSupported = true;\r\n\r\n  return {\r\n    async get(hash: string): Promise<WebAssembly.Module | null> {\r\n      try {\r\n        const entry = await idbGet(db, hash);\r\n        if (!entry?.module) return null;\r\n        if (Date.now() - entry.storedAt > MAX_AGE_MS) return null;\r\n        if (\r\n          typeof WebAssembly !== \"undefined\" &&\r\n          !(entry.module instanceof WebAssembly.Module)\r\n        ) {\r\n          return null;\r\n        }\r\n        return entry.module;\r\n      } catch {\r\n        return null;\r\n      }\r\n    },\r\n\r\n    async put(hash: string, module: WebAssembly.Module): Promise<void> {\r\n      if (!cloneSupported) return;\r\n      try {\r\n        await idbPut(db, hash, { module, storedAt: Date.now() });\r\n        idbPrune(db).catch(() => {});\r\n      } catch (e: any) {\r\n        if (e?.name === \"DataCloneError\") cloneSupported = false;\r\n      }\r\n    },\r\n\r\n    close(): void {\r\n      try {\r\n        db.close();\r\n      } catch {\r\n        /* ignore */\r\n      }\r\n    },\r\n  };\r\n}\r\n\r\nlet _singleton: Promise<WasmModuleCache | null> | null = null;\r\n\r\nexport function getWasmModuleCache(): Promise<WasmModuleCache | null> {\r\n  if (!_singleton) _singleton = createCache();\r\n  return _singleton;\r\n}\r\n\r\n/** Test hook: reset the singleton so a fresh environment can be simulated. */\r\nexport function __resetWasmModuleCacheForTests(): void {\r\n  _singleton = null;\r\n}\r\n","// WASM compilation cache. Browsers block sync WebAssembly.Module() for large\r\n// buffers on the main thread, so we either precompile in the background or\r\n// offload to a worker where there's no size limit.\r\n//\r\n// Two tiers:\r\n//   L1 — in-memory map keyed by a fast synchronous content hash (dual-lane\r\n//        FNV-1a + length), consulted from the patched WebAssembly.Module\r\n//        constructor which cannot await.\r\n//   L2 — IndexedDB keyed by SHA-256, storing the compiled WebAssembly.Module\r\n//        via structured clone (Chromium/Firefox). Warm reloads skip compile.\r\n\r\nimport {\r\n  getWasmModuleCache,\r\n  quickWasmHash,\r\n  wasmContentHash,\r\n} from \"../persistence/wasm-module-cache\";\r\n\r\nconst PRECOMPILE_THRESHOLD = 4 * 1024 * 1024; // 4 MB\r\n\r\ntype CacheEntry = {\r\n  promise: Promise<WebAssembly.Module>;\r\n  module: WebAssembly.Module | null;\r\n};\r\n\r\n// L1: keyed by quickWasmHash(bytes) — content-derived, sync to compute\r\nconst moduleCache = new Map<string, CacheEntry>();\r\n\r\nfunction actualByteLength(bytes: ArrayBuffer | ArrayBufferView): number {\r\n  return bytes.byteLength;\r\n}\r\n\r\nfunction toUint8(bytes: ArrayBuffer | ArrayBufferView): Uint8Array {\r\n  if (bytes instanceof ArrayBuffer) return new Uint8Array(bytes);\r\n  return new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);\r\n}\r\n\r\nfunction toArrayBuffer(bytes: Uint8Array | ArrayBuffer): ArrayBuffer {\r\n  if (bytes instanceof ArrayBuffer) return bytes;\r\n  return bytes.buffer.slice(\r\n    bytes.byteOffset,\r\n    bytes.byteOffset + bytes.byteLength,\r\n  ) as ArrayBuffer;\r\n}\r\n\r\n// Persist a compiled module to IDB, keyed by SHA-256 of its bytes.\r\nfunction persistModule(bytes: Uint8Array, module: WebAssembly.Module): void {\r\n  wasmContentHash(bytes)\r\n    .then(async (hash) => {\r\n      const cache = await getWasmModuleCache();\r\n      if (cache) await cache.put(hash, module);\r\n    })\r\n    .catch(() => {});\r\n}\r\n\r\n// Look up a previously-persisted module. Returns null on any failure.\r\nasync function loadPersistedModule(\r\n  bytes: Uint8Array,\r\n): Promise<WebAssembly.Module | null> {\r\n  try {\r\n    const cache = await getWasmModuleCache();\r\n    if (!cache) return null;\r\n    return await cache.get(await wasmContentHash(bytes));\r\n  } catch {\r\n    return null;\r\n  }\r\n}\r\n\r\n// Register an externally-compiled module (e.g. from compileStreaming) in\r\n// both tiers so later sync constructions hit the cache.\r\nexport function registerCompiledModule(\r\n  bytes: Uint8Array,\r\n  module: WebAssembly.Module,\r\n): void {\r\n  const key = quickWasmHash(bytes);\r\n  moduleCache.set(key, { promise: Promise.resolve(module), module });\r\n  persistModule(bytes, module);\r\n}\r\n\r\n// Call as early as possible (e.g. when writing .wasm to VFS)\r\nexport function precompileWasm(bytes: Uint8Array | ArrayBuffer): void {\r\n  if (typeof WebAssembly === \"undefined\") return;\r\n  if (actualByteLength(bytes) < PRECOMPILE_THRESHOLD) return;\r\n\r\n  const view = toUint8(bytes);\r\n  const key = quickWasmHash(view);\r\n  if (moduleCache.has(key)) return;\r\n\r\n  // Hold a stable copy: callers may mutate/transfer their buffer, and both\r\n  // the IDB-miss compile and the SHA-256 hash need the original bytes.\r\n  const stable = view.slice();\r\n  const entry: CacheEntry = {\r\n    promise: (async () => {\r\n      const persisted = await loadPersistedModule(stable);\r\n      if (persisted) return persisted;\r\n      const mod = await WebAssembly.compile(stable as BufferSource);\r\n      persistModule(stable, mod);\r\n      return mod;\r\n    })(),\r\n    module: null,\r\n  };\r\n  entry.promise.then(\r\n    (m) => { entry.module = m; },\r\n    () => { moduleCache.delete(key); },\r\n  );\r\n  moduleCache.set(key, entry);\r\n}\r\n\r\nexport function getCachedModule(bytes: BufferSource): WebAssembly.Module | null {\r\n  // hashing is a single pass over the buffer; only paid on wasm construction\r\n  const entry = moduleCache.get(quickWasmHash(toUint8(bytes)));\r\n  if (entry?.module) return entry.module;\r\n  return null;\r\n}\r\n\r\n// Worker-based compilation (no size limit in workers). One persistent worker\r\n// is lazily created and reused across compiles instead of a throwaway worker\r\n// per call.\r\nlet _compileWorker: Worker | null = null;\r\nlet _nextCompileId = 1;\r\nconst _pendingCompiles = new Map<\r\n  number,\r\n  { resolve: (m: WebAssembly.Module) => void; reject: (e: Error) => void }\r\n>();\r\n\r\nfunction getCompileWorker(): Worker {\r\n  if (_compileWorker) return _compileWorker;\r\n  const code = `\r\n    self.onmessage = function(e) {\r\n      try {\r\n        var mod = new WebAssembly.Module(e.data.bytes);\r\n        self.postMessage({ id: e.data.id, ok: true, module: mod });\r\n      } catch (err) {\r\n        self.postMessage({ id: e.data.id, ok: false, error: err.message });\r\n      }\r\n    };\r\n  `;\r\n  const url = URL.createObjectURL(\r\n    new Blob([code], { type: \"application/javascript\" }),\r\n  );\r\n  const worker = new Worker(url);\r\n  URL.revokeObjectURL(url);\r\n  worker.onmessage = (e: MessageEvent) => {\r\n    const { id, ok, module, error } = e.data;\r\n    const pending = _pendingCompiles.get(id);\r\n    if (!pending) return;\r\n    _pendingCompiles.delete(id);\r\n    if (ok) pending.resolve(module);\r\n    else pending.reject(new Error(error));\r\n  };\r\n  worker.onerror = (e) => {\r\n    const err = new Error(e.message || \"Worker compilation failed\");\r\n    for (const pending of _pendingCompiles.values()) pending.reject(err);\r\n    _pendingCompiles.clear();\r\n    worker.terminate();\r\n    if (_compileWorker === worker) _compileWorker = null;\r\n  };\r\n  _compileWorker = worker;\r\n  return worker;\r\n}\r\n\r\nexport function compileWasmInWorker(\r\n  bytes: Uint8Array | ArrayBuffer,\r\n): Promise<WebAssembly.Module> {\r\n  const view = toUint8(bytes);\r\n  const key = quickWasmHash(view);\r\n\r\n  const existing = moduleCache.get(key);\r\n  if (existing?.module) return Promise.resolve(existing.module);\r\n\r\n  const stable = view.slice();\r\n  const promise = (async () => {\r\n    const persisted = await loadPersistedModule(stable);\r\n    if (persisted) return persisted;\r\n\r\n    const mod = await new Promise<WebAssembly.Module>((resolve, reject) => {\r\n      try {\r\n        const worker = getCompileWorker();\r\n        const id = _nextCompileId++;\r\n        _pendingCompiles.set(id, { resolve, reject });\r\n        const ab = toArrayBuffer(stable.slice());\r\n        worker.postMessage({ id, bytes: ab }, [ab]);\r\n      } catch {\r\n        // No workers — fall back to async compile on this thread\r\n        WebAssembly.compile(stable as BufferSource).then(resolve, reject);\r\n      }\r\n    });\r\n    persistModule(stable, mod);\r\n    return mod;\r\n  })();\r\n\r\n  const entry: CacheEntry = { promise, module: null };\r\n  promise.then(\r\n    (m) => { entry.module = m; },\r\n    () => { moduleCache.delete(key); },\r\n  );\r\n  moduleCache.set(key, entry);\r\n  return promise;\r\n}\r\n\r\nexport function needsAsyncCompile(bytes: BufferSource): boolean {\r\n  return actualByteLength(bytes) >= PRECOMPILE_THRESHOLD;\r\n}\r\n\r\nexport { PRECOMPILE_THRESHOLD };\r\n","// CDN recovery for .wasm files under node_modules that never made it into\r\n// the VFS (e.g. oversized binaries the tarball path skipped). Everything\r\n// here is asynchronous and best-effort — the old synchronous XHR fallback\r\n// that could block a thread for a full 15MB download is gone.\r\n\r\nimport type { MemoryVolume } from \"../memory-volume\";\r\nimport { precompileWasm, registerCompiledModule, PRECOMPILE_THRESHOLD } from \"./wasm-cache\";\r\n\r\n/**\r\n * Map a VFS path like `/project/node_modules/@scope/pkg/file.wasm` to its\r\n * jsdelivr URL, using the installed package.json version when available.\r\n * Returns null if the path isn't a node_modules .wasm path.\r\n */\r\nexport function buildCdnWasmUrl(volume: MemoryVolume, vfsPath: string): string | null {\r\n  if (!vfsPath.endsWith(\".wasm\")) return null;\r\n  const nmIdx = vfsPath.lastIndexOf(\"/node_modules/\");\r\n  if (nmIdx === -1) return null;\r\n\r\n  const afterNm = vfsPath.substring(nmIdx + \"/node_modules/\".length);\r\n  const parts = afterNm.split(\"/\");\r\n  let pkgName: string;\r\n  let filePath: string;\r\n  if (parts[0].startsWith(\"@\")) {\r\n    if (parts.length < 3) return null;\r\n    pkgName = parts[0] + \"/\" + parts[1];\r\n    filePath = parts.slice(2).join(\"/\");\r\n  } else {\r\n    if (parts.length < 2) return null;\r\n    pkgName = parts[0];\r\n    filePath = parts.slice(1).join(\"/\");\r\n  }\r\n\r\n  let version = \"latest\";\r\n  try {\r\n    const pkgJsonPath =\r\n      vfsPath.substring(0, nmIdx + \"/node_modules/\".length) + pkgName + \"/package.json\";\r\n    const pkgJson = JSON.parse(volume.readFileSync(pkgJsonPath, \"utf8\") as string);\r\n    if (pkgJson.version) version = pkgJson.version;\r\n  } catch {\r\n    /* use latest */\r\n  }\r\n\r\n  return `https://cdn.jsdelivr.net/npm/${pkgName}@${version}/${filePath}`;\r\n}\r\n\r\nconst _inflight = new Map<string, Promise<boolean>>();\r\n\r\n/**\r\n * Fetch a missing node_modules .wasm from the CDN, write it to the VFS, and\r\n * warm the compile caches. Deduplicated per path; never throws.\r\n */\r\nexport function prefetchWasmFromCdn(volume: MemoryVolume, vfsPath: string): Promise<boolean> {\r\n  const existing = _inflight.get(vfsPath);\r\n  if (existing) return existing;\r\n\r\n  const promise = (async (): Promise<boolean> => {\r\n    const cdnUrl = buildCdnWasmUrl(volume, vfsPath);\r\n    if (!cdnUrl || typeof fetch === \"undefined\") return false;\r\n\r\n    try {\r\n      const resp = await fetch(cdnUrl);\r\n      if (!resp.ok) return false;\r\n\r\n      // Compile in parallel with the byte read when the browser supports\r\n      // streaming compilation; register the module once we have the bytes.\r\n      let streamingCompile: Promise<WebAssembly.Module> | null = null;\r\n      if (\r\n        typeof WebAssembly !== \"undefined\" &&\r\n        typeof WebAssembly.compileStreaming === \"function\"\r\n      ) {\r\n        try {\r\n          streamingCompile = WebAssembly.compileStreaming(resp.clone());\r\n          streamingCompile.catch(() => {});\r\n        } catch {\r\n          streamingCompile = null;\r\n        }\r\n      }\r\n\r\n      const bytes = new Uint8Array(await resp.arrayBuffer());\r\n      if (bytes.byteLength === 0) return false;\r\n\r\n      try {\r\n        const dir = vfsPath.substring(0, vfsPath.lastIndexOf(\"/\")) || \"/\";\r\n        volume.mkdirSync(dir, { recursive: true });\r\n        volume.writeFileSync(vfsPath, bytes);\r\n      } catch {\r\n        /* VFS write is best-effort; compile caches still help */\r\n      }\r\n\r\n      if (streamingCompile && bytes.byteLength >= PRECOMPILE_THRESHOLD) {\r\n        try {\r\n          registerCompiledModule(bytes, await streamingCompile);\r\n        } catch {\r\n          precompileWasm(bytes);\r\n        }\r\n      } else {\r\n        precompileWasm(bytes);\r\n      }\r\n      return true;\r\n    } catch {\r\n      return false;\r\n    } finally {\r\n      _inflight.delete(vfsPath);\r\n    }\r\n  })();\r\n\r\n  _inflight.set(vfsPath, promise);\r\n  return promise;\r\n}\r\n","// ProcessContext — per-process execution state.\r\n// Replaces module-level mutable state (the old `let _xxx` in child_process, fs, etc.).\r\n// One active context on main thread; each worker gets its own.\r\n\r\nimport type { MemoryVolume } from \"../memory-volume\";\r\nimport { createHandleRegistry, type HandleRegistry } from \"../helpers/event-loop\";\r\n\r\n// --- I/O interfaces ---\r\n\r\nexport interface ProcessWriter {\r\n  write(data: string): void;\r\n}\r\n\r\nexport interface ProcessReader {\r\n  on(event: string, cb: (...args: unknown[]) => void): void;\r\n  emit(event: string, ...args: unknown[]): void;\r\n}\r\n\r\n// --- ProcessContext ---\r\n\r\nexport interface ProcessContext {\r\n  pid: number;\r\n  cwd: string;\r\n  env: Record<string, string>;\r\n\r\n  stdoutSink: ((text: string) => void) | null;\r\n  stderrSink: ((text: string) => void) | null;\r\n  liveStdin: { emit: (e: string, ...a: unknown[]) => void } | null;\r\n  abortController: AbortController;\r\n\r\n  volume: MemoryVolume;\r\n\r\n  /** typed Handle registry, tracks live async primitives for loop liveness */\r\n  handles: HandleRegistry;\r\n\r\n  termCols: (() => number) | null;\r\n  termRows: (() => number) | null;\r\n\r\n  fdCounter: number;\r\n  openFiles: Map<number, OpenFileEntry>;\r\n}\r\n\r\nexport interface OpenFileEntry {\r\n  filePath: string;\r\n  cursor: number;\r\n  mode: string;\r\n  data: Uint8Array;\r\n}\r\n\r\n// --- Factory ---\r\n\r\nlet _nextPid = 100;\r\n\r\nexport function createProcessContext(opts: {\r\n  volume: MemoryVolume;\r\n  cwd?: string;\r\n  env?: Record<string, string>;\r\n  pid?: number;\r\n}): ProcessContext {\r\n  return {\r\n    pid: opts.pid ?? _nextPid++,\r\n    cwd: opts.cwd ?? \"/\",\r\n    env: opts.env ?? {},\r\n\r\n    stdoutSink: null,\r\n    stderrSink: null,\r\n    liveStdin: null,\r\n    abortController: new AbortController(),\r\n\r\n    volume: opts.volume,\r\n\r\n    handles: createHandleRegistry(),\r\n\r\n    termCols: null,\r\n    termRows: null,\r\n\r\n    fdCounter: 3,\r\n    openFiles: new Map(),\r\n  };\r\n}\r\n\r\n// --- Active context (main-thread inline mode) ---\r\n\r\nlet _activeContext: ProcessContext | null = null;\r\n\r\nexport function getActiveContext(): ProcessContext | null {\r\n  return _activeContext;\r\n}\r\n\r\nexport function setActiveContext(ctx: ProcessContext | null): void {\r\n  _activeContext = ctx;\r\n}\r\n","// Event loop liveness tracking, same idea as libuv's HandleWrap model.\r\n// Each async primitive registers a typed Handle, and the process stays\r\n// alive as long as any Handle is refed. close() is idempotent and auto-unrefs\r\n// so polyfills don't have to pair every register with a matching unref\r\n// in their error paths.\r\n\r\nimport { getActiveContext } from \"../threading/process-context\";\r\n\r\n// process.exit() throws this to unwind the script. We brand it so consumers\r\n// can use isExitSentinel(e) instead of matching on err.message, which would\r\n// break if the message ever changed and could misclassify user errors that\r\n// happen to start with the same prefix.\r\n\r\nconst EXIT_SENTINEL_BRAND = Symbol.for(\"nodepod.ProcessExitSentinel\");\r\n\r\nexport class ProcessExitSentinel extends Error {\r\n  readonly exitCode: number;\r\n  // structural brand, survives cross-realm throws where instanceof fails\r\n  readonly [EXIT_SENTINEL_BRAND] = true as const;\r\n  constructor(code: number) {\r\n    super(`Process exited with code ${code}`);\r\n    this.name = \"ProcessExitSentinel\";\r\n    this.exitCode = code;\r\n  }\r\n}\r\n\r\nexport function isExitSentinel(e: unknown): boolean {\r\n  if (e instanceof ProcessExitSentinel) return true;\r\n  if (\r\n    e &&\r\n    typeof e === \"object\" &&\r\n    (e as { [EXIT_SENTINEL_BRAND]?: true })[EXIT_SENTINEL_BRAND] === true\r\n  ) {\r\n    return true;\r\n  }\r\n  return false;\r\n}\r\n\r\n// handle types, roughly lines up with libuv resource names plus a few node extras\r\n\r\nexport type HandleType =\r\n  | \"Timeout\"\r\n  | \"Immediate\"\r\n  | \"Interval\"\r\n  | \"FetchRequest\"\r\n  | \"DynamicImport\"\r\n  | \"TCPSocketWrap\"\r\n  | \"TCPServerWrap\"\r\n  | \"UDPWrap\"\r\n  | \"PipeWrap\"\r\n  | \"IPCChannel\"\r\n  | \"TLSWrap\"\r\n  | \"HTTP2Session\"\r\n  | \"HTTPServer\"\r\n  | \"FSReqCallback\"\r\n  | \"FSWatcher\"\r\n  | \"StatWatcher\"\r\n  | \"WebSocket\"\r\n  | \"MessagePort\"\r\n  | \"BroadcastChannel\"\r\n  | \"Worker\"\r\n  | \"ChildProcess\"\r\n  | \"TTYWrap\"\r\n  | \"ReadlineInterface\"\r\n  | \"EsbuildOp\"\r\n  | \"WASMWork\";\r\n\r\nexport interface Handle {\r\n  readonly type: HandleType;\r\n  readonly registry: HandleRegistry;\r\n  readonly refed: boolean;\r\n  readonly closed: boolean;\r\n  ref(): this;\r\n  unref(): this;\r\n  close(): void;\r\n}\r\n\r\nexport interface HandleRegistry {\r\n  register(type: HandleType, opts?: { refed?: boolean }): Handle;\r\n  activeRefedCount(): number;\r\n  list(): ReadonlyArray<Handle>;\r\n  groupedByType(): Record<string, number>;\r\n  /** Fresh promise each drain cycle. Resolves on refed-count 1 to 0. */\r\n  drainPromise(): Promise<void>;\r\n  onDrain(cb: () => void): () => void;\r\n  /** Awaits each beforeExit handler sequentially. */\r\n  emitBeforeExit(code: number): Promise<void>;\r\n  onBeforeExit(cb: (code: number) => void | Promise<void>): () => void;\r\n  closeAll(): void;\r\n}\r\n\r\nclass HandleImpl implements Handle {\r\n  readonly type: HandleType;\r\n  readonly registry: RegistryImpl;\r\n  refed: boolean;\r\n  closed = false;\r\n  constructor(registry: RegistryImpl, type: HandleType, refed: boolean) {\r\n    this.registry = registry;\r\n    this.type = type;\r\n    this.refed = refed;\r\n  }\r\n  ref(): this {\r\n    if (this.closed || this.refed) return this;\r\n    this.refed = true;\r\n    this.registry._incRefed();\r\n    return this;\r\n  }\r\n  unref(): this {\r\n    if (this.closed || !this.refed) return this;\r\n    this.refed = false;\r\n    this.registry._decRefed();\r\n    return this;\r\n  }\r\n  close(): void {\r\n    if (this.closed) return;\r\n    this.closed = true;\r\n    if (this.refed) {\r\n      this.refed = false;\r\n      this.registry._decRefed();\r\n    }\r\n    this.registry._remove(this);\r\n  }\r\n}\r\n\r\nclass RegistryImpl implements HandleRegistry {\r\n  private _handles = new Set<HandleImpl>();\r\n  private _refedCount = 0;\r\n  private _drainCbs = new Set<() => void>();\r\n  private _beforeExitCbs: Array<(code: number) => void | Promise<void>> = [];\r\n  private _drainPromise: Promise<void> | null = null;\r\n  private _drainResolve: (() => void) | null = null;\r\n\r\n  register(type: HandleType, opts?: { refed?: boolean }): Handle {\r\n    const refed = opts?.refed !== false;\r\n    const h = new HandleImpl(this, type, refed);\r\n    this._handles.add(h);\r\n    if (refed) this._refedCount++;\r\n    return h;\r\n  }\r\n\r\n  activeRefedCount(): number {\r\n    return this._refedCount;\r\n  }\r\n\r\n  list(): ReadonlyArray<Handle> {\r\n    return Array.from(this._handles);\r\n  }\r\n\r\n  groupedByType(): Record<string, number> {\r\n    const out: Record<string, number> = {};\r\n    for (const h of this._handles) {\r\n      if (!h.refed) continue;\r\n      out[h.type] = (out[h.type] ?? 0) + 1;\r\n    }\r\n    return out;\r\n  }\r\n\r\n  drainPromise(): Promise<void> {\r\n    if (this._refedCount === 0) return Promise.resolve();\r\n    if (this._drainPromise) return this._drainPromise;\r\n    this._drainPromise = new Promise<void>((resolve) => {\r\n      this._drainResolve = resolve;\r\n    });\r\n    return this._drainPromise;\r\n  }\r\n\r\n  onDrain(cb: () => void): () => void {\r\n    this._drainCbs.add(cb);\r\n    return () => this._drainCbs.delete(cb);\r\n  }\r\n\r\n  async emitBeforeExit(code: number): Promise<void> {\r\n    // snapshot so handlers that register more listeners don't fire this cycle\r\n    const snapshot = this._beforeExitCbs.slice();\r\n    for (const cb of snapshot) {\r\n      try {\r\n        await cb(code);\r\n      } catch (e) {\r\n        // process.exit() from a handler throws the sentinel, re-throw so the\r\n        // wait loop sees it. other errors are swallowed, same as node.\r\n        if (isExitSentinel(e)) throw e;\r\n      }\r\n    }\r\n  }\r\n\r\n  onBeforeExit(cb: (code: number) => void | Promise<void>): () => void {\r\n    this._beforeExitCbs.push(cb);\r\n    return () => {\r\n      const i = this._beforeExitCbs.indexOf(cb);\r\n      if (i >= 0) this._beforeExitCbs.splice(i, 1);\r\n    };\r\n  }\r\n\r\n  closeAll(): void {\r\n    // snapshot first, close() mutates the set\r\n    for (const h of Array.from(this._handles)) h.close();\r\n  }\r\n\r\n  _incRefed(): void {\r\n    this._refedCount++;\r\n  }\r\n\r\n  _decRefed(): void {\r\n    if (this._refedCount > 0) this._refedCount--;\r\n    if (this._refedCount === 0) {\r\n      const resolve = this._drainResolve;\r\n      this._drainPromise = null;\r\n      this._drainResolve = null;\r\n      if (resolve) resolve();\r\n      for (const cb of this._drainCbs) {\r\n        try {\r\n          cb();\r\n        } catch {\r\n          /* ignore */\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  _remove(h: HandleImpl): void {\r\n    this._handles.delete(h);\r\n  }\r\n}\r\n\r\n// global registry is the fallback when no ProcessContext is active\r\nconst _globalRegistry = new RegistryImpl();\r\n\r\nexport function getRegistry(): HandleRegistry {\r\n  const ctx = getActiveContext();\r\n  return (ctx?.handles as HandleRegistry | undefined) ?? _globalRegistry;\r\n}\r\n\r\nexport function getGlobalRegistry(): HandleRegistry {\r\n  return _globalRegistry;\r\n}\r\n\r\nexport function createHandleRegistry(): HandleRegistry {\r\n  return new RegistryImpl();\r\n}\r\n","// Runtime-only paths under the pod VFS — not user project files.\r\n\r\nconst INTERNAL_PREFIXES = [\"/.nodepod\"] as const;\r\n\r\nexport function isInternalVfsPath(path: string): boolean {\r\n  const p = path.startsWith(\"/\") ? path : `/${path}`;\r\n  for (const prefix of INTERNAL_PREFIXES) {\r\n    if (p === prefix || p.startsWith(`${prefix}/`)) return true;\r\n  }\r\n  return false;\r\n}\r\n","// EventEmitter polyfill -- uses a function constructor (not a class) so that\r\n// EventEmitter.call(this) and Object.create(EventEmitter.prototype) work.\r\n// ES6 classes forbid calling without `new`, which breaks tons of npm packages.\r\n\r\nimport { isExitSentinel } from \"../helpers/event-loop\";\r\nimport { isInternalVfsPath } from \"../constants/internal-vfs-paths\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport type EventHandler = (...args: any[]) => void;\r\n\r\n// node exposes EventEmitter.defaultMaxListeners as a mutable static. jest\r\n// sets it to 0 (meaning \"unlimited\") to silence the warning in its test\r\n// suite, pino does the same. module-level so reads and writes share state.\r\nlet DEFAULT_CEILING = 10;\r\n\r\n// VFS->chokidar HMR bridge: chokidar's async fs.watch() setup chain doesn't\r\n// complete in browser, so we detect FSWatchers by _watched Map and bridge\r\n// VFS file changes directly to the watcher.\r\nconst _vfsBridged = new WeakSet<object>();\r\nconst _vfsBridgeCleanups = new Set<() => void>();\r\n\r\nfunction _bridgeVfsToWatcher(watcher: EventEmitter): void {\r\n  const vol = (globalThis as any).__nodepodVolume;\r\n  if (!vol || typeof vol.onGlobalChange !== 'function') {\r\n    return;\r\n  }\r\n\r\n  // debounce per-path to avoid cascading reloads from multiple VFS writes\r\n  const pending = new Map<string, { event: string; timer: ReturnType<typeof setTimeout> }>();\r\n  const DEBOUNCE_MS = 50;\r\n\r\n  const cleanup = vol.onGlobalChange((path: string, event: string) => {\r\n    if (\r\n      path.includes(\"/node_modules/\") ||\r\n      path.includes(\"/.cache/\") ||\r\n      isInternalVfsPath(path)\r\n    ) {\r\n      return;\r\n    }\r\n\r\n    const existing = pending.get(path);\r\n    if (existing) clearTimeout(existing.timer);\r\n\r\n    pending.set(path, {\r\n      event,\r\n      timer: setTimeout(() => {\r\n        pending.delete(path);\r\n        if (event === 'change') {\r\n          watcher.emit('change', path);\r\n        } else if (event === 'add') {\r\n          watcher.emit('add', path);\r\n        } else if (event === 'addDir') {\r\n          watcher.emit('addDir', path);\r\n        } else if (event === 'unlink') {\r\n          watcher.emit('unlink', path);\r\n        }\r\n      }, DEBOUNCE_MS),\r\n    });\r\n  });\r\n  const selfCleanup = () => {\r\n    cleanup();\r\n    _vfsBridgeCleanups.delete(selfCleanup);\r\n  };\r\n  _vfsBridgeCleanups.add(selfCleanup);\r\n}\r\n\r\n// lazily init the listener map (handles Object.create() bypassing constructor)\r\nfunction _reg(self: any): Map<string, EventHandler[]> {\r\n  if (!self._registry) self._registry = new Map<string, EventHandler[]>();\r\n  return self._registry;\r\n}\r\n\r\nfunction _ensureSlot(self: any, name: string): EventHandler[] {\r\n  const reg = _reg(self);\r\n  let slot = reg.get(name);\r\n  if (!slot) {\r\n    slot = [];\r\n    reg.set(name, slot);\r\n  }\r\n  return slot;\r\n}\r\n\r\nexport interface EventEmitter {\r\n  _registry: Map<string, EventHandler[]>;\r\n  _ceiling: number;\r\n  addListener(name: string, handler: EventHandler): this;\r\n  on(name: string, handler: EventHandler): this;\r\n  once(name: string, handler: EventHandler): this;\r\n  removeListener(name: string, handler: EventHandler): this;\r\n  off(name: string, handler: EventHandler): this;\r\n  removeAllListeners(name?: string): this;\r\n  emit(name: string, ...payload: unknown[]): boolean;\r\n  listeners(name: string): EventHandler[];\r\n  rawListeners(name: string): EventHandler[];\r\n  listenerCount(name: string): number;\r\n  eventNames(): string[];\r\n  setMaxListeners(limit: number): this;\r\n  getMaxListeners(): number;\r\n  prependListener(name: string, handler: EventHandler): this;\r\n  prependOnceListener(name: string, handler: EventHandler): this;\r\n}\r\n\r\nexport interface EventEmitterConstructor {\r\n  new(): EventEmitter;\r\n  (): void;\r\n  prototype: EventEmitter;\r\n  EventEmitter: EventEmitterConstructor;\r\n  defaultMaxListeners: number;\r\n  listenerCount(target: EventEmitter, name: string): number;\r\n  once(target: EventEmitter, name: string): Promise<unknown[]>;\r\n  on(target: EventEmitter, name: string): AsyncIterable<unknown[]>;\r\n  getEventListeners(target: EventEmitter, name: string): EventHandler[];\r\n}\r\n\r\nexport const EventEmitter = function EventEmitter(this: any) {\r\n  // guard against double-init (e.g. super() + EventEmitter.call(this))\r\n  if (this && !this._registry) {\r\n    this._registry = new Map<string, EventHandler[]>();\r\n  }\r\n  if (this && this._ceiling === undefined) {\r\n    this._ceiling = DEFAULT_CEILING;\r\n  }\r\n} as unknown as EventEmitterConstructor;\r\n\r\nEventEmitter.prototype.addListener = function addListener(name: string, handler: EventHandler): any {\r\n  const slot = _ensureSlot(this, name);\r\n  slot.push(handler);\r\n\r\n  // VFS->chokidar HMR bridge: detect FSWatcher by _watched Map\r\n  if (name === 'change' && !_vfsBridged.has(this) && (this as any)._watched instanceof Map) {\r\n    _vfsBridged.add(this);\r\n    _bridgeVfsToWatcher(this as any);\r\n  }\r\n\r\n  return this;\r\n};\r\n\r\n// on and addListener must be the SAME function reference -- if one calls the other,\r\n// subclass overrides cause infinite recursion\r\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\r\n\r\nEventEmitter.prototype.once = function once(name: string, handler: EventHandler): any {\r\n  const self = this;\r\n  const wrapper: EventHandler = function (this: any, ...payload: unknown[]) {\r\n    self.removeListener(name, wrapper);\r\n    handler.apply(self, payload);\r\n  };\r\n  // use _ensureSlot directly, not addListener, to avoid recursion\r\n  const slot = _ensureSlot(this, name);\r\n  slot.push(wrapper);\r\n  return this;\r\n};\r\n\r\nEventEmitter.prototype.removeListener = function removeListener(name: string, handler: EventHandler): any {\r\n  const slot = _reg(this).get(name);\r\n  if (slot) {\r\n    const pos = slot.indexOf(handler);\r\n    if (pos !== -1) {\r\n      slot.splice(pos, 1);\r\n    }\r\n  }\r\n  return this;\r\n};\r\n\r\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\r\n\r\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(name?: string): any {\r\n  if (name !== undefined) {\r\n    _reg(this).delete(name);\r\n  } else {\r\n    _reg(this).clear();\r\n  }\r\n  return this;\r\n};\r\n\r\nEventEmitter.prototype.emit = function emit(name: string, ...payload: unknown[]): boolean {\r\n  const slot = _reg(this).get(name);\r\n  if (!slot || slot.length === 0) {\r\n    if (name === \"error\") {\r\n      const problem = payload[0];\r\n      if (problem instanceof Error) throw problem;\r\n      throw new Error(\"Unhandled error event\");\r\n    }\r\n    return false;\r\n  }\r\n\r\n  // node's EventEmitter.emit is fire-and-forget. returned Promises from\r\n  // async listeners are NOT awaited and do NOT keep the event loop alive.\r\n  // an earlier version of this polyfill registered a Handle per async\r\n  // listener Promise, which broke parity (any listener returning a\r\n  // never-settling Promise leaked a refed Handle, which e.g. made vite's\r\n  // `q` shortcut fail to exit). fire-and-forget is correct.\r\n  //\r\n  // process.exit() throws our branded ProcessExitSentinel and we let it\r\n  // propagate so the wait loop sees didExit and short-circuits the rest\r\n  // of the handlers. other errors swallowed (matches node's per-listener\r\n  // exception handling in events.js for non-error events).\r\n\r\n  // fast path: single listener, avoid slice()\r\n  if (slot.length === 1) {\r\n    try {\r\n      slot[0].apply(this, payload);\r\n    } catch (e) {\r\n      if (isExitSentinel(e)) throw e;\r\n      /* ignore */\r\n    }\r\n    return true;\r\n  }\r\n\r\n  const snapshot = slot.slice();\r\n  for (const handler of snapshot) {\r\n    try {\r\n      handler.apply(this, payload);\r\n    } catch (e) {\r\n      if (isExitSentinel(e)) throw e;\r\n      /* ignore */\r\n    }\r\n  }\r\n  return true;\r\n};\r\n\r\nEventEmitter.prototype.listeners = function listeners(name: string): EventHandler[] {\r\n  const slot = _reg(this).get(name);\r\n  return slot ? slot.slice() : [];\r\n};\r\n\r\nEventEmitter.prototype.rawListeners = function rawListeners(name: string): EventHandler[] {\r\n  return this.listeners(name);\r\n};\r\n\r\nEventEmitter.prototype.listenerCount = function listenerCount(name: string): number {\r\n  const slot = _reg(this).get(name);\r\n  return slot ? slot.length : 0;\r\n};\r\n\r\nEventEmitter.prototype.eventNames = function eventNames(): string[] {\r\n  return Array.from(_reg(this).keys());\r\n};\r\n\r\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(limit: number): any {\r\n  this._ceiling = limit;\r\n  return this;\r\n};\r\n\r\nEventEmitter.prototype.getMaxListeners = function getMaxListeners(): number {\r\n  return this._ceiling ?? DEFAULT_CEILING;\r\n};\r\n\r\nEventEmitter.prototype.prependListener = function prependListener(name: string, handler: EventHandler): any {\r\n  const slot = _ensureSlot(this, name);\r\n  slot.unshift(handler);\r\n  return this;\r\n};\r\n\r\nEventEmitter.prototype.prependOnceListener = function prependOnceListener(name: string, handler: EventHandler): any {\r\n  const self = this;\r\n  const wrapper: EventHandler = function (this: any, ...payload: unknown[]) {\r\n    self.removeListener(name, wrapper);\r\n    handler.apply(self, payload);\r\n  };\r\n  return this.prependListener(name, wrapper);\r\n};\r\n\r\nEventEmitter.listenerCount = function (target: EventEmitter, name: string): number {\r\n  return target.listenerCount(name);\r\n};\r\n\r\n// read/write through DEFAULT_CEILING so emitters created after a write\r\n// pick up the updated value\r\nObject.defineProperty(EventEmitter, \"defaultMaxListeners\", {\r\n  get() {\r\n    return DEFAULT_CEILING;\r\n  },\r\n  set(v: number) {\r\n    const n = Number(v);\r\n    // node accepts 0 (unlimited) and any positive integer, rejects negative\r\n    // or non-numeric.\r\n    if (!Number.isFinite(n) || n < 0) {\r\n      throw new RangeError(\r\n        `defaultMaxListeners must be a non-negative number; got ${v}`,\r\n      );\r\n    }\r\n    DEFAULT_CEILING = n;\r\n  },\r\n  enumerable: true,\r\n  configurable: true,\r\n});\r\n\r\n// supports both `import EventEmitter from 'events'` and `import { EventEmitter }`\r\nconst moduleFacade = EventEmitter as EventEmitterConstructor & {\r\n  EventEmitter: EventEmitterConstructor;\r\n  once: (target: EventEmitter, name: string) => Promise<unknown[]>;\r\n  on: (target: EventEmitter, name: string) => AsyncIterable<unknown[]>;\r\n  getEventListeners: (target: EventEmitter, name: string) => EventHandler[];\r\n  listenerCount: (target: EventEmitter, name: string) => number;\r\n};\r\n\r\nmoduleFacade.EventEmitter = EventEmitter;\r\n\r\nmoduleFacade.once = async (\r\n  target: EventEmitter,\r\n  name: string,\r\n): Promise<unknown[]> => {\r\n  return new Promise((fulfill, reject) => {\r\n    const onSuccess: EventHandler = (...args: unknown[]) => {\r\n      target.removeListener(\"error\", onFailure);\r\n      fulfill(args);\r\n    };\r\n    const onFailure: EventHandler = (...args: unknown[]) => {\r\n      target.removeListener(name, onSuccess);\r\n      reject(args[0] as Error);\r\n    };\r\n    target.once(name, onSuccess);\r\n    target.once(\"error\", onFailure);\r\n  });\r\n};\r\n\r\nmoduleFacade.on = (target: EventEmitter, name: string) => {\r\n  // node's events.on(emitter, name) returns an async iterator that:\r\n  //  - buffers events as they arrive so nothing is dropped between awaits\r\n  //  - supports return()/throw() so `for await ... break/throw` cleans up\r\n  //    the internal listener instead of leaking it\r\n  //  - rejects on 'error' emitted from the source emitter\r\n  const unread: unknown[][] = [];\r\n  const waiting: Array<(r: { value: unknown[]; done: boolean }) => void> = [];\r\n  const rejecters: Array<(e: unknown) => void> = [];\r\n  let finished = false;\r\n  let errored: unknown = null;\r\n\r\n  const onEvent = (...args: unknown[]) => {\r\n    if (finished) return;\r\n    const w = waiting.shift();\r\n    rejecters.shift();\r\n    if (w) w({ value: args, done: false });\r\n    else unread.push(args);\r\n  };\r\n  const onError = (err: unknown) => {\r\n    if (finished) return;\r\n    errored = err;\r\n    cleanup();\r\n    const r = rejecters.shift();\r\n    waiting.shift();\r\n    if (r) r(err);\r\n  };\r\n  const cleanup = () => {\r\n    if (finished) return;\r\n    finished = true;\r\n    target.removeListener(name, onEvent);\r\n    target.removeListener(\"error\", onError);\r\n  };\r\n\r\n  target.on(name, onEvent);\r\n  target.on(\"error\", onError);\r\n\r\n  const iter: AsyncIterator<unknown[]> & AsyncIterable<unknown[]> = {\r\n    async next() {\r\n      if (errored) {\r\n        const e = errored;\r\n        errored = null;\r\n        throw e;\r\n      }\r\n      if (unread.length > 0) {\r\n        return { value: unread.shift() as unknown[], done: false };\r\n      }\r\n      if (finished) {\r\n        return { value: undefined as unknown as unknown[], done: true };\r\n      }\r\n      return new Promise<{ value: unknown[]; done: boolean }>(\r\n        (fulfill, reject) => {\r\n          waiting.push(fulfill);\r\n          rejecters.push(reject);\r\n        },\r\n      );\r\n    },\r\n    async return(value?: unknown) {\r\n      cleanup();\r\n      // wake pending awaiters so the for-await exits cleanly\r\n      while (waiting.length > 0) {\r\n        const w = waiting.shift();\r\n        rejecters.shift();\r\n        w?.({ value: undefined as unknown as unknown[], done: true });\r\n      }\r\n      return { value, done: true } as IteratorResult<unknown[]>;\r\n    },\r\n    async throw(err?: unknown) {\r\n      cleanup();\r\n      while (rejecters.length > 0) {\r\n        const r = rejecters.shift();\r\n        waiting.shift();\r\n        r?.(err);\r\n      }\r\n      throw err;\r\n    },\r\n    [Symbol.asyncIterator]() {\r\n      return this;\r\n    },\r\n  };\r\n  return iter;\r\n};\r\n\r\nmoduleFacade.getEventListeners = (target: EventEmitter, name: string) =>\r\n  target.listeners(name);\r\n\r\nmoduleFacade.listenerCount = (target: EventEmitter, name: string) =>\r\n  target.listenerCount(name);\r\n\r\nexport default moduleFacade;\r\n","// Buffer polyfill extending Uint8Array with Node.js Buffer API\r\n\r\n\r\nimport { bytesToBase64, base64ToBytes, bytesToHex, bytesToLatin1 } from '../helpers/byte-encoding';\r\n\r\nconst textEnc = new TextEncoder();\r\nconst textDec = new TextDecoder('utf-8');\r\n\r\n// Pre-computed hex char → nibble value lookup (0-255 for valid hex chars, 0 for invalid)\r\nconst HEX_DECODE = new Uint8Array(128);\r\nfor (let i = 0; i < 10; i++) HEX_DECODE[48 + i] = i;         // '0'-'9'\r\nfor (let i = 0; i < 6; i++) { HEX_DECODE[65 + i] = 10 + i; HEX_DECODE[97 + i] = 10 + i; } // 'A'-'F', 'a'-'f'\r\n\r\n// ---- The main BufferPolyfill class ----\r\n\r\nclass BufferPolyfill extends Uint8Array {\r\n  static readonly BYTES_PER_ELEMENT = 1;\r\n\r\n  // Overloads matching Node.js Buffer.from\r\n  static from(\r\n    source: string | ArrayBuffer | SharedArrayBuffer | Uint8Array | number[] | ArrayLike<number> | Iterable<number>,\r\n    encOrMapper?: string | number | ((v: unknown, i: number) => number),\r\n    ctx?: unknown\r\n  ): BufferPolyfill {\r\n    // Handle typed-array style mapper\r\n    if (typeof encOrMapper === 'function') {\r\n      const items = Array.from(source as ArrayLike<number>, encOrMapper as (v: number, i: number) => number, ctx);\r\n      return new BufferPolyfill(items);\r\n    }\r\n\r\n    const encoding = encOrMapper as string | undefined;\r\n\r\n    if (Array.isArray(source)) {\r\n      return new BufferPolyfill(source);\r\n    }\r\n\r\n    if (typeof source === 'string') {\r\n      const enc = (encoding || 'utf8').toLowerCase();\r\n\r\n      if (enc === 'base64' || enc === 'base64url') {\r\n        let b64 = source;\r\n        if (enc === 'base64url') {\r\n          b64 = b64.replace(/-/g, '+').replace(/_/g, '/');\r\n          while (b64.length % 4 !== 0) b64 += '=';\r\n        }\r\n        return new BufferPolyfill(base64ToBytes(b64));\r\n      }\r\n\r\n      if (enc === 'hex') {\r\n        const octets = new Uint8Array(source.length >>> 1);\r\n        for (let i = 0; i < source.length; i += 2) {\r\n          octets[i >>> 1] = (HEX_DECODE[source.charCodeAt(i)] << 4) | HEX_DECODE[source.charCodeAt(i + 1)];\r\n        }\r\n        return new BufferPolyfill(octets);\r\n      }\r\n\r\n      if (enc === 'latin1' || enc === 'binary') {\r\n        const octets = new Uint8Array(source.length);\r\n        for (let i = 0; i < source.length; i++) {\r\n          octets[i] = source.charCodeAt(i) & 0xff;\r\n        }\r\n        return new BufferPolyfill(octets);\r\n      }\r\n\r\n      // utf-8 default\r\n      return new BufferPolyfill(textEnc.encode(source));\r\n    }\r\n\r\n    if (source instanceof ArrayBuffer || (typeof SharedArrayBuffer !== 'undefined' && source instanceof SharedArrayBuffer)) {\r\n      // napi-rs uses Buffer.from(arrayBuffer, byteOffset, length) to view WebAssembly.Memory.buffer\r\n      if (typeof encOrMapper === 'number') {\r\n        const offset = encOrMapper;\r\n        const length = ctx as number | undefined;\r\n        return new BufferPolyfill(source as ArrayBuffer, offset, length);\r\n      }\r\n      return new BufferPolyfill(source as ArrayBuffer);\r\n    }\r\n\r\n    return new BufferPolyfill(source as Uint8Array);\r\n  }\r\n\r\n  static alloc(len: number, fillValue?: number): BufferPolyfill {\r\n    const buf = new BufferPolyfill(len);\r\n    if (fillValue !== undefined) {\r\n      buf.fill(fillValue);\r\n    }\r\n    return buf;\r\n  }\r\n\r\n  static allocUnsafe(len: number): BufferPolyfill {\r\n    return new BufferPolyfill(len);\r\n  }\r\n\r\n  static allocUnsafeSlow(len: number): BufferPolyfill {\r\n    return new BufferPolyfill(len);\r\n  }\r\n\r\n  static concat(list: (Uint8Array | BufferPolyfill)[]): BufferPolyfill {\r\n    let totalLen = 0;\r\n    for (const chunk of list) totalLen += chunk.length;\r\n    const merged = new BufferPolyfill(totalLen);\r\n    let pos = 0;\r\n    for (const chunk of list) {\r\n      merged.set(chunk, pos);\r\n      pos += chunk.length;\r\n    }\r\n    return merged;\r\n  }\r\n\r\n  // Real Node returns false for plain Uint8Arrays. Code branches on this to\r\n  // decide whether Buffer methods exist on the value (e.g. Next's\r\n  // indexOfUint8Array calls haystack.indexOf(needleBytes), which only does a\r\n  // subsequence search on a real Buffer — native Uint8Array#indexOf compares\r\n  // elements against the needle object and always misses).\r\n  static isBuffer(candidate: unknown): candidate is BufferPolyfill {\r\n    return candidate instanceof BufferPolyfill;\r\n  }\r\n\r\n  static isEncoding(enc: string): boolean {\r\n    const lower = enc.toLowerCase();\r\n    return ['utf8', 'utf-8', 'ascii', 'latin1', 'binary', 'base64', 'base64url', 'hex'].includes(lower);\r\n  }\r\n\r\n  static byteLength(text: string, enc?: string): number {\r\n    const lower = (enc || 'utf8').toLowerCase();\r\n    if (lower === 'base64' || lower === 'base64url') {\r\n      const stripped = text.replace(/[=]/g, '');\r\n      return Math.floor(stripped.length * 3 / 4);\r\n    }\r\n    if (lower === 'hex') {\r\n      return text.length >>> 1;\r\n    }\r\n    return textEnc.encode(text).length;\r\n  }\r\n\r\n  // ---- Instance methods ----\r\n\r\n  toString(enc: BufferEncoding = 'utf8', start?: number, end?: number): string {\r\n    const lower = (enc || 'utf8').toLowerCase();\r\n\r\n    // Node supports toString(encoding, start, end) — webpack's wasm-hash\r\n    // relies on it to read a small hex digest out of a whole-memory Buffer view\r\n    let view: BufferPolyfill = this;\r\n    if (start !== undefined || end !== undefined) {\r\n      const from = Math.max(0, Math.min(this.length, start ?? 0));\r\n      const to = Math.max(from, Math.min(this.length, end ?? this.length));\r\n      view = this.subarray(from, to);\r\n    }\r\n\r\n    if (lower === 'base64') return bytesToBase64(view);\r\n\r\n    if (lower === 'base64url') {\r\n      return bytesToBase64(view).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\r\n    }\r\n\r\n    if (lower === 'hex') return bytesToHex(view);\r\n\r\n    if (lower === 'latin1' || lower === 'binary') return bytesToLatin1(view);\r\n\r\n    // copy into fresh buffer, TextDecoder.decode() rejects SharedArrayBuffer views (napi-rs/WASI over shared memory)\r\n    if (typeof SharedArrayBuffer !== \"undefined\" && view.buffer instanceof SharedArrayBuffer) {\r\n      const copy = new Uint8Array(view.byteLength);\r\n      copy.set(view);\r\n      return textDec.decode(copy);\r\n    }\r\n    return textDec.decode(view);\r\n  }\r\n\r\n  slice(begin?: number, end?: number): BufferPolyfill {\r\n    return this.subarray(begin, end);\r\n  }\r\n\r\n  subarray(begin?: number, end?: number): BufferPolyfill {\r\n    const view = super.subarray(begin, end);\r\n    return Object.setPrototypeOf(view, BufferPolyfill.prototype) as BufferPolyfill;\r\n  }\r\n\r\n  write(string: string, encoding?: BufferEncoding): number;\r\n  write(string: string, offset: number, encoding?: BufferEncoding): number;\r\n  write(string: string, offset: number, length: number, encoding?: BufferEncoding): number;\r\n  write(string: string, offsetOrEncoding?: number | BufferEncoding, lengthOrEncoding?: number | BufferEncoding, encoding?: BufferEncoding): number {\r\n    const offset = typeof offsetOrEncoding === \"number\" ? offsetOrEncoding : 0;\r\n    let enc: BufferEncoding | undefined;\r\n    if (typeof offsetOrEncoding === \"string\") enc = offsetOrEncoding;\r\n    else if (typeof lengthOrEncoding === \"string\") enc = lengthOrEncoding;\r\n    else enc = encoding;\r\n    // webpack's wasm-hash writes binary strings with \"latin1\"; utf8-encoding\r\n    // those would expand chars >= 0x80 to two bytes and corrupt the hash state\r\n    const encoded = BufferPolyfill.from(string, enc || \"utf8\");\r\n    let len = typeof lengthOrEncoding === \"number\" ? Math.min(lengthOrEncoding, encoded.length) : encoded.length;\r\n    len = Math.min(len, this.length - offset);\r\n    this.set(encoded.subarray(0, len), offset);\r\n    return len;\r\n  }\r\n\r\n  copy(dest: BufferPolyfill, destStart?: number, srcStart?: number, srcEnd?: number): number {\r\n    const segment = this.subarray(srcStart || 0, srcEnd);\r\n    dest.set(segment, destStart || 0);\r\n    return segment.length;\r\n  }\r\n\r\n  compare(other: Uint8Array): number {\r\n    const bound = Math.min(this.length, other.length);\r\n    for (let i = 0; i < bound; i++) {\r\n      if (this[i] < other[i]) return -1;\r\n      if (this[i] > other[i]) return 1;\r\n    }\r\n    if (this.length < other.length) return -1;\r\n    if (this.length > other.length) return 1;\r\n    return 0;\r\n  }\r\n\r\n  equals(other: Uint8Array): boolean {\r\n    return this.compare(other) === 0;\r\n  }\r\n\r\n  toJSON(): { type: string; data: number[] } {\r\n    return { type: 'Buffer', data: Array.from(this) };\r\n  }\r\n\r\n  hasOwnProperty(key: PropertyKey): boolean {\r\n    return Object.prototype.hasOwnProperty.call(this, key);\r\n  }\r\n\r\n  indexOf(needle: number | Uint8Array | string, fromIndex?: number): number {\r\n    const start = fromIndex || 0;\r\n    if (typeof needle === 'number') {\r\n      for (let i = start; i < this.length; i++) {\r\n        if (this[i] === needle) return i;\r\n      }\r\n      return -1;\r\n    }\r\n    const search = typeof needle === 'string' ? BufferPolyfill.from(needle) : needle;\r\n    for (let i = start; i <= this.length - search.length; i++) {\r\n      let match = true;\r\n      for (let j = 0; j < search.length; j++) {\r\n        if (this[i + j] !== search[j]) { match = false; break; }\r\n      }\r\n      if (match) return i;\r\n    }\r\n    return -1;\r\n  }\r\n\r\n  includes(needle: number | Uint8Array | string, fromIndex?: number): boolean {\r\n    return this.indexOf(needle, fromIndex) !== -1;\r\n  }\r\n\r\n  // ---- Unsigned integer reads ----\r\n\r\n  readUInt8(pos: number): number {\r\n    return this[pos];\r\n  }\r\n\r\n  readUInt16BE(pos: number): number {\r\n    return (this[pos] << 8) | this[pos + 1];\r\n  }\r\n\r\n  readUInt16LE(pos: number): number {\r\n    return this[pos] | (this[pos + 1] << 8);\r\n  }\r\n\r\n  readUInt32BE(pos: number): number {\r\n    return ((this[pos] << 24) | (this[pos + 1] << 16) | (this[pos + 2] << 8) | this[pos + 3]) >>> 0;\r\n  }\r\n\r\n  readUInt32LE(pos: number): number {\r\n    return ((this[pos]) | (this[pos + 1] << 8) | (this[pos + 2] << 16) | (this[pos + 3] << 24)) >>> 0;\r\n  }\r\n\r\n  // ---- Unsigned integer writes ----\r\n\r\n  writeUInt8(val: number, pos: number): number {\r\n    this[pos] = val & 0xff;\r\n    return pos + 1;\r\n  }\r\n\r\n  writeUInt16BE(val: number, pos: number): number {\r\n    this[pos] = (val >>> 8) & 0xff;\r\n    this[pos + 1] = val & 0xff;\r\n    return pos + 2;\r\n  }\r\n\r\n  writeUInt16LE(val: number, pos: number): number {\r\n    this[pos] = val & 0xff;\r\n    this[pos + 1] = (val >>> 8) & 0xff;\r\n    return pos + 2;\r\n  }\r\n\r\n  writeUInt32BE(val: number, pos: number): number {\r\n    this[pos] = (val >>> 24) & 0xff;\r\n    this[pos + 1] = (val >>> 16) & 0xff;\r\n    this[pos + 2] = (val >>> 8) & 0xff;\r\n    this[pos + 3] = val & 0xff;\r\n    return pos + 4;\r\n  }\r\n\r\n  writeUInt32LE(val: number, pos: number): number {\r\n    this[pos] = val & 0xff;\r\n    this[pos + 1] = (val >>> 8) & 0xff;\r\n    this[pos + 2] = (val >>> 16) & 0xff;\r\n    this[pos + 3] = (val >>> 24) & 0xff;\r\n    return pos + 4;\r\n  }\r\n\r\n  // ---- Lowercase aliases ----\r\n  readUint8(pos: number): number { return this.readUInt8(pos); }\r\n  readUint16BE(pos: number): number { return this.readUInt16BE(pos); }\r\n  readUint16LE(pos: number): number { return this.readUInt16LE(pos); }\r\n  readUint32BE(pos: number): number { return this.readUInt32BE(pos); }\r\n  readUint32LE(pos: number): number { return this.readUInt32LE(pos); }\r\n  writeUint8(val: number, pos: number): number { return this.writeUInt8(val, pos); }\r\n  writeUint16BE(val: number, pos: number): number { return this.writeUInt16BE(val, pos); }\r\n  writeUint16LE(val: number, pos: number): number { return this.writeUInt16LE(val, pos); }\r\n  writeUint32BE(val: number, pos: number): number { return this.writeUInt32BE(val, pos); }\r\n  writeUint32LE(val: number, pos: number): number { return this.writeUInt32LE(val, pos); }\r\n\r\n  // ---- Signed integer reads ----\r\n\r\n  readInt8(pos: number): number {\r\n    const raw = this[pos];\r\n    return raw & 0x80 ? raw - 0x100 : raw;\r\n  }\r\n\r\n  readInt16BE(pos: number): number {\r\n    const raw = this.readUInt16BE(pos);\r\n    return raw & 0x8000 ? raw - 0x10000 : raw;\r\n  }\r\n\r\n  readInt16LE(pos: number): number {\r\n    const raw = this.readUInt16LE(pos);\r\n    return raw & 0x8000 ? raw - 0x10000 : raw;\r\n  }\r\n\r\n  readInt32BE(pos: number): number {\r\n    return this.readUInt32BE(pos) | 0;\r\n  }\r\n\r\n  readInt32LE(pos: number): number {\r\n    return this.readUInt32LE(pos) | 0;\r\n  }\r\n\r\n  // ---- Signed integer writes ----\r\n\r\n  writeInt8(val: number, pos: number): number {\r\n    this[pos] = val & 0xff;\r\n    return pos + 1;\r\n  }\r\n\r\n  writeInt16BE(val: number, pos: number): number {\r\n    return this.writeUInt16BE(val & 0xffff, pos);\r\n  }\r\n\r\n  writeInt16LE(val: number, pos: number): number {\r\n    return this.writeUInt16LE(val & 0xffff, pos);\r\n  }\r\n\r\n  writeInt32BE(val: number, pos: number): number {\r\n    return this.writeUInt32BE(val >>> 0, pos);\r\n  }\r\n\r\n  writeInt32LE(val: number, pos: number): number {\r\n    return this.writeUInt32LE(val >>> 0, pos);\r\n  }\r\n\r\n  // ---- BigInt 64-bit reads ----\r\n\r\n  readBigUInt64LE(pos: number): bigint {\r\n    const lo = BigInt(this[pos] | (this[pos + 1] << 8) | (this[pos + 2] << 16) | (this[pos + 3] << 24)) & 0xffffffffn;\r\n    const hi = BigInt(this[pos + 4] | (this[pos + 5] << 8) | (this[pos + 6] << 16) | (this[pos + 7] << 24)) & 0xffffffffn;\r\n    return lo | (hi << 32n);\r\n  }\r\n\r\n  readBigUInt64BE(pos: number): bigint {\r\n    const hi = BigInt(this[pos] << 24 | this[pos + 1] << 16 | this[pos + 2] << 8 | this[pos + 3]) & 0xffffffffn;\r\n    const lo = BigInt(this[pos + 4] << 24 | this[pos + 5] << 16 | this[pos + 6] << 8 | this[pos + 7]) & 0xffffffffn;\r\n    return lo | (hi << 32n);\r\n  }\r\n\r\n  readBigInt64LE(pos: number): bigint {\r\n    const unsigned = this.readBigUInt64LE(pos);\r\n    return unsigned >= 0x8000000000000000n ? unsigned - 0x10000000000000000n : unsigned;\r\n  }\r\n\r\n  readBigInt64BE(pos: number): bigint {\r\n    const unsigned = this.readBigUInt64BE(pos);\r\n    return unsigned >= 0x8000000000000000n ? unsigned - 0x10000000000000000n : unsigned;\r\n  }\r\n\r\n  // ---- BigInt 64-bit writes ----\r\n\r\n  writeBigUInt64LE(val: bigint, pos: number): number {\r\n    const lo = val & 0xffffffffn;\r\n    const hi = (val >> 32n) & 0xffffffffn;\r\n    this[pos] = Number(lo & 0xffn);\r\n    this[pos + 1] = Number((lo >> 8n) & 0xffn);\r\n    this[pos + 2] = Number((lo >> 16n) & 0xffn);\r\n    this[pos + 3] = Number((lo >> 24n) & 0xffn);\r\n    this[pos + 4] = Number(hi & 0xffn);\r\n    this[pos + 5] = Number((hi >> 8n) & 0xffn);\r\n    this[pos + 6] = Number((hi >> 16n) & 0xffn);\r\n    this[pos + 7] = Number((hi >> 24n) & 0xffn);\r\n    return pos + 8;\r\n  }\r\n\r\n  writeBigUInt64BE(val: bigint, pos: number): number {\r\n    const lo = val & 0xffffffffn;\r\n    const hi = (val >> 32n) & 0xffffffffn;\r\n    this[pos] = Number((hi >> 24n) & 0xffn);\r\n    this[pos + 1] = Number((hi >> 16n) & 0xffn);\r\n    this[pos + 2] = Number((hi >> 8n) & 0xffn);\r\n    this[pos + 3] = Number(hi & 0xffn);\r\n    this[pos + 4] = Number((lo >> 24n) & 0xffn);\r\n    this[pos + 5] = Number((lo >> 16n) & 0xffn);\r\n    this[pos + 6] = Number((lo >> 8n) & 0xffn);\r\n    this[pos + 7] = Number(lo & 0xffn);\r\n    return pos + 8;\r\n  }\r\n\r\n  writeBigInt64LE(val: bigint, pos: number): number {\r\n    const unsigned = val < 0n ? val + 0x10000000000000000n : val;\r\n    return this.writeBigUInt64LE(unsigned, pos);\r\n  }\r\n\r\n  writeBigInt64BE(val: bigint, pos: number): number {\r\n    const unsigned = val < 0n ? val + 0x10000000000000000n : val;\r\n    return this.writeBigUInt64BE(unsigned, pos);\r\n  }\r\n\r\n  // Lowercase BigInt aliases\r\n  readBigUint64LE(pos: number): bigint { return this.readBigUInt64LE(pos); }\r\n  readBigUint64BE(pos: number): bigint { return this.readBigUInt64BE(pos); }\r\n  writeBigUint64LE(val: bigint, pos: number): number { return this.writeBigUInt64LE(val, pos); }\r\n  writeBigUint64BE(val: bigint, pos: number): number { return this.writeBigUInt64BE(val, pos); }\r\n\r\n  // ---- Float / Double reads ----\r\n\r\n  readFloatLE(pos: number): number {\r\n    const dv = new DataView(this.buffer, this.byteOffset + pos, 4);\r\n    return dv.getFloat32(0, true);\r\n  }\r\n\r\n  readFloatBE(pos: number): number {\r\n    const dv = new DataView(this.buffer, this.byteOffset + pos, 4);\r\n    return dv.getFloat32(0, false);\r\n  }\r\n\r\n  readDoubleLE(pos: number): number {\r\n    const dv = new DataView(this.buffer, this.byteOffset + pos, 8);\r\n    return dv.getFloat64(0, true);\r\n  }\r\n\r\n  readDoubleBE(pos: number): number {\r\n    const dv = new DataView(this.buffer, this.byteOffset + pos, 8);\r\n    return dv.getFloat64(0, false);\r\n  }\r\n\r\n  // ---- Float / Double writes ----\r\n\r\n  writeFloatLE(val: number, pos: number): number {\r\n    const dv = new DataView(this.buffer, this.byteOffset + pos, 4);\r\n    dv.setFloat32(0, val, true);\r\n    return pos + 4;\r\n  }\r\n\r\n  writeFloatBE(val: number, pos: number): number {\r\n    const dv = new DataView(this.buffer, this.byteOffset + pos, 4);\r\n    dv.setFloat32(0, val, false);\r\n    return pos + 4;\r\n  }\r\n\r\n  writeDoubleLE(val: number, pos: number): number {\r\n    const dv = new DataView(this.buffer, this.byteOffset + pos, 8);\r\n    dv.setFloat64(0, val, true);\r\n    return pos + 8;\r\n  }\r\n\r\n  writeDoubleBE(val: number, pos: number): number {\r\n    const dv = new DataView(this.buffer, this.byteOffset + pos, 8);\r\n    dv.setFloat64(0, val, false);\r\n    return pos + 8;\r\n  }\r\n\r\n  // ---- Variable-length integer reads ----\r\n\r\n  readUIntLE(pos: number, width: number): number {\r\n    let result = 0;\r\n    let factor = 1;\r\n    for (let i = 0; i < width; i++) {\r\n      result += this[pos + i] * factor;\r\n      factor *= 0x100;\r\n    }\r\n    return result;\r\n  }\r\n\r\n  readUintLE(pos: number, width: number): number { return this.readUIntLE(pos, width); }\r\n\r\n  readUIntBE(pos: number, width: number): number {\r\n    let result = 0;\r\n    let factor = 1;\r\n    for (let i = width - 1; i >= 0; i--) {\r\n      result += this[pos + i] * factor;\r\n      factor *= 0x100;\r\n    }\r\n    return result;\r\n  }\r\n\r\n  readUintBE(pos: number, width: number): number { return this.readUIntBE(pos, width); }\r\n\r\n  readIntLE(pos: number, width: number): number {\r\n    let raw = this.readUIntLE(pos, width);\r\n    const threshold = Math.pow(2, (width * 8) - 1);\r\n    if (raw >= threshold) raw -= Math.pow(2, width * 8);\r\n    return raw;\r\n  }\r\n\r\n  readIntBE(pos: number, width: number): number {\r\n    let raw = this.readUIntBE(pos, width);\r\n    const threshold = Math.pow(2, (width * 8) - 1);\r\n    if (raw >= threshold) raw -= Math.pow(2, width * 8);\r\n    return raw;\r\n  }\r\n\r\n  // ---- Variable-length integer writes ----\r\n\r\n  writeUIntLE(val: number, pos: number, width: number): number {\r\n    let remaining = val;\r\n    for (let i = 0; i < width; i++) {\r\n      this[pos + i] = remaining & 0xff;\r\n      remaining = Math.floor(remaining / 0x100);\r\n    }\r\n    return pos + width;\r\n  }\r\n\r\n  writeUintLE(val: number, pos: number, width: number): number { return this.writeUIntLE(val, pos, width); }\r\n\r\n  writeUIntBE(val: number, pos: number, width: number): number {\r\n    let remaining = val;\r\n    for (let i = width - 1; i >= 0; i--) {\r\n      this[pos + i] = remaining & 0xff;\r\n      remaining = Math.floor(remaining / 0x100);\r\n    }\r\n    return pos + width;\r\n  }\r\n\r\n  writeUintBE(val: number, pos: number, width: number): number { return this.writeUIntBE(val, pos, width); }\r\n\r\n  writeIntLE(val: number, pos: number, width: number): number {\r\n    let adjusted = val;\r\n    if (adjusted < 0) adjusted += Math.pow(2, width * 8);\r\n    return this.writeUIntLE(adjusted, pos, width);\r\n  }\r\n\r\n  writeIntBE(val: number, pos: number, width: number): number {\r\n    let adjusted = val;\r\n    if (adjusted < 0) adjusted += Math.pow(2, width * 8);\r\n    return this.writeUIntBE(adjusted, pos, width);\r\n  }\r\n\r\n  // ---- Byte swap methods ----\r\n\r\n  swap16(): this {\r\n    if (this.length % 2 !== 0) throw new RangeError('Buffer size must be a multiple of 16-bits');\r\n    for (let i = 0; i < this.length; i += 2) {\r\n      const tmp = this[i];\r\n      this[i] = this[i + 1];\r\n      this[i + 1] = tmp;\r\n    }\r\n    return this;\r\n  }\r\n\r\n  swap32(): this {\r\n    if (this.length % 4 !== 0) throw new RangeError('Buffer size must be a multiple of 32-bits');\r\n    for (let i = 0; i < this.length; i += 4) {\r\n      const a = this[i], b = this[i + 1];\r\n      this[i] = this[i + 3];\r\n      this[i + 1] = this[i + 2];\r\n      this[i + 2] = b;\r\n      this[i + 3] = a;\r\n    }\r\n    return this;\r\n  }\r\n\r\n  swap64(): this {\r\n    if (this.length % 8 !== 0) throw new RangeError('Buffer size must be a multiple of 64-bits');\r\n    for (let i = 0; i < this.length; i += 8) {\r\n      const a = this[i], b = this[i + 1], c = this[i + 2], d = this[i + 3];\r\n      this[i] = this[i + 7]; this[i + 1] = this[i + 6];\r\n      this[i + 2] = this[i + 5]; this[i + 3] = this[i + 4];\r\n      this[i + 4] = d; this[i + 5] = c;\r\n      this[i + 6] = b; this[i + 7] = a;\r\n    }\r\n    return this;\r\n  }\r\n}\r\n\r\n// Wrap BufferPolyfill so it can be called without `new` (like Node.js's deprecated Buffer())\r\n// Cast to BufferConstructor so downstream code sees Node.js-compatible Buffer types.\r\nconst Buffer = new Proxy(BufferPolyfill, {\r\n  apply(_target, _thisArg, args) {\r\n    // Buffer(string, encoding) or Buffer(size) or Buffer(array) — deprecated but still works in Node\r\n    return (BufferPolyfill as any).from(...args);\r\n  },\r\n}) as unknown as BufferConstructor & typeof BufferPolyfill;\r\n\r\n// Install on globalThis if missing\r\nif (typeof globalThis.Buffer === 'undefined') {\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  (globalThis as any).Buffer = Buffer;\r\n}\r\n\r\nexport { Buffer };\r\n\r\n// Secondary exports matching Node.js `buffer` module surface\r\nexport const SlowBuffer = Buffer;\r\nexport const kMaxLength = 2147483647;\r\nexport const INSPECT_MAX_BYTES = 50;\r\n\r\nexport const constants = {\r\n  MAX_LENGTH: kMaxLength,\r\n  MAX_STRING_LENGTH: 536870888,\r\n};\r\n\r\nexport function transcode(\r\n  src: Uint8Array,\r\n  _fromEnc: string,\r\n  _toEnc: string\r\n): InstanceType<typeof BufferPolyfill> {\r\n  return BufferPolyfill.from(src);\r\n}\r\n\r\nexport function resolveObjectURL(_id: string): undefined {\r\n  return undefined;\r\n}\r\n\r\nexport function atob(data: string): string {\r\n  return globalThis.atob(data);\r\n}\r\n\r\nexport function btoa(data: string): string {\r\n  return globalThis.btoa(data);\r\n}\r\n\r\nconst bufferModule: Record<string, unknown> = {\r\n  Buffer: BufferPolyfill,\r\n  SlowBuffer,\r\n  kMaxLength,\r\n  INSPECT_MAX_BYTES,\r\n  constants,\r\n  transcode,\r\n  resolveObjectURL,\r\n  atob,\r\n  btoa,\r\n};\r\n\r\nObject.defineProperty(bufferModule, 'hasOwnProperty', {\r\n  value: Object.prototype.hasOwnProperty,\r\n  enumerable: false,\r\n  configurable: true,\r\n  writable: true,\r\n});\r\n\r\nexport default bufferModule;\r\n","// Stream polyfill -- Readable, Writable, Duplex, Transform, PassThrough, pipeline, finished.\n// Uses function constructors (not classes) so Readable.call(this) works for pre-ES6 inheritance.\n\nimport { EventEmitter } from \"./events\";\nimport { Buffer } from \"./buffer\";\n\nfunction bufferByteLength(chunk: unknown): number {\n  if (chunk instanceof Uint8Array) return chunk.byteLength;\n  if (typeof chunk === \"string\") return Buffer.byteLength(chunk);\n  return 0;\n}\n\n// Readable\n\nexport interface Readable extends EventEmitter {\n  readable: boolean;\n  readableEnded: boolean;\n  readableFlowing: boolean | null;\n  destroyed: boolean;\n  closed: boolean;\n  errored: Error | null;\n  readableObjectMode: boolean;\n  readableHighWaterMark: number;\n  readableDidRead: boolean;\n  readableAborted: boolean;\n  _readableState: any;\n  _read(size: number): void;\n  _destroy(err: Error | null, cb: (err?: Error | null) => void): void;\n  readonly readableLength: number;\n  readonly readableEncoding: BufferEncoding | null;\n  _rawBind(evt: string | symbol, fn: (...args: unknown[]) => void): this;\n  on(evt: string | symbol, fn: (...args: any[]) => void): this;\n  addListener(evt: string | symbol, fn: (...args: any[]) => void): this;\n  once(evt: string | symbol, fn: (...args: any[]) => void): this;\n  push(chunk: any): boolean;\n  unshift(chunk: any): void;\n  read(amount?: number): any;\n  resume(): this;\n  pause(): this;\n  isPaused(): boolean;\n  pipe(target: any): any;\n  unpipe(target?: any): this;\n  setEncoding(enc: string): this;\n  close(cb?: (err?: Error | null) => void): void;\n  destroy(fault?: Error): this;\n  wrap(oldStream: EventEmitter): this;\n  [Symbol.asyncIterator](): AsyncIterableIterator<unknown>;\n}\n\ninterface ReadableConstructor {\n  new (opts?: any): Readable;\n  (this: any, opts?: any): void;\n  prototype: any;\n  toWeb(readable: Readable): ReadableStream<Uint8Array>;\n  fromWeb(webStream: ReadableStream, opts?: any): Readable;\n  from(source: Iterable<unknown> | AsyncIterable<unknown>, opts?: any): Readable;\n}\n\nexport const Readable = function Readable(this: any, opts?: any) {\n  if (!this) return;\n  EventEmitter.call(this);\n\n  this._queue = [];\n  this._terminated = false;\n  this._active = false;\n  this._endFired = false;\n  this._endEmitted = false;\n  this._objectMode = false;\n  this._reading = false;\n  this._highWaterMark = 16384;\n  this._autoDestroy = true;\n  this._encoding = null;\n  this._readableByteLength = 0;\n  this._draining = false;\n\n  this.readable = true;\n  this.readableEnded = false;\n  this.readableFlowing = null;\n  this.destroyed = false;\n  this.closed = false;\n  this.errored = null;\n  this.readableObjectMode = false;\n  this.readableHighWaterMark = 16384;\n  this.readableDidRead = false;\n  this.readableAborted = false;\n\n  // _readableState proxy so libs like readable-stream can inspect internals\n  const self = this;\n  this._readableState = {\n    get objectMode() { return self._objectMode; },\n    get highWaterMark() { return self._highWaterMark; },\n    get ended() { return self._terminated; },\n    get endEmitted() { return self._endEmitted; },\n    set endEmitted(v: boolean) { self._endEmitted = v; },\n    get flowing() { return self.readableFlowing; },\n    set flowing(v: boolean | null) { self.readableFlowing = v; },\n    get reading() { return self._reading; },\n    get length() { return self.readableLength; },\n    get destroyed() { return self.destroyed; },\n    get errored() { return self.errored; },\n    get closed() { return self.closed; },\n    pipes: [],\n    awaitDrainWriters: null,\n    multiAwaitDrain: false,\n    readableListening: false,\n    resumeScheduled: false,\n    paused: true,\n    emitClose: true,\n    get autoDestroy() { return self._autoDestroy; },\n    defaultEncoding: \"utf8\",\n    needReadable: false,\n    emittedReadable: false,\n    readingMore: false,\n    dataEmitted: false,\n  };\n\n  if (opts) {\n    if (opts.objectMode) {\n      this._objectMode = true;\n      this.readableObjectMode = true;\n      if (opts.highWaterMark === undefined) {\n        this._highWaterMark = 16;\n        this.readableHighWaterMark = 16;\n      }\n    }\n    if (opts.highWaterMark !== undefined) {\n      this._highWaterMark = opts.highWaterMark;\n      this.readableHighWaterMark = opts.highWaterMark;\n    }\n    if (opts.autoDestroy !== undefined) {\n      this._autoDestroy = opts.autoDestroy;\n    }\n    if (opts.read) {\n      this._read = opts.read.bind(this);\n    }\n    if (opts.destroy) {\n      this._destroy = opts.destroy.bind(this);\n    }\n  }\n} as unknown as ReadableConstructor;\n\nObject.setPrototypeOf(Readable.prototype, EventEmitter.prototype);\n\nReadable.prototype._read = function _read(_size: number): void {};\n\nReadable.prototype._destroy = function _destroy(\n  err: Error | null,\n  callback: (err?: Error | null) => void,\n): void {\n  callback(err);\n};\n\n// skips auto-flow logic so internal listeners don't trigger resume()\nReadable.prototype._rawBind = function _rawBind(\n  evt: string | symbol,\n  fn: (...args: unknown[]) => void,\n): any {\n  EventEmitter.prototype.addListener.call(this, evt as string, fn);\n  return this;\n};\n\nReadable.prototype.on = function on(\n  evt: string | symbol,\n  fn: (...args: unknown[]) => void,\n): any {\n  this._rawBind(evt, fn);\n  if (evt === \"data\" && !this._active) {\n    this.resume();\n  }\n  if (evt === \"readable\") {\n    this.readableFlowing = false;\n  }\n  // fire late 'end' listeners async (matches Node.js behavior)\n  if (evt === \"end\" && this._endEmitted) {\n    queueMicrotask(() => fn());\n  } else if (evt === \"end\" && this._terminated && this._queue.length === 0 && !this._endFired) {\n    this._endFired = true;\n    queueMicrotask(() => {\n      this._endEmitted = true;\n      this.emit(\"end\");\n      if (this._autoDestroy) {\n        this.destroy();\n      }\n    });\n  }\n  return this;\n};\n\nReadable.prototype.addListener = function addListener(\n  evt: string | symbol,\n  fn: (...args: unknown[]) => void,\n): any {\n  return this.on(evt, fn);\n};\n\nReadable.prototype.once = function once(\n  evt: string | symbol,\n  fn: (...args: unknown[]) => void,\n): any {\n  if (evt === \"end\" && this._endEmitted) {\n    queueMicrotask(() => fn());\n    return this;\n  }\n  if (evt === \"end\" && this._terminated && this._queue.length === 0 && !this._endFired) {\n    this._endFired = true;\n    EventEmitter.prototype.once.call(this, evt as string, fn);\n    queueMicrotask(() => {\n      this._endEmitted = true;\n      this.emit(\"end\");\n      if (this._autoDestroy) {\n        this.destroy();\n      }\n    });\n    return this;\n  }\n  if (evt === \"data\" && !this._active) {\n    EventEmitter.prototype.once.call(this, evt as string, fn);\n    this.resume();\n    return this;\n  }\n  return EventEmitter.prototype.once.call(this, evt as string, fn);\n};\n\nReadable.prototype.push = function push(chunk: any): boolean {\n  if (chunk === null) {\n    this._terminated = true;\n    // Match Node: EOF is signaled but buffered data remains readable until drained.\n    if (this._queue.length === 0) {\n      this.readableEnded = true;\n      this.readable = false;\n      if (this._active && !this._endFired) {\n        this._endFired = true;\n        queueMicrotask(() => {\n          this._endEmitted = true;\n          this.emit(\"end\");\n        });\n      }\n    }\n    if (this._active) {\n      this._drain();\n    }\n    return false;\n  }\n\n  if (this._objectMode) {\n    this._queue.push(chunk);\n  } else {\n    const bytes = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\n    this._readableByteLength += bufferByteLength(bytes);\n    this._queue.push(bytes);\n  }\n\n  if (this._active) {\n    this._drain();\n  }\n  return this._queue.length < this._highWaterMark;\n};\n\nReadable.prototype.unshift = function unshift(chunk: any): void {\n  if (chunk === null) return;\n  if (this._objectMode) {\n    this._queue.unshift(chunk);\n  } else {\n    const bytes = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\n    this._readableByteLength += bufferByteLength(bytes);\n    this._queue.unshift(bytes);\n  }\n};\n\nReadable.prototype._drain = function _drain(): void {\n  if (this._draining) return;\n  this._draining = true;\n  while (this._queue.length > 0 && this._active) {\n    const item = this._queue.shift();\n    if (!this._objectMode) {\n      this._readableByteLength -= bufferByteLength(item);\n    }\n    this.readableDidRead = true;\n    if (this._encoding && item instanceof Uint8Array) {\n      this.emit(\"data\", Buffer.from(item).toString(this._encoding));\n    } else {\n      this.emit(\"data\", item);\n    }\n  }\n  this._draining = false;\n  if (this._terminated && this._queue.length === 0 && !this._endFired) {\n    this.readableEnded = true;\n    this.readable = false;\n    this._endFired = true;\n    queueMicrotask(() => {\n      this._endEmitted = true;\n      this.emit(\"end\");\n      if (this._autoDestroy) {\n        this.destroy();\n      }\n    });\n  }\n  if (!this._terminated && this._queue.length === 0 && this._active && !this._reading) {\n    this._reading = true;\n    queueMicrotask(() => {\n      this._reading = false;\n      if (!this._terminated && this._active) {\n        this._read(this._highWaterMark);\n      }\n    });\n  }\n};\n\nReadable.prototype.read = function read(amount?: number): any {\n  this.readableDidRead = true;\n  if (!this._reading && !this._terminated) {\n    this._reading = true;\n    this._read(amount ?? this._highWaterMark);\n    this._reading = false;\n  }\n\n  if (this._queue.length === 0) return null;\n\n  if (this._objectMode) {\n    const item = this._queue.shift();\n    return item;\n  }\n\n  if (amount === undefined || amount === 0) {\n    const combined = Buffer.concat(this._queue as Uint8Array[]);\n    this._readableByteLength = 0;\n    this._queue.length = 0;\n    return combined;\n  }\n\n  const pieces: Uint8Array[] = [];\n  let needed = amount;\n  while (needed > 0 && this._queue.length > 0) {\n    const front = this._queue[0] as Uint8Array;\n    if (front.length <= needed) {\n      pieces.push(this._queue.shift() as Uint8Array);\n      this._readableByteLength -= front.length;\n      needed -= front.length;\n    } else {\n      pieces.push(front.slice(0, needed));\n      this._queue[0] = front.slice(needed);\n      this._readableByteLength -= needed;\n      needed = 0;\n    }\n  }\n  return pieces.length > 0 ? Buffer.concat(pieces) : null;\n};\n\nReadable.prototype.resume = function resume(): any {\n  this._active = true;\n  this.readableFlowing = true;\n  this._drain();\n  if (!this._terminated && this._queue.length === 0 && !this._reading) {\n    this._reading = true;\n    queueMicrotask(() => {\n      this._reading = false;\n      if (!this._terminated && this._active) {\n        this._read(this._highWaterMark);\n      }\n    });\n  }\n  return this;\n};\n\nReadable.prototype.pause = function pause(): any {\n  this._active = false;\n  this.readableFlowing = false;\n  return this;\n};\n\nReadable.prototype.isPaused = function isPaused(): boolean {\n  return !this._active;\n};\n\nReadable.prototype.pipe = function pipe(target: any): any {\n  const self = this;\n  self.on(\"data\", function onData(chunk: unknown) {\n    const needDrain = !target.write(chunk);\n    if (needDrain) {\n      self.pause();\n      target.once(\"drain\", function onDrain() { self.resume(); });\n    }\n  });\n  self.on(\"end\", function onEnd() {\n    target.end();\n  });\n  self.resume();\n  return target;\n};\n\nReadable.prototype.unpipe = function unpipe(_target?: any): any {\n  this.removeAllListeners(\"data\");\n  this.removeAllListeners(\"end\");\n  return this;\n};\n\nReadable.prototype.setEncoding = function setEncoding(enc: string): any {\n  this._encoding = enc as BufferEncoding;\n  return this;\n};\n\nReadable.prototype.close = function close(cb?: (err?: Error | null) => void): void {\n  this.destroy();\n  if (cb) cb(null);\n};\n\nReadable.prototype.destroy = function destroy(fault?: Error): any {\n  if (this.destroyed) return this;\n  this.destroyed = true;\n  if (fault) this.errored = fault;\n\n  this._destroy(fault ?? null, (err: Error | null | undefined) => {\n    if (err && !fault) this.errored = err;\n    this._queue.length = 0;\n    this._readableByteLength = 0;\n    this._terminated = true;\n    this.readable = false;\n    if (err || fault) this.emit(\"error\", err || fault);\n    this.closed = true;\n    this.emit(\"close\");\n  });\n  return this;\n};\n\nReadable.prototype.wrap = function wrap(oldStream: any): any {\n  const self = this;\n  oldStream.on(\"data\", function onData(chunk: unknown) {\n    self.push(chunk);\n  });\n  oldStream.on(\"end\", function onEnd() {\n    self.push(null);\n  });\n  oldStream.on(\"error\", function onError(err: unknown) {\n    self.destroy(err as Error);\n  });\n  return this;\n};\n\nReadable.prototype[Symbol.asyncIterator] = function asyncIterator(): AsyncIterableIterator<unknown> {\n  const stream = this;\n  const buffer: unknown[] = [];\n  let done = false;\n  let error: Error | null = null;\n  let waiting: ((val: IteratorResult<unknown>) => void) | null = null;\n  let waitingReject: ((err: Error) => void) | null = null;\n\n  const onData = (chunk: unknown) => {\n    if (waiting) {\n      const resolve = waiting;\n      waiting = null;\n      waitingReject = null;\n      resolve({ value: chunk, done: false });\n    } else {\n      buffer.push(chunk);\n    }\n  };\n\n  const onEnd = () => {\n    done = true;\n    if (waiting) {\n      const resolve = waiting;\n      waiting = null;\n      waitingReject = null;\n      resolve({ value: undefined, done: true });\n    }\n    cleanup();\n  };\n\n  const onError = (...args: unknown[]) => {\n    error = args[0] as Error;\n    if (waitingReject) {\n      const reject = waitingReject;\n      waiting = null;\n      waitingReject = null;\n      reject(error);\n    }\n    cleanup();\n  };\n\n  const cleanup = () => {\n    stream.removeListener(\"data\", onData);\n    stream.removeListener(\"end\", onEnd);\n    stream.removeListener(\"error\", onError);\n  };\n\n  stream._rawBind(\"data\", onData);\n  stream._rawBind(\"end\", onEnd);\n  stream._rawBind(\"error\", onError);\n  if (!stream._active) stream.resume();\n\n  return {\n    next(): Promise<IteratorResult<unknown>> {\n      if (buffer.length > 0) {\n        return Promise.resolve({ value: buffer.shift(), done: false });\n      }\n      if (error) return Promise.reject(error);\n      if (done) return Promise.resolve({ value: undefined, done: true });\n\n      return new Promise<IteratorResult<unknown>>((resolve, reject) => {\n        waiting = resolve;\n        waitingReject = reject;\n      });\n    },\n    return(): Promise<IteratorResult<unknown>> {\n      cleanup();\n      stream.destroy();\n      return Promise.resolve({ value: undefined, done: true });\n    },\n    throw(err: Error): Promise<IteratorResult<unknown>> {\n      cleanup();\n      stream.destroy(err);\n      return Promise.reject(err);\n    },\n    [Symbol.asyncIterator]() {\n      return this;\n    },\n  };\n};\n\nObject.defineProperty(Readable.prototype, \"readableLength\", {\n  get: function (this: any) {\n    if (this._objectMode) return this._queue.length;\n    return this._readableByteLength;\n  },\n  configurable: true,\n});\n\nObject.defineProperty(Readable.prototype, \"readableEncoding\", {\n  get: function (this: any) {\n    return this._encoding;\n  },\n  configurable: true,\n});\n\nReadable.toWeb = function toWeb(readable: any): ReadableStream<Uint8Array> {\n  return new ReadableStream({\n    start(controller) {\n      readable.on(\"data\", (chunk: unknown) => {\n        const buf =\n          chunk instanceof Uint8Array ? chunk : Buffer.from(String(chunk));\n        controller.enqueue(buf);\n      });\n      readable.on(\"end\", () => {\n        controller.close();\n      });\n      readable.on(\"error\", (err: unknown) => {\n        controller.error(err);\n      });\n      readable.resume();\n    },\n    cancel() {\n      readable.destroy();\n    },\n  });\n};\n\nReadable.fromWeb = function fromWeb(\n  webStream: ReadableStream,\n  opts?: { objectMode?: boolean; highWaterMark?: number },\n): Readable {\n  const reader = webStream.getReader();\n  const stream = new Readable({\n    ...opts,\n    read() {\n      reader.read().then(\n        ({ value, done }: { value: any; done: boolean }) => {\n          if (done) {\n            stream.push(null);\n          } else {\n            stream.push(value);\n          }\n        },\n        (err: Error) => {\n          stream.destroy(err);\n        },\n      );\n    },\n  });\n  return stream;\n};\n\nReadable.from = function from(\n  source: Iterable<unknown> | AsyncIterable<unknown>,\n  _opts?: { objectMode?: boolean; highWaterMark?: number },\n): Readable {\n  const stream = new Readable(_opts);\n  (async () => {\n    try {\n      for await (const item of source as AsyncIterable<unknown>) {\n        if (item !== null && item !== undefined) {\n          const data = typeof item === \"string\" ? Buffer.from(item) : item;\n          stream.push(data as Buffer);\n        }\n      }\n      stream.push(null);\n    } catch (err) {\n      stream.destroy(err as Error);\n    }\n  })();\n  return stream;\n};\n\n// Writable\n\nexport interface Writable extends EventEmitter {\n  writable: boolean;\n  writableEnded: boolean;\n  writableFinished: boolean;\n  writableNeedDrain: boolean;\n  destroyed: boolean;\n  closed: boolean;\n  errored: Error | null;\n  writableObjectMode: boolean;\n  writableHighWaterMark: number;\n  writableCorked: number;\n  _writableState: any;\n  _write(chunk: any, encoding: string, callback: (err?: Error | null) => void): void;\n  _writev?(chunks: Array<{ chunk: any; encoding: string }>, callback: (err?: Error | null) => void): void;\n  _final(callback: (err?: Error | null) => void): void;\n  _destroy(err: Error | null, cb: (err?: Error | null) => void): void;\n  readonly writableLength: number;\n  write(chunk: any, encOrCb?: any, cb?: any): boolean;\n  end(chunkOrCb?: any, encOrCb?: any, cb?: any): this;\n  getBuffer(): Buffer;\n  getBufferAsString(enc?: BufferEncoding): string;\n  close(cb?: (err?: Error | null) => void): void;\n  destroy(fault?: Error): this;\n  cork(): void;\n  uncork(): void;\n  setDefaultEncoding(enc: string): this;\n}\n\ninterface WritableConstructor {\n  new (opts?: any): Writable;\n  (this: any, opts?: any): void;\n  prototype: any;\n  toWeb(writable: Writable): WritableStream<Uint8Array>;\n  fromWeb(webStream: WritableStream, opts?: any): Writable;\n}\n\nexport const Writable = function Writable(this: any, opts?: any) {\n  if (!this) return;\n  EventEmitter.call(this);\n\n  this._parts = [];\n  this._closed = false;\n  this._objectMode = false;\n  this._highWaterMark = 16384;\n  this._autoDestroy = true;\n  this._corked = 0;\n  this._corkedWrites = [];\n  this._writableByteLength = 0;\n\n  this.writable = true;\n  this.writableEnded = false;\n  this.writableFinished = false;\n  this.writableNeedDrain = false;\n  this.destroyed = false;\n  this.closed = false;\n  this.errored = null;\n  this.writableObjectMode = false;\n  this.writableHighWaterMark = 16384;\n  this.writableCorked = 0;\n\n  const self = this;\n  this._writableState = {\n    get objectMode() { return self._objectMode; },\n    get highWaterMark() { return self._highWaterMark; },\n    get finished() { return self.writableFinished; },\n    set finished(v: boolean) { self.writableFinished = v; },\n    get ended() { return self.writableEnded; },\n    set ended(v: boolean) { self.writableEnded = v; },\n    get destroyed() { return self.destroyed; },\n    get errored() { return self.errored; },\n    get closed() { return self.closed; },\n    get corked() { return self._corked; },\n    get length() { return self.writableLength; },\n    get needDrain() { return self.writableNeedDrain; },\n    writing: false,\n    errorEmitted: false,\n    emitClose: true,\n    get autoDestroy() { return self._autoDestroy; },\n    defaultEncoding: \"utf8\",\n    finalCalled: false,\n    ending: false,\n    bufferedIndex: 0,\n  };\n\n  if (opts) {\n    if (opts.objectMode) {\n      this._objectMode = true;\n      this.writableObjectMode = true;\n      if (opts.highWaterMark === undefined) {\n        this._highWaterMark = 16;\n        this.writableHighWaterMark = 16;\n      }\n    }\n    if (opts.highWaterMark !== undefined) {\n      this._highWaterMark = opts.highWaterMark;\n      this.writableHighWaterMark = opts.highWaterMark;\n    }\n    if (opts.autoDestroy !== undefined) {\n      this._autoDestroy = opts.autoDestroy;\n    }\n    if (opts.write) {\n      this._write = opts.write.bind(this);\n    }\n    if (opts.writev) {\n      this._writev = opts.writev.bind(this);\n    }\n    if (opts.final) {\n      this._final = opts.final.bind(this);\n    }\n    if (opts.destroy) {\n      this._destroy = opts.destroy.bind(this);\n    }\n  }\n} as unknown as WritableConstructor;\n\nObject.setPrototypeOf(Writable.prototype, EventEmitter.prototype);\n\nWritable.prototype._write = function _write(\n  _chunk: any,\n  _encoding: string,\n  callback: (err?: Error | null) => void,\n): void {\n  callback(null);\n};\n\nWritable.prototype._final = function _final(\n  callback: (err?: Error | null) => void,\n): void {\n  callback(null);\n};\n\nWritable.prototype._destroy = function _destroy(\n  err: Error | null,\n  callback: (err?: Error | null) => void,\n): void {\n  callback(err);\n};\n\nWritable.prototype.write = function write(\n  chunk: any,\n  encOrCb?: string | ((err?: Error | null) => void),\n  cb?: (err?: Error | null) => void,\n): boolean {\n  if (this._closed) {\n    const fault = new Error(\"write after end\");\n    if (typeof encOrCb === \"function\") {\n      encOrCb(fault);\n    } else if (cb) {\n      cb(fault);\n    }\n    return false;\n  }\n\n  const encoding = typeof encOrCb === \"string\" ? encOrCb : \"utf8\";\n  const callback = typeof encOrCb === \"function\" ? encOrCb : cb;\n\n  const bytes = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\n  this._parts.push(bytes);\n  this._writableByteLength += bufferByteLength(bytes);\n\n  if (this._corked > 0) {\n    this._corkedWrites.push({ chunk, encoding, callback });\n    return this._writableByteLength < this._highWaterMark;\n  }\n\n  this._write(chunk, encoding, (err: Error | null | undefined) => {\n    this._writableByteLength -= bufferByteLength(bytes);\n    if (callback) callback(err);\n    if (this.writableNeedDrain && this._writableByteLength < this._highWaterMark) {\n      this.writableNeedDrain = false;\n      this.emit(\"drain\");\n    }\n  });\n\n  const belowHWM = this._writableByteLength < this._highWaterMark;\n  if (!belowHWM) {\n    this.writableNeedDrain = true;\n  }\n  return belowHWM;\n};\n\nWritable.prototype.end = function end(\n  chunkOrCb?: any,\n  encOrCb?: any,\n  cb?: () => void,\n): any {\n  if (typeof chunkOrCb === \"function\") {\n    cb = chunkOrCb;\n  } else if (chunkOrCb !== undefined) {\n    this.write(chunkOrCb);\n  }\n  if (typeof encOrCb === \"function\") cb = encOrCb;\n\n  this._closed = true;\n  this.writable = false;\n  this.writableEnded = true;\n\n  const self = this;\n  const doFinish = () => {\n    self.writableFinished = true;\n    self.emit(\"finish\");\n    if (self._autoDestroy) {\n      self.closed = true;\n      self.emit(\"close\");\n    }\n    if (cb) cb();\n  };\n\n  queueMicrotask(() => {\n    self._final((err: Error | null | undefined) => {\n      if (err) {\n        self.errored = err;\n        self.emit(\"error\", err);\n        return;\n      }\n      doFinish();\n    });\n  });\n  return this;\n};\n\nWritable.prototype.getBuffer = function getBuffer(): Buffer {\n  return Buffer.concat(this._parts);\n};\n\nWritable.prototype.getBufferAsString = function getBufferAsString(enc?: BufferEncoding): string {\n  return this.getBuffer().toString(enc || \"utf8\");\n};\n\nWritable.prototype.close = function close(cb?: (err?: Error | null) => void): void {\n  this.destroy();\n  if (cb) cb(null);\n};\n\nWritable.prototype.destroy = function destroy(fault?: Error): any {\n  if (this.destroyed) return this;\n  this.destroyed = true;\n  if (fault) this.errored = fault;\n\n  this._destroy(fault ?? null, (err: Error | null | undefined) => {\n    if (err && !fault) this.errored = err;\n    this._parts.length = 0;\n    this._corkedWrites.length = 0;\n    this._writableByteLength = 0;\n    this._closed = true;\n    this.writable = false;\n    if (err || fault) this.emit(\"error\", err || fault);\n    this.closed = true;\n    this.emit(\"close\");\n  });\n  return this;\n};\n\nWritable.prototype.cork = function cork(): void {\n  this._corked++;\n  this.writableCorked = this._corked;\n};\n\nWritable.prototype.uncork = function uncork(): void {\n  if (this._corked > 0) {\n    this._corked--;\n    this.writableCorked = this._corked;\n  }\n  if (this._corked === 0 && this._corkedWrites.length > 0) {\n    const writes = this._corkedWrites.splice(0);\n    if (this._writev) {\n      this._writev(\n        writes.map((w: any) => ({ chunk: w.chunk, encoding: w.encoding })),\n        (err: Error | null | undefined) => {\n          for (const w of writes) {\n            if (w.callback) w.callback(err);\n          }\n        },\n      );\n    } else {\n      for (const w of writes) {\n        this._write(w.chunk, w.encoding, (err: Error | null | undefined) => {\n          if (w.callback) w.callback(err);\n        });\n      }\n    }\n  }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(_enc: string): any {\n  return this;\n};\n\nObject.defineProperty(Writable.prototype, \"writableLength\", {\n  get: function (this: any) {\n    if (this._objectMode) return this._parts.length;\n    return this._writableByteLength;\n  },\n  configurable: true,\n});\n\nWritable.toWeb = function toWeb(writable: any): WritableStream<Uint8Array> {\n  return new WritableStream({\n    write(chunk) {\n      return new Promise<void>((resolve, reject) => {\n        const ok = writable.write(chunk, (err?: Error | null) => {\n          if (err) reject(err);\n          else resolve();\n        });\n        if (ok) resolve();\n      });\n    },\n    close() {\n      return new Promise<void>((resolve) => {\n        writable.end(() => resolve());\n      });\n    },\n    abort(reason) {\n      writable.destroy(\n        reason instanceof Error ? reason : new Error(String(reason)),\n      );\n    },\n  });\n};\n\nWritable.fromWeb = function fromWeb(\n  webStream: WritableStream,\n  opts?: { objectMode?: boolean; highWaterMark?: number },\n): Writable {\n  const writer = webStream.getWriter();\n  return new Writable({\n    ...opts,\n    write(chunk: any, _encoding: string, callback: (err?: Error | null) => void) {\n      writer.write(chunk).then(\n        () => callback(null),\n        (err: Error) => callback(err),\n      );\n    },\n    final(callback: (err?: Error | null) => void) {\n      writer.close().then(\n        () => callback(null),\n        (err: Error) => callback(err),\n      );\n    },\n  });\n};\n\n// Duplex\n\nexport interface Duplex extends Readable {\n  writable: boolean;\n  writableEnded: boolean;\n  writableFinished: boolean;\n  writableNeedDrain: boolean;\n  writableObjectMode: boolean;\n  writableHighWaterMark: number;\n  writableCorked: number;\n  allowHalfOpen: boolean;\n  _writableState: any;\n  _write(chunk: any, encoding: string, callback: (err?: Error | null) => void): void;\n  _writev?(chunks: Array<{ chunk: any; encoding: string }>, callback: (err?: Error | null) => void): void;\n  _final(callback: (err?: Error | null) => void): void;\n  readonly writableLength: number;\n  write(chunk: any, encOrCb?: any, cb?: any): boolean;\n  end(chunkOrCb?: any, encOrCb?: any, cb?: any): this;\n  cork(): void;\n  uncork(): void;\n  setDefaultEncoding(enc: string): this;\n}\n\ninterface DuplexConstructor {\n  new (opts?: any): Duplex;\n  (this: any, opts?: any): void;\n  prototype: any;\n  from(source: any, opts?: any): Duplex;\n  toWeb(duplex: any): any;\n  fromWeb(source: any, opts?: any): any;\n}\n\nexport const Duplex = function Duplex(this: any, opts?: any) {\n  if (!this) return;\n\n  Readable.call(this, {\n    objectMode: opts?.objectMode || opts?.readableObjectMode,\n    highWaterMark: opts?.readableHighWaterMark ?? opts?.highWaterMark,\n    autoDestroy: opts?.autoDestroy,\n    read: opts?.read,\n    destroy: opts?.destroy,\n  });\n\n  this._writeParts = [];\n  this._writeClosed = false;\n  this._writeObjectMode = false;\n  this._writeHighWaterMark = 16384;\n  this._writeAutoDestroy = true;\n  this._duplexCorked = 0;\n  this._duplexCorkedWrites = [];\n  this._writableByteLen = 0;\n\n  this.writable = true;\n  this.writableEnded = false;\n  this.writableFinished = false;\n  this.writableNeedDrain = false;\n  this.writableObjectMode = false;\n  this.writableHighWaterMark = 16384;\n  this.writableCorked = 0;\n  this.allowHalfOpen = true;\n\n  const self = this;\n  this._writableState = {\n    get objectMode() { return self._writeObjectMode; },\n    get highWaterMark() { return self._writeHighWaterMark; },\n    get finished() { return self.writableFinished; },\n    set finished(v: boolean) { self.writableFinished = v; },\n    get ended() { return self.writableEnded; },\n    set ended(v: boolean) { self.writableEnded = v; },\n    get destroyed() { return self.destroyed; },\n    get errored() { return self.errored; },\n    get closed() { return self.closed; },\n    get corked() { return self._duplexCorked; },\n    get length() { return self.writableLength; },\n    get needDrain() { return self.writableNeedDrain; },\n    writing: false,\n    errorEmitted: false,\n    emitClose: true,\n    get autoDestroy() { return self._writeAutoDestroy; },\n    defaultEncoding: \"utf8\",\n    finalCalled: false,\n    ending: false,\n    bufferedIndex: 0,\n  };\n\n  if (opts) {\n    if (opts.objectMode || opts.writableObjectMode) {\n      this._writeObjectMode = true;\n      this.writableObjectMode = true;\n      if ((opts.writableHighWaterMark ?? opts.highWaterMark) === undefined) {\n        this._writeHighWaterMark = 16;\n        this.writableHighWaterMark = 16;\n      }\n    }\n    if (opts.writableHighWaterMark !== undefined) {\n      this._writeHighWaterMark = opts.writableHighWaterMark;\n      this.writableHighWaterMark = opts.writableHighWaterMark;\n    } else if (opts.highWaterMark !== undefined) {\n      this._writeHighWaterMark = opts.highWaterMark;\n      this.writableHighWaterMark = opts.highWaterMark;\n    }\n    if (opts.autoDestroy !== undefined) {\n      this._writeAutoDestroy = opts.autoDestroy;\n    }\n    if (opts.allowHalfOpen !== undefined) {\n      this.allowHalfOpen = opts.allowHalfOpen;\n    }\n    if (opts.write) {\n      this._write = opts.write.bind(this);\n    }\n    if (opts.writev) {\n      this._writev = opts.writev.bind(this);\n    }\n    if (opts.final) {\n      this._final = opts.final.bind(this);\n    }\n  }\n} as unknown as DuplexConstructor;\n\nObject.setPrototypeOf(Duplex.prototype, Readable.prototype);\n\nDuplex.prototype._write = function _write(\n  _chunk: any,\n  _encoding: string,\n  callback: (err?: Error | null) => void,\n): void {\n  callback(null);\n};\n\nDuplex.prototype._final = function _final(\n  callback: (err?: Error | null) => void,\n): void {\n  callback(null);\n};\n\nDuplex.prototype.write = function write(\n  chunk: any,\n  encOrCb?: string | ((err?: Error | null) => void),\n  cb?: (err?: Error | null) => void,\n): boolean {\n  if (this._writeClosed) return false;\n  const encoding = typeof encOrCb === \"string\" ? encOrCb : \"utf8\";\n  const callback = typeof encOrCb === \"function\" ? encOrCb : cb;\n  const bytes = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\n  this._writeParts.push(bytes);\n  this._writableByteLen += bufferByteLength(bytes);\n\n  if (this._duplexCorked > 0) {\n    this._duplexCorkedWrites.push({ chunk, encoding, callback });\n    return this._writableByteLen < this._writeHighWaterMark;\n  }\n\n  this._write(chunk, encoding, (err: Error | null | undefined) => {\n    this._writableByteLen -= bufferByteLength(bytes);\n    if (callback) callback(err);\n    if (this.writableNeedDrain && this._writableByteLen < this._writeHighWaterMark) {\n      this.writableNeedDrain = false;\n      this.emit(\"drain\");\n    }\n  });\n\n  const belowHWM = this._writableByteLen < this._writeHighWaterMark;\n  if (!belowHWM) {\n    this.writableNeedDrain = true;\n  }\n  return belowHWM;\n};\n\nDuplex.prototype.end = function end(\n  chunkOrCb?: any,\n  encOrCb?: any,\n  cb?: () => void,\n): any {\n  if (typeof chunkOrCb === \"function\") {\n    cb = chunkOrCb;\n  } else if (chunkOrCb !== undefined) {\n    this.write(chunkOrCb);\n  }\n  if (typeof encOrCb === \"function\") cb = encOrCb;\n\n  this._writeClosed = true;\n  this.writable = false;\n  this.writableEnded = true;\n\n  const self = this;\n  const doFinish = () => {\n    self.writableFinished = true;\n    self.emit(\"finish\");\n    if (cb) cb();\n  };\n\n  queueMicrotask(() => {\n    self._final((err: Error | null | undefined) => {\n      if (err) {\n        self.errored = err;\n        self.emit(\"error\", err);\n        return;\n      }\n      doFinish();\n    });\n  });\n  return this;\n};\n\nDuplex.prototype.cork = function cork(): void {\n  this._duplexCorked++;\n  this.writableCorked = this._duplexCorked;\n};\n\nDuplex.prototype.uncork = function uncork(): void {\n  if (this._duplexCorked > 0) {\n    this._duplexCorked--;\n    this.writableCorked = this._duplexCorked;\n  }\n  if (this._duplexCorked === 0 && this._duplexCorkedWrites.length > 0) {\n    const writes = this._duplexCorkedWrites.splice(0);\n    if (this._writev) {\n      this._writev(\n        writes.map((w: any) => ({ chunk: w.chunk, encoding: w.encoding })),\n        (err: Error | null | undefined) => {\n          for (const w of writes) {\n            if (w.callback) w.callback(err);\n          }\n        },\n      );\n    } else {\n      for (const w of writes) {\n        this._write(w.chunk, w.encoding, (err: Error | null | undefined) => {\n          if (w.callback) w.callback(err);\n        });\n      }\n    }\n  }\n};\n\nDuplex.prototype.setDefaultEncoding = function setDefaultEncoding(_enc: string): any {\n  return this;\n};\n\nObject.defineProperty(Duplex.prototype, \"writableLength\", {\n  get: function (this: any) {\n    if (this._writeObjectMode) return this._writeParts.length;\n    return this._writableByteLen;\n  },\n  configurable: true,\n});\n\nDuplex.from = function from(\n  source: any,\n  _opts?: { objectMode?: boolean; highWaterMark?: number },\n): Duplex {\n  const duplex = new Duplex();\n  if (source instanceof ReadableStream) {\n    const reader = source.getReader();\n    (async () => {\n      try {\n        while (true) {\n          const { value, done } = await reader.read();\n          if (done) { duplex.push(null); break; }\n          duplex.push(value);\n        }\n      } catch (err) {\n        duplex.destroy(err as Error);\n      }\n    })();\n  } else {\n    (async () => {\n      try {\n        for await (const item of source as AsyncIterable<unknown>) {\n          if (item !== null && item !== undefined) {\n            const data = typeof item === \"string\" ? Buffer.from(item) : item;\n            duplex.push(data as Buffer);\n          }\n        }\n        duplex.push(null);\n      } catch (err) {\n        duplex.destroy(err as Error);\n      }\n    })();\n  }\n  return duplex;\n};\n\nDuplex.toWeb = function toWeb(duplex: any): any {\n  if (duplex instanceof Duplex) {\n    const readable = Readable.toWeb(duplex);\n    const writable = Writable.toWeb(duplex as any);\n    return { readable, writable };\n  }\n  return Readable.toWeb(duplex);\n};\n\nDuplex.fromWeb = function fromWeb(\n  source: any,\n  _opts?: Record<string, unknown>,\n): any {\n  if (source instanceof ReadableStream) {\n    return Readable.fromWeb(source, _opts as { objectMode?: boolean; highWaterMark?: number });\n  }\n  const pair = source;\n  const duplex = new Duplex();\n  const reader = pair.readable.getReader();\n  (async () => {\n    try {\n      while (true) {\n        const { value, done } = await reader.read();\n        if (done) { duplex.push(null); break; }\n        duplex.push(value);\n      }\n    } catch (err) {\n      duplex.destroy(err as Error);\n    }\n  })();\n  return duplex;\n};\n\n// PassThrough\n\nexport interface PassThrough extends Duplex {}\n\ninterface PassThroughConstructor {\n  new (opts?: any): PassThrough;\n  (this: any, opts?: any): void;\n  prototype: any;\n}\n\nexport const PassThrough = function PassThrough(this: any, opts?: any) {\n  if (!this) return;\n  Duplex.call(this, opts);\n} as unknown as PassThroughConstructor;\n\nObject.setPrototypeOf(PassThrough.prototype, Duplex.prototype);\n\nPassThrough.prototype.write = function write(\n  chunk: any,\n  encOrCb?: string | ((err?: Error | null) => void),\n  cb?: (err?: Error | null) => void,\n): boolean {\n  const bytes = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\n  this.push(bytes);\n  const callback = typeof encOrCb === \"function\" ? encOrCb : cb;\n  if (callback) queueMicrotask(() => callback(null));\n  return true;\n};\n\n// Transform\n\nexport interface Transform extends Duplex {\n  _transform(chunk: any, encoding: string, done: (err?: Error | null, output?: any) => void): void;\n  _flush(done: (err?: Error | null, output?: any) => void): void;\n}\n\ninterface TransformConstructor {\n  new (opts?: any): Transform;\n  (this: any, opts?: any): void;\n  prototype: any;\n}\n\nexport const Transform = function Transform(this: any, opts?: any) {\n  if (!this) return;\n  Duplex.call(this, opts);\n  this._flushed = false;\n\n  if (opts) {\n    if (opts.transform) {\n      this._transform = opts.transform.bind(this);\n    }\n    if (opts.flush) {\n      this._flush = opts.flush.bind(this);\n    }\n  }\n} as unknown as TransformConstructor;\n\nObject.setPrototypeOf(Transform.prototype, Duplex.prototype);\n\nTransform.prototype._transform = function _transform(\n  chunk: any,\n  _encoding: string,\n  done: (err?: Error | null, output?: any) => void,\n): void {\n  done(null, chunk);\n};\n\nTransform.prototype._flush = function _flush(\n  done: (err?: Error | null, output?: any) => void,\n): void {\n  done(null);\n};\n\n// flush remaining transform data before terminating the readable side\nTransform.prototype._final = function _final(\n  callback: (err?: Error | null) => void,\n): void {\n  const self = this;\n  const finish = () => {\n    callback(null);\n    self.push(null);\n  };\n  if (self._flushed) {\n    finish();\n    return;\n  }\n  self._flushed = true;\n  self._flush((err: Error | null | undefined, output: any) => {\n    if (err) {\n      callback(err);\n      return;\n    }\n    if (output) self.push(output);\n    finish();\n  });\n};\n\nTransform.prototype.write = function write(\n  chunk: any,\n  encOrCb?: string | ((err?: Error | null) => void),\n  cb?: (err?: Error | null) => void,\n): boolean {\n  const bytes = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\n  const encoding = typeof encOrCb === \"string\" ? encOrCb : \"utf8\";\n  const callback = typeof encOrCb === \"function\" ? encOrCb : cb;\n\n  this._transform(bytes, encoding, (err: Error | null | undefined, output: any) => {\n    if (err) {\n      if (callback) callback(err);\n      return;\n    }\n    if (output) this.push(output);\n    if (callback) callback(null);\n  });\n  return true;\n};\n\nTransform.prototype.end = function end(\n  chunkOrCb?: any,\n  encOrCb?: any,\n  cb?: () => void,\n): any {\n  // flush eagerly so data reaches the pipe destination before _final's microtask\n  if (!this._flushed) {\n    this._flushed = true;\n    this._flush((_err: Error | null | undefined, output: any) => {\n      if (output) this.push(output);\n    });\n  }\n  return Duplex.prototype.end.call(this, chunkOrCb, encOrCb, cb);\n};\n\n// Stream (base class)\n\nexport interface Stream extends EventEmitter {\n  pipe(dest: any): any;\n}\n\ninterface StreamConstructor {\n  new (): Stream;\n  (this: any): void;\n  prototype: any;\n}\n\nexport const Stream = function Stream(this: any) {\n  if (!this) return;\n  EventEmitter.call(this);\n} as unknown as StreamConstructor;\n\nObject.setPrototypeOf(Stream.prototype, EventEmitter.prototype);\n\nStream.prototype.pipe = function pipe(dest: any): any {\n  const src = this;\n  const onData = (chunk: any) => {\n    if (dest.write) dest.write(chunk);\n  };\n  src.on(\"data\", onData);\n  const onEnd = () => {\n    if (dest.end) dest.end();\n  };\n  src.on(\"end\", onEnd);\n  // store for unpipe\n  if (!src._pipeDests) src._pipeDests = [];\n  src._pipeDests.push({ dest, onData, onEnd });\n  return dest;\n};\n\nStream.prototype.unpipe = function unpipe(dest?: any): any {\n  const dests: Array<{ dest: any; onData: Function; onEnd: Function }> =\n    this._pipeDests || [];\n  if (dest) {\n    const idx = dests.findIndex((d: any) => d.dest === dest);\n    if (idx !== -1) {\n      this.removeListener(\"data\", dests[idx].onData as any);\n      this.removeListener(\"end\", dests[idx].onEnd as any);\n      dests.splice(idx, 1);\n    }\n  } else {\n    for (const d of dests) {\n      this.removeListener(\"data\", d.onData as any);\n      this.removeListener(\"end\", d.onEnd as any);\n    }\n    this._pipeDests = [];\n  }\n  return this;\n};\n\nexport function addAbortSignal(\n  signal: AbortSignal,\n  stream: any,\n): any {\n  if (signal.aborted) {\n    stream.destroy(new Error(\"The operation was aborted\"));\n  } else {\n    const onAbort = () => {\n      stream.destroy(new Error(\"The operation was aborted\"));\n    };\n    signal.addEventListener(\"abort\", onAbort, { once: true });\n    const origDestroy = stream.destroy.bind(stream);\n    stream.destroy = (err?: Error) => {\n      signal.removeEventListener(\"abort\", onAbort);\n      return origDestroy(err);\n    };\n  }\n  return stream;\n}\n\n// require('stream') compatibility -- attach all types as static properties\nconst StreamAny = Stream as unknown as Record<string, unknown>;\nStreamAny.Readable = Readable;\nStreamAny.Writable = Writable;\nStreamAny.Duplex = Duplex;\nStreamAny.Transform = Transform;\nStreamAny.PassThrough = PassThrough;\nStreamAny.Stream = Stream;\nStreamAny.from = Readable.from;\nStreamAny.addAbortSignal = addAbortSignal;\n\nexport function pipeline(...args: unknown[]): unknown {\n  const cb =\n    typeof args[args.length - 1] === \"function\"\n      ? (args.pop() as (err?: Error | null) => void)\n      : null;\n\n  const streams = args as any[];\n  if (streams.length < 2) {\n    if (cb)\n      setTimeout(\n        () => cb(new Error(\"pipeline requires at least 2 streams\")),\n        0,\n      );\n    return streams[0];\n  }\n\n  // web ReadableStreams (like fetch response.body) don't have .pipe(), wrap them\n  for (let i = 0; i < streams.length; i++) {\n    const s = streams[i];\n    if (\n      s &&\n      typeof s.getReader === \"function\" &&\n      typeof s.pipe !== \"function\" &&\n      typeof s.on !== \"function\"\n    ) {\n      streams[i] = Readable.fromWeb(s);\n    }\n  }\n\n  let errorOccurred = false;\n  const onError = (...errArgs: unknown[]) => {\n    const err = errArgs[0] as Error;\n    if (errorOccurred) return;\n    errorOccurred = true;\n    for (const s of streams) {\n      if (typeof s.destroy === \"function\") {\n        s.destroy();\n      }\n    }\n    if (cb) cb(err);\n  };\n\n  for (let i = 0; i < streams.length - 1; i++) {\n    const src = streams[i];\n    const dest = streams[i + 1];\n    if (typeof src.pipe === \"function\") {\n      src.pipe(dest);\n    }\n    src.on(\"error\", onError);\n  }\n\n  const last = streams[streams.length - 1];\n  last.on(\"error\", onError);\n\n  if (cb && !errorOccurred) {\n    const onFinish = () => {\n      if (!errorOccurred) cb(null);\n    };\n    if (last instanceof Readable) {\n      last.on(\"end\", onFinish);\n    } else {\n      last.on(\"finish\", onFinish);\n    }\n  }\n\n  return last;\n}\n\nexport function finished(\n  stream: unknown,\n  optsOrCb?: { error?: boolean } | ((err?: Error) => void),\n  cb?: (err?: Error) => void,\n): () => void {\n  const done = typeof optsOrCb === \"function\" ? optsOrCb : cb;\n  const s = stream as any;\n  let called = false;\n\n  const onDone = (err?: Error) => {\n    if (called) return;\n    called = true;\n    if (done) done(err);\n  };\n\n  const cleanup = () => {\n    s.removeListener(\"end\", onEnd);\n    s.removeListener(\"finish\", onFinish);\n    s.removeListener(\"error\", onErr);\n    s.removeListener(\"close\", onClose);\n  };\n\n  const onEnd = () => { cleanup(); onDone(); };\n  const onFinish = () => { cleanup(); onDone(); };\n  const onErr = (err: Error) => { cleanup(); onDone(err); };\n  const onClose = () => { cleanup(); onDone(); };\n\n  s.on(\"end\", onEnd);\n  s.on(\"finish\", onFinish);\n  s.on(\"error\", onErr);\n  s.on(\"close\", onClose);\n\n  if (s.readableEnded || s.writableFinished) {\n    queueMicrotask(() => onDone());\n  }\n\n  return cleanup;\n}\n\nlet _defaultHighWaterMark = 16384;\nlet _defaultObjectHighWaterMark = 16;\n\nexport function getDefaultHighWaterMark(objectMode?: boolean): number {\n  return objectMode ? _defaultObjectHighWaterMark : _defaultHighWaterMark;\n}\n\nexport function setDefaultHighWaterMark(objectMode: boolean, value: number): void {\n  if (objectMode) {\n    _defaultObjectHighWaterMark = value;\n  } else {\n    _defaultHighWaterMark = value;\n  }\n}\n\nexport const promises = {\n  pipeline: async (...streams: unknown[]): Promise<void> => {\n    return new Promise<void>((resolve, reject) => {\n      pipeline(...streams, (err?: Error | null) => {\n        if (err) reject(err);\n        else resolve();\n      });\n    });\n  },\n  finished: async (\n    stream: unknown,\n    opts?: { error?: boolean },\n  ): Promise<void> => {\n    return new Promise<void>((resolve, reject) => {\n      finished(stream, opts, (err) => {\n        if (err) reject(err);\n        else resolve();\n      });\n    });\n  },\n};\n\nStreamAny.pipeline = pipeline;\nStreamAny.finished = finished;\nStreamAny.promises = promises;\nStreamAny.getDefaultHighWaterMark = getDefaultHighWaterMark;\nStreamAny.setDefaultHighWaterMark = setDefaultHighWaterMark;\n\nexport function compose(..._streams: unknown[]): Duplex {\n  return new PassThrough() as unknown as Duplex;\n}\n\nexport function isReadable(stream: unknown): boolean {\n  if (!stream || typeof stream !== \"object\") return false;\n  const s = stream as any;\n  if (typeof s.read !== \"function\") return false;\n  if (s.destroyed) return false;\n  if (s.readableEnded || s._terminated) return false;\n  return true;\n}\n\nexport function isWritable(stream: unknown): boolean {\n  if (!stream || typeof stream !== \"object\") return false;\n  const s = stream as any;\n  if (typeof s.write !== \"function\") return false;\n  if (s.destroyed) return false;\n  if (s.writableEnded || s.writableFinished) return false;\n  return true;\n}\n\nexport function isDisturbed(stream: unknown): boolean {\n  if (!stream || typeof stream !== \"object\") return false;\n  const s = stream as any;\n  return !!s.readableDidRead || !!s._reading;\n}\n\nexport function isErrored(stream: unknown): boolean {\n  if (!stream || typeof stream !== \"object\") return false;\n  const s = stream as any;\n  return s.errored != null;\n}\n\nStreamAny.compose = compose;\nStreamAny.isReadable = isReadable;\nStreamAny.isWritable = isWritable;\nStreamAny.isDisturbed = isDisturbed;\nStreamAny.isErrored = isErrored;\n\n(Readable as any).isDisturbed = isDisturbed;\n(Readable as any).isReadable = isReadable;\n\nexport default Stream;\n","// fs polyfill -- buildFileSystemBridge(volume, getCwd) wraps MemoryVolume into a Node.js-compatible fs API\n\nimport type {\n  MemoryVolume,\n  FileStat,\n  FileWatchHandle,\n  WatchCallback,\n  WatchEventKind,\n} from \"../memory-volume\";\nimport { makeSystemError } from \"../memory-volume\";\nimport { bytesToBase64, bytesToHex } from \"../helpers/byte-encoding\";\nimport { precompileWasm } from \"../helpers/wasm-cache\";\nimport { prefetchWasmFromCdn } from \"../helpers/wasm-cdn\";\nimport { Readable, Writable } from \"./stream\";\nimport { Buffer } from \"./buffer\";\nimport type { FsReadStreamInstance, FsWriteStreamInstance, FsReadableState, FsWritableState } from \"../types/fs-streams\";\nimport { getRegistry } from \"../helpers/event-loop\";\n\nexport type { FileStat, FileWatchHandle, WatchCallback, WatchEventKind };\n\nconst decoder = new TextDecoder();\nconst encoder = new TextEncoder();\n\nexport type PathArg = string | URL;\n\nexport interface Dirent {\n  name: string;\n  parentPath: string;\n  path: string;\n  _dir: boolean;\n  _file: boolean;\n  isDirectory(): boolean;\n  isFile(): boolean;\n  isBlockDevice(): boolean;\n  isCharacterDevice(): boolean;\n  isFIFO(): boolean;\n  isSocket(): boolean;\n  isSymbolicLink(): boolean;\n}\n\ninterface DirentConstructor {\n  new (entryName: string, isDir: boolean, isFile: boolean, parentPath?: string): Dirent;\n  (this: any, entryName: string, isDir: boolean, isFile: boolean, parentPath?: string): void;\n  prototype: any;\n}\n\nexport const Dirent = function Dirent(this: any, entryName: string, isDir: boolean, isFile: boolean, parentPath?: string) {\n  if (!this) return;\n  this.name = entryName;\n  this._dir = isDir;\n  this._file = isFile;\n  this.parentPath = parentPath ?? \"\";\n  this.path = this.parentPath;\n} as unknown as DirentConstructor;\n\nDirent.prototype.isDirectory = function isDirectory(this: any): boolean {\n  return this._dir;\n};\nDirent.prototype.isFile = function isFile(this: any): boolean {\n  return this._file;\n};\nDirent.prototype.isBlockDevice = function isBlockDevice(): boolean {\n  return false;\n};\nDirent.prototype.isCharacterDevice = function isCharacterDevice(): boolean {\n  return false;\n};\nDirent.prototype.isFIFO = function isFIFO(): boolean {\n  return false;\n};\nDirent.prototype.isSocket = function isSocket(): boolean {\n  return false;\n};\nDirent.prototype.isSymbolicLink = function isSymbolicLink(): boolean {\n  return false;\n};\n\nexport interface Dir {\n  readonly path: string;\n  _entries: Dirent[];\n  _pos: number;\n  _closed: boolean;\n  readSync(): Dirent | null;\n  read(): Promise<Dirent | null>;\n  read(cb: (err: Error | null, dirent: Dirent | null) => void): void;\n  closeSync(): void;\n  close(): Promise<void>;\n  close(cb: (err: Error | null) => void): void;\n  [Symbol.asyncIterator](): AsyncIterableIterator<Dirent>;\n}\n\ninterface DirConstructor {\n  new (dirPath: string, entries: Dirent[]): Dir;\n  (this: any, dirPath: string, entries: Dirent[]): void;\n  prototype: any;\n}\n\nexport const Dir = function Dir(this: any, dirPath: string, entries: Dirent[]) {\n  if (!this) return;\n  this.path = dirPath;\n  this._entries = entries;\n  this._pos = 0;\n  this._closed = false;\n} as unknown as DirConstructor;\n\nDir.prototype.readSync = function readSync(this: any): Dirent | null {\n  if (this._closed) throw new Error(\"ERR_DIR_CLOSED: Directory handle was closed\");\n  if (this._pos >= this._entries.length) return null;\n  return this._entries[this._pos++];\n};\n\nDir.prototype.read = function read(this: any, cb?: (err: Error | null, dirent: Dirent | null) => void): Promise<Dirent | null> | void {\n  if (cb) {\n    try {\n      const entry = this.readSync();\n      queueMicrotask(() => cb(null, entry));\n    } catch (e) {\n      queueMicrotask(() => cb(e as Error, null));\n    }\n    return;\n  }\n  const self = this;\n  return new Promise((resolve, reject) => {\n    try {\n      resolve(self.readSync());\n    } catch (e) {\n      reject(e);\n    }\n  });\n};\n\nDir.prototype.closeSync = function closeSync(this: any): void {\n  this._closed = true;\n};\n\nDir.prototype.close = function close(this: any, cb?: (err: Error | null) => void): Promise<void> | void {\n  this._closed = true;\n  if (cb) {\n    queueMicrotask(() => cb(null));\n    return;\n  }\n  return Promise.resolve();\n};\n\nDir.prototype[Symbol.asyncIterator] = function(this: any): AsyncIterableIterator<Dirent> {\n  const self = this;\n  return {\n    async next(): Promise<IteratorResult<Dirent>> {\n      const entry = self.readSync();\n      if (entry === null) return { done: true, value: undefined as any };\n      return { done: false, value: entry };\n    },\n    [Symbol.asyncIterator]() { return this; },\n  };\n};\n\nexport class StatFs {\n  type: number;\n  bsize: number;\n  blocks: number;\n  bfree: number;\n  bavail: number;\n  files: number;\n  ffree: number;\n  constructor() {\n    this.type = 0x61756673; // \"aufs\" magic number\n    this.bsize = 4096;\n    this.blocks = 262144;     // ~1GB virtual\n    this.bfree = 131072;      // ~512MB free\n    this.bavail = 131072;\n    this.files = 65536;\n    this.ffree = 32768;\n  }\n}\n\nexport class StatWatcher {\n  private _listeners: Map<string, ((...args: unknown[]) => void)[]> = new Map();\n  private _interval: ReturnType<typeof setInterval> | null = null;\n\n  start(_filename: string, _persistent?: boolean, _interval?: number): void {\n  }\n  stop(): void {\n    if (this._interval) {\n      clearInterval(this._interval);\n      this._interval = null;\n    }\n    this._emit(\"stop\");\n  }\n  ref(): this { return this; }\n  unref(): this { return this; }\n  on(event: string, listener: (...args: unknown[]) => void): this {\n    if (!this._listeners.has(event)) this._listeners.set(event, []);\n    this._listeners.get(event)!.push(listener);\n    return this;\n  }\n  once(event: string, listener: (...args: unknown[]) => void): this {\n    const wrapped = (...args: unknown[]) => {\n      this.removeListener(event, wrapped);\n      listener(...args);\n    };\n    return this.on(event, wrapped);\n  }\n  removeListener(event: string, listener: (...args: unknown[]) => void): this {\n    const arr = this._listeners.get(event);\n    if (arr) {\n      const idx = arr.indexOf(listener);\n      if (idx !== -1) arr.splice(idx, 1);\n    }\n    return this;\n  }\n  off(event: string, listener: (...args: unknown[]) => void): this {\n    return this.removeListener(event, listener);\n  }\n  addListener(event: string, listener: (...args: unknown[]) => void): this {\n    return this.on(event, listener);\n  }\n  removeAllListeners(event?: string): this {\n    if (event) this._listeners.delete(event);\n    else this._listeners.clear();\n    return this;\n  }\n  emit(event: string, ...args: unknown[]): boolean {\n    return this._emit(event, ...args);\n  }\n  private _emit(event: string, ...args: unknown[]): boolean {\n    const arr = this._listeners.get(event);\n    if (!arr || arr.length === 0) return false;\n    for (const fn of arr.slice()) fn(...args);\n    return true;\n  }\n}\n\ninterface FsConstantsShape {\n  F_OK: number;\n  R_OK: number;\n  W_OK: number;\n  X_OK: number;\n  O_RDONLY: number;\n  O_WRONLY: number;\n  O_RDWR: number;\n  O_CREAT: number;\n  O_EXCL: number;\n  O_TRUNC: number;\n  O_APPEND: number;\n  O_DIRECTORY: number;\n  O_NOFOLLOW: number;\n  O_SYNC: number;\n  O_DSYNC: number;\n  O_NONBLOCK: number;\n  O_NOCTTY: number;\n  S_IFMT: number;\n  S_IFREG: number;\n  S_IFDIR: number;\n  S_IFLNK: number;\n  S_IFCHR: number;\n  S_IFBLK: number;\n  S_IFIFO: number;\n  S_IFSOCK: number;\n  S_IRWXU: number;\n  S_IRUSR: number;\n  S_IWUSR: number;\n  S_IXUSR: number;\n  S_IRWXG: number;\n  S_IRGRP: number;\n  S_IWGRP: number;\n  S_IXGRP: number;\n  S_IRWXO: number;\n  S_IROTH: number;\n  S_IWOTH: number;\n  S_IXOTH: number;\n  COPYFILE_EXCL: number;\n  COPYFILE_FICLONE: number;\n  COPYFILE_FICLONE_FORCE: number;\n  UV_FS_SYMLINK_DIR: number;\n  UV_FS_SYMLINK_JUNCTION: number;\n}\n\ninterface FsPromisesShape {\n  readFile(target: PathArg): Promise<Buffer>;\n  readFile(target: PathArg, enc: \"utf8\" | \"utf-8\"): Promise<string>;\n  readFile(\n    target: PathArg,\n    opts: { encoding: \"utf8\" | \"utf-8\" },\n  ): Promise<string>;\n  writeFile(target: PathArg, data: string | Uint8Array): Promise<void>;\n  appendFile(target: PathArg, data: string | Uint8Array): Promise<void>;\n  stat(target: PathArg): Promise<FileStat>;\n  lstat(target: PathArg): Promise<FileStat>;\n  readdir(target: PathArg): Promise<string[]>;\n  mkdir(target: PathArg, opts?: { recursive?: boolean }): Promise<void>;\n  unlink(target: PathArg): Promise<void>;\n  rmdir(target: PathArg): Promise<void>;\n  rm(\n    target: PathArg,\n    opts?: { recursive?: boolean; force?: boolean },\n  ): Promise<void>;\n  rename(src: PathArg, dest: PathArg): Promise<void>;\n  access(target: PathArg, mode?: number): Promise<void>;\n  realpath(target: PathArg): Promise<string>;\n  copyFile(src: PathArg, dest: PathArg): Promise<void>;\n  symlink(target: PathArg, path: PathArg, type?: string): Promise<void>;\n  readlink(target: PathArg): Promise<string>;\n  link(existingPath: PathArg, newPath: PathArg): Promise<void>;\n  chmod(target: PathArg, mode: number): Promise<void>;\n  chown(target: PathArg, uid: number, gid: number): Promise<void>;\n  lchown(target: PathArg, uid: number, gid: number): Promise<void>;\n  truncate(target: PathArg, len?: number): Promise<void>;\n  utimes(target: PathArg, atime: unknown, mtime: unknown): Promise<void>;\n  lutimes(target: PathArg, atime: unknown, mtime: unknown): Promise<void>;\n  glob(pattern: string | string[], opts?: { cwd?: string; exclude?: string[] | ((p: string) => boolean) }): AsyncIterable<string>;\n}\n\n\nexport interface FsBridge {\n  readFileSync(target: PathArg): Buffer;\n  readFileSync(target: PathArg, enc: \"utf8\" | \"utf-8\"): string;\n  readFileSync(target: PathArg, opts: { encoding: \"utf8\" | \"utf-8\" }): string;\n  readFileSync(target: PathArg, opts: { encoding?: null }): Buffer;\n  writeFileSync(target: PathArg, data: string | Uint8Array): void;\n  appendFileSync(target: PathArg, data: string | Uint8Array): void;\n  existsSync(target: PathArg): boolean;\n  mkdirSync(target: PathArg, opts?: { recursive?: boolean }): void;\n  readdirSync(target: PathArg): string[];\n  readdirSync(target: PathArg, opts: { withFileTypes: true }): Dirent[];\n  readdirSync(\n    target: PathArg,\n    opts?: { withFileTypes?: boolean; encoding?: string } | string,\n  ): string[] | Dirent[];\n  statSync(target: PathArg): FileStat;\n  lstatSync(target: PathArg): FileStat;\n  fstatSync(fd: number): FileStat;\n  unlinkSync(target: PathArg): void;\n  rmdirSync(target: PathArg): void;\n  renameSync(src: PathArg, dest: PathArg): void;\n  realpathSync: ((target: PathArg) => string) & {\n    native: (target: PathArg) => string;\n  };\n  accessSync(target: PathArg, mode?: number): void;\n  copyFileSync(src: PathArg, dest: PathArg): void;\n  symlinkSync(target: PathArg, path: PathArg, type?: string): void;\n  readlinkSync(target: PathArg): string;\n  linkSync(existingPath: PathArg, newPath: PathArg): void;\n  chmodSync(target: PathArg, mode: number): void;\n  chownSync(target: PathArg, uid: number, gid: number): void;\n  truncateSync(target: PathArg, len?: number): void;\n  openSync(target: string, flags: string | number, mode?: number): number;\n  closeSync(fd: number): void;\n  readSync(\n    fd: number,\n    buf: Buffer | Uint8Array,\n    off: number,\n    len: number,\n    pos: number | null,\n  ): number;\n  writeSync(\n    fd: number,\n    buf: Buffer | Uint8Array | string,\n    off?: number,\n    len?: number,\n    pos?: number | null,\n  ): number;\n  ftruncateSync(fd: number, len?: number): void;\n  fsyncSync(fd: number): void;\n  fdatasyncSync(fd: number): void;\n  mkdtempSync(prefix: string): string;\n  rmSync(target: string, opts?: { recursive?: boolean; force?: boolean }): void;\n  opendirSync(target: unknown): Dir;\n  watch(\n    filename: string,\n    opts?: { persistent?: boolean; recursive?: boolean },\n    listener?: WatchCallback,\n  ): FileWatchHandle;\n  watch(filename: string, listener?: WatchCallback): FileWatchHandle;\n  readFile(\n    target: string,\n    cb: (err: Error | null, data?: Uint8Array) => void,\n  ): void;\n  readFile(\n    target: string,\n    opts: { encoding: string },\n    cb: (err: Error | null, data?: string) => void,\n  ): void;\n  writeFile(\n    target: string,\n    data: string | Uint8Array,\n    cb: (err: Error | null) => void,\n  ): void;\n  appendFile(\n    target: string,\n    data: string | Uint8Array,\n    cb: (err: Error | null) => void,\n  ): void;\n  stat(target: string, cb: (err: Error | null, stats?: FileStat) => void): void;\n  lstat(\n    target: string,\n    cb: (err: Error | null, stats?: FileStat) => void,\n  ): void;\n  readdir(\n    target: string,\n    cb: (err: Error | null, entries?: string[]) => void,\n  ): void;\n  mkdir(\n    target: string,\n    opts: { recursive?: boolean },\n    cb: (err: Error | null) => void,\n  ): void;\n  unlink(target: string, cb: (err: Error | null) => void): void;\n  rmdir(target: string, cb: (err: Error | null) => void): void;\n  rename(oldPath: string, newPath: string, cb: (err: Error | null) => void): void;\n  realpath(\n    target: string,\n    cb: (err: Error | null, resolved?: string) => void,\n  ): void;\n  access(target: string, cb: (err: Error | null) => void): void;\n  access(target: string, mode: number, cb: (err: Error | null) => void): void;\n  symlink(target: string, path: string, cb: (err: Error | null) => void): void;\n  symlink(\n    target: string,\n    path: string,\n    type: string,\n    cb: (err: Error | null) => void,\n  ): void;\n  readlink(\n    target: string,\n    cb: (err: Error | null, linkTarget?: string) => void,\n  ): void;\n  link(\n    existingPath: string,\n    newPath: string,\n    cb: (err: Error | null) => void,\n  ): void;\n  chmod(target: string, mode: number, cb: (err: Error | null) => void): void;\n  chown(\n    target: string,\n    uid: number,\n    gid: number,\n    cb: (err: Error | null) => void,\n  ): void;\n  createReadStream(\n    target: string,\n    opts?: { encoding?: string; start?: number; end?: number },\n  ): import(\"./stream\").Readable;\n  createWriteStream(\n    target: string,\n    opts?: { encoding?: string; flags?: string },\n  ): import(\"./stream\").Writable;\n  cpSync(src: unknown, dest: unknown, opts?: { recursive?: boolean; force?: boolean; errorOnExist?: boolean }): void;\n  cp(src: unknown, dest: unknown, optsOrCb?: unknown, cb?: (err: Error | null) => void): void;\n  readvSync(fd: number, buffers: ArrayBufferView[], pos?: number | null): number;\n  readv(fd: number, buffers: ArrayBufferView[], posOrCb?: unknown, cb?: unknown): void;\n  globSync(pattern: string | string[], opts?: { cwd?: string; exclude?: string[] | ((p: string) => boolean) }): string[];\n  glob(pattern: string | string[], optsOrCb?: unknown, cb?: unknown): void;\n  statfsSync(target: unknown, opts?: unknown): StatFs;\n  statfs(target: unknown, optsOrCb?: unknown, cb?: unknown): void;\n  openAsBlob(target: unknown, opts?: { type?: string }): Promise<Blob>;\n  exists(target: unknown, cb: (exists: boolean) => void): void;\n  lchmodSync(target: unknown, mode: number): void;\n  lchmod(target: unknown, mode: number, cb: (err: Error | null) => void): void;\n  fdatasync(fd: number, cb: (err: Error | null) => void): void;\n  fsync(fd: number, cb: (err: Error | null) => void): void;\n  ftruncate(fd: number, lenOrCb?: unknown, cb?: unknown): void;\n  truncate(target: unknown, lenOrCb?: unknown, cb?: unknown): void;\n  mkdtemp(prefix: string, optsOrCb?: unknown, cb?: unknown): void;\n  StatFs: typeof StatFs;\n  StatWatcher: typeof StatWatcher;\n  promises: FsPromisesShape;\n  constants: FsConstantsShape;\n}\n\n// matches an RFC-3986 URI scheme prefix. data:/blob: dont have // so we\n// just detect \"<scheme>:\" since thats all we ever see leak into fs paths.\nconst URL_SCHEME_RE = /^[a-z][a-z0-9+\\-.]*:/i;\n\nfunction resolvePath(target: unknown, cwdFn?: () => string): string {\n  let p: string;\n\n  if (typeof target === \"string\") {\n    p = target;\n  } else if (\n    target instanceof URL ||\n    // cross-realm URL objects fail instanceof, so duck-type check\n    (target && typeof target === \"object\" &&\n      typeof (target as any).protocol === \"string\" &&\n      typeof (target as any).pathname === \"string\")\n  ) {\n    const url = target as { protocol: string; pathname: string };\n    if (url.protocol !== \"file:\") {\n      throw new Error(`Unsupported protocol: ${url.protocol}`);\n    }\n    p = decodeURIComponent(url.pathname);\n  } else if (target && typeof target === \"object\" && \"toString\" in target) {\n    p = String(target);\n  } else {\n    throw new TypeError(`Path must be a string or URL. Got: ${typeof target}`);\n  }\n\n  // url polyfill in src/polyfills/url.ts auto-roots relative URLs at\n  // \"http://localhost\" so jiti / tailwind / postcss can hand us strings\n  // like \"http://localhost/app/foo.js\" via fs.statSync. without stripping\n  // we'd get nonsense like \"/app/http://localhost/app/foo.js\".\n  if (URL_SCHEME_RE.test(p)) {\n    try {\n      const u = new globalThis.URL(p);\n      if (u.protocol === \"file:\" || u.protocol === \"http:\" || u.protocol === \"https:\") {\n        p = decodeURIComponent(u.pathname) || p;\n      }\n    } catch {}\n  }\n\n  if (!p.startsWith(\"/\") && cwdFn) {\n    const cwd = cwdFn();\n    p = cwd.endsWith(\"/\") ? cwd + p : cwd + \"/\" + p;\n  }\n\n  return p;\n}\n\n// plain Uint8Array.toString() returns comma-separated bytes, not UTF-8 text --\n// must wrap with Buffer.from() so .toString() works like Node's Buffer\nfunction wrapAsBuffer(raw: Uint8Array): Buffer {\n  if (typeof (raw as any).readUInt8 === \"function\") return raw as Buffer;\n  return Buffer.from(raw) as Buffer;\n}\n\ninterface OpenFile {\n  filePath: string;\n  cursor: number;\n  mode: string;\n  data: Uint8Array;\n}\n\nexport function buildFileSystemBridge(\n  volume: MemoryVolume,\n  getCwd?: () => string,\n): FsBridge {\n  // each bridge gets its own FD namespace (per-process isolation)\n  const openFiles = new Map<number, OpenFile>();\n  let fdCounter = 3;\n\n  function numericFlagsToString(f: number): string {\n    const O_WRONLY = 1;\n    const O_RDWR = 2;\n    const O_CREAT = 64;\n    const O_TRUNC = 512;\n    const O_APPEND = 1024;\n    const readWrite = (f & O_RDWR) === O_RDWR;\n    const writeOnly = (f & O_WRONLY) === O_WRONLY;\n    const append = (f & O_APPEND) === O_APPEND;\n    if (append) return readWrite ? \"a+\" : \"a\";\n    if (writeOnly) return \"w\";\n    if (readWrite) return (f & O_CREAT) || (f & O_TRUNC) ? \"w+\" : \"r+\";\n    return \"r\";\n  }\n  const abs = (target: unknown) => resolvePath(target, getCwd);\n\n  const fsConst: FsConstantsShape = {\n    F_OK: 0,\n    R_OK: 4,\n    W_OK: 2,\n    X_OK: 1,\n    O_RDONLY: 0,\n    O_WRONLY: 1,\n    O_RDWR: 2,\n    O_CREAT: 64,\n    O_EXCL: 128,\n    O_TRUNC: 512,\n    O_APPEND: 1024,\n    O_DIRECTORY: 65536,\n    O_NOFOLLOW: 131072,\n    O_SYNC: 1052672,\n    O_DSYNC: 4096,\n    O_NONBLOCK: 2048,\n    O_NOCTTY: 256,\n    S_IFMT: 61440,\n    S_IFREG: 32768,\n    S_IFDIR: 16384,\n    S_IFLNK: 40960,\n    S_IFCHR: 8192,\n    S_IFBLK: 24576,\n    S_IFIFO: 4096,\n    S_IFSOCK: 49152,\n    S_IRWXU: 448,   // 0o700\n    S_IRUSR: 256,   // 0o400\n    S_IWUSR: 128,   // 0o200\n    S_IXUSR: 64,    // 0o100\n    S_IRWXG: 56,    // 0o070\n    S_IRGRP: 32,    // 0o040\n    S_IWGRP: 16,    // 0o020\n    S_IXGRP: 8,     // 0o010\n    S_IRWXO: 7,     // 0o007\n    S_IROTH: 4,     // 0o004\n    S_IWOTH: 2,     // 0o002\n    S_IXOTH: 1,     // 0o001\n    COPYFILE_EXCL: 1,\n    COPYFILE_FICLONE: 2,\n    COPYFILE_FICLONE_FORCE: 4,\n    UV_FS_SYMLINK_DIR: 1,\n    UV_FS_SYMLINK_JUNCTION: 2,\n  };\n\n  // Helper to build Dirent array from directory entries\n  function toDirents(dirPath: string, names: string[]): Dirent[] {\n    return names.map((name) => {\n      const full = dirPath.endsWith(\"/\")\n        ? dirPath + name\n        : dirPath + \"/\" + name;\n      let isDir = false;\n      let isFile = false;\n      try {\n        const st = volume.statSync(full);\n        isDir = st.isDirectory();\n        isFile = st.isFile();\n      } catch {\n        isFile = true;\n      }\n      return new Dirent(name, isDir, isFile, dirPath);\n    });\n  }\n  class FileHandle {\n    fd: number;\n    constructor(fd: number) {\n      this.fd = fd;\n    }\n\n    appendFile(data: string | Uint8Array): Promise<void> {\n      const entry = openFiles.get(this.fd);\n      if (!entry) return Promise.reject(makeBadfError(\"appendFile\"));\n      const bytes = typeof data === \"string\" ? encoder.encode(data) : data;\n      const newData = new Uint8Array(entry.data.length + bytes.length);\n      newData.set(entry.data);\n      newData.set(bytes, entry.data.length);\n      entry.data = newData;\n      entry.cursor = newData.length;\n      return Promise.resolve();\n    }\n\n    chmod(_mode: number): Promise<void> {\n      return Promise.resolve();\n    }\n\n    chown(_uid: number, _gid: number): Promise<void> {\n      return Promise.resolve();\n    }\n\n    close(): Promise<void> {\n      try {\n        const entry = openFiles.get(this.fd);\n        if (entry) {\n          if (entry.mode.includes(\"w\") || entry.mode.includes(\"a\") || entry.mode.includes(\"+\")) {\n            volume.writeFileSync(entry.filePath, entry.data);\n          }\n          openFiles.delete(this.fd);\n        }\n        return Promise.resolve();\n      } catch (e) {\n        return Promise.reject(e);\n      }\n    }\n\n    createReadStream(opts?: { encoding?: string; start?: number; end?: number }): Readable {\n      const entry = openFiles.get(this.fd);\n      if (!entry) throw makeBadfError(\"createReadStream\");\n      const stream: any = new Readable();\n      stream.path = entry.filePath;\n      stream.fd = this.fd;\n      queueMicrotask(() => {\n        try {\n          const data = entry.data;\n          const start = opts?.start ?? 0;\n          const end = opts?.end !== undefined ? opts.end + 1 : data.length;\n          stream.push(Buffer.from(data.slice(start, end)));\n          stream.push(null);\n        } catch (err) {\n          stream.destroy(err as Error);\n        }\n      });\n      return stream;\n    }\n\n    createWriteStream(_opts?: { encoding?: string }): Writable {\n      const entry = openFiles.get(this.fd);\n      if (!entry) throw makeBadfError(\"createWriteStream\");\n      const chunks: Uint8Array[] = [];\n      const stream: any = new Writable();\n      stream.path = entry.filePath;\n      stream.fd = this.fd;\n      stream._write = (chunk: Uint8Array | string, _enc: string, cb: (err?: Error | null) => void) => {\n        const bytes = typeof chunk === \"string\" ? encoder.encode(chunk) : chunk;\n        chunks.push(bytes);\n        cb(null);\n      };\n      stream.on(\"finish\", () => {\n        const totalLen = chunks.reduce((sum, c) => sum + c.length, 0);\n        const merged = new Uint8Array(totalLen);\n        let pos = 0;\n        for (const c of chunks) { merged.set(c, pos); pos += c.length; }\n        entry.data = merged;\n        entry.cursor = merged.length;\n      });\n      return stream;\n    }\n\n    datasync(): Promise<void> {\n      return Promise.resolve();\n    }\n\n    read(\n      bufOrOpts?: Buffer | Uint8Array | { buffer: Buffer | Uint8Array; offset?: number; length?: number; position?: number | null },\n      offset?: number,\n      length?: number,\n      position?: number | null,\n    ): Promise<{ bytesRead: number; buffer: Buffer | Uint8Array }> {\n      const entry = openFiles.get(this.fd);\n      if (!entry) return Promise.reject(makeBadfError(\"read\"));\n      let buf: Buffer | Uint8Array;\n      let off: number;\n      let len: number;\n      let pos: number | null;\n      if (bufOrOpts && typeof bufOrOpts === \"object\" && \"buffer\" in bufOrOpts) {\n        const opts = bufOrOpts as { buffer: Buffer | Uint8Array; offset?: number; length?: number; position?: number | null };\n        buf = opts.buffer;\n        off = opts.offset ?? 0;\n        len = opts.length ?? buf.length;\n        pos = opts.position ?? null;\n      } else {\n        buf = bufOrOpts ? (bufOrOpts as Buffer | Uint8Array) : (Buffer.alloc(16384) as unknown as Buffer);\n        off = offset ?? 0;\n        len = length ?? buf.length;\n        pos = position ?? null;\n      }\n      const readAt = pos !== null ? pos : entry.cursor;\n      const count = Math.min(len, entry.data.length - readAt);\n      if (count <= 0) return Promise.resolve({ bytesRead: 0, buffer: buf });\n      for (let i = 0; i < count; i++) buf[off + i] = entry.data[readAt + i];\n      if (pos === null) entry.cursor += count;\n      return Promise.resolve({ bytesRead: count, buffer: buf });\n    }\n\n    readableWebStream(): ReadableStream<Uint8Array> {\n      const entry = openFiles.get(this.fd);\n      const data = entry ? new Uint8Array(entry.data) : new Uint8Array(0);\n      return new ReadableStream({\n        start(controller) {\n          controller.enqueue(data);\n          controller.close();\n        },\n      });\n    }\n\n    readFile(opts?: { encoding?: string | null } | string): Promise<Buffer | string> {\n      const entry = openFiles.get(this.fd);\n      if (!entry) return Promise.reject(makeBadfError(\"readFile\"));\n      const enc = typeof opts === \"string\" ? opts : opts?.encoding;\n      if (enc === \"utf8\" || enc === \"utf-8\") {\n        return Promise.resolve(decoder.decode(entry.data));\n      }\n      return Promise.resolve(wrapAsBuffer(new Uint8Array(entry.data)));\n    }\n\n    readLines(): AsyncIterable<string> {\n      const entry = openFiles.get(this.fd);\n      const content = entry ? decoder.decode(entry.data) : \"\";\n      const lines = content.split(\"\\n\");\n      return {\n        [Symbol.asyncIterator]() {\n          let i = 0;\n          return {\n            next(): Promise<IteratorResult<string>> {\n              if (i < lines.length) return Promise.resolve({ value: lines[i++], done: false });\n              return Promise.resolve({ value: undefined as any, done: true });\n            },\n          };\n        },\n      };\n    }\n\n    readv(buffers: ArrayBufferView[], position?: number): Promise<{ bytesRead: number; buffers: ArrayBufferView[] }> {\n      const entry = openFiles.get(this.fd);\n      if (!entry) return Promise.reject(makeBadfError(\"readv\"));\n      let totalRead = 0;\n      let readPos = position ?? entry.cursor;\n      for (const buf of buffers) {\n        const u8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n        const count = Math.min(u8.length, entry.data.length - readPos);\n        if (count <= 0) break;\n        for (let i = 0; i < count; i++) u8[i] = entry.data[readPos + i];\n        readPos += count;\n        totalRead += count;\n        if (count < u8.length) break;\n      }\n      if (position === undefined) entry.cursor = readPos;\n      return Promise.resolve({ bytesRead: totalRead, buffers });\n    }\n\n    stat(): Promise<FileStat> {\n      const entry = openFiles.get(this.fd);\n      if (!entry) return Promise.reject(makeBadfError(\"fstat\"));\n      try {\n        return Promise.resolve(volume.statSync(entry.filePath));\n      } catch (e) {\n        return Promise.reject(e);\n      }\n    }\n\n    sync(): Promise<void> {\n      return Promise.resolve();\n    }\n\n    truncate(len: number = 0): Promise<void> {\n      const entry = openFiles.get(this.fd);\n      if (!entry) return Promise.reject(makeBadfError(\"ftruncate\"));\n      if (len < entry.data.length) {\n        entry.data = entry.data.slice(0, len);\n      } else if (len > entry.data.length) {\n        const bigger = new Uint8Array(len);\n        bigger.set(entry.data);\n        entry.data = bigger;\n      }\n      return Promise.resolve();\n    }\n\n    utimes(_atime: unknown, _mtime: unknown): Promise<void> {\n      return Promise.resolve();\n    }\n\n    write(\n      buf: Buffer | Uint8Array | string,\n      offsetOrOpts?: number | { offset?: number; length?: number; position?: number | null },\n      length?: number,\n      position?: number | null,\n    ): Promise<{ bytesWritten: number; buffer: Buffer | Uint8Array | string }> {\n      const entry = openFiles.get(this.fd);\n      if (!entry) return Promise.reject(makeBadfError(\"write\"));\n      let bytes: Uint8Array;\n      let off: number;\n      let len: number;\n      let pos: number | null | undefined;\n      if (typeof buf === \"string\") {\n        bytes = encoder.encode(buf);\n        off = 0;\n        len = bytes.length;\n        pos = typeof offsetOrOpts === \"number\" ? offsetOrOpts : null;\n      } else if (typeof offsetOrOpts === \"object\" && offsetOrOpts !== null) {\n        bytes = buf;\n        off = offsetOrOpts.offset ?? 0;\n        len = offsetOrOpts.length ?? bytes.length - off;\n        pos = offsetOrOpts.position;\n      } else {\n        bytes = buf;\n        off = (offsetOrOpts as number) ?? 0;\n        len = length ?? bytes.length - off;\n        pos = position;\n      }\n      const writeAt = pos !== null && pos !== undefined ? pos : entry.cursor;\n      const endAt = writeAt + len;\n      if (endAt > entry.data.length) {\n        const expanded = new Uint8Array(endAt);\n        expanded.set(entry.data);\n        entry.data = expanded;\n      }\n      for (let i = 0; i < len; i++) entry.data[writeAt + i] = bytes[off + i];\n      if (pos === null || pos === undefined) entry.cursor = endAt;\n      return Promise.resolve({ bytesWritten: len, buffer: buf });\n    }\n\n    writeFile(data: string | Uint8Array): Promise<void> {\n      const entry = openFiles.get(this.fd);\n      if (!entry) return Promise.reject(makeBadfError(\"writeFile\"));\n      const bytes = typeof data === \"string\" ? encoder.encode(data) : data;\n      entry.data = new Uint8Array(bytes);\n      entry.cursor = bytes.length;\n      return Promise.resolve();\n    }\n\n    writev(buffers: ArrayBufferView[], position?: number): Promise<{ bytesWritten: number; buffers: ArrayBufferView[] }> {\n      const entry = openFiles.get(this.fd);\n      if (!entry) return Promise.reject(makeBadfError(\"writev\"));\n      let totalWritten = 0;\n      let writePos = position ?? entry.cursor;\n      for (const buf of buffers) {\n        const u8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n        const endAt = writePos + u8.length;\n        if (endAt > entry.data.length) {\n          const expanded = new Uint8Array(endAt);\n          expanded.set(entry.data);\n          entry.data = expanded;\n        }\n        for (let i = 0; i < u8.length; i++) entry.data[writePos + i] = u8[i];\n        writePos += u8.length;\n        totalWritten += u8.length;\n      }\n      if (position === undefined) entry.cursor = writePos;\n      return Promise.resolve({ bytesWritten: totalWritten, buffers });\n    }\n\n    [Symbol.asyncDispose](): Promise<void> {\n      return this.close();\n    }\n  }\n\n  function makeBadfError(syscall: string): Error & { code: string; errno: number } {\n    const err = new Error(`EBADF: bad file descriptor, ${syscall}`) as Error & { code: string; errno: number };\n    err.code = \"EBADF\";\n    err.errno = -9;\n    return err;\n  }\n  const promisesApi: FsPromisesShape = {\n    readFile(\n      target: unknown,\n      encOrOpts?: string | { encoding?: string | null },\n    ): Promise<Buffer | string> {\n      return new Promise((ok, fail) => {\n        try {\n          const p = abs(target);\n          let enc: string | undefined;\n          if (typeof encOrOpts === \"string\") enc = encOrOpts;\n          else if (encOrOpts?.encoding) enc = encOrOpts.encoding;\n\n          if (enc === \"utf8\" || enc === \"utf-8\") {\n            ok(volume.readFileSync(p, \"utf8\"));\n          } else {\n            ok(wrapAsBuffer(volume.readFileSync(p)));\n          }\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    writeFile(target: unknown, data: string | Uint8Array): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          const wp = abs(target);\n          volume.writeFileSync(wp, data);\n          if (wp.endsWith(\".wasm\") && typeof data !== \"string\") {\n            precompileWasm(data);\n          }\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    stat(target: unknown): Promise<FileStat> {\n      return new Promise((ok, fail) => {\n        try {\n          ok(volume.statSync(abs(target)));\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    mkdir(target: unknown, opts?: { recursive?: boolean }): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          volume.mkdirSync(abs(target), opts);\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    unlink(target: unknown): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          volume.unlinkSync(abs(target));\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    rmdir(target: unknown): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          volume.rmdirSync(abs(target) as string);\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    rename(src: unknown, dest: unknown): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          volume.renameSync(abs(src), abs(dest));\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    access(target: unknown, mode?: number): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          volume.accessSync(abs(target), mode);\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    realpath(target: unknown): Promise<string> {\n      return new Promise((ok, fail) => {\n        try {\n          ok(volume.realpathSync(abs(target)));\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    copyFile(src: unknown, dest: unknown): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          volume.copyFileSync(abs(src), abs(dest));\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    appendFile(target: unknown, data: string | Uint8Array): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          volume.appendFileSync(abs(target), data);\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    symlink(target: unknown, path: unknown, type?: string): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          volume.symlinkSync(abs(target), abs(path), type);\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    readlink(target: unknown): Promise<string> {\n      return new Promise((ok, fail) => {\n        try {\n          ok(volume.readlinkSync(abs(target)));\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    link(existingPath: unknown, newPath: unknown): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          volume.linkSync(abs(existingPath), abs(newPath));\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    chmod(target: unknown, mode: number): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          volume.chmodSync(abs(target), mode);\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    chown(target: unknown, uid: number, gid: number): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          volume.chownSync(abs(target), uid, gid);\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    truncate(target: unknown, len?: number): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          volume.truncateSync(abs(target), len);\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    rm(\n      target: unknown,\n      opts?: { recursive?: boolean; force?: boolean },\n    ): Promise<void> {\n      return new Promise((ok, fail) => {\n        try {\n          bridge.rmSync(abs(target), opts);\n          ok();\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    lstat(target: unknown): Promise<FileStat> {\n      return new Promise((ok, fail) => {\n        try {\n          ok(volume.lstatSync(abs(target)));\n        } catch (e) {\n          fail(e);\n        }\n      });\n    },\n    utimes(_target: unknown, _atime: unknown, _mtime: unknown): Promise<void> {\n      // VFS doesn't track timestamps\n      return Promise.resolve();\n    },\n    lchown(_target: unknown, _uid: number, _gid: number): Promise<void> {\n      // VFS doesn't track symlink ownership\n      return Promise.resolve();\n    },\n    lutimes(_target: unknown, _atime: unknown, _mtime: unknown): Promise<void> {\n      // VFS doesn't track timestamps\n      return Promise.resolve();\n    },\n    opendir(target: unknown, _opts?: unknown): Promise<Dir> {\n      try {\n        const p = abs(target);\n        const names = volume.readdirSync(p);\n        const entries = toDirents(p, names);\n        return Promise.resolve(new Dir(p, entries));\n      } catch (e) {\n        return Promise.reject(e);\n      }\n    },\n    readdir(\n      target: unknown,\n      opts?: { withFileTypes?: boolean; encoding?: string } | string,\n    ): Promise<string[] | Dirent[]> {\n      try {\n        const p = abs(target);\n        const names = volume.readdirSync(p);\n        const o = typeof opts === \"string\" ? { encoding: opts } : opts;\n        if (o?.withFileTypes) {\n          return Promise.resolve(toDirents(p, names));\n        }\n        return Promise.resolve(names);\n      } catch (e) {\n        return Promise.reject(e);\n      }\n    },\n    glob(\n      pattern: string | string[],\n      opts?: { cwd?: string; exclude?: string[] | ((p: string) => boolean) },\n    ): AsyncIterable<string> {\n      const patterns = Array.isArray(pattern) ? pattern : [pattern];\n      const cwd = opts?.cwd ? abs(opts.cwd) : (getCwd ? getCwd() : \"/\");\n      const exclude = opts?.exclude;\n\n      // Expand brace patterns like {tsx,ts,jsx,js} → individual alternatives\n      function expandBraces(pat: string): string[] {\n        const m = pat.match(/^([^{]*)\\{([^}]+)\\}(.*)$/);\n        if (!m) return [pat];\n        const prefix = m[1], alts = m[2].split(\",\"), suffix = m[3];\n        const result: string[] = [];\n        for (const alt of alts) {\n          result.push(...expandBraces(prefix + alt + suffix));\n        }\n        return result;\n      }\n\n      // Convert a glob pattern to a RegExp\n      function globToRegex(pat: string): RegExp {\n        let re = \"\";\n        let i = 0;\n        while (i < pat.length) {\n          const ch = pat[i];\n          if (ch === \"*\" && pat[i + 1] === \"*\") {\n            // ** matches any number of path segments\n            if (pat[i + 2] === \"/\") {\n              re += \"(?:.+/)?\";\n              i += 3;\n            } else {\n              re += \".*\";\n              i += 2;\n            }\n          } else if (ch === \"*\") {\n            re += \"[^/]*\";\n            i++;\n          } else if (ch === \"?\") {\n            re += \"[^/]\";\n            i++;\n          } else if (ch === \".\" || ch === \"(\" || ch === \")\" || ch === \"+\" || ch === \"^\" || ch === \"$\" || ch === \"|\" || ch === \"\\\\\") {\n            re += \"\\\\\" + ch;\n            i++;\n          } else {\n            re += ch;\n            i++;\n          }\n        }\n        return new RegExp(\"^\" + re + \"$\");\n      }\n\n      // Recursively collect all file paths under a directory (relative to base)\n      function walk(dir: string, base: string): string[] {\n        const results: string[] = [];\n        let entries: string[];\n        try {\n          entries = volume.readdirSync(dir);\n        } catch {\n          return results;\n        }\n        for (const name of entries) {\n          const full = dir.endsWith(\"/\") ? dir + name : dir + \"/\" + name;\n          const rel = base ? base + \"/\" + name : name;\n          let isDir = false;\n          try {\n            isDir = volume.statSync(full).isDirectory();\n          } catch {\n            // skip broken entries\n          }\n          if (isDir) {\n            results.push(...walk(full, rel));\n          } else {\n            results.push(rel);\n          }\n        }\n        return results;\n      }\n\n      // Build all expanded patterns → regexes\n      const regexes: RegExp[] = [];\n      for (const p of patterns) {\n        for (const expanded of expandBraces(p)) {\n          regexes.push(globToRegex(expanded));\n        }\n      }\n\n      // Build exclude matchers\n      let excludeFn: ((p: string) => boolean) | null = null;\n      if (typeof exclude === \"function\") {\n        excludeFn = exclude;\n      } else if (Array.isArray(exclude) && exclude.length > 0) {\n        const exRegexes: RegExp[] = [];\n        for (const ep of exclude) {\n          for (const expanded of expandBraces(ep)) {\n            exRegexes.push(globToRegex(expanded));\n          }\n        }\n        excludeFn = (p: string) => exRegexes.some((r) => r.test(p));\n      }\n\n      const allFiles = walk(cwd, \"\");\n      const matched = allFiles.filter((f) => {\n        if (excludeFn && excludeFn(f)) return false;\n        return regexes.some((r) => r.test(f));\n      });\n\n      // Return an async iterable\n      return {\n        [Symbol.asyncIterator]() {\n          let i = 0;\n          return {\n            next() {\n              if (i < matched.length) {\n                return Promise.resolve({ value: matched[i++], done: false });\n              }\n              return Promise.resolve({ value: undefined as any, done: true });\n            },\n          };\n        },\n      };\n    },\n    open(target: unknown, flags?: string | number, _mode?: number): Promise<FileHandle> {\n      try {\n        const f = flags ?? \"r\";\n        const fd = bridge.openSync(abs(target), f, _mode);\n        return Promise.resolve(new FileHandle(fd));\n      } catch (e) {\n        return Promise.reject(e);\n      }\n    },\n    mkdtemp(prefix: string): Promise<string> {\n      try {\n        return Promise.resolve(bridge.mkdtempSync(prefix));\n      } catch (e) {\n        return Promise.reject(e);\n      }\n    },\n    watch(\n      filename: unknown,\n      opts?: { persistent?: boolean; recursive?: boolean; signal?: AbortSignal },\n    ): AsyncIterable<{ eventType: string; filename: string | null }> {\n      const p = abs(filename);\n      const events: { eventType: string; filename: string | null }[] = [];\n      let resolve: (() => void) | null = null;\n      let closed = false;\n\n      const handle = volume.watch(p, { persistent: opts?.persistent, recursive: opts?.recursive }, (event, name) => {\n        events.push({ eventType: event, filename: name });\n        if (resolve) { resolve(); resolve = null; }\n      });\n\n      // keeps the loop alive while the iterator is open. abort/return releases\n      const elHandle = getRegistry().register(\"FSWatcher\");\n      const releaseAll = () => {\n        if (closed) return;\n        closed = true;\n        handle.close();\n        elHandle.close();\n      };\n\n      if (opts?.signal) {\n        opts.signal.addEventListener(\"abort\", () => { releaseAll(); if (resolve) { resolve(); resolve = null; } }, { once: true });\n      }\n\n      return {\n        [Symbol.asyncIterator]() {\n          return {\n            next(): Promise<IteratorResult<{ eventType: string; filename: string | null }>> {\n              if (events.length > 0) {\n                return Promise.resolve({ value: events.shift()!, done: false });\n              }\n              if (closed) return Promise.resolve({ value: undefined as any, done: true });\n              return new Promise<IteratorResult<{ eventType: string; filename: string | null }>>((res) => {\n                resolve = () => {\n                  if (events.length > 0) res({ value: events.shift()!, done: false });\n                  else res({ value: undefined as any, done: true });\n                };\n              });\n            },\n            return(): Promise<IteratorResult<{ eventType: string; filename: string | null }>> {\n              releaseAll();\n              return Promise.resolve({ value: undefined as any, done: true });\n            },\n          };\n        },\n      };\n    },\n    statfs(_target: unknown): Promise<StatFs> {\n      return Promise.resolve(new StatFs());\n    },\n    cp(\n      src: unknown,\n      dest: unknown,\n      opts?: { recursive?: boolean; force?: boolean; errorOnExist?: boolean },\n    ): Promise<void> {\n      try {\n        bridge.cpSync(src, dest, opts);\n        return Promise.resolve();\n      } catch (e) {\n        return Promise.reject(e);\n      }\n    },\n    FileHandle: FileHandle as any,\n  } as FsPromisesShape;\n  const realpathSyncFn = function realpathSync(target: unknown): string {\n    return volume.realpathSync(abs(target));\n  };\n  (realpathSyncFn as any).native = function native(target: unknown): string {\n    return volume.realpathSync(abs(target));\n  };\n\n  const bridge: FsBridge = {\n    readFileSync(\n      target: unknown,\n      encOrOpts?: string | { encoding?: string | null },\n    ): Buffer | string {\n      const p = abs(target);\n      let enc: string | undefined;\n      if (typeof encOrOpts === \"string\") enc = encOrOpts;\n      else if (encOrOpts?.encoding) enc = encOrOpts.encoding;\n\n      if (enc === \"utf8\" || enc === \"utf-8\") {\n        return volume.readFileSync(p, \"utf8\");\n      }\n      try {\n        const raw = volume.readFileSync(p);\n        if (p.endsWith(\".wasm\")) precompileWasm(raw);\n        return wrapAsBuffer(raw);\n      } catch (err: any) {\n        // .wasm under node_modules missing from the VFS (e.g. >15MB binary\n        // that skipped extraction): kick an async CDN prefetch so a retry\n        // succeeds, but never block this thread with a sync download.\n        if (\n          err?.code === \"ENOENT\" &&\n          p.endsWith(\".wasm\") &&\n          p.includes(\"/node_modules/\")\n        ) {\n          console.warn(\n            `[nodepod] ${p} not in VFS — fetching from CDN in the background; the next read will succeed once it lands`,\n          );\n          prefetchWasmFromCdn(volume, p).catch(() => {});\n        }\n        throw err;\n      }\n    },\n\n    writeFileSync(target: unknown, data: string | Uint8Array | ArrayBuffer | ArrayBufferView | unknown): void {\n      // normalize binary once, napi-rs WASM packages pass ArrayBuffer/TypedArray/Buffer/plain arrays (postMessage via Array.from)\n      // otherwise precompileWasm throws and the volume stores non-Uint8Array content\n      let normalized: string | Uint8Array;\n      if (typeof data === \"string\") {\n        normalized = data;\n      } else if (data instanceof Uint8Array) {\n        normalized = data;\n      } else if (data instanceof ArrayBuffer) {\n        normalized = new Uint8Array(data);\n      } else if (data && ArrayBuffer.isView(data as any)) {\n        const view = data as ArrayBufferView;\n        normalized = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n      } else if (Array.isArray(data) || (data && typeof (data as any).length === \"number\")) {\n        normalized = Uint8Array.from(data as ArrayLike<number>);\n      } else {\n        normalized = new Uint8Array(0);\n      }\n\n      if (typeof target === \"number\") {\n        const entry = openFiles.get(target);\n        if (!entry) {\n          const err = new Error(\n            \"EBADF: bad file descriptor, write\",\n          ) as Error & { code: string; errno: number };\n          err.code = \"EBADF\";\n          err.errno = -9;\n          throw err;\n        }\n        const bytes = typeof normalized === \"string\" ? encoder.encode(normalized) : normalized;\n        entry.data = new Uint8Array(bytes);\n        entry.cursor = bytes.length;\n        return;\n      }\n      const wp = abs(target);\n      volume.writeFileSync(wp, normalized);\n      if (wp.endsWith(\".wasm\") && typeof normalized !== \"string\") {\n        precompileWasm(normalized);\n      }\n    },\n\n    existsSync(target: unknown): boolean {\n      return volume.existsSync(abs(target));\n    },\n\n    mkdirSync(target: unknown, opts?: { recursive?: boolean }): void {\n      volume.mkdirSync(abs(target), opts);\n    },\n\n    readdirSync(\n      target: unknown,\n      opts?: { withFileTypes?: boolean; encoding?: string } | string,\n    ): string[] | Dirent[] {\n      const p = abs(target);\n      const names = volume.readdirSync(p);\n      const o = typeof opts === \"string\" ? { encoding: opts } : opts;\n      if (o?.withFileTypes) {\n        return toDirents(p, names);\n      }\n      return names;\n    },\n\n    statSync(target: unknown): FileStat {\n      return volume.statSync(abs(target));\n    },\n\n    lstatSync(target: unknown): FileStat {\n      return volume.lstatSync(abs(target));\n    },\n\n    fstatSync(fd: number): FileStat {\n      const entry = openFiles.get(fd);\n      if (!entry) {\n        const err = new Error(\"EBADF: bad file descriptor, fstat\") as Error & {\n          code: string;\n          errno: number;\n        };\n        err.code = \"EBADF\";\n        err.errno = -9;\n        throw err;\n      }\n      return volume.statSync(entry.filePath);\n    },\n\n    unlinkSync(target: unknown): void {\n      volume.unlinkSync(abs(target));\n    },\n\n    rmdirSync(target: unknown): void {\n      volume.rmdirSync(abs(target));\n    },\n\n    renameSync(src: unknown, dest: unknown): void {\n      volume.renameSync(abs(src), abs(dest));\n    },\n\n    realpathSync: realpathSyncFn as FsBridge[\"realpathSync\"],\n\n    accessSync(target: unknown, _mode?: number): void {\n      volume.accessSync(abs(target));\n    },\n\n    copyFileSync(src: unknown, dest: unknown): void {\n      const bytes = volume.readFileSync(abs(src));\n      volume.writeFileSync(abs(dest), bytes);\n    },\n\n    symlinkSync(target: unknown, path: unknown, _type?: string): void {\n      volume.symlinkSync(abs(target), abs(path), _type);\n    },\n\n    readlinkSync(target: unknown): string {\n      return volume.readlinkSync(abs(target));\n    },\n\n    linkSync(existingPath: unknown, newPath: unknown): void {\n      volume.linkSync(abs(existingPath), abs(newPath));\n    },\n\n    chmodSync(target: unknown, mode: number): void {\n      volume.chmodSync(abs(target), mode);\n    },\n\n    chownSync(target: unknown, uid: number, gid: number): void {\n      volume.chownSync(abs(target), uid, gid);\n    },\n\n    lchownSync(_target: unknown, _uid: number, _gid: number): void {\n      // VFS doesn't track symlink ownership — no-op\n    },\n\n    utimesSync(_target: unknown, _atime: unknown, _mtime: unknown): void {\n      // VFS doesn't track timestamps — no-op\n    },\n\n    lutimesSync(_target: unknown, _atime: unknown, _mtime: unknown): void {\n      // VFS doesn't track timestamps — no-op\n    },\n\n    futimesSync(_fd: number, _atime: unknown, _mtime: unknown): void {\n      // VFS doesn't track timestamps — no-op\n    },\n\n    fchownSync(_fd: number, _uid: number, _gid: number): void {\n      // VFS doesn't track fd ownership — no-op\n    },\n\n    fchmodSync(_fd: number, _mode: number): void {\n      // VFS doesn't track fd permissions — no-op\n    },\n\n    appendFileSync(target: unknown, data: string | Uint8Array): void {\n      volume.appendFileSync(abs(target), data);\n    },\n\n    truncateSync(target: unknown, len?: number): void {\n      volume.truncateSync(abs(target), len);\n    },\n    openSync(target: unknown, flags: string | number, _mode?: number): number {\n      const p = abs(target);\n      const flagStr = typeof flags === \"number\" ? numericFlagsToString(flags) : flags;\n      const exists = volume.existsSync(p);\n      const isWrite = flagStr.includes(\"w\") || flagStr.includes(\"a\");\n      const isReadOnly = flagStr.includes(\"r\") && !flagStr.includes(\"+\");\n\n      if (!exists && isReadOnly) {\n        const err = new Error(\n          `ENOENT: no such file or directory, open '${p}'`,\n        ) as Error & { code: string; errno: number; path: string };\n        err.code = \"ENOENT\";\n        err.errno = -2;\n        err.path = p;\n        throw err;\n      }\n\n      let content: Uint8Array;\n      if (exists && !flagStr.includes(\"w\")) {\n        content = volume.readFileSync(p);\n      } else {\n        content = new Uint8Array(0);\n        if (isWrite) {\n          const parent = p.substring(0, p.lastIndexOf(\"/\")) || \"/\";\n          if (!volume.existsSync(parent)) {\n            volume.mkdirSync(parent, { recursive: true });\n          }\n        }\n      }\n\n      const fd = fdCounter++;\n      openFiles.set(fd, {\n        filePath: p,\n        cursor: flagStr.includes(\"a\") ? content.length : 0,\n        mode: flagStr,\n        data: new Uint8Array(content),\n      });\n      return fd;\n    },\n\n    closeSync(fd: number): void {\n      const entry = openFiles.get(fd);\n      if (!entry) return;\n      if (\n        entry.mode.includes(\"w\") ||\n        entry.mode.includes(\"a\") ||\n        entry.mode.includes(\"+\")\n      ) {\n        volume.writeFileSync(entry.filePath, entry.data);\n      }\n      openFiles.delete(fd);\n    },\n\n    readSync(\n      fd: number,\n      buf: Buffer | Uint8Array,\n      off: number,\n      len: number,\n      pos: number | null,\n    ): number {\n      const entry = openFiles.get(fd);\n      if (!entry) {\n        const err = new Error(\"EBADF: bad file descriptor, read\") as Error & {\n          code: string;\n          errno: number;\n        };\n        err.code = \"EBADF\";\n        err.errno = -9;\n        throw err;\n      }\n      const readAt = pos !== null ? pos : entry.cursor;\n      const count = Math.min(len, entry.data.length - readAt);\n      if (count <= 0) return 0;\n      for (let i = 0; i < count; i++) {\n        buf[off + i] = entry.data[readAt + i];\n      }\n      if (pos === null) entry.cursor += count;\n      return count;\n    },\n\n    writeSync(\n      fd: number,\n      buf: Buffer | Uint8Array | string,\n      off?: number,\n      len?: number,\n      pos?: number | null,\n    ): number {\n      const entry = openFiles.get(fd);\n      if (!entry) {\n        const err = new Error(\"EBADF: bad file descriptor, write\") as Error & {\n          code: string;\n          errno: number;\n        };\n        err.code = \"EBADF\";\n        err.errno = -9;\n        throw err;\n      }\n\n      let bytes: Uint8Array;\n      if (typeof buf === \"string\") {\n        bytes = encoder.encode(buf);\n        off = 0;\n        len = bytes.length;\n      } else {\n        bytes = buf;\n        off = off ?? 0;\n        len = len ?? bytes.length - off;\n      }\n\n      const writeAt = pos !== null && pos !== undefined ? pos : entry.cursor;\n      const endAt = writeAt + len;\n\n      if (endAt > entry.data.length) {\n        const expanded = new Uint8Array(endAt);\n        expanded.set(entry.data);\n        entry.data = expanded;\n      }\n\n      for (let i = 0; i < len; i++) {\n        entry.data[writeAt + i] = bytes[off + i];\n      }\n\n      if (pos === null || pos === undefined) entry.cursor = endAt;\n      return len;\n    },\n\n    writevSync(fd: number, buffers: ArrayBufferView[], pos?: number | null): number {\n      let totalWritten = 0;\n      for (const buf of buffers) {\n        const u8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n        const n = bridge.writeSync(fd, u8 as unknown as Buffer, 0, u8.length, pos != null ? pos + totalWritten : undefined);\n        totalWritten += n;\n      }\n      return totalWritten;\n    },\n\n    ftruncateSync(fd: number, len: number = 0): void {\n      const entry = openFiles.get(fd);\n      if (!entry) {\n        const err = new Error(\n          \"EBADF: bad file descriptor, ftruncate\",\n        ) as Error & { code: string; errno: number };\n        err.code = \"EBADF\";\n        err.errno = -9;\n        throw err;\n      }\n      if (len < entry.data.length) {\n        entry.data = entry.data.slice(0, len);\n      } else if (len > entry.data.length) {\n        const bigger = new Uint8Array(len);\n        bigger.set(entry.data);\n        entry.data = bigger;\n      }\n    },\n\n    fsyncSync(_fd: number): void {\n      /* no-op */\n    },\n    fdatasyncSync(_fd: number): void {\n      /* no-op */\n    },\n\n    mkdtempSync(prefix: string): string {\n      const rand = Math.random().toString(36).substring(2, 8);\n      const dirPath = abs(`${prefix}${rand}`);\n      volume.mkdirSync(dirPath, { recursive: true });\n      return dirPath;\n    },\n\n    rmSync(\n      target: unknown,\n      opts?: { recursive?: boolean; force?: boolean },\n    ): void {\n      const p = abs(target);\n      if (!volume.existsSync(p)) {\n        if (opts?.force) return;\n        throw makeSystemError(\"ENOENT\", \"rm\", p);\n      }\n      const st = volume.statSync(p);\n      if (st.isDirectory()) {\n        if (opts?.recursive) {\n          const children = volume.readdirSync(p);\n          for (const child of children) {\n            const childPath = p.endsWith(\"/\") ? p + child : p + \"/\" + child;\n            bridge.rmSync(childPath, opts);\n          }\n          volume.rmdirSync(p);\n        } else {\n          throw makeSystemError(\"EISDIR\", \"rm\", p);\n        }\n      } else {\n        volume.unlinkSync(p);\n      }\n    },\n    watch(\n      filename: unknown,\n      optsOrCb?: { persistent?: boolean; recursive?: boolean } | WatchCallback,\n      cb?: WatchCallback,\n    ): FileWatchHandle {\n      const p = abs(filename);\n      const inner = volume.watch(\n        p,\n        optsOrCb as { persistent?: boolean; recursive?: boolean },\n        cb,\n      );\n      // hold a Handle for the loop and wrap close() to release it. ref/unref\n      // mirror node's FSWatcher API so watcher.unref() lets the process exit\n      // without having to close the watcher first.\n      const elHandle = getRegistry().register(\"FSWatcher\");\n      const origClose = inner.close?.bind(inner);\n      if (origClose) {\n        inner.close = () => {\n          origClose();\n          elHandle.close();\n        };\n      }\n      (inner as any).ref = () => {\n        elHandle.ref();\n        return inner;\n      };\n      (inner as any).unref = () => {\n        elHandle.unref();\n        return inner;\n      };\n      return inner;\n    },\n\n    watchFile(\n      _filename: unknown,\n      _optsOrListener?: unknown,\n      _listener?: unknown,\n    ): { unref(): void; ref(): void } {\n      // Stub — polling-based file watch not implemented in VFS\n      return { unref() {}, ref() {} };\n    },\n\n    unwatchFile(_filename: unknown, _listener?: unknown): void {\n      // Stub — polling-based file unwatch not implemented in VFS\n    },\n    readFile(\n      target: unknown,\n      optsOrCb?:\n        | string\n        | { encoding?: string | null }\n        | ((err: Error | null, data?: Buffer | string) => void),\n      cb?: (err: Error | null, data?: Buffer | string) => void,\n    ): void {\n      const p = abs(target);\n      let actualCb: ((err: Error | null, data?: Buffer | string) => void) | undefined;\n      let enc: string | undefined;\n      if (typeof optsOrCb === \"function\") {\n        actualCb = optsOrCb as (err: Error | null, data?: Buffer | string) => void;\n      } else {\n        actualCb = cb;\n        if (typeof optsOrCb === \"string\") {\n          enc = optsOrCb;\n        } else if (optsOrCb && typeof optsOrCb === \"object\") {\n          enc = (optsOrCb as { encoding?: string | null }).encoding ?? undefined;\n        }\n      }\n      try {\n        if (enc && enc !== \"buffer\" && (enc === \"utf8\" || enc === \"utf-8\")) {\n          const data = volume.readFileSync(p, \"utf8\");\n          if (actualCb) setTimeout(() => actualCb(null, data), 0);\n        } else {\n          const raw = volume.readFileSync(p);\n          if (actualCb) setTimeout(() => actualCb(null, wrapAsBuffer(raw)), 0);\n        }\n      } catch (e) {\n        if (actualCb) setTimeout(() => actualCb(e as Error), 0);\n      }\n    },\n\n    writeFile(\n      target: unknown,\n      data: unknown,\n      optsOrCb?: unknown,\n      maybeCb?: (err: Error | null) => void,\n    ): void {\n      const cb = typeof optsOrCb === \"function\"\n        ? optsOrCb as (err: Error | null) => void\n        : maybeCb;\n      try {\n        const wp = abs(target);\n        const writeData = typeof data === \"string\" ? data : data as Uint8Array;\n        volume.writeFileSync(wp, writeData);\n        if (wp.endsWith(\".wasm\") && typeof data !== \"string\") {\n          precompileWasm(data as Uint8Array);\n        }\n        if (cb) setTimeout(() => cb(null), 0);\n      } catch (e) {\n        if (cb) setTimeout(() => cb(e as Error), 0);\n      }\n    },\n\n    stat(\n      target: unknown,\n      optsOrCb?: unknown,\n      maybeCb?: (err: Error | null, stats?: FileStat) => void,\n    ): void {\n      // Support both stat(path, cb) and stat(path, opts, cb)\n      const cb = typeof optsOrCb === \"function\"\n        ? optsOrCb as (err: Error | null, stats?: FileStat) => void\n        : maybeCb as (err: Error | null, stats?: FileStat) => void;\n      const p = abs(target);\n      volume.stat(p, cb);\n    },\n\n    lstat(\n      target: unknown,\n      optsOrCb?: unknown,\n      maybeCb?: (err: Error | null, stats?: FileStat) => void,\n    ): void {\n      // Support both lstat(path, cb) and lstat(path, opts, cb)\n      const cb = typeof optsOrCb === \"function\"\n        ? optsOrCb as (err: Error | null, stats?: FileStat) => void\n        : maybeCb as (err: Error | null, stats?: FileStat) => void;\n      const p = abs(target);\n      volume.lstat(p, cb);\n    },\n\n    readdir(\n      target: unknown,\n      optsOrCb?:\n        | { withFileTypes?: boolean }\n        | ((err: Error | null, files?: string[] | Dirent[]) => void),\n      cb?: (err: Error | null, files?: string[] | Dirent[]) => void,\n    ): void {\n      const actualCb = typeof optsOrCb === \"function\" ? optsOrCb : cb;\n      const opts = typeof optsOrCb === \"function\" ? undefined : optsOrCb;\n      const p = abs(target);\n      try {\n        const names = volume.readdirSync(p);\n        if (opts?.withFileTypes) {\n          actualCb?.(null, toDirents(p, names));\n        } else {\n          actualCb?.(null, names);\n        }\n      } catch (e) {\n        actualCb?.(e as Error);\n      }\n    },\n\n    mkdir(\n      target: unknown,\n      optsOrCb?: { recursive?: boolean } | ((err: Error | null) => void),\n      cb?: (err: Error | null) => void,\n    ): void {\n      const actualCb = typeof optsOrCb === \"function\" ? optsOrCb : cb;\n      const opts = typeof optsOrCb === \"object\" ? optsOrCb : undefined;\n      try {\n        volume.mkdirSync(abs(target), opts);\n        if (actualCb) setTimeout(() => actualCb(null), 0);\n      } catch (e) {\n        if (actualCb) setTimeout(() => actualCb(e as Error), 0);\n      }\n    },\n\n    unlink(target: unknown, cb?: (err: Error | null) => void): void {\n      try {\n        volume.unlinkSync(abs(target));\n        if (cb) setTimeout(() => cb(null), 0);\n      } catch (e) {\n        if (cb) setTimeout(() => cb(e as Error), 0);\n      }\n    },\n\n    rmdir(target: unknown, optsOrCb?: unknown, maybeCb?: (err: Error | null) => void): void {\n      const cb = typeof optsOrCb === \"function\"\n        ? optsOrCb as (err: Error | null) => void\n        : maybeCb;\n      try {\n        volume.rmdirSync(abs(target));\n        if (cb) setTimeout(() => cb(null), 0);\n      } catch (e) {\n        if (cb) setTimeout(() => cb(e as Error), 0);\n      }\n    },\n\n    rename(oldPath: unknown, newPath: unknown, cb?: (err: Error | null) => void): void {\n      try {\n        volume.renameSync(abs(oldPath), abs(newPath));\n        if (cb) setTimeout(() => cb(null), 0);\n      } catch (e) {\n        if (cb) setTimeout(() => cb(e as Error), 0);\n      }\n    },\n\n    realpath(\n      target: unknown,\n      optsOrCb?: unknown,\n      maybeCb?: (err: Error | null, resolved?: string) => void,\n    ): void {\n      const cb = typeof optsOrCb === \"function\"\n        ? optsOrCb as (err: Error | null, resolved?: string) => void\n        : maybeCb;\n      volume.realpath(abs(target), cb);\n    },\n\n    access(\n      target: unknown,\n      modeOrCb?: number | ((err: Error | null) => void),\n      cb?: (err: Error | null) => void,\n    ): void {\n      volume.access(abs(target), modeOrCb, cb);\n    },\n\n    appendFile(\n      target: unknown,\n      data: string | Uint8Array,\n      optsOrCb?: unknown,\n      maybeCb?: (err: Error | null) => void,\n    ): void {\n      const cb = typeof optsOrCb === \"function\"\n        ? optsOrCb as (err: Error | null) => void\n        : maybeCb;\n      try {\n        volume.appendFileSync(abs(target), data);\n        if (cb) setTimeout(() => cb(null), 0);\n      } catch (e) {\n        if (cb) setTimeout(() => cb(e as Error), 0);\n      }\n    },\n\n    symlink(\n      target: unknown,\n      path: unknown,\n      typeOrCb?: string | ((err: Error | null) => void),\n      cb?: (err: Error | null) => void,\n    ): void {\n      const actualCb = typeof typeOrCb === \"function\" ? typeOrCb : cb;\n      try {\n        volume.symlinkSync(abs(target), abs(path));\n        if (actualCb) setTimeout(() => actualCb(null), 0);\n      } catch (e) {\n        if (actualCb) setTimeout(() => actualCb(e as Error), 0);\n      }\n    },\n\n    readlink(\n      target: unknown,\n      optsOrCb?: unknown,\n      maybeCb?: (err: Error | null, linkTarget?: string) => void,\n    ): void {\n      const cb = typeof optsOrCb === \"function\"\n        ? optsOrCb as (err: Error | null, linkTarget?: string) => void\n        : maybeCb;\n      try {\n        const result = volume.readlinkSync(abs(target));\n        if (cb) setTimeout(() => cb(null, result), 0);\n      } catch (e) {\n        if (cb) setTimeout(() => cb(e as Error), 0);\n      }\n    },\n\n    link(\n      existingPath: unknown,\n      newPath: unknown,\n      cb?: (err: Error | null) => void,\n    ): void {\n      try {\n        volume.linkSync(abs(existingPath), abs(newPath));\n        if (cb) setTimeout(() => cb(null), 0);\n      } catch (e) {\n        if (cb) setTimeout(() => cb(e as Error), 0);\n      }\n    },\n\n    chmod(\n      target: unknown,\n      mode: unknown,\n      cb?: (err: Error | null) => void,\n    ): void {\n      try {\n        volume.chmodSync(abs(target), mode as number);\n        if (cb) setTimeout(() => cb(null), 0);\n      } catch (e) {\n        if (cb) setTimeout(() => cb(e as Error), 0);\n      }\n    },\n\n    chown(\n      target: unknown,\n      uid: number,\n      gid: number,\n      cb?: (err: Error | null) => void,\n    ): void {\n      try {\n        volume.chownSync(abs(target), uid, gid);\n        if (cb) setTimeout(() => cb(null), 0);\n      } catch (e) {\n        if (cb) setTimeout(() => cb(e as Error), 0);\n      }\n    },\n\n    lchown(\n      target: unknown,\n      _uid: number,\n      _gid: number,\n      cb: (err: Error | null) => void,\n    ): void {\n      // VFS doesn't track symlink ownership — succeed silently\n      if (cb) setTimeout(() => cb(null), 0);\n    },\n\n    utimes(\n      target: unknown,\n      _atime: number | string | Date,\n      _mtime: number | string | Date,\n      cb: (err: Error | null) => void,\n    ): void {\n      // VFS doesn't track timestamps — succeed silently\n      if (cb) setTimeout(() => cb(null), 0);\n    },\n\n    lutimes(\n      target: unknown,\n      _atime: number | string | Date,\n      _mtime: number | string | Date,\n      cb: (err: Error | null) => void,\n    ): void {\n      // VFS doesn't track timestamps — succeed silently\n      if (cb) setTimeout(() => cb(null), 0);\n    },\n    open(\n      target: unknown,\n      flagsOrCb: string | number | ((err: Error | null, fd?: number) => void),\n      modeOrCb?: number | ((err: Error | null, fd?: number) => void),\n      cb?: (err: Error | null, fd?: number) => void,\n    ): void {\n      let flags: string | number = \"r\";\n      let mode: number | undefined;\n      let callback: (err: Error | null, fd?: number) => void;\n      if (typeof flagsOrCb === \"function\") {\n        callback = flagsOrCb;\n      } else {\n        flags = flagsOrCb;\n        if (typeof modeOrCb === \"function\") {\n          callback = modeOrCb;\n        } else {\n          mode = modeOrCb;\n          callback = cb!;\n        }\n      }\n      try {\n        const fd = bridge.openSync(abs(target), flags, mode);\n        if (callback) setTimeout(() => callback(null, fd), 0);\n      } catch (e) {\n        if (callback) setTimeout(() => callback(e as Error), 0);\n      }\n    },\n\n    close(fd: number, cb?: (err: Error | null) => void): void {\n      try {\n        bridge.closeSync(fd);\n        if (cb) setTimeout(() => cb(null), 0);\n      } catch (e) {\n        if (cb) setTimeout(() => cb(e as Error), 0);\n      }\n    },\n\n    read(\n      fd: number,\n      bufOrOpts:\n        | Buffer\n        | Uint8Array\n        | {\n            buffer: Buffer | Uint8Array;\n            offset?: number;\n            length?: number;\n            position?: number | null;\n          },\n      offsetOrCb?:\n        | number\n        | ((\n            err: Error | null,\n            bytesRead?: number,\n            buffer?: Buffer | Uint8Array,\n          ) => void),\n      length?: number,\n      position?: number | null,\n      cb?: (\n        err: Error | null,\n        bytesRead?: number,\n        buffer?: Buffer | Uint8Array,\n      ) => void,\n    ): void {\n      let buf: Buffer | Uint8Array;\n      let off: number;\n      let len: number;\n      let pos: number | null;\n      let callback: (\n        err: Error | null,\n        bytesRead?: number,\n        buffer?: Buffer | Uint8Array,\n      ) => void;\n\n      if (typeof offsetOrCb === \"function\") {\n        // read(fd, opts, cb) form\n        const opts = bufOrOpts as {\n          buffer: Buffer | Uint8Array;\n          offset?: number;\n          length?: number;\n          position?: number | null;\n        };\n        buf = opts.buffer;\n        off = opts.offset ?? 0;\n        len = opts.length ?? buf.length;\n        pos = opts.position ?? null;\n        callback = offsetOrCb;\n      } else {\n        buf = bufOrOpts as Buffer | Uint8Array;\n        off = (offsetOrCb as number) ?? 0;\n        len = length ?? buf.length;\n        pos = position ?? null;\n        callback = cb!;\n      }\n\n      try {\n        const n = bridge.readSync(fd, buf, off, len, pos);\n        if (callback) setTimeout(() => callback(null, n, buf), 0);\n      } catch (e) {\n        if (callback) setTimeout(() => callback(e as Error, 0, buf), 0);\n      }\n    },\n\n    write(\n      fd: number,\n      buf: Buffer | Uint8Array | string,\n      offsetOrCb?:\n        | number\n        | ((\n            err: Error | null,\n            written?: number,\n            buffer?: Buffer | Uint8Array | string,\n          ) => void),\n      lengthOrEnc?: number | string,\n      positionOrCb?:\n        | number\n        | null\n        | ((\n            err: Error | null,\n            written?: number,\n            buffer?: Buffer | Uint8Array | string,\n          ) => void),\n      cb?: (\n        err: Error | null,\n        written?: number,\n        buffer?: Buffer | Uint8Array | string,\n      ) => void,\n    ): void {\n      let callback: (\n        err: Error | null,\n        written?: number,\n        buffer?: Buffer | Uint8Array | string,\n      ) => void;\n      if (typeof offsetOrCb === \"function\") {\n        callback = offsetOrCb;\n        try {\n          const n = bridge.writeSync(fd, buf);\n          setTimeout(() => callback(null, n, buf), 0);\n        } catch (e) {\n          setTimeout(() => callback(e as Error, 0, buf), 0);\n        }\n        return;\n      }\n      if (typeof positionOrCb === \"function\") {\n        callback = positionOrCb;\n      } else {\n        callback = cb!;\n      }\n      try {\n        const off = typeof offsetOrCb === \"number\" ? offsetOrCb : undefined;\n        const len = typeof lengthOrEnc === \"number\" ? lengthOrEnc : undefined;\n        const pos = typeof positionOrCb === \"number\" ? positionOrCb : undefined;\n        const n = bridge.writeSync(fd, buf, off, len, pos);\n        if (callback) setTimeout(() => callback(null, n, buf), 0);\n      } catch (e) {\n        if (callback) setTimeout(() => callback(e as Error, 0, buf), 0);\n      }\n    },\n\n    writev(\n      fd: number,\n      buffers: ArrayBufferView[],\n      positionOrCb?:\n        | number\n        | null\n        | ((err: Error | null, bytesWritten?: number, buffers?: ArrayBufferView[]) => void),\n      cb?: (err: Error | null, bytesWritten?: number, buffers?: ArrayBufferView[]) => void,\n    ): void {\n      const callback = typeof positionOrCb === \"function\" ? positionOrCb : cb;\n      const pos = typeof positionOrCb === \"number\" ? positionOrCb : null;\n      try {\n        let totalWritten = 0;\n        for (const buf of buffers) {\n          const u8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n          const n = bridge.writeSync(fd, u8 as unknown as Buffer, 0, u8.length, pos !== null ? pos + totalWritten : undefined);\n          totalWritten += n;\n        }\n        if (callback) setTimeout(() => callback(null, totalWritten, buffers), 0);\n      } catch (e) {\n        if (callback) setTimeout(() => callback(e as Error, 0, buffers), 0);\n      }\n    },\n\n    fstat(fd: number, optsOrCb?: unknown, maybeCb?: (err: Error | null, stats?: FileStat) => void): void {\n      const cb = typeof optsOrCb === \"function\"\n        ? optsOrCb as (err: Error | null, stats?: FileStat) => void\n        : maybeCb;\n      const entry = openFiles.get(fd);\n      if (!entry) {\n        const err = new Error(`EBADF: bad file descriptor, fstat`) as Error & {\n          code: string;\n        };\n        err.code = \"EBADF\";\n        if (cb) setTimeout(() => cb(err), 0);\n        return;\n      }\n      volume.stat(entry.filePath, cb);\n    },\n\n    futimes(\n      fd: number,\n      _atime: number | string | Date,\n      _mtime: number | string | Date,\n      cb: (err: Error | null) => void,\n    ): void {\n      // VFS doesn't track timestamps — succeed silently\n      if (cb) setTimeout(() => cb(null), 0);\n    },\n\n    fchown(\n      fd: number,\n      _uid: number,\n      _gid: number,\n      cb: (err: Error | null) => void,\n    ): void {\n      // VFS doesn't track ownership — succeed silently\n      if (cb) setTimeout(() => cb(null), 0);\n    },\n\n    fchmod(\n      fd: number,\n      _mode: number,\n      cb: (err: Error | null) => void,\n    ): void {\n      // VFS doesn't track permissions — succeed silently\n      if (cb) setTimeout(() => cb(null), 0);\n    },\n    // function constructor, not class -- graceful-fs calls fs$ReadStream.apply(this, args)\n    ReadStream: (() => {\n      function FsReadStream(this: FsReadStreamInstance, pathArg: unknown, opts?: Record<string, unknown>) {\n        if (!(this instanceof FsReadStream)) return new (FsReadStream as unknown as new (p: unknown, o?: Record<string, unknown>) => FsReadStreamInstance)(pathArg, opts);\n        const self: FsReadStreamInstance = this;\n        self._queue = [];\n        self._active = false;\n        self._terminated = false;\n        self._endFired = false;\n        self._endEmitted = false;\n        self._objectMode = false;\n        self._reading = false;\n        self._highWaterMark = 16384;\n        self._autoDestroy = true;\n        self._encoding = null;\n        self._readableByteLength = 0;\n        self._draining = false;\n        self.readable = true;\n        self.readableEnded = false;\n        self.readableFlowing = null;\n        self.destroyed = false;\n        self.closed = false;\n        self.errored = null;\n        self.readableObjectMode = false;\n        self.readableHighWaterMark = 16384;\n        self.readableDidRead = false;\n        self.readableAborted = false;\n        self._readableState = {\n          get objectMode() { return self._objectMode; },\n          get highWaterMark() { return self._highWaterMark; },\n          get ended() { return self._terminated; },\n          get endEmitted() { return self._endEmitted; },\n          set endEmitted(v: boolean) { self._endEmitted = v; },\n          get flowing() { return self.readableFlowing; },\n          set flowing(v: boolean | null) { self.readableFlowing = v; },\n          get reading() { return self._reading; },\n          get length() { return self._queue ? self._queue.length : 0; },\n          get destroyed() { return self.destroyed; },\n          get errored() { return self.errored; },\n          get closed() { return self.closed; },\n          pipes: [],\n          awaitDrainWriters: null,\n          multiAwaitDrain: false,\n          readableListening: false,\n          resumeScheduled: false,\n          paused: true,\n          emitClose: true,\n          get autoDestroy() { return self._autoDestroy; },\n          defaultEncoding: \"utf8\",\n          needReadable: false,\n          emittedReadable: false,\n          readingMore: false,\n          dataEmitted: false,\n        };\n        self.path = abs(pathArg);\n        self.fd = (opts?.fd as number | null) ?? null;\n        self.flags = (opts?.flags as string) ?? \"r\";\n        self.mode = (opts?.mode as number) ?? 0o666;\n        self.autoClose = opts?.autoClose !== false;\n        queueMicrotask(() => self.open());\n      }\n      FsReadStream.prototype = Object.create(Readable.prototype);\n      FsReadStream.prototype.constructor = FsReadStream;\n\n      FsReadStream.prototype.open = function () {\n        try {\n          this.fd = bridge.openSync(this.path, this.flags, this.mode);\n          this.emit(\"open\", this.fd);\n          this.emit(\"ready\");\n          this._read();\n        } catch (err) {\n          this.destroy(err);\n        }\n      };\n\n      FsReadStream.prototype._read = function () {\n        if (this.fd === null) return;\n        try {\n          const data = volume.readFileSync(this.path);\n          this.push(Buffer.from(data));\n          this.push(null);\n        } catch (err) {\n          this.destroy(err);\n        }\n      };\n\n      FsReadStream.prototype.close = function (cb?: (err?: Error | null) => void) {\n        if (this.fd !== null) {\n          try {\n            bridge.closeSync(this.fd);\n          } catch {}\n          this.fd = null;\n        }\n        this.destroy();\n        if (cb) cb(null);\n      };\n\n      return FsReadStream as any;\n    })(),\n\n    // function constructor, not class -- graceful-fs calls fs$WriteStream.apply(this, args)\n    WriteStream: (() => {\n      function FsWriteStream(this: FsWriteStreamInstance, pathArg: unknown, opts?: Record<string, unknown>) {\n        if (!(this instanceof FsWriteStream)) return new (FsWriteStream as unknown as new (p: unknown, o?: Record<string, unknown>) => FsWriteStreamInstance)(pathArg, opts);\n        const self: FsWriteStreamInstance = this;\n        self._parts = [];\n        self._closed = false;\n        self._objectMode = false;\n        self._highWaterMark = 16384;\n        self._autoDestroy = true;\n        self._corked = 0;\n        self._corkedWrites = [];\n        self._writableByteLength = 0;\n        self.writable = true;\n        self.writableEnded = false;\n        self.writableFinished = false;\n        self.writableNeedDrain = false;\n        self.destroyed = false;\n        self.closed = false;\n        self.errored = null;\n        self.writableObjectMode = false;\n        self.writableHighWaterMark = 16384;\n        self.writableCorked = 0;\n        self._writableState = {\n          get objectMode() { return self._objectMode; },\n          get highWaterMark() { return self._highWaterMark; },\n          get finished() { return self.writableFinished; },\n          set finished(v: boolean) { self.writableFinished = v; },\n          get ended() { return self.writableEnded; },\n          set ended(v: boolean) { self.writableEnded = v; },\n          get destroyed() { return self.destroyed; },\n          get errored() { return self.errored; },\n          get closed() { return self.closed; },\n          get corked() { return self._corked; },\n          get length() { return self._writableByteLength; },\n          get needDrain() { return self.writableNeedDrain; },\n          writing: false,\n          errorEmitted: false,\n          emitClose: true,\n          get autoDestroy() { return self._autoDestroy; },\n          defaultEncoding: \"utf8\",\n          finalCalled: false,\n          ending: false,\n          bufferedIndex: 0,\n        };\n        self.path = abs(pathArg);\n        self.fd = (opts?.fd as number | null) ?? null;\n        self.flags = (opts?.flags as string) ?? \"w\";\n        self.mode = (opts?.mode as number) ?? 0o666;\n        self.autoClose = opts?.autoClose !== false;\n        self.bytesWritten = 0;\n        self._chunks = [] as Uint8Array[];\n        self._enc = new TextEncoder();\n        queueMicrotask(() => self.open());\n      }\n      FsWriteStream.prototype = Object.create(Writable.prototype);\n      FsWriteStream.prototype.constructor = FsWriteStream;\n\n      FsWriteStream.prototype.open = function () {\n        try {\n          this.fd = bridge.openSync(this.path, this.flags, this.mode);\n          this.emit(\"open\", this.fd);\n          this.emit(\"ready\");\n        } catch (err) {\n          this.destroy(err);\n        }\n      };\n\n      FsWriteStream.prototype._write = function (\n        chunk: Uint8Array | string,\n        _encoding: string,\n        callback: (err?: Error | null) => void,\n      ) {\n        const bytes =\n          typeof chunk === \"string\" ? this._enc.encode(chunk) : chunk;\n        this._chunks.push(bytes);\n        this.bytesWritten += bytes.length;\n        callback(null);\n      };\n\n      FsWriteStream.prototype.close = function (cb?: (err?: Error | null) => void) {\n        this._flushChunks();\n        if (this.fd !== null) {\n          try {\n            bridge.closeSync(this.fd);\n          } catch {}\n          this.fd = null;\n        }\n        this.emit(\"finish\");\n        this.emit(\"close\");\n        if (cb) cb(null);\n      };\n\n      FsWriteStream.prototype._flushChunks = function () {\n        if (!this._chunks || this._chunks.length === 0) return;\n        const totalLen = this._chunks.reduce((sum: number, c: Uint8Array) => sum + c.length, 0);\n        const merged = new Uint8Array(totalLen);\n        let pos = 0;\n        for (const c of this._chunks) {\n          merged.set(c, pos);\n          pos += c.length;\n        }\n        const isAppend = this.flags === \"a\";\n        if (isAppend) {\n          volume.appendFileSync(this.path, merged);\n        } else {\n          volume.writeFileSync(this.path, merged);\n        }\n        this._chunks = [];\n      };\n\n      FsWriteStream.prototype.end = function (chunkOrCb?: any, encOrCb?: any, cb?: any) {\n        if (typeof chunkOrCb === \"function\") {\n          cb = chunkOrCb;\n          chunkOrCb = undefined;\n        } else if (typeof encOrCb === \"function\") {\n          cb = encOrCb;\n          encOrCb = undefined;\n        }\n        if (chunkOrCb !== undefined) {\n          const bytes =\n            typeof chunkOrCb === \"string\"\n              ? this._enc.encode(chunkOrCb)\n              : chunkOrCb;\n          this._chunks.push(bytes);\n          this.bytesWritten += bytes.length;\n        }\n        this._flushChunks();\n        if (this.fd !== null && this.autoClose) {\n          try {\n            bridge.closeSync(this.fd);\n          } catch {}\n          this.fd = null;\n        }\n        this.emit(\"finish\");\n        this.emit(\"close\");\n        if (cb) cb();\n        return this;\n      };\n\n      return FsWriteStream as any;\n    })(),\n\n    createReadStream(\n      target: unknown,\n      opts?: { encoding?: string; start?: number; end?: number },\n    ): Readable {\n      const p = abs(target);\n      const stream: any = new Readable();\n      stream.path = p;\n      stream.fd = null;\n      stream.close = function (cb?: (err?: Error | null) => void) {\n        stream.destroy();\n        if (cb) cb(null);\n      };\n      stream.open = function () {\n        stream.fd = 42;\n        stream.emit(\"open\", stream.fd);\n      };\n      setTimeout(() => {\n        try {\n          stream.open();\n          const data = volume.readFileSync(p);\n          const start = opts?.start ?? 0;\n          const end = opts?.end !== undefined ? opts.end + 1 : data.length;\n          const chunk = data.slice(start, end);\n          stream.push(Buffer.from(chunk));\n          stream.push(null);\n        } catch (err) {\n          stream.destroy(err as Error);\n        }\n      }, 0);\n      return stream;\n    },\n\n    createWriteStream(\n      target: unknown,\n      opts?: { encoding?: string; flags?: string },\n    ): Writable {\n      const p = abs(target);\n      const isAppend = opts?.flags === \"a\";\n      const chunks: Uint8Array[] = [];\n      const enc = new TextEncoder();\n      let bytesWritten = 0;\n      let closed = false;\n\n      const stream: any = new Writable();\n      stream.path = p;\n      stream.fd = null;\n      stream.open = function () {\n        stream.fd = 43;\n        stream.emit(\"open\", stream.fd);\n      };\n      Object.defineProperty(stream, \"bytesWritten\", {\n        get: () => bytesWritten,\n        enumerable: true,\n      });\n      queueMicrotask(() => stream.open());\n\n      const flushAndClose = function (cb?: (err?: Error | null) => void) {\n        if (closed) {\n          if (cb) cb(null);\n          return;\n        }\n        closed = true;\n        const totalLen = chunks.reduce((sum, c) => sum + c.length, 0);\n        const merged = new Uint8Array(totalLen);\n        let pos = 0;\n        for (const c of chunks) {\n          merged.set(c, pos);\n          pos += c.length;\n        }\n\n        try {\n          if (isAppend) {\n            volume.appendFileSync(p, merged);\n          } else {\n            volume.writeFileSync(p, merged);\n          }\n        } catch (e) {\n          if (cb) cb(e as Error);\n          return;\n        }\n\n        stream.emit(\"finish\");\n        stream.emit(\"close\");\n        if (cb) cb(null);\n      };\n\n      stream.write = function (\n        chunk: Uint8Array | string,\n        encOrCb?: string | ((err?: Error | null) => void),\n        cb?: (err?: Error | null) => void,\n      ): boolean {\n        const bytes = typeof chunk === \"string\" ? enc.encode(chunk) : chunk;\n        chunks.push(bytes);\n        bytesWritten += bytes.length;\n        const callback = typeof encOrCb === \"function\" ? encOrCb : cb;\n        if (callback) queueMicrotask(() => callback(null));\n        return true;\n      };\n\n      stream.end = function (\n        chunkOrCb?: Uint8Array | string | (() => void),\n        encOrCb?: string | (() => void),\n        cb?: () => void,\n      ): Writable {\n        if (typeof chunkOrCb === \"function\") {\n          cb = chunkOrCb;\n        } else if (chunkOrCb !== undefined) {\n          const bytes =\n            typeof chunkOrCb === \"string\" ? enc.encode(chunkOrCb) : chunkOrCb;\n          chunks.push(bytes);\n          bytesWritten += bytes.length;\n        }\n        if (typeof encOrCb === \"function\") cb = encOrCb;\n\n        flushAndClose(cb as any);\n        return stream;\n      };\n\n      stream.close = function (cb?: (err?: Error | null) => void) {\n        flushAndClose(cb);\n      };\n\n      return stream;\n    },\n    opendirSync(target: unknown, _opts?: unknown): Dir {\n      const p = abs(target);\n      const names = volume.readdirSync(p);\n      const entries = toDirents(p, names);\n      return new Dir(p, entries);\n    },\n\n    opendir(\n      target: unknown,\n      optsOrCb?: unknown | ((err: Error | null, dir?: Dir) => void),\n      cb?: (err: Error | null, dir?: Dir) => void,\n    ): void | Promise<Dir> {\n      const callback = typeof optsOrCb === \"function\" ? optsOrCb as (err: Error | null, dir?: Dir) => void : cb;\n      try {\n        const dir = bridge.opendirSync(target);\n        if (callback) {\n          queueMicrotask(() => callback(null, dir));\n          return;\n        }\n        return Promise.resolve(dir);\n      } catch (e) {\n        if (callback) {\n          queueMicrotask(() => callback(e as Error));\n          return;\n        }\n        return Promise.reject(e);\n      }\n    },\n    exists(target: unknown, cb: (exists: boolean) => void): void {\n      const result = volume.existsSync(abs(target));\n      setTimeout(() => cb(result), 0);\n    },\n    lchmodSync(_target: unknown, _mode: number): void {\n      // VFS doesn't track symlink permissions — no-op\n    },\n\n    lchmod(\n      _target: unknown,\n      _mode: number,\n      cb: (err: Error | null) => void,\n    ): void {\n      // VFS doesn't track symlink permissions — succeed silently\n      if (cb) setTimeout(() => cb(null), 0);\n    },\n    fdatasync(fd: number, cb: (err: Error | null) => void): void {\n      // VFS is always sync — no-op\n      if (cb) setTimeout(() => cb(null), 0);\n    },\n\n    fsync(fd: number, cb: (err: Error | null) => void): void {\n      // VFS is always sync — no-op\n      if (cb) setTimeout(() => cb(null), 0);\n    },\n\n    ftruncate(\n      fd: number,\n      lenOrCb?: number | ((err: Error | null) => void),\n      cb?: (err: Error | null) => void,\n    ): void {\n      const callback = typeof lenOrCb === \"function\" ? lenOrCb : cb;\n      const len = typeof lenOrCb === \"number\" ? lenOrCb : 0;\n      try {\n        bridge.ftruncateSync(fd, len);\n        if (callback) setTimeout(() => callback(null), 0);\n      } catch (e) {\n        if (callback) setTimeout(() => callback(e as Error), 0);\n      }\n    },\n\n    truncate(\n      target: unknown,\n      lenOrCb?: number | ((err: Error | null) => void),\n      cb?: (err: Error | null) => void,\n    ): void {\n      const callback = typeof lenOrCb === \"function\" ? lenOrCb : cb;\n      const len = typeof lenOrCb === \"number\" ? lenOrCb : 0;\n      try {\n        volume.truncateSync(abs(target), len);\n        if (callback) setTimeout(() => callback(null), 0);\n      } catch (e) {\n        if (callback) setTimeout(() => callback(e as Error), 0);\n      }\n    },\n\n    mkdtemp(\n      prefix: string,\n      optsOrCb?: unknown | ((err: Error | null, folder?: string) => void),\n      cb?: (err: Error | null, folder?: string) => void,\n    ): void {\n      const callback = typeof optsOrCb === \"function\"\n        ? optsOrCb as (err: Error | null, folder?: string) => void\n        : cb;\n      try {\n        const result = bridge.mkdtempSync(prefix);\n        if (callback) setTimeout(() => callback(null, result), 0);\n      } catch (e) {\n        if (callback) setTimeout(() => callback(e as Error), 0);\n      }\n    },\n    readvSync(fd: number, buffers: ArrayBufferView[], pos?: number | null): number {\n      let totalRead = 0;\n      for (const buf of buffers) {\n        const u8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n        const n = bridge.readSync(\n          fd,\n          u8 as unknown as Buffer,\n          0,\n          u8.length,\n          pos != null ? pos + totalRead : null,\n        );\n        totalRead += n;\n        if (n < u8.length) break; // short read — EOF\n      }\n      return totalRead;\n    },\n\n    readv(\n      fd: number,\n      buffers: ArrayBufferView[],\n      positionOrCb?:\n        | number\n        | null\n        | ((err: Error | null, bytesRead?: number, buffers?: ArrayBufferView[]) => void),\n      cb?: (err: Error | null, bytesRead?: number, buffers?: ArrayBufferView[]) => void,\n    ): void {\n      const callback = typeof positionOrCb === \"function\" ? positionOrCb : cb;\n      const pos = typeof positionOrCb === \"number\" ? positionOrCb : null;\n      try {\n        const n = bridge.readvSync(fd, buffers, pos);\n        if (callback) setTimeout(() => callback(null, n, buffers), 0);\n      } catch (e) {\n        if (callback) setTimeout(() => callback(e as Error, 0, buffers), 0);\n      }\n    },\n    cpSync(\n      src: unknown,\n      dest: unknown,\n      opts?: { recursive?: boolean; force?: boolean; errorOnExist?: boolean },\n    ): void {\n      const srcPath = abs(src);\n      const destPath = abs(dest);\n      const st = volume.statSync(srcPath);\n      if (st.isDirectory()) {\n        if (!opts?.recursive) {\n          const err = new Error(\n            `EISDIR: illegal operation on a directory, cp '${srcPath}' -> '${destPath}'`,\n          ) as Error & { code: string };\n          err.code = \"EISDIR\";\n          throw err;\n        }\n        if (!volume.existsSync(destPath)) {\n          volume.mkdirSync(destPath, { recursive: true });\n        }\n        const children = volume.readdirSync(srcPath);\n        for (const child of children) {\n          const childSrc = srcPath.endsWith(\"/\") ? srcPath + child : srcPath + \"/\" + child;\n          const childDest = destPath.endsWith(\"/\") ? destPath + child : destPath + \"/\" + child;\n          bridge.cpSync(childSrc, childDest, opts);\n        }\n      } else {\n        if (opts?.errorOnExist && volume.existsSync(destPath)) {\n          const err = new Error(\n            `EEXIST: file already exists, cp '${srcPath}' -> '${destPath}'`,\n          ) as Error & { code: string };\n          err.code = \"EEXIST\";\n          throw err;\n        }\n        if (!opts?.force && volume.existsSync(destPath)) return;\n        const data = volume.readFileSync(srcPath);\n        const parent = destPath.substring(0, destPath.lastIndexOf(\"/\")) || \"/\";\n        if (!volume.existsSync(parent)) {\n          volume.mkdirSync(parent, { recursive: true });\n        }\n        volume.writeFileSync(destPath, data);\n      }\n    },\n\n    cp(\n      src: unknown,\n      dest: unknown,\n      optsOrCb?:\n        | { recursive?: boolean; force?: boolean; errorOnExist?: boolean }\n        | ((err: Error | null) => void),\n      cb?: (err: Error | null) => void,\n    ): void {\n      const callback = typeof optsOrCb === \"function\" ? optsOrCb : cb;\n      const opts = typeof optsOrCb === \"object\" ? optsOrCb : undefined;\n      try {\n        bridge.cpSync(src, dest, opts);\n        if (callback) setTimeout(() => callback(null), 0);\n      } catch (e) {\n        if (callback) setTimeout(() => callback(e as Error), 0);\n      }\n    },\n    statfsSync(_target: unknown, _opts?: unknown): StatFs {\n      return new StatFs();\n    },\n\n    statfs(\n      target: unknown,\n      optsOrCb?: unknown | ((err: Error | null, stats?: StatFs) => void),\n      cb?: (err: Error | null, stats?: StatFs) => void,\n    ): void {\n      const callback = typeof optsOrCb === \"function\"\n        ? optsOrCb as (err: Error | null, stats?: StatFs) => void\n        : cb;\n      const result = new StatFs();\n      if (callback) setTimeout(() => callback(null, result), 0);\n    },\n    globSync(\n      pattern: string | string[],\n      opts?: { cwd?: string; exclude?: string[] | ((p: string) => boolean) },\n    ): string[] {\n      // Reuse the glob logic from promises\n      const patterns = Array.isArray(pattern) ? pattern : [pattern];\n      const cwd = opts?.cwd ? abs(opts.cwd) : (getCwd ? getCwd() : \"/\");\n      const exclude = opts?.exclude;\n\n      function expandBraces(pat: string): string[] {\n        const m = pat.match(/^([^{]*)\\{([^}]+)\\}(.*)$/);\n        if (!m) return [pat];\n        const prefix = m[1], alts = m[2].split(\",\"), suffix = m[3];\n        const result: string[] = [];\n        for (const alt of alts) result.push(...expandBraces(prefix + alt + suffix));\n        return result;\n      }\n      function globToRegex(pat: string): RegExp {\n        let re = \"\";\n        let i = 0;\n        while (i < pat.length) {\n          const ch = pat[i];\n          if (ch === \"*\" && pat[i + 1] === \"*\") {\n            if (pat[i + 2] === \"/\") { re += \"(?:.+/)?\"; i += 3; }\n            else { re += \".*\"; i += 2; }\n          } else if (ch === \"*\") { re += \"[^/]*\"; i++; }\n          else if (ch === \"?\") { re += \"[^/]\"; i++; }\n          else if (\".()^$|\\\\+\".includes(ch)) { re += \"\\\\\" + ch; i++; }\n          else { re += ch; i++; }\n        }\n        return new RegExp(\"^\" + re + \"$\");\n      }\n      function walk(dir: string, base: string): string[] {\n        const results: string[] = [];\n        let entries: string[];\n        try { entries = volume.readdirSync(dir); } catch { return results; }\n        for (const name of entries) {\n          const full = dir.endsWith(\"/\") ? dir + name : dir + \"/\" + name;\n          const rel = base ? base + \"/\" + name : name;\n          let isDir = false;\n          try { isDir = volume.statSync(full).isDirectory(); } catch {}\n          if (isDir) results.push(...walk(full, rel));\n          else results.push(rel);\n        }\n        return results;\n      }\n\n      const regexes: RegExp[] = [];\n      for (const p of patterns) {\n        for (const expanded of expandBraces(p)) regexes.push(globToRegex(expanded));\n      }\n      let excludeFn: ((p: string) => boolean) | null = null;\n      if (typeof exclude === \"function\") excludeFn = exclude;\n      else if (Array.isArray(exclude) && exclude.length > 0) {\n        const exRegexes: RegExp[] = [];\n        for (const ep of exclude) {\n          for (const expanded of expandBraces(ep)) exRegexes.push(globToRegex(expanded));\n        }\n        excludeFn = (p: string) => exRegexes.some((r) => r.test(p));\n      }\n      const allFiles = walk(cwd, \"\");\n      return allFiles.filter((f) => {\n        if (excludeFn && excludeFn(f)) return false;\n        return regexes.some((r) => r.test(f));\n      });\n    },\n\n    glob(\n      pattern: string | string[],\n      optsOrCb?:\n        | { cwd?: string; exclude?: string[] | ((p: string) => boolean) }\n        | ((err: Error | null, matches?: string[]) => void),\n      cb?: (err: Error | null, matches?: string[]) => void,\n    ): void {\n      const callback = typeof optsOrCb === \"function\" ? optsOrCb : cb;\n      const opts = typeof optsOrCb === \"object\" ? optsOrCb : undefined;\n      try {\n        const result = bridge.globSync(pattern, opts);\n        if (callback) setTimeout(() => callback(null, result), 0);\n      } catch (e) {\n        if (callback) setTimeout(() => callback(e as Error), 0);\n      }\n    },\n    openAsBlob(target: unknown, _opts?: { type?: string }): Promise<Blob> {\n      try {\n        const p = abs(target);\n        const data = volume.readFileSync(p);\n        const type = _opts?.type || \"\";\n        const copy = new Uint8Array(data).buffer;\n        return Promise.resolve(new Blob([copy], { type }));\n      } catch (e) {\n        return Promise.reject(e);\n      }\n    },\n    StatFs: StatFs as any,\n    StatWatcher: StatWatcher as any,\n\n    promises: promisesApi,\n    constants: fsConst,\n  } as FsBridge;\n\n  return bridge;\n}\n\nexport default buildFileSystemBridge;\n","// POSIX path operations polyfill\r\n\r\n\r\n// Path separator and delimiter constants\r\nexport const sep = '/';\r\nexport const delimiter = ':';\r\n\r\nexport function normalize(inputPath: string): string {\r\n  if (!inputPath) return '.';\r\n\r\n  const rooted = inputPath.charAt(0) === '/';\r\n  const tokens = inputPath.split('/').filter(t => t.length > 0);\r\n  const stack: string[] = [];\r\n\r\n  for (const token of tokens) {\r\n    if (token === '..') {\r\n      if (stack.length > 0 && stack[stack.length - 1] !== '..') {\r\n        stack.pop();\r\n      } else if (!rooted) {\r\n        stack.push('..');\r\n      }\r\n    } else if (token !== '.') {\r\n      stack.push(token);\r\n    }\r\n  }\r\n\r\n  let output = stack.join('/');\r\n  if (rooted) {\r\n    output = '/' + output;\r\n  }\r\n  return output || '.';\r\n}\r\n\r\nexport function join(...fragments: string[]): string {\r\n  if (fragments.length === 0) return '.';\r\n  const combined = fragments.filter(f => f !== '').join('/');\r\n  return normalize(combined);\r\n}\r\n\r\n// our URL polyfill auto-roots relative URLs at \"http://localhost\", so\r\n// jiti / tailwindcss config loaders end up passing strings like\r\n// \"http://localhost/app/tailwind.config.js\" into path.resolve. without\r\n// stripping we'd produce \"/app/http://localhost/...\" nonsense.\r\nconst URL_SCHEME_RE = /^[a-z][a-z0-9+\\-.]*:/i;\r\n\r\nfunction stripUrlScheme(seg: string): string {\r\n  if (!URL_SCHEME_RE.test(seg)) return seg;\r\n  try {\r\n    const u = new globalThis.URL(seg);\r\n    if (u.protocol === 'file:' || u.protocol === 'http:' || u.protocol === 'https:') {\r\n      const decoded = decodeURIComponent(u.pathname);\r\n      return decoded || seg;\r\n    }\r\n  } catch {}\r\n  return seg;\r\n}\r\n\r\n// resolves right-to-left until an absolute path is formed\r\nexport function resolve(...segments: string[]): string {\r\n  let accumulated = '';\r\n\r\n  for (let idx = segments.length - 1; idx >= 0; idx--) {\r\n    const raw = segments[idx];\r\n    if (!raw) continue;\r\n    const segment = stripUrlScheme(raw);\r\n    accumulated = segment + (accumulated ? '/' + accumulated : '');\r\n    if (accumulated.charAt(0) === '/') break;\r\n  }\r\n\r\n  if (accumulated.charAt(0) !== '/') {\r\n    const workingDir =\r\n      typeof globalThis !== 'undefined' &&\r\n      globalThis.process &&\r\n      typeof globalThis.process.cwd === 'function'\r\n        ? globalThis.process.cwd()\r\n        : '/';\r\n    accumulated = workingDir + (accumulated ? '/' + accumulated : '');\r\n  }\r\n\r\n  return normalize(accumulated);\r\n}\r\n\r\nexport function isAbsolute(targetPath: string): boolean {\r\n  if (!targetPath) return false;\r\n  if (targetPath.charAt(0) === '/') return true;\r\n  // file:/http:/https: stringified URLs are absolute resources, not relative\r\n  if (URL_SCHEME_RE.test(targetPath)) {\r\n    try {\r\n      const u = new globalThis.URL(targetPath);\r\n      if (u.protocol === 'file:' || u.protocol === 'http:' || u.protocol === 'https:') return true;\r\n    } catch {}\r\n  }\r\n  return false;\r\n}\r\n\r\n// match node's path.posix.dirname: walk back to the last meaningful slash\r\n// and return everything before it, never normalize first. previously we\r\n// called normalize() up front which dropped leading \"./\" and broke\r\n// glob-parent (used by tailwind, fast-glob etc) which relies on the byte\r\n// length of the base to slice the glob suffix.\r\nexport function dirname(targetPath: string): string {\r\n  const len = targetPath ? targetPath.length : 0;\r\n  if (len === 0) return '.';\r\n\r\n  const hasRoot = targetPath.charAt(0) === '/';\r\n  let end = -1;\r\n  let matchedSlash = true;\r\n  for (let i = len - 1; i >= 1; i--) {\r\n    if (targetPath.charAt(i) === '/') {\r\n      if (!matchedSlash) {\r\n        end = i;\r\n        break;\r\n      }\r\n    } else {\r\n      matchedSlash = false;\r\n    }\r\n  }\r\n\r\n  if (end === -1) return hasRoot ? '/' : '.';\r\n  if (hasRoot && end === 0) return '/';\r\n  return targetPath.substring(0, end);\r\n}\r\n\r\n// same as dirname: dont normalize, slice the literal last segment\r\nexport function basename(targetPath: string, suffix?: string): string {\r\n  const len = targetPath ? targetPath.length : 0;\r\n  if (len === 0) return '';\r\n\r\n  // skip trailing slashes\r\n  let end = len;\r\n  while (end > 0 && targetPath.charAt(end - 1) === '/') end--;\r\n  if (end === 0) return '';\r\n\r\n  // find the last slash before `end`\r\n  let start = 0;\r\n  for (let i = end - 1; i >= 0; i--) {\r\n    if (targetPath.charAt(i) === '/') { start = i + 1; break; }\r\n  }\r\n\r\n  let name = targetPath.substring(start, end);\r\n  if (suffix && name.endsWith(suffix) && name.length > suffix.length) {\r\n    name = name.substring(0, name.length - suffix.length);\r\n  }\r\n  return name;\r\n}\r\n\r\nexport function extname(targetPath: string): string {\r\n  const name = basename(targetPath);\r\n  const dotPos = name.lastIndexOf('.');\r\n  if (dotPos <= 0) return '';\r\n  return name.substring(dotPos);\r\n}\r\n\r\nexport function relative(fromPath: string, toPath: string): string {\r\n  const absFrom = resolve(fromPath);\r\n  const absTo = resolve(toPath);\r\n\r\n  if (absFrom === absTo) return '';\r\n\r\n  const partsFrom = absFrom.split('/').filter(Boolean);\r\n  const partsTo = absTo.split('/').filter(Boolean);\r\n\r\n  let shared = 0;\r\n  const limit = Math.min(partsFrom.length, partsTo.length);\r\n  while (shared < limit && partsFrom[shared] === partsTo[shared]) {\r\n    shared++;\r\n  }\r\n\r\n  const ascend = partsFrom.length - shared;\r\n  const descend = partsTo.slice(shared);\r\n\r\n  const pieces: string[] = [];\r\n  for (let i = 0; i < ascend; i++) {\r\n    pieces.push('..');\r\n  }\r\n  pieces.push(...descend);\r\n\r\n  return pieces.join('/') || '.';\r\n}\r\n\r\nexport function parse(targetPath: string): {\r\n  root: string;\r\n  dir: string;\r\n  base: string;\r\n  ext: string;\r\n  name: string;\r\n} {\r\n  const clean = normalize(targetPath);\r\n  const rooted = isAbsolute(clean);\r\n  const directory = dirname(clean);\r\n  const base = basename(clean);\r\n  const extension = extname(clean);\r\n  const stem = base.substring(0, base.length - extension.length);\r\n\r\n  return {\r\n    root: rooted ? '/' : '',\r\n    dir: directory,\r\n    base,\r\n    ext: extension,\r\n    name: stem,\r\n  };\r\n}\r\n\r\nexport function format(components: {\r\n  root?: string;\r\n  dir?: string;\r\n  base?: string;\r\n  ext?: string;\r\n  name?: string;\r\n}): string {\r\n  const directory = components.dir || components.root || '';\r\n  const filename = components.base || (components.name || '') + (components.ext || '');\r\n\r\n  if (!directory) return filename;\r\n  if (directory === components.root) return directory + filename;\r\n  return directory + '/' + filename;\r\n}\r\n\r\n// The posix namespace mirrors all path functions (this IS a POSIX implementation)\r\nexport const posix = {\r\n  sep,\r\n  delimiter,\r\n  normalize,\r\n  join,\r\n  resolve,\r\n  isAbsolute,\r\n  dirname,\r\n  basename,\r\n  extname,\r\n  relative,\r\n  parse,\r\n  format,\r\n};\r\n\r\n// Win32 namespace provided as a stub; all operations delegate to POSIX logic\r\nexport const win32 = {\r\n  sep: '\\\\',\r\n  delimiter: ';',\r\n  normalize,\r\n  join,\r\n  resolve,\r\n  isAbsolute,\r\n  dirname,\r\n  basename,\r\n  extname,\r\n  relative,\r\n  parse,\r\n  format,\r\n};\r\n\r\nexport default {\r\n  sep,\r\n  delimiter,\r\n  normalize,\r\n  join,\r\n  resolve,\r\n  isAbsolute,\r\n  dirname,\r\n  basename,\r\n  extname,\r\n  relative,\r\n  parse,\r\n  format,\r\n  posix,\r\n  win32,\r\n};\r\n","// Process polyfill -- buildProcessEnv() constructs a full process object\r\n\r\nimport { EventEmitter, EventHandler } from \"./events\";\r\nimport {\r\n  VERSIONS,\r\n  NODE_SUB_VERSIONS,\r\n  MOCK_OS,\r\n  MOCK_PROCESS,\r\n  MOCK_MEMORY,\r\n  DEFAULT_ENV,\r\n  DEFAULT_TERMINAL,\r\n} from \"../constants/config\";\r\nimport {\r\n  getRegistry,\r\n  ProcessExitSentinel,\r\n  type Handle,\r\n} from \"./../helpers/event-loop\";\r\n\r\n// capture before engine wrapper overrides globalThis.console\r\nconst _nativeConsole = console;\r\n\r\nexport interface ProcessEnvVars {\r\n  [key: string]: string | undefined;\r\n}\r\n\r\ninterface OutputStreamBridge {\r\n  isTTY: boolean;\r\n  columns: number;\r\n  rows: number;\r\n  write: (data: string | Buffer, encoding?: string, cb?: () => void) => boolean;\r\n  end?: (data?: string, cb?: () => void) => void;\r\n  on: (evt: string, fn: EventHandler) => OutputStreamBridge;\r\n  once: (evt: string, fn: EventHandler) => OutputStreamBridge;\r\n  off: (evt: string, fn: EventHandler) => OutputStreamBridge;\r\n  emit: (evt: string, ...args: unknown[]) => boolean;\r\n  addListener: (evt: string, fn: EventHandler) => OutputStreamBridge;\r\n  removeListener: (evt: string, fn: EventHandler) => OutputStreamBridge;\r\n  removeAllListeners: (evt?: string) => OutputStreamBridge;\r\n  setMaxListeners: (n: number) => OutputStreamBridge;\r\n  getMaxListeners: () => number;\r\n  listenerCount: (evt: string) => number;\r\n  listeners: (evt: string) => EventHandler[];\r\n  rawListeners: (evt: string) => EventHandler[];\r\n  prependListener: (evt: string, fn: EventHandler) => OutputStreamBridge;\r\n  prependOnceListener: (evt: string, fn: EventHandler) => OutputStreamBridge;\r\n  eventNames: () => string[];\r\n  pause?: () => OutputStreamBridge;\r\n  resume?: () => OutputStreamBridge;\r\n  setEncoding?: (enc: string) => OutputStreamBridge;\r\n  clearLine?: (dir: number, cb?: () => void) => boolean;\r\n  cursorTo?: (x: number, y?: number, cb?: () => void) => boolean;\r\n  moveCursor?: (dx: number, dy: number, cb?: () => void) => boolean;\r\n  getWindowSize?: () => [number, number];\r\n  getColorDepth?: (env?: Record<string, string>) => number;\r\n  hasColors?: (\r\n    countOrEnv?: number | Record<string, string>,\r\n    env?: Record<string, string>,\r\n  ) => boolean;\r\n}\r\n\r\ninterface InputStreamBridge extends OutputStreamBridge {\r\n  read?: (size?: number) => string | Buffer | null;\r\n  setRawMode?: (flag: boolean) => InputStreamBridge;\r\n  isRaw?: boolean;\r\n  destroy?: () => InputStreamBridge;\r\n  pipe?: (dest: any) => any;\r\n  unpipe?: () => InputStreamBridge;\r\n  unshift?: (...args: unknown[]) => void;\r\n  wrap?: (stream: any) => InputStreamBridge;\r\n  readable?: boolean;\r\n  writable?: boolean;\r\n  destroyed?: boolean;\r\n  [Symbol.asyncIterator]?: () => AsyncIterator<any>;\r\n}\r\n\r\nexport interface ProcessObject {\r\n  env: ProcessEnvVars;\r\n  cwd: () => string;\r\n  chdir: (dir: string) => void;\r\n  _chdirHook?: (dir: string) => void;\r\n  platform: string;\r\n  version: string;\r\n  versions: {\r\n    node: string;\r\n    v8: string;\r\n    uv: string;\r\n    modules: string;\r\n    openssl: string;\r\n    napi: string;\r\n    webcontainer: string;\r\n  };\r\n  argv: string[];\r\n  argv0: string;\r\n  execPath: string;\r\n  execArgv: string[];\r\n  pid: number;\r\n  ppid: number;\r\n  /**\r\n   * undefined by default. user code can set this to seed an exit code for\r\n   * process.exit() (no arg) or natural drain. process.exit(N) overrides\r\n   * and writes N back here.\r\n   */\r\n  exitCode?: number;\r\n  exit: (code?: number) => never;\r\n  nextTick: (fn: (...args: unknown[]) => void, ...args: unknown[]) => void;\r\n  stdout: OutputStreamBridge;\r\n  stderr: OutputStreamBridge;\r\n  stdin: InputStreamBridge;\r\n  arch: string;\r\n  title: string;\r\n  hrtime: {\r\n    (prev?: [number, number]): [number, number];\r\n    bigint: () => bigint;\r\n  };\r\n  memoryUsage: () => {\r\n    rss: number;\r\n    heapTotal: number;\r\n    heapUsed: number;\r\n    external: number;\r\n    arrayBuffers: number;\r\n  };\r\n  uptime: () => number;\r\n  cpuUsage: () => { user: number; system: number };\r\n  resourceUsage: () => {\r\n    userCPUTime: number; systemCPUTime: number;\r\n    maxRSS: number; sharedMemorySize: number;\r\n    unsharedDataSize: number; unsharedStackSize: number;\r\n    minorPageFault: number; majorPageFault: number;\r\n    swappedOut: number; fsRead: number; fsWrite: number;\r\n    ipcSent: number; ipcReceived: number;\r\n    signalsCount: number; voluntaryContextSwitches: number;\r\n    involuntaryContextSwitches: number;\r\n  };\r\n  abort: () => never;\r\n  kill: (pid: number, signal?: string | number) => boolean;\r\n  umask: (mask?: number) => number;\r\n  config: {\r\n    variables: Record<string, unknown>;\r\n    target_defaults: Record<string, unknown>;\r\n  };\r\n  release: { name: string; sourceUrl: string; headersUrl: string };\r\n  features: {\r\n    inspector: boolean;\r\n    debug: boolean;\r\n    uv: boolean;\r\n    ipv6: boolean;\r\n    tls_alpn: boolean;\r\n    tls_sni: boolean;\r\n    tls_ocsp: boolean;\r\n    tls: boolean;\r\n  };\r\n  debugPort: number;\r\n  allowedNodeEnvironmentFlags: Set<string>;\r\n  on: (evt: string, fn: EventHandler) => ProcessObject;\r\n  once: (evt: string, fn: EventHandler) => ProcessObject;\r\n  off: (evt: string, fn: EventHandler) => ProcessObject;\r\n  emit: (evt: string, ...args: unknown[]) => boolean;\r\n  addListener: (evt: string, fn: EventHandler) => ProcessObject;\r\n  removeListener: (evt: string, fn: EventHandler) => ProcessObject;\r\n  removeAllListeners: (evt?: string) => ProcessObject;\r\n  listeners: (evt: string) => EventHandler[];\r\n  listenerCount: (evt: string) => number;\r\n  prependListener: (evt: string, fn: EventHandler) => ProcessObject;\r\n  prependOnceListener: (evt: string, fn: EventHandler) => ProcessObject;\r\n  eventNames: () => string[];\r\n  setMaxListeners: (n: number) => ProcessObject;\r\n  getMaxListeners: () => number;\r\n  send?: (msg: unknown, cb?: (err: Error | null) => void) => boolean;\r\n  disconnect?: () => void;\r\n  connected?: boolean;\r\n  _debugCwdCalls?: number;\r\n  mainModule?: unknown;\r\n  channel?: unknown;\r\n  noDeprecation?: boolean;\r\n  throwDeprecation?: boolean;\r\n  traceDeprecation?: boolean;\r\n  traceProcessWarnings?: boolean;\r\n  report?: Record<string, unknown>;\r\n  binding?: (name: string) => Record<string, unknown>;\r\n  _linkedBinding?: (name: string) => Record<string, unknown>;\r\n  dlopen?: (module: unknown, filename: string, flags?: number) => void;\r\n  reallyExit?: (code?: number) => void;\r\n  _getActiveRequests?: () => unknown[];\r\n  _getActiveHandles?: () => unknown[];\r\n  getActiveResourcesInfo?: () => string[];\r\n  emitWarning?: (\r\n    warning: string | Error,\r\n    typeOrOptions?: string | { type?: string; code?: string; detail?: string },\r\n    code?: string,\r\n  ) => void;\r\n  hasUncaughtExceptionCaptureCallback?: () => boolean;\r\n  setUncaughtExceptionCaptureCallback?: (\r\n    fn: ((err: Error) => void) | null,\r\n  ) => void;\r\n  sourceMapsEnabled?: boolean;\r\n  setSourceMapsEnabled?: (val: boolean) => void;\r\n  constrainedMemory?: () => number;\r\n  availableMemory?: () => number;\r\n}\r\n\r\nfunction fabricateStream(\r\n  isOutput: boolean,\r\n  writeFn?: (text: string) => boolean,\r\n): OutputStreamBridge & InputStreamBridge {\r\n  const bus = new EventEmitter();\r\n\r\n  // raw ANSI writes bypass the stream's write() method\r\n  const rawWrite = (text: string) => {\r\n    if (writeFn) writeFn(text);\r\n  };\r\n\r\n  // columns/rows live behind accessors so assigning them fires a 'resize' event,\r\n  // which is what TUI libs like blessed, ink, prompts etc. listen for\r\n  let _cols: number = DEFAULT_TERMINAL.COLUMNS;\r\n  let _rows: number = DEFAULT_TERMINAL.ROWS;\r\n\r\n  // stdin ref tracking. node refs the loop while stdin's read side is in\r\n  // flowing mode. .on('data') auto-resumes, .pause() unrefs. removing a\r\n  // data listener does NOT auto-pause in node, callers must call .pause()\r\n  // explicitly (readline.Interface.close() does that for you). output\r\n  // streams never hold the loop alive.\r\n  //\r\n  // 'readable' listeners do NOT ref the loop in node: the stream stays\r\n  // paused until the user calls .read(). only flowing-mode listeners\r\n  // ('data') and explicit .resume() keep us alive.\r\n  //\r\n  // refcount rather than a boolean so two independent subsystems (e.g. a\r\n  // readline.Interface and a direct process.stdin.on('data') consumer)\r\n  // don't stomp each other: a single .pause() won't release the handle\r\n  // while another consumer still expects data.\r\n  let _stdinHandle: Handle | null = null;\r\n  let _stdinRefCount = 0;\r\n  const _stdinRef = () => {\r\n    if (isOutput) return;\r\n    _stdinRefCount++;\r\n    if (!_stdinHandle) _stdinHandle = getRegistry().register(\"TTYWrap\");\r\n  };\r\n  const _stdinUnref = () => {\r\n    if (isOutput) return;\r\n    if (_stdinRefCount === 0) return;\r\n    _stdinRefCount--;\r\n    if (_stdinRefCount === 0 && _stdinHandle) {\r\n      _stdinHandle.close();\r\n      _stdinHandle = null;\r\n    }\r\n  };\r\n\r\n  // buffer 'data' emits that arrive before any 'data' listener is attached.\r\n  // real node's stdin is a Readable in paused mode, so it holds bytes in\r\n  // its internal buffer until a consumer attaches and then flushes on\r\n  // attach/resume. our stream is backed by a bare EventEmitter so without\r\n  // this any pre-listener emit is silently dropped. showed up as vite's\r\n  // ~3s gap between \"ready\" and bindCLIShortcuts attaching readline\r\n  // eating every keystroke typed during the gap.\r\n  const _pendingData: unknown[][] = [];\r\n\r\n  const _flushPendingData = () => {\r\n    if (isOutput || _pendingData.length === 0) return;\r\n    // snapshot and clear sync so a handler that schedules another sendStdin\r\n    // during replay doesn't get re-replayed here\r\n    const pending = _pendingData.splice(0);\r\n    // queueMicrotask so the just-added listener is definitely registered\r\n    // (sync call sites expect .on('data', fn).something() chains to finish\r\n    // before data fires), and it matches node's flush-on-next-tick feel\r\n    queueMicrotask(() => {\r\n      for (const args of pending) {\r\n        bus.emit(\"data\", ...(args as unknown[]));\r\n      }\r\n    });\r\n  };\r\n\r\n  const stream: OutputStreamBridge & InputStreamBridge = {\r\n    isTTY: false,\r\n    columns: DEFAULT_TERMINAL.COLUMNS,\r\n    rows: DEFAULT_TERMINAL.ROWS,\r\n    isRaw: false,\r\n    on(evt, fn) {\r\n      bus.on(evt, fn);\r\n      // node auto-resumes stdin (refs loop) only for flowing mode, i.e.\r\n      // 'data' listeners. 'readable' keeps the stream paused until the\r\n      // user calls .read(), so we must NOT ref here.\r\n      if (!isOutput && evt === \"data\") {\r\n        _stdinRef();\r\n        _flushPendingData();\r\n      }\r\n      return stream;\r\n    },\r\n    once(evt, fn) {\r\n      bus.once(evt, fn);\r\n      if (!isOutput && evt === \"data\") {\r\n        _stdinRef();\r\n        _flushPendingData();\r\n      }\r\n      return stream;\r\n    },\r\n    off(evt, fn) {\r\n      bus.off(evt, fn);\r\n      return stream;\r\n    },\r\n    emit(evt, ...args) {\r\n      // stdin 'data' arriving with no listener: queue instead of dropping,\r\n      // replay when a listener attaches (see _flushPendingData above)\r\n      if (!isOutput && evt === \"data\" && bus.listenerCount(\"data\") === 0) {\r\n        _pendingData.push(args);\r\n        // EventEmitter.emit returns true iff a listener was called, none here\r\n        return false;\r\n      }\r\n      return bus.emit(evt, ...args);\r\n    },\r\n    addListener(evt, fn) {\r\n      bus.addListener(evt, fn);\r\n      if (!isOutput && evt === \"data\") {\r\n        _stdinRef();\r\n        _flushPendingData();\r\n      }\r\n      return stream;\r\n    },\r\n    removeListener(evt, fn) {\r\n      bus.removeListener(evt, fn);\r\n      return stream;\r\n    },\r\n    removeAllListeners(evt) {\r\n      bus.removeAllListeners(evt);\r\n      return stream;\r\n    },\r\n    setMaxListeners(n) {\r\n      bus.setMaxListeners(n);\r\n      return stream;\r\n    },\r\n    getMaxListeners() {\r\n      return bus.getMaxListeners();\r\n    },\r\n    listenerCount(evt) {\r\n      return bus.listenerCount(evt);\r\n    },\r\n    listeners(evt) {\r\n      return bus.listeners(evt);\r\n    },\r\n    rawListeners(evt) {\r\n      return bus.rawListeners(evt);\r\n    },\r\n    prependListener(evt, fn) {\r\n      bus.prependListener(evt, fn);\r\n      if (!isOutput && evt === \"data\") {\r\n        _stdinRef();\r\n        _flushPendingData();\r\n      }\r\n      return stream;\r\n    },\r\n    prependOnceListener(evt, fn) {\r\n      bus.prependOnceListener(evt, fn);\r\n      if (!isOutput && evt === \"data\") {\r\n        _stdinRef();\r\n        _flushPendingData();\r\n      }\r\n      return stream;\r\n    },\r\n    eventNames() {\r\n      return bus.eventNames();\r\n    },\r\n    pause() {\r\n      _stdinUnref();\r\n      return stream;\r\n    },\r\n    resume() {\r\n      _stdinRef();\r\n      return stream;\r\n    },\r\n    setEncoding(_enc) {\r\n      return stream;\r\n    },\r\n    write(data, _enc?, cb?) {\r\n      if (isOutput && writeFn && data != null) {\r\n        const text = typeof data === \"string\" ? data : String(data);\r\n        writeFn(text);\r\n      }\r\n      if (cb) queueMicrotask(cb);\r\n      return true;\r\n    },\r\n    end(data?, cb?) {\r\n      if (isOutput && writeFn && data != null) {\r\n        const text = typeof data === \"string\" ? data : String(data);\r\n        writeFn(text);\r\n      }\r\n      if (cb) queueMicrotask(cb);\r\n    },\r\n    read() {\r\n      return null;\r\n    },\r\n    destroy() {\r\n      return stream;\r\n    },\r\n    pipe(dest: any) {\r\n      const onData = (chunk: any) => {\r\n        if (dest.write) dest.write(chunk);\r\n      };\r\n      bus.on(\"data\", onData);\r\n      // pipe attaches straight to the bus, bypassing stream.on(), so we\r\n      // still need to flush any pre-pipe buffered input. otherwise data\r\n      // typed before the consumer attached gets dropped.\r\n      if (!isOutput) _flushPendingData();\r\n      if (!(stream as any)._pipeDests) (stream as any)._pipeDests = [];\r\n      (stream as any)._pipeDests.push({ dest, onData });\r\n      return dest;\r\n    },\r\n    unpipe(dest?: any) {\r\n      const dests: Array<{ dest: any; onData: Function }> =\r\n        (stream as any)._pipeDests || [];\r\n      if (dest) {\r\n        const idx = dests.findIndex((d) => d.dest === dest);\r\n        if (idx >= 0) {\r\n          bus.off(\"data\", dests[idx].onData as any);\r\n          dests.splice(idx, 1);\r\n        }\r\n      } else {\r\n        for (const d of dests) bus.off(\"data\", d.onData as any);\r\n        dests.length = 0;\r\n      }\r\n      return stream;\r\n    },\r\n    unshift() {},\r\n    wrap() {\r\n      return stream;\r\n    },\r\n    [Symbol.asyncIterator]() {\r\n      return { next: async () => ({ done: true, value: undefined }) };\r\n    },\r\n    readable: true,\r\n    writable: true,\r\n    destroyed: false,\r\n    setRawMode(flag) {\r\n      stream.isRaw = flag;\r\n      return stream;\r\n    },\r\n    clearLine(dir: number, cb?) {\r\n      if (isOutput) {\r\n        if (dir === -1)\r\n          rawWrite(\"\\x1b[1K\"); // clear left of cursor\r\n        else if (dir === 1)\r\n          rawWrite(\"\\x1b[0K\"); // clear right of cursor\r\n        else rawWrite(\"\\x1b[2K\"); // clear entire line\r\n      }\r\n      if (cb) cb();\r\n      return true;\r\n    },\r\n    cursorTo(x: number, y?: number | (() => void), cb?: () => void) {\r\n      if (typeof y === \"function\") {\r\n        cb = y;\r\n        y = undefined;\r\n      }\r\n      if (isOutput) {\r\n        if (typeof y === \"number\") {\r\n          rawWrite(`\\x1b[${y + 1};${x + 1}H`); // move to row;col\r\n        } else {\r\n          rawWrite(`\\x1b[${x + 1}G`); // move to column\r\n        }\r\n      }\r\n      if (typeof cb === \"function\") cb();\r\n      return true;\r\n    },\r\n    moveCursor(dx: number, dy: number, cb?) {\r\n      if (isOutput) {\r\n        if (dx > 0)\r\n          rawWrite(`\\x1b[${dx}C`); // move right\r\n        else if (dx < 0) rawWrite(`\\x1b[${-dx}D`); // move left\r\n        if (dy > 0)\r\n          rawWrite(`\\x1b[${dy}B`); // move down\r\n        else if (dy < 0) rawWrite(`\\x1b[${-dy}A`); // move up\r\n      }\r\n      if (cb) cb();\r\n      return true;\r\n    },\r\n    getWindowSize() {\r\n      return [stream.columns, stream.rows];\r\n    },\r\n    getColorDepth(_env?: Record<string, string>): number {\r\n      return 8;\r\n    },\r\n    hasColors(\r\n      countOrEnv?: number | Record<string, string>,\r\n      _env?: Record<string, string>,\r\n    ): boolean {\r\n      const count = typeof countOrEnv === \"number\" ? countOrEnv : 256;\r\n      return 256 >= count;\r\n    },\r\n  };\r\n\r\n  if (isOutput && writeFn) {\r\n    stream.write = (data: string | Buffer, _enc?: string, cb?: () => void) => {\r\n      const text = typeof data === \"string\" ? data : data.toString();\r\n      const ok = writeFn(text);\r\n      if (cb) queueMicrotask(cb);\r\n      return ok;\r\n    };\r\n  }\r\n\r\n  // only the output streams (stdout/stderr) fire 'resize' in real Node,\r\n  // since stdin is a tty.ReadStream which has no columns/rows/resize.\r\n  // we still keep columns/rows on the stdin object for back-compat with\r\n  // anything that was already reading them, but we don't emit anything.\r\n  if (isOutput) {\r\n    let _silent = false;\r\n    Object.defineProperty(stream, \"columns\", {\r\n      get() { return _cols; },\r\n      set(v: number) {\r\n        const n = typeof v === \"number\" ? v : Number(v);\r\n        if (!Number.isFinite(n) || n === _cols) return;\r\n        _cols = n;\r\n        if (!_silent) bus.emit(\"resize\");\r\n      },\r\n      enumerable: true,\r\n      configurable: true,\r\n    });\r\n    Object.defineProperty(stream, \"rows\", {\r\n      get() { return _rows; },\r\n      set(v: number) {\r\n        const n = typeof v === \"number\" ? v : Number(v);\r\n        if (!Number.isFinite(n) || n === _rows) return;\r\n        _rows = n;\r\n        if (!_silent) bus.emit(\"resize\");\r\n      },\r\n      enumerable: true,\r\n      configurable: true,\r\n    });\r\n\r\n    // update both at once, emit 'resize' once. individual setter assignments\r\n    // still emit as usual, this is just for the common \"new size came in\" case.\r\n    (stream as any)._setSize = (cols: number, rows: number): boolean => {\r\n      const colsChanged = Number.isFinite(cols) && cols !== _cols;\r\n      const rowsChanged = Number.isFinite(rows) && rows !== _rows;\r\n      if (!colsChanged && !rowsChanged) return false;\r\n      _silent = true;\r\n      try {\r\n        if (colsChanged) (stream as any).columns = cols;\r\n        if (rowsChanged) (stream as any).rows = rows;\r\n      } finally {\r\n        _silent = false;\r\n      }\r\n      bus.emit(\"resize\");\r\n      return true;\r\n    };\r\n  }\r\n\r\n  return stream;\r\n}\r\n\r\n// batched size update with a single 'resize' event. used by the worker when\r\n// a resize message arrives from main, and by any code that wants to push a\r\n// new size to a TUI without firing two events.\r\nexport function setStreamDimensions(\r\n  stream: { _setSize?: (c: number, r: number) => boolean } | null | undefined,\r\n  cols: number,\r\n  rows: number,\r\n): boolean {\r\n  if (!stream || typeof stream._setSize !== \"function\") return false;\r\n  return stream._setSize(cols, rows);\r\n}\r\n\r\nexport function buildProcessEnv(config?: {\r\n  cwd?: string;\r\n  env?: ProcessEnvVars;\r\n  onExit?: (code: number) => void;\r\n  onStdout?: (text: string) => void;\r\n  onStderr?: (text: string) => void;\r\n  pid?: number;\r\n  ppid?: number;\r\n}): ProcessObject {\r\n  let workingDir = config?.cwd || \"/\";\r\n  let currentUmask = 0o022;\r\n  const bootTime = Date.now();\r\n  const bus = new EventEmitter();\r\n\r\n  const envVars: ProcessEnvVars = {\r\n    NODE_ENV: DEFAULT_ENV.NODE_ENV,\r\n    PATH: DEFAULT_ENV.PATH,\r\n    HOME: DEFAULT_ENV.HOME,\r\n    SHELL: DEFAULT_ENV.SHELL,\r\n    TERM: DEFAULT_ENV.TERM,\r\n    COLORTERM: DEFAULT_ENV.COLORTERM,\r\n    REQUIRES_WASM: DEFAULT_ENV.REQUIRES_WASM,\r\n    npm_config_user_agent: DEFAULT_ENV.npm_config_user_agent,\r\n    npm_execpath: DEFAULT_ENV.npm_execpath,\r\n    npm_node_execpath: DEFAULT_ENV.npm_node_execpath,\r\n    NAPI_RS_FORCE_WASM: \"1\",\r\n    NEXT_TELEMETRY_DISABLED: \"1\",\r\n    DO_NOT_TRACK: \"1\",\r\n    ...config?.env,\r\n  };\r\n\r\n  const stdoutStream = fabricateStream(true, (text) => {\r\n    if (config?.onStdout) {\r\n      config.onStdout(text);\r\n    } else {\r\n      _nativeConsole.log(text);\r\n    }\r\n    return true;\r\n  });\r\n\r\n  const stderrStream = fabricateStream(true, (text) => {\r\n    if (config?.onStderr) {\r\n      config.onStderr(text);\r\n    } else {\r\n      _nativeConsole.error(text);\r\n    }\r\n    return true;\r\n  });\r\n\r\n  const stdinStream = fabricateStream(false);\r\n\r\n  const hrtimeFn = function hrtime(prev?: [number, number]): [number, number] {\r\n    const now = performance.now();\r\n    const secs = Math.floor(now / 1000);\r\n    const nanos = Math.floor((now % 1000) * 1e6);\r\n    if (prev) {\r\n      let ds = secs - prev[0];\r\n      let dn = nanos - prev[1];\r\n      if (dn < 0) {\r\n        dn += 1e9;\r\n        ds -= 1;\r\n      }\r\n      return [ds, dn];\r\n    }\r\n    return [secs, nanos];\r\n  };\r\n  hrtimeFn.bigint = (): bigint => BigInt(Math.floor(performance.now() * 1e6));\r\n\r\n  const proc: ProcessObject = {\r\n    env: envVars,\r\n\r\n    cwd() {\r\n      if (!proc._debugCwdCalls) proc._debugCwdCalls = 0;\r\n      proc._debugCwdCalls++;\r\n      return workingDir;\r\n    },\r\n\r\n    chdir(dir: string) {\r\n      if (!dir.startsWith(\"/\")) {\r\n        dir = workingDir + \"/\" + dir;\r\n      }\r\n      workingDir = dir;\r\n      if (proc._chdirHook) proc._chdirHook(dir);\r\n    },\r\n\r\n    platform: MOCK_OS.PLATFORM,\r\n    arch: MOCK_OS.ARCH,\r\n    title: MOCK_PROCESS.TITLE,\r\n    version: VERSIONS.NODE,\r\n    versions: { ...NODE_SUB_VERSIONS },\r\n\r\n    argv: [\"node\", \"/index.js\"],\r\n    argv0: \"node\",\r\n    execPath: MOCK_PROCESS.EXEC_PATH,\r\n    execArgv: [],\r\n\r\n    pid: config?.pid ?? MOCK_PROCESS.PID,\r\n    ppid: config?.ppid ?? MOCK_PROCESS.PPID,\r\n\r\n    // process.exit() with no argument uses process.exitCode, process.exit(N)\r\n    // overrides exitCode and uses N. matches node.\r\n    exit(code?: number) {\r\n      const resolved =\r\n        typeof code === \"number\"\r\n          ? code\r\n          : typeof proc.exitCode === \"number\"\r\n            ? proc.exitCode\r\n            : 0;\r\n      proc.exitCode = resolved;\r\n      bus.emit(\"exit\", resolved);\r\n      if (config?.onExit) config.onExit(resolved);\r\n      throw new ProcessExitSentinel(resolved);\r\n    },\r\n\r\n    nextTick(fn, ...args) {\r\n      queueMicrotask(() => fn(...args));\r\n    },\r\n\r\n    stdout: stdoutStream,\r\n    stderr: stderrStream,\r\n    stdin: stdinStream,\r\n\r\n    hrtime: hrtimeFn as ProcessObject[\"hrtime\"],\r\n\r\n    memoryUsage: Object.assign(\r\n      function memoryUsage() {\r\n        return {\r\n          rss: MOCK_MEMORY.RSS,\r\n          heapTotal: MOCK_MEMORY.HEAP_TOTAL,\r\n          heapUsed: MOCK_MEMORY.HEAP_USED,\r\n          external: MOCK_MEMORY.EXTERNAL,\r\n          arrayBuffers: 0,\r\n        };\r\n      },\r\n      { rss: () => MOCK_MEMORY.RSS },\r\n    ),\r\n\r\n    uptime() {\r\n      return (Date.now() - bootTime) / 1000;\r\n    },\r\n\r\n    cpuUsage() {\r\n      return { user: 0, system: 0 };\r\n    },\r\n\r\n    resourceUsage() {\r\n      return {\r\n        userCPUTime: 0, systemCPUTime: 0,\r\n        maxRSS: MOCK_MEMORY.RSS / 1024,\r\n        sharedMemorySize: 0, unsharedDataSize: 0, unsharedStackSize: 0,\r\n        minorPageFault: 0, majorPageFault: 0,\r\n        swappedOut: 0, fsRead: 0, fsWrite: 0,\r\n        ipcSent: 0, ipcReceived: 0,\r\n        signalsCount: 0, voluntaryContextSwitches: 0, involuntaryContextSwitches: 0,\r\n      };\r\n    },\r\n\r\n    abort() {\r\n      throw new Error(\"process.abort() called\");\r\n    },\r\n\r\n    kill(_pid: number, _signal?: string | number) {\r\n      // Emit the signal on this process so listeners (e.g. nodemon) can\r\n      // react to SIGINT / SIGUSR2 etc. just like real Node.js.\r\n      const sig = typeof _signal === \"string\" ? _signal : \"SIGTERM\";\r\n      bus.emit(sig);\r\n      return true;\r\n    },\r\n\r\n    umask(mask?: number) {\r\n      const old = currentUmask;\r\n      if (mask !== undefined) currentUmask = mask;\r\n      return old;\r\n    },\r\n\r\n    config: { variables: {}, target_defaults: {} },\r\n    release: { name: \"node\", sourceUrl: \"\", headersUrl: \"\" },\r\n    features: {\r\n      inspector: false,\r\n      debug: false,\r\n      uv: true,\r\n      ipv6: true,\r\n      tls_alpn: true,\r\n      tls_sni: true,\r\n      tls_ocsp: true,\r\n      tls: true,\r\n    },\r\n    debugPort: 9229,\r\n    allowedNodeEnvironmentFlags: new Set<string>(),\r\n    mainModule: undefined as any,\r\n    channel: undefined,\r\n    noDeprecation: false,\r\n    throwDeprecation: false,\r\n    traceDeprecation: false,\r\n    traceProcessWarnings: false,\r\n    report: {\r\n      directory: \"\",\r\n      filename: \"\",\r\n      getReport: () => ({}),\r\n      reportOnFatalError: false,\r\n      reportOnSignal: false,\r\n      reportOnUncaughtException: false,\r\n      signal: \"SIGUSR2\",\r\n      writeReport: () => \"\",\r\n    },\r\n    binding(name: string): Record<string, unknown> {\r\n      if (name === \"natives\") return {};\r\n      if (name === \"config\") return { exposeInternals: false };\r\n      if (name === \"constants\")\r\n        return {\r\n          os: {\r\n            UV_UDP_REUSEADDR: 4,\r\n            signals: {\r\n              SIGHUP: 1, SIGINT: 2, SIGQUIT: 3, SIGILL: 4, SIGTRAP: 5,\r\n              SIGABRT: 6, SIGBUS: 7, SIGFPE: 8, SIGKILL: 9, SIGUSR1: 10,\r\n              SIGSEGV: 11, SIGUSR2: 12, SIGPIPE: 13, SIGALRM: 14, SIGTERM: 15,\r\n              SIGCHLD: 17, SIGCONT: 18, SIGSTOP: 19, SIGTSTP: 20, SIGTTIN: 21,\r\n              SIGTTOU: 22, SIGURG: 23, SIGXCPU: 24, SIGXFSZ: 25, SIGVTALRM: 26,\r\n              SIGPROF: 27, SIGWINCH: 28, SIGIO: 29, SIGPWR: 30, SIGSYS: 31,\r\n            },\r\n            errno: {},\r\n          },\r\n          fs: {\r\n            O_RDONLY: 0, O_WRONLY: 1, O_RDWR: 2, O_CREAT: 64, O_EXCL: 128,\r\n            O_NOCTTY: 256, O_TRUNC: 512, O_APPEND: 1024, O_NONBLOCK: 2048,\r\n            O_DSYNC: 4096, O_SYNC: 1052672, O_DIRECT: 16384, O_DIRECTORY: 65536,\r\n            O_NOATIME: 262144, O_NOFOLLOW: 131072, O_CLOEXEC: 524288,\r\n            UV_FS_O_FILEMAP: 0,\r\n            S_IFMT: 61440, S_IFREG: 32768, S_IFDIR: 16384, S_IFCHR: 8192,\r\n            S_IFBLK: 24576, S_IFIFO: 4096, S_IFLNK: 40960, S_IFSOCK: 49152,\r\n            F_OK: 0, R_OK: 4, W_OK: 2, X_OK: 1,\r\n          },\r\n          crypto: {},\r\n          zlib: {},\r\n        };\r\n      if (name === \"util\") return {};\r\n      if (name === \"fs\") return {};\r\n      if (name === \"buffer\") return {};\r\n      if (name === \"stream_wrap\") return {};\r\n      if (name === \"tcp_wrap\") return {};\r\n      if (name === \"pipe_wrap\") return {};\r\n      // throw for unknown bindings so callers fall back gracefully\r\n      throw new Error(`No such module: ${name}`);\r\n    },\r\n    _linkedBinding(_name: string): Record<string, unknown> {\r\n      return {};\r\n    },\r\n    dlopen(_module: unknown, _filename: string, _flags?: number): void {\r\n      throw new Error(\"process.dlopen is not supported in browser environment\");\r\n    },\r\n    reallyExit(_code?: number): void {},\r\n    // libuv splits handles (long-lived: timers, sockets, servers) from\r\n    // requests (short-lived: fs ops, fetches, imports). we map our\r\n    // HandleType enum onto that split for introspection parity.\r\n    _getActiveRequests(): unknown[] {\r\n      const reqTypes = new Set<string>([\r\n        \"FSReqCallback\", \"FetchRequest\", \"DynamicImport\", \"WASMWork\",\r\n      ]);\r\n      return getRegistry()\r\n        .list()\r\n        .filter((h) => h.refed && reqTypes.has(h.type))\r\n        .map((h) => ({ type: h.type }));\r\n    },\r\n    _getActiveHandles(): unknown[] {\r\n      const reqTypes = new Set<string>([\r\n        \"FSReqCallback\", \"FetchRequest\", \"DynamicImport\", \"WASMWork\",\r\n      ]);\r\n      return getRegistry()\r\n        .list()\r\n        .filter((h) => h.refed && !reqTypes.has(h.type))\r\n        .map((h) => ({ type: h.type }));\r\n    },\r\n    // node 17.3+: plain string[] of active resource types.\r\n    // see lib/internal/process/per_thread.js.\r\n    getActiveResourcesInfo(): string[] {\r\n      return getRegistry()\r\n        .list()\r\n        .filter((h) => h.refed)\r\n        .map((h) => h.type);\r\n    },\r\n    emitWarning(\r\n      warning: string | Error,\r\n      typeOrOptions?:\r\n        | string\r\n        | { type?: string; code?: string; detail?: string },\r\n      code?: string,\r\n    ): void {\r\n      const msg = typeof warning === \"string\" ? warning : warning.message;\r\n      const type =\r\n        typeof typeOrOptions === \"string\"\r\n          ? typeOrOptions\r\n          : (typeOrOptions?.type ?? \"Warning\");\r\n      bus.emit(\"warning\", { name: type, message: msg, code });\r\n    },\r\n    hasUncaughtExceptionCaptureCallback(): boolean {\r\n      return false;\r\n    },\r\n    setUncaughtExceptionCaptureCallback(\r\n      _fn: ((err: Error) => void) | null,\r\n    ): void {},\r\n    sourceMapsEnabled: false,\r\n    setSourceMapsEnabled(_val: boolean): void {},\r\n    constrainedMemory(): number {\r\n      return 0;\r\n    },\r\n    availableMemory(): number {\r\n      return 512 * 1024 * 1024; // 512MB\r\n    },\r\n\r\n    on(evt, fn) {\r\n      bus.on(evt, fn);\r\n      return proc;\r\n    },\r\n    once(evt, fn) {\r\n      bus.once(evt, fn);\r\n      return proc;\r\n    },\r\n    off(evt, fn) {\r\n      bus.off(evt, fn);\r\n      return proc;\r\n    },\r\n    emit(evt, ...args) {\r\n      return bus.emit(evt, ...args);\r\n    },\r\n    addListener(evt, fn) {\r\n      bus.addListener(evt, fn);\r\n      return proc;\r\n    },\r\n    removeListener(evt, fn) {\r\n      bus.removeListener(evt, fn);\r\n      return proc;\r\n    },\r\n    removeAllListeners(evt) {\r\n      bus.removeAllListeners(evt);\r\n      return proc;\r\n    },\r\n    listeners(evt) {\r\n      return bus.listeners(evt);\r\n    },\r\n    listenerCount(evt) {\r\n      return bus.listenerCount(evt);\r\n    },\r\n    prependListener(evt, fn) {\r\n      bus.prependListener(evt, fn);\r\n      return proc;\r\n    },\r\n    prependOnceListener(evt, fn) {\r\n      bus.prependOnceListener(evt, fn);\r\n      return proc;\r\n    },\r\n    eventNames() {\r\n      return bus.eventNames();\r\n    },\r\n    setMaxListeners(n) {\r\n      bus.setMaxListeners(n);\r\n      return proc;\r\n    },\r\n    getMaxListeners() {\r\n      return bus.getMaxListeners();\r\n    },\r\n  };\r\n\r\n  return proc;\r\n}\r\n\r\nexport const process = buildProcessEnv();\r\n\r\nexport default process;\r\n","// TCP / net polyfill -- all networking is simulated, no real kernel sockets\r\n\r\nimport { EventEmitter, type EventHandler } from \"./events\";\r\nimport { Duplex } from \"./stream\";\r\nimport { Buffer } from \"./buffer\";\r\nimport { PORT_RANGE } from \"../constants/config\";\r\nimport { getRegistry, type Handle } from \"../helpers/event-loop\";\r\n\r\n\r\nexport interface NetAddress {\r\n  address: string;\r\n  family: string;\r\n  port: number;\r\n}\r\n\r\nexport interface SocketConfig {\r\n  allowHalfOpen?: boolean;\r\n  readable?: boolean;\r\n  writable?: boolean;\r\n}\r\n\r\nexport interface ServerConfig {\r\n  allowHalfOpen?: boolean;\r\n  pauseOnConnect?: boolean;\r\n}\r\n\r\nexport interface BindOptions {\r\n  port?: number;\r\n  host?: string;\r\n  backlog?: number;\r\n}\r\n\r\n\r\nexport interface TcpSocket extends Duplex {\r\n  localAddress: string;\r\n  localPort: number;\r\n  remoteAddress?: string;\r\n  remotePort?: number;\r\n  remoteFamily?: string;\r\n  connecting: boolean;\r\n  pending: boolean;\r\n  destroyed: boolean;\r\n  encrypted: boolean;\r\n  readyState: string;\r\n  bytesRead: number;\r\n  bytesWritten: number;\r\n  connect(portOrOpts: any, hostOrCb?: any, cb?: any): this;\r\n  address(): NetAddress | null;\r\n  setEncoding(enc: BufferEncoding): this;\r\n  setTimeout(ms: number, handler?: () => void): this;\r\n  setNoDelay(v?: boolean): this;\r\n  setKeepAlive(on?: boolean, delay?: number): this;\r\n  ref(): this;\r\n  unref(): this;\r\n  destroy(err?: Error): this;\r\n  _feedData(chunk: Buffer | string): void;\r\n  _feedEnd(): void;\r\n}\r\n\r\nexport interface TcpSocketConstructor {\r\n  new (cfg?: SocketConfig): TcpSocket;\r\n  (this: any, cfg?: SocketConfig): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const TcpSocket = function TcpSocket(this: any, _cfg?: SocketConfig) {\r\n  if (!this) return;\r\n  Duplex.call(this);\r\n\r\n  this._isConnecting = false;\r\n  this._isConnected = false;\r\n  this._isDestroyed = false;\r\n  this._peerAddr = \"\";\r\n  this._peerPort = 0;\r\n  this._selfAddr = \"127.0.0.1\";\r\n  this._selfPort = 0;\r\n\r\n  this.localAddress = \"127.0.0.1\";\r\n  this.localPort = 0;\r\n  this.remoteAddress = undefined;\r\n  this.remotePort = undefined;\r\n  this.remoteFamily = undefined;\r\n  this.connecting = false;\r\n  this.pending = false;\r\n  this.destroyed = false;\r\n  this.encrypted = false;\r\n  this.readyState = \"closed\";\r\n  this.bytesRead = 0;\r\n  this.bytesWritten = 0;\r\n} as unknown as TcpSocketConstructor;\r\n\r\nObject.setPrototypeOf(TcpSocket.prototype, Duplex.prototype);\r\n\r\nTcpSocket.prototype.connect = function connect(\r\n  portOrOpts: number | { port: number; host?: string },\r\n  hostOrCb?: string | (() => void),\r\n  cb?: () => void,\r\n): any {\r\n  let port: number;\r\n  let host = \"127.0.0.1\";\r\n  let done: (() => void) | undefined;\r\n\r\n  if (typeof portOrOpts === \"number\") {\r\n    port = portOrOpts;\r\n    if (typeof hostOrCb === \"string\") {\r\n      host = hostOrCb;\r\n      done = cb;\r\n    } else done = hostOrCb;\r\n  } else {\r\n    port = portOrOpts.port;\r\n    host = portOrOpts.host ?? \"127.0.0.1\";\r\n    done = typeof hostOrCb === \"function\" ? hostOrCb : cb;\r\n  }\r\n\r\n  this._isConnecting = true;\r\n  this.connecting = true;\r\n  this._peerAddr = host;\r\n  this._peerPort = port;\r\n  this.remoteAddress = host;\r\n  this.remotePort = port;\r\n  this.remoteFamily = \"IPv4\";\r\n  this.readyState = \"opening\";\r\n\r\n  // keep the loop alive while connected, released on destroy\r\n  if (!this._elHandle) this._elHandle = getRegistry().register(\"TCPSocketWrap\");\r\n\r\n  const self = this;\r\n  queueMicrotask(() => {\r\n    self._isConnecting = false;\r\n    self._isConnected = true;\r\n    self.connecting = false;\r\n    self.readyState = \"open\";\r\n    self.emit(\"connect\");\r\n    if (done) done();\r\n  });\r\n\r\n  return this;\r\n};\r\n\r\nTcpSocket.prototype.address = function address(): NetAddress | null {\r\n  if (!this._isConnected) return null;\r\n  return { address: this._selfAddr, family: \"IPv4\", port: this._selfPort };\r\n};\r\n\r\nTcpSocket.prototype.setEncoding = function setEncoding(_enc: BufferEncoding): any {\r\n  return this;\r\n};\r\n\r\nTcpSocket.prototype.setTimeout = function setTimeout(ms: number, handler?: () => void): any {\r\n  if (handler) this.once(\"timeout\", handler);\r\n  return this;\r\n};\r\n\r\nTcpSocket.prototype.setNoDelay = function setNoDelay(_v?: boolean): any {\r\n  return this;\r\n};\r\n\r\nTcpSocket.prototype.setKeepAlive = function setKeepAlive(_on?: boolean, _delay?: number): any {\r\n  return this;\r\n};\r\n\r\nTcpSocket.prototype.ref = function ref(): any {\r\n  (this._elHandle as Handle | null)?.ref();\r\n  return this;\r\n};\r\n\r\nTcpSocket.prototype.unref = function unref(): any {\r\n  (this._elHandle as Handle | null)?.unref();\r\n  return this;\r\n};\r\n\r\nTcpSocket.prototype.destroy = function destroy(err?: Error): any {\r\n  if (this._isDestroyed) return this;\r\n  this._isDestroyed = true;\r\n  this._isConnected = false;\r\n  this.destroyed = true;\r\n  this.readyState = \"closed\";\r\n  (this._elHandle as Handle | null)?.close();\r\n  this._elHandle = null;\r\n  if (err) this.emit(\"error\", err);\r\n  const self = this;\r\n  queueMicrotask(() => self.emit(\"close\", !!err));\r\n  return this;\r\n};\r\n\r\nTcpSocket.prototype._feedData = function _feedData(chunk: Buffer | string): void {\r\n  const buf = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\r\n  this.push(buf);\r\n};\r\n\r\nTcpSocket.prototype._feedEnd = function _feedEnd(): void {\r\n  this.push(null);\r\n};\r\n\r\n\r\nexport interface TcpServer extends EventEmitter {\r\n  listening: boolean;\r\n  maxConnections?: number;\r\n  listen(portOrOpts?: any, hostOrCb?: any, backlogOrCb?: any, cb?: any): this;\r\n  address(): (NetAddress & { host?: string }) | null;\r\n  close(cb?: (err?: Error) => void): this;\r\n  getConnections(cb?: (err: Error | null, n: number) => void): void;\r\n  ref(): this;\r\n  unref(): this;\r\n  _acceptConnection(sock: TcpSocket): void;\r\n}\r\n\r\nexport interface TcpServerConstructor {\r\n  new (cfgOrHandler?: ServerConfig | ((sock: TcpSocket) => void), handler?: (sock: TcpSocket) => void): TcpServer;\r\n  (this: any, cfgOrHandler?: ServerConfig | ((sock: TcpSocket) => void), handler?: (sock: TcpSocket) => void): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const TcpServer = function TcpServer(\r\n  this: any,\r\n  cfgOrHandler?: ServerConfig | ((sock: TcpSocket) => void),\r\n  handler?: (sock: TcpSocket) => void,\r\n) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n\r\n  this._bound = false;\r\n  this._addr = null;\r\n  this._peers = new Set();\r\n  this._cap = Infinity;\r\n  this.listening = false;\r\n  this.maxConnections = undefined;\r\n\r\n  let fn: ((s: TcpSocket) => void) | undefined;\r\n  if (typeof cfgOrHandler === \"function\") fn = cfgOrHandler;\r\n  else fn = handler;\r\n  if (fn) this.on(\"connection\", fn as EventHandler);\r\n} as unknown as TcpServerConstructor;\r\n\r\nObject.setPrototypeOf(TcpServer.prototype, EventEmitter.prototype);\r\n\r\nTcpServer.prototype.listen = function listen(\r\n  portOrOpts?: number | BindOptions,\r\n  hostOrCb?: string | number | (() => void),\r\n  backlogOrCb?: number | (() => void),\r\n  cb?: () => void,\r\n): any {\r\n  let port = 0;\r\n  let host = \"0.0.0.0\";\r\n  let done: (() => void) | undefined;\r\n\r\n  if (typeof portOrOpts === \"number\") {\r\n    port = portOrOpts;\r\n    if (typeof hostOrCb === \"string\") {\r\n      host = hostOrCb;\r\n      done = typeof backlogOrCb === \"function\" ? backlogOrCb : cb;\r\n    } else if (typeof hostOrCb === \"function\") {\r\n      done = hostOrCb;\r\n    } else {\r\n      done = typeof backlogOrCb === \"function\" ? backlogOrCb : cb;\r\n    }\r\n  } else if (portOrOpts) {\r\n    port = portOrOpts.port ?? 0;\r\n    host = portOrOpts.host ?? \"0.0.0.0\";\r\n    done = typeof hostOrCb === \"function\" ? hostOrCb : cb;\r\n  }\r\n\r\n  if (port === 0) port = PORT_RANGE.BASE + Math.floor(Math.random() * PORT_RANGE.RANGE);\r\n\r\n  this._addr = { address: host, family: \"IPv4\", port };\r\n  this._bound = true;\r\n  this.listening = true;\r\n\r\n  // keep the loop alive while listening, released on close\r\n  if (!this._elHandle) this._elHandle = getRegistry().register(\"TCPServerWrap\");\r\n\r\n  const self = this;\r\n  queueMicrotask(() => {\r\n    self.emit(\"listening\");\r\n    if (done) done();\r\n  });\r\n\r\n  return this;\r\n};\r\n\r\nTcpServer.prototype.address = function address(): (NetAddress & { host?: string }) | null {\r\n  if (!this._addr) return null;\r\n  return { ...this._addr, host: this._addr.address };\r\n};\r\n\r\nTcpServer.prototype.close = function close(cb?: (err?: Error) => void): any {\r\n  this._bound = false;\r\n  this.listening = false;\r\n  for (const s of this._peers) s.destroy();\r\n  this._peers.clear();\r\n  (this._elHandle as Handle | null)?.close();\r\n  this._elHandle = null;\r\n  const self = this;\r\n  queueMicrotask(() => {\r\n    self.emit(\"close\");\r\n    if (cb) cb();\r\n  });\r\n  return this;\r\n};\r\n\r\nTcpServer.prototype.getConnections = function getConnections(\r\n  cb?: (err: Error | null, n: number) => void,\r\n): void {\r\n  if (typeof cb === \"function\") cb(null, this._peers.size);\r\n};\r\n\r\nTcpServer.prototype.ref = function ref(): any {\r\n  (this._elHandle as Handle | null)?.ref();\r\n  return this;\r\n};\r\n\r\nTcpServer.prototype.unref = function unref(): any {\r\n  (this._elHandle as Handle | null)?.unref();\r\n  return this;\r\n};\r\n\r\nTcpServer.prototype._acceptConnection = function _acceptConnection(sock: TcpSocket): void {\r\n  if (!this._bound) {\r\n    sock.destroy();\r\n    return;\r\n  }\r\n  this._peers.add(sock);\r\n  const self = this;\r\n  sock.on(\"close\", function onClose() { self._peers.delete(sock); });\r\n  this.emit(\"connection\", sock);\r\n};\r\n\r\n\r\nexport function createServer(\r\n  cfgOrHandler?: ServerConfig | ((sock: TcpSocket) => void),\r\n  handler?: (sock: TcpSocket) => void,\r\n): TcpServer {\r\n  return new TcpServer(cfgOrHandler, handler);\r\n}\r\n\r\nexport function createConnection(\r\n  portOrOpts: number | { port: number; host?: string },\r\n  hostOrCb?: string | (() => void),\r\n  cb?: () => void,\r\n): TcpSocket {\r\n  return new TcpSocket().connect(portOrOpts, hostOrCb as string, cb);\r\n}\r\n\r\nexport const connect = createConnection;\r\n\r\nexport function isIP(addr: string): number {\r\n  if (/^(\\d{1,3}\\.){3}\\d{1,3}$/.test(addr)) return 4;\r\n  if (/^([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}$/.test(addr)) return 6;\r\n  return 0;\r\n}\r\n\r\nexport function isIPv4(addr: string): boolean {\r\n  return isIP(addr) === 4;\r\n}\r\nexport function isIPv6(addr: string): boolean {\r\n  return isIP(addr) === 6;\r\n}\r\n\r\nexport default {\r\n  Socket: TcpSocket,\r\n  Server: TcpServer,\r\n  createServer,\r\n  createConnection,\r\n  connect,\r\n  isIP,\r\n  isIPv4,\r\n  isIPv6,\r\n};\r\n","/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a) {\n    return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is positive integer. */\nexport function anumber(n) {\n    if (!Number.isSafeInteger(n) || n < 0)\n        throw new Error('positive integer expected, got ' + n);\n}\n/** Asserts something is Uint8Array. */\nexport function abytes(b, ...lengths) {\n    if (!isBytes(b))\n        throw new Error('Uint8Array expected');\n    if (lengths.length > 0 && !lengths.includes(b.length))\n        throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n/** Asserts something is hash */\nexport function ahash(h) {\n    if (typeof h !== 'function' || typeof h.create !== 'function')\n        throw new Error('Hash should be wrapped by utils.createHasher');\n    anumber(h.outputLen);\n    anumber(h.blockLen);\n}\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance, checkFinished = true) {\n    if (instance.destroyed)\n        throw new Error('Hash instance has been destroyed');\n    if (checkFinished && instance.finished)\n        throw new Error('Hash#digest() has already been called');\n}\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out, instance) {\n    abytes(out);\n    const min = instance.outputLen;\n    if (out.length < min) {\n        throw new Error('digestInto() expects output buffer of length at least ' + min);\n    }\n}\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr) {\n    return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr) {\n    return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays) {\n    for (let i = 0; i < arrays.length; i++) {\n        arrays[i].fill(0);\n    }\n}\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr) {\n    return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word, shift) {\n    return (word << (32 - shift)) | (word >>> shift);\n}\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word, shift) {\n    return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n/** The byte swap operation for uint32 */\nexport function byteSwap(word) {\n    return (((word << 24) & 0xff000000) |\n        ((word << 8) & 0xff0000) |\n        ((word >>> 8) & 0xff00) |\n        ((word >>> 24) & 0xff));\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE = isLE\n    ? (n) => n\n    : (n) => byteSwap(n);\n/** @deprecated */\nexport const byteSwapIfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr) {\n    for (let i = 0; i < arr.length; i++) {\n        arr[i] = byteSwap(arr[i]);\n    }\n    return arr;\n}\nexport const swap32IfBE = isLE\n    ? (u) => u\n    : byteSwap32;\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin = /* @__PURE__ */ (() => \n// @ts-ignore\ntypeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, '0'));\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes) {\n    abytes(bytes);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return bytes.toHex();\n    // pre-caching improves the speed 6x\n    let hex = '';\n    for (let i = 0; i < bytes.length; i++) {\n        hex += hexes[bytes[i]];\n    }\n    return hex;\n}\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 };\nfunction asciiToBase16(ch) {\n    if (ch >= asciis._0 && ch <= asciis._9)\n        return ch - asciis._0; // '2' => 50-48\n    if (ch >= asciis.A && ch <= asciis.F)\n        return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n    if (ch >= asciis.a && ch <= asciis.f)\n        return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n    return;\n}\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex) {\n    if (typeof hex !== 'string')\n        throw new Error('hex string expected, got ' + typeof hex);\n    // @ts-ignore\n    if (hasHexBuiltin)\n        return Uint8Array.fromHex(hex);\n    const hl = hex.length;\n    const al = hl / 2;\n    if (hl % 2)\n        throw new Error('hex string expected, got unpadded hex of length ' + hl);\n    const array = new Uint8Array(al);\n    for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n        const n1 = asciiToBase16(hex.charCodeAt(hi));\n        const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n        if (n1 === undefined || n2 === undefined) {\n            const char = hex[hi] + hex[hi + 1];\n            throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n        }\n        array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n    }\n    return array;\n}\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async () => { };\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(iters, tick, cb) {\n    let ts = Date.now();\n    for (let i = 0; i < iters; i++) {\n        cb(i);\n        // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n        const diff = Date.now() - ts;\n        if (diff >= 0 && diff < tick)\n            continue;\n        await nextTick();\n        ts += diff;\n    }\n}\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str) {\n    if (typeof str !== 'string')\n        throw new Error('string expected');\n    return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes) {\n    return new TextDecoder().decode(bytes);\n}\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data) {\n    if (typeof data === 'string')\n        data = utf8ToBytes(data);\n    abytes(data);\n    return data;\n}\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays) {\n    let sum = 0;\n    for (let i = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        abytes(a);\n        sum += a.length;\n    }\n    const res = new Uint8Array(sum);\n    for (let i = 0, pad = 0; i < arrays.length; i++) {\n        const a = arrays[i];\n        res.set(a, pad);\n        pad += a.length;\n    }\n    return res;\n}\nexport function checkOpts(defaults, opts) {\n    if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n        throw new Error('options should be object or undefined');\n    const merged = Object.assign(defaults, opts);\n    return merged;\n}\n/** For runtime check if class implements interface */\nexport class Hash {\n}\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher(hashCons) {\n    const hashC = (msg) => hashCons().update(toBytes(msg)).digest();\n    const tmp = hashCons();\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = () => hashCons();\n    return hashC;\n}\nexport function createOptHasher(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexport function createXOFer(hashCons) {\n    const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n    const tmp = hashCons({});\n    hashC.outputLen = tmp.outputLen;\n    hashC.blockLen = tmp.blockLen;\n    hashC.create = (opts) => hashCons(opts);\n    return hashC;\n}\nexport const wrapConstructor = createHasher;\nexport const wrapConstructorWithOpts = createOptHasher;\nexport const wrapXOFConstructorWithOpts = createXOFer;\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32) {\n    if (crypto && typeof crypto.getRandomValues === 'function') {\n        return crypto.getRandomValues(new Uint8Array(bytesLength));\n    }\n    // Legacy Node.js compatibility\n    if (crypto && typeof crypto.randomBytes === 'function') {\n        return Uint8Array.from(crypto.randomBytes(bytesLength));\n    }\n    throw new Error('crypto.getRandomValues must be defined');\n}\n//# sourceMappingURL=utils.js.map","/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { Hash, abytes, aexists, aoutput, clean, createView, toBytes } from \"./utils.js\";\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(view, byteOffset, value, isLE) {\n    if (typeof view.setBigUint64 === 'function')\n        return view.setBigUint64(byteOffset, value, isLE);\n    const _32n = BigInt(32);\n    const _u32_max = BigInt(0xffffffff);\n    const wh = Number((value >> _32n) & _u32_max);\n    const wl = Number(value & _u32_max);\n    const h = isLE ? 4 : 0;\n    const l = isLE ? 0 : 4;\n    view.setUint32(byteOffset + h, wh, isLE);\n    view.setUint32(byteOffset + l, wl, isLE);\n}\n/** Choice: a ? b : c */\nexport function Chi(a, b, c) {\n    return (a & b) ^ (~a & c);\n}\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a, b, c) {\n    return (a & b) ^ (a & c) ^ (b & c);\n}\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport class HashMD extends Hash {\n    constructor(blockLen, outputLen, padOffset, isLE) {\n        super();\n        this.finished = false;\n        this.length = 0;\n        this.pos = 0;\n        this.destroyed = false;\n        this.blockLen = blockLen;\n        this.outputLen = outputLen;\n        this.padOffset = padOffset;\n        this.isLE = isLE;\n        this.buffer = new Uint8Array(blockLen);\n        this.view = createView(this.buffer);\n    }\n    update(data) {\n        aexists(this);\n        data = toBytes(data);\n        abytes(data);\n        const { view, buffer, blockLen } = this;\n        const len = data.length;\n        for (let pos = 0; pos < len;) {\n            const take = Math.min(blockLen - this.pos, len - pos);\n            // Fast path: we have at least one block in input, cast it to view and process\n            if (take === blockLen) {\n                const dataView = createView(data);\n                for (; blockLen <= len - pos; pos += blockLen)\n                    this.process(dataView, pos);\n                continue;\n            }\n            buffer.set(data.subarray(pos, pos + take), this.pos);\n            this.pos += take;\n            pos += take;\n            if (this.pos === blockLen) {\n                this.process(view, 0);\n                this.pos = 0;\n            }\n        }\n        this.length += data.length;\n        this.roundClean();\n        return this;\n    }\n    digestInto(out) {\n        aexists(this);\n        aoutput(out, this);\n        this.finished = true;\n        // Padding\n        // We can avoid allocation of buffer for padding completely if it\n        // was previously not allocated here. But it won't change performance.\n        const { buffer, view, blockLen, isLE } = this;\n        let { pos } = this;\n        // append the bit '1' to the message\n        buffer[pos++] = 0b10000000;\n        clean(this.buffer.subarray(pos));\n        // we have less than padOffset left in buffer, so we cannot put length in\n        // current block, need process it and pad again\n        if (this.padOffset > blockLen - pos) {\n            this.process(view, 0);\n            pos = 0;\n        }\n        // Pad until full block byte with zeros\n        for (let i = pos; i < blockLen; i++)\n            buffer[i] = 0;\n        // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n        // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n        // So we just write lowest 64 bits of that value.\n        setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n        this.process(view, 0);\n        const oview = createView(out);\n        const len = this.outputLen;\n        // NOTE: we do division by 4 later, which should be fused in single op with modulo by JIT\n        if (len % 4)\n            throw new Error('_sha2: outputLen should be aligned to 32bit');\n        const outLen = len / 4;\n        const state = this.get();\n        if (outLen > state.length)\n            throw new Error('_sha2: outputLen bigger than state');\n        for (let i = 0; i < outLen; i++)\n            oview.setUint32(4 * i, state[i], isLE);\n    }\n    digest() {\n        const { buffer, outputLen } = this;\n        this.digestInto(buffer);\n        const res = buffer.slice(0, outputLen);\n        this.destroy();\n        return res;\n    }\n    _cloneInto(to) {\n        to || (to = new this.constructor());\n        to.set(...this.get());\n        const { blockLen, buffer, length, finished, destroyed, pos } = this;\n        to.destroyed = destroyed;\n        to.finished = finished;\n        to.length = length;\n        to.pos = pos;\n        if (length % blockLen)\n            to.buffer.set(buffer);\n        return to;\n    }\n    clone() {\n        return this._cloneInto();\n    }\n}\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV = /* @__PURE__ */ Uint32Array.from([\n    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV = /* @__PURE__ */ Uint32Array.from([\n    0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV = /* @__PURE__ */ Uint32Array.from([\n    0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n    0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV = /* @__PURE__ */ Uint32Array.from([\n    0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n    0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n//# sourceMappingURL=_md.js.map","/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\nfunction fromBig(n, le = false) {\n    if (le)\n        return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n    return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nfunction split(lst, le = false) {\n    const len = lst.length;\n    let Ah = new Uint32Array(len);\n    let Al = new Uint32Array(len);\n    for (let i = 0; i < len; i++) {\n        const { h, l } = fromBig(lst[i], le);\n        [Ah[i], Al[i]] = [h, l];\n    }\n    return [Ah, Al];\n}\nconst toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, _l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h, l) => l;\nconst rotr32L = (h, _l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(Ah, Al, Bh, Bl) {\n    const l = (Al >>> 0) + (Bl >>> 0);\n    return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nexport { add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig };\n// prettier-ignore\nconst u64 = {\n    fromBig, split, toBig,\n    shrSH, shrSL,\n    rotrSH, rotrSL, rotrBH, rotrBL,\n    rotr32H, rotr32L,\n    rotlSH, rotlSL, rotlBH, rotlBL,\n    add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n//# sourceMappingURL=_u64.js.map","/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from \"./_md.js\";\nimport * as u64 from \"./_u64.js\";\nimport { clean, createHasher, rotr } from \"./utils.js\";\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n    0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n    0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n    0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n    0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n    0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n    constructor(outputLen = 32) {\n        super(64, outputLen, 8, false);\n        // We cannot use array here since array allows indexing by variable\n        // which means optimizer/compiler cannot use registers.\n        this.A = SHA256_IV[0] | 0;\n        this.B = SHA256_IV[1] | 0;\n        this.C = SHA256_IV[2] | 0;\n        this.D = SHA256_IV[3] | 0;\n        this.E = SHA256_IV[4] | 0;\n        this.F = SHA256_IV[5] | 0;\n        this.G = SHA256_IV[6] | 0;\n        this.H = SHA256_IV[7] | 0;\n    }\n    get() {\n        const { A, B, C, D, E, F, G, H } = this;\n        return [A, B, C, D, E, F, G, H];\n    }\n    // prettier-ignore\n    set(A, B, C, D, E, F, G, H) {\n        this.A = A | 0;\n        this.B = B | 0;\n        this.C = C | 0;\n        this.D = D | 0;\n        this.E = E | 0;\n        this.F = F | 0;\n        this.G = G | 0;\n        this.H = H | 0;\n    }\n    process(view, offset) {\n        // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n        for (let i = 0; i < 16; i++, offset += 4)\n            SHA256_W[i] = view.getUint32(offset, false);\n        for (let i = 16; i < 64; i++) {\n            const W15 = SHA256_W[i - 15];\n            const W2 = SHA256_W[i - 2];\n            const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n            const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n            SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n        }\n        // Compression function main loop, 64 rounds\n        let { A, B, C, D, E, F, G, H } = this;\n        for (let i = 0; i < 64; i++) {\n            const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n            const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n            const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n            const T2 = (sigma0 + Maj(A, B, C)) | 0;\n            H = G;\n            G = F;\n            F = E;\n            E = (D + T1) | 0;\n            D = C;\n            C = B;\n            B = A;\n            A = (T1 + T2) | 0;\n        }\n        // Add the compressed chunk to the current hash value\n        A = (A + this.A) | 0;\n        B = (B + this.B) | 0;\n        C = (C + this.C) | 0;\n        D = (D + this.D) | 0;\n        E = (E + this.E) | 0;\n        F = (F + this.F) | 0;\n        G = (G + this.G) | 0;\n        H = (H + this.H) | 0;\n        this.set(A, B, C, D, E, F, G, H);\n    }\n    roundClean() {\n        clean(SHA256_W);\n    }\n    destroy() {\n        this.set(0, 0, 0, 0, 0, 0, 0, 0);\n        clean(this.buffer);\n    }\n}\nexport class SHA224 extends SHA256 {\n    constructor() {\n        super(28);\n        this.A = SHA224_IV[0] | 0;\n        this.B = SHA224_IV[1] | 0;\n        this.C = SHA224_IV[2] | 0;\n        this.D = SHA224_IV[3] | 0;\n        this.E = SHA224_IV[4] | 0;\n        this.F = SHA224_IV[5] | 0;\n        this.G = SHA224_IV[6] | 0;\n        this.H = SHA224_IV[7] | 0;\n    }\n}\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n    '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n    '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n    '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n    '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n    '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n    '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n    '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n    '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n    '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n    '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n    '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n    '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n    '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n    '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n    '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n    '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n    '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n    '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n    '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n    '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\nexport class SHA512 extends HashMD {\n    constructor(outputLen = 64) {\n        super(128, outputLen, 16, false);\n        // We cannot use array here since array allows indexing by variable\n        // which means optimizer/compiler cannot use registers.\n        // h -- high 32 bits, l -- low 32 bits\n        this.Ah = SHA512_IV[0] | 0;\n        this.Al = SHA512_IV[1] | 0;\n        this.Bh = SHA512_IV[2] | 0;\n        this.Bl = SHA512_IV[3] | 0;\n        this.Ch = SHA512_IV[4] | 0;\n        this.Cl = SHA512_IV[5] | 0;\n        this.Dh = SHA512_IV[6] | 0;\n        this.Dl = SHA512_IV[7] | 0;\n        this.Eh = SHA512_IV[8] | 0;\n        this.El = SHA512_IV[9] | 0;\n        this.Fh = SHA512_IV[10] | 0;\n        this.Fl = SHA512_IV[11] | 0;\n        this.Gh = SHA512_IV[12] | 0;\n        this.Gl = SHA512_IV[13] | 0;\n        this.Hh = SHA512_IV[14] | 0;\n        this.Hl = SHA512_IV[15] | 0;\n    }\n    // prettier-ignore\n    get() {\n        const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n    }\n    // prettier-ignore\n    set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n        this.Ah = Ah | 0;\n        this.Al = Al | 0;\n        this.Bh = Bh | 0;\n        this.Bl = Bl | 0;\n        this.Ch = Ch | 0;\n        this.Cl = Cl | 0;\n        this.Dh = Dh | 0;\n        this.Dl = Dl | 0;\n        this.Eh = Eh | 0;\n        this.El = El | 0;\n        this.Fh = Fh | 0;\n        this.Fl = Fl | 0;\n        this.Gh = Gh | 0;\n        this.Gl = Gl | 0;\n        this.Hh = Hh | 0;\n        this.Hl = Hl | 0;\n    }\n    process(view, offset) {\n        // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n        for (let i = 0; i < 16; i++, offset += 4) {\n            SHA512_W_H[i] = view.getUint32(offset);\n            SHA512_W_L[i] = view.getUint32((offset += 4));\n        }\n        for (let i = 16; i < 80; i++) {\n            // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n            const W15h = SHA512_W_H[i - 15] | 0;\n            const W15l = SHA512_W_L[i - 15] | 0;\n            const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n            const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n            // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n            const W2h = SHA512_W_H[i - 2] | 0;\n            const W2l = SHA512_W_L[i - 2] | 0;\n            const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n            const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n            // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n            const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n            const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n            SHA512_W_H[i] = SUMh | 0;\n            SHA512_W_L[i] = SUMl | 0;\n        }\n        let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n        // Compression function main loop, 80 rounds\n        for (let i = 0; i < 80; i++) {\n            // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n            const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n            const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n            //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n            const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n            const CHIl = (El & Fl) ^ (~El & Gl);\n            // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n            // prettier-ignore\n            const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n            const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n            const T1l = T1ll | 0;\n            // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n            const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n            const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n            const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n            const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n            Hh = Gh | 0;\n            Hl = Gl | 0;\n            Gh = Fh | 0;\n            Gl = Fl | 0;\n            Fh = Eh | 0;\n            Fl = El | 0;\n            ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n            Dh = Ch | 0;\n            Dl = Cl | 0;\n            Ch = Bh | 0;\n            Cl = Bl | 0;\n            Bh = Ah | 0;\n            Bl = Al | 0;\n            const All = u64.add3L(T1l, sigma0l, MAJl);\n            Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n            Al = All | 0;\n        }\n        // Add the compressed chunk to the current hash value\n        ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n        ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n        ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n        ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n        ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n        ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n        ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n        ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n        this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n    }\n    roundClean() {\n        clean(SHA512_W_H, SHA512_W_L);\n    }\n    destroy() {\n        clean(this.buffer);\n        this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    }\n}\nexport class SHA384 extends SHA512 {\n    constructor() {\n        super(48);\n        this.Ah = SHA384_IV[0] | 0;\n        this.Al = SHA384_IV[1] | 0;\n        this.Bh = SHA384_IV[2] | 0;\n        this.Bl = SHA384_IV[3] | 0;\n        this.Ch = SHA384_IV[4] | 0;\n        this.Cl = SHA384_IV[5] | 0;\n        this.Dh = SHA384_IV[6] | 0;\n        this.Dl = SHA384_IV[7] | 0;\n        this.Eh = SHA384_IV[8] | 0;\n        this.El = SHA384_IV[9] | 0;\n        this.Fh = SHA384_IV[10] | 0;\n        this.Fl = SHA384_IV[11] | 0;\n        this.Gh = SHA384_IV[12] | 0;\n        this.Gl = SHA384_IV[13] | 0;\n        this.Hh = SHA384_IV[14] | 0;\n        this.Hl = SHA384_IV[15] | 0;\n    }\n}\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n    0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n    0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n    0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n    0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\nexport class SHA512_224 extends SHA512 {\n    constructor() {\n        super(28);\n        this.Ah = T224_IV[0] | 0;\n        this.Al = T224_IV[1] | 0;\n        this.Bh = T224_IV[2] | 0;\n        this.Bl = T224_IV[3] | 0;\n        this.Ch = T224_IV[4] | 0;\n        this.Cl = T224_IV[5] | 0;\n        this.Dh = T224_IV[6] | 0;\n        this.Dl = T224_IV[7] | 0;\n        this.Eh = T224_IV[8] | 0;\n        this.El = T224_IV[9] | 0;\n        this.Fh = T224_IV[10] | 0;\n        this.Fl = T224_IV[11] | 0;\n        this.Gh = T224_IV[12] | 0;\n        this.Gl = T224_IV[13] | 0;\n        this.Hh = T224_IV[14] | 0;\n        this.Hl = T224_IV[15] | 0;\n    }\n}\nexport class SHA512_256 extends SHA512 {\n    constructor() {\n        super(32);\n        this.Ah = T256_IV[0] | 0;\n        this.Al = T256_IV[1] | 0;\n        this.Bh = T256_IV[2] | 0;\n        this.Bl = T256_IV[3] | 0;\n        this.Ch = T256_IV[4] | 0;\n        this.Cl = T256_IV[5] | 0;\n        this.Dh = T256_IV[6] | 0;\n        this.Dl = T256_IV[7] | 0;\n        this.Eh = T256_IV[8] | 0;\n        this.El = T256_IV[9] | 0;\n        this.Fh = T256_IV[10] | 0;\n        this.Fl = T256_IV[11] | 0;\n        this.Gh = T256_IV[12] | 0;\n        this.Gl = T256_IV[13] | 0;\n        this.Hh = T256_IV[14] | 0;\n        this.Hl = T256_IV[15] | 0;\n    }\n}\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexport const sha256 = /* @__PURE__ */ createHasher(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224 = /* @__PURE__ */ createHasher(() => new SHA224());\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512 = /* @__PURE__ */ createHasher(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384 = /* @__PURE__ */ createHasher(() => new SHA384());\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256 = /* @__PURE__ */ createHasher(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224 = /* @__PURE__ */ createHasher(() => new SHA512_224());\n//# sourceMappingURL=sha2.js.map","/**\n * SHA2-512 a.k.a. sha512 and sha384. It is slower than sha256 in js because u64 operations are slow.\n *\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [the paper on truncated SHA512/256](https://eprint.iacr.org/2010/548.pdf).\n * @module\n * @deprecated\n */\nimport { SHA384 as SHA384n, sha384 as sha384n, sha512_224 as sha512_224n, SHA512_224 as SHA512_224n, sha512_256 as sha512_256n, SHA512_256 as SHA512_256n, SHA512 as SHA512n, sha512 as sha512n, } from \"./sha2.js\";\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA512 = SHA512n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha512 = sha512n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA384 = SHA384n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha384 = sha384n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA512_224 = SHA512_224n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha512_224 = sha512_224n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA512_256 = SHA512_256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha512_256 = sha512_256n;\n//# sourceMappingURL=sha512.js.map","// Pure-JS synchronous digests for the crypto polyfill (Web Crypto has no sync API).\r\n\r\nimport { sha384 as nobleSha384, sha512 as nobleSha512 } from \"@noble/hashes/sha512\";\r\n\r\nfunction rotr(x: number, n: number): number {\r\n  return (x >>> n) | (x << (32 - n));\r\n}\r\n\r\nfunction rotl(x: number, n: number): number {\r\n  return (x << n) | (x >>> (32 - n));\r\n}\r\n\r\nfunction sha256(data: Uint8Array): Uint8Array {\r\n  const K = new Uint32Array([\r\n    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\r\n    0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\r\n    0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\r\n    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\r\n    0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\r\n    0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\r\n    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\r\n    0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\r\n  ]);\r\n  let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a;\r\n  let h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\r\n\r\n  const bitLen = data.length * 8;\r\n  const padLen = ((56 - ((data.length + 1) % 64)) + 64) % 64;\r\n  const padded = new Uint8Array(data.length + 1 + padLen + 8);\r\n  padded.set(data);\r\n  padded[data.length] = 0x80;\r\n  const view = new DataView(padded.buffer);\r\n  view.setUint32(padded.length - 4, bitLen >>> 0, false);\r\n  view.setUint32(padded.length - 8, Math.floor(bitLen / 0x100000000), false);\r\n\r\n  const w = new Uint32Array(64);\r\n  for (let off = 0; off < padded.length; off += 64) {\r\n    for (let i = 0; i < 16; i++) w[i] = view.getUint32(off + i * 4, false);\r\n    for (let i = 16; i < 64; i++) {\r\n      const s0 = rotr(w[i - 15], 7) ^ rotr(w[i - 15], 18) ^ (w[i - 15] >>> 3);\r\n      const s1 = rotr(w[i - 2], 17) ^ rotr(w[i - 2], 19) ^ (w[i - 2] >>> 10);\r\n      w[i] = (w[i - 16] + s0 + w[i - 7] + s1) >>> 0;\r\n    }\r\n    let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, hh = h7;\r\n    for (let i = 0; i < 64; i++) {\r\n      const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25);\r\n      const ch = (e & f) ^ (~e & g);\r\n      const t1 = (hh + S1 + ch + K[i] + w[i]) >>> 0;\r\n      const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22);\r\n      const maj = (a & b) ^ (a & c) ^ (b & c);\r\n      const t2 = (S0 + maj) >>> 0;\r\n      hh = g; g = f; f = e; e = (d + t1) >>> 0;\r\n      d = c; c = b; b = a; a = (t1 + t2) >>> 0;\r\n    }\r\n    h0 = (h0 + a) >>> 0; h1 = (h1 + b) >>> 0; h2 = (h2 + c) >>> 0; h3 = (h3 + d) >>> 0;\r\n    h4 = (h4 + e) >>> 0; h5 = (h5 + f) >>> 0; h6 = (h6 + g) >>> 0; h7 = (h7 + hh) >>> 0;\r\n  }\r\n  const out = new Uint8Array(32);\r\n  const ov = new DataView(out.buffer);\r\n  ov.setUint32(0, h0, false); ov.setUint32(4, h1, false);\r\n  ov.setUint32(8, h2, false); ov.setUint32(12, h3, false);\r\n  ov.setUint32(16, h4, false); ov.setUint32(20, h5, false);\r\n  ov.setUint32(24, h6, false); ov.setUint32(28, h7, false);\r\n  return out;\r\n}\r\n\r\nfunction sha1(data: Uint8Array): Uint8Array {\r\n  let h0 = 0x67452301, h1 = 0xefcdab89, h2 = 0x98badcfe, h3 = 0x10325476, h4 = 0xc3d2e1f0;\r\n  const bitLen = data.length * 8;\r\n  const padLen = ((56 - ((data.length + 1) % 64)) + 64) % 64;\r\n  const padded = new Uint8Array(data.length + 1 + padLen + 8);\r\n  padded.set(data);\r\n  padded[data.length] = 0x80;\r\n  const view = new DataView(padded.buffer);\r\n  view.setUint32(padded.length - 4, bitLen >>> 0, false);\r\n  view.setUint32(padded.length - 8, Math.floor(bitLen / 0x100000000), false);\r\n\r\n  const w = new Uint32Array(80);\r\n  for (let off = 0; off < padded.length; off += 64) {\r\n    for (let i = 0; i < 16; i++) w[i] = view.getUint32(off + i * 4, false);\r\n    for (let i = 16; i < 80; i++) {\r\n      w[i] = rotl(w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16], 1);\r\n    }\r\n    let a = h0, b = h1, c = h2, d = h3, e = h4;\r\n    for (let i = 0; i < 80; i++) {\r\n      let f: number, k: number;\r\n      if (i < 20) { f = (b & c) | (~b & d); k = 0x5a827999; }\r\n      else if (i < 40) { f = b ^ c ^ d; k = 0x6ed9eba1; }\r\n      else if (i < 60) { f = (b & c) | (b & d) | (c & d); k = 0x8f1bbcdc; }\r\n      else { f = b ^ c ^ d; k = 0xca62c1d6; }\r\n      const temp = (rotl(a, 5) + f + e + k + w[i]) >>> 0;\r\n      e = d; d = c; c = rotl(b, 30); b = a; a = temp;\r\n    }\r\n    h0 = (h0 + a) >>> 0; h1 = (h1 + b) >>> 0; h2 = (h2 + c) >>> 0;\r\n    h3 = (h3 + d) >>> 0; h4 = (h4 + e) >>> 0;\r\n  }\r\n  const out = new Uint8Array(20);\r\n  const ov = new DataView(out.buffer);\r\n  ov.setUint32(0, h0, false); ov.setUint32(4, h1, false);\r\n  ov.setUint32(8, h2, false); ov.setUint32(12, h3, false);\r\n  ov.setUint32(16, h4, false);\r\n  return out;\r\n}\r\n\r\nfunction md5(data: Uint8Array): Uint8Array {\r\n  const S = [\r\n    7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,\r\n    5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,\r\n    4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,\r\n    6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21,\r\n  ];\r\n  const K = new Uint32Array(64);\r\n  for (let i = 0; i < 64; i++) K[i] = Math.floor(Math.abs(Math.sin(i + 1)) * 0x100000000) >>> 0;\r\n\r\n  let a0 = 0x67452301, b0 = 0xefcdab89, c0 = 0x98badcfe, d0 = 0x10325476;\r\n  const bitLen = data.length * 8;\r\n  const padLen = ((56 - ((data.length + 1) % 64)) + 64) % 64;\r\n  const padded = new Uint8Array(data.length + 1 + padLen + 8);\r\n  padded.set(data);\r\n  padded[data.length] = 0x80;\r\n  const view = new DataView(padded.buffer);\r\n  view.setUint32(padded.length - 8, bitLen >>> 0, true);\r\n  view.setUint32(padded.length - 4, Math.floor(bitLen / 0x100000000), true);\r\n\r\n  for (let off = 0; off < padded.length; off += 64) {\r\n    const M = new Uint32Array(16);\r\n    for (let i = 0; i < 16; i++) M[i] = view.getUint32(off + i * 4, true);\r\n    let A = a0, B = b0, C = c0, D = d0;\r\n    for (let i = 0; i < 64; i++) {\r\n      let f: number, g: number;\r\n      if (i < 16) { f = (B & C) | (~B & D); g = i; }\r\n      else if (i < 32) { f = (D & B) | (~D & C); g = (5 * i + 1) % 16; }\r\n      else if (i < 48) { f = B ^ C ^ D; g = (3 * i + 5) % 16; }\r\n      else { f = C ^ (B | ~D); g = (7 * i) % 16; }\r\n      f = (f + A + K[i] + M[g]) >>> 0;\r\n      A = D; D = C; C = B;\r\n      B = (B + ((f << S[i]) | (f >>> (32 - S[i])))) >>> 0;\r\n    }\r\n    a0 = (a0 + A) >>> 0; b0 = (b0 + B) >>> 0;\r\n    c0 = (c0 + C) >>> 0; d0 = (d0 + D) >>> 0;\r\n  }\r\n  const out = new Uint8Array(16);\r\n  const ov = new DataView(out.buffer);\r\n  ov.setUint32(0, a0, true); ov.setUint32(4, b0, true);\r\n  ov.setUint32(8, c0, true); ov.setUint32(12, d0, true);\r\n  return out;\r\n}\r\n\r\nfunction sha512(data: Uint8Array, truncate384: boolean): Uint8Array {\r\n  return truncate384 ? nobleSha384(data) : nobleSha512(data);\r\n}\r\n\r\nfunction concatBytes(a: Uint8Array, b: Uint8Array): Uint8Array {\r\n  const out = new Uint8Array(a.length + b.length);\r\n  out.set(a, 0);\r\n  out.set(b, a.length);\r\n  return out;\r\n}\r\n\r\nexport function digestSync(alg: string, data: Uint8Array): Uint8Array {\r\n  switch (alg) {\r\n    case \"SHA-1\": return sha1(data);\r\n    case \"SHA-256\": return sha256(data);\r\n    case \"SHA-384\": return sha512(data, true);\r\n    case \"SHA-512\": return sha512(data, false);\r\n    case \"MD5\": return md5(data);\r\n    default:\r\n      throw new Error(`crypto: synchronous digest for \"${alg}\" is not supported in the browser polyfill`);\r\n  }\r\n}\r\n\r\nexport function hmacSync(alg: string, key: Uint8Array, data: Uint8Array): Uint8Array {\r\n  const blockSize = alg === \"SHA-384\" || alg === \"SHA-512\" ? 128 : 64;\r\n  let k = key.length > blockSize ? digestSync(alg, key) : key;\r\n  const keyPad = new Uint8Array(blockSize);\r\n  keyPad.set(k);\r\n  const ipad = new Uint8Array(blockSize);\r\n  const opad = new Uint8Array(blockSize);\r\n  for (let i = 0; i < blockSize; i++) {\r\n    ipad[i] = keyPad[i] ^ 0x36;\r\n    opad[i] = keyPad[i] ^ 0x5c;\r\n  }\r\n  const inner = digestSync(alg, concatBytes(ipad, data));\r\n  return digestSync(alg, concatBytes(opad, inner));\r\n}\r\n","// Crypto polyfill using Web Crypto API with synchronous fallbacks\r\n\r\nimport { Buffer } from \"./buffer\";\r\nimport { EventEmitter } from \"./events\";\r\nimport { digestSync, hmacSync } from \"./sync-digest\";\r\n\r\nfunction normalizeAlg(name: string): string {\r\n  const upper = name.toUpperCase().replace(/[^A-Z0-9]/g, \"\");\r\n  switch (upper) {\r\n    case \"SHA1\":\r\n      return \"SHA-1\";\r\n    case \"SHA256\":\r\n      return \"SHA-256\";\r\n    case \"SHA384\":\r\n      return \"SHA-384\";\r\n    case \"SHA512\":\r\n      return \"SHA-512\";\r\n    case \"MD5\":\r\n      return \"MD5\";\r\n    default:\r\n      return name;\r\n  }\r\n}\r\n\r\nfunction hashOutputSize(alg: string): number {\r\n  if (alg.includes(\"512\")) return 64;\r\n  if (alg.includes(\"384\")) return 48;\r\n  if (alg.includes(\"1\") || alg === \"SHA-1\") return 20;\r\n  return 32;\r\n}\r\n\r\nfunction joinChunks(parts: Uint8Array[]): Uint8Array {\r\n  let total = 0;\r\n  for (const p of parts) total += p.length;\r\n  const result = new Uint8Array(total);\r\n  let pos = 0;\r\n  for (const p of parts) {\r\n    result.set(p, pos);\r\n    pos += p.length;\r\n  }\r\n  return result;\r\n}\r\n\r\nfunction formatOutput(raw: Uint8Array, enc?: string): string | Buffer {\r\n  if (enc === \"hex\") {\r\n    return Array.from(raw)\r\n      .map((b) => b.toString(16).padStart(2, \"0\"))\r\n      .join(\"\");\r\n  }\r\n  if (enc === \"base64\") {\r\n    return btoa(String.fromCharCode(...raw));\r\n  }\r\n  return Buffer.from(raw);\r\n}\r\n\r\nexport function randomBytes(count: number): Buffer {\r\n  const arr = new Uint8Array(count);\r\n  crypto.getRandomValues(arr);\r\n  return Buffer.from(arr);\r\n}\r\n\r\nexport function randomFillSync(\r\n  target: Uint8Array | Buffer,\r\n  start?: number,\r\n  size?: number,\r\n): Uint8Array | Buffer {\r\n  const off = start || 0;\r\n  const len = size !== undefined ? size : target.length - off;\r\n  const view = new Uint8Array(target.buffer, target.byteOffset + off, len);\r\n  crypto.getRandomValues(view);\r\n  return target;\r\n}\r\n\r\nexport function randomUUID(): string {\r\n  return crypto.randomUUID();\r\n}\r\n\r\nexport function randomInt(lo: number, hi?: number): number {\r\n  if (hi === undefined) {\r\n    hi = lo;\r\n    lo = 0;\r\n  }\r\n  const span = hi - lo;\r\n  const buf = new Uint32Array(1);\r\n  crypto.getRandomValues(buf);\r\n  return lo + (buf[0] % span);\r\n}\r\n\r\nexport function getRandomValues<T extends ArrayBufferView>(arr: T): T {\r\n  return crypto.getRandomValues(arr);\r\n}\r\n\r\nexport interface Hash {\r\n  update(input: string | Buffer | Uint8Array, enc?: string): Hash;\r\n  digestAsync(enc?: string): Promise<string | Buffer>;\r\n  digest(enc?: string): string | Buffer;\r\n}\r\ninterface HashConstructor {\r\n  new (alg: string): Hash;\r\n  (this: any, alg: string): void;\r\n  prototype: any;\r\n}\r\nexport const Hash = function Hash(this: any, alg: string) {\r\n  if (!this) return;\r\n  this._alg = normalizeAlg(alg);\r\n  this._parts = [];\r\n} as unknown as HashConstructor;\r\n\r\nHash.prototype.update = function update(input: string | Buffer | Uint8Array, enc?: string): any {\r\n  if (input == null) {\r\n    throw new TypeError('The \"data\" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received ' + String(input));\r\n  }\r\n  let chunk: Buffer;\r\n  if (typeof input === \"string\") {\r\n    chunk = enc === \"base64\" ? Buffer.from(atob(input)) : Buffer.from(input);\r\n  } else {\r\n    chunk = Buffer.from(input);\r\n  }\r\n  this._parts.push(chunk);\r\n  return this;\r\n};\r\n\r\nHash.prototype.digestAsync = async function digestAsync(enc?: string): Promise<string | Buffer> {\r\n  const merged = joinChunks(this._parts);\r\n  const ab = new Uint8Array(merged).buffer as ArrayBuffer;\r\n  const hashed = await crypto.subtle.digest(this._alg, ab);\r\n  return formatOutput(new Uint8Array(hashed), enc);\r\n};\r\n\r\nHash.prototype.digest = function digest(enc?: string): string | Buffer {\r\n  const merged = joinChunks(this._parts);\r\n  const hashed = digestSync(this._alg, new Uint8Array(merged));\r\n  return formatOutput(hashed, enc);\r\n};\r\n\r\nexport function createHash(alg: string): Hash {\r\n  return new Hash(alg);\r\n}\r\n\r\n// one-shot hash (Node.js 20.12+ API)\r\nexport function hash(\r\n  algorithm: string,\r\n  data: string | Buffer | Uint8Array,\r\n  outputEncoding?: string,\r\n): string | Buffer {\r\n  const h = createHash(algorithm);\r\n  h.update(data);\r\n  return h.digest(outputEncoding);\r\n}\r\n\r\nexport interface Hmac {\r\n  update(input: string | Buffer | Uint8Array, enc?: string): Hmac;\r\n  digestAsync(enc?: string): Promise<string | Buffer>;\r\n  digest(enc?: string): string | Buffer;\r\n}\r\ninterface HmacConstructor {\r\n  new (alg: string, secret: string | Buffer): Hmac;\r\n  (this: any, alg: string, secret: string | Buffer): void;\r\n  prototype: any;\r\n}\r\nexport const Hmac = function Hmac(this: any, alg: string, secret: string | Buffer) {\r\n  if (!this) return;\r\n  this._alg = normalizeAlg(alg);\r\n  this._key = typeof secret === \"string\" ? Buffer.from(secret) : secret;\r\n  this._parts = [];\r\n} as unknown as HmacConstructor;\r\n\r\nHmac.prototype.update = function update(input: string | Buffer | Uint8Array, _enc?: string): any {\r\n  if (input == null) {\r\n    throw new TypeError('The \"data\" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received ' + String(input));\r\n  }\r\n  const chunk = typeof input === \"string\" ? Buffer.from(input) : input;\r\n  this._parts.push(chunk);\r\n  return this;\r\n};\r\n\r\nHmac.prototype.digestAsync = async function digestAsync(enc?: string): Promise<string | Buffer> {\r\n  const merged = joinChunks(this._parts);\r\n  const keyBuf = new Uint8Array(this._key).buffer as ArrayBuffer;\r\n  const dataBuf = new Uint8Array(merged).buffer as ArrayBuffer;\r\n  const importedKey = await crypto.subtle.importKey(\r\n    \"raw\",\r\n    keyBuf,\r\n    { name: \"HMAC\", hash: this._alg },\r\n    false,\r\n    [\"sign\"],\r\n  );\r\n  const sig = await crypto.subtle.sign(\"HMAC\", importedKey, dataBuf);\r\n  return formatOutput(new Uint8Array(sig), enc);\r\n};\r\n\r\nHmac.prototype.digest = function digest(enc?: string): string | Buffer {\r\n  const merged = joinChunks(this._parts);\r\n  const keyBytes = new Uint8Array(this._key);\r\n  const result = hmacSync(this._alg, keyBytes, merged);\r\n  return formatOutput(result, enc);\r\n};\r\n\r\nexport function createHmac(alg: string, secret: string | Buffer): Hmac {\r\n  return new Hmac(alg, secret);\r\n}\r\n\r\ntype BinaryInput = string | Buffer | Uint8Array;\r\n\r\nexport function pbkdf2(\r\n  password: BinaryInput,\r\n  salt: BinaryInput,\r\n  rounds: number,\r\n  keyLen: number,\r\n  hashName: string,\r\n  cb: (err: Error | null, key: Buffer) => void,\r\n): void {\r\n  pbkdf2Async(password, salt, rounds, keyLen, hashName)\r\n    .then((k) => cb(null, k))\r\n    .catch((e) => cb(e, Buffer.alloc(0)));\r\n}\r\n\r\nasync function pbkdf2Async(\r\n  password: BinaryInput,\r\n  salt: BinaryInput,\r\n  rounds: number,\r\n  keyLen: number,\r\n  hashName: string,\r\n): Promise<Buffer> {\r\n  const pwBuf = typeof password === \"string\" ? Buffer.from(password) : password;\r\n  const saltBuf = typeof salt === \"string\" ? Buffer.from(salt) : salt;\r\n  const pwAb = new Uint8Array(pwBuf).buffer as ArrayBuffer;\r\n  const saltAb = new Uint8Array(saltBuf).buffer as ArrayBuffer;\r\n\r\n  const baseKey = await crypto.subtle.importKey(\"raw\", pwAb, \"PBKDF2\", false, [\r\n    \"deriveBits\",\r\n  ]);\r\n  const bits = await crypto.subtle.deriveBits(\r\n    {\r\n      name: \"PBKDF2\",\r\n      salt: saltAb,\r\n      iterations: rounds,\r\n      hash: normalizeAlg(hashName),\r\n    },\r\n    baseKey,\r\n    keyLen * 8,\r\n  );\r\n  return Buffer.from(bits);\r\n}\r\n\r\nexport function pbkdf2Sync(\r\n  password: BinaryInput,\r\n  salt: BinaryInput,\r\n  rounds: number,\r\n  keyLen: number,\r\n  hashName: string,\r\n): Buffer {\r\n  const pwBuf = typeof password === \"string\" ? Buffer.from(password) : password;\r\n  const saltBuf = typeof salt === \"string\" ? Buffer.from(salt) : salt;\r\n  const alg = normalizeAlg(hashName);\r\n  const blockSize = hashOutputSize(alg);\r\n  const blockCount = Math.ceil(keyLen / blockSize);\r\n  const derived = new Uint8Array(blockCount * blockSize);\r\n\r\n  for (let bIdx = 1; bIdx <= blockCount; bIdx++) {\r\n    const bNumBytes = new Uint8Array(4);\r\n    bNumBytes[0] = (bIdx >>> 24) & 0xff;\r\n    bNumBytes[1] = (bIdx >>> 16) & 0xff;\r\n    bNumBytes[2] = (bIdx >>> 8) & 0xff;\r\n    bNumBytes[3] = bIdx & 0xff;\r\n\r\n    const saltPlusIdx = new Uint8Array(saltBuf.length + 4);\r\n    saltPlusIdx.set(saltBuf);\r\n    saltPlusIdx.set(bNumBytes, saltBuf.length);\r\n\r\n    const pwBytes = new Uint8Array(pwBuf);\r\n    let u = hmacSync(alg, pwBytes, saltPlusIdx);\r\n    const accum = new Uint8Array(u);\r\n\r\n    for (let r = 1; r < rounds; r++) {\r\n      u = hmacSync(alg, pwBytes, u);\r\n      for (let j = 0; j < accum.length; j++) accum[j] ^= u[j];\r\n    }\r\n    derived.set(accum, (bIdx - 1) * blockSize);\r\n  }\r\n\r\n  return Buffer.from(derived.slice(0, keyLen));\r\n}\r\n\r\nexport function scrypt(\r\n  password: BinaryInput,\r\n  salt: BinaryInput,\r\n  keyLen: number,\r\n  _opts: unknown,\r\n  cb: (err: Error | null, key: Buffer) => void,\r\n): void {\r\n  try {\r\n    const result = scryptSync(password, salt, keyLen);\r\n    setTimeout(() => cb(null, result), 0);\r\n  } catch (e) {\r\n    setTimeout(() => cb(e as Error, Buffer.alloc(0)), 0);\r\n  }\r\n}\r\n\r\nexport function scryptSync(\r\n  password: BinaryInput,\r\n  salt: BinaryInput,\r\n  keyLen: number,\r\n  _opts?: unknown,\r\n): Buffer {\r\n  return pbkdf2Sync(password, salt, 16384, keyLen, \"sha256\");\r\n}\r\n\r\ntype KeyMaterial =\r\n  | string\r\n  | Buffer\r\n  | KeyObject\r\n  | { key: string | Buffer; passphrase?: string };\r\n\r\ninterface KeyDetails {\r\n  raw: Uint8Array | CryptoKey;\r\n  alg?: string;\r\n  kind: \"public\" | \"private\" | \"secret\";\r\n  fmt: \"pem\" | \"der\" | \"jwk\" | \"raw\";\r\n}\r\n\r\nfunction extractKey(source: KeyMaterial): KeyDetails {\r\n  if (source instanceof KeyObject) {\r\n    return {\r\n      raw: (source as any)._data,\r\n      alg: (source as any)._alg,\r\n      kind: (source as any)._kind,\r\n      fmt: \"raw\",\r\n    };\r\n  }\r\n  if (typeof source === \"object\" && \"key\" in source) {\r\n    return extractKey(source.key);\r\n  }\r\n\r\n  const text = typeof source === \"string\" ? source : source.toString();\r\n  if (text.includes(\"-----BEGIN\")) {\r\n    const isPriv = text.includes(\"PRIVATE\");\r\n    const isPub = text.includes(\"PUBLIC\");\r\n    const b64 = text\r\n      .replace(/-----BEGIN [^-]+-----/, \"\")\r\n      .replace(/-----END [^-]+-----/, \"\")\r\n      .replace(/\\s/g, \"\");\r\n    const bytes = Buffer.from(atob(b64));\r\n    let alg: string | undefined;\r\n    if (text.includes(\"RSA\")) alg = \"RSA-SHA256\";\r\n    else if (text.includes(\"EC\")) alg = \"ES256\";\r\n    else if (text.includes(\"ED25519\")) alg = \"Ed25519\";\r\n    return {\r\n      raw: bytes,\r\n      alg,\r\n      kind: isPriv ? \"private\" : isPub ? \"public\" : \"secret\",\r\n      fmt: \"pem\",\r\n    };\r\n  }\r\n\r\n  const keyBytes = typeof source === \"string\" ? Buffer.from(source) : source;\r\n  return { raw: keyBytes, kind: \"secret\", fmt: \"raw\" };\r\n}\r\n\r\nfunction syncSign(_alg: string, _data: Uint8Array, _keyInfo: KeyDetails): Buffer {\r\n  throw new Error(\r\n    \"crypto: synchronous sign/verify is not supported in the browser polyfill; use the async Web Crypto path\",\r\n  );\r\n}\r\n\r\nfunction syncVerify(\r\n  _alg: string,\r\n  _data: Uint8Array,\r\n  _keyInfo: KeyDetails,\r\n  _sig: Uint8Array,\r\n): boolean {\r\n  throw new Error(\r\n    \"crypto: synchronous sign/verify is not supported in the browser polyfill; use the async Web Crypto path\",\r\n  );\r\n}\r\n\r\nexport function sign(\r\n  alg: string | null | undefined,\r\n  data: Buffer | Uint8Array,\r\n  key: KeyMaterial,\r\n  cb?: (err: Error | null, sig: Buffer) => void,\r\n): Buffer | void {\r\n  const info = extractKey(key);\r\n  const algorithm = alg || info.alg || \"SHA-256\";\r\n  if (cb) {\r\n    try {\r\n      cb(null, syncSign(algorithm, data, info));\r\n    } catch (e) {\r\n      cb(e as Error, null as unknown as Buffer);\r\n    }\r\n    return;\r\n  }\r\n  return syncSign(algorithm, data, info);\r\n}\r\n\r\nexport function verify(\r\n  alg: string | null | undefined,\r\n  data: Buffer | Uint8Array,\r\n  key: KeyMaterial,\r\n  sig: Buffer | Uint8Array,\r\n  cb?: (err: Error | null, ok: boolean) => void,\r\n): boolean | void {\r\n  const info = extractKey(key);\r\n  const algorithm = alg || info.alg || \"SHA-256\";\r\n  if (cb) {\r\n    try {\r\n      cb(null, syncVerify(algorithm, data, info, sig));\r\n    } catch (e) {\r\n      cb(e as Error, false);\r\n    }\r\n    return;\r\n  }\r\n  return syncVerify(algorithm, data, info, sig);\r\n}\r\n\r\nexport interface SignStream extends EventEmitter {\r\n  update(input: string | Buffer | Uint8Array, enc?: string): SignStream;\r\n  sign(privKey: KeyMaterial, outEnc?: string): Buffer | string;\r\n}\r\ninterface SignStreamConstructor {\r\n  new (alg: string): SignStream;\r\n  (this: any, alg: string): void;\r\n  prototype: any;\r\n}\r\nexport const SignStream = function SignStream(this: any, alg: string) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n  this._alg = alg;\r\n  this._parts = [];\r\n} as unknown as SignStreamConstructor;\r\n\r\nObject.setPrototypeOf(SignStream.prototype, EventEmitter.prototype);\r\n\r\nSignStream.prototype.update = function update(input: string | Buffer | Uint8Array, _enc?: string): any {\r\n  this._parts.push(typeof input === \"string\" ? Buffer.from(input) : input);\r\n  return this;\r\n};\r\n\r\nSignStream.prototype.sign = function sign(privKey: KeyMaterial, outEnc?: string): Buffer | string {\r\n  const merged = joinChunks(this._parts);\r\n  const info = extractKey(privKey);\r\n  const raw = syncSign(this._alg, merged, info);\r\n  if (outEnc === \"base64\") return btoa(String.fromCharCode(...raw));\r\n  if (outEnc === \"hex\")\r\n    return Array.from(raw)\r\n      .map((b: number) => b.toString(16).padStart(2, \"0\"))\r\n      .join(\"\");\r\n  return raw;\r\n};\r\n\r\nexport interface VerifyStream extends EventEmitter {\r\n  update(input: string | Buffer | Uint8Array, enc?: string): VerifyStream;\r\n  verify(pubKey: KeyMaterial, sig: Buffer | string, sigEnc?: string): boolean;\r\n}\r\ninterface VerifyStreamConstructor {\r\n  new (alg: string): VerifyStream;\r\n  (this: any, alg: string): void;\r\n  prototype: any;\r\n}\r\nexport const VerifyStream = function VerifyStream(this: any, alg: string) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n  this._alg = alg;\r\n  this._parts = [];\r\n} as unknown as VerifyStreamConstructor;\r\n\r\nObject.setPrototypeOf(VerifyStream.prototype, EventEmitter.prototype);\r\n\r\nVerifyStream.prototype.update = function update(input: string | Buffer | Uint8Array, _enc?: string): any {\r\n  this._parts.push(typeof input === \"string\" ? Buffer.from(input) : input);\r\n  return this;\r\n};\r\n\r\nVerifyStream.prototype.verify = function verify(pubKey: KeyMaterial, sig: Buffer | string, sigEnc?: string): boolean {\r\n  const merged = joinChunks(this._parts);\r\n  const info = extractKey(pubKey);\r\n  let sigBuf: Buffer;\r\n  if (typeof sig === \"string\") {\r\n    if (sigEnc === \"base64\") sigBuf = Buffer.from(atob(sig));\r\n    else if (sigEnc === \"hex\")\r\n      sigBuf = Buffer.from(sig.match(/.{2}/g)!.map((h: string) => parseInt(h, 16)));\r\n    else sigBuf = Buffer.from(sig);\r\n  } else {\r\n    sigBuf = sig;\r\n  }\r\n  return syncVerify(this._alg, merged, info, sigBuf);\r\n};\r\n\r\nexport function createSign(alg: string): SignStream {\r\n  return new SignStream(alg);\r\n}\r\nexport function createVerify(alg: string): VerifyStream {\r\n  return new VerifyStream(alg);\r\n}\r\n\r\nexport function createCipheriv(\r\n  _alg: string,\r\n  _key: BinaryInput,\r\n  _iv: BinaryInput | null,\r\n): any {\r\n  throw new Error(\"createCipheriv is not supported in the browser polyfill\");\r\n}\r\n\r\nexport function createDecipheriv(\r\n  _alg: string,\r\n  _key: BinaryInput,\r\n  _iv: BinaryInput | null,\r\n): any {\r\n  throw new Error(\"createDecipheriv is not supported in the browser polyfill\");\r\n}\r\n\r\nexport interface KeyObject {\r\n  readonly type: string;\r\n  readonly asymmetricKeyType: string | undefined;\r\n  readonly symmetricKeySize: number | undefined;\r\n  export(opts?: { type?: string; format?: string }): Buffer | string;\r\n}\r\ninterface KeyObjectConstructor {\r\n  new (kind: \"public\" | \"private\" | \"secret\", data: CryptoKey | Uint8Array, alg?: string): KeyObject;\r\n  (this: any, kind: \"public\" | \"private\" | \"secret\", data: CryptoKey | Uint8Array, alg?: string): void;\r\n  prototype: any;\r\n}\r\nexport const KeyObject = function KeyObject(\r\n  this: any,\r\n  kind: \"public\" | \"private\" | \"secret\",\r\n  data: CryptoKey | Uint8Array,\r\n  alg?: string,\r\n) {\r\n  if (!this) return;\r\n  this._kind = kind;\r\n  this._data = data;\r\n  this._alg = alg;\r\n} as unknown as KeyObjectConstructor;\r\n\r\nObject.defineProperty(KeyObject.prototype, \"type\", {\r\n  get: function (this: any) { return this._kind; },\r\n  configurable: true,\r\n});\r\n\r\nObject.defineProperty(KeyObject.prototype, \"asymmetricKeyType\", {\r\n  get: function (this: any) {\r\n    if (this._kind === \"secret\") return undefined;\r\n    if (this._alg?.includes(\"RSA\")) return \"rsa\";\r\n    if (this._alg?.includes(\"EC\") || this._alg?.includes(\"ES\")) return \"ec\";\r\n    if (this._alg?.includes(\"Ed\")) return \"ed25519\";\r\n    return undefined;\r\n  },\r\n  configurable: true,\r\n});\r\n\r\nObject.defineProperty(KeyObject.prototype, \"symmetricKeySize\", {\r\n  get: function (this: any) {\r\n    if (this._kind !== \"secret\") return undefined;\r\n    return this._data instanceof Uint8Array ? this._data.length * 8 : undefined;\r\n  },\r\n  configurable: true,\r\n});\r\n\r\nKeyObject.prototype.export = function exportKey(_opts?: { type?: string; format?: string }): Buffer | string {\r\n  if (this._data instanceof Uint8Array) return Buffer.from(this._data);\r\n  throw new Error(\"Cannot synchronously export a CryptoKey\");\r\n};\r\n\r\nexport function createSecretKey(key: Buffer | string, enc?: string): KeyObject {\r\n  const buf =\r\n    typeof key === \"string\" ? Buffer.from(key, enc as BufferEncoding) : key;\r\n  return new KeyObject(\"secret\", buf);\r\n}\r\n\r\nexport function createPublicKey(key: KeyMaterial): KeyObject {\r\n  const info = extractKey(key);\r\n  return new KeyObject(\"public\", info.raw as Uint8Array, info.alg);\r\n}\r\n\r\nexport function createPrivateKey(key: KeyMaterial): KeyObject {\r\n  const info = extractKey(key);\r\n  return new KeyObject(\"private\", info.raw as Uint8Array, info.alg);\r\n}\r\n\r\nexport function timingSafeEqual(\r\n  a: Buffer | Uint8Array,\r\n  b: Buffer | Uint8Array,\r\n): boolean {\r\n  if (a.length !== b.length) return false;\r\n  let diff = 0;\r\n  for (let i = 0; i < a.length; i++) diff |= a[i] ^ b[i];\r\n  return diff === 0;\r\n}\r\n\r\nexport function getCiphers(): string[] {\r\n  return [\"aes-128-cbc\", \"aes-256-cbc\", \"aes-128-gcm\", \"aes-256-gcm\"];\r\n}\r\n\r\nexport function getHashes(): string[] {\r\n  return [\"sha1\", \"sha256\", \"sha384\", \"sha512\"];\r\n}\r\n\r\nexport const constants = {\r\n  SSL_OP_ALL: 0,\r\n  RSA_PKCS1_PADDING: 1,\r\n  RSA_PKCS1_OAEP_PADDING: 4,\r\n  RSA_PKCS1_PSS_PADDING: 6,\r\n};\r\n\r\nexport function generateKeySync(\r\n  type: string,\r\n  options?: { length?: number },\r\n): KeyObject {\r\n  const len = options?.length || 32;\r\n  const key = randomBytes(len);\r\n  return createSecretKey(key);\r\n}\r\n\r\nexport function generateKeyPairSync(\r\n  type: string,\r\n  options?: {\r\n    modulusLength?: number;\r\n    namedCurve?: string;\r\n    publicKeyEncoding?: { type?: string; format?: string };\r\n    privateKeyEncoding?: { type?: string; format?: string };\r\n  },\r\n): { publicKey: KeyObject | string; privateKey: KeyObject | string } {\r\n  const size = (options?.modulusLength || 2048) / 8;\r\n  const privBytes = randomBytes(size);\r\n  const pubBytes = randomBytes(size);\r\n  const privKey = new KeyObject(\"private\", privBytes, type);\r\n  const pubKey = new KeyObject(\"public\", pubBytes, type);\r\n\r\n  const pubEnc = options?.publicKeyEncoding;\r\n  const privEnc = options?.privateKeyEncoding;\r\n\r\n  return {\r\n    publicKey:\r\n      pubEnc?.format === \"pem\"\r\n        ? `-----BEGIN PUBLIC KEY-----\\n${btoa(String.fromCharCode(...pubBytes))}\\n-----END PUBLIC KEY-----`\r\n        : pubKey,\r\n    privateKey:\r\n      privEnc?.format === \"pem\"\r\n        ? `-----BEGIN PRIVATE KEY-----\\n${btoa(String.fromCharCode(...privBytes))}\\n-----END PRIVATE KEY-----`\r\n        : privKey,\r\n  };\r\n}\r\n\r\nexport function generatePrimeSync(\r\n  size: number,\r\n  _options?: { bigint?: boolean; safe?: boolean },\r\n): Buffer | bigint {\r\n  const bytes = randomBytes(Math.ceil(size / 8));\r\n  bytes[0] |= 0x80;\r\n  bytes[bytes.length - 1] |= 0x01;\r\n  if (_options?.bigint) {\r\n    let val = BigInt(0);\r\n    for (let i = 0; i < bytes.length; i++) {\r\n      val = (val << BigInt(8)) | BigInt(bytes[i]);\r\n    }\r\n    return val;\r\n  }\r\n  return bytes;\r\n}\r\n\r\nexport function generatePrime(\r\n  size: number,\r\n  options: { bigint?: boolean; safe?: boolean } | undefined,\r\n  cb: (err: Error | null, prime: Buffer | bigint) => void,\r\n): void {\r\n  try {\r\n    const result = generatePrimeSync(size, options);\r\n    setTimeout(() => cb(null, result), 0);\r\n  } catch (e) {\r\n    setTimeout(() => cb(e as Error, Buffer.alloc(0)), 0);\r\n  }\r\n}\r\n\r\nexport function checkPrimeSync(_candidate: Buffer | bigint): boolean {\r\n  return true; // stub\r\n}\r\n\r\nexport function checkPrime(\r\n  candidate: Buffer | bigint,\r\n  cb: (err: Error | null, result: boolean) => void,\r\n): void {\r\n  setTimeout(() => cb(null, checkPrimeSync(candidate)), 0);\r\n}\r\n\r\nexport function randomFill(\r\n  buf: Uint8Array | Buffer,\r\n  offsetOrCb: number | ((err: Error | null, buf: Uint8Array | Buffer) => void),\r\n  sizeOrCb?: number | ((err: Error | null, buf: Uint8Array | Buffer) => void),\r\n  cb?: (err: Error | null, buf: Uint8Array | Buffer) => void,\r\n): void {\r\n  let offset = 0;\r\n  let size = buf.length;\r\n  let callback = cb;\r\n\r\n  if (typeof offsetOrCb === \"function\") {\r\n    callback = offsetOrCb;\r\n  } else {\r\n    offset = offsetOrCb;\r\n    if (typeof sizeOrCb === \"function\") {\r\n      callback = sizeOrCb;\r\n    } else if (sizeOrCb !== undefined) {\r\n      size = sizeOrCb;\r\n    }\r\n  }\r\n\r\n  try {\r\n    randomFillSync(buf, offset, size);\r\n    if (callback) setTimeout(() => callback!(null, buf), 0);\r\n  } catch (e) {\r\n    if (callback) setTimeout(() => callback!(e as Error, buf), 0);\r\n  }\r\n}\r\n\r\nexport function hkdfSync(\r\n  hashAlg: string,\r\n  ikm: BinaryInput,\r\n  salt: BinaryInput,\r\n  info: BinaryInput,\r\n  keyLen: number,\r\n): Buffer {\r\n  const saltBuf =\r\n    typeof salt === \"string\" ? Buffer.from(salt) : Buffer.from(salt);\r\n  const ikmBuf = typeof ikm === \"string\" ? Buffer.from(ikm) : Buffer.from(ikm);\r\n  const infoBuf =\r\n    typeof info === \"string\" ? Buffer.from(info) : Buffer.from(info);\r\n\r\n  const prk = createHmac(hashAlg, saltBuf).update(ikmBuf).digest() as Buffer;\r\n\r\n  const hashLen = prk.length;\r\n  const n = Math.ceil(keyLen / hashLen);\r\n  const okm = Buffer.alloc(n * hashLen);\r\n  let prev = Buffer.alloc(0);\r\n\r\n  for (let i = 0; i < n; i++) {\r\n    const input = Buffer.concat([prev, infoBuf, Buffer.from([i + 1])]);\r\n    prev = Buffer.from(createHmac(hashAlg, prk).update(input).digest() as Uint8Array);\r\n    prev.copy(okm, i * hashLen);\r\n  }\r\n\r\n  return okm.slice(0, keyLen);\r\n}\r\n\r\nexport function hkdf(\r\n  hashAlg: string,\r\n  ikm: BinaryInput,\r\n  salt: BinaryInput,\r\n  info: BinaryInput,\r\n  keyLen: number,\r\n  cb: (err: Error | null, derivedKey: Buffer) => void,\r\n): void {\r\n  try {\r\n    const result = hkdfSync(hashAlg, ikm, salt, info, keyLen);\r\n    setTimeout(() => cb(null, result), 0);\r\n  } catch (e) {\r\n    setTimeout(() => cb(e as Error, Buffer.alloc(0)), 0);\r\n  }\r\n}\r\n\r\nexport function getDiffieHellman(_groupName: string): any {\r\n  return {\r\n    generateKeys: () => randomBytes(256),\r\n    computeSecret: (_other: Buffer) => randomBytes(32),\r\n    getPrime: () => randomBytes(256),\r\n    getGenerator: () => Buffer.from([2]),\r\n    getPublicKey: () => randomBytes(256),\r\n    getPrivateKey: () => randomBytes(256),\r\n    setPublicKey: () => {},\r\n    setPrivateKey: () => {},\r\n  };\r\n}\r\n\r\nexport function createDiffieHellman(\r\n  _sizeOrPrime: number | Buffer,\r\n  _generator?: number | Buffer,\r\n): any {\r\n  return getDiffieHellman(\"modp14\");\r\n}\r\n\r\nexport function createECDH(_curveName: string): any {\r\n  return {\r\n    generateKeys: (_enc?: string, _fmt?: string) => randomBytes(65),\r\n    computeSecret: (_other: Buffer) => randomBytes(32),\r\n    getPublicKey: (_enc?: string, _fmt?: string) => randomBytes(65),\r\n    getPrivateKey: (_enc?: string) => randomBytes(32),\r\n    setPublicKey: () => {},\r\n    setPrivateKey: () => {},\r\n  };\r\n}\r\n\r\nexport function getCurves(): string[] {\r\n  return [\"P-256\", \"P-384\", \"P-521\", \"secp256k1\"];\r\n}\r\n\r\nexport function setFips(_mode: number): void {}\r\nexport function getFips(): number {\r\n  return 0;\r\n}\r\n\r\nexport function secureHeapUsed(): { total: number; min: number; used: number } {\r\n  return { total: 0, min: 0, used: 0 };\r\n}\r\n\r\nexport const webcrypto = globalThis.crypto;\r\n\r\nexport default {\r\n  randomBytes,\r\n  randomFill,\r\n  randomFillSync,\r\n  randomUUID,\r\n  randomInt,\r\n  getRandomValues,\r\n  createHash,\r\n  hash,\r\n  createHmac,\r\n  createSign,\r\n  createVerify,\r\n  createCipheriv,\r\n  createDecipheriv,\r\n  sign,\r\n  verify,\r\n  pbkdf2,\r\n  pbkdf2Sync,\r\n  scrypt,\r\n  scryptSync,\r\n  hkdf,\r\n  hkdfSync,\r\n  timingSafeEqual,\r\n  getCiphers,\r\n  getHashes,\r\n  getCurves,\r\n  constants,\r\n  KeyObject,\r\n  createSecretKey,\r\n  createPublicKey,\r\n  createPrivateKey,\r\n  generateKeySync,\r\n  generateKeyPairSync,\r\n  generatePrimeSync,\r\n  generatePrime,\r\n  checkPrimeSync,\r\n  checkPrime,\r\n  createDiffieHellman,\r\n  getDiffieHellman,\r\n  createECDH,\r\n  setFips,\r\n  getFips,\r\n  secureHeapUsed,\r\n  webcrypto,\r\n  Hash,\r\n  Hmac,\r\n};\r\n","// optional CORS proxy for APIs that don't allow browser origins\r\n\r\nlet activeProxy: string | null = null;\r\nlet allowedDomains: Set<string> | null = null;\r\nlet allowAllWarned = false;\r\n\r\nconst DEFAULT_ALLOWED_DOMAINS = [\r\n  'registry.npmjs.org',\r\n  'github.com',\r\n  'raw.githubusercontent.com',\r\n  'api.github.com',\r\n  'objects.githubusercontent.com',\r\n  'esm.sh',\r\n  'unpkg.com',\r\n  'cdn.jsdelivr.net',\r\n  'localhost',\r\n  '127.0.0.1',\r\n];\r\n\r\nfunction getActiveProxy(): string | null {\r\n  if (activeProxy) return activeProxy;\r\n  try {\r\n    return typeof localStorage !== \"undefined\"\r\n      ? (localStorage.getItem(\"__corsProxyUrl\") ?? null)\r\n      : null;\r\n  } catch {\r\n    return null;\r\n  }\r\n}\r\n\r\nexport function setProxy(url: string | null): void {\r\n  activeProxy = url;\r\n}\r\n\r\nexport function getProxy(): string | null {\r\n  return getActiveProxy();\r\n}\r\n\r\nexport function isProxyActive(): boolean {\r\n  return getActiveProxy() !== null;\r\n}\r\n\r\n// set allowed domains for proxied fetches. extra domains get merged with defaults.\r\n// pass null to turn off the whitelist\r\nexport function setAllowedDomains(domains: string[] | null): void {\r\n  if (domains === null) {\r\n    allowedDomains = null;\r\n    if (!allowAllWarned && typeof console !== \"undefined\" && console.warn) {\r\n      allowAllWarned = true;\r\n      console.warn(\r\n        \"[nodepod] allowedFetchDomains is null — outbound fetch restrictions are disabled\",\r\n      );\r\n    }\r\n    return;\r\n  }\r\n  allowedDomains = new Set([...DEFAULT_ALLOWED_DOMAINS, ...domains]);\r\n}\r\n\r\nexport function getAllowedDomains(): string[] | null {\r\n  return allowedDomains ? [...allowedDomains] : null;\r\n}\r\n\r\nexport function isDomainAllowed(url: string): boolean {\r\n  if (!allowedDomains) return true;\r\n  try {\r\n    const hostname = new URL(url).hostname;\r\n    for (const allowed of allowedDomains) {\r\n      const exactOnly =\r\n        allowed === \"localhost\" ||\r\n        /^[0-9.]+$/.test(allowed) ||\r\n        allowed.includes(\":\");\r\n      if (hostname === allowed) return true;\r\n      if (!exactOnly && hostname.endsWith(\".\" + allowed)) return true;\r\n    }\r\n    return false;\r\n  } catch {\r\n    return false;\r\n  }\r\n}\r\n\r\nexport async function proxiedFetch(url: string, init?: RequestInit): Promise<Response> {\r\n  const proxy = getActiveProxy();\r\n  if (proxy) {\r\n    if (!isDomainAllowed(url)) {\r\n      throw new Error(`Fetch blocked: \"${new URL(url).hostname}\" is not in the allowedFetchDomains whitelist`);\r\n    }\r\n    return fetch(proxy + encodeURIComponent(url), init);\r\n  }\r\n  return fetch(url, init);\r\n}\r\n\r\nexport function resolveProxyUrl(url: string): string {\r\n  const proxy = getActiveProxy();\r\n  if (proxy && !isDomainAllowed(url)) {\r\n    throw new Error(`Fetch blocked: \"${new URL(url).hostname}\" is not in the allowedFetchDomains whitelist`);\r\n  }\r\n  return proxy ? proxy + encodeURIComponent(url) : url;\r\n}\r\n","var defaultParseOptions = {\n  decodeValues: true,\n  map: false,\n  silent: false,\n  split: \"auto\", // auto = split strings but not arrays\n};\n\nfunction isForbiddenKey(key) {\n  return typeof key !== \"string\" || key in {};\n}\n\nfunction createNullObj() {\n  return Object.create(null);\n}\n\nfunction isNonEmptyString(str) {\n  return typeof str === \"string\" && !!str.trim();\n}\n\nfunction parseString(setCookieValue, options) {\n  var parts = setCookieValue.split(\";\").filter(isNonEmptyString);\n\n  var nameValuePairStr = parts.shift();\n  var parsed = parseNameValuePair(nameValuePairStr);\n  var name = parsed.name;\n  var value = parsed.value;\n\n  options = options\n    ? Object.assign({}, defaultParseOptions, options)\n    : defaultParseOptions;\n\n  if (isForbiddenKey(name)) {\n    return null;\n  }\n\n  try {\n    value = options.decodeValues ? decodeURIComponent(value) : value; // decode cookie value\n  } catch (e) {\n    console.error(\n      \"set-cookie-parser: failed to decode cookie value. Set options.decodeValues=false to disable decoding.\",\n      e\n    );\n  }\n\n  var cookie = createNullObj();\n  cookie.name = name;\n  cookie.value = value;\n\n  parts.forEach(function (part) {\n    var sides = part.split(\"=\");\n    var key = sides.shift().trim().toLowerCase();\n    if (isForbiddenKey(key)) {\n      return;\n    }\n    var value = sides.join(\"=\").trim();\n    if (key === \"expires\") {\n      cookie.expires = new Date(value);\n    } else if (key === \"max-age\") {\n      var n = parseInt(value, 10);\n      if (!Number.isNaN(n)) cookie.maxAge = n;\n    } else if (key === \"secure\") {\n      cookie.secure = true;\n    } else if (key === \"httponly\") {\n      cookie.httpOnly = true;\n    } else if (key === \"samesite\") {\n      cookie.sameSite = value;\n    } else if (key === \"partitioned\") {\n      cookie.partitioned = true;\n    } else if (key) {\n      cookie[key] = value;\n    }\n  });\n\n  return cookie;\n}\n\nfunction parseNameValuePair(nameValuePairStr) {\n  // Parses name-value-pair according to rfc6265bis draft\n\n  var name = \"\";\n  var value = \"\";\n  var nameValueArr = nameValuePairStr.split(\"=\");\n  if (nameValueArr.length > 1) {\n    name = nameValueArr.shift();\n    value = nameValueArr.join(\"=\"); // everything after the first =, joined by a \"=\" if there was more than one part\n  } else {\n    value = nameValuePairStr;\n  }\n\n  return { name: name, value: value };\n}\n\nfunction parseSetCookie(input, options) {\n  options = options\n    ? Object.assign({}, defaultParseOptions, options)\n    : defaultParseOptions;\n\n  if (!input) {\n    if (!options.map) {\n      return [];\n    } else {\n      return createNullObj();\n    }\n  }\n\n  if (input.headers) {\n    if (typeof input.headers.getSetCookie === \"function\") {\n      // for fetch responses - they combine headers of the same type in the headers array,\n      // but getSetCookie returns an uncombined array\n      input = input.headers.getSetCookie();\n    } else if (input.headers[\"set-cookie\"]) {\n      // fast-path for node.js (which automatically normalizes header names to lower-case)\n      input = input.headers[\"set-cookie\"];\n    } else {\n      // slow-path for other environments - see #25\n      var sch =\n        input.headers[\n          Object.keys(input.headers).find(function (key) {\n            return key.toLowerCase() === \"set-cookie\";\n          })\n        ];\n      // warn if called on a request-like object with a cookie header rather than a set-cookie header - see #34, 36\n      if (!sch && input.headers.cookie && !options.silent) {\n        console.warn(\n          \"Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning.\"\n        );\n      }\n      input = sch;\n    }\n  }\n\n  var split = options.split;\n  var isArray = Array.isArray(input);\n\n  if (split === \"auto\") {\n    split = !isArray;\n  }\n\n  if (!isArray) {\n    input = [input];\n  }\n\n  input = input.filter(isNonEmptyString);\n\n  if (split) {\n    input = input.map(splitCookiesString).flat();\n  }\n\n  if (!options.map) {\n    return input\n      .map(function (str) {\n        return parseString(str, options);\n      })\n      .filter(Boolean);\n  } else {\n    var cookies = createNullObj();\n    return input.reduce(function (cookies, str) {\n      var cookie = parseString(str, options);\n      if (cookie && !isForbiddenKey(cookie.name)) {\n        cookies[cookie.name] = cookie;\n      }\n      return cookies;\n    }, cookies);\n  }\n}\n\n/*\n  Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n  that are within a single set-cookie field-value, such as in the Expires portion.\n\n  This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n  Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n  React Native's fetch does this for *every* header, including set-cookie.\n\n  Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n  Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nfunction splitCookiesString(cookiesString) {\n  if (Array.isArray(cookiesString)) {\n    return cookiesString;\n  }\n  if (typeof cookiesString !== \"string\") {\n    return [];\n  }\n\n  var cookiesStrings = [];\n  var pos = 0;\n  var start;\n  var ch;\n  var lastComma;\n  var nextStart;\n  var cookiesSeparatorFound;\n\n  function skipWhitespace() {\n    while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n      pos += 1;\n    }\n    return pos < cookiesString.length;\n  }\n\n  function notSpecialChar() {\n    ch = cookiesString.charAt(pos);\n\n    return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n  }\n\n  while (pos < cookiesString.length) {\n    start = pos;\n    cookiesSeparatorFound = false;\n\n    while (skipWhitespace()) {\n      ch = cookiesString.charAt(pos);\n      if (ch === \",\") {\n        // ',' is a cookie separator if we have later first '=', not ';' or ','\n        lastComma = pos;\n        pos += 1;\n\n        skipWhitespace();\n        nextStart = pos;\n\n        while (pos < cookiesString.length && notSpecialChar()) {\n          pos += 1;\n        }\n\n        // currently special character\n        if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n          // we found cookies separator\n          cookiesSeparatorFound = true;\n          // pos is inside the next cookie, so back up and return it.\n          pos = nextStart;\n          cookiesStrings.push(cookiesString.substring(start, lastComma));\n          start = pos;\n        } else {\n          // in param ',' or param separator ';',\n          // we continue from that comma\n          pos = lastComma + 1;\n        }\n      } else {\n        pos += 1;\n      }\n    }\n\n    if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n      cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n    }\n  }\n\n  return cookiesStrings;\n}\n\n// named export for CJS\nparseSetCookie.parseSetCookie = parseSetCookie;\n// for backwards compatibility\nparseSetCookie.parse = parseSetCookie;\nparseSetCookie.parseString = parseString;\nparseSetCookie.splitCookiesString = splitCookiesString;\n\n// EXPORTS\n// (this section is replaced by build-cjs.js)\n\n// named export for ESM\nexport { parseSetCookie };\n// for backwards compatibility\nexport default parseSetCookie;\nexport { parseSetCookie as parse, parseString, splitCookiesString };\n","// Bridge Fetch API Response → Node.js ServerResponse with correct Set-Cookie handling.\r\n// Browser Fetch forbids reading Set-Cookie via headers.get() / iteration; use getSetCookie().\r\n\r\nimport { splitCookiesString } from \"set-cookie-parser\";\r\nimport type { ServerResponse } from \"./http\";\r\n\r\nconst HEADERS_PATCH = Symbol.for(\"nodepod.fetchHeadersSetCookieParity\");\r\nconst FETCH_CLASS_PATCH = Symbol.for(\"nodepod.fetchClassHeaderParity\");\r\n\r\ntype IterableHeaders = Headers & {\r\n  entries(): IterableIterator<[string, string]>;\r\n  [Symbol.iterator](): IterableIterator<[string, string]>;\r\n};\r\n\r\nfunction iterateHeaders(headers: Headers): Iterable<[string, string]> {\r\n  const h = headers as IterableHeaders & Partial<Headers>;\r\n  if (typeof h.entries === \"function\") {\r\n    return h.entries();\r\n  }\r\n  if (typeof (h as Iterable<[string, string]>)[Symbol.iterator] === \"function\") {\r\n    return h as Iterable<[string, string]>;\r\n  }\r\n  const pairs: [string, string][] = [];\r\n  if (typeof h.forEach === \"function\") {\r\n    h.forEach((value, key) => pairs.push([key, value]));\r\n  }\r\n  return pairs;\r\n}\r\n\r\n/**\r\n * Copy any HeadersInit into a bare `new Headers()` (guard \"none\"), which —\r\n * unlike Request/Response header lists — accepts every header including\r\n * Cookie, Host, Origin and Set-Cookie.\r\n */\r\nexport function toGuardlessHeaders(init?: HeadersInit | null): Headers {\r\n  const out = new Headers();\r\n  if (!init) return out;\r\n  if (init instanceof Headers) {\r\n    for (const cookie of collectSetCookies(init)) {\r\n      out.append(\"set-cookie\", cookie);\r\n    }\r\n    init.forEach((value, key) => {\r\n      if (key.toLowerCase() === \"set-cookie\") return;\r\n      out.append(key, value);\r\n    });\r\n    return out;\r\n  }\r\n  const pairs: Iterable<[string, unknown]> = Array.isArray(init)\r\n    ? (init as [string, unknown][])\r\n    : Object.entries(init as Record<string, unknown>);\r\n  for (const [key, value] of pairs) {\r\n    if (value == null) continue;\r\n    if (Array.isArray(value)) {\r\n      for (const item of value) out.append(key, String(item));\r\n    } else {\r\n      out.append(key, String(value));\r\n    }\r\n  }\r\n  return out;\r\n}\r\n\r\n/**\r\n * Node.js parity for the Fetch API in worker realms.\r\n *\r\n * Browsers enforce \"forbidden header\" guards inside the Request/Response\r\n * constructors: `new Request(url, {headers: {cookie}})` silently drops\r\n * Cookie/Host/Origin, and `new Response(body, {headers})` silently drops\r\n * Set-Cookie. Node (undici) has no such guards, so server frameworks that\r\n * round-trip Node requests through Fetch objects (Hono, SvelteKit adapters,\r\n * Fetch→Node HTTP bridges, ...) lose session cookies when run in a browser worker.\r\n *\r\n * This replaces the realm's Request/Response with subclasses whose `headers`\r\n * property is a guard-free Headers object, restoring Node semantics. Never\r\n * installed in Window realms (page code keeps native behavior).\r\n */\r\nexport function installNodeFetchClassParity(): void {\r\n  if (\r\n    typeof Request === \"undefined\" ||\r\n    typeof Response === \"undefined\" ||\r\n    typeof Headers === \"undefined\"\r\n  ) {\r\n    return;\r\n  }\r\n  // Only worker-like realms execute user Node code; leave pages untouched.\r\n  if (typeof document !== \"undefined\") return;\r\n  const g = globalThis as unknown as Record<PropertyKey, unknown>;\r\n  if (g[FETCH_CLASS_PATCH]) return;\r\n  g[FETCH_CLASS_PATCH] = true;\r\n\r\n  const NativeRequest = Request;\r\n  const NativeResponse = Response;\r\n\r\n  const defineHeaders = (target: object, headers: Headers): void => {\r\n    Object.defineProperty(target, \"headers\", {\r\n      value: headers,\r\n      writable: false,\r\n      enumerable: false,\r\n      configurable: true,\r\n    });\r\n  };\r\n\r\n  // Shadow from init, then merge headers the native constructor computed\r\n  // itself (e.g. content-type inferred from a string/FormData body).\r\n  const buildShadow = (\r\n    initHeaders: HeadersInit | null | undefined,\r\n    nativeHeaders: Headers,\r\n  ): Headers => {\r\n    const shadow = toGuardlessHeaders(initHeaders);\r\n    nativeHeaders.forEach((value, key) => {\r\n      if (!shadow.has(key)) shadow.set(key, value);\r\n    });\r\n    return shadow;\r\n  };\r\n\r\n  class NodeRequest extends NativeRequest {\r\n    constructor(input: RequestInfo | URL, init?: RequestInit) {\r\n      super(input as RequestInfo, init);\r\n      const source =\r\n        init?.headers ??\r\n        (input instanceof NativeRequest ? input.headers : undefined);\r\n      defineHeaders(this, buildShadow(source, super.headers));\r\n    }\r\n\r\n    clone(): Request {\r\n      const cloned = super.clone();\r\n      defineHeaders(cloned, toGuardlessHeaders(this.headers));\r\n      return cloned;\r\n    }\r\n  }\r\n\r\n  class NodeResponse extends NativeResponse {\r\n    constructor(body?: BodyInit | null, init?: ResponseInit) {\r\n      super(body, init);\r\n      defineHeaders(this, buildShadow(init?.headers, super.headers));\r\n    }\r\n\r\n    clone(): Response {\r\n      const cloned = super.clone();\r\n      defineHeaders(cloned, toGuardlessHeaders(this.headers));\r\n      return cloned;\r\n    }\r\n\r\n    static json(data: unknown, init?: ResponseInit): Response {\r\n      const headers = toGuardlessHeaders(init?.headers ?? null);\r\n      if (!headers.has(\"content-type\")) {\r\n        headers.set(\"content-type\", \"application/json\");\r\n      }\r\n      return new NodeResponse(JSON.stringify(data), {\r\n        status: init?.status ?? 200,\r\n        statusText: init?.statusText,\r\n        headers,\r\n      });\r\n    }\r\n\r\n    static redirect(url: string | URL, status = 302): Response {\r\n      if (![301, 302, 303, 307, 308].includes(status)) {\r\n        throw new RangeError(`Invalid status code ${status}`);\r\n      }\r\n      return new NodeResponse(null, {\r\n        status,\r\n        headers: { location: String(url) },\r\n      });\r\n    }\r\n\r\n    static error(): Response {\r\n      return NativeResponse.error();\r\n    }\r\n  }\r\n\r\n  // Native instances (fetch results, Response.error) must still satisfy\r\n  // `x instanceof Request/Response` checks in user code.\r\n  Object.defineProperty(NodeRequest, Symbol.hasInstance, {\r\n    value: (value: unknown) => value instanceof NativeRequest,\r\n  });\r\n  Object.defineProperty(NodeResponse, Symbol.hasInstance, {\r\n    value: (value: unknown) => value instanceof NativeResponse,\r\n  });\r\n\r\n  g.Request = NodeRequest;\r\n  g.Response = NodeResponse;\r\n}\r\n\r\n/**\r\n * Replace setResponse on Fetch→Node HTTP adapter modules (export pairs with\r\n * getRequest + setResponse). Native adapter implementations often iterate\r\n * response.headers in ways that drop multiple Set-Cookie values in worker\r\n * realms even after Headers parity is installed.\r\n */\r\nexport function patchFetchNodeAdapterExports(\r\n  exports: Record<string, unknown>,\r\n): void {\r\n  if (\r\n    typeof exports.getRequest === \"function\" &&\r\n    typeof exports.setResponse === \"function\"\r\n  ) {\r\n    exports.setResponse = setFetchResponse;\r\n  }\r\n}\r\n\r\n/** Make Fetch Headers iteration/get behave like Node for Set-Cookie (browser worker parity). */\r\nexport function installFetchHeadersSetCookieParity(): void {\r\n  if (typeof Headers === \"undefined\") return;\r\n  const proto = Headers.prototype as IterableHeaders & {\r\n    [HEADERS_PATCH]?: boolean;\r\n    get(name: string): string | null;\r\n    forEach(\r\n      callback: (value: string, key: string, parent: Headers) => void,\r\n      thisArg?: unknown,\r\n    ): void;\r\n  };\r\n  if (proto[HEADERS_PATCH]) return;\r\n  proto[HEADERS_PATCH] = true;\r\n\r\n  const origEntries = proto.entries;\r\n  const origGet = proto.get;\r\n\r\n  function* entriesWithSetCookies(\r\n    this: Headers,\r\n  ): Generator<[string, string], void, unknown> {\r\n    const cookies =\r\n      typeof this.getSetCookie === \"function\" ? this.getSetCookie() : [];\r\n    for (const cookie of cookies) {\r\n      yield [\"set-cookie\", cookie];\r\n    }\r\n    for (const [key, value] of origEntries.call(this)) {\r\n      if (key.toLowerCase() === \"set-cookie\") continue;\r\n      yield [key, value];\r\n    }\r\n  }\r\n\r\n  proto.entries = function entries(this: Headers) {\r\n    return entriesWithSetCookies.call(this);\r\n  };\r\n\r\n  const iter = Symbol.iterator;\r\n  if (iter in proto) {\r\n    (proto as unknown as Record<symbol, unknown>)[iter] = function iterator(this: Headers) {\r\n      return entriesWithSetCookies.call(this);\r\n    };\r\n  }\r\n\r\n  proto.forEach = function forEach(\r\n    this: Headers,\r\n    callback: (value: string, key: string, parent: Headers) => void,\r\n    thisArg?: unknown,\r\n  ) {\r\n    for (const [key, value] of entriesWithSetCookies.call(this)) {\r\n      callback.call(thisArg, value, key, this);\r\n    }\r\n  };\r\n\r\n  proto.get = function get(this: Headers, name: string) {\r\n    if (name.toLowerCase() === \"set-cookie\") {\r\n      const cookies =\r\n        typeof this.getSetCookie === \"function\" ? this.getSetCookie() : [];\r\n      return cookies.length > 0 ? cookies.join(\", \") : null;\r\n    }\r\n    return origGet.call(this, name);\r\n  };\r\n}\r\n\r\nexport function collectSetCookies(headers: Headers): string[] {\r\n  if (typeof headers.getSetCookie === \"function\") {\r\n    return headers.getSetCookie();\r\n  }\r\n  const fromGet = headers.get(\"set-cookie\");\r\n  if (fromGet) return splitCookiesString(fromGet);\r\n  const cookies: string[] = [];\r\n  for (const [key, value] of iterateHeaders(headers)) {\r\n    if (key.toLowerCase() === \"set-cookie\") {\r\n      cookies.push(...splitCookiesString(value));\r\n    }\r\n  }\r\n  return cookies;\r\n}\r\n\r\n/** Convert Fetch API response headers to Node.js IncomingMessage header record. */\r\nexport function fetchHeadersToNodeRecord(\r\n  headers: Headers,\r\n): Record<string, string | string[]> {\r\n  const out: Record<string, string | string[]> = {};\r\n  const setCookies = collectSetCookies(headers);\r\n  if (setCookies.length > 0) out[\"set-cookie\"] = setCookies;\r\n  for (const [key, value] of iterateHeaders(headers)) {\r\n    if (key.toLowerCase() === \"set-cookie\") continue;\r\n    out[key.toLowerCase()] = value;\r\n  }\r\n  return out;\r\n}\r\n\r\n/** Copy Fetch headers into another Headers object (Node.js Set-Cookie parity). */\r\nexport function copyFetchHeaders(\r\n  target: Headers,\r\n  source: HeadersInit | Headers | undefined,\r\n): void {\r\n  if (!source) return;\r\n  const src = toGuardlessHeaders(source);\r\n  for (const cookie of collectSetCookies(src)) {\r\n    target.append(\"Set-Cookie\", cookie);\r\n  }\r\n  src.forEach((value, key) => {\r\n    if (key.toLowerCase() === \"set-cookie\") return;\r\n    target.set(key, value);\r\n  });\r\n}\r\n\r\n/** Build Fetch Headers from a Node-style header record (Set-Cookie arrays preserved). */\r\nexport function recordToFetchHeaders(\r\n  headers: Record<string, string | string[] | undefined>,\r\n): Headers {\r\n  const out = new Headers();\r\n  for (const [key, value] of Object.entries(headers)) {\r\n    if (value === undefined) continue;\r\n    const lk = key.toLowerCase();\r\n    if (lk === \"set-cookie\") {\r\n      const list = Array.isArray(value) ? value : [value];\r\n      for (const cookie of list) out.append(\"Set-Cookie\", cookie);\r\n    } else {\r\n      out.set(key, Array.isArray(value) ? value.join(\", \") : value);\r\n    }\r\n  }\r\n  return out;\r\n}\r\n\r\n/** Copy a Fetch Response onto a Node.js-style ServerResponse (Node http parity). */\r\nexport async function setFetchResponse(\r\n  res: ServerResponse,\r\n  response: Response,\r\n): Promise<void> {\r\n  const setCookies = collectSetCookies(response.headers);\r\n  if (setCookies.length > 0) {\r\n    try {\r\n      res.setHeader(\"set-cookie\", setCookies);\r\n    } catch (error) {\r\n      res.getHeaderNames().forEach((name) => res.removeHeader(name));\r\n      res.writeHead(500).end(String(error));\r\n      return;\r\n    }\r\n  }\r\n\r\n  for (const [key, value] of iterateHeaders(response.headers)) {\r\n    if (key.toLowerCase() === \"set-cookie\") continue;\r\n    try {\r\n      res.setHeader(key, value);\r\n    } catch (error) {\r\n      res.getHeaderNames().forEach((name) => res.removeHeader(name));\r\n      res.writeHead(500).end(String(error));\r\n      return;\r\n    }\r\n  }\r\n\r\n  res.statusCode = response.status;\r\n  res.writeHead(response.status);\r\n\r\n  if (!response.body) {\r\n    res.end();\r\n    return;\r\n  }\r\n\r\n  if (response.body.locked) {\r\n    res.end(\r\n      \"Fatal error: Response body is locked. This can happen when the response was already read (for example through 'response.json()' or 'response.text()').\",\r\n    );\r\n    return;\r\n  }\r\n\r\n  const reader = response.body.getReader();\r\n  if (res.destroyed) {\r\n    reader.cancel();\r\n    return;\r\n  }\r\n\r\n  const cancel = (error?: Error) => {\r\n    res.off(\"close\", cancel);\r\n    res.off(\"error\", cancel);\r\n    reader.cancel(error).catch(() => {});\r\n    if (error) res.destroy(error);\r\n  };\r\n  res.on(\"close\", cancel);\r\n  res.on(\"error\", cancel);\r\n  next();\r\n\r\n  async function next() {\r\n    try {\r\n      for (;;) {\r\n        const { done, value } = await reader.read();\r\n        if (done) break;\r\n        if (!res.write(value)) {\r\n          if (\r\n            process.env.AWS_LAMBDA_FUNCTION_NAME ||\r\n            process.env.LAMBDA_TASK_ROOT\r\n          ) {\r\n            continue;\r\n          }\r\n          res.once(\"drain\", next);\r\n          return;\r\n        }\r\n      }\r\n      res.end();\r\n    } catch (error) {\r\n      cancel(error instanceof Error ? error : new Error(String(error)));\r\n    }\r\n  }\r\n}\r\n","// HTTP polyfill -- IncomingMessage, ServerResponse, Server, ClientRequest (fetch-backed),\n// createServer, request, get, Agent, STATUS_CODES, WebSocket upgrade bridging.\n// Uses function constructors (not classes) for pre-ES6 inheritance compat.\n\nimport { EventEmitter, type EventHandler } from \"./events\";\nimport { Readable, Writable } from \"./stream\";\nimport { Buffer } from \"./buffer\";\nimport { TcpSocket, TcpServer, type NetAddress } from \"./net\";\nimport { createHash } from \"./crypto\";\nimport { resolveProxyUrl } from \"../cross-origin\";\nimport { fetchHeadersToNodeRecord } from \"./fetch-response\";\n// no event-loop import, the net.Server under us already registers TCPServerWrap\nimport { TIMEOUTS } from \"../constants/config\";\n\n// capture real browser WebSocket before any bundled lib can overwrite it\nconst _runningInBrowser =\n  typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\nconst _NativeWebSocket: typeof globalThis.WebSocket | null =\n  _runningInBrowser && typeof globalThis.WebSocket === \"function\"\n    ? globalThis.WebSocket\n    : null;\n\n// Types\n\nexport type HttpHandler = (\n  incoming: IncomingMessage,\n  outgoing: ServerResponse,\n) => void | Promise<void>;\n\nexport interface ConnectionOptions {\n  method?: string;\n  path?: string;\n  headers?: Record<string, string | string[]>;\n  hostname?: string;\n  host?: string;\n  port?: number;\n}\n\nexport interface CompletedResponse {\n  statusCode: number;\n  statusMessage: string;\n  headers: Record<string, string | string[]>;\n  body: Buffer;\n}\n\n// IncomingMessage\n\nexport interface IncomingMessage extends Readable {\n  httpVersion: string;\n  httpVersionMajor: number;\n  httpVersionMinor: number;\n  complete: boolean;\n  headers: Record<string, string | string[] | undefined>;\n  rawHeaders: string[];\n  trailers: Record<string, string | undefined>;\n  rawTrailers: string[];\n  method?: string;\n  url?: string;\n  statusCode?: number;\n  statusMessage?: string;\n  aborted: boolean;\n  socket: TcpSocket;\n  connection: TcpSocket;\n  setTimeout(ms: number, handler?: () => void): this;\n  destroy(err?: Error): this;\n  _injectBody(raw: Buffer | string | null): void;\n}\n\nexport interface IncomingMessageConstructor {\n  new (sock?: TcpSocket): IncomingMessage;\n  (this: any, sock?: TcpSocket): void;\n  prototype: any;\n  build(\n    verb: string,\n    target: string,\n    hdrs: Record<string, string>,\n  ): IncomingMessage;\n}\n\nexport const IncomingMessage = function IncomingMessage(this: any, sock?: TcpSocket) {\n  if (!this) return;\n  Readable.call(this);\n\n  this.httpVersion = \"1.1\";\n  this.httpVersionMajor = 1;\n  this.httpVersionMinor = 1;\n  this.complete = false;\n  this.headers = {};\n  this.rawHeaders = [];\n  this.trailers = {};\n  this.rawTrailers = [];\n  this.method = undefined;\n  this.url = undefined;\n  this.statusCode = undefined;\n  this.statusMessage = undefined;\n  this.aborted = false;\n  this._payload = null;\n  this.socket = sock ?? new TcpSocket();\n  this.connection = this.socket;\n} as unknown as IncomingMessageConstructor;\n\nObject.setPrototypeOf(IncomingMessage.prototype, Readable.prototype);\n\nIncomingMessage.prototype.setTimeout = function setTimeout(ms: number, handler?: () => void): any {\n  if (handler) this.once(\"timeout\", handler);\n  return this;\n};\n\nIncomingMessage.prototype.destroy = function destroy(err?: Error): any {\n  Readable.prototype.destroy.call(this, err);\n  return this;\n};\n\nIncomingMessage.prototype._injectBody = function _injectBody(raw: Buffer | string | null): void {\n  if (raw !== null && raw !== undefined) {\n    this.push(typeof raw === \"string\" ? Buffer.from(raw) : raw);\n  }\n  this.push(null);\n  this.complete = true;\n};\n\nfunction ensureContentLength(\n  hdrs: Record<string, string | string[] | undefined>,\n  payload?: Buffer | string | null,\n): void {\n  if (payload === undefined || payload === null) return;\n  const hasLength = Object.keys(hdrs).some((k) => k.toLowerCase() === \"content-length\");\n  const hasTe = Object.keys(hdrs).some((k) => k.toLowerCase() === \"transfer-encoding\");\n  if (hasLength || hasTe) return;\n  const bytes = typeof payload === \"string\" ? Buffer.byteLength(payload) : payload.byteLength;\n  hdrs[\"content-length\"] = String(bytes);\n}\n\nIncomingMessage.build = function build(\n  verb: string,\n  target: string,\n  hdrs: Record<string, string>,\n): IncomingMessage {\n  const sock = new TcpSocket();\n  sock.remoteAddress = \"127.0.0.1\";\n  sock.remotePort = 0;\n  sock.remoteFamily = \"IPv4\";\n  const msg = new IncomingMessage(sock);\n  msg.method = verb;\n  msg.url = target;\n  // Node.js always lowercases header keys in req.headers\n  const lowerHdrs: Record<string, string> = {};\n  for (const [k, v] of Object.entries(hdrs)) {\n    lowerHdrs[k.toLowerCase()] = v;\n    msg.rawHeaders.push(k, v);\n  }\n  msg.headers = lowerHdrs;\n  return msg;\n};\n\n/** Populate IncomingMessage headers + rawHeaders with Node-correct set-cookie pairs. */\nfunction applyHeadersToIncomingMessage(\n  msg: IncomingMessage,\n  headers: Record<string, string | string[] | undefined>,\n): void {\n  for (const [k, v] of Object.entries(headers)) {\n    if (v === undefined) continue;\n    const lk = k.toLowerCase();\n    msg.headers[lk] = v;\n    if (lk === \"set-cookie\") {\n      const cookies = Array.isArray(v) ? v : [v];\n      for (const cookie of cookies) {\n        msg.rawHeaders.push(\"set-cookie\", cookie);\n      }\n    } else {\n      msg.rawHeaders.push(k, Array.isArray(v) ? v.join(\", \") : v);\n    }\n  }\n}\n\n// ServerResponse\n\nexport interface ServerResponse extends Writable {\n  statusCode: number;\n  statusMessage: string;\n  headersSent: boolean;\n  finished: boolean;\n  sendDate: boolean;\n  socket: TcpSocket | null;\n  req: IncomingMessage;\n  connection: TcpSocket | null;\n  _onComplete(fn: (r: CompletedResponse) => void): void;\n  assignSocket(socket: TcpSocket): void;\n  detachSocket(socket: TcpSocket): void;\n  setHeader(key: string, val: string | string[] | number): this;\n  getHeader(key: string): string | string[] | undefined;\n  getHeaders(): Record<string, string | string[]>;\n  getHeaderNames(): string[];\n  hasHeader(key: string): boolean;\n  appendHeader(key: string, val: string | string[]): this;\n  removeHeader(key: string): void;\n  flushHeaders(): void;\n  _implicitHeader(): void;\n  writeContinue(): void;\n  writeProcessing(): void;\n  writeEarlyHints(hints: Record<string, string | string[]>, cb?: () => void): void;\n  writeHead(code: number, msgOrHdrs?: any, extraHdrs?: any): this;\n  write(data: any, encOrCb?: any, cb?: any): boolean;\n  end(dataOrCb?: any, encOrCb?: any, cb?: any): this;\n  send(payload: string | Buffer | object): this;\n  setTimeout(ms: number, handler?: () => void): this;\n  json(obj: unknown): this;\n  status(c: number): this;\n  redirect(target: string | number, loc?: string): void;\n  addTrailers(headers: Record<string, string>): void;\n  _collectedBody(): Buffer;\n  _collectedBodyText(): string;\n}\n\nexport interface ServerResponseConstructor {\n  new (incoming: IncomingMessage): ServerResponse;\n  (this: any, incoming: IncomingMessage): void;\n  prototype: any;\n}\n\nexport const ServerResponse = function ServerResponse(this: any, incoming: any) {\n  if (!this) return;\n  Writable.call(this);\n\n  this.statusCode = 200;\n  this.statusMessage = \"OK\";\n  this.headersSent = false;\n  this.finished = false;\n  this.sendDate = true;\n  this.socket = incoming.socket;\n  this.connection = incoming.socket;\n  this.req = incoming;\n  this._hdrs = new Map();\n  this._chunks = [];\n  this._completionCallback = undefined;\n} as unknown as ServerResponseConstructor;\n\nObject.setPrototypeOf(ServerResponse.prototype, Writable.prototype);\n\nServerResponse.prototype._onComplete = function _onComplete(fn: (r: CompletedResponse) => void): void {\n  this._completionCallback = fn;\n};\n\nServerResponse.prototype.assignSocket = function assignSocket(socket: TcpSocket): void {\n  this.socket = socket;\n  this.connection = socket;\n};\n\nServerResponse.prototype.detachSocket = function detachSocket(_socket: TcpSocket): void {\n  this.socket = null;\n  this.connection = null;\n};\n\nServerResponse.prototype.setHeader = function setHeader(key: string, val: string | string[] | number): any {\n  if (this.headersSent) throw new Error(\"Headers already dispatched\");\n  const lk = key.toLowerCase();\n  if (Array.isArray(val)) {\n    this._hdrs.set(lk, val.map(String));\n  } else {\n    this._hdrs.set(lk, String(val));\n  }\n  return this;\n};\n\nServerResponse.prototype.getHeader = function getHeader(key: string): string | string[] | undefined {\n  return this._hdrs.get(key.toLowerCase());\n};\n\nServerResponse.prototype.getHeaders = function getHeaders(): Record<string, string | string[]> {\n  const out: Record<string, string | string[]> = {};\n  this._hdrs.forEach((v: string | string[], k: string) => {\n    out[k] = v;\n  });\n  return out;\n};\n\nServerResponse.prototype.getHeaderNames = function getHeaderNames(): string[] {\n  return [...this._hdrs.keys()];\n};\n\nServerResponse.prototype.hasHeader = function hasHeader(key: string): boolean {\n  return this._hdrs.has(key.toLowerCase());\n};\n\nServerResponse.prototype.appendHeader = function appendHeader(key: string, val: string | string[]): any {\n  const lk = key.toLowerCase();\n  const incoming = Array.isArray(val) ? val.map(String) : [String(val)];\n  const existing = this._hdrs.get(lk);\n  if (existing === undefined) {\n    this._hdrs.set(lk, lk === \"set-cookie\" ? incoming : incoming.join(\", \"));\n  } else if (lk === \"set-cookie\") {\n    const cur = Array.isArray(existing) ? existing : [existing];\n    this._hdrs.set(lk, cur.concat(incoming));\n  } else {\n    const cur = Array.isArray(existing) ? existing.join(\", \") : existing;\n    this._hdrs.set(lk, cur + \", \" + incoming.join(\", \"));\n  }\n  return this;\n};\n\nServerResponse.prototype.removeHeader = function removeHeader(key: string): void {\n  if (this.headersSent) throw new Error(\"Headers already dispatched\");\n  this._hdrs.delete(key.toLowerCase());\n};\n\nServerResponse.prototype.flushHeaders = function flushHeaders(): void {\n  this.headersSent = true;\n};\n\n// Node internal API: flush implicit headers if none were sent explicitly.\n// Next.js's response proxy calls res._implicitHeader() from end().\nServerResponse.prototype._implicitHeader = function _implicitHeader(): void {\n  if (!this.headersSent) {\n    this.writeHead(this.statusCode);\n  }\n};\n\nServerResponse.prototype.writeContinue = function writeContinue(): void {\n  // No-op in polyfill\n};\n\nServerResponse.prototype.writeProcessing = function writeProcessing(): void {\n  // No-op in polyfill\n};\n\nServerResponse.prototype.writeEarlyHints = function writeEarlyHints(\n  _hints: Record<string, string | string[]>,\n  _cb?: () => void,\n): void {\n  if (_cb) queueMicrotask(_cb);\n};\n\nServerResponse.prototype.writeHead = function writeHead(\n  code: number,\n  msgOrHdrs?: string | Record<string, string | string[] | number> | string[],\n  extraHdrs?: Record<string, string | string[] | number> | string[],\n): any {\n  this.statusCode = code;\n  if (typeof msgOrHdrs === \"string\") {\n    this.statusMessage = msgOrHdrs;\n    if (extraHdrs) {\n      if (Array.isArray(extraHdrs)) {\n        for (let i = 0; i < extraHdrs.length; i += 2) {\n          this.setHeader(extraHdrs[i] as string, extraHdrs[i + 1] as string);\n        }\n      } else {\n        for (const [k, v] of Object.entries(extraHdrs)) this.setHeader(k, v);\n      }\n    }\n  } else if (Array.isArray(msgOrHdrs)) {\n    for (let i = 0; i < msgOrHdrs.length; i += 2) {\n      this.setHeader(msgOrHdrs[i] as string, msgOrHdrs[i + 1] as string);\n    }\n  } else if (msgOrHdrs) {\n    for (const [k, v] of Object.entries(msgOrHdrs)) this.setHeader(k, v);\n  }\n  return this;\n};\n\nServerResponse.prototype.write = function write(\n  data: Uint8Array | string,\n  encOrCb?: BufferEncoding | ((err?: Error | null) => void),\n  cb?: (err?: Error | null) => void,\n): boolean {\n  this.headersSent = true;\n  const buf = typeof data === \"string\" ? Buffer.from(data) : data;\n  this._chunks.push(buf);\n  const fn = typeof encOrCb === \"function\" ? encOrCb : cb;\n  if (fn) queueMicrotask(() => fn(null));\n  return true;\n};\n\nServerResponse.prototype.end = function end(\n  dataOrCb?: Uint8Array | string | (() => void),\n  encOrCb?: BufferEncoding | (() => void),\n  cb?: () => void,\n): any {\n  if (typeof dataOrCb === \"function\") {\n    cb = dataOrCb;\n  } else if (dataOrCb !== undefined) {\n    this.write(dataOrCb as Uint8Array | string);\n  }\n  if (typeof encOrCb === \"function\") cb = encOrCb;\n\n  this.headersSent = true;\n  this.finished = true;\n  this.writableEnded = true;\n  this.writableFinished = true;\n\n  if (this._completionCallback) {\n    const flatHdrs: Record<string, string | string[]> = {};\n    this._hdrs.forEach((v: string | string[], k: string) => {\n      if (k === \"set-cookie\" && Array.isArray(v)) {\n        flatHdrs[k] = v;\n      } else {\n        flatHdrs[k] = Array.isArray(v) ? v.join(\", \") : v;\n      }\n    });\n    const finalBody = Buffer.concat(this._chunks);\n    this._completionCallback({\n      statusCode: this.statusCode,\n      statusMessage: this.statusMessage,\n      headers: flatHdrs,\n      body: finalBody,\n    });\n  }\n\n  const self = this;\n  queueMicrotask(() => {\n    self.emit(\"finish\");\n    if (cb) cb();\n  });\n  return this;\n};\n\nServerResponse.prototype.send = function send(payload: string | Buffer | object): any {\n  if (typeof payload === \"object\" && !Buffer.isBuffer(payload)) {\n    this.setHeader(\"Content-Type\", \"application/json\");\n    payload = JSON.stringify(payload);\n  }\n  if (!this.hasHeader(\"Content-Type\")) {\n    this.setHeader(\"Content-Type\", \"text/html\");\n  }\n  this.write(typeof payload === \"string\" ? payload : payload);\n  return this.end();\n};\n\nServerResponse.prototype.setTimeout = function setTimeout(ms: number, handler?: () => void): any {\n  if (handler) this.once(\"timeout\", handler);\n  return this;\n};\n\nServerResponse.prototype.json = function json(obj: unknown): any {\n  this.setHeader(\"Content-Type\", \"application/json\");\n  return this.end(JSON.stringify(obj));\n};\n\nServerResponse.prototype.status = function status(c: number): any {\n  this.statusCode = c;\n  return this;\n};\n\nServerResponse.prototype.redirect = function redirect(target: string | number, loc?: string): void {\n  if (typeof target === \"number\") {\n    this.statusCode = target;\n    this.setHeader(\"Location\", loc!);\n  } else {\n    this.statusCode = 302;\n    this.setHeader(\"Location\", target);\n  }\n  this.end();\n};\n\nServerResponse.prototype.addTrailers = function addTrailers(_headers: Record<string, string>): void {\n  // No-op\n};\n\nServerResponse.prototype._collectedBody = function _collectedBody(): Buffer {\n  return Buffer.concat(this._chunks);\n};\n\nServerResponse.prototype._collectedBodyText = function _collectedBodyText(): string {\n  return this._collectedBody().toString(\"utf8\");\n};\n\n// Server\n\nexport interface Server extends EventEmitter {\n  listening: boolean;\n  maxHeadersCount: number | null;\n  timeout: number;\n  keepAliveTimeout: number;\n  headersTimeout: number;\n  requestTimeout: number;\n  maxRequestsPerSocket: number | null;\n  listen(portOrOpts?: any, hostOrCb?: any, cb?: any): this;\n  close(cb?: (err?: Error) => void): this;\n  address(): NetAddress | null;\n  setTimeout(ms?: number, handler?: () => void): this;\n  ref(): this;\n  unref(): this;\n  closeAllConnections(): void;\n  closeIdleConnections(): void;\n  dispatchUpgrade(target: string, hdrs: Record<string, string>): { req: IncomingMessage; socket: TcpSocket };\n  dispatchRequest(verb: string, target: string, hdrs: Record<string, string>, payload?: Buffer | string): Promise<CompletedResponse>;\n}\n\nexport interface ServerConstructor {\n  new (optsOrHandler?: Record<string, unknown> | HttpHandler, handler?: HttpHandler): Server;\n  (this: any, optsOrHandler?: Record<string, unknown> | HttpHandler, handler?: HttpHandler): void;\n  prototype: any;\n}\n\nexport const Server = function Server(\n  this: any,\n  optsOrHandler?: Record<string, unknown> | HttpHandler,\n  handler?: HttpHandler,\n) {\n  if (!this) return;\n  EventEmitter.call(this);\n\n  if (typeof optsOrHandler === \"function\") {\n    this._handler = optsOrHandler;\n  } else {\n    this._handler = handler;\n  }\n  this._tcp = new TcpServer();\n\n  this.listening = false;\n  this.maxHeadersCount = null;\n  this.timeout = 0;\n  this.keepAliveTimeout = TIMEOUTS.HTTP_KEEP_ALIVE;\n  this.headersTimeout = TIMEOUTS.HTTP_HEADERS;\n  this.requestTimeout = 0;\n  this.maxRequestsPerSocket = null;\n\n  const self = this;\n  this._tcp.on(\"listening\", function onListening() {\n    self.listening = true;\n    self.emit(\"listening\");\n  });\n  this._tcp.on(\"close\", function onClose() {\n    self.listening = false;\n    self.emit(\"close\");\n  });\n  this._tcp.on(\"error\", function onError(e: unknown) { self.emit(\"error\", e); });\n} as unknown as ServerConstructor;\n\nObject.setPrototypeOf(Server.prototype, EventEmitter.prototype);\n\nServer.prototype.listen = function listen(\n  portOrOpts?: number | { port?: number; host?: string },\n  hostOrCb?: string | (() => void),\n  cb?: () => void,\n): any {\n  let port: number | undefined;\n  let host: string | undefined;\n  let done: (() => void) | undefined;\n\n  if (typeof portOrOpts === \"number\") {\n    port = portOrOpts;\n    if (typeof hostOrCb === \"string\") {\n      host = hostOrCb;\n      done = cb;\n    } else done = hostOrCb;\n  } else if (portOrOpts) {\n    port = portOrOpts.port;\n    host = portOrOpts.host;\n    done = typeof hostOrCb === \"function\" ? hostOrCb : cb;\n  }\n\n  const self = this;\n  const origDone = done;\n  done = function onBound() {\n    const addr = self._tcp.address();\n    if (addr) _addServer(addr.port, self);\n    if (origDone) origDone();\n  };\n\n  this._tcp.listen(port, host, done);\n  return this;\n};\n\nServer.prototype.close = function close(cb?: (err?: Error) => void): any {\n  const addr = this._tcp.address();\n  if (addr) _removeServer(addr.port);\n  this._tcp.close(cb);\n  return this;\n};\n\nServer.prototype.address = function address(): NetAddress | null {\n  return this._tcp.address();\n};\n\nServer.prototype.setTimeout = function setTimeout(ms?: number, handler?: () => void): any {\n  this.timeout = ms || 0;\n  if (handler) this.on(\"timeout\", handler);\n  return this;\n};\n\nServer.prototype.ref = function ref(): any {\n  this._tcp.ref();\n  return this;\n};\n\nServer.prototype.unref = function unref(): any {\n  this._tcp.unref();\n  return this;\n};\n\nServer.prototype.closeAllConnections = function closeAllConnections(): void {\n  // No-op\n};\n\nServer.prototype.closeIdleConnections = function closeIdleConnections(): void {\n  // No-op\n};\n\nServer.prototype.dispatchUpgrade = function dispatchUpgrade(\n  target: string,\n  hdrs: Record<string, string>,\n): { req: IncomingMessage; socket: TcpSocket } {\n  const socket = new TcpSocket();\n  (socket as any).cork = () => {};\n  (socket as any).uncork = () => {};\n  (socket as any)._readableState = { endEmitted: false };\n  (socket as any)._writableState = { finished: false, errorEmitted: false };\n\n  const req = new IncomingMessage(socket);\n  req.method = \"GET\";\n  req.url = target;\n  req.headers = {\n    ...hdrs,\n    upgrade: \"websocket\",\n    connection: \"Upgrade\",\n  };\n  for (const [k, v] of Object.entries(req.headers)) {\n    if (typeof v === \"string\") req.rawHeaders.push(k, v);\n  }\n  req.push(null);\n  req.complete = true;\n\n  const self = this;\n  queueMicrotask(() => {\n    const listeners = self.listenerCount(\"upgrade\");\n    if (listeners === 0) {\n      // no 'upgrade' handler means WS handshake never writes, silently breaks HMR, surface it instead of hanging\n      console.warn(`[http.dispatchUpgrade] no 'upgrade' listener on server for ${target} — WS handshake will not complete`);\n    }\n    self.emit(\"upgrade\", req, socket, Buffer.alloc(0));\n  });\n\n  return { req, socket };\n};\n\nServer.prototype.dispatchRequest = async function dispatchRequest(\n  verb: string,\n  target: string,\n  hdrs: Record<string, string>,\n  payload?: Buffer | string,\n): Promise<CompletedResponse> {\n  const self = this;\n  return new Promise((resolve, reject) => {\n    const req = IncomingMessage.build(verb, target, hdrs);\n    const res = new ServerResponse(req);\n    res._onComplete((completed) => {\n      resolve(completed);\n    });\n\n    const timeoutMs = self.timeout || TIMEOUTS.HTTP_DISPATCH_SAFETY;\n    const timer = setTimeout(() => {\n      // tell the user which request stalled so they can correlate it with\n      // whatever wasi/rolldown chatter was going on\n      try {\n        const stderr = (globalThis as any).process?.stderr;\n        const line = `[nodepod] dispatchRequest TIMEOUT after ${timeoutMs}ms for ${verb} ${target}, middleware never responded\\n`;\n        if (stderr && typeof stderr.write === \"function\") stderr.write(line);\n        else console.error(line);\n      } catch {}\n      reject(\n        new Error(\n          `dispatchRequest timed out after ${timeoutMs}ms for ${verb} ${target}`,\n        ),\n      );\n    }, timeoutMs);\n\n    res.on(\"finish\", () => {\n      clearTimeout(timer);\n    });\n\n    // surface middleware errors to both console.error AND stderr.write so they\n    // reach the parent log even from inside a worker. without this a 500 on\n    // /src/index.css is silent.\n    const reportErr = (kind: \"async\" | \"sync\", err: unknown) => {\n      const msg = (err as Error)?.message || String(err);\n      const stack = (err as Error)?.stack?.split(\"\\n\").slice(0, 8).join(\"\\n\") ?? \"\";\n      const line = `[nodepod] dispatchRequest ${kind} error on ${verb} ${target}: ${msg}\\n${stack}\\n`;\n      try { console.error(line); } catch {}\n      try {\n        const stderr = (globalThis as any).process?.stderr;\n        if (stderr && typeof stderr.write === \"function\") stderr.write(line);\n      } catch {}\n    };\n\n    try {\n      // Queue payload before handlers run so middleware/proxies can attach\n      // listeners and read during the handler (matches socket chunk arrival).\n      if (payload !== undefined && payload !== null) {\n        ensureContentLength(req.headers, payload);\n        const chunk = typeof payload === \"string\" ? Buffer.from(payload) : payload;\n        req.push(chunk);\n      }\n\n      self.emit(\"request\", req, res);\n      if (typeof self._handler === \"function\") {\n        const result = self._handler(req, res);\n        if (result && typeof (result as any).then === \"function\") {\n          (result as Promise<unknown>).catch((err) => {\n            clearTimeout(timer);\n            reportErr(\"async\", err);\n            if (!res.headersSent) {\n              try {\n                res.statusCode = 500;\n                res.end(\"Internal Server Error\");\n              } catch { /* ignore */ }\n            } else {\n              try { res.end(); } catch { /* ignore */ }\n            }\n          });\n        }\n      }\n\n      req.push(null);\n      req.complete = true;\n    } catch (err) {\n      clearTimeout(timer);\n      reportErr(\"sync\", err);\n      if (!res.headersSent) {\n        try {\n          res.statusCode = 500;\n          res.end(\"Internal Server Error\");\n        } catch { /* ignore */ }\n      }\n      reject(err);\n    }\n  });\n};\n\n// createServer\n\nexport function createServer(\n  optsOrHandler?: Record<string, unknown> | HttpHandler,\n  handler?: HttpHandler,\n): Server {\n  return new Server(optsOrHandler, handler);\n}\n\n// STATUS_CODES & METHODS\n\nexport const STATUS_CODES: Record<number, string> = {\n  100: \"Continue\",\n  101: \"Switching Protocols\",\n  200: \"OK\",\n  201: \"Created\",\n  202: \"Accepted\",\n  204: \"No Content\",\n  301: \"Moved Permanently\",\n  302: \"Found\",\n  304: \"Not Modified\",\n  400: \"Bad Request\",\n  401: \"Unauthorized\",\n  403: \"Forbidden\",\n  404: \"Not Found\",\n  405: \"Method Not Allowed\",\n  408: \"Request Timeout\",\n  409: \"Conflict\",\n  410: \"Gone\",\n  413: \"Payload Too Large\",\n  415: \"Unsupported Media Type\",\n  422: \"Unprocessable Entity\",\n  429: \"Too Many Requests\",\n  500: \"Internal Server Error\",\n  501: \"Not Implemented\",\n  502: \"Bad Gateway\",\n  503: \"Service Unavailable\",\n  504: \"Gateway Timeout\",\n};\n\nexport const METHODS = [\n  \"GET\",\n  \"POST\",\n  \"PUT\",\n  \"DELETE\",\n  \"PATCH\",\n  \"HEAD\",\n  \"OPTIONS\",\n  \"CONNECT\",\n  \"TRACE\",\n];\n\n// CORS proxy helper — unified with cross-origin.ts allowlist\n\n// ClientRequest  (fetch-backed)\n\nexport interface ClientRequest extends Writable {\n  method: string;\n  path: string;\n  headers: Record<string, string>;\n  finished: boolean;\n  aborted: boolean;\n  reusedSocket: boolean;\n  maxHeadersCount: number | null;\n  readonly socket: TcpSocket;\n  readonly connection: TcpSocket;\n  setHeader(k: string, v: string): void;\n  getHeader(k: string): string | undefined;\n  removeHeader(k: string): void;\n  write(chunk: any, encOrCb?: any, cb?: any): boolean;\n  end(dataOrCb?: any, encOrCb?: any, cb?: any): this;\n  abort(): void;\n  setTimeout(ms: number, handler?: () => void): this;\n  flushHeaders(): void;\n  setNoDelay(noDelay?: boolean): void;\n  setSocketKeepAlive(enable?: boolean, initialDelay?: number): void;\n}\n\nexport interface ClientRequestConstructor {\n  new (opts: ConnectionOptions, proto?: \"http\" | \"https\"): ClientRequest;\n  (this: any, opts: ConnectionOptions, proto?: \"http\" | \"https\"): void;\n  prototype: any;\n}\n\nexport const ClientRequest = function ClientRequest(\n  this: any,\n  opts: ConnectionOptions,\n  proto?: \"http\" | \"https\",\n) {\n  if (!this) return;\n  Writable.call(this);\n\n  this._opts = opts;\n  this._proto = proto || \"http\";\n  this.method = opts.method ?? \"GET\";\n  this.path = opts.path ?? \"/\";\n  this.headers = {};\n  this._pending = [];\n  this._cancelled = false;\n  this._waitMs = null;\n  this._waitTimer = null;\n  this._sealed = false;\n  this._socket = new TcpSocket();\n  this.finished = false;\n  this.aborted = false;\n  this.reusedSocket = false;\n  this.maxHeadersCount = null;\n\n  if (opts.headers) {\n    for (const [k, v] of Object.entries(opts.headers)) {\n      this.headers[k.toLowerCase()] = Array.isArray(v) ? v.join(\", \") : v;\n    }\n  }\n  // Emit socket event async\n  const self = this;\n  queueMicrotask(() => self.emit(\"socket\", self._socket));\n} as unknown as ClientRequestConstructor;\n\nObject.setPrototypeOf(ClientRequest.prototype, Writable.prototype);\n\n// Getters for socket/connection\nObject.defineProperty(ClientRequest.prototype, \"socket\", {\n  get: function (this: any) { return this._socket; },\n  configurable: true,\n});\n\nObject.defineProperty(ClientRequest.prototype, \"connection\", {\n  get: function (this: any) { return this._socket; },\n  configurable: true,\n});\n\nClientRequest.prototype.setHeader = function setHeader(k: string, v: string): void {\n  this.headers[k.toLowerCase()] = v;\n};\n\nClientRequest.prototype.getHeader = function getHeader(k: string): string | undefined {\n  return this.headers[k.toLowerCase()];\n};\n\nClientRequest.prototype.removeHeader = function removeHeader(k: string): void {\n  delete this.headers[k.toLowerCase()];\n};\n\nClientRequest.prototype.write = function write(\n  chunk: Uint8Array | string,\n  encOrCb?: BufferEncoding | ((err?: Error | null) => void),\n  cb?: (err?: Error | null) => void,\n): boolean {\n  const buf = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\n  this._pending.push(buf);\n  const fn = typeof encOrCb === \"function\" ? encOrCb : cb;\n  if (fn) queueMicrotask(() => fn(null));\n  return true;\n};\n\nClientRequest.prototype.end = function end(\n  dataOrCb?: Uint8Array | string | (() => void),\n  encOrCb?: BufferEncoding | (() => void),\n  cb?: () => void,\n): any {\n  if (this._sealed) return this;\n  this._sealed = true;\n  this.finished = true;\n\n  let finalCb = cb;\n  if (typeof dataOrCb === \"function\") {\n    finalCb = dataOrCb;\n  } else if (dataOrCb !== undefined) {\n    this.write(dataOrCb as Uint8Array | string);\n  }\n  if (typeof encOrCb === \"function\") finalCb = encOrCb;\n\n  const self = this;\n  self._dispatch()\n    .then(() => {\n      if (finalCb) finalCb();\n    })\n    .catch((err: Error) => self.emit(\"error\", err));\n\n  return this;\n};\n\nClientRequest.prototype.abort = function abort(): void {\n  this._cancelled = true;\n  this.aborted = true;\n  if (this._waitTimer) clearTimeout(this._waitTimer);\n  this.emit(\"abort\");\n};\n\nClientRequest.prototype.setTimeout = function setTimeout(ms: number, handler?: () => void): any {\n  this._waitMs = ms;\n  if (handler) this.once(\"timeout\", handler);\n  return this;\n};\n\nClientRequest.prototype.flushHeaders = function flushHeaders(): void {\n  // No-op\n};\n\nClientRequest.prototype.setNoDelay = function setNoDelay(_noDelay?: boolean): void {\n  // No-op\n};\n\nClientRequest.prototype.setSocketKeepAlive = function setSocketKeepAlive(\n  _enable?: boolean,\n  _initialDelay?: number,\n): void {\n  // No-op\n};\n\n/* ---------- ClientRequest internal dispatch ---------- */\n\nClientRequest.prototype._dispatch = async function _dispatch(): Promise<void> {\n  if (this._cancelled) return;\n\n  try {\n    const scheme = this._proto === \"https\" ? \"https:\" : \"http:\";\n    let hostname = this._opts.hostname ?? \"\";\n    let portSuffix = this._opts.port ? `:${this._opts.port}` : \"\";\n    if (!hostname && this._opts.host) {\n      const parts = this._opts.host.split(\":\");\n      hostname = parts[0];\n      if (!portSuffix && parts[1]) portSuffix = `:${parts[1]}`;\n    }\n    if (!hostname) hostname = \"localhost\";\n    const endpoint = `${scheme}//${hostname}${portSuffix}${this._opts.path ?? \"/\"}`;\n\n    // WebSocket upgrade -- delegate to native browser WS\n    if (this.headers[\"upgrade\"]?.toLowerCase() === \"websocket\") {\n      this._bridgeWebSocket(endpoint);\n      return;\n    }\n\n    // Route requests to virtual servers through the registry instead of fetch\n    const isLocal = hostname === \"localhost\" || hostname === \"127.0.0.1\" || hostname === \"0.0.0.0\";\n    const port = Number(this._opts.port) || (this._proto === \"https\" ? 443 : 80);\n    if (isLocal) {\n      const body = this._pending.length > 0 ? Buffer.concat(this._pending) : undefined;\n      if (body) ensureContentLength(this.headers, body);\n      const vServer = _registry.get(port);\n      if (vServer) {\n        try {\n          const result = await vServer.dispatchRequest(\n            this.method,\n            this._opts.path ?? \"/\",\n            this.headers,\n            body,\n          );\n          if (this._cancelled) return;\n          const incoming = new IncomingMessage();\n          incoming.statusCode = result.statusCode;\n          incoming.statusMessage = result.statusMessage;\n          applyHeadersToIncomingMessage(incoming, result.headers);\n          incoming._injectBody(result.body);\n          this.emit(\"response\", incoming);\n        } catch (err) {\n          this.emit(\"error\", err);\n        }\n        return;\n      }\n      if (_httpClientBridge) {\n        try {\n          const result = await _httpClientBridge(\n            port,\n            this.method,\n            this._opts.path ?? \"/\",\n            this.headers,\n            body,\n          );\n          if (this._cancelled) return;\n          const incoming = new IncomingMessage();\n          incoming.statusCode = result.statusCode;\n          incoming.statusMessage = result.statusMessage;\n          applyHeadersToIncomingMessage(incoming, result.headers);\n          incoming._injectBody(result.body);\n          this.emit(\"response\", incoming);\n        } catch (err) {\n          this.emit(\"error\", err);\n        }\n        return;\n      }\n      // No virtual server on this port — emit ECONNREFUSED\n      const err = new Error(`connect ECONNREFUSED ${hostname}:${port}`) as NodeJS.ErrnoException;\n      err.code = \"ECONNREFUSED\";\n      err.errno = -111;\n      (err as any).syscall = \"connect\";\n      (err as any).address = hostname;\n      (err as any).port = port;\n      this.emit(\"error\", err);\n      return;\n    }\n\n    let targetUrl: string;\n    try {\n      targetUrl = resolveProxyUrl(endpoint);\n    } catch (e) {\n      const err = e instanceof Error ? e : new Error(String(e));\n      this.emit(\"error\", err);\n      return;\n    }\n\n    const init: RequestInit = { method: this.method, headers: this.headers };\n    if (\n      this._pending.length > 0 &&\n      this.method !== \"GET\" &&\n      this.method !== \"HEAD\"\n    ) {\n      init.body = Buffer.concat(this._pending);\n    }\n\n    const ac = new AbortController();\n    init.signal = ac.signal;\n\n    if (this._waitMs) {\n      this._waitTimer = setTimeout(() => {\n        ac.abort();\n        this.emit(\"timeout\");\n      }, this._waitMs);\n    }\n\n    const resp = await fetch(targetUrl, init);\n    if (this._waitTimer) {\n      clearTimeout(this._waitTimer);\n      this._waitTimer = null;\n    }\n    if (this._cancelled) return;\n\n    const incoming = await this._mapResponse(resp);\n    this.emit(\"response\", incoming);\n  } catch (err) {\n    if (this._waitTimer) clearTimeout(this._waitTimer);\n    if (this._cancelled) return;\n    if (err instanceof Error && err.name === \"AbortError\") return;\n    this.emit(\"error\", err);\n  }\n};\n\nClientRequest.prototype._mapResponse = async function _mapResponse(resp: Response): Promise<IncomingMessage> {\n  const msg = new IncomingMessage();\n  msg.statusCode = resp.status;\n  msg.statusMessage = resp.statusText || STATUS_CODES[resp.status] || \"\";\n  applyHeadersToIncomingMessage(msg, fetchHeadersToNodeRecord(resp.headers));\n  const raw = await resp.arrayBuffer();\n  msg._injectBody(Buffer.from(raw));\n  return msg;\n};\n\n/* ---------- WebSocket upgrade bridge ---------- */\n\nClientRequest.prototype._bridgeWebSocket = function _bridgeWebSocket(url: string): void {\n  const wsUrl = url.replace(/^https:/, \"wss:\").replace(/^http:/, \"ws:\");\n  const wsKey = this.headers[\"sec-websocket-key\"] ?? \"\";\n  const WS = _NativeWebSocket;\n\n  if (!WS) {\n    const self = this;\n    setTimeout(\n      () => self.emit(\"error\", new TypeError(\"No WebSocket available\")),\n      0,\n    );\n    return;\n  }\n\n  const WS_GUID = \"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\";\n  const acceptDigest = createHash(\"sha1\")\n    .update(wsKey + WS_GUID)\n    .digest(\"base64\") as string;\n\n  let ws: globalThis.WebSocket;\n  try {\n    ws = new WS(wsUrl);\n    ws.binaryType = \"arraybuffer\";\n  } catch (e) {\n    const self = this;\n    setTimeout(\n      () => self.emit(\"error\", e instanceof Error ? e : new Error(String(e))),\n      0,\n    );\n    return;\n  }\n\n  const pipe = new TcpSocket();\n  (pipe as any).cork = () => {};\n  (pipe as any).uncork = () => {};\n  (pipe as any)._readableState = { endEmitted: false };\n  (pipe as any)._writableState = { finished: false, errorEmitted: false };\n\n  let outboundBuf = new Uint8Array(0);\n\n  pipe.write = ((\n    chunk: Uint8Array | string,\n    encOrCb?: BufferEncoding | ((err?: Error | null) => void),\n    cb?: (err?: Error | null) => void,\n  ): boolean => {\n    const raw =\n      typeof chunk === \"string\" ? Buffer.from(chunk) : new Uint8Array(chunk);\n    const fn = typeof encOrCb === \"function\" ? encOrCb : cb;\n\n    const merged = new Uint8Array(outboundBuf.length + raw.length);\n    merged.set(outboundBuf, 0);\n    merged.set(raw, outboundBuf.length);\n    outboundBuf = merged;\n\n    while (outboundBuf.length >= 2) {\n      const frame = decodeFrame(outboundBuf);\n      if (!frame) break;\n      outboundBuf = outboundBuf.slice(frame.consumed);\n\n      if (ws.readyState !== WS.OPEN) continue;\n\n      switch (frame.op) {\n        case 0x08:\n          ws.close();\n          break;\n        case 0x09:\n          ws.send(frame.data);\n          break;\n        case 0x0a:\n          break; // pong -- ignore\n        case 0x01:\n          ws.send(new TextDecoder().decode(frame.data));\n          break;\n        case 0x02:\n          ws.send(frame.data);\n          break;\n      }\n    }\n\n    if (fn) queueMicrotask(() => fn(null));\n    return true;\n  }) as any;\n\n  const self = this;\n\n  ws.onopen = () => {\n    const fakeResp = new IncomingMessage(pipe);\n    fakeResp.statusCode = 101;\n    fakeResp.statusMessage = \"Switching Protocols\";\n    fakeResp.headers = {\n      upgrade: \"websocket\",\n      connection: \"Upgrade\",\n      \"sec-websocket-accept\": acceptDigest,\n    };\n    fakeResp.complete = true;\n    fakeResp.push(null);\n    self.emit(\"upgrade\", fakeResp, pipe, Buffer.alloc(0));\n  };\n\n  ws.onmessage = (ev: MessageEvent) => {\n    let payload: Uint8Array;\n    let op: number;\n    if (typeof ev.data === \"string\") {\n      payload = new TextEncoder().encode(ev.data);\n      op = 0x01;\n    } else if (ev.data instanceof ArrayBuffer) {\n      payload = new Uint8Array(ev.data);\n      op = 0x02;\n    } else {\n      return;\n    }\n    const frame = encodeFrame(op, payload, false);\n    pipe._feedData(Buffer.from(frame));\n  };\n\n  ws.onclose = (ev: CloseEvent) => {\n    const code = ev.code || 1000;\n    const closeBuf = new Uint8Array(2);\n    closeBuf[0] = (code >> 8) & 0xff;\n    closeBuf[1] = code & 0xff;\n    const frame = encodeFrame(0x08, closeBuf, false);\n    pipe._feedData(Buffer.from(frame));\n    setTimeout(() => {\n      (pipe as any)._readableState.endEmitted = true;\n      pipe._feedEnd();\n      pipe.emit(\"close\", false);\n    }, 10);\n  };\n\n  ws.onerror = () => {\n    pipe.emit(\"error\", new Error(\"WebSocket transport error\"));\n    pipe.destroy();\n  };\n\n  const origDestroy = pipe.destroy.bind(pipe);\n  pipe.destroy = ((e?: Error): TcpSocket => {\n    if (ws.readyState === WS.OPEN || ws.readyState === WS.CONNECTING)\n      ws.close();\n    return origDestroy(e);\n  }) as any;\n};\n\n// Argument parsing helper\n\nfunction dissectArgs(\n  first: string | URL | ConnectionOptions,\n  second?: ConnectionOptions | ((r: IncomingMessage) => void),\n  third?: (r: IncomingMessage) => void,\n): { opts: ConnectionOptions; cb?: (r: IncomingMessage) => void } {\n  let opts: ConnectionOptions;\n  let cb = third;\n\n  if (typeof first === \"string\" || first instanceof URL) {\n    const parsed = new URL(first.toString());\n    opts = {\n      hostname: parsed.hostname,\n      port: parsed.port ? parseInt(parsed.port, 10) : undefined,\n      path: parsed.pathname + parsed.search,\n      method: \"GET\",\n    };\n    if (typeof second === \"function\") cb = second;\n    else if (second) opts = { ...opts, ...second };\n  } else {\n    opts = first;\n    if (typeof second === \"function\") cb = second;\n  }\n\n  return { opts, cb };\n}\n\n// request / get\n\nexport function request(\n  first: string | URL | ConnectionOptions,\n  second?: ConnectionOptions | ((r: IncomingMessage) => void),\n  third?: (r: IncomingMessage) => void,\n): ClientRequest {\n  const { opts, cb } = dissectArgs(first, second, third);\n  const cr = new ClientRequest(opts, \"http\");\n  if (cb) cr.once(\"response\", cb as unknown as EventHandler);\n  return cr;\n}\n\nexport function get(\n  first: string | URL | ConnectionOptions,\n  second?: ConnectionOptions | ((r: IncomingMessage) => void),\n  third?: (r: IncomingMessage) => void,\n): ClientRequest {\n  const { opts, cb } = dissectArgs(first, second, third);\n  const cr = new ClientRequest({ ...opts, method: \"GET\" }, \"http\");\n  if (cb) cr.once(\"response\", cb as unknown as EventHandler);\n  cr.end();\n  return cr;\n}\n\nexport function _buildClientRequest(\n  first: string | URL | ConnectionOptions,\n  second: ConnectionOptions | ((r: IncomingMessage) => void) | undefined,\n  third: ((r: IncomingMessage) => void) | undefined,\n  proto: \"http\" | \"https\",\n): ClientRequest {\n  const { opts, cb } = dissectArgs(first, second, third);\n  const cr = new ClientRequest(opts, proto);\n  if (cb) cr.once(\"response\", cb as unknown as EventHandler);\n  return cr;\n}\n\n// Server registry (global, for server bridge routing)\n\nexport type RegistryHook = (port: number, srv: Server) => void;\n\nconst _registry = new Map<number, Server>();\nconst _serverOwnership = new Map<number, number>(); // port → pid\nlet _onBind: RegistryHook | null = null;\nlet _onUnbind: ((port: number) => void) | null = null;\n\nexport type HttpClientBridge = (\n  port: number,\n  method: string,\n  path: string,\n  headers: Record<string, string>,\n  body?: Buffer,\n) => Promise<CompletedResponse>;\n\nlet _httpClientBridge: HttpClientBridge | null = null;\n\nfunction _addServer(port: number, srv: Server, ownerPid?: number): void {\n  // loop liveness is held by the inner net.TcpServer's TCPServerWrap handle.\n  // this registry is just the port -> Server map for internal routing.\n  _registry.set(port, srv);\n  if (ownerPid !== undefined) _serverOwnership.set(port, ownerPid);\n  if (_onBind) _onBind(port, srv);\n}\n\nfunction _removeServer(port: number): void {\n  _registry.delete(port);\n  _serverOwnership.delete(port);\n  if (_onUnbind) _onUnbind(port);\n}\n\nexport function getServer(port: number): Server | undefined {\n  return _registry.get(port);\n}\n\nexport function getAllServers(): Map<number, Server> {\n  return new Map(_registry);\n}\n\nexport function closeAllServers(): void {\n  for (const [, srv] of _registry) {\n    try { srv.close(); } catch { /* best effort */ }\n  }\n  _registry.clear();\n  _serverOwnership.clear();\n}\n\nexport function closeServersByPid(pid: number): void {\n  for (const [port, ownerPid] of _serverOwnership) {\n    if (ownerPid === pid) {\n      const srv = _registry.get(port);\n      if (srv) {\n        try { srv.close(); } catch { /* best effort */ }\n      }\n      _registry.delete(port);\n      _serverOwnership.delete(port);\n    }\n  }\n}\n\nexport function getServerOwner(port: number): number | undefined {\n  return _serverOwnership.get(port);\n}\n\nexport function setServerListenCallback(fn: RegistryHook | null): void {\n  _onBind = fn;\n}\n\nexport function setServerCloseCallback(\n  fn: ((port: number) => void) | null,\n): void {\n  _onUnbind = fn;\n}\n\nexport function setHttpClientBridge(fn: HttpClientBridge | null): void {\n  _httpClientBridge = fn;\n}\n\n// Agent\n\nexport interface AgentConfig {\n  keepAlive?: boolean;\n  keepAliveMsecs?: number;\n  maxSockets?: number;\n  maxTotalSockets?: number;\n  maxFreeSockets?: number;\n  scheduling?: \"fifo\" | \"lifo\";\n  timeout?: number;\n}\n\nexport interface Agent extends EventEmitter {\n  maxSockets: number;\n  maxFreeSockets: number;\n  maxTotalSockets: number;\n  sockets: Record<string, TcpSocket[]>;\n  freeSockets: Record<string, TcpSocket[]>;\n  requests: Record<string, IncomingMessage[]>;\n  options: AgentConfig;\n  createConnection(cfg: Record<string, unknown>, done?: (err: Error | null, sock: TcpSocket) => void): TcpSocket;\n  getName(o: { host?: string; port?: number; localAddress?: string }): string;\n  addRequest(r: ClientRequest, o: Record<string, unknown>): void;\n  destroy(): void;\n}\n\nexport interface AgentConstructor {\n  new (cfg?: AgentConfig): Agent;\n  (this: any, cfg?: AgentConfig): void;\n  prototype: any;\n}\n\nexport const Agent = function Agent(this: any, cfg?: AgentConfig) {\n  if (!this) return;\n  EventEmitter.call(this);\n\n  this.options = cfg ?? {};\n  this.maxSockets = cfg?.maxSockets ?? Infinity;\n  this.maxFreeSockets = cfg?.maxFreeSockets ?? 256;\n  this.maxTotalSockets = cfg?.maxTotalSockets ?? Infinity;\n  this.sockets = {};\n  this.freeSockets = {};\n  this.requests = {};\n} as unknown as AgentConstructor;\n\nObject.setPrototypeOf(Agent.prototype, EventEmitter.prototype);\n\nAgent.prototype.createConnection = function createConnection(\n  _cfg: Record<string, unknown>,\n  done?: (err: Error | null, sock: TcpSocket) => void,\n): TcpSocket {\n  const sock = new TcpSocket();\n  if (done) done(null, sock);\n  return sock;\n};\n\nAgent.prototype.getName = function getName(\n  o: { host?: string; port?: number; localAddress?: string },\n): string {\n  return `${o.host ?? \"localhost\"}:${o.port ?? 80}:${o.localAddress ?? \"\"}`;\n};\n\nAgent.prototype.addRequest = function addRequest(\n  _r: ClientRequest,\n  _o: Record<string, unknown>,\n): void {};\n\nAgent.prototype.destroy = function destroy(): void {\n  this.sockets = {};\n  this.freeSockets = {};\n  this.requests = {};\n};\n\nexport const globalAgent = new Agent();\n\n// WebSocket frame codec\n\nexport function decodeFrame(raw: Uint8Array): {\n  op: number;\n  data: Uint8Array;\n  consumed: number;\n} | null {\n  if (raw.length < 2) return null;\n\n  const op = raw[0] & 0x0f;\n  const isMasked = (raw[1] & 0x80) !== 0;\n  let len = raw[1] & 0x7f;\n  let cursor = 2;\n\n  if (len === 126) {\n    if (raw.length < 4) return null;\n    len = (raw[2] << 8) | raw[3];\n    cursor = 4;\n  } else if (len === 127) {\n    if (raw.length < 10) return null;\n    len = (raw[6] << 24) | (raw[7] << 16) | (raw[8] << 8) | raw[9];\n    cursor = 10;\n  }\n\n  if (isMasked) {\n    if (raw.length < cursor + 4 + len) return null;\n    const mask = raw.slice(cursor, cursor + 4);\n    cursor += 4;\n    const payload = new Uint8Array(len);\n    for (let i = 0; i < len; i++) payload[i] = raw[cursor + i] ^ mask[i & 3];\n    return { op, data: payload, consumed: cursor + len };\n  }\n\n  if (raw.length < cursor + len) return null;\n  return { op, data: raw.slice(cursor, cursor + len), consumed: cursor + len };\n}\n\nexport function encodeFrame(\n  op: number,\n  payload: Uint8Array,\n  masked: boolean,\n): Uint8Array {\n  const pLen = payload.length;\n  let headerLen = 2;\n  if (pLen > 125 && pLen <= 0xffff) headerLen += 2;\n  else if (pLen > 0xffff) headerLen += 8;\n  if (masked) headerLen += 4;\n\n  const frame = new Uint8Array(headerLen + pLen);\n  frame[0] = 0x80 | op;\n\n  let pos = 2;\n  if (pLen <= 125) {\n    frame[1] = (masked ? 0x80 : 0) | pLen;\n  } else if (pLen <= 0xffff) {\n    frame[1] = (masked ? 0x80 : 0) | 126;\n    frame[2] = (pLen >> 8) & 0xff;\n    frame[3] = pLen & 0xff;\n    pos = 4;\n  } else {\n    frame[1] = (masked ? 0x80 : 0) | 127;\n    frame[2] = 0;\n    frame[3] = 0;\n    frame[4] = 0;\n    frame[5] = 0;\n    frame[6] = (pLen >> 24) & 0xff;\n    frame[7] = (pLen >> 16) & 0xff;\n    frame[8] = (pLen >> 8) & 0xff;\n    frame[9] = pLen & 0xff;\n    pos = 10;\n  }\n\n  if (masked) {\n    const maskKey = new Uint8Array(4);\n    if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n      crypto.getRandomValues(maskKey);\n    } else {\n      for (let i = 0; i < 4; i++) maskKey[i] = Math.floor(Math.random() * 256);\n    }\n    frame.set(maskKey, pos);\n    pos += 4;\n    for (let i = 0; i < pLen; i++) frame[pos + i] = payload[i] ^ maskKey[i & 3];\n  } else {\n    frame.set(payload, pos);\n  }\n\n  return frame;\n}\n\n// Default export\n\nexport default {\n  Server,\n  IncomingMessage,\n  ServerResponse,\n  ClientRequest,\n  createServer,\n  request,\n  get,\n  STATUS_CODES,\n  METHODS,\n  getServer,\n  getAllServers,\n  setServerListenCallback,\n  setServerCloseCallback,\n  setHttpClientBridge,\n  _buildClientRequest,\n  Agent,\n  globalAgent,\n  decodeFrame,\n  encodeFrame,\n};\n","// Thin facade over http that forces https protocol on client requests\r\n\r\n\r\nimport {\r\n  Server,\r\n  IncomingMessage,\r\n  ServerResponse,\r\n  ClientRequest,\r\n  createServer,\r\n  STATUS_CODES,\r\n  METHODS,\r\n  getServer,\r\n  getAllServers,\r\n  setServerListenCallback,\r\n  setServerCloseCallback,\r\n  _buildClientRequest,\r\n  Agent,\r\n  globalAgent,\r\n} from './http';\r\n\r\nimport type { ConnectionOptions, AgentConfig } from './http';\r\n\r\n// Re-export all shared types and classes under HTTPS naming\r\nexport {\r\n  Server,\r\n  IncomingMessage,\r\n  ServerResponse,\r\n  ClientRequest,\r\n  createServer,\r\n  STATUS_CODES,\r\n  METHODS,\r\n  getServer,\r\n  getAllServers,\r\n  setServerListenCallback,\r\n  setServerCloseCallback,\r\n  Agent,\r\n  globalAgent,\r\n};\r\n\r\nexport type { ConnectionOptions, AgentConfig };\r\n\r\nexport function request(\r\n  target: string | URL | ConnectionOptions,\r\n  optsOrCb?: ConnectionOptions | ((res: IncomingMessage) => void),\r\n  cb?: (res: IncomingMessage) => void\r\n): ClientRequest {\r\n  return _buildClientRequest(target, optsOrCb, cb, 'https');\r\n}\r\n\r\nexport function get(\r\n  target: string | URL | ConnectionOptions,\r\n  optsOrCb?: ConnectionOptions | ((res: IncomingMessage) => void),\r\n  cb?: (res: IncomingMessage) => void\r\n): ClientRequest {\r\n  const cr = _buildClientRequest(target, optsOrCb, cb, 'https');\r\n  cr.end();\r\n  return cr;\r\n}\r\n\r\nexport default {\r\n  Server,\r\n  IncomingMessage,\r\n  ServerResponse,\r\n  ClientRequest,\r\n  createServer,\r\n  request,\r\n  get,\r\n  STATUS_CODES,\r\n  METHODS,\r\n  getServer,\r\n  getAllServers,\r\n  setServerListenCallback,\r\n  setServerCloseCallback,\r\n  Agent,\r\n  globalAgent,\r\n};\r\n","// URL module with legacy parse/format/resolve and fileURLToPath/pathToFileURL\r\n\r\nexport interface Url {\r\n  protocol?: string | null;\r\n  slashes?: boolean | null;\r\n  auth?: string | null;\r\n  host?: string | null;\r\n  port?: string | null;\r\n  hostname?: string | null;\r\n  hash?: string | null;\r\n  search?: string | null;\r\n  query?: string | Record<string, string | string[]> | null;\r\n  pathname?: string | null;\r\n  path?: string | null;\r\n  href?: string;\r\n}\r\n\r\nexport function parse(\r\n  raw: string,\r\n  parseQuery: boolean = false,\r\n  _slashesHost: boolean = false,\r\n): Url {\r\n  try {\r\n    const u = new globalThis.URL(raw, \"http://localhost\");\r\n    const authPart = u.username ? `${u.username}:${u.password}` : null;\r\n    const queryVal = parseQuery\r\n      ? Object.fromEntries(u.searchParams)\r\n      : u.search\r\n        ? u.search.substring(1)\r\n        : null;\r\n\r\n    return {\r\n      protocol: u.protocol,\r\n      slashes: u.protocol.endsWith(\":\"),\r\n      auth: authPart,\r\n      host: u.host,\r\n      port: u.port || null,\r\n      hostname: u.hostname,\r\n      hash: u.hash || null,\r\n      search: u.search || null,\r\n      query: queryVal,\r\n      pathname: u.pathname,\r\n      path: u.pathname + u.search,\r\n      href: u.href,\r\n    };\r\n  } catch {\r\n    return {\r\n      protocol: null,\r\n      slashes: null,\r\n      auth: null,\r\n      host: null,\r\n      port: null,\r\n      hostname: null,\r\n      hash: null,\r\n      search: null,\r\n      query: null,\r\n      pathname: raw,\r\n      path: raw,\r\n      href: raw,\r\n    };\r\n  }\r\n}\r\n\r\nexport function format(obj: Url): string {\r\n  if (obj.href) return obj.href;\r\n\r\n  let result = \"\";\r\n\r\n  if (obj.protocol) {\r\n    result += obj.protocol.endsWith(\":\") ? obj.protocol : obj.protocol + \":\";\r\n  }\r\n\r\n  if (obj.slashes || obj.protocol === \"http:\" || obj.protocol === \"https:\") {\r\n    result += \"//\";\r\n  }\r\n\r\n  if (obj.auth) result += obj.auth + \"@\";\r\n\r\n  if (obj.hostname) {\r\n    result += obj.hostname;\r\n  } else if (obj.host) {\r\n    result += obj.host;\r\n  }\r\n\r\n  if (obj.port) result += \":\" + obj.port;\r\n  if (obj.pathname) result += obj.pathname;\r\n\r\n  if (obj.search) {\r\n    result += obj.search;\r\n  } else if (obj.query) {\r\n    if (typeof obj.query === \"string\") {\r\n      result += \"?\" + obj.query;\r\n    } else {\r\n      const params = new globalThis.URLSearchParams();\r\n      for (const [key, val] of Object.entries(obj.query)) {\r\n        if (Array.isArray(val)) {\r\n          for (const item of val) params.append(key, item);\r\n        } else {\r\n          params.set(key, val);\r\n        }\r\n      }\r\n      const qs = params.toString();\r\n      if (qs) result += \"?\" + qs;\r\n    }\r\n  }\r\n\r\n  if (obj.hash) result += obj.hash;\r\n\r\n  return result;\r\n}\r\n\r\nexport function resolve(base: string, target: string): string {\r\n  try {\r\n    return new globalThis.URL(target, base).href;\r\n  } catch {\r\n    return target;\r\n  }\r\n}\r\n\r\n// Re-export the native browser URL and URLSearchParams\r\nexport const URL = globalThis.URL;\r\nexport const URLSearchParams = globalThis.URLSearchParams;\r\n\r\nexport function fileURLToPath(input: string | URL): string {\r\n  if (typeof input === \"string\") {\r\n    // Bare filesystem path — return as-is\r\n    if (input.startsWith(\"/\")) return input;\r\n    try {\r\n      const urlObj = new globalThis.URL(input);\r\n      if (urlObj.protocol === \"file:\") {\r\n        return decodeURIComponent(urlObj.pathname);\r\n      }\r\n      // Non-file URL (http:, blob:, etc.) — return the pathname portion\r\n      return decodeURIComponent(urlObj.pathname);\r\n    } catch {\r\n      // Not a valid URL at all — return as-is\r\n      return input;\r\n    }\r\n  }\r\n  // URL object\r\n  if (input.protocol === \"file:\") {\r\n    return decodeURIComponent(input.pathname);\r\n  }\r\n  return decodeURIComponent(input.pathname);\r\n}\r\n\r\nexport function pathToFileURL(fsPath: string): URL {\r\n  // already a file:// URL, don't double-prefix\r\n  if (fsPath.startsWith(\"file://\")) {\r\n    return new globalThis.URL(fsPath);\r\n  }\r\n  const encoded = encodeURIComponent(fsPath).replace(/%2F/g, \"/\");\r\n  return new globalThis.URL(\"file://\" + encoded);\r\n}\r\n\r\nexport function domainToASCII(domain: string): string {\r\n  try {\r\n    return new globalThis.URL(`http://${domain}`).hostname;\r\n  } catch {\r\n    return domain;\r\n  }\r\n}\r\n\r\nexport function domainToUnicode(domain: string): string {\r\n  return domain;\r\n}\r\n\r\nexport default {\r\n  parse,\r\n  format,\r\n  resolve,\r\n  URL,\r\n  URLSearchParams,\r\n  fileURLToPath,\r\n  pathToFileURL,\r\n  domainToASCII,\r\n  domainToUnicode,\r\n};\r\n","// Querystring parse/stringify/escape/unescape\r\n\r\n\r\nexport type ParsedQuery = Record<string, string | string[]>;\r\n\r\n// supports duplicate keys (values become arrays) and custom separators\r\nexport function parse(\r\n  input: string,\r\n  pairSep: string = '&',\r\n  kvSep: string = '=',\r\n  options?: { maxKeys?: number }\r\n): ParsedQuery {\r\n  const output: ParsedQuery = {};\r\n  if (!input || typeof input !== 'string') return output;\r\n\r\n  const ceiling = options?.maxKeys || 1000;\r\n  const segments = input.split(pairSep);\r\n  const limit = ceiling > 0 ? Math.min(segments.length, ceiling) : segments.length;\r\n\r\n  for (let i = 0; i < limit; i++) {\r\n    const segment = segments[i];\r\n    const eqPos = segment.indexOf(kvSep);\r\n    let k: string;\r\n    let v: string;\r\n\r\n    if (eqPos >= 0) {\r\n      k = decodeURIComponent(segment.substring(0, eqPos).replace(/\\+/g, ' '));\r\n      v = decodeURIComponent(segment.substring(eqPos + 1).replace(/\\+/g, ' '));\r\n    } else {\r\n      k = decodeURIComponent(segment.replace(/\\+/g, ' '));\r\n      v = '';\r\n    }\r\n\r\n    if (k in output) {\r\n      const prev = output[k];\r\n      if (Array.isArray(prev)) {\r\n        prev.push(v);\r\n      } else {\r\n        output[k] = [prev, v];\r\n      }\r\n    } else {\r\n      output[k] = v;\r\n    }\r\n  }\r\n\r\n  return output;\r\n}\r\n\r\nexport function stringify(\r\n  obj: Record<string, string | string[] | number | boolean | undefined>,\r\n  pairSep: string = '&',\r\n  kvSep: string = '='\r\n): string {\r\n  if (!obj || typeof obj !== 'object') return '';\r\n\r\n  const parts: string[] = [];\r\n\r\n  for (const [key, val] of Object.entries(obj)) {\r\n    if (val === undefined) continue;\r\n    const encodedKey = encodeURIComponent(key);\r\n\r\n    if (Array.isArray(val)) {\r\n      for (const item of val) {\r\n        parts.push(`${encodedKey}${kvSep}${encodeURIComponent(String(item))}`);\r\n      }\r\n    } else {\r\n      parts.push(`${encodedKey}${kvSep}${encodeURIComponent(String(val))}`);\r\n    }\r\n  }\r\n\r\n  return parts.join(pairSep);\r\n}\r\n\r\nexport function escape(text: string): string {\r\n  return encodeURIComponent(text);\r\n}\r\n\r\nexport function unescape(text: string): string {\r\n  return decodeURIComponent(text.replace(/\\+/g, ' '));\r\n}\r\n\r\n// Node.js compatibility aliases\r\nexport const encode = stringify;\r\nexport const decode = parse;\r\n\r\nexport default {\r\n  parse,\r\n  stringify,\r\n  escape,\r\n  unescape,\r\n  encode,\r\n  decode,\r\n};\r\n","// Utility helpers: format, inspect, inherits, promisify, deprecate, type checks, etc.\r\n\r\n\r\nexport function format(template: unknown, ...values: unknown[]): string {\r\n  if (typeof template !== \"string\") {\r\n    // non-string first arg: inspect all args\r\n    return [template, ...values].map((v) => typeof v === \"string\" ? v : inspect(v)).join(\" \");\r\n  }\r\n\r\n  let idx = 0;\r\n  let result = template.replace(/%[sdjifoO%]/g, (token) => {\r\n    if (token === \"%%\") return \"%\";\r\n    if (idx >= values.length) return token;\r\n\r\n    const val = values[idx++];\r\n    switch (token) {\r\n      case \"%s\":\r\n        return String(val);\r\n      case \"%d\":\r\n      case \"%i\":\r\n        return String(parseInt(String(val), 10));\r\n      case \"%f\":\r\n        return String(parseFloat(String(val)));\r\n      case \"%j\":\r\n        try {\r\n          return JSON.stringify(val);\r\n        } catch {\r\n          return \"[Circular]\";\r\n        }\r\n      case \"%o\":\r\n      case \"%O\":\r\n        return inspect(val);\r\n      default:\r\n        return token;\r\n    }\r\n  });\r\n\r\n  // append extra args beyond what format specifiers consumed (matches Node.js)\r\n  while (idx < values.length) {\r\n    const v = values[idx++];\r\n    result += \" \" + (typeof v === \"string\" ? v : inspect(v));\r\n  }\r\n\r\n  return result;\r\n}\r\n\r\nexport function inspect(\r\n  target: unknown,\r\n  opts?: { depth?: number; colors?: boolean },\r\n): string {\r\n  const visited = new WeakSet();\r\n  const maxDepth = opts?.depth ?? 2;\r\n\r\n  function render(val: unknown, level: number): string {\r\n    if (val === null) return \"null\";\r\n    if (val === undefined) return \"undefined\";\r\n\r\n    const kind = typeof val;\r\n    if (kind === \"string\") return `'${val}'`;\r\n    if (kind === \"number\" || kind === \"boolean\" || kind === \"bigint\")\r\n      return String(val);\r\n    if (kind === \"symbol\") return (val as symbol).toString();\r\n    if (kind === \"function\") {\r\n      const fname = (val as Function).name || \"anonymous\";\r\n      return `[Function: ${fname}]`;\r\n    }\r\n    if (kind !== \"object\") return String(val);\r\n\r\n    if (visited.has(val as object)) return \"[Circular]\";\r\n    visited.add(val as object);\r\n\r\n    if (level > maxDepth) {\r\n      return Array.isArray(val) ? \"[Array]\" : \"[Object]\";\r\n    }\r\n\r\n    if (Array.isArray(val)) {\r\n      if (val.length === 0) return \"[]\";\r\n      const items = val.map((item) => render(item, level + 1));\r\n      return `[ ${items.join(\", \")} ]`;\r\n    }\r\n\r\n    if (val instanceof Date) return val.toISOString();\r\n    if (val instanceof RegExp) return val.toString();\r\n    if (val instanceof Error) return `${val.name}: ${val.message}`;\r\n\r\n    if (val instanceof Map) {\r\n      const pairs = [...val.entries()].map(\r\n        ([k, v]) => `${render(k, level + 1)} => ${render(v, level + 1)}`,\r\n      );\r\n      return `Map(${val.size}) { ${pairs.join(\", \")} }`;\r\n    }\r\n\r\n    if (val instanceof Set) {\r\n      const items = [...val].map((v) => render(v, level + 1));\r\n      return `Set(${val.size}) { ${items.join(\", \")} }`;\r\n    }\r\n\r\n    const keys = Object.keys(val as object);\r\n    if (keys.length === 0) return \"{}\";\r\n    const fields = keys.map((k) => {\r\n      const v = (val as Record<string, unknown>)[k];\r\n      return `${k}: ${render(v, level + 1)}`;\r\n    });\r\n    return `{ ${fields.join(\", \")} }`;\r\n  }\r\n\r\n  return render(target, 0);\r\n}\r\n\r\nexport function inherits(child: Function, parent: Function): void {\r\n  if (child === undefined || child === null) {\r\n    throw new TypeError(\"inherits: child constructor must be provided\");\r\n  }\r\n  if (parent === undefined || parent === null) return;\r\n  if (parent.prototype === undefined) return;\r\n  (child as any).super_ = parent;\r\n  Object.setPrototypeOf(child.prototype, parent.prototype);\r\n}\r\n\r\n// deprecated, equivalent to Object.assign\r\nexport function _extend(target: any, source: any): any {\r\n  if (source == null) return target;\r\n  const keys = Object.keys(source);\r\n  for (let i = 0; i < keys.length; i++) {\r\n    target[keys[i]] = source[keys[i]];\r\n  }\r\n  return target;\r\n}\r\n\r\nexport function deprecate<T extends Function>(\r\n  fn: T,\r\n  message: string,\r\n  code?: string,\r\n): T {\r\n  let alerted = false;\r\n  const wrapper = function (this: unknown, ...args: unknown[]) {\r\n    if (!alerted) {\r\n      console.warn(`DeprecationWarning: ${message}${code ? ` (${code})` : \"\"}`);\r\n      alerted = true;\r\n    }\r\n    return fn.apply(this, args);\r\n  };\r\n  return wrapper as unknown as T;\r\n}\r\n\r\nexport function promisify<T>(\r\n  fn: (...args: any[]) => void,\r\n): (...args: any[]) => Promise<T> {\r\n  return (...args: any[]) =>\r\n    new Promise((ok, fail) => {\r\n      fn(...args, (err: Error | null, result: T) => {\r\n        if (err) fail(err);\r\n        else ok(result);\r\n      });\r\n    });\r\n}\r\n\r\nexport function callbackify<T>(\r\n  fn: (...args: any[]) => Promise<T>,\r\n): (...args: any[]) => void {\r\n  return (...args: any[]) => {\r\n    const cb = args.pop() as (err: Error | null, result: T) => void;\r\n    fn(...args)\r\n      .then((result) => cb(null, result))\r\n      .catch((err) => cb(err, undefined as unknown as T));\r\n  };\r\n}\r\n\r\nexport function isDeepStrictEqual(a: unknown, b: unknown): boolean {\r\n  if (a === b) return true;\r\n  if (a === null || b === null) return false;\r\n  if (typeof a !== typeof b) return false;\r\n\r\n  if (typeof a === \"object\") {\r\n    if (Array.isArray(a) && Array.isArray(b)) {\r\n      if (a.length !== b.length) return false;\r\n      return a.every((item, i) => isDeepStrictEqual(item, b[i]));\r\n    }\r\n    if (Array.isArray(a) !== Array.isArray(b)) return false;\r\n\r\n    const keysA = Object.keys(a as object);\r\n    const keysB = Object.keys(b as object);\r\n    if (keysA.length !== keysB.length) return false;\r\n\r\n    return keysA.every((k) =>\r\n      isDeepStrictEqual(\r\n        (a as Record<string, unknown>)[k],\r\n        (b as Record<string, unknown>)[k],\r\n      ),\r\n    );\r\n  }\r\n\r\n  return false;\r\n}\r\n\r\nexport function isArray(val: unknown): val is unknown[] {\r\n  return Array.isArray(val);\r\n}\r\nexport function isBoolean(val: unknown): val is boolean {\r\n  return typeof val === \"boolean\";\r\n}\r\nexport function isNull(val: unknown): val is null {\r\n  return val === null;\r\n}\r\nexport function isNullOrUndefined(val: unknown): val is null | undefined {\r\n  return val == null;\r\n}\r\nexport function isNumber(val: unknown): val is number {\r\n  return typeof val === \"number\";\r\n}\r\nexport function isString(val: unknown): val is string {\r\n  return typeof val === \"string\";\r\n}\r\nexport function isUndefined(val: unknown): val is undefined {\r\n  return val === undefined;\r\n}\r\nexport function isRegExp(val: unknown): val is RegExp {\r\n  return val instanceof RegExp;\r\n}\r\nexport function isObject(val: unknown): val is object {\r\n  return typeof val === \"object\" && val !== null;\r\n}\r\nexport function isDate(val: unknown): val is Date {\r\n  return val instanceof Date;\r\n}\r\nexport function isError(val: unknown): val is Error {\r\n  return val instanceof Error;\r\n}\r\nexport function isFunction(val: unknown): val is Function {\r\n  return typeof val === \"function\";\r\n}\r\nexport function isPrimitive(val: unknown): boolean {\r\n  return val === null || (typeof val !== \"object\" && typeof val !== \"function\");\r\n}\r\nexport function isBuffer(val: unknown): boolean {\r\n  return val instanceof Uint8Array;\r\n}\r\nexport function isPromise(val: unknown): val is Promise<unknown> {\r\n  return val instanceof Promise;\r\n}\r\n\r\n// returns a logger when NODE_DEBUG includes the given section\r\nexport function debuglog(section: string): (...args: unknown[]) => void {\r\n  const envDebug =\r\n    (typeof process !== \"undefined\" && process.env?.NODE_DEBUG) || \"\";\r\n  const active = envDebug.toLowerCase().includes(section.toLowerCase());\r\n\r\n  if (active) {\r\n    return (...args: unknown[]) => {\r\n      console.error(`${section.toUpperCase()} ${process?.pid || 0}:`, ...args);\r\n    };\r\n  }\r\n  return () => {};\r\n}\r\n\r\nexport const debug = debuglog;\r\n\r\nexport function stripVTControlCharacters(text: string): string {\r\n  // eslint-disable-next-line no-control-regex\r\n  return text.replace(\r\n    /\\x1B\\[[0-9;]*[a-zA-Z]|\\x1B\\].*?(\\x07|\\x1B\\\\)|\\x1B[()][A-Z0-9]|\\x1B[#=]|\\x1B./g,\r\n    \"\",\r\n  );\r\n}\r\n\r\nexport const types = {\r\n  isArray,\r\n  isBoolean,\r\n  isNull,\r\n  isNullOrUndefined,\r\n  isNumber,\r\n  isString,\r\n  isUndefined,\r\n  isRegExp,\r\n  isObject,\r\n  isDate,\r\n  isError,\r\n  isFunction,\r\n  isPrimitive,\r\n  isBuffer,\r\n  isPromise,\r\n};\r\n\r\n// styleText (Node.js 21.7+)\r\n\r\nconst ANSI_STYLES: Record<string, [number, number]> = {\r\n  // Modifiers\r\n  reset: [0, 0],\r\n  bold: [1, 22],\r\n  dim: [2, 22],\r\n  italic: [3, 23],\r\n  underline: [4, 24],\r\n  inverse: [7, 27],\r\n  hidden: [8, 28],\r\n  strikethrough: [9, 29],\r\n  // Foreground colors\r\n  black: [30, 39],\r\n  red: [31, 39],\r\n  green: [32, 39],\r\n  yellow: [33, 39],\r\n  blue: [34, 39],\r\n  magenta: [35, 39],\r\n  cyan: [36, 39],\r\n  white: [37, 39],\r\n  gray: [90, 39],\r\n  grey: [90, 39],\r\n  blackBright: [90, 39],\r\n  redBright: [91, 39],\r\n  greenBright: [92, 39],\r\n  yellowBright: [93, 39],\r\n  blueBright: [94, 39],\r\n  magentaBright: [95, 39],\r\n  cyanBright: [96, 39],\r\n  whiteBright: [97, 39],\r\n  // Background colors\r\n  bgBlack: [40, 49],\r\n  bgRed: [41, 49],\r\n  bgGreen: [42, 49],\r\n  bgYellow: [43, 49],\r\n  bgBlue: [44, 49],\r\n  bgMagenta: [45, 49],\r\n  bgCyan: [46, 49],\r\n  bgWhite: [47, 49],\r\n  bgBlackBright: [100, 49],\r\n  bgRedBright: [101, 49],\r\n  bgGreenBright: [102, 49],\r\n  bgYellowBright: [103, 49],\r\n  bgBlueBright: [104, 49],\r\n  bgMagentaBright: [105, 49],\r\n  bgCyanBright: [106, 49],\r\n  bgWhiteBright: [107, 49],\r\n};\r\n\r\nexport function styleText(format: string | string[], text: string): string {\r\n  const formats = Array.isArray(format) ? format : [format];\r\n  let result = text;\r\n  for (const f of formats) {\r\n    const style = ANSI_STYLES[f];\r\n    if (style) {\r\n      result = `\\x1b[${style[0]}m${result}\\x1b[${style[1]}m`;\r\n    }\r\n  }\r\n  return result;\r\n}\r\n\r\n// parseArgs (Node.js 18.3+)\r\n\r\ninterface ParseArgsOptionConfig {\r\n  type: \"string\" | \"boolean\";\r\n  short?: string;\r\n  multiple?: boolean;\r\n  default?: string | boolean | string[] | boolean[];\r\n}\r\n\r\ninterface ParseArgsConfig {\r\n  args?: string[];\r\n  options?: Record<string, ParseArgsOptionConfig>;\r\n  strict?: boolean;\r\n  allowPositionals?: boolean;\r\n  tokens?: boolean;\r\n}\r\n\r\ninterface ParseArgsResult {\r\n  values: Record<string, string | boolean | (string | boolean)[] | undefined>;\r\n  positionals: string[];\r\n  tokens?: Array<{\r\n    kind: string;\r\n    name?: string;\r\n    value?: string | boolean;\r\n    index: number;\r\n  }>;\r\n}\r\n\r\nexport function parseArgs(config?: ParseArgsConfig): ParseArgsResult {\r\n  const args =\r\n    config?.args ??\r\n    (typeof process !== \"undefined\" ? process.argv.slice(2) : []);\r\n  const optDefs = config?.options ?? {};\r\n  const allowPositionals = config?.allowPositionals ?? !config?.options;\r\n  const strict = config?.strict ?? true;\r\n  const wantTokens = config?.tokens ?? false;\r\n\r\n  // Build short → long name map\r\n  const shortMap: Record<string, string> = {};\r\n  for (const [name, def] of Object.entries(optDefs)) {\r\n    if (def.short) shortMap[def.short] = name;\r\n  }\r\n\r\n  const values: Record<\r\n    string,\r\n    string | boolean | (string | boolean)[] | undefined\r\n  > = {};\r\n  const positionals: string[] = [];\r\n  const tokens: Array<{\r\n    kind: string;\r\n    name?: string;\r\n    value?: string | boolean;\r\n    index: number;\r\n  }> = [];\r\n\r\n  // Initialize defaults\r\n  for (const [name, def] of Object.entries(optDefs)) {\r\n    if (def.default !== undefined) {\r\n      values[name] = def.default;\r\n    }\r\n  }\r\n\r\n  let i = 0;\r\n  let afterDash = false;\r\n  while (i < args.length) {\r\n    const arg = args[i];\r\n\r\n    if (afterDash || !arg.startsWith(\"-\") || arg === \"-\") {\r\n      if (!allowPositionals && strict && !afterDash) {\r\n        throw new Error(`Unexpected argument '${arg}'`);\r\n      }\r\n      positionals.push(arg);\r\n      if (wantTokens) tokens.push({ kind: \"positional\", value: arg, index: i });\r\n      i++;\r\n      continue;\r\n    }\r\n\r\n    if (arg === \"--\") {\r\n      afterDash = true;\r\n      if (wantTokens) tokens.push({ kind: \"option-terminator\", index: i });\r\n      i++;\r\n      continue;\r\n    }\r\n\r\n    // --long or --long=value\r\n    if (arg.startsWith(\"--\")) {\r\n      const eqIdx = arg.indexOf(\"=\");\r\n      const rawName = eqIdx !== -1 ? arg.slice(2, eqIdx) : arg.slice(2);\r\n      const def = optDefs[rawName];\r\n\r\n      if (!def && strict) {\r\n        throw new Error(`Unknown option '--${rawName}'`);\r\n      }\r\n\r\n      const type = def?.type ?? \"boolean\";\r\n      let val: string | boolean;\r\n\r\n      if (type === \"boolean\") {\r\n        val = eqIdx !== -1 ? arg.slice(eqIdx + 1) !== \"false\" : true;\r\n      } else {\r\n        if (eqIdx !== -1) {\r\n          val = arg.slice(eqIdx + 1);\r\n        } else if (i + 1 < args.length) {\r\n          val = args[++i];\r\n        } else {\r\n          throw new Error(`Option '--${rawName}' requires a value`);\r\n        }\r\n      }\r\n\r\n      if (def?.multiple) {\r\n        const arr = (values[rawName] as (string | boolean)[] | undefined) ?? [];\r\n        arr.push(val);\r\n        values[rawName] = arr;\r\n      } else {\r\n        values[rawName] = val;\r\n      }\r\n\r\n      if (wantTokens)\r\n        tokens.push({ kind: \"option\", name: rawName, value: val, index: i });\r\n      i++;\r\n      continue;\r\n    }\r\n\r\n    // -s (short options)\r\n    if (arg.startsWith(\"-\") && arg.length > 1) {\r\n      // Handle combined short flags: -abc → -a -b -c\r\n      const chars = arg.slice(1);\r\n      for (let c = 0; c < chars.length; c++) {\r\n        const ch = chars[c];\r\n        const longName = shortMap[ch];\r\n\r\n        if (!longName && strict) {\r\n          throw new Error(`Unknown option '-${ch}'`);\r\n        }\r\n\r\n        const name = longName ?? ch;\r\n        const def = longName ? optDefs[longName] : undefined;\r\n        const type = def?.type ?? \"boolean\";\r\n\r\n        let val: string | boolean;\r\n        if (type === \"boolean\") {\r\n          val = true;\r\n        } else {\r\n          // Rest of chars is the value, or next arg\r\n          const rest = chars.slice(c + 1);\r\n          if (rest.length > 0) {\r\n            val = rest;\r\n            c = chars.length; // break inner loop\r\n          } else if (i + 1 < args.length) {\r\n            val = args[++i];\r\n          } else {\r\n            throw new Error(`Option '-${ch}' requires a value`);\r\n          }\r\n        }\r\n\r\n        if (def?.multiple) {\r\n          const arr = (values[name] as (string | boolean)[] | undefined) ?? [];\r\n          arr.push(val);\r\n          values[name] = arr;\r\n        } else {\r\n          values[name] = val;\r\n        }\r\n\r\n        if (wantTokens)\r\n          tokens.push({ kind: \"option\", name, value: val, index: i });\r\n      }\r\n      i++;\r\n      continue;\r\n    }\r\n\r\n    i++;\r\n  }\r\n\r\n  const result: ParseArgsResult = { values, positionals };\r\n  if (wantTokens) result.tokens = tokens;\r\n  return result;\r\n}\r\n\r\nexport const TextEncoder = globalThis.TextEncoder;\r\nexport const TextDecoder = globalThis.TextDecoder;\r\n\r\nexport default {\r\n  format,\r\n  inspect,\r\n  inherits,\r\n  _extend,\r\n  deprecate,\r\n  promisify,\r\n  callbackify,\r\n  isDeepStrictEqual,\r\n  debuglog,\r\n  debug,\r\n  stripVTControlCharacters,\r\n  isArray,\r\n  isBoolean,\r\n  isNull,\r\n  isNullOrUndefined,\r\n  isNumber,\r\n  isString,\r\n  isUndefined,\r\n  isRegExp,\r\n  isObject,\r\n  isDate,\r\n  isError,\r\n  isFunction,\r\n  isPrimitive,\r\n  isBuffer,\r\n  isPromise,\r\n  styleText,\r\n  parseArgs,\r\n  types,\r\n  TextEncoder,\r\n  TextDecoder,\r\n};\r\n","// TTY polyfill - always reports non-TTY in browser\r\n\r\n\r\n// always false in browser\r\nexport function isatty(_fd: number): boolean {\r\n  return false;\r\n}\r\n\r\nexport interface ReadStream {\r\n  isTTY: boolean;\r\n  isRaw: boolean;\r\n  setRawMode(_mode: boolean): this;\r\n}\r\n\r\nexport const ReadStream = function ReadStream(this: any) {\r\n  if (!this) return;\r\n  this.isTTY = false;\r\n  this.isRaw = false;\r\n} as unknown as { new(): ReadStream; prototype: any };\r\n\r\nReadStream.prototype.setRawMode = function setRawMode(_mode: boolean) {\r\n  this.isRaw = _mode;\r\n  return this;\r\n};\r\n\r\nexport interface WriteStream {\r\n  isTTY: boolean;\r\n  columns: number;\r\n  rows: number;\r\n  getColorDepth(): number;\r\n  hasColors(count?: number): boolean;\r\n  getWindowSize(): [number, number];\r\n  clearLine(_dir: number, _cb?: () => void): boolean;\r\n  clearScreenDown(_cb?: () => void): boolean;\r\n  cursorTo(_x: number, _y?: number | (() => void), _cb?: () => void): boolean;\r\n  moveCursor(_dx: number, _dy: number, _cb?: () => void): boolean;\r\n}\r\n\r\nexport const WriteStream = function WriteStream(this: any) {\r\n  if (!this) return;\r\n  this.isTTY = false;\r\n  this.columns = 120;\r\n  this.rows = 40;\r\n} as unknown as { new(): WriteStream; prototype: any };\r\n\r\nWriteStream.prototype.getColorDepth = function getColorDepth(): number { return 8; };\r\nWriteStream.prototype.hasColors = function hasColors(count?: number): boolean {\r\n  return (count ?? 1) <= 256;\r\n};\r\nWriteStream.prototype.getWindowSize = function getWindowSize(): [number, number] {\r\n  return [this.columns, this.rows];\r\n};\r\nWriteStream.prototype.clearLine = function clearLine(_dir: number, _cb?: () => void): boolean {\r\n  _cb?.();\r\n  return true;\r\n};\r\nWriteStream.prototype.clearScreenDown = function clearScreenDown(_cb?: () => void): boolean {\r\n  _cb?.();\r\n  return true;\r\n};\r\nWriteStream.prototype.cursorTo = function cursorTo(_x: number, _y?: number | (() => void), _cb?: () => void): boolean {\r\n  if (typeof _y === \"function\") _y();\r\n  else _cb?.();\r\n  return true;\r\n};\r\nWriteStream.prototype.moveCursor = function moveCursor(_dx: number, _dy: number, _cb?: () => void): boolean {\r\n  _cb?.();\r\n  return true;\r\n};\r\n\r\nexport default { isatty, ReadStream, WriteStream };\r\n","// OS polyfill returning plausible Linux-like values\r\n\r\n\r\nimport { MOCK_OS, MOCK_IDS, MOCK_CPU, MOCK_MEMORY, MOCK_LOADAVG } from \"../constants/config\";\r\n\r\nexport function hostname(): string {\r\n  return MOCK_OS.HOSTNAME;\r\n}\r\n\r\nexport function platform(): string {\r\n  return MOCK_OS.PLATFORM;\r\n}\r\n\r\nexport function arch(): string {\r\n  return MOCK_OS.ARCH;\r\n}\r\n\r\nexport function type(): string {\r\n  return MOCK_OS.TYPE;\r\n}\r\n\r\nexport function release(): string {\r\n  return MOCK_OS.RELEASE;\r\n}\r\n\r\nexport function version(): string {\r\n  return MOCK_OS.VERSION;\r\n}\r\n\r\nexport function machine(): string {\r\n  return MOCK_OS.MACHINE;\r\n}\r\n\r\nexport function tmpdir(): string {\r\n  return MOCK_OS.TMPDIR;\r\n}\r\n\r\nexport function homedir(): string {\r\n  return MOCK_OS.HOMEDIR;\r\n}\r\n\r\ninterface CpuEntry {\r\n  model: string;\r\n  speed: number;\r\n  times: { user: number; nice: number; sys: number; idle: number; irq: number };\r\n}\r\n\r\nexport function cpus(): CpuEntry[] {\r\n  const template: CpuEntry = {\r\n    model: MOCK_CPU.MODEL,\r\n    speed: MOCK_CPU.SPEED,\r\n    times: { user: 0, nice: 0, sys: 0, idle: 0, irq: 0 },\r\n  };\r\n  return Array.from({ length: MOCK_CPU.COUNT }, () => ({ ...template }));\r\n}\r\n\r\nexport function totalmem(): number {\r\n  return MOCK_MEMORY.TOTAL;\r\n}\r\n\r\nexport function freemem(): number {\r\n  return MOCK_MEMORY.FREE;\r\n}\r\n\r\nexport function uptime(): number {\r\n  return Math.floor(performance.now() / 1000);\r\n}\r\n\r\nexport function loadavg(): [number, number, number] {\r\n  return [...MOCK_LOADAVG];\r\n}\r\n\r\ninterface NetIface {\r\n  address: string;\r\n  netmask: string;\r\n  family: string;\r\n  mac: string;\r\n  internal: boolean;\r\n  cidr: string;\r\n}\r\n\r\nexport function networkInterfaces(): Record<string, NetIface[]> {\r\n  return {\r\n    lo: [\r\n      {\r\n        address: '127.0.0.1',\r\n        netmask: '255.0.0.0',\r\n        family: 'IPv4',\r\n        mac: '00:00:00:00:00:00',\r\n        internal: true,\r\n        cidr: '127.0.0.1/8',\r\n      },\r\n    ],\r\n  };\r\n}\r\n\r\nexport function userInfo(): {\r\n  username: string;\r\n  uid: number;\r\n  gid: number;\r\n  shell: string;\r\n  homedir: string;\r\n} {\r\n  return {\r\n    username: MOCK_OS.USERNAME,\r\n    uid: MOCK_IDS.UID,\r\n    gid: MOCK_IDS.GID,\r\n    shell: MOCK_OS.SHELL,\r\n    homedir: MOCK_OS.HOMEDIR,\r\n  };\r\n}\r\n\r\nexport function endianness(): 'BE' | 'LE' {\r\n  return MOCK_OS.ENDIANNESS;\r\n}\r\n\r\nexport function getPriority(_pid?: number): number {\r\n  return 0;\r\n}\r\n\r\nexport function setPriority(_pidOrPriority: number, _priority?: number): void {\r\n  // no-op in browser\r\n}\r\n\r\nexport const EOL = '\\n';\r\n\r\nexport const devNull = '/dev/null';\r\n\r\nexport const constants = {\r\n  signals: {\r\n    SIGHUP: 1,\r\n    SIGINT: 2,\r\n    SIGQUIT: 3,\r\n    SIGILL: 4,\r\n    SIGTRAP: 5,\r\n    SIGABRT: 6,\r\n    SIGBUS: 7,\r\n    SIGFPE: 8,\r\n    SIGKILL: 9,\r\n    SIGUSR1: 10,\r\n    SIGSEGV: 11,\r\n    SIGUSR2: 12,\r\n    SIGPIPE: 13,\r\n    SIGALRM: 14,\r\n    SIGTERM: 15,\r\n    SIGCHLD: 17,\r\n    SIGCONT: 18,\r\n    SIGSTOP: 19,\r\n    SIGTSTP: 20,\r\n    SIGTTIN: 21,\r\n    SIGTTOU: 22,\r\n    SIGURG: 23,\r\n    SIGXCPU: 24,\r\n    SIGXFSZ: 25,\r\n    SIGVTALRM: 26,\r\n    SIGPROF: 27,\r\n    SIGWINCH: 28,\r\n    SIGIO: 29,\r\n    SIGPWR: 30,\r\n    SIGSYS: 31,\r\n  },\r\n  errno: {\r\n    EPERM: -1,\r\n    ENOENT: -2,\r\n    ESRCH: -3,\r\n    EINTR: -4,\r\n    EIO: -5,\r\n    ENXIO: -6,\r\n    E2BIG: -7,\r\n    ENOEXEC: -8,\r\n    EBADF: -9,\r\n    ECHILD: -10,\r\n    EAGAIN: -11,\r\n    ENOMEM: -12,\r\n    EACCES: -13,\r\n    EFAULT: -14,\r\n    EBUSY: -16,\r\n    EEXIST: -17,\r\n    EXDEV: -18,\r\n    ENODEV: -19,\r\n    ENOTDIR: -20,\r\n    EISDIR: -21,\r\n    EINVAL: -22,\r\n    ENFILE: -23,\r\n    EMFILE: -24,\r\n    ENOTTY: -25,\r\n    EFBIG: -27,\r\n    ENOSPC: -28,\r\n    ESPIPE: -29,\r\n    EROFS: -30,\r\n    EMLINK: -31,\r\n    EPIPE: -32,\r\n    EDOM: -33,\r\n    ERANGE: -34,\r\n    ENOTEMPTY: -39,\r\n    ENOSYS: -38,\r\n    ELOOP: -40,\r\n    ENAMETOOLONG: -36,\r\n    ECONNRESET: -104,\r\n    ECONNREFUSED: -111,\r\n    EADDRINUSE: -98,\r\n    EADDRNOTAVAIL: -99,\r\n    ETIMEDOUT: -110,\r\n  },\r\n  priority: {\r\n    PRIORITY_LOW: 19,\r\n    PRIORITY_BELOW_NORMAL: 10,\r\n    PRIORITY_NORMAL: 0,\r\n    PRIORITY_ABOVE_NORMAL: -7,\r\n    PRIORITY_HIGH: -14,\r\n    PRIORITY_HIGHEST: -20,\r\n  },\r\n};\r\n\r\nexport default {\r\n  hostname,\r\n  platform,\r\n  arch,\r\n  type,\r\n  release,\r\n  version,\r\n  machine,\r\n  tmpdir,\r\n  homedir,\r\n  cpus,\r\n  totalmem,\r\n  freemem,\r\n  uptime,\r\n  loadavg,\r\n  networkInterfaces,\r\n  userInfo,\r\n  endianness,\r\n  getPriority,\r\n  setPriority,\r\n  EOL,\r\n  devNull,\r\n  constants,\r\n};\r\n","// Pinned CDN versions and URLs\r\n\r\nexport const PINNED_ESBUILD_WASM = '0.20.0';\r\nexport const PINNED_ROLLUP_BROWSER = '4.44.0';\r\nexport const PINNED_BROTLI_WASM = '3.0.1';\r\nexport const PINNED_LIGHTNINGCSS_WASM = '1.31.1';\r\nexport const PINNED_WA_SQLITE = '1.0.0';\r\n\r\nexport const CDN_ESBUILD_ESM = `https://esm.sh/esbuild-wasm@${PINNED_ESBUILD_WASM}`;\r\nexport const CDN_ESBUILD_BINARY = `https://esm.sh/esbuild-wasm@${PINNED_ESBUILD_WASM}/esbuild.wasm`;\r\nexport const CDN_ROLLUP_BROWSER = `https://esm.sh/@rollup/browser@${PINNED_ROLLUP_BROWSER}`;\r\n// jsdelivr serves raw files without rebundling. esm.sh rebundles everything\r\n// which breaks brotli-wasm's circular WASM/JS-glue dependencies, causing\r\n// `(void 0) is not a function` at runtime. The pkg.web variant has a proper\r\n// init() that fetches the co-located .wasm binary via import.meta.url.\r\nexport const CDN_BROTLI_WASM = `https://cdn.jsdelivr.net/npm/brotli-wasm@${PINNED_BROTLI_WASM}/pkg.web/brotli_wasm.js`;\r\nexport const CDN_LIGHTNINGCSS_WASM = `https://esm.sh/lightningcss-wasm@${PINNED_LIGHTNINGCSS_WASM}`;\r\nexport const CDN_WA_SQLITE = `https://cdn.jsdelivr.net/npm/wa-sqlite@${PINNED_WA_SQLITE}/dist/wa-sqlite.mjs`;\r\nexport const CDN_WA_SQLITE_WASM = `https://cdn.jsdelivr.net/npm/wa-sqlite@${PINNED_WA_SQLITE}/dist/wa-sqlite.wasm`;\r\n\r\n// new Function hides import() from bundler static analysis so CDN URLs work at runtime\r\n// eslint-disable-next-line @typescript-eslint/no-implied-eval\r\nconst _dynamicImport = new Function(\"url\", \"return import(url)\") as (url: string) => Promise<any>;\r\nexport { _dynamicImport as cdnImport };\r\n","function BrotliInput(buffer) {\n  this.buffer = buffer;\n  this.pos = 0;\n}\n\nBrotliInput.prototype.read = function(buf, i, count) {\n  if (this.pos + count > this.buffer.length) {\n    count = this.buffer.length - this.pos;\n  }\n  \n  for (var p = 0; p < count; p++)\n    buf[i + p] = this.buffer[this.pos + p];\n  \n  this.pos += count;\n  return count;\n}\n\nexports.BrotliInput = BrotliInput;\n\nfunction BrotliOutput(buf) {\n  this.buffer = buf;\n  this.pos = 0;\n}\n\nBrotliOutput.prototype.write = function(buf, count) {\n  if (this.pos + count > this.buffer.length)\n    throw new Error('Output buffer is not large enough');\n  \n  this.buffer.set(buf.subarray(0, count), this.pos);\n  this.pos += count;\n  return count;\n};\n\nexports.BrotliOutput = BrotliOutput;\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Bit reading helpers\n*/\n\nvar BROTLI_READ_SIZE = 4096;\nvar BROTLI_IBUF_SIZE =  (2 * BROTLI_READ_SIZE + 32);\nvar BROTLI_IBUF_MASK =  (2 * BROTLI_READ_SIZE - 1);\n\nvar kBitMask = new Uint32Array([\n  0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767,\n  65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215\n]);\n\n/* Input byte buffer, consist of a ringbuffer and a \"slack\" region where */\n/* bytes from the start of the ringbuffer are copied. */\nfunction BrotliBitReader(input) {\n  this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE);\n  this.input_ = input;    /* input callback */\n  \n  this.reset();\n}\n\nBrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;\nBrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;\n\nBrotliBitReader.prototype.reset = function() {\n  this.buf_ptr_ = 0;      /* next input will write here */\n  this.val_ = 0;          /* pre-fetched bits */\n  this.pos_ = 0;          /* byte position in stream */\n  this.bit_pos_ = 0;      /* current bit-reading position in val_ */\n  this.bit_end_pos_ = 0;  /* bit-reading end position from LSB of val_ */\n  this.eos_ = 0;          /* input stream is finished */\n  \n  this.readMoreInput();\n  for (var i = 0; i < 4; i++) {\n    this.val_ |= this.buf_[this.pos_] << (8 * i);\n    ++this.pos_;\n  }\n  \n  return this.bit_end_pos_ > 0;\n};\n\n/* Fills up the input ringbuffer by calling the input callback.\n\n   Does nothing if there are at least 32 bytes present after current position.\n\n   Returns 0 if either:\n    - the input callback returned an error, or\n    - there is no more input and the position is past the end of the stream.\n\n   After encountering the end of the input stream, 32 additional zero bytes are\n   copied to the ringbuffer, therefore it is safe to call this function after\n   every 32 bytes of input is read.\n*/\nBrotliBitReader.prototype.readMoreInput = function() {\n  if (this.bit_end_pos_ > 256) {\n    return;\n  } else if (this.eos_) {\n    if (this.bit_pos_ > this.bit_end_pos_)\n      throw new Error('Unexpected end of input ' + this.bit_pos_ + ' ' + this.bit_end_pos_);\n  } else {\n    var dst = this.buf_ptr_;\n    var bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE);\n    if (bytes_read < 0) {\n      throw new Error('Unexpected end of input');\n    }\n    \n    if (bytes_read < BROTLI_READ_SIZE) {\n      this.eos_ = 1;\n      /* Store 32 bytes of zero after the stream end. */\n      for (var p = 0; p < 32; p++)\n        this.buf_[dst + bytes_read + p] = 0;\n    }\n    \n    if (dst === 0) {\n      /* Copy the head of the ringbuffer to the slack region. */\n      for (var p = 0; p < 32; p++)\n        this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p];\n\n      this.buf_ptr_ = BROTLI_READ_SIZE;\n    } else {\n      this.buf_ptr_ = 0;\n    }\n    \n    this.bit_end_pos_ += bytes_read << 3;\n  }\n};\n\n/* Guarantees that there are at least 24 bits in the buffer. */\nBrotliBitReader.prototype.fillBitWindow = function() {    \n  while (this.bit_pos_ >= 8) {\n    this.val_ >>>= 8;\n    this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24;\n    ++this.pos_;\n    this.bit_pos_ = this.bit_pos_ - 8 >>> 0;\n    this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0;\n  }\n};\n\n/* Reads the specified number of bits from Read Buffer. */\nBrotliBitReader.prototype.readBits = function(n_bits) {\n  if (32 - this.bit_pos_ < n_bits) {\n    this.fillBitWindow();\n  }\n  \n  var val = ((this.val_ >>> this.bit_pos_) & kBitMask[n_bits]);\n  this.bit_pos_ += n_bits;\n  return val;\n};\n\nmodule.exports = BrotliBitReader;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","module.exports=\"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\";\n","var base64 = require('base64-js');\n\n/**\n * The normal dictionary-data.js is quite large, which makes it \n * unsuitable for browser usage. In order to make it smaller, \n * we read dictionary.bin, which is a compressed version of\n * the dictionary, and on initial load, Brotli decompresses \n * it's own dictionary. 😜\n */\nexports.init = function() {\n  var BrotliDecompressBuffer = require('./decode').BrotliDecompressBuffer;\n  var compressed = base64.toByteArray(require('./dictionary.bin.js'));\n  return BrotliDecompressBuffer(compressed);\n};\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Collection of static dictionary words.\n*/\n\nvar data = require('./dictionary-data');\nexports.init = function() {\n  exports.dictionary = data.init();\n};\n\nexports.offsetsByLength = new Uint32Array([\n     0,     0,     0,     0,     0,  4096,  9216, 21504, 35840, 44032,\n 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,\n 115968, 118528, 119872, 121280, 122016,\n]);\n\nexports.sizeBitsByLength = new Uint8Array([\n  0,  0,  0,  0, 10, 10, 11, 11, 10, 10,\n 10, 10, 10,  9,  9,  8,  7,  7,  8,  7,\n  7,  6,  6,  5,  5,\n]);\n\nexports.minDictionaryWordLength = 4;\nexports.maxDictionaryWordLength = 24;\n","function HuffmanCode(bits, value) {\n  this.bits = bits;   /* number of bits used for this symbol */\n  this.value = value; /* symbol value or table offset */\n}\n\nexports.HuffmanCode = HuffmanCode;\n\nvar MAX_LENGTH = 15;\n\n/* Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the\n   bit-wise reversal of the len least significant bits of key. */\nfunction GetNextKey(key, len) {\n  var step = 1 << (len - 1);\n  while (key & step) {\n    step >>= 1;\n  }\n  return (key & (step - 1)) + step;\n}\n\n/* Stores code in table[0], table[step], table[2*step], ..., table[end] */\n/* Assumes that end is an integer multiple of step */\nfunction ReplicateValue(table, i, step, end, code) {\n  do {\n    end -= step;\n    table[i + end] = new HuffmanCode(code.bits, code.value);\n  } while (end > 0);\n}\n\n/* Returns the table width of the next 2nd level table. count is the histogram\n   of bit lengths for the remaining symbols, len is the code length of the next\n   processed symbol */\nfunction NextTableBitSize(count, len, root_bits) {\n  var left = 1 << (len - root_bits);\n  while (len < MAX_LENGTH) {\n    left -= count[len];\n    if (left <= 0) break;\n    ++len;\n    left <<= 1;\n  }\n  return len - root_bits;\n}\n\nexports.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) {\n  var start_table = table;\n  var code;            /* current table entry */\n  var len;             /* current code length */\n  var symbol;          /* symbol index in original or sorted table */\n  var key;             /* reversed prefix code */\n  var step;            /* step size to replicate values in current table */\n  var low;             /* low bits for current root entry */\n  var mask;            /* mask for low bits */\n  var table_bits;      /* key length of current table */\n  var table_size;      /* size of current table */\n  var total_size;      /* sum of root table size and 2nd level table sizes */\n  var sorted;          /* symbols sorted by code length */\n  var count = new Int32Array(MAX_LENGTH + 1);  /* number of codes of each length */\n  var offset = new Int32Array(MAX_LENGTH + 1);  /* offsets in sorted table for each length */\n\n  sorted = new Int32Array(code_lengths_size);\n\n  /* build histogram of code lengths */\n  for (symbol = 0; symbol < code_lengths_size; symbol++) {\n    count[code_lengths[symbol]]++;\n  }\n\n  /* generate offsets into sorted symbol table by code length */\n  offset[1] = 0;\n  for (len = 1; len < MAX_LENGTH; len++) {\n    offset[len + 1] = offset[len] + count[len];\n  }\n\n  /* sort symbols by length, by symbol order within each length */\n  for (symbol = 0; symbol < code_lengths_size; symbol++) {\n    if (code_lengths[symbol] !== 0) {\n      sorted[offset[code_lengths[symbol]]++] = symbol;\n    }\n  }\n  \n  table_bits = root_bits;\n  table_size = 1 << table_bits;\n  total_size = table_size;\n\n  /* special case code with only one value */\n  if (offset[MAX_LENGTH] === 1) {\n    for (key = 0; key < total_size; ++key) {\n      root_table[table + key] = new HuffmanCode(0, sorted[0] & 0xffff);\n    }\n    \n    return total_size;\n  }\n\n  /* fill in root table */\n  key = 0;\n  symbol = 0;\n  for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {\n    for (; count[len] > 0; --count[len]) {\n      code = new HuffmanCode(len & 0xff, sorted[symbol++] & 0xffff);\n      ReplicateValue(root_table, table + key, step, table_size, code);\n      key = GetNextKey(key, len);\n    }\n  }\n\n  /* fill in 2nd level tables and add pointers to root table */\n  mask = total_size - 1;\n  low = -1;\n  for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {\n    for (; count[len] > 0; --count[len]) {\n      if ((key & mask) !== low) {\n        table += table_size;\n        table_bits = NextTableBitSize(count, len, root_bits);\n        table_size = 1 << table_bits;\n        total_size += table_size;\n        low = key & mask;\n        root_table[start_table + low] = new HuffmanCode((table_bits + root_bits) & 0xff, ((table - start_table) - low) & 0xffff);\n      }\n      code = new HuffmanCode((len - root_bits) & 0xff, sorted[symbol++] & 0xffff);\n      ReplicateValue(root_table, table + (key >> root_bits), step, table_size, code);\n      key = GetNextKey(key, len);\n    }\n  }\n  \n  return total_size;\n}\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Lookup table to map the previous two bytes to a context id.\n\n   There are four different context modeling modes defined here:\n     CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,\n     CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,\n     CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,\n     CONTEXT_SIGNED: second-order context model tuned for signed integers.\n\n   The context id for the UTF8 context model is calculated as follows. If p1\n   and p2 are the previous two bytes, we calcualte the context as\n\n     context = kContextLookup[p1] | kContextLookup[p2 + 256].\n\n   If the previous two bytes are ASCII characters (i.e. < 128), this will be\n   equivalent to\n\n     context = 4 * context1(p1) + context2(p2),\n\n   where context1 is based on the previous byte in the following way:\n\n     0  : non-ASCII control\n     1  : \\t, \\n, \\r\n     2  : space\n     3  : other punctuation\n     4  : \" '\n     5  : %\n     6  : ( < [ {\n     7  : ) > ] }\n     8  : , ; :\n     9  : .\n     10 : =\n     11 : number\n     12 : upper-case vowel\n     13 : upper-case consonant\n     14 : lower-case vowel\n     15 : lower-case consonant\n\n   and context2 is based on the second last byte:\n\n     0 : control, space\n     1 : punctuation\n     2 : upper-case letter, number\n     3 : lower-case letter\n\n   If the last byte is ASCII, and the second last byte is not (in a valid UTF8\n   stream it will be a continuation byte, value between 128 and 191), the\n   context is the same as if the second last byte was an ASCII control or space.\n\n   If the last byte is a UTF8 lead byte (value >= 192), then the next byte will\n   be a continuation byte and the context id is 2 or 3 depending on the LSB of\n   the last byte and to a lesser extent on the second last byte if it is ASCII.\n\n   If the last byte is a UTF8 continuation byte, the second last byte can be:\n     - continuation byte: the next byte is probably ASCII or lead byte (assuming\n       4-byte UTF8 characters are rare) and the context id is 0 or 1.\n     - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1\n     - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3\n\n   The possible value combinations of the previous two bytes, the range of\n   context ids and the type of the next byte is summarized in the table below:\n\n   |--------\\-----------------------------------------------------------------|\n   |         \\                         Last byte                              |\n   | Second   \\---------------------------------------------------------------|\n   | last byte \\    ASCII            |   cont. byte        |   lead byte      |\n   |            \\   (0-127)          |   (128-191)         |   (192-)         |\n   |=============|===================|=====================|==================|\n   |  ASCII      | next: ASCII/lead  |  not valid          |  next: cont.     |\n   |  (0-127)    | context: 4 - 63   |                     |  context: 2 - 3  |\n   |-------------|-------------------|---------------------|------------------|\n   |  cont. byte | next: ASCII/lead  |  next: ASCII/lead   |  next: cont.     |\n   |  (128-191)  | context: 4 - 63   |  context: 0 - 1     |  context: 2 - 3  |\n   |-------------|-------------------|---------------------|------------------|\n   |  lead byte  | not valid         |  next: ASCII/lead   |  not valid       |\n   |  (192-207)  |                   |  context: 0 - 1     |                  |\n   |-------------|-------------------|---------------------|------------------|\n   |  lead byte  | not valid         |  next: cont.        |  not valid       |\n   |  (208-)     |                   |  context: 2 - 3     |                  |\n   |-------------|-------------------|---------------------|------------------|\n\n   The context id for the signed context mode is calculated as:\n\n     context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].\n\n   For any context modeling modes, the context ids can be calculated by |-ing\n   together two lookups from one table using context model dependent offsets:\n\n     context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].\n\n   where offset1 and offset2 are dependent on the context mode.\n*/\n\nvar CONTEXT_LSB6         = 0;\nvar CONTEXT_MSB6         = 1;\nvar CONTEXT_UTF8         = 2;\nvar CONTEXT_SIGNED       = 3;\n\n/* Common context lookup table for all context modes. */\nexports.lookup = new Uint8Array([\n  /* CONTEXT_UTF8, last byte. */\n  /* ASCII range. */\n   0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  4,  0,  0,  4,  0,  0,\n   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n   8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,\n  44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,\n  12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,\n  52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,\n  12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,\n  60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12,  0,\n  /* UTF8 continuation byte range. */\n  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n  0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n  /* UTF8 lead byte range. */\n  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n  2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n  /* CONTEXT_UTF8 second last byte. */\n  /* ASCII range. */\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,\n  1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,\n  1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,\n  /* UTF8 continuation byte range. */\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  /* UTF8 lead byte range. */\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  /* CONTEXT_SIGNED, second last byte. */\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n  4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,\n  /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */\n   0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n  16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n  32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n  40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n  48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,\n  /* CONTEXT_LSB6, last byte. */\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,\n  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n  /* CONTEXT_MSB6, last byte. */\n   0,  0,  0,  0,  1,  1,  1,  1,  2,  2,  2,  2,  3,  3,  3,  3,\n   4,  4,  4,  4,  5,  5,  5,  5,  6,  6,  6,  6,  7,  7,  7,  7,\n   8,  8,  8,  8,  9,  9,  9,  9, 10, 10, 10, 10, 11, 11, 11, 11,\n  12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,\n  16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,\n  20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,\n  24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,\n  28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,\n  32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,\n  36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,\n  40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,\n  44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,\n  48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,\n  52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,\n  56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,\n  60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,\n  /* CONTEXT_{M,L}SB6, second last byte, */\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n]);\n\nexports.lookupOffsets = new Uint16Array([\n  /* CONTEXT_LSB6 */\n  1024, 1536,\n  /* CONTEXT_MSB6 */\n  1280, 1536,\n  /* CONTEXT_UTF8 */\n  0, 256,\n  /* CONTEXT_SIGNED */\n  768, 512,\n]);\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Lookup tables to map prefix codes to value ranges. This is used during\n   decoding of the block lengths, literal insertion lengths and copy lengths.\n*/\n\n/* Represents the range of values belonging to a prefix code: */\n/* [offset, offset + 2^nbits) */\nfunction PrefixCodeRange(offset, nbits) {\n  this.offset = offset;\n  this.nbits = nbits;\n}\n\nexports.kBlockLengthPrefixCode = [\n  new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2),\n  new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3),\n  new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4),\n  new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5),\n  new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8),\n  new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12),\n  new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24)\n];\n\nexports.kInsertLengthPrefixCode = [\n  new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0),\n  new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1),\n  new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3),\n  new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5),\n  new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9),\n  new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24),\n];\n\nexports.kCopyLengthPrefixCode = [\n  new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0),\n  new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0),\n  new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2),\n  new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4),\n  new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7),\n  new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24),\n];\n\nexports.kInsertRangeLut = [\n  0, 0, 8, 8, 0, 16, 8, 16, 16,\n];\n\nexports.kCopyRangeLut = [\n  0, 8, 0, 8, 16, 0, 16, 8, 16,\n];\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\n   Transformations on dictionary words.\n*/\n\nvar BrotliDictionary = require('./dictionary');\n\nvar kIdentity       = 0;\nvar kOmitLast1      = 1;\nvar kOmitLast2      = 2;\nvar kOmitLast3      = 3;\nvar kOmitLast4      = 4;\nvar kOmitLast5      = 5;\nvar kOmitLast6      = 6;\nvar kOmitLast7      = 7;\nvar kOmitLast8      = 8;\nvar kOmitLast9      = 9;\nvar kUppercaseFirst = 10;\nvar kUppercaseAll   = 11;\nvar kOmitFirst1     = 12;\nvar kOmitFirst2     = 13;\nvar kOmitFirst3     = 14;\nvar kOmitFirst4     = 15;\nvar kOmitFirst5     = 16;\nvar kOmitFirst6     = 17;\nvar kOmitFirst7     = 18;\nvar kOmitFirst8     = 19;\nvar kOmitFirst9     = 20;\n\nfunction Transform(prefix, transform, suffix) {\n  this.prefix = new Uint8Array(prefix.length);\n  this.transform = transform;\n  this.suffix = new Uint8Array(suffix.length);\n  \n  for (var i = 0; i < prefix.length; i++)\n    this.prefix[i] = prefix.charCodeAt(i);\n  \n  for (var i = 0; i < suffix.length; i++)\n    this.suffix[i] = suffix.charCodeAt(i);\n}\n\nvar kTransforms = [\n     new Transform(         \"\", kIdentity,       \"\"           ),\n     new Transform(         \"\", kIdentity,       \" \"          ),\n     new Transform(        \" \", kIdentity,       \" \"          ),\n     new Transform(         \"\", kOmitFirst1,     \"\"           ),\n     new Transform(         \"\", kUppercaseFirst, \" \"          ),\n     new Transform(         \"\", kIdentity,       \" the \"      ),\n     new Transform(        \" \", kIdentity,       \"\"           ),\n     new Transform(       \"s \", kIdentity,       \" \"          ),\n     new Transform(         \"\", kIdentity,       \" of \"       ),\n     new Transform(         \"\", kUppercaseFirst, \"\"           ),\n     new Transform(         \"\", kIdentity,       \" and \"      ),\n     new Transform(         \"\", kOmitFirst2,     \"\"           ),\n     new Transform(         \"\", kOmitLast1,      \"\"           ),\n     new Transform(       \", \", kIdentity,       \" \"          ),\n     new Transform(         \"\", kIdentity,       \", \"         ),\n     new Transform(        \" \", kUppercaseFirst, \" \"          ),\n     new Transform(         \"\", kIdentity,       \" in \"       ),\n     new Transform(         \"\", kIdentity,       \" to \"       ),\n     new Transform(       \"e \", kIdentity,       \" \"          ),\n     new Transform(         \"\", kIdentity,       \"\\\"\"         ),\n     new Transform(         \"\", kIdentity,       \".\"          ),\n     new Transform(         \"\", kIdentity,       \"\\\">\"        ),\n     new Transform(         \"\", kIdentity,       \"\\n\"         ),\n     new Transform(         \"\", kOmitLast3,      \"\"           ),\n     new Transform(         \"\", kIdentity,       \"]\"          ),\n     new Transform(         \"\", kIdentity,       \" for \"      ),\n     new Transform(         \"\", kOmitFirst3,     \"\"           ),\n     new Transform(         \"\", kOmitLast2,      \"\"           ),\n     new Transform(         \"\", kIdentity,       \" a \"        ),\n     new Transform(         \"\", kIdentity,       \" that \"     ),\n     new Transform(        \" \", kUppercaseFirst, \"\"           ),\n     new Transform(         \"\", kIdentity,       \". \"         ),\n     new Transform(        \".\", kIdentity,       \"\"           ),\n     new Transform(        \" \", kIdentity,       \", \"         ),\n     new Transform(         \"\", kOmitFirst4,     \"\"           ),\n     new Transform(         \"\", kIdentity,       \" with \"     ),\n     new Transform(         \"\", kIdentity,       \"'\"          ),\n     new Transform(         \"\", kIdentity,       \" from \"     ),\n     new Transform(         \"\", kIdentity,       \" by \"       ),\n     new Transform(         \"\", kOmitFirst5,     \"\"           ),\n     new Transform(         \"\", kOmitFirst6,     \"\"           ),\n     new Transform(    \" the \", kIdentity,       \"\"           ),\n     new Transform(         \"\", kOmitLast4,      \"\"           ),\n     new Transform(         \"\", kIdentity,       \". The \"     ),\n     new Transform(         \"\", kUppercaseAll,   \"\"           ),\n     new Transform(         \"\", kIdentity,       \" on \"       ),\n     new Transform(         \"\", kIdentity,       \" as \"       ),\n     new Transform(         \"\", kIdentity,       \" is \"       ),\n     new Transform(         \"\", kOmitLast7,      \"\"           ),\n     new Transform(         \"\", kOmitLast1,      \"ing \"       ),\n     new Transform(         \"\", kIdentity,       \"\\n\\t\"       ),\n     new Transform(         \"\", kIdentity,       \":\"          ),\n     new Transform(        \" \", kIdentity,       \". \"         ),\n     new Transform(         \"\", kIdentity,       \"ed \"        ),\n     new Transform(         \"\", kOmitFirst9,     \"\"           ),\n     new Transform(         \"\", kOmitFirst7,     \"\"           ),\n     new Transform(         \"\", kOmitLast6,      \"\"           ),\n     new Transform(         \"\", kIdentity,       \"(\"          ),\n     new Transform(         \"\", kUppercaseFirst, \", \"         ),\n     new Transform(         \"\", kOmitLast8,      \"\"           ),\n     new Transform(         \"\", kIdentity,       \" at \"       ),\n     new Transform(         \"\", kIdentity,       \"ly \"        ),\n     new Transform(    \" the \", kIdentity,       \" of \"       ),\n     new Transform(         \"\", kOmitLast5,      \"\"           ),\n     new Transform(         \"\", kOmitLast9,      \"\"           ),\n     new Transform(        \" \", kUppercaseFirst, \", \"         ),\n     new Transform(         \"\", kUppercaseFirst, \"\\\"\"         ),\n     new Transform(        \".\", kIdentity,       \"(\"          ),\n     new Transform(         \"\", kUppercaseAll,   \" \"          ),\n     new Transform(         \"\", kUppercaseFirst, \"\\\">\"        ),\n     new Transform(         \"\", kIdentity,       \"=\\\"\"        ),\n     new Transform(        \" \", kIdentity,       \".\"          ),\n     new Transform(    \".com/\", kIdentity,       \"\"           ),\n     new Transform(    \" the \", kIdentity,       \" of the \"   ),\n     new Transform(         \"\", kUppercaseFirst, \"'\"          ),\n     new Transform(         \"\", kIdentity,       \". This \"    ),\n     new Transform(         \"\", kIdentity,       \",\"          ),\n     new Transform(        \".\", kIdentity,       \" \"          ),\n     new Transform(         \"\", kUppercaseFirst, \"(\"          ),\n     new Transform(         \"\", kUppercaseFirst, \".\"          ),\n     new Transform(         \"\", kIdentity,       \" not \"      ),\n     new Transform(        \" \", kIdentity,       \"=\\\"\"        ),\n     new Transform(         \"\", kIdentity,       \"er \"        ),\n     new Transform(        \" \", kUppercaseAll,   \" \"          ),\n     new Transform(         \"\", kIdentity,       \"al \"        ),\n     new Transform(        \" \", kUppercaseAll,   \"\"           ),\n     new Transform(         \"\", kIdentity,       \"='\"         ),\n     new Transform(         \"\", kUppercaseAll,   \"\\\"\"         ),\n     new Transform(         \"\", kUppercaseFirst, \". \"         ),\n     new Transform(        \" \", kIdentity,       \"(\"          ),\n     new Transform(         \"\", kIdentity,       \"ful \"       ),\n     new Transform(        \" \", kUppercaseFirst, \". \"         ),\n     new Transform(         \"\", kIdentity,       \"ive \"       ),\n     new Transform(         \"\", kIdentity,       \"less \"      ),\n     new Transform(         \"\", kUppercaseAll,   \"'\"          ),\n     new Transform(         \"\", kIdentity,       \"est \"       ),\n     new Transform(        \" \", kUppercaseFirst, \".\"          ),\n     new Transform(         \"\", kUppercaseAll,   \"\\\">\"        ),\n     new Transform(        \" \", kIdentity,       \"='\"         ),\n     new Transform(         \"\", kUppercaseFirst, \",\"          ),\n     new Transform(         \"\", kIdentity,       \"ize \"       ),\n     new Transform(         \"\", kUppercaseAll,   \".\"          ),\n     new Transform( \"\\xc2\\xa0\", kIdentity,       \"\"           ),\n     new Transform(        \" \", kIdentity,       \",\"          ),\n     new Transform(         \"\", kUppercaseFirst, \"=\\\"\"        ),\n     new Transform(         \"\", kUppercaseAll,   \"=\\\"\"        ),\n     new Transform(         \"\", kIdentity,       \"ous \"       ),\n     new Transform(         \"\", kUppercaseAll,   \", \"         ),\n     new Transform(         \"\", kUppercaseFirst, \"='\"         ),\n     new Transform(        \" \", kUppercaseFirst, \",\"          ),\n     new Transform(        \" \", kUppercaseAll,   \"=\\\"\"        ),\n     new Transform(        \" \", kUppercaseAll,   \", \"         ),\n     new Transform(         \"\", kUppercaseAll,   \",\"          ),\n     new Transform(         \"\", kUppercaseAll,   \"(\"          ),\n     new Transform(         \"\", kUppercaseAll,   \". \"         ),\n     new Transform(        \" \", kUppercaseAll,   \".\"          ),\n     new Transform(         \"\", kUppercaseAll,   \"='\"         ),\n     new Transform(        \" \", kUppercaseAll,   \". \"         ),\n     new Transform(        \" \", kUppercaseFirst, \"=\\\"\"        ),\n     new Transform(        \" \", kUppercaseAll,   \"='\"         ),\n     new Transform(        \" \", kUppercaseFirst, \"='\"         )\n];\n\nexports.kTransforms = kTransforms;\nexports.kNumTransforms = kTransforms.length;\n\nfunction ToUpperCase(p, i) {\n  if (p[i] < 0xc0) {\n    if (p[i] >= 97 && p[i] <= 122) {\n      p[i] ^= 32;\n    }\n    return 1;\n  }\n  \n  /* An overly simplified uppercasing model for utf-8. */\n  if (p[i] < 0xe0) {\n    p[i + 1] ^= 32;\n    return 2;\n  }\n  \n  /* An arbitrary transform for three byte characters. */\n  p[i + 2] ^= 5;\n  return 3;\n}\n\nexports.transformDictionaryWord = function(dst, idx, word, len, transform) {\n  var prefix = kTransforms[transform].prefix;\n  var suffix = kTransforms[transform].suffix;\n  var t = kTransforms[transform].transform;\n  var skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1);\n  var i = 0;\n  var start_idx = idx;\n  var uppercase;\n  \n  if (skip > len) {\n    skip = len;\n  }\n  \n  var prefix_pos = 0;\n  while (prefix_pos < prefix.length) {\n    dst[idx++] = prefix[prefix_pos++];\n  }\n  \n  word += skip;\n  len -= skip;\n  \n  if (t <= kOmitLast9) {\n    len -= t;\n  }\n  \n  for (i = 0; i < len; i++) {\n    dst[idx++] = BrotliDictionary.dictionary[word + i];\n  }\n  \n  uppercase = idx - len;\n  \n  if (t === kUppercaseFirst) {\n    ToUpperCase(dst, uppercase);\n  } else if (t === kUppercaseAll) {\n    while (len > 0) {\n      var step = ToUpperCase(dst, uppercase);\n      uppercase += step;\n      len -= step;\n    }\n  }\n  \n  var suffix_pos = 0;\n  while (suffix_pos < suffix.length) {\n    dst[idx++] = suffix[suffix_pos++];\n  }\n  \n  return idx - start_idx;\n}\n","/* Copyright 2013 Google Inc. All Rights Reserved.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n*/\n\nvar BrotliInput = require('./streams').BrotliInput;\nvar BrotliOutput = require('./streams').BrotliOutput;\nvar BrotliBitReader = require('./bit_reader');\nvar BrotliDictionary = require('./dictionary');\nvar HuffmanCode = require('./huffman').HuffmanCode;\nvar BrotliBuildHuffmanTable = require('./huffman').BrotliBuildHuffmanTable;\nvar Context = require('./context');\nvar Prefix = require('./prefix');\nvar Transform = require('./transform');\n\nvar kDefaultCodeLength = 8;\nvar kCodeLengthRepeatCode = 16;\nvar kNumLiteralCodes = 256;\nvar kNumInsertAndCopyCodes = 704;\nvar kNumBlockLengthCodes = 26;\nvar kLiteralContextBits = 6;\nvar kDistanceContextBits = 2;\n\nvar HUFFMAN_TABLE_BITS = 8;\nvar HUFFMAN_TABLE_MASK = 0xff;\n/* Maximum possible Huffman table size for an alphabet size of 704, max code\n * length 15 and root table bits 8. */\nvar HUFFMAN_MAX_TABLE_SIZE = 1080;\n\nvar CODE_LENGTH_CODES = 18;\nvar kCodeLengthCodeOrder = new Uint8Array([\n  1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n]);\n\nvar NUM_DISTANCE_SHORT_CODES = 16;\nvar kDistanceShortCodeIndexOffset = new Uint8Array([\n  3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2\n]);\n\nvar kDistanceShortCodeValueOffset = new Int8Array([\n  0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3\n]);\n\nvar kMaxHuffmanTableSize = new Uint16Array([\n  256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822,\n  854, 886, 920, 952, 984, 1016, 1048, 1080\n]);\n\nfunction DecodeWindowBits(br) {\n  var n;\n  if (br.readBits(1) === 0) {\n    return 16;\n  }\n  \n  n = br.readBits(3);\n  if (n > 0) {\n    return 17 + n;\n  }\n  \n  n = br.readBits(3);\n  if (n > 0) {\n    return 8 + n;\n  }\n  \n  return 17;\n}\n\n/* Decodes a number in the range [0..255], by reading 1 - 11 bits. */\nfunction DecodeVarLenUint8(br) {\n  if (br.readBits(1)) {\n    var nbits = br.readBits(3);\n    if (nbits === 0) {\n      return 1;\n    } else {\n      return br.readBits(nbits) + (1 << nbits);\n    }\n  }\n  return 0;\n}\n\nfunction MetaBlockLength() {\n  this.meta_block_length = 0;\n  this.input_end = 0;\n  this.is_uncompressed = 0;\n  this.is_metadata = false;\n}\n\nfunction DecodeMetaBlockLength(br) {\n  var out = new MetaBlockLength;  \n  var size_nibbles;\n  var size_bytes;\n  var i;\n  \n  out.input_end = br.readBits(1);\n  if (out.input_end && br.readBits(1)) {\n    return out;\n  }\n  \n  size_nibbles = br.readBits(2) + 4;\n  if (size_nibbles === 7) {\n    out.is_metadata = true;\n    \n    if (br.readBits(1) !== 0)\n      throw new Error('Invalid reserved bit');\n    \n    size_bytes = br.readBits(2);\n    if (size_bytes === 0)\n      return out;\n    \n    for (i = 0; i < size_bytes; i++) {\n      var next_byte = br.readBits(8);\n      if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0)\n        throw new Error('Invalid size byte');\n      \n      out.meta_block_length |= next_byte << (i * 8);\n    }\n  } else {\n    for (i = 0; i < size_nibbles; ++i) {\n      var next_nibble = br.readBits(4);\n      if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)\n        throw new Error('Invalid size nibble');\n      \n      out.meta_block_length |= next_nibble << (i * 4);\n    }\n  }\n  \n  ++out.meta_block_length;\n  \n  if (!out.input_end && !out.is_metadata) {\n    out.is_uncompressed = br.readBits(1);\n  }\n  \n  return out;\n}\n\n/* Decodes the next Huffman code from bit-stream. */\nfunction ReadSymbol(table, index, br) {\n  var start_index = index;\n  \n  var nbits;\n  br.fillBitWindow();\n  index += (br.val_ >>> br.bit_pos_) & HUFFMAN_TABLE_MASK;\n  nbits = table[index].bits - HUFFMAN_TABLE_BITS;\n  if (nbits > 0) {\n    br.bit_pos_ += HUFFMAN_TABLE_BITS;\n    index += table[index].value;\n    index += (br.val_ >>> br.bit_pos_) & ((1 << nbits) - 1);\n  }\n  br.bit_pos_ += table[index].bits;\n  return table[index].value;\n}\n\nfunction ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {\n  var symbol = 0;\n  var prev_code_len = kDefaultCodeLength;\n  var repeat = 0;\n  var repeat_code_len = 0;\n  var space = 32768;\n  \n  var table = [];\n  for (var i = 0; i < 32; i++)\n    table.push(new HuffmanCode(0, 0));\n  \n  BrotliBuildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES);\n\n  while (symbol < num_symbols && space > 0) {\n    var p = 0;\n    var code_len;\n    \n    br.readMoreInput();\n    br.fillBitWindow();\n    p += (br.val_ >>> br.bit_pos_) & 31;\n    br.bit_pos_ += table[p].bits;\n    code_len = table[p].value & 0xff;\n    if (code_len < kCodeLengthRepeatCode) {\n      repeat = 0;\n      code_lengths[symbol++] = code_len;\n      if (code_len !== 0) {\n        prev_code_len = code_len;\n        space -= 32768 >> code_len;\n      }\n    } else {\n      var extra_bits = code_len - 14;\n      var old_repeat;\n      var repeat_delta;\n      var new_len = 0;\n      if (code_len === kCodeLengthRepeatCode) {\n        new_len = prev_code_len;\n      }\n      if (repeat_code_len !== new_len) {\n        repeat = 0;\n        repeat_code_len = new_len;\n      }\n      old_repeat = repeat;\n      if (repeat > 0) {\n        repeat -= 2;\n        repeat <<= extra_bits;\n      }\n      repeat += br.readBits(extra_bits) + 3;\n      repeat_delta = repeat - old_repeat;\n      if (symbol + repeat_delta > num_symbols) {\n        throw new Error('[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols');\n      }\n      \n      for (var x = 0; x < repeat_delta; x++)\n        code_lengths[symbol + x] = repeat_code_len;\n      \n      symbol += repeat_delta;\n      \n      if (repeat_code_len !== 0) {\n        space -= repeat_delta << (15 - repeat_code_len);\n      }\n    }\n  }\n  if (space !== 0) {\n    throw new Error(\"[ReadHuffmanCodeLengths] space = \" + space);\n  }\n  \n  for (; symbol < num_symbols; symbol++)\n    code_lengths[symbol] = 0;\n}\n\nfunction ReadHuffmanCode(alphabet_size, tables, table, br) {\n  var table_size = 0;\n  var simple_code_or_skip;\n  var code_lengths = new Uint8Array(alphabet_size);\n  \n  br.readMoreInput();\n  \n  /* simple_code_or_skip is used as follows:\n     1 for simple code;\n     0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */\n  simple_code_or_skip = br.readBits(2);\n  if (simple_code_or_skip === 1) {\n    /* Read symbols, codes & code lengths directly. */\n    var i;\n    var max_bits_counter = alphabet_size - 1;\n    var max_bits = 0;\n    var symbols = new Int32Array(4);\n    var num_symbols = br.readBits(2) + 1;\n    while (max_bits_counter) {\n      max_bits_counter >>= 1;\n      ++max_bits;\n    }\n\n    for (i = 0; i < num_symbols; ++i) {\n      symbols[i] = br.readBits(max_bits) % alphabet_size;\n      code_lengths[symbols[i]] = 2;\n    }\n    code_lengths[symbols[0]] = 1;\n    switch (num_symbols) {\n      case 1:\n        break;\n      case 3:\n        if ((symbols[0] === symbols[1]) ||\n            (symbols[0] === symbols[2]) ||\n            (symbols[1] === symbols[2])) {\n          throw new Error('[ReadHuffmanCode] invalid symbols');\n        }\n        break;\n      case 2:\n        if (symbols[0] === symbols[1]) {\n          throw new Error('[ReadHuffmanCode] invalid symbols');\n        }\n        \n        code_lengths[symbols[1]] = 1;\n        break;\n      case 4:\n        if ((symbols[0] === symbols[1]) ||\n            (symbols[0] === symbols[2]) ||\n            (symbols[0] === symbols[3]) ||\n            (symbols[1] === symbols[2]) ||\n            (symbols[1] === symbols[3]) ||\n            (symbols[2] === symbols[3])) {\n          throw new Error('[ReadHuffmanCode] invalid symbols');\n        }\n        \n        if (br.readBits(1)) {\n          code_lengths[symbols[2]] = 3;\n          code_lengths[symbols[3]] = 3;\n        } else {\n          code_lengths[symbols[0]] = 2;\n        }\n        break;\n    }\n  } else {  /* Decode Huffman-coded code lengths. */\n    var i;\n    var code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES);\n    var space = 32;\n    var num_codes = 0;\n    /* Static Huffman code for the code length code lengths */\n    var huff = [\n      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), \n      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1),\n      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), \n      new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5)\n    ];\n    for (i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; ++i) {\n      var code_len_idx = kCodeLengthCodeOrder[i];\n      var p = 0;\n      var v;\n      br.fillBitWindow();\n      p += (br.val_ >>> br.bit_pos_) & 15;\n      br.bit_pos_ += huff[p].bits;\n      v = huff[p].value;\n      code_length_code_lengths[code_len_idx] = v;\n      if (v !== 0) {\n        space -= (32 >> v);\n        ++num_codes;\n      }\n    }\n    \n    if (!(num_codes === 1 || space === 0))\n      throw new Error('[ReadHuffmanCode] invalid num_codes or space');\n    \n    ReadHuffmanCodeLengths(code_length_code_lengths, alphabet_size, code_lengths, br);\n  }\n  \n  table_size = BrotliBuildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size);\n  \n  if (table_size === 0) {\n    throw new Error(\"[ReadHuffmanCode] BuildHuffmanTable failed: \");\n  }\n  \n  return table_size;\n}\n\nfunction ReadBlockLength(table, index, br) {\n  var code;\n  var nbits;\n  code = ReadSymbol(table, index, br);\n  nbits = Prefix.kBlockLengthPrefixCode[code].nbits;\n  return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits);\n}\n\nfunction TranslateShortCodes(code, ringbuffer, index) {\n  var val;\n  if (code < NUM_DISTANCE_SHORT_CODES) {\n    index += kDistanceShortCodeIndexOffset[code];\n    index &= 3;\n    val = ringbuffer[index] + kDistanceShortCodeValueOffset[code];\n  } else {\n    val = code - NUM_DISTANCE_SHORT_CODES + 1;\n  }\n  return val;\n}\n\nfunction MoveToFront(v, index) {\n  var value = v[index];\n  var i = index;\n  for (; i; --i) v[i] = v[i - 1];\n  v[0] = value;\n}\n\nfunction InverseMoveToFrontTransform(v, v_len) {\n  var mtf = new Uint8Array(256);\n  var i;\n  for (i = 0; i < 256; ++i) {\n    mtf[i] = i;\n  }\n  for (i = 0; i < v_len; ++i) {\n    var index = v[i];\n    v[i] = mtf[index];\n    if (index) MoveToFront(mtf, index);\n  }\n}\n\n/* Contains a collection of huffman trees with the same alphabet size. */\nfunction HuffmanTreeGroup(alphabet_size, num_htrees) {\n  this.alphabet_size = alphabet_size;\n  this.num_htrees = num_htrees;\n  this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[(alphabet_size + 31) >>> 5]);  \n  this.htrees = new Uint32Array(num_htrees);\n}\n\nHuffmanTreeGroup.prototype.decode = function(br) {\n  var i;\n  var table_size;\n  var next = 0;\n  for (i = 0; i < this.num_htrees; ++i) {\n    this.htrees[i] = next;\n    table_size = ReadHuffmanCode(this.alphabet_size, this.codes, next, br);\n    next += table_size;\n  }\n};\n\nfunction DecodeContextMap(context_map_size, br) {\n  var out = { num_htrees: null, context_map: null };\n  var use_rle_for_zeros;\n  var max_run_length_prefix = 0;\n  var table;\n  var i;\n  \n  br.readMoreInput();\n  var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1;\n\n  var context_map = out.context_map = new Uint8Array(context_map_size);\n  if (num_htrees <= 1) {\n    return out;\n  }\n\n  use_rle_for_zeros = br.readBits(1);\n  if (use_rle_for_zeros) {\n    max_run_length_prefix = br.readBits(4) + 1;\n  }\n  \n  table = [];\n  for (i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) {\n    table[i] = new HuffmanCode(0, 0);\n  }\n  \n  ReadHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br);\n  \n  for (i = 0; i < context_map_size;) {\n    var code;\n\n    br.readMoreInput();\n    code = ReadSymbol(table, 0, br);\n    if (code === 0) {\n      context_map[i] = 0;\n      ++i;\n    } else if (code <= max_run_length_prefix) {\n      var reps = 1 + (1 << code) + br.readBits(code);\n      while (--reps) {\n        if (i >= context_map_size) {\n          throw new Error(\"[DecodeContextMap] i >= context_map_size\");\n        }\n        context_map[i] = 0;\n        ++i;\n      }\n    } else {\n      context_map[i] = code - max_run_length_prefix;\n      ++i;\n    }\n  }\n  if (br.readBits(1)) {\n    InverseMoveToFrontTransform(context_map, context_map_size);\n  }\n  \n  return out;\n}\n\nfunction DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {\n  var ringbuffer = tree_type * 2;\n  var index = tree_type;\n  var type_code = ReadSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br);\n  var block_type;\n  if (type_code === 0) {\n    block_type = ringbuffers[ringbuffer + (indexes[index] & 1)];\n  } else if (type_code === 1) {\n    block_type = ringbuffers[ringbuffer + ((indexes[index] - 1) & 1)] + 1;\n  } else {\n    block_type = type_code - 2;\n  }\n  if (block_type >= max_block_type) {\n    block_type -= max_block_type;\n  }\n  block_types[tree_type] = block_type;\n  ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type;\n  ++indexes[index];\n}\n\nfunction CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {\n  var rb_size = ringbuffer_mask + 1;\n  var rb_pos = pos & ringbuffer_mask;\n  var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;\n  var nbytes;\n\n  /* For short lengths copy byte-by-byte */\n  if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {\n    while (len-- > 0) {\n      br.readMoreInput();\n      ringbuffer[rb_pos++] = br.readBits(8);\n      if (rb_pos === rb_size) {\n        output.write(ringbuffer, rb_size);\n        rb_pos = 0;\n      }\n    }\n    return;\n  }\n\n  if (br.bit_end_pos_ < 32) {\n    throw new Error('[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32');\n  }\n\n  /* Copy remaining 0-4 bytes from br.val_ to ringbuffer. */\n  while (br.bit_pos_ < 32) {\n    ringbuffer[rb_pos] = (br.val_ >>> br.bit_pos_);\n    br.bit_pos_ += 8;\n    ++rb_pos;\n    --len;\n  }\n\n  /* Copy remaining bytes from br.buf_ to ringbuffer. */\n  nbytes = (br.bit_end_pos_ - br.bit_pos_) >> 3;\n  if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {\n    var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;\n    for (var x = 0; x < tail; x++)\n      ringbuffer[rb_pos + x] = br.buf_[br_pos + x];\n    \n    nbytes -= tail;\n    rb_pos += tail;\n    len -= tail;\n    br_pos = 0;\n  }\n\n  for (var x = 0; x < nbytes; x++)\n    ringbuffer[rb_pos + x] = br.buf_[br_pos + x];\n  \n  rb_pos += nbytes;\n  len -= nbytes;\n\n  /* If we wrote past the logical end of the ringbuffer, copy the tail of the\n     ringbuffer to its beginning and flush the ringbuffer to the output. */\n  if (rb_pos >= rb_size) {\n    output.write(ringbuffer, rb_size);\n    rb_pos -= rb_size;    \n    for (var x = 0; x < rb_pos; x++)\n      ringbuffer[x] = ringbuffer[rb_size + x];\n  }\n\n  /* If we have more to copy than the remaining size of the ringbuffer, then we\n     first fill the ringbuffer from the input and then flush the ringbuffer to\n     the output */\n  while (rb_pos + len >= rb_size) {\n    nbytes = rb_size - rb_pos;\n    if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {\n      throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');\n    }\n    output.write(ringbuffer, rb_size);\n    len -= nbytes;\n    rb_pos = 0;\n  }\n\n  /* Copy straight from the input onto the ringbuffer. The ringbuffer will be\n     flushed to the output at a later time. */\n  if (br.input_.read(ringbuffer, rb_pos, len) < len) {\n    throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');\n  }\n\n  /* Restore the state of the bit reader. */\n  br.reset();\n}\n\n/* Advances the bit reader position to the next byte boundary and verifies\n   that any skipped bits are set to zero. */\nfunction JumpToByteBoundary(br) {\n  var new_bit_pos = (br.bit_pos_ + 7) & ~7;\n  var pad_bits = br.readBits(new_bit_pos - br.bit_pos_);\n  return pad_bits == 0;\n}\n\nfunction BrotliDecompressedSize(buffer) {\n  var input = new BrotliInput(buffer);\n  var br = new BrotliBitReader(input);\n  DecodeWindowBits(br);\n  var out = DecodeMetaBlockLength(br);\n  return out.meta_block_length;\n}\n\nexports.BrotliDecompressedSize = BrotliDecompressedSize;\n\nfunction BrotliDecompressBuffer(buffer, output_size) {\n  var input = new BrotliInput(buffer);\n  \n  if (output_size == null) {\n    output_size = BrotliDecompressedSize(buffer);\n  }\n  \n  var output_buffer = new Uint8Array(output_size);\n  var output = new BrotliOutput(output_buffer);\n  \n  BrotliDecompress(input, output);\n  \n  if (output.pos < output.buffer.length) {\n    output.buffer = output.buffer.subarray(0, output.pos);\n  }\n  \n  return output.buffer;\n}\n\nexports.BrotliDecompressBuffer = BrotliDecompressBuffer;\n\nfunction BrotliDecompress(input, output) {\n  var i;\n  var pos = 0;\n  var input_end = 0;\n  var window_bits = 0;\n  var max_backward_distance;\n  var max_distance = 0;\n  var ringbuffer_size;\n  var ringbuffer_mask;\n  var ringbuffer;\n  var ringbuffer_end;\n  /* This ring buffer holds a few past copy distances that will be used by */\n  /* some special distance codes. */\n  var dist_rb = [ 16, 15, 11, 4 ];\n  var dist_rb_idx = 0;\n  /* The previous 2 bytes used for context. */\n  var prev_byte1 = 0;\n  var prev_byte2 = 0;\n  var hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)];\n  var block_type_trees;\n  var block_len_trees;\n  var br;\n\n  /* We need the slack region for the following reasons:\n       - always doing two 8-byte copies for fast backward copying\n       - transforms\n       - flushing the input ringbuffer when decoding uncompressed blocks */\n  var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE;\n\n  br = new BrotliBitReader(input);\n\n  /* Decode window size. */\n  window_bits = DecodeWindowBits(br);\n  max_backward_distance = (1 << window_bits) - 16;\n\n  ringbuffer_size = 1 << window_bits;\n  ringbuffer_mask = ringbuffer_size - 1;\n  ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength);\n  ringbuffer_end = ringbuffer_size;\n\n  block_type_trees = [];\n  block_len_trees = [];\n  for (var x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) {\n    block_type_trees[x] = new HuffmanCode(0, 0);\n    block_len_trees[x] = new HuffmanCode(0, 0);\n  }\n\n  while (!input_end) {\n    var meta_block_remaining_len = 0;\n    var is_uncompressed;\n    var block_length = [ 1 << 28, 1 << 28, 1 << 28 ];\n    var block_type = [ 0 ];\n    var num_block_types = [ 1, 1, 1 ];\n    var block_type_rb = [ 0, 1, 0, 1, 0, 1 ];\n    var block_type_rb_index = [ 0 ];\n    var distance_postfix_bits;\n    var num_direct_distance_codes;\n    var distance_postfix_mask;\n    var num_distance_codes;\n    var context_map = null;\n    var context_modes = null;\n    var num_literal_htrees;\n    var dist_context_map = null;\n    var num_dist_htrees;\n    var context_offset = 0;\n    var context_map_slice = null;\n    var literal_htree_index = 0;\n    var dist_context_offset = 0;\n    var dist_context_map_slice = null;\n    var dist_htree_index = 0;\n    var context_lookup_offset1 = 0;\n    var context_lookup_offset2 = 0;\n    var context_mode;\n    var htree_command;\n\n    for (i = 0; i < 3; ++i) {\n      hgroup[i].codes = null;\n      hgroup[i].htrees = null;\n    }\n\n    br.readMoreInput();\n    \n    var _out = DecodeMetaBlockLength(br);\n    meta_block_remaining_len = _out.meta_block_length;\n    if (pos + meta_block_remaining_len > output.buffer.length) {\n      /* We need to grow the output buffer to fit the additional data. */\n      var tmp = new Uint8Array( pos + meta_block_remaining_len );\n      tmp.set( output.buffer );\n      output.buffer = tmp;\n    }    \n    input_end = _out.input_end;\n    is_uncompressed = _out.is_uncompressed;\n    \n    if (_out.is_metadata) {\n      JumpToByteBoundary(br);\n      \n      for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {\n        br.readMoreInput();\n        /* Read one byte and ignore it. */\n        br.readBits(8);\n      }\n      \n      continue;\n    }\n    \n    if (meta_block_remaining_len === 0) {\n      continue;\n    }\n    \n    if (is_uncompressed) {\n      br.bit_pos_ = (br.bit_pos_ + 7) & ~7;\n      CopyUncompressedBlockToOutput(output, meta_block_remaining_len, pos,\n                                    ringbuffer, ringbuffer_mask, br);\n      pos += meta_block_remaining_len;\n      continue;\n    }\n    \n    for (i = 0; i < 3; ++i) {\n      num_block_types[i] = DecodeVarLenUint8(br) + 1;\n      if (num_block_types[i] >= 2) {\n        ReadHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n        ReadHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n        block_length[i] = ReadBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n        block_type_rb_index[i] = 1;\n      }\n    }\n    \n    br.readMoreInput();\n    \n    distance_postfix_bits = br.readBits(2);\n    num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits);\n    distance_postfix_mask = (1 << distance_postfix_bits) - 1;\n    num_distance_codes = (num_direct_distance_codes + (48 << distance_postfix_bits));\n    context_modes = new Uint8Array(num_block_types[0]);\n\n    for (i = 0; i < num_block_types[0]; ++i) {\n       br.readMoreInput();\n       context_modes[i] = (br.readBits(2) << 1);\n    }\n    \n    var _o1 = DecodeContextMap(num_block_types[0] << kLiteralContextBits, br);\n    num_literal_htrees = _o1.num_htrees;\n    context_map = _o1.context_map;\n    \n    var _o2 = DecodeContextMap(num_block_types[2] << kDistanceContextBits, br);\n    num_dist_htrees = _o2.num_htrees;\n    dist_context_map = _o2.context_map;\n    \n    hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees);\n    hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1]);\n    hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees);\n\n    for (i = 0; i < 3; ++i) {\n      hgroup[i].decode(br);\n    }\n\n    context_map_slice = 0;\n    dist_context_map_slice = 0;\n    context_mode = context_modes[block_type[0]];\n    context_lookup_offset1 = Context.lookupOffsets[context_mode];\n    context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];\n    htree_command = hgroup[1].htrees[0];\n\n    while (meta_block_remaining_len > 0) {\n      var cmd_code;\n      var range_idx;\n      var insert_code;\n      var copy_code;\n      var insert_length;\n      var copy_length;\n      var distance_code;\n      var distance;\n      var context;\n      var j;\n      var copy_dst;\n\n      br.readMoreInput();\n      \n      if (block_length[1] === 0) {\n        DecodeBlockType(num_block_types[1],\n                        block_type_trees, 1, block_type, block_type_rb,\n                        block_type_rb_index, br);\n        block_length[1] = ReadBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br);\n        htree_command = hgroup[1].htrees[block_type[1]];\n      }\n      --block_length[1];\n      cmd_code = ReadSymbol(hgroup[1].codes, htree_command, br);\n      range_idx = cmd_code >> 6;\n      if (range_idx >= 2) {\n        range_idx -= 2;\n        distance_code = -1;\n      } else {\n        distance_code = 0;\n      }\n      insert_code = Prefix.kInsertRangeLut[range_idx] + ((cmd_code >> 3) & 7);\n      copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7);\n      insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset +\n          br.readBits(Prefix.kInsertLengthPrefixCode[insert_code].nbits);\n      copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset +\n          br.readBits(Prefix.kCopyLengthPrefixCode[copy_code].nbits);\n      prev_byte1 = ringbuffer[pos-1 & ringbuffer_mask];\n      prev_byte2 = ringbuffer[pos-2 & ringbuffer_mask];\n      for (j = 0; j < insert_length; ++j) {\n        br.readMoreInput();\n\n        if (block_length[0] === 0) {\n          DecodeBlockType(num_block_types[0],\n                          block_type_trees, 0, block_type, block_type_rb,\n                          block_type_rb_index, br);\n          block_length[0] = ReadBlockLength(block_len_trees, 0, br);\n          context_offset = block_type[0] << kLiteralContextBits;\n          context_map_slice = context_offset;\n          context_mode = context_modes[block_type[0]];\n          context_lookup_offset1 = Context.lookupOffsets[context_mode];\n          context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];\n        }\n        context = (Context.lookup[context_lookup_offset1 + prev_byte1] |\n                   Context.lookup[context_lookup_offset2 + prev_byte2]);\n        literal_htree_index = context_map[context_map_slice + context];\n        --block_length[0];\n        prev_byte2 = prev_byte1;\n        prev_byte1 = ReadSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br);\n        ringbuffer[pos & ringbuffer_mask] = prev_byte1;\n        if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n          output.write(ringbuffer, ringbuffer_size);\n        }\n        ++pos;\n      }\n      meta_block_remaining_len -= insert_length;\n      if (meta_block_remaining_len <= 0) break;\n\n      if (distance_code < 0) {\n        var context;\n        \n        br.readMoreInput();\n        if (block_length[2] === 0) {\n          DecodeBlockType(num_block_types[2],\n                          block_type_trees, 2, block_type, block_type_rb,\n                          block_type_rb_index, br);\n          block_length[2] = ReadBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br);\n          dist_context_offset = block_type[2] << kDistanceContextBits;\n          dist_context_map_slice = dist_context_offset;\n        }\n        --block_length[2];\n        context = (copy_length > 4 ? 3 : copy_length - 2) & 0xff;\n        dist_htree_index = dist_context_map[dist_context_map_slice + context];\n        distance_code = ReadSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br);\n        if (distance_code >= num_direct_distance_codes) {\n          var nbits;\n          var postfix;\n          var offset;\n          distance_code -= num_direct_distance_codes;\n          postfix = distance_code & distance_postfix_mask;\n          distance_code >>= distance_postfix_bits;\n          nbits = (distance_code >> 1) + 1;\n          offset = ((2 + (distance_code & 1)) << nbits) - 4;\n          distance_code = num_direct_distance_codes +\n              ((offset + br.readBits(nbits)) <<\n               distance_postfix_bits) + postfix;\n        }\n      }\n\n      /* Convert the distance code to the actual distance by possibly looking */\n      /* up past distnaces from the ringbuffer. */\n      distance = TranslateShortCodes(distance_code, dist_rb, dist_rb_idx);\n      if (distance < 0) {\n        throw new Error('[BrotliDecompress] invalid distance');\n      }\n\n      if (pos < max_backward_distance &&\n          max_distance !== max_backward_distance) {\n        max_distance = pos;\n      } else {\n        max_distance = max_backward_distance;\n      }\n\n      copy_dst = pos & ringbuffer_mask;\n\n      if (distance > max_distance) {\n        if (copy_length >= BrotliDictionary.minDictionaryWordLength &&\n            copy_length <= BrotliDictionary.maxDictionaryWordLength) {\n          var offset = BrotliDictionary.offsetsByLength[copy_length];\n          var word_id = distance - max_distance - 1;\n          var shift = BrotliDictionary.sizeBitsByLength[copy_length];\n          var mask = (1 << shift) - 1;\n          var word_idx = word_id & mask;\n          var transform_idx = word_id >> shift;\n          offset += word_idx * copy_length;\n          if (transform_idx < Transform.kNumTransforms) {\n            var len = Transform.transformDictionaryWord(ringbuffer, copy_dst, offset, copy_length, transform_idx);\n            copy_dst += len;\n            pos += len;\n            meta_block_remaining_len -= len;\n            if (copy_dst >= ringbuffer_end) {\n              output.write(ringbuffer, ringbuffer_size);\n              \n              for (var _x = 0; _x < (copy_dst - ringbuffer_end); _x++)\n                ringbuffer[_x] = ringbuffer[ringbuffer_end + _x];\n            }\n          } else {\n            throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n              \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n          }\n        } else {\n          throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n            \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n        }\n      } else {\n        if (distance_code > 0) {\n          dist_rb[dist_rb_idx & 3] = distance;\n          ++dist_rb_idx;\n        }\n\n        if (copy_length > meta_block_remaining_len) {\n          throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n            \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n        }\n\n        for (j = 0; j < copy_length; ++j) {\n          ringbuffer[pos & ringbuffer_mask] = ringbuffer[(pos - distance) & ringbuffer_mask];\n          if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n            output.write(ringbuffer, ringbuffer_size);\n          }\n          ++pos;\n          --meta_block_remaining_len;\n        }\n      }\n\n      /* When we get here, we must have inserted at least one literal and */\n      /* made a copy of at least length two, therefore accessing the last 2 */\n      /* bytes is valid. */\n      prev_byte1 = ringbuffer[(pos - 1) & ringbuffer_mask];\n      prev_byte2 = ringbuffer[(pos - 2) & ringbuffer_mask];\n    }\n\n    /* Protect pos from overflow, wrap it around at every GB of input data */\n    pos &= 0x3fffffff;\n  }\n\n  output.write(ringbuffer, pos & ringbuffer_mask);\n}\n\nexports.BrotliDecompress = BrotliDecompress;\n\nBrotliDictionary.init();\n","module.exports = require('./dec/decode').BrotliDecompressBuffer;\n","\n/*! pako 2.2.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//const Z_FILTERED          = 1;\n//const Z_HUFFMAN_ONLY      = 2;\n//const Z_RLE               = 3;\nconst Z_FIXED$1               = 4;\n//const Z_DEFAULT_STRATEGY  = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nconst Z_BINARY              = 0;\nconst Z_TEXT                = 1;\n//const Z_ASCII             = 1; // = Z_TEXT\nconst Z_UNKNOWN$1             = 2;\n\n/*============================================================================*/\n\n\nfunction zero$1(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES    = 2;\n/* The three kinds of block type */\n\nconst MIN_MATCH$1    = 3;\nconst MAX_MATCH$1    = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nconst LENGTH_CODES$1  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nconst LITERALS$1      = 256;\n/* number of literal bytes 0..255 */\n\nconst L_CODES$1       = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nconst D_CODES$1       = 30;\n/* number of distance codes */\n\nconst BL_CODES$1      = 19;\n/* number of codes used to transfer the bit lengths */\n\nconst HEAP_SIZE$1     = 2 * L_CODES$1 + 1;\n/* maximum heap size */\n\nconst MAX_BITS$1      = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst Buf_size      = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nconst MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nconst END_BLOCK   = 256;\n/* end of block literal code */\n\nconst REP_3_6     = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nconst REPZ_3_10   = 17;\n/* repeat a zero length 3-10 times  (3 bits of repeat count) */\n\nconst REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times  (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nconst extra_lbits =   /* extra bits for each length code */\n  new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);\n\nconst extra_dbits =   /* extra bits for each distance code */\n  new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\n\nconst extra_blbits =  /* extra bits for each bit length code */\n  new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);\n\nconst bl_order =\n  new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nconst DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nconst static_ltree  = new Array((L_CODES$1 + 2) * 2);\nzero$1(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nconst static_dtree  = new Array(D_CODES$1 * 2);\nzero$1(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nconst _dist_code    = new Array(DIST_CODE_LEN);\nzero$1(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nconst _length_code  = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1);\nzero$1(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nconst base_length   = new Array(LENGTH_CODES$1);\nzero$1(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nconst base_dist     = new Array(D_CODES$1);\nzero$1(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n  this.static_tree  = static_tree;  /* static tree or NULL */\n  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */\n  this.extra_base   = extra_base;   /* base index for extra_bits */\n  this.elems        = elems;        /* max number of elements in the tree */\n  this.max_length   = max_length;   /* max bit length for the codes */\n\n  // show if `static_tree` has data or dummy - needed for monomorphic objects\n  this.has_stree    = static_tree && static_tree.length;\n}\n\n\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n  this.dyn_tree = dyn_tree;     /* the dynamic tree */\n  this.max_code = 0;            /* largest code with non zero frequency */\n  this.stat_desc = stat_desc;   /* the corresponding static tree */\n}\n\n\n\nconst d_code = (dist) => {\n\n  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n};\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nconst put_short = (s, w) => {\n//    put_byte(s, (uch)((w) & 0xff));\n//    put_byte(s, (uch)((ush)(w) >> 8));\n  s.pending_buf[s.pending++] = (w) & 0xff;\n  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n};\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nconst send_bits = (s, value, length) => {\n\n  if (s.bi_valid > (Buf_size - length)) {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    put_short(s, s.bi_buf);\n    s.bi_buf = value >> (Buf_size - s.bi_valid);\n    s.bi_valid += length - Buf_size;\n  } else {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    s.bi_valid += length;\n  }\n};\n\n\nconst send_code = (s, c, tree) => {\n\n  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n};\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nconst bi_reverse = (code, len) => {\n\n  let res = 0;\n  do {\n    res |= code & 1;\n    code >>>= 1;\n    res <<= 1;\n  } while (--len > 0);\n  return res >>> 1;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nconst bi_flush = (s) => {\n\n  if (s.bi_valid === 16) {\n    put_short(s, s.bi_buf);\n    s.bi_buf = 0;\n    s.bi_valid = 0;\n\n  } else if (s.bi_valid >= 8) {\n    s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n    s.bi_buf >>= 8;\n    s.bi_valid -= 8;\n  }\n};\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n *    above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n *     array bl_count contains the frequencies for each bit length.\n *     The length opt_len is updated; static_len is also updated if stree is\n *     not null.\n */\nconst gen_bitlen = (s, desc) => {\n//    deflate_state *s;\n//    tree_desc *desc;    /* the tree descriptor */\n\n  const tree            = desc.dyn_tree;\n  const max_code        = desc.max_code;\n  const stree           = desc.stat_desc.static_tree;\n  const has_stree       = desc.stat_desc.has_stree;\n  const extra           = desc.stat_desc.extra_bits;\n  const base            = desc.stat_desc.extra_base;\n  const max_length      = desc.stat_desc.max_length;\n  let h;              /* heap index */\n  let n, m;           /* iterate over the tree elements */\n  let bits;           /* bit length */\n  let xbits;          /* extra bits */\n  let f;              /* frequency */\n  let overflow = 0;   /* number of elements with bit length too large */\n\n  for (bits = 0; bits <= MAX_BITS$1; bits++) {\n    s.bl_count[bits] = 0;\n  }\n\n  /* In a first pass, compute the optimal bit lengths (which may\n   * overflow in the case of the bit length tree).\n   */\n  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n  for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) {\n    n = s.heap[h];\n    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n    if (bits > max_length) {\n      bits = max_length;\n      overflow++;\n    }\n    tree[n * 2 + 1]/*.Len*/ = bits;\n    /* We overwrite tree[n].Dad which is no longer needed */\n\n    if (n > max_code) { continue; } /* not a leaf node */\n\n    s.bl_count[bits]++;\n    xbits = 0;\n    if (n >= base) {\n      xbits = extra[n - base];\n    }\n    f = tree[n * 2]/*.Freq*/;\n    s.opt_len += f * (bits + xbits);\n    if (has_stree) {\n      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n    }\n  }\n  if (overflow === 0) { return; }\n\n  // Tracev((stderr,\"\\nbit length overflow\\n\"));\n  /* This happens for example on obj2 and pic of the Calgary corpus */\n\n  /* Find the first bit length which could increase: */\n  do {\n    bits = max_length - 1;\n    while (s.bl_count[bits] === 0) { bits--; }\n    s.bl_count[bits]--;      /* move one leaf down the tree */\n    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n    s.bl_count[max_length]--;\n    /* The brother of the overflow item also moves one step up,\n     * but this does not affect bl_count[max_length]\n     */\n    overflow -= 2;\n  } while (overflow > 0);\n\n  /* Now recompute all bit lengths, scanning in increasing frequency.\n   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n   * lengths instead of fixing only the wrong ones. This idea is taken\n   * from 'ar' written by Haruhiko Okumura.)\n   */\n  for (bits = max_length; bits !== 0; bits--) {\n    n = s.bl_count[bits];\n    while (n !== 0) {\n      m = s.heap[--h];\n      if (m > max_code) { continue; }\n      if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n        // Tracev((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n        tree[m * 2 + 1]/*.Len*/ = bits;\n      }\n      n--;\n    }\n  }\n};\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n *     zero code length.\n */\nconst gen_codes = (tree, max_code, bl_count) => {\n//    ct_data *tree;             /* the tree to decorate */\n//    int max_code;              /* largest code with non zero frequency */\n//    ushf *bl_count;            /* number of codes at each bit length */\n\n  const next_code = new Array(MAX_BITS$1 + 1); /* next code value for each bit length */\n  let code = 0;              /* running code value */\n  let bits;                  /* bit index */\n  let n;                     /* code index */\n\n  /* The distribution counts are first used to generate the code values\n   * without bit reversal.\n   */\n  for (bits = 1; bits <= MAX_BITS$1; bits++) {\n    code = (code + bl_count[bits - 1]) << 1;\n    next_code[bits] = code;\n  }\n  /* Check that the bit counts in bl_count are consistent. The last code\n   * must be all ones.\n   */\n  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n  //        \"inconsistent bit counts\");\n  //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n  for (n = 0;  n <= max_code; n++) {\n    let len = tree[n * 2 + 1]/*.Len*/;\n    if (len === 0) { continue; }\n    /* Now reverse the bits */\n    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n    //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n  }\n};\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nconst tr_static_init = () => {\n\n  let n;        /* iterates over tree elements */\n  let bits;     /* bit counter */\n  let length;   /* length value */\n  let code;     /* code value */\n  let dist;     /* distance index */\n  const bl_count = new Array(MAX_BITS$1 + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  // do check in _tr_init()\n  //if (static_init_done) return;\n\n  /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n  static_l_desc.static_tree = static_ltree;\n  static_l_desc.extra_bits = extra_lbits;\n  static_d_desc.static_tree = static_dtree;\n  static_d_desc.extra_bits = extra_dbits;\n  static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n  /* Initialize the mapping length (0..255) -> length code (0..28) */\n  length = 0;\n  for (code = 0; code < LENGTH_CODES$1 - 1; code++) {\n    base_length[code] = length;\n    for (n = 0; n < (1 << extra_lbits[code]); n++) {\n      _length_code[length++] = code;\n    }\n  }\n  //Assert (length == 256, \"tr_static_init: length != 256\");\n  /* Note that the length 255 (match length 258) can be represented\n   * in two different ways: code 284 + 5 bits or code 285, so we\n   * overwrite length_code[255] to use the best encoding:\n   */\n  _length_code[length - 1] = code;\n\n  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n  dist = 0;\n  for (code = 0; code < 16; code++) {\n    base_dist[code] = dist;\n    for (n = 0; n < (1 << extra_dbits[code]); n++) {\n      _dist_code[dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: dist != 256\");\n  dist >>= 7; /* from now on, all distances are divided by 128 */\n  for (; code < D_CODES$1; code++) {\n    base_dist[code] = dist << 7;\n    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n      _dist_code[256 + dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n  /* Construct the codes of the static literal tree */\n  for (bits = 0; bits <= MAX_BITS$1; bits++) {\n    bl_count[bits] = 0;\n  }\n\n  n = 0;\n  while (n <= 143) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  while (n <= 255) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 9;\n    n++;\n    bl_count[9]++;\n  }\n  while (n <= 279) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 7;\n    n++;\n    bl_count[7]++;\n  }\n  while (n <= 287) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  /* Codes 286 and 287 do not exist, but we must include them in the\n   * tree construction to get a canonical Huffman tree (longest code\n   * all ones)\n   */\n  gen_codes(static_ltree, L_CODES$1 + 1, bl_count);\n\n  /* The static distance tree is trivial: */\n  for (n = 0; n < D_CODES$1; n++) {\n    static_dtree[n * 2 + 1]/*.Len*/ = 5;\n    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n  }\n\n  // Now data ready and we can init static trees\n  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1);\n  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES$1, MAX_BITS$1);\n  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES$1, MAX_BL_BITS);\n\n  //static_init_done = true;\n};\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nconst init_block = (s) => {\n\n  let n; /* iterates over tree elements */\n\n  /* Initialize the trees. */\n  for (n = 0; n < L_CODES$1;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < D_CODES$1;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < BL_CODES$1; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n  s.opt_len = s.static_len = 0;\n  s.sym_next = s.matches = 0;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nconst bi_windup = (s) =>\n{\n  if (s.bi_valid > 8) {\n    put_short(s, s.bi_buf);\n  } else if (s.bi_valid > 0) {\n    //put_byte(s, (Byte)s->bi_buf);\n    s.pending_buf[s.pending++] = s.bi_buf;\n  }\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n};\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nconst smaller = (tree, n, m, depth) => {\n\n  const _n2 = n * 2;\n  const _m2 = m * 2;\n  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n};\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nconst pqdownheap = (s, tree, k) => {\n//    deflate_state *s;\n//    ct_data *tree;  /* the tree to restore */\n//    int k;               /* node to move down */\n\n  const v = s.heap[k];\n  let j = k << 1;  /* left son of k */\n  while (j <= s.heap_len) {\n    /* Set j to the smallest of the two sons: */\n    if (j < s.heap_len &&\n      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n      j++;\n    }\n    /* Exit if v is smaller than both sons */\n    if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n    /* Exchange v with the smallest son */\n    s.heap[k] = s.heap[j];\n    k = j;\n\n    /* And continue down the tree, setting j to the left son of k */\n    j <<= 1;\n  }\n  s.heap[k] = v;\n};\n\n\n// inlined manually\n// const SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nconst compress_block = (s, ltree, dtree) => {\n//    deflate_state *s;\n//    const ct_data *ltree; /* literal tree */\n//    const ct_data *dtree; /* distance tree */\n\n  let dist;           /* distance of matched string */\n  let lc;             /* match length or unmatched char (if dist == 0) */\n  let sx = 0;         /* running index in sym_buf */\n  let code;           /* the code to send */\n  let extra;          /* number of extra bits to send */\n\n  if (s.sym_next !== 0) {\n    do {\n      dist = s.pending_buf[s.sym_buf + sx++] & 0xff;\n      dist += (s.pending_buf[s.sym_buf + sx++] & 0xff) << 8;\n      lc = s.pending_buf[s.sym_buf + sx++];\n      if (dist === 0) {\n        send_code(s, lc, ltree); /* send a literal byte */\n        //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n      } else {\n        /* Here, lc is the match length - MIN_MATCH */\n        code = _length_code[lc];\n        send_code(s, code + LITERALS$1 + 1, ltree); /* send the length code */\n        extra = extra_lbits[code];\n        if (extra !== 0) {\n          lc -= base_length[code];\n          send_bits(s, lc, extra);       /* send the extra length bits */\n        }\n        dist--; /* dist is now the match distance - 1 */\n        code = d_code(dist);\n        //Assert (code < D_CODES, \"bad d_code\");\n\n        send_code(s, code, dtree);       /* send the distance code */\n        extra = extra_dbits[code];\n        if (extra !== 0) {\n          dist -= base_dist[code];\n          send_bits(s, dist, extra);   /* send the extra distance bits */\n        }\n      } /* literal or match pair ? */\n\n      /* Check that the overlay between pending_buf and sym_buf is ok: */\n      //Assert(s->pending < s->lit_bufsize + sx, \"pendingBuf overflow\");\n\n    } while (sx < s.sym_next);\n  }\n\n  send_code(s, END_BLOCK, ltree);\n};\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n *     and corresponding code. The length opt_len is updated; static_len is\n *     also updated if stree is not null. The field max_code is set.\n */\nconst build_tree = (s, desc) => {\n//    deflate_state *s;\n//    tree_desc *desc; /* the tree descriptor */\n\n  const tree     = desc.dyn_tree;\n  const stree    = desc.stat_desc.static_tree;\n  const has_stree = desc.stat_desc.has_stree;\n  const elems    = desc.stat_desc.elems;\n  let n, m;          /* iterate over heap elements */\n  let max_code = -1; /* largest code with non zero frequency */\n  let node;          /* new node being created */\n\n  /* Construct the initial heap, with least frequent element in\n   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n   * heap[0] is not used.\n   */\n  s.heap_len = 0;\n  s.heap_max = HEAP_SIZE$1;\n\n  for (n = 0; n < elems; n++) {\n    if (tree[n * 2]/*.Freq*/ !== 0) {\n      s.heap[++s.heap_len] = max_code = n;\n      s.depth[n] = 0;\n\n    } else {\n      tree[n * 2 + 1]/*.Len*/ = 0;\n    }\n  }\n\n  /* The pkzip format requires that at least one distance code exists,\n   * and that at least one bit should be sent even if there is only one\n   * possible code. So to avoid special checks later on we force at least\n   * two codes of non zero frequency.\n   */\n  while (s.heap_len < 2) {\n    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n    tree[node * 2]/*.Freq*/ = 1;\n    s.depth[node] = 0;\n    s.opt_len--;\n\n    if (has_stree) {\n      s.static_len -= stree[node * 2 + 1]/*.Len*/;\n    }\n    /* node is 0 or 1 so it does not have extra bits */\n  }\n  desc.max_code = max_code;\n\n  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n   * establish sub-heaps of increasing lengths:\n   */\n  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n  /* Construct the Huffman tree by repeatedly combining the least two\n   * frequent nodes.\n   */\n  node = elems;              /* next internal node of the tree */\n  do {\n    //pqremove(s, tree, n);  /* n = node of least frequency */\n    /*** pqremove ***/\n    n = s.heap[1/*SMALLEST*/];\n    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n    /***/\n\n    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n    s.heap[--s.heap_max] = m;\n\n    /* Create a new node father of n and m */\n    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n    /* and insert the new node in the heap */\n    s.heap[1/*SMALLEST*/] = node++;\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n\n  } while (s.heap_len >= 2);\n\n  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n  /* At this point, the fields freq and dad are set. We can now\n   * generate the bit lengths.\n   */\n  gen_bitlen(s, desc);\n\n  /* The field len is now set, we can generate the bit codes */\n  gen_codes(tree, max_code, s.bl_count);\n};\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nconst scan_tree = (s, tree, max_code) => {\n//    deflate_state *s;\n//    ct_data *tree;   /* the tree to be scanned */\n//    int max_code;    /* and its largest code of non zero frequency */\n\n  let n;                     /* iterates over all tree elements */\n  let prevlen = -1;          /* last emitted length */\n  let curlen;                /* length of current code */\n\n  let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  let count = 0;             /* repeat count of the current code */\n  let max_count = 7;         /* max repeat count */\n  let min_count = 4;         /* min repeat count */\n\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n    } else if (curlen !== 0) {\n\n      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n    } else if (count <= 10) {\n      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n    } else {\n      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n    }\n\n    count = 0;\n    prevlen = curlen;\n\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n};\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nconst send_tree = (s, tree, max_code) => {\n//    deflate_state *s;\n//    ct_data *tree; /* the tree to be scanned */\n//    int max_code;       /* and its largest code of non zero frequency */\n\n  let n;                     /* iterates over all tree elements */\n  let prevlen = -1;          /* last emitted length */\n  let curlen;                /* length of current code */\n\n  let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  let count = 0;             /* repeat count of the current code */\n  let max_count = 7;         /* max repeat count */\n  let min_count = 4;         /* min repeat count */\n\n  /* tree[max_code+1].Len = -1; */  /* guard already set */\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n    } else if (curlen !== 0) {\n      if (curlen !== prevlen) {\n        send_code(s, curlen, s.bl_tree);\n        count--;\n      }\n      //Assert(count >= 3 && count <= 6, \" 3_6?\");\n      send_code(s, REP_3_6, s.bl_tree);\n      send_bits(s, count - 3, 2);\n\n    } else if (count <= 10) {\n      send_code(s, REPZ_3_10, s.bl_tree);\n      send_bits(s, count - 3, 3);\n\n    } else {\n      send_code(s, REPZ_11_138, s.bl_tree);\n      send_bits(s, count - 11, 7);\n    }\n\n    count = 0;\n    prevlen = curlen;\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n};\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nconst build_bl_tree = (s) => {\n\n  let max_blindex;  /* index of last bit length code of non zero freq */\n\n  /* Determine the bit length frequencies for literal and distance trees */\n  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n  /* Build the bit length tree: */\n  build_tree(s, s.bl_desc);\n  /* opt_len now includes the length of the tree representations, except\n   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n   */\n\n  /* Determine the number of bit length codes to send. The pkzip format\n   * requires that at least 4 bit length codes be sent. (appnote.txt says\n   * 3 but the actual value used is 4.)\n   */\n  for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) {\n    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n      break;\n    }\n  }\n  /* Update opt_len to include the bit length tree and counts */\n  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n  //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n  //        s->opt_len, s->static_len));\n\n  return max_blindex;\n};\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nconst send_all_trees = (s, lcodes, dcodes, blcodes) => {\n//    deflate_state *s;\n//    int lcodes, dcodes, blcodes; /* number of codes for each tree */\n\n  let rank;                    /* index in bl_order */\n\n  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n  //        \"too many codes\");\n  //Tracev((stderr, \"\\nbl counts: \"));\n  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n  send_bits(s, dcodes - 1,   5);\n  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */\n  for (rank = 0; rank < blcodes; rank++) {\n    //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n  }\n  //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n  //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n  //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n};\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n *    a) There are no non-portable control characters belonging to the\n *       \"block list\" (0..6, 14..25, 28..31).\n *    b) There is at least one printable character belonging to the\n *       \"allow list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n *   \"gray list\" that is ignored in this detection algorithm:\n *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nconst detect_data_type = (s) => {\n  /* block_mask is the bit mask of block-listed bytes\n   * set bits 0..6, 14..25, and 28..31\n   * 0xf3ffc07f = binary 11110011111111111100000001111111\n   */\n  let block_mask = 0xf3ffc07f;\n  let n;\n\n  /* Check for non-textual (\"block-listed\") bytes. */\n  for (n = 0; n <= 31; n++, block_mask >>>= 1) {\n    if ((block_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n      return Z_BINARY;\n    }\n  }\n\n  /* Check for textual (\"allow-listed\") bytes. */\n  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n    return Z_TEXT;\n  }\n  for (n = 32; n < LITERALS$1; n++) {\n    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n      return Z_TEXT;\n    }\n  }\n\n  /* There are no \"block-listed\" or \"allow-listed\" bytes:\n   * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n   */\n  return Z_BINARY;\n};\n\n\nlet static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nconst _tr_init$1 = (s) =>\n{\n\n  if (!static_init_done) {\n    tr_static_init();\n    static_init_done = true;\n  }\n\n  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);\n  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);\n  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n\n  /* Initialize the first block of the first file: */\n  init_block(s);\n};\n\n\n/* ===========================================================================\n * Send a stored block\n */\nconst _tr_stored_block$1 = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf;       /* input block */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n\n  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */\n  bi_windup(s);        /* align on byte boundary */\n  put_short(s, stored_len);\n  put_short(s, ~stored_len);\n  if (stored_len) {\n    s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending);\n  }\n  s.pending += stored_len;\n};\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nconst _tr_align$1 = (s) => {\n  send_bits(s, STATIC_TREES << 1, 3);\n  send_code(s, END_BLOCK, static_ltree);\n  bi_flush(s);\n};\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and write out the encoded block.\n */\nconst _tr_flush_block$1 = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf;       /* input block, or NULL if too old */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n\n  let opt_lenb, static_lenb;  /* opt_len and static_len in bytes */\n  let max_blindex = 0;        /* index of last bit length code of non zero freq */\n\n  /* Build the Huffman trees unless a stored block is forced */\n  if (s.level > 0) {\n\n    /* Check if the file is binary or text */\n    if (s.strm.data_type === Z_UNKNOWN$1) {\n      s.strm.data_type = detect_data_type(s);\n    }\n\n    /* Construct the literal and distance trees */\n    build_tree(s, s.l_desc);\n    // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n\n    build_tree(s, s.d_desc);\n    // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n    /* At this point, opt_len and static_len are the total bit lengths of\n     * the compressed block data, excluding the tree representations.\n     */\n\n    /* Build the bit length tree for the above two trees, and get the index\n     * in bl_order of the last bit length code to send.\n     */\n    max_blindex = build_bl_tree(s);\n\n    /* Determine the best encoding. Compute the block lengths in bytes. */\n    opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n    static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n    // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n    //        s->sym_next / 3));\n\n    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n  } else {\n    // Assert(buf != (char*)0, \"lost buf\");\n    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n  }\n\n  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n    /* 4: two words for the lengths */\n\n    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n     * Otherwise we can't have processed more than WSIZE input bytes since\n     * the last block flush, because compression would have been\n     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n     * transform a block into a stored block.\n     */\n    _tr_stored_block$1(s, buf, stored_len, last);\n\n  } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) {\n\n    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n    compress_block(s, static_ltree, static_dtree);\n\n  } else {\n    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n    compress_block(s, s.dyn_ltree, s.dyn_dtree);\n  }\n  // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n  /* The above check is made mod 2^32, for files larger than 512 MB\n   * and uLong implemented on 32 bits.\n   */\n  init_block(s);\n\n  if (last) {\n    bi_windup(s);\n  }\n  // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n  //       s->compressed_len-7*last));\n};\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nconst _tr_tally$1 = (s, dist, lc) => {\n//    deflate_state *s;\n//    unsigned dist;  /* distance of matched string */\n//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */\n\n  s.pending_buf[s.sym_buf + s.sym_next++] = dist;\n  s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8;\n  s.pending_buf[s.sym_buf + s.sym_next++] = lc;\n  if (dist === 0) {\n    /* lc is the unmatched char */\n    s.dyn_ltree[lc * 2]/*.Freq*/++;\n  } else {\n    s.matches++;\n    /* Here, lc is the match length - MIN_MATCH */\n    dist--;             /* dist = match distance - 1 */\n    //Assert((ush)dist < (ush)MAX_DIST(s) &&\n    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n    //       (ush)d_code(dist) < (ush)D_CODES,  \"_tr_tally: bad match\");\n\n    s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]/*.Freq*/++;\n    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n  }\n\n  return (s.sym_next === s.sym_end);\n};\n\nvar _tr_init_1  = _tr_init$1;\nvar _tr_stored_block_1 = _tr_stored_block$1;\nvar _tr_flush_block_1  = _tr_flush_block$1;\nvar _tr_tally_1 = _tr_tally$1;\nvar _tr_align_1 = _tr_align$1;\n\nvar trees = {\n\t_tr_init: _tr_init_1,\n\t_tr_stored_block: _tr_stored_block_1,\n\t_tr_flush_block: _tr_flush_block_1,\n\t_tr_tally: _tr_tally_1,\n\t_tr_align: _tr_align_1\n};\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = (adler, buf, len, pos) => {\n  let s1 = (adler & 0xffff) |0,\n      s2 = ((adler >>> 16) & 0xffff) |0,\n      n = 0;\n\n  while (len !== 0) {\n    // Set limit ~ twice less than 5552, to keep\n    // s2 in 31-bits, because we force signed ints.\n    // in other case %= will fail.\n    n = len > 2000 ? 2000 : len;\n    len -= n;\n\n    do {\n      s1 = (s1 + buf[pos++]) |0;\n      s2 = (s2 + s1) |0;\n    } while (--n);\n\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return (s1 | (s2 << 16)) |0;\n};\n\n\nvar adler32_1 = adler32;\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nconst makeTable = () => {\n  let c, table = [];\n\n  for (var n = 0; n < 256; n++) {\n    c = n;\n    for (var k = 0; k < 8; k++) {\n      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n    }\n    table[n] = c;\n  }\n\n  return table;\n};\n\n// Create table on load. Just 255 signed longs. Not a problem.\nconst crcTable = new Uint32Array(makeTable());\n\n\nconst crc32 = (crc, buf, len, pos) => {\n  const t = crcTable;\n  const end = pos + len;\n\n  crc ^= -1;\n\n  for (let i = pos; i < end; i++) {\n    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n  }\n\n  return (crc ^ (-1)); // >>> 0;\n};\n\n\nvar crc32_1 = crc32;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar messages = {\n  2:      'need dictionary',     /* Z_NEED_DICT       2  */\n  1:      'stream end',          /* Z_STREAM_END      1  */\n  0:      '',                    /* Z_OK              0  */\n  '-1':   'file error',          /* Z_ERRNO         (-1) */\n  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */\n  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */\n  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */\n  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */\n  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar constants$2 = {\n\n  /* Allowed flush values; see deflate() and inflate() below for details */\n  Z_NO_FLUSH:         0,\n  Z_PARTIAL_FLUSH:    1,\n  Z_SYNC_FLUSH:       2,\n  Z_FULL_FLUSH:       3,\n  Z_FINISH:           4,\n  Z_BLOCK:            5,\n  Z_TREES:            6,\n\n  /* Return codes for the compression/decompression functions. Negative values\n  * are errors, positive values are used for special but normal events.\n  */\n  Z_OK:               0,\n  Z_STREAM_END:       1,\n  Z_NEED_DICT:        2,\n  Z_ERRNO:           -1,\n  Z_STREAM_ERROR:    -2,\n  Z_DATA_ERROR:      -3,\n  Z_MEM_ERROR:       -4,\n  Z_BUF_ERROR:       -5,\n  //Z_VERSION_ERROR: -6,\n\n  /* compression levels */\n  Z_NO_COMPRESSION:         0,\n  Z_BEST_SPEED:             1,\n  Z_BEST_COMPRESSION:       9,\n  Z_DEFAULT_COMPRESSION:   -1,\n\n\n  Z_FILTERED:               1,\n  Z_HUFFMAN_ONLY:           2,\n  Z_RLE:                    3,\n  Z_FIXED:                  4,\n  Z_DEFAULT_STRATEGY:       0,\n\n  /* Possible values of the data_type field (though see inflate()) */\n  Z_BINARY:                 0,\n  Z_TEXT:                   1,\n  //Z_ASCII:                1, // = Z_TEXT (deprecated)\n  Z_UNKNOWN:                2,\n\n  /* The deflate compression method */\n  Z_DEFLATED:               8\n  //Z_NULL:                 null // Use -1 or null inline, depending on var type\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees;\n\n\n\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n  Z_NO_FLUSH: Z_NO_FLUSH$2, Z_PARTIAL_FLUSH, Z_FULL_FLUSH: Z_FULL_FLUSH$1, Z_FINISH: Z_FINISH$3, Z_BLOCK: Z_BLOCK$1,\n  Z_OK: Z_OK$3, Z_STREAM_END: Z_STREAM_END$3, Z_STREAM_ERROR: Z_STREAM_ERROR$2, Z_DATA_ERROR: Z_DATA_ERROR$2, Z_BUF_ERROR: Z_BUF_ERROR$2,\n  Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1,\n  Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1,\n  Z_UNKNOWN,\n  Z_DEFLATED: Z_DEFLATED$2\n} = constants$2;\n\n/*============================================================================*/\n\n\nconst MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nconst MAX_WBITS$1 = 15;\n/* 32K LZ77 window */\nconst DEF_MEM_LEVEL = 8;\n\n\nconst LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nconst LITERALS      = 256;\n/* number of literal bytes 0..255 */\nconst L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nconst D_CODES       = 30;\n/* number of distance codes */\nconst BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\nconst HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\nconst MAX_BITS  = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE    =  42;    /* zlib header -> BUSY_STATE */\n//#ifdef GZIP\nconst GZIP_STATE    =  57;    /* gzip header -> BUSY_STATE | EXTRA_STATE */\n//#endif\nconst EXTRA_STATE   =  69;    /* gzip extra block -> NAME_STATE */\nconst NAME_STATE    =  73;    /* gzip file name -> COMMENT_STATE */\nconst COMMENT_STATE =  91;    /* gzip comment -> HCRC_STATE */\nconst HCRC_STATE    = 103;    /* gzip header CRC -> BUSY_STATE */\nconst BUSY_STATE    = 113;    /* deflate -> FINISH_STATE */\nconst FINISH_STATE  = 666;    /* stream complete */\n\nconst BS_NEED_MORE      = 1; /* block not completed, need more input or more output */\nconst BS_BLOCK_DONE     = 2; /* block flush performed */\nconst BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nconst BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */\n\nconst OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nconst err = (strm, errorCode) => {\n  strm.msg = messages[errorCode];\n  return errorCode;\n};\n\nconst rank = (f) => {\n  return ((f) * 2) - ((f) > 4 ? 9 : 0);\n};\n\nconst zero = (buf) => {\n  let len = buf.length; while (--len >= 0) { buf[len] = 0; }\n};\n\n/* ===========================================================================\n * Slide the hash table when sliding the window down (could be avoided with 32\n * bit values at the expense of memory usage). We slide even when level == 0 to\n * keep the hash table consistent if we switch back to level > 0 later.\n */\nconst slide_hash = (s) => {\n  let n, m;\n  let p;\n  let wsize = s.w_size;\n\n  n = s.hash_size;\n  p = n;\n  do {\n    m = s.head[--p];\n    s.head[p] = (m >= wsize ? m - wsize : 0);\n  } while (--n);\n  n = wsize;\n//#ifndef FASTEST\n  p = n;\n  do {\n    m = s.prev[--p];\n    s.prev[p] = (m >= wsize ? m - wsize : 0);\n    /* If n is not on any hash chain, prev[n] is garbage but\n     * its value will never be used.\n     */\n  } while (--n);\n//#endif\n};\n\n/* eslint-disable new-cap */\nlet HASH = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n\n\n/* ===========================================================================\n * Insert string str in the dictionary and set match_head to the previous head\n * of the hash chain (the most recent string with same hash key). Return\n * the previous length of the hash chain.\n * IN  assertion: all calls to INSERT_STRING are made with consecutive input\n *    characters and the first MIN_MATCH bytes of str are valid (except for\n *    the last MIN_MATCH-1 bytes of the input file).\n */\nconst INSERT_STRING = (s, str) => {\n  let h;\n  if (s.legacy_hash) {\n    /* UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]); */\n    h = s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n  } else {\n    // ANZAC++ hash: reads 4 bytes, matches node.js zlib output (legacyHash\n    // restores classic zlib hash). Faster, with fewer collisions.\n    const w = s.window;\n    // Read 4 bytes little-endian. Math.imul reproduces C uint32 overflow in\n    // `(value * 66521 + 66521) >> 16` exactly.\n    const value = w[str] | (w[str + 1] << 8) | (w[str + 2] << 16) | (w[str + 3] << 24);\n    h = s.ins_h = ((Math.imul(value, 66521) + 66521) >>> 16) & s.hash_mask;\n  }\n  const hash_head = s.prev[str & s.w_mask] = s.head[h];\n  s.head[h] = str;\n  return hash_head;\n};\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output, except for\n * some deflate_stored() output, goes through this function so some\n * applications may wish to modify it to avoid allocating a large\n * strm->next_out buffer and copying into it. (See also read_buf()).\n */\nconst flush_pending = (strm) => {\n  const s = strm.state;\n\n  //_tr_flush_bits(s);\n  let len = s.pending;\n  if (len > strm.avail_out) {\n    len = strm.avail_out;\n  }\n  if (len === 0) { return; }\n\n  strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n  strm.next_out  += len;\n  s.pending_out  += len;\n  strm.total_out += len;\n  strm.avail_out -= len;\n  s.pending      -= len;\n  if (s.pending === 0) {\n    s.pending_out = 0;\n  }\n};\n\n\nconst flush_block_only = (s, last) => {\n  _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n  s.block_start = s.strstart;\n  flush_pending(s.strm);\n};\n\n\nconst put_byte = (s, b) => {\n  s.pending_buf[s.pending++] = b;\n};\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nconst putShortMSB = (s, b) => {\n\n  //  put_byte(s, (Byte)(b >> 8));\n//  put_byte(s, (Byte)(b & 0xff));\n  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n  s.pending_buf[s.pending++] = b & 0xff;\n};\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read.  All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nconst read_buf = (strm, buf, start, size) => {\n\n  let len = strm.avail_in;\n\n  if (len > size) { len = size; }\n  if (len === 0) { return 0; }\n\n  strm.avail_in -= len;\n\n  // zmemcpy(buf, strm->next_in, len);\n  buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n  if (strm.state.wrap === 1) {\n    strm.adler = adler32_1(strm.adler, buf, len, start);\n  }\n\n  else if (strm.state.wrap === 2) {\n    strm.adler = crc32_1(strm.adler, buf, len, start);\n  }\n\n  strm.next_in += len;\n  strm.total_in += len;\n\n  return len;\n};\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nconst longest_match = (s, cur_match) => {\n\n  let chain_length = s.max_chain_length;      /* max hash chain length */\n  let scan = s.strstart; /* current string */\n  let match;                       /* matched string */\n  let len;                           /* length of current match */\n  let best_len = s.prev_length;              /* best match length so far */\n  let nice_match = s.nice_match;             /* stop if match long enough */\n  const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n  const _win = s.window; // shortcut\n\n  const wmask = s.w_mask;\n  const prev  = s.prev;\n\n  /* Stop when cur_match becomes <= limit. To simplify the code,\n   * we prevent matches with the string of window index 0.\n   */\n\n  const strend = s.strstart + MAX_MATCH;\n  let scan_end1  = _win[scan + best_len - 1];\n  let scan_end   = _win[scan + best_len];\n\n  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n   * It is easy to get rid of this optimization if necessary.\n   */\n  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n  /* Do not waste too much time if we already have a good match: */\n  if (s.prev_length >= s.good_match) {\n    chain_length >>= 2;\n  }\n  /* Do not look for matches beyond the end of the input. This is necessary\n   * to make deflate deterministic.\n   */\n  if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n  do {\n    // Assert(cur_match < s->strstart, \"no future\");\n    match = cur_match;\n\n    /* Skip to next match if the match length cannot increase\n     * or if the match length is less than 2.  Note that the checks below\n     * for insufficient lookahead only occur occasionally for performance\n     * reasons.  Therefore uninitialized memory will be accessed, and\n     * conditional jumps will be made that depend on those values.\n     * However the length of the match is limited to the lookahead, so\n     * the output of deflate is not affected by the uninitialized values.\n     */\n\n    if (_win[match + best_len]     !== scan_end  ||\n        _win[match + best_len - 1] !== scan_end1 ||\n        _win[match]                !== _win[scan] ||\n        _win[++match]              !== _win[scan + 1]) {\n      continue;\n    }\n\n    /* The check at best_len-1 can be removed because it will be made\n     * again later. (This heuristic is not always a win.)\n     * It is not necessary to compare scan[2] and match[2] since they\n     * are always equal when the other bytes match, given that\n     * the hash keys are equal and that HASH_BITS >= 8.\n     */\n    scan += 2;\n    match++;\n    // Assert(*scan == *match, \"match[2]?\");\n\n    /* We check for insufficient lookahead only every 8th comparison;\n     * the 256th check will be made at strstart+258.\n     */\n    do {\n      /*jshint noempty:false*/\n    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             scan < strend);\n\n    // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n    len = MAX_MATCH - (strend - scan);\n    scan = strend - MAX_MATCH;\n\n    if (len > best_len) {\n      s.match_start = cur_match;\n      best_len = len;\n      if (len >= nice_match) {\n        break;\n      }\n      scan_end1  = _win[scan + best_len - 1];\n      scan_end   = _win[scan + best_len];\n    }\n  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n  if (best_len <= s.lookahead) {\n    return best_len;\n  }\n  return s.lookahead;\n};\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n *    At least one byte has been read, or avail_in == 0; reads are\n *    performed for at least two bytes (required for the zip translate_eol\n *    option -- not supported here).\n */\nconst fill_window = (s) => {\n\n  const _w_size = s.w_size;\n  let n, more, str;\n\n  //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n  do {\n    more = s.window_size - s.lookahead - s.strstart;\n\n    // JS ints have 32 bit, block below not needed\n    /* Deal with !@#$% 64K limit: */\n    //if (sizeof(int) <= 2) {\n    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n    //        more = wsize;\n    //\n    //  } else if (more == (unsigned)(-1)) {\n    //        /* Very unlikely, but possible on 16 bit machine if\n    //         * strstart == 0 && lookahead == 1 (input done a byte at time)\n    //         */\n    //        more--;\n    //    }\n    //}\n\n\n    /* If the window is almost full and there is insufficient lookahead,\n     * move the upper half to the lower one to make room in the upper half.\n     */\n    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n      s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0);\n      s.match_start -= _w_size;\n      s.strstart -= _w_size;\n      /* we now have strstart >= MAX_DIST */\n      s.block_start -= _w_size;\n      if (s.insert > s.strstart) {\n        s.insert = s.strstart;\n      }\n      slide_hash(s);\n      more += _w_size;\n    }\n    if (s.strm.avail_in === 0) {\n      break;\n    }\n\n    /* If there was no sliding:\n     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n     *    more == window_size - lookahead - strstart\n     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n     * => more >= window_size - 2*WSIZE + 2\n     * In the BIG_MEM or MMAP case (not yet supported),\n     *   window_size == input_size + MIN_LOOKAHEAD  &&\n     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n     * Otherwise, window_size == 2*WSIZE so more >= 2.\n     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n     */\n    //Assert(more >= 2, \"more < 2\");\n    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n    s.lookahead += n;\n\n    /* Initialize the hash value now that we have some input: */\n    if (!s.legacy_hash) {\n      /* The 4-byte hash reads one extra byte, so it needs one more available. */\n      if (s.lookahead + s.insert > MIN_MATCH) {\n        str = s.strstart - s.insert;\n        while (s.insert) {\n          INSERT_STRING(s, str);\n          str++;\n          s.insert--;\n          if (s.lookahead + s.insert <= MIN_MATCH) {\n            break;\n          }\n        }\n      }\n    } else if (s.lookahead + s.insert >= MIN_MATCH) {\n      str = s.strstart - s.insert;\n      s.ins_h = s.window[str];\n\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n      s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n//#if MIN_MATCH != 3\n//        Call update_hash() MIN_MATCH-3 more times\n//#endif\n      while (s.insert) {\n        INSERT_STRING(s, str);\n        str++;\n        s.insert--;\n        if (s.lookahead + s.insert < MIN_MATCH) {\n          break;\n        }\n      }\n    }\n    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n     * but this is not important since only literal bytes will be emitted.\n     */\n\n  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n  /* If the WIN_INIT bytes after the end of the current data have never been\n   * written, then zero those bytes in order to avoid memory check reports of\n   * the use of uninitialized (or uninitialised as Julian writes) bytes by\n   * the longest match routines.  Update the high water mark for the next\n   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match\n   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n   */\n//  if (s.high_water < s.window_size) {\n//    const curr = s.strstart + s.lookahead;\n//    let init = 0;\n//\n//    if (s.high_water < curr) {\n//      /* Previous high water mark below current data -- zero WIN_INIT\n//       * bytes or up to end of window, whichever is less.\n//       */\n//      init = s.window_size - curr;\n//      if (init > WIN_INIT)\n//        init = WIN_INIT;\n//      zmemzero(s->window + curr, (unsigned)init);\n//      s->high_water = curr + init;\n//    }\n//    else if (s->high_water < (ulg)curr + WIN_INIT) {\n//      /* High water mark at or above current data, but below current data\n//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n//       * to end of window, whichever is less.\n//       */\n//      init = (ulg)curr + WIN_INIT - s->high_water;\n//      if (init > s->window_size - s->high_water)\n//        init = s->window_size - s->high_water;\n//      zmemzero(s->window + s->high_water, (unsigned)init);\n//      s->high_water += init;\n//    }\n//  }\n//\n//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n//    \"not enough room for search\");\n};\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n *\n * In case deflateParams() is used to later switch to a non-zero compression\n * level, s->matches (otherwise unused when storing) keeps track of the number\n * of hash table slides to perform. If s->matches is 1, then one hash table\n * slide will be done when switching. If s->matches is 2, the maximum value\n * allowed here, then the hash table will be cleared, since two or more slides\n * is the same as a clear.\n *\n * deflate_stored() is written to minimize the number of times an input byte is\n * copied. It is most efficient with large input and output buffers, which\n * maximizes the opportunites to have a single copy from next_in to next_out.\n */\nconst deflate_stored = (s, flush) => {\n\n  /* Smallest worthy block size when not flushing or finishing. By default\n   * this is 32K. This can be as small as 507 bytes for memLevel == 1. For\n   * large input and output buffers, the stored block size will be larger.\n   */\n  let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5;\n\n  /* Copy as many min_block or larger stored blocks directly to next_out as\n   * possible. If flushing, copy the remaining available input to next_out as\n   * stored blocks, if there is enough space.\n   */\n  let len, left, have, last = 0;\n  let used = s.strm.avail_in;\n  do {\n    /* Set len to the maximum size block that we can copy directly with the\n     * available input data and output space. Set left to how much of that\n     * would be copied from what's left in the window.\n     */\n    len = 65535/* MAX_STORED */;     /* maximum deflate stored block length */\n    have = (s.bi_valid + 42) >> 3;     /* number of header bytes */\n    if (s.strm.avail_out < have) {         /* need room for header */\n      break;\n    }\n      /* maximum stored block length that will fit in avail_out: */\n    have = s.strm.avail_out - have;\n    left = s.strstart - s.block_start;  /* bytes left in window */\n    if (len > left + s.strm.avail_in) {\n      len = left + s.strm.avail_in;   /* limit len to the input */\n    }\n    if (len > have) {\n      len = have;             /* limit len to the output */\n    }\n\n    /* If the stored block would be less than min_block in length, or if\n     * unable to copy all of the available input when flushing, then try\n     * copying to the window and the pending buffer instead. Also don't\n     * write an empty block when flushing -- deflate() does that.\n     */\n    if (len < min_block && ((len === 0 && flush !== Z_FINISH$3) ||\n                        flush === Z_NO_FLUSH$2 ||\n                        len !== left + s.strm.avail_in)) {\n      break;\n    }\n\n    /* Make a dummy stored block in pending to get the header bytes,\n     * including any pending bits. This also updates the debugging counts.\n     */\n    last = flush === Z_FINISH$3 && len === left + s.strm.avail_in ? 1 : 0;\n    _tr_stored_block(s, 0, 0, last);\n\n    /* Replace the lengths in the dummy stored block with len. */\n    s.pending_buf[s.pending - 4] = len;\n    s.pending_buf[s.pending - 3] = len >> 8;\n    s.pending_buf[s.pending - 2] = ~len;\n    s.pending_buf[s.pending - 1] = ~len >> 8;\n\n    /* Write the stored block header bytes. */\n    flush_pending(s.strm);\n\n//#ifdef ZLIB_DEBUG\n//    /* Update debugging counts for the data about to be copied. */\n//    s->compressed_len += len << 3;\n//    s->bits_sent += len << 3;\n//#endif\n\n    /* Copy uncompressed bytes from the window to next_out. */\n    if (left) {\n      if (left > len) {\n        left = len;\n      }\n      //zmemcpy(s->strm->next_out, s->window + s->block_start, left);\n      s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out);\n      s.strm.next_out += left;\n      s.strm.avail_out -= left;\n      s.strm.total_out += left;\n      s.block_start += left;\n      len -= left;\n    }\n\n    /* Copy uncompressed bytes directly from next_in to next_out, updating\n     * the check value.\n     */\n    if (len) {\n      read_buf(s.strm, s.strm.output, s.strm.next_out, len);\n      s.strm.next_out += len;\n      s.strm.avail_out -= len;\n      s.strm.total_out += len;\n    }\n  } while (last === 0);\n\n  /* Update the sliding window with the last s->w_size bytes of the copied\n   * data, or append all of the copied data to the existing window if less\n   * than s->w_size bytes were copied. Also update the number of bytes to\n   * insert in the hash tables, in the event that deflateParams() switches to\n   * a non-zero compression level.\n   */\n  used -= s.strm.avail_in;    /* number of input bytes directly copied */\n  if (used) {\n    /* If any input was used, then no unused input remains in the window,\n     * therefore s->block_start == s->strstart.\n     */\n    if (used >= s.w_size) {  /* supplant the previous history */\n      s.matches = 2;     /* clear hash */\n      //zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);\n      s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0);\n      s.strstart = s.w_size;\n      s.insert = s.strstart;\n    }\n    else {\n      if (s.window_size - s.strstart <= used) {\n        /* Slide the window down. */\n        s.strstart -= s.w_size;\n        //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n        s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n        if (s.matches < 2) {\n          s.matches++;   /* add a pending slide_hash() */\n        }\n        if (s.insert > s.strstart) {\n          s.insert = s.strstart;\n        }\n      }\n      //zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);\n      s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart);\n      s.strstart += used;\n      s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;\n    }\n    s.block_start = s.strstart;\n  }\n  if (s.high_water < s.strstart) {\n    s.high_water = s.strstart;\n  }\n\n  /* If the last block was written to next_out, then done. */\n  if (last) {\n    return BS_FINISH_DONE;\n  }\n\n  /* If flushing and all input has been consumed, then done. */\n  if (flush !== Z_NO_FLUSH$2 && flush !== Z_FINISH$3 &&\n    s.strm.avail_in === 0 && s.strstart === s.block_start) {\n    return BS_BLOCK_DONE;\n  }\n\n  /* Fill the window with any remaining input. */\n  have = s.window_size - s.strstart;\n  if (s.strm.avail_in > have && s.block_start >= s.w_size) {\n    /* Slide the window down. */\n    s.block_start -= s.w_size;\n    s.strstart -= s.w_size;\n    //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n    s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n    if (s.matches < 2) {\n      s.matches++;       /* add a pending slide_hash() */\n    }\n    have += s.w_size;      /* more space now */\n    if (s.insert > s.strstart) {\n      s.insert = s.strstart;\n    }\n  }\n  if (have > s.strm.avail_in) {\n    have = s.strm.avail_in;\n  }\n  if (have) {\n    read_buf(s.strm, s.window, s.strstart, have);\n    s.strstart += have;\n    s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have;\n  }\n  if (s.high_water < s.strstart) {\n    s.high_water = s.strstart;\n  }\n\n  /* There was not enough avail_out to write a complete worthy or flushed\n   * stored block to next_out. Write a stored block to pending instead, if we\n   * have enough input for a worthy block, or if flushing and there is enough\n   * room for the remaining input as a stored block in the pending buffer.\n   */\n  have = (s.bi_valid + 42) >> 3;     /* number of header bytes */\n    /* maximum stored block length that will fit in pending: */\n  have = s.pending_buf_size - have > 65535/* MAX_STORED */ ? 65535/* MAX_STORED */ : s.pending_buf_size - have;\n  min_block = have > s.w_size ? s.w_size : have;\n  left = s.strstart - s.block_start;\n  if (left >= min_block ||\n     ((left || flush === Z_FINISH$3) && flush !== Z_NO_FLUSH$2 &&\n     s.strm.avail_in === 0 && left <= have)) {\n    len = left > have ? have : left;\n    last = flush === Z_FINISH$3 && s.strm.avail_in === 0 &&\n         len === left ? 1 : 0;\n    _tr_stored_block(s, s.block_start, len, last);\n    s.block_start += len;\n    flush_pending(s.strm);\n  }\n\n  /* We've done all we can with the available input and output. */\n  return last ? BS_FINISH_STARTED : BS_NEED_MORE;\n};\n\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nconst deflate_fast = (s, flush) => {\n\n  let hash_head;        /* head of the hash chain */\n  let bflush;           /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) {\n        break; /* flush the current block */\n      }\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      hash_head = INSERT_STRING(s, s.strstart);\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     * At this point we have always match_length < MIN_MATCH\n     */\n    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n    }\n    if (s.match_length >= MIN_MATCH) {\n      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n      /*** _tr_tally_dist(s, s.strstart - s.match_start,\n                     s.match_length - MIN_MATCH, bflush); ***/\n      bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n\n      /* Insert new strings in the hash table only if the match length\n       * is not too large. This saves time but degrades compression.\n       */\n      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n        s.match_length--; /* string at strstart already in table */\n        do {\n          s.strstart++;\n          hash_head = INSERT_STRING(s, s.strstart);\n          /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n           * always MIN_MATCH bytes ahead.\n           */\n        } while (--s.match_length !== 0);\n        s.strstart++;\n      } else\n      {\n        s.strstart += s.match_length;\n        s.match_length = 0;\n        if (s.legacy_hash) {\n          s.ins_h = s.window[s.strstart];\n          /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n          s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n\n//#if MIN_MATCH != 3\n//                Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n          /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n           * matter since it will be recomputed at next deflate call.\n           */\n        }\n      }\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n  if (flush === Z_FINISH$3) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nconst deflate_slow = (s, flush) => {\n\n  let hash_head;          /* head of hash chain */\n  let bflush;              /* set if current block must be flushed */\n\n  let max_insert;\n\n  /* Process the input block. */\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      hash_head = INSERT_STRING(s, s.strstart);\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     */\n    s.prev_length = s.match_length;\n    s.prev_match = s.match_start;\n    s.match_length = MIN_MATCH - 1;\n\n    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n\n      if (s.match_length <= 5 &&\n         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n        /* If prev_match is also MIN_MATCH, match_start is garbage\n         * but we will ignore the current match anyway.\n         */\n        s.match_length = MIN_MATCH - 1;\n      }\n    }\n    /* If there was a match at the previous step and the current\n     * match is not better, output the previous match:\n     */\n    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n      max_insert = s.strstart + s.lookahead - MIN_MATCH;\n      /* Do not insert strings in hash table beyond this. */\n\n      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n                     s.prev_length - MIN_MATCH, bflush);***/\n      bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n      /* Insert in hash table all strings up to the end of the match.\n       * strstart-1 and strstart are already inserted. If there is not\n       * enough lookahead, the last two strings are not inserted in\n       * the hash table.\n       */\n      s.lookahead -= s.prev_length - 1;\n      s.prev_length -= 2;\n      do {\n        if (++s.strstart <= max_insert) {\n          hash_head = INSERT_STRING(s, s.strstart);\n        }\n      } while (--s.prev_length !== 0);\n      s.match_available = 0;\n      s.match_length = MIN_MATCH - 1;\n      s.strstart++;\n\n      if (bflush) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n\n    } else if (s.match_available) {\n      /* If there was no match at the previous position, output a\n       * single literal. If there was a match but the current match\n       * is longer, truncate the previous match to a single literal.\n       */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n      bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n      if (bflush) {\n        /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n        flush_block_only(s, false);\n        /***/\n      }\n      s.strstart++;\n      s.lookahead--;\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    } else {\n      /* There is no previous match to compare with, wait for\n       * the next step to decide.\n       */\n      s.match_available = 1;\n      s.strstart++;\n      s.lookahead--;\n    }\n  }\n  //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n  if (s.match_available) {\n    //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n    bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n    s.match_available = 0;\n  }\n  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n  if (flush === Z_FINISH$3) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_BLOCK_DONE;\n};\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one.  Do not maintain a hash table.  (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nconst deflate_rle = (s, flush) => {\n\n  let bflush;            /* set if current block must be flushed */\n  let prev;              /* byte at distance one to match */\n  let scan, strend;      /* scan goes up to strend for length of run */\n\n  const _win = s.window;\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the longest run, plus one for the unrolled loop.\n     */\n    if (s.lookahead <= MAX_MATCH) {\n      fill_window(s);\n      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* See how many times the previous byte repeats */\n    s.match_length = 0;\n    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n      scan = s.strstart - 1;\n      prev = _win[scan];\n      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n        strend = s.strstart + MAX_MATCH;\n        do {\n          /*jshint noempty:false*/\n        } while (prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 scan < strend);\n        s.match_length = MAX_MATCH - (strend - scan);\n        if (s.match_length > s.lookahead) {\n          s.match_length = s.lookahead;\n        }\n      }\n      //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n    }\n\n    /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n    if (s.match_length >= MIN_MATCH) {\n      //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n      bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n      s.strstart += s.match_length;\n      s.match_length = 0;\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH$3) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nconst deflate_huff = (s, flush) => {\n\n  let bflush;             /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we have a literal to write. */\n    if (s.lookahead === 0) {\n      fill_window(s);\n      if (s.lookahead === 0) {\n        if (flush === Z_NO_FLUSH$2) {\n          return BS_NEED_MORE;\n        }\n        break;      /* flush the current block */\n      }\n    }\n\n    /* Output a literal byte */\n    s.match_length = 0;\n    //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n    bflush = _tr_tally(s, 0, s.window[s.strstart]);\n    s.lookahead--;\n    s.strstart++;\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH$3) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.sym_next) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n};\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\n  this.good_length = good_length;\n  this.max_lazy = max_lazy;\n  this.nice_length = nice_length;\n  this.max_chain = max_chain;\n  this.func = func;\n}\n\nconst configuration_table = [\n  /*      good lazy nice chain */\n  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */\n  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */\n  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */\n  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */\n\n  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */\n  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */\n  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */\n  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */\n  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */\n  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nconst lm_init = (s) => {\n\n  s.window_size = 2 * s.w_size;\n\n  /*** CLEAR_HASH(s); ***/\n  zero(s.head); // Fill with NIL (= 0);\n\n  /* Set the default configuration parameters:\n   */\n  s.max_lazy_match = configuration_table[s.level].max_lazy;\n  s.good_match = configuration_table[s.level].good_length;\n  s.nice_match = configuration_table[s.level].nice_length;\n  s.max_chain_length = configuration_table[s.level].max_chain;\n\n  s.strstart = 0;\n  s.block_start = 0;\n  s.lookahead = 0;\n  s.insert = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  s.ins_h = 0;\n};\n\n\nfunction DeflateState() {\n  this.strm = null;            /* pointer back to this zlib stream */\n  this.status = 0;            /* as the name implies */\n  this.pending_buf = null;      /* output still pending */\n  this.pending_buf_size = 0;  /* size of pending_buf */\n  this.pending_out = 0;       /* next pending byte to output to the stream */\n  this.pending = 0;           /* nb of bytes in the pending buffer */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.gzhead = null;         /* gzip header information to write */\n  this.gzindex = 0;           /* where in extra, name, or comment */\n  this.method = Z_DEFLATED$2; /* can only be DEFLATED */\n  this.last_flush = -1;   /* value of flush param for previous deflate call */\n\n  this.w_size = 0;  /* LZ77 window size (32K by default) */\n  this.w_bits = 0;  /* log2(w_size)  (8..16) */\n  this.w_mask = 0;  /* w_size - 1 */\n\n  this.window = null;\n  /* Sliding window. Input bytes are read into the second half of the window,\n   * and move to the first half later to keep a dictionary of at least wSize\n   * bytes. With this organization, matches are limited to a distance of\n   * wSize-MAX_MATCH bytes, but this ensures that IO is always\n   * performed with a length multiple of the block size.\n   */\n\n  this.window_size = 0;\n  /* Actual size of window: 2*wSize, except when the user input buffer\n   * is directly used as sliding window.\n   */\n\n  this.prev = null;\n  /* Link to older string with same hash index. To limit the size of this\n   * array to 64K, this link is maintained only for the last 32K strings.\n   * An index in this array is thus a window index modulo 32K.\n   */\n\n  this.head = null;   /* Heads of the hash chains or NIL. */\n\n  this.ins_h = 0;       /* hash index of string to be inserted */\n  this.legacy_hash = 0; /* use classic zlib hash instead of default ANZAC++ */\n  this.hash_size = 0;   /* number of elements in hash table */\n  this.hash_bits = 0;   /* log2(hash_size) */\n  this.hash_mask = 0;   /* hash_size-1 */\n\n  this.hash_shift = 0;\n  /* Number of bits by which ins_h must be shifted at each input\n   * step. It must be such that after MIN_MATCH steps, the oldest\n   * byte no longer takes part in the hash key, that is:\n   *   hash_shift * MIN_MATCH >= hash_bits\n   */\n\n  this.block_start = 0;\n  /* Window position at the beginning of the current output block. Gets\n   * negative when the window is moved backwards.\n   */\n\n  this.match_length = 0;      /* length of best match */\n  this.prev_match = 0;        /* previous match */\n  this.match_available = 0;   /* set if previous match exists */\n  this.strstart = 0;          /* start of string to insert */\n  this.match_start = 0;       /* start of matching string */\n  this.lookahead = 0;         /* number of valid bytes ahead in window */\n\n  this.prev_length = 0;\n  /* Length of the best match at previous step. Matches not greater than this\n   * are discarded. This is used in the lazy match evaluation.\n   */\n\n  this.max_chain_length = 0;\n  /* To speed up deflation, hash chains are never searched beyond this\n   * length.  A higher limit improves compression ratio but degrades the\n   * speed.\n   */\n\n  this.max_lazy_match = 0;\n  /* Attempt to find a better match only when the current match is strictly\n   * smaller than this value. This mechanism is used only for compression\n   * levels >= 4.\n   */\n  // That's alias to max_lazy_match, don't use directly\n  //this.max_insert_length = 0;\n  /* Insert new strings in the hash table only if the match length is not\n   * greater than this length. This saves time but degrades compression.\n   * max_insert_length is used only for compression levels <= 3.\n   */\n\n  this.level = 0;     /* compression level (1..9) */\n  this.strategy = 0;  /* favor or force Huffman coding*/\n\n  this.good_match = 0;\n  /* Use a faster search when the previous match is longer than this */\n\n  this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n              /* used by trees.c: */\n\n  /* Didn't use ct_data typedef below to suppress compiler warning */\n\n  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */\n  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */\n\n  // Use flat array of DOUBLE size, with interleaved fata,\n  // because JS does not support effective\n  this.dyn_ltree  = new Uint16Array(HEAP_SIZE * 2);\n  this.dyn_dtree  = new Uint16Array((2 * D_CODES + 1) * 2);\n  this.bl_tree    = new Uint16Array((2 * BL_CODES + 1) * 2);\n  zero(this.dyn_ltree);\n  zero(this.dyn_dtree);\n  zero(this.bl_tree);\n\n  this.l_desc   = null;         /* desc. for literal tree */\n  this.d_desc   = null;         /* desc. for distance tree */\n  this.bl_desc  = null;         /* desc. for bit length tree */\n\n  //ush bl_count[MAX_BITS+1];\n  this.bl_count = new Uint16Array(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */\n  this.heap = new Uint16Array(2 * L_CODES + 1);  /* heap used to build the Huffman trees */\n  zero(this.heap);\n\n  this.heap_len = 0;               /* number of elements in the heap */\n  this.heap_max = 0;               /* element of largest frequency */\n  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n   * The same heap array is used to build all trees.\n   */\n\n  this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n  zero(this.depth);\n  /* Depth of each subtree used as tie breaker for trees of equal frequency\n   */\n\n  this.sym_buf = 0;        /* buffer for distances and literals/lengths */\n\n  this.lit_bufsize = 0;\n  /* Size of match buffer for literals/lengths.  There are 4 reasons for\n   * limiting lit_bufsize to 64K:\n   *   - frequencies can be kept in 16 bit counters\n   *   - if compression is not successful for the first block, all input\n   *     data is still in the window so we can still emit a stored block even\n   *     when input comes from standard input.  (This can also be done for\n   *     all blocks if lit_bufsize is not greater than 32K.)\n   *   - if compression is not successful for a file smaller than 64K, we can\n   *     even emit a stored file instead of a stored block (saving 5 bytes).\n   *     This is applicable only for zip (not gzip or zlib).\n   *   - creating new Huffman trees less frequently may not provide fast\n   *     adaptation to changes in the input data statistics. (Take for\n   *     example a binary file with poorly compressible code followed by\n   *     a highly compressible string table.) Smaller buffer sizes give\n   *     fast adaptation but have of course the overhead of transmitting\n   *     trees more frequently.\n   *   - I can't count above 4\n   */\n\n  this.sym_next = 0;      /* running index in sym_buf */\n  this.sym_end = 0;       /* symbol table full when sym_next reaches this */\n\n  this.opt_len = 0;       /* bit length of current block with optimal trees */\n  this.static_len = 0;    /* bit length of current block with static trees */\n  this.matches = 0;       /* number of string matches in current block */\n  this.insert = 0;        /* bytes at end of window left to insert */\n\n\n  this.bi_buf = 0;\n  /* Output buffer. bits are inserted starting at the bottom (least\n   * significant bits).\n   */\n  this.bi_valid = 0;\n  /* Number of valid bits in bi_buf.  All bits above the last valid bit\n   * are always zero.\n   */\n\n  // Used for window memory init. We safely ignore it for JS. That makes\n  // sense only for pointers and memory check tools.\n  //this.high_water = 0;\n  /* High water mark offset in window for initialized bytes -- bytes above\n   * this are set to zero in order to avoid memory check warnings when\n   * longest match routines access bytes past the input.  This is then\n   * updated to the new high water mark.\n   */\n}\n\n\n/* =========================================================================\n * Check for a valid deflate stream state. Return 0 if ok, 1 if not.\n */\nconst deflateStateCheck = (strm) => {\n\n  if (!strm) {\n    return 1;\n  }\n  const s = strm.state;\n  if (!s || s.strm !== strm || (s.status !== INIT_STATE &&\n//#ifdef GZIP\n                                s.status !== GZIP_STATE &&\n//#endif\n                                s.status !== EXTRA_STATE &&\n                                s.status !== NAME_STATE &&\n                                s.status !== COMMENT_STATE &&\n                                s.status !== HCRC_STATE &&\n                                s.status !== BUSY_STATE &&\n                                s.status !== FINISH_STATE)) {\n    return 1;\n  }\n  return 0;\n};\n\n\nconst deflateResetKeep = (strm) => {\n\n  if (deflateStateCheck(strm)) {\n    return err(strm, Z_STREAM_ERROR$2);\n  }\n\n  strm.total_in = strm.total_out = 0;\n  strm.data_type = Z_UNKNOWN;\n\n  const s = strm.state;\n  s.pending = 0;\n  s.pending_out = 0;\n\n  if (s.wrap < 0) {\n    s.wrap = -s.wrap;\n    /* was made negative by deflate(..., Z_FINISH); */\n  }\n  s.status =\n//#ifdef GZIP\n    s.wrap === 2 ? GZIP_STATE :\n//#endif\n    s.wrap ? INIT_STATE : BUSY_STATE;\n  strm.adler = (s.wrap === 2) ?\n    0  // crc32(0, Z_NULL, 0)\n  :\n    1; // adler32(0, Z_NULL, 0)\n  s.last_flush = -2;\n  _tr_init(s);\n  return Z_OK$3;\n};\n\n\nconst deflateReset = (strm) => {\n\n  const ret = deflateResetKeep(strm);\n  if (ret === Z_OK$3) {\n    lm_init(strm.state);\n  }\n  return ret;\n};\n\n\nconst deflateSetHeader = (strm, head) => {\n\n  if (deflateStateCheck(strm) || strm.state.wrap !== 2) {\n    return Z_STREAM_ERROR$2;\n  }\n  strm.state.gzhead = head;\n  return Z_OK$3;\n};\n\n\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy, legacyHash) => {\n\n  if (!strm) { // === Z_NULL\n    return Z_STREAM_ERROR$2;\n  }\n  let wrap = 1;\n\n  if (level === Z_DEFAULT_COMPRESSION$1) {\n    level = 6;\n  }\n\n  if (windowBits < 0) { /* suppress zlib wrapper */\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n\n  else if (windowBits > 15) {\n    wrap = 2;           /* write gzip wrapper instead */\n    windowBits -= 16;\n  }\n\n\n  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 ||\n    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n    strategy < 0 || strategy > Z_FIXED || (windowBits === 8 && wrap !== 1)) {\n    return err(strm, Z_STREAM_ERROR$2);\n  }\n\n\n  if (windowBits === 8) {\n    windowBits = 9;\n  }\n  /* until 256-byte window bug fixed */\n\n  const s = new DeflateState();\n\n  strm.state = s;\n  s.strm = strm;\n  s.status = INIT_STATE;     /* to pass state test in deflateReset() */\n\n  s.wrap = wrap;\n  s.gzhead = null;\n  s.w_bits = windowBits;\n  s.w_size = 1 << s.w_bits;\n  s.w_mask = s.w_size - 1;\n\n  s.legacy_hash = legacyHash ? 1 : 0;\n\n  s.hash_bits = memLevel + 7;\n  /* ANZAC++ hash needs >= 15 hash bits to span its 4 read bytes. */\n  if (!s.legacy_hash && s.hash_bits < 15) {\n    s.hash_bits = 15;\n  }\n  s.hash_size = 1 << s.hash_bits;\n  s.hash_mask = s.hash_size - 1;\n  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n  s.window = new Uint8Array(s.w_size * 2);\n  s.head = new Uint16Array(s.hash_size);\n  s.prev = new Uint16Array(s.w_size);\n\n  // Don't need mem init magic for JS.\n  //s.high_water = 0;  /* nothing written to s->window yet */\n\n  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n  /* We overlay pending_buf and sym_buf. This works since the average size\n   * for length/distance pairs over any compressed block is assured to be 31\n   * bits or less.\n   *\n   * Analysis: The longest fixed codes are a length code of 8 bits plus 5\n   * extra bits, for lengths 131 to 257. The longest fixed distance codes are\n   * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest\n   * possible fixed-codes length/distance pair is then 31 bits total.\n   *\n   * sym_buf starts one-fourth of the way into pending_buf. So there are\n   * three bytes in sym_buf for every four bytes in pending_buf. Each symbol\n   * in sym_buf is three bytes -- two for the distance and one for the\n   * literal/length. As each symbol is consumed, the pointer to the next\n   * sym_buf value to read moves forward three bytes. From that symbol, up to\n   * 31 bits are written to pending_buf. The closest the written pending_buf\n   * bits gets to the next sym_buf symbol to read is just before the last\n   * code is written. At that time, 31*(n-2) bits have been written, just\n   * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at\n   * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1\n   * symbols are written.) The closest the writing gets to what is unread is\n   * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and\n   * can range from 128 to 32768.\n   *\n   * Therefore, at a minimum, there are 142 bits of space between what is\n   * written and what is read in the overlain buffers, so the symbols cannot\n   * be overwritten by the compressed data. That space is actually 139 bits,\n   * due to the three-bit fixed-code block header.\n   *\n   * That covers the case where either Z_FIXED is specified, forcing fixed\n   * codes, or when the use of fixed codes is chosen, because that choice\n   * results in a smaller compressed block than dynamic codes. That latter\n   * condition then assures that the above analysis also covers all dynamic\n   * blocks. A dynamic-code block will only be chosen to be emitted if it has\n   * fewer bits than a fixed-code block would for the same set of symbols.\n   * Therefore its average symbol length is assured to be less than 31. So\n   * the compressed data for a dynamic block also cannot overwrite the\n   * symbols from which it is being constructed.\n   */\n\n  s.pending_buf_size = s.lit_bufsize * 4;\n  s.pending_buf = new Uint8Array(s.pending_buf_size);\n\n  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n  //s->sym_buf = s->pending_buf + s->lit_bufsize;\n  s.sym_buf = s.lit_bufsize;\n\n  //s->sym_end = (s->lit_bufsize - 1) * 3;\n  s.sym_end = (s.lit_bufsize - 1) * 3;\n  /* We avoid equality with lit_bufsize*3 because of wraparound at 64K\n   * on 16 bit machines and because stored blocks are restricted to\n   * 64K-1 bytes.\n   */\n\n  s.level = level;\n  s.strategy = strategy;\n  s.method = method;\n\n  return deflateReset(strm);\n};\n\nconst deflateInit = (strm, level) => {\n\n  return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1);\n};\n\n\n/* ========================================================================= */\nconst deflate$2 = (strm, flush) => {\n\n  if (deflateStateCheck(strm) || flush > Z_BLOCK$1 || flush < 0) {\n    return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2;\n  }\n\n  const s = strm.state;\n\n  if (!strm.output ||\n      (strm.avail_in !== 0 && !strm.input) ||\n      (s.status === FINISH_STATE && flush !== Z_FINISH$3)) {\n    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR$2 : Z_STREAM_ERROR$2);\n  }\n\n  const old_flush = s.last_flush;\n  s.last_flush = flush;\n\n  /* Flush as much pending output as possible */\n  if (s.pending !== 0) {\n    flush_pending(strm);\n    if (strm.avail_out === 0) {\n      /* Since avail_out is 0, deflate will be called again with\n       * more output space, but possibly with both pending and\n       * avail_in equal to zero. There won't be anything to do,\n       * but this is not an error situation so make sure we\n       * return OK instead of BUF_ERROR at next call of deflate:\n       */\n      s.last_flush = -1;\n      return Z_OK$3;\n    }\n\n    /* Make sure there is something to do and avoid duplicate consecutive\n     * flushes. For repeated and useless calls with Z_FINISH, we keep\n     * returning Z_STREAM_END instead of Z_BUF_ERROR.\n     */\n  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n    flush !== Z_FINISH$3) {\n    return err(strm, Z_BUF_ERROR$2);\n  }\n\n  /* User must not provide more input after the first FINISH: */\n  if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n    return err(strm, Z_BUF_ERROR$2);\n  }\n\n  /* Write the header */\n  if (s.status === INIT_STATE && s.wrap === 0) {\n    s.status = BUSY_STATE;\n  }\n  if (s.status === INIT_STATE) {\n    /* zlib header */\n    let header = (Z_DEFLATED$2 + ((s.w_bits - 8) << 4)) << 8;\n    let level_flags = -1;\n\n    if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n      level_flags = 0;\n    } else if (s.level < 6) {\n      level_flags = 1;\n    } else if (s.level === 6) {\n      level_flags = 2;\n    } else {\n      level_flags = 3;\n    }\n    header |= (level_flags << 6);\n    if (s.strstart !== 0) { header |= PRESET_DICT; }\n    header += 31 - (header % 31);\n\n    putShortMSB(s, header);\n\n    /* Save the adler32 of the preset dictionary: */\n    if (s.strstart !== 0) {\n      putShortMSB(s, strm.adler >>> 16);\n      putShortMSB(s, strm.adler & 0xffff);\n    }\n    strm.adler = 1; // adler32(0L, Z_NULL, 0);\n    s.status = BUSY_STATE;\n\n    /* Compression must start with an empty pending buffer */\n    flush_pending(strm);\n    if (s.pending !== 0) {\n      s.last_flush = -1;\n      return Z_OK$3;\n    }\n  }\n//#ifdef GZIP\n  if (s.status === GZIP_STATE) {\n    /* gzip header */\n    strm.adler = 0;  //crc32(0L, Z_NULL, 0);\n    put_byte(s, 31);\n    put_byte(s, 139);\n    put_byte(s, 8);\n    if (!s.gzhead) { // s->gzhead == Z_NULL\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, 0);\n      put_byte(s, s.level === 9 ? 2 :\n                  (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                   4 : 0));\n      put_byte(s, OS_CODE);\n      s.status = BUSY_STATE;\n\n      /* Compression must start with an empty pending buffer */\n      flush_pending(strm);\n      if (s.pending !== 0) {\n        s.last_flush = -1;\n        return Z_OK$3;\n      }\n    }\n    else {\n      put_byte(s, (s.gzhead.text ? 1 : 0) +\n                  (s.gzhead.hcrc ? 2 : 0) +\n                  (!s.gzhead.extra ? 0 : 4) +\n                  (!s.gzhead.name ? 0 : 8) +\n                  (!s.gzhead.comment ? 0 : 16)\n      );\n      put_byte(s, s.gzhead.time & 0xff);\n      put_byte(s, (s.gzhead.time >> 8) & 0xff);\n      put_byte(s, (s.gzhead.time >> 16) & 0xff);\n      put_byte(s, (s.gzhead.time >> 24) & 0xff);\n      put_byte(s, s.level === 9 ? 2 :\n                  (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                   4 : 0));\n      put_byte(s, s.gzhead.os & 0xff);\n      if (s.gzhead.extra && s.gzhead.extra.length) {\n        put_byte(s, s.gzhead.extra.length & 0xff);\n        put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n      }\n      if (s.gzhead.hcrc) {\n        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0);\n      }\n      s.gzindex = 0;\n      s.status = EXTRA_STATE;\n    }\n  }\n  if (s.status === EXTRA_STATE) {\n    if (s.gzhead.extra/* != Z_NULL*/) {\n      let beg = s.pending;   /* start of bytes to update crc */\n      let left = (s.gzhead.extra.length & 0xffff) - s.gzindex;\n      while (s.pending + left > s.pending_buf_size) {\n        let copy = s.pending_buf_size - s.pending;\n        // zmemcpy(s.pending_buf + s.pending,\n        //    s.gzhead.extra + s.gzindex, copy);\n        s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending);\n        s.pending = s.pending_buf_size;\n        //--- HCRC_UPDATE(beg) ---//\n        if (s.gzhead.hcrc && s.pending > beg) {\n          strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n        }\n        //---//\n        s.gzindex += copy;\n        flush_pending(strm);\n        if (s.pending !== 0) {\n          s.last_flush = -1;\n          return Z_OK$3;\n        }\n        beg = 0;\n        left -= copy;\n      }\n      // JS specific: s.gzhead.extra may be TypedArray or Array for backward compatibility\n      //              TypedArray.slice and TypedArray.from don't exist in IE10-IE11\n      let gzhead_extra = new Uint8Array(s.gzhead.extra);\n      // zmemcpy(s->pending_buf + s->pending,\n      //     s->gzhead->extra + s->gzindex, left);\n      s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending);\n      s.pending += left;\n      //--- HCRC_UPDATE(beg) ---//\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      //---//\n      s.gzindex = 0;\n    }\n    s.status = NAME_STATE;\n  }\n  if (s.status === NAME_STATE) {\n    if (s.gzhead.name/* != Z_NULL*/) {\n      let beg = s.pending;   /* start of bytes to update crc */\n      let val;\n      do {\n        if (s.pending === s.pending_buf_size) {\n          //--- HCRC_UPDATE(beg) ---//\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          //---//\n          flush_pending(strm);\n          if (s.pending !== 0) {\n            s.last_flush = -1;\n            return Z_OK$3;\n          }\n          beg = 0;\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.name.length) {\n          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n      //--- HCRC_UPDATE(beg) ---//\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      //---//\n      s.gzindex = 0;\n    }\n    s.status = COMMENT_STATE;\n  }\n  if (s.status === COMMENT_STATE) {\n    if (s.gzhead.comment/* != Z_NULL*/) {\n      let beg = s.pending;   /* start of bytes to update crc */\n      let val;\n      do {\n        if (s.pending === s.pending_buf_size) {\n          //--- HCRC_UPDATE(beg) ---//\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          //---//\n          flush_pending(strm);\n          if (s.pending !== 0) {\n            s.last_flush = -1;\n            return Z_OK$3;\n          }\n          beg = 0;\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.comment.length) {\n          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n      //--- HCRC_UPDATE(beg) ---//\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      //---//\n    }\n    s.status = HCRC_STATE;\n  }\n  if (s.status === HCRC_STATE) {\n    if (s.gzhead.hcrc) {\n      if (s.pending + 2 > s.pending_buf_size) {\n        flush_pending(strm);\n        if (s.pending !== 0) {\n          s.last_flush = -1;\n          return Z_OK$3;\n        }\n      }\n      put_byte(s, strm.adler & 0xff);\n      put_byte(s, (strm.adler >> 8) & 0xff);\n      strm.adler = 0; //crc32(0L, Z_NULL, 0);\n    }\n    s.status = BUSY_STATE;\n\n    /* Compression must start with an empty pending buffer */\n    flush_pending(strm);\n    if (s.pending !== 0) {\n      s.last_flush = -1;\n      return Z_OK$3;\n    }\n  }\n//#endif\n\n  /* Start a new block or continue the current one.\n   */\n  if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n    (flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE)) {\n    let bstate = s.level === 0 ? deflate_stored(s, flush) :\n                 s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :\n                 s.strategy === Z_RLE ? deflate_rle(s, flush) :\n                 configuration_table[s.level].func(s, flush);\n\n    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n      s.status = FINISH_STATE;\n    }\n    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n      if (strm.avail_out === 0) {\n        s.last_flush = -1;\n        /* avoid BUF_ERROR next call, see above */\n      }\n      return Z_OK$3;\n      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n       * of deflate should use the same flush parameter to make sure\n       * that the flush is complete. So we don't have to output an\n       * empty block here, this will be done at next call. This also\n       * ensures that for a very small output buffer, we emit at most\n       * one empty block.\n       */\n    }\n    if (bstate === BS_BLOCK_DONE) {\n      if (flush === Z_PARTIAL_FLUSH) {\n        _tr_align(s);\n      }\n      else if (flush !== Z_BLOCK$1) { /* FULL_FLUSH or SYNC_FLUSH */\n\n        _tr_stored_block(s, 0, 0, false);\n        /* For a full flush, this empty block will be recognized\n         * as a special marker by inflate_sync().\n         */\n        if (flush === Z_FULL_FLUSH$1) {\n          /*** CLEAR_HASH(s); ***/             /* forget history */\n          zero(s.head); // Fill with NIL (= 0);\n\n          if (s.lookahead === 0) {\n            s.strstart = 0;\n            s.block_start = 0;\n            s.insert = 0;\n          }\n        }\n      }\n      flush_pending(strm);\n      if (strm.avail_out === 0) {\n        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n        return Z_OK$3;\n      }\n    }\n  }\n\n  if (flush !== Z_FINISH$3) { return Z_OK$3; }\n  if (s.wrap <= 0) { return Z_STREAM_END$3; }\n\n  /* Write the trailer */\n  if (s.wrap === 2) {\n    put_byte(s, strm.adler & 0xff);\n    put_byte(s, (strm.adler >> 8) & 0xff);\n    put_byte(s, (strm.adler >> 16) & 0xff);\n    put_byte(s, (strm.adler >> 24) & 0xff);\n    put_byte(s, strm.total_in & 0xff);\n    put_byte(s, (strm.total_in >> 8) & 0xff);\n    put_byte(s, (strm.total_in >> 16) & 0xff);\n    put_byte(s, (strm.total_in >> 24) & 0xff);\n  }\n  else\n  {\n    putShortMSB(s, strm.adler >>> 16);\n    putShortMSB(s, strm.adler & 0xffff);\n  }\n\n  flush_pending(strm);\n  /* If avail_out is zero, the application will call deflate again\n   * to flush the rest.\n   */\n  if (s.wrap > 0) { s.wrap = -s.wrap; }\n  /* write the trailer only once! */\n  return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3;\n};\n\n\nconst deflateEnd = (strm) => {\n\n  if (deflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$2;\n  }\n\n  const status = strm.state.status;\n\n  strm.state = null;\n\n  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3;\n};\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nconst deflateSetDictionary = (strm, dictionary) => {\n\n  let dictLength = dictionary.length;\n\n  if (deflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$2;\n  }\n\n  const s = strm.state;\n  const wrap = s.wrap;\n\n  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n    return Z_STREAM_ERROR$2;\n  }\n\n  /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n  if (wrap === 1) {\n    /* adler32(strm->adler, dictionary, dictLength); */\n    strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0);\n  }\n\n  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */\n\n  /* if dictionary would fill window, just replace the history */\n  if (dictLength >= s.w_size) {\n    if (wrap === 0) {            /* already empty otherwise */\n      /*** CLEAR_HASH(s); ***/\n      zero(s.head); // Fill with NIL (= 0);\n      s.strstart = 0;\n      s.block_start = 0;\n      s.insert = 0;\n    }\n    /* use the tail */\n    // dictionary = dictionary.slice(dictLength - s.w_size);\n    let tmpDict = new Uint8Array(s.w_size);\n    tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n    dictionary = tmpDict;\n    dictLength = s.w_size;\n  }\n  /* insert dictionary into window and hash */\n  const avail = strm.avail_in;\n  const next = strm.next_in;\n  const input = strm.input;\n  strm.avail_in = dictLength;\n  strm.next_in = 0;\n  strm.input = dictionary;\n  fill_window(s);\n  while (s.lookahead >= MIN_MATCH) {\n    let str = s.strstart;\n    let n = s.lookahead - (MIN_MATCH - 1);\n    do {\n      INSERT_STRING(s, str);\n      str++;\n    } while (--n);\n    s.strstart = str;\n    s.lookahead = MIN_MATCH - 1;\n    fill_window(s);\n  }\n  s.strstart += s.lookahead;\n  s.block_start = s.strstart;\n  s.insert = s.lookahead;\n  s.lookahead = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  strm.next_in = next;\n  strm.input = input;\n  strm.avail_in = avail;\n  s.wrap = wrap;\n  return Z_OK$3;\n};\n\n\nvar deflateInit_1 = deflateInit;\nvar deflateInit2_1 = deflateInit2;\nvar deflateReset_1 = deflateReset;\nvar deflateResetKeep_1 = deflateResetKeep;\nvar deflateSetHeader_1 = deflateSetHeader;\nvar deflate_2$1 = deflate$2;\nvar deflateEnd_1 = deflateEnd;\nvar deflateSetDictionary_1 = deflateSetDictionary;\nvar deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.deflateBound = deflateBound;\nmodule.exports.deflateCopy = deflateCopy;\nmodule.exports.deflateGetDictionary = deflateGetDictionary;\nmodule.exports.deflateParams = deflateParams;\nmodule.exports.deflatePending = deflatePending;\nmodule.exports.deflatePrime = deflatePrime;\nmodule.exports.deflateTune = deflateTune;\n*/\n\nvar deflate_1$2 = {\n\tdeflateInit: deflateInit_1,\n\tdeflateInit2: deflateInit2_1,\n\tdeflateReset: deflateReset_1,\n\tdeflateResetKeep: deflateResetKeep_1,\n\tdeflateSetHeader: deflateSetHeader_1,\n\tdeflate: deflate_2$1,\n\tdeflateEnd: deflateEnd_1,\n\tdeflateSetDictionary: deflateSetDictionary_1,\n\tdeflateInfo: deflateInfo\n};\n\nconst _has = (obj, key) => {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nvar assign = function (obj /*from1, from2, from3, ...*/) {\n  const sources = Array.prototype.slice.call(arguments, 1);\n  while (sources.length) {\n    const source = sources.shift();\n    if (!source) { continue; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be non-object');\n    }\n\n    for (const p in source) {\n      if (_has(source, p)) {\n        obj[p] = source[p];\n      }\n    }\n  }\n\n  return obj;\n};\n\n\n// Join array of chunks to single array.\nvar flattenChunks = (chunks) => {\n  // calculate data length\n  let len = 0;\n\n  for (let i = 0, l = chunks.length; i < l; i++) {\n    len += chunks[i].length;\n  }\n\n  // join chunks\n  const result = new Uint8Array(len);\n\n  for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n    let chunk = chunks[i];\n    result.set(chunk, pos);\n    pos += chunk.length;\n  }\n\n  return result;\n};\n\nvar common = {\n\tassign: assign,\n\tflattenChunks: flattenChunks\n};\n\n// String encode/decode helpers\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nlet STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n  _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[255] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nvar string2buf = (str) => {\n  if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) {\n    return new TextEncoder().encode(str);\n  }\n\n  let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n  // count binary size\n  for (m_pos = 0; m_pos < str_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n  }\n\n  // allocate buffer\n  buf = new Uint8Array(buf_len);\n\n  // convert\n  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    if (c < 0x80) {\n      /* one byte */\n      buf[i++] = c;\n    } else if (c < 0x800) {\n      /* two bytes */\n      buf[i++] = 0xC0 | (c >>> 6);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else if (c < 0x10000) {\n      /* three bytes */\n      buf[i++] = 0xE0 | (c >>> 12);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else {\n      /* four bytes */\n      buf[i++] = 0xf0 | (c >>> 18);\n      buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    }\n  }\n\n  return buf;\n};\n\n// Helper\nconst buf2binstring = (buf, len) => {\n  // On Chrome, the arguments in a function call that are allowed is `65534`.\n  // If the length of the buffer is smaller than that, we can use this optimization,\n  // otherwise we will take a slower path.\n  if (len < 65534) {\n    if (buf.subarray && STR_APPLY_UIA_OK) {\n      return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n    }\n  }\n\n  let result = '';\n  for (let i = 0; i < len; i++) {\n    result += String.fromCharCode(buf[i]);\n  }\n  return result;\n};\n\n\n// convert array to string\nvar buf2string = (buf, max) => {\n  const len = max || buf.length;\n\n  if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) {\n    return new TextDecoder().decode(buf.subarray(0, max));\n  }\n\n  let i, out;\n\n  // Reserve max possible length (2 words per char)\n  // NB: by unknown reasons, Array is significantly faster for\n  //     String.fromCharCode.apply than Uint16Array.\n  const utf16buf = new Array(len * 2);\n\n  for (out = 0, i = 0; i < len;) {\n    let c = buf[i++];\n    // quick process ascii\n    if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n    let c_len = _utf8len[c];\n    // skip 5 & 6 byte codes\n    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n    // apply mask on first byte\n    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n    // join the rest\n    while (c_len > 1 && i < len) {\n      c = (c << 6) | (buf[i++] & 0x3f);\n      c_len--;\n    }\n\n    // terminated by end of string?\n    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n    if (c < 0x10000) {\n      utf16buf[out++] = c;\n    } else {\n      c -= 0x10000;\n      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n      utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n    }\n  }\n\n  return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nvar utf8border = (buf, max) => {\n\n  max = max || buf.length;\n  if (max > buf.length) { max = buf.length; }\n\n  // go back from last position, until start of sequence found\n  let pos = max - 1;\n  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n  // Very small and broken sequence,\n  // return max, because we should return something anyway.\n  if (pos < 0) { return max; }\n\n  // If we came to start of buffer - that means buffer is too small,\n  // return max too.\n  if (pos === 0) { return max; }\n\n  return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\nvar strings = {\n\tstring2buf: string2buf,\n\tbuf2string: buf2string,\n\tutf8border: utf8border\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n  /* next input byte */\n  this.input = null; // JS specific, because we have no pointers\n  this.next_in = 0;\n  /* number of bytes available at input */\n  this.avail_in = 0;\n  /* total number of input bytes read so far */\n  this.total_in = 0;\n  /* next output byte should be put there */\n  this.output = null; // JS specific, because we have no pointers\n  this.next_out = 0;\n  /* remaining free space at output */\n  this.avail_out = 0;\n  /* total number of bytes output so far */\n  this.total_out = 0;\n  /* last error message, NULL if no error */\n  this.msg = ''/*Z_NULL*/;\n  /* not visible by applications */\n  this.state = null;\n  /* best guess about the data type: binary or text */\n  this.data_type = 2/*Z_UNKNOWN*/;\n  /* adler32 value of the uncompressed data */\n  this.adler = 0;\n}\n\nvar zstream = ZStream;\n\nconst toString$1 = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n  Z_NO_FLUSH: Z_NO_FLUSH$1, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH: Z_FINISH$2,\n  Z_OK: Z_OK$2, Z_STREAM_END: Z_STREAM_END$2,\n  Z_DEFAULT_COMPRESSION,\n  Z_DEFAULT_STRATEGY,\n  Z_DEFLATED: Z_DEFLATED$1\n} = constants$2;\n\n/* ===========================================================================*/\n\nconst defaultOptions$1 = {\n  level: Z_DEFAULT_COMPRESSION,\n  method: Z_DEFLATED$1,\n  chunkSize: 16384,\n  windowBits: 15,\n  memLevel: 8,\n  strategy: Z_DEFAULT_STRATEGY,\n  legacyHash: true\n};\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * - `legacyHash` (Boolean) - use the classic zlib hash (default), which matches\n *   canonical zlib output byte-for-byte. Set to `false` to use the faster\n *   ANZAC++ hash, which matches recent (chromium) node.js output instead.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `header` (Object) - custom header for gzip\n *   - `text` (Boolean) - true if compressed data believed to be text\n *   - `time` (Number) - modification time, unix timestamp\n *   - `os` (Number) - operation system code\n *   - `extra` (Array) - array of bytes with extra data (max 65536)\n *   - `name` (String) - file name (binary string)\n *   - `comment` (String) - comment (binary string)\n *   - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n *   , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true);  // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate$1(options) {\n  this.options = common.assign({}, defaultOptions$1, options || {});\n\n  let opt = this.options;\n\n  if (opt.raw && (opt.windowBits > 0)) {\n    opt.windowBits = -opt.windowBits;\n  }\n\n  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n    opt.windowBits += 16;\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm = new zstream();\n  this.strm.avail_out = 0;\n\n  let status = deflate_1$2.deflateInit2(\n    this.strm,\n    opt.level,\n    opt.method,\n    opt.windowBits,\n    opt.memLevel,\n    opt.strategy,\n    opt.legacyHash\n  );\n\n  if (status !== Z_OK$2) {\n    throw new Error(messages[status]);\n  }\n\n  if (opt.header) {\n    deflate_1$2.deflateSetHeader(this.strm, opt.header);\n  }\n\n  if (opt.dictionary) {\n    let dict;\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      // If we need to compress text, change encoding to utf8.\n      dict = strings.string2buf(opt.dictionary);\n    } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n      dict = new Uint8Array(opt.dictionary);\n    } else {\n      dict = opt.dictionary;\n    }\n\n    status = deflate_1$2.deflateSetDictionary(this.strm, dict);\n\n    if (status !== Z_OK$2) {\n      throw new Error(messages[status]);\n    }\n\n    this._dict_set = true;\n  }\n}\n\n/**\n * Deflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n *   converted to utf8 byte sequence.\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must\n * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n * buffers and call [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nDeflate$1.prototype.push = function (data, flush_mode) {\n  const strm = this.strm;\n  const chunkSize = this.options.chunkSize;\n  let status, _flush_mode;\n\n  if (this.ended) { return false; }\n\n  if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n  else _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1;\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // If we need to compress text, change encoding to utf8.\n    strm.input = strings.string2buf(data);\n  } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  for (;;) {\n    if (strm.avail_out === 0) {\n      strm.output = new Uint8Array(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n\n    // Make sure avail_out > 6 to avoid repeating markers\n    if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {\n      this.onData(strm.output.subarray(0, strm.next_out));\n      strm.avail_out = 0;\n      continue;\n    }\n\n    status = deflate_1$2.deflate(strm, _flush_mode);\n\n    // Ended => flush and finish\n    if (status === Z_STREAM_END$2) {\n      if (strm.next_out > 0) {\n        this.onData(strm.output.subarray(0, strm.next_out));\n      }\n      status = deflate_1$2.deflateEnd(this.strm);\n      this.onEnd(status);\n      this.ended = true;\n      return status === Z_OK$2;\n    }\n\n    // Flush if out buffer full\n    if (strm.avail_out === 0) {\n      this.onData(strm.output);\n      continue;\n    }\n\n    // Flush if requested and has data\n    if (_flush_mode > 0 && strm.next_out > 0) {\n      this.onData(strm.output.subarray(0, strm.next_out));\n      strm.avail_out = 0;\n      continue;\n    }\n\n    if (strm.avail_in === 0) break;\n  }\n\n  return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array): output data.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate$1.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate$1.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === Z_OK$2) {\n    this.result = common.flattenChunks(this.chunks);\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n  const deflator = new Deflate$1(options);\n\n  deflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (deflator.err) { throw deflator.msg || messages[deflator.err]; }\n\n  return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw$1(input, options) {\n  options = options || {};\n  options.raw = true;\n  return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip$1(input, options) {\n  options = options || {};\n  options.gzip = true;\n  return deflate$1(input, options);\n}\n\n\nvar Deflate_1$1 = Deflate$1;\nvar deflate_2 = deflate$1;\nvar deflateRaw_1$1 = deflateRaw$1;\nvar gzip_1$1 = gzip$1;\nvar constants$1 = constants$2;\n\nvar deflate_1$1 = {\n\tDeflate: Deflate_1$1,\n\tdeflate: deflate_2,\n\tdeflateRaw: deflateRaw_1$1,\n\tgzip: gzip_1$1,\n\tconstants: constants$1\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nconst BAD$1 = 16209;       /* got a data error -- remain here until reset */\nconst TYPE$1 = 16191;      /* i: waiting for type bits, including last-flag bit */\n\n/*\n   Decode literal, length, and distance codes and write out the resulting\n   literal and match bytes until either not enough input or output is\n   available, an end-of-block is encountered, or a data error is encountered.\n   When large enough input and output buffers are supplied to inflate(), for\n   example, a 16K input buffer and a 64K output buffer, more than 95% of the\n   inflate execution time is spent in this routine.\n\n   Entry assumptions:\n\n        state.mode === LEN\n        strm.avail_in >= 6\n        strm.avail_out >= 258\n        start >= strm.avail_out\n        state.bits < 8\n\n   On return, state.mode is one of:\n\n        LEN -- ran out of enough output space or enough available input\n        TYPE -- reached end of block code, inflate() to interpret next block\n        BAD -- error in block data\n\n   Notes:\n\n    - The maximum input bits used by a length/distance pair is 15 bits for the\n      length code, 5 bits for the length extra, 15 bits for the distance code,\n      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.\n      Therefore if strm.avail_in >= 6, then there is enough input to avoid\n      checking for available input while decoding.\n\n    - The maximum bytes that a single length/distance pair can output is 258\n      bytes, which is the maximum length that can be coded.  inflate_fast()\n      requires strm.avail_out >= 258 for each loop to avoid checking for\n      output space.\n */\nvar inffast = function inflate_fast(strm, start) {\n  let _in;                    /* local strm.input */\n  let last;                   /* have enough input while in < last */\n  let _out;                   /* local strm.output */\n  let beg;                    /* inflate()'s initial strm.output */\n  let end;                    /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n  let dmax;                   /* maximum distance from zlib header */\n//#endif\n  let wsize;                  /* window size or zero if not using window */\n  let whave;                  /* valid bytes in the window */\n  let wnext;                  /* window write index */\n  // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n  let s_window;               /* allocated sliding window, if wsize != 0 */\n  let hold;                   /* local strm.hold */\n  let bits;                   /* local strm.bits */\n  let lcode;                  /* local strm.lencode */\n  let dcode;                  /* local strm.distcode */\n  let lmask;                  /* mask for first level of length codes */\n  let dmask;                  /* mask for first level of distance codes */\n  let here;                   /* retrieved table entry */\n  let op;                     /* code bits, operation, extra bits, or */\n                              /*  window position, window bytes to copy */\n  let len;                    /* match length, unused bytes */\n  let dist;                   /* match distance */\n  let from;                   /* where to copy match from */\n  let from_source;\n\n\n  let input, output; // JS specific, because we have no pointers\n\n  /* copy state to local variables */\n  const state = strm.state;\n  //here = state.here;\n  _in = strm.next_in;\n  input = strm.input;\n  last = _in + (strm.avail_in - 5);\n  _out = strm.next_out;\n  output = strm.output;\n  beg = _out - (start - strm.avail_out);\n  end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n  dmax = state.dmax;\n//#endif\n  wsize = state.wsize;\n  whave = state.whave;\n  wnext = state.wnext;\n  s_window = state.window;\n  hold = state.hold;\n  bits = state.bits;\n  lcode = state.lencode;\n  dcode = state.distcode;\n  lmask = (1 << state.lenbits) - 1;\n  dmask = (1 << state.distbits) - 1;\n\n\n  /* decode literals and length/distances until end-of-block or not enough\n     input data or output space */\n\n  top:\n  do {\n    if (bits < 15) {\n      hold += input[_in++] << bits;\n      bits += 8;\n      hold += input[_in++] << bits;\n      bits += 8;\n    }\n\n    here = lcode[hold & lmask];\n\n    dolen:\n    for (;;) { // Goto emulation\n      op = here >>> 24/*here.bits*/;\n      hold >>>= op;\n      bits -= op;\n      op = (here >>> 16) & 0xff/*here.op*/;\n      if (op === 0) {                          /* literal */\n        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n        //        \"inflate:         literal '%c'\\n\" :\n        //        \"inflate:         literal 0x%02x\\n\", here.val));\n        output[_out++] = here & 0xffff/*here.val*/;\n      }\n      else if (op & 16) {                     /* length base */\n        len = here & 0xffff/*here.val*/;\n        op &= 15;                           /* number of extra bits */\n        if (op) {\n          if (bits < op) {\n            hold += input[_in++] << bits;\n            bits += 8;\n          }\n          len += hold & ((1 << op) - 1);\n          hold >>>= op;\n          bits -= op;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", len));\n        if (bits < 15) {\n          hold += input[_in++] << bits;\n          bits += 8;\n          hold += input[_in++] << bits;\n          bits += 8;\n        }\n        here = dcode[hold & dmask];\n\n        dodist:\n        for (;;) { // goto emulation\n          op = here >>> 24/*here.bits*/;\n          hold >>>= op;\n          bits -= op;\n          op = (here >>> 16) & 0xff/*here.op*/;\n\n          if (op & 16) {                      /* distance base */\n            dist = here & 0xffff/*here.val*/;\n            op &= 15;                       /* number of extra bits */\n            if (bits < op) {\n              hold += input[_in++] << bits;\n              bits += 8;\n              if (bits < op) {\n                hold += input[_in++] << bits;\n                bits += 8;\n              }\n            }\n            dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n            if (dist > dmax) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD$1;\n              break top;\n            }\n//#endif\n            hold >>>= op;\n            bits -= op;\n            //Tracevv((stderr, \"inflate:         distance %u\\n\", dist));\n            op = _out - beg;                /* max distance in output */\n            if (dist > op) {                /* see if copy from window */\n              op = dist - op;               /* distance back in window */\n              if (op > whave) {\n                if (state.sane) {\n                  strm.msg = 'invalid distance too far back';\n                  state.mode = BAD$1;\n                  break top;\n                }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//                if (len <= op - whave) {\n//                  do {\n//                    output[_out++] = 0;\n//                  } while (--len);\n//                  continue top;\n//                }\n//                len -= op - whave;\n//                do {\n//                  output[_out++] = 0;\n//                } while (--op > whave);\n//                if (op === 0) {\n//                  from = _out - dist;\n//                  do {\n//                    output[_out++] = output[from++];\n//                  } while (--len);\n//                  continue top;\n//                }\n//#endif\n              }\n              from = 0; // window index\n              from_source = s_window;\n              if (wnext === 0) {           /* very common case */\n                from += wsize - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              else if (wnext < op) {      /* wrap around window */\n                from += wsize + wnext - op;\n                op -= wnext;\n                if (op < len) {         /* some from end of window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = 0;\n                  if (wnext < len) {  /* some from start of window */\n                    op = wnext;\n                    len -= op;\n                    do {\n                      output[_out++] = s_window[from++];\n                    } while (--op);\n                    from = _out - dist;      /* rest from output */\n                    from_source = output;\n                  }\n                }\n              }\n              else {                      /* contiguous in window */\n                from += wnext - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              while (len > 2) {\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                len -= 3;\n              }\n              if (len) {\n                output[_out++] = from_source[from++];\n                if (len > 1) {\n                  output[_out++] = from_source[from++];\n                }\n              }\n            }\n            else {\n              from = _out - dist;          /* copy direct from output */\n              do {                        /* minimum length is three */\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                len -= 3;\n              } while (len > 2);\n              if (len) {\n                output[_out++] = output[from++];\n                if (len > 1) {\n                  output[_out++] = output[from++];\n                }\n              }\n            }\n          }\n          else if ((op & 64) === 0) {          /* 2nd level distance code */\n            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n            continue dodist;\n          }\n          else {\n            strm.msg = 'invalid distance code';\n            state.mode = BAD$1;\n            break top;\n          }\n\n          break; // need to emulate goto via \"continue\"\n        }\n      }\n      else if ((op & 64) === 0) {              /* 2nd level length code */\n        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n        continue dolen;\n      }\n      else if (op & 32) {                     /* end-of-block */\n        //Tracevv((stderr, \"inflate:         end of block\\n\"));\n        state.mode = TYPE$1;\n        break top;\n      }\n      else {\n        strm.msg = 'invalid literal/length code';\n        state.mode = BAD$1;\n        break top;\n      }\n\n      break; // need to emulate goto via \"continue\"\n    }\n  } while (_in < last && _out < end);\n\n  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n  len = bits >> 3;\n  _in -= len;\n  bits -= len << 3;\n  hold &= (1 << bits) - 1;\n\n  /* update state and return */\n  strm.next_in = _in;\n  strm.next_out = _out;\n  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n  state.hold = hold;\n  state.bits = bits;\n  return;\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst MAXBITS = 15;\nconst ENOUGH_LENS$1 = 852;\nconst ENOUGH_DISTS$1 = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst CODES$1 = 0;\nconst LENS$1 = 1;\nconst DISTS$1 = 2;\n\nconst lbase = new Uint16Array([ /* Length codes 257..285 base */\n  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n]);\n\nconst lext = new Uint8Array([ /* Length codes 257..285 extra */\n  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 199, 75\n]);\n\nconst dbase = new Uint16Array([ /* Distance codes 0..29 base */\n  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n  8193, 12289, 16385, 24577, 0, 0\n]);\n\nconst dext = new Uint8Array([ /* Distance codes 0..29 extra */\n  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n  28, 28, 29, 29, 64, 64\n]);\n\nconst inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n{\n  const bits = opts.bits;\n      //here = opts.here; /* table entry for duplication */\n\n  let len = 0;               /* a code's length in bits */\n  let sym = 0;               /* index of code symbols */\n  let min = 0, max = 0;          /* minimum and maximum code lengths */\n  let root = 0;              /* number of index bits for root table */\n  let curr = 0;              /* number of index bits for current table */\n  let drop = 0;              /* code bits to drop for sub-table */\n  let left = 0;                   /* number of prefix codes available */\n  let used = 0;              /* code entries in table used */\n  let huff = 0;              /* Huffman code */\n  let incr;              /* for incrementing code, index */\n  let fill;              /* index for replicating entries */\n  let low;               /* low bits for current root entry */\n  let mask;              /* mask for low root bits */\n  let next;             /* next available space in table */\n  let base = null;     /* base value table to use */\n//  let shoextra;    /* extra bits table to use */\n  let match;                  /* use base and extra for symbol >= match */\n  const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */\n  const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */\n  let extra = null;\n\n  let here_bits, here_op, here_val;\n\n  /*\n   Process a set of code lengths to create a canonical Huffman code.  The\n   code lengths are lens[0..codes-1].  Each length corresponds to the\n   symbols 0..codes-1.  The Huffman code is generated by first sorting the\n   symbols by length from short to long, and retaining the symbol order\n   for codes with equal lengths.  Then the code starts with all zero bits\n   for the first code of the shortest length, and the codes are integer\n   increments for the same length, and zeros are appended as the length\n   increases.  For the deflate format, these bits are stored backwards\n   from their more natural integer increment ordering, and so when the\n   decoding tables are built in the large loop below, the integer codes\n   are incremented backwards.\n\n   This routine assumes, but does not check, that all of the entries in\n   lens[] are in the range 0..MAXBITS.  The caller must assure this.\n   1..MAXBITS is interpreted as that code length.  zero means that that\n   symbol does not occur in this code.\n\n   The codes are sorted by computing a count of codes for each length,\n   creating from that a table of starting indices for each length in the\n   sorted table, and then entering the symbols in order in the sorted\n   table.  The sorted table is work[], with that space being provided by\n   the caller.\n\n   The length counts are used for other purposes as well, i.e. finding\n   the minimum and maximum length codes, determining if there are any\n   codes at all, checking for a valid set of lengths, and looking ahead\n   at length counts to determine sub-table sizes when building the\n   decoding tables.\n   */\n\n  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n  for (len = 0; len <= MAXBITS; len++) {\n    count[len] = 0;\n  }\n  for (sym = 0; sym < codes; sym++) {\n    count[lens[lens_index + sym]]++;\n  }\n\n  /* bound code lengths, force root to be within code lengths */\n  root = bits;\n  for (max = MAXBITS; max >= 1; max--) {\n    if (count[max] !== 0) { break; }\n  }\n  if (root > max) {\n    root = max;\n  }\n  if (max === 0) {                     /* no symbols to code at all */\n    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */\n    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;\n    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n    //table.op[opts.table_index] = 64;\n    //table.bits[opts.table_index] = 1;\n    //table.val[opts.table_index++] = 0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n    opts.bits = 1;\n    return 0;     /* no symbols, but wait for decoding to report error */\n  }\n  for (min = 1; min < max; min++) {\n    if (count[min] !== 0) { break; }\n  }\n  if (root < min) {\n    root = min;\n  }\n\n  /* check for an over-subscribed or incomplete set of lengths */\n  left = 1;\n  for (len = 1; len <= MAXBITS; len++) {\n    left <<= 1;\n    left -= count[len];\n    if (left < 0) {\n      return -1;\n    }        /* over-subscribed */\n  }\n  if (left > 0 && (type === CODES$1 || max !== 1)) {\n    return -1;                      /* incomplete set */\n  }\n\n  /* generate offsets into symbol table for each length for sorting */\n  offs[1] = 0;\n  for (len = 1; len < MAXBITS; len++) {\n    offs[len + 1] = offs[len] + count[len];\n  }\n\n  /* sort symbols by length, by symbol order within each length */\n  for (sym = 0; sym < codes; sym++) {\n    if (lens[lens_index + sym] !== 0) {\n      work[offs[lens[lens_index + sym]]++] = sym;\n    }\n  }\n\n  /*\n   Create and fill in decoding tables.  In this loop, the table being\n   filled is at next and has curr index bits.  The code being used is huff\n   with length len.  That code is converted to an index by dropping drop\n   bits off of the bottom.  For codes where len is less than drop + curr,\n   those top drop + curr - len bits are incremented through all values to\n   fill the table with replicated entries.\n\n   root is the number of index bits for the root table.  When len exceeds\n   root, sub-tables are created pointed to by the root entry with an index\n   of the low root bits of huff.  This is saved in low to check for when a\n   new sub-table should be started.  drop is zero when the root table is\n   being filled, and drop is root when sub-tables are being filled.\n\n   When a new sub-table is needed, it is necessary to look ahead in the\n   code lengths to determine what size sub-table is needed.  The length\n   counts are used for this, and so count[] is decremented as codes are\n   entered in the tables.\n\n   used keeps track of how many table entries have been allocated from the\n   provided *table space.  It is checked for LENS and DIST tables against\n   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n   the initial root table size constants.  See the comments in inftrees.h\n   for more information.\n\n   sym increments through all symbols, and the loop terminates when\n   all codes of length max, i.e. all codes, have been processed.  This\n   routine permits incomplete codes, so another loop after this one fills\n   in the rest of the decoding tables with invalid code markers.\n   */\n\n  /* set up for code type */\n  // poor man optimization - use if-else instead of switch,\n  // to avoid deopts in old v8\n  if (type === CODES$1) {\n    base = extra = work;    /* dummy value--not used */\n    match = 20;\n\n  } else if (type === LENS$1) {\n    base = lbase;\n    extra = lext;\n    match = 257;\n\n  } else {                    /* DISTS */\n    base = dbase;\n    extra = dext;\n    match = 0;\n  }\n\n  /* initialize opts for loop */\n  huff = 0;                   /* starting code */\n  sym = 0;                    /* starting code symbol */\n  len = min;                  /* starting code length */\n  next = table_index;              /* current table to fill in */\n  curr = root;                /* current table index bits */\n  drop = 0;                   /* current bits to drop from code for index */\n  low = -1;                   /* trigger new sub-table when len > root */\n  used = 1 << root;          /* use root table entries */\n  mask = used - 1;            /* mask for comparing low */\n\n  /* check available table space */\n  if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n    (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n    return 1;\n  }\n\n  /* process all codes and make table entries */\n  for (;;) {\n    /* create table entry */\n    here_bits = len - drop;\n    if (work[sym] + 1 < match) {\n      here_op = 0;\n      here_val = work[sym];\n    }\n    else if (work[sym] >= match) {\n      here_op = extra[work[sym] - match];\n      here_val = base[work[sym] - match];\n    }\n    else {\n      here_op = 32 + 64;         /* end of block */\n      here_val = 0;\n    }\n\n    /* replicate for those indices with low len bits equal to huff */\n    incr = 1 << (len - drop);\n    fill = 1 << curr;\n    min = fill;                 /* save offset to next table */\n    do {\n      fill -= incr;\n      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n    } while (fill !== 0);\n\n    /* backwards increment the len-bit code huff */\n    incr = 1 << (len - 1);\n    while (huff & incr) {\n      incr >>= 1;\n    }\n    if (incr !== 0) {\n      huff &= incr - 1;\n      huff += incr;\n    } else {\n      huff = 0;\n    }\n\n    /* go to next symbol, update count, len */\n    sym++;\n    if (--count[len] === 0) {\n      if (len === max) { break; }\n      len = lens[lens_index + work[sym]];\n    }\n\n    /* create new sub-table if needed */\n    if (len > root && (huff & mask) !== low) {\n      /* if first time, transition to sub-tables */\n      if (drop === 0) {\n        drop = root;\n      }\n\n      /* increment past last table */\n      next += min;            /* here min is 1 << curr */\n\n      /* determine length of next table */\n      curr = len - drop;\n      left = 1 << curr;\n      while (curr + drop < max) {\n        left -= count[curr + drop];\n        if (left <= 0) { break; }\n        curr++;\n        left <<= 1;\n      }\n\n      /* check for enough space */\n      used += 1 << curr;\n      if ((type === LENS$1 && used > ENOUGH_LENS$1) ||\n        (type === DISTS$1 && used > ENOUGH_DISTS$1)) {\n        return 1;\n      }\n\n      /* point entry in root table to sub-table */\n      low = huff & mask;\n      /*table.op[low] = curr;\n      table.bits[low] = root;\n      table.val[low] = next - opts.table_index;*/\n      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n    }\n  }\n\n  /* fill in remaining table entry if code is incomplete (guaranteed to have\n   at most one remaining entry, since if the code is incomplete, the\n   maximum code length that was allowed to get this far is one bit) */\n  if (huff !== 0) {\n    //table.op[next + huff] = 64;            /* invalid code marker */\n    //table.bits[next + huff] = len - drop;\n    //table.val[next + huff] = 0;\n    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n  }\n\n  /* set return parameters */\n  //opts.table_index += used;\n  opts.bits = root;\n  return 0;\n};\n\n\nvar inftrees = inflate_table;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n\n\n\n\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n  Z_FINISH: Z_FINISH$1, Z_BLOCK, Z_TREES,\n  Z_OK: Z_OK$1, Z_STREAM_END: Z_STREAM_END$1, Z_NEED_DICT: Z_NEED_DICT$1, Z_STREAM_ERROR: Z_STREAM_ERROR$1, Z_DATA_ERROR: Z_DATA_ERROR$1, Z_MEM_ERROR: Z_MEM_ERROR$1, Z_BUF_ERROR: Z_BUF_ERROR$1,\n  Z_DEFLATED\n} = constants$2;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nconst    HEAD = 16180;       /* i: waiting for magic header */\nconst    FLAGS = 16181;      /* i: waiting for method and flags (gzip) */\nconst    TIME = 16182;       /* i: waiting for modification time (gzip) */\nconst    OS = 16183;         /* i: waiting for extra flags and operating system (gzip) */\nconst    EXLEN = 16184;      /* i: waiting for extra length (gzip) */\nconst    EXTRA = 16185;      /* i: waiting for extra bytes (gzip) */\nconst    NAME = 16186;       /* i: waiting for end of file name (gzip) */\nconst    COMMENT = 16187;    /* i: waiting for end of comment (gzip) */\nconst    HCRC = 16188;       /* i: waiting for header crc (gzip) */\nconst    DICTID = 16189;    /* i: waiting for dictionary check value */\nconst    DICT = 16190;      /* waiting for inflateSetDictionary() call */\nconst        TYPE = 16191;      /* i: waiting for type bits, including last-flag bit */\nconst        TYPEDO = 16192;    /* i: same, but skip check to exit inflate on new block */\nconst        STORED = 16193;    /* i: waiting for stored size (length and complement) */\nconst        COPY_ = 16194;     /* i/o: same as COPY below, but only first time in */\nconst        COPY = 16195;      /* i/o: waiting for input or output to copy stored block */\nconst        TABLE = 16196;     /* i: waiting for dynamic block table lengths */\nconst        LENLENS = 16197;   /* i: waiting for code length code lengths */\nconst        CODELENS = 16198;  /* i: waiting for length/lit and distance code lengths */\nconst            LEN_ = 16199;      /* i: same as LEN below, but only first time in */\nconst            LEN = 16200;       /* i: waiting for length/lit/eob code */\nconst            LENEXT = 16201;    /* i: waiting for length extra bits */\nconst            DIST = 16202;      /* i: waiting for distance code */\nconst            DISTEXT = 16203;   /* i: waiting for distance extra bits */\nconst            MATCH = 16204;     /* o: waiting for output space to copy string */\nconst            LIT = 16205;       /* o: waiting for output space to write literal */\nconst    CHECK = 16206;     /* i: waiting for 32-bit check value */\nconst    LENGTH = 16207;    /* i: waiting for 32-bit length (gzip) */\nconst    DONE = 16208;      /* finished check, done -- remain here until reset */\nconst    BAD = 16209;       /* got a data error -- remain here until reset */\nconst    MEM = 16210;       /* got an inflate() memory error -- remain here until reset */\nconst    SYNC = 16211;      /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_WBITS = MAX_WBITS;\n\n\nconst zswap32 = (q) => {\n\n  return  (((q >>> 24) & 0xff) +\n          ((q >>> 8) & 0xff00) +\n          ((q & 0xff00) << 8) +\n          ((q & 0xff) << 24));\n};\n\n\nfunction InflateState() {\n  this.strm = null;           /* pointer back to this zlib stream */\n  this.mode = 0;              /* current inflate mode */\n  this.last = false;          /* true if processing last block */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip,\n                                 bit 2 true to validate check value */\n  this.havedict = false;      /* true if dictionary provided */\n  this.flags = 0;             /* gzip header method and flags (0 if zlib), or\n                                 -1 if raw or no header yet */\n  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */\n  this.check = 0;             /* protected copy of check value */\n  this.total = 0;             /* protected copy of output count */\n  // TODO: may be {}\n  this.head = null;           /* where to save gzip header information */\n\n  /* sliding window */\n  this.wbits = 0;             /* log base 2 of requested window size */\n  this.wsize = 0;             /* window size or zero if not using window */\n  this.whave = 0;             /* valid bytes in the window */\n  this.wnext = 0;             /* window write index */\n  this.window = null;         /* allocated sliding window, if needed */\n\n  /* bit accumulator */\n  this.hold = 0;              /* input bit accumulator */\n  this.bits = 0;              /* number of bits in \"in\" */\n\n  /* for string and stored block copying */\n  this.length = 0;            /* literal or length of data to copy */\n  this.offset = 0;            /* distance back to copy string from */\n\n  /* for table and code decoding */\n  this.extra = 0;             /* extra bits needed */\n\n  /* fixed and dynamic code tables */\n  this.lencode = null;          /* starting table for length/literal codes */\n  this.distcode = null;         /* starting table for distance codes */\n  this.lenbits = 0;           /* index bits for lencode */\n  this.distbits = 0;          /* index bits for distcode */\n\n  /* dynamic table building */\n  this.ncode = 0;             /* number of code length code lengths */\n  this.nlen = 0;              /* number of length code lengths */\n  this.ndist = 0;             /* number of distance code lengths */\n  this.have = 0;              /* number of code lengths in lens[] */\n  this.next = null;              /* next available space in codes[] */\n\n  this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n  this.work = new Uint16Array(288); /* work area for code table building */\n\n  /*\n   because we don't have pointers in js, we use lencode and distcode directly\n   as buffers so we don't need codes\n  */\n  //this.codes = new Int32Array(ENOUGH);       /* space for code tables */\n  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */\n  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */\n  this.sane = 0;                   /* if false, allow invalid distance too far */\n  this.back = 0;                   /* bits back of last unprocessed length/lit */\n  this.was = 0;                    /* initial length of match */\n}\n\n\nconst inflateStateCheck = (strm) => {\n\n  if (!strm) {\n    return 1;\n  }\n  const state = strm.state;\n  if (!state || state.strm !== strm ||\n    state.mode < HEAD || state.mode > SYNC) {\n    return 1;\n  }\n  return 0;\n};\n\n\nconst inflateResetKeep = (strm) => {\n\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  const state = strm.state;\n  strm.total_in = strm.total_out = state.total = 0;\n  strm.msg = ''; /*Z_NULL*/\n  if (state.wrap) {       /* to support ill-conceived Java test suite */\n    strm.adler = state.wrap & 1;\n  }\n  state.mode = HEAD;\n  state.last = 0;\n  state.havedict = 0;\n  state.flags = -1;\n  state.dmax = 32768;\n  state.head = null/*Z_NULL*/;\n  state.hold = 0;\n  state.bits = 0;\n  //state.lencode = state.distcode = state.next = state.codes;\n  state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n  state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n\n  state.sane = 1;\n  state.back = -1;\n  //Tracev((stderr, \"inflate: reset\\n\"));\n  return Z_OK$1;\n};\n\n\nconst inflateReset = (strm) => {\n\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  const state = strm.state;\n  state.wsize = 0;\n  state.whave = 0;\n  state.wnext = 0;\n  return inflateResetKeep(strm);\n\n};\n\n\nconst inflateReset2 = (strm, windowBits) => {\n  let wrap;\n\n  /* get the state */\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  const state = strm.state;\n\n  /* extract wrap request from windowBits parameter */\n  if (windowBits < 0) {\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n  else {\n    wrap = (windowBits >> 4) + 5;\n    if (windowBits < 48) {\n      windowBits &= 15;\n    }\n  }\n\n  /* set number of window bits, free window if different */\n  if (windowBits && (windowBits < 8 || windowBits > 15)) {\n    return Z_STREAM_ERROR$1;\n  }\n  if (state.window !== null && state.wbits !== windowBits) {\n    state.window = null;\n  }\n\n  /* update state and reset the rest of it */\n  state.wrap = wrap;\n  state.wbits = windowBits;\n  return inflateReset(strm);\n};\n\n\nconst inflateInit2 = (strm, windowBits) => {\n\n  if (!strm) { return Z_STREAM_ERROR$1; }\n  //strm.msg = Z_NULL;                 /* in case we return an error */\n\n  const state = new InflateState();\n\n  //if (state === Z_NULL) return Z_MEM_ERROR;\n  //Tracev((stderr, \"inflate: allocated\\n\"));\n  strm.state = state;\n  state.strm = strm;\n  state.window = null/*Z_NULL*/;\n  state.mode = HEAD;     /* to pass state test in inflateReset2() */\n  const ret = inflateReset2(strm, windowBits);\n  if (ret !== Z_OK$1) {\n    strm.state = null/*Z_NULL*/;\n  }\n  return ret;\n};\n\n\nconst inflateInit = (strm) => {\n\n  return inflateInit2(strm, DEF_WBITS);\n};\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding.  Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter.  This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time.  However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nlet virgin = true;\n\nlet lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\nconst fixedtables = (state) => {\n\n  /* build fixed huffman tables if first call (may not be thread safe) */\n  if (virgin) {\n    lenfix = new Int32Array(512);\n    distfix = new Int32Array(32);\n\n    /* literal/length table */\n    let sym = 0;\n    while (sym < 144) { state.lens[sym++] = 8; }\n    while (sym < 256) { state.lens[sym++] = 9; }\n    while (sym < 280) { state.lens[sym++] = 7; }\n    while (sym < 288) { state.lens[sym++] = 8; }\n\n    inftrees(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });\n\n    /* distance table */\n    sym = 0;\n    while (sym < 32) { state.lens[sym++] = 5; }\n\n    inftrees(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });\n\n    /* do this just once */\n    virgin = false;\n  }\n\n  state.lencode = lenfix;\n  state.lenbits = 9;\n  state.distcode = distfix;\n  state.distbits = 5;\n};\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning.  If window does not exist yet, create it.  This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nconst updatewindow = (strm, src, end, copy) => {\n\n  let dist;\n  const state = strm.state;\n\n  /* if it hasn't been done already, allocate space for the window */\n  if (state.window === null) {\n    state.window = new Uint8Array(1 << state.wbits);\n  }\n\n  /* if window not in use yet, initialize */\n  if (state.wsize === 0) {\n    state.wsize = 1 << state.wbits;\n    state.wnext = 0;\n    state.whave = 0;\n  }\n\n  /* copy state->wsize or less output bytes into the circular window */\n  if (copy >= state.wsize) {\n    state.window.set(src.subarray(end - state.wsize, end), 0);\n    state.wnext = 0;\n    state.whave = state.wsize;\n  }\n  else {\n    dist = state.wsize - state.wnext;\n    if (dist > copy) {\n      dist = copy;\n    }\n    //zmemcpy(state->window + state->wnext, end - copy, dist);\n    state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n    copy -= dist;\n    if (copy) {\n      //zmemcpy(state->window, end - copy, copy);\n      state.window.set(src.subarray(end - copy, end), 0);\n      state.wnext = copy;\n      state.whave = state.wsize;\n    }\n    else {\n      state.wnext += dist;\n      if (state.wnext === state.wsize) { state.wnext = 0; }\n      if (state.whave < state.wsize) { state.whave += dist; }\n    }\n  }\n  return 0;\n};\n\n\nconst inflate$2 = (strm, flush) => {\n\n  let state;\n  let input, output;          // input/output buffers\n  let next;                   /* next input INDEX */\n  let put;                    /* next output INDEX */\n  let have, left;             /* available input and output */\n  let hold;                   /* bit buffer */\n  let bits;                   /* bits in bit buffer */\n  let _in, _out;              /* save starting available input and output */\n  let copy;                   /* number of stored or match bytes to copy */\n  let from;                   /* where to copy match bytes from */\n  let from_source;\n  let here = 0;               /* current decoding table entry */\n  let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n  //let last;                   /* parent table entry */\n  let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n  let len;                    /* length to copy for repeats, bits to drop */\n  let ret;                    /* return code */\n  const hbuf = new Uint8Array(4);    /* buffer for gzip header crc calculation */\n  let opts;\n\n  let n; // temporary variable for NEED_BITS\n\n  const order = /* permutation of code lengths */\n    new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n  if (inflateStateCheck(strm) || !strm.output ||\n      (!strm.input && strm.avail_in !== 0)) {\n    return Z_STREAM_ERROR$1;\n  }\n\n  state = strm.state;\n  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */\n\n\n  //--- LOAD() ---\n  put = strm.next_out;\n  output = strm.output;\n  left = strm.avail_out;\n  next = strm.next_in;\n  input = strm.input;\n  have = strm.avail_in;\n  hold = state.hold;\n  bits = state.bits;\n  //---\n\n  _in = have;\n  _out = left;\n  ret = Z_OK$1;\n\n  inf_leave: // goto emulation\n  for (;;) {\n    switch (state.mode) {\n      case HEAD:\n        if (state.wrap === 0) {\n          state.mode = TYPEDO;\n          break;\n        }\n        //=== NEEDBITS(16);\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */\n          if (state.wbits === 0) {\n            state.wbits = 15;\n          }\n          state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32_1(state.check, hbuf, 2, 0);\n          //===//\n\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          state.mode = FLAGS;\n          break;\n        }\n        if (state.head) {\n          state.head.done = false;\n        }\n        if (!(state.wrap & 1) ||   /* check if zlib header allowed */\n          (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n          strm.msg = 'incorrect header check';\n          state.mode = BAD;\n          break;\n        }\n        if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD;\n          break;\n        }\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n        len = (hold & 0x0f)/*BITS(4)*/ + 8;\n        if (state.wbits === 0) {\n          state.wbits = len;\n        }\n        if (len > 15 || len > state.wbits) {\n          strm.msg = 'invalid window size';\n          state.mode = BAD;\n          break;\n        }\n\n        // !!! pako patch. Force use `options.windowBits` if passed.\n        // Required to always use max window size by default.\n        state.dmax = 1 << state.wbits;\n        //state.dmax = 1 << len;\n\n        state.flags = 0;               /* indicate zlib header */\n        //Tracev((stderr, \"inflate:   zlib header ok\\n\"));\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = hold & 0x200 ? DICTID : TYPE;\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        break;\n      case FLAGS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.flags = hold;\n        if ((state.flags & 0xff) !== Z_DEFLATED) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD;\n          break;\n        }\n        if (state.flags & 0xe000) {\n          strm.msg = 'unknown header flags set';\n          state.mode = BAD;\n          break;\n        }\n        if (state.head) {\n          state.head.text = ((hold >> 8) & 1);\n        }\n        if ((state.flags & 0x0200) && (state.wrap & 4)) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32_1(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = TIME;\n        /* falls through */\n      case TIME:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.time = hold;\n        }\n        if ((state.flags & 0x0200) && (state.wrap & 4)) {\n          //=== CRC4(state.check, hold)\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          hbuf[2] = (hold >>> 16) & 0xff;\n          hbuf[3] = (hold >>> 24) & 0xff;\n          state.check = crc32_1(state.check, hbuf, 4, 0);\n          //===\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = OS;\n        /* falls through */\n      case OS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.xflags = (hold & 0xff);\n          state.head.os = (hold >> 8);\n        }\n        if ((state.flags & 0x0200) && (state.wrap & 4)) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32_1(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = EXLEN;\n        /* falls through */\n      case EXLEN:\n        if (state.flags & 0x0400) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length = hold;\n          if (state.head) {\n            state.head.extra_len = hold;\n          }\n          if ((state.flags & 0x0200) && (state.wrap & 4)) {\n            //=== CRC2(state.check, hold);\n            hbuf[0] = hold & 0xff;\n            hbuf[1] = (hold >>> 8) & 0xff;\n            state.check = crc32_1(state.check, hbuf, 2, 0);\n            //===//\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        else if (state.head) {\n          state.head.extra = null/*Z_NULL*/;\n        }\n        state.mode = EXTRA;\n        /* falls through */\n      case EXTRA:\n        if (state.flags & 0x0400) {\n          copy = state.length;\n          if (copy > have) { copy = have; }\n          if (copy) {\n            if (state.head) {\n              len = state.head.extra_len - state.length;\n              if (!state.head.extra) {\n                // Use untyped array for more convenient processing later\n                state.head.extra = new Uint8Array(state.head.extra_len);\n              }\n              state.head.extra.set(\n                input.subarray(\n                  next,\n                  // extra field is limited to 65536 bytes\n                  // - no need for additional size check\n                  next + copy\n                ),\n                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n                len\n              );\n              //zmemcpy(state.head.extra + len, next,\n              //        len + copy > state.head.extra_max ?\n              //        state.head.extra_max - len : copy);\n            }\n            if ((state.flags & 0x0200) && (state.wrap & 4)) {\n              state.check = crc32_1(state.check, input, copy, next);\n            }\n            have -= copy;\n            next += copy;\n            state.length -= copy;\n          }\n          if (state.length) { break inf_leave; }\n        }\n        state.length = 0;\n        state.mode = NAME;\n        /* falls through */\n      case NAME:\n        if (state.flags & 0x0800) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            // TODO: 2 or 1 bytes?\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.name_max*/)) {\n              state.head.name += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n\n          if ((state.flags & 0x0200) && (state.wrap & 4)) {\n            state.check = crc32_1(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.name = null;\n        }\n        state.length = 0;\n        state.mode = COMMENT;\n        /* falls through */\n      case COMMENT:\n        if (state.flags & 0x1000) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.comm_max*/)) {\n              state.head.comment += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n          if ((state.flags & 0x0200) && (state.wrap & 4)) {\n            state.check = crc32_1(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.comment = null;\n        }\n        state.mode = HCRC;\n        /* falls through */\n      case HCRC:\n        if (state.flags & 0x0200) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if ((state.wrap & 4) && hold !== (state.check & 0xffff)) {\n            strm.msg = 'header crc mismatch';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        if (state.head) {\n          state.head.hcrc = ((state.flags >> 9) & 1);\n          state.head.done = true;\n        }\n        strm.adler = state.check = 0;\n        state.mode = TYPE;\n        break;\n      case DICTID:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        strm.adler = state.check = zswap32(hold);\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = DICT;\n        /* falls through */\n      case DICT:\n        if (state.havedict === 0) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          return Z_NEED_DICT$1;\n        }\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = TYPE;\n        /* falls through */\n      case TYPE:\n        if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case TYPEDO:\n        if (state.last) {\n          //--- BYTEBITS() ---//\n          hold >>>= bits & 7;\n          bits -= bits & 7;\n          //---//\n          state.mode = CHECK;\n          break;\n        }\n        //=== NEEDBITS(3); */\n        while (bits < 3) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.last = (hold & 0x01)/*BITS(1)*/;\n        //--- DROPBITS(1) ---//\n        hold >>>= 1;\n        bits -= 1;\n        //---//\n\n        switch ((hold & 0x03)/*BITS(2)*/) {\n          case 0:                             /* stored block */\n            //Tracev((stderr, \"inflate:     stored block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = STORED;\n            break;\n          case 1:                             /* fixed block */\n            fixedtables(state);\n            //Tracev((stderr, \"inflate:     fixed codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = LEN_;             /* decode codes */\n            if (flush === Z_TREES) {\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n              break inf_leave;\n            }\n            break;\n          case 2:                             /* dynamic block */\n            //Tracev((stderr, \"inflate:     dynamic codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = TABLE;\n            break;\n          case 3:\n            strm.msg = 'invalid block type';\n            state.mode = BAD;\n        }\n        //--- DROPBITS(2) ---//\n        hold >>>= 2;\n        bits -= 2;\n        //---//\n        break;\n      case STORED:\n        //--- BYTEBITS() ---// /* go to byte boundary */\n        hold >>>= bits & 7;\n        bits -= bits & 7;\n        //---//\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n          strm.msg = 'invalid stored block lengths';\n          state.mode = BAD;\n          break;\n        }\n        state.length = hold & 0xffff;\n        //Tracev((stderr, \"inflate:       stored length %u\\n\",\n        //        state.length));\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = COPY_;\n        if (flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case COPY_:\n        state.mode = COPY;\n        /* falls through */\n      case COPY:\n        copy = state.length;\n        if (copy) {\n          if (copy > have) { copy = have; }\n          if (copy > left) { copy = left; }\n          if (copy === 0) { break inf_leave; }\n          //--- zmemcpy(put, next, copy); ---\n          output.set(input.subarray(next, next + copy), put);\n          //---//\n          have -= copy;\n          next += copy;\n          left -= copy;\n          put += copy;\n          state.length -= copy;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       stored end\\n\"));\n        state.mode = TYPE;\n        break;\n      case TABLE:\n        //=== NEEDBITS(14); */\n        while (bits < 14) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n        if (state.nlen > 286 || state.ndist > 30) {\n          strm.msg = 'too many length or distance symbols';\n          state.mode = BAD;\n          break;\n        }\n//#endif\n        //Tracev((stderr, \"inflate:       table sizes ok\\n\"));\n        state.have = 0;\n        state.mode = LENLENS;\n        /* falls through */\n      case LENLENS:\n        while (state.have < state.ncode) {\n          //=== NEEDBITS(3);\n          while (bits < 3) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n          //--- DROPBITS(3) ---//\n          hold >>>= 3;\n          bits -= 3;\n          //---//\n        }\n        while (state.have < 19) {\n          state.lens[order[state.have++]] = 0;\n        }\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        //state.next = state.codes;\n        //state.lencode = state.next;\n        // Switch to use dynamic table\n        state.lencode = state.lendyn;\n        state.lenbits = 7;\n\n        opts = { bits: state.lenbits };\n        ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n        state.lenbits = opts.bits;\n\n        if (ret) {\n          strm.msg = 'invalid code lengths set';\n          state.mode = BAD;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       code lengths ok\\n\"));\n        state.have = 0;\n        state.mode = CODELENS;\n        /* falls through */\n      case CODELENS:\n        while (state.have < state.nlen + state.ndist) {\n          for (;;) {\n            here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          if (here_val < 16) {\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            state.lens[state.have++] = here_val;\n          }\n          else {\n            if (here_val === 16) {\n              //=== NEEDBITS(here.bits + 2);\n              n = here_bits + 2;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              if (state.have === 0) {\n                strm.msg = 'invalid bit length repeat';\n                state.mode = BAD;\n                break;\n              }\n              len = state.lens[state.have - 1];\n              copy = 3 + (hold & 0x03);//BITS(2);\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n            }\n            else if (here_val === 17) {\n              //=== NEEDBITS(here.bits + 3);\n              n = here_bits + 3;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 3 + (hold & 0x07);//BITS(3);\n              //--- DROPBITS(3) ---//\n              hold >>>= 3;\n              bits -= 3;\n              //---//\n            }\n            else {\n              //=== NEEDBITS(here.bits + 7);\n              n = here_bits + 7;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 11 + (hold & 0x7f);//BITS(7);\n              //--- DROPBITS(7) ---//\n              hold >>>= 7;\n              bits -= 7;\n              //---//\n            }\n            if (state.have + copy > state.nlen + state.ndist) {\n              strm.msg = 'invalid bit length repeat';\n              state.mode = BAD;\n              break;\n            }\n            while (copy--) {\n              state.lens[state.have++] = len;\n            }\n          }\n        }\n\n        /* handle error breaks in while */\n        if (state.mode === BAD) { break; }\n\n        /* check for end-of-block code (better have one) */\n        if (state.lens[256] === 0) {\n          strm.msg = 'invalid code -- missing end-of-block';\n          state.mode = BAD;\n          break;\n        }\n\n        /* build code tables -- note: do not change the lenbits or distbits\n           values here (9 and 6) without reading the comments in inftrees.h\n           concerning the ENOUGH constants, which depend on those values */\n        state.lenbits = 9;\n\n        opts = { bits: state.lenbits };\n        ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.lenbits = opts.bits;\n        // state.lencode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid literal/lengths set';\n          state.mode = BAD;\n          break;\n        }\n\n        state.distbits = 6;\n        //state.distcode.copy(state.codes);\n        // Switch to use dynamic table\n        state.distcode = state.distdyn;\n        opts = { bits: state.distbits };\n        ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.distbits = opts.bits;\n        // state.distcode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid distances set';\n          state.mode = BAD;\n          break;\n        }\n        //Tracev((stderr, 'inflate:       codes ok\\n'));\n        state.mode = LEN_;\n        if (flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case LEN_:\n        state.mode = LEN;\n        /* falls through */\n      case LEN:\n        if (have >= 6 && left >= 258) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          inffast(strm, _out);\n          //--- LOAD() ---\n          put = strm.next_out;\n          output = strm.output;\n          left = strm.avail_out;\n          next = strm.next_in;\n          input = strm.input;\n          have = strm.avail_in;\n          hold = state.hold;\n          bits = state.bits;\n          //---\n\n          if (state.mode === TYPE) {\n            state.back = -1;\n          }\n          break;\n        }\n        state.back = 0;\n        for (;;) {\n          here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if (here_bits <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if (here_op && (here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.lencode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        state.length = here_val;\n        if (here_op === 0) {\n          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n          //        \"inflate:         literal '%c'\\n\" :\n          //        \"inflate:         literal 0x%02x\\n\", here.val));\n          state.mode = LIT;\n          break;\n        }\n        if (here_op & 32) {\n          //Tracevv((stderr, \"inflate:         end of block\\n\"));\n          state.back = -1;\n          state.mode = TYPE;\n          break;\n        }\n        if (here_op & 64) {\n          strm.msg = 'invalid literal/length code';\n          state.mode = BAD;\n          break;\n        }\n        state.extra = here_op & 15;\n        state.mode = LENEXT;\n        /* falls through */\n      case LENEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", state.length));\n        state.was = state.length;\n        state.mode = DIST;\n        /* falls through */\n      case DIST:\n        for (;;) {\n          here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if ((here_bits) <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if ((here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.distcode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        if (here_op & 64) {\n          strm.msg = 'invalid distance code';\n          state.mode = BAD;\n          break;\n        }\n        state.offset = here_val;\n        state.extra = (here_op) & 15;\n        state.mode = DISTEXT;\n        /* falls through */\n      case DISTEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n//#ifdef INFLATE_STRICT\n        if (state.offset > state.dmax) {\n          strm.msg = 'invalid distance too far back';\n          state.mode = BAD;\n          break;\n        }\n//#endif\n        //Tracevv((stderr, \"inflate:         distance %u\\n\", state.offset));\n        state.mode = MATCH;\n        /* falls through */\n      case MATCH:\n        if (left === 0) { break inf_leave; }\n        copy = _out - left;\n        if (state.offset > copy) {         /* copy from window */\n          copy = state.offset - copy;\n          if (copy > state.whave) {\n            if (state.sane) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break;\n            }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//          Trace((stderr, \"inflate.c too far\\n\"));\n//          copy -= state.whave;\n//          if (copy > state.length) { copy = state.length; }\n//          if (copy > left) { copy = left; }\n//          left -= copy;\n//          state.length -= copy;\n//          do {\n//            output[put++] = 0;\n//          } while (--copy);\n//          if (state.length === 0) { state.mode = LEN; }\n//          break;\n//#endif\n          }\n          if (copy > state.wnext) {\n            copy -= state.wnext;\n            from = state.wsize - copy;\n          }\n          else {\n            from = state.wnext - copy;\n          }\n          if (copy > state.length) { copy = state.length; }\n          from_source = state.window;\n        }\n        else {                              /* copy from output */\n          from_source = output;\n          from = put - state.offset;\n          copy = state.length;\n        }\n        if (copy > left) { copy = left; }\n        left -= copy;\n        state.length -= copy;\n        do {\n          output[put++] = from_source[from++];\n        } while (--copy);\n        if (state.length === 0) { state.mode = LEN; }\n        break;\n      case LIT:\n        if (left === 0) { break inf_leave; }\n        output[put++] = state.length;\n        left--;\n        state.mode = LEN;\n        break;\n      case CHECK:\n        if (state.wrap) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            // Use '|' instead of '+' to make sure that result is signed\n            hold |= input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          _out -= left;\n          strm.total_out += _out;\n          state.total += _out;\n          if ((state.wrap & 4) && _out) {\n            strm.adler = state.check =\n                /*UPDATE_CHECK(state.check, put - _out, _out);*/\n                (state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out));\n\n          }\n          _out = left;\n          // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n          if ((state.wrap & 4) && (state.flags ? hold : zswap32(hold)) !== state.check) {\n            strm.msg = 'incorrect data check';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   check matches trailer\\n\"));\n        }\n        state.mode = LENGTH;\n        /* falls through */\n      case LENGTH:\n        if (state.wrap && state.flags) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if ((state.wrap & 4) && hold !== (state.total & 0xffffffff)) {\n            strm.msg = 'incorrect length check';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   length matches trailer\\n\"));\n        }\n        state.mode = DONE;\n        /* falls through */\n      case DONE:\n        ret = Z_STREAM_END$1;\n        break inf_leave;\n      case BAD:\n        ret = Z_DATA_ERROR$1;\n        break inf_leave;\n      case MEM:\n        return Z_MEM_ERROR$1;\n      case SYNC:\n        /* falls through */\n      default:\n        return Z_STREAM_ERROR$1;\n    }\n  }\n\n  // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n  /*\n     Return from inflate(), updating the total counts and the check value.\n     If there was no progress during the inflate() call, return a buffer\n     error.  Call updatewindow() to create and/or update the window state.\n     Note: a memory error from inflate() is non-recoverable.\n   */\n\n  //--- RESTORE() ---\n  strm.next_out = put;\n  strm.avail_out = left;\n  strm.next_in = next;\n  strm.avail_in = have;\n  state.hold = hold;\n  state.bits = bits;\n  //---\n\n  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n                      (state.mode < CHECK || flush !== Z_FINISH$1))) {\n    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n  }\n  _in -= strm.avail_in;\n  _out -= strm.avail_out;\n  strm.total_in += _in;\n  strm.total_out += _out;\n  state.total += _out;\n  if ((state.wrap & 4) && _out) {\n    strm.adler = state.check = /*UPDATE_CHECK(state.check, strm.next_out - _out, _out);*/\n      (state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out));\n  }\n  strm.data_type = state.bits + (state.last ? 64 : 0) +\n                    (state.mode === TYPE ? 128 : 0) +\n                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n  if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n    ret = Z_BUF_ERROR$1;\n  }\n  return ret;\n};\n\n\nconst inflateEnd = (strm) => {\n\n  if (inflateStateCheck(strm)) {\n    return Z_STREAM_ERROR$1;\n  }\n\n  let state = strm.state;\n  if (state.window) {\n    state.window = null;\n  }\n  strm.state = null;\n  return Z_OK$1;\n};\n\n\nconst inflateGetHeader = (strm, head) => {\n\n  /* check state */\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  const state = strm.state;\n  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n  /* save header structure */\n  state.head = head;\n  head.done = false;\n  return Z_OK$1;\n};\n\n\nconst inflateSetDictionary = (strm, dictionary) => {\n  const dictLength = dictionary.length;\n\n  let state;\n  let dictid;\n  let ret;\n\n  /* check state */\n  if (inflateStateCheck(strm)) { return Z_STREAM_ERROR$1; }\n  state = strm.state;\n\n  if (state.wrap !== 0 && state.mode !== DICT) {\n    return Z_STREAM_ERROR$1;\n  }\n\n  /* check for correct dictionary identifier */\n  if (state.mode === DICT) {\n    dictid = 1; /* adler32(0, null, 0)*/\n    /* dictid = adler32(dictid, dictionary, dictLength); */\n    dictid = adler32_1(dictid, dictionary, dictLength, 0);\n    if (dictid !== state.check) {\n      return Z_DATA_ERROR$1;\n    }\n  }\n  /* copy dictionary to window using updatewindow(), which will amend the\n   existing dictionary if appropriate */\n  ret = updatewindow(strm, dictionary, dictLength, dictLength);\n  if (ret) {\n    state.mode = MEM;\n    return Z_MEM_ERROR$1;\n  }\n  state.havedict = 1;\n  // Tracev((stderr, \"inflate:   dictionary set\\n\"));\n  return Z_OK$1;\n};\n\n\nvar inflateReset_1 = inflateReset;\nvar inflateReset2_1 = inflateReset2;\nvar inflateResetKeep_1 = inflateResetKeep;\nvar inflateInit_1 = inflateInit;\nvar inflateInit2_1 = inflateInit2;\nvar inflate_2$1 = inflate$2;\nvar inflateEnd_1 = inflateEnd;\nvar inflateGetHeader_1 = inflateGetHeader;\nvar inflateSetDictionary_1 = inflateSetDictionary;\nvar inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.inflateCodesUsed = inflateCodesUsed;\nmodule.exports.inflateCopy = inflateCopy;\nmodule.exports.inflateGetDictionary = inflateGetDictionary;\nmodule.exports.inflateMark = inflateMark;\nmodule.exports.inflatePrime = inflatePrime;\nmodule.exports.inflateSync = inflateSync;\nmodule.exports.inflateSyncPoint = inflateSyncPoint;\nmodule.exports.inflateUndermine = inflateUndermine;\nmodule.exports.inflateValidate = inflateValidate;\n*/\n\nvar inflate_1$2 = {\n\tinflateReset: inflateReset_1,\n\tinflateReset2: inflateReset2_1,\n\tinflateResetKeep: inflateResetKeep_1,\n\tinflateInit: inflateInit_1,\n\tinflateInit2: inflateInit2_1,\n\tinflate: inflate_2$1,\n\tinflateEnd: inflateEnd_1,\n\tinflateGetHeader: inflateGetHeader_1,\n\tinflateSetDictionary: inflateSetDictionary_1,\n\tinflateInfo: inflateInfo\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n  /* true if compressed data believed to be text */\n  this.text       = 0;\n  /* modification time */\n  this.time       = 0;\n  /* extra flags (not used when writing a gzip file) */\n  this.xflags     = 0;\n  /* operating system */\n  this.os         = 0;\n  /* pointer to extra field or Z_NULL if none */\n  this.extra      = null;\n  /* extra field length (valid if extra != Z_NULL) */\n  this.extra_len  = 0; // Actually, we don't need it in JS,\n                       // but leave for few code modifications\n\n  //\n  // Setup limits is not necessary because in js we should not preallocate memory\n  // for inflate use constant limit in 65536 bytes\n  //\n\n  /* space at extra (only when reading header) */\n  // this.extra_max  = 0;\n  /* pointer to zero-terminated file name or Z_NULL */\n  this.name       = '';\n  /* space at name (only when reading header) */\n  // this.name_max   = 0;\n  /* pointer to zero-terminated comment or Z_NULL */\n  this.comment    = '';\n  /* space at comment (only when reading header) */\n  // this.comm_max   = 0;\n  /* true if there was or will be a header crc */\n  this.hcrc       = 0;\n  /* true when done reading gzip header (not used when writing a gzip file) */\n  this.done       = false;\n}\n\nvar gzheader = GZheader;\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n  Z_NO_FLUSH, Z_FINISH,\n  Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR, Z_BUF_ERROR\n} = constants$2;\n\n/* ===========================================================================*/\n\nconst defaultOptions = {\n  chunkSize: 1024 * 64,\n  windowBits: 15,\n  to: ''\n};\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true);  // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate$1(options) {\n  this.options = common.assign({}, defaultOptions, options || {});\n\n  const opt = this.options;\n\n  // Force window size for `raw` data, if not set directly,\n  // because we have no header for autodetect.\n  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n    opt.windowBits = -opt.windowBits;\n    if (opt.windowBits === 0) { opt.windowBits = -15; }\n  }\n\n  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n      !(options && options.windowBits)) {\n    opt.windowBits += 32;\n  }\n\n  // Gzip header has no info about windows size, we can do autodetect only\n  // for deflate. So, if window size not set, force it to max when gzip possible\n  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n    // bit 3 (16) -> gzipped data\n    // bit 4 (32) -> autodetect gzip/deflate\n    if ((opt.windowBits & 15) === 0) {\n      opt.windowBits |= 15;\n    }\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm   = new zstream();\n  this.strm.avail_out = 0;\n\n  let status  = inflate_1$2.inflateInit2(\n    this.strm,\n    opt.windowBits\n  );\n\n  if (status !== Z_OK) {\n    throw new Error(messages[status]);\n  }\n\n  this.header = new gzheader();\n\n  inflate_1$2.inflateGetHeader(this.strm, this.header);\n\n  // Setup dictionary\n  if (opt.dictionary) {\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      opt.dictionary = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      opt.dictionary = new Uint8Array(opt.dictionary);\n    }\n    if (opt.raw) { //In raw mode we need to set the dictionary early\n      status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary);\n      if (status !== Z_OK) {\n        throw new Error(messages[status]);\n      }\n    }\n  }\n}\n\n/**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n *   flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n *   `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nInflate$1.prototype.push = function (data, flush_mode) {\n  const strm = this.strm;\n  const chunkSize = this.options.chunkSize;\n  const dictionary = this.options.dictionary;\n  let status, _flush_mode, last_avail_out;\n\n  if (this.ended) return false;\n\n  if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n  else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n  // Convert data if needed\n  if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  for (;;) {\n    if (strm.avail_out === 0) {\n      strm.output = new Uint8Array(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n\n    status = inflate_1$2.inflate(strm, _flush_mode);\n\n    if (status === Z_NEED_DICT && dictionary) {\n      status = inflate_1$2.inflateSetDictionary(strm, dictionary);\n\n      if (status === Z_OK) {\n        status = inflate_1$2.inflate(strm, _flush_mode);\n      } else if (status === Z_DATA_ERROR) {\n        // Replace code with more verbose\n        status = Z_NEED_DICT;\n      }\n    }\n\n    // Only the gzip format defines concatenated members (RFC 1952: a gzip file\n    // is \"a series of members\"). A zlib stream (RFC 1950) ends after its\n    // ADLER32, and a raw DEFLATE stream (RFC 1951) ends after its final block -\n    // neither format allows anything to follow, so bytes after the end are not\n    // ours to interpret and must be left in the input. Restart decoding only\n    // for a gzip member: `state.flags` is non-zero only once a gzip header has\n    // actually been decoded (it stays 0 for a zlib member, even when the format\n    // was auto-detected and the gzip bit of `wrap` is set). A trailing zero\n    // byte is padding, not the start of a member (no member can begin with 0).\n    while (strm.avail_in > 0 &&\n           status === Z_STREAM_END &&\n           (strm.state.wrap & 2) && strm.state.flags !== 0 &&\n           strm.input[strm.next_in] !== 0)\n    {\n      inflate_1$2.inflateReset(strm);\n      status = inflate_1$2.inflate(strm, _flush_mode);\n    }\n\n    switch (status) {\n      case Z_STREAM_ERROR:\n      case Z_DATA_ERROR:\n      case Z_NEED_DICT:\n      case Z_MEM_ERROR:\n        this.onEnd(status);\n        this.ended = true;\n        return false;\n    }\n\n    // Remember real `avail_out` value, because we may patch out buffer content\n    // to align utf8 strings boundaries.\n    last_avail_out = strm.avail_out;\n\n    if (strm.next_out) {\n      // Flush output if buffer is full, stream ended, or an explicit flush was\n      // requested (e.g. Z_SYNC_FLUSH) - to push out the tail, same as node's zlib.\n      if (strm.avail_out === 0 || status === Z_STREAM_END || _flush_mode > 0) {\n\n        if (this.options.to === 'string') {\n\n          let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n          let tail = strm.next_out - next_out_utf8;\n          let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n          // move tail & realign counters\n          strm.next_out = tail;\n          strm.avail_out = chunkSize - tail;\n          if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n          this.onData(utf8str);\n\n        } else {\n          this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n\n          // Force a fresh output buffer on next iteration / next push, so the\n          // already emitted tail is not sent again.\n          strm.avail_out = 0;\n          strm.next_out = 0;\n        }\n      }\n    }\n\n    // A full output buffer means there may be more to produce - allocate a new\n    // one and call inflate again. The status depends on the flush mode: with\n    // Z_NO_FLUSH a full buffer is reported as Z_OK, but with Z_FINISH the same\n    // situation is reported as Z_BUF_ERROR (\"could not make progress now\",\n    // non-fatal) even though output is still pending. Both must continue; the\n    // distinction that matters is purely \"was the output buffer exhausted\".\n    if ((status === Z_OK || status === Z_BUF_ERROR) && last_avail_out === 0) continue;\n\n    // Finalize if end of stream reached.\n    if (status === Z_STREAM_END) {\n      status = inflate_1$2.inflateEnd(this.strm);\n      this.onEnd(status);\n      this.ended = true;\n      return true;\n    }\n\n    if (strm.avail_in === 0) {\n      // Input is exhausted. If the caller declared this the end of the stream\n      // (Z_FINISH) but we never saw Z_STREAM_END, the compressed data ended\n      // before its terminating marker - i.e. it is truncated/incomplete. That\n      // is an error: returning the partial output as success would be\n      // indistinguishable from a complete decode, hiding the data loss. Report\n      // it via Z_BUF_ERROR. (Reached only when the output buffer still had room\n      // - a full buffer is handled by the `continue` above - so this genuinely\n      // means \"ran out of input\", not \"ran out of output\".)\n      if (_flush_mode === Z_FINISH) {\n        status = inflate_1$2.inflateEnd(this.strm);\n        this.onEnd(status === Z_OK ? Z_BUF_ERROR : status);\n        this.ended = true;\n        return false;\n      }\n      break;\n    }\n  }\n\n  return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n *   each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate$1.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate$1.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === Z_OK) {\n    if (this.options.to === 'string') {\n      this.result = this.chunks.join('');\n    } else {\n      this.result = common.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n *   output = pako.inflate(input);\n * } catch (err) {\n *   console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n  const inflator = new Inflate$1(options);\n\n  inflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (inflator.err) throw inflator.msg || messages[inflator.err];\n\n  return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw$1(input, options) {\n  options = options || {};\n  options.raw = true;\n  return inflate$1(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nvar Inflate_1$1 = Inflate$1;\nvar inflate_2 = inflate$1;\nvar inflateRaw_1$1 = inflateRaw$1;\nvar ungzip$1 = inflate$1;\nvar constants = constants$2;\n\nvar inflate_1$1 = {\n\tInflate: Inflate_1$1,\n\tinflate: inflate_2,\n\tinflateRaw: inflateRaw_1$1,\n\tungzip: ungzip$1,\n\tconstants: constants\n};\n\nconst { Deflate, deflate, deflateRaw, gzip } = deflate_1$1;\n\nconst { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1;\n\n\n\nvar Deflate_1 = Deflate;\nvar deflate_1 = deflate;\nvar deflateRaw_1 = deflateRaw;\nvar gzip_1 = gzip;\nvar Inflate_1 = Inflate;\nvar inflate_1 = inflate;\nvar inflateRaw_1 = inflateRaw;\nvar ungzip_1 = ungzip;\nvar constants_1 = constants$2;\n\nvar pako = {\n\tDeflate: Deflate_1,\n\tdeflate: deflate_1,\n\tdeflateRaw: deflateRaw_1,\n\tgzip: gzip_1,\n\tInflate: Inflate_1,\n\tinflate: inflate_1,\n\tinflateRaw: inflateRaw_1,\n\tungzip: ungzip_1,\n\tconstants: constants_1\n};\n\nexport { Deflate_1 as Deflate, Inflate_1 as Inflate, constants_1 as constants, pako as default, deflate_1 as deflate, deflateRaw_1 as deflateRaw, gzip_1 as gzip, inflate_1 as inflate, inflateRaw_1 as inflateRaw, ungzip_1 as ungzip };\n","// Zlib polyfill using pako for deflate/inflate/gzip + optional brotli-wasm\r\n\r\nimport { Buffer } from \"./buffer\";\r\nimport { Transform } from \"./stream\";\r\nimport { CDN_BROTLI_WASM, cdnImport } from \"../constants/cdn-urls\";\r\n// Pure JS brotli decompressor (no WASM, no Node APIs) - sync fallback\r\n// @ts-ignore - no type declarations for brotli/decompress\r\nimport brotliJsDecompress from \"brotli/decompress\";\r\nimport pako from \"pako\";\r\nimport { getRegistry } from \"../helpers/event-loop\";\r\n\r\n\r\nexport type BrotliEngine = {\r\n  compress: (input: Uint8Array) => Uint8Array;\r\n  decompress: (input: Uint8Array) => Uint8Array;\r\n};\r\n\r\nlet brotliInstance: BrotliEngine | null = null;\r\nlet brotliLoading: Promise<BrotliEngine | null> | null = null;\r\n\r\nasync function loadBrotli(): Promise<BrotliEngine | null> {\r\n  // Strategy 1 — CDN import (browser / Nodepod runtime).\r\n  // cdnImport uses `new Function` to hide from the bundler.\r\n  // The pkg.web variant exports init() as default + compress/decompress\r\n  // as named exports. init() fetches the co-located .wasm binary.\r\n  try {\r\n    const mod = await cdnImport(CDN_BROTLI_WASM);\r\n    if (typeof mod.default === \"function\") {\r\n      // pkg.web: call init() to load WASM, then use named exports\r\n      await mod.default();\r\n      brotliInstance = { compress: mod.compress, decompress: mod.decompress };\r\n    } else {\r\n      // fallback: default is a promise or already the engine\r\n      brotliInstance = (await mod.default) as BrotliEngine;\r\n    }\r\n    return brotliInstance;\r\n  } catch { /* CDN unreachable or not in browser */ }\r\n\r\n  // Strategy 2 — Node.js CJS require (vitest / server / SSR).\r\n  // Uses a standard dynamic import so it works in contexts where\r\n  // `new Function`-based import doesn't (e.g. vitest VM).\r\n  try {\r\n    const { createRequire } = await import(/* @vite-ignore */ \"node:module\");\r\n    const { cwd } = await import(/* @vite-ignore */ \"node:process\");\r\n    const req = createRequire(cwd() + \"/package.json\");\r\n    const pkg = req(\"brotli-wasm\");\r\n    brotliInstance = pkg as unknown as BrotliEngine;\r\n    return brotliInstance;\r\n  } catch { /* not in Node.js or package not installed */ }\r\n\r\n  return null;\r\n}\r\n\r\nasync function ensureBrotli(): Promise<BrotliEngine | null> {\r\n  if (brotliInstance) return brotliInstance;\r\n  // If a previous attempt already resolved to null, allow a retry —\r\n  // the environment may not have been ready yet (e.g. eager preload\r\n  // ran before the module system was fully initialised).\r\n  if (brotliLoading) {\r\n    const prev = await brotliLoading;\r\n    if (prev) return prev;\r\n  }\r\n  const loadHandle = getRegistry().register(\"WASMWork\");\r\n  brotliLoading = loadBrotli().finally(() => loadHandle.close());\r\n  return brotliLoading;\r\n}\r\n\r\n/** Pure JS brotli decompressor, used as sync fallback when WASM isn't ready. */\r\nfunction brotliDecompressJs(input: Uint8Array): Uint8Array {\r\n  const result = brotliJsDecompress(Buffer.from(input));\r\n  if (!result) throw new Error(\"Brotli JS decompression failed\");\r\n  return new Uint8Array(result);\r\n}\r\n\r\n/**\r\n * Pre-load the brotli WASM engine so that synchronous functions\r\n * (`brotliCompressSync`, `brotliDecompressSync`) and brotli streams\r\n * work without having to call an async variant first.\r\n *\r\n * Resolves to `true` when the engine is ready, `false` if loading failed.\r\n */\r\nexport async function preloadBrotli(): Promise<boolean> {\r\n  return (await ensureBrotli()) !== null;\r\n}\r\n\r\n// Brotli WASM no longer loads at bundle import (it cost ~1MB of download +\r\n// an instance for apps that never touch brotli). The script engine calls\r\n// preloadBrotli() when user code first require()s \"zlib\", preserving the\r\n// old \"kicked off early, usually ready by first sync call\" semantics.\r\n// Async APIs and brotliDecompressSync (pure-JS fallback) work regardless.\r\n\r\n\r\ntype CompressCallback = (err: Error | null, result: Buffer) => void;\r\n\r\nexport function gzip(input: Buffer | string, cb: CompressCallback): void {\r\n  try {\r\n    const data = typeof input === \"string\" ? Buffer.from(input) : input;\r\n    const compressed = pako.gzip(data);\r\n    cb(null, Buffer.from(compressed));\r\n  } catch (e) {\r\n    cb(e as Error, Buffer.alloc(0));\r\n  }\r\n}\r\n\r\nexport function gunzip(input: Buffer, cb: CompressCallback): void {\r\n  try {\r\n    const decompressed = pako.ungzip(input);\r\n    cb(null, Buffer.from(decompressed));\r\n  } catch (e) {\r\n    cb(e as Error, Buffer.alloc(0));\r\n  }\r\n}\r\n\r\nexport function deflate(input: Buffer | string, cb: CompressCallback): void {\r\n  try {\r\n    const data = typeof input === \"string\" ? Buffer.from(input) : input;\r\n    const compressed = pako.deflate(data);\r\n    cb(null, Buffer.from(compressed));\r\n  } catch (e) {\r\n    cb(e as Error, Buffer.alloc(0));\r\n  }\r\n}\r\n\r\nexport function inflate(input: Buffer, cb: CompressCallback): void {\r\n  try {\r\n    const decompressed = pako.inflate(input);\r\n    cb(null, Buffer.from(decompressed));\r\n  } catch (e) {\r\n    cb(e as Error, Buffer.alloc(0));\r\n  }\r\n}\r\n\r\nexport function deflateRaw(input: Buffer | string, cb: CompressCallback): void {\r\n  try {\r\n    const data = typeof input === \"string\" ? Buffer.from(input) : input;\r\n    const compressed = pako.deflateRaw(data);\r\n    cb(null, Buffer.from(compressed));\r\n  } catch (e) {\r\n    cb(e as Error, Buffer.alloc(0));\r\n  }\r\n}\r\n\r\nexport function inflateRaw(input: Buffer, cb: CompressCallback): void {\r\n  try {\r\n    const decompressed = pako.inflateRaw(input);\r\n    cb(null, Buffer.from(decompressed));\r\n  } catch (e) {\r\n    cb(e as Error, Buffer.alloc(0));\r\n  }\r\n}\r\n\r\n\r\nexport function brotliCompress(\r\n  input: Buffer | string,\r\n  optsOrCb: unknown,\r\n  cb?: CompressCallback,\r\n): void {\r\n  const callback =\r\n    typeof optsOrCb === \"function\" ? (optsOrCb as CompressCallback) : cb!;\r\n  const opHandle = getRegistry().register(\"WASMWork\");\r\n  const finish = (err: Error | null, result: Buffer): void => {\r\n    try {\r\n      callback(err, result);\r\n    } finally {\r\n      opHandle.close();\r\n    }\r\n  };\r\n  ensureBrotli()\r\n    .then((engine) => {\r\n      if (!engine) {\r\n        finish(new Error(\"Brotli WASM is not available\"), Buffer.alloc(0));\r\n        return;\r\n      }\r\n      try {\r\n        const data = typeof input === \"string\" ? Buffer.from(input) : input;\r\n        const out = engine.compress(new Uint8Array(data));\r\n        finish(null, Buffer.from(out));\r\n      } catch (e) {\r\n        finish(e as Error, Buffer.alloc(0));\r\n      }\r\n    })\r\n    .catch((e) => finish(e as Error, Buffer.alloc(0)));\r\n}\r\n\r\nexport function brotliDecompress(\r\n  input: Buffer,\r\n  optsOrCb: unknown,\r\n  cb?: CompressCallback,\r\n): void {\r\n  const callback =\r\n    typeof optsOrCb === \"function\" ? (optsOrCb as CompressCallback) : cb!;\r\n  const opHandle = getRegistry().register(\"WASMWork\");\r\n  const finish = (err: Error | null, result: Buffer): void => {\r\n    try {\r\n      callback(err, result);\r\n    } finally {\r\n      opHandle.close();\r\n    }\r\n  };\r\n  ensureBrotli()\r\n    .then((engine) => {\r\n      if (!engine) {\r\n        finish(new Error(\"Brotli WASM is not available\"), Buffer.alloc(0));\r\n        return;\r\n      }\r\n      try {\r\n        const out = engine.decompress(new Uint8Array(input));\r\n        finish(null, Buffer.from(out));\r\n      } catch (e) {\r\n        finish(e as Error, Buffer.alloc(0));\r\n      }\r\n    })\r\n    .catch((e) => finish(e as Error, Buffer.alloc(0)));\r\n}\r\n\r\n\r\nexport function gzipSync(input: Buffer | string): Buffer {\r\n  const data = typeof input === \"string\" ? Buffer.from(input) : input;\r\n  return Buffer.from(pako.gzip(data));\r\n}\r\n\r\nexport function gunzipSync(input: Buffer): Buffer {\r\n  return Buffer.from(pako.ungzip(input));\r\n}\r\n\r\nexport function deflateSync(input: Buffer | string): Buffer {\r\n  const data = typeof input === \"string\" ? Buffer.from(input) : input;\r\n  return Buffer.from(pako.deflate(data));\r\n}\r\n\r\nexport function inflateSync(input: Buffer): Buffer {\r\n  return Buffer.from(pako.inflate(input));\r\n}\r\n\r\nexport function deflateRawSync(input: Buffer | string): Buffer {\r\n  const data = typeof input === \"string\" ? Buffer.from(input) : input;\r\n  return Buffer.from(pako.deflateRaw(data));\r\n}\r\n\r\nexport function inflateRawSync(input: Buffer): Buffer {\r\n  return Buffer.from(pako.inflateRaw(input));\r\n}\r\n\r\nexport function brotliCompressSync(\r\n  input: Buffer | string,\r\n  _opts?: unknown,\r\n): Buffer {\r\n  if (!brotliInstance) {\r\n    throw new Error(\r\n      \"Brotli WASM not loaded yet. Use async brotliCompress() or await preloadBrotli() first.\",\r\n    );\r\n  }\r\n  const data = typeof input === \"string\" ? Buffer.from(input) : input;\r\n  return Buffer.from(brotliInstance.compress(new Uint8Array(data)));\r\n}\r\n\r\nexport function brotliDecompressSync(input: Buffer, _opts?: unknown): Buffer {\r\n  if (brotliInstance) {\r\n    return Buffer.from(brotliInstance.decompress(new Uint8Array(input)));\r\n  }\r\n  // Pure JS fallback when WASM isn't ready yet\r\n  return Buffer.from(brotliDecompressJs(new Uint8Array(input)));\r\n}\r\n\r\n// pako v2 may call onEnd synchronously during push(), moving chunks->result\r\nfunction drainEngine(engine: { chunks: Uint8Array[]; result?: Uint8Array | null }): Buffer | null {\r\n  if (engine.chunks && engine.chunks.length > 0) {\r\n    const chunks = engine.chunks.splice(0);\r\n    if (chunks.length === 1) return Buffer.from(chunks[0]);\r\n    let total = 0;\r\n    for (const c of chunks) total += c.length;\r\n    const merged = new Uint8Array(total);\r\n    let off = 0;\r\n    for (const c of chunks) {\r\n      merged.set(c, off);\r\n      off += c.length;\r\n    }\r\n    return Buffer.from(merged);\r\n  }\r\n  if (engine.result && engine.result.length > 0) {\r\n    const buf = Buffer.from(engine.result);\r\n    engine.result = null;\r\n    return buf;\r\n  }\r\n  return null;\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  ZlibTransform (base)                                               */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface ZlibTransform extends Transform {\r\n  _opts: any;\r\n  bytesWritten: number;\r\n  _handle: { close: () => void };\r\n  close(cb?: () => void): void;\r\n  flush(cb?: (err: Error | null) => void): void;\r\n  reset(): void;\r\n  params(_level: number, _strategy: number, cb?: (err: Error | null) => void): void;\r\n  _processChunk(chunk: Buffer | Uint8Array, flushFlag: number): Buffer | null;\r\n}\r\n\r\ninterface ZlibTransformConstructor {\r\n  new (opts?: any): ZlibTransform;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n}\r\n\r\nconst ZlibTransform = function ZlibTransform(this: any, opts?: any) {\r\n  if (!this) return;\r\n  Transform.call(this);\r\n  this._opts = opts || {};\r\n  this.bytesWritten = 0;\r\n  this._handle = { close: () => {} };\r\n} as unknown as ZlibTransformConstructor;\r\n\r\nObject.setPrototypeOf(ZlibTransform.prototype, Transform.prototype);\r\n\r\nZlibTransform.prototype.close = function close(cb?: () => void): void {\r\n  this.destroy();\r\n  if (cb) queueMicrotask(cb);\r\n};\r\n\r\nZlibTransform.prototype.flush = function flush(cb?: (err: Error | null) => void): void {\r\n  if (cb) queueMicrotask(() => cb(null));\r\n};\r\n\r\nZlibTransform.prototype.reset = function reset(): void {\r\n};\r\n\r\nZlibTransform.prototype.params = function params(\r\n  _level: number,\r\n  _strategy: number,\r\n  cb?: (err: Error | null) => void,\r\n): void {\r\n  if (cb) queueMicrotask(() => cb(null));\r\n};\r\n\r\n// used by next/dist/compiled/tar's ZlibBase.write() for sync decompression\r\nZlibTransform.prototype._processChunk = function _processChunk(\r\n  chunk: Buffer | Uint8Array,\r\n  flushFlag: number,\r\n): Buffer | null {\r\n  let result: Buffer | null = null;\r\n  this._transform(\r\n    chunk,\r\n    \"buffer\",\r\n    ((err?: Error | null, data?: any) => {\r\n      if (err) throw err;\r\n      if (data) result = Buffer.from(data);\r\n    }) as any,\r\n  );\r\n  // If Z_FINISH (4), also flush\r\n  if (flushFlag === 4) {\r\n    this._flush(((err?: Error | null, data?: any) => {\r\n      if (err) throw err;\r\n      if (data) {\r\n        result = result\r\n          ? Buffer.concat([result, Buffer.from(data)])\r\n          : Buffer.from(data);\r\n      }\r\n    }) as any);\r\n  }\r\n  return result;\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Gzip                                                                */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Gzip extends ZlibTransform {\r\n  _engine: pako.Deflate;\r\n}\r\n\r\ninterface GzipConstructor {\r\n  new (opts?: any): Gzip;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Gzip = function Gzip(this: any, opts?: any) {\r\n  if (!this) return;\r\n  ZlibTransform.call(this, opts);\r\n  this._engine = new pako.Deflate({ ...(opts || {}), gzip: true });\r\n} as unknown as GzipConstructor;\r\n\r\nObject.setPrototypeOf(Gzip.prototype, ZlibTransform.prototype);\r\n\r\nGzip.prototype._transform = function _transform(\r\n  chunk: any,\r\n  _enc: string,\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    this._engine.push(chunk, false);\r\n    if (this._engine.err) {\r\n      done(new Error(this._engine.msg || \"Gzip error\"));\r\n      return;\r\n    }\r\n    const out = drainEngine(this._engine as any);\r\n    done(null, out ?? undefined);\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\nGzip.prototype._flush = function _flush(\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    this._engine.push(new Uint8Array(0), true);\r\n    const out = drainEngine(this._engine as any);\r\n    done(null, out ?? undefined);\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Gunzip                                                              */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Gunzip extends ZlibTransform {\r\n  _engine: pako.Inflate;\r\n}\r\n\r\ninterface GunzipConstructor {\r\n  new (opts?: any): Gunzip;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Gunzip = function Gunzip(this: any, opts?: any) {\r\n  if (!this) return;\r\n  ZlibTransform.call(this, opts);\r\n  this._engine = new pako.Inflate({ ...(opts || {}) });\r\n} as unknown as GunzipConstructor;\r\n\r\nObject.setPrototypeOf(Gunzip.prototype, ZlibTransform.prototype);\r\n\r\nGunzip.prototype._transform = function _transform(\r\n  chunk: any,\r\n  _enc: string,\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    this._engine.push(chunk, false);\r\n    if (this._engine.err) {\r\n      done(new Error(this._engine.msg || \"Gunzip error\"));\r\n      return;\r\n    }\r\n    const out = drainEngine(this._engine as any);\r\n    done(null, out ?? undefined);\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\nGunzip.prototype._flush = function _flush(\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    this._engine.push(new Uint8Array(0), true);\r\n    const out = drainEngine(this._engine as any);\r\n    done(null, out ?? undefined);\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Deflate                                                             */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Deflate extends ZlibTransform {\r\n  _engine: pako.Deflate;\r\n}\r\n\r\ninterface DeflateConstructor {\r\n  new (opts?: any): Deflate;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Deflate = function Deflate(this: any, opts?: any) {\r\n  if (!this) return;\r\n  ZlibTransform.call(this, opts);\r\n  this._engine = new pako.Deflate({ ...(opts || {}) });\r\n} as unknown as DeflateConstructor;\r\n\r\nObject.setPrototypeOf(Deflate.prototype, ZlibTransform.prototype);\r\n\r\nDeflate.prototype._transform = function _transform(\r\n  chunk: any,\r\n  _enc: string,\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    this._engine.push(chunk, false);\r\n    if (this._engine.err) {\r\n      done(new Error(this._engine.msg || \"Deflate error\"));\r\n      return;\r\n    }\r\n    const out = drainEngine(this._engine as any);\r\n    done(null, out ?? undefined);\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\nDeflate.prototype._flush = function _flush(\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    this._engine.push(new Uint8Array(0), true);\r\n    const out = drainEngine(this._engine as any);\r\n    done(null, out ?? undefined);\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Inflate                                                             */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Inflate extends ZlibTransform {\r\n  _engine: pako.Inflate;\r\n}\r\n\r\ninterface InflateConstructor {\r\n  new (opts?: any): Inflate;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Inflate = function Inflate(this: any, opts?: any) {\r\n  if (!this) return;\r\n  ZlibTransform.call(this, opts);\r\n  this._engine = new pako.Inflate({ ...(opts || {}) });\r\n} as unknown as InflateConstructor;\r\n\r\nObject.setPrototypeOf(Inflate.prototype, ZlibTransform.prototype);\r\n\r\nInflate.prototype._transform = function _transform(\r\n  chunk: any,\r\n  _enc: string,\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    this._engine.push(chunk, false);\r\n    if (this._engine.err) {\r\n      done(new Error(this._engine.msg || \"Inflate error\"));\r\n      return;\r\n    }\r\n    const out = drainEngine(this._engine as any);\r\n    done(null, out ?? undefined);\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\nInflate.prototype._flush = function _flush(\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    this._engine.push(new Uint8Array(0), true);\r\n    const out = drainEngine(this._engine as any);\r\n    done(null, out ?? undefined);\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  DeflateRaw                                                          */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface DeflateRaw extends ZlibTransform {\r\n  _engine: pako.Deflate;\r\n}\r\n\r\ninterface DeflateRawConstructor {\r\n  new (opts?: any): DeflateRaw;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const DeflateRaw = function DeflateRaw(this: any, opts?: any) {\r\n  if (!this) return;\r\n  ZlibTransform.call(this, opts);\r\n  this._engine = new pako.Deflate({ ...(opts || {}), raw: true });\r\n} as unknown as DeflateRawConstructor;\r\n\r\nObject.setPrototypeOf(DeflateRaw.prototype, ZlibTransform.prototype);\r\n\r\nDeflateRaw.prototype._transform = function _transform(\r\n  chunk: any,\r\n  _enc: string,\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    this._engine.push(chunk, false);\r\n    if (this._engine.err) {\r\n      done(new Error(this._engine.msg || \"DeflateRaw error\"));\r\n      return;\r\n    }\r\n    const out = drainEngine(this._engine as any);\r\n    done(null, out ?? undefined);\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\nDeflateRaw.prototype._flush = function _flush(\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    this._engine.push(new Uint8Array(0), true);\r\n    const out = drainEngine(this._engine as any);\r\n    done(null, out ?? undefined);\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  InflateRaw                                                          */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface InflateRaw extends ZlibTransform {\r\n  _engine: pako.Inflate;\r\n}\r\n\r\ninterface InflateRawConstructor {\r\n  new (opts?: any): InflateRaw;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const InflateRaw = function InflateRaw(this: any, opts?: any) {\r\n  if (!this) return;\r\n  ZlibTransform.call(this, opts);\r\n  this._engine = new pako.Inflate({ ...(opts || {}), raw: true });\r\n} as unknown as InflateRawConstructor;\r\n\r\nObject.setPrototypeOf(InflateRaw.prototype, ZlibTransform.prototype);\r\n\r\nInflateRaw.prototype._transform = function _transform(\r\n  chunk: any,\r\n  _enc: string,\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    this._engine.push(chunk, false);\r\n    if (this._engine.err) {\r\n      done(new Error(this._engine.msg || \"InflateRaw error\"));\r\n      return;\r\n    }\r\n    const out = drainEngine(this._engine as any);\r\n    done(null, out ?? undefined);\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\nInflateRaw.prototype._flush = function _flush(\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    this._engine.push(new Uint8Array(0), true);\r\n    const out = drainEngine(this._engine as any);\r\n    done(null, out ?? undefined);\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Unzip                                                               */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Unzip extends ZlibTransform {\r\n  _engine: pako.Inflate | null;\r\n}\r\n\r\ninterface UnzipConstructor {\r\n  new (opts?: any): Unzip;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Unzip = function Unzip(this: any, opts?: any) {\r\n  if (!this) return;\r\n  ZlibTransform.call(this, opts);\r\n  this._engine = null;\r\n} as unknown as UnzipConstructor;\r\n\r\nObject.setPrototypeOf(Unzip.prototype, ZlibTransform.prototype);\r\n\r\nUnzip.prototype._transform = function _transform(\r\n  chunk: any,\r\n  _enc: string,\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    if (!this._engine) {\r\n      const buf = chunk instanceof Uint8Array ? chunk : new Uint8Array(chunk);\r\n      // gzip magic: 1f 8b -> windowBits 15+16, otherwise auto-detect with 15+32\r\n      const isGzip = buf.length >= 2 && buf[0] === 0x1f && buf[1] === 0x8b;\r\n      this._engine = new pako.Inflate({\r\n        windowBits: isGzip ? 15 + 16 : 15 + 32,\r\n      });\r\n    }\r\n    this._engine.push(chunk, false);\r\n    if (this._engine.err) {\r\n      done(new Error(this._engine.msg || \"Unzip error\"));\r\n      return;\r\n    }\r\n    const out = drainEngine(this._engine as any);\r\n    done(null, out ?? undefined);\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\nUnzip.prototype._flush = function _flush(\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  try {\r\n    if (this._engine) {\r\n      this._engine.push(new Uint8Array(0), true);\r\n      const out = drainEngine(this._engine as any);\r\n      done(null, out ?? undefined);\r\n    } else {\r\n      done(null);\r\n    }\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  BrotliCompressStream                                                */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface BrotliCompressStream extends ZlibTransform {}\r\n\r\ninterface BrotliCompressStreamConstructor {\r\n  new (opts?: any): BrotliCompressStream;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const BrotliCompressStream = function BrotliCompressStream(this: any, opts?: any) {\r\n  if (!this) return;\r\n  ZlibTransform.call(this, opts);\r\n} as unknown as BrotliCompressStreamConstructor;\r\n\r\nObject.setPrototypeOf(BrotliCompressStream.prototype, ZlibTransform.prototype);\r\n\r\nBrotliCompressStream.prototype._transform = function _transform(\r\n  chunk: any,\r\n  _enc: string,\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  if (!brotliInstance) {\r\n    done(new Error(\"Brotli WASM not loaded\"));\r\n    return;\r\n  }\r\n  try {\r\n    const data = chunk instanceof Uint8Array ? chunk : new Uint8Array(chunk);\r\n    done(null, Buffer.from(brotliInstance.compress(data)));\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  BrotliDecompressStream                                              */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface BrotliDecompressStream extends ZlibTransform {}\r\n\r\ninterface BrotliDecompressStreamConstructor {\r\n  new (opts?: any): BrotliDecompressStream;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const BrotliDecompressStream = function BrotliDecompressStream(this: any, opts?: any) {\r\n  if (!this) return;\r\n  ZlibTransform.call(this, opts);\r\n} as unknown as BrotliDecompressStreamConstructor;\r\n\r\nObject.setPrototypeOf(BrotliDecompressStream.prototype, ZlibTransform.prototype);\r\n\r\nBrotliDecompressStream.prototype._transform = function _transform(\r\n  chunk: any,\r\n  _enc: string,\r\n  done: (err: Error | null, data?: any) => void,\r\n): void {\r\n  if (!brotliInstance) {\r\n    done(new Error(\"Brotli WASM not loaded\"));\r\n    return;\r\n  }\r\n  try {\r\n    const data = chunk instanceof Uint8Array ? chunk : new Uint8Array(chunk);\r\n    done(null, Buffer.from(brotliInstance.decompress(data)));\r\n  } catch (e) {\r\n    done(e as Error);\r\n  }\r\n};\r\n\r\nexport const BrotliCompress = BrotliCompressStream;\r\nexport const BrotliDecompress = BrotliDecompressStream;\r\n\r\n\r\nexport function createGzip(opts?: any): Gzip {\r\n  return new Gzip(opts);\r\n}\r\n\r\nexport function createGunzip(opts?: any): Gunzip {\r\n  return new Gunzip(opts);\r\n}\r\n\r\nexport function createDeflate(opts?: any): Deflate {\r\n  return new Deflate(opts);\r\n}\r\n\r\nexport function createInflate(opts?: any): Inflate {\r\n  return new Inflate(opts);\r\n}\r\n\r\nexport function createDeflateRaw(opts?: any): DeflateRaw {\r\n  return new DeflateRaw(opts);\r\n}\r\n\r\nexport function createInflateRaw(opts?: any): InflateRaw {\r\n  return new InflateRaw(opts);\r\n}\r\n\r\nexport function createUnzip(opts?: any): Unzip {\r\n  return new Unzip(opts);\r\n}\r\n\r\nexport function createBrotliCompress(opts?: any): BrotliCompressStream {\r\n  return new BrotliCompressStream(opts);\r\n}\r\n\r\nexport function createBrotliDecompress(opts?: any): BrotliDecompressStream {\r\n  return new BrotliDecompressStream(opts);\r\n}\r\n\r\n\r\nexport const constants = {\r\n  Z_NO_FLUSH: 0,\r\n  Z_PARTIAL_FLUSH: 1,\r\n  Z_SYNC_FLUSH: 2,\r\n  Z_FULL_FLUSH: 3,\r\n  Z_FINISH: 4,\r\n  Z_BLOCK: 5,\r\n  Z_OK: 0,\r\n  Z_STREAM_END: 1,\r\n  Z_NEED_DICT: 2,\r\n  Z_ERRNO: -1,\r\n  Z_STREAM_ERROR: -2,\r\n  Z_DATA_ERROR: -3,\r\n  Z_MEM_ERROR: -4,\r\n  Z_BUF_ERROR: -5,\r\n  Z_VERSION_ERROR: -6,\r\n  Z_NO_COMPRESSION: 0,\r\n  Z_BEST_SPEED: 1,\r\n  Z_BEST_COMPRESSION: 9,\r\n  Z_DEFAULT_COMPRESSION: -1,\r\n  Z_FILTERED: 1,\r\n  Z_HUFFMAN_ONLY: 2,\r\n  Z_RLE: 3,\r\n  Z_FIXED: 4,\r\n  Z_DEFAULT_STRATEGY: 0,\r\n  ZLIB_VERNUM: 4784,\r\n  Z_MIN_WINDOWBITS: 8,\r\n  Z_MAX_WINDOWBITS: 15,\r\n  Z_DEFAULT_WINDOWBITS: 15,\r\n  Z_MIN_CHUNK: 64,\r\n  Z_MAX_CHUNK: Infinity,\r\n  Z_DEFAULT_CHUNK: 16384,\r\n  Z_MIN_MEMLEVEL: 1,\r\n  Z_MAX_MEMLEVEL: 9,\r\n  Z_DEFAULT_MEMLEVEL: 8,\r\n  Z_MIN_LEVEL: -1,\r\n  Z_MAX_LEVEL: 9,\r\n  Z_DEFAULT_LEVEL: -1,\r\n  BROTLI_DECODE: 0,\r\n  BROTLI_ENCODE: 1,\r\n  BROTLI_OPERATION_PROCESS: 0,\r\n  BROTLI_OPERATION_FLUSH: 1,\r\n  BROTLI_OPERATION_FINISH: 2,\r\n  BROTLI_OPERATION_EMIT_METADATA: 3,\r\n  BROTLI_PARAM_MODE: 0,\r\n  BROTLI_MODE_GENERIC: 0,\r\n  BROTLI_MODE_TEXT: 1,\r\n  BROTLI_MODE_FONT: 2,\r\n  BROTLI_PARAM_QUALITY: 1,\r\n  BROTLI_MIN_QUALITY: 0,\r\n  BROTLI_MAX_QUALITY: 11,\r\n  BROTLI_DEFAULT_QUALITY: 11,\r\n  BROTLI_PARAM_LGWIN: 2,\r\n  BROTLI_MIN_WINDOW_BITS: 10,\r\n  BROTLI_MAX_WINDOW_BITS: 24,\r\n  BROTLI_DEFAULT_WINDOW: 22,\r\n  BROTLI_PARAM_LGBLOCK: 3,\r\n  BROTLI_MIN_INPUT_BLOCK_BITS: 16,\r\n  BROTLI_MAX_INPUT_BLOCK_BITS: 24,\r\n};\r\n\r\nexport default {\r\n  gzip,\r\n  gunzip,\r\n  deflate,\r\n  inflate,\r\n  deflateRaw,\r\n  inflateRaw,\r\n  brotliCompress,\r\n  brotliDecompress,\r\n  gzipSync,\r\n  gunzipSync,\r\n  deflateSync,\r\n  inflateSync,\r\n  deflateRawSync,\r\n  inflateRawSync,\r\n  brotliCompressSync,\r\n  brotliDecompressSync,\r\n  preloadBrotli,\r\n  Gzip,\r\n  Gunzip,\r\n  Deflate,\r\n  Inflate,\r\n  DeflateRaw,\r\n  InflateRaw,\r\n  Unzip,\r\n  BrotliCompress: BrotliCompressStream,\r\n  BrotliDecompress: BrotliDecompressStream,\r\n  // Stream creators\r\n  createGzip,\r\n  createGunzip,\r\n  createDeflate,\r\n  createInflate,\r\n  createDeflateRaw,\r\n  createInflateRaw,\r\n  createUnzip,\r\n  createBrotliCompress,\r\n  createBrotliDecompress,\r\n  // Constants\r\n  constants,\r\n};\r\n","// stub - real DNS not available in browser, returns 127.0.0.1 for localhost, 0.0.0.0 otherwise\r\n\r\ntype SingleResult = (err: Error | null, addr?: string, fam?: number) => void;\r\ntype MultiResult = (\r\n  err: Error | null,\r\n  entries?: Array<{ address: string; family: number }>\r\n) => void;\r\n\r\nexport function lookup(\r\n  host: string,\r\n  cb: SingleResult\r\n): void;\r\nexport function lookup(\r\n  host: string,\r\n  opts: { family?: number; all?: true },\r\n  cb: MultiResult\r\n): void;\r\nexport function lookup(\r\n  host: string,\r\n  opts: { family?: number; all?: boolean },\r\n  cb: SingleResult | MultiResult\r\n): void;\r\nexport function lookup(\r\n  host: string,\r\n  optsOrCb: { family?: number; all?: boolean } | SingleResult,\r\n  cb?: SingleResult | MultiResult\r\n): void {\r\n  const handler = typeof optsOrCb === 'function' ? optsOrCb : cb;\r\n  const flags = typeof optsOrCb === 'object' ? optsOrCb : {};\r\n\r\n  const isLocal = host === 'localhost' || host === '127.0.0.1';\r\n  const ip = isLocal ? '127.0.0.1' : '0.0.0.0';\r\n\r\n  setTimeout(() => {\r\n    if (flags.all) {\r\n      (handler as MultiResult)(null, [{ address: ip, family: 4 }]);\r\n    } else {\r\n      (handler as SingleResult)(null, ip, 4);\r\n    }\r\n  }, 0);\r\n}\r\n\r\nexport function resolve(\r\n  _host: string,\r\n  cb: (err: Error | null, addrs?: string[]) => void\r\n): void {\r\n  setTimeout(() => cb(null, ['0.0.0.0']), 0);\r\n}\r\n\r\nexport function resolve4(\r\n  host: string,\r\n  cb: (err: Error | null, addrs?: string[]) => void\r\n): void {\r\n  resolve(host, cb);\r\n}\r\n\r\nexport function resolve6(\r\n  _host: string,\r\n  cb: (err: Error | null, addrs?: string[]) => void\r\n): void {\r\n  setTimeout(() => cb(null, ['::1']), 0);\r\n}\r\n\r\nexport function reverse(\r\n  _ip: string,\r\n  cb: (err: Error | null, names?: string[]) => void\r\n): void {\r\n  setTimeout(() => cb(null, ['localhost']), 0);\r\n}\r\n\r\nexport function setServers(_list: string[]): void {}\r\nexport function getServers(): string[] { return []; }\r\nexport function setDefaultResultOrder(_order: string): void {}\r\nexport function getDefaultResultOrder(): string { return 'verbatim'; }\r\n\r\nexport const promises = {\r\n  lookup(\r\n    host: string,\r\n    opts?: { family?: number; all?: boolean }\r\n  ): Promise<{ address: string; family: number } | Array<{ address: string; family: number }>> {\r\n    return new Promise((ok, fail) => {\r\n      if (opts?.all) {\r\n        lookup(host, opts, ((e: Error | null, a?: Array<{ address: string; family: number }>) => {\r\n          if (e) fail(e); else ok(a ?? []);\r\n        }) as MultiResult);\r\n      } else {\r\n        lookup(host, opts ?? {}, (e, addr, fam) => {\r\n          if (e) fail(e); else ok({ address: addr!, family: fam! });\r\n        });\r\n      }\r\n    });\r\n  },\r\n\r\n  resolve(host: string): Promise<string[]> {\r\n    return new Promise((ok, fail) => {\r\n      resolve(host, (e, a) => (e ? fail(e) : ok(a ?? [])));\r\n    });\r\n  },\r\n\r\n  resolve4(host: string): Promise<string[]> {\r\n    return promises.resolve(host);\r\n  },\r\n\r\n  resolve6(_host: string): Promise<string[]> {\r\n    return Promise.resolve(['::1']);\r\n  },\r\n\r\n  reverse(_ip: string): Promise<string[]> {\r\n    return Promise.resolve(['localhost']);\r\n  },\r\n\r\n  setServers(_s: string[]): void {},\r\n  getServers(): string[] { return []; },\r\n};\r\n\r\nexport const ADDRCONFIG = 0;\r\nexport const V4MAPPED = 0;\r\nexport const ALL = 0;\r\n\r\nexport default {\r\n  lookup,\r\n  resolve,\r\n  resolve4,\r\n  resolve6,\r\n  reverse,\r\n  setServers,\r\n  getServers,\r\n  setDefaultResultOrder,\r\n  getDefaultResultOrder,\r\n  promises,\r\n  ADDRCONFIG,\r\n  V4MAPPED,\r\n  ALL,\r\n};\r\n","// Shared MemoryVolume reference for polyfills that need VFS access\r\n\r\n\r\nimport type { MemoryVolume } from \"../memory-volume\";\r\n\r\nlet sharedVolume: MemoryVolume | null = null;\r\n\r\n// must be called once during init before watchers/scanners are used\r\nexport function setSharedVolume(vol: MemoryVolume): void {\r\n  sharedVolume = vol;\r\n}\r\n\r\nexport function getSharedVolume(): MemoryVolume | null {\r\n  return sharedVolume;\r\n}\r\n","// Chokidar-compatible file watcher on top of MemoryVolume.watch()\r\n\r\n\r\nimport type { MemoryVolume, FileWatchHandle, FileStat } from \"../memory-volume\";\r\nimport { setSharedVolume, getSharedVolume } from \"./volume-registry\";\r\n\r\n\r\nexport function setVolume(vol: MemoryVolume): void {\r\n  setSharedVolume(vol);\r\n}\r\n\r\n\r\ntype Listener = (...args: unknown[]) => void;\r\n\r\ninterface MiniEmitter {\r\n  handlers: Map<string, Set<Listener>>;\r\n  on(name: string, fn: Listener): this;\r\n  off(name: string, fn: Listener): this;\r\n  fire(name: string, ...args: unknown[]): void;\r\n}\r\n\r\ninterface MiniEmitterConstructor {\r\n  new (): MiniEmitter;\r\n  (this: any): void;\r\n  prototype: any;\r\n}\r\n\r\nconst MiniEmitter = function MiniEmitter(this: any) {\r\n  if (!this) return;\r\n  this.handlers = new Map<string, Set<Listener>>();\r\n} as unknown as MiniEmitterConstructor;\r\n\r\nMiniEmitter.prototype.on = function on(this: any, name: string, fn: Listener): any {\r\n  if (!this.handlers.has(name)) this.handlers.set(name, new Set());\r\n  this.handlers.get(name)!.add(fn);\r\n  return this;\r\n};\r\n\r\nMiniEmitter.prototype.off = function off(this: any, name: string, fn: Listener): any {\r\n  this.handlers.get(name)?.delete(fn);\r\n  return this;\r\n};\r\n\r\nMiniEmitter.prototype.fire = function fire(this: any, name: string, ...args: unknown[]): void {\r\n  const set = this.handlers.get(name);\r\n  if (!set) return;\r\n  for (const fn of set) {\r\n    try {\r\n      fn(...args);\r\n    } catch {\r\n      /* swallow listener errors */\r\n    }\r\n  }\r\n};\r\n\r\n\r\nexport interface WatcherConfig {\r\n  persistent?: boolean;\r\n  ignored?:\r\n    | string\r\n    | RegExp\r\n    | ((p: string) => boolean)\r\n    | Array<string | RegExp | ((p: string) => boolean)>;\r\n  ignoreInitial?: boolean;\r\n  followSymlinks?: boolean;\r\n  cwd?: string;\r\n  disableGlobbing?: boolean;\r\n  usePolling?: boolean;\r\n  interval?: number;\r\n  binaryInterval?: number;\r\n  alwaysStat?: boolean;\r\n  depth?: number;\r\n  awaitWriteFinish?:\r\n    | boolean\r\n    | { stabilityThreshold?: number; pollInterval?: number };\r\n  ignorePermissionErrors?: boolean;\r\n  atomic?: boolean | number;\r\n}\r\n\r\n\r\nexport interface PathWatcher extends MiniEmitter {\r\n  vol: MemoryVolume;\r\n  cfg: WatcherConfig;\r\n  handles: Map<string, FileWatchHandle>;\r\n  terminated: boolean;\r\n  initialised: boolean;\r\n  add(targets: string | readonly string[]): this;\r\n  unwatch(targets: string | readonly string[]): this;\r\n  close(): Promise<void>;\r\n  getWatched(): Record<string, string[]>;\r\n  resolvePath(raw: string): string;\r\n  isExcluded(target: string): boolean;\r\n  gatherInitial(dir: string, queue: Array<() => void>): void;\r\n  attachWatcher(target: string, filterFor?: string): void;\r\n  watchSubtree(dir: string, level?: number): void;\r\n}\r\n\r\ninterface PathWatcherConstructor {\r\n  new (cfg?: WatcherConfig): PathWatcher;\r\n  (this: any, cfg?: WatcherConfig): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const PathWatcher = function PathWatcher(this: any, cfg: WatcherConfig = {}) {\r\n  if (!this) return;\r\n  MiniEmitter.call(this);\r\n  const vol = getSharedVolume();\r\n  if (!vol) {\r\n    throw new Error(\r\n      \"chokidar: MemoryVolume not set. Call setVolume() first.\",\r\n    );\r\n  }\r\n  this.vol = vol;\r\n  this.cfg = cfg;\r\n  this.handles = new Map<string, FileWatchHandle>();\r\n  this.terminated = false;\r\n  this.initialised = false;\r\n} as unknown as PathWatcherConstructor;\r\n\r\nObject.setPrototypeOf(PathWatcher.prototype, MiniEmitter.prototype);\r\n\r\nPathWatcher.prototype.add = function add(this: any, targets: string | readonly string[]): any {\r\n  if (this.terminated) return this;\r\n\r\n  const list = Array.isArray(targets) ? targets : [targets];\r\n  const deferred: Array<() => void> = [];\r\n\r\n  for (const raw of list) {\r\n    const absolute = this.resolvePath(raw);\r\n    if (this.isExcluded(absolute) || this.handles.has(absolute)) continue;\r\n\r\n    try {\r\n      if (!this.vol.existsSync(absolute)) {\r\n        // Path does not exist yet -- watch its parent so we detect creation\r\n        const parentDir =\r\n          absolute.substring(0, absolute.lastIndexOf(\"/\")) || \"/\";\r\n        if (this.vol.existsSync(parentDir)) {\r\n          this.attachWatcher(parentDir, absolute);\r\n        }\r\n        continue;\r\n      }\r\n\r\n      const info = this.vol.statSync(absolute);\r\n\r\n      if (!this.cfg.ignoreInitial) {\r\n        if (info.isDirectory()) {\r\n          this.gatherInitial(absolute, deferred);\r\n        } else {\r\n          deferred.push(() => this.fire(\"add\", absolute, info));\r\n        }\r\n      }\r\n\r\n      this.attachWatcher(absolute);\r\n\r\n      if (info.isDirectory()) {\r\n        this.watchSubtree(absolute);\r\n      }\r\n    } catch (err) {\r\n      this.fire(\"error\", err);\r\n    }\r\n  }\r\n\r\n  if (!this.initialised) {\r\n    this.initialised = true;\r\n    setTimeout(() => {\r\n      for (const emit of deferred) emit();\r\n      this.fire(\"ready\");\r\n    }, 0);\r\n  }\r\n\r\n  return this;\r\n};\r\n\r\nPathWatcher.prototype.unwatch = function unwatch(this: any, targets: string | readonly string[]): any {\r\n  const list = Array.isArray(targets) ? targets : [targets];\r\n  for (const raw of list) {\r\n    const absolute = this.resolvePath(raw);\r\n    const h = this.handles.get(absolute);\r\n    if (h) {\r\n      h.close();\r\n      this.handles.delete(absolute);\r\n    }\r\n  }\r\n  return this;\r\n};\r\n\r\nPathWatcher.prototype.close = function close(this: any): Promise<void> {\r\n  this.terminated = true;\r\n  for (const h of this.handles.values()) h.close();\r\n  this.handles.clear();\r\n  this.fire(\"close\");\r\n  return Promise.resolve();\r\n};\r\n\r\nPathWatcher.prototype.getWatched = function getWatched(this: any): Record<string, string[]> {\r\n  const result: Record<string, string[]> = {};\r\n  for (const p of this.handles.keys()) {\r\n    const dir = p.substring(0, p.lastIndexOf(\"/\")) || \"/\";\r\n    const base = p.substring(p.lastIndexOf(\"/\") + 1);\r\n    if (!result[dir]) result[dir] = [];\r\n    result[dir].push(base);\r\n  }\r\n  return result;\r\n};\r\n\r\nPathWatcher.prototype.resolvePath = function resolvePath(this: any, raw: string): string {\r\n  let p = raw;\r\n  if (this.cfg.cwd && !p.startsWith(\"/\")) {\r\n    p = this.cfg.cwd + \"/\" + p;\r\n  }\r\n  if (!p.startsWith(\"/\")) p = \"/\" + p;\r\n  return p;\r\n};\r\n\r\nPathWatcher.prototype.isExcluded = function isExcluded(this: any, target: string): boolean {\r\n  const { ignored } = this.cfg;\r\n  if (!ignored) return false;\r\n\r\n  const rules = Array.isArray(ignored) ? ignored : [ignored];\r\n  for (const rule of rules) {\r\n    if (typeof rule === \"string\") {\r\n      if (target === rule || target.startsWith(rule + \"/\")) return true;\r\n    } else if (rule instanceof RegExp) {\r\n      if (rule.test(target)) return true;\r\n    } else if (typeof rule === \"function\") {\r\n      if (rule(target)) return true;\r\n    }\r\n  }\r\n  return false;\r\n};\r\n\r\nPathWatcher.prototype.gatherInitial = function gatherInitial(this: any, dir: string, queue: Array<() => void>): void {\r\n  try {\r\n    const children = this.vol.readdirSync(dir);\r\n    for (const child of children) {\r\n      const full = dir === \"/\" ? \"/\" + child : dir + \"/\" + child;\r\n      if (this.isExcluded(full)) continue;\r\n      const st = this.vol.statSync(full);\r\n      if (st.isDirectory()) {\r\n        queue.push(() => this.fire(\"addDir\", full, st));\r\n        this.gatherInitial(full, queue);\r\n      } else {\r\n        queue.push(() => this.fire(\"add\", full, st));\r\n      }\r\n    }\r\n  } catch {\r\n    /* swallow read errors during initial scan */\r\n  }\r\n};\r\n\r\nPathWatcher.prototype.attachWatcher = function attachWatcher(this: any, target: string, filterFor?: string): void {\r\n  if (this.handles.has(target)) return;\r\n\r\n  const self = this;\r\n  const handle = this.vol.watch(\r\n    target,\r\n    { recursive: true },\r\n    (kind: string, filename: string | null) => {\r\n      if (self.terminated) return;\r\n\r\n      let resolved: string;\r\n      if (filename) {\r\n        resolved = target === \"/\" ? \"/\" + filename : target + \"/\" + filename;\r\n      } else {\r\n        resolved = target;\r\n      }\r\n\r\n      if (\r\n        filterFor &&\r\n        resolved !== filterFor &&\r\n        !resolved.startsWith(filterFor + \"/\")\r\n      )\r\n        return;\r\n      if (self.isExcluded(resolved)) return;\r\n\r\n      if (kind === \"rename\") {\r\n        if (self.vol.existsSync(resolved)) {\r\n          try {\r\n            const st = self.vol.statSync(resolved);\r\n            const eventName = st.isDirectory() ? \"addDir\" : \"add\";\r\n            self.fire(eventName, resolved, st);\r\n            self.fire(\"all\", eventName, resolved, st);\r\n          } catch {\r\n            /* vanished between check and stat */\r\n          }\r\n        } else {\r\n          self.fire(\"unlink\", resolved);\r\n          self.fire(\"all\", \"unlink\", resolved);\r\n        }\r\n      } else if (kind === \"change\") {\r\n        try {\r\n          const st = self.vol.statSync(resolved);\r\n          self.fire(\"change\", resolved, st);\r\n          self.fire(\"all\", \"change\", resolved, st);\r\n        } catch {\r\n          self.fire(\"unlink\", resolved);\r\n          self.fire(\"all\", \"unlink\", resolved);\r\n        }\r\n      }\r\n    },\r\n  );\r\n\r\n  this.handles.set(target, handle);\r\n};\r\n\r\nPathWatcher.prototype.watchSubtree = function watchSubtree(this: any, dir: string, level: number = 0): void {\r\n  if (this.cfg.depth !== undefined && level > this.cfg.depth) return;\r\n  try {\r\n    const children = this.vol.readdirSync(dir);\r\n    for (const name of children) {\r\n      const full = dir === \"/\" ? \"/\" + name : dir + \"/\" + name;\r\n      if (this.isExcluded(full)) continue;\r\n      try {\r\n        if (this.vol.statSync(full).isDirectory()) {\r\n          this.attachWatcher(full);\r\n          this.watchSubtree(full, level + 1);\r\n        }\r\n      } catch {\r\n        /* skip */\r\n      }\r\n    }\r\n  } catch {\r\n    /* skip */\r\n  }\r\n};\r\n\r\nexport function watch(\r\n  targets: string | readonly string[],\r\n  options?: WatcherConfig,\r\n): PathWatcher {\r\n  const watcher = new PathWatcher(options);\r\n  watcher.add(targets);\r\n  return watcher;\r\n}\r\n\r\nexport default { watch, PathWatcher, setVolume };\r\n","// ws-compatible WebSocket polyfill wrapping browser native WebSocket\r\n\r\n\r\nimport { encodeFrame, decodeFrame } from \"./http\";\r\nimport { Buffer } from \"./buffer\";\r\nimport { createHash } from \"./crypto\";\r\nimport type { TcpSocket } from \"./net\";\r\nimport { getRegistry, type Handle } from \"../helpers/event-loop\";\r\n\r\n// polyfill for environments missing CloseEvent / MessageEvent\r\nconst SafeCloseEvent: typeof CloseEvent =\r\n  typeof CloseEvent !== 'undefined'\r\n    ? CloseEvent\r\n    : (class SyntheticClose extends Event {\r\n        code: number;\r\n        reason: string;\r\n        wasClean: boolean;\r\n        constructor(kind: string, init?: { code?: number; reason?: string; wasClean?: boolean }) {\r\n          super(kind);\r\n          this.code = init?.code ?? 1000;\r\n          this.reason = init?.reason ?? '';\r\n          this.wasClean = init?.wasClean ?? true;\r\n        }\r\n      } as unknown as typeof CloseEvent);\r\n\r\nconst SafeMessageEvent: typeof MessageEvent =\r\n  typeof MessageEvent !== 'undefined'\r\n    ? MessageEvent\r\n    : (class SyntheticMessage extends Event {\r\n        data: unknown;\r\n        constructor(kind: string, init?: { data?: unknown }) {\r\n          super(kind);\r\n          this.data = init?.data;\r\n        }\r\n      } as unknown as typeof MessageEvent);\r\n\r\n// in-process server <-> client messaging via BroadcastChannel\r\nlet internalChannel: BroadcastChannel | null = null;\r\ntry {\r\n  internalChannel = new BroadcastChannel('nodepod-ws-bridge');\r\n} catch { /* not available */ }\r\n\r\nconst activeServers = new Map<string, WebSocketServer>();\r\nlet nextClientId = 0;\r\n\r\ntype Handler = (...args: unknown[]) => void;\r\n\r\ninterface TinyEmitter {\r\n  _listeners: Map<string, Set<Handler>>;\r\n  on(evt: string, fn: Handler): this;\r\n  off(evt: string, fn: Handler): this;\r\n  emit(evt: string, ...args: unknown[]): void;\r\n}\r\n\r\ninterface TinyEmitterConstructor {\r\n  new (): TinyEmitter;\r\n  (this: any): void;\r\n  prototype: any;\r\n}\r\n\r\nconst TinyEmitter = function TinyEmitter(this: any) {\r\n  if (!this) return;\r\n  this._listeners = new Map<string, Set<Handler>>();\r\n} as unknown as TinyEmitterConstructor;\r\n\r\nTinyEmitter.prototype.on = function on(this: any, evt: string, fn: Handler): any {\r\n  if (!this._listeners.has(evt)) this._listeners.set(evt, new Set());\r\n  this._listeners.get(evt)!.add(fn);\r\n  return this;\r\n};\r\n\r\nTinyEmitter.prototype.off = function off(this: any, evt: string, fn: Handler): any {\r\n  this._listeners.get(evt)?.delete(fn);\r\n  return this;\r\n};\r\n\r\nTinyEmitter.prototype.emit = function emit(this: any, evt: string, ...args: unknown[]): void {\r\n  const s = this._listeners.get(evt);\r\n  if (!s) return;\r\n  for (const fn of s) {\r\n    try { fn(...args); } catch { /* swallow handler errors */ }\r\n  }\r\n};\r\n\r\nexport const CONNECTING = 0;\r\nexport const OPEN = 1;\r\nexport const CLOSING = 2;\r\nexport const CLOSED = 3;\r\n\r\nexport interface WebSocket extends TinyEmitter {\r\n  readonly CONNECTING: number;\r\n  readonly OPEN: number;\r\n  readonly CLOSING: number;\r\n  readonly CLOSED: number;\r\n  readyState: number;\r\n  url: string;\r\n  protocol: string;\r\n  extensions: string;\r\n  bufferedAmount: number;\r\n  binaryType: 'blob' | 'arraybuffer';\r\n  _uid: string;\r\n  _boundServer: WebSocketServer | null;\r\n  _native: globalThis.WebSocket | null;\r\n  _tcpSocket: TcpSocket | null;\r\n  _tcpInboundBuf: Uint8Array;\r\n  _elHandle: Handle | null;\r\n  onopen: ((ev: Event) => void) | null;\r\n  onclose: ((ev: CloseEvent) => void) | null;\r\n  onerror: ((ev: Event) => void) | null;\r\n  onmessage: ((ev: MessageEvent) => void) | null;\r\n  _open(): void;\r\n  _openNative(): void;\r\n  send(payload: string | ArrayBuffer | Uint8Array): void;\r\n  close(code?: number, reason?: string): void;\r\n  ping(): void;\r\n  pong(): void;\r\n  terminate(): void;\r\n  ref(): this;\r\n  unref(): this;\r\n  _bindServer(srv: WebSocketServer): void;\r\n  _deliverMessage(data: unknown): void;\r\n}\r\n\r\ninterface WebSocketConstructor {\r\n  new (address: string, protocols?: string | string[]): WebSocket;\r\n  (this: any, address: string, protocols?: string | string[]): void;\r\n  prototype: any;\r\n  readonly CONNECTING: number;\r\n  readonly OPEN: number;\r\n  readonly CLOSING: number;\r\n  readonly CLOSED: number;\r\n}\r\n\r\nexport const WebSocket = function WebSocket(this: any, address: string, protocols?: string | string[]) {\r\n  if (!this) return;\r\n  TinyEmitter.call(this);\r\n  this.CONNECTING = CONNECTING;\r\n  this.OPEN = OPEN;\r\n  this.CLOSING = CLOSING;\r\n  this.CLOSED = CLOSED;\r\n  this.readyState = CONNECTING;\r\n  this.url = address;\r\n  this.protocol = '';\r\n  this.extensions = '';\r\n  this.bufferedAmount = 0;\r\n  this.binaryType = 'blob';\r\n  this._uid = `ws-${++nextClientId}`;\r\n  this._boundServer = null;\r\n  this._native = null;\r\n  this._tcpSocket = null;\r\n  this._tcpInboundBuf = new Uint8Array(0);\r\n  this.onopen = null;\r\n  this.onclose = null;\r\n  this.onerror = null;\r\n  this.onmessage = null;\r\n  // keeps the loop alive while the socket is open. released in close/terminate.\r\n  this._elHandle = getRegistry().register(\"WebSocket\");\r\n  if (protocols) this.protocol = Array.isArray(protocols) ? protocols[0] : protocols;\r\n  const self = this;\r\n  setTimeout(() => self._open(), 0);\r\n} as unknown as WebSocketConstructor;\r\n\r\nObject.setPrototypeOf(WebSocket.prototype, TinyEmitter.prototype);\r\n\r\n(WebSocket as any).CONNECTING = CONNECTING;\r\n(WebSocket as any).OPEN = OPEN;\r\n(WebSocket as any).CLOSING = CLOSING;\r\n(WebSocket as any).CLOSED = CLOSED;\r\n\r\nWebSocket.prototype._open = function _open(this: any): void {\r\n  // Internal loopback connection (server-side socket)\r\n  if (this.url.startsWith('internal://')) {\r\n    this.readyState = OPEN;\r\n    this.emit('open');\r\n    this.onopen?.(new Event('open'));\r\n    return;\r\n  }\r\n\r\n  // Real remote connection -- delegate to browser's native WebSocket\r\n  if (this.url.startsWith('ws://') || this.url.startsWith('wss://')) {\r\n    this._openNative();\r\n    return;\r\n  }\r\n\r\n  // BroadcastChannel-based in-process connection\r\n  if (!internalChannel) {\r\n    const self = this;\r\n    setTimeout(() => {\r\n      self.readyState = OPEN;\r\n      self.emit('open');\r\n      self.onopen?.(new Event('open'));\r\n    }, 0);\r\n    return;\r\n  }\r\n\r\n  internalChannel.postMessage({ kind: 'connect', uid: this._uid, url: this.url });\r\n\r\n  const chan = internalChannel;\r\n  const self = this;\r\n  const onMsg = (ev: MessageEvent) => {\r\n    const d = ev.data;\r\n    if (d.targetUid !== self._uid) return;\r\n\r\n    if (d.kind === 'connected') {\r\n      self.readyState = OPEN;\r\n      self.emit('open');\r\n      self.onopen?.(new Event('open'));\r\n    } else if (d.kind === 'payload') {\r\n      const me = new SafeMessageEvent('message', { data: d.body });\r\n      self.emit('message', me);\r\n      self.onmessage?.(me);\r\n    } else if (d.kind === 'closed') {\r\n      self.readyState = CLOSED;\r\n      const ce = new SafeCloseEvent('close', { code: d.code || 1000, reason: d.reason || '', wasClean: true });\r\n      self.emit('close', ce);\r\n      self.onclose?.(ce);\r\n      (self._elHandle as Handle | null)?.close();\r\n      self._elHandle = null;\r\n      chan.removeEventListener('message', onMsg);\r\n    } else if (d.kind === 'fault') {\r\n      const ee = new Event('error');\r\n      self.emit('error', ee);\r\n      self.onerror?.(ee);\r\n    }\r\n  };\r\n  chan.addEventListener('message', onMsg);\r\n\r\n  // If nobody responds within 100 ms, consider the socket \"open\" anyway\r\n  setTimeout(() => {\r\n    if (self.readyState === CONNECTING) {\r\n      self.readyState = OPEN;\r\n      self.emit('open');\r\n      self.onopen?.(new Event('open'));\r\n    }\r\n  }, 100);\r\n};\r\n\r\nWebSocket.prototype._openNative = function _openNative(this: any): void {\r\n  const inBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n  const NativeImpl = inBrowser && typeof globalThis.WebSocket === 'function' && globalThis.WebSocket !== (WebSocket as unknown)\r\n    ? globalThis.WebSocket\r\n    : null;\r\n\r\n  if (!NativeImpl) {\r\n    const self = this;\r\n    setTimeout(() => {\r\n      self.readyState = OPEN;\r\n      self.emit('open');\r\n      self.onopen?.(new Event('open'));\r\n    }, 0);\r\n    return;\r\n  }\r\n\r\n  try {\r\n    this._native = new NativeImpl(this.url);\r\n    this._native.binaryType = this.binaryType === 'arraybuffer' ? 'arraybuffer' : 'blob';\r\n  } catch {\r\n    this.readyState = CLOSED;\r\n    const errEvt = new Event('error');\r\n    this.emit('error', errEvt);\r\n    this.onerror?.(errEvt);\r\n    return;\r\n  }\r\n\r\n  const self = this;\r\n  this._native.onopen = () => {\r\n    self.readyState = OPEN;\r\n    self.emit('open');\r\n    self.onopen?.(new Event('open'));\r\n  };\r\n\r\n  this._native.onmessage = (raw: globalThis.MessageEvent) => {\r\n    const me = new SafeMessageEvent('message', { data: raw.data });\r\n    self.emit('message', me);\r\n    self.onmessage?.(me);\r\n  };\r\n\r\n  this._native.onclose = (raw: globalThis.CloseEvent) => {\r\n    self.readyState = CLOSED;\r\n    self._native = null;\r\n    const ce = new SafeCloseEvent('close', { code: raw.code, reason: raw.reason, wasClean: raw.wasClean });\r\n    self.emit('close', ce);\r\n    self.onclose?.(ce);\r\n    (self._elHandle as Handle | null)?.close();\r\n    self._elHandle = null;\r\n  };\r\n\r\n  this._native.onerror = () => {\r\n    const errEvt = new Event('error');\r\n    self.emit('error', errEvt);\r\n    self.onerror?.(errEvt);\r\n  };\r\n};\r\n\r\nWebSocket.prototype.send = function send(this: any, payload: string | ArrayBuffer | Uint8Array): void {\r\n  if (this.readyState !== OPEN) throw new Error('WebSocket is not open');\r\n\r\n  if (this._native) { this._native.send(payload); return; }\r\n\r\n  // TcpSocket-backed (from handleUpgrade) — write real WS frames\r\n  if (this._tcpSocket) {\r\n    let data: Uint8Array;\r\n    let op: number;\r\n    if (typeof payload === 'string') {\r\n      data = new TextEncoder().encode(payload);\r\n      op = 0x01; // text frame\r\n    } else if (payload instanceof ArrayBuffer) {\r\n      data = new Uint8Array(payload);\r\n      op = 0x02; // binary frame\r\n    } else {\r\n      data = payload;\r\n      op = 0x02; // binary frame\r\n    }\r\n    // Server frames are NOT masked\r\n    const frame = encodeFrame(op, data, false);\r\n    this._tcpSocket.write(Buffer.from(frame));\r\n    return;\r\n  }\r\n\r\n  if (this._boundServer) { this._boundServer._injectClientPayload(this, payload); return; }\r\n\r\n  if (internalChannel) {\r\n    internalChannel.postMessage({ kind: 'payload', uid: this._uid, url: this.url, body: payload });\r\n  }\r\n};\r\n\r\nWebSocket.prototype.close = function close(this: any, code?: number, reason?: string): void {\r\n  if (this.readyState === CLOSED || this.readyState === CLOSING) return;\r\n  this.readyState = CLOSING;\r\n\r\n  const releaseHandle = () => {\r\n    (this._elHandle as Handle | null)?.close();\r\n    this._elHandle = null;\r\n  };\r\n\r\n  if (this._native) { this._native.close(code, reason); releaseHandle(); return; }\r\n\r\n  // TcpSocket-backed — send close frame\r\n  if (this._tcpSocket) {\r\n    const c = code ?? 1000;\r\n    const closeBuf = new Uint8Array(2);\r\n    closeBuf[0] = (c >> 8) & 0xff;\r\n    closeBuf[1] = c & 0xff;\r\n    const frame = encodeFrame(0x08, closeBuf, false);\r\n    try { this._tcpSocket.write(Buffer.from(frame)); } catch { /* socket may be dead */ }\r\n    const self = this;\r\n    setTimeout(() => {\r\n      self.readyState = CLOSED;\r\n      const ce = new SafeCloseEvent('close', { code: c, reason: reason || '', wasClean: true });\r\n      self.emit('close', ce);\r\n      self.onclose?.(ce);\r\n      self._tcpSocket = null;\r\n      releaseHandle();\r\n    }, 0);\r\n    return;\r\n  }\r\n\r\n  if (internalChannel) {\r\n    internalChannel.postMessage({ kind: 'disconnect', uid: this._uid, url: this.url, code, reason });\r\n  }\r\n\r\n  const self = this;\r\n  setTimeout(() => {\r\n    self.readyState = CLOSED;\r\n    const ce = new SafeCloseEvent('close', { code: code || 1000, reason: reason || '', wasClean: true });\r\n    self.emit('close', ce);\r\n    self.onclose?.(ce);\r\n    releaseHandle();\r\n  }, 0);\r\n};\r\n\r\nWebSocket.prototype.ping = function ping(): void { /* no-op in browser */ };\r\nWebSocket.prototype.pong = function pong(): void { /* no-op in browser */ };\r\n\r\nWebSocket.prototype.terminate = function terminate(this: any): void {\r\n  if (this._native) { this._native.close(); this._native = null; }\r\n  if (this._tcpSocket) { try { this._tcpSocket.destroy(); } catch { /* */ } this._tcpSocket = null; }\r\n  this.readyState = CLOSED;\r\n  (this._elHandle as Handle | null)?.close();\r\n  this._elHandle = null;\r\n  const ce = new SafeCloseEvent('close', { code: 1006, reason: 'Terminated', wasClean: false });\r\n  this.emit('close', ce);\r\n  this.onclose?.(ce);\r\n};\r\n\r\nWebSocket.prototype.ref = function ref(this: any): any {\r\n  (this._elHandle as Handle | null)?.ref();\r\n  return this;\r\n};\r\n\r\nWebSocket.prototype.unref = function unref(this: any): any {\r\n  (this._elHandle as Handle | null)?.unref();\r\n  return this;\r\n};\r\n\r\nWebSocket.prototype._bindServer = function _bindServer(this: any, srv: WebSocketServer): void { this._boundServer = srv; };\r\n\r\nWebSocket.prototype._deliverMessage = function _deliverMessage(this: any, data: unknown): void {\r\n  const me = new SafeMessageEvent('message', { data });\r\n  this.emit('message', me);\r\n  this.onmessage?.(me);\r\n};\r\n\r\n// Sec-WebSocket-Accept key computation (RFC 6455)\r\nconst WS_GUID = '258EAFA5-E914-47DA-95CA-5AB5DC76CB76';\r\n\r\nfunction _computeAcceptKey(wsKey: string): string {\r\n  try {\r\n    const hash = createHash('sha1');\r\n    hash.update(wsKey + WS_GUID);\r\n    return hash.digest('base64') as string;\r\n  } catch {\r\n    // bridge only checks for \"HTTP/1.1 101\", so a placeholder works\r\n    return btoa(wsKey + WS_GUID).slice(0, 28);\r\n  }\r\n}\r\n\r\nexport interface ServerConfig {\r\n  host?: string;\r\n  port?: number;\r\n  server?: unknown;\r\n  noServer?: boolean;\r\n  path?: string;\r\n  clientTracking?: boolean;\r\n  perMessageDeflate?: boolean | object;\r\n  maxPayload?: number;\r\n}\r\n\r\nexport interface WebSocketServer extends TinyEmitter {\r\n  clients: Set<WebSocket>;\r\n  options: ServerConfig;\r\n  _route: string;\r\n  _channelCb: ((ev: MessageEvent) => void) | null;\r\n  _listen(): void;\r\n  _injectClientPayload(source: WebSocket, data: unknown): void;\r\n  handleUpgrade(req: unknown, socket: unknown, head: unknown, done: (ws: WebSocket, req: unknown) => void): void;\r\n  close(done?: () => void): void;\r\n  address(): { port: number; family: string; address: string } | null;\r\n}\r\n\r\ninterface WebSocketServerConstructor {\r\n  new (opts?: ServerConfig): WebSocketServer;\r\n  (this: any, opts?: ServerConfig): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const WebSocketServer = function WebSocketServer(this: any, opts: ServerConfig = {}) {\r\n  if (!this) return;\r\n  TinyEmitter.call(this);\r\n  this.clients = new Set<WebSocket>();\r\n  this.options = opts;\r\n  this._route = opts.path || '/';\r\n  this._channelCb = null;\r\n\r\n  if (!opts.noServer) this._listen();\r\n  activeServers.set(this._route, this);\r\n} as unknown as WebSocketServerConstructor;\r\n\r\nObject.setPrototypeOf(WebSocketServer.prototype, TinyEmitter.prototype);\r\n\r\nWebSocketServer.prototype._listen = function _listen(this: any): void {\r\n  if (!internalChannel) return;\r\n  const chan = internalChannel;\r\n  const self = this;\r\n\r\n  this._channelCb = (ev: MessageEvent) => {\r\n    const d = ev.data;\r\n\r\n    if (d.kind === 'connect') {\r\n      const sock = new WebSocket('internal://' + self._route);\r\n      sock._bindServer(self);\r\n      (sock as unknown as { _uid: string })._uid = d.uid;\r\n      self.clients.add(sock);\r\n      chan.postMessage({ kind: 'connected', targetUid: d.uid });\r\n      self.emit('connection', sock, { url: d.url });\r\n    }\r\n\r\n    if (d.kind === 'payload') {\r\n      for (const c of self.clients) {\r\n        if ((c as unknown as { _uid: string })._uid === d.uid) {\r\n          c._deliverMessage(d.body);\r\n          break;\r\n        }\r\n      }\r\n    }\r\n\r\n    if (d.kind === 'disconnect') {\r\n      for (const c of self.clients) {\r\n        if ((c as unknown as { _uid: string })._uid === d.uid) {\r\n          c.close(d.code, d.reason);\r\n          self.clients.delete(c);\r\n          break;\r\n        }\r\n      }\r\n    }\r\n  };\r\n  chan.addEventListener('message', this._channelCb);\r\n};\r\n\r\nWebSocketServer.prototype._injectClientPayload = function _injectClientPayload(source: WebSocket, data: unknown): void {\r\n  const me = new SafeMessageEvent('message', { data });\r\n  source.emit('message', me);\r\n};\r\n\r\nWebSocketServer.prototype.handleUpgrade = function handleUpgrade(\r\n  this: any,\r\n  req: unknown,\r\n  socket: unknown,\r\n  head: unknown,\r\n  done: (ws: WebSocket, req: unknown) => void,\r\n): void {\r\n  const sock = new WebSocket('internal://' + this._route);\r\n  sock._bindServer(this);\r\n  if (this.options.clientTracking !== false) this.clients.add(sock);\r\n\r\n  // Check if socket is a real TcpSocket (from http.Server.dispatchUpgrade)\r\n  const tcp = socket as TcpSocket | null;\r\n  const isTcp = tcp && typeof tcp.write === 'function' && typeof tcp._feedData === 'function';\r\n  if (isTcp) {\r\n    // Wire the ws.WebSocket to the TcpSocket for frame-level I/O\r\n    sock._tcpSocket = tcp;\r\n\r\n    // Compute Sec-WebSocket-Accept\r\n    const reqHeaders = (req as { headers?: Record<string, string> })?.headers || {};\r\n    const wsKey = reqHeaders['sec-websocket-key'] || '';\r\n    const acceptKey = _computeAcceptKey(wsKey);\r\n\r\n    // Write HTTP 101 Switching Protocols response to the TcpSocket\r\n    // This triggers handshakeDone in the request-proxy bridge\r\n    const handshake = `HTTP/1.1 101 Switching Protocols\\r\\nUpgrade: websocket\\r\\nConnection: Upgrade\\r\\nSec-WebSocket-Accept: ${acceptKey}\\r\\n\\r\\n`;\r\n    tcp.write(Buffer.from(handshake));\r\n\r\n    // Listen for incoming data from the TcpSocket (client→server frames)\r\n    tcp.on('data', (chunk: unknown) => {\r\n      const raw = chunk instanceof Uint8Array ? chunk : new Uint8Array(chunk as ArrayBuffer);\r\n      const merged = new Uint8Array(sock._tcpInboundBuf.length + raw.length);\r\n      merged.set(sock._tcpInboundBuf, 0);\r\n      merged.set(raw, sock._tcpInboundBuf.length);\r\n      sock._tcpInboundBuf = merged;\r\n\r\n      while (sock._tcpInboundBuf.length >= 2) {\r\n        const frame = decodeFrame(sock._tcpInboundBuf);\r\n        if (!frame) break;\r\n        sock._tcpInboundBuf = sock._tcpInboundBuf.slice(frame.consumed);\r\n\r\n        switch (frame.op) {\r\n          case 0x01: { // text\r\n            const text = new TextDecoder().decode(frame.data);\r\n            const me = new SafeMessageEvent('message', { data: text });\r\n            sock.emit('message', me);\r\n            sock.onmessage?.(me);\r\n            break;\r\n          }\r\n          case 0x02: { // binary\r\n            const me = new SafeMessageEvent('message', { data: frame.data.buffer });\r\n            sock.emit('message', me);\r\n            sock.onmessage?.(me);\r\n            break;\r\n          }\r\n          case 0x08: { // close\r\n            const code = frame.data.length >= 2\r\n              ? (frame.data[0] << 8) | frame.data[1]\r\n              : 1000;\r\n            sock.readyState = CLOSED;\r\n            const ce = new SafeCloseEvent('close', { code, reason: '', wasClean: true });\r\n            sock.emit('close', ce);\r\n            sock.onclose?.(ce);\r\n            sock._tcpSocket = null;\r\n            break;\r\n          }\r\n          case 0x09: { // ping — respond with pong\r\n            const pong = encodeFrame(0x0a, frame.data, false);\r\n            tcp.write(Buffer.from(pong));\r\n            break;\r\n          }\r\n          case 0x0a: { // pong\r\n            sock.emit('pong', frame.data);\r\n            break;\r\n          }\r\n        }\r\n      }\r\n    });\r\n\r\n    tcp.on('close', () => {\r\n      if (sock.readyState !== CLOSED) {\r\n        sock.readyState = CLOSED;\r\n        const ce = new SafeCloseEvent('close', { code: 1006, reason: 'Connection lost', wasClean: false });\r\n        sock.emit('close', ce);\r\n        sock.onclose?.(ce);\r\n      }\r\n      sock._tcpSocket = null;\r\n    });\r\n  }\r\n\r\n  const self = this;\r\n  setTimeout(() => {\r\n    done(sock, req);\r\n    self.emit('connection', sock, req);\r\n  }, 0);\r\n};\r\n\r\nWebSocketServer.prototype.close = function close(this: any, done?: (err?: Error) => void): void {\r\n  for (const c of this.clients) c.close(1001, 'Server closing');\r\n  this.clients.clear();\r\n  activeServers.delete(this._route);\r\n  if (this._channelCb && internalChannel) {\r\n    internalChannel.removeEventListener('message', this._channelCb);\r\n    this._channelCb = null;\r\n  }\r\n  this.emit('close');\r\n  if (done) setTimeout(done, 0);\r\n};\r\n\r\nWebSocketServer.prototype.address = function address(this: any): { port: number; family: string; address: string } | null {\r\n  return { port: this.options.port || 0, family: 'IPv4', address: this.options.host || '0.0.0.0' };\r\n};\r\n\r\nexport const Server = WebSocketServer;\r\n\r\nexport const createWebSocketStream = (): never => {\r\n  throw new Error('createWebSocketStream is not available in the browser');\r\n};\r\n\r\nexport default WebSocket;\r\n","// stub - macOS-only native module, no-op in browser\r\n\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Constants                                                          */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const constants = {\r\n  kFSEventStreamEventFlagNone: 0x00000000,\r\n  kFSEventStreamEventFlagMustScanSubDirs: 0x00000001,\r\n  kFSEventStreamEventFlagUserDropped: 0x00000002,\r\n  kFSEventStreamEventFlagKernelDropped: 0x00000004,\r\n  kFSEventStreamEventFlagEventIdsWrapped: 0x00000008,\r\n  kFSEventStreamEventFlagHistoryDone: 0x00000010,\r\n  kFSEventStreamEventFlagRootChanged: 0x00000020,\r\n  kFSEventStreamEventFlagMount: 0x00000040,\r\n  kFSEventStreamEventFlagUnmount: 0x00000080,\r\n  kFSEventStreamEventFlagItemCreated: 0x00000100,\r\n  kFSEventStreamEventFlagItemRemoved: 0x00000200,\r\n  kFSEventStreamEventFlagItemInodeMetaMod: 0x00000400,\r\n  kFSEventStreamEventFlagItemRenamed: 0x00000800,\r\n  kFSEventStreamEventFlagItemModified: 0x00001000,\r\n  kFSEventStreamEventFlagItemFinderInfoMod: 0x00002000,\r\n  kFSEventStreamEventFlagItemChangeOwner: 0x00004000,\r\n  kFSEventStreamEventFlagItemXattrMod: 0x00008000,\r\n  kFSEventStreamEventFlagItemIsFile: 0x00010000,\r\n  kFSEventStreamEventFlagItemIsDir: 0x00020000,\r\n  kFSEventStreamEventFlagItemIsSymlink: 0x00040000,\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  watch                                                              */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport function watch(\r\n  _path: string,\r\n  _handler: (filePath: string, flags: number, id: number) => void,\r\n): () => Promise<void> {\r\n  // Return a stop function that resolves immediately.\r\n  return () => Promise.resolve();\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  getInfo                                                            */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport function getInfo(\r\n  filePath: string,\r\n  flags: number,\r\n): {\r\n  event: string;\r\n  path: string;\r\n  type: string;\r\n  changes: {\r\n    inode: boolean;\r\n    finder: boolean;\r\n    access: boolean;\r\n    xattrs: boolean;\r\n  };\r\n  flags: number;\r\n} {\r\n  return {\r\n    event: \"unknown\",\r\n    path: filePath,\r\n    type: \"file\",\r\n    changes: { inode: false, finder: false, access: false, xattrs: false },\r\n    flags,\r\n  };\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Default export                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport default {\r\n  watch,\r\n  getInfo,\r\n  constants,\r\n};\r\n","// Recursive directory listing polyfill (readdirp-compatible) on MemoryVolume\r\n\r\n\r\nimport type { MemoryVolume, FileStat } from \"../memory-volume\";\r\nimport { setSharedVolume, getSharedVolume } from \"./volume-registry\";\r\n\r\n\r\nexport function setVolume(vol: MemoryVolume): void {\r\n  setSharedVolume(vol);\r\n}\r\n\r\n\r\nexport interface ScanOptions {\r\n  root?: string;\r\n  fileFilter?: string | string[] | ((entry: ScanEntry) => boolean);\r\n  directoryFilter?: string | string[] | ((entry: ScanEntry) => boolean);\r\n  depth?: number;\r\n  type?: \"files\" | \"directories\" | \"files_directories\" | \"all\";\r\n  lstat?: boolean;\r\n  alwaysStat?: boolean;\r\n}\r\n\r\nexport interface ScanEntry {\r\n  path: string;\r\n  fullPath: string;\r\n  basename: string;\r\n  stats?: FileStat;\r\n  dirent?: {\r\n    isFile(): boolean;\r\n    isDirectory(): boolean;\r\n    name: string;\r\n  };\r\n}\r\n\r\n// collects entries synchronously, yields asynchronously\r\n\r\ninterface DirectoryScanner {\r\n  cfg: ScanOptions;\r\n  rootDir: string;\r\n  results: ScanEntry[];\r\n  scanned: boolean;\r\n  handlerMap: Map<string, Array<(...args: unknown[]) => void>>;\r\n  [Symbol.asyncIterator](): AsyncIterableIterator<ScanEntry>;\r\n  toArray(): Promise<ScanEntry[]>;\r\n  on(event: string, handler: (...args: unknown[]) => void): this;\r\n  once(event: string, handler: (...args: unknown[]) => void): this;\r\n  off(event: string, handler: (...args: unknown[]) => void): this;\r\n  fireEvent(event: string, ...args: unknown[]): void;\r\n  runScan(): void;\r\n  crawl(dir: string, level: number, relative: string): void;\r\n  applyFilter(entry: ScanEntry, filter?: string | string[] | ((e: ScanEntry) => boolean)): boolean;\r\n  globMatch(filename: string, pattern: string): boolean;\r\n}\r\n\r\ninterface DirectoryScannerConstructor {\r\n  new (root: string, cfg?: ScanOptions): DirectoryScanner;\r\n  (this: any, root: string, cfg?: ScanOptions): void;\r\n  prototype: any;\r\n}\r\n\r\nconst DirectoryScanner = function DirectoryScanner(this: any, root: string, cfg: ScanOptions = {}) {\r\n  if (!this) return;\r\n  this.rootDir = root;\r\n  this.cfg = cfg;\r\n  this.results = [];\r\n  this.scanned = false;\r\n  this.handlerMap = new Map<string, Array<(...args: unknown[]) => void>>();\r\n} as unknown as DirectoryScannerConstructor;\r\n\r\nDirectoryScanner.prototype[Symbol.asyncIterator] = async function*(this: any): AsyncIterableIterator<ScanEntry> {\r\n  this.runScan();\r\n  for (const entry of this.results) yield entry;\r\n};\r\n\r\nDirectoryScanner.prototype.toArray = async function toArray(this: any): Promise<ScanEntry[]> {\r\n  this.runScan();\r\n  return [...this.results];\r\n};\r\n\r\nDirectoryScanner.prototype.on = function on(this: any, event: string, handler: (...args: unknown[]) => void): any {\r\n  if (event === \"data\") {\r\n    setTimeout(() => {\r\n      this.runScan();\r\n      for (const entry of this.results) handler(entry);\r\n      this.fireEvent(\"end\");\r\n    }, 0);\r\n  } else {\r\n    if (!this.handlerMap.has(event)) this.handlerMap.set(event, []);\r\n    this.handlerMap.get(event)!.push(handler);\r\n  }\r\n  return this;\r\n};\r\n\r\nDirectoryScanner.prototype.once = function once(this: any, event: string, handler: (...args: unknown[]) => void): any {\r\n  const self = this;\r\n  const wrapped = (...args: unknown[]) => {\r\n    handler(...args);\r\n    self.off(event, wrapped);\r\n  };\r\n  return this.on(event, wrapped);\r\n};\r\n\r\nDirectoryScanner.prototype.off = function off(this: any, event: string, handler: (...args: unknown[]) => void): any {\r\n  const arr = this.handlerMap.get(event);\r\n  if (arr) {\r\n    const idx = arr.indexOf(handler);\r\n    if (idx !== -1) arr.splice(idx, 1);\r\n  }\r\n  return this;\r\n};\r\n\r\nDirectoryScanner.prototype.fireEvent = function fireEvent(this: any, event: string, ...args: unknown[]): void {\r\n  const arr = this.handlerMap.get(event);\r\n  if (arr) for (const fn of arr) fn(...args);\r\n};\r\n\r\nDirectoryScanner.prototype.runScan = function runScan(this: any): void {\r\n  if (this.scanned) return;\r\n  this.scanned = true;\r\n  this.crawl(this.rootDir, 0, \"\");\r\n};\r\n\r\nDirectoryScanner.prototype.crawl = function crawl(this: any, dir: string, level: number, relative: string): void {\r\n  const vol = getSharedVolume();\r\n  if (!vol) return;\r\n  if (this.cfg.depth !== undefined && level > this.cfg.depth) return;\r\n\r\n  let children: string[];\r\n  try {\r\n    children = vol.readdirSync(dir);\r\n  } catch {\r\n    return;\r\n  }\r\n\r\n  for (const name of children) {\r\n    const absolute = dir === \"/\" ? \"/\" + name : dir + \"/\" + name;\r\n    const rel = relative ? relative + \"/\" + name : name;\r\n\r\n    let st: FileStat;\r\n    try {\r\n      st = vol.statSync(absolute);\r\n    } catch {\r\n      continue;\r\n    }\r\n\r\n    const isDir = st.isDirectory();\r\n\r\n    const entry: ScanEntry = {\r\n      path: rel,\r\n      fullPath: absolute,\r\n      basename: name,\r\n      stats: this.cfg.alwaysStat ? st : undefined,\r\n      dirent: {\r\n        isFile: () => !isDir,\r\n        isDirectory: () => isDir,\r\n        name,\r\n      },\r\n    };\r\n\r\n    const category = this.cfg.type || \"files\";\r\n\r\n    if (isDir) {\r\n      if (!this.applyFilter(entry, this.cfg.directoryFilter)) continue;\r\n\r\n      if (\r\n        category === \"directories\" ||\r\n        category === \"files_directories\" ||\r\n        category === \"all\"\r\n      ) {\r\n        this.results.push(entry);\r\n      }\r\n      this.crawl(absolute, level + 1, rel);\r\n    } else {\r\n      if (\r\n        category === \"files\" ||\r\n        category === \"files_directories\" ||\r\n        category === \"all\"\r\n      ) {\r\n        if (this.applyFilter(entry, this.cfg.fileFilter)) {\r\n          this.results.push(entry);\r\n        }\r\n      }\r\n    }\r\n  }\r\n};\r\n\r\nDirectoryScanner.prototype.applyFilter = function applyFilter(\r\n  this: any,\r\n  entry: ScanEntry,\r\n  filter?: string | string[] | ((e: ScanEntry) => boolean),\r\n): boolean {\r\n  if (!filter) return true;\r\n\r\n  if (typeof filter === \"function\") return filter(entry);\r\n\r\n  const patterns = Array.isArray(filter) ? filter : [filter];\r\n  for (const pat of patterns) {\r\n    if (pat.startsWith(\"!\")) {\r\n      if (this.globMatch(entry.basename, pat.slice(1))) return false;\r\n    } else if (this.globMatch(entry.basename, pat)) {\r\n      return true;\r\n    }\r\n  }\r\n  // If every pattern was a negation and none matched, the entry is allowed\r\n  return patterns.length === 0 || patterns.every((p: string) => p.startsWith(\"!\"));\r\n};\r\n\r\nDirectoryScanner.prototype.globMatch = function globMatch(filename: string, pattern: string): boolean {\r\n  if (pattern === \"*\") return true;\r\n  if (pattern.startsWith(\"*.\")) return filename.endsWith(pattern.slice(1));\r\n  if (pattern.endsWith(\"*\")) return filename.startsWith(pattern.slice(0, -1));\r\n  return filename === pattern;\r\n};\r\n\r\nexport default function readdirp(\r\n  root: string,\r\n  options?: ScanOptions,\r\n): DirectoryScanner {\r\n  return new DirectoryScanner(root, options);\r\n}\r\n\r\nexport async function readdirpPromise(\r\n  root: string,\r\n  options?: ScanOptions,\r\n): Promise<ScanEntry[]> {\r\n  return new DirectoryScanner(root, options).toArray();\r\n}\r\n\r\nexport { readdirp, DirectoryScanner };\r\n","// Module polyfill (builtinModules, createRequire, Module class)\n\nexport const builtinModules: string[] = [\n  \"assert\",\n  \"assert/strict\",\n  \"async_hooks\",\n  \"buffer\",\n  \"child_process\",\n  \"cluster\",\n  \"console\",\n  \"constants\",\n  \"crypto\",\n  \"dgram\",\n  \"diagnostics_channel\",\n  \"dns\",\n  \"dns/promises\",\n  \"domain\",\n  \"events\",\n  \"fs\",\n  \"fs/promises\",\n  \"http\",\n  \"http2\",\n  \"https\",\n  \"inspector\",\n  \"inspector/promises\",\n  \"module\",\n  \"net\",\n  \"os\",\n  \"path\",\n  \"path/posix\",\n  \"path/win32\",\n  \"perf_hooks\",\n  \"process\",\n  \"punycode\",\n  \"querystring\",\n  \"quic\",\n  \"readline\",\n  \"readline/promises\",\n  \"repl\",\n  \"sea\",\n  \"sqlite\",\n  \"stream\",\n  \"stream/consumers\",\n  \"stream/promises\",\n  \"stream/web\",\n  \"string_decoder\",\n  \"sys\",\n  \"test\",\n  \"timers\",\n  \"timers/promises\",\n  \"tls\",\n  \"trace_events\",\n  \"tty\",\n  \"url\",\n  \"util\",\n  \"util/types\",\n  \"v8\",\n  \"vm\",\n  \"wasi\",\n  \"worker_threads\",\n  \"zlib\",\n];\n\nexport function isBuiltin(id: string): boolean {\n  const stripped = id.startsWith(\"node:\") ? id.slice(5) : id;\n  if (builtinModules.includes(stripped)) return true;\n  const slash = stripped.indexOf(\"/\");\n  if (slash !== -1) {\n    return builtinModules.includes(stripped.slice(0, slash));\n  }\n  return false;\n}\n\nexport function createRequire(origin: string): (specifier: string) => unknown {\n  return function requireFrom(specifier: string): unknown {\n    throw new Error(`Cannot resolve module '${specifier}' from '${origin}'`);\n  };\n}\n\nexport const _cache: Record<string, unknown> = {};\n\nexport const _extensions: Record<string, unknown> = {\n  \".js\": () => {},\n  \".json\": () => {},\n  \".node\": () => {},\n};\n\nexport const _pathCache: Record<string, string> = {};\n\nexport function _resolveFilename(\n  request: string,\n  _parent?: unknown,\n  _isMain?: boolean,\n  _options?: unknown,\n): string {\n  return request;\n}\n\nexport function _nodeModulePaths(from: string): string[] {\n  const parts = from.split(\"/\").filter(Boolean);\n  const paths: string[] = [];\n  for (let i = parts.length; i > 0; i--) {\n    const dir = \"/\" + parts.slice(0, i).join(\"/\");\n    if (parts[i - 1] !== \"node_modules\") {\n      paths.push(dir + \"/node_modules\");\n    }\n  }\n  paths.push(\"/node_modules\");\n  return paths;\n}\n\nexport function _load(\n  request: string,\n  _parent?: unknown,\n  _isMain?: boolean,\n): unknown {\n  // wired up by ScriptEngine.buildResolver at runtime\n  throw new Error(`Cannot load module '${request}'`);\n}\n\nexport function _findPath(\n  request: string,\n  _paths?: string[],\n  _isMain?: boolean,\n): string | false {\n  return request;\n}\n\nexport function wrap(script: string): string {\n  return (\n    \"(function (exports, require, module, __filename, __dirname) { \" +\n    script +\n    \"\\n});\"\n  );\n}\n\nexport const wrapper = [\n  \"(function (exports, require, module, __filename, __dirname) { \",\n  \"\\n});\",\n];\n\nexport function syncBuiltinESMExports(): void {\n}\n\n// Node's module.findSourceMap — we don't track source maps, returning\n// undefined is a valid \"no source map found\" answer (Next.js probes this\n// when rendering dev error overlays).\nexport function findSourceMap(_path: string): undefined {\n  return undefined;\n}\n\nexport class SourceMap {\n  payload: unknown;\n  constructor(payload: unknown) {\n    this.payload = payload;\n  }\n  findEntry(_line: number, _column: number): undefined {\n    return undefined;\n  }\n}\n\nexport function Module(this: any, id?: string, parent?: any) {\n  this.id = id || \"\";\n  this.filename = id || \"\";\n  this.loaded = false;\n  this.parent = parent || null;\n  this.children = [];\n  this.exports = {};\n  this.paths = [];\n}\n\n// Next.js accesses Module.prototype.require\nModule.prototype.require = function (specifier: string): unknown {\n  throw new Error(\n    `Cannot resolve module '${specifier}' from '${this.filename}'`,\n  );\n};\n\nModule.prototype.load = function (_filename: string): void {\n  this.loaded = true;\n};\n\nModule.prototype._compile = function (\n  _content: string,\n  _filename: string,\n): void {\n};\n\nModule.createRequire = createRequire;\nModule.builtinModules = builtinModules;\nModule.isBuiltin = isBuiltin;\nModule._cache = _cache;\nModule._extensions = _extensions;\nModule._pathCache = _pathCache;\nModule._resolveFilename = _resolveFilename;\nModule._nodeModulePaths = _nodeModulePaths;\nModule._load = _load;\nModule._findPath = _findPath;\nModule.syncBuiltinESMExports = syncBuiltinESMExports;\nModule.findSourceMap = findSourceMap;\nModule.SourceMap = SourceMap;\nModule.wrap = wrap;\nModule.wrapper = wrapper;\nModule.Module = Module; \nModule.runMain = function () {}; \nModule._preloadModules = function (_requests?: string[]) {}; \nModule._initPaths = function () {}; \nModule.globalPaths = [\"/node_modules\"];\n\nexport default Module;\n","// perf_hooks polyfill wrapping browser Performance API\r\n\r\nexport type MarkResourceTimingFn = (\r\n  timingInfo?: unknown,\r\n  requestedUrl?: unknown,\r\n  initiatorType?: unknown,\r\n  global?: unknown,\r\n  cacheMode?: unknown,\r\n  bodyInfo?: unknown,\r\n  responseStatus?: unknown,\r\n  deliveryType?: unknown,\r\n) => void;\r\n\r\nfunction noopMarkResourceTiming(..._args: unknown[]): void {\r\n  // undici calls this after fetch; browsers lack the node extension.\r\n}\r\n\r\ntype PerfHooksPerformance = Performance & { markResourceTiming: MarkResourceTimingFn };\r\n\r\nfunction createPerformance(): PerfHooksPerformance {\r\n  const base = globalThis.performance;\r\n  const perf = {\r\n    now: () => Date.now(),\r\n    timeOrigin: Date.now(),\r\n    mark: () => {},\r\n    measure: () => {},\r\n    getEntries: () => [] as PerformanceEntry[],\r\n    getEntriesByName: () => [] as PerformanceEntry[],\r\n    getEntriesByType: () => [] as PerformanceEntry[],\r\n    clearMarks: () => {},\r\n    clearMeasures: () => {},\r\n    clearResourceTimings: () => {},\r\n    markResourceTiming: noopMarkResourceTiming,\r\n  } as unknown as PerfHooksPerformance;\r\n  if (base) {\r\n    Object.assign(perf, base);\r\n    perf.markResourceTiming = noopMarkResourceTiming;\r\n  }\r\n  return perf;\r\n}\r\n\r\nexport const performance: PerfHooksPerformance = createPerformance();\r\n\r\n\r\nexport interface TimingEntryList {\r\n  getEntries(): PerformanceEntry[];\r\n  getEntriesByName(name: string, kind?: string): PerformanceEntry[];\r\n  getEntriesByType(kind: string): PerformanceEntry[];\r\n}\r\n\r\nexport interface PerformanceObserver {\r\n  observe(cfg: { entryTypes?: string[]; type?: string }): void;\r\n  disconnect(): void;\r\n  takeRecords(): PerformanceEntry[];\r\n}\r\n\r\nexport const PerformanceObserver = function PerformanceObserver(this: any, fn: (list: TimingEntryList) => void) {\r\n  if (!this) return;\r\n  this._fn = fn;\r\n  this._types = [];\r\n} as unknown as { new(fn: (list: TimingEntryList) => void): PerformanceObserver; prototype: any; supportedEntryTypes: string[] };\r\n\r\nPerformanceObserver.supportedEntryTypes = ['mark', 'measure', 'resource', 'navigation'];\r\n\r\nPerformanceObserver.prototype.observe = function observe(cfg: { entryTypes?: string[]; type?: string }): void {\r\n  this._types = cfg.entryTypes ?? (cfg.type ? [cfg.type] : []);\r\n};\r\n\r\nPerformanceObserver.prototype.disconnect = function disconnect(): void {\r\n  this._types = [];\r\n};\r\n\r\nPerformanceObserver.prototype.takeRecords = function takeRecords(): PerformanceEntry[] {\r\n  return [];\r\n};\r\n\r\n\r\nexport interface TimingHistogram {\r\n  min: number;\r\n  max: number;\r\n  mean: number;\r\n  stddev: number;\r\n  percentiles: Map<number, number>;\r\n  exceeds: number;\r\n  reset(): void;\r\n  percentile(p: number): number;\r\n}\r\n\r\nexport const TimingHistogram = function TimingHistogram(this: any) {\r\n  if (!this) return;\r\n  this.min = 0;\r\n  this.max = 0;\r\n  this.mean = 0;\r\n  this.stddev = 0;\r\n  this.percentiles = new Map<number, number>();\r\n  this.exceeds = 0;\r\n} as unknown as { new(): TimingHistogram; prototype: any };\r\n\r\nTimingHistogram.prototype.reset = function reset(): void {\r\n  this.min = 0;\r\n  this.max = 0;\r\n  this.mean = 0;\r\n  this.stddev = 0;\r\n  this.percentiles.clear();\r\n  this.exceeds = 0;\r\n};\r\n\r\nTimingHistogram.prototype.percentile = function percentile(p: number): number {\r\n  return this.percentiles.get(p) ?? 0;\r\n};\r\n\r\nexport function createHistogram(): TimingHistogram {\r\n  return new TimingHistogram();\r\n}\r\n\r\nexport function monitorEventLoopDelay(\r\n  _opts?: { resolution?: number }\r\n): TimingHistogram {\r\n  return new TimingHistogram();\r\n}\r\n\r\n\r\nexport default {\r\n  performance,\r\n  PerformanceObserver,\r\n  createHistogram,\r\n  monitorEventLoopDelay,\r\n};\r\n","// worker_threads polyfill using fork infrastructure for real Web Workers\r\n// enhanced with generic napi-rs WASI worker support\r\n\r\n\r\nimport { EventEmitter } from \"./events\";\r\nimport { getRegistry, type Handle } from \"../helpers/event-loop\";\r\n\r\n// shared defaults for main thread; child workers get per-engine overrides via buildResolver\r\nexport let isMainThread = true;\r\nexport let parentPort: MessagePort | null = null;\r\nexport let workerData: unknown = null;\r\nexport let threadId = 0;\r\n\r\n// fork callback, set by process-worker-entry.ts\r\n\r\nexport type WorkerThreadForkFn = (\r\n  modulePath: string,\r\n  opts: {\r\n    workerData: unknown;\r\n    threadId: number;\r\n    isEval?: boolean;\r\n    cwd: string;\r\n    env: Record<string, string>;\r\n    onMessage: (data: unknown) => void;\r\n    onError: (err: Error) => void;\r\n    onExit: (code: number) => void;\r\n    onStdout?: (data: string) => void;\r\n    onStderr?: (data: string) => void;\r\n  },\r\n) => {\r\n  postMessage: (data: unknown) => void;\r\n  terminate: () => void;\r\n  requestId: number;\r\n};\r\n\r\nlet _workerThreadForkFn: WorkerThreadForkFn | null = null;\r\n\r\nexport function setWorkerThreadForkCallback(fn: WorkerThreadForkFn): void {\r\n  _workerThreadForkFn = fn;\r\n}\r\n\r\n// script-engine injects a PatchedWorker factory here for napi-rs WASI worker support, factory gets (script, opts) like the constructor\r\nlet _workerConstructorOverride: ((self: any, script: string | URL, opts?: any) => void) | null = null;\r\n\r\nexport function setWorkerConstructorOverride(fn: ((self: any, script: string | URL, opts?: any) => void) | null): void {\r\n  _workerConstructorOverride = fn;\r\n}\r\n\r\nlet _nextThreadId = 1;\r\n\r\n\r\nexport interface MessagePort extends EventEmitter {\r\n  postMessage(_val: unknown, _transfer?: unknown[]): void;\r\n  start(): void;\r\n  close(): void;\r\n  ref(): void;\r\n  unref(): void;\r\n}\r\n\r\ninterface MessagePortConstructor {\r\n  new (): MessagePort;\r\n  (this: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const MessagePort = function MessagePort(this: any) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n  // starts unref'd, node refs on start()\r\n  this._elHandle = null;\r\n} as unknown as MessagePortConstructor;\r\n\r\nObject.setPrototypeOf(MessagePort.prototype, EventEmitter.prototype);\r\n\r\nMessagePort.prototype.postMessage = function postMessage(_val: unknown, _transfer?: unknown[]): void {};\r\nMessagePort.prototype.start = function start(this: any): void {\r\n  if (!this._elHandle) this._elHandle = getRegistry().register(\"MessagePort\");\r\n};\r\nMessagePort.prototype.close = function close(this: any): void {\r\n  (this._elHandle as Handle | null)?.close();\r\n  this._elHandle = null;\r\n};\r\nMessagePort.prototype.ref = function ref(this: any): void {\r\n  if (!this._elHandle) this._elHandle = getRegistry().register(\"MessagePort\");\r\n  else this._elHandle.ref();\r\n};\r\nMessagePort.prototype.unref = function unref(this: any): void {\r\n  (this._elHandle as Handle | null)?.unref();\r\n};\r\n\r\n\r\nexport interface MessageChannel {\r\n  port1: MessagePort;\r\n  port2: MessagePort;\r\n}\r\n\r\ninterface MessageChannelConstructor {\r\n  new (): MessageChannel;\r\n  (this: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const MessageChannel = function MessageChannel(this: any) {\r\n  if (!this) return;\r\n  this.port1 = new MessagePort();\r\n  this.port2 = new MessagePort();\r\n\r\n  // wire the two ports together\r\n  const p1 = this.port1;\r\n  const p2 = this.port2;\r\n  p1.postMessage = (val: unknown) => {\r\n    queueMicrotask(() => p2.emit(\"message\", val));\r\n  };\r\n  p2.postMessage = (val: unknown) => {\r\n    queueMicrotask(() => p1.emit(\"message\", val));\r\n  };\r\n} as unknown as MessageChannelConstructor;\r\n\r\n\r\nexport interface Worker extends EventEmitter {\r\n  threadId: number;\r\n  resourceLimits: object;\r\n  _handle: ReturnType<WorkerThreadForkFn> | null;\r\n  _terminated: boolean;\r\n  _elHandle: Handle | null;\r\n  postMessage(value: unknown, _transferListOrOptions?: unknown): void;\r\n  terminate(): Promise<number>;\r\n  ref(): this;\r\n  unref(): this;\r\n  getHeapSnapshot(): Promise<unknown>;\r\n}\r\n\r\ninterface WorkerConstructor {\r\n  new (\r\n    script: string | URL,\r\n    opts?: {\r\n      workerData?: unknown;\r\n      eval?: boolean;\r\n      env?: Record<string, string> | symbol;\r\n      argv?: string[];\r\n      execArgv?: string[];\r\n      resourceLimits?: Record<string, number>;\r\n      name?: string;\r\n      transferList?: unknown[];\r\n    },\r\n  ): Worker;\r\n  (this: any, script: string | URL, opts?: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Worker = function Worker(\r\n  this: any,\r\n  script: string | URL,\r\n  opts?: {\r\n    workerData?: unknown;\r\n    eval?: boolean;\r\n    env?: Record<string, string> | symbol;\r\n    argv?: string[];\r\n    execArgv?: string[];\r\n    resourceLimits?: Record<string, number>;\r\n    name?: string;\r\n    transferList?: unknown[];\r\n  },\r\n) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n\r\n  this.threadId = _nextThreadId++;\r\n  this.resourceLimits = {};\r\n  this._handle = null;\r\n  this._terminated = false;\r\n  this._elHandle = null;\r\n\r\n  // if override is installed (napi-rs WASI worker factory), delegate — it handles both WASI workers and fork-based fallback\r\n  if (_workerConstructorOverride) {\r\n    _workerConstructorOverride(this, script, opts);\r\n    return;\r\n  }\r\n\r\n  const scriptStr = typeof script === \"string\" ? script : script.href;\r\n  const self = this;\r\n\r\n  if (!_workerThreadForkFn) {\r\n    // no fork callback wired\r\n    queueMicrotask(() => {\r\n      self.emit(\r\n        \"error\",\r\n        new Error(\r\n          \"[Nodepod] worker_threads.Worker requires worker mode. \" +\r\n            \"Ensure the process is running in a worker context.\",\r\n        ),\r\n      );\r\n    });\r\n    return;\r\n  }\r\n\r\n  const workerDataVal = opts?.workerData ?? null;\r\n  const isEval = !!opts?.eval;\r\n  const env =\r\n    opts?.env && typeof opts.env !== \"symbol\"\r\n      ? (opts.env as Record<string, string>)\r\n      : {};\r\n\r\n  const handle = _workerThreadForkFn(scriptStr, {\r\n    workerData: workerDataVal,\r\n    threadId: this.threadId,\r\n    isEval,\r\n    cwd: (globalThis as any).process?.cwd?.() ?? \"/\",\r\n    env,\r\n    onMessage: (data: unknown) => {\r\n      self.emit(\"message\", data);\r\n    },\r\n    onError: (err: Error) => {\r\n      self.emit(\"error\", err);\r\n    },\r\n    onExit: (code: number) => {\r\n      self._elHandle?.close();\r\n      self._elHandle = null;\r\n      self._terminated = true;\r\n      self.emit(\"exit\", code);\r\n    },\r\n    onStdout: (data: string) => {\r\n        const sink = (globalThis as any).process?.stdout?.write;\r\n      if (typeof sink === \"function\") sink.call((globalThis as any).process.stdout, data);\r\n    },\r\n    onStderr: (data: string) => {\r\n      const sink = (globalThis as any).process?.stderr?.write;\r\n      if (typeof sink === \"function\") sink.call((globalThis as any).process.stderr, data);\r\n    },\r\n  });\r\n\r\n  this._handle = handle;\r\n\r\n  // workers are refed by default in node, keeps parent alive\r\n  this._elHandle = getRegistry().register(\"Worker\");\r\n\r\n  queueMicrotask(() => {\r\n    if (!self._terminated) self.emit(\"online\");\r\n  });\r\n} as unknown as WorkerConstructor;\r\n\r\nObject.setPrototypeOf(Worker.prototype, EventEmitter.prototype);\r\n\r\nWorker.prototype.postMessage = function postMessage(this: any, value: unknown, _transferListOrOptions?: unknown): void {\r\n  if (this._handle && !this._terminated) {\r\n    this._handle.postMessage(value);\r\n  }\r\n};\r\n\r\nWorker.prototype.terminate = function terminate(this: any): Promise<number> {\r\n  if (this._handle && !this._terminated) {\r\n    this._elHandle?.close();\r\n    this._elHandle = null;\r\n    this._terminated = true;\r\n    this._handle.terminate();\r\n  }\r\n  return Promise.resolve(0);\r\n};\r\n\r\nWorker.prototype.ref = function ref(this: any): any {\r\n  if (!this._terminated) (this._elHandle as Handle | null)?.ref();\r\n  return this;\r\n};\r\n\r\nWorker.prototype.unref = function unref(this: any): any {\r\n  (this._elHandle as Handle | null)?.unref();\r\n  return this;\r\n};\r\n\r\nWorker.prototype.getHeapSnapshot = function getHeapSnapshot(): Promise<unknown> {\r\n  return Promise.resolve({});\r\n};\r\n\r\n// direct onmessage/onerror/onexit setters, napi-rs .wasi.cjs loaders use worker.onmessage = ... instead of .on('message', ...)\r\n//\r\n// CRITICAL: the onmessage setter must NOT add an EventEmitter listener\r\n// emnapi (ENVIRONMENT_IS_NODE=true) already calls worker.on('message', data => worker.onmessage?.({data}))\r\n// if this setter ALSO added a listener, each message would fire twice. for 'spawn-thread' that means\r\n// duplicate workers calling wasi_thread_start with the same startArg, then TLS corruption / \"current thread handle already set\"\r\n// fix: setter just stores the handler, emnapi's explicit on('message') dispatches exactly once\r\n{\r\n  const _onmessageSym = Symbol(\"onmessage\");\r\n  Object.defineProperty(Worker.prototype, \"onmessage\", {\r\n    get() { return this[_onmessageSym] ?? null; },\r\n    set(fn: Function | null) {\r\n      this[_onmessageSym] = fn;\r\n      // do NOT add as EventEmitter listener, emnapi's worker.on('message') already calls worker.onmessage()\r\n    },\r\n    configurable: true,\r\n  });\r\n\r\n  const _onerrorSym = Symbol(\"onerror\");\r\n  Object.defineProperty(Worker.prototype, \"onerror\", {\r\n    get() { return this[_onerrorSym] ?? null; },\r\n    set(fn: Function | null) {\r\n      this[_onerrorSym] = fn;\r\n      // same as onmessage, do NOT add as EventEmitter listener\r\n    },\r\n    configurable: true,\r\n  });\r\n\r\n  const _onexitSym = Symbol(\"onexit\");\r\n  Object.defineProperty(Worker.prototype, \"onexit\", {\r\n    get() { return this[_onexitSym] ?? null; },\r\n    set(fn: Function | null) {\r\n      if (this[_onexitSym]) this.off(\"exit\", this[_onexitSym]);\r\n      this[_onexitSym] = fn;\r\n      if (fn) this.on(\"exit\", fn);\r\n    },\r\n    configurable: true,\r\n  });\r\n}\r\n\r\n\r\nexport interface BroadcastChannel extends EventEmitter {\r\n  name: string;\r\n  postMessage(_msg: unknown): void;\r\n  close(): void;\r\n  ref(): void;\r\n  unref(): void;\r\n}\r\n\r\ninterface BroadcastChannelConstructor {\r\n  new (label: string): BroadcastChannel;\r\n  (this: any, label: string): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const BroadcastChannel = function BroadcastChannel(this: any, label: string) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n  this.name = label;\r\n  this._elHandle = getRegistry().register(\"BroadcastChannel\");\r\n} as unknown as BroadcastChannelConstructor;\r\n\r\nObject.setPrototypeOf(BroadcastChannel.prototype, EventEmitter.prototype);\r\n\r\nBroadcastChannel.prototype.postMessage = function postMessage(_msg: unknown): void {};\r\nBroadcastChannel.prototype.close = function close(this: any): void {\r\n  (this._elHandle as Handle | null)?.close();\r\n  this._elHandle = null;\r\n};\r\nBroadcastChannel.prototype.ref = function ref(this: any): void {\r\n  (this._elHandle as Handle | null)?.ref();\r\n};\r\nBroadcastChannel.prototype.unref = function unref(this: any): void {\r\n  (this._elHandle as Handle | null)?.unref();\r\n};\r\n\r\n\r\nexport function moveMessagePortToContext(\r\n  port: MessagePort,\r\n  _ctx: unknown,\r\n): MessagePort {\r\n  return port;\r\n}\r\n\r\nexport function receiveMessageOnPort(\r\n  _port: MessagePort,\r\n): { message: unknown } | undefined {\r\n  return undefined;\r\n}\r\n\r\nexport const SHARE_ENV = Symbol.for(\"nodejs.worker_threads.SHARE_ENV\");\r\n\r\nexport function markAsUntransferable(_obj: unknown): void {}\r\nexport function getEnvironmentData(_key: unknown): unknown {\r\n  return undefined;\r\n}\r\nexport function setEnvironmentData(_key: unknown, _val: unknown): void {}\r\n\r\n\r\nexport default {\r\n  isMainThread,\r\n  parentPort,\r\n  workerData,\r\n  threadId,\r\n  Worker,\r\n  MessageChannel,\r\n  MessagePort,\r\n  BroadcastChannel,\r\n  moveMessagePortToContext,\r\n  receiveMessageOnPort,\r\n  SHARE_ENV,\r\n  markAsUntransferable,\r\n  getEnvironmentData,\r\n  setEnvironmentData,\r\n  setWorkerThreadForkCallback,\r\n  setWorkerConstructorOverride,\r\n};\r\n","// Single esbuild-wasm instance per realm. Both the `esbuild` polyfill and\r\n// the install-time module transformer used to boot their own copy of the\r\n// ~10MB binary; this module owns the one shared init promise, stored on\r\n// globalThis so duplicate bundle copies of this file still converge.\r\n\r\nimport { CDN_ESBUILD_ESM, CDN_ESBUILD_BINARY, cdnImport } from \"../constants/cdn-urls\";\r\n\r\nexport type EsbuildEngine = typeof import(\"esbuild-wasm\");\r\n\r\ninterface EsbuildGlobal {\r\n  __nodepodEsbuild?: Promise<EsbuildEngine>;\r\n  __nodepodEsbuildReady?: EsbuildEngine;\r\n  __esbuild?: EsbuildEngine;\r\n}\r\n\r\n/**\r\n * Get (initializing on first call) the realm-wide esbuild-wasm instance.\r\n * A host page may pre-provide its own instance on `globalThis.__esbuild`.\r\n * Failed initialization clears the shared promise so callers can retry.\r\n */\r\nexport function getEsbuild(opts?: { wasmURL?: string }): Promise<EsbuildEngine> {\r\n  const g = globalThis as EsbuildGlobal;\r\n\r\n  if (g.__nodepodEsbuild) return g.__nodepodEsbuild;\r\n\r\n  if (g.__esbuild) {\r\n    g.__nodepodEsbuildReady = g.__esbuild;\r\n    g.__nodepodEsbuild = Promise.resolve(g.__esbuild);\r\n    return g.__nodepodEsbuild;\r\n  }\r\n\r\n  g.__nodepodEsbuild = (async () => {\r\n    try {\r\n      const loaded = await cdnImport(CDN_ESBUILD_ESM);\r\n      const engine: EsbuildEngine = loaded.default || loaded;\r\n      try {\r\n        await engine.initialize({ wasmURL: opts?.wasmURL || CDN_ESBUILD_BINARY });\r\n      } catch (initErr) {\r\n        if (\r\n          !(\r\n            initErr instanceof Error &&\r\n            initErr.message.includes('Cannot call \"initialize\" more than once')\r\n          )\r\n        ) {\r\n          throw initErr;\r\n        }\r\n      }\r\n      g.__nodepodEsbuildReady = engine;\r\n      return engine;\r\n    } catch (err) {\r\n      g.__nodepodEsbuild = undefined;\r\n      throw new Error(`esbuild: initialization failed -- ${err}`);\r\n    }\r\n  })();\r\n\r\n  return g.__nodepodEsbuild;\r\n}\r\n\r\n/** The initialized instance, or null if init hasn't completed yet. */\r\nexport function getEsbuildIfReady(): EsbuildEngine | null {\r\n  return (globalThis as EsbuildGlobal).__nodepodEsbuildReady ?? null;\r\n}\r\n","// This file was generated. Do not modify manually!\nvar astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\n// This file was generated. Do not modify manually!\nvar astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range.\n\n// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n  3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n  5: \"class enum extends super const export import\",\n  6: \"enum\",\n  strict: \"implements interface let package private protected public static yield\",\n  strictBind: \"eval arguments\"\n};\n\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords$1 = {\n  5: ecma5AndLessKeywords,\n  \"5module\": ecma5AndLessKeywords + \" export import\",\n  6: ecma5AndLessKeywords + \" const class extends export import super\"\n};\n\nvar keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n  var pos = 0x10000;\n  for (var i = 0; i < set.length; i += 2) {\n    pos += set[i];\n    if (pos > code) { return false }\n    pos += set[i + 1];\n    if (pos >= code) { return true }\n  }\n  return false\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n  if (code < 65) { return code === 36 }\n  if (code < 91) { return true }\n  if (code < 97) { return code === 95 }\n  if (code < 123) { return true }\n  if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n  if (astral === false) { return false }\n  return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n  if (code < 48) { return code === 36 }\n  if (code < 58) { return true }\n  if (code < 65) { return false }\n  if (code < 91) { return true }\n  if (code < 97) { return code === 95 }\n  if (code < 123) { return true }\n  if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n  if (astral === false) { return false }\n  return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n  if ( conf === void 0 ) conf = {};\n\n  this.label = label;\n  this.keyword = conf.keyword;\n  this.beforeExpr = !!conf.beforeExpr;\n  this.startsExpr = !!conf.startsExpr;\n  this.isLoop = !!conf.isLoop;\n  this.isAssign = !!conf.isAssign;\n  this.prefix = !!conf.prefix;\n  this.postfix = !!conf.postfix;\n  this.binop = conf.binop || null;\n  this.updateContext = null;\n};\n\nfunction binop(name, prec) {\n  return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nvar beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true};\n\n// Map keyword names to token types.\n\nvar keywords = {};\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n  if ( options === void 0 ) options = {};\n\n  options.keyword = name;\n  return keywords[name] = new TokenType(name, options)\n}\n\nvar types$1 = {\n  num: new TokenType(\"num\", startsExpr),\n  regexp: new TokenType(\"regexp\", startsExpr),\n  string: new TokenType(\"string\", startsExpr),\n  name: new TokenType(\"name\", startsExpr),\n  privateId: new TokenType(\"privateId\", startsExpr),\n  eof: new TokenType(\"eof\"),\n\n  // Punctuation token types.\n  bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n  bracketR: new TokenType(\"]\"),\n  braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n  braceR: new TokenType(\"}\"),\n  parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n  parenR: new TokenType(\")\"),\n  comma: new TokenType(\",\", beforeExpr),\n  semi: new TokenType(\";\", beforeExpr),\n  colon: new TokenType(\":\", beforeExpr),\n  dot: new TokenType(\".\"),\n  question: new TokenType(\"?\", beforeExpr),\n  questionDot: new TokenType(\"?.\"),\n  arrow: new TokenType(\"=>\", beforeExpr),\n  template: new TokenType(\"template\"),\n  invalidTemplate: new TokenType(\"invalidTemplate\"),\n  ellipsis: new TokenType(\"...\", beforeExpr),\n  backQuote: new TokenType(\"`\", startsExpr),\n  dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n  // Operators. These carry several kinds of properties to help the\n  // parser use them properly (the presence of these properties is\n  // what categorizes them as operators).\n  //\n  // `binop`, when present, specifies that this operator is a binary\n  // operator, and will refer to its precedence.\n  //\n  // `prefix` and `postfix` mark the operator as a prefix or postfix\n  // unary operator.\n  //\n  // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n  // binary operators with a very low precedence, that should result\n  // in AssignmentExpression nodes.\n\n  eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n  assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n  incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n  prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n  logicalOR: binop(\"||\", 1),\n  logicalAND: binop(\"&&\", 2),\n  bitwiseOR: binop(\"|\", 3),\n  bitwiseXOR: binop(\"^\", 4),\n  bitwiseAND: binop(\"&\", 5),\n  equality: binop(\"==/!=/===/!==\", 6),\n  relational: binop(\"</>/<=/>=\", 7),\n  bitShift: binop(\"<</>>/>>>\", 8),\n  plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n  modulo: binop(\"%\", 10),\n  star: binop(\"*\", 10),\n  slash: binop(\"/\", 10),\n  starstar: new TokenType(\"**\", {beforeExpr: true}),\n  coalesce: binop(\"??\", 1),\n\n  // Keyword token types.\n  _break: kw(\"break\"),\n  _case: kw(\"case\", beforeExpr),\n  _catch: kw(\"catch\"),\n  _continue: kw(\"continue\"),\n  _debugger: kw(\"debugger\"),\n  _default: kw(\"default\", beforeExpr),\n  _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n  _else: kw(\"else\", beforeExpr),\n  _finally: kw(\"finally\"),\n  _for: kw(\"for\", {isLoop: true}),\n  _function: kw(\"function\", startsExpr),\n  _if: kw(\"if\"),\n  _return: kw(\"return\", beforeExpr),\n  _switch: kw(\"switch\"),\n  _throw: kw(\"throw\", beforeExpr),\n  _try: kw(\"try\"),\n  _var: kw(\"var\"),\n  _const: kw(\"const\"),\n  _while: kw(\"while\", {isLoop: true}),\n  _with: kw(\"with\"),\n  _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n  _this: kw(\"this\", startsExpr),\n  _super: kw(\"super\", startsExpr),\n  _class: kw(\"class\", startsExpr),\n  _extends: kw(\"extends\", beforeExpr),\n  _export: kw(\"export\"),\n  _import: kw(\"import\", startsExpr),\n  _null: kw(\"null\", startsExpr),\n  _true: kw(\"true\", startsExpr),\n  _false: kw(\"false\", startsExpr),\n  _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n  _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n  _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n  _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n  _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n};\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nfunction isNewLine(code) {\n  return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n}\n\nfunction nextLineBreak(code, from, end) {\n  if ( end === void 0 ) end = code.length;\n\n  for (var i = from; i < end; i++) {\n    var next = code.charCodeAt(i);\n    if (isNewLine(next))\n      { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 }\n  }\n  return -1\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nvar ref = Object.prototype;\nvar hasOwnProperty = ref.hasOwnProperty;\nvar toString = ref.toString;\n\nvar hasOwn = Object.hasOwn || (function (obj, propName) { return (\n  hasOwnProperty.call(obj, propName)\n); });\n\nvar isArray = Array.isArray || (function (obj) { return (\n  toString.call(obj) === \"[object Array]\"\n); });\n\nvar regexpCache = Object.create(null);\n\nfunction wordsRegexp(words) {\n  return regexpCache[words] || (regexpCache[words] = new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\"))\n}\n\nfunction codePointToString(code) {\n  // UTF-16 Decoding\n  if (code <= 0xFFFF) { return String.fromCharCode(code) }\n  code -= 0x10000;\n  return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\nvar loneSurrogate = /(?:[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/;\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n  this.line = line;\n  this.column = col;\n};\n\nPosition.prototype.offset = function offset (n) {\n  return new Position(this.line, this.column + n)\n};\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n  this.start = start;\n  this.end = end;\n  if (p.sourceFile !== null) { this.source = p.sourceFile; }\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n  for (var line = 1, cur = 0;;) {\n    var nextBreak = nextLineBreak(input, cur, offset);\n    if (nextBreak < 0) { return new Position(line, offset - cur) }\n    ++line;\n    cur = nextBreak;\n  }\n}\n\n// A second argument must be given to configure the parser process.\n// These options are recognized (only `ecmaVersion` is required):\n\nvar defaultOptions = {\n  // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n  // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10\n  // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `\"latest\"`\n  // (the latest version the library supports). This influences\n  // support for strict mode, the set of reserved words, and support\n  // for new syntax features.\n  ecmaVersion: null,\n  // `sourceType` indicates the mode the code should be parsed in.\n  // Can be either `\"script\"`, `\"module\"` or `\"commonjs\"`. This influences global\n  // strict mode and parsing of `import` and `export` declarations.\n  sourceType: \"script\",\n  // When set to true, enable strict parsing mode even if `sourceType`\n  // is `\"script\"`.\n  strict: false,\n  // `onInsertedSemicolon` can be a callback that will be called when\n  // a semicolon is automatically inserted. It will be passed the\n  // position of the inserted semicolon as an offset, and if\n  // `locations` is enabled, it is given the location as a `{line,\n  // column}` object as second argument.\n  onInsertedSemicolon: null,\n  // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n  // trailing commas.\n  onTrailingComma: null,\n  // By default, reserved words are only enforced if ecmaVersion >= 5.\n  // Set `allowReserved` to a boolean value to explicitly turn this on\n  // an off. When this option has the value \"never\", reserved words\n  // and keywords can also not be used as property names.\n  allowReserved: null,\n  // When enabled, a return at the top level is not considered an\n  // error.\n  allowReturnOutsideFunction: false,\n  // When enabled, import/export statements are not constrained to\n  // appearing at the top of the program, and an import.meta expression\n  // in a script isn't considered an error.\n  allowImportExportEverywhere: false,\n  // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.\n  // When enabled, await identifiers are allowed to appear at the top-level scope,\n  // but they are still not allowed in non-async functions.\n  allowAwaitOutsideFunction: null,\n  // When enabled, super identifiers are not constrained to\n  // appearing in methods and do not raise an error when they appear elsewhere.\n  allowSuperOutsideMethod: null,\n  // When enabled, hashbang directive in the beginning of file is\n  // allowed and treated as a line comment. Enabled by default when\n  // `ecmaVersion` >= 2023.\n  allowHashBang: false,\n  // By default, the parser will verify that private properties are\n  // only used in places where they are valid and have been declared.\n  // Set this to false to turn such checks off.\n  checkPrivateFields: true,\n  // When `locations` is on, `loc` properties holding objects with\n  // `start` and `end` properties in `{line, column}` form (with\n  // line being 1-based and column 0-based) will be attached to the\n  // nodes.\n  locations: false,\n  // A function can be passed as `onToken` option, which will\n  // cause Acorn to call that function with object in the same\n  // format as tokens returned from `tokenizer().getToken()`. Note\n  // that you are not allowed to call the parser from the\n  // callback—that will corrupt its internal state.\n  onToken: null,\n  // A function can be passed as `onComment` option, which will\n  // cause Acorn to call that function with `(block, text, start,\n  // end)` parameters whenever a comment is skipped. `block` is a\n  // boolean indicating whether this is a block (`/* */`) comment,\n  // `text` is the content of the comment, and `start` and `end` are\n  // character offsets that denote the start and end of the comment.\n  // When the `locations` option is on, two more parameters are\n  // passed, the full `{line, column}` locations of the start and\n  // end of the comments. Note that you are not allowed to call the\n  // parser from the callback—that will corrupt its internal state.\n  // When this option has an array as value, objects representing the\n  // comments are pushed to it.\n  onComment: null,\n  // Nodes have their start and end characters offsets recorded in\n  // `start` and `end` properties (directly on the node, rather than\n  // the `loc` object, which holds line/column data. To also add a\n  // [semi-standardized][range] `range` property holding a `[start,\n  // end]` array with the same numbers, set the `ranges` option to\n  // `true`.\n  //\n  // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n  ranges: false,\n  // It is possible to parse multiple files into a single AST by\n  // passing the tree produced by parsing the first file as\n  // `program` option in subsequent parses. This will add the\n  // toplevel forms of the parsed file to the `Program` (top) node\n  // of an existing parse tree.\n  program: null,\n  // When `locations` is on, you can pass this to record the source\n  // file in every node's `loc` object.\n  sourceFile: null,\n  // This value, if given, is stored in every node, whether\n  // `locations` is on or off.\n  directSourceFile: null,\n  // When enabled, parenthesized expressions are represented by\n  // (non-standard) ParenthesizedExpression nodes\n  preserveParens: false\n};\n\n// Interpret and default an options object\n\nvar warnedAboutEcmaVersion = false;\n\nfunction getOptions(opts) {\n  var options = {};\n\n  for (var opt in defaultOptions)\n    { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n  if (options.ecmaVersion === \"latest\") {\n    options.ecmaVersion = 1e8;\n  } else if (options.ecmaVersion == null) {\n    if (!warnedAboutEcmaVersion && typeof console === \"object\" && console.warn) {\n      warnedAboutEcmaVersion = true;\n      console.warn(\"Since Acorn 8.0.0, options.ecmaVersion is required.\\nDefaulting to 2020, but this will stop working in the future.\");\n    }\n    options.ecmaVersion = 11;\n  } else if (options.ecmaVersion >= 2015) {\n    options.ecmaVersion -= 2009;\n  }\n\n  if (options.allowReserved == null)\n    { options.allowReserved = options.ecmaVersion < 5; }\n\n  if (!opts || opts.allowHashBang == null)\n    { options.allowHashBang = options.ecmaVersion >= 14; }\n\n  if (isArray(options.onToken)) {\n    var tokens = options.onToken;\n    options.onToken = function (token) { return tokens.push(token); };\n  }\n  if (isArray(options.onComment))\n    { options.onComment = pushComment(options, options.onComment); }\n\n  if (options.sourceType === \"commonjs\" && options.allowAwaitOutsideFunction)\n    { throw new Error(\"Cannot use allowAwaitOutsideFunction with sourceType: commonjs\") }\n\n  return options\n}\n\nfunction pushComment(options, array) {\n  return function(block, text, start, end, startLoc, endLoc) {\n    var comment = {\n      type: block ? \"Block\" : \"Line\",\n      value: text,\n      start: start,\n      end: end\n    };\n    if (options.locations)\n      { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n    if (options.ranges)\n      { comment.range = [start, end]; }\n    array.push(comment);\n  }\n}\n\n// Each scope gets a bitset that may contain these flags\nvar\n    SCOPE_TOP = 1,\n    SCOPE_FUNCTION = 2,\n    SCOPE_ASYNC = 4,\n    SCOPE_GENERATOR = 8,\n    SCOPE_ARROW = 16,\n    SCOPE_SIMPLE_CATCH = 32,\n    SCOPE_SUPER = 64,\n    SCOPE_DIRECT_SUPER = 128,\n    SCOPE_CLASS_STATIC_BLOCK = 256,\n    SCOPE_CLASS_FIELD_INIT = 512,\n    SCOPE_SWITCH = 1024,\n    SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;\n\nfunction functionFlags(async, generator) {\n  return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal* and declareName to determine the type of a binding\nvar\n    BIND_NONE = 0, // Not a binding\n    BIND_VAR = 1, // Var-style binding\n    BIND_LEXICAL = 2, // Let- or const-style binding\n    BIND_FUNCTION = 3, // Function declaration\n    BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n    BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\nvar Parser = function Parser(options, input, startPos) {\n  this.options = options = getOptions(options);\n  this.sourceFile = options.sourceFile;\n  this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === \"module\" ? \"5module\" : 5]);\n  var reserved = \"\";\n  if (options.allowReserved !== true) {\n    reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3];\n    if (options.sourceType === \"module\") { reserved += \" await\"; }\n  }\n  this.reservedWords = wordsRegexp(reserved);\n  var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n  this.reservedWordsStrict = wordsRegexp(reservedStrict);\n  this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n  this.input = String(input);\n\n  // Used to signal to callers of `readWord1` whether the word\n  // contained any escape sequences. This is needed because words with\n  // escape sequences must not be interpreted as keywords.\n  this.containsEsc = false;\n\n  // Set up token state\n\n  // The current position of the tokenizer in the input.\n  if (startPos) {\n    this.pos = startPos;\n    this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n    this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n  } else {\n    this.pos = this.lineStart = 0;\n    this.curLine = 1;\n  }\n\n  // Properties of the current token:\n  // Its type\n  this.type = types$1.eof;\n  // For tokens that include more information than their type, the value\n  this.value = null;\n  // Its start and end offset\n  this.start = this.end = this.pos;\n  // And, if locations are used, the {line, column} object\n  // corresponding to those offsets\n  this.startLoc = this.endLoc = this.curPosition();\n\n  // Position information for the previous token\n  this.lastTokEndLoc = this.lastTokStartLoc = null;\n  this.lastTokStart = this.lastTokEnd = this.pos;\n\n  // The context stack is used to superficially track syntactic\n  // context to predict whether a regular expression is allowed in a\n  // given position.\n  this.context = this.initialContext();\n  this.exprAllowed = true;\n\n  // Figure out if it's a module code.\n  this.inModule = options.sourceType === \"module\";\n  this.strict = this.inModule || options.strict === true || this.strictDirective(this.pos);\n\n  // Used to signify the start of a potential arrow function\n  this.potentialArrowAt = -1;\n  this.potentialArrowInForAwait = false;\n\n  // Positions to delayed-check that yield/await does not exist in default parameters.\n  this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;\n  // Labels in scope.\n  this.labels = [];\n  // Thus-far undefined exports.\n  this.undefinedExports = Object.create(null);\n\n  // If enabled, skip leading hashbang line.\n  if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n    { this.skipLineComment(2); }\n\n  // Scope tracking for duplicate variable names (see scope.js)\n  this.scopeStack = [];\n  this.enterScope(\n    this.options.sourceType === \"commonjs\"\n      // In commonjs, the top-level scope behaves like a function scope\n      ? SCOPE_FUNCTION\n      : SCOPE_TOP\n  );\n\n  // For RegExp validation\n  this.regexpState = null;\n\n  // The stack of private names.\n  // Each element has two properties: 'declared' and 'used'.\n  // When it exited from the outermost class definition, all used private names must be declared.\n  this.privateNameStack = [];\n};\n\nvar prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowReturn: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },allowUsing: { configurable: true },inClassStaticBlock: { configurable: true } };\n\nParser.prototype.parse = function parse () {\n    var this$1$1 = this;\n\n  var node = this.options.program || this.startNode();\n  this.nextToken();\n  return this.catchStackOverflow(function () { return this$1$1.parseTopLevel(node); })\n};\n\nprototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };\n\nprototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 };\n\nprototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 };\n\nprototypeAccessors.canAwait.get = function () {\n  for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n    var ref = this.scopeStack[i];\n      var flags = ref.flags;\n    if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false }\n    if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 }\n  }\n  return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction\n};\n\nprototypeAccessors.allowReturn.get = function () {\n  if (this.inFunction) { return true }\n  if (this.options.allowReturnOutsideFunction && this.currentVarScope().flags & SCOPE_TOP) { return true }\n  return false\n};\n\nprototypeAccessors.allowSuper.get = function () {\n  var ref = this.currentThisScope();\n    var flags = ref.flags;\n  return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod\n};\n\nprototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };\n\nprototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };\n\nprototypeAccessors.allowNewDotTarget.get = function () {\n  for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n    var ref = this.scopeStack[i];\n      var flags = ref.flags;\n    if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) ||\n        ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true }\n  }\n  return false\n};\n\nprototypeAccessors.allowUsing.get = function () {\n  var ref = this.currentScope();\n    var flags = ref.flags;\n  if (flags & SCOPE_SWITCH) { return false }\n  if (!this.inModule && flags & SCOPE_TOP) { return false }\n  return true\n};\n\nprototypeAccessors.inClassStaticBlock.get = function () {\n  return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0\n};\n\nParser.extend = function extend () {\n    var plugins = [], len = arguments.length;\n    while ( len-- ) plugins[ len ] = arguments[ len ];\n\n  var cls = this;\n  for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); }\n  return cls\n};\n\nParser.parse = function parse (input, options) {\n  return new this(options, input).parse()\n};\n\nParser.parseExpressionAt = function parseExpressionAt (input, pos, options) {\n  var parser = new this(options, input, pos);\n  parser.nextToken();\n  return parser.parseExpression()\n};\n\nParser.tokenizer = function tokenizer (input, options) {\n  return new this(options, input)\n};\n\nObject.defineProperties( Parser.prototype, prototypeAccessors );\n\nvar pp$9 = Parser.prototype;\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:\\\\[^]|[^'\\\\])*?)'|\"((?:\\\\[^]|[^\"\\\\])*?)\")/;\npp$9.strictDirective = function(start) {\n  if (this.options.ecmaVersion < 5) { return false }\n  for (;;) {\n    // Try to find string literal.\n    skipWhiteSpace.lastIndex = start;\n    start += skipWhiteSpace.exec(this.input)[0].length;\n    var match = literal.exec(this.input.slice(start));\n    if (!match) { return false }\n    if ((match[1] || match[2]) === \"use strict\") {\n      skipWhiteSpace.lastIndex = start + match[0].length;\n      var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length;\n      var next = this.input.charAt(end);\n      return next === \";\" || next === \"}\" ||\n        (lineBreak.test(spaceAfter[0]) &&\n         !(/[(`.[+\\-/*%<>=,?^&]/.test(next) || next === \"!\" && this.input.charAt(end + 1) === \"=\"))\n    }\n    start += match[0].length;\n\n    // Skip semicolon, if any.\n    skipWhiteSpace.lastIndex = start;\n    start += skipWhiteSpace.exec(this.input)[0].length;\n    if (this.input[start] === \";\")\n      { start++; }\n  }\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp$9.eat = function(type) {\n  if (this.type === type) {\n    this.next();\n    return true\n  } else {\n    return false\n  }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp$9.isContextual = function(name) {\n  return this.type === types$1.name && this.value === name && !this.containsEsc\n};\n\n// Consumes contextual keyword if possible.\n\npp$9.eatContextual = function(name) {\n  if (!this.isContextual(name)) { return false }\n  this.next();\n  return true\n};\n\npp$9.catchStackOverflow = function(f) {\n  try {\n    return f()\n  } catch (e) {\n    if (e instanceof Error && (/\\bstack\\b.*\\b(exceeded|overflow)\\b/i.test(e.message) || /\\btoo much recursion\\b/i.test(e.message)))\n      { this.raise(this.start, \"Not enough stack space to parse input\"); }\n    else\n      { throw e }\n  }\n};\n\n// Asserts that following token is given contextual keyword.\n\npp$9.expectContextual = function(name) {\n  if (!this.eatContextual(name)) { this.unexpected(); }\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp$9.canInsertSemicolon = function() {\n  return this.type === types$1.eof ||\n    this.type === types$1.braceR ||\n    lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\npp$9.insertSemicolon = function() {\n  if (this.canInsertSemicolon()) {\n    if (this.options.onInsertedSemicolon)\n      { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n    return true\n  }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp$9.semicolon = function() {\n  if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); }\n};\n\npp$9.afterTrailingComma = function(tokType, notNext) {\n  if (this.type === tokType) {\n    if (this.options.onTrailingComma)\n      { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n    if (!notNext)\n      { this.next(); }\n    return true\n  }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp$9.expect = function(type) {\n  this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp$9.unexpected = function(pos) {\n  this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\nvar DestructuringErrors = function DestructuringErrors() {\n  this.shorthandAssign =\n  this.trailingComma =\n  this.parenthesizedAssign =\n  this.parenthesizedBind =\n  this.doubleProto =\n    -1;\n};\n\npp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n  if (!refDestructuringErrors) { return }\n  if (refDestructuringErrors.trailingComma > -1)\n    { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n  var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n  if (parens > -1) { this.raiseRecoverable(parens, isAssign ? \"Assigning to rvalue\" : \"Parenthesized pattern\"); }\n};\n\npp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n  if (!refDestructuringErrors) { return false }\n  var shorthandAssign = refDestructuringErrors.shorthandAssign;\n  var doubleProto = refDestructuringErrors.doubleProto;\n  if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n  if (shorthandAssign >= 0)\n    { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n  if (doubleProto >= 0)\n    { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n};\n\npp$9.checkYieldAwaitInDefaultParams = function() {\n  if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n    { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n  if (this.awaitPos)\n    { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n};\n\npp$9.isSimpleAssignTarget = function(expr) {\n  if (expr.type === \"ParenthesizedExpression\")\n    { return this.isSimpleAssignTarget(expr.expression) }\n  return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n};\n\nvar pp$8 = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node.  Optionally takes a\n// `program` argument.  If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$8.parseTopLevel = function(node) {\n  var exports$1 = Object.create(null);\n  if (!node.body) { node.body = []; }\n  while (this.type !== types$1.eof) {\n    var stmt = this.parseStatement(null, true, exports$1);\n    node.body.push(stmt);\n  }\n  if (this.inModule)\n    { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1)\n      {\n        var name = list[i];\n\n        this.raiseRecoverable(this.undefinedExports[name].start, (\"Export '\" + name + \"' is not defined\"));\n      } }\n  this.adaptDirectivePrologue(node.body);\n  this.next();\n  node.sourceType = this.options.sourceType === \"commonjs\" ? \"script\" : this.options.sourceType;\n  return this.finishNode(node, \"Program\")\n};\n\nvar loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\npp$8.isLet = function(context) {\n  if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n  skipWhiteSpace.lastIndex = this.pos;\n  var skip = skipWhiteSpace.exec(this.input);\n  var next = this.pos + skip[0].length, nextCh = this.fullCharCodeAt(next);\n  // For ambiguous cases, determine if a LexicalDeclaration (or only a\n  // Statement) is allowed here. If context is not empty then only a Statement\n  // is allowed. However, `let [` is an explicit negative lookahead for\n  // ExpressionStatement, so special-case it first.\n  if (nextCh === 91 || nextCh === 92) { return true } // '[', '\\'\n  if (context) { return false }\n\n  if (nextCh === 123) { return true } // '{'\n  if (isIdentifierStart(nextCh)) {\n    var start = next;\n    do { next += nextCh <= 0xffff ? 1 : 2; }\n    while (isIdentifierChar(nextCh = this.fullCharCodeAt(next)))\n    if (nextCh === 92) { return true }\n    var ident = this.input.slice(start, next);\n    if (!keywordRelationalOperator.test(ident)) { return true }\n  }\n  return false\n};\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$8.isAsyncFunction = function() {\n  if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n    { return false }\n\n  skipWhiteSpace.lastIndex = this.pos;\n  var skip = skipWhiteSpace.exec(this.input);\n  var next = this.pos + skip[0].length, after;\n  return !lineBreak.test(this.input.slice(this.pos, next)) &&\n    this.input.slice(next, next + 8) === \"function\" &&\n    (next + 8 === this.input.length ||\n     !(isIdentifierChar(after = this.fullCharCodeAt(next + 8)) || after === 92 /* '\\' */))\n};\n\npp$8.isUsingKeyword = function(isAwaitUsing, isFor) {\n  if (this.options.ecmaVersion < 17 || !this.isContextual(isAwaitUsing ? \"await\" : \"using\"))\n    { return false }\n\n  skipWhiteSpace.lastIndex = this.pos;\n  var skip = skipWhiteSpace.exec(this.input);\n  var next = this.pos + skip[0].length;\n\n  if (lineBreak.test(this.input.slice(this.pos, next))) { return false }\n\n  if (isAwaitUsing) {\n    var usingEndPos = next + 5 /* using */, after;\n    if (this.input.slice(next, usingEndPos) !== \"using\" ||\n      usingEndPos === this.input.length ||\n      isIdentifierChar(after = this.fullCharCodeAt(usingEndPos)) ||\n      after === 92 /* '\\' */\n    ) { return false }\n\n    skipWhiteSpace.lastIndex = usingEndPos;\n    var skipAfterUsing = skipWhiteSpace.exec(this.input);\n    next = usingEndPos + skipAfterUsing[0].length;\n    if (skipAfterUsing && lineBreak.test(this.input.slice(usingEndPos, next))) { return false }\n  }\n\n  var ch = this.fullCharCodeAt(next);\n  if (!isIdentifierStart(ch) && ch !== 92 /* '\\' */) { return false }\n  var idStart = next;\n  do { next += ch <= 0xffff ? 1 : 2; }\n  while (isIdentifierChar(ch = this.fullCharCodeAt(next)))\n  if (ch === 92) { return true }\n  var id = this.input.slice(idStart, next);\n  if (keywordRelationalOperator.test(id)) { return false }\n  if (isFor && !isAwaitUsing && id === \"of\") {\n    // Look ahead for using declaration with initializer, i.e., `for (using of = ...)`\n    skipWhiteSpace.lastIndex = next;\n    var skipAfterOf = skipWhiteSpace.exec(this.input);\n    next = next + skipAfterOf[0].length;\n    if (this.input.charCodeAt(next) !== 61 /* '=' */ ||\n      // Check for ==, === and => operators\n      (ch = this.input.charCodeAt(next + 1)) === 61 /* '=' */ || ch === 62 /* '>' */) {\n      return false\n    }\n  }\n  return true\n};\n\npp$8.isAwaitUsing = function(isFor) {\n  return this.isUsingKeyword(true, isFor)\n};\n\npp$8.isUsing = function(isFor) {\n  return this.isUsingKeyword(false, isFor)\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$8.parseStatement = function(context, topLevel, exports$1) {\n  var starttype = this.type, node = this.startNode(), kind;\n\n  if (this.isLet(context)) {\n    starttype = types$1._var;\n    kind = \"let\";\n  }\n\n  // Most types of statements are recognized by the keyword they\n  // start with. Many are trivial to parse, some require a bit of\n  // complexity.\n\n  switch (starttype) {\n  case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n  case types$1._debugger: return this.parseDebuggerStatement(node)\n  case types$1._do: return this.parseDoStatement(node)\n  case types$1._for: return this.parseForStatement(node)\n  case types$1._function:\n    // Function as sole body of either an if statement or a labeled statement\n    // works, but not when it is part of a labeled statement that is the sole\n    // body of an if statement.\n    if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) { this.unexpected(); }\n    return this.parseFunctionStatement(node, false, !context)\n  case types$1._class:\n    if (context) { this.unexpected(); }\n    return this.parseClass(node, true)\n  case types$1._if: return this.parseIfStatement(node)\n  case types$1._return: return this.parseReturnStatement(node)\n  case types$1._switch: return this.parseSwitchStatement(node)\n  case types$1._throw: return this.parseThrowStatement(node)\n  case types$1._try: return this.parseTryStatement(node)\n  case types$1._const: case types$1._var:\n    kind = kind || this.value;\n    if (context && kind !== \"var\") { this.unexpected(); }\n    return this.parseVarStatement(node, kind)\n  case types$1._while: return this.parseWhileStatement(node)\n  case types$1._with: return this.parseWithStatement(node)\n  case types$1.braceL: return this.parseBlock(true, node)\n  case types$1.semi: return this.parseEmptyStatement(node)\n  case types$1._export:\n  case types$1._import:\n    if (this.options.ecmaVersion > 10 && starttype === types$1._import) {\n      skipWhiteSpace.lastIndex = this.pos;\n      var skip = skipWhiteSpace.exec(this.input);\n      var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n      if (nextCh === 40 || nextCh === 46) // '(' or '.'\n        { return this.parseExpressionStatement(node, this.parseExpression()) }\n    }\n\n    if (!this.options.allowImportExportEverywhere) {\n      if (!topLevel)\n        { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n      if (!this.inModule)\n        { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n    }\n    return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports$1)\n\n    // If the statement does not start with a statement keyword or a\n    // brace, it's an ExpressionStatement or LabeledStatement. We\n    // simply start parsing an expression, and afterwards, if the\n    // next token is a colon and the expression was a simple\n    // Identifier node, we switch to interpreting it as a label.\n  default:\n    if (this.isAsyncFunction()) {\n      if (context) { this.unexpected(); }\n      this.next();\n      return this.parseFunctionStatement(node, true, !context)\n    }\n\n    var usingKind = this.isAwaitUsing(false) ? \"await using\" : this.isUsing(false) ? \"using\" : null;\n    if (usingKind) {\n      if (!this.allowUsing) {\n        this.raise(this.start, \"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement\");\n      }\n      if (context) {\n        // Cases like `for (;;) using x = ...;`, `if (true) await using x = ...;`, etc. are not allowed.\n        this.raise(this.start, \"Using declaration is not allowed in single-statement positions\");\n      }\n      if (usingKind === \"await using\") {\n        if (!this.canAwait) {\n          this.raise(this.start, \"Await using cannot appear outside of async function\");\n        }\n        this.next();\n      }\n      this.next();\n      this.parseVar(node, false, usingKind);\n      this.semicolon();\n      return this.finishNode(node, \"VariableDeclaration\")\n    }\n\n    var maybeName = this.value, expr = this.parseExpression();\n    if (starttype === types$1.name && expr.type === \"Identifier\" && this.eat(types$1.colon))\n      { return this.parseLabeledStatement(node, maybeName, expr, context) }\n    else { return this.parseExpressionStatement(node, expr) }\n  }\n};\n\npp$8.parseBreakContinueStatement = function(node, keyword) {\n  var isBreak = keyword === \"break\";\n  this.next();\n  if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; }\n  else if (this.type !== types$1.name) { this.unexpected(); }\n  else {\n    node.label = this.parseIdent();\n    this.semicolon();\n  }\n\n  // Verify that there is an actual destination to break or\n  // continue to.\n  var i = 0;\n  for (; i < this.labels.length; ++i) {\n    var lab = this.labels[i];\n    if (node.label == null || lab.name === node.label.name) {\n      if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n      if (node.label && isBreak) { break }\n    }\n  }\n  if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n  return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n};\n\npp$8.parseDebuggerStatement = function(node) {\n  this.next();\n  this.semicolon();\n  return this.finishNode(node, \"DebuggerStatement\")\n};\n\npp$8.parseDoStatement = function(node) {\n  this.next();\n  this.labels.push(loopLabel);\n  node.body = this.parseStatement(\"do\");\n  this.labels.pop();\n  this.expect(types$1._while);\n  node.test = this.parseParenExpression();\n  if (this.options.ecmaVersion >= 6)\n    { this.eat(types$1.semi); }\n  else\n    { this.semicolon(); }\n  return this.finishNode(node, \"DoWhileStatement\")\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$8.parseForStatement = function(node) {\n  this.next();\n  var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n  this.labels.push(loopLabel);\n  this.enterScope(0);\n  this.expect(types$1.parenL);\n  if (this.type === types$1.semi) {\n    if (awaitAt > -1) { this.unexpected(awaitAt); }\n    return this.parseFor(node, null)\n  }\n  var isLet = this.isLet();\n  if (this.type === types$1._var || this.type === types$1._const || isLet) {\n    var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n    this.next();\n    this.parseVar(init$1, true, kind);\n    this.finishNode(init$1, \"VariableDeclaration\");\n    return this.parseForAfterInit(node, init$1, awaitAt)\n  }\n  var startsWithLet = this.isContextual(\"let\"), isForOf = false;\n\n  var usingKind = this.isUsing(true) ? \"using\" : this.isAwaitUsing(true) ? \"await using\" : null;\n  if (usingKind) {\n    var init$2 = this.startNode();\n    this.next();\n    if (usingKind === \"await using\") {\n      if (!this.canAwait) {\n        this.raise(this.start, \"Await using cannot appear outside of async function\");\n      }\n      this.next();\n    }\n    this.parseVar(init$2, true, usingKind);\n    this.finishNode(init$2, \"VariableDeclaration\");\n    return this.parseForAfterInit(node, init$2, awaitAt)\n  }\n  var containsEsc = this.containsEsc;\n  var refDestructuringErrors = new DestructuringErrors;\n  var initPos = this.start;\n  var init = awaitAt > -1\n    ? this.parseExprSubscripts(refDestructuringErrors, \"await\")\n    : this.parseExpression(true, refDestructuringErrors);\n  if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n    if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt)\n      if (this.type === types$1._in) { this.unexpected(awaitAt); }\n      node.await = true;\n    } else if (isForOf && this.options.ecmaVersion >= 8) {\n      if (init.start === initPos && !containsEsc && init.type === \"Identifier\" && init.name === \"async\") { this.unexpected(); }\n      else if (this.options.ecmaVersion >= 9) { node.await = false; }\n    }\n    if (startsWithLet && isForOf) { this.raise(init.start, \"The left-hand side of a for-of loop may not start with 'let'.\"); }\n    this.toAssignable(init, false, refDestructuringErrors);\n    this.checkLValPattern(init);\n    return this.parseForIn(node, init)\n  } else {\n    this.checkExpressionErrors(refDestructuringErrors, true);\n  }\n  if (awaitAt > -1) { this.unexpected(awaitAt); }\n  return this.parseFor(node, init)\n};\n\n// Helper method to parse for loop after variable initialization\npp$8.parseForAfterInit = function(node, init, awaitAt) {\n  if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init.declarations.length === 1) {\n    if (this.type === types$1._in) {\n      if ((init.kind === \"using\" || init.kind === \"await using\") && !init.declarations[0].init) {\n        this.raise(this.start, \"Using declaration is not allowed in for-in loops\");\n      }\n      if (this.options.ecmaVersion >= 9 && awaitAt > -1) { this.unexpected(awaitAt); }\n    } else if (this.options.ecmaVersion >= 9) { node.await = awaitAt > -1; }\n    return this.parseForIn(node, init)\n  }\n  if (awaitAt > -1) { this.unexpected(awaitAt); }\n  return this.parseFor(node, init)\n};\n\npp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n  this.next();\n  return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n};\n\npp$8.parseIfStatement = function(node) {\n  this.next();\n  node.test = this.parseParenExpression();\n  // allow function declarations in branches, but only in non-strict mode\n  node.consequent = this.parseStatement(\"if\");\n  node.alternate = this.eat(types$1._else) ? this.parseStatement(\"if\") : null;\n  return this.finishNode(node, \"IfStatement\")\n};\n\npp$8.parseReturnStatement = function(node) {\n  if (!this.allowReturn)\n    { this.raise(this.start, \"'return' outside of function\"); }\n  this.next();\n\n  // In `return` (and `break`/`continue`), the keywords with\n  // optional arguments, we eagerly look for a semicolon or the\n  // possibility to insert one.\n\n  if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; }\n  else { node.argument = this.parseExpression(); this.semicolon(); }\n  return this.finishNode(node, \"ReturnStatement\")\n};\n\npp$8.parseSwitchStatement = function(node) {\n  this.next();\n  node.discriminant = this.parseParenExpression();\n  node.cases = [];\n  this.expect(types$1.braceL);\n  this.labels.push(switchLabel);\n  this.enterScope(SCOPE_SWITCH);\n\n  // Statements under must be grouped (by label) in SwitchCase\n  // nodes. `cur` is used to keep the node that we are currently\n  // adding statements to.\n\n  var cur;\n  for (var sawDefault = false; this.type !== types$1.braceR;) {\n    if (this.type === types$1._case || this.type === types$1._default) {\n      var isCase = this.type === types$1._case;\n      if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n      node.cases.push(cur = this.startNode());\n      cur.consequent = [];\n      this.next();\n      if (isCase) {\n        cur.test = this.parseExpression();\n      } else {\n        if (sawDefault) { this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\"); }\n        sawDefault = true;\n        cur.test = null;\n      }\n      this.expect(types$1.colon);\n    } else {\n      if (!cur) { this.unexpected(); }\n      cur.consequent.push(this.parseStatement(null));\n    }\n  }\n  this.exitScope();\n  if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n  this.next(); // Closing brace\n  this.labels.pop();\n  return this.finishNode(node, \"SwitchStatement\")\n};\n\npp$8.parseThrowStatement = function(node) {\n  this.next();\n  if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n    { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n  node.argument = this.parseExpression();\n  this.semicolon();\n  return this.finishNode(node, \"ThrowStatement\")\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty$1 = [];\n\npp$8.parseCatchClauseParam = function() {\n  var param = this.parseBindingAtom();\n  var simple = param.type === \"Identifier\";\n  this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n  this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n  this.expect(types$1.parenR);\n\n  return param\n};\n\npp$8.parseTryStatement = function(node) {\n  this.next();\n  node.block = this.parseBlock();\n  node.handler = null;\n  if (this.type === types$1._catch) {\n    var clause = this.startNode();\n    this.next();\n    if (this.eat(types$1.parenL)) {\n      clause.param = this.parseCatchClauseParam();\n    } else {\n      if (this.options.ecmaVersion < 10) { this.unexpected(); }\n      clause.param = null;\n      this.enterScope(0);\n    }\n    clause.body = this.parseBlock(false);\n    this.exitScope();\n    node.handler = this.finishNode(clause, \"CatchClause\");\n  }\n  node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null;\n  if (!node.handler && !node.finalizer)\n    { this.raise(node.start, \"Missing catch or finally clause\"); }\n  return this.finishNode(node, \"TryStatement\")\n};\n\npp$8.parseVarStatement = function(node, kind, allowMissingInitializer) {\n  this.next();\n  this.parseVar(node, false, kind, allowMissingInitializer);\n  this.semicolon();\n  return this.finishNode(node, \"VariableDeclaration\")\n};\n\npp$8.parseWhileStatement = function(node) {\n  this.next();\n  node.test = this.parseParenExpression();\n  this.labels.push(loopLabel);\n  node.body = this.parseStatement(\"while\");\n  this.labels.pop();\n  return this.finishNode(node, \"WhileStatement\")\n};\n\npp$8.parseWithStatement = function(node) {\n  if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n  this.next();\n  node.object = this.parseParenExpression();\n  node.body = this.parseStatement(\"with\");\n  return this.finishNode(node, \"WithStatement\")\n};\n\npp$8.parseEmptyStatement = function(node) {\n  this.next();\n  return this.finishNode(node, \"EmptyStatement\")\n};\n\npp$8.parseLabeledStatement = function(node, maybeName, expr, context) {\n  for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1)\n    {\n    var label = list[i$1];\n\n    if (label.name === maybeName)\n      { this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n  } }\n  var kind = this.type.isLoop ? \"loop\" : this.type === types$1._switch ? \"switch\" : null;\n  for (var i = this.labels.length - 1; i >= 0; i--) {\n    var label$1 = this.labels[i];\n    if (label$1.statementStart === node.start) {\n      // Update information about previous labels on this node\n      label$1.statementStart = this.start;\n      label$1.kind = kind;\n    } else { break }\n  }\n  this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n  node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n  this.labels.pop();\n  node.label = expr;\n  return this.finishNode(node, \"LabeledStatement\")\n};\n\npp$8.parseExpressionStatement = function(node, expr) {\n  node.expression = expr;\n  this.semicolon();\n  return this.finishNode(node, \"ExpressionStatement\")\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) {\n  if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n  if ( node === void 0 ) node = this.startNode();\n\n  node.body = [];\n  this.expect(types$1.braceL);\n  if (createNewLexicalScope) { this.enterScope(0); }\n  while (this.type !== types$1.braceR) {\n    var stmt = this.parseStatement(null);\n    node.body.push(stmt);\n  }\n  if (exitStrict) { this.strict = false; }\n  this.next();\n  if (createNewLexicalScope) { this.exitScope(); }\n  return this.finishNode(node, \"BlockStatement\")\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$8.parseFor = function(node, init) {\n  node.init = init;\n  this.expect(types$1.semi);\n  node.test = this.type === types$1.semi ? null : this.parseExpression();\n  this.expect(types$1.semi);\n  node.update = this.type === types$1.parenR ? null : this.parseExpression();\n  this.expect(types$1.parenR);\n  node.body = this.parseStatement(\"for\");\n  this.exitScope();\n  this.labels.pop();\n  return this.finishNode(node, \"ForStatement\")\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$8.parseForIn = function(node, init) {\n  var isForIn = this.type === types$1._in;\n  this.next();\n\n  if (\n    init.type === \"VariableDeclaration\" &&\n    init.declarations[0].init != null &&\n    (\n      !isForIn ||\n      this.options.ecmaVersion < 8 ||\n      this.strict ||\n      init.kind !== \"var\" ||\n      init.declarations[0].id.type !== \"Identifier\"\n    )\n  ) {\n    this.raise(\n      init.start,\n      ((isForIn ? \"for-in\" : \"for-of\") + \" loop variable declaration may not have an initializer\")\n    );\n  }\n  node.left = init;\n  node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n  this.expect(types$1.parenR);\n  node.body = this.parseStatement(\"for\");\n  this.exitScope();\n  this.labels.pop();\n  return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\")\n};\n\n// Parse a list of variable declarations.\n\npp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) {\n  node.declarations = [];\n  node.kind = kind;\n  for (;;) {\n    var decl = this.startNode();\n    this.parseVarId(decl, kind);\n    if (this.eat(types$1.eq)) {\n      decl.init = this.parseMaybeAssign(isFor);\n    } else if (!allowMissingInitializer && kind === \"const\" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n      this.unexpected();\n    } else if (!allowMissingInitializer && (kind === \"using\" || kind === \"await using\") && this.options.ecmaVersion >= 17 && this.type !== types$1._in && !this.isContextual(\"of\")) {\n      this.raise(this.lastTokEnd, (\"Missing initializer in \" + kind + \" declaration\"));\n    } else if (!allowMissingInitializer && decl.id.type !== \"Identifier\" && !(isFor && (this.type === types$1._in || this.isContextual(\"of\")))) {\n      this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n    } else {\n      decl.init = null;\n    }\n    node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n    if (!this.eat(types$1.comma)) { break }\n  }\n  return node\n};\n\npp$8.parseVarId = function(decl, kind) {\n  decl.id = kind === \"using\" || kind === \"await using\"\n    ? this.parseIdent()\n    : this.parseBindingAtom();\n\n  this.checkLValPattern(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n};\n\nvar FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;\n\n// Parse a function declaration or literal (depending on the\n// `statement & FUNC_STATEMENT`).\n\n// Remove `allowExpressionBody` for 7.0.0, as it is only called with false\npp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) {\n  this.initFunction(node);\n  if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n    if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT))\n      { this.unexpected(); }\n    node.generator = this.eat(types$1.star);\n  }\n  if (this.options.ecmaVersion >= 8)\n    { node.async = !!isAsync; }\n\n  if (statement & FUNC_STATEMENT) {\n    node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent();\n    if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n      // If it is a regular function declaration in sloppy mode, then it is\n      // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n      // mode depends on properties of the current scope (see\n      // treatFunctionsAsVar).\n      { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }\n  }\n\n  var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n  this.yieldPos = 0;\n  this.awaitPos = 0;\n  this.awaitIdentPos = 0;\n  this.enterScope(functionFlags(node.async, node.generator));\n\n  if (!(statement & FUNC_STATEMENT))\n    { node.id = this.type === types$1.name ? this.parseIdent() : null; }\n\n  this.parseFunctionParams(node);\n  this.parseFunctionBody(node, allowExpressionBody, false, forInit);\n\n  this.yieldPos = oldYieldPos;\n  this.awaitPos = oldAwaitPos;\n  this.awaitIdentPos = oldAwaitIdentPos;\n  return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n};\n\npp$8.parseFunctionParams = function(node) {\n  this.expect(types$1.parenL);\n  node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n  this.checkYieldAwaitInDefaultParams();\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$8.parseClass = function(node, isStatement) {\n  this.next();\n\n  // ecma-262 14.6 Class Definitions\n  // A class definition is always strict mode code.\n  var oldStrict = this.strict;\n  this.strict = true;\n\n  this.parseClassId(node, isStatement);\n  this.parseClassSuper(node);\n  var privateNameMap = this.enterClassBody();\n  var classBody = this.startNode();\n  var hadConstructor = false;\n  classBody.body = [];\n  this.expect(types$1.braceL);\n  while (this.type !== types$1.braceR) {\n    var element = this.parseClassElement(node.superClass !== null);\n    if (element) {\n      classBody.body.push(element);\n      if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n        if (hadConstructor) { this.raiseRecoverable(element.start, \"Duplicate constructor in the same class\"); }\n        hadConstructor = true;\n      } else if (element.key && element.key.type === \"PrivateIdentifier\" && isPrivateNameConflicted(privateNameMap, element)) {\n        this.raiseRecoverable(element.key.start, (\"Identifier '#\" + (element.key.name) + \"' has already been declared\"));\n      }\n    }\n  }\n  this.strict = oldStrict;\n  this.next();\n  node.body = this.finishNode(classBody, \"ClassBody\");\n  this.exitClassBody();\n  return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n};\n\npp$8.parseClassElement = function(constructorAllowsSuper) {\n  if (this.eat(types$1.semi)) { return null }\n\n  var ecmaVersion = this.options.ecmaVersion;\n  var node = this.startNode();\n  var keyName = \"\";\n  var isGenerator = false;\n  var isAsync = false;\n  var kind = \"method\";\n  var isStatic = false;\n\n  if (this.eatContextual(\"static\")) {\n    // Parse static init block\n    if (ecmaVersion >= 13 && this.eat(types$1.braceL)) {\n      this.parseClassStaticBlock(node);\n      return node\n    }\n    if (this.isClassElementNameStart() || this.type === types$1.star) {\n      isStatic = true;\n    } else {\n      keyName = \"static\";\n    }\n  }\n  node.static = isStatic;\n  if (!keyName && ecmaVersion >= 8 && this.eatContextual(\"async\")) {\n    if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) {\n      isAsync = true;\n    } else {\n      keyName = \"async\";\n    }\n  }\n  if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) {\n    isGenerator = true;\n  }\n  if (!keyName && !isAsync && !isGenerator) {\n    var lastValue = this.value;\n    if (this.eatContextual(\"get\") || this.eatContextual(\"set\")) {\n      if (this.isClassElementNameStart()) {\n        kind = lastValue;\n      } else {\n        keyName = lastValue;\n      }\n    }\n  }\n\n  // Parse element name\n  if (keyName) {\n    // 'async', 'get', 'set', or 'static' were not a keyword contextually.\n    // The last token is any of those. Make it the element name.\n    node.computed = false;\n    node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc);\n    node.key.name = keyName;\n    this.finishNode(node.key, \"Identifier\");\n  } else {\n    this.parseClassElementName(node);\n  }\n\n  // Parse element value\n  if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== \"method\" || isGenerator || isAsync) {\n    var isConstructor = !node.static && checkKeyName(node, \"constructor\");\n    var allowsDirectSuper = isConstructor && constructorAllowsSuper;\n    // Couldn't move this check into the 'parseClassMethod' method for backward compatibility.\n    if (isConstructor && kind !== \"method\") { this.raise(node.key.start, \"Constructor can't have get/set modifier\"); }\n    node.kind = isConstructor ? \"constructor\" : kind;\n    this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper);\n  } else {\n    this.parseClassField(node);\n  }\n\n  return node\n};\n\npp$8.isClassElementNameStart = function() {\n  return (\n    this.type === types$1.name ||\n    this.type === types$1.privateId ||\n    this.type === types$1.num ||\n    this.type === types$1.string ||\n    this.type === types$1.bracketL ||\n    this.type.keyword\n  )\n};\n\npp$8.parseClassElementName = function(element) {\n  if (this.type === types$1.privateId) {\n    if (this.value === \"constructor\") {\n      this.raise(this.start, \"Classes can't have an element named '#constructor'\");\n    }\n    element.computed = false;\n    element.key = this.parsePrivateIdent();\n  } else {\n    this.parsePropertyName(element);\n  }\n};\n\npp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n  // Check key and flags\n  var key = method.key;\n  if (method.kind === \"constructor\") {\n    if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n    if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n  } else if (method.static && checkKeyName(method, \"prototype\")) {\n    this.raise(key.start, \"Classes may not have a static property named prototype\");\n  }\n\n  // Parse value\n  var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);\n\n  // Check value\n  if (method.kind === \"get\" && value.params.length !== 0)\n    { this.raiseRecoverable(value.start, \"getter should have no params\"); }\n  if (method.kind === \"set\" && value.params.length !== 1)\n    { this.raiseRecoverable(value.start, \"setter should have exactly one param\"); }\n  if (method.kind === \"set\" && value.params[0].type === \"RestElement\")\n    { this.raiseRecoverable(value.params[0].start, \"Setter cannot use rest params\"); }\n\n  return this.finishNode(method, \"MethodDefinition\")\n};\n\npp$8.parseClassField = function(field) {\n  if (checkKeyName(field, \"constructor\")) {\n    this.raise(field.key.start, \"Classes can't have a field named 'constructor'\");\n  } else if (field.static && checkKeyName(field, \"prototype\")) {\n    this.raise(field.key.start, \"Classes can't have a static field named 'prototype'\");\n  }\n\n  if (this.eat(types$1.eq)) {\n    // To raise SyntaxError if 'arguments' exists in the initializer.\n    this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER);\n    field.value = this.parseMaybeAssign();\n    this.exitScope();\n  } else {\n    field.value = null;\n  }\n  this.semicolon();\n\n  return this.finishNode(field, \"PropertyDefinition\")\n};\n\npp$8.parseClassStaticBlock = function(node) {\n  node.body = [];\n\n  var oldLabels = this.labels;\n  this.labels = [];\n  this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER);\n  while (this.type !== types$1.braceR) {\n    var stmt = this.parseStatement(null);\n    node.body.push(stmt);\n  }\n  this.next();\n  this.exitScope();\n  this.labels = oldLabels;\n\n  return this.finishNode(node, \"StaticBlock\")\n};\n\npp$8.parseClassId = function(node, isStatement) {\n  if (this.type === types$1.name) {\n    node.id = this.parseIdent();\n    if (isStatement)\n      { this.checkLValSimple(node.id, BIND_LEXICAL, false); }\n  } else {\n    if (isStatement === true)\n      { this.unexpected(); }\n    node.id = null;\n  }\n};\n\npp$8.parseClassSuper = function(node) {\n  node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;\n};\n\npp$8.enterClassBody = function() {\n  var element = {declared: Object.create(null), used: []};\n  this.privateNameStack.push(element);\n  return element.declared\n};\n\npp$8.exitClassBody = function() {\n  var ref = this.privateNameStack.pop();\n  var declared = ref.declared;\n  var used = ref.used;\n  if (!this.options.checkPrivateFields) { return }\n  var len = this.privateNameStack.length;\n  var parent = len === 0 ? null : this.privateNameStack[len - 1];\n  for (var i = 0; i < used.length; ++i) {\n    var id = used[i];\n    if (!hasOwn(declared, id.name)) {\n      if (parent) {\n        parent.used.push(id);\n      } else {\n        this.raiseRecoverable(id.start, (\"Private field '#\" + (id.name) + \"' must be declared in an enclosing class\"));\n      }\n    }\n  }\n};\n\nfunction isPrivateNameConflicted(privateNameMap, element) {\n  var name = element.key.name;\n  var curr = privateNameMap[name];\n\n  var next = \"true\";\n  if (element.type === \"MethodDefinition\" && (element.kind === \"get\" || element.kind === \"set\")) {\n    next = (element.static ? \"s\" : \"i\") + element.kind;\n  }\n\n  // `class { get #a(){}; static set #a(_){} }` is also conflict.\n  if (\n    curr === \"iget\" && next === \"iset\" ||\n    curr === \"iset\" && next === \"iget\" ||\n    curr === \"sget\" && next === \"sset\" ||\n    curr === \"sset\" && next === \"sget\"\n  ) {\n    privateNameMap[name] = \"true\";\n    return false\n  } else if (!curr) {\n    privateNameMap[name] = next;\n    return false\n  } else {\n    return true\n  }\n}\n\nfunction checkKeyName(node, name) {\n  var computed = node.computed;\n  var key = node.key;\n  return !computed && (\n    key.type === \"Identifier\" && key.name === name ||\n    key.type === \"Literal\" && key.value === name\n  )\n}\n\n// Parses module export declaration.\n\npp$8.parseExportAllDeclaration = function(node, exports$1) {\n  if (this.options.ecmaVersion >= 11) {\n    if (this.eatContextual(\"as\")) {\n      node.exported = this.parseModuleExportName();\n      this.checkExport(exports$1, node.exported, this.lastTokStart);\n    } else {\n      node.exported = null;\n    }\n  }\n  this.expectContextual(\"from\");\n  if (this.type !== types$1.string) { this.unexpected(); }\n  node.source = this.parseExprAtom();\n  if (this.options.ecmaVersion >= 16)\n    { node.attributes = this.parseWithClause(); }\n  this.semicolon();\n  return this.finishNode(node, \"ExportAllDeclaration\")\n};\n\npp$8.parseExport = function(node, exports$1) {\n  this.next();\n  // export * from '...'\n  if (this.eat(types$1.star)) {\n    return this.parseExportAllDeclaration(node, exports$1)\n  }\n  if (this.eat(types$1._default)) { // export default ...\n    this.checkExport(exports$1, \"default\", this.lastTokStart);\n    node.declaration = this.parseExportDefaultDeclaration();\n    return this.finishNode(node, \"ExportDefaultDeclaration\")\n  }\n  // export var|const|let|function|class ...\n  if (this.shouldParseExportStatement()) {\n    node.declaration = this.parseExportDeclaration(node);\n    if (node.declaration.type === \"VariableDeclaration\")\n      { this.checkVariableExport(exports$1, node.declaration.declarations); }\n    else\n      { this.checkExport(exports$1, node.declaration.id, node.declaration.id.start); }\n    node.specifiers = [];\n    node.source = null;\n    if (this.options.ecmaVersion >= 16)\n      { node.attributes = []; }\n  } else { // export { x, y as z } [from '...']\n    node.declaration = null;\n    node.specifiers = this.parseExportSpecifiers(exports$1);\n    if (this.eatContextual(\"from\")) {\n      if (this.type !== types$1.string) { this.unexpected(); }\n      node.source = this.parseExprAtom();\n      if (this.options.ecmaVersion >= 16)\n        { node.attributes = this.parseWithClause(); }\n    } else {\n      for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n        // check for keywords used as local names\n        var spec = list[i];\n\n        this.checkUnreserved(spec.local);\n        // check if export is defined\n        this.checkLocalExport(spec.local);\n\n        if (spec.local.type === \"Literal\") {\n          this.raise(spec.local.start, \"A string literal cannot be used as an exported binding without `from`.\");\n        }\n      }\n\n      node.source = null;\n      if (this.options.ecmaVersion >= 16)\n        { node.attributes = []; }\n    }\n    this.semicolon();\n  }\n  return this.finishNode(node, \"ExportNamedDeclaration\")\n};\n\npp$8.parseExportDeclaration = function(node) {\n  return this.parseStatement(null)\n};\n\npp$8.parseExportDefaultDeclaration = function() {\n  var isAsync;\n  if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) {\n    var fNode = this.startNode();\n    this.next();\n    if (isAsync) { this.next(); }\n    return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n  } else if (this.type === types$1._class) {\n    var cNode = this.startNode();\n    return this.parseClass(cNode, \"nullableID\")\n  } else {\n    var declaration = this.parseMaybeAssign();\n    this.semicolon();\n    return declaration\n  }\n};\n\npp$8.checkExport = function(exports$1, name, pos) {\n  if (!exports$1) { return }\n  if (typeof name !== \"string\")\n    { name = name.type === \"Identifier\" ? name.name : name.value; }\n  if (hasOwn(exports$1, name))\n    { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n  exports$1[name] = true;\n};\n\npp$8.checkPatternExport = function(exports$1, pat) {\n  var type = pat.type;\n  if (type === \"Identifier\")\n    { this.checkExport(exports$1, pat, pat.start); }\n  else if (type === \"ObjectPattern\")\n    { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n      {\n        var prop = list[i];\n\n        this.checkPatternExport(exports$1, prop);\n      } }\n  else if (type === \"ArrayPattern\")\n    { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n      var elt = list$1[i$1];\n\n        if (elt) { this.checkPatternExport(exports$1, elt); }\n    } }\n  else if (type === \"Property\")\n    { this.checkPatternExport(exports$1, pat.value); }\n  else if (type === \"AssignmentPattern\")\n    { this.checkPatternExport(exports$1, pat.left); }\n  else if (type === \"RestElement\")\n    { this.checkPatternExport(exports$1, pat.argument); }\n};\n\npp$8.checkVariableExport = function(exports$1, decls) {\n  if (!exports$1) { return }\n  for (var i = 0, list = decls; i < list.length; i += 1)\n    {\n    var decl = list[i];\n\n    this.checkPatternExport(exports$1, decl.id);\n  }\n};\n\npp$8.shouldParseExportStatement = function() {\n  return this.type.keyword === \"var\" ||\n    this.type.keyword === \"const\" ||\n    this.type.keyword === \"class\" ||\n    this.type.keyword === \"function\" ||\n    this.isLet() ||\n    this.isAsyncFunction()\n};\n\n// Parses a comma-separated list of module exports.\n\npp$8.parseExportSpecifier = function(exports$1) {\n  var node = this.startNode();\n  node.local = this.parseModuleExportName();\n\n  node.exported = this.eatContextual(\"as\") ? this.parseModuleExportName() : node.local;\n  this.checkExport(\n    exports$1,\n    node.exported,\n    node.exported.start\n  );\n\n  return this.finishNode(node, \"ExportSpecifier\")\n};\n\npp$8.parseExportSpecifiers = function(exports$1) {\n  var nodes = [], first = true;\n  // export { x, y as z } [from '...']\n  this.expect(types$1.braceL);\n  while (!this.eat(types$1.braceR)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (this.afterTrailingComma(types$1.braceR)) { break }\n    } else { first = false; }\n\n    nodes.push(this.parseExportSpecifier(exports$1));\n  }\n  return nodes\n};\n\n// Parses import declaration.\n\npp$8.parseImport = function(node) {\n  this.next();\n\n  // import '...'\n  if (this.type === types$1.string) {\n    node.specifiers = empty$1;\n    node.source = this.parseExprAtom();\n  } else {\n    node.specifiers = this.parseImportSpecifiers();\n    this.expectContextual(\"from\");\n    node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected();\n  }\n  if (this.options.ecmaVersion >= 16)\n    { node.attributes = this.parseWithClause(); }\n  this.semicolon();\n  return this.finishNode(node, \"ImportDeclaration\")\n};\n\n// Parses a comma-separated list of module imports.\n\npp$8.parseImportSpecifier = function() {\n  var node = this.startNode();\n  node.imported = this.parseModuleExportName();\n\n  if (this.eatContextual(\"as\")) {\n    node.local = this.parseIdent();\n  } else {\n    this.checkUnreserved(node.imported);\n    node.local = node.imported;\n  }\n  this.checkLValSimple(node.local, BIND_LEXICAL);\n\n  return this.finishNode(node, \"ImportSpecifier\")\n};\n\npp$8.parseImportDefaultSpecifier = function() {\n  // import defaultObj, { x, y as z } from '...'\n  var node = this.startNode();\n  node.local = this.parseIdent();\n  this.checkLValSimple(node.local, BIND_LEXICAL);\n  return this.finishNode(node, \"ImportDefaultSpecifier\")\n};\n\npp$8.parseImportNamespaceSpecifier = function() {\n  var node = this.startNode();\n  this.next();\n  this.expectContextual(\"as\");\n  node.local = this.parseIdent();\n  this.checkLValSimple(node.local, BIND_LEXICAL);\n  return this.finishNode(node, \"ImportNamespaceSpecifier\")\n};\n\npp$8.parseImportSpecifiers = function() {\n  var nodes = [], first = true;\n  if (this.type === types$1.name) {\n    nodes.push(this.parseImportDefaultSpecifier());\n    if (!this.eat(types$1.comma)) { return nodes }\n  }\n  if (this.type === types$1.star) {\n    nodes.push(this.parseImportNamespaceSpecifier());\n    return nodes\n  }\n  this.expect(types$1.braceL);\n  while (!this.eat(types$1.braceR)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (this.afterTrailingComma(types$1.braceR)) { break }\n    } else { first = false; }\n\n    nodes.push(this.parseImportSpecifier());\n  }\n  return nodes\n};\n\npp$8.parseWithClause = function() {\n  var nodes = [];\n  if (!this.eat(types$1._with)) {\n    return nodes\n  }\n  this.expect(types$1.braceL);\n  var attributeKeys = {};\n  var first = true;\n  while (!this.eat(types$1.braceR)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (this.afterTrailingComma(types$1.braceR)) { break }\n    } else { first = false; }\n\n    var attr = this.parseImportAttribute();\n    var keyName = attr.key.type === \"Identifier\" ? attr.key.name : attr.key.value;\n    if (hasOwn(attributeKeys, keyName))\n      { this.raiseRecoverable(attr.key.start, \"Duplicate attribute key '\" + keyName + \"'\"); }\n    attributeKeys[keyName] = true;\n    nodes.push(attr);\n  }\n  return nodes\n};\n\npp$8.parseImportAttribute = function() {\n  var node = this.startNode();\n  node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\");\n  this.expect(types$1.colon);\n  if (this.type !== types$1.string) {\n    this.unexpected();\n  }\n  node.value = this.parseExprAtom();\n  return this.finishNode(node, \"ImportAttribute\")\n};\n\npp$8.parseModuleExportName = function() {\n  if (this.options.ecmaVersion >= 13 && this.type === types$1.string) {\n    var stringLiteral = this.parseLiteral(this.value);\n    if (loneSurrogate.test(stringLiteral.value)) {\n      this.raise(stringLiteral.start, \"An export name cannot include a lone surrogate.\");\n    }\n    return stringLiteral\n  }\n  return this.parseIdent(true)\n};\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp$8.adaptDirectivePrologue = function(statements) {\n  for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n    statements[i].directive = statements[i].expression.raw.slice(1, -1);\n  }\n};\npp$8.isDirectiveCandidate = function(statement) {\n  return (\n    this.options.ecmaVersion >= 5 &&\n    statement.type === \"ExpressionStatement\" &&\n    statement.expression.type === \"Literal\" &&\n    typeof statement.expression.value === \"string\" &&\n    // Reject parenthesized strings.\n    (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n  )\n};\n\nvar pp$7 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$7.toAssignable = function(node, isBinding, refDestructuringErrors) {\n  if (this.options.ecmaVersion >= 6 && node) {\n    switch (node.type) {\n    case \"Identifier\":\n      if (this.inAsync && node.name === \"await\")\n        { this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\"); }\n      break\n\n    case \"ObjectPattern\":\n    case \"ArrayPattern\":\n    case \"AssignmentPattern\":\n    case \"RestElement\":\n      break\n\n    case \"ObjectExpression\":\n      node.type = \"ObjectPattern\";\n      if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n      for (var i = 0, list = node.properties; i < list.length; i += 1) {\n        var prop = list[i];\n\n      this.toAssignable(prop, isBinding);\n        // Early error:\n        //   AssignmentRestProperty[Yield, Await] :\n        //     `...` DestructuringAssignmentTarget[Yield, Await]\n        //\n        //   It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n        if (\n          prop.type === \"RestElement\" &&\n          (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n        ) {\n          this.raise(prop.argument.start, \"Unexpected token\");\n        }\n      }\n      break\n\n    case \"Property\":\n      // AssignmentProperty has type === \"Property\"\n      if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n      this.toAssignable(node.value, isBinding);\n      break\n\n    case \"ArrayExpression\":\n      node.type = \"ArrayPattern\";\n      if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n      this.toAssignableList(node.elements, isBinding);\n      break\n\n    case \"SpreadElement\":\n      node.type = \"RestElement\";\n      this.toAssignable(node.argument, isBinding);\n      if (node.argument.type === \"AssignmentPattern\")\n        { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n      break\n\n    case \"AssignmentExpression\":\n      if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n      node.type = \"AssignmentPattern\";\n      delete node.operator;\n      this.toAssignable(node.left, isBinding);\n      break\n\n    case \"ParenthesizedExpression\":\n      this.toAssignable(node.expression, isBinding, refDestructuringErrors);\n      break\n\n    case \"ChainExpression\":\n      this.raiseRecoverable(node.start, \"Optional chaining cannot appear in left-hand side\");\n      break\n\n    case \"MemberExpression\":\n      if (!isBinding) { break }\n\n    default:\n      this.raise(node.start, \"Assigning to rvalue\");\n    }\n  } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n  return node\n};\n\n// Convert list of expression atoms to binding list.\n\npp$7.toAssignableList = function(exprList, isBinding) {\n  var end = exprList.length;\n  for (var i = 0; i < end; i++) {\n    var elt = exprList[i];\n    if (elt) { this.toAssignable(elt, isBinding); }\n  }\n  if (end) {\n    var last = exprList[end - 1];\n    if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n      { this.unexpected(last.argument.start); }\n  }\n  return exprList\n};\n\n// Parses spread element.\n\npp$7.parseSpread = function(refDestructuringErrors) {\n  var node = this.startNode();\n  this.next();\n  node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n  return this.finishNode(node, \"SpreadElement\")\n};\n\npp$7.parseRestBinding = function() {\n  var node = this.startNode();\n  this.next();\n\n  // RestElement inside of a function parameter must be an identifier\n  if (this.options.ecmaVersion === 6 && this.type !== types$1.name)\n    { this.unexpected(); }\n\n  node.argument = this.parseBindingAtom();\n\n  return this.finishNode(node, \"RestElement\")\n};\n\n// Parses lvalue (assignable) atom.\n\npp$7.parseBindingAtom = function() {\n  if (this.options.ecmaVersion >= 6) {\n    switch (this.type) {\n    case types$1.bracketL:\n      var node = this.startNode();\n      this.next();\n      node.elements = this.parseBindingList(types$1.bracketR, true, true);\n      return this.finishNode(node, \"ArrayPattern\")\n\n    case types$1.braceL:\n      return this.parseObj(true)\n    }\n  }\n  return this.parseIdent()\n};\n\npp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {\n  var elts = [], first = true;\n  while (!this.eat(close)) {\n    if (first) { first = false; }\n    else { this.expect(types$1.comma); }\n    if (allowEmpty && this.type === types$1.comma) {\n      elts.push(null);\n    } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n      break\n    } else if (this.type === types$1.ellipsis) {\n      var rest = this.parseRestBinding();\n      this.parseBindingListItem(rest);\n      elts.push(rest);\n      if (this.type === types$1.comma) { this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\"); }\n      this.expect(close);\n      break\n    } else {\n      elts.push(this.parseAssignableListItem(allowModifiers));\n    }\n  }\n  return elts\n};\n\npp$7.parseAssignableListItem = function(allowModifiers) {\n  var elem = this.parseMaybeDefault(this.start, this.startLoc);\n  this.parseBindingListItem(elem);\n  return elem\n};\n\npp$7.parseBindingListItem = function(param) {\n  return param\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp$7.parseMaybeDefault = function(startPos, startLoc, left) {\n  left = left || this.parseBindingAtom();\n  if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left }\n  var node = this.startNodeAt(startPos, startLoc);\n  node.left = left;\n  node.right = this.parseMaybeAssign();\n  return this.finishNode(node, \"AssignmentPattern\")\n};\n\n// The following three functions all verify that a node is an lvalue —\n// something that can be bound, or assigned to. In order to do so, they perform\n// a variety of checks:\n//\n// - Check that none of the bound/assigned-to identifiers are reserved words.\n// - Record name declarations for bindings in the appropriate scope.\n// - Check duplicate argument names, if checkClashes is set.\n//\n// If a complex binding pattern is encountered (e.g., object and array\n// destructuring), the entire pattern is recursively checked.\n//\n// There are three versions of checkLVal*() appropriate for different\n// circumstances:\n//\n// - checkLValSimple() shall be used if the syntactic construct supports\n//   nothing other than identifiers and member expressions. Parenthesized\n//   expressions are also correctly handled. This is generally appropriate for\n//   constructs for which the spec says\n//\n//   > It is a Syntax Error if AssignmentTargetType of [the production] is not\n//   > simple.\n//\n//   It is also appropriate for checking if an identifier is valid and not\n//   defined elsewhere, like import declarations or function/class identifiers.\n//\n//   Examples where this is used include:\n//     a += …;\n//     import a from '…';\n//   where a is the node to be checked.\n//\n// - checkLValPattern() shall be used if the syntactic construct supports\n//   anything checkLValSimple() supports, as well as object and array\n//   destructuring patterns. This is generally appropriate for constructs for\n//   which the spec says\n//\n//   > It is a Syntax Error if [the production] is neither an ObjectLiteral nor\n//   > an ArrayLiteral and AssignmentTargetType of [the production] is not\n//   > simple.\n//\n//   Examples where this is used include:\n//     (a = …);\n//     const a = …;\n//     try { … } catch (a) { … }\n//   where a is the node to be checked.\n//\n// - checkLValInnerPattern() shall be used if the syntactic construct supports\n//   anything checkLValPattern() supports, as well as default assignment\n//   patterns, rest elements, and other constructs that may appear within an\n//   object or array destructuring pattern.\n//\n//   As a special case, function parameters also use checkLValInnerPattern(),\n//   as they also support defaults and rest constructs.\n//\n// These functions deliberately support both assignment and binding constructs,\n// as the logic for both is exceedingly similar. If the node is the target of\n// an assignment, then bindingType should be set to BIND_NONE. Otherwise, it\n// should be set to the appropriate BIND_* constant, like BIND_VAR or\n// BIND_LEXICAL.\n//\n// If the function is called with a non-BIND_NONE bindingType, then\n// additionally a checkClashes object may be specified to allow checking for\n// duplicate argument names. checkClashes is ignored if the provided construct\n// is an assignment (i.e., bindingType is BIND_NONE).\n\npp$7.checkLValSimple = function(expr, bindingType, checkClashes) {\n  if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n  var isBind = bindingType !== BIND_NONE;\n\n  switch (expr.type) {\n  case \"Identifier\":\n    if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n      { this.raiseRecoverable(expr.start, (isBind ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n    if (isBind) {\n      if (bindingType === BIND_LEXICAL && expr.name === \"let\")\n        { this.raiseRecoverable(expr.start, \"let is disallowed as a lexically bound name\"); }\n      if (checkClashes) {\n        if (hasOwn(checkClashes, expr.name))\n          { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n        checkClashes[expr.name] = true;\n      }\n      if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); }\n    }\n    break\n\n  case \"ChainExpression\":\n    this.raiseRecoverable(expr.start, \"Optional chaining cannot appear in left-hand side\");\n    break\n\n  case \"MemberExpression\":\n    if (isBind) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n    break\n\n  case \"ParenthesizedExpression\":\n    if (isBind) { this.raiseRecoverable(expr.start, \"Binding parenthesized expression\"); }\n    return this.checkLValSimple(expr.expression, bindingType, checkClashes)\n\n  default:\n    this.raise(expr.start, (isBind ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n  }\n};\n\npp$7.checkLValPattern = function(expr, bindingType, checkClashes) {\n  if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n  switch (expr.type) {\n  case \"ObjectPattern\":\n    for (var i = 0, list = expr.properties; i < list.length; i += 1) {\n      var prop = list[i];\n\n    this.checkLValInnerPattern(prop, bindingType, checkClashes);\n    }\n    break\n\n  case \"ArrayPattern\":\n    for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n      var elem = list$1[i$1];\n\n    if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); }\n    }\n    break\n\n  default:\n    this.checkLValSimple(expr, bindingType, checkClashes);\n  }\n};\n\npp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) {\n  if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n  switch (expr.type) {\n  case \"Property\":\n    // AssignmentProperty has type === \"Property\"\n    this.checkLValInnerPattern(expr.value, bindingType, checkClashes);\n    break\n\n  case \"AssignmentPattern\":\n    this.checkLValPattern(expr.left, bindingType, checkClashes);\n    break\n\n  case \"RestElement\":\n    this.checkLValPattern(expr.argument, bindingType, checkClashes);\n    break\n\n  default:\n    this.checkLValPattern(expr, bindingType, checkClashes);\n  }\n};\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n  this.token = token;\n  this.isExpr = !!isExpr;\n  this.preserveSpace = !!preserveSpace;\n  this.override = override;\n  this.generator = !!generator;\n};\n\nvar types = {\n  b_stat: new TokContext(\"{\", false),\n  b_expr: new TokContext(\"{\", true),\n  b_tmpl: new TokContext(\"${\", false),\n  p_stat: new TokContext(\"(\", false),\n  p_expr: new TokContext(\"(\", true),\n  q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n  f_stat: new TokContext(\"function\", false),\n  f_expr: new TokContext(\"function\", true),\n  f_expr_gen: new TokContext(\"function\", true, false, null, true),\n  f_gen: new TokContext(\"function\", false, false, null, true)\n};\n\nvar pp$6 = Parser.prototype;\n\npp$6.initialContext = function() {\n  return [types.b_stat]\n};\n\npp$6.curContext = function() {\n  return this.context[this.context.length - 1]\n};\n\npp$6.braceIsBlock = function(prevType) {\n  var parent = this.curContext();\n  if (parent === types.f_expr || parent === types.f_stat)\n    { return true }\n  if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr))\n    { return !parent.isExpr }\n\n  // The check for `tt.name && exprAllowed` detects whether we are\n  // after a `yield` or `of` construct. See the `updateContext` for\n  // `tt.name`.\n  if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed)\n    { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n  if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow)\n    { return true }\n  if (prevType === types$1.braceL)\n    { return parent === types.b_stat }\n  if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name)\n    { return false }\n  return !this.exprAllowed\n};\n\npp$6.inGeneratorContext = function() {\n  for (var i = this.context.length - 1; i >= 1; i--) {\n    var context = this.context[i];\n    if (context.token === \"function\")\n      { return context.generator }\n  }\n  return false\n};\n\npp$6.updateContext = function(prevType) {\n  var update, type = this.type;\n  if (type.keyword && prevType === types$1.dot)\n    { this.exprAllowed = false; }\n  else if (update = type.updateContext)\n    { update.call(this, prevType); }\n  else\n    { this.exprAllowed = type.beforeExpr; }\n};\n\n// Used to handle edge cases when token context could not be inferred correctly during tokenization phase\n\npp$6.overrideContext = function(tokenCtx) {\n  if (this.curContext() !== tokenCtx) {\n    this.context[this.context.length - 1] = tokenCtx;\n  }\n};\n\n// Token-specific context update code\n\ntypes$1.parenR.updateContext = types$1.braceR.updateContext = function() {\n  if (this.context.length === 1) {\n    this.exprAllowed = true;\n    return\n  }\n  var out = this.context.pop();\n  if (out === types.b_stat && this.curContext().token === \"function\") {\n    out = this.context.pop();\n  }\n  this.exprAllowed = !out.isExpr;\n};\n\ntypes$1.braceL.updateContext = function(prevType) {\n  this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n  this.exprAllowed = true;\n};\n\ntypes$1.dollarBraceL.updateContext = function() {\n  this.context.push(types.b_tmpl);\n  this.exprAllowed = true;\n};\n\ntypes$1.parenL.updateContext = function(prevType) {\n  var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while;\n  this.context.push(statementParens ? types.p_stat : types.p_expr);\n  this.exprAllowed = true;\n};\n\ntypes$1.incDec.updateContext = function() {\n  // tokExprAllowed stays unchanged\n};\n\ntypes$1._function.updateContext = types$1._class.updateContext = function(prevType) {\n  if (prevType.beforeExpr && prevType !== types$1._else &&\n      !(prevType === types$1.semi && this.curContext() !== types.p_stat) &&\n      !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n      !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat))\n    { this.context.push(types.f_expr); }\n  else\n    { this.context.push(types.f_stat); }\n  this.exprAllowed = false;\n};\n\ntypes$1.colon.updateContext = function() {\n  if (this.curContext().token === \"function\") { this.context.pop(); }\n  this.exprAllowed = true;\n};\n\ntypes$1.backQuote.updateContext = function() {\n  if (this.curContext() === types.q_tmpl)\n    { this.context.pop(); }\n  else\n    { this.context.push(types.q_tmpl); }\n  this.exprAllowed = false;\n};\n\ntypes$1.star.updateContext = function(prevType) {\n  if (prevType === types$1._function) {\n    var index = this.context.length - 1;\n    if (this.context[index] === types.f_expr)\n      { this.context[index] = types.f_expr_gen; }\n    else\n      { this.context[index] = types.f_gen; }\n  }\n  this.exprAllowed = true;\n};\n\ntypes$1.name.updateContext = function(prevType) {\n  var allowed = false;\n  if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) {\n    if (this.value === \"of\" && !this.exprAllowed ||\n        this.value === \"yield\" && this.inGeneratorContext())\n      { allowed = true; }\n  }\n  this.exprAllowed = allowed;\n};\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\nvar pp$5 = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n  if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n    { return }\n  if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n    { return }\n  var key = prop.key;\n  var name;\n  switch (key.type) {\n  case \"Identifier\": name = key.name; break\n  case \"Literal\": name = String(key.value); break\n  default: return\n  }\n  var kind = prop.kind;\n  if (this.options.ecmaVersion >= 6) {\n    if (name === \"__proto__\" && kind === \"init\") {\n      if (propHash.proto) {\n        if (refDestructuringErrors) {\n          if (refDestructuringErrors.doubleProto < 0) {\n            refDestructuringErrors.doubleProto = key.start;\n          }\n        } else {\n          this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n        }\n      }\n      propHash.proto = true;\n    }\n    return\n  }\n  name = \"$\" + name;\n  var other = propHash[name];\n  if (other) {\n    var redefinition;\n    if (kind === \"init\") {\n      redefinition = this.strict && other.init || other.get || other.set;\n    } else {\n      redefinition = other.init || other[kind];\n    }\n    if (redefinition)\n      { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n  } else {\n    other = propHash[name] = {\n      init: false,\n      get: false,\n      set: false\n    };\n  }\n  other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$5.parseExpression = function(forInit, refDestructuringErrors) {\n  var this$1$1 = this;\n\n  return this.catchStackOverflow(function () {\n    var startPos = this$1$1.start, startLoc = this$1$1.startLoc;\n    var expr = this$1$1.parseMaybeAssign(forInit, refDestructuringErrors);\n    if (this$1$1.type === types$1.comma) {\n      var node = this$1$1.startNodeAt(startPos, startLoc);\n      node.expressions = [expr];\n      while (this$1$1.eat(types$1.comma)) { node.expressions.push(this$1$1.parseMaybeAssign(forInit, refDestructuringErrors)); }\n      return this$1$1.finishNode(node, \"SequenceExpression\")\n    }\n    return expr\n  })\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {\n  if (this.isContextual(\"yield\")) {\n    if (this.inGenerator) { return this.parseYield(forInit) }\n    // The tokenizer will assume an expression is allowed after\n    // `yield`, but this isn't that kind of yield\n    else { this.exprAllowed = false; }\n  }\n\n  var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;\n  if (refDestructuringErrors) {\n    oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n    oldTrailingComma = refDestructuringErrors.trailingComma;\n    oldDoubleProto = refDestructuringErrors.doubleProto;\n    refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n  } else {\n    refDestructuringErrors = new DestructuringErrors;\n    ownDestructuringErrors = true;\n  }\n\n  var startPos = this.start, startLoc = this.startLoc;\n  if (this.type === types$1.parenL || this.type === types$1.name) {\n    this.potentialArrowAt = this.start;\n    this.potentialArrowInForAwait = forInit === \"await\";\n  }\n  var left = this.parseMaybeConditional(forInit, refDestructuringErrors);\n  if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n  if (this.type.isAssign) {\n    var node = this.startNodeAt(startPos, startLoc);\n    node.operator = this.value;\n    if (this.type === types$1.eq)\n      { left = this.toAssignable(left, false, refDestructuringErrors); }\n    if (!ownDestructuringErrors) {\n      refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1;\n    }\n    if (refDestructuringErrors.shorthandAssign >= left.start)\n      { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly\n    if (this.type === types$1.eq)\n      { this.checkLValPattern(left); }\n    else\n      { this.checkLValSimple(left); }\n    node.left = left;\n    this.next();\n    node.right = this.parseMaybeAssign(forInit);\n    if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; }\n    return this.finishNode(node, \"AssignmentExpression\")\n  } else {\n    if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n  }\n  if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n  if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n  return left\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) {\n  var startPos = this.start, startLoc = this.startLoc;\n  var expr = this.parseExprOps(forInit, refDestructuringErrors);\n  if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n  if (!(expr.type === \"ArrowFunctionExpression\" && expr.start === startPos) && this.eat(types$1.question)) {\n    var node = this.startNodeAt(startPos, startLoc);\n    node.test = expr;\n    node.consequent = this.parseMaybeAssign();\n    this.expect(types$1.colon);\n    node.alternate = this.parseMaybeAssign(forInit);\n    return this.finishNode(node, \"ConditionalExpression\")\n  }\n  return expr\n};\n\n// Start the precedence parser.\n\npp$5.parseExprOps = function(forInit, refDestructuringErrors) {\n  var startPos = this.start, startLoc = this.startLoc;\n  var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit);\n  if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n  return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit)\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {\n  var prec = this.type.binop;\n  if (prec != null && (!forInit || this.type !== types$1._in)) {\n    if (prec > minPrec) {\n      var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND;\n      var coalesce = this.type === types$1.coalesce;\n      if (coalesce) {\n        // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n        // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n        prec = types$1.logicalAND.binop;\n      }\n      var op = this.value;\n      this.next();\n      var startPos = this.start, startLoc = this.startLoc;\n      var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit);\n      var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);\n      if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) {\n        this.raiseRecoverable(this.start, \"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\");\n      }\n      return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit)\n    }\n  }\n  return left\n};\n\npp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n  if (right.type === \"PrivateIdentifier\") { this.raise(right.start, \"Private identifier can only be left side of binary expression\"); }\n  var node = this.startNodeAt(startPos, startLoc);\n  node.left = left;\n  node.operator = op;\n  node.right = right;\n  return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {\n  var startPos = this.start, startLoc = this.startLoc, expr;\n  if (this.isContextual(\"await\") && this.canAwait) {\n    expr = this.parseAwait(forInit);\n    sawUnary = true;\n  } else if (this.type.prefix) {\n    var node = this.startNode(), update = this.type === types$1.incDec;\n    node.operator = this.value;\n    node.prefix = true;\n    this.next();\n    node.argument = this.parseMaybeUnary(null, true, update, forInit);\n    this.checkExpressionErrors(refDestructuringErrors, true);\n    if (update) { this.checkLValSimple(node.argument); }\n    else if (this.strict && node.operator === \"delete\" && isLocalVariableAccess(node.argument))\n      { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n    else if (node.operator === \"delete\" && isPrivateFieldAccess(node.argument))\n      { this.raiseRecoverable(node.start, \"Private fields can not be deleted\"); }\n    else { sawUnary = true; }\n    expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n  } else if (!sawUnary && this.type === types$1.privateId) {\n    if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); }\n    expr = this.parsePrivateIdent();\n    // only could be private fields in 'in', such as #x in obj\n    if (this.type !== types$1._in) { this.unexpected(); }\n  } else {\n    expr = this.parseExprSubscripts(refDestructuringErrors, forInit);\n    if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n    while (this.type.postfix && !this.canInsertSemicolon()) {\n      var node$1 = this.startNodeAt(startPos, startLoc);\n      node$1.operator = this.value;\n      node$1.prefix = false;\n      node$1.argument = expr;\n      this.checkLValSimple(expr);\n      this.next();\n      expr = this.finishNode(node$1, \"UpdateExpression\");\n    }\n  }\n\n  if (!incDec && this.eat(types$1.starstar)) {\n    if (sawUnary)\n      { this.unexpected(this.lastTokStart); }\n    else\n      { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), \"**\", false) }\n  } else {\n    return expr\n  }\n};\n\nfunction isLocalVariableAccess(node) {\n  return (\n    node.type === \"Identifier\" ||\n    node.type === \"ParenthesizedExpression\" && isLocalVariableAccess(node.expression)\n  )\n}\n\nfunction isPrivateFieldAccess(node) {\n  return (\n    node.type === \"MemberExpression\" && node.property.type === \"PrivateIdentifier\" ||\n    node.type === \"ChainExpression\" && isPrivateFieldAccess(node.expression) ||\n    node.type === \"ParenthesizedExpression\" && isPrivateFieldAccess(node.expression)\n  )\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) {\n  var startPos = this.start, startLoc = this.startLoc;\n  var expr = this.parseExprAtom(refDestructuringErrors, forInit);\n  if (expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\")\n    { return expr }\n  var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit);\n  if (refDestructuringErrors && result.type === \"MemberExpression\") {\n    if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n    if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n    if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; }\n  }\n  return result\n};\n\npp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {\n  var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n      this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 &&\n      this.potentialArrowAt === base.start;\n  var optionalChained = false;\n\n  while (true) {\n    var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);\n\n    if (element.optional) { optionalChained = true; }\n    if (element === base || element.type === \"ArrowFunctionExpression\") {\n      if (optionalChained) {\n        var chainNode = this.startNodeAt(startPos, startLoc);\n        chainNode.expression = element;\n        element = this.finishNode(chainNode, \"ChainExpression\");\n      }\n      return element\n    }\n\n    base = element;\n  }\n};\n\npp$5.shouldParseAsyncArrow = function() {\n  return !this.canInsertSemicolon() && this.eat(types$1.arrow)\n};\n\npp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {\n  return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit)\n};\n\npp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {\n  var optionalSupported = this.options.ecmaVersion >= 11;\n  var optional = optionalSupported && this.eat(types$1.questionDot);\n  if (noCalls && optional) { this.raise(this.lastTokStart, \"Optional chaining cannot appear in the callee of new expressions\"); }\n\n  var computed = this.eat(types$1.bracketL);\n  if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) {\n    var node = this.startNodeAt(startPos, startLoc);\n    node.object = base;\n    if (computed) {\n      node.property = this.parseExpression();\n      this.expect(types$1.bracketR);\n    } else if (this.type === types$1.privateId && base.type !== \"Super\") {\n      node.property = this.parsePrivateIdent();\n    } else {\n      node.property = this.parseIdent(this.options.allowReserved !== \"never\");\n    }\n    node.computed = !!computed;\n    if (optionalSupported) {\n      node.optional = optional;\n    }\n    base = this.finishNode(node, \"MemberExpression\");\n  } else if (!noCalls && this.eat(types$1.parenL)) {\n    var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n    this.yieldPos = 0;\n    this.awaitPos = 0;\n    this.awaitIdentPos = 0;\n    var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);\n    if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) {\n      this.checkPatternErrors(refDestructuringErrors, false);\n      this.checkYieldAwaitInDefaultParams();\n      if (this.awaitIdentPos > 0)\n        { this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\"); }\n      this.yieldPos = oldYieldPos;\n      this.awaitPos = oldAwaitPos;\n      this.awaitIdentPos = oldAwaitIdentPos;\n      return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit)\n    }\n    this.checkExpressionErrors(refDestructuringErrors, true);\n    this.yieldPos = oldYieldPos || this.yieldPos;\n    this.awaitPos = oldAwaitPos || this.awaitPos;\n    this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;\n    var node$1 = this.startNodeAt(startPos, startLoc);\n    node$1.callee = base;\n    node$1.arguments = exprList;\n    if (optionalSupported) {\n      node$1.optional = optional;\n    }\n    base = this.finishNode(node$1, \"CallExpression\");\n  } else if (this.type === types$1.backQuote) {\n    if (optional || optionalChained) {\n      this.raise(this.start, \"Optional chaining cannot appear in the tag of tagged template expressions\");\n    }\n    var node$2 = this.startNodeAt(startPos, startLoc);\n    node$2.tag = base;\n    node$2.quasi = this.parseTemplate({isTagged: true});\n    base = this.finishNode(node$2, \"TaggedTemplateExpression\");\n  }\n  return base\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {\n  // If a division operator appears in an expression position, the\n  // tokenizer got confused, and we force it to read a regexp instead.\n  if (this.type === types$1.slash) { this.readRegexp(); }\n\n  var node, canBeArrow = this.potentialArrowAt === this.start;\n  switch (this.type) {\n  case types$1._super:\n    if (!this.allowSuper)\n      { this.raise(this.start, \"'super' keyword outside a method\"); }\n    node = this.startNode();\n    this.next();\n    if (this.type === types$1.parenL && !this.allowDirectSuper)\n      { this.raise(node.start, \"super() call outside constructor of a subclass\"); }\n    // The `super` keyword can appear at below:\n    // SuperProperty:\n    //     super [ Expression ]\n    //     super . IdentifierName\n    // SuperCall:\n    //     super ( Arguments )\n    if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL)\n      { this.unexpected(); }\n    return this.finishNode(node, \"Super\")\n\n  case types$1._this:\n    node = this.startNode();\n    this.next();\n    return this.finishNode(node, \"ThisExpression\")\n\n  case types$1.name:\n    var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n    var id = this.parseIdent(false);\n    if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types$1._function)) {\n      this.overrideContext(types.f_expr);\n      return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit)\n    }\n    if (canBeArrow && !this.canInsertSemicolon()) {\n      if (this.eat(types$1.arrow))\n        { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) }\n      if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types$1.name && !containsEsc &&\n          (!this.potentialArrowInForAwait || this.value !== \"of\" || this.containsEsc)) {\n        id = this.parseIdent(false);\n        if (this.canInsertSemicolon() || !this.eat(types$1.arrow))\n          { this.unexpected(); }\n        return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit)\n      }\n    }\n    return id\n\n  case types$1.regexp:\n    var value = this.value;\n    node = this.parseLiteral(value.value);\n    node.regex = {pattern: value.pattern, flags: value.flags};\n    return node\n\n  case types$1.num: case types$1.string:\n    return this.parseLiteral(this.value)\n\n  case types$1._null: case types$1._true: case types$1._false:\n    node = this.startNode();\n    node.value = this.type === types$1._null ? null : this.type === types$1._true;\n    node.raw = this.type.keyword;\n    this.next();\n    return this.finishNode(node, \"Literal\")\n\n  case types$1.parenL:\n    var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);\n    if (refDestructuringErrors) {\n      if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n        { refDestructuringErrors.parenthesizedAssign = start; }\n      if (refDestructuringErrors.parenthesizedBind < 0)\n        { refDestructuringErrors.parenthesizedBind = start; }\n    }\n    return expr\n\n  case types$1.bracketL:\n    node = this.startNode();\n    this.next();\n    node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors);\n    return this.finishNode(node, \"ArrayExpression\")\n\n  case types$1.braceL:\n    this.overrideContext(types.b_expr);\n    return this.parseObj(false, refDestructuringErrors)\n\n  case types$1._function:\n    node = this.startNode();\n    this.next();\n    return this.parseFunction(node, 0)\n\n  case types$1._class:\n    return this.parseClass(this.startNode(), false)\n\n  case types$1._new:\n    return this.parseNew()\n\n  case types$1.backQuote:\n    return this.parseTemplate()\n\n  case types$1._import:\n    if (this.options.ecmaVersion >= 11) {\n      return this.parseExprImport(forNew)\n    } else {\n      return this.unexpected()\n    }\n\n  default:\n    return this.parseExprAtomDefault()\n  }\n};\n\npp$5.parseExprAtomDefault = function() {\n  this.unexpected();\n};\n\npp$5.parseExprImport = function(forNew) {\n  var node = this.startNode();\n\n  // Consume `import` as an identifier for `import.meta`.\n  // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`.\n  if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword import\"); }\n  this.next();\n\n  if (this.type === types$1.parenL && !forNew) {\n    return this.parseDynamicImport(node)\n  } else if (this.type === types$1.dot) {\n    var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n    meta.name = \"import\";\n    node.meta = this.finishNode(meta, \"Identifier\");\n    return this.parseImportMeta(node)\n  } else {\n    this.unexpected();\n  }\n};\n\npp$5.parseDynamicImport = function(node) {\n  this.next(); // skip `(`\n\n  // Parse node.source.\n  node.source = this.parseMaybeAssign();\n\n  if (this.options.ecmaVersion >= 16) {\n    if (!this.eat(types$1.parenR)) {\n      this.expect(types$1.comma);\n      if (!this.afterTrailingComma(types$1.parenR)) {\n        node.options = this.parseMaybeAssign();\n        if (!this.eat(types$1.parenR)) {\n          this.expect(types$1.comma);\n          if (!this.afterTrailingComma(types$1.parenR)) {\n            this.unexpected();\n          }\n        }\n      } else {\n        node.options = null;\n      }\n    } else {\n      node.options = null;\n    }\n  } else {\n    // Verify ending.\n    if (!this.eat(types$1.parenR)) {\n      var errorPos = this.start;\n      if (this.eat(types$1.comma) && this.eat(types$1.parenR)) {\n        this.raiseRecoverable(errorPos, \"Trailing comma is not allowed in import()\");\n      } else {\n        this.unexpected(errorPos);\n      }\n    }\n  }\n\n  return this.finishNode(node, \"ImportExpression\")\n};\n\npp$5.parseImportMeta = function(node) {\n  this.next(); // skip `.`\n\n  var containsEsc = this.containsEsc;\n  node.property = this.parseIdent(true);\n\n  if (node.property.name !== \"meta\")\n    { this.raiseRecoverable(node.property.start, \"The only valid meta property for import is 'import.meta'\"); }\n  if (containsEsc)\n    { this.raiseRecoverable(node.start, \"'import.meta' must not contain escaped characters\"); }\n  if (this.options.sourceType !== \"module\" && !this.options.allowImportExportEverywhere)\n    { this.raiseRecoverable(node.start, \"Cannot use 'import.meta' outside a module\"); }\n\n  return this.finishNode(node, \"MetaProperty\")\n};\n\npp$5.parseLiteral = function(value) {\n  var node = this.startNode();\n  node.value = value;\n  node.raw = this.input.slice(this.start, this.end);\n  if (node.raw.charCodeAt(node.raw.length - 1) === 110)\n    { node.bigint = node.value != null ? node.value.toString() : node.raw.slice(0, -1).replace(/_/g, \"\"); }\n  this.next();\n  return this.finishNode(node, \"Literal\")\n};\n\npp$5.parseParenExpression = function() {\n  this.expect(types$1.parenL);\n  var val = this.parseExpression();\n  this.expect(types$1.parenR);\n  return val\n};\n\npp$5.shouldParseArrow = function(exprList) {\n  return !this.canInsertSemicolon()\n};\n\npp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {\n  var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n  if (this.options.ecmaVersion >= 6) {\n    this.next();\n\n    var innerStartPos = this.start, innerStartLoc = this.startLoc;\n    var exprList = [], first = true, lastIsComma = false;\n    var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n    this.yieldPos = 0;\n    this.awaitPos = 0;\n    // Do not save awaitIdentPos to allow checking awaits nested in parameters\n    while (this.type !== types$1.parenR) {\n      first ? first = false : this.expect(types$1.comma);\n      if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) {\n        lastIsComma = true;\n        break\n      } else if (this.type === types$1.ellipsis) {\n        spreadStart = this.start;\n        exprList.push(this.parseParenItem(this.parseRestBinding()));\n        if (this.type === types$1.comma) {\n          this.raiseRecoverable(\n            this.start,\n            \"Comma is not permitted after the rest element\"\n          );\n        }\n        break\n      } else {\n        exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n      }\n    }\n    var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;\n    this.expect(types$1.parenR);\n\n    if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) {\n      this.checkPatternErrors(refDestructuringErrors, false);\n      this.checkYieldAwaitInDefaultParams();\n      this.yieldPos = oldYieldPos;\n      this.awaitPos = oldAwaitPos;\n      return this.parseParenArrowList(startPos, startLoc, exprList, forInit)\n    }\n\n    if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n    if (spreadStart) { this.unexpected(spreadStart); }\n    this.checkExpressionErrors(refDestructuringErrors, true);\n    this.yieldPos = oldYieldPos || this.yieldPos;\n    this.awaitPos = oldAwaitPos || this.awaitPos;\n\n    if (exprList.length > 1) {\n      val = this.startNodeAt(innerStartPos, innerStartLoc);\n      val.expressions = exprList;\n      this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n    } else {\n      val = exprList[0];\n    }\n  } else {\n    val = this.parseParenExpression();\n  }\n\n  if (this.options.preserveParens) {\n    var par = this.startNodeAt(startPos, startLoc);\n    par.expression = val;\n    return this.finishNode(par, \"ParenthesizedExpression\")\n  } else {\n    return val\n  }\n};\n\npp$5.parseParenItem = function(item) {\n  return item\n};\n\npp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {\n  return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit)\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty = [];\n\npp$5.parseNew = function() {\n  if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword new\"); }\n  var node = this.startNode();\n  this.next();\n  if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) {\n    var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n    meta.name = \"new\";\n    node.meta = this.finishNode(meta, \"Identifier\");\n    this.next();\n    var containsEsc = this.containsEsc;\n    node.property = this.parseIdent(true);\n    if (node.property.name !== \"target\")\n      { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is 'new.target'\"); }\n    if (containsEsc)\n      { this.raiseRecoverable(node.start, \"'new.target' must not contain escaped characters\"); }\n    if (!this.allowNewDotTarget)\n      { this.raiseRecoverable(node.start, \"'new.target' can only be used in functions and class static block\"); }\n    return this.finishNode(node, \"MetaProperty\")\n  }\n  var startPos = this.start, startLoc = this.startLoc;\n  node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false);\n  if (node.callee.type === \"Super\")\n    { this.raiseRecoverable(startPos, \"Invalid use of 'super'\"); }\n  if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); }\n  else { node.arguments = empty; }\n  return this.finishNode(node, \"NewExpression\")\n};\n\n// Parse template expression.\n\npp$5.parseTemplateElement = function(ref) {\n  var isTagged = ref.isTagged;\n\n  var elem = this.startNode();\n  if (this.type === types$1.invalidTemplate) {\n    if (!isTagged) {\n      this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n    }\n    elem.value = {\n      raw: this.value.replace(/\\r\\n?/g, \"\\n\"),\n      cooked: null\n    };\n  } else {\n    elem.value = {\n      raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n      cooked: this.value\n    };\n  }\n  this.next();\n  elem.tail = this.type === types$1.backQuote;\n  return this.finishNode(elem, \"TemplateElement\")\n};\n\npp$5.parseTemplate = function(ref) {\n  if ( ref === void 0 ) ref = {};\n  var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n  var node = this.startNode();\n  this.next();\n  node.expressions = [];\n  var curElt = this.parseTemplateElement({isTagged: isTagged});\n  node.quasis = [curElt];\n  while (!curElt.tail) {\n    if (this.type === types$1.eof) { this.raise(this.pos, \"Unterminated template literal\"); }\n    this.expect(types$1.dollarBraceL);\n    node.expressions.push(this.parseExpression());\n    this.expect(types$1.braceR);\n    node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged}));\n  }\n  this.next();\n  return this.finishNode(node, \"TemplateLiteral\")\n};\n\npp$5.isAsyncProp = function(prop) {\n  return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n    (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) &&\n    !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\n// Parse an object literal or binding pattern.\n\npp$5.parseObj = function(isPattern, refDestructuringErrors) {\n  var node = this.startNode(), first = true, propHash = {};\n  node.properties = [];\n  this.next();\n  while (!this.eat(types$1.braceR)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break }\n    } else { first = false; }\n\n    var prop = this.parseProperty(isPattern, refDestructuringErrors);\n    if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); }\n    node.properties.push(prop);\n  }\n  return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n};\n\npp$5.parseProperty = function(isPattern, refDestructuringErrors) {\n  var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n  if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) {\n    if (isPattern) {\n      prop.argument = this.parseIdent(false);\n      if (this.type === types$1.comma) {\n        this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\");\n      }\n      return this.finishNode(prop, \"RestElement\")\n    }\n    // Parse argument.\n    prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n    // To disallow trailing comma via `this.toAssignable()`.\n    if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n      refDestructuringErrors.trailingComma = this.start;\n    }\n    // Finish\n    return this.finishNode(prop, \"SpreadElement\")\n  }\n  if (this.options.ecmaVersion >= 6) {\n    prop.method = false;\n    prop.shorthand = false;\n    if (isPattern || refDestructuringErrors) {\n      startPos = this.start;\n      startLoc = this.startLoc;\n    }\n    if (!isPattern)\n      { isGenerator = this.eat(types$1.star); }\n  }\n  var containsEsc = this.containsEsc;\n  this.parsePropertyName(prop);\n  if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n    isAsync = true;\n    isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);\n    this.parsePropertyName(prop);\n  } else {\n    isAsync = false;\n  }\n  this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n  return this.finishNode(prop, \"Property\")\n};\n\npp$5.parseGetterSetter = function(prop) {\n  var kind = prop.key.name;\n  this.parsePropertyName(prop);\n  prop.value = this.parseMethod(false);\n  prop.kind = kind;\n  var paramCount = prop.kind === \"get\" ? 0 : 1;\n  if (prop.value.params.length !== paramCount) {\n    var start = prop.value.start;\n    if (prop.kind === \"get\")\n      { this.raiseRecoverable(start, \"getter should have no params\"); }\n    else\n      { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n  } else {\n    if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n      { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n  }\n};\n\npp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n  if ((isGenerator || isAsync) && this.type === types$1.colon)\n    { this.unexpected(); }\n\n  if (this.eat(types$1.colon)) {\n    prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n    prop.kind = \"init\";\n  } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) {\n    if (isPattern) { this.unexpected(); }\n    prop.method = true;\n    prop.value = this.parseMethod(isGenerator, isAsync);\n    prop.kind = \"init\";\n  } else if (!isPattern && !containsEsc &&\n             this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n             (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n             (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) {\n    if (isGenerator || isAsync) { this.unexpected(); }\n    this.parseGetterSetter(prop);\n  } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n    if (isGenerator || isAsync) { this.unexpected(); }\n    this.checkUnreserved(prop.key);\n    if (prop.key.name === \"await\" && !this.awaitIdentPos)\n      { this.awaitIdentPos = startPos; }\n    if (isPattern) {\n      prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n    } else if (this.type === types$1.eq && refDestructuringErrors) {\n      if (refDestructuringErrors.shorthandAssign < 0)\n        { refDestructuringErrors.shorthandAssign = this.start; }\n      prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n    } else {\n      prop.value = this.copyNode(prop.key);\n    }\n    prop.kind = \"init\";\n    prop.shorthand = true;\n  } else { this.unexpected(); }\n};\n\npp$5.parsePropertyName = function(prop) {\n  if (this.options.ecmaVersion >= 6) {\n    if (this.eat(types$1.bracketL)) {\n      prop.computed = true;\n      prop.key = this.parseMaybeAssign();\n      this.expect(types$1.bracketR);\n      return prop.key\n    } else {\n      prop.computed = false;\n    }\n  }\n  return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\")\n};\n\n// Initialize empty function node.\n\npp$5.initFunction = function(node) {\n  node.id = null;\n  if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; }\n  if (this.options.ecmaVersion >= 8) { node.async = false; }\n};\n\n// Parse object or class method.\n\npp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n  var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n  this.initFunction(node);\n  if (this.options.ecmaVersion >= 6)\n    { node.generator = isGenerator; }\n  if (this.options.ecmaVersion >= 8)\n    { node.async = !!isAsync; }\n\n  this.yieldPos = 0;\n  this.awaitPos = 0;\n  this.awaitIdentPos = 0;\n  this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n\n  this.expect(types$1.parenL);\n  node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n  this.checkYieldAwaitInDefaultParams();\n  this.parseFunctionBody(node, false, true, false);\n\n  this.yieldPos = oldYieldPos;\n  this.awaitPos = oldAwaitPos;\n  this.awaitIdentPos = oldAwaitIdentPos;\n  return this.finishNode(node, \"FunctionExpression\")\n};\n\n// Parse arrow function expression with given parameters.\n\npp$5.parseArrowExpression = function(node, params, isAsync, forInit) {\n  var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n  this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n  this.initFunction(node);\n  if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; }\n\n  this.yieldPos = 0;\n  this.awaitPos = 0;\n  this.awaitIdentPos = 0;\n\n  node.params = this.toAssignableList(params, true);\n  this.parseFunctionBody(node, true, false, forInit);\n\n  this.yieldPos = oldYieldPos;\n  this.awaitPos = oldAwaitPos;\n  this.awaitIdentPos = oldAwaitIdentPos;\n  return this.finishNode(node, \"ArrowFunctionExpression\")\n};\n\n// Parse function body and check parameters.\n\npp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) {\n  var isExpression = isArrowFunction && this.type !== types$1.braceL;\n  var oldStrict = this.strict, useStrict = false;\n\n  if (isExpression) {\n    node.body = this.parseMaybeAssign(forInit);\n    node.expression = true;\n    this.checkParams(node, false);\n  } else {\n    var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n    if (!oldStrict || nonSimple) {\n      useStrict = this.strictDirective(this.end);\n      // If this is a strict mode function, verify that argument names\n      // are not repeated, and it does not try to bind the words `eval`\n      // or `arguments`.\n      if (useStrict && nonSimple)\n        { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n    }\n    // Start a new scope with regard to labels and the `inFunction`\n    // flag (restore them to their old value afterwards).\n    var oldLabels = this.labels;\n    this.labels = [];\n    if (useStrict) { this.strict = true; }\n\n    // Add the params to varDeclaredNames to ensure that an error is thrown\n    // if a let/const declaration in the function clashes with one of the params.\n    this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));\n    // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n    if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); }\n    node.body = this.parseBlock(false, undefined, useStrict && !oldStrict);\n    node.expression = false;\n    this.adaptDirectivePrologue(node.body.body);\n    this.labels = oldLabels;\n  }\n  this.exitScope();\n};\n\npp$5.isSimpleParamList = function(params) {\n  for (var i = 0, list = params; i < list.length; i += 1)\n    {\n    var param = list[i];\n\n    if (param.type !== \"Identifier\") { return false\n  } }\n  return true\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$5.checkParams = function(node, allowDuplicates) {\n  var nameHash = Object.create(null);\n  for (var i = 0, list = node.params; i < list.length; i += 1)\n    {\n    var param = list[i];\n\n    this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash);\n  }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n  var elts = [], first = true;\n  while (!this.eat(close)) {\n    if (!first) {\n      this.expect(types$1.comma);\n      if (allowTrailingComma && this.afterTrailingComma(close)) { break }\n    } else { first = false; }\n\n    var elt = (void 0);\n    if (allowEmpty && this.type === types$1.comma)\n      { elt = null; }\n    else if (this.type === types$1.ellipsis) {\n      elt = this.parseSpread(refDestructuringErrors);\n      if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0)\n        { refDestructuringErrors.trailingComma = this.start; }\n    } else {\n      elt = this.parseMaybeAssign(false, refDestructuringErrors);\n    }\n    elts.push(elt);\n  }\n  return elts\n};\n\npp$5.checkUnreserved = function(ref) {\n  var start = ref.start;\n  var end = ref.end;\n  var name = ref.name;\n\n  if (this.inGenerator && name === \"yield\")\n    { this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\"); }\n  if (this.inAsync && name === \"await\")\n    { this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\"); }\n  if (!(this.currentThisScope().flags & SCOPE_VAR) && name === \"arguments\")\n    { this.raiseRecoverable(start, \"Cannot use 'arguments' in class field initializer\"); }\n  if (this.inClassStaticBlock && (name === \"arguments\" || name === \"await\"))\n    { this.raise(start, (\"Cannot use \" + name + \" in class static initialization block\")); }\n  if (this.keywords.test(name))\n    { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n  if (this.options.ecmaVersion < 6 &&\n    this.input.slice(start, end).indexOf(\"\\\\\") !== -1) { return }\n  var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n  if (re.test(name)) {\n    if (!this.inAsync && name === \"await\")\n      { this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\"); }\n    this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n  }\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$5.parseIdent = function(liberal) {\n  var node = this.parseIdentNode();\n  this.next(!!liberal);\n  this.finishNode(node, \"Identifier\");\n  if (!liberal) {\n    this.checkUnreserved(node);\n    if (node.name === \"await\" && !this.awaitIdentPos)\n      { this.awaitIdentPos = node.start; }\n  }\n  return node\n};\n\npp$5.parseIdentNode = function() {\n  var node = this.startNode();\n  if (this.type === types$1.name) {\n    node.name = this.value;\n  } else if (this.type.keyword) {\n    node.name = this.type.keyword;\n\n    // To fix https://github.com/acornjs/acorn/issues/575\n    // `class` and `function` keywords push new context into this.context.\n    // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n    // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n    if ((node.name === \"class\" || node.name === \"function\") &&\n      (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n      this.context.pop();\n    }\n    this.type = types$1.name;\n  } else {\n    this.unexpected();\n  }\n  return node\n};\n\npp$5.parsePrivateIdent = function() {\n  var node = this.startNode();\n  if (this.type === types$1.privateId) {\n    node.name = this.value;\n  } else {\n    this.unexpected();\n  }\n  this.next();\n  this.finishNode(node, \"PrivateIdentifier\");\n\n  // For validating existence\n  if (this.options.checkPrivateFields) {\n    if (this.privateNameStack.length === 0) {\n      this.raise(node.start, (\"Private field '#\" + (node.name) + \"' must be declared in an enclosing class\"));\n    } else {\n      this.privateNameStack[this.privateNameStack.length - 1].used.push(node);\n    }\n  }\n\n  return node\n};\n\n// Parses yield expression inside generator.\n\npp$5.parseYield = function(forInit) {\n  if (!this.yieldPos) { this.yieldPos = this.start; }\n\n  var node = this.startNode();\n  this.next();\n  if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) {\n    node.delegate = false;\n    node.argument = null;\n  } else {\n    node.delegate = this.eat(types$1.star);\n    node.argument = this.parseMaybeAssign(forInit);\n  }\n  return this.finishNode(node, \"YieldExpression\")\n};\n\npp$5.parseAwait = function(forInit) {\n  if (!this.awaitPos) { this.awaitPos = this.start; }\n\n  var node = this.startNode();\n  this.next();\n  node.argument = this.parseMaybeUnary(null, true, false, forInit);\n  return this.finishNode(node, \"AwaitExpression\")\n};\n\nvar pp$4 = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function(pos, message) {\n  var loc = getLineInfo(this.input, pos);\n  message += \" (\" + loc.line + \":\" + loc.column + \")\";\n  if (this.sourceFile) {\n    message += \" in \" + this.sourceFile;\n  }\n  var err = new SyntaxError(message);\n  err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n  throw err\n};\n\npp$4.raiseRecoverable = pp$4.raise;\n\npp$4.curPosition = function() {\n  if (this.options.locations) {\n    return new Position(this.curLine, this.pos - this.lineStart)\n  }\n};\n\nvar pp$3 = Parser.prototype;\n\nvar Scope = function Scope(flags) {\n  this.flags = flags;\n  // A list of var-declared names in the current lexical scope\n  this.var = [];\n  // A list of lexically-declared names in the current lexical scope\n  this.lexical = [];\n  // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n  this.functions = [];\n};\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp$3.enterScope = function(flags) {\n  this.scopeStack.push(new Scope(flags));\n};\n\npp$3.exitScope = function() {\n  this.scopeStack.pop();\n};\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp$3.treatFunctionsAsVarInScope = function(scope) {\n  return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n};\n\npp$3.declareName = function(name, bindingType, pos) {\n  var redeclared = false;\n  if (bindingType === BIND_LEXICAL) {\n    var scope = this.currentScope();\n    redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n    scope.lexical.push(name);\n    if (this.inModule && (scope.flags & SCOPE_TOP))\n      { delete this.undefinedExports[name]; }\n  } else if (bindingType === BIND_SIMPLE_CATCH) {\n    var scope$1 = this.currentScope();\n    scope$1.lexical.push(name);\n  } else if (bindingType === BIND_FUNCTION) {\n    var scope$2 = this.currentScope();\n    if (this.treatFunctionsAsVar)\n      { redeclared = scope$2.lexical.indexOf(name) > -1; }\n    else\n      { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; }\n    scope$2.functions.push(name);\n  } else {\n    for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n      var scope$3 = this.scopeStack[i];\n      if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||\n          !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {\n        redeclared = true;\n        break\n      }\n      scope$3.var.push(name);\n      if (this.inModule && (scope$3.flags & SCOPE_TOP))\n        { delete this.undefinedExports[name]; }\n      if (scope$3.flags & SCOPE_VAR) { break }\n    }\n  }\n  if (redeclared) { this.raiseRecoverable(pos, (\"Identifier '\" + name + \"' has already been declared\")); }\n};\n\npp$3.checkLocalExport = function(id) {\n  // scope.functions must be empty as Module code is always strict.\n  if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n      this.scopeStack[0].var.indexOf(id.name) === -1) {\n    this.undefinedExports[id.name] = id;\n  }\n};\n\npp$3.currentScope = function() {\n  return this.scopeStack[this.scopeStack.length - 1]\n};\n\npp$3.currentVarScope = function() {\n  for (var i = this.scopeStack.length - 1;; i--) {\n    var scope = this.scopeStack[i];\n    if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope }\n  }\n};\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp$3.currentThisScope = function() {\n  for (var i = this.scopeStack.length - 1;; i--) {\n    var scope = this.scopeStack[i];\n    if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) &&\n        !(scope.flags & SCOPE_ARROW)) { return scope }\n  }\n};\n\nvar Node = function Node(parser, pos, loc) {\n  this.type = \"\";\n  this.start = pos;\n  this.end = 0;\n  if (parser.options.locations)\n    { this.loc = new SourceLocation(parser, loc); }\n  if (parser.options.directSourceFile)\n    { this.sourceFile = parser.options.directSourceFile; }\n  if (parser.options.ranges)\n    { this.range = [pos, 0]; }\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$2 = Parser.prototype;\n\npp$2.startNode = function() {\n  return new Node(this, this.start, this.startLoc)\n};\n\npp$2.startNodeAt = function(pos, loc) {\n  return new Node(this, pos, loc)\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n  node.type = type;\n  node.end = pos;\n  if (this.options.locations)\n    { node.loc.end = loc; }\n  if (this.options.ranges)\n    { node.range[1] = pos; }\n  return node\n}\n\npp$2.finishNode = function(node, type) {\n  return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n};\n\n// Finish node at given position\n\npp$2.finishNodeAt = function(node, type, pos, loc) {\n  return finishNodeAt.call(this, node, type, pos, loc)\n};\n\npp$2.copyNode = function(node) {\n  var newNode = new Node(this, node.start, this.startLoc);\n  for (var prop in node) { newNode[prop] = node[prop]; }\n  return newNode\n};\n\n// This file was generated by \"bin/generate-unicode-script-values.js\". Do not modify manually!\nvar scriptValuesAddedInUnicode = \"Berf Beria_Erfe Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sidetic Sidt Sunu Sunuwar Tai_Yo Tayo Todhri Todr Tolong_Siki Tols Tulu_Tigalari Tutg Unknown Zzzz\";\n\n// This file contains Unicode properties extracted from the ECMAScript specification.\n// The lists are extracted like so:\n// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n// #table-binary-unicode-properties\nvar ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\";\nvar ecma10BinaryProperties = ecma9BinaryProperties + \" Extended_Pictographic\";\nvar ecma11BinaryProperties = ecma10BinaryProperties;\nvar ecma12BinaryProperties = ecma11BinaryProperties + \" EBase EComp EMod EPres ExtPict\";\nvar ecma13BinaryProperties = ecma12BinaryProperties;\nvar ecma14BinaryProperties = ecma13BinaryProperties;\n\nvar unicodeBinaryProperties = {\n  9: ecma9BinaryProperties,\n  10: ecma10BinaryProperties,\n  11: ecma11BinaryProperties,\n  12: ecma12BinaryProperties,\n  13: ecma13BinaryProperties,\n  14: ecma14BinaryProperties\n};\n\n// #table-binary-unicode-properties-of-strings\nvar ecma14BinaryPropertiesOfStrings = \"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji\";\n\nvar unicodeBinaryPropertiesOfStrings = {\n  9: \"\",\n  10: \"\",\n  11: \"\",\n  12: \"\",\n  13: \"\",\n  14: ecma14BinaryPropertiesOfStrings\n};\n\n// #table-unicode-general-category-values\nvar unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\";\n\n// #table-unicode-script-values\nvar ecma9ScriptValues = \"Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\";\nvar ecma10ScriptValues = ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\";\nvar ecma11ScriptValues = ecma10ScriptValues + \" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\";\nvar ecma12ScriptValues = ecma11ScriptValues + \" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi\";\nvar ecma13ScriptValues = ecma12ScriptValues + \" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith\";\nvar ecma14ScriptValues = ecma13ScriptValues + \" \" + scriptValuesAddedInUnicode;\n\nvar unicodeScriptValues = {\n  9: ecma9ScriptValues,\n  10: ecma10ScriptValues,\n  11: ecma11ScriptValues,\n  12: ecma12ScriptValues,\n  13: ecma13ScriptValues,\n  14: ecma14ScriptValues\n};\n\nvar data = {};\nfunction buildUnicodeData(ecmaVersion) {\n  var d = data[ecmaVersion] = {\n    binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n    binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]),\n    nonBinary: {\n      General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n      Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n    }\n  };\n  d.nonBinary.Script_Extensions = d.nonBinary.Script;\n\n  d.nonBinary.gc = d.nonBinary.General_Category;\n  d.nonBinary.sc = d.nonBinary.Script;\n  d.nonBinary.scx = d.nonBinary.Script_Extensions;\n}\n\nfor (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {\n  var ecmaVersion = list[i];\n\n  buildUnicodeData(ecmaVersion);\n}\n\nvar pp$1 = Parser.prototype;\n\n// Track disjunction structure to determine whether a duplicate\n// capture group name is allowed because it is in a separate branch.\nvar BranchID = function BranchID(parent, base) {\n  // Parent disjunction branch\n  this.parent = parent;\n  // Identifies this set of sibling branches\n  this.base = base || this;\n};\n\nBranchID.prototype.separatedFrom = function separatedFrom (alt) {\n  // A branch is separate from another branch if they or any of\n  // their parents are siblings in a given disjunction\n  for (var self = this; self; self = self.parent) {\n    for (var other = alt; other; other = other.parent) {\n      if (self.base === other.base && self !== other) { return true }\n    }\n  }\n  return false\n};\n\nBranchID.prototype.sibling = function sibling () {\n  return new BranchID(this.parent, this.base)\n};\n\nvar RegExpValidationState = function RegExpValidationState(parser) {\n  this.parser = parser;\n  this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\") + (parser.options.ecmaVersion >= 13 ? \"d\" : \"\") + (parser.options.ecmaVersion >= 15 ? \"v\" : \"\");\n  this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];\n  this.source = \"\";\n  this.flags = \"\";\n  this.start = 0;\n  this.switchU = false;\n  this.switchV = false;\n  this.switchN = false;\n  this.pos = 0;\n  this.lastIntValue = 0;\n  this.lastStringValue = \"\";\n  this.lastAssertionIsQuantifiable = false;\n  this.numCapturingParens = 0;\n  this.maxBackReference = 0;\n  this.groupNames = Object.create(null);\n  this.backReferenceNames = [];\n  this.branchID = null;\n};\n\nRegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n  var unicodeSets = flags.indexOf(\"v\") !== -1;\n  var unicode = flags.indexOf(\"u\") !== -1;\n  this.start = start | 0;\n  this.source = pattern + \"\";\n  this.flags = flags;\n  if (unicodeSets && this.parser.options.ecmaVersion >= 15) {\n    this.switchU = true;\n    this.switchV = true;\n    this.switchN = true;\n  } else {\n    this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n    this.switchV = false;\n    this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n  }\n};\n\nRegExpValidationState.prototype.raise = function raise (message) {\n  this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n};\n\n// If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\nRegExpValidationState.prototype.at = function at (i, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  var s = this.source;\n  var l = s.length;\n  if (i >= l) {\n    return -1\n  }\n  var c = s.charCodeAt(i);\n  if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n    return c\n  }\n  var next = s.charCodeAt(i + 1);\n  return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c\n};\n\nRegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  var s = this.source;\n  var l = s.length;\n  if (i >= l) {\n    return l\n  }\n  var c = s.charCodeAt(i), next;\n  if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l ||\n      (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) {\n    return i + 1\n  }\n  return i + 2\n};\n\nRegExpValidationState.prototype.current = function current (forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  return this.at(this.pos, forceU)\n};\n\nRegExpValidationState.prototype.lookahead = function lookahead (forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  return this.at(this.nextIndex(this.pos, forceU), forceU)\n};\n\nRegExpValidationState.prototype.advance = function advance (forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  this.pos = this.nextIndex(this.pos, forceU);\n};\n\nRegExpValidationState.prototype.eat = function eat (ch, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  if (this.current(forceU) === ch) {\n    this.advance(forceU);\n    return true\n  }\n  return false\n};\n\nRegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n  var pos = this.pos;\n  for (var i = 0, list = chs; i < list.length; i += 1) {\n    var ch = list[i];\n\n      var current = this.at(pos, forceU);\n    if (current === -1 || current !== ch) {\n      return false\n    }\n    pos = this.nextIndex(pos, forceU);\n  }\n  this.pos = pos;\n  return true\n};\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpFlags = function(state) {\n  var validFlags = state.validFlags;\n  var flags = state.flags;\n\n  var u = false;\n  var v = false;\n\n  for (var i = 0; i < flags.length; i++) {\n    var flag = flags.charAt(i);\n    if (validFlags.indexOf(flag) === -1) {\n      this.raise(state.start, \"Invalid regular expression flag\");\n    }\n    if (flags.indexOf(flag, i + 1) > -1) {\n      this.raise(state.start, \"Duplicate regular expression flag\");\n    }\n    if (flag === \"u\") { u = true; }\n    if (flag === \"v\") { v = true; }\n  }\n  if (this.options.ecmaVersion >= 15 && u && v) {\n    this.raise(state.start, \"Invalid regular expression flag\");\n  }\n};\n\nfunction hasProp(obj) {\n  for (var _ in obj) { return true }\n  return false\n}\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpPattern = function(state) {\n  this.regexp_pattern(state);\n\n  // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n  // parsing contains a |GroupName|, reparse with the goal symbol\n  // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n  // exception if _P_ did not conform to the grammar, if any elements of _P_\n  // were not matched by the parse, or if any Early Error conditions exist.\n  if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) {\n    state.switchN = true;\n    this.regexp_pattern(state);\n  }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp$1.regexp_pattern = function(state) {\n  state.pos = 0;\n  state.lastIntValue = 0;\n  state.lastStringValue = \"\";\n  state.lastAssertionIsQuantifiable = false;\n  state.numCapturingParens = 0;\n  state.maxBackReference = 0;\n  state.groupNames = Object.create(null);\n  state.backReferenceNames.length = 0;\n  state.branchID = null;\n\n  this.regexp_disjunction(state);\n\n  if (state.pos !== state.source.length) {\n    // Make the same messages as V8.\n    if (state.eat(0x29 /* ) */)) {\n      state.raise(\"Unmatched ')'\");\n    }\n    if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) {\n      state.raise(\"Lone quantifier brackets\");\n    }\n  }\n  if (state.maxBackReference > state.numCapturingParens) {\n    state.raise(\"Invalid escape\");\n  }\n  for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n    var name = list[i];\n\n    if (!state.groupNames[name]) {\n      state.raise(\"Invalid named capture referenced\");\n    }\n  }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp$1.regexp_disjunction = function(state) {\n  var trackDisjunction = this.options.ecmaVersion >= 16;\n  if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); }\n  this.regexp_alternative(state);\n  while (state.eat(0x7C /* | */)) {\n    if (trackDisjunction) { state.branchID = state.branchID.sibling(); }\n    this.regexp_alternative(state);\n  }\n  if (trackDisjunction) { state.branchID = state.branchID.parent; }\n\n  // Make the same message as V8.\n  if (this.regexp_eatQuantifier(state, true)) {\n    state.raise(\"Nothing to repeat\");\n  }\n  if (state.eat(0x7B /* { */)) {\n    state.raise(\"Lone quantifier brackets\");\n  }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp$1.regexp_alternative = function(state) {\n  while (state.pos < state.source.length && this.regexp_eatTerm(state)) {}\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp$1.regexp_eatTerm = function(state) {\n  if (this.regexp_eatAssertion(state)) {\n    // Handle `QuantifiableAssertion Quantifier` alternative.\n    // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n    // is a QuantifiableAssertion.\n    if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n      // Make the same message as V8.\n      if (state.switchU) {\n        state.raise(\"Invalid quantifier\");\n      }\n    }\n    return true\n  }\n\n  if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n    this.regexp_eatQuantifier(state);\n    return true\n  }\n\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp$1.regexp_eatAssertion = function(state) {\n  var start = state.pos;\n  state.lastAssertionIsQuantifiable = false;\n\n  // ^, $\n  if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n    return true\n  }\n\n  // \\b \\B\n  if (state.eat(0x5C /* \\ */)) {\n    if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n      return true\n    }\n    state.pos = start;\n  }\n\n  // Lookahead / Lookbehind\n  if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n    var lookbehind = false;\n    if (this.options.ecmaVersion >= 9) {\n      lookbehind = state.eat(0x3C /* < */);\n    }\n    if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n      this.regexp_disjunction(state);\n      if (!state.eat(0x29 /* ) */)) {\n        state.raise(\"Unterminated group\");\n      }\n      state.lastAssertionIsQuantifiable = !lookbehind;\n      return true\n    }\n  }\n\n  state.pos = start;\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp$1.regexp_eatQuantifier = function(state, noError) {\n  if ( noError === void 0 ) noError = false;\n\n  if (this.regexp_eatQuantifierPrefix(state, noError)) {\n    state.eat(0x3F /* ? */);\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp$1.regexp_eatQuantifierPrefix = function(state, noError) {\n  return (\n    state.eat(0x2A /* * */) ||\n    state.eat(0x2B /* + */) ||\n    state.eat(0x3F /* ? */) ||\n    this.regexp_eatBracedQuantifier(state, noError)\n  )\n};\npp$1.regexp_eatBracedQuantifier = function(state, noError) {\n  var start = state.pos;\n  if (state.eat(0x7B /* { */)) {\n    var min = 0, max = -1;\n    if (this.regexp_eatDecimalDigits(state)) {\n      min = state.lastIntValue;\n      if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n        max = state.lastIntValue;\n      }\n      if (state.eat(0x7D /* } */)) {\n        // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n        if (max !== -1 && max < min && !noError) {\n          state.raise(\"numbers out of order in {} quantifier\");\n        }\n        return true\n      }\n    }\n    if (state.switchU && !noError) {\n      state.raise(\"Incomplete quantifier\");\n    }\n    state.pos = start;\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp$1.regexp_eatAtom = function(state) {\n  return (\n    this.regexp_eatPatternCharacters(state) ||\n    state.eat(0x2E /* . */) ||\n    this.regexp_eatReverseSolidusAtomEscape(state) ||\n    this.regexp_eatCharacterClass(state) ||\n    this.regexp_eatUncapturingGroup(state) ||\n    this.regexp_eatCapturingGroup(state)\n  )\n};\npp$1.regexp_eatReverseSolidusAtomEscape = function(state) {\n  var start = state.pos;\n  if (state.eat(0x5C /* \\ */)) {\n    if (this.regexp_eatAtomEscape(state)) {\n      return true\n    }\n    state.pos = start;\n  }\n  return false\n};\npp$1.regexp_eatUncapturingGroup = function(state) {\n  var start = state.pos;\n  if (state.eat(0x28 /* ( */)) {\n    if (state.eat(0x3F /* ? */)) {\n      if (this.options.ecmaVersion >= 16) {\n        var addModifiers = this.regexp_eatModifiers(state);\n        var hasHyphen = state.eat(0x2D /* - */);\n        if (addModifiers || hasHyphen) {\n          for (var i = 0; i < addModifiers.length; i++) {\n            var modifier = addModifiers.charAt(i);\n            if (addModifiers.indexOf(modifier, i + 1) > -1) {\n              state.raise(\"Duplicate regular expression modifiers\");\n            }\n          }\n          if (hasHyphen) {\n            var removeModifiers = this.regexp_eatModifiers(state);\n            if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) {\n              state.raise(\"Invalid regular expression modifiers\");\n            }\n            for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {\n              var modifier$1 = removeModifiers.charAt(i$1);\n              if (\n                removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 ||\n                addModifiers.indexOf(modifier$1) > -1\n              ) {\n                state.raise(\"Duplicate regular expression modifiers\");\n              }\n            }\n          }\n        }\n      }\n      if (state.eat(0x3A /* : */)) {\n        this.regexp_disjunction(state);\n        if (state.eat(0x29 /* ) */)) {\n          return true\n        }\n        state.raise(\"Unterminated group\");\n      }\n    }\n    state.pos = start;\n  }\n  return false\n};\npp$1.regexp_eatCapturingGroup = function(state) {\n  if (state.eat(0x28 /* ( */)) {\n    if (this.options.ecmaVersion >= 9) {\n      this.regexp_groupSpecifier(state);\n    } else if (state.current() === 0x3F /* ? */) {\n      state.raise(\"Invalid group\");\n    }\n    this.regexp_disjunction(state);\n    if (state.eat(0x29 /* ) */)) {\n      state.numCapturingParens += 1;\n      return true\n    }\n    state.raise(\"Unterminated group\");\n  }\n  return false\n};\n// RegularExpressionModifiers ::\n//   [empty]\n//   RegularExpressionModifiers RegularExpressionModifier\npp$1.regexp_eatModifiers = function(state) {\n  var modifiers = \"\";\n  var ch = 0;\n  while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) {\n    modifiers += codePointToString(ch);\n    state.advance();\n  }\n  return modifiers\n};\n// RegularExpressionModifier :: one of\n//   `i` `m` `s`\nfunction isRegularExpressionModifier(ch) {\n  return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp$1.regexp_eatExtendedAtom = function(state) {\n  return (\n    state.eat(0x2E /* . */) ||\n    this.regexp_eatReverseSolidusAtomEscape(state) ||\n    this.regexp_eatCharacterClass(state) ||\n    this.regexp_eatUncapturingGroup(state) ||\n    this.regexp_eatCapturingGroup(state) ||\n    this.regexp_eatInvalidBracedQuantifier(state) ||\n    this.regexp_eatExtendedPatternCharacter(state)\n  )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp$1.regexp_eatInvalidBracedQuantifier = function(state) {\n  if (this.regexp_eatBracedQuantifier(state, true)) {\n    state.raise(\"Nothing to repeat\");\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp$1.regexp_eatSyntaxCharacter = function(state) {\n  var ch = state.current();\n  if (isSyntaxCharacter(ch)) {\n    state.lastIntValue = ch;\n    state.advance();\n    return true\n  }\n  return false\n};\nfunction isSyntaxCharacter(ch) {\n  return (\n    ch === 0x24 /* $ */ ||\n    ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n    ch === 0x2E /* . */ ||\n    ch === 0x3F /* ? */ ||\n    ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n    ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n  )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp$1.regexp_eatPatternCharacters = function(state) {\n  var start = state.pos;\n  var ch = 0;\n  while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n    state.advance();\n  }\n  return state.pos !== start\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp$1.regexp_eatExtendedPatternCharacter = function(state) {\n  var ch = state.current();\n  if (\n    ch !== -1 &&\n    ch !== 0x24 /* $ */ &&\n    !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n    ch !== 0x2E /* . */ &&\n    ch !== 0x3F /* ? */ &&\n    ch !== 0x5B /* [ */ &&\n    ch !== 0x5E /* ^ */ &&\n    ch !== 0x7C /* | */\n  ) {\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// GroupSpecifier ::\n//   [empty]\n//   `?` GroupName\npp$1.regexp_groupSpecifier = function(state) {\n  if (state.eat(0x3F /* ? */)) {\n    if (!this.regexp_eatGroupName(state)) { state.raise(\"Invalid group\"); }\n    var trackDisjunction = this.options.ecmaVersion >= 16;\n    var known = state.groupNames[state.lastStringValue];\n    if (known) {\n      if (trackDisjunction) {\n        for (var i = 0, list = known; i < list.length; i += 1) {\n          var altID = list[i];\n\n          if (!altID.separatedFrom(state.branchID))\n            { state.raise(\"Duplicate capture group name\"); }\n        }\n      } else {\n        state.raise(\"Duplicate capture group name\");\n      }\n    }\n    if (trackDisjunction) {\n      (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID);\n    } else {\n      state.groupNames[state.lastStringValue] = true;\n    }\n  }\n};\n\n// GroupName ::\n//   `<` RegExpIdentifierName `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatGroupName = function(state) {\n  state.lastStringValue = \"\";\n  if (state.eat(0x3C /* < */)) {\n    if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n      return true\n    }\n    state.raise(\"Invalid capture group name\");\n  }\n  return false\n};\n\n// RegExpIdentifierName ::\n//   RegExpIdentifierStart\n//   RegExpIdentifierName RegExpIdentifierPart\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatRegExpIdentifierName = function(state) {\n  state.lastStringValue = \"\";\n  if (this.regexp_eatRegExpIdentifierStart(state)) {\n    state.lastStringValue += codePointToString(state.lastIntValue);\n    while (this.regexp_eatRegExpIdentifierPart(state)) {\n      state.lastStringValue += codePointToString(state.lastIntValue);\n    }\n    return true\n  }\n  return false\n};\n\n// RegExpIdentifierStart ::\n//   UnicodeIDStart\n//   `$`\n//   `_`\n//   `\\` RegExpUnicodeEscapeSequence[+U]\npp$1.regexp_eatRegExpIdentifierStart = function(state) {\n  var start = state.pos;\n  var forceU = this.options.ecmaVersion >= 11;\n  var ch = state.current(forceU);\n  state.advance(forceU);\n\n  if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n    ch = state.lastIntValue;\n  }\n  if (isRegExpIdentifierStart(ch)) {\n    state.lastIntValue = ch;\n    return true\n  }\n\n  state.pos = start;\n  return false\n};\nfunction isRegExpIdentifierStart(ch) {\n  return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart ::\n//   UnicodeIDContinue\n//   `$`\n//   `_`\n//   `\\` RegExpUnicodeEscapeSequence[+U]\n//   <ZWNJ>\n//   <ZWJ>\npp$1.regexp_eatRegExpIdentifierPart = function(state) {\n  var start = state.pos;\n  var forceU = this.options.ecmaVersion >= 11;\n  var ch = state.current(forceU);\n  state.advance(forceU);\n\n  if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n    ch = state.lastIntValue;\n  }\n  if (isRegExpIdentifierPart(ch)) {\n    state.lastIntValue = ch;\n    return true\n  }\n\n  state.pos = start;\n  return false\n};\nfunction isRegExpIdentifierPart(ch) {\n  return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp$1.regexp_eatAtomEscape = function(state) {\n  if (\n    this.regexp_eatBackReference(state) ||\n    this.regexp_eatCharacterClassEscape(state) ||\n    this.regexp_eatCharacterEscape(state) ||\n    (state.switchN && this.regexp_eatKGroupName(state))\n  ) {\n    return true\n  }\n  if (state.switchU) {\n    // Make the same message as V8.\n    if (state.current() === 0x63 /* c */) {\n      state.raise(\"Invalid unicode escape\");\n    }\n    state.raise(\"Invalid escape\");\n  }\n  return false\n};\npp$1.regexp_eatBackReference = function(state) {\n  var start = state.pos;\n  if (this.regexp_eatDecimalEscape(state)) {\n    var n = state.lastIntValue;\n    if (state.switchU) {\n      // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n      if (n > state.maxBackReference) {\n        state.maxBackReference = n;\n      }\n      return true\n    }\n    if (n <= state.numCapturingParens) {\n      return true\n    }\n    state.pos = start;\n  }\n  return false\n};\npp$1.regexp_eatKGroupName = function(state) {\n  if (state.eat(0x6B /* k */)) {\n    if (this.regexp_eatGroupName(state)) {\n      state.backReferenceNames.push(state.lastStringValue);\n      return true\n    }\n    state.raise(\"Invalid named reference\");\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp$1.regexp_eatCharacterEscape = function(state) {\n  return (\n    this.regexp_eatControlEscape(state) ||\n    this.regexp_eatCControlLetter(state) ||\n    this.regexp_eatZero(state) ||\n    this.regexp_eatHexEscapeSequence(state) ||\n    this.regexp_eatRegExpUnicodeEscapeSequence(state, false) ||\n    (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n    this.regexp_eatIdentityEscape(state)\n  )\n};\npp$1.regexp_eatCControlLetter = function(state) {\n  var start = state.pos;\n  if (state.eat(0x63 /* c */)) {\n    if (this.regexp_eatControlLetter(state)) {\n      return true\n    }\n    state.pos = start;\n  }\n  return false\n};\npp$1.regexp_eatZero = function(state) {\n  if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n    state.lastIntValue = 0;\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp$1.regexp_eatControlEscape = function(state) {\n  var ch = state.current();\n  if (ch === 0x74 /* t */) {\n    state.lastIntValue = 0x09; /* \\t */\n    state.advance();\n    return true\n  }\n  if (ch === 0x6E /* n */) {\n    state.lastIntValue = 0x0A; /* \\n */\n    state.advance();\n    return true\n  }\n  if (ch === 0x76 /* v */) {\n    state.lastIntValue = 0x0B; /* \\v */\n    state.advance();\n    return true\n  }\n  if (ch === 0x66 /* f */) {\n    state.lastIntValue = 0x0C; /* \\f */\n    state.advance();\n    return true\n  }\n  if (ch === 0x72 /* r */) {\n    state.lastIntValue = 0x0D; /* \\r */\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp$1.regexp_eatControlLetter = function(state) {\n  var ch = state.current();\n  if (isControlLetter(ch)) {\n    state.lastIntValue = ch % 0x20;\n    state.advance();\n    return true\n  }\n  return false\n};\nfunction isControlLetter(ch) {\n  return (\n    (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n    (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n  )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {\n  if ( forceU === void 0 ) forceU = false;\n\n  var start = state.pos;\n  var switchU = forceU || state.switchU;\n\n  if (state.eat(0x75 /* u */)) {\n    if (this.regexp_eatFixedHexDigits(state, 4)) {\n      var lead = state.lastIntValue;\n      if (switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n        var leadSurrogateEnd = state.pos;\n        if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n          var trail = state.lastIntValue;\n          if (trail >= 0xDC00 && trail <= 0xDFFF) {\n            state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n            return true\n          }\n        }\n        state.pos = leadSurrogateEnd;\n        state.lastIntValue = lead;\n      }\n      return true\n    }\n    if (\n      switchU &&\n      state.eat(0x7B /* { */) &&\n      this.regexp_eatHexDigits(state) &&\n      state.eat(0x7D /* } */) &&\n      isValidUnicode(state.lastIntValue)\n    ) {\n      return true\n    }\n    if (switchU) {\n      state.raise(\"Invalid unicode escape\");\n    }\n    state.pos = start;\n  }\n\n  return false\n};\nfunction isValidUnicode(ch) {\n  return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp$1.regexp_eatIdentityEscape = function(state) {\n  if (state.switchU) {\n    if (this.regexp_eatSyntaxCharacter(state)) {\n      return true\n    }\n    if (state.eat(0x2F /* / */)) {\n      state.lastIntValue = 0x2F; /* / */\n      return true\n    }\n    return false\n  }\n\n  var ch = state.current();\n  if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n    state.lastIntValue = ch;\n    state.advance();\n    return true\n  }\n\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp$1.regexp_eatDecimalEscape = function(state) {\n  state.lastIntValue = 0;\n  var ch = state.current();\n  if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n    do {\n      state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n      state.advance();\n    } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n    return true\n  }\n  return false\n};\n\n// Return values used by character set parsing methods, needed to\n// forbid negation of sets that can match strings.\nvar CharSetNone = 0; // Nothing parsed\nvar CharSetOk = 1; // Construct parsed, cannot contain strings\nvar CharSetString = 2; // Construct parsed, can contain strings\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp$1.regexp_eatCharacterClassEscape = function(state) {\n  var ch = state.current();\n\n  if (isCharacterClassEscape(ch)) {\n    state.lastIntValue = -1;\n    state.advance();\n    return CharSetOk\n  }\n\n  var negate = false;\n  if (\n    state.switchU &&\n    this.options.ecmaVersion >= 9 &&\n    ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */)\n  ) {\n    state.lastIntValue = -1;\n    state.advance();\n    var result;\n    if (\n      state.eat(0x7B /* { */) &&\n      (result = this.regexp_eatUnicodePropertyValueExpression(state)) &&\n      state.eat(0x7D /* } */)\n    ) {\n      if (negate && result === CharSetString) { state.raise(\"Invalid property name\"); }\n      return result\n    }\n    state.raise(\"Invalid property name\");\n  }\n\n  return CharSetNone\n};\n\nfunction isCharacterClassEscape(ch) {\n  return (\n    ch === 0x64 /* d */ ||\n    ch === 0x44 /* D */ ||\n    ch === 0x73 /* s */ ||\n    ch === 0x53 /* S */ ||\n    ch === 0x77 /* w */ ||\n    ch === 0x57 /* W */\n  )\n}\n\n// UnicodePropertyValueExpression ::\n//   UnicodePropertyName `=` UnicodePropertyValue\n//   LoneUnicodePropertyNameOrValue\npp$1.regexp_eatUnicodePropertyValueExpression = function(state) {\n  var start = state.pos;\n\n  // UnicodePropertyName `=` UnicodePropertyValue\n  if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n    var name = state.lastStringValue;\n    if (this.regexp_eatUnicodePropertyValue(state)) {\n      var value = state.lastStringValue;\n      this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n      return CharSetOk\n    }\n  }\n  state.pos = start;\n\n  // LoneUnicodePropertyNameOrValue\n  if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n    var nameOrValue = state.lastStringValue;\n    return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n  }\n  return CharSetNone\n};\n\npp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n  if (!hasOwn(state.unicodeProperties.nonBinary, name))\n    { state.raise(\"Invalid property name\"); }\n  if (!state.unicodeProperties.nonBinary[name].test(value))\n    { state.raise(\"Invalid property value\"); }\n};\n\npp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n  if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk }\n  if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString }\n  state.raise(\"Invalid property name\");\n};\n\n// UnicodePropertyName ::\n//   UnicodePropertyNameCharacters\npp$1.regexp_eatUnicodePropertyName = function(state) {\n  var ch = 0;\n  state.lastStringValue = \"\";\n  while (isUnicodePropertyNameCharacter(ch = state.current())) {\n    state.lastStringValue += codePointToString(ch);\n    state.advance();\n  }\n  return state.lastStringValue !== \"\"\n};\n\nfunction isUnicodePropertyNameCharacter(ch) {\n  return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n//   UnicodePropertyValueCharacters\npp$1.regexp_eatUnicodePropertyValue = function(state) {\n  var ch = 0;\n  state.lastStringValue = \"\";\n  while (isUnicodePropertyValueCharacter(ch = state.current())) {\n    state.lastStringValue += codePointToString(ch);\n    state.advance();\n  }\n  return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyValueCharacter(ch) {\n  return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n//   UnicodePropertyValueCharacters\npp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n  return this.regexp_eatUnicodePropertyValue(state)\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp$1.regexp_eatCharacterClass = function(state) {\n  if (state.eat(0x5B /* [ */)) {\n    var negate = state.eat(0x5E /* ^ */);\n    var result = this.regexp_classContents(state);\n    if (!state.eat(0x5D /* ] */))\n      { state.raise(\"Unterminated character class\"); }\n    if (negate && result === CharSetString)\n      { state.raise(\"Negated character class may contain strings\"); }\n    return true\n  }\n  return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassContents\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\npp$1.regexp_classContents = function(state) {\n  if (state.current() === 0x5D /* ] */) { return CharSetOk }\n  if (state.switchV) { return this.regexp_classSetExpression(state) }\n  this.regexp_nonEmptyClassRanges(state);\n  return CharSetOk\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp$1.regexp_nonEmptyClassRanges = function(state) {\n  while (this.regexp_eatClassAtom(state)) {\n    var left = state.lastIntValue;\n    if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n      var right = state.lastIntValue;\n      if (state.switchU && (left === -1 || right === -1)) {\n        state.raise(\"Invalid character class\");\n      }\n      if (left !== -1 && right !== -1 && left > right) {\n        state.raise(\"Range out of order in character class\");\n      }\n    }\n  }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp$1.regexp_eatClassAtom = function(state) {\n  var start = state.pos;\n\n  if (state.eat(0x5C /* \\ */)) {\n    if (this.regexp_eatClassEscape(state)) {\n      return true\n    }\n    if (state.switchU) {\n      // Make the same message as V8.\n      var ch$1 = state.current();\n      if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n        state.raise(\"Invalid class escape\");\n      }\n      state.raise(\"Invalid escape\");\n    }\n    state.pos = start;\n  }\n\n  var ch = state.current();\n  if (ch !== 0x5D /* ] */) {\n    state.lastIntValue = ch;\n    state.advance();\n    return true\n  }\n\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp$1.regexp_eatClassEscape = function(state) {\n  var start = state.pos;\n\n  if (state.eat(0x62 /* b */)) {\n    state.lastIntValue = 0x08; /* <BS> */\n    return true\n  }\n\n  if (state.switchU && state.eat(0x2D /* - */)) {\n    state.lastIntValue = 0x2D; /* - */\n    return true\n  }\n\n  if (!state.switchU && state.eat(0x63 /* c */)) {\n    if (this.regexp_eatClassControlLetter(state)) {\n      return true\n    }\n    state.pos = start;\n  }\n\n  return (\n    this.regexp_eatCharacterClassEscape(state) ||\n    this.regexp_eatCharacterEscape(state)\n  )\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetExpression\n// https://tc39.es/ecma262/#prod-ClassUnion\n// https://tc39.es/ecma262/#prod-ClassIntersection\n// https://tc39.es/ecma262/#prod-ClassSubtraction\npp$1.regexp_classSetExpression = function(state) {\n  var result = CharSetOk, subResult;\n  if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) {\n    if (subResult === CharSetString) { result = CharSetString; }\n    // https://tc39.es/ecma262/#prod-ClassIntersection\n    var start = state.pos;\n    while (state.eatChars([0x26, 0x26] /* && */)) {\n      if (\n        state.current() !== 0x26 /* & */ &&\n        (subResult = this.regexp_eatClassSetOperand(state))\n      ) {\n        if (subResult !== CharSetString) { result = CharSetOk; }\n        continue\n      }\n      state.raise(\"Invalid character in character class\");\n    }\n    if (start !== state.pos) { return result }\n    // https://tc39.es/ecma262/#prod-ClassSubtraction\n    while (state.eatChars([0x2D, 0x2D] /* -- */)) {\n      if (this.regexp_eatClassSetOperand(state)) { continue }\n      state.raise(\"Invalid character in character class\");\n    }\n    if (start !== state.pos) { return result }\n  } else {\n    state.raise(\"Invalid character in character class\");\n  }\n  // https://tc39.es/ecma262/#prod-ClassUnion\n  for (;;) {\n    if (this.regexp_eatClassSetRange(state)) { continue }\n    subResult = this.regexp_eatClassSetOperand(state);\n    if (!subResult) { return result }\n    if (subResult === CharSetString) { result = CharSetString; }\n  }\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetRange\npp$1.regexp_eatClassSetRange = function(state) {\n  var start = state.pos;\n  if (this.regexp_eatClassSetCharacter(state)) {\n    var left = state.lastIntValue;\n    if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) {\n      var right = state.lastIntValue;\n      if (left !== -1 && right !== -1 && left > right) {\n        state.raise(\"Range out of order in character class\");\n      }\n      return true\n    }\n    state.pos = start;\n  }\n  return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetOperand\npp$1.regexp_eatClassSetOperand = function(state) {\n  if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk }\n  return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state)\n};\n\n// https://tc39.es/ecma262/#prod-NestedClass\npp$1.regexp_eatNestedClass = function(state) {\n  var start = state.pos;\n  if (state.eat(0x5B /* [ */)) {\n    var negate = state.eat(0x5E /* ^ */);\n    var result = this.regexp_classContents(state);\n    if (state.eat(0x5D /* ] */)) {\n      if (negate && result === CharSetString) {\n        state.raise(\"Negated character class may contain strings\");\n      }\n      return result\n    }\n    state.pos = start;\n  }\n  if (state.eat(0x5C /* \\ */)) {\n    var result$1 = this.regexp_eatCharacterClassEscape(state);\n    if (result$1) {\n      return result$1\n    }\n    state.pos = start;\n  }\n  return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunction\npp$1.regexp_eatClassStringDisjunction = function(state) {\n  var start = state.pos;\n  if (state.eatChars([0x5C, 0x71] /* \\q */)) {\n    if (state.eat(0x7B /* { */)) {\n      var result = this.regexp_classStringDisjunctionContents(state);\n      if (state.eat(0x7D /* } */)) {\n        return result\n      }\n    } else {\n      // Make the same message as V8.\n      state.raise(\"Invalid escape\");\n    }\n    state.pos = start;\n  }\n  return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents\npp$1.regexp_classStringDisjunctionContents = function(state) {\n  var result = this.regexp_classString(state);\n  while (state.eat(0x7C /* | */)) {\n    if (this.regexp_classString(state) === CharSetString) { result = CharSetString; }\n  }\n  return result\n};\n\n// https://tc39.es/ecma262/#prod-ClassString\n// https://tc39.es/ecma262/#prod-NonEmptyClassString\npp$1.regexp_classString = function(state) {\n  var count = 0;\n  while (this.regexp_eatClassSetCharacter(state)) { count++; }\n  return count === 1 ? CharSetOk : CharSetString\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetCharacter\npp$1.regexp_eatClassSetCharacter = function(state) {\n  var start = state.pos;\n  if (state.eat(0x5C /* \\ */)) {\n    if (\n      this.regexp_eatCharacterEscape(state) ||\n      this.regexp_eatClassSetReservedPunctuator(state)\n    ) {\n      return true\n    }\n    if (state.eat(0x62 /* b */)) {\n      state.lastIntValue = 0x08; /* <BS> */\n      return true\n    }\n    state.pos = start;\n    return false\n  }\n  var ch = state.current();\n  if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false }\n  if (isClassSetSyntaxCharacter(ch)) { return false }\n  state.advance();\n  state.lastIntValue = ch;\n  return true\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator\nfunction isClassSetReservedDoublePunctuatorCharacter(ch) {\n  return (\n    ch === 0x21 /* ! */ ||\n    ch >= 0x23 /* # */ && ch <= 0x26 /* & */ ||\n    ch >= 0x2A /* * */ && ch <= 0x2C /* , */ ||\n    ch === 0x2E /* . */ ||\n    ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ ||\n    ch === 0x5E /* ^ */ ||\n    ch === 0x60 /* ` */ ||\n    ch === 0x7E /* ~ */\n  )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter\nfunction isClassSetSyntaxCharacter(ch) {\n  return (\n    ch === 0x28 /* ( */ ||\n    ch === 0x29 /* ) */ ||\n    ch === 0x2D /* - */ ||\n    ch === 0x2F /* / */ ||\n    ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ ||\n    ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n  )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\npp$1.regexp_eatClassSetReservedPunctuator = function(state) {\n  var ch = state.current();\n  if (isClassSetReservedPunctuator(ch)) {\n    state.lastIntValue = ch;\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\nfunction isClassSetReservedPunctuator(ch) {\n  return (\n    ch === 0x21 /* ! */ ||\n    ch === 0x23 /* # */ ||\n    ch === 0x25 /* % */ ||\n    ch === 0x26 /* & */ ||\n    ch === 0x2C /* , */ ||\n    ch === 0x2D /* - */ ||\n    ch >= 0x3A /* : */ && ch <= 0x3E /* > */ ||\n    ch === 0x40 /* @ */ ||\n    ch === 0x60 /* ` */ ||\n    ch === 0x7E /* ~ */\n  )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp$1.regexp_eatClassControlLetter = function(state) {\n  var ch = state.current();\n  if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n    state.lastIntValue = ch % 0x20;\n    state.advance();\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatHexEscapeSequence = function(state) {\n  var start = state.pos;\n  if (state.eat(0x78 /* x */)) {\n    if (this.regexp_eatFixedHexDigits(state, 2)) {\n      return true\n    }\n    if (state.switchU) {\n      state.raise(\"Invalid escape\");\n    }\n    state.pos = start;\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp$1.regexp_eatDecimalDigits = function(state) {\n  var start = state.pos;\n  var ch = 0;\n  state.lastIntValue = 0;\n  while (isDecimalDigit(ch = state.current())) {\n    state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n    state.advance();\n  }\n  return state.pos !== start\n};\nfunction isDecimalDigit(ch) {\n  return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp$1.regexp_eatHexDigits = function(state) {\n  var start = state.pos;\n  var ch = 0;\n  state.lastIntValue = 0;\n  while (isHexDigit(ch = state.current())) {\n    state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n    state.advance();\n  }\n  return state.pos !== start\n};\nfunction isHexDigit(ch) {\n  return (\n    (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n    (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n    (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n  )\n}\nfunction hexToInt(ch) {\n  if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n    return 10 + (ch - 0x41 /* A */)\n  }\n  if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n    return 10 + (ch - 0x61 /* a */)\n  }\n  return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp$1.regexp_eatLegacyOctalEscapeSequence = function(state) {\n  if (this.regexp_eatOctalDigit(state)) {\n    var n1 = state.lastIntValue;\n    if (this.regexp_eatOctalDigit(state)) {\n      var n2 = state.lastIntValue;\n      if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n        state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n      } else {\n        state.lastIntValue = n1 * 8 + n2;\n      }\n    } else {\n      state.lastIntValue = n1;\n    }\n    return true\n  }\n  return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp$1.regexp_eatOctalDigit = function(state) {\n  var ch = state.current();\n  if (isOctalDigit(ch)) {\n    state.lastIntValue = ch - 0x30; /* 0 */\n    state.advance();\n    return true\n  }\n  state.lastIntValue = 0;\n  return false\n};\nfunction isOctalDigit(ch) {\n  return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatFixedHexDigits = function(state, length) {\n  var start = state.pos;\n  state.lastIntValue = 0;\n  for (var i = 0; i < length; ++i) {\n    var ch = state.current();\n    if (!isHexDigit(ch)) {\n      state.pos = start;\n      return false\n    }\n    state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n    state.advance();\n  }\n  return true\n};\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n  this.type = p.type;\n  this.value = p.value;\n  this.start = p.start;\n  this.end = p.end;\n  if (p.options.locations)\n    { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n  if (p.options.ranges)\n    { this.range = [p.start, p.end]; }\n};\n\n// ## Tokenizer\n\nvar pp = Parser.prototype;\n\n// Move to the next token\n\npp.next = function(ignoreEscapeSequenceInKeyword) {\n  if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc)\n    { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + this.type.keyword); }\n  if (this.options.onToken)\n    { this.options.onToken(new Token(this)); }\n\n  this.lastTokEnd = this.end;\n  this.lastTokStart = this.start;\n  this.lastTokEndLoc = this.endLoc;\n  this.lastTokStartLoc = this.startLoc;\n  this.nextToken();\n};\n\npp.getToken = function() {\n  this.next();\n  return new Token(this)\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n  { pp[Symbol.iterator] = function() {\n    var this$1$1 = this;\n\n    return {\n      next: function () {\n        var token = this$1$1.getToken();\n        return {\n          done: token.type === types$1.eof,\n          value: token\n        }\n      }\n    }\n  }; }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n  var curContext = this.curContext();\n  if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n  this.start = this.pos;\n  if (this.options.locations) { this.startLoc = this.curPosition(); }\n  if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) }\n\n  if (curContext.override) { return curContext.override(this) }\n  else { this.readToken(this.fullCharCodeAtPos()); }\n};\n\npp.readToken = function(code) {\n  // Identifier or keyword. '\\uXXXX' sequences are allowed in\n  // identifiers, so '\\' also dispatches to that.\n  if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n    { return this.readWord() }\n\n  return this.getTokenFromCode(code)\n};\n\npp.fullCharCodeAt = function(pos) {\n  var code = this.input.charCodeAt(pos);\n  if (code <= 0xd7ff || code >= 0xdc00) { return code }\n  var next = this.input.charCodeAt(pos + 1);\n  return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\n};\n\npp.fullCharCodeAtPos = function() {\n  return this.fullCharCodeAt(this.pos)\n};\n\npp.skipBlockComment = function() {\n  var startLoc = this.options.onComment && this.curPosition();\n  var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n  if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n  this.pos = end + 2;\n  if (this.options.locations) {\n    for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) {\n      ++this.curLine;\n      pos = this.lineStart = nextBreak;\n    }\n  }\n  if (this.options.onComment)\n    { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n                           startLoc, this.curPosition()); }\n};\n\npp.skipLineComment = function(startSkip) {\n  var start = this.pos;\n  var startLoc = this.options.onComment && this.curPosition();\n  var ch = this.input.charCodeAt(this.pos += startSkip);\n  while (this.pos < this.input.length && !isNewLine(ch)) {\n    ch = this.input.charCodeAt(++this.pos);\n  }\n  if (this.options.onComment)\n    { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n                           startLoc, this.curPosition()); }\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n  loop: while (this.pos < this.input.length) {\n    var ch = this.input.charCodeAt(this.pos);\n    switch (ch) {\n    case 32: case 160: // ' '\n      ++this.pos;\n      break\n    case 13:\n      if (this.input.charCodeAt(this.pos + 1) === 10) {\n        ++this.pos;\n      }\n    case 10: case 8232: case 8233:\n      ++this.pos;\n      if (this.options.locations) {\n        ++this.curLine;\n        this.lineStart = this.pos;\n      }\n      break\n    case 47: // '/'\n      switch (this.input.charCodeAt(this.pos + 1)) {\n      case 42: // '*'\n        this.skipBlockComment();\n        break\n      case 47:\n        this.skipLineComment(2);\n        break\n      default:\n        break loop\n      }\n      break\n    default:\n      if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n        ++this.pos;\n      } else {\n        break loop\n      }\n    }\n  }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n  this.end = this.pos;\n  if (this.options.locations) { this.endLoc = this.curPosition(); }\n  var prevType = this.type;\n  this.type = type;\n  this.value = val;\n\n  this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next >= 48 && next <= 57) { return this.readNumber(true) }\n  var next2 = this.input.charCodeAt(this.pos + 2);\n  if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n    this.pos += 3;\n    return this.finishToken(types$1.ellipsis)\n  } else {\n    ++this.pos;\n    return this.finishToken(types$1.dot)\n  }\n};\n\npp.readToken_slash = function() { // '/'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n  if (next === 61) { return this.finishOp(types$1.assign, 2) }\n  return this.finishOp(types$1.slash, 1)\n};\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n  var next = this.input.charCodeAt(this.pos + 1);\n  var size = 1;\n  var tokentype = code === 42 ? types$1.star : types$1.modulo;\n\n  // exponentiation operator ** and **=\n  if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n    ++size;\n    tokentype = types$1.starstar;\n    next = this.input.charCodeAt(this.pos + 2);\n  }\n\n  if (next === 61) { return this.finishOp(types$1.assign, size + 1) }\n  return this.finishOp(tokentype, size)\n};\n\npp.readToken_pipe_amp = function(code) { // '|&'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next === code) {\n    if (this.options.ecmaVersion >= 12) {\n      var next2 = this.input.charCodeAt(this.pos + 2);\n      if (next2 === 61) { return this.finishOp(types$1.assign, 3) }\n    }\n    return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2)\n  }\n  if (next === 61) { return this.finishOp(types$1.assign, 2) }\n  return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1)\n};\n\npp.readToken_caret = function() { // '^'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next === 61) { return this.finishOp(types$1.assign, 2) }\n  return this.finishOp(types$1.bitwiseXOR, 1)\n};\n\npp.readToken_plus_min = function(code) { // '+-'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next === code) {\n    if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n        (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n      // A `-->` line comment\n      this.skipLineComment(3);\n      this.skipSpace();\n      return this.nextToken()\n    }\n    return this.finishOp(types$1.incDec, 2)\n  }\n  if (next === 61) { return this.finishOp(types$1.assign, 2) }\n  return this.finishOp(types$1.plusMin, 1)\n};\n\npp.readToken_lt_gt = function(code) { // '<>'\n  var next = this.input.charCodeAt(this.pos + 1);\n  var size = 1;\n  if (next === code) {\n    size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n    if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) }\n    return this.finishOp(types$1.bitShift, size)\n  }\n  if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n      this.input.charCodeAt(this.pos + 3) === 45) {\n    // `<!--`, an XML-style comment that should be interpreted as a line comment\n    this.skipLineComment(4);\n    this.skipSpace();\n    return this.nextToken()\n  }\n  if (next === 61) { size = 2; }\n  return this.finishOp(types$1.relational, size)\n};\n\npp.readToken_eq_excl = function(code) { // '=!'\n  var next = this.input.charCodeAt(this.pos + 1);\n  if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n  if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n    this.pos += 2;\n    return this.finishToken(types$1.arrow)\n  }\n  return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1)\n};\n\npp.readToken_question = function() { // '?'\n  var ecmaVersion = this.options.ecmaVersion;\n  if (ecmaVersion >= 11) {\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === 46) {\n      var next2 = this.input.charCodeAt(this.pos + 2);\n      if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) }\n    }\n    if (next === 63) {\n      if (ecmaVersion >= 12) {\n        var next2$1 = this.input.charCodeAt(this.pos + 2);\n        if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) }\n      }\n      return this.finishOp(types$1.coalesce, 2)\n    }\n  }\n  return this.finishOp(types$1.question, 1)\n};\n\npp.readToken_numberSign = function() { // '#'\n  var ecmaVersion = this.options.ecmaVersion;\n  var code = 35; // '#'\n  if (ecmaVersion >= 13) {\n    ++this.pos;\n    code = this.fullCharCodeAtPos();\n    if (isIdentifierStart(code, true) || code === 92 /* '\\' */) {\n      return this.finishToken(types$1.privateId, this.readWord1())\n    }\n  }\n\n  this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.getTokenFromCode = function(code) {\n  switch (code) {\n  // The interpretation of a dot depends on whether it is followed\n  // by a digit or another two dots.\n  case 46: // '.'\n    return this.readToken_dot()\n\n  // Punctuation tokens.\n  case 40: ++this.pos; return this.finishToken(types$1.parenL)\n  case 41: ++this.pos; return this.finishToken(types$1.parenR)\n  case 59: ++this.pos; return this.finishToken(types$1.semi)\n  case 44: ++this.pos; return this.finishToken(types$1.comma)\n  case 91: ++this.pos; return this.finishToken(types$1.bracketL)\n  case 93: ++this.pos; return this.finishToken(types$1.bracketR)\n  case 123: ++this.pos; return this.finishToken(types$1.braceL)\n  case 125: ++this.pos; return this.finishToken(types$1.braceR)\n  case 58: ++this.pos; return this.finishToken(types$1.colon)\n\n  case 96: // '`'\n    if (this.options.ecmaVersion < 6) { break }\n    ++this.pos;\n    return this.finishToken(types$1.backQuote)\n\n  case 48: // '0'\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n    if (this.options.ecmaVersion >= 6) {\n      if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n      if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n    }\n\n  // Anything else beginning with a digit is an integer, octal\n  // number, or float.\n  case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n    return this.readNumber(false)\n\n  // Quotes produce strings.\n  case 34: case 39: // '\"', \"'\"\n    return this.readString(code)\n\n  // Operators are parsed inline in tiny state machines. '=' (61) is\n  // often referred to. `finishOp` simply skips the amount of\n  // characters it is given as second argument, and returns a token\n  // of the type given by its first argument.\n  case 47: // '/'\n    return this.readToken_slash()\n\n  case 37: case 42: // '%*'\n    return this.readToken_mult_modulo_exp(code)\n\n  case 124: case 38: // '|&'\n    return this.readToken_pipe_amp(code)\n\n  case 94: // '^'\n    return this.readToken_caret()\n\n  case 43: case 45: // '+-'\n    return this.readToken_plus_min(code)\n\n  case 60: case 62: // '<>'\n    return this.readToken_lt_gt(code)\n\n  case 61: case 33: // '=!'\n    return this.readToken_eq_excl(code)\n\n  case 63: // '?'\n    return this.readToken_question()\n\n  case 126: // '~'\n    return this.finishOp(types$1.prefix, 1)\n\n  case 35: // '#'\n    return this.readToken_numberSign()\n  }\n\n  this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.finishOp = function(type, size) {\n  var str = this.input.slice(this.pos, this.pos + size);\n  this.pos += size;\n  return this.finishToken(type, str)\n};\n\npp.readRegexp = function() {\n  var escaped, inClass, start = this.pos;\n  for (;;) {\n    if (this.pos >= this.input.length) { this.raise(start, \"Unterminated regular expression\"); }\n    var ch = this.input.charAt(this.pos);\n    if (lineBreak.test(ch)) { this.raise(start, \"Unterminated regular expression\"); }\n    if (!escaped) {\n      if (ch === \"[\") { inClass = true; }\n      else if (ch === \"]\" && inClass) { inClass = false; }\n      else if (ch === \"/\" && !inClass) { break }\n      escaped = ch === \"\\\\\";\n    } else { escaped = false; }\n    ++this.pos;\n  }\n  var pattern = this.input.slice(start, this.pos);\n  ++this.pos;\n  var flagsStart = this.pos;\n  var flags = this.readWord1();\n  if (this.containsEsc) { this.unexpected(flagsStart); }\n\n  // Validate pattern\n  var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n  state.reset(start, pattern, flags);\n  this.validateRegExpFlags(state);\n  this.validateRegExpPattern(state);\n\n  // Create Literal#value property value.\n  var value = null;\n  try {\n    value = new RegExp(pattern, flags);\n  } catch (e) {\n    // ESTree requires null if it failed to instantiate RegExp object.\n    // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n  }\n\n  return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value})\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {\n  // `len` is used for character escape sequences. In that case, disallow separators.\n  var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined;\n\n  // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b)\n  // and isn't fraction part nor exponent part. In that case, if the first digit\n  // is zero then disallow separators.\n  var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48;\n\n  var start = this.pos, total = 0, lastCode = 0;\n  for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) {\n    var code = this.input.charCodeAt(this.pos), val = (void 0);\n\n    if (allowSeparators && code === 95) {\n      if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed in legacy octal numeric literals\"); }\n      if (lastCode === 95) { this.raiseRecoverable(this.pos, \"Numeric separator must be exactly one underscore\"); }\n      if (i === 0) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed at the first of digits\"); }\n      lastCode = code;\n      continue\n    }\n\n    if (code >= 97) { val = code - 97 + 10; } // a\n    else if (code >= 65) { val = code - 65 + 10; } // A\n    else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n    else { val = Infinity; }\n    if (val >= radix) { break }\n    lastCode = code;\n    total = total * radix + val;\n  }\n\n  if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, \"Numeric separator is not allowed at the last of digits\"); }\n  if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n  return total\n};\n\nfunction stringToNumber(str, isLegacyOctalNumericLiteral) {\n  if (isLegacyOctalNumericLiteral) {\n    return parseInt(str, 8)\n  }\n\n  // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value.\n  return parseFloat(str.replace(/_/g, \"\"))\n}\n\nfunction stringToBigInt(str) {\n  if (typeof BigInt !== \"function\") {\n    return null\n  }\n\n  // `BigInt(value)` throws syntax error if the string contains numeric separators.\n  return BigInt(str.replace(/_/g, \"\"))\n}\n\npp.readRadixNumber = function(radix) {\n  var start = this.pos;\n  this.pos += 2; // 0x\n  var val = this.readInt(radix);\n  if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n  if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {\n    val = stringToBigInt(this.input.slice(start, this.pos));\n    ++this.pos;\n  } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n  return this.finishToken(types$1.num, val)\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n  var start = this.pos;\n  if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, \"Invalid number\"); }\n  var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n  if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n  var next = this.input.charCodeAt(this.pos);\n  if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {\n    var val$1 = stringToBigInt(this.input.slice(start, this.pos));\n    ++this.pos;\n    if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n    return this.finishToken(types$1.num, val$1)\n  }\n  if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n  if (next === 46 && !octal) { // '.'\n    ++this.pos;\n    this.readInt(10);\n    next = this.input.charCodeAt(this.pos);\n  }\n  if ((next === 69 || next === 101) && !octal) { // 'eE'\n    next = this.input.charCodeAt(++this.pos);\n    if (next === 43 || next === 45) { ++this.pos; } // '+-'\n    if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n  }\n  if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n  var val = stringToNumber(this.input.slice(start, this.pos), octal);\n  return this.finishToken(types$1.num, val)\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n  var ch = this.input.charCodeAt(this.pos), code;\n\n  if (ch === 123) { // '{'\n    if (this.options.ecmaVersion < 6) { this.unexpected(); }\n    var codePos = ++this.pos;\n    code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n    ++this.pos;\n    if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n  } else {\n    code = this.readHexChar(4);\n  }\n  return code\n};\n\npp.readString = function(quote) {\n  var out = \"\", chunkStart = ++this.pos;\n  for (;;) {\n    if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated string constant\"); }\n    var ch = this.input.charCodeAt(this.pos);\n    if (ch === quote) { break }\n    if (ch === 92) { // '\\'\n      out += this.input.slice(chunkStart, this.pos);\n      out += this.readEscapedChar(false);\n      chunkStart = this.pos;\n    } else if (ch === 0x2028 || ch === 0x2029) {\n      if (this.options.ecmaVersion < 10) { this.raise(this.start, \"Unterminated string constant\"); }\n      ++this.pos;\n      if (this.options.locations) {\n        this.curLine++;\n        this.lineStart = this.pos;\n      }\n    } else {\n      if (isNewLine(ch)) { this.raise(this.start, \"Unterminated string constant\"); }\n      ++this.pos;\n    }\n  }\n  out += this.input.slice(chunkStart, this.pos++);\n  return this.finishToken(types$1.string, out)\n};\n\n// Reads template string tokens.\n\nvar INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\npp.tryReadTemplateToken = function() {\n  this.inTemplateElement = true;\n  try {\n    this.readTmplToken();\n  } catch (err) {\n    if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n      this.readInvalidTemplateToken();\n    } else {\n      throw err\n    }\n  }\n\n  this.inTemplateElement = false;\n};\n\npp.invalidStringToken = function(position, message) {\n  if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n    throw INVALID_TEMPLATE_ESCAPE_ERROR\n  } else {\n    this.raise(position, message);\n  }\n};\n\npp.readTmplToken = function() {\n  var out = \"\", chunkStart = this.pos;\n  for (;;) {\n    if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated template\"); }\n    var ch = this.input.charCodeAt(this.pos);\n    if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n      if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) {\n        if (ch === 36) {\n          this.pos += 2;\n          return this.finishToken(types$1.dollarBraceL)\n        } else {\n          ++this.pos;\n          return this.finishToken(types$1.backQuote)\n        }\n      }\n      out += this.input.slice(chunkStart, this.pos);\n      return this.finishToken(types$1.template, out)\n    }\n    if (ch === 92) { // '\\'\n      out += this.input.slice(chunkStart, this.pos);\n      out += this.readEscapedChar(true);\n      chunkStart = this.pos;\n    } else if (isNewLine(ch)) {\n      out += this.input.slice(chunkStart, this.pos);\n      ++this.pos;\n      switch (ch) {\n      case 13:\n        if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; }\n      case 10:\n        out += \"\\n\";\n        break\n      default:\n        out += String.fromCharCode(ch);\n        break\n      }\n      if (this.options.locations) {\n        ++this.curLine;\n        this.lineStart = this.pos;\n      }\n      chunkStart = this.pos;\n    } else {\n      ++this.pos;\n    }\n  }\n};\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n  for (; this.pos < this.input.length; this.pos++) {\n    switch (this.input[this.pos]) {\n    case \"\\\\\":\n      ++this.pos;\n      break\n\n    case \"$\":\n      if (this.input[this.pos + 1] !== \"{\") { break }\n      // fall through\n    case \"`\":\n      return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos))\n\n    case \"\\r\":\n      if (this.input[this.pos + 1] === \"\\n\") { ++this.pos; }\n      // fall through\n    case \"\\n\": case \"\\u2028\": case \"\\u2029\":\n      ++this.curLine;\n      this.lineStart = this.pos + 1;\n      break\n    }\n  }\n  this.raise(this.start, \"Unterminated template\");\n};\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n  var ch = this.input.charCodeAt(++this.pos);\n  ++this.pos;\n  switch (ch) {\n  case 110: return \"\\n\" // 'n' -> '\\n'\n  case 114: return \"\\r\" // 'r' -> '\\r'\n  case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n  case 117: return codePointToString(this.readCodePoint()) // 'u'\n  case 116: return \"\\t\" // 't' -> '\\t'\n  case 98: return \"\\b\" // 'b' -> '\\b'\n  case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n  case 102: return \"\\f\" // 'f' -> '\\f'\n  case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n  case 10: // ' \\n'\n    if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n    return \"\"\n  case 56:\n  case 57:\n    if (this.strict) {\n      this.invalidStringToken(\n        this.pos - 1,\n        \"Invalid escape sequence\"\n      );\n    }\n    if (inTemplate) {\n      var codePos = this.pos - 1;\n\n      this.invalidStringToken(\n        codePos,\n        \"Invalid escape sequence in template string\"\n      );\n    }\n  default:\n    if (ch >= 48 && ch <= 55) {\n      var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n      var octal = parseInt(octalStr, 8);\n      if (octal > 255) {\n        octalStr = octalStr.slice(0, -1);\n        octal = parseInt(octalStr, 8);\n      }\n      this.pos += octalStr.length - 1;\n      ch = this.input.charCodeAt(this.pos);\n      if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n        this.invalidStringToken(\n          this.pos - 1 - octalStr.length,\n          inTemplate\n            ? \"Octal literal in template string\"\n            : \"Octal literal in strict mode\"\n        );\n      }\n      return String.fromCharCode(octal)\n    }\n    if (isNewLine(ch)) {\n      // Unicode new line characters after \\ get removed from output in both\n      // template literals and strings\n      if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n      return \"\"\n    }\n    return String.fromCharCode(ch)\n  }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n  var codePos = this.pos;\n  var n = this.readInt(16, len);\n  if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n  return n\n};\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n  this.containsEsc = false;\n  var word = \"\", first = true, chunkStart = this.pos;\n  var astral = this.options.ecmaVersion >= 6;\n  while (this.pos < this.input.length) {\n    var ch = this.fullCharCodeAtPos();\n    if (isIdentifierChar(ch, astral)) {\n      this.pos += ch <= 0xffff ? 1 : 2;\n    } else if (ch === 92) { // \"\\\"\n      this.containsEsc = true;\n      word += this.input.slice(chunkStart, this.pos);\n      var escStart = this.pos;\n      if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n        { this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n      ++this.pos;\n      var esc = this.readCodePoint();\n      if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n        { this.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n      word += codePointToString(esc);\n      chunkStart = this.pos;\n    } else {\n      break\n    }\n    first = false;\n  }\n  return word + this.input.slice(chunkStart, this.pos)\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n  var word = this.readWord1();\n  var type = types$1.name;\n  if (this.keywords.test(word)) {\n    type = keywords[word];\n  }\n  return this.finishToken(type, word)\n};\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n//     http://marijnhaverbeke.nl/git/acorn\n//     https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n\n\nvar version = \"8.17.0\";\n\nParser.acorn = {\n  Parser: Parser,\n  version: version,\n  defaultOptions: defaultOptions,\n  Position: Position,\n  SourceLocation: SourceLocation,\n  getLineInfo: getLineInfo,\n  Node: Node,\n  TokenType: TokenType,\n  tokTypes: types$1,\n  keywordTypes: keywords,\n  TokContext: TokContext,\n  tokContexts: types,\n  isIdentifierChar: isIdentifierChar,\n  isIdentifierStart: isIdentifierStart,\n  Token: Token,\n  isNewLine: isNewLine,\n  lineBreak: lineBreak,\n  lineBreakG: lineBreakG,\n  nonASCIIwhitespace: nonASCIIwhitespace\n};\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and returns\n// an abstract syntax tree as specified by the [ESTree spec][estree].\n//\n// [estree]: https://github.com/estree/estree\n\nfunction parse(input, options) {\n  return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n  return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n  return Parser.tokenizer(input, options)\n}\n\nexport { Node, Parser, Position, SourceLocation, TokContext, Token, TokenType, defaultOptions, getLineInfo, isIdentifierChar, isIdentifierStart, isNewLine, keywords as keywordTypes, lineBreak, lineBreakG, nonASCIIwhitespace, parse, parseExpressionAt, types as tokContexts, types$1 as tokTypes, tokenizer, version };\n","// ESM-to-CJS conversion via acorn AST, with regex fallback\r\n\r\nimport * as acorn from \"acorn\";\r\n\r\n// Pre-compiled regex patterns for fallback paths (avoid per-call compilation)\r\nconst RE_AWAIT_QUICK = /\\bawait\\b/;\r\nconst RE_ASYNC_QUICK = /\\basync\\b/;\r\nconst RE_AWAIT_LOOKAHEAD = /(?<![.\\w])await\\s+(?=[\\w$(\"'\\[`!~+\\-/])/;\r\nconst RE_AWAIT_LOOKAHEAD_G = /(?<![.\\w])await\\s+(?=[\\w$(\"'\\[`!~+\\-/])/g;\r\nconst RE_ASYNC_FN_G = /(?<![.\\w])async\\s+(?=function[\\s*(])/g;\r\nconst RE_ASYNC_PAREN_G = /(?<![.\\w])async\\s+(?=\\()/g;\r\nconst RE_ASYNC_ARROW_G = /(?<![.\\w])async\\s+(?=\\w+\\s*=>)/g;\r\nconst RE_TYPE_IMPORT_BRACES = /import\\s+type\\s+\\{[^}]*\\}\\s+from\\s+['\"][^'\"]+['\"]\\s*;?/g;\r\nconst RE_TYPE_IMPORT_DEFAULT = /import\\s+type\\s+\\w+\\s+from\\s+['\"][^'\"]+['\"]\\s*;?/g;\r\nconst RE_TYPE_IMPORT_STAR = /import\\s+type\\s+\\*\\s+as\\s+\\w+\\s+from\\s+['\"][^'\"]+['\"]\\s*;?/g;\r\nconst RE_MIXED_TYPE_IMPORT = /import\\s+\\{([^}]*\\btype\\s+\\w+[^}]*)\\}\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?/g;\r\nconst RE_TYPE_EXPORT_FROM = /export\\s+type\\s+\\{[^}]*\\}\\s+from\\s+['\"][^'\"]+['\"]\\s*;?/g;\r\nconst RE_TYPE_EXPORT = /export\\s+type\\s+\\{[^}]*\\}\\s*;?/g;\r\nconst RE_IMPORT_STAR = /import\\s+\\*\\s+as\\s+(\\w+)\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?/g;\r\nconst RE_IMPORT_DEFAULT_NAMED = /import\\s+(\\w+)\\s*,\\s*\\{([^}]+)\\}\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?/g;\r\nconst RE_IMPORT_DEFAULT = /import\\s+(\\w+)\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?/g;\r\nconst RE_IMPORT_NAMED = /import\\s+\\{([^}]+)\\}\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?/g;\r\nconst RE_IMPORT_SIDE_EFFECT = /import\\s+['\"]([^'\"]+)['\"]\\s*;?/g;\r\nconst RE_EXPORT_DEFAULT_CLASS = /export\\s+default\\s+class\\s+(\\w+)/g;\r\nconst RE_EXPORT_DEFAULT_FN_NAMED = /export\\s+default\\s+function\\s+(\\w+)/g;\r\nconst RE_EXPORT_DEFAULT_FN_ANON = /export\\s+default\\s+function\\s*\\(/g;\r\nconst RE_EXPORT_DEFAULT = /export\\s+default\\s+/g;\r\nconst RE_EXPORT_STAR_AS = /export\\s+\\*\\s+as\\s+(\\w+)\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?/g;\r\nconst RE_EXPORT_STAR = /export\\s+\\*\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?/g;\r\nconst RE_EXPORT_NAMED_FROM = /export\\s+\\{([^}]+)\\}\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?/g;\r\nconst RE_EXPORT_NAMED = /export\\s+\\{([^}]+)\\}\\s*;?/g;\r\nconst RE_EXPORT_ASYNC_FN = /export\\s+async\\s+function\\s+(\\w+)/g;\r\nconst RE_EXPORT_FN = /export\\s+function\\s+(\\w+)/g;\r\nconst RE_EXPORT_CLASS = /export\\s+class\\s+(\\w+)/g;\r\nconst RE_EXPORT_VAR = /export\\s+(?:const|let|var)\\s+(\\w+)\\s*=/g;\r\nconst RE_AS_RENAME = /(\\w+)\\s+as\\s+(\\w+)/g;\r\nconst RE_TYPE_SPEC = /^\\s*type\\s+\\w+/;\r\nconst RE_AS_SPLIT = /\\s+as\\s+/;\r\n\r\nexport function esmToCjs(code: string): string {\r\n  try {\r\n    return esmToCjsViaAst(code);\r\n  } catch {\r\n    return esmToCjsViaRegex(code);\r\n  }\r\n}\r\n\r\n// collect ESM→CJS patches from a pre-parsed AST, pushes into the patches array\r\nexport function collectEsmCjsPatches(\r\n  ast: any,\r\n  code: string,\r\n  patches: Array<[number, number, string]>,\r\n): void {\r\n  const hasDefaultExport = ast.body.some(\r\n    (n: any) => n.type === \"ExportDefaultDeclaration\",\r\n  );\r\n  // ExportAllDeclaration covers `export * from` and `export * as X from`,\r\n  // both produce named exports. without counting them mixed with a default\r\n  // export, `module.exports = X` ends up clobbering the named ones. #56\r\n  const hasNamedExport = ast.body.some(\r\n    (n: any) =>\r\n      n.type === \"ExportNamedDeclaration\" || n.type === \"ExportAllDeclaration\",\r\n  );\r\n  const mixedExports = hasDefaultExport && hasNamedExport;\r\n\r\n  // collected during the walk, prepended at the bottom of this fn\r\n  const hoistedFunctionExports: string[] = [];\r\n\r\n  for (const node of ast.body) {\r\n    if (node.type === \"ImportDeclaration\") {\r\n      const src = node.source.value;\r\n      const specs = node.specifiers;\r\n\r\n      if (specs.length === 0) {\r\n        patches.push([\r\n          node.start,\r\n          node.end,\r\n          `require(${JSON.stringify(src)});`,\r\n        ]);\r\n      } else {\r\n        const defSpec = specs.find(\r\n          (s: any) => s.type === \"ImportDefaultSpecifier\",\r\n        );\r\n        const nsSpec = specs.find(\r\n          (s: any) => s.type === \"ImportNamespaceSpecifier\",\r\n        );\r\n        const namedSpecs = specs.filter(\r\n          (s: any) => s.type === \"ImportSpecifier\",\r\n        );\r\n\r\n        const lines: string[] = [];\r\n        const tmpVar = `__import_${node.start}`;\r\n        const needsTmp = defSpec && (namedSpecs.length > 0 || nsSpec);\r\n\r\n        if (needsTmp) {\r\n          lines.push(`const ${tmpVar} = require(${JSON.stringify(src)})`);\r\n          lines.push(\r\n            `const ${defSpec.local.name} = ${tmpVar}.__esModule ? ${tmpVar}.default : ${tmpVar}`,\r\n          );\r\n        } else if (defSpec) {\r\n          lines.push(\r\n            `const ${defSpec.local.name} = (function(m) { return m.__esModule ? m.default : m; })(require(${JSON.stringify(src)}))`,\r\n          );\r\n        }\r\n\r\n        if (nsSpec) {\r\n          if (!needsTmp) {\r\n            lines.push(\r\n              `const ${nsSpec.local.name} = require(${JSON.stringify(src)})`,\r\n            );\r\n          } else {\r\n            lines.push(`const ${nsSpec.local.name} = ${tmpVar}`);\r\n          }\r\n        }\r\n\r\n        if (namedSpecs.length > 0) {\r\n          const binds = namedSpecs\r\n            .map((s: any) =>\r\n              s.imported.name === s.local.name\r\n                ? s.local.name\r\n                : `${s.imported.name}: ${s.local.name}`,\r\n            )\r\n            .join(\", \");\r\n          if (needsTmp) {\r\n            lines.push(`const { ${binds} } = ${tmpVar}`);\r\n          } else {\r\n            lines.push(`const { ${binds} } = require(${JSON.stringify(src)})`);\r\n          }\r\n        }\r\n        patches.push([node.start, node.end, lines.join(\";\\n\") + \";\"]);\r\n      }\r\n    } else if (node.type === \"ExportDefaultDeclaration\") {\r\n      const decl = node.declaration;\r\n      const exportTarget = mixedExports ? \"exports.default\" : \"module.exports\";\r\n\r\n      if (\r\n        (decl.type === \"FunctionDeclaration\" ||\r\n          decl.type === \"ClassDeclaration\") &&\r\n        decl.id?.name\r\n      ) {\r\n        // Non-overlapping: remove \"export default \", append binding\r\n        patches.push([node.start, decl.start, \"\"]);\r\n        patches.push([\r\n          node.end,\r\n          node.end,\r\n          `;\\n${exportTarget} = ${decl.id.name};`,\r\n        ]);\r\n      } else {\r\n        // Replace \"export default \" with assignment target\r\n        patches.push([node.start, decl.start, `${exportTarget} = `]);\r\n      }\r\n    } else if (node.type === \"ExportNamedDeclaration\") {\r\n      if (node.declaration) {\r\n        const decl = node.declaration;\r\n        if (decl.type === \"FunctionDeclaration\") {\r\n          const name = decl.id.name;\r\n          // assignment goes at the top via hoistedFunctionExports below.\r\n          // function decls are value-hoisted so prepending exports.X = X\r\n          // before the body works, which fixes circular ESM (typebox's\r\n          // instantiate.mjs <-> awaited/instantiate.mjs). #56\r\n          patches.push([node.start, decl.start, \"\"]);\r\n          hoistedFunctionExports.push(name);\r\n        } else if (decl.type === \"ClassDeclaration\") {\r\n          const name = decl.id.name;\r\n          // classes are TDZ, can't assign before the decl. keep trailing.\r\n          // circular imports of class exports can still see undefined.\r\n          patches.push([node.start, decl.start, \"\"]);\r\n          patches.push([\r\n            node.end,\r\n            node.end,\r\n            `;\\nexports.${name} = ${name};`,\r\n          ]);\r\n        } else if (decl.type === \"VariableDeclaration\") {\r\n          const needsLiveBinding = decl.kind === \"let\" || decl.kind === \"var\";\r\n          const hasDestructuring = decl.declarations.some(\r\n            (d: any) =>\r\n              d.id.type === \"ObjectPattern\" || d.id.type === \"ArrayPattern\",\r\n          );\r\n          // Remove \"export \" prefix\r\n          patches.push([node.start, decl.start, \"\"]);\r\n          // Append export bindings after declaration\r\n          const bindings: string[] = [];\r\n          if (hasDestructuring) {\r\n            for (const d of decl.declarations) {\r\n              for (const name of extractBindingNames(d.id)) {\r\n                if (needsLiveBinding) {\r\n                  bindings.push(\r\n                    `Object.defineProperty(exports, ${JSON.stringify(name)}, { get() { return ${name}; }, enumerable: true })`,\r\n                  );\r\n                } else {\r\n                  bindings.push(`exports.${name} = ${name}`);\r\n                }\r\n              }\r\n            }\r\n          } else {\r\n            for (const d of decl.declarations) {\r\n              if (needsLiveBinding) {\r\n                bindings.push(\r\n                  `Object.defineProperty(exports, ${JSON.stringify(d.id.name)}, { get() { return ${d.id.name}; }, enumerable: true })`,\r\n                );\r\n              } else {\r\n                bindings.push(`exports.${d.id.name} = ${d.id.name}`);\r\n              }\r\n            }\r\n          }\r\n          patches.push([\r\n            node.end,\r\n            node.end,\r\n            \"\\n\" + bindings.join(\";\\n\") + \";\",\r\n          ]);\r\n        }\r\n      } else if (node.source) {\r\n        const src = node.source.value;\r\n        const tmp = `__reexport_${node.start}`;\r\n        const lines = [`const ${tmp} = require(${JSON.stringify(src)})`];\r\n        for (const spec of node.specifiers) {\r\n          if (spec.local.name === \"default\") {\r\n            lines.push(\r\n              `exports.${spec.exported.name} = ${tmp}.__esModule ? ${tmp}.default : ${tmp}`,\r\n            );\r\n          } else {\r\n            lines.push(\r\n              `exports.${spec.exported.name} = ${tmp}.${spec.local.name}`,\r\n            );\r\n          }\r\n        }\r\n        patches.push([node.start, node.end, lines.join(\";\\n\") + \";\"]);\r\n      } else {\r\n        const lines = node.specifiers.map(\r\n          (s: any) => `exports.${s.exported.name} = ${s.local.name}`,\r\n        );\r\n        patches.push([node.start, node.end, lines.join(\";\\n\") + \";\"]);\r\n      }\r\n    } else if (node.type === \"ExportAllDeclaration\") {\r\n      const src = node.source.value;\r\n      if (node.exported) {\r\n        const name = node.exported.name || node.exported.value;\r\n        patches.push([\r\n          node.start,\r\n          node.end,\r\n          `exports[${JSON.stringify(name)}] = require(${JSON.stringify(src)})`,\r\n        ]);\r\n      } else {\r\n        patches.push([\r\n          node.start,\r\n          node.end,\r\n          `Object.assign(exports, require(${JSON.stringify(src)}))`,\r\n        ]);\r\n      }\r\n    }\r\n  }\r\n\r\n  // hoist exports.X = X for every `export function X` so circular consumers\r\n  // see populated exports during a partial load. function decls are\r\n  // value-hoisted, classes/let/const arent (TDZ) so they stay trailing. #56\r\n  if (hoistedFunctionExports.length > 0) {\r\n    const prefix =\r\n      hoistedFunctionExports\r\n        .map((n) => `exports.${n} = ${n};`)\r\n        .join(\"\\n\") + \"\\n\";\r\n    patches.push([0, 0, prefix]);\r\n  }\r\n}\r\n\r\nfunction esmToCjsViaAst(code: string): string {\r\n  const ast = acorn.parse(code, {\r\n    ecmaVersion: \"latest\",\r\n    sourceType: \"module\",\r\n  });\r\n  const patches: Array<[number, number, string]> = [];\r\n  collectEsmCjsPatches(ast as any, code, patches);\r\n\r\n  let output = code;\r\n  patches.sort((a, b) => b[0] - a[0] || b[1] - a[1]);\r\n  for (const [s, e, r] of patches)\r\n    output = output.slice(0, s) + r + output.slice(e);\r\n  return output;\r\n}\r\n\r\n// extract all bound names from a destructuring pattern or identifier\r\nfunction extractBindingNames(pattern: any): string[] {\r\n  if (pattern.type === \"Identifier\") {\r\n    return [pattern.name];\r\n  }\r\n  if (pattern.type === \"ObjectPattern\") {\r\n    const names: string[] = [];\r\n    for (const prop of pattern.properties) {\r\n      if (prop.type === \"RestElement\") {\r\n        names.push(...extractBindingNames(prop.argument));\r\n      } else {\r\n        names.push(...extractBindingNames(prop.value));\r\n      }\r\n    }\r\n    return names;\r\n  }\r\n  if (pattern.type === \"ArrayPattern\") {\r\n    const names: string[] = [];\r\n    for (const elem of pattern.elements) {\r\n      if (elem) {\r\n        if (elem.type === \"RestElement\") {\r\n          names.push(...extractBindingNames(elem.argument));\r\n        } else {\r\n          names.push(...extractBindingNames(elem));\r\n        }\r\n      }\r\n    }\r\n    return names;\r\n  }\r\n  if (pattern.type === \"AssignmentPattern\") {\r\n    return extractBindingNames(pattern.left);\r\n  }\r\n  return [];\r\n}\r\n\r\nexport function hasTopLevelAwait(code: string): boolean {\r\n  if (!RE_AWAIT_QUICK.test(code)) return false;\r\n\r\n  try {\r\n    let ast: any;\r\n    try {\r\n      ast = acorn.parse(code, {\r\n        ecmaVersion: \"latest\",\r\n        sourceType: \"script\",\r\n        allowAwaitOutsideFunction: true,\r\n      });\r\n    } catch {\r\n      ast = acorn.parse(code, {\r\n        ecmaVersion: \"latest\",\r\n        sourceType: \"module\",\r\n      });\r\n    }\r\n\r\n    let found = false;\r\n    let insideAsync = 0;\r\n\r\n    function walk(node: any): void {\r\n      if (found || !node || typeof node !== \"object\") return;\r\n      if (Array.isArray(node)) {\r\n        for (const child of node) walk(child);\r\n        return;\r\n      }\r\n      if (typeof node.type !== \"string\") return;\r\n\r\n      const isAsyncFn =\r\n        (node.type === \"FunctionDeclaration\" ||\r\n          node.type === \"FunctionExpression\" ||\r\n          node.type === \"ArrowFunctionExpression\") &&\r\n        node.async;\r\n\r\n      if (isAsyncFn) insideAsync++;\r\n      if (node.type === \"AwaitExpression\" && insideAsync === 0) {\r\n        found = true;\r\n      }\r\n      if (node.type === \"ForOfStatement\" && node.await && insideAsync === 0) {\r\n        found = true;\r\n      }\r\n      if (!found) {\r\n        for (const key in node) {\r\n          if (key === \"type\" || key === \"start\" || key === \"end\") continue;\r\n          const val = node[key];\r\n          if (val && typeof val === \"object\") walk(val);\r\n        }\r\n      }\r\n      if (isAsyncFn) insideAsync--;\r\n    }\r\n\r\n    walk(ast);\r\n    return found;\r\n  } catch {\r\n    return RE_AWAIT_LOOKAHEAD.test(code);\r\n  }\r\n}\r\n\r\nexport function stripTopLevelAwait(\r\n  code: string,\r\n  mode: \"topLevelOnly\" | \"full\" = \"topLevelOnly\",\r\n): string {\r\n  const full = mode === \"full\";\r\n  if (!full && !RE_AWAIT_QUICK.test(code)) return code;\r\n  if (full && !RE_AWAIT_QUICK.test(code) && !RE_ASYNC_QUICK.test(code)) return code;\r\n\r\n  try {\r\n    let ast: any;\r\n    try {\r\n      ast = acorn.parse(code, {\r\n        ecmaVersion: \"latest\",\r\n        sourceType: \"script\",\r\n        allowAwaitOutsideFunction: true,\r\n      });\r\n    } catch {\r\n      ast = acorn.parse(code, {\r\n        ecmaVersion: \"latest\",\r\n        sourceType: \"module\",\r\n      });\r\n    }\r\n\r\n    const patches: Array<[number, number, string]> = [];\r\n    let insideAsync = 0;\r\n\r\n    function walk(node: any) {\r\n      if (!node || typeof node !== \"object\") return;\r\n      if (Array.isArray(node)) {\r\n        for (const child of node) walk(child);\r\n        return;\r\n      }\r\n      if (typeof node.type !== \"string\") return;\r\n\r\n      const isAsyncFn =\r\n        (node.type === \"FunctionDeclaration\" ||\r\n          node.type === \"FunctionExpression\" ||\r\n          node.type === \"ArrowFunctionExpression\") &&\r\n        node.async;\r\n\r\n      if (isAsyncFn) insideAsync++;\r\n\r\n      if (full && isAsyncFn && !node.generator) {\r\n        if (code.slice(node.start, node.start + 5) === \"async\") {\r\n          let end = node.start + 5;\r\n          while (end < code.length && (code[end] === \" \" || code[end] === \"\\t\")) end++;\r\n          patches.push([node.start, end, \"\"]);\r\n        } else {\r\n          const searchStart = Math.max(0, node.start - 30);\r\n          const region = code.slice(searchStart, node.start);\r\n          const asyncIdx = region.lastIndexOf(\"async\");\r\n          if (asyncIdx >= 0) {\r\n            const absStart = searchStart + asyncIdx;\r\n            let absEnd = absStart + 5;\r\n            while (absEnd < code.length && (code[absEnd] === \" \" || code[absEnd] === \"\\t\")) absEnd++;\r\n            patches.push([absStart, absEnd, \"\"]);\r\n          }\r\n        }\r\n      }\r\n\r\n      if (node.type === \"AwaitExpression\") {\r\n        if (full || insideAsync === 0) {\r\n          let awaitEnd = node.start + 5;\r\n          while (\r\n            awaitEnd < node.argument.start &&\r\n            (code[awaitEnd] === \" \" || code[awaitEnd] === \"\\t\" || code[awaitEnd] === \"\\n\" || code[awaitEnd] === \"\\r\")\r\n          ) {\r\n            awaitEnd++;\r\n          }\r\n          patches.push([node.start, awaitEnd, \"__syncAwait(\"]);\r\n          patches.push([node.end, node.end, \")\"]);\r\n        }\r\n      }\r\n\r\n      if (node.type === \"ForOfStatement\" && node.await) {\r\n        if (full || insideAsync === 0) {\r\n          const forEnd = node.start + 3;\r\n          const snippet = code.slice(forEnd, node.left.start);\r\n          const awIdx = snippet.indexOf(\"await\");\r\n          if (awIdx >= 0) {\r\n            const absStart = forEnd + awIdx;\r\n            let absEnd = absStart + 5;\r\n            while (absEnd < code.length && code[absEnd] === \" \") absEnd++;\r\n            patches.push([absStart, absEnd, \"\"]);\r\n          }\r\n        }\r\n      }\r\n\r\n      for (const key in node) {\r\n        if (key === \"type\" || key === \"start\" || key === \"end\") continue;\r\n        const val = node[key];\r\n        if (val && typeof val === \"object\") walk(val);\r\n      }\r\n\r\n      if (isAsyncFn) insideAsync--;\r\n    }\r\n\r\n    walk(ast);\r\n\r\n    if (patches.length === 0) return code;\r\n\r\n    let output = code;\r\n    patches.sort((a, b) => b[0] - a[0] || b[1] - a[1]);\r\n    for (const [start, end, replacement] of patches) {\r\n      output = output.slice(0, start) + replacement + output.slice(end);\r\n    }\r\n    return output;\r\n  } catch {\r\n    if (full) {\r\n      let out = code.replace(RE_AWAIT_LOOKAHEAD_G, \"\");\r\n      out = out.replace(RE_ASYNC_FN_G, \"\");\r\n      out = out.replace(RE_ASYNC_PAREN_G, \"\");\r\n      out = out.replace(RE_ASYNC_ARROW_G, \"\");\r\n      return out;\r\n    }\r\n    return code.replace(RE_AWAIT_LOOKAHEAD_G, \"\");\r\n  }\r\n}\r\n\r\nfunction esmToCjsViaRegex(code: string): string {\r\n  let out = code;\r\n  // strip TS type-only imports\r\n  out = out.replace(RE_TYPE_IMPORT_BRACES, \"\");\r\n  out = out.replace(RE_TYPE_IMPORT_DEFAULT, \"\");\r\n  out = out.replace(RE_TYPE_IMPORT_STAR, \"\");\r\n  // remove inline type specifiers from mixed imports\r\n  out = out.replace(\r\n    RE_MIXED_TYPE_IMPORT,\r\n    (_m, specs: string, src: string) => {\r\n      const kept = specs\r\n        .split(\",\")\r\n        .filter((s: string) => !RE_TYPE_SPEC.test(s))\r\n        .map((s: string) => s.trim())\r\n        .filter(Boolean);\r\n      if (kept.length === 0) return \"\";\r\n      const fixed = kept.join(\", \").replace(RE_AS_RENAME, \"$1: $2\");\r\n      return `const {${fixed}} = require(\"${src}\");`;\r\n    },\r\n  );\r\n  // strip TS type-only exports\r\n  out = out.replace(RE_TYPE_EXPORT_FROM, \"\");\r\n  out = out.replace(RE_TYPE_EXPORT, \"\");\r\n  out = out.replace(RE_IMPORT_STAR, 'const $1 = require(\"$2\");');\r\n  out = out.replace(\r\n    RE_IMPORT_DEFAULT_NAMED,\r\n    (_m, def, named, src) => {\r\n      const tmp = `__import_${def}`;\r\n      const fixed = named.replace(RE_AS_RENAME, \"$1: $2\");\r\n      return `const ${tmp} = require(\"${src}\"); const ${def} = ${tmp}.__esModule ? ${tmp}.default : ${tmp}; const {${fixed}} = ${tmp};`;\r\n    },\r\n  );\r\n  out = out.replace(RE_IMPORT_DEFAULT, 'const $1 = require(\"$2\");');\r\n  out = out.replace(\r\n    RE_IMPORT_NAMED,\r\n    (_m, specs, src) => {\r\n      const fixed = specs.replace(RE_AS_RENAME, \"$1: $2\");\r\n      return `const {${fixed}} = require(\"${src}\");`;\r\n    },\r\n  );\r\n  out = out.replace(RE_IMPORT_SIDE_EFFECT, 'require(\"$1\");');\r\n  // export default\r\n  out = out.replace(RE_EXPORT_DEFAULT_CLASS, \"module.exports = class $1\");\r\n  out = out.replace(RE_EXPORT_DEFAULT_FN_NAMED, \"module.exports = function $1\");\r\n  out = out.replace(RE_EXPORT_DEFAULT_FN_ANON, \"module.exports = function(\");\r\n  out = out.replace(RE_EXPORT_DEFAULT, \"module.exports = \");\r\n  // re-exports\r\n  out = out.replace(RE_EXPORT_STAR_AS, 'exports.$1 = require(\"$2\");');\r\n  out = out.replace(RE_EXPORT_STAR, 'Object.assign(exports, require(\"$1\"));');\r\n  out = out.replace(\r\n    RE_EXPORT_NAMED_FROM,\r\n    (_m, specs, src) => {\r\n      const binds = specs\r\n        .split(\",\")\r\n        .map((s: string) => {\r\n          const parts = s.trim().split(RE_AS_SPLIT);\r\n          const local = parts[0].trim();\r\n          const exported = parts.length > 1 ? parts[1].trim() : local;\r\n          return `exports.${exported} = require(\"${src}\").${local}`;\r\n        })\r\n        .join(\"; \");\r\n      return binds + \";\";\r\n    },\r\n  );\r\n  out = out.replace(\r\n    RE_EXPORT_NAMED,\r\n    (_m, specs) => {\r\n      const binds = specs\r\n        .split(\",\")\r\n        .map((s: string) => {\r\n          const parts = s.trim().split(RE_AS_SPLIT);\r\n          const local = parts[0].trim();\r\n          const exported = parts.length > 1 ? parts[1].trim() : local;\r\n          return `exports.${exported} = ${local}`;\r\n        })\r\n        .join(\"; \");\r\n      return binds + \";\";\r\n    },\r\n  );\r\n  // named exports\r\n  out = out.replace(RE_EXPORT_ASYNC_FN, \"exports.$1 = async function $1\");\r\n  out = out.replace(RE_EXPORT_FN, \"exports.$1 = function $1\");\r\n  out = out.replace(RE_EXPORT_CLASS, \"exports.$1 = class $1\");\r\n  out = out.replace(RE_EXPORT_VAR, \"exports.$1 =\");\r\n  return out;\r\n}\r\n","// esbuild polyfill -- loads esbuild-wasm from CDN, routes file I/O through MemoryVolume\r\n\r\nimport type { MemoryVolume } from \"../memory-volume\";\r\nimport { CDN_ESBUILD_BINARY, PINNED_ESBUILD_WASM } from \"../constants/cdn-urls\";\r\nimport { getEsbuild, getEsbuildIfReady } from \"../helpers/esbuild-engine\";\r\nimport { stripTopLevelAwait } from \"../syntax-transforms\";\r\nimport { ESBUILD_LOADER_MAP, RESOLVE_EXTENSIONS } from \"../constants/config\";\r\nimport { getRegistry } from \"../helpers/event-loop\";\r\n\r\nconst BUILTIN_MODULES = new Set([\r\n  \"assert\",\r\n  \"async_hooks\",\r\n  \"buffer\",\r\n  \"child_process\",\r\n  \"cluster\",\r\n  \"console\",\r\n  \"constants\",\r\n  \"crypto\",\r\n  \"dgram\",\r\n  \"dns\",\r\n  \"domain\",\r\n  \"events\",\r\n  \"fs\",\r\n  \"http\",\r\n  \"http2\",\r\n  \"https\",\r\n  \"inspector\",\r\n  \"module\",\r\n  \"net\",\r\n  \"os\",\r\n  \"path\",\r\n  \"perf_hooks\",\r\n  \"process\",\r\n  \"punycode\",\r\n  \"querystring\",\r\n  \"readline\",\r\n  \"stream\",\r\n  \"string_decoder\",\r\n  \"sys\",\r\n  \"timers\",\r\n  \"tls\",\r\n  \"tty\",\r\n  \"url\",\r\n  \"util\",\r\n  \"v8\",\r\n  \"vm\",\r\n  \"worker_threads\",\r\n  \"zlib\",\r\n]);\r\n\r\ntype ExportValue = string | ExportMap;\r\ninterface ExportMap {\r\n  [key: string]: ExportValue;\r\n}\r\n\r\ninterface PackageJson {\r\n  exports?: ExportMap | ExportValue;\r\n  imports?: ExportMap;\r\n  module?: string;\r\n  main?: string;\r\n}\r\n\r\ninterface ModuleHit {\r\n  resolvedPath: string;\r\n  fromVolume: boolean;\r\n}\r\n\r\nexport interface TransformConfig {\r\n  loader?: \"js\" | \"jsx\" | \"ts\" | \"tsx\" | \"json\" | \"css\";\r\n  format?: \"iife\" | \"cjs\" | \"esm\";\r\n  target?: string | string[];\r\n  minify?: boolean;\r\n  sourcemap?: boolean | \"inline\" | \"external\";\r\n  jsx?: \"transform\" | \"preserve\";\r\n  jsxFactory?: string;\r\n  jsxFragment?: string;\r\n}\r\n\r\nexport interface TransformOutput {\r\n  code: string;\r\n  map: string;\r\n  warnings: unknown[];\r\n}\r\n\r\nexport interface BundleConfig {\r\n  entryPoints?: string[];\r\n  stdin?: {\r\n    contents: string;\r\n    resolveDir?: string;\r\n    loader?: \"js\" | \"jsx\" | \"ts\" | \"tsx\" | \"json\" | \"css\";\r\n  };\r\n  bundle?: boolean;\r\n  outdir?: string;\r\n  outfile?: string;\r\n  format?: \"iife\" | \"cjs\" | \"esm\";\r\n  platform?: \"browser\" | \"node\" | \"neutral\";\r\n  target?: string | string[];\r\n  minify?: boolean;\r\n  sourcemap?: boolean | \"inline\" | \"external\";\r\n  external?: string[];\r\n  write?: boolean;\r\n  plugins?: unknown[];\r\n  absWorkingDir?: string;\r\n  conditions?: string[];\r\n  mainFields?: string[];\r\n}\r\n\r\nexport interface BundleOutput {\r\n  errors: unknown[];\r\n  warnings: unknown[];\r\n  outputFiles?: Array<{ path: string; contents: Uint8Array; text: string }>;\r\n  metafile?: {\r\n    inputs?: Record<string, unknown>;\r\n    outputs?: Record<string, unknown>;\r\n  };\r\n}\r\n\r\nlet engine: typeof import(\"esbuild-wasm\") | null = null;\r\nlet wasmBinaryUrl: string = CDN_ESBUILD_BINARY;\r\nlet volumeRef: MemoryVolume | null = null;\r\n\r\nexport function setVolume(vol: MemoryVolume): void {\r\n  volumeRef = vol;\r\n}\r\n\r\nexport function setWasmUrl(url: string): void {\r\n  wasmBinaryUrl = url;\r\n}\r\n\r\n// delegates to the realm-wide singleton (shared with module-transformer)\r\nexport async function initialize(opts?: { wasmURL?: string }): Promise<void> {\r\n  if (engine) return;\r\n  engine = await getEsbuild({ wasmURL: opts?.wasmURL || wasmBinaryUrl });\r\n}\r\n\r\nexport async function transform(\r\n  source: string,\r\n  cfg?: TransformConfig,\r\n): Promise<TransformOutput> {\r\n  const h = getRegistry().register(\"EsbuildOp\");\r\n  try {\r\n    if (!engine) engine = getEsbuildIfReady();\r\n    if (!engine) await initialize();\r\n    if (!engine) throw new Error(\"esbuild: engine not ready\");\r\n    return await engine.transform(source, cfg);\r\n  } finally {\r\n    h.close();\r\n  }\r\n}\r\n\r\nexport async function build(cfg: BundleConfig): Promise<BundleOutput> {\r\n  // register before initialize() - the cdn import inside isn't tracked\r\n  // so the loop can drain mid-await if we do it the other way round\r\n  const h = getRegistry().register(\"EsbuildOp\");\r\n  try {\r\n    if (!engine) engine = getEsbuildIfReady();\r\n    if (!engine) await initialize();\r\n    if (!engine) throw new Error(\"esbuild: engine not ready\");\r\n\r\n    const volumePlugin = createVolumePlugin(cfg.external, cfg.platform, cfg.conditions);\r\n    const allPlugins = [...(cfg.plugins || [])];\r\n    // volume plugin goes last so other plugins' onLoad handlers run first\r\n    if (volumePlugin) allPlugins.push(volumePlugin);\r\n\r\n    let entries = cfg.entryPoints;\r\n    if (entries && volumeRef) {\r\n      const base = cfg.absWorkingDir || resolveWorkingDir();\r\n      entries = entries.map((ep) => toAbsolute(ep, base));\r\n    }\r\n\r\n    const workDir = cfg.absWorkingDir || resolveWorkingDir();\r\n\r\n    // always get outputFiles in memory, then write to VFS if requested\r\n    const shouldWrite = cfg.write !== false;\r\n\r\n    const raw = (await engine.build({\r\n      ...cfg,\r\n      entryPoints: entries,\r\n      plugins: allPlugins,\r\n      write: false,\r\n      absWorkingDir: workDir,\r\n    })) as BundleOutput;\r\n\r\n    stripNamespacePrefixes(raw);\r\n\r\n    if (shouldWrite && raw.outputFiles && volumeRef) {\r\n      for (const f of raw.outputFiles) {\r\n        const outPath = f.path.startsWith(\"/\") ? f.path : workDir + \"/\" + f.path;\r\n        const dir = outPath.substring(0, outPath.lastIndexOf(\"/\"));\r\n        if (dir && !volumeRef.existsSync(dir)) {\r\n          volumeRef.mkdirSync(dir, { recursive: true });\r\n        }\r\n        volumeRef.writeFileSync(outPath, f.text);\r\n      }\r\n    }\r\n\r\n    return raw;\r\n  } finally {\r\n    h.close();\r\n  }\r\n}\r\n\r\nexport function formatMessages(\r\n  messages: unknown[],\r\n  opts?: { kind?: \"error\" | \"warning\"; color?: boolean },\r\n): Promise<string[]> {\r\n  if (!engine) engine = getEsbuildIfReady();\r\n  if (!engine) throw new Error(\"esbuild: engine not ready\");\r\n  return (\r\n    engine as unknown as {\r\n      formatMessages: (m: unknown[], o?: unknown) => Promise<string[]>;\r\n    }\r\n  ).formatMessages(messages, opts);\r\n}\r\n\r\n// single source of truth: the pinned CDN version we actually load\r\nexport const version = PINNED_ESBUILD_WASM;\r\n\r\n// build context for incremental builds (used by Vite)\r\nexport async function context(cfg: BundleConfig): Promise<{\r\n  rebuild: () => Promise<BundleOutput>;\r\n  watch: (opts?: unknown) => Promise<void>;\r\n  serve: (opts?: unknown) => Promise<{ host: string; port: number }>;\r\n  cancel: () => Promise<void>;\r\n  dispose: () => Promise<void>;\r\n}> {\r\n  const initHandle = getRegistry().register(\"EsbuildOp\");\r\n  try {\r\n    if (!engine) await initialize();\r\n  } finally {\r\n    initHandle.close();\r\n  }\r\n\r\n  let disposed = false;\r\n  const ctx = {\r\n    async rebuild(): Promise<BundleOutput> {\r\n      if (disposed) throw new Error(\"Build context already disposed\");\r\n      return build(cfg);\r\n    },\r\n    async watch(_opts?: unknown): Promise<void> {},\r\n    async serve(_opts?: unknown): Promise<{ host: string; port: number }> {\r\n      return { host: \"localhost\", port: 0 };\r\n    },\r\n    async cancel(): Promise<void> {},\r\n    async dispose(): Promise<void> {\r\n      disposed = true;\r\n    },\r\n  };\r\n  return ctx;\r\n}\r\n\r\nexport function stop(): void {}\r\n\r\nexport async function analyzeMetafile(\r\n  metafile:\r\n    | string\r\n    | { inputs?: Record<string, unknown>; outputs?: Record<string, unknown> },\r\n  _opts?: { verbose?: boolean; color?: boolean },\r\n): Promise<string> {\r\n  const meta = typeof metafile === \"string\" ? JSON.parse(metafile) : metafile;\r\n  const outputs = meta?.outputs ?? {};\r\n  const lines: string[] = [];\r\n  for (const [name, info] of Object.entries(outputs)) {\r\n    const bytes = (info as any)?.bytes ?? 0;\r\n    lines.push(`  ${name}  ${(bytes / 1024).toFixed(1)}kb`);\r\n  }\r\n  return lines.join(\"\\n\");\r\n}\r\n\r\nexport function analyzeMetafileSync(\r\n  metafile:\r\n    | string\r\n    | { inputs?: Record<string, unknown>; outputs?: Record<string, unknown> },\r\n  _opts?: { verbose?: boolean; color?: boolean },\r\n): string {\r\n  const meta = typeof metafile === \"string\" ? JSON.parse(metafile) : metafile;\r\n  const outputs = meta?.outputs ?? {};\r\n  const lines: string[] = [];\r\n  for (const [name, info] of Object.entries(outputs)) {\r\n    const bytes = (info as any)?.bytes ?? 0;\r\n    lines.push(`  ${name}  ${(bytes / 1024).toFixed(1)}kb`);\r\n  }\r\n  return lines.join(\"\\n\");\r\n}\r\n\r\n// can't truly block for WASM in browser, so just return source unchanged\r\nexport function transformSync(\r\n  source: string,\r\n  cfg?: TransformConfig,\r\n): TransformOutput {\r\n  return { code: source, map: \"\", warnings: [] };\r\n}\r\n\r\nexport function buildSync(cfg: BundleConfig): BundleOutput {\r\n  return { errors: [], warnings: [], outputFiles: [] };\r\n}\r\n\r\nexport default {\r\n  initialize,\r\n  transform,\r\n  transformSync,\r\n  build,\r\n  buildSync,\r\n  context,\r\n  stop,\r\n  formatMessages,\r\n  analyzeMetafile,\r\n  analyzeMetafileSync,\r\n  version,\r\n  setVolume,\r\n  setWasmUrl,\r\n};\r\n\r\n// Internal helpers\r\n\r\nconst NODE_CONDITION_ORDER = [\r\n  \"node\",\r\n  \"browser\",\r\n  \"require\",\r\n  \"module\",\r\n  \"import\",\r\n  \"default\",\r\n] as const;\r\n\r\nconst BROWSER_CONDITION_ORDER = [\r\n  \"browser\",\r\n  \"module\",\r\n  \"import\",\r\n  \"node\",\r\n  \"require\",\r\n  \"default\",\r\n] as const;\r\n\r\nfunction pickCondition(entry: ExportValue, platform?: string, conditions?: string[]): string | undefined {\r\n  if (typeof entry === \"string\") return entry;\r\n  if (typeof entry === \"object\" && entry !== null) {\r\n    if (conditions) {\r\n      for (const cond of conditions) {\r\n        const nested = (entry as ExportMap)[cond];\r\n        if (nested !== undefined) {\r\n          const resolved = pickCondition(nested, platform, conditions);\r\n          if (resolved) return resolved;\r\n        }\r\n      }\r\n    }\r\n    const order = platform === \"browser\" ? BROWSER_CONDITION_ORDER : NODE_CONDITION_ORDER;\r\n    for (const cond of order) {\r\n      const nested = (entry as ExportMap)[cond];\r\n      if (nested !== undefined) {\r\n        const resolved = pickCondition(nested, platform, conditions);\r\n        if (resolved) return resolved;\r\n      }\r\n    }\r\n  }\r\n  return undefined;\r\n}\r\n\r\nfunction locateModule(\r\n  vol: MemoryVolume,\r\n  specifier: string,\r\n  exts: string[],\r\n  fromDir?: string,\r\n  platform?: string,\r\n  conditions?: string[],\r\n): ModuleHit | null {\r\n  const parts = specifier.split(\"/\");\r\n  const scoped = parts[0].startsWith(\"@\");\r\n  const pkgName = scoped ? parts.slice(0, 2).join(\"/\") : parts[0];\r\n  const subPath = scoped ? parts.slice(2).join(\"/\") : parts.slice(1).join(\"/\");\r\n\r\n  const searchRoots: string[] = [];\r\n  if (fromDir) {\r\n    let dir = fromDir;\r\n    while (dir !== \"/\" && dir) {\r\n      searchRoots.push(dir + \"/node_modules/\" + pkgName);\r\n      const parent = dir.substring(0, dir.lastIndexOf(\"/\")) || \"/\";\r\n      if (parent === dir) break;\r\n      dir = parent;\r\n    }\r\n  }\r\n  searchRoots.push(\"/node_modules/\" + pkgName);\r\n  // also walk from cwd, handles projects outside /project/ (e.g. /home/test/)\r\n  const cwd = typeof process !== 'undefined' && process.cwd ? process.cwd() : '/';\r\n  if (cwd !== '/' && cwd !== fromDir) {\r\n    let d = cwd;\r\n    while (d !== '/' && d) {\r\n      const c = d + '/node_modules/' + pkgName;\r\n      if (!searchRoots.includes(c)) searchRoots.push(c);\r\n      const p = d.substring(0, d.lastIndexOf('/')) || '/';\r\n      if (p === d) break;\r\n      d = p;\r\n    }\r\n  }\r\n\r\n  let base: string | null = null;\r\n  for (const candidate of searchRoots) {\r\n    if (vol.existsSync(candidate)) {\r\n      base = candidate;\r\n      break;\r\n    }\r\n  }\r\n  if (!base) return null;\r\n\r\n  const pkgJsonPath = base + \"/package.json\";\r\n  if (!vol.existsSync(pkgJsonPath)) return null;\r\n\r\n  try {\r\n    const raw = vol.readFileSync(pkgJsonPath, \"utf8\");\r\n    const pkg: PackageJson = JSON.parse(raw);\r\n\r\n    let found: string | null = null;\r\n\r\n    if (subPath) {\r\n      found = resolveSubpath(vol, pkg, base, subPath, exts, platform, conditions);\r\n    } else {\r\n      found = resolveRoot(vol, pkg, base, exts, platform, conditions);\r\n    }\r\n\r\n    if (found) return { resolvedPath: found, fromVolume: true };\r\n  } catch {\r\n    /* parse failure */\r\n  }\r\n\r\n  return null;\r\n}\r\n\r\nfunction resolveSubpath(\r\n  vol: MemoryVolume,\r\n  pkg: PackageJson,\r\n  base: string,\r\n  sub: string,\r\n  exts: string[],\r\n  platform?: string,\r\n  conditions?: string[],\r\n): string | null {\r\n  if (pkg.exports && typeof pkg.exports === \"object\") {\r\n    const key = \"./\" + sub;\r\n    const mapEntry = (pkg.exports as ExportMap)[key];\r\n    if (mapEntry) {\r\n      const target = pickCondition(mapEntry, platform, conditions);\r\n      if (target) {\r\n        const full = base + \"/\" + target.replace(/^\\.\\//, \"\");\r\n        const hit = probeFile(vol, full, [\"\", \".js\", \".ts\", \".mjs\"]);\r\n        if (hit) return hit;\r\n      }\r\n    }\r\n  }\r\n  return probeFile(vol, base + \"/\" + sub, exts);\r\n}\r\n\r\nfunction resolveRoot(\r\n  vol: MemoryVolume,\r\n  pkg: PackageJson,\r\n  base: string,\r\n  exts: string[],\r\n  platform?: string,\r\n  conditions?: string[],\r\n): string | null {\r\n  if (pkg.exports) {\r\n    const top =\r\n      typeof pkg.exports === \"object\" && !Array.isArray(pkg.exports)\r\n        ? (pkg.exports as ExportMap)[\".\"] || pkg.exports\r\n        : pkg.exports;\r\n    const target = pickCondition(top as ExportValue, platform, conditions);\r\n    if (target) {\r\n      const full = base + \"/\" + target.replace(/^\\.\\//, \"\");\r\n      const hit = probeFile(vol, full, [\"\", \".js\", \".ts\", \".mjs\"]);\r\n      if (hit) return hit;\r\n    }\r\n  }\r\n  const fallback = pkg.module || pkg.main || \"index.js\";\r\n  return probeFile(vol, base + \"/\" + fallback.replace(/^\\.\\//, \"\"), exts);\r\n}\r\n\r\n// resolve #-prefixed subpath imports via package.json \"imports\" field\r\nfunction resolvePackageImport(\r\n  vol: MemoryVolume,\r\n  specifier: string,\r\n  exts: string[],\r\n  fromDir: string,\r\n  platform?: string,\r\n  conditions?: string[],\r\n): string | null {\r\n  let dir = fromDir;\r\n  while (dir && dir !== \"/\") {\r\n    const pkgPath = dir + \"/package.json\";\r\n    if (vol.existsSync(pkgPath)) {\r\n      try {\r\n        const pkg: PackageJson = JSON.parse(vol.readFileSync(pkgPath, \"utf8\"));\r\n        if (pkg.imports) {\r\n          const entry = pkg.imports[specifier];\r\n          if (entry !== undefined) {\r\n            const target = pickCondition(entry, platform, conditions);\r\n            if (target) {\r\n              const full = dir + \"/\" + target.replace(/^\\.\\//, \"\");\r\n              const hit = probeFile(vol, full, [\"\", ...exts]);\r\n              if (hit) return hit;\r\n            }\r\n          }\r\n\r\n          for (const key of Object.keys(pkg.imports)) {\r\n            const starIdx = key.indexOf(\"*\");\r\n            if (starIdx === -1) continue;\r\n            const prefix = key.slice(0, starIdx);\r\n            const suffix = key.slice(starIdx + 1);\r\n            if (\r\n              specifier.startsWith(prefix) &&\r\n              specifier.endsWith(suffix) &&\r\n              specifier.length >= prefix.length + suffix.length\r\n            ) {\r\n              const matched = suffix.length\r\n                ? specifier.slice(prefix.length, -suffix.length)\r\n                : specifier.slice(prefix.length);\r\n              const target = pickCondition(pkg.imports[key], platform, conditions);\r\n              if (target) {\r\n                const resolved = target.replace(/\\*/g, matched);\r\n                const full = dir + \"/\" + resolved.replace(/^\\.\\//, \"\");\r\n                const hit = probeFile(vol, full, [\"\", ...exts]);\r\n                if (hit) return hit;\r\n              }\r\n            }\r\n          }\r\n        }\r\n      } catch {\r\n        /* parse failure — skip */\r\n      }\r\n    }\r\n    const parent = dir.substring(0, dir.lastIndexOf(\"/\")) || \"/\";\r\n    if (parent === dir) break;\r\n    dir = parent;\r\n  }\r\n  return null;\r\n}\r\n\r\nfunction probeFile(\r\n  vol: MemoryVolume,\r\n  candidate: string,\r\n  exts: string[],\r\n): string | null {\r\n  for (const ext of exts) {\r\n    const p = candidate + ext;\r\n    if (vol.existsSync(p)) {\r\n      try {\r\n        if (!vol.statSync(p).isDirectory()) return p;\r\n      } catch {\r\n        return p;\r\n      }\r\n    }\r\n  }\r\n  return null;\r\n}\r\n\r\nfunction resolveWorkingDir(): string {\r\n  if (\r\n    typeof globalThis !== \"undefined\" &&\r\n    globalThis.process &&\r\n    typeof globalThis.process.cwd === \"function\"\r\n  ) {\r\n    return globalThis.process.cwd();\r\n  }\r\n  return \"/\";\r\n}\r\n\r\nfunction toAbsolute(entry: string, base: string): string {\r\n  if (entry.includes(\"vfs:\")) {\r\n    entry = entry.substring(entry.indexOf(\"vfs:\") + 4);\r\n  }\r\n  if (entry.startsWith(\"/\")) return entry;\r\n  if (entry.startsWith(\"./\")) {\r\n    const b = base.endsWith(\"/\") ? base.slice(0, -1) : base;\r\n    return b + \"/\" + entry.slice(2);\r\n  }\r\n  if (entry.startsWith(\"../\")) {\r\n    const segments = (base.endsWith(\"/\") ? base.slice(0, -1) : base)\r\n      .split(\"/\")\r\n      .filter(Boolean);\r\n    segments.pop();\r\n    return \"/\" + segments.join(\"/\") + \"/\" + entry.slice(3);\r\n  }\r\n  return entry;\r\n}\r\n\r\nfunction normalizeParts(raw: string): string {\r\n  const pieces = raw.split(\"/\").filter(Boolean);\r\n  const stack: string[] = [];\r\n  for (const piece of pieces) {\r\n    if (piece === \"..\") stack.pop();\r\n    else if (piece !== \".\") stack.push(piece);\r\n  }\r\n  return \"/\" + stack.join(\"/\");\r\n}\r\n\r\nfunction stripNamespacePrefixes(output: BundleOutput): void {\r\n  if (output.outputFiles) {\r\n    for (const f of output.outputFiles) {\r\n      if (f.path.includes(\"vfs:\")) f.path = f.path.replace(/vfs:/g, \"\");\r\n    }\r\n  }\r\n  if (output.metafile) {\r\n    const m = output.metafile as {\r\n      inputs?: Record<string, unknown>;\r\n      outputs?: Record<string, unknown>;\r\n    };\r\n    for (const bucket of [\"inputs\", \"outputs\"] as const) {\r\n      const obj = m[bucket];\r\n      if (!obj) continue;\r\n      for (const key of Object.keys(obj)) {\r\n        if (key.includes(\"vfs:\")) {\r\n          obj[key.replace(/vfs:/g, \"\")] = obj[key];\r\n          delete obj[key];\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\nfunction createVolumePlugin(externals?: string[], platform?: string, conditions?: string[]): unknown {\r\n  if (!volumeRef) return null;\r\n  const vol = volumeRef;\r\n\r\n  return {\r\n    name: \"volume-loader\",\r\n    setup(api: unknown) {\r\n      const b = api as {\r\n        onResolve: (\r\n          o: { filter: RegExp; namespace?: string },\r\n          cb: (a: { path: string; importer: string; kind: string }) => unknown,\r\n        ) => void;\r\n        onLoad: (\r\n          o: { filter: RegExp; namespace?: string },\r\n          cb: (a: {\r\n            path: string;\r\n            namespace?: string;\r\n            pluginData?: Record<string, unknown>;\r\n          }) => unknown,\r\n        ) => void;\r\n      };\r\n\r\n      const tryExts = [\"\", ...RESOLVE_EXTENSIONS];\r\n\r\n      const nativeAddonCache = new Map<string, boolean>();\r\n\r\n      function volumeHit(filePath: string) {\r\n        return { path: filePath, pluginData: { fromVolume: true } };\r\n      }\r\n\r\n      b.onResolve({ filter: /.*/ }, (args) => {\r\n        const { path: raw, importer } = args;\r\n\r\n        if (raw.endsWith(\".node\")) {\r\n          return { external: true };\r\n        }\r\n\r\n        // externalize packages with native bindings (napi/binary/gypfile in package.json)\r\n        if (!raw.startsWith(\".\") && !raw.startsWith(\"/\") && !raw.startsWith(\"#\")) {\r\n          const parts = raw.split(\"/\");\r\n          const scoped = parts[0].startsWith(\"@\");\r\n          const pkgName = scoped ? parts.slice(0, 2).join(\"/\") : parts[0];\r\n\r\n          const cached = nativeAddonCache.get(pkgName);\r\n          if (cached === true) return { external: true };\r\n          if (cached === undefined) {\r\n            const candidates: string[] = [];\r\n            if (importer) {\r\n              let dir = importer.substring(0, importer.lastIndexOf(\"/\"));\r\n              while (dir && dir !== \"/\") {\r\n                candidates.push(dir + \"/node_modules/\" + pkgName);\r\n                dir = dir.substring(0, dir.lastIndexOf(\"/\")) || \"/\";\r\n              }\r\n            }\r\n            candidates.push(\"/node_modules/\" + pkgName);\r\n            // also walk from cwd, for projects outside /project/\r\n            const cwd2 = typeof process !== 'undefined' && process.cwd ? process.cwd() : '/';\r\n            if (cwd2 !== '/') {\r\n              let d2 = cwd2;\r\n              while (d2 !== '/' && d2) {\r\n                const c2 = d2 + '/node_modules/' + pkgName;\r\n                if (!candidates.includes(c2)) candidates.push(c2);\r\n                const p2 = d2.substring(0, d2.lastIndexOf('/')) || '/';\r\n                if (p2 === d2) break;\r\n                d2 = p2;\r\n              }\r\n            }\r\n            let isNative = false;\r\n            for (const candidate of candidates) {\r\n              if (!vol.existsSync(candidate)) continue;\r\n              try {\r\n                const pkgJson = JSON.parse(vol.readFileSync(candidate + \"/package.json\", \"utf8\"));\r\n                if (pkgJson.napi || pkgJson.binary || pkgJson.gypfile) {\r\n                  isNative = true;\r\n                }\r\n              } catch { /* no package.json — proceed */ }\r\n              break;\r\n            }\r\n            nativeAddonCache.set(pkgName, isNative);\r\n            if (isNative) return { external: true };\r\n          }\r\n        }\r\n\r\n        if (raw.startsWith(\"node_modules/\")) {\r\n          const absPath = \"/\" + raw;\r\n          const found = probeFile(vol, absPath, tryExts);\r\n          if (found) return volumeHit(found);\r\n          return { external: true };\r\n        }\r\n\r\n        if (raw.startsWith(\"/\")) {\r\n          const found = probeFile(vol, raw, tryExts);\r\n          return found ? volumeHit(found) : { external: true };\r\n        }\r\n\r\n        if (raw.startsWith(\".\")) {\r\n          let combined = raw;\r\n          if (importer) {\r\n            const dir = importer.substring(0, importer.lastIndexOf(\"/\"));\r\n            combined = dir + \"/\" + raw;\r\n          }\r\n          const normed = normalizeParts(combined);\r\n\r\n          const found = probeFile(vol, normed, tryExts);\r\n          if (found) return volumeHit(found);\r\n\r\n          for (const ext of [\".ts\", \".tsx\", \".js\", \".jsx\"]) {\r\n            const idx = probeFile(vol, normed + \"/index\" + ext, [\"\"]);\r\n            if (idx) return volumeHit(idx);\r\n          }\r\n        }\r\n\r\n        if (raw.startsWith(\"#\")) {\r\n          const importerDir = importer\r\n            ? importer.substring(0, importer.lastIndexOf(\"/\"))\r\n            : resolveWorkingDir();\r\n          const resolved = resolvePackageImport(vol, raw, tryExts, importerDir, platform, conditions);\r\n          if (resolved) return volumeHit(resolved);\r\n          return { external: true };\r\n        }\r\n\r\n        if (\r\n          externals &&\r\n          externals.some((e) => raw === e || raw.startsWith(e + \"/\"))\r\n        ) {\r\n          return { external: true };\r\n        }\r\n\r\n        const importerDir = importer\r\n          ? importer.substring(0, importer.lastIndexOf(\"/\"))\r\n          : resolveWorkingDir();\r\n        const hit = locateModule(vol, raw, tryExts, importerDir, platform, conditions);\r\n        if (hit) {\r\n          return { path: hit.resolvedPath, pluginData: { fromVolume: true } };\r\n        }\r\n\r\n        // builtins resolve at runtime via our module resolver\r\n        const bare = raw.replace(/^node:/, \"\");\r\n        if (BUILTIN_MODULES.has(bare)) {\r\n          return { external: true };\r\n        }\r\n\r\n        // let other plugins handle virtual module IDs (e.g. Vite dep optimizer)\r\n        if (args.kind === \"entry-point\") {\r\n          return undefined;\r\n        }\r\n\r\n        return { external: true };\r\n      });\r\n\r\n      b.onLoad({ filter: /.*/, namespace: \"builtin-stub\" }, () => {\r\n        return { contents: \"module.exports = {};\", loader: \"js\" as const };\r\n      });\r\n\r\n      // read from VFS -- matches ALL paths since other plugins may resolve to relative paths\r\n      b.onLoad({ filter: /.*/ }, (args) => {\r\n        if (\r\n          args.namespace &&\r\n          args.namespace !== \"file\" &&\r\n          args.namespace !== \"\"\r\n        )\r\n          return null;\r\n\r\n        const fromVolume = args.pluginData?.fromVolume;\r\n\r\n        if (!fromVolume) {\r\n          let tryPath = args.path;\r\n          if (!tryPath.startsWith(\"/\")) {\r\n            tryPath = \"/\" + tryPath;\r\n          }\r\n          if (!vol.existsSync(tryPath)) return null;\r\n          args = {\r\n            ...args,\r\n            path: tryPath,\r\n            pluginData: { fromVolume: true, actualPath: tryPath },\r\n          };\r\n        }\r\n        try {\r\n          const diskPath =\r\n            (args.pluginData?.actualPath as string | undefined) || args.path;\r\n          let source: string;\r\n          if (vol.existsSync(diskPath)) {\r\n            source = vol.readFileSync(diskPath, \"utf8\");\r\n          } else {\r\n            throw new Error(`Not found: ${diskPath}`);\r\n          }\r\n\r\n          // stub out files that require .node native addons\r\n          if (diskPath.includes(\"node_modules\") &&\r\n              /require\\(.+\\.node['\"`)]/m.test(source.slice(0, 4096))) {\r\n            return { contents: \"module.exports = {};\", loader: \"js\" as const };\r\n          }\r\n\r\n          // strip top-level await so esbuild doesn't reject CJS require() calls\r\n          if (/\\bawait\\b/.test(source) && !args.path.endsWith(\".mjs\")) {\r\n            source = stripTopLevelAwait(source, \"topLevelOnly\");\r\n          }\r\n\r\n          const dot = diskPath.lastIndexOf(\".\");\r\n          const ext = dot >= 0 ? diskPath.substring(dot) : \"\";\r\n          const loaderMap = ESBUILD_LOADER_MAP;\r\n          let loader = loaderMap[ext] as\r\n            | \"ts\"\r\n            | \"tsx\"\r\n            | \"js\"\r\n            | \"jsx\"\r\n            | \"json\"\r\n            | \"css\"\r\n            | \"text\"\r\n            | \"file\"\r\n            | undefined;\r\n\r\n          // unknown extensions: let other plugins handle (e.g. .html, .svelte, .vue)\r\n          if (!loader) return null;\r\n\r\n          return { contents: source, loader };\r\n        } catch (err) {\r\n          if (args.path.endsWith(\".map\")) {\r\n            return {\r\n              contents: '{\"version\":3,\"sources\":[],\"mappings\":\"\"}',\r\n              loader: \"json\" as const,\r\n            };\r\n          }\r\n          return {\r\n            errors: [{ text: `volume-loader: ${args.path} -- ${err}` }],\r\n          };\r\n        }\r\n      });\r\n    },\r\n  };\r\n}\r\n","module.exports = {\n  quot: '\\u0022',\n  amp: '&',\n  apos: '\\u0027',\n  lt: '<',\n  gt: '>',\n  nbsp: '\\u00A0',\n  iexcl: '\\u00A1',\n  cent: '\\u00A2',\n  pound: '\\u00A3',\n  curren: '\\u00A4',\n  yen: '\\u00A5',\n  brvbar: '\\u00A6',\n  sect: '\\u00A7',\n  uml: '\\u00A8',\n  copy: '\\u00A9',\n  ordf: '\\u00AA',\n  laquo: '\\u00AB',\n  not: '\\u00AC',\n  shy: '\\u00AD',\n  reg: '\\u00AE',\n  macr: '\\u00AF',\n  deg: '\\u00B0',\n  plusmn: '\\u00B1',\n  sup2: '\\u00B2',\n  sup3: '\\u00B3',\n  acute: '\\u00B4',\n  micro: '\\u00B5',\n  para: '\\u00B6',\n  middot: '\\u00B7',\n  cedil: '\\u00B8',\n  sup1: '\\u00B9',\n  ordm: '\\u00BA',\n  raquo: '\\u00BB',\n  frac14: '\\u00BC',\n  frac12: '\\u00BD',\n  frac34: '\\u00BE',\n  iquest: '\\u00BF',\n  Agrave: '\\u00C0',\n  Aacute: '\\u00C1',\n  Acirc: '\\u00C2',\n  Atilde: '\\u00C3',\n  Auml: '\\u00C4',\n  Aring: '\\u00C5',\n  AElig: '\\u00C6',\n  Ccedil: '\\u00C7',\n  Egrave: '\\u00C8',\n  Eacute: '\\u00C9',\n  Ecirc: '\\u00CA',\n  Euml: '\\u00CB',\n  Igrave: '\\u00CC',\n  Iacute: '\\u00CD',\n  Icirc: '\\u00CE',\n  Iuml: '\\u00CF',\n  ETH: '\\u00D0',\n  Ntilde: '\\u00D1',\n  Ograve: '\\u00D2',\n  Oacute: '\\u00D3',\n  Ocirc: '\\u00D4',\n  Otilde: '\\u00D5',\n  Ouml: '\\u00D6',\n  times: '\\u00D7',\n  Oslash: '\\u00D8',\n  Ugrave: '\\u00D9',\n  Uacute: '\\u00DA',\n  Ucirc: '\\u00DB',\n  Uuml: '\\u00DC',\n  Yacute: '\\u00DD',\n  THORN: '\\u00DE',\n  szlig: '\\u00DF',\n  agrave: '\\u00E0',\n  aacute: '\\u00E1',\n  acirc: '\\u00E2',\n  atilde: '\\u00E3',\n  auml: '\\u00E4',\n  aring: '\\u00E5',\n  aelig: '\\u00E6',\n  ccedil: '\\u00E7',\n  egrave: '\\u00E8',\n  eacute: '\\u00E9',\n  ecirc: '\\u00EA',\n  euml: '\\u00EB',\n  igrave: '\\u00EC',\n  iacute: '\\u00ED',\n  icirc: '\\u00EE',\n  iuml: '\\u00EF',\n  eth: '\\u00F0',\n  ntilde: '\\u00F1',\n  ograve: '\\u00F2',\n  oacute: '\\u00F3',\n  ocirc: '\\u00F4',\n  otilde: '\\u00F5',\n  ouml: '\\u00F6',\n  divide: '\\u00F7',\n  oslash: '\\u00F8',\n  ugrave: '\\u00F9',\n  uacute: '\\u00FA',\n  ucirc: '\\u00FB',\n  uuml: '\\u00FC',\n  yacute: '\\u00FD',\n  thorn: '\\u00FE',\n  yuml: '\\u00FF',\n  OElig: '\\u0152',\n  oelig: '\\u0153',\n  Scaron: '\\u0160',\n  scaron: '\\u0161',\n  Yuml: '\\u0178',\n  fnof: '\\u0192',\n  circ: '\\u02C6',\n  tilde: '\\u02DC',\n  Alpha: '\\u0391',\n  Beta: '\\u0392',\n  Gamma: '\\u0393',\n  Delta: '\\u0394',\n  Epsilon: '\\u0395',\n  Zeta: '\\u0396',\n  Eta: '\\u0397',\n  Theta: '\\u0398',\n  Iota: '\\u0399',\n  Kappa: '\\u039A',\n  Lambda: '\\u039B',\n  Mu: '\\u039C',\n  Nu: '\\u039D',\n  Xi: '\\u039E',\n  Omicron: '\\u039F',\n  Pi: '\\u03A0',\n  Rho: '\\u03A1',\n  Sigma: '\\u03A3',\n  Tau: '\\u03A4',\n  Upsilon: '\\u03A5',\n  Phi: '\\u03A6',\n  Chi: '\\u03A7',\n  Psi: '\\u03A8',\n  Omega: '\\u03A9',\n  alpha: '\\u03B1',\n  beta: '\\u03B2',\n  gamma: '\\u03B3',\n  delta: '\\u03B4',\n  epsilon: '\\u03B5',\n  zeta: '\\u03B6',\n  eta: '\\u03B7',\n  theta: '\\u03B8',\n  iota: '\\u03B9',\n  kappa: '\\u03BA',\n  lambda: '\\u03BB',\n  mu: '\\u03BC',\n  nu: '\\u03BD',\n  xi: '\\u03BE',\n  omicron: '\\u03BF',\n  pi: '\\u03C0',\n  rho: '\\u03C1',\n  sigmaf: '\\u03C2',\n  sigma: '\\u03C3',\n  tau: '\\u03C4',\n  upsilon: '\\u03C5',\n  phi: '\\u03C6',\n  chi: '\\u03C7',\n  psi: '\\u03C8',\n  omega: '\\u03C9',\n  thetasym: '\\u03D1',\n  upsih: '\\u03D2',\n  piv: '\\u03D6',\n  ensp: '\\u2002',\n  emsp: '\\u2003',\n  thinsp: '\\u2009',\n  zwnj: '\\u200C',\n  zwj: '\\u200D',\n  lrm: '\\u200E',\n  rlm: '\\u200F',\n  ndash: '\\u2013',\n  mdash: '\\u2014',\n  lsquo: '\\u2018',\n  rsquo: '\\u2019',\n  sbquo: '\\u201A',\n  ldquo: '\\u201C',\n  rdquo: '\\u201D',\n  bdquo: '\\u201E',\n  dagger: '\\u2020',\n  Dagger: '\\u2021',\n  bull: '\\u2022',\n  hellip: '\\u2026',\n  permil: '\\u2030',\n  prime: '\\u2032',\n  Prime: '\\u2033',\n  lsaquo: '\\u2039',\n  rsaquo: '\\u203A',\n  oline: '\\u203E',\n  frasl: '\\u2044',\n  euro: '\\u20AC',\n  image: '\\u2111',\n  weierp: '\\u2118',\n  real: '\\u211C',\n  trade: '\\u2122',\n  alefsym: '\\u2135',\n  larr: '\\u2190',\n  uarr: '\\u2191',\n  rarr: '\\u2192',\n  darr: '\\u2193',\n  harr: '\\u2194',\n  crarr: '\\u21B5',\n  lArr: '\\u21D0',\n  uArr: '\\u21D1',\n  rArr: '\\u21D2',\n  dArr: '\\u21D3',\n  hArr: '\\u21D4',\n  forall: '\\u2200',\n  part: '\\u2202',\n  exist: '\\u2203',\n  empty: '\\u2205',\n  nabla: '\\u2207',\n  isin: '\\u2208',\n  notin: '\\u2209',\n  ni: '\\u220B',\n  prod: '\\u220F',\n  sum: '\\u2211',\n  minus: '\\u2212',\n  lowast: '\\u2217',\n  radic: '\\u221A',\n  prop: '\\u221D',\n  infin: '\\u221E',\n  ang: '\\u2220',\n  and: '\\u2227',\n  or: '\\u2228',\n  cap: '\\u2229',\n  cup: '\\u222A',\n  'int': '\\u222B',\n  there4: '\\u2234',\n  sim: '\\u223C',\n  cong: '\\u2245',\n  asymp: '\\u2248',\n  ne: '\\u2260',\n  equiv: '\\u2261',\n  le: '\\u2264',\n  ge: '\\u2265',\n  sub: '\\u2282',\n  sup: '\\u2283',\n  nsub: '\\u2284',\n  sube: '\\u2286',\n  supe: '\\u2287',\n  oplus: '\\u2295',\n  otimes: '\\u2297',\n  perp: '\\u22A5',\n  sdot: '\\u22C5',\n  lceil: '\\u2308',\n  rceil: '\\u2309',\n  lfloor: '\\u230A',\n  rfloor: '\\u230B',\n  lang: '\\u2329',\n  rang: '\\u232A',\n  loz: '\\u25CA',\n  spades: '\\u2660',\n  clubs: '\\u2663',\n  hearts: '\\u2665',\n  diams: '\\u2666'\n};\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.acorn = {}));\n})(this, (function (exports) { 'use strict';\n\n  // This file was generated. Do not modify manually!\n  var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\n  // This file was generated. Do not modify manually!\n  var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];\n\n  // This file was generated. Do not modify manually!\n  var nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\n  // This file was generated. Do not modify manually!\n  var nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n\n  // These are a run-length and offset encoded representation of the\n  // >0xffff code points that are a valid part of identifiers. The\n  // offset starts at 0x10000, and each pair of numbers represents an\n  // offset to the next range, and then a size of the range.\n\n  // Reserved word lists for various dialects of the language\n\n  var reservedWords = {\n    3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n    5: \"class enum extends super const export import\",\n    6: \"enum\",\n    strict: \"implements interface let package private protected public static yield\",\n    strictBind: \"eval arguments\"\n  };\n\n  // And the keywords\n\n  var ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\n  var keywords$1 = {\n    5: ecma5AndLessKeywords,\n    \"5module\": ecma5AndLessKeywords + \" export import\",\n    6: ecma5AndLessKeywords + \" const class extends export import super\"\n  };\n\n  var keywordRelationalOperator = /^in(stanceof)?$/;\n\n  // ## Character categories\n\n  var nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\n  var nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n  // This has a complexity linear to the value of the code. The\n  // assumption is that looking up astral identifier characters is\n  // rare.\n  function isInAstralSet(code, set) {\n    var pos = 0x10000;\n    for (var i = 0; i < set.length; i += 2) {\n      pos += set[i];\n      if (pos > code) { return false }\n      pos += set[i + 1];\n      if (pos >= code) { return true }\n    }\n    return false\n  }\n\n  // Test whether a given character code starts an identifier.\n\n  function isIdentifierStart(code, astral) {\n    if (code < 65) { return code === 36 }\n    if (code < 91) { return true }\n    if (code < 97) { return code === 95 }\n    if (code < 123) { return true }\n    if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n    if (astral === false) { return false }\n    return isInAstralSet(code, astralIdentifierStartCodes)\n  }\n\n  // Test whether a given character is part of an identifier.\n\n  function isIdentifierChar(code, astral) {\n    if (code < 48) { return code === 36 }\n    if (code < 58) { return true }\n    if (code < 65) { return false }\n    if (code < 91) { return true }\n    if (code < 97) { return code === 95 }\n    if (code < 123) { return true }\n    if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n    if (astral === false) { return false }\n    return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n  }\n\n  // ## Token types\n\n  // The assignment of fine-grained, information-carrying type objects\n  // allows the tokenizer to store the information it has about a\n  // token in a way that is very cheap for the parser to look up.\n\n  // All token type variables start with an underscore, to make them\n  // easy to recognize.\n\n  // The `beforeExpr` property is used to disambiguate between regular\n  // expressions and divisions. It is set on all token types that can\n  // be followed by an expression (thus, a slash after them would be a\n  // regular expression).\n  //\n  // The `startsExpr` property is used to check if the token ends a\n  // `yield` expression. It is set on all token types that either can\n  // directly start an expression (like a quotation mark) or can\n  // continue an expression (like the body of a string).\n  //\n  // `isLoop` marks a keyword as starting a loop, which is important\n  // to know when parsing a label, in order to allow or disallow\n  // continue jumps to that label.\n\n  var TokenType = function TokenType(label, conf) {\n    if ( conf === void 0 ) conf = {};\n\n    this.label = label;\n    this.keyword = conf.keyword;\n    this.beforeExpr = !!conf.beforeExpr;\n    this.startsExpr = !!conf.startsExpr;\n    this.isLoop = !!conf.isLoop;\n    this.isAssign = !!conf.isAssign;\n    this.prefix = !!conf.prefix;\n    this.postfix = !!conf.postfix;\n    this.binop = conf.binop || null;\n    this.updateContext = null;\n  };\n\n  function binop(name, prec) {\n    return new TokenType(name, {beforeExpr: true, binop: prec})\n  }\n  var beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true};\n\n  // Map keyword names to token types.\n\n  var keywords = {};\n\n  // Succinct definitions of keyword token types\n  function kw(name, options) {\n    if ( options === void 0 ) options = {};\n\n    options.keyword = name;\n    return keywords[name] = new TokenType(name, options)\n  }\n\n  var types$1 = {\n    num: new TokenType(\"num\", startsExpr),\n    regexp: new TokenType(\"regexp\", startsExpr),\n    string: new TokenType(\"string\", startsExpr),\n    name: new TokenType(\"name\", startsExpr),\n    privateId: new TokenType(\"privateId\", startsExpr),\n    eof: new TokenType(\"eof\"),\n\n    // Punctuation token types.\n    bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n    bracketR: new TokenType(\"]\"),\n    braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n    braceR: new TokenType(\"}\"),\n    parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n    parenR: new TokenType(\")\"),\n    comma: new TokenType(\",\", beforeExpr),\n    semi: new TokenType(\";\", beforeExpr),\n    colon: new TokenType(\":\", beforeExpr),\n    dot: new TokenType(\".\"),\n    question: new TokenType(\"?\", beforeExpr),\n    questionDot: new TokenType(\"?.\"),\n    arrow: new TokenType(\"=>\", beforeExpr),\n    template: new TokenType(\"template\"),\n    invalidTemplate: new TokenType(\"invalidTemplate\"),\n    ellipsis: new TokenType(\"...\", beforeExpr),\n    backQuote: new TokenType(\"`\", startsExpr),\n    dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n    // Operators. These carry several kinds of properties to help the\n    // parser use them properly (the presence of these properties is\n    // what categorizes them as operators).\n    //\n    // `binop`, when present, specifies that this operator is a binary\n    // operator, and will refer to its precedence.\n    //\n    // `prefix` and `postfix` mark the operator as a prefix or postfix\n    // unary operator.\n    //\n    // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n    // binary operators with a very low precedence, that should result\n    // in AssignmentExpression nodes.\n\n    eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n    assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n    incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n    prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n    logicalOR: binop(\"||\", 1),\n    logicalAND: binop(\"&&\", 2),\n    bitwiseOR: binop(\"|\", 3),\n    bitwiseXOR: binop(\"^\", 4),\n    bitwiseAND: binop(\"&\", 5),\n    equality: binop(\"==/!=/===/!==\", 6),\n    relational: binop(\"</>/<=/>=\", 7),\n    bitShift: binop(\"<</>>/>>>\", 8),\n    plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n    modulo: binop(\"%\", 10),\n    star: binop(\"*\", 10),\n    slash: binop(\"/\", 10),\n    starstar: new TokenType(\"**\", {beforeExpr: true}),\n    coalesce: binop(\"??\", 1),\n\n    // Keyword token types.\n    _break: kw(\"break\"),\n    _case: kw(\"case\", beforeExpr),\n    _catch: kw(\"catch\"),\n    _continue: kw(\"continue\"),\n    _debugger: kw(\"debugger\"),\n    _default: kw(\"default\", beforeExpr),\n    _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n    _else: kw(\"else\", beforeExpr),\n    _finally: kw(\"finally\"),\n    _for: kw(\"for\", {isLoop: true}),\n    _function: kw(\"function\", startsExpr),\n    _if: kw(\"if\"),\n    _return: kw(\"return\", beforeExpr),\n    _switch: kw(\"switch\"),\n    _throw: kw(\"throw\", beforeExpr),\n    _try: kw(\"try\"),\n    _var: kw(\"var\"),\n    _const: kw(\"const\"),\n    _while: kw(\"while\", {isLoop: true}),\n    _with: kw(\"with\"),\n    _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n    _this: kw(\"this\", startsExpr),\n    _super: kw(\"super\", startsExpr),\n    _class: kw(\"class\", startsExpr),\n    _extends: kw(\"extends\", beforeExpr),\n    _export: kw(\"export\"),\n    _import: kw(\"import\", startsExpr),\n    _null: kw(\"null\", startsExpr),\n    _true: kw(\"true\", startsExpr),\n    _false: kw(\"false\", startsExpr),\n    _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n    _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n    _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n    _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n    _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n  };\n\n  // Matches a whole line break (where CRLF is considered a single\n  // line break). Used to count lines.\n\n  var lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\n  var lineBreakG = new RegExp(lineBreak.source, \"g\");\n\n  function isNewLine(code) {\n    return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n  }\n\n  function nextLineBreak(code, from, end) {\n    if ( end === void 0 ) end = code.length;\n\n    for (var i = from; i < end; i++) {\n      var next = code.charCodeAt(i);\n      if (isNewLine(next))\n        { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 }\n    }\n    return -1\n  }\n\n  var nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\n  var skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\n  var ref = Object.prototype;\n  var hasOwnProperty = ref.hasOwnProperty;\n  var toString = ref.toString;\n\n  var hasOwn = Object.hasOwn || (function (obj, propName) { return (\n    hasOwnProperty.call(obj, propName)\n  ); });\n\n  var isArray = Array.isArray || (function (obj) { return (\n    toString.call(obj) === \"[object Array]\"\n  ); });\n\n  var regexpCache = Object.create(null);\n\n  function wordsRegexp(words) {\n    return regexpCache[words] || (regexpCache[words] = new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\"))\n  }\n\n  function codePointToString(code) {\n    // UTF-16 Decoding\n    if (code <= 0xFFFF) { return String.fromCharCode(code) }\n    code -= 0x10000;\n    return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n  }\n\n  var loneSurrogate = /(?:[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/;\n\n  // These are used when `options.locations` is on, for the\n  // `startLoc` and `endLoc` properties.\n\n  var Position = function Position(line, col) {\n    this.line = line;\n    this.column = col;\n  };\n\n  Position.prototype.offset = function offset (n) {\n    return new Position(this.line, this.column + n)\n  };\n\n  var SourceLocation = function SourceLocation(p, start, end) {\n    this.start = start;\n    this.end = end;\n    if (p.sourceFile !== null) { this.source = p.sourceFile; }\n  };\n\n  // The `getLineInfo` function is mostly useful when the\n  // `locations` option is off (for performance reasons) and you\n  // want to find the line/column position for a given character\n  // offset. `input` should be the code string that the offset refers\n  // into.\n\n  function getLineInfo(input, offset) {\n    for (var line = 1, cur = 0;;) {\n      var nextBreak = nextLineBreak(input, cur, offset);\n      if (nextBreak < 0) { return new Position(line, offset - cur) }\n      ++line;\n      cur = nextBreak;\n    }\n  }\n\n  // A second argument must be given to configure the parser process.\n  // These options are recognized (only `ecmaVersion` is required):\n\n  var defaultOptions = {\n    // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n    // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10\n    // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `\"latest\"`\n    // (the latest version the library supports). This influences\n    // support for strict mode, the set of reserved words, and support\n    // for new syntax features.\n    ecmaVersion: null,\n    // `sourceType` indicates the mode the code should be parsed in.\n    // Can be either `\"script\"`, `\"module\"` or `\"commonjs\"`. This influences global\n    // strict mode and parsing of `import` and `export` declarations.\n    sourceType: \"script\",\n    // When set to true, enable strict parsing mode even if `sourceType`\n    // is `\"script\"`.\n    strict: false,\n    // `onInsertedSemicolon` can be a callback that will be called when\n    // a semicolon is automatically inserted. It will be passed the\n    // position of the inserted semicolon as an offset, and if\n    // `locations` is enabled, it is given the location as a `{line,\n    // column}` object as second argument.\n    onInsertedSemicolon: null,\n    // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n    // trailing commas.\n    onTrailingComma: null,\n    // By default, reserved words are only enforced if ecmaVersion >= 5.\n    // Set `allowReserved` to a boolean value to explicitly turn this on\n    // an off. When this option has the value \"never\", reserved words\n    // and keywords can also not be used as property names.\n    allowReserved: null,\n    // When enabled, a return at the top level is not considered an\n    // error.\n    allowReturnOutsideFunction: false,\n    // When enabled, import/export statements are not constrained to\n    // appearing at the top of the program, and an import.meta expression\n    // in a script isn't considered an error.\n    allowImportExportEverywhere: false,\n    // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.\n    // When enabled, await identifiers are allowed to appear at the top-level scope,\n    // but they are still not allowed in non-async functions.\n    allowAwaitOutsideFunction: null,\n    // When enabled, super identifiers are not constrained to\n    // appearing in methods and do not raise an error when they appear elsewhere.\n    allowSuperOutsideMethod: null,\n    // When enabled, hashbang directive in the beginning of file is\n    // allowed and treated as a line comment. Enabled by default when\n    // `ecmaVersion` >= 2023.\n    allowHashBang: false,\n    // By default, the parser will verify that private properties are\n    // only used in places where they are valid and have been declared.\n    // Set this to false to turn such checks off.\n    checkPrivateFields: true,\n    // When `locations` is on, `loc` properties holding objects with\n    // `start` and `end` properties in `{line, column}` form (with\n    // line being 1-based and column 0-based) will be attached to the\n    // nodes.\n    locations: false,\n    // A function can be passed as `onToken` option, which will\n    // cause Acorn to call that function with object in the same\n    // format as tokens returned from `tokenizer().getToken()`. Note\n    // that you are not allowed to call the parser from the\n    // callback—that will corrupt its internal state.\n    onToken: null,\n    // A function can be passed as `onComment` option, which will\n    // cause Acorn to call that function with `(block, text, start,\n    // end)` parameters whenever a comment is skipped. `block` is a\n    // boolean indicating whether this is a block (`/* */`) comment,\n    // `text` is the content of the comment, and `start` and `end` are\n    // character offsets that denote the start and end of the comment.\n    // When the `locations` option is on, two more parameters are\n    // passed, the full `{line, column}` locations of the start and\n    // end of the comments. Note that you are not allowed to call the\n    // parser from the callback—that will corrupt its internal state.\n    // When this option has an array as value, objects representing the\n    // comments are pushed to it.\n    onComment: null,\n    // Nodes have their start and end characters offsets recorded in\n    // `start` and `end` properties (directly on the node, rather than\n    // the `loc` object, which holds line/column data. To also add a\n    // [semi-standardized][range] `range` property holding a `[start,\n    // end]` array with the same numbers, set the `ranges` option to\n    // `true`.\n    //\n    // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n    ranges: false,\n    // It is possible to parse multiple files into a single AST by\n    // passing the tree produced by parsing the first file as\n    // `program` option in subsequent parses. This will add the\n    // toplevel forms of the parsed file to the `Program` (top) node\n    // of an existing parse tree.\n    program: null,\n    // When `locations` is on, you can pass this to record the source\n    // file in every node's `loc` object.\n    sourceFile: null,\n    // This value, if given, is stored in every node, whether\n    // `locations` is on or off.\n    directSourceFile: null,\n    // When enabled, parenthesized expressions are represented by\n    // (non-standard) ParenthesizedExpression nodes\n    preserveParens: false\n  };\n\n  // Interpret and default an options object\n\n  var warnedAboutEcmaVersion = false;\n\n  function getOptions(opts) {\n    var options = {};\n\n    for (var opt in defaultOptions)\n      { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n    if (options.ecmaVersion === \"latest\") {\n      options.ecmaVersion = 1e8;\n    } else if (options.ecmaVersion == null) {\n      if (!warnedAboutEcmaVersion && typeof console === \"object\" && console.warn) {\n        warnedAboutEcmaVersion = true;\n        console.warn(\"Since Acorn 8.0.0, options.ecmaVersion is required.\\nDefaulting to 2020, but this will stop working in the future.\");\n      }\n      options.ecmaVersion = 11;\n    } else if (options.ecmaVersion >= 2015) {\n      options.ecmaVersion -= 2009;\n    }\n\n    if (options.allowReserved == null)\n      { options.allowReserved = options.ecmaVersion < 5; }\n\n    if (!opts || opts.allowHashBang == null)\n      { options.allowHashBang = options.ecmaVersion >= 14; }\n\n    if (isArray(options.onToken)) {\n      var tokens = options.onToken;\n      options.onToken = function (token) { return tokens.push(token); };\n    }\n    if (isArray(options.onComment))\n      { options.onComment = pushComment(options, options.onComment); }\n\n    if (options.sourceType === \"commonjs\" && options.allowAwaitOutsideFunction)\n      { throw new Error(\"Cannot use allowAwaitOutsideFunction with sourceType: commonjs\") }\n\n    return options\n  }\n\n  function pushComment(options, array) {\n    return function(block, text, start, end, startLoc, endLoc) {\n      var comment = {\n        type: block ? \"Block\" : \"Line\",\n        value: text,\n        start: start,\n        end: end\n      };\n      if (options.locations)\n        { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n      if (options.ranges)\n        { comment.range = [start, end]; }\n      array.push(comment);\n    }\n  }\n\n  // Each scope gets a bitset that may contain these flags\n  var\n      SCOPE_TOP = 1,\n      SCOPE_FUNCTION = 2,\n      SCOPE_ASYNC = 4,\n      SCOPE_GENERATOR = 8,\n      SCOPE_ARROW = 16,\n      SCOPE_SIMPLE_CATCH = 32,\n      SCOPE_SUPER = 64,\n      SCOPE_DIRECT_SUPER = 128,\n      SCOPE_CLASS_STATIC_BLOCK = 256,\n      SCOPE_CLASS_FIELD_INIT = 512,\n      SCOPE_SWITCH = 1024,\n      SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;\n\n  function functionFlags(async, generator) {\n    return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n  }\n\n  // Used in checkLVal* and declareName to determine the type of a binding\n  var\n      BIND_NONE = 0, // Not a binding\n      BIND_VAR = 1, // Var-style binding\n      BIND_LEXICAL = 2, // Let- or const-style binding\n      BIND_FUNCTION = 3, // Function declaration\n      BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n      BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\n  var Parser = function Parser(options, input, startPos) {\n    this.options = options = getOptions(options);\n    this.sourceFile = options.sourceFile;\n    this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === \"module\" ? \"5module\" : 5]);\n    var reserved = \"\";\n    if (options.allowReserved !== true) {\n      reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3];\n      if (options.sourceType === \"module\") { reserved += \" await\"; }\n    }\n    this.reservedWords = wordsRegexp(reserved);\n    var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n    this.reservedWordsStrict = wordsRegexp(reservedStrict);\n    this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n    this.input = String(input);\n\n    // Used to signal to callers of `readWord1` whether the word\n    // contained any escape sequences. This is needed because words with\n    // escape sequences must not be interpreted as keywords.\n    this.containsEsc = false;\n\n    // Set up token state\n\n    // The current position of the tokenizer in the input.\n    if (startPos) {\n      this.pos = startPos;\n      this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n      this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n    } else {\n      this.pos = this.lineStart = 0;\n      this.curLine = 1;\n    }\n\n    // Properties of the current token:\n    // Its type\n    this.type = types$1.eof;\n    // For tokens that include more information than their type, the value\n    this.value = null;\n    // Its start and end offset\n    this.start = this.end = this.pos;\n    // And, if locations are used, the {line, column} object\n    // corresponding to those offsets\n    this.startLoc = this.endLoc = this.curPosition();\n\n    // Position information for the previous token\n    this.lastTokEndLoc = this.lastTokStartLoc = null;\n    this.lastTokStart = this.lastTokEnd = this.pos;\n\n    // The context stack is used to superficially track syntactic\n    // context to predict whether a regular expression is allowed in a\n    // given position.\n    this.context = this.initialContext();\n    this.exprAllowed = true;\n\n    // Figure out if it's a module code.\n    this.inModule = options.sourceType === \"module\";\n    this.strict = this.inModule || options.strict === true || this.strictDirective(this.pos);\n\n    // Used to signify the start of a potential arrow function\n    this.potentialArrowAt = -1;\n    this.potentialArrowInForAwait = false;\n\n    // Positions to delayed-check that yield/await does not exist in default parameters.\n    this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;\n    // Labels in scope.\n    this.labels = [];\n    // Thus-far undefined exports.\n    this.undefinedExports = Object.create(null);\n\n    // If enabled, skip leading hashbang line.\n    if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n      { this.skipLineComment(2); }\n\n    // Scope tracking for duplicate variable names (see scope.js)\n    this.scopeStack = [];\n    this.enterScope(\n      this.options.sourceType === \"commonjs\"\n        // In commonjs, the top-level scope behaves like a function scope\n        ? SCOPE_FUNCTION\n        : SCOPE_TOP\n    );\n\n    // For RegExp validation\n    this.regexpState = null;\n\n    // The stack of private names.\n    // Each element has two properties: 'declared' and 'used'.\n    // When it exited from the outermost class definition, all used private names must be declared.\n    this.privateNameStack = [];\n  };\n\n  var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowReturn: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },allowUsing: { configurable: true },inClassStaticBlock: { configurable: true } };\n\n  Parser.prototype.parse = function parse () {\n      var this$1$1 = this;\n\n    var node = this.options.program || this.startNode();\n    this.nextToken();\n    return this.catchStackOverflow(function () { return this$1$1.parseTopLevel(node); })\n  };\n\n  prototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };\n\n  prototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 };\n\n  prototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 };\n\n  prototypeAccessors.canAwait.get = function () {\n    for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n      var ref = this.scopeStack[i];\n        var flags = ref.flags;\n      if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false }\n      if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 }\n    }\n    return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction\n  };\n\n  prototypeAccessors.allowReturn.get = function () {\n    if (this.inFunction) { return true }\n    if (this.options.allowReturnOutsideFunction && this.currentVarScope().flags & SCOPE_TOP) { return true }\n    return false\n  };\n\n  prototypeAccessors.allowSuper.get = function () {\n    var ref = this.currentThisScope();\n      var flags = ref.flags;\n    return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod\n  };\n\n  prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };\n\n  prototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };\n\n  prototypeAccessors.allowNewDotTarget.get = function () {\n    for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n      var ref = this.scopeStack[i];\n        var flags = ref.flags;\n      if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) ||\n          ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true }\n    }\n    return false\n  };\n\n  prototypeAccessors.allowUsing.get = function () {\n    var ref = this.currentScope();\n      var flags = ref.flags;\n    if (flags & SCOPE_SWITCH) { return false }\n    if (!this.inModule && flags & SCOPE_TOP) { return false }\n    return true\n  };\n\n  prototypeAccessors.inClassStaticBlock.get = function () {\n    return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0\n  };\n\n  Parser.extend = function extend () {\n      var plugins = [], len = arguments.length;\n      while ( len-- ) plugins[ len ] = arguments[ len ];\n\n    var cls = this;\n    for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); }\n    return cls\n  };\n\n  Parser.parse = function parse (input, options) {\n    return new this(options, input).parse()\n  };\n\n  Parser.parseExpressionAt = function parseExpressionAt (input, pos, options) {\n    var parser = new this(options, input, pos);\n    parser.nextToken();\n    return parser.parseExpression()\n  };\n\n  Parser.tokenizer = function tokenizer (input, options) {\n    return new this(options, input)\n  };\n\n  Object.defineProperties( Parser.prototype, prototypeAccessors );\n\n  var pp$9 = Parser.prototype;\n\n  // ## Parser utilities\n\n  var literal = /^(?:'((?:\\\\[^]|[^'\\\\])*?)'|\"((?:\\\\[^]|[^\"\\\\])*?)\")/;\n  pp$9.strictDirective = function(start) {\n    if (this.options.ecmaVersion < 5) { return false }\n    for (;;) {\n      // Try to find string literal.\n      skipWhiteSpace.lastIndex = start;\n      start += skipWhiteSpace.exec(this.input)[0].length;\n      var match = literal.exec(this.input.slice(start));\n      if (!match) { return false }\n      if ((match[1] || match[2]) === \"use strict\") {\n        skipWhiteSpace.lastIndex = start + match[0].length;\n        var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length;\n        var next = this.input.charAt(end);\n        return next === \";\" || next === \"}\" ||\n          (lineBreak.test(spaceAfter[0]) &&\n           !(/[(`.[+\\-/*%<>=,?^&]/.test(next) || next === \"!\" && this.input.charAt(end + 1) === \"=\"))\n      }\n      start += match[0].length;\n\n      // Skip semicolon, if any.\n      skipWhiteSpace.lastIndex = start;\n      start += skipWhiteSpace.exec(this.input)[0].length;\n      if (this.input[start] === \";\")\n        { start++; }\n    }\n  };\n\n  // Predicate that tests whether the next token is of the given\n  // type, and if yes, consumes it as a side effect.\n\n  pp$9.eat = function(type) {\n    if (this.type === type) {\n      this.next();\n      return true\n    } else {\n      return false\n    }\n  };\n\n  // Tests whether parsed token is a contextual keyword.\n\n  pp$9.isContextual = function(name) {\n    return this.type === types$1.name && this.value === name && !this.containsEsc\n  };\n\n  // Consumes contextual keyword if possible.\n\n  pp$9.eatContextual = function(name) {\n    if (!this.isContextual(name)) { return false }\n    this.next();\n    return true\n  };\n\n  pp$9.catchStackOverflow = function(f) {\n    try {\n      return f()\n    } catch (e) {\n      if (e instanceof Error && (/\\bstack\\b.*\\b(exceeded|overflow)\\b/i.test(e.message) || /\\btoo much recursion\\b/i.test(e.message)))\n        { this.raise(this.start, \"Not enough stack space to parse input\"); }\n      else\n        { throw e }\n    }\n  };\n\n  // Asserts that following token is given contextual keyword.\n\n  pp$9.expectContextual = function(name) {\n    if (!this.eatContextual(name)) { this.unexpected(); }\n  };\n\n  // Test whether a semicolon can be inserted at the current position.\n\n  pp$9.canInsertSemicolon = function() {\n    return this.type === types$1.eof ||\n      this.type === types$1.braceR ||\n      lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n  };\n\n  pp$9.insertSemicolon = function() {\n    if (this.canInsertSemicolon()) {\n      if (this.options.onInsertedSemicolon)\n        { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n      return true\n    }\n  };\n\n  // Consume a semicolon, or, failing that, see if we are allowed to\n  // pretend that there is a semicolon at this position.\n\n  pp$9.semicolon = function() {\n    if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); }\n  };\n\n  pp$9.afterTrailingComma = function(tokType, notNext) {\n    if (this.type === tokType) {\n      if (this.options.onTrailingComma)\n        { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n      if (!notNext)\n        { this.next(); }\n      return true\n    }\n  };\n\n  // Expect a token of a given type. If found, consume it, otherwise,\n  // raise an unexpected token error.\n\n  pp$9.expect = function(type) {\n    this.eat(type) || this.unexpected();\n  };\n\n  // Raise an unexpected token error.\n\n  pp$9.unexpected = function(pos) {\n    this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n  };\n\n  var DestructuringErrors = function DestructuringErrors() {\n    this.shorthandAssign =\n    this.trailingComma =\n    this.parenthesizedAssign =\n    this.parenthesizedBind =\n    this.doubleProto =\n      -1;\n  };\n\n  pp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n    if (!refDestructuringErrors) { return }\n    if (refDestructuringErrors.trailingComma > -1)\n      { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n    var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n    if (parens > -1) { this.raiseRecoverable(parens, isAssign ? \"Assigning to rvalue\" : \"Parenthesized pattern\"); }\n  };\n\n  pp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n    if (!refDestructuringErrors) { return false }\n    var shorthandAssign = refDestructuringErrors.shorthandAssign;\n    var doubleProto = refDestructuringErrors.doubleProto;\n    if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n    if (shorthandAssign >= 0)\n      { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n    if (doubleProto >= 0)\n      { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n  };\n\n  pp$9.checkYieldAwaitInDefaultParams = function() {\n    if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n      { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n    if (this.awaitPos)\n      { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n  };\n\n  pp$9.isSimpleAssignTarget = function(expr) {\n    if (expr.type === \"ParenthesizedExpression\")\n      { return this.isSimpleAssignTarget(expr.expression) }\n    return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n  };\n\n  var pp$8 = Parser.prototype;\n\n  // ### Statement parsing\n\n  // Parse a program. Initializes the parser, reads any number of\n  // statements, and wraps them in a Program node.  Optionally takes a\n  // `program` argument.  If present, the statements will be appended\n  // to its body instead of creating a new node.\n\n  pp$8.parseTopLevel = function(node) {\n    var exports$1 = Object.create(null);\n    if (!node.body) { node.body = []; }\n    while (this.type !== types$1.eof) {\n      var stmt = this.parseStatement(null, true, exports$1);\n      node.body.push(stmt);\n    }\n    if (this.inModule)\n      { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1)\n        {\n          var name = list[i];\n\n          this.raiseRecoverable(this.undefinedExports[name].start, (\"Export '\" + name + \"' is not defined\"));\n        } }\n    this.adaptDirectivePrologue(node.body);\n    this.next();\n    node.sourceType = this.options.sourceType === \"commonjs\" ? \"script\" : this.options.sourceType;\n    return this.finishNode(node, \"Program\")\n  };\n\n  var loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\n  pp$8.isLet = function(context) {\n    if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n    skipWhiteSpace.lastIndex = this.pos;\n    var skip = skipWhiteSpace.exec(this.input);\n    var next = this.pos + skip[0].length, nextCh = this.fullCharCodeAt(next);\n    // For ambiguous cases, determine if a LexicalDeclaration (or only a\n    // Statement) is allowed here. If context is not empty then only a Statement\n    // is allowed. However, `let [` is an explicit negative lookahead for\n    // ExpressionStatement, so special-case it first.\n    if (nextCh === 91 || nextCh === 92) { return true } // '[', '\\'\n    if (context) { return false }\n\n    if (nextCh === 123) { return true } // '{'\n    if (isIdentifierStart(nextCh)) {\n      var start = next;\n      do { next += nextCh <= 0xffff ? 1 : 2; }\n      while (isIdentifierChar(nextCh = this.fullCharCodeAt(next)))\n      if (nextCh === 92) { return true }\n      var ident = this.input.slice(start, next);\n      if (!keywordRelationalOperator.test(ident)) { return true }\n    }\n    return false\n  };\n\n  // check 'async [no LineTerminator here] function'\n  // - 'async /*foo*/ function' is OK.\n  // - 'async /*\\n*/ function' is invalid.\n  pp$8.isAsyncFunction = function() {\n    if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n      { return false }\n\n    skipWhiteSpace.lastIndex = this.pos;\n    var skip = skipWhiteSpace.exec(this.input);\n    var next = this.pos + skip[0].length, after;\n    return !lineBreak.test(this.input.slice(this.pos, next)) &&\n      this.input.slice(next, next + 8) === \"function\" &&\n      (next + 8 === this.input.length ||\n       !(isIdentifierChar(after = this.fullCharCodeAt(next + 8)) || after === 92 /* '\\' */))\n  };\n\n  pp$8.isUsingKeyword = function(isAwaitUsing, isFor) {\n    if (this.options.ecmaVersion < 17 || !this.isContextual(isAwaitUsing ? \"await\" : \"using\"))\n      { return false }\n\n    skipWhiteSpace.lastIndex = this.pos;\n    var skip = skipWhiteSpace.exec(this.input);\n    var next = this.pos + skip[0].length;\n\n    if (lineBreak.test(this.input.slice(this.pos, next))) { return false }\n\n    if (isAwaitUsing) {\n      var usingEndPos = next + 5 /* using */, after;\n      if (this.input.slice(next, usingEndPos) !== \"using\" ||\n        usingEndPos === this.input.length ||\n        isIdentifierChar(after = this.fullCharCodeAt(usingEndPos)) ||\n        after === 92 /* '\\' */\n      ) { return false }\n\n      skipWhiteSpace.lastIndex = usingEndPos;\n      var skipAfterUsing = skipWhiteSpace.exec(this.input);\n      next = usingEndPos + skipAfterUsing[0].length;\n      if (skipAfterUsing && lineBreak.test(this.input.slice(usingEndPos, next))) { return false }\n    }\n\n    var ch = this.fullCharCodeAt(next);\n    if (!isIdentifierStart(ch) && ch !== 92 /* '\\' */) { return false }\n    var idStart = next;\n    do { next += ch <= 0xffff ? 1 : 2; }\n    while (isIdentifierChar(ch = this.fullCharCodeAt(next)))\n    if (ch === 92) { return true }\n    var id = this.input.slice(idStart, next);\n    if (keywordRelationalOperator.test(id)) { return false }\n    if (isFor && !isAwaitUsing && id === \"of\") {\n      // Look ahead for using declaration with initializer, i.e., `for (using of = ...)`\n      skipWhiteSpace.lastIndex = next;\n      var skipAfterOf = skipWhiteSpace.exec(this.input);\n      next = next + skipAfterOf[0].length;\n      if (this.input.charCodeAt(next) !== 61 /* '=' */ ||\n        // Check for ==, === and => operators\n        (ch = this.input.charCodeAt(next + 1)) === 61 /* '=' */ || ch === 62 /* '>' */) {\n        return false\n      }\n    }\n    return true\n  };\n\n  pp$8.isAwaitUsing = function(isFor) {\n    return this.isUsingKeyword(true, isFor)\n  };\n\n  pp$8.isUsing = function(isFor) {\n    return this.isUsingKeyword(false, isFor)\n  };\n\n  // Parse a single statement.\n  //\n  // If expecting a statement and finding a slash operator, parse a\n  // regular expression literal. This is to handle cases like\n  // `if (foo) /blah/.exec(foo)`, where looking at the previous token\n  // does not help.\n\n  pp$8.parseStatement = function(context, topLevel, exports$1) {\n    var starttype = this.type, node = this.startNode(), kind;\n\n    if (this.isLet(context)) {\n      starttype = types$1._var;\n      kind = \"let\";\n    }\n\n    // Most types of statements are recognized by the keyword they\n    // start with. Many are trivial to parse, some require a bit of\n    // complexity.\n\n    switch (starttype) {\n    case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n    case types$1._debugger: return this.parseDebuggerStatement(node)\n    case types$1._do: return this.parseDoStatement(node)\n    case types$1._for: return this.parseForStatement(node)\n    case types$1._function:\n      // Function as sole body of either an if statement or a labeled statement\n      // works, but not when it is part of a labeled statement that is the sole\n      // body of an if statement.\n      if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) { this.unexpected(); }\n      return this.parseFunctionStatement(node, false, !context)\n    case types$1._class:\n      if (context) { this.unexpected(); }\n      return this.parseClass(node, true)\n    case types$1._if: return this.parseIfStatement(node)\n    case types$1._return: return this.parseReturnStatement(node)\n    case types$1._switch: return this.parseSwitchStatement(node)\n    case types$1._throw: return this.parseThrowStatement(node)\n    case types$1._try: return this.parseTryStatement(node)\n    case types$1._const: case types$1._var:\n      kind = kind || this.value;\n      if (context && kind !== \"var\") { this.unexpected(); }\n      return this.parseVarStatement(node, kind)\n    case types$1._while: return this.parseWhileStatement(node)\n    case types$1._with: return this.parseWithStatement(node)\n    case types$1.braceL: return this.parseBlock(true, node)\n    case types$1.semi: return this.parseEmptyStatement(node)\n    case types$1._export:\n    case types$1._import:\n      if (this.options.ecmaVersion > 10 && starttype === types$1._import) {\n        skipWhiteSpace.lastIndex = this.pos;\n        var skip = skipWhiteSpace.exec(this.input);\n        var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n        if (nextCh === 40 || nextCh === 46) // '(' or '.'\n          { return this.parseExpressionStatement(node, this.parseExpression()) }\n      }\n\n      if (!this.options.allowImportExportEverywhere) {\n        if (!topLevel)\n          { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n        if (!this.inModule)\n          { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n      }\n      return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports$1)\n\n      // If the statement does not start with a statement keyword or a\n      // brace, it's an ExpressionStatement or LabeledStatement. We\n      // simply start parsing an expression, and afterwards, if the\n      // next token is a colon and the expression was a simple\n      // Identifier node, we switch to interpreting it as a label.\n    default:\n      if (this.isAsyncFunction()) {\n        if (context) { this.unexpected(); }\n        this.next();\n        return this.parseFunctionStatement(node, true, !context)\n      }\n\n      var usingKind = this.isAwaitUsing(false) ? \"await using\" : this.isUsing(false) ? \"using\" : null;\n      if (usingKind) {\n        if (!this.allowUsing) {\n          this.raise(this.start, \"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement\");\n        }\n        if (context) {\n          // Cases like `for (;;) using x = ...;`, `if (true) await using x = ...;`, etc. are not allowed.\n          this.raise(this.start, \"Using declaration is not allowed in single-statement positions\");\n        }\n        if (usingKind === \"await using\") {\n          if (!this.canAwait) {\n            this.raise(this.start, \"Await using cannot appear outside of async function\");\n          }\n          this.next();\n        }\n        this.next();\n        this.parseVar(node, false, usingKind);\n        this.semicolon();\n        return this.finishNode(node, \"VariableDeclaration\")\n      }\n\n      var maybeName = this.value, expr = this.parseExpression();\n      if (starttype === types$1.name && expr.type === \"Identifier\" && this.eat(types$1.colon))\n        { return this.parseLabeledStatement(node, maybeName, expr, context) }\n      else { return this.parseExpressionStatement(node, expr) }\n    }\n  };\n\n  pp$8.parseBreakContinueStatement = function(node, keyword) {\n    var isBreak = keyword === \"break\";\n    this.next();\n    if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; }\n    else if (this.type !== types$1.name) { this.unexpected(); }\n    else {\n      node.label = this.parseIdent();\n      this.semicolon();\n    }\n\n    // Verify that there is an actual destination to break or\n    // continue to.\n    var i = 0;\n    for (; i < this.labels.length; ++i) {\n      var lab = this.labels[i];\n      if (node.label == null || lab.name === node.label.name) {\n        if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n        if (node.label && isBreak) { break }\n      }\n    }\n    if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n    return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n  };\n\n  pp$8.parseDebuggerStatement = function(node) {\n    this.next();\n    this.semicolon();\n    return this.finishNode(node, \"DebuggerStatement\")\n  };\n\n  pp$8.parseDoStatement = function(node) {\n    this.next();\n    this.labels.push(loopLabel);\n    node.body = this.parseStatement(\"do\");\n    this.labels.pop();\n    this.expect(types$1._while);\n    node.test = this.parseParenExpression();\n    if (this.options.ecmaVersion >= 6)\n      { this.eat(types$1.semi); }\n    else\n      { this.semicolon(); }\n    return this.finishNode(node, \"DoWhileStatement\")\n  };\n\n  // Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n  // loop is non-trivial. Basically, we have to parse the init `var`\n  // statement or expression, disallowing the `in` operator (see\n  // the second parameter to `parseExpression`), and then check\n  // whether the next token is `in` or `of`. When there is no init\n  // part (semicolon immediately after the opening parenthesis), it\n  // is a regular `for` loop.\n\n  pp$8.parseForStatement = function(node) {\n    this.next();\n    var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n    this.labels.push(loopLabel);\n    this.enterScope(0);\n    this.expect(types$1.parenL);\n    if (this.type === types$1.semi) {\n      if (awaitAt > -1) { this.unexpected(awaitAt); }\n      return this.parseFor(node, null)\n    }\n    var isLet = this.isLet();\n    if (this.type === types$1._var || this.type === types$1._const || isLet) {\n      var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n      this.next();\n      this.parseVar(init$1, true, kind);\n      this.finishNode(init$1, \"VariableDeclaration\");\n      return this.parseForAfterInit(node, init$1, awaitAt)\n    }\n    var startsWithLet = this.isContextual(\"let\"), isForOf = false;\n\n    var usingKind = this.isUsing(true) ? \"using\" : this.isAwaitUsing(true) ? \"await using\" : null;\n    if (usingKind) {\n      var init$2 = this.startNode();\n      this.next();\n      if (usingKind === \"await using\") {\n        if (!this.canAwait) {\n          this.raise(this.start, \"Await using cannot appear outside of async function\");\n        }\n        this.next();\n      }\n      this.parseVar(init$2, true, usingKind);\n      this.finishNode(init$2, \"VariableDeclaration\");\n      return this.parseForAfterInit(node, init$2, awaitAt)\n    }\n    var containsEsc = this.containsEsc;\n    var refDestructuringErrors = new DestructuringErrors;\n    var initPos = this.start;\n    var init = awaitAt > -1\n      ? this.parseExprSubscripts(refDestructuringErrors, \"await\")\n      : this.parseExpression(true, refDestructuringErrors);\n    if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n      if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt)\n        if (this.type === types$1._in) { this.unexpected(awaitAt); }\n        node.await = true;\n      } else if (isForOf && this.options.ecmaVersion >= 8) {\n        if (init.start === initPos && !containsEsc && init.type === \"Identifier\" && init.name === \"async\") { this.unexpected(); }\n        else if (this.options.ecmaVersion >= 9) { node.await = false; }\n      }\n      if (startsWithLet && isForOf) { this.raise(init.start, \"The left-hand side of a for-of loop may not start with 'let'.\"); }\n      this.toAssignable(init, false, refDestructuringErrors);\n      this.checkLValPattern(init);\n      return this.parseForIn(node, init)\n    } else {\n      this.checkExpressionErrors(refDestructuringErrors, true);\n    }\n    if (awaitAt > -1) { this.unexpected(awaitAt); }\n    return this.parseFor(node, init)\n  };\n\n  // Helper method to parse for loop after variable initialization\n  pp$8.parseForAfterInit = function(node, init, awaitAt) {\n    if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init.declarations.length === 1) {\n      if (this.type === types$1._in) {\n        if ((init.kind === \"using\" || init.kind === \"await using\") && !init.declarations[0].init) {\n          this.raise(this.start, \"Using declaration is not allowed in for-in loops\");\n        }\n        if (this.options.ecmaVersion >= 9 && awaitAt > -1) { this.unexpected(awaitAt); }\n      } else if (this.options.ecmaVersion >= 9) { node.await = awaitAt > -1; }\n      return this.parseForIn(node, init)\n    }\n    if (awaitAt > -1) { this.unexpected(awaitAt); }\n    return this.parseFor(node, init)\n  };\n\n  pp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n    this.next();\n    return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n  };\n\n  pp$8.parseIfStatement = function(node) {\n    this.next();\n    node.test = this.parseParenExpression();\n    // allow function declarations in branches, but only in non-strict mode\n    node.consequent = this.parseStatement(\"if\");\n    node.alternate = this.eat(types$1._else) ? this.parseStatement(\"if\") : null;\n    return this.finishNode(node, \"IfStatement\")\n  };\n\n  pp$8.parseReturnStatement = function(node) {\n    if (!this.allowReturn)\n      { this.raise(this.start, \"'return' outside of function\"); }\n    this.next();\n\n    // In `return` (and `break`/`continue`), the keywords with\n    // optional arguments, we eagerly look for a semicolon or the\n    // possibility to insert one.\n\n    if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; }\n    else { node.argument = this.parseExpression(); this.semicolon(); }\n    return this.finishNode(node, \"ReturnStatement\")\n  };\n\n  pp$8.parseSwitchStatement = function(node) {\n    this.next();\n    node.discriminant = this.parseParenExpression();\n    node.cases = [];\n    this.expect(types$1.braceL);\n    this.labels.push(switchLabel);\n    this.enterScope(SCOPE_SWITCH);\n\n    // Statements under must be grouped (by label) in SwitchCase\n    // nodes. `cur` is used to keep the node that we are currently\n    // adding statements to.\n\n    var cur;\n    for (var sawDefault = false; this.type !== types$1.braceR;) {\n      if (this.type === types$1._case || this.type === types$1._default) {\n        var isCase = this.type === types$1._case;\n        if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n        node.cases.push(cur = this.startNode());\n        cur.consequent = [];\n        this.next();\n        if (isCase) {\n          cur.test = this.parseExpression();\n        } else {\n          if (sawDefault) { this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\"); }\n          sawDefault = true;\n          cur.test = null;\n        }\n        this.expect(types$1.colon);\n      } else {\n        if (!cur) { this.unexpected(); }\n        cur.consequent.push(this.parseStatement(null));\n      }\n    }\n    this.exitScope();\n    if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n    this.next(); // Closing brace\n    this.labels.pop();\n    return this.finishNode(node, \"SwitchStatement\")\n  };\n\n  pp$8.parseThrowStatement = function(node) {\n    this.next();\n    if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n      { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n    node.argument = this.parseExpression();\n    this.semicolon();\n    return this.finishNode(node, \"ThrowStatement\")\n  };\n\n  // Reused empty array added for node fields that are always empty.\n\n  var empty$1 = [];\n\n  pp$8.parseCatchClauseParam = function() {\n    var param = this.parseBindingAtom();\n    var simple = param.type === \"Identifier\";\n    this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n    this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n    this.expect(types$1.parenR);\n\n    return param\n  };\n\n  pp$8.parseTryStatement = function(node) {\n    this.next();\n    node.block = this.parseBlock();\n    node.handler = null;\n    if (this.type === types$1._catch) {\n      var clause = this.startNode();\n      this.next();\n      if (this.eat(types$1.parenL)) {\n        clause.param = this.parseCatchClauseParam();\n      } else {\n        if (this.options.ecmaVersion < 10) { this.unexpected(); }\n        clause.param = null;\n        this.enterScope(0);\n      }\n      clause.body = this.parseBlock(false);\n      this.exitScope();\n      node.handler = this.finishNode(clause, \"CatchClause\");\n    }\n    node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null;\n    if (!node.handler && !node.finalizer)\n      { this.raise(node.start, \"Missing catch or finally clause\"); }\n    return this.finishNode(node, \"TryStatement\")\n  };\n\n  pp$8.parseVarStatement = function(node, kind, allowMissingInitializer) {\n    this.next();\n    this.parseVar(node, false, kind, allowMissingInitializer);\n    this.semicolon();\n    return this.finishNode(node, \"VariableDeclaration\")\n  };\n\n  pp$8.parseWhileStatement = function(node) {\n    this.next();\n    node.test = this.parseParenExpression();\n    this.labels.push(loopLabel);\n    node.body = this.parseStatement(\"while\");\n    this.labels.pop();\n    return this.finishNode(node, \"WhileStatement\")\n  };\n\n  pp$8.parseWithStatement = function(node) {\n    if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n    this.next();\n    node.object = this.parseParenExpression();\n    node.body = this.parseStatement(\"with\");\n    return this.finishNode(node, \"WithStatement\")\n  };\n\n  pp$8.parseEmptyStatement = function(node) {\n    this.next();\n    return this.finishNode(node, \"EmptyStatement\")\n  };\n\n  pp$8.parseLabeledStatement = function(node, maybeName, expr, context) {\n    for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1)\n      {\n      var label = list[i$1];\n\n      if (label.name === maybeName)\n        { this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n    } }\n    var kind = this.type.isLoop ? \"loop\" : this.type === types$1._switch ? \"switch\" : null;\n    for (var i = this.labels.length - 1; i >= 0; i--) {\n      var label$1 = this.labels[i];\n      if (label$1.statementStart === node.start) {\n        // Update information about previous labels on this node\n        label$1.statementStart = this.start;\n        label$1.kind = kind;\n      } else { break }\n    }\n    this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n    node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n    this.labels.pop();\n    node.label = expr;\n    return this.finishNode(node, \"LabeledStatement\")\n  };\n\n  pp$8.parseExpressionStatement = function(node, expr) {\n    node.expression = expr;\n    this.semicolon();\n    return this.finishNode(node, \"ExpressionStatement\")\n  };\n\n  // Parse a semicolon-enclosed block of statements, handling `\"use\n  // strict\"` declarations when `allowStrict` is true (used for\n  // function bodies).\n\n  pp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) {\n    if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n    if ( node === void 0 ) node = this.startNode();\n\n    node.body = [];\n    this.expect(types$1.braceL);\n    if (createNewLexicalScope) { this.enterScope(0); }\n    while (this.type !== types$1.braceR) {\n      var stmt = this.parseStatement(null);\n      node.body.push(stmt);\n    }\n    if (exitStrict) { this.strict = false; }\n    this.next();\n    if (createNewLexicalScope) { this.exitScope(); }\n    return this.finishNode(node, \"BlockStatement\")\n  };\n\n  // Parse a regular `for` loop. The disambiguation code in\n  // `parseStatement` will already have parsed the init statement or\n  // expression.\n\n  pp$8.parseFor = function(node, init) {\n    node.init = init;\n    this.expect(types$1.semi);\n    node.test = this.type === types$1.semi ? null : this.parseExpression();\n    this.expect(types$1.semi);\n    node.update = this.type === types$1.parenR ? null : this.parseExpression();\n    this.expect(types$1.parenR);\n    node.body = this.parseStatement(\"for\");\n    this.exitScope();\n    this.labels.pop();\n    return this.finishNode(node, \"ForStatement\")\n  };\n\n  // Parse a `for`/`in` and `for`/`of` loop, which are almost\n  // same from parser's perspective.\n\n  pp$8.parseForIn = function(node, init) {\n    var isForIn = this.type === types$1._in;\n    this.next();\n\n    if (\n      init.type === \"VariableDeclaration\" &&\n      init.declarations[0].init != null &&\n      (\n        !isForIn ||\n        this.options.ecmaVersion < 8 ||\n        this.strict ||\n        init.kind !== \"var\" ||\n        init.declarations[0].id.type !== \"Identifier\"\n      )\n    ) {\n      this.raise(\n        init.start,\n        ((isForIn ? \"for-in\" : \"for-of\") + \" loop variable declaration may not have an initializer\")\n      );\n    }\n    node.left = init;\n    node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n    this.expect(types$1.parenR);\n    node.body = this.parseStatement(\"for\");\n    this.exitScope();\n    this.labels.pop();\n    return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\")\n  };\n\n  // Parse a list of variable declarations.\n\n  pp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) {\n    node.declarations = [];\n    node.kind = kind;\n    for (;;) {\n      var decl = this.startNode();\n      this.parseVarId(decl, kind);\n      if (this.eat(types$1.eq)) {\n        decl.init = this.parseMaybeAssign(isFor);\n      } else if (!allowMissingInitializer && kind === \"const\" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n        this.unexpected();\n      } else if (!allowMissingInitializer && (kind === \"using\" || kind === \"await using\") && this.options.ecmaVersion >= 17 && this.type !== types$1._in && !this.isContextual(\"of\")) {\n        this.raise(this.lastTokEnd, (\"Missing initializer in \" + kind + \" declaration\"));\n      } else if (!allowMissingInitializer && decl.id.type !== \"Identifier\" && !(isFor && (this.type === types$1._in || this.isContextual(\"of\")))) {\n        this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n      } else {\n        decl.init = null;\n      }\n      node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n      if (!this.eat(types$1.comma)) { break }\n    }\n    return node\n  };\n\n  pp$8.parseVarId = function(decl, kind) {\n    decl.id = kind === \"using\" || kind === \"await using\"\n      ? this.parseIdent()\n      : this.parseBindingAtom();\n\n    this.checkLValPattern(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n  };\n\n  var FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;\n\n  // Parse a function declaration or literal (depending on the\n  // `statement & FUNC_STATEMENT`).\n\n  // Remove `allowExpressionBody` for 7.0.0, as it is only called with false\n  pp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) {\n    this.initFunction(node);\n    if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n      if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT))\n        { this.unexpected(); }\n      node.generator = this.eat(types$1.star);\n    }\n    if (this.options.ecmaVersion >= 8)\n      { node.async = !!isAsync; }\n\n    if (statement & FUNC_STATEMENT) {\n      node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent();\n      if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n        // If it is a regular function declaration in sloppy mode, then it is\n        // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n        // mode depends on properties of the current scope (see\n        // treatFunctionsAsVar).\n        { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }\n    }\n\n    var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n    this.yieldPos = 0;\n    this.awaitPos = 0;\n    this.awaitIdentPos = 0;\n    this.enterScope(functionFlags(node.async, node.generator));\n\n    if (!(statement & FUNC_STATEMENT))\n      { node.id = this.type === types$1.name ? this.parseIdent() : null; }\n\n    this.parseFunctionParams(node);\n    this.parseFunctionBody(node, allowExpressionBody, false, forInit);\n\n    this.yieldPos = oldYieldPos;\n    this.awaitPos = oldAwaitPos;\n    this.awaitIdentPos = oldAwaitIdentPos;\n    return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n  };\n\n  pp$8.parseFunctionParams = function(node) {\n    this.expect(types$1.parenL);\n    node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n    this.checkYieldAwaitInDefaultParams();\n  };\n\n  // Parse a class declaration or literal (depending on the\n  // `isStatement` parameter).\n\n  pp$8.parseClass = function(node, isStatement) {\n    this.next();\n\n    // ecma-262 14.6 Class Definitions\n    // A class definition is always strict mode code.\n    var oldStrict = this.strict;\n    this.strict = true;\n\n    this.parseClassId(node, isStatement);\n    this.parseClassSuper(node);\n    var privateNameMap = this.enterClassBody();\n    var classBody = this.startNode();\n    var hadConstructor = false;\n    classBody.body = [];\n    this.expect(types$1.braceL);\n    while (this.type !== types$1.braceR) {\n      var element = this.parseClassElement(node.superClass !== null);\n      if (element) {\n        classBody.body.push(element);\n        if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n          if (hadConstructor) { this.raiseRecoverable(element.start, \"Duplicate constructor in the same class\"); }\n          hadConstructor = true;\n        } else if (element.key && element.key.type === \"PrivateIdentifier\" && isPrivateNameConflicted(privateNameMap, element)) {\n          this.raiseRecoverable(element.key.start, (\"Identifier '#\" + (element.key.name) + \"' has already been declared\"));\n        }\n      }\n    }\n    this.strict = oldStrict;\n    this.next();\n    node.body = this.finishNode(classBody, \"ClassBody\");\n    this.exitClassBody();\n    return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n  };\n\n  pp$8.parseClassElement = function(constructorAllowsSuper) {\n    if (this.eat(types$1.semi)) { return null }\n\n    var ecmaVersion = this.options.ecmaVersion;\n    var node = this.startNode();\n    var keyName = \"\";\n    var isGenerator = false;\n    var isAsync = false;\n    var kind = \"method\";\n    var isStatic = false;\n\n    if (this.eatContextual(\"static\")) {\n      // Parse static init block\n      if (ecmaVersion >= 13 && this.eat(types$1.braceL)) {\n        this.parseClassStaticBlock(node);\n        return node\n      }\n      if (this.isClassElementNameStart() || this.type === types$1.star) {\n        isStatic = true;\n      } else {\n        keyName = \"static\";\n      }\n    }\n    node.static = isStatic;\n    if (!keyName && ecmaVersion >= 8 && this.eatContextual(\"async\")) {\n      if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) {\n        isAsync = true;\n      } else {\n        keyName = \"async\";\n      }\n    }\n    if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) {\n      isGenerator = true;\n    }\n    if (!keyName && !isAsync && !isGenerator) {\n      var lastValue = this.value;\n      if (this.eatContextual(\"get\") || this.eatContextual(\"set\")) {\n        if (this.isClassElementNameStart()) {\n          kind = lastValue;\n        } else {\n          keyName = lastValue;\n        }\n      }\n    }\n\n    // Parse element name\n    if (keyName) {\n      // 'async', 'get', 'set', or 'static' were not a keyword contextually.\n      // The last token is any of those. Make it the element name.\n      node.computed = false;\n      node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc);\n      node.key.name = keyName;\n      this.finishNode(node.key, \"Identifier\");\n    } else {\n      this.parseClassElementName(node);\n    }\n\n    // Parse element value\n    if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== \"method\" || isGenerator || isAsync) {\n      var isConstructor = !node.static && checkKeyName(node, \"constructor\");\n      var allowsDirectSuper = isConstructor && constructorAllowsSuper;\n      // Couldn't move this check into the 'parseClassMethod' method for backward compatibility.\n      if (isConstructor && kind !== \"method\") { this.raise(node.key.start, \"Constructor can't have get/set modifier\"); }\n      node.kind = isConstructor ? \"constructor\" : kind;\n      this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper);\n    } else {\n      this.parseClassField(node);\n    }\n\n    return node\n  };\n\n  pp$8.isClassElementNameStart = function() {\n    return (\n      this.type === types$1.name ||\n      this.type === types$1.privateId ||\n      this.type === types$1.num ||\n      this.type === types$1.string ||\n      this.type === types$1.bracketL ||\n      this.type.keyword\n    )\n  };\n\n  pp$8.parseClassElementName = function(element) {\n    if (this.type === types$1.privateId) {\n      if (this.value === \"constructor\") {\n        this.raise(this.start, \"Classes can't have an element named '#constructor'\");\n      }\n      element.computed = false;\n      element.key = this.parsePrivateIdent();\n    } else {\n      this.parsePropertyName(element);\n    }\n  };\n\n  pp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n    // Check key and flags\n    var key = method.key;\n    if (method.kind === \"constructor\") {\n      if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n      if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n    } else if (method.static && checkKeyName(method, \"prototype\")) {\n      this.raise(key.start, \"Classes may not have a static property named prototype\");\n    }\n\n    // Parse value\n    var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);\n\n    // Check value\n    if (method.kind === \"get\" && value.params.length !== 0)\n      { this.raiseRecoverable(value.start, \"getter should have no params\"); }\n    if (method.kind === \"set\" && value.params.length !== 1)\n      { this.raiseRecoverable(value.start, \"setter should have exactly one param\"); }\n    if (method.kind === \"set\" && value.params[0].type === \"RestElement\")\n      { this.raiseRecoverable(value.params[0].start, \"Setter cannot use rest params\"); }\n\n    return this.finishNode(method, \"MethodDefinition\")\n  };\n\n  pp$8.parseClassField = function(field) {\n    if (checkKeyName(field, \"constructor\")) {\n      this.raise(field.key.start, \"Classes can't have a field named 'constructor'\");\n    } else if (field.static && checkKeyName(field, \"prototype\")) {\n      this.raise(field.key.start, \"Classes can't have a static field named 'prototype'\");\n    }\n\n    if (this.eat(types$1.eq)) {\n      // To raise SyntaxError if 'arguments' exists in the initializer.\n      this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER);\n      field.value = this.parseMaybeAssign();\n      this.exitScope();\n    } else {\n      field.value = null;\n    }\n    this.semicolon();\n\n    return this.finishNode(field, \"PropertyDefinition\")\n  };\n\n  pp$8.parseClassStaticBlock = function(node) {\n    node.body = [];\n\n    var oldLabels = this.labels;\n    this.labels = [];\n    this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER);\n    while (this.type !== types$1.braceR) {\n      var stmt = this.parseStatement(null);\n      node.body.push(stmt);\n    }\n    this.next();\n    this.exitScope();\n    this.labels = oldLabels;\n\n    return this.finishNode(node, \"StaticBlock\")\n  };\n\n  pp$8.parseClassId = function(node, isStatement) {\n    if (this.type === types$1.name) {\n      node.id = this.parseIdent();\n      if (isStatement)\n        { this.checkLValSimple(node.id, BIND_LEXICAL, false); }\n    } else {\n      if (isStatement === true)\n        { this.unexpected(); }\n      node.id = null;\n    }\n  };\n\n  pp$8.parseClassSuper = function(node) {\n    node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;\n  };\n\n  pp$8.enterClassBody = function() {\n    var element = {declared: Object.create(null), used: []};\n    this.privateNameStack.push(element);\n    return element.declared\n  };\n\n  pp$8.exitClassBody = function() {\n    var ref = this.privateNameStack.pop();\n    var declared = ref.declared;\n    var used = ref.used;\n    if (!this.options.checkPrivateFields) { return }\n    var len = this.privateNameStack.length;\n    var parent = len === 0 ? null : this.privateNameStack[len - 1];\n    for (var i = 0; i < used.length; ++i) {\n      var id = used[i];\n      if (!hasOwn(declared, id.name)) {\n        if (parent) {\n          parent.used.push(id);\n        } else {\n          this.raiseRecoverable(id.start, (\"Private field '#\" + (id.name) + \"' must be declared in an enclosing class\"));\n        }\n      }\n    }\n  };\n\n  function isPrivateNameConflicted(privateNameMap, element) {\n    var name = element.key.name;\n    var curr = privateNameMap[name];\n\n    var next = \"true\";\n    if (element.type === \"MethodDefinition\" && (element.kind === \"get\" || element.kind === \"set\")) {\n      next = (element.static ? \"s\" : \"i\") + element.kind;\n    }\n\n    // `class { get #a(){}; static set #a(_){} }` is also conflict.\n    if (\n      curr === \"iget\" && next === \"iset\" ||\n      curr === \"iset\" && next === \"iget\" ||\n      curr === \"sget\" && next === \"sset\" ||\n      curr === \"sset\" && next === \"sget\"\n    ) {\n      privateNameMap[name] = \"true\";\n      return false\n    } else if (!curr) {\n      privateNameMap[name] = next;\n      return false\n    } else {\n      return true\n    }\n  }\n\n  function checkKeyName(node, name) {\n    var computed = node.computed;\n    var key = node.key;\n    return !computed && (\n      key.type === \"Identifier\" && key.name === name ||\n      key.type === \"Literal\" && key.value === name\n    )\n  }\n\n  // Parses module export declaration.\n\n  pp$8.parseExportAllDeclaration = function(node, exports$1) {\n    if (this.options.ecmaVersion >= 11) {\n      if (this.eatContextual(\"as\")) {\n        node.exported = this.parseModuleExportName();\n        this.checkExport(exports$1, node.exported, this.lastTokStart);\n      } else {\n        node.exported = null;\n      }\n    }\n    this.expectContextual(\"from\");\n    if (this.type !== types$1.string) { this.unexpected(); }\n    node.source = this.parseExprAtom();\n    if (this.options.ecmaVersion >= 16)\n      { node.attributes = this.parseWithClause(); }\n    this.semicolon();\n    return this.finishNode(node, \"ExportAllDeclaration\")\n  };\n\n  pp$8.parseExport = function(node, exports$1) {\n    this.next();\n    // export * from '...'\n    if (this.eat(types$1.star)) {\n      return this.parseExportAllDeclaration(node, exports$1)\n    }\n    if (this.eat(types$1._default)) { // export default ...\n      this.checkExport(exports$1, \"default\", this.lastTokStart);\n      node.declaration = this.parseExportDefaultDeclaration();\n      return this.finishNode(node, \"ExportDefaultDeclaration\")\n    }\n    // export var|const|let|function|class ...\n    if (this.shouldParseExportStatement()) {\n      node.declaration = this.parseExportDeclaration(node);\n      if (node.declaration.type === \"VariableDeclaration\")\n        { this.checkVariableExport(exports$1, node.declaration.declarations); }\n      else\n        { this.checkExport(exports$1, node.declaration.id, node.declaration.id.start); }\n      node.specifiers = [];\n      node.source = null;\n      if (this.options.ecmaVersion >= 16)\n        { node.attributes = []; }\n    } else { // export { x, y as z } [from '...']\n      node.declaration = null;\n      node.specifiers = this.parseExportSpecifiers(exports$1);\n      if (this.eatContextual(\"from\")) {\n        if (this.type !== types$1.string) { this.unexpected(); }\n        node.source = this.parseExprAtom();\n        if (this.options.ecmaVersion >= 16)\n          { node.attributes = this.parseWithClause(); }\n      } else {\n        for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n          // check for keywords used as local names\n          var spec = list[i];\n\n          this.checkUnreserved(spec.local);\n          // check if export is defined\n          this.checkLocalExport(spec.local);\n\n          if (spec.local.type === \"Literal\") {\n            this.raise(spec.local.start, \"A string literal cannot be used as an exported binding without `from`.\");\n          }\n        }\n\n        node.source = null;\n        if (this.options.ecmaVersion >= 16)\n          { node.attributes = []; }\n      }\n      this.semicolon();\n    }\n    return this.finishNode(node, \"ExportNamedDeclaration\")\n  };\n\n  pp$8.parseExportDeclaration = function(node) {\n    return this.parseStatement(null)\n  };\n\n  pp$8.parseExportDefaultDeclaration = function() {\n    var isAsync;\n    if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) {\n      var fNode = this.startNode();\n      this.next();\n      if (isAsync) { this.next(); }\n      return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n    } else if (this.type === types$1._class) {\n      var cNode = this.startNode();\n      return this.parseClass(cNode, \"nullableID\")\n    } else {\n      var declaration = this.parseMaybeAssign();\n      this.semicolon();\n      return declaration\n    }\n  };\n\n  pp$8.checkExport = function(exports$1, name, pos) {\n    if (!exports$1) { return }\n    if (typeof name !== \"string\")\n      { name = name.type === \"Identifier\" ? name.name : name.value; }\n    if (hasOwn(exports$1, name))\n      { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n    exports$1[name] = true;\n  };\n\n  pp$8.checkPatternExport = function(exports$1, pat) {\n    var type = pat.type;\n    if (type === \"Identifier\")\n      { this.checkExport(exports$1, pat, pat.start); }\n    else if (type === \"ObjectPattern\")\n      { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n        {\n          var prop = list[i];\n\n          this.checkPatternExport(exports$1, prop);\n        } }\n    else if (type === \"ArrayPattern\")\n      { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n        var elt = list$1[i$1];\n\n          if (elt) { this.checkPatternExport(exports$1, elt); }\n      } }\n    else if (type === \"Property\")\n      { this.checkPatternExport(exports$1, pat.value); }\n    else if (type === \"AssignmentPattern\")\n      { this.checkPatternExport(exports$1, pat.left); }\n    else if (type === \"RestElement\")\n      { this.checkPatternExport(exports$1, pat.argument); }\n  };\n\n  pp$8.checkVariableExport = function(exports$1, decls) {\n    if (!exports$1) { return }\n    for (var i = 0, list = decls; i < list.length; i += 1)\n      {\n      var decl = list[i];\n\n      this.checkPatternExport(exports$1, decl.id);\n    }\n  };\n\n  pp$8.shouldParseExportStatement = function() {\n    return this.type.keyword === \"var\" ||\n      this.type.keyword === \"const\" ||\n      this.type.keyword === \"class\" ||\n      this.type.keyword === \"function\" ||\n      this.isLet() ||\n      this.isAsyncFunction()\n  };\n\n  // Parses a comma-separated list of module exports.\n\n  pp$8.parseExportSpecifier = function(exports$1) {\n    var node = this.startNode();\n    node.local = this.parseModuleExportName();\n\n    node.exported = this.eatContextual(\"as\") ? this.parseModuleExportName() : node.local;\n    this.checkExport(\n      exports$1,\n      node.exported,\n      node.exported.start\n    );\n\n    return this.finishNode(node, \"ExportSpecifier\")\n  };\n\n  pp$8.parseExportSpecifiers = function(exports$1) {\n    var nodes = [], first = true;\n    // export { x, y as z } [from '...']\n    this.expect(types$1.braceL);\n    while (!this.eat(types$1.braceR)) {\n      if (!first) {\n        this.expect(types$1.comma);\n        if (this.afterTrailingComma(types$1.braceR)) { break }\n      } else { first = false; }\n\n      nodes.push(this.parseExportSpecifier(exports$1));\n    }\n    return nodes\n  };\n\n  // Parses import declaration.\n\n  pp$8.parseImport = function(node) {\n    this.next();\n\n    // import '...'\n    if (this.type === types$1.string) {\n      node.specifiers = empty$1;\n      node.source = this.parseExprAtom();\n    } else {\n      node.specifiers = this.parseImportSpecifiers();\n      this.expectContextual(\"from\");\n      node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected();\n    }\n    if (this.options.ecmaVersion >= 16)\n      { node.attributes = this.parseWithClause(); }\n    this.semicolon();\n    return this.finishNode(node, \"ImportDeclaration\")\n  };\n\n  // Parses a comma-separated list of module imports.\n\n  pp$8.parseImportSpecifier = function() {\n    var node = this.startNode();\n    node.imported = this.parseModuleExportName();\n\n    if (this.eatContextual(\"as\")) {\n      node.local = this.parseIdent();\n    } else {\n      this.checkUnreserved(node.imported);\n      node.local = node.imported;\n    }\n    this.checkLValSimple(node.local, BIND_LEXICAL);\n\n    return this.finishNode(node, \"ImportSpecifier\")\n  };\n\n  pp$8.parseImportDefaultSpecifier = function() {\n    // import defaultObj, { x, y as z } from '...'\n    var node = this.startNode();\n    node.local = this.parseIdent();\n    this.checkLValSimple(node.local, BIND_LEXICAL);\n    return this.finishNode(node, \"ImportDefaultSpecifier\")\n  };\n\n  pp$8.parseImportNamespaceSpecifier = function() {\n    var node = this.startNode();\n    this.next();\n    this.expectContextual(\"as\");\n    node.local = this.parseIdent();\n    this.checkLValSimple(node.local, BIND_LEXICAL);\n    return this.finishNode(node, \"ImportNamespaceSpecifier\")\n  };\n\n  pp$8.parseImportSpecifiers = function() {\n    var nodes = [], first = true;\n    if (this.type === types$1.name) {\n      nodes.push(this.parseImportDefaultSpecifier());\n      if (!this.eat(types$1.comma)) { return nodes }\n    }\n    if (this.type === types$1.star) {\n      nodes.push(this.parseImportNamespaceSpecifier());\n      return nodes\n    }\n    this.expect(types$1.braceL);\n    while (!this.eat(types$1.braceR)) {\n      if (!first) {\n        this.expect(types$1.comma);\n        if (this.afterTrailingComma(types$1.braceR)) { break }\n      } else { first = false; }\n\n      nodes.push(this.parseImportSpecifier());\n    }\n    return nodes\n  };\n\n  pp$8.parseWithClause = function() {\n    var nodes = [];\n    if (!this.eat(types$1._with)) {\n      return nodes\n    }\n    this.expect(types$1.braceL);\n    var attributeKeys = {};\n    var first = true;\n    while (!this.eat(types$1.braceR)) {\n      if (!first) {\n        this.expect(types$1.comma);\n        if (this.afterTrailingComma(types$1.braceR)) { break }\n      } else { first = false; }\n\n      var attr = this.parseImportAttribute();\n      var keyName = attr.key.type === \"Identifier\" ? attr.key.name : attr.key.value;\n      if (hasOwn(attributeKeys, keyName))\n        { this.raiseRecoverable(attr.key.start, \"Duplicate attribute key '\" + keyName + \"'\"); }\n      attributeKeys[keyName] = true;\n      nodes.push(attr);\n    }\n    return nodes\n  };\n\n  pp$8.parseImportAttribute = function() {\n    var node = this.startNode();\n    node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\");\n    this.expect(types$1.colon);\n    if (this.type !== types$1.string) {\n      this.unexpected();\n    }\n    node.value = this.parseExprAtom();\n    return this.finishNode(node, \"ImportAttribute\")\n  };\n\n  pp$8.parseModuleExportName = function() {\n    if (this.options.ecmaVersion >= 13 && this.type === types$1.string) {\n      var stringLiteral = this.parseLiteral(this.value);\n      if (loneSurrogate.test(stringLiteral.value)) {\n        this.raise(stringLiteral.start, \"An export name cannot include a lone surrogate.\");\n      }\n      return stringLiteral\n    }\n    return this.parseIdent(true)\n  };\n\n  // Set `ExpressionStatement#directive` property for directive prologues.\n  pp$8.adaptDirectivePrologue = function(statements) {\n    for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n      statements[i].directive = statements[i].expression.raw.slice(1, -1);\n    }\n  };\n  pp$8.isDirectiveCandidate = function(statement) {\n    return (\n      this.options.ecmaVersion >= 5 &&\n      statement.type === \"ExpressionStatement\" &&\n      statement.expression.type === \"Literal\" &&\n      typeof statement.expression.value === \"string\" &&\n      // Reject parenthesized strings.\n      (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n    )\n  };\n\n  var pp$7 = Parser.prototype;\n\n  // Convert existing expression atom to assignable pattern\n  // if possible.\n\n  pp$7.toAssignable = function(node, isBinding, refDestructuringErrors) {\n    if (this.options.ecmaVersion >= 6 && node) {\n      switch (node.type) {\n      case \"Identifier\":\n        if (this.inAsync && node.name === \"await\")\n          { this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\"); }\n        break\n\n      case \"ObjectPattern\":\n      case \"ArrayPattern\":\n      case \"AssignmentPattern\":\n      case \"RestElement\":\n        break\n\n      case \"ObjectExpression\":\n        node.type = \"ObjectPattern\";\n        if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n        for (var i = 0, list = node.properties; i < list.length; i += 1) {\n          var prop = list[i];\n\n        this.toAssignable(prop, isBinding);\n          // Early error:\n          //   AssignmentRestProperty[Yield, Await] :\n          //     `...` DestructuringAssignmentTarget[Yield, Await]\n          //\n          //   It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n          if (\n            prop.type === \"RestElement\" &&\n            (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n          ) {\n            this.raise(prop.argument.start, \"Unexpected token\");\n          }\n        }\n        break\n\n      case \"Property\":\n        // AssignmentProperty has type === \"Property\"\n        if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n        this.toAssignable(node.value, isBinding);\n        break\n\n      case \"ArrayExpression\":\n        node.type = \"ArrayPattern\";\n        if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n        this.toAssignableList(node.elements, isBinding);\n        break\n\n      case \"SpreadElement\":\n        node.type = \"RestElement\";\n        this.toAssignable(node.argument, isBinding);\n        if (node.argument.type === \"AssignmentPattern\")\n          { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n        break\n\n      case \"AssignmentExpression\":\n        if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n        node.type = \"AssignmentPattern\";\n        delete node.operator;\n        this.toAssignable(node.left, isBinding);\n        break\n\n      case \"ParenthesizedExpression\":\n        this.toAssignable(node.expression, isBinding, refDestructuringErrors);\n        break\n\n      case \"ChainExpression\":\n        this.raiseRecoverable(node.start, \"Optional chaining cannot appear in left-hand side\");\n        break\n\n      case \"MemberExpression\":\n        if (!isBinding) { break }\n\n      default:\n        this.raise(node.start, \"Assigning to rvalue\");\n      }\n    } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n    return node\n  };\n\n  // Convert list of expression atoms to binding list.\n\n  pp$7.toAssignableList = function(exprList, isBinding) {\n    var end = exprList.length;\n    for (var i = 0; i < end; i++) {\n      var elt = exprList[i];\n      if (elt) { this.toAssignable(elt, isBinding); }\n    }\n    if (end) {\n      var last = exprList[end - 1];\n      if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n        { this.unexpected(last.argument.start); }\n    }\n    return exprList\n  };\n\n  // Parses spread element.\n\n  pp$7.parseSpread = function(refDestructuringErrors) {\n    var node = this.startNode();\n    this.next();\n    node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n    return this.finishNode(node, \"SpreadElement\")\n  };\n\n  pp$7.parseRestBinding = function() {\n    var node = this.startNode();\n    this.next();\n\n    // RestElement inside of a function parameter must be an identifier\n    if (this.options.ecmaVersion === 6 && this.type !== types$1.name)\n      { this.unexpected(); }\n\n    node.argument = this.parseBindingAtom();\n\n    return this.finishNode(node, \"RestElement\")\n  };\n\n  // Parses lvalue (assignable) atom.\n\n  pp$7.parseBindingAtom = function() {\n    if (this.options.ecmaVersion >= 6) {\n      switch (this.type) {\n      case types$1.bracketL:\n        var node = this.startNode();\n        this.next();\n        node.elements = this.parseBindingList(types$1.bracketR, true, true);\n        return this.finishNode(node, \"ArrayPattern\")\n\n      case types$1.braceL:\n        return this.parseObj(true)\n      }\n    }\n    return this.parseIdent()\n  };\n\n  pp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {\n    var elts = [], first = true;\n    while (!this.eat(close)) {\n      if (first) { first = false; }\n      else { this.expect(types$1.comma); }\n      if (allowEmpty && this.type === types$1.comma) {\n        elts.push(null);\n      } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n        break\n      } else if (this.type === types$1.ellipsis) {\n        var rest = this.parseRestBinding();\n        this.parseBindingListItem(rest);\n        elts.push(rest);\n        if (this.type === types$1.comma) { this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\"); }\n        this.expect(close);\n        break\n      } else {\n        elts.push(this.parseAssignableListItem(allowModifiers));\n      }\n    }\n    return elts\n  };\n\n  pp$7.parseAssignableListItem = function(allowModifiers) {\n    var elem = this.parseMaybeDefault(this.start, this.startLoc);\n    this.parseBindingListItem(elem);\n    return elem\n  };\n\n  pp$7.parseBindingListItem = function(param) {\n    return param\n  };\n\n  // Parses assignment pattern around given atom if possible.\n\n  pp$7.parseMaybeDefault = function(startPos, startLoc, left) {\n    left = left || this.parseBindingAtom();\n    if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left }\n    var node = this.startNodeAt(startPos, startLoc);\n    node.left = left;\n    node.right = this.parseMaybeAssign();\n    return this.finishNode(node, \"AssignmentPattern\")\n  };\n\n  // The following three functions all verify that a node is an lvalue —\n  // something that can be bound, or assigned to. In order to do so, they perform\n  // a variety of checks:\n  //\n  // - Check that none of the bound/assigned-to identifiers are reserved words.\n  // - Record name declarations for bindings in the appropriate scope.\n  // - Check duplicate argument names, if checkClashes is set.\n  //\n  // If a complex binding pattern is encountered (e.g., object and array\n  // destructuring), the entire pattern is recursively checked.\n  //\n  // There are three versions of checkLVal*() appropriate for different\n  // circumstances:\n  //\n  // - checkLValSimple() shall be used if the syntactic construct supports\n  //   nothing other than identifiers and member expressions. Parenthesized\n  //   expressions are also correctly handled. This is generally appropriate for\n  //   constructs for which the spec says\n  //\n  //   > It is a Syntax Error if AssignmentTargetType of [the production] is not\n  //   > simple.\n  //\n  //   It is also appropriate for checking if an identifier is valid and not\n  //   defined elsewhere, like import declarations or function/class identifiers.\n  //\n  //   Examples where this is used include:\n  //     a += …;\n  //     import a from '…';\n  //   where a is the node to be checked.\n  //\n  // - checkLValPattern() shall be used if the syntactic construct supports\n  //   anything checkLValSimple() supports, as well as object and array\n  //   destructuring patterns. This is generally appropriate for constructs for\n  //   which the spec says\n  //\n  //   > It is a Syntax Error if [the production] is neither an ObjectLiteral nor\n  //   > an ArrayLiteral and AssignmentTargetType of [the production] is not\n  //   > simple.\n  //\n  //   Examples where this is used include:\n  //     (a = …);\n  //     const a = …;\n  //     try { … } catch (a) { … }\n  //   where a is the node to be checked.\n  //\n  // - checkLValInnerPattern() shall be used if the syntactic construct supports\n  //   anything checkLValPattern() supports, as well as default assignment\n  //   patterns, rest elements, and other constructs that may appear within an\n  //   object or array destructuring pattern.\n  //\n  //   As a special case, function parameters also use checkLValInnerPattern(),\n  //   as they also support defaults and rest constructs.\n  //\n  // These functions deliberately support both assignment and binding constructs,\n  // as the logic for both is exceedingly similar. If the node is the target of\n  // an assignment, then bindingType should be set to BIND_NONE. Otherwise, it\n  // should be set to the appropriate BIND_* constant, like BIND_VAR or\n  // BIND_LEXICAL.\n  //\n  // If the function is called with a non-BIND_NONE bindingType, then\n  // additionally a checkClashes object may be specified to allow checking for\n  // duplicate argument names. checkClashes is ignored if the provided construct\n  // is an assignment (i.e., bindingType is BIND_NONE).\n\n  pp$7.checkLValSimple = function(expr, bindingType, checkClashes) {\n    if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n    var isBind = bindingType !== BIND_NONE;\n\n    switch (expr.type) {\n    case \"Identifier\":\n      if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n        { this.raiseRecoverable(expr.start, (isBind ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n      if (isBind) {\n        if (bindingType === BIND_LEXICAL && expr.name === \"let\")\n          { this.raiseRecoverable(expr.start, \"let is disallowed as a lexically bound name\"); }\n        if (checkClashes) {\n          if (hasOwn(checkClashes, expr.name))\n            { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n          checkClashes[expr.name] = true;\n        }\n        if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); }\n      }\n      break\n\n    case \"ChainExpression\":\n      this.raiseRecoverable(expr.start, \"Optional chaining cannot appear in left-hand side\");\n      break\n\n    case \"MemberExpression\":\n      if (isBind) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n      break\n\n    case \"ParenthesizedExpression\":\n      if (isBind) { this.raiseRecoverable(expr.start, \"Binding parenthesized expression\"); }\n      return this.checkLValSimple(expr.expression, bindingType, checkClashes)\n\n    default:\n      this.raise(expr.start, (isBind ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n    }\n  };\n\n  pp$7.checkLValPattern = function(expr, bindingType, checkClashes) {\n    if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n    switch (expr.type) {\n    case \"ObjectPattern\":\n      for (var i = 0, list = expr.properties; i < list.length; i += 1) {\n        var prop = list[i];\n\n      this.checkLValInnerPattern(prop, bindingType, checkClashes);\n      }\n      break\n\n    case \"ArrayPattern\":\n      for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n        var elem = list$1[i$1];\n\n      if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); }\n      }\n      break\n\n    default:\n      this.checkLValSimple(expr, bindingType, checkClashes);\n    }\n  };\n\n  pp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) {\n    if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n    switch (expr.type) {\n    case \"Property\":\n      // AssignmentProperty has type === \"Property\"\n      this.checkLValInnerPattern(expr.value, bindingType, checkClashes);\n      break\n\n    case \"AssignmentPattern\":\n      this.checkLValPattern(expr.left, bindingType, checkClashes);\n      break\n\n    case \"RestElement\":\n      this.checkLValPattern(expr.argument, bindingType, checkClashes);\n      break\n\n    default:\n      this.checkLValPattern(expr, bindingType, checkClashes);\n    }\n  };\n\n  // The algorithm used to determine whether a regexp can appear at a\n  // given point in the program is loosely based on sweet.js' approach.\n  // See https://github.com/mozilla/sweet.js/wiki/design\n\n\n  var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n    this.token = token;\n    this.isExpr = !!isExpr;\n    this.preserveSpace = !!preserveSpace;\n    this.override = override;\n    this.generator = !!generator;\n  };\n\n  var types = {\n    b_stat: new TokContext(\"{\", false),\n    b_expr: new TokContext(\"{\", true),\n    b_tmpl: new TokContext(\"${\", false),\n    p_stat: new TokContext(\"(\", false),\n    p_expr: new TokContext(\"(\", true),\n    q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n    f_stat: new TokContext(\"function\", false),\n    f_expr: new TokContext(\"function\", true),\n    f_expr_gen: new TokContext(\"function\", true, false, null, true),\n    f_gen: new TokContext(\"function\", false, false, null, true)\n  };\n\n  var pp$6 = Parser.prototype;\n\n  pp$6.initialContext = function() {\n    return [types.b_stat]\n  };\n\n  pp$6.curContext = function() {\n    return this.context[this.context.length - 1]\n  };\n\n  pp$6.braceIsBlock = function(prevType) {\n    var parent = this.curContext();\n    if (parent === types.f_expr || parent === types.f_stat)\n      { return true }\n    if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr))\n      { return !parent.isExpr }\n\n    // The check for `tt.name && exprAllowed` detects whether we are\n    // after a `yield` or `of` construct. See the `updateContext` for\n    // `tt.name`.\n    if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed)\n      { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n    if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow)\n      { return true }\n    if (prevType === types$1.braceL)\n      { return parent === types.b_stat }\n    if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name)\n      { return false }\n    return !this.exprAllowed\n  };\n\n  pp$6.inGeneratorContext = function() {\n    for (var i = this.context.length - 1; i >= 1; i--) {\n      var context = this.context[i];\n      if (context.token === \"function\")\n        { return context.generator }\n    }\n    return false\n  };\n\n  pp$6.updateContext = function(prevType) {\n    var update, type = this.type;\n    if (type.keyword && prevType === types$1.dot)\n      { this.exprAllowed = false; }\n    else if (update = type.updateContext)\n      { update.call(this, prevType); }\n    else\n      { this.exprAllowed = type.beforeExpr; }\n  };\n\n  // Used to handle edge cases when token context could not be inferred correctly during tokenization phase\n\n  pp$6.overrideContext = function(tokenCtx) {\n    if (this.curContext() !== tokenCtx) {\n      this.context[this.context.length - 1] = tokenCtx;\n    }\n  };\n\n  // Token-specific context update code\n\n  types$1.parenR.updateContext = types$1.braceR.updateContext = function() {\n    if (this.context.length === 1) {\n      this.exprAllowed = true;\n      return\n    }\n    var out = this.context.pop();\n    if (out === types.b_stat && this.curContext().token === \"function\") {\n      out = this.context.pop();\n    }\n    this.exprAllowed = !out.isExpr;\n  };\n\n  types$1.braceL.updateContext = function(prevType) {\n    this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n    this.exprAllowed = true;\n  };\n\n  types$1.dollarBraceL.updateContext = function() {\n    this.context.push(types.b_tmpl);\n    this.exprAllowed = true;\n  };\n\n  types$1.parenL.updateContext = function(prevType) {\n    var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while;\n    this.context.push(statementParens ? types.p_stat : types.p_expr);\n    this.exprAllowed = true;\n  };\n\n  types$1.incDec.updateContext = function() {\n    // tokExprAllowed stays unchanged\n  };\n\n  types$1._function.updateContext = types$1._class.updateContext = function(prevType) {\n    if (prevType.beforeExpr && prevType !== types$1._else &&\n        !(prevType === types$1.semi && this.curContext() !== types.p_stat) &&\n        !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n        !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat))\n      { this.context.push(types.f_expr); }\n    else\n      { this.context.push(types.f_stat); }\n    this.exprAllowed = false;\n  };\n\n  types$1.colon.updateContext = function() {\n    if (this.curContext().token === \"function\") { this.context.pop(); }\n    this.exprAllowed = true;\n  };\n\n  types$1.backQuote.updateContext = function() {\n    if (this.curContext() === types.q_tmpl)\n      { this.context.pop(); }\n    else\n      { this.context.push(types.q_tmpl); }\n    this.exprAllowed = false;\n  };\n\n  types$1.star.updateContext = function(prevType) {\n    if (prevType === types$1._function) {\n      var index = this.context.length - 1;\n      if (this.context[index] === types.f_expr)\n        { this.context[index] = types.f_expr_gen; }\n      else\n        { this.context[index] = types.f_gen; }\n    }\n    this.exprAllowed = true;\n  };\n\n  types$1.name.updateContext = function(prevType) {\n    var allowed = false;\n    if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) {\n      if (this.value === \"of\" && !this.exprAllowed ||\n          this.value === \"yield\" && this.inGeneratorContext())\n        { allowed = true; }\n    }\n    this.exprAllowed = allowed;\n  };\n\n  // A recursive descent parser operates by defining functions for all\n  // syntactic elements, and recursively calling those, each function\n  // advancing the input stream and returning an AST node. Precedence\n  // of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n  // instead of `(!x)[1]` is handled by the fact that the parser\n  // function that parses unary prefix operators is called first, and\n  // in turn calls the function that parses `[]` subscripts — that\n  // way, it'll receive the node for `x[1]` already parsed, and wraps\n  // *that* in the unary operator node.\n  //\n  // Acorn uses an [operator precedence parser][opp] to handle binary\n  // operator precedence, because it is much more compact than using\n  // the technique outlined above, which uses different, nesting\n  // functions to specify precedence, for all of the ten binary\n  // precedence levels that JavaScript defines.\n  //\n  // [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\n  var pp$5 = Parser.prototype;\n\n  // Check if property name clashes with already added.\n  // Object/class getters and setters are not allowed to clash —\n  // either with each other or with an init property — and in\n  // strict mode, init properties are also not allowed to be repeated.\n\n  pp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n    if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n      { return }\n    if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n      { return }\n    var key = prop.key;\n    var name;\n    switch (key.type) {\n    case \"Identifier\": name = key.name; break\n    case \"Literal\": name = String(key.value); break\n    default: return\n    }\n    var kind = prop.kind;\n    if (this.options.ecmaVersion >= 6) {\n      if (name === \"__proto__\" && kind === \"init\") {\n        if (propHash.proto) {\n          if (refDestructuringErrors) {\n            if (refDestructuringErrors.doubleProto < 0) {\n              refDestructuringErrors.doubleProto = key.start;\n            }\n          } else {\n            this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n          }\n        }\n        propHash.proto = true;\n      }\n      return\n    }\n    name = \"$\" + name;\n    var other = propHash[name];\n    if (other) {\n      var redefinition;\n      if (kind === \"init\") {\n        redefinition = this.strict && other.init || other.get || other.set;\n      } else {\n        redefinition = other.init || other[kind];\n      }\n      if (redefinition)\n        { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n    } else {\n      other = propHash[name] = {\n        init: false,\n        get: false,\n        set: false\n      };\n    }\n    other[kind] = true;\n  };\n\n  // ### Expression parsing\n\n  // These nest, from the most general expression type at the top to\n  // 'atomic', nondivisible expression types at the bottom. Most of\n  // the functions will simply let the function(s) below them parse,\n  // and, *if* the syntactic construct they handle is present, wrap\n  // the AST node that the inner parser gave them in another node.\n\n  // Parse a full expression. The optional arguments are used to\n  // forbid the `in` operator (in for loops initalization expressions)\n  // and provide reference for storing '=' operator inside shorthand\n  // property assignment in contexts where both object expression\n  // and object pattern might appear (so it's possible to raise\n  // delayed syntax error at correct position).\n\n  pp$5.parseExpression = function(forInit, refDestructuringErrors) {\n    var this$1$1 = this;\n\n    return this.catchStackOverflow(function () {\n      var startPos = this$1$1.start, startLoc = this$1$1.startLoc;\n      var expr = this$1$1.parseMaybeAssign(forInit, refDestructuringErrors);\n      if (this$1$1.type === types$1.comma) {\n        var node = this$1$1.startNodeAt(startPos, startLoc);\n        node.expressions = [expr];\n        while (this$1$1.eat(types$1.comma)) { node.expressions.push(this$1$1.parseMaybeAssign(forInit, refDestructuringErrors)); }\n        return this$1$1.finishNode(node, \"SequenceExpression\")\n      }\n      return expr\n    })\n  };\n\n  // Parse an assignment expression. This includes applications of\n  // operators like `+=`.\n\n  pp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {\n    if (this.isContextual(\"yield\")) {\n      if (this.inGenerator) { return this.parseYield(forInit) }\n      // The tokenizer will assume an expression is allowed after\n      // `yield`, but this isn't that kind of yield\n      else { this.exprAllowed = false; }\n    }\n\n    var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;\n    if (refDestructuringErrors) {\n      oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n      oldTrailingComma = refDestructuringErrors.trailingComma;\n      oldDoubleProto = refDestructuringErrors.doubleProto;\n      refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n    } else {\n      refDestructuringErrors = new DestructuringErrors;\n      ownDestructuringErrors = true;\n    }\n\n    var startPos = this.start, startLoc = this.startLoc;\n    if (this.type === types$1.parenL || this.type === types$1.name) {\n      this.potentialArrowAt = this.start;\n      this.potentialArrowInForAwait = forInit === \"await\";\n    }\n    var left = this.parseMaybeConditional(forInit, refDestructuringErrors);\n    if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n    if (this.type.isAssign) {\n      var node = this.startNodeAt(startPos, startLoc);\n      node.operator = this.value;\n      if (this.type === types$1.eq)\n        { left = this.toAssignable(left, false, refDestructuringErrors); }\n      if (!ownDestructuringErrors) {\n        refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1;\n      }\n      if (refDestructuringErrors.shorthandAssign >= left.start)\n        { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly\n      if (this.type === types$1.eq)\n        { this.checkLValPattern(left); }\n      else\n        { this.checkLValSimple(left); }\n      node.left = left;\n      this.next();\n      node.right = this.parseMaybeAssign(forInit);\n      if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; }\n      return this.finishNode(node, \"AssignmentExpression\")\n    } else {\n      if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n    }\n    if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n    if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n    return left\n  };\n\n  // Parse a ternary conditional (`?:`) operator.\n\n  pp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) {\n    var startPos = this.start, startLoc = this.startLoc;\n    var expr = this.parseExprOps(forInit, refDestructuringErrors);\n    if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n    if (!(expr.type === \"ArrowFunctionExpression\" && expr.start === startPos) && this.eat(types$1.question)) {\n      var node = this.startNodeAt(startPos, startLoc);\n      node.test = expr;\n      node.consequent = this.parseMaybeAssign();\n      this.expect(types$1.colon);\n      node.alternate = this.parseMaybeAssign(forInit);\n      return this.finishNode(node, \"ConditionalExpression\")\n    }\n    return expr\n  };\n\n  // Start the precedence parser.\n\n  pp$5.parseExprOps = function(forInit, refDestructuringErrors) {\n    var startPos = this.start, startLoc = this.startLoc;\n    var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit);\n    if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n    return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit)\n  };\n\n  // Parse binary operators with the operator precedence parsing\n  // algorithm. `left` is the left-hand side of the operator.\n  // `minPrec` provides context that allows the function to stop and\n  // defer further parser to one of its callers when it encounters an\n  // operator that has a lower precedence than the set it is parsing.\n\n  pp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {\n    var prec = this.type.binop;\n    if (prec != null && (!forInit || this.type !== types$1._in)) {\n      if (prec > minPrec) {\n        var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND;\n        var coalesce = this.type === types$1.coalesce;\n        if (coalesce) {\n          // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n          // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n          prec = types$1.logicalAND.binop;\n        }\n        var op = this.value;\n        this.next();\n        var startPos = this.start, startLoc = this.startLoc;\n        var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit);\n        var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);\n        if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) {\n          this.raiseRecoverable(this.start, \"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\");\n        }\n        return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit)\n      }\n    }\n    return left\n  };\n\n  pp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n    if (right.type === \"PrivateIdentifier\") { this.raise(right.start, \"Private identifier can only be left side of binary expression\"); }\n    var node = this.startNodeAt(startPos, startLoc);\n    node.left = left;\n    node.operator = op;\n    node.right = right;\n    return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n  };\n\n  // Parse unary operators, both prefix and postfix.\n\n  pp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {\n    var startPos = this.start, startLoc = this.startLoc, expr;\n    if (this.isContextual(\"await\") && this.canAwait) {\n      expr = this.parseAwait(forInit);\n      sawUnary = true;\n    } else if (this.type.prefix) {\n      var node = this.startNode(), update = this.type === types$1.incDec;\n      node.operator = this.value;\n      node.prefix = true;\n      this.next();\n      node.argument = this.parseMaybeUnary(null, true, update, forInit);\n      this.checkExpressionErrors(refDestructuringErrors, true);\n      if (update) { this.checkLValSimple(node.argument); }\n      else if (this.strict && node.operator === \"delete\" && isLocalVariableAccess(node.argument))\n        { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n      else if (node.operator === \"delete\" && isPrivateFieldAccess(node.argument))\n        { this.raiseRecoverable(node.start, \"Private fields can not be deleted\"); }\n      else { sawUnary = true; }\n      expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n    } else if (!sawUnary && this.type === types$1.privateId) {\n      if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); }\n      expr = this.parsePrivateIdent();\n      // only could be private fields in 'in', such as #x in obj\n      if (this.type !== types$1._in) { this.unexpected(); }\n    } else {\n      expr = this.parseExprSubscripts(refDestructuringErrors, forInit);\n      if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n      while (this.type.postfix && !this.canInsertSemicolon()) {\n        var node$1 = this.startNodeAt(startPos, startLoc);\n        node$1.operator = this.value;\n        node$1.prefix = false;\n        node$1.argument = expr;\n        this.checkLValSimple(expr);\n        this.next();\n        expr = this.finishNode(node$1, \"UpdateExpression\");\n      }\n    }\n\n    if (!incDec && this.eat(types$1.starstar)) {\n      if (sawUnary)\n        { this.unexpected(this.lastTokStart); }\n      else\n        { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), \"**\", false) }\n    } else {\n      return expr\n    }\n  };\n\n  function isLocalVariableAccess(node) {\n    return (\n      node.type === \"Identifier\" ||\n      node.type === \"ParenthesizedExpression\" && isLocalVariableAccess(node.expression)\n    )\n  }\n\n  function isPrivateFieldAccess(node) {\n    return (\n      node.type === \"MemberExpression\" && node.property.type === \"PrivateIdentifier\" ||\n      node.type === \"ChainExpression\" && isPrivateFieldAccess(node.expression) ||\n      node.type === \"ParenthesizedExpression\" && isPrivateFieldAccess(node.expression)\n    )\n  }\n\n  // Parse call, dot, and `[]`-subscript expressions.\n\n  pp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) {\n    var startPos = this.start, startLoc = this.startLoc;\n    var expr = this.parseExprAtom(refDestructuringErrors, forInit);\n    if (expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\")\n      { return expr }\n    var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit);\n    if (refDestructuringErrors && result.type === \"MemberExpression\") {\n      if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n      if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n      if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; }\n    }\n    return result\n  };\n\n  pp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {\n    var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n        this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 &&\n        this.potentialArrowAt === base.start;\n    var optionalChained = false;\n\n    while (true) {\n      var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);\n\n      if (element.optional) { optionalChained = true; }\n      if (element === base || element.type === \"ArrowFunctionExpression\") {\n        if (optionalChained) {\n          var chainNode = this.startNodeAt(startPos, startLoc);\n          chainNode.expression = element;\n          element = this.finishNode(chainNode, \"ChainExpression\");\n        }\n        return element\n      }\n\n      base = element;\n    }\n  };\n\n  pp$5.shouldParseAsyncArrow = function() {\n    return !this.canInsertSemicolon() && this.eat(types$1.arrow)\n  };\n\n  pp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {\n    return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit)\n  };\n\n  pp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {\n    var optionalSupported = this.options.ecmaVersion >= 11;\n    var optional = optionalSupported && this.eat(types$1.questionDot);\n    if (noCalls && optional) { this.raise(this.lastTokStart, \"Optional chaining cannot appear in the callee of new expressions\"); }\n\n    var computed = this.eat(types$1.bracketL);\n    if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) {\n      var node = this.startNodeAt(startPos, startLoc);\n      node.object = base;\n      if (computed) {\n        node.property = this.parseExpression();\n        this.expect(types$1.bracketR);\n      } else if (this.type === types$1.privateId && base.type !== \"Super\") {\n        node.property = this.parsePrivateIdent();\n      } else {\n        node.property = this.parseIdent(this.options.allowReserved !== \"never\");\n      }\n      node.computed = !!computed;\n      if (optionalSupported) {\n        node.optional = optional;\n      }\n      base = this.finishNode(node, \"MemberExpression\");\n    } else if (!noCalls && this.eat(types$1.parenL)) {\n      var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n      this.yieldPos = 0;\n      this.awaitPos = 0;\n      this.awaitIdentPos = 0;\n      var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);\n      if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) {\n        this.checkPatternErrors(refDestructuringErrors, false);\n        this.checkYieldAwaitInDefaultParams();\n        if (this.awaitIdentPos > 0)\n          { this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\"); }\n        this.yieldPos = oldYieldPos;\n        this.awaitPos = oldAwaitPos;\n        this.awaitIdentPos = oldAwaitIdentPos;\n        return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit)\n      }\n      this.checkExpressionErrors(refDestructuringErrors, true);\n      this.yieldPos = oldYieldPos || this.yieldPos;\n      this.awaitPos = oldAwaitPos || this.awaitPos;\n      this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;\n      var node$1 = this.startNodeAt(startPos, startLoc);\n      node$1.callee = base;\n      node$1.arguments = exprList;\n      if (optionalSupported) {\n        node$1.optional = optional;\n      }\n      base = this.finishNode(node$1, \"CallExpression\");\n    } else if (this.type === types$1.backQuote) {\n      if (optional || optionalChained) {\n        this.raise(this.start, \"Optional chaining cannot appear in the tag of tagged template expressions\");\n      }\n      var node$2 = this.startNodeAt(startPos, startLoc);\n      node$2.tag = base;\n      node$2.quasi = this.parseTemplate({isTagged: true});\n      base = this.finishNode(node$2, \"TaggedTemplateExpression\");\n    }\n    return base\n  };\n\n  // Parse an atomic expression — either a single token that is an\n  // expression, an expression started by a keyword like `function` or\n  // `new`, or an expression wrapped in punctuation like `()`, `[]`,\n  // or `{}`.\n\n  pp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {\n    // If a division operator appears in an expression position, the\n    // tokenizer got confused, and we force it to read a regexp instead.\n    if (this.type === types$1.slash) { this.readRegexp(); }\n\n    var node, canBeArrow = this.potentialArrowAt === this.start;\n    switch (this.type) {\n    case types$1._super:\n      if (!this.allowSuper)\n        { this.raise(this.start, \"'super' keyword outside a method\"); }\n      node = this.startNode();\n      this.next();\n      if (this.type === types$1.parenL && !this.allowDirectSuper)\n        { this.raise(node.start, \"super() call outside constructor of a subclass\"); }\n      // The `super` keyword can appear at below:\n      // SuperProperty:\n      //     super [ Expression ]\n      //     super . IdentifierName\n      // SuperCall:\n      //     super ( Arguments )\n      if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL)\n        { this.unexpected(); }\n      return this.finishNode(node, \"Super\")\n\n    case types$1._this:\n      node = this.startNode();\n      this.next();\n      return this.finishNode(node, \"ThisExpression\")\n\n    case types$1.name:\n      var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n      var id = this.parseIdent(false);\n      if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types$1._function)) {\n        this.overrideContext(types.f_expr);\n        return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit)\n      }\n      if (canBeArrow && !this.canInsertSemicolon()) {\n        if (this.eat(types$1.arrow))\n          { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) }\n        if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types$1.name && !containsEsc &&\n            (!this.potentialArrowInForAwait || this.value !== \"of\" || this.containsEsc)) {\n          id = this.parseIdent(false);\n          if (this.canInsertSemicolon() || !this.eat(types$1.arrow))\n            { this.unexpected(); }\n          return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit)\n        }\n      }\n      return id\n\n    case types$1.regexp:\n      var value = this.value;\n      node = this.parseLiteral(value.value);\n      node.regex = {pattern: value.pattern, flags: value.flags};\n      return node\n\n    case types$1.num: case types$1.string:\n      return this.parseLiteral(this.value)\n\n    case types$1._null: case types$1._true: case types$1._false:\n      node = this.startNode();\n      node.value = this.type === types$1._null ? null : this.type === types$1._true;\n      node.raw = this.type.keyword;\n      this.next();\n      return this.finishNode(node, \"Literal\")\n\n    case types$1.parenL:\n      var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);\n      if (refDestructuringErrors) {\n        if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n          { refDestructuringErrors.parenthesizedAssign = start; }\n        if (refDestructuringErrors.parenthesizedBind < 0)\n          { refDestructuringErrors.parenthesizedBind = start; }\n      }\n      return expr\n\n    case types$1.bracketL:\n      node = this.startNode();\n      this.next();\n      node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors);\n      return this.finishNode(node, \"ArrayExpression\")\n\n    case types$1.braceL:\n      this.overrideContext(types.b_expr);\n      return this.parseObj(false, refDestructuringErrors)\n\n    case types$1._function:\n      node = this.startNode();\n      this.next();\n      return this.parseFunction(node, 0)\n\n    case types$1._class:\n      return this.parseClass(this.startNode(), false)\n\n    case types$1._new:\n      return this.parseNew()\n\n    case types$1.backQuote:\n      return this.parseTemplate()\n\n    case types$1._import:\n      if (this.options.ecmaVersion >= 11) {\n        return this.parseExprImport(forNew)\n      } else {\n        return this.unexpected()\n      }\n\n    default:\n      return this.parseExprAtomDefault()\n    }\n  };\n\n  pp$5.parseExprAtomDefault = function() {\n    this.unexpected();\n  };\n\n  pp$5.parseExprImport = function(forNew) {\n    var node = this.startNode();\n\n    // Consume `import` as an identifier for `import.meta`.\n    // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`.\n    if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword import\"); }\n    this.next();\n\n    if (this.type === types$1.parenL && !forNew) {\n      return this.parseDynamicImport(node)\n    } else if (this.type === types$1.dot) {\n      var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n      meta.name = \"import\";\n      node.meta = this.finishNode(meta, \"Identifier\");\n      return this.parseImportMeta(node)\n    } else {\n      this.unexpected();\n    }\n  };\n\n  pp$5.parseDynamicImport = function(node) {\n    this.next(); // skip `(`\n\n    // Parse node.source.\n    node.source = this.parseMaybeAssign();\n\n    if (this.options.ecmaVersion >= 16) {\n      if (!this.eat(types$1.parenR)) {\n        this.expect(types$1.comma);\n        if (!this.afterTrailingComma(types$1.parenR)) {\n          node.options = this.parseMaybeAssign();\n          if (!this.eat(types$1.parenR)) {\n            this.expect(types$1.comma);\n            if (!this.afterTrailingComma(types$1.parenR)) {\n              this.unexpected();\n            }\n          }\n        } else {\n          node.options = null;\n        }\n      } else {\n        node.options = null;\n      }\n    } else {\n      // Verify ending.\n      if (!this.eat(types$1.parenR)) {\n        var errorPos = this.start;\n        if (this.eat(types$1.comma) && this.eat(types$1.parenR)) {\n          this.raiseRecoverable(errorPos, \"Trailing comma is not allowed in import()\");\n        } else {\n          this.unexpected(errorPos);\n        }\n      }\n    }\n\n    return this.finishNode(node, \"ImportExpression\")\n  };\n\n  pp$5.parseImportMeta = function(node) {\n    this.next(); // skip `.`\n\n    var containsEsc = this.containsEsc;\n    node.property = this.parseIdent(true);\n\n    if (node.property.name !== \"meta\")\n      { this.raiseRecoverable(node.property.start, \"The only valid meta property for import is 'import.meta'\"); }\n    if (containsEsc)\n      { this.raiseRecoverable(node.start, \"'import.meta' must not contain escaped characters\"); }\n    if (this.options.sourceType !== \"module\" && !this.options.allowImportExportEverywhere)\n      { this.raiseRecoverable(node.start, \"Cannot use 'import.meta' outside a module\"); }\n\n    return this.finishNode(node, \"MetaProperty\")\n  };\n\n  pp$5.parseLiteral = function(value) {\n    var node = this.startNode();\n    node.value = value;\n    node.raw = this.input.slice(this.start, this.end);\n    if (node.raw.charCodeAt(node.raw.length - 1) === 110)\n      { node.bigint = node.value != null ? node.value.toString() : node.raw.slice(0, -1).replace(/_/g, \"\"); }\n    this.next();\n    return this.finishNode(node, \"Literal\")\n  };\n\n  pp$5.parseParenExpression = function() {\n    this.expect(types$1.parenL);\n    var val = this.parseExpression();\n    this.expect(types$1.parenR);\n    return val\n  };\n\n  pp$5.shouldParseArrow = function(exprList) {\n    return !this.canInsertSemicolon()\n  };\n\n  pp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {\n    var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n    if (this.options.ecmaVersion >= 6) {\n      this.next();\n\n      var innerStartPos = this.start, innerStartLoc = this.startLoc;\n      var exprList = [], first = true, lastIsComma = false;\n      var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n      this.yieldPos = 0;\n      this.awaitPos = 0;\n      // Do not save awaitIdentPos to allow checking awaits nested in parameters\n      while (this.type !== types$1.parenR) {\n        first ? first = false : this.expect(types$1.comma);\n        if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) {\n          lastIsComma = true;\n          break\n        } else if (this.type === types$1.ellipsis) {\n          spreadStart = this.start;\n          exprList.push(this.parseParenItem(this.parseRestBinding()));\n          if (this.type === types$1.comma) {\n            this.raiseRecoverable(\n              this.start,\n              \"Comma is not permitted after the rest element\"\n            );\n          }\n          break\n        } else {\n          exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n        }\n      }\n      var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;\n      this.expect(types$1.parenR);\n\n      if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) {\n        this.checkPatternErrors(refDestructuringErrors, false);\n        this.checkYieldAwaitInDefaultParams();\n        this.yieldPos = oldYieldPos;\n        this.awaitPos = oldAwaitPos;\n        return this.parseParenArrowList(startPos, startLoc, exprList, forInit)\n      }\n\n      if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n      if (spreadStart) { this.unexpected(spreadStart); }\n      this.checkExpressionErrors(refDestructuringErrors, true);\n      this.yieldPos = oldYieldPos || this.yieldPos;\n      this.awaitPos = oldAwaitPos || this.awaitPos;\n\n      if (exprList.length > 1) {\n        val = this.startNodeAt(innerStartPos, innerStartLoc);\n        val.expressions = exprList;\n        this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n      } else {\n        val = exprList[0];\n      }\n    } else {\n      val = this.parseParenExpression();\n    }\n\n    if (this.options.preserveParens) {\n      var par = this.startNodeAt(startPos, startLoc);\n      par.expression = val;\n      return this.finishNode(par, \"ParenthesizedExpression\")\n    } else {\n      return val\n    }\n  };\n\n  pp$5.parseParenItem = function(item) {\n    return item\n  };\n\n  pp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {\n    return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit)\n  };\n\n  // New's precedence is slightly tricky. It must allow its argument to\n  // be a `[]` or dot subscript expression, but not a call — at least,\n  // not without wrapping it in parentheses. Thus, it uses the noCalls\n  // argument to parseSubscripts to prevent it from consuming the\n  // argument list.\n\n  var empty = [];\n\n  pp$5.parseNew = function() {\n    if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword new\"); }\n    var node = this.startNode();\n    this.next();\n    if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) {\n      var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n      meta.name = \"new\";\n      node.meta = this.finishNode(meta, \"Identifier\");\n      this.next();\n      var containsEsc = this.containsEsc;\n      node.property = this.parseIdent(true);\n      if (node.property.name !== \"target\")\n        { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is 'new.target'\"); }\n      if (containsEsc)\n        { this.raiseRecoverable(node.start, \"'new.target' must not contain escaped characters\"); }\n      if (!this.allowNewDotTarget)\n        { this.raiseRecoverable(node.start, \"'new.target' can only be used in functions and class static block\"); }\n      return this.finishNode(node, \"MetaProperty\")\n    }\n    var startPos = this.start, startLoc = this.startLoc;\n    node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false);\n    if (node.callee.type === \"Super\")\n      { this.raiseRecoverable(startPos, \"Invalid use of 'super'\"); }\n    if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); }\n    else { node.arguments = empty; }\n    return this.finishNode(node, \"NewExpression\")\n  };\n\n  // Parse template expression.\n\n  pp$5.parseTemplateElement = function(ref) {\n    var isTagged = ref.isTagged;\n\n    var elem = this.startNode();\n    if (this.type === types$1.invalidTemplate) {\n      if (!isTagged) {\n        this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n      }\n      elem.value = {\n        raw: this.value.replace(/\\r\\n?/g, \"\\n\"),\n        cooked: null\n      };\n    } else {\n      elem.value = {\n        raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n        cooked: this.value\n      };\n    }\n    this.next();\n    elem.tail = this.type === types$1.backQuote;\n    return this.finishNode(elem, \"TemplateElement\")\n  };\n\n  pp$5.parseTemplate = function(ref) {\n    if ( ref === void 0 ) ref = {};\n    var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n    var node = this.startNode();\n    this.next();\n    node.expressions = [];\n    var curElt = this.parseTemplateElement({isTagged: isTagged});\n    node.quasis = [curElt];\n    while (!curElt.tail) {\n      if (this.type === types$1.eof) { this.raise(this.pos, \"Unterminated template literal\"); }\n      this.expect(types$1.dollarBraceL);\n      node.expressions.push(this.parseExpression());\n      this.expect(types$1.braceR);\n      node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged}));\n    }\n    this.next();\n    return this.finishNode(node, \"TemplateLiteral\")\n  };\n\n  pp$5.isAsyncProp = function(prop) {\n    return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n      (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) &&\n      !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n  };\n\n  // Parse an object literal or binding pattern.\n\n  pp$5.parseObj = function(isPattern, refDestructuringErrors) {\n    var node = this.startNode(), first = true, propHash = {};\n    node.properties = [];\n    this.next();\n    while (!this.eat(types$1.braceR)) {\n      if (!first) {\n        this.expect(types$1.comma);\n        if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break }\n      } else { first = false; }\n\n      var prop = this.parseProperty(isPattern, refDestructuringErrors);\n      if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); }\n      node.properties.push(prop);\n    }\n    return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n  };\n\n  pp$5.parseProperty = function(isPattern, refDestructuringErrors) {\n    var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n    if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) {\n      if (isPattern) {\n        prop.argument = this.parseIdent(false);\n        if (this.type === types$1.comma) {\n          this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\");\n        }\n        return this.finishNode(prop, \"RestElement\")\n      }\n      // Parse argument.\n      prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n      // To disallow trailing comma via `this.toAssignable()`.\n      if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n        refDestructuringErrors.trailingComma = this.start;\n      }\n      // Finish\n      return this.finishNode(prop, \"SpreadElement\")\n    }\n    if (this.options.ecmaVersion >= 6) {\n      prop.method = false;\n      prop.shorthand = false;\n      if (isPattern || refDestructuringErrors) {\n        startPos = this.start;\n        startLoc = this.startLoc;\n      }\n      if (!isPattern)\n        { isGenerator = this.eat(types$1.star); }\n    }\n    var containsEsc = this.containsEsc;\n    this.parsePropertyName(prop);\n    if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n      isAsync = true;\n      isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);\n      this.parsePropertyName(prop);\n    } else {\n      isAsync = false;\n    }\n    this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n    return this.finishNode(prop, \"Property\")\n  };\n\n  pp$5.parseGetterSetter = function(prop) {\n    var kind = prop.key.name;\n    this.parsePropertyName(prop);\n    prop.value = this.parseMethod(false);\n    prop.kind = kind;\n    var paramCount = prop.kind === \"get\" ? 0 : 1;\n    if (prop.value.params.length !== paramCount) {\n      var start = prop.value.start;\n      if (prop.kind === \"get\")\n        { this.raiseRecoverable(start, \"getter should have no params\"); }\n      else\n        { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n    } else {\n      if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n        { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n    }\n  };\n\n  pp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n    if ((isGenerator || isAsync) && this.type === types$1.colon)\n      { this.unexpected(); }\n\n    if (this.eat(types$1.colon)) {\n      prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n      prop.kind = \"init\";\n    } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) {\n      if (isPattern) { this.unexpected(); }\n      prop.method = true;\n      prop.value = this.parseMethod(isGenerator, isAsync);\n      prop.kind = \"init\";\n    } else if (!isPattern && !containsEsc &&\n               this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n               (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n               (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) {\n      if (isGenerator || isAsync) { this.unexpected(); }\n      this.parseGetterSetter(prop);\n    } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n      if (isGenerator || isAsync) { this.unexpected(); }\n      this.checkUnreserved(prop.key);\n      if (prop.key.name === \"await\" && !this.awaitIdentPos)\n        { this.awaitIdentPos = startPos; }\n      if (isPattern) {\n        prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n      } else if (this.type === types$1.eq && refDestructuringErrors) {\n        if (refDestructuringErrors.shorthandAssign < 0)\n          { refDestructuringErrors.shorthandAssign = this.start; }\n        prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n      } else {\n        prop.value = this.copyNode(prop.key);\n      }\n      prop.kind = \"init\";\n      prop.shorthand = true;\n    } else { this.unexpected(); }\n  };\n\n  pp$5.parsePropertyName = function(prop) {\n    if (this.options.ecmaVersion >= 6) {\n      if (this.eat(types$1.bracketL)) {\n        prop.computed = true;\n        prop.key = this.parseMaybeAssign();\n        this.expect(types$1.bracketR);\n        return prop.key\n      } else {\n        prop.computed = false;\n      }\n    }\n    return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\")\n  };\n\n  // Initialize empty function node.\n\n  pp$5.initFunction = function(node) {\n    node.id = null;\n    if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; }\n    if (this.options.ecmaVersion >= 8) { node.async = false; }\n  };\n\n  // Parse object or class method.\n\n  pp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n    var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n    this.initFunction(node);\n    if (this.options.ecmaVersion >= 6)\n      { node.generator = isGenerator; }\n    if (this.options.ecmaVersion >= 8)\n      { node.async = !!isAsync; }\n\n    this.yieldPos = 0;\n    this.awaitPos = 0;\n    this.awaitIdentPos = 0;\n    this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n\n    this.expect(types$1.parenL);\n    node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n    this.checkYieldAwaitInDefaultParams();\n    this.parseFunctionBody(node, false, true, false);\n\n    this.yieldPos = oldYieldPos;\n    this.awaitPos = oldAwaitPos;\n    this.awaitIdentPos = oldAwaitIdentPos;\n    return this.finishNode(node, \"FunctionExpression\")\n  };\n\n  // Parse arrow function expression with given parameters.\n\n  pp$5.parseArrowExpression = function(node, params, isAsync, forInit) {\n    var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n    this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n    this.initFunction(node);\n    if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; }\n\n    this.yieldPos = 0;\n    this.awaitPos = 0;\n    this.awaitIdentPos = 0;\n\n    node.params = this.toAssignableList(params, true);\n    this.parseFunctionBody(node, true, false, forInit);\n\n    this.yieldPos = oldYieldPos;\n    this.awaitPos = oldAwaitPos;\n    this.awaitIdentPos = oldAwaitIdentPos;\n    return this.finishNode(node, \"ArrowFunctionExpression\")\n  };\n\n  // Parse function body and check parameters.\n\n  pp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) {\n    var isExpression = isArrowFunction && this.type !== types$1.braceL;\n    var oldStrict = this.strict, useStrict = false;\n\n    if (isExpression) {\n      node.body = this.parseMaybeAssign(forInit);\n      node.expression = true;\n      this.checkParams(node, false);\n    } else {\n      var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n      if (!oldStrict || nonSimple) {\n        useStrict = this.strictDirective(this.end);\n        // If this is a strict mode function, verify that argument names\n        // are not repeated, and it does not try to bind the words `eval`\n        // or `arguments`.\n        if (useStrict && nonSimple)\n          { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n      }\n      // Start a new scope with regard to labels and the `inFunction`\n      // flag (restore them to their old value afterwards).\n      var oldLabels = this.labels;\n      this.labels = [];\n      if (useStrict) { this.strict = true; }\n\n      // Add the params to varDeclaredNames to ensure that an error is thrown\n      // if a let/const declaration in the function clashes with one of the params.\n      this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));\n      // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n      if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); }\n      node.body = this.parseBlock(false, undefined, useStrict && !oldStrict);\n      node.expression = false;\n      this.adaptDirectivePrologue(node.body.body);\n      this.labels = oldLabels;\n    }\n    this.exitScope();\n  };\n\n  pp$5.isSimpleParamList = function(params) {\n    for (var i = 0, list = params; i < list.length; i += 1)\n      {\n      var param = list[i];\n\n      if (param.type !== \"Identifier\") { return false\n    } }\n    return true\n  };\n\n  // Checks function params for various disallowed patterns such as using \"eval\"\n  // or \"arguments\" and duplicate parameters.\n\n  pp$5.checkParams = function(node, allowDuplicates) {\n    var nameHash = Object.create(null);\n    for (var i = 0, list = node.params; i < list.length; i += 1)\n      {\n      var param = list[i];\n\n      this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash);\n    }\n  };\n\n  // Parses a comma-separated list of expressions, and returns them as\n  // an array. `close` is the token type that ends the list, and\n  // `allowEmpty` can be turned on to allow subsequent commas with\n  // nothing in between them to be parsed as `null` (which is needed\n  // for array literals).\n\n  pp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n    var elts = [], first = true;\n    while (!this.eat(close)) {\n      if (!first) {\n        this.expect(types$1.comma);\n        if (allowTrailingComma && this.afterTrailingComma(close)) { break }\n      } else { first = false; }\n\n      var elt = (void 0);\n      if (allowEmpty && this.type === types$1.comma)\n        { elt = null; }\n      else if (this.type === types$1.ellipsis) {\n        elt = this.parseSpread(refDestructuringErrors);\n        if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0)\n          { refDestructuringErrors.trailingComma = this.start; }\n      } else {\n        elt = this.parseMaybeAssign(false, refDestructuringErrors);\n      }\n      elts.push(elt);\n    }\n    return elts\n  };\n\n  pp$5.checkUnreserved = function(ref) {\n    var start = ref.start;\n    var end = ref.end;\n    var name = ref.name;\n\n    if (this.inGenerator && name === \"yield\")\n      { this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\"); }\n    if (this.inAsync && name === \"await\")\n      { this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\"); }\n    if (!(this.currentThisScope().flags & SCOPE_VAR) && name === \"arguments\")\n      { this.raiseRecoverable(start, \"Cannot use 'arguments' in class field initializer\"); }\n    if (this.inClassStaticBlock && (name === \"arguments\" || name === \"await\"))\n      { this.raise(start, (\"Cannot use \" + name + \" in class static initialization block\")); }\n    if (this.keywords.test(name))\n      { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n    if (this.options.ecmaVersion < 6 &&\n      this.input.slice(start, end).indexOf(\"\\\\\") !== -1) { return }\n    var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n    if (re.test(name)) {\n      if (!this.inAsync && name === \"await\")\n        { this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\"); }\n      this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n    }\n  };\n\n  // Parse the next token as an identifier. If `liberal` is true (used\n  // when parsing properties), it will also convert keywords into\n  // identifiers.\n\n  pp$5.parseIdent = function(liberal) {\n    var node = this.parseIdentNode();\n    this.next(!!liberal);\n    this.finishNode(node, \"Identifier\");\n    if (!liberal) {\n      this.checkUnreserved(node);\n      if (node.name === \"await\" && !this.awaitIdentPos)\n        { this.awaitIdentPos = node.start; }\n    }\n    return node\n  };\n\n  pp$5.parseIdentNode = function() {\n    var node = this.startNode();\n    if (this.type === types$1.name) {\n      node.name = this.value;\n    } else if (this.type.keyword) {\n      node.name = this.type.keyword;\n\n      // To fix https://github.com/acornjs/acorn/issues/575\n      // `class` and `function` keywords push new context into this.context.\n      // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n      // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n      if ((node.name === \"class\" || node.name === \"function\") &&\n        (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n        this.context.pop();\n      }\n      this.type = types$1.name;\n    } else {\n      this.unexpected();\n    }\n    return node\n  };\n\n  pp$5.parsePrivateIdent = function() {\n    var node = this.startNode();\n    if (this.type === types$1.privateId) {\n      node.name = this.value;\n    } else {\n      this.unexpected();\n    }\n    this.next();\n    this.finishNode(node, \"PrivateIdentifier\");\n\n    // For validating existence\n    if (this.options.checkPrivateFields) {\n      if (this.privateNameStack.length === 0) {\n        this.raise(node.start, (\"Private field '#\" + (node.name) + \"' must be declared in an enclosing class\"));\n      } else {\n        this.privateNameStack[this.privateNameStack.length - 1].used.push(node);\n      }\n    }\n\n    return node\n  };\n\n  // Parses yield expression inside generator.\n\n  pp$5.parseYield = function(forInit) {\n    if (!this.yieldPos) { this.yieldPos = this.start; }\n\n    var node = this.startNode();\n    this.next();\n    if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) {\n      node.delegate = false;\n      node.argument = null;\n    } else {\n      node.delegate = this.eat(types$1.star);\n      node.argument = this.parseMaybeAssign(forInit);\n    }\n    return this.finishNode(node, \"YieldExpression\")\n  };\n\n  pp$5.parseAwait = function(forInit) {\n    if (!this.awaitPos) { this.awaitPos = this.start; }\n\n    var node = this.startNode();\n    this.next();\n    node.argument = this.parseMaybeUnary(null, true, false, forInit);\n    return this.finishNode(node, \"AwaitExpression\")\n  };\n\n  var pp$4 = Parser.prototype;\n\n  // This function is used to raise exceptions on parse errors. It\n  // takes an offset integer (into the current `input`) to indicate\n  // the location of the error, attaches the position to the end\n  // of the error message, and then raises a `SyntaxError` with that\n  // message.\n\n  pp$4.raise = function(pos, message) {\n    var loc = getLineInfo(this.input, pos);\n    message += \" (\" + loc.line + \":\" + loc.column + \")\";\n    if (this.sourceFile) {\n      message += \" in \" + this.sourceFile;\n    }\n    var err = new SyntaxError(message);\n    err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n    throw err\n  };\n\n  pp$4.raiseRecoverable = pp$4.raise;\n\n  pp$4.curPosition = function() {\n    if (this.options.locations) {\n      return new Position(this.curLine, this.pos - this.lineStart)\n    }\n  };\n\n  var pp$3 = Parser.prototype;\n\n  var Scope = function Scope(flags) {\n    this.flags = flags;\n    // A list of var-declared names in the current lexical scope\n    this.var = [];\n    // A list of lexically-declared names in the current lexical scope\n    this.lexical = [];\n    // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n    this.functions = [];\n  };\n\n  // The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\n  pp$3.enterScope = function(flags) {\n    this.scopeStack.push(new Scope(flags));\n  };\n\n  pp$3.exitScope = function() {\n    this.scopeStack.pop();\n  };\n\n  // The spec says:\n  // > At the top level of a function, or script, function declarations are\n  // > treated like var declarations rather than like lexical declarations.\n  pp$3.treatFunctionsAsVarInScope = function(scope) {\n    return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n  };\n\n  pp$3.declareName = function(name, bindingType, pos) {\n    var redeclared = false;\n    if (bindingType === BIND_LEXICAL) {\n      var scope = this.currentScope();\n      redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n      scope.lexical.push(name);\n      if (this.inModule && (scope.flags & SCOPE_TOP))\n        { delete this.undefinedExports[name]; }\n    } else if (bindingType === BIND_SIMPLE_CATCH) {\n      var scope$1 = this.currentScope();\n      scope$1.lexical.push(name);\n    } else if (bindingType === BIND_FUNCTION) {\n      var scope$2 = this.currentScope();\n      if (this.treatFunctionsAsVar)\n        { redeclared = scope$2.lexical.indexOf(name) > -1; }\n      else\n        { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; }\n      scope$2.functions.push(name);\n    } else {\n      for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n        var scope$3 = this.scopeStack[i];\n        if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||\n            !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {\n          redeclared = true;\n          break\n        }\n        scope$3.var.push(name);\n        if (this.inModule && (scope$3.flags & SCOPE_TOP))\n          { delete this.undefinedExports[name]; }\n        if (scope$3.flags & SCOPE_VAR) { break }\n      }\n    }\n    if (redeclared) { this.raiseRecoverable(pos, (\"Identifier '\" + name + \"' has already been declared\")); }\n  };\n\n  pp$3.checkLocalExport = function(id) {\n    // scope.functions must be empty as Module code is always strict.\n    if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n        this.scopeStack[0].var.indexOf(id.name) === -1) {\n      this.undefinedExports[id.name] = id;\n    }\n  };\n\n  pp$3.currentScope = function() {\n    return this.scopeStack[this.scopeStack.length - 1]\n  };\n\n  pp$3.currentVarScope = function() {\n    for (var i = this.scopeStack.length - 1;; i--) {\n      var scope = this.scopeStack[i];\n      if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope }\n    }\n  };\n\n  // Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\n  pp$3.currentThisScope = function() {\n    for (var i = this.scopeStack.length - 1;; i--) {\n      var scope = this.scopeStack[i];\n      if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) &&\n          !(scope.flags & SCOPE_ARROW)) { return scope }\n    }\n  };\n\n  var Node = function Node(parser, pos, loc) {\n    this.type = \"\";\n    this.start = pos;\n    this.end = 0;\n    if (parser.options.locations)\n      { this.loc = new SourceLocation(parser, loc); }\n    if (parser.options.directSourceFile)\n      { this.sourceFile = parser.options.directSourceFile; }\n    if (parser.options.ranges)\n      { this.range = [pos, 0]; }\n  };\n\n  // Start an AST node, attaching a start offset.\n\n  var pp$2 = Parser.prototype;\n\n  pp$2.startNode = function() {\n    return new Node(this, this.start, this.startLoc)\n  };\n\n  pp$2.startNodeAt = function(pos, loc) {\n    return new Node(this, pos, loc)\n  };\n\n  // Finish an AST node, adding `type` and `end` properties.\n\n  function finishNodeAt(node, type, pos, loc) {\n    node.type = type;\n    node.end = pos;\n    if (this.options.locations)\n      { node.loc.end = loc; }\n    if (this.options.ranges)\n      { node.range[1] = pos; }\n    return node\n  }\n\n  pp$2.finishNode = function(node, type) {\n    return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n  };\n\n  // Finish node at given position\n\n  pp$2.finishNodeAt = function(node, type, pos, loc) {\n    return finishNodeAt.call(this, node, type, pos, loc)\n  };\n\n  pp$2.copyNode = function(node) {\n    var newNode = new Node(this, node.start, this.startLoc);\n    for (var prop in node) { newNode[prop] = node[prop]; }\n    return newNode\n  };\n\n  // This file was generated by \"bin/generate-unicode-script-values.js\". Do not modify manually!\n  var scriptValuesAddedInUnicode = \"Berf Beria_Erfe Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sidetic Sidt Sunu Sunuwar Tai_Yo Tayo Todhri Todr Tolong_Siki Tols Tulu_Tigalari Tutg Unknown Zzzz\";\n\n  // This file contains Unicode properties extracted from the ECMAScript specification.\n  // The lists are extracted like so:\n  // $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n  // #table-binary-unicode-properties\n  var ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\";\n  var ecma10BinaryProperties = ecma9BinaryProperties + \" Extended_Pictographic\";\n  var ecma11BinaryProperties = ecma10BinaryProperties;\n  var ecma12BinaryProperties = ecma11BinaryProperties + \" EBase EComp EMod EPres ExtPict\";\n  var ecma13BinaryProperties = ecma12BinaryProperties;\n  var ecma14BinaryProperties = ecma13BinaryProperties;\n\n  var unicodeBinaryProperties = {\n    9: ecma9BinaryProperties,\n    10: ecma10BinaryProperties,\n    11: ecma11BinaryProperties,\n    12: ecma12BinaryProperties,\n    13: ecma13BinaryProperties,\n    14: ecma14BinaryProperties\n  };\n\n  // #table-binary-unicode-properties-of-strings\n  var ecma14BinaryPropertiesOfStrings = \"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji\";\n\n  var unicodeBinaryPropertiesOfStrings = {\n    9: \"\",\n    10: \"\",\n    11: \"\",\n    12: \"\",\n    13: \"\",\n    14: ecma14BinaryPropertiesOfStrings\n  };\n\n  // #table-unicode-general-category-values\n  var unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\";\n\n  // #table-unicode-script-values\n  var ecma9ScriptValues = \"Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\";\n  var ecma10ScriptValues = ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\";\n  var ecma11ScriptValues = ecma10ScriptValues + \" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\";\n  var ecma12ScriptValues = ecma11ScriptValues + \" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi\";\n  var ecma13ScriptValues = ecma12ScriptValues + \" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith\";\n  var ecma14ScriptValues = ecma13ScriptValues + \" \" + scriptValuesAddedInUnicode;\n\n  var unicodeScriptValues = {\n    9: ecma9ScriptValues,\n    10: ecma10ScriptValues,\n    11: ecma11ScriptValues,\n    12: ecma12ScriptValues,\n    13: ecma13ScriptValues,\n    14: ecma14ScriptValues\n  };\n\n  var data = {};\n  function buildUnicodeData(ecmaVersion) {\n    var d = data[ecmaVersion] = {\n      binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n      binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]),\n      nonBinary: {\n        General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n        Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n      }\n    };\n    d.nonBinary.Script_Extensions = d.nonBinary.Script;\n\n    d.nonBinary.gc = d.nonBinary.General_Category;\n    d.nonBinary.sc = d.nonBinary.Script;\n    d.nonBinary.scx = d.nonBinary.Script_Extensions;\n  }\n\n  for (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {\n    var ecmaVersion = list[i];\n\n    buildUnicodeData(ecmaVersion);\n  }\n\n  var pp$1 = Parser.prototype;\n\n  // Track disjunction structure to determine whether a duplicate\n  // capture group name is allowed because it is in a separate branch.\n  var BranchID = function BranchID(parent, base) {\n    // Parent disjunction branch\n    this.parent = parent;\n    // Identifies this set of sibling branches\n    this.base = base || this;\n  };\n\n  BranchID.prototype.separatedFrom = function separatedFrom (alt) {\n    // A branch is separate from another branch if they or any of\n    // their parents are siblings in a given disjunction\n    for (var self = this; self; self = self.parent) {\n      for (var other = alt; other; other = other.parent) {\n        if (self.base === other.base && self !== other) { return true }\n      }\n    }\n    return false\n  };\n\n  BranchID.prototype.sibling = function sibling () {\n    return new BranchID(this.parent, this.base)\n  };\n\n  var RegExpValidationState = function RegExpValidationState(parser) {\n    this.parser = parser;\n    this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\") + (parser.options.ecmaVersion >= 13 ? \"d\" : \"\") + (parser.options.ecmaVersion >= 15 ? \"v\" : \"\");\n    this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];\n    this.source = \"\";\n    this.flags = \"\";\n    this.start = 0;\n    this.switchU = false;\n    this.switchV = false;\n    this.switchN = false;\n    this.pos = 0;\n    this.lastIntValue = 0;\n    this.lastStringValue = \"\";\n    this.lastAssertionIsQuantifiable = false;\n    this.numCapturingParens = 0;\n    this.maxBackReference = 0;\n    this.groupNames = Object.create(null);\n    this.backReferenceNames = [];\n    this.branchID = null;\n  };\n\n  RegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n    var unicodeSets = flags.indexOf(\"v\") !== -1;\n    var unicode = flags.indexOf(\"u\") !== -1;\n    this.start = start | 0;\n    this.source = pattern + \"\";\n    this.flags = flags;\n    if (unicodeSets && this.parser.options.ecmaVersion >= 15) {\n      this.switchU = true;\n      this.switchV = true;\n      this.switchN = true;\n    } else {\n      this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n      this.switchV = false;\n      this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n    }\n  };\n\n  RegExpValidationState.prototype.raise = function raise (message) {\n    this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n  };\n\n  // If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n  // Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\n  RegExpValidationState.prototype.at = function at (i, forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    var s = this.source;\n    var l = s.length;\n    if (i >= l) {\n      return -1\n    }\n    var c = s.charCodeAt(i);\n    if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n      return c\n    }\n    var next = s.charCodeAt(i + 1);\n    return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c\n  };\n\n  RegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    var s = this.source;\n    var l = s.length;\n    if (i >= l) {\n      return l\n    }\n    var c = s.charCodeAt(i), next;\n    if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l ||\n        (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) {\n      return i + 1\n    }\n    return i + 2\n  };\n\n  RegExpValidationState.prototype.current = function current (forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    return this.at(this.pos, forceU)\n  };\n\n  RegExpValidationState.prototype.lookahead = function lookahead (forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    return this.at(this.nextIndex(this.pos, forceU), forceU)\n  };\n\n  RegExpValidationState.prototype.advance = function advance (forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    this.pos = this.nextIndex(this.pos, forceU);\n  };\n\n  RegExpValidationState.prototype.eat = function eat (ch, forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    if (this.current(forceU) === ch) {\n      this.advance(forceU);\n      return true\n    }\n    return false\n  };\n\n  RegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) {\n      if ( forceU === void 0 ) forceU = false;\n\n    var pos = this.pos;\n    for (var i = 0, list = chs; i < list.length; i += 1) {\n      var ch = list[i];\n\n        var current = this.at(pos, forceU);\n      if (current === -1 || current !== ch) {\n        return false\n      }\n      pos = this.nextIndex(pos, forceU);\n    }\n    this.pos = pos;\n    return true\n  };\n\n  /**\n   * Validate the flags part of a given RegExpLiteral.\n   *\n   * @param {RegExpValidationState} state The state to validate RegExp.\n   * @returns {void}\n   */\n  pp$1.validateRegExpFlags = function(state) {\n    var validFlags = state.validFlags;\n    var flags = state.flags;\n\n    var u = false;\n    var v = false;\n\n    for (var i = 0; i < flags.length; i++) {\n      var flag = flags.charAt(i);\n      if (validFlags.indexOf(flag) === -1) {\n        this.raise(state.start, \"Invalid regular expression flag\");\n      }\n      if (flags.indexOf(flag, i + 1) > -1) {\n        this.raise(state.start, \"Duplicate regular expression flag\");\n      }\n      if (flag === \"u\") { u = true; }\n      if (flag === \"v\") { v = true; }\n    }\n    if (this.options.ecmaVersion >= 15 && u && v) {\n      this.raise(state.start, \"Invalid regular expression flag\");\n    }\n  };\n\n  function hasProp(obj) {\n    for (var _ in obj) { return true }\n    return false\n  }\n\n  /**\n   * Validate the pattern part of a given RegExpLiteral.\n   *\n   * @param {RegExpValidationState} state The state to validate RegExp.\n   * @returns {void}\n   */\n  pp$1.validateRegExpPattern = function(state) {\n    this.regexp_pattern(state);\n\n    // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n    // parsing contains a |GroupName|, reparse with the goal symbol\n    // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n    // exception if _P_ did not conform to the grammar, if any elements of _P_\n    // were not matched by the parse, or if any Early Error conditions exist.\n    if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) {\n      state.switchN = true;\n      this.regexp_pattern(state);\n    }\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\n  pp$1.regexp_pattern = function(state) {\n    state.pos = 0;\n    state.lastIntValue = 0;\n    state.lastStringValue = \"\";\n    state.lastAssertionIsQuantifiable = false;\n    state.numCapturingParens = 0;\n    state.maxBackReference = 0;\n    state.groupNames = Object.create(null);\n    state.backReferenceNames.length = 0;\n    state.branchID = null;\n\n    this.regexp_disjunction(state);\n\n    if (state.pos !== state.source.length) {\n      // Make the same messages as V8.\n      if (state.eat(0x29 /* ) */)) {\n        state.raise(\"Unmatched ')'\");\n      }\n      if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) {\n        state.raise(\"Lone quantifier brackets\");\n      }\n    }\n    if (state.maxBackReference > state.numCapturingParens) {\n      state.raise(\"Invalid escape\");\n    }\n    for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n      var name = list[i];\n\n      if (!state.groupNames[name]) {\n        state.raise(\"Invalid named capture referenced\");\n      }\n    }\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\n  pp$1.regexp_disjunction = function(state) {\n    var trackDisjunction = this.options.ecmaVersion >= 16;\n    if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); }\n    this.regexp_alternative(state);\n    while (state.eat(0x7C /* | */)) {\n      if (trackDisjunction) { state.branchID = state.branchID.sibling(); }\n      this.regexp_alternative(state);\n    }\n    if (trackDisjunction) { state.branchID = state.branchID.parent; }\n\n    // Make the same message as V8.\n    if (this.regexp_eatQuantifier(state, true)) {\n      state.raise(\"Nothing to repeat\");\n    }\n    if (state.eat(0x7B /* { */)) {\n      state.raise(\"Lone quantifier brackets\");\n    }\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\n  pp$1.regexp_alternative = function(state) {\n    while (state.pos < state.source.length && this.regexp_eatTerm(state)) {}\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\n  pp$1.regexp_eatTerm = function(state) {\n    if (this.regexp_eatAssertion(state)) {\n      // Handle `QuantifiableAssertion Quantifier` alternative.\n      // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n      // is a QuantifiableAssertion.\n      if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n        // Make the same message as V8.\n        if (state.switchU) {\n          state.raise(\"Invalid quantifier\");\n        }\n      }\n      return true\n    }\n\n    if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n      this.regexp_eatQuantifier(state);\n      return true\n    }\n\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\n  pp$1.regexp_eatAssertion = function(state) {\n    var start = state.pos;\n    state.lastAssertionIsQuantifiable = false;\n\n    // ^, $\n    if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n      return true\n    }\n\n    // \\b \\B\n    if (state.eat(0x5C /* \\ */)) {\n      if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n        return true\n      }\n      state.pos = start;\n    }\n\n    // Lookahead / Lookbehind\n    if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n      var lookbehind = false;\n      if (this.options.ecmaVersion >= 9) {\n        lookbehind = state.eat(0x3C /* < */);\n      }\n      if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n        this.regexp_disjunction(state);\n        if (!state.eat(0x29 /* ) */)) {\n          state.raise(\"Unterminated group\");\n        }\n        state.lastAssertionIsQuantifiable = !lookbehind;\n        return true\n      }\n    }\n\n    state.pos = start;\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\n  pp$1.regexp_eatQuantifier = function(state, noError) {\n    if ( noError === void 0 ) noError = false;\n\n    if (this.regexp_eatQuantifierPrefix(state, noError)) {\n      state.eat(0x3F /* ? */);\n      return true\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\n  pp$1.regexp_eatQuantifierPrefix = function(state, noError) {\n    return (\n      state.eat(0x2A /* * */) ||\n      state.eat(0x2B /* + */) ||\n      state.eat(0x3F /* ? */) ||\n      this.regexp_eatBracedQuantifier(state, noError)\n    )\n  };\n  pp$1.regexp_eatBracedQuantifier = function(state, noError) {\n    var start = state.pos;\n    if (state.eat(0x7B /* { */)) {\n      var min = 0, max = -1;\n      if (this.regexp_eatDecimalDigits(state)) {\n        min = state.lastIntValue;\n        if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n          max = state.lastIntValue;\n        }\n        if (state.eat(0x7D /* } */)) {\n          // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n          if (max !== -1 && max < min && !noError) {\n            state.raise(\"numbers out of order in {} quantifier\");\n          }\n          return true\n        }\n      }\n      if (state.switchU && !noError) {\n        state.raise(\"Incomplete quantifier\");\n      }\n      state.pos = start;\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\n  pp$1.regexp_eatAtom = function(state) {\n    return (\n      this.regexp_eatPatternCharacters(state) ||\n      state.eat(0x2E /* . */) ||\n      this.regexp_eatReverseSolidusAtomEscape(state) ||\n      this.regexp_eatCharacterClass(state) ||\n      this.regexp_eatUncapturingGroup(state) ||\n      this.regexp_eatCapturingGroup(state)\n    )\n  };\n  pp$1.regexp_eatReverseSolidusAtomEscape = function(state) {\n    var start = state.pos;\n    if (state.eat(0x5C /* \\ */)) {\n      if (this.regexp_eatAtomEscape(state)) {\n        return true\n      }\n      state.pos = start;\n    }\n    return false\n  };\n  pp$1.regexp_eatUncapturingGroup = function(state) {\n    var start = state.pos;\n    if (state.eat(0x28 /* ( */)) {\n      if (state.eat(0x3F /* ? */)) {\n        if (this.options.ecmaVersion >= 16) {\n          var addModifiers = this.regexp_eatModifiers(state);\n          var hasHyphen = state.eat(0x2D /* - */);\n          if (addModifiers || hasHyphen) {\n            for (var i = 0; i < addModifiers.length; i++) {\n              var modifier = addModifiers.charAt(i);\n              if (addModifiers.indexOf(modifier, i + 1) > -1) {\n                state.raise(\"Duplicate regular expression modifiers\");\n              }\n            }\n            if (hasHyphen) {\n              var removeModifiers = this.regexp_eatModifiers(state);\n              if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) {\n                state.raise(\"Invalid regular expression modifiers\");\n              }\n              for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {\n                var modifier$1 = removeModifiers.charAt(i$1);\n                if (\n                  removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 ||\n                  addModifiers.indexOf(modifier$1) > -1\n                ) {\n                  state.raise(\"Duplicate regular expression modifiers\");\n                }\n              }\n            }\n          }\n        }\n        if (state.eat(0x3A /* : */)) {\n          this.regexp_disjunction(state);\n          if (state.eat(0x29 /* ) */)) {\n            return true\n          }\n          state.raise(\"Unterminated group\");\n        }\n      }\n      state.pos = start;\n    }\n    return false\n  };\n  pp$1.regexp_eatCapturingGroup = function(state) {\n    if (state.eat(0x28 /* ( */)) {\n      if (this.options.ecmaVersion >= 9) {\n        this.regexp_groupSpecifier(state);\n      } else if (state.current() === 0x3F /* ? */) {\n        state.raise(\"Invalid group\");\n      }\n      this.regexp_disjunction(state);\n      if (state.eat(0x29 /* ) */)) {\n        state.numCapturingParens += 1;\n        return true\n      }\n      state.raise(\"Unterminated group\");\n    }\n    return false\n  };\n  // RegularExpressionModifiers ::\n  //   [empty]\n  //   RegularExpressionModifiers RegularExpressionModifier\n  pp$1.regexp_eatModifiers = function(state) {\n    var modifiers = \"\";\n    var ch = 0;\n    while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) {\n      modifiers += codePointToString(ch);\n      state.advance();\n    }\n    return modifiers\n  };\n  // RegularExpressionModifier :: one of\n  //   `i` `m` `s`\n  function isRegularExpressionModifier(ch) {\n    return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\n  pp$1.regexp_eatExtendedAtom = function(state) {\n    return (\n      state.eat(0x2E /* . */) ||\n      this.regexp_eatReverseSolidusAtomEscape(state) ||\n      this.regexp_eatCharacterClass(state) ||\n      this.regexp_eatUncapturingGroup(state) ||\n      this.regexp_eatCapturingGroup(state) ||\n      this.regexp_eatInvalidBracedQuantifier(state) ||\n      this.regexp_eatExtendedPatternCharacter(state)\n    )\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\n  pp$1.regexp_eatInvalidBracedQuantifier = function(state) {\n    if (this.regexp_eatBracedQuantifier(state, true)) {\n      state.raise(\"Nothing to repeat\");\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\n  pp$1.regexp_eatSyntaxCharacter = function(state) {\n    var ch = state.current();\n    if (isSyntaxCharacter(ch)) {\n      state.lastIntValue = ch;\n      state.advance();\n      return true\n    }\n    return false\n  };\n  function isSyntaxCharacter(ch) {\n    return (\n      ch === 0x24 /* $ */ ||\n      ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n      ch === 0x2E /* . */ ||\n      ch === 0x3F /* ? */ ||\n      ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n      ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n    )\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n  // But eat eager.\n  pp$1.regexp_eatPatternCharacters = function(state) {\n    var start = state.pos;\n    var ch = 0;\n    while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n      state.advance();\n    }\n    return state.pos !== start\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\n  pp$1.regexp_eatExtendedPatternCharacter = function(state) {\n    var ch = state.current();\n    if (\n      ch !== -1 &&\n      ch !== 0x24 /* $ */ &&\n      !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n      ch !== 0x2E /* . */ &&\n      ch !== 0x3F /* ? */ &&\n      ch !== 0x5B /* [ */ &&\n      ch !== 0x5E /* ^ */ &&\n      ch !== 0x7C /* | */\n    ) {\n      state.advance();\n      return true\n    }\n    return false\n  };\n\n  // GroupSpecifier ::\n  //   [empty]\n  //   `?` GroupName\n  pp$1.regexp_groupSpecifier = function(state) {\n    if (state.eat(0x3F /* ? */)) {\n      if (!this.regexp_eatGroupName(state)) { state.raise(\"Invalid group\"); }\n      var trackDisjunction = this.options.ecmaVersion >= 16;\n      var known = state.groupNames[state.lastStringValue];\n      if (known) {\n        if (trackDisjunction) {\n          for (var i = 0, list = known; i < list.length; i += 1) {\n            var altID = list[i];\n\n            if (!altID.separatedFrom(state.branchID))\n              { state.raise(\"Duplicate capture group name\"); }\n          }\n        } else {\n          state.raise(\"Duplicate capture group name\");\n        }\n      }\n      if (trackDisjunction) {\n        (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID);\n      } else {\n        state.groupNames[state.lastStringValue] = true;\n      }\n    }\n  };\n\n  // GroupName ::\n  //   `<` RegExpIdentifierName `>`\n  // Note: this updates `state.lastStringValue` property with the eaten name.\n  pp$1.regexp_eatGroupName = function(state) {\n    state.lastStringValue = \"\";\n    if (state.eat(0x3C /* < */)) {\n      if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n        return true\n      }\n      state.raise(\"Invalid capture group name\");\n    }\n    return false\n  };\n\n  // RegExpIdentifierName ::\n  //   RegExpIdentifierStart\n  //   RegExpIdentifierName RegExpIdentifierPart\n  // Note: this updates `state.lastStringValue` property with the eaten name.\n  pp$1.regexp_eatRegExpIdentifierName = function(state) {\n    state.lastStringValue = \"\";\n    if (this.regexp_eatRegExpIdentifierStart(state)) {\n      state.lastStringValue += codePointToString(state.lastIntValue);\n      while (this.regexp_eatRegExpIdentifierPart(state)) {\n        state.lastStringValue += codePointToString(state.lastIntValue);\n      }\n      return true\n    }\n    return false\n  };\n\n  // RegExpIdentifierStart ::\n  //   UnicodeIDStart\n  //   `$`\n  //   `_`\n  //   `\\` RegExpUnicodeEscapeSequence[+U]\n  pp$1.regexp_eatRegExpIdentifierStart = function(state) {\n    var start = state.pos;\n    var forceU = this.options.ecmaVersion >= 11;\n    var ch = state.current(forceU);\n    state.advance(forceU);\n\n    if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n      ch = state.lastIntValue;\n    }\n    if (isRegExpIdentifierStart(ch)) {\n      state.lastIntValue = ch;\n      return true\n    }\n\n    state.pos = start;\n    return false\n  };\n  function isRegExpIdentifierStart(ch) {\n    return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n  }\n\n  // RegExpIdentifierPart ::\n  //   UnicodeIDContinue\n  //   `$`\n  //   `_`\n  //   `\\` RegExpUnicodeEscapeSequence[+U]\n  //   <ZWNJ>\n  //   <ZWJ>\n  pp$1.regexp_eatRegExpIdentifierPart = function(state) {\n    var start = state.pos;\n    var forceU = this.options.ecmaVersion >= 11;\n    var ch = state.current(forceU);\n    state.advance(forceU);\n\n    if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n      ch = state.lastIntValue;\n    }\n    if (isRegExpIdentifierPart(ch)) {\n      state.lastIntValue = ch;\n      return true\n    }\n\n    state.pos = start;\n    return false\n  };\n  function isRegExpIdentifierPart(ch) {\n    return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\n  pp$1.regexp_eatAtomEscape = function(state) {\n    if (\n      this.regexp_eatBackReference(state) ||\n      this.regexp_eatCharacterClassEscape(state) ||\n      this.regexp_eatCharacterEscape(state) ||\n      (state.switchN && this.regexp_eatKGroupName(state))\n    ) {\n      return true\n    }\n    if (state.switchU) {\n      // Make the same message as V8.\n      if (state.current() === 0x63 /* c */) {\n        state.raise(\"Invalid unicode escape\");\n      }\n      state.raise(\"Invalid escape\");\n    }\n    return false\n  };\n  pp$1.regexp_eatBackReference = function(state) {\n    var start = state.pos;\n    if (this.regexp_eatDecimalEscape(state)) {\n      var n = state.lastIntValue;\n      if (state.switchU) {\n        // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n        if (n > state.maxBackReference) {\n          state.maxBackReference = n;\n        }\n        return true\n      }\n      if (n <= state.numCapturingParens) {\n        return true\n      }\n      state.pos = start;\n    }\n    return false\n  };\n  pp$1.regexp_eatKGroupName = function(state) {\n    if (state.eat(0x6B /* k */)) {\n      if (this.regexp_eatGroupName(state)) {\n        state.backReferenceNames.push(state.lastStringValue);\n        return true\n      }\n      state.raise(\"Invalid named reference\");\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\n  pp$1.regexp_eatCharacterEscape = function(state) {\n    return (\n      this.regexp_eatControlEscape(state) ||\n      this.regexp_eatCControlLetter(state) ||\n      this.regexp_eatZero(state) ||\n      this.regexp_eatHexEscapeSequence(state) ||\n      this.regexp_eatRegExpUnicodeEscapeSequence(state, false) ||\n      (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n      this.regexp_eatIdentityEscape(state)\n    )\n  };\n  pp$1.regexp_eatCControlLetter = function(state) {\n    var start = state.pos;\n    if (state.eat(0x63 /* c */)) {\n      if (this.regexp_eatControlLetter(state)) {\n        return true\n      }\n      state.pos = start;\n    }\n    return false\n  };\n  pp$1.regexp_eatZero = function(state) {\n    if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n      state.lastIntValue = 0;\n      state.advance();\n      return true\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\n  pp$1.regexp_eatControlEscape = function(state) {\n    var ch = state.current();\n    if (ch === 0x74 /* t */) {\n      state.lastIntValue = 0x09; /* \\t */\n      state.advance();\n      return true\n    }\n    if (ch === 0x6E /* n */) {\n      state.lastIntValue = 0x0A; /* \\n */\n      state.advance();\n      return true\n    }\n    if (ch === 0x76 /* v */) {\n      state.lastIntValue = 0x0B; /* \\v */\n      state.advance();\n      return true\n    }\n    if (ch === 0x66 /* f */) {\n      state.lastIntValue = 0x0C; /* \\f */\n      state.advance();\n      return true\n    }\n    if (ch === 0x72 /* r */) {\n      state.lastIntValue = 0x0D; /* \\r */\n      state.advance();\n      return true\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\n  pp$1.regexp_eatControlLetter = function(state) {\n    var ch = state.current();\n    if (isControlLetter(ch)) {\n      state.lastIntValue = ch % 0x20;\n      state.advance();\n      return true\n    }\n    return false\n  };\n  function isControlLetter(ch) {\n    return (\n      (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n      (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n    )\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\n  pp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {\n    if ( forceU === void 0 ) forceU = false;\n\n    var start = state.pos;\n    var switchU = forceU || state.switchU;\n\n    if (state.eat(0x75 /* u */)) {\n      if (this.regexp_eatFixedHexDigits(state, 4)) {\n        var lead = state.lastIntValue;\n        if (switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n          var leadSurrogateEnd = state.pos;\n          if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n            var trail = state.lastIntValue;\n            if (trail >= 0xDC00 && trail <= 0xDFFF) {\n              state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n              return true\n            }\n          }\n          state.pos = leadSurrogateEnd;\n          state.lastIntValue = lead;\n        }\n        return true\n      }\n      if (\n        switchU &&\n        state.eat(0x7B /* { */) &&\n        this.regexp_eatHexDigits(state) &&\n        state.eat(0x7D /* } */) &&\n        isValidUnicode(state.lastIntValue)\n      ) {\n        return true\n      }\n      if (switchU) {\n        state.raise(\"Invalid unicode escape\");\n      }\n      state.pos = start;\n    }\n\n    return false\n  };\n  function isValidUnicode(ch) {\n    return ch >= 0 && ch <= 0x10FFFF\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\n  pp$1.regexp_eatIdentityEscape = function(state) {\n    if (state.switchU) {\n      if (this.regexp_eatSyntaxCharacter(state)) {\n        return true\n      }\n      if (state.eat(0x2F /* / */)) {\n        state.lastIntValue = 0x2F; /* / */\n        return true\n      }\n      return false\n    }\n\n    var ch = state.current();\n    if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n      state.lastIntValue = ch;\n      state.advance();\n      return true\n    }\n\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\n  pp$1.regexp_eatDecimalEscape = function(state) {\n    state.lastIntValue = 0;\n    var ch = state.current();\n    if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n      do {\n        state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n        state.advance();\n      } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n      return true\n    }\n    return false\n  };\n\n  // Return values used by character set parsing methods, needed to\n  // forbid negation of sets that can match strings.\n  var CharSetNone = 0; // Nothing parsed\n  var CharSetOk = 1; // Construct parsed, cannot contain strings\n  var CharSetString = 2; // Construct parsed, can contain strings\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\n  pp$1.regexp_eatCharacterClassEscape = function(state) {\n    var ch = state.current();\n\n    if (isCharacterClassEscape(ch)) {\n      state.lastIntValue = -1;\n      state.advance();\n      return CharSetOk\n    }\n\n    var negate = false;\n    if (\n      state.switchU &&\n      this.options.ecmaVersion >= 9 &&\n      ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */)\n    ) {\n      state.lastIntValue = -1;\n      state.advance();\n      var result;\n      if (\n        state.eat(0x7B /* { */) &&\n        (result = this.regexp_eatUnicodePropertyValueExpression(state)) &&\n        state.eat(0x7D /* } */)\n      ) {\n        if (negate && result === CharSetString) { state.raise(\"Invalid property name\"); }\n        return result\n      }\n      state.raise(\"Invalid property name\");\n    }\n\n    return CharSetNone\n  };\n\n  function isCharacterClassEscape(ch) {\n    return (\n      ch === 0x64 /* d */ ||\n      ch === 0x44 /* D */ ||\n      ch === 0x73 /* s */ ||\n      ch === 0x53 /* S */ ||\n      ch === 0x77 /* w */ ||\n      ch === 0x57 /* W */\n    )\n  }\n\n  // UnicodePropertyValueExpression ::\n  //   UnicodePropertyName `=` UnicodePropertyValue\n  //   LoneUnicodePropertyNameOrValue\n  pp$1.regexp_eatUnicodePropertyValueExpression = function(state) {\n    var start = state.pos;\n\n    // UnicodePropertyName `=` UnicodePropertyValue\n    if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n      var name = state.lastStringValue;\n      if (this.regexp_eatUnicodePropertyValue(state)) {\n        var value = state.lastStringValue;\n        this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n        return CharSetOk\n      }\n    }\n    state.pos = start;\n\n    // LoneUnicodePropertyNameOrValue\n    if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n      var nameOrValue = state.lastStringValue;\n      return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n    }\n    return CharSetNone\n  };\n\n  pp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n    if (!hasOwn(state.unicodeProperties.nonBinary, name))\n      { state.raise(\"Invalid property name\"); }\n    if (!state.unicodeProperties.nonBinary[name].test(value))\n      { state.raise(\"Invalid property value\"); }\n  };\n\n  pp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n    if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk }\n    if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString }\n    state.raise(\"Invalid property name\");\n  };\n\n  // UnicodePropertyName ::\n  //   UnicodePropertyNameCharacters\n  pp$1.regexp_eatUnicodePropertyName = function(state) {\n    var ch = 0;\n    state.lastStringValue = \"\";\n    while (isUnicodePropertyNameCharacter(ch = state.current())) {\n      state.lastStringValue += codePointToString(ch);\n      state.advance();\n    }\n    return state.lastStringValue !== \"\"\n  };\n\n  function isUnicodePropertyNameCharacter(ch) {\n    return isControlLetter(ch) || ch === 0x5F /* _ */\n  }\n\n  // UnicodePropertyValue ::\n  //   UnicodePropertyValueCharacters\n  pp$1.regexp_eatUnicodePropertyValue = function(state) {\n    var ch = 0;\n    state.lastStringValue = \"\";\n    while (isUnicodePropertyValueCharacter(ch = state.current())) {\n      state.lastStringValue += codePointToString(ch);\n      state.advance();\n    }\n    return state.lastStringValue !== \"\"\n  };\n  function isUnicodePropertyValueCharacter(ch) {\n    return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n  }\n\n  // LoneUnicodePropertyNameOrValue ::\n  //   UnicodePropertyValueCharacters\n  pp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n    return this.regexp_eatUnicodePropertyValue(state)\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\n  pp$1.regexp_eatCharacterClass = function(state) {\n    if (state.eat(0x5B /* [ */)) {\n      var negate = state.eat(0x5E /* ^ */);\n      var result = this.regexp_classContents(state);\n      if (!state.eat(0x5D /* ] */))\n        { state.raise(\"Unterminated character class\"); }\n      if (negate && result === CharSetString)\n        { state.raise(\"Negated character class may contain strings\"); }\n      return true\n    }\n    return false\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassContents\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\n  pp$1.regexp_classContents = function(state) {\n    if (state.current() === 0x5D /* ] */) { return CharSetOk }\n    if (state.switchV) { return this.regexp_classSetExpression(state) }\n    this.regexp_nonEmptyClassRanges(state);\n    return CharSetOk\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\n  pp$1.regexp_nonEmptyClassRanges = function(state) {\n    while (this.regexp_eatClassAtom(state)) {\n      var left = state.lastIntValue;\n      if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n        var right = state.lastIntValue;\n        if (state.switchU && (left === -1 || right === -1)) {\n          state.raise(\"Invalid character class\");\n        }\n        if (left !== -1 && right !== -1 && left > right) {\n          state.raise(\"Range out of order in character class\");\n        }\n      }\n    }\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\n  pp$1.regexp_eatClassAtom = function(state) {\n    var start = state.pos;\n\n    if (state.eat(0x5C /* \\ */)) {\n      if (this.regexp_eatClassEscape(state)) {\n        return true\n      }\n      if (state.switchU) {\n        // Make the same message as V8.\n        var ch$1 = state.current();\n        if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n          state.raise(\"Invalid class escape\");\n        }\n        state.raise(\"Invalid escape\");\n      }\n      state.pos = start;\n    }\n\n    var ch = state.current();\n    if (ch !== 0x5D /* ] */) {\n      state.lastIntValue = ch;\n      state.advance();\n      return true\n    }\n\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\n  pp$1.regexp_eatClassEscape = function(state) {\n    var start = state.pos;\n\n    if (state.eat(0x62 /* b */)) {\n      state.lastIntValue = 0x08; /* <BS> */\n      return true\n    }\n\n    if (state.switchU && state.eat(0x2D /* - */)) {\n      state.lastIntValue = 0x2D; /* - */\n      return true\n    }\n\n    if (!state.switchU && state.eat(0x63 /* c */)) {\n      if (this.regexp_eatClassControlLetter(state)) {\n        return true\n      }\n      state.pos = start;\n    }\n\n    return (\n      this.regexp_eatCharacterClassEscape(state) ||\n      this.regexp_eatCharacterEscape(state)\n    )\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassSetExpression\n  // https://tc39.es/ecma262/#prod-ClassUnion\n  // https://tc39.es/ecma262/#prod-ClassIntersection\n  // https://tc39.es/ecma262/#prod-ClassSubtraction\n  pp$1.regexp_classSetExpression = function(state) {\n    var result = CharSetOk, subResult;\n    if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) {\n      if (subResult === CharSetString) { result = CharSetString; }\n      // https://tc39.es/ecma262/#prod-ClassIntersection\n      var start = state.pos;\n      while (state.eatChars([0x26, 0x26] /* && */)) {\n        if (\n          state.current() !== 0x26 /* & */ &&\n          (subResult = this.regexp_eatClassSetOperand(state))\n        ) {\n          if (subResult !== CharSetString) { result = CharSetOk; }\n          continue\n        }\n        state.raise(\"Invalid character in character class\");\n      }\n      if (start !== state.pos) { return result }\n      // https://tc39.es/ecma262/#prod-ClassSubtraction\n      while (state.eatChars([0x2D, 0x2D] /* -- */)) {\n        if (this.regexp_eatClassSetOperand(state)) { continue }\n        state.raise(\"Invalid character in character class\");\n      }\n      if (start !== state.pos) { return result }\n    } else {\n      state.raise(\"Invalid character in character class\");\n    }\n    // https://tc39.es/ecma262/#prod-ClassUnion\n    for (;;) {\n      if (this.regexp_eatClassSetRange(state)) { continue }\n      subResult = this.regexp_eatClassSetOperand(state);\n      if (!subResult) { return result }\n      if (subResult === CharSetString) { result = CharSetString; }\n    }\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassSetRange\n  pp$1.regexp_eatClassSetRange = function(state) {\n    var start = state.pos;\n    if (this.regexp_eatClassSetCharacter(state)) {\n      var left = state.lastIntValue;\n      if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) {\n        var right = state.lastIntValue;\n        if (left !== -1 && right !== -1 && left > right) {\n          state.raise(\"Range out of order in character class\");\n        }\n        return true\n      }\n      state.pos = start;\n    }\n    return false\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassSetOperand\n  pp$1.regexp_eatClassSetOperand = function(state) {\n    if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk }\n    return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state)\n  };\n\n  // https://tc39.es/ecma262/#prod-NestedClass\n  pp$1.regexp_eatNestedClass = function(state) {\n    var start = state.pos;\n    if (state.eat(0x5B /* [ */)) {\n      var negate = state.eat(0x5E /* ^ */);\n      var result = this.regexp_classContents(state);\n      if (state.eat(0x5D /* ] */)) {\n        if (negate && result === CharSetString) {\n          state.raise(\"Negated character class may contain strings\");\n        }\n        return result\n      }\n      state.pos = start;\n    }\n    if (state.eat(0x5C /* \\ */)) {\n      var result$1 = this.regexp_eatCharacterClassEscape(state);\n      if (result$1) {\n        return result$1\n      }\n      state.pos = start;\n    }\n    return null\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassStringDisjunction\n  pp$1.regexp_eatClassStringDisjunction = function(state) {\n    var start = state.pos;\n    if (state.eatChars([0x5C, 0x71] /* \\q */)) {\n      if (state.eat(0x7B /* { */)) {\n        var result = this.regexp_classStringDisjunctionContents(state);\n        if (state.eat(0x7D /* } */)) {\n          return result\n        }\n      } else {\n        // Make the same message as V8.\n        state.raise(\"Invalid escape\");\n      }\n      state.pos = start;\n    }\n    return null\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents\n  pp$1.regexp_classStringDisjunctionContents = function(state) {\n    var result = this.regexp_classString(state);\n    while (state.eat(0x7C /* | */)) {\n      if (this.regexp_classString(state) === CharSetString) { result = CharSetString; }\n    }\n    return result\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassString\n  // https://tc39.es/ecma262/#prod-NonEmptyClassString\n  pp$1.regexp_classString = function(state) {\n    var count = 0;\n    while (this.regexp_eatClassSetCharacter(state)) { count++; }\n    return count === 1 ? CharSetOk : CharSetString\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassSetCharacter\n  pp$1.regexp_eatClassSetCharacter = function(state) {\n    var start = state.pos;\n    if (state.eat(0x5C /* \\ */)) {\n      if (\n        this.regexp_eatCharacterEscape(state) ||\n        this.regexp_eatClassSetReservedPunctuator(state)\n      ) {\n        return true\n      }\n      if (state.eat(0x62 /* b */)) {\n        state.lastIntValue = 0x08; /* <BS> */\n        return true\n      }\n      state.pos = start;\n      return false\n    }\n    var ch = state.current();\n    if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false }\n    if (isClassSetSyntaxCharacter(ch)) { return false }\n    state.advance();\n    state.lastIntValue = ch;\n    return true\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator\n  function isClassSetReservedDoublePunctuatorCharacter(ch) {\n    return (\n      ch === 0x21 /* ! */ ||\n      ch >= 0x23 /* # */ && ch <= 0x26 /* & */ ||\n      ch >= 0x2A /* * */ && ch <= 0x2C /* , */ ||\n      ch === 0x2E /* . */ ||\n      ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ ||\n      ch === 0x5E /* ^ */ ||\n      ch === 0x60 /* ` */ ||\n      ch === 0x7E /* ~ */\n    )\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter\n  function isClassSetSyntaxCharacter(ch) {\n    return (\n      ch === 0x28 /* ( */ ||\n      ch === 0x29 /* ) */ ||\n      ch === 0x2D /* - */ ||\n      ch === 0x2F /* / */ ||\n      ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ ||\n      ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n    )\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\n  pp$1.regexp_eatClassSetReservedPunctuator = function(state) {\n    var ch = state.current();\n    if (isClassSetReservedPunctuator(ch)) {\n      state.lastIntValue = ch;\n      state.advance();\n      return true\n    }\n    return false\n  };\n\n  // https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\n  function isClassSetReservedPunctuator(ch) {\n    return (\n      ch === 0x21 /* ! */ ||\n      ch === 0x23 /* # */ ||\n      ch === 0x25 /* % */ ||\n      ch === 0x26 /* & */ ||\n      ch === 0x2C /* , */ ||\n      ch === 0x2D /* - */ ||\n      ch >= 0x3A /* : */ && ch <= 0x3E /* > */ ||\n      ch === 0x40 /* @ */ ||\n      ch === 0x60 /* ` */ ||\n      ch === 0x7E /* ~ */\n    )\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\n  pp$1.regexp_eatClassControlLetter = function(state) {\n    var ch = state.current();\n    if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n      state.lastIntValue = ch % 0x20;\n      state.advance();\n      return true\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\n  pp$1.regexp_eatHexEscapeSequence = function(state) {\n    var start = state.pos;\n    if (state.eat(0x78 /* x */)) {\n      if (this.regexp_eatFixedHexDigits(state, 2)) {\n        return true\n      }\n      if (state.switchU) {\n        state.raise(\"Invalid escape\");\n      }\n      state.pos = start;\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\n  pp$1.regexp_eatDecimalDigits = function(state) {\n    var start = state.pos;\n    var ch = 0;\n    state.lastIntValue = 0;\n    while (isDecimalDigit(ch = state.current())) {\n      state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n      state.advance();\n    }\n    return state.pos !== start\n  };\n  function isDecimalDigit(ch) {\n    return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\n  pp$1.regexp_eatHexDigits = function(state) {\n    var start = state.pos;\n    var ch = 0;\n    state.lastIntValue = 0;\n    while (isHexDigit(ch = state.current())) {\n      state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n      state.advance();\n    }\n    return state.pos !== start\n  };\n  function isHexDigit(ch) {\n    return (\n      (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n      (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n      (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n    )\n  }\n  function hexToInt(ch) {\n    if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n      return 10 + (ch - 0x41 /* A */)\n    }\n    if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n      return 10 + (ch - 0x61 /* a */)\n    }\n    return ch - 0x30 /* 0 */\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n  // Allows only 0-377(octal) i.e. 0-255(decimal).\n  pp$1.regexp_eatLegacyOctalEscapeSequence = function(state) {\n    if (this.regexp_eatOctalDigit(state)) {\n      var n1 = state.lastIntValue;\n      if (this.regexp_eatOctalDigit(state)) {\n        var n2 = state.lastIntValue;\n        if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n          state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n        } else {\n          state.lastIntValue = n1 * 8 + n2;\n        }\n      } else {\n        state.lastIntValue = n1;\n      }\n      return true\n    }\n    return false\n  };\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\n  pp$1.regexp_eatOctalDigit = function(state) {\n    var ch = state.current();\n    if (isOctalDigit(ch)) {\n      state.lastIntValue = ch - 0x30; /* 0 */\n      state.advance();\n      return true\n    }\n    state.lastIntValue = 0;\n    return false\n  };\n  function isOctalDigit(ch) {\n    return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n  }\n\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n  // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n  // And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\n  pp$1.regexp_eatFixedHexDigits = function(state, length) {\n    var start = state.pos;\n    state.lastIntValue = 0;\n    for (var i = 0; i < length; ++i) {\n      var ch = state.current();\n      if (!isHexDigit(ch)) {\n        state.pos = start;\n        return false\n      }\n      state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n      state.advance();\n    }\n    return true\n  };\n\n  // Object type used to represent tokens. Note that normally, tokens\n  // simply exist as properties on the parser object. This is only\n  // used for the onToken callback and the external tokenizer.\n\n  var Token = function Token(p) {\n    this.type = p.type;\n    this.value = p.value;\n    this.start = p.start;\n    this.end = p.end;\n    if (p.options.locations)\n      { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n    if (p.options.ranges)\n      { this.range = [p.start, p.end]; }\n  };\n\n  // ## Tokenizer\n\n  var pp = Parser.prototype;\n\n  // Move to the next token\n\n  pp.next = function(ignoreEscapeSequenceInKeyword) {\n    if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc)\n      { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + this.type.keyword); }\n    if (this.options.onToken)\n      { this.options.onToken(new Token(this)); }\n\n    this.lastTokEnd = this.end;\n    this.lastTokStart = this.start;\n    this.lastTokEndLoc = this.endLoc;\n    this.lastTokStartLoc = this.startLoc;\n    this.nextToken();\n  };\n\n  pp.getToken = function() {\n    this.next();\n    return new Token(this)\n  };\n\n  // If we're in an ES6 environment, make parsers iterable\n  if (typeof Symbol !== \"undefined\")\n    { pp[Symbol.iterator] = function() {\n      var this$1$1 = this;\n\n      return {\n        next: function () {\n          var token = this$1$1.getToken();\n          return {\n            done: token.type === types$1.eof,\n            value: token\n          }\n        }\n      }\n    }; }\n\n  // Toggle strict mode. Re-reads the next number or string to please\n  // pedantic tests (`\"use strict\"; 010;` should fail).\n\n  // Read a single token, updating the parser object's token-related\n  // properties.\n\n  pp.nextToken = function() {\n    var curContext = this.curContext();\n    if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n    this.start = this.pos;\n    if (this.options.locations) { this.startLoc = this.curPosition(); }\n    if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) }\n\n    if (curContext.override) { return curContext.override(this) }\n    else { this.readToken(this.fullCharCodeAtPos()); }\n  };\n\n  pp.readToken = function(code) {\n    // Identifier or keyword. '\\uXXXX' sequences are allowed in\n    // identifiers, so '\\' also dispatches to that.\n    if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n      { return this.readWord() }\n\n    return this.getTokenFromCode(code)\n  };\n\n  pp.fullCharCodeAt = function(pos) {\n    var code = this.input.charCodeAt(pos);\n    if (code <= 0xd7ff || code >= 0xdc00) { return code }\n    var next = this.input.charCodeAt(pos + 1);\n    return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\n  };\n\n  pp.fullCharCodeAtPos = function() {\n    return this.fullCharCodeAt(this.pos)\n  };\n\n  pp.skipBlockComment = function() {\n    var startLoc = this.options.onComment && this.curPosition();\n    var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n    if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n    this.pos = end + 2;\n    if (this.options.locations) {\n      for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) {\n        ++this.curLine;\n        pos = this.lineStart = nextBreak;\n      }\n    }\n    if (this.options.onComment)\n      { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n                             startLoc, this.curPosition()); }\n  };\n\n  pp.skipLineComment = function(startSkip) {\n    var start = this.pos;\n    var startLoc = this.options.onComment && this.curPosition();\n    var ch = this.input.charCodeAt(this.pos += startSkip);\n    while (this.pos < this.input.length && !isNewLine(ch)) {\n      ch = this.input.charCodeAt(++this.pos);\n    }\n    if (this.options.onComment)\n      { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n                             startLoc, this.curPosition()); }\n  };\n\n  // Called at the start of the parse and after every token. Skips\n  // whitespace and comments, and.\n\n  pp.skipSpace = function() {\n    loop: while (this.pos < this.input.length) {\n      var ch = this.input.charCodeAt(this.pos);\n      switch (ch) {\n      case 32: case 160: // ' '\n        ++this.pos;\n        break\n      case 13:\n        if (this.input.charCodeAt(this.pos + 1) === 10) {\n          ++this.pos;\n        }\n      case 10: case 8232: case 8233:\n        ++this.pos;\n        if (this.options.locations) {\n          ++this.curLine;\n          this.lineStart = this.pos;\n        }\n        break\n      case 47: // '/'\n        switch (this.input.charCodeAt(this.pos + 1)) {\n        case 42: // '*'\n          this.skipBlockComment();\n          break\n        case 47:\n          this.skipLineComment(2);\n          break\n        default:\n          break loop\n        }\n        break\n      default:\n        if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n          ++this.pos;\n        } else {\n          break loop\n        }\n      }\n    }\n  };\n\n  // Called at the end of every token. Sets `end`, `val`, and\n  // maintains `context` and `exprAllowed`, and skips the space after\n  // the token, so that the next one's `start` will point at the\n  // right position.\n\n  pp.finishToken = function(type, val) {\n    this.end = this.pos;\n    if (this.options.locations) { this.endLoc = this.curPosition(); }\n    var prevType = this.type;\n    this.type = type;\n    this.value = val;\n\n    this.updateContext(prevType);\n  };\n\n  // ### Token reading\n\n  // This is the function that is called to fetch the next token. It\n  // is somewhat obscure, because it works in character codes rather\n  // than characters, and because operator parsing has been inlined\n  // into it.\n  //\n  // All in the name of speed.\n  //\n  pp.readToken_dot = function() {\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next >= 48 && next <= 57) { return this.readNumber(true) }\n    var next2 = this.input.charCodeAt(this.pos + 2);\n    if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n      this.pos += 3;\n      return this.finishToken(types$1.ellipsis)\n    } else {\n      ++this.pos;\n      return this.finishToken(types$1.dot)\n    }\n  };\n\n  pp.readToken_slash = function() { // '/'\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n    if (next === 61) { return this.finishOp(types$1.assign, 2) }\n    return this.finishOp(types$1.slash, 1)\n  };\n\n  pp.readToken_mult_modulo_exp = function(code) { // '%*'\n    var next = this.input.charCodeAt(this.pos + 1);\n    var size = 1;\n    var tokentype = code === 42 ? types$1.star : types$1.modulo;\n\n    // exponentiation operator ** and **=\n    if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n      ++size;\n      tokentype = types$1.starstar;\n      next = this.input.charCodeAt(this.pos + 2);\n    }\n\n    if (next === 61) { return this.finishOp(types$1.assign, size + 1) }\n    return this.finishOp(tokentype, size)\n  };\n\n  pp.readToken_pipe_amp = function(code) { // '|&'\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === code) {\n      if (this.options.ecmaVersion >= 12) {\n        var next2 = this.input.charCodeAt(this.pos + 2);\n        if (next2 === 61) { return this.finishOp(types$1.assign, 3) }\n      }\n      return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2)\n    }\n    if (next === 61) { return this.finishOp(types$1.assign, 2) }\n    return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1)\n  };\n\n  pp.readToken_caret = function() { // '^'\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === 61) { return this.finishOp(types$1.assign, 2) }\n    return this.finishOp(types$1.bitwiseXOR, 1)\n  };\n\n  pp.readToken_plus_min = function(code) { // '+-'\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === code) {\n      if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n          (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n        // A `-->` line comment\n        this.skipLineComment(3);\n        this.skipSpace();\n        return this.nextToken()\n      }\n      return this.finishOp(types$1.incDec, 2)\n    }\n    if (next === 61) { return this.finishOp(types$1.assign, 2) }\n    return this.finishOp(types$1.plusMin, 1)\n  };\n\n  pp.readToken_lt_gt = function(code) { // '<>'\n    var next = this.input.charCodeAt(this.pos + 1);\n    var size = 1;\n    if (next === code) {\n      size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n      if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) }\n      return this.finishOp(types$1.bitShift, size)\n    }\n    if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n        this.input.charCodeAt(this.pos + 3) === 45) {\n      // `<!--`, an XML-style comment that should be interpreted as a line comment\n      this.skipLineComment(4);\n      this.skipSpace();\n      return this.nextToken()\n    }\n    if (next === 61) { size = 2; }\n    return this.finishOp(types$1.relational, size)\n  };\n\n  pp.readToken_eq_excl = function(code) { // '=!'\n    var next = this.input.charCodeAt(this.pos + 1);\n    if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n    if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n      this.pos += 2;\n      return this.finishToken(types$1.arrow)\n    }\n    return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1)\n  };\n\n  pp.readToken_question = function() { // '?'\n    var ecmaVersion = this.options.ecmaVersion;\n    if (ecmaVersion >= 11) {\n      var next = this.input.charCodeAt(this.pos + 1);\n      if (next === 46) {\n        var next2 = this.input.charCodeAt(this.pos + 2);\n        if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) }\n      }\n      if (next === 63) {\n        if (ecmaVersion >= 12) {\n          var next2$1 = this.input.charCodeAt(this.pos + 2);\n          if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) }\n        }\n        return this.finishOp(types$1.coalesce, 2)\n      }\n    }\n    return this.finishOp(types$1.question, 1)\n  };\n\n  pp.readToken_numberSign = function() { // '#'\n    var ecmaVersion = this.options.ecmaVersion;\n    var code = 35; // '#'\n    if (ecmaVersion >= 13) {\n      ++this.pos;\n      code = this.fullCharCodeAtPos();\n      if (isIdentifierStart(code, true) || code === 92 /* '\\' */) {\n        return this.finishToken(types$1.privateId, this.readWord1())\n      }\n    }\n\n    this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n  };\n\n  pp.getTokenFromCode = function(code) {\n    switch (code) {\n    // The interpretation of a dot depends on whether it is followed\n    // by a digit or another two dots.\n    case 46: // '.'\n      return this.readToken_dot()\n\n    // Punctuation tokens.\n    case 40: ++this.pos; return this.finishToken(types$1.parenL)\n    case 41: ++this.pos; return this.finishToken(types$1.parenR)\n    case 59: ++this.pos; return this.finishToken(types$1.semi)\n    case 44: ++this.pos; return this.finishToken(types$1.comma)\n    case 91: ++this.pos; return this.finishToken(types$1.bracketL)\n    case 93: ++this.pos; return this.finishToken(types$1.bracketR)\n    case 123: ++this.pos; return this.finishToken(types$1.braceL)\n    case 125: ++this.pos; return this.finishToken(types$1.braceR)\n    case 58: ++this.pos; return this.finishToken(types$1.colon)\n\n    case 96: // '`'\n      if (this.options.ecmaVersion < 6) { break }\n      ++this.pos;\n      return this.finishToken(types$1.backQuote)\n\n    case 48: // '0'\n      var next = this.input.charCodeAt(this.pos + 1);\n      if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n      if (this.options.ecmaVersion >= 6) {\n        if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n        if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n      }\n\n    // Anything else beginning with a digit is an integer, octal\n    // number, or float.\n    case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n      return this.readNumber(false)\n\n    // Quotes produce strings.\n    case 34: case 39: // '\"', \"'\"\n      return this.readString(code)\n\n    // Operators are parsed inline in tiny state machines. '=' (61) is\n    // often referred to. `finishOp` simply skips the amount of\n    // characters it is given as second argument, and returns a token\n    // of the type given by its first argument.\n    case 47: // '/'\n      return this.readToken_slash()\n\n    case 37: case 42: // '%*'\n      return this.readToken_mult_modulo_exp(code)\n\n    case 124: case 38: // '|&'\n      return this.readToken_pipe_amp(code)\n\n    case 94: // '^'\n      return this.readToken_caret()\n\n    case 43: case 45: // '+-'\n      return this.readToken_plus_min(code)\n\n    case 60: case 62: // '<>'\n      return this.readToken_lt_gt(code)\n\n    case 61: case 33: // '=!'\n      return this.readToken_eq_excl(code)\n\n    case 63: // '?'\n      return this.readToken_question()\n\n    case 126: // '~'\n      return this.finishOp(types$1.prefix, 1)\n\n    case 35: // '#'\n      return this.readToken_numberSign()\n    }\n\n    this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n  };\n\n  pp.finishOp = function(type, size) {\n    var str = this.input.slice(this.pos, this.pos + size);\n    this.pos += size;\n    return this.finishToken(type, str)\n  };\n\n  pp.readRegexp = function() {\n    var escaped, inClass, start = this.pos;\n    for (;;) {\n      if (this.pos >= this.input.length) { this.raise(start, \"Unterminated regular expression\"); }\n      var ch = this.input.charAt(this.pos);\n      if (lineBreak.test(ch)) { this.raise(start, \"Unterminated regular expression\"); }\n      if (!escaped) {\n        if (ch === \"[\") { inClass = true; }\n        else if (ch === \"]\" && inClass) { inClass = false; }\n        else if (ch === \"/\" && !inClass) { break }\n        escaped = ch === \"\\\\\";\n      } else { escaped = false; }\n      ++this.pos;\n    }\n    var pattern = this.input.slice(start, this.pos);\n    ++this.pos;\n    var flagsStart = this.pos;\n    var flags = this.readWord1();\n    if (this.containsEsc) { this.unexpected(flagsStart); }\n\n    // Validate pattern\n    var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n    state.reset(start, pattern, flags);\n    this.validateRegExpFlags(state);\n    this.validateRegExpPattern(state);\n\n    // Create Literal#value property value.\n    var value = null;\n    try {\n      value = new RegExp(pattern, flags);\n    } catch (e) {\n      // ESTree requires null if it failed to instantiate RegExp object.\n      // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n    }\n\n    return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value})\n  };\n\n  // Read an integer in the given radix. Return null if zero digits\n  // were read, the integer value otherwise. When `len` is given, this\n  // will return `null` unless the integer has exactly `len` digits.\n\n  pp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {\n    // `len` is used for character escape sequences. In that case, disallow separators.\n    var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined;\n\n    // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b)\n    // and isn't fraction part nor exponent part. In that case, if the first digit\n    // is zero then disallow separators.\n    var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48;\n\n    var start = this.pos, total = 0, lastCode = 0;\n    for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) {\n      var code = this.input.charCodeAt(this.pos), val = (void 0);\n\n      if (allowSeparators && code === 95) {\n        if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed in legacy octal numeric literals\"); }\n        if (lastCode === 95) { this.raiseRecoverable(this.pos, \"Numeric separator must be exactly one underscore\"); }\n        if (i === 0) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed at the first of digits\"); }\n        lastCode = code;\n        continue\n      }\n\n      if (code >= 97) { val = code - 97 + 10; } // a\n      else if (code >= 65) { val = code - 65 + 10; } // A\n      else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n      else { val = Infinity; }\n      if (val >= radix) { break }\n      lastCode = code;\n      total = total * radix + val;\n    }\n\n    if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, \"Numeric separator is not allowed at the last of digits\"); }\n    if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n    return total\n  };\n\n  function stringToNumber(str, isLegacyOctalNumericLiteral) {\n    if (isLegacyOctalNumericLiteral) {\n      return parseInt(str, 8)\n    }\n\n    // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value.\n    return parseFloat(str.replace(/_/g, \"\"))\n  }\n\n  function stringToBigInt(str) {\n    if (typeof BigInt !== \"function\") {\n      return null\n    }\n\n    // `BigInt(value)` throws syntax error if the string contains numeric separators.\n    return BigInt(str.replace(/_/g, \"\"))\n  }\n\n  pp.readRadixNumber = function(radix) {\n    var start = this.pos;\n    this.pos += 2; // 0x\n    var val = this.readInt(radix);\n    if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n    if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {\n      val = stringToBigInt(this.input.slice(start, this.pos));\n      ++this.pos;\n    } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n    return this.finishToken(types$1.num, val)\n  };\n\n  // Read an integer, octal integer, or floating-point number.\n\n  pp.readNumber = function(startsWithDot) {\n    var start = this.pos;\n    if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, \"Invalid number\"); }\n    var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n    if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n    var next = this.input.charCodeAt(this.pos);\n    if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {\n      var val$1 = stringToBigInt(this.input.slice(start, this.pos));\n      ++this.pos;\n      if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n      return this.finishToken(types$1.num, val$1)\n    }\n    if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n    if (next === 46 && !octal) { // '.'\n      ++this.pos;\n      this.readInt(10);\n      next = this.input.charCodeAt(this.pos);\n    }\n    if ((next === 69 || next === 101) && !octal) { // 'eE'\n      next = this.input.charCodeAt(++this.pos);\n      if (next === 43 || next === 45) { ++this.pos; } // '+-'\n      if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n    }\n    if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n    var val = stringToNumber(this.input.slice(start, this.pos), octal);\n    return this.finishToken(types$1.num, val)\n  };\n\n  // Read a string value, interpreting backslash-escapes.\n\n  pp.readCodePoint = function() {\n    var ch = this.input.charCodeAt(this.pos), code;\n\n    if (ch === 123) { // '{'\n      if (this.options.ecmaVersion < 6) { this.unexpected(); }\n      var codePos = ++this.pos;\n      code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n      ++this.pos;\n      if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n    } else {\n      code = this.readHexChar(4);\n    }\n    return code\n  };\n\n  pp.readString = function(quote) {\n    var out = \"\", chunkStart = ++this.pos;\n    for (;;) {\n      if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated string constant\"); }\n      var ch = this.input.charCodeAt(this.pos);\n      if (ch === quote) { break }\n      if (ch === 92) { // '\\'\n        out += this.input.slice(chunkStart, this.pos);\n        out += this.readEscapedChar(false);\n        chunkStart = this.pos;\n      } else if (ch === 0x2028 || ch === 0x2029) {\n        if (this.options.ecmaVersion < 10) { this.raise(this.start, \"Unterminated string constant\"); }\n        ++this.pos;\n        if (this.options.locations) {\n          this.curLine++;\n          this.lineStart = this.pos;\n        }\n      } else {\n        if (isNewLine(ch)) { this.raise(this.start, \"Unterminated string constant\"); }\n        ++this.pos;\n      }\n    }\n    out += this.input.slice(chunkStart, this.pos++);\n    return this.finishToken(types$1.string, out)\n  };\n\n  // Reads template string tokens.\n\n  var INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\n  pp.tryReadTemplateToken = function() {\n    this.inTemplateElement = true;\n    try {\n      this.readTmplToken();\n    } catch (err) {\n      if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n        this.readInvalidTemplateToken();\n      } else {\n        throw err\n      }\n    }\n\n    this.inTemplateElement = false;\n  };\n\n  pp.invalidStringToken = function(position, message) {\n    if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n      throw INVALID_TEMPLATE_ESCAPE_ERROR\n    } else {\n      this.raise(position, message);\n    }\n  };\n\n  pp.readTmplToken = function() {\n    var out = \"\", chunkStart = this.pos;\n    for (;;) {\n      if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated template\"); }\n      var ch = this.input.charCodeAt(this.pos);\n      if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n        if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) {\n          if (ch === 36) {\n            this.pos += 2;\n            return this.finishToken(types$1.dollarBraceL)\n          } else {\n            ++this.pos;\n            return this.finishToken(types$1.backQuote)\n          }\n        }\n        out += this.input.slice(chunkStart, this.pos);\n        return this.finishToken(types$1.template, out)\n      }\n      if (ch === 92) { // '\\'\n        out += this.input.slice(chunkStart, this.pos);\n        out += this.readEscapedChar(true);\n        chunkStart = this.pos;\n      } else if (isNewLine(ch)) {\n        out += this.input.slice(chunkStart, this.pos);\n        ++this.pos;\n        switch (ch) {\n        case 13:\n          if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; }\n        case 10:\n          out += \"\\n\";\n          break\n        default:\n          out += String.fromCharCode(ch);\n          break\n        }\n        if (this.options.locations) {\n          ++this.curLine;\n          this.lineStart = this.pos;\n        }\n        chunkStart = this.pos;\n      } else {\n        ++this.pos;\n      }\n    }\n  };\n\n  // Reads a template token to search for the end, without validating any escape sequences\n  pp.readInvalidTemplateToken = function() {\n    for (; this.pos < this.input.length; this.pos++) {\n      switch (this.input[this.pos]) {\n      case \"\\\\\":\n        ++this.pos;\n        break\n\n      case \"$\":\n        if (this.input[this.pos + 1] !== \"{\") { break }\n        // fall through\n      case \"`\":\n        return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos))\n\n      case \"\\r\":\n        if (this.input[this.pos + 1] === \"\\n\") { ++this.pos; }\n        // fall through\n      case \"\\n\": case \"\\u2028\": case \"\\u2029\":\n        ++this.curLine;\n        this.lineStart = this.pos + 1;\n        break\n      }\n    }\n    this.raise(this.start, \"Unterminated template\");\n  };\n\n  // Used to read escaped characters\n\n  pp.readEscapedChar = function(inTemplate) {\n    var ch = this.input.charCodeAt(++this.pos);\n    ++this.pos;\n    switch (ch) {\n    case 110: return \"\\n\" // 'n' -> '\\n'\n    case 114: return \"\\r\" // 'r' -> '\\r'\n    case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n    case 117: return codePointToString(this.readCodePoint()) // 'u'\n    case 116: return \"\\t\" // 't' -> '\\t'\n    case 98: return \"\\b\" // 'b' -> '\\b'\n    case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n    case 102: return \"\\f\" // 'f' -> '\\f'\n    case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n    case 10: // ' \\n'\n      if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n      return \"\"\n    case 56:\n    case 57:\n      if (this.strict) {\n        this.invalidStringToken(\n          this.pos - 1,\n          \"Invalid escape sequence\"\n        );\n      }\n      if (inTemplate) {\n        var codePos = this.pos - 1;\n\n        this.invalidStringToken(\n          codePos,\n          \"Invalid escape sequence in template string\"\n        );\n      }\n    default:\n      if (ch >= 48 && ch <= 55) {\n        var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n        var octal = parseInt(octalStr, 8);\n        if (octal > 255) {\n          octalStr = octalStr.slice(0, -1);\n          octal = parseInt(octalStr, 8);\n        }\n        this.pos += octalStr.length - 1;\n        ch = this.input.charCodeAt(this.pos);\n        if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n          this.invalidStringToken(\n            this.pos - 1 - octalStr.length,\n            inTemplate\n              ? \"Octal literal in template string\"\n              : \"Octal literal in strict mode\"\n          );\n        }\n        return String.fromCharCode(octal)\n      }\n      if (isNewLine(ch)) {\n        // Unicode new line characters after \\ get removed from output in both\n        // template literals and strings\n        if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n        return \"\"\n      }\n      return String.fromCharCode(ch)\n    }\n  };\n\n  // Used to read character escape sequences ('\\x', '\\u', '\\U').\n\n  pp.readHexChar = function(len) {\n    var codePos = this.pos;\n    var n = this.readInt(16, len);\n    if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n    return n\n  };\n\n  // Read an identifier, and return it as a string. Sets `this.containsEsc`\n  // to whether the word contained a '\\u' escape.\n  //\n  // Incrementally adds only escaped chars, adding other chunks as-is\n  // as a micro-optimization.\n\n  pp.readWord1 = function() {\n    this.containsEsc = false;\n    var word = \"\", first = true, chunkStart = this.pos;\n    var astral = this.options.ecmaVersion >= 6;\n    while (this.pos < this.input.length) {\n      var ch = this.fullCharCodeAtPos();\n      if (isIdentifierChar(ch, astral)) {\n        this.pos += ch <= 0xffff ? 1 : 2;\n      } else if (ch === 92) { // \"\\\"\n        this.containsEsc = true;\n        word += this.input.slice(chunkStart, this.pos);\n        var escStart = this.pos;\n        if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n          { this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n        ++this.pos;\n        var esc = this.readCodePoint();\n        if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n          { this.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n        word += codePointToString(esc);\n        chunkStart = this.pos;\n      } else {\n        break\n      }\n      first = false;\n    }\n    return word + this.input.slice(chunkStart, this.pos)\n  };\n\n  // Read an identifier or keyword token. Will check for reserved\n  // words when necessary.\n\n  pp.readWord = function() {\n    var word = this.readWord1();\n    var type = types$1.name;\n    if (this.keywords.test(word)) {\n      type = keywords[word];\n    }\n    return this.finishToken(type, word)\n  };\n\n  // Acorn is a tiny, fast JavaScript parser written in JavaScript.\n  //\n  // Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n  // various contributors and released under an MIT license.\n  //\n  // Git repositories for Acorn are available at\n  //\n  //     http://marijnhaverbeke.nl/git/acorn\n  //     https://github.com/acornjs/acorn.git\n  //\n  // Please use the [github bug tracker][ghbt] to report issues.\n  //\n  // [ghbt]: https://github.com/acornjs/acorn/issues\n\n\n  var version = \"8.17.0\";\n\n  Parser.acorn = {\n    Parser: Parser,\n    version: version,\n    defaultOptions: defaultOptions,\n    Position: Position,\n    SourceLocation: SourceLocation,\n    getLineInfo: getLineInfo,\n    Node: Node,\n    TokenType: TokenType,\n    tokTypes: types$1,\n    keywordTypes: keywords,\n    TokContext: TokContext,\n    tokContexts: types,\n    isIdentifierChar: isIdentifierChar,\n    isIdentifierStart: isIdentifierStart,\n    Token: Token,\n    isNewLine: isNewLine,\n    lineBreak: lineBreak,\n    lineBreakG: lineBreakG,\n    nonASCIIwhitespace: nonASCIIwhitespace\n  };\n\n  // The main exported interface (under `self.acorn` when in the\n  // browser) is a `parse` function that takes a code string and returns\n  // an abstract syntax tree as specified by the [ESTree spec][estree].\n  //\n  // [estree]: https://github.com/estree/estree\n\n  function parse(input, options) {\n    return Parser.parse(input, options)\n  }\n\n  // This function tries to parse a single expression at a given\n  // offset in a string. Useful for parsing mixed-language formats\n  // that embed JavaScript expressions.\n\n  function parseExpressionAt(input, pos, options) {\n    return Parser.parseExpressionAt(input, pos, options)\n  }\n\n  // Acorn is organized as a tokenizer and a recursive-descent parser.\n  // The `tokenizer` export provides an interface to the tokenizer.\n\n  function tokenizer(input, options) {\n    return Parser.tokenizer(input, options)\n  }\n\n  exports.Node = Node;\n  exports.Parser = Parser;\n  exports.Position = Position;\n  exports.SourceLocation = SourceLocation;\n  exports.TokContext = TokContext;\n  exports.Token = Token;\n  exports.TokenType = TokenType;\n  exports.defaultOptions = defaultOptions;\n  exports.getLineInfo = getLineInfo;\n  exports.isIdentifierChar = isIdentifierChar;\n  exports.isIdentifierStart = isIdentifierStart;\n  exports.isNewLine = isNewLine;\n  exports.keywordTypes = keywords;\n  exports.lineBreak = lineBreak;\n  exports.lineBreakG = lineBreakG;\n  exports.nonASCIIwhitespace = nonASCIIwhitespace;\n  exports.parse = parse;\n  exports.parseExpressionAt = parseExpressionAt;\n  exports.tokContexts = types;\n  exports.tokTypes = types$1;\n  exports.tokenizer = tokenizer;\n  exports.version = version;\n\n}));\n","'use strict';\n\nconst XHTMLEntities = require('./xhtml');\n\nconst hexNumber = /^[\\da-fA-F]+$/;\nconst decimalNumber = /^\\d+$/;\n\n// The map to `acorn-jsx` tokens from `acorn` namespace objects.\nconst acornJsxMap = new WeakMap();\n\n// Get the original tokens for the given `acorn` namespace object.\nfunction getJsxTokens(acorn) {\n  acorn = acorn.Parser.acorn || acorn;\n  let acornJsx = acornJsxMap.get(acorn);\n  if (!acornJsx) {\n    const tt = acorn.tokTypes;\n    const TokContext = acorn.TokContext;\n    const TokenType = acorn.TokenType;\n    const tc_oTag = new TokContext('<tag', false);\n    const tc_cTag = new TokContext('</tag', false);\n    const tc_expr = new TokContext('<tag>...</tag>', true, true);\n    const tokContexts = {\n      tc_oTag: tc_oTag,\n      tc_cTag: tc_cTag,\n      tc_expr: tc_expr\n    };\n    const tokTypes = {\n      jsxName: new TokenType('jsxName'),\n      jsxText: new TokenType('jsxText', {beforeExpr: true}),\n      jsxTagStart: new TokenType('jsxTagStart', {startsExpr: true}),\n      jsxTagEnd: new TokenType('jsxTagEnd')\n    };\n\n    tokTypes.jsxTagStart.updateContext = function() {\n      this.context.push(tc_expr); // treat as beginning of JSX expression\n      this.context.push(tc_oTag); // start opening tag context\n      this.exprAllowed = false;\n    };\n    tokTypes.jsxTagEnd.updateContext = function(prevType) {\n      let out = this.context.pop();\n      if (out === tc_oTag && prevType === tt.slash || out === tc_cTag) {\n        this.context.pop();\n        this.exprAllowed = this.curContext() === tc_expr;\n      } else {\n        this.exprAllowed = true;\n      }\n    };\n\n    acornJsx = { tokContexts: tokContexts, tokTypes: tokTypes };\n    acornJsxMap.set(acorn, acornJsx);\n  }\n\n  return acornJsx;\n}\n\n// Transforms JSX element name to string.\n\nfunction getQualifiedJSXName(object) {\n  if (!object)\n    return object;\n\n  if (object.type === 'JSXIdentifier')\n    return object.name;\n\n  if (object.type === 'JSXNamespacedName')\n    return object.namespace.name + ':' + object.name.name;\n\n  if (object.type === 'JSXMemberExpression')\n    return getQualifiedJSXName(object.object) + '.' +\n    getQualifiedJSXName(object.property);\n}\n\nmodule.exports = function(options) {\n  options = options || {};\n  return function(Parser) {\n    return plugin({\n      allowNamespaces: options.allowNamespaces !== false,\n      allowNamespacedObjects: !!options.allowNamespacedObjects\n    }, Parser);\n  };\n};\n\n// This is `tokTypes` of the peer dep.\n// This can be different instances from the actual `tokTypes` this plugin uses.\nObject.defineProperty(module.exports, \"tokTypes\", {\n  get: function get_tokTypes() {\n    return getJsxTokens(require(\"acorn\")).tokTypes;\n  },\n  configurable: true,\n  enumerable: true\n});\n\nfunction plugin(options, Parser) {\n  const acorn = Parser.acorn || require(\"acorn\");\n  const acornJsx = getJsxTokens(acorn);\n  const tt = acorn.tokTypes;\n  const tok = acornJsx.tokTypes;\n  const tokContexts = acorn.tokContexts;\n  const tc_oTag = acornJsx.tokContexts.tc_oTag;\n  const tc_cTag = acornJsx.tokContexts.tc_cTag;\n  const tc_expr = acornJsx.tokContexts.tc_expr;\n  const isNewLine = acorn.isNewLine;\n  const isIdentifierStart = acorn.isIdentifierStart;\n  const isIdentifierChar = acorn.isIdentifierChar;\n\n  return class extends Parser {\n    // Expose actual `tokTypes` and `tokContexts` to other plugins.\n    static get acornJsx() {\n      return acornJsx;\n    }\n\n    // Reads inline JSX contents token.\n    jsx_readToken() {\n      let out = '', chunkStart = this.pos;\n      for (;;) {\n        if (this.pos >= this.input.length)\n          this.raise(this.start, 'Unterminated JSX contents');\n        let ch = this.input.charCodeAt(this.pos);\n\n        switch (ch) {\n        case 60: // '<'\n        case 123: // '{'\n          if (this.pos === this.start) {\n            if (ch === 60 && this.exprAllowed) {\n              ++this.pos;\n              return this.finishToken(tok.jsxTagStart);\n            }\n            return this.getTokenFromCode(ch);\n          }\n          out += this.input.slice(chunkStart, this.pos);\n          return this.finishToken(tok.jsxText, out);\n\n        case 38: // '&'\n          out += this.input.slice(chunkStart, this.pos);\n          out += this.jsx_readEntity();\n          chunkStart = this.pos;\n          break;\n\n        case 62: // '>'\n        case 125: // '}'\n          this.raise(\n            this.pos,\n            \"Unexpected token `\" + this.input[this.pos] + \"`. Did you mean `\" +\n              (ch === 62 ? \"&gt;\" : \"&rbrace;\") + \"` or \" + \"`{\\\"\" + this.input[this.pos] + \"\\\"}\" + \"`?\"\n          );\n\n        default:\n          if (isNewLine(ch)) {\n            out += this.input.slice(chunkStart, this.pos);\n            out += this.jsx_readNewLine(true);\n            chunkStart = this.pos;\n          } else {\n            ++this.pos;\n          }\n        }\n      }\n    }\n\n    jsx_readNewLine(normalizeCRLF) {\n      let ch = this.input.charCodeAt(this.pos);\n      let out;\n      ++this.pos;\n      if (ch === 13 && this.input.charCodeAt(this.pos) === 10) {\n        ++this.pos;\n        out = normalizeCRLF ? '\\n' : '\\r\\n';\n      } else {\n        out = String.fromCharCode(ch);\n      }\n      if (this.options.locations) {\n        ++this.curLine;\n        this.lineStart = this.pos;\n      }\n\n      return out;\n    }\n\n    jsx_readString(quote) {\n      let out = '', chunkStart = ++this.pos;\n      for (;;) {\n        if (this.pos >= this.input.length)\n          this.raise(this.start, 'Unterminated string constant');\n        let ch = this.input.charCodeAt(this.pos);\n        if (ch === quote) break;\n        if (ch === 38) { // '&'\n          out += this.input.slice(chunkStart, this.pos);\n          out += this.jsx_readEntity();\n          chunkStart = this.pos;\n        } else if (isNewLine(ch)) {\n          out += this.input.slice(chunkStart, this.pos);\n          out += this.jsx_readNewLine(false);\n          chunkStart = this.pos;\n        } else {\n          ++this.pos;\n        }\n      }\n      out += this.input.slice(chunkStart, this.pos++);\n      return this.finishToken(tt.string, out);\n    }\n\n    jsx_readEntity() {\n      let str = '', count = 0, entity;\n      let ch = this.input[this.pos];\n      if (ch !== '&')\n        this.raise(this.pos, 'Entity must start with an ampersand');\n      let startPos = ++this.pos;\n      while (this.pos < this.input.length && count++ < 10) {\n        ch = this.input[this.pos++];\n        if (ch === ';') {\n          if (str[0] === '#') {\n            if (str[1] === 'x') {\n              str = str.substr(2);\n              if (hexNumber.test(str))\n                entity = String.fromCharCode(parseInt(str, 16));\n            } else {\n              str = str.substr(1);\n              if (decimalNumber.test(str))\n                entity = String.fromCharCode(parseInt(str, 10));\n            }\n          } else {\n            entity = XHTMLEntities[str];\n          }\n          break;\n        }\n        str += ch;\n      }\n      if (!entity) {\n        this.pos = startPos;\n        return '&';\n      }\n      return entity;\n    }\n\n    // Read a JSX identifier (valid tag or attribute name).\n    //\n    // Optimized version since JSX identifiers can't contain\n    // escape characters and so can be read as single slice.\n    // Also assumes that first character was already checked\n    // by isIdentifierStart in readToken.\n\n    jsx_readWord() {\n      let ch, start = this.pos;\n      do {\n        ch = this.input.charCodeAt(++this.pos);\n      } while (isIdentifierChar(ch) || ch === 45); // '-'\n      return this.finishToken(tok.jsxName, this.input.slice(start, this.pos));\n    }\n\n    // Parse next token as JSX identifier\n\n    jsx_parseIdentifier() {\n      let node = this.startNode();\n      if (this.type === tok.jsxName)\n        node.name = this.value;\n      else if (this.type.keyword)\n        node.name = this.type.keyword;\n      else\n        this.unexpected();\n      this.next();\n      return this.finishNode(node, 'JSXIdentifier');\n    }\n\n    // Parse namespaced identifier.\n\n    jsx_parseNamespacedName() {\n      let startPos = this.start, startLoc = this.startLoc;\n      let name = this.jsx_parseIdentifier();\n      if (!options.allowNamespaces || !this.eat(tt.colon)) return name;\n      var node = this.startNodeAt(startPos, startLoc);\n      node.namespace = name;\n      node.name = this.jsx_parseIdentifier();\n      return this.finishNode(node, 'JSXNamespacedName');\n    }\n\n    // Parses element name in any form - namespaced, member\n    // or single identifier.\n\n    jsx_parseElementName() {\n      if (this.type === tok.jsxTagEnd) return '';\n      let startPos = this.start, startLoc = this.startLoc;\n      let node = this.jsx_parseNamespacedName();\n      if (this.type === tt.dot && node.type === 'JSXNamespacedName' && !options.allowNamespacedObjects) {\n        this.unexpected();\n      }\n      while (this.eat(tt.dot)) {\n        let newNode = this.startNodeAt(startPos, startLoc);\n        newNode.object = node;\n        newNode.property = this.jsx_parseIdentifier();\n        node = this.finishNode(newNode, 'JSXMemberExpression');\n      }\n      return node;\n    }\n\n    // Parses any type of JSX attribute value.\n\n    jsx_parseAttributeValue() {\n      switch (this.type) {\n      case tt.braceL:\n        let node = this.jsx_parseExpressionContainer();\n        if (node.expression.type === 'JSXEmptyExpression')\n          this.raise(node.start, 'JSX attributes must only be assigned a non-empty expression');\n        return node;\n\n      case tok.jsxTagStart:\n      case tt.string:\n        return this.parseExprAtom();\n\n      default:\n        this.raise(this.start, 'JSX value should be either an expression or a quoted JSX text');\n      }\n    }\n\n    // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n    // and so it should start at the end of last read token (left brace) and finish\n    // at the beginning of the next one (right brace).\n\n    jsx_parseEmptyExpression() {\n      let node = this.startNodeAt(this.lastTokEnd, this.lastTokEndLoc);\n      return this.finishNodeAt(node, 'JSXEmptyExpression', this.start, this.startLoc);\n    }\n\n    // Parses JSX expression enclosed into curly brackets.\n\n    jsx_parseExpressionContainer() {\n      let node = this.startNode();\n      this.next();\n      node.expression = this.type === tt.braceR\n        ? this.jsx_parseEmptyExpression()\n        : this.parseExpression();\n      this.expect(tt.braceR);\n      return this.finishNode(node, 'JSXExpressionContainer');\n    }\n\n    // Parses following JSX attribute name-value pair.\n\n    jsx_parseAttribute() {\n      let node = this.startNode();\n      if (this.eat(tt.braceL)) {\n        this.expect(tt.ellipsis);\n        node.argument = this.parseMaybeAssign();\n        this.expect(tt.braceR);\n        return this.finishNode(node, 'JSXSpreadAttribute');\n      }\n      node.name = this.jsx_parseNamespacedName();\n      node.value = this.eat(tt.eq) ? this.jsx_parseAttributeValue() : null;\n      return this.finishNode(node, 'JSXAttribute');\n    }\n\n    // Parses JSX opening tag starting after '<'.\n\n    jsx_parseOpeningElementAt(startPos, startLoc) {\n      let node = this.startNodeAt(startPos, startLoc);\n      node.attributes = [];\n      let nodeName = this.jsx_parseElementName();\n      if (nodeName) node.name = nodeName;\n      while (this.type !== tt.slash && this.type !== tok.jsxTagEnd)\n        node.attributes.push(this.jsx_parseAttribute());\n      node.selfClosing = this.eat(tt.slash);\n      this.expect(tok.jsxTagEnd);\n      return this.finishNode(node, nodeName ? 'JSXOpeningElement' : 'JSXOpeningFragment');\n    }\n\n    // Parses JSX closing tag starting after '</'.\n\n    jsx_parseClosingElementAt(startPos, startLoc) {\n      let node = this.startNodeAt(startPos, startLoc);\n      let nodeName = this.jsx_parseElementName();\n      if (nodeName) node.name = nodeName;\n      this.expect(tok.jsxTagEnd);\n      return this.finishNode(node, nodeName ? 'JSXClosingElement' : 'JSXClosingFragment');\n    }\n\n    // Parses entire JSX element, including it's opening tag\n    // (starting after '<'), attributes, contents and closing tag.\n\n    jsx_parseElementAt(startPos, startLoc) {\n      let node = this.startNodeAt(startPos, startLoc);\n      let children = [];\n      let openingElement = this.jsx_parseOpeningElementAt(startPos, startLoc);\n      let closingElement = null;\n\n      if (!openingElement.selfClosing) {\n        contents: for (;;) {\n          switch (this.type) {\n          case tok.jsxTagStart:\n            startPos = this.start; startLoc = this.startLoc;\n            this.next();\n            if (this.eat(tt.slash)) {\n              closingElement = this.jsx_parseClosingElementAt(startPos, startLoc);\n              break contents;\n            }\n            children.push(this.jsx_parseElementAt(startPos, startLoc));\n            break;\n\n          case tok.jsxText:\n            children.push(this.parseExprAtom());\n            break;\n\n          case tt.braceL:\n            children.push(this.jsx_parseExpressionContainer());\n            break;\n\n          default:\n            this.unexpected();\n          }\n        }\n        if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {\n          this.raise(\n            closingElement.start,\n            'Expected corresponding JSX closing tag for <' + getQualifiedJSXName(openingElement.name) + '>');\n        }\n      }\n      let fragmentOrElement = openingElement.name ? 'Element' : 'Fragment';\n\n      node['opening' + fragmentOrElement] = openingElement;\n      node['closing' + fragmentOrElement] = closingElement;\n      node.children = children;\n      if (this.type === tt.relational && this.value === \"<\") {\n        this.raise(this.start, \"Adjacent JSX elements must be wrapped in an enclosing tag\");\n      }\n      return this.finishNode(node, 'JSX' + fragmentOrElement);\n    }\n\n    // Parse JSX text\n\n    jsx_parseText() {\n      let node = this.parseLiteral(this.value);\n      node.type = \"JSXText\";\n      return node;\n    }\n\n    // Parses entire JSX element from current position.\n\n    jsx_parseElement() {\n      let startPos = this.start, startLoc = this.startLoc;\n      this.next();\n      return this.jsx_parseElementAt(startPos, startLoc);\n    }\n\n    parseExprAtom(refShortHandDefaultPos) {\n      if (this.type === tok.jsxText)\n        return this.jsx_parseText();\n      else if (this.type === tok.jsxTagStart)\n        return this.jsx_parseElement();\n      else\n        return super.parseExprAtom(refShortHandDefaultPos);\n    }\n\n    readToken(code) {\n      let context = this.curContext();\n\n      if (context === tc_expr) return this.jsx_readToken();\n\n      if (context === tc_oTag || context === tc_cTag) {\n        if (isIdentifierStart(code)) return this.jsx_readWord();\n\n        if (code == 62) {\n          ++this.pos;\n          return this.finishToken(tok.jsxTagEnd);\n        }\n\n        if ((code === 34 || code === 39) && context == tc_oTag)\n          return this.jsx_readString(code);\n      }\n\n      if (code === 60 && this.exprAllowed && this.input.charCodeAt(this.pos + 1) !== 33) {\n        ++this.pos;\n        return this.finishToken(tok.jsxTagStart);\n      }\n      return super.readToken(code);\n    }\n\n    updateContext(prevType) {\n      if (this.type == tt.braceL) {\n        var curContext = this.curContext();\n        if (curContext == tc_oTag) this.context.push(tokContexts.b_expr);\n        else if (curContext == tc_expr) this.context.push(tokContexts.b_tmpl);\n        else super.updateContext(prevType);\n        this.exprAllowed = true;\n      } else if (this.type === tt.slash && prevType === tok.jsxTagStart) {\n        this.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore\n        this.context.push(tc_cTag); // reconsider as closing tag context\n        this.exprAllowed = false;\n      } else {\n        return super.updateContext(prevType);\n      }\n    }\n  };\n}\n","// Rollup polyfill that lazy-loads @rollup/browser from CDN\r\n\r\nimport * as acorn from \"acorn\";\r\nimport acornJsx from \"acorn-jsx\";\r\nimport {\r\n  CDN_ROLLUP_BROWSER,\r\n  PINNED_ROLLUP_BROWSER,\r\n  cdnImport,\r\n} from \"../constants/cdn-urls\";\r\n\r\n// acorn parser extended with JSX support\r\nconst acornJsxParser = (acorn.Parser as any).extend(acornJsx());\r\n\r\nlet cachedRollup: unknown = null;\r\nlet loadingPromise: Promise<unknown> | null = null;\r\n\r\n// injected by the script engine so bundle.write() can write to the VFS\r\nlet _vfsMkdirSync: ((path: string, opts?: { recursive?: boolean }) => void) | null = null;\r\nlet _vfsWriteFileSync: ((path: string, data: string | Uint8Array) => void) | null = null;\r\n\r\nexport function setVFSBridge(\r\n  mkdirSync: (path: string, opts?: { recursive?: boolean }) => void,\r\n  writeFileSync: (path: string, data: string | Uint8Array) => void,\r\n): void {\r\n  _vfsMkdirSync = mkdirSync;\r\n  _vfsWriteFileSync = writeFileSync;\r\n}\r\n\r\nasync function ensureRollup(): Promise<unknown> {\r\n  if (cachedRollup) return cachedRollup;\r\n  if (loadingPromise) return loadingPromise;\r\n\r\n  loadingPromise = (async () => {\r\n    try {\r\n      const mod = await cdnImport(CDN_ROLLUP_BROWSER);\r\n      cachedRollup = mod;\r\n      return mod;\r\n    } catch (err) {\r\n      loadingPromise = null;\r\n      throw new Error(\r\n        `rollup: failed to load @rollup/browser from CDN -- ${err}`,\r\n      );\r\n    }\r\n  })();\r\n\r\n  return loadingPromise;\r\n}\r\n\r\nexport const VERSION: string = PINNED_ROLLUP_BROWSER;\r\n\r\n// @rollup/browser blocks fs access in bundle.write() so we intercept it,\r\n// call generate() instead, and write the output to the VFS ourselves\r\nexport async function rollup(inputOptions: unknown): Promise<unknown> {\r\n  const r = (await ensureRollup()) as {\r\n    rollup: (o: unknown) => Promise<unknown>;\r\n  };\r\n  const bundle = (await r.rollup(inputOptions)) as any;\r\n\r\n  bundle.write = async function (outputOptions: any) {\r\n    const result = await bundle.generate(outputOptions);\r\n\r\n    const dir = outputOptions?.dir || \"dist\";\r\n    if (!_vfsMkdirSync || !_vfsWriteFileSync) {\r\n      throw new Error(\"rollup: VFS bridge not set up\");\r\n    }\r\n    const mkdirSync = _vfsMkdirSync;\r\n    const writeFileSync = _vfsWriteFileSync;\r\n\r\n    try {\r\n      mkdirSync(dir, { recursive: true });\r\n    } catch { /* already exists */ }\r\n\r\n    for (const chunk of result.output) {\r\n      const filePath = dir + \"/\" + chunk.fileName;\r\n      const fileDir = filePath.substring(0, filePath.lastIndexOf(\"/\"));\r\n      if (fileDir && fileDir !== dir) {\r\n        try {\r\n          mkdirSync(fileDir, { recursive: true });\r\n        } catch { /* already exists */ }\r\n      }\r\n\r\n      if (chunk.type === \"chunk\") {\r\n        writeFileSync(filePath, chunk.code);\r\n        if (chunk.map) {\r\n          writeFileSync(filePath + \".map\", chunk.map.toString());\r\n        }\r\n      } else if (chunk.type === \"asset\") {\r\n        writeFileSync(filePath, chunk.source);\r\n      }\r\n    }\r\n\r\n    return result;\r\n  };\r\n\r\n  return bundle;\r\n}\r\n\r\nexport async function watch(watchOptions: unknown): Promise<unknown> {\r\n  const r = (await ensureRollup()) as { watch: (o: unknown) => unknown };\r\n  return r.watch(watchOptions);\r\n}\r\n\r\nexport function defineConfig<T>(config: T): T {\r\n  return config;\r\n}\r\n\r\n// falls back to acorn-jsx if plain acorn fails (e.g. JSX in source)\r\nexport function parseAst(\r\n  source: string,\r\n  opts?: { allowReturnOutsideFunction?: boolean; jsx?: boolean },\r\n): unknown {\r\n  const parseOpts = {\r\n    ecmaVersion: \"latest\" as const,\r\n    sourceType: \"module\" as const,\r\n    allowReturnOutsideFunction: opts?.allowReturnOutsideFunction ?? false,\r\n    locations: true,\r\n  };\r\n\r\n  if (opts?.jsx) {\r\n    return acornJsxParser.parse(source, parseOpts);\r\n  }\r\n\r\n  try {\r\n    return acorn.parse(source, parseOpts);\r\n  } catch {\r\n    return acornJsxParser.parse(source, parseOpts);\r\n  }\r\n}\r\n\r\nexport async function parseAstAsync(\r\n  source: string,\r\n  opts?: {\r\n    allowReturnOutsideFunction?: boolean;\r\n    jsx?: boolean;\r\n    signal?: AbortSignal;\r\n  },\r\n): Promise<unknown> {\r\n  return parseAst(source, {\r\n    allowReturnOutsideFunction: opts?.allowReturnOutsideFunction,\r\n    jsx: opts?.jsx,\r\n  });\r\n}\r\n\r\n// prevents \"unsupported platform\" error when Rollup probes for native bindings\r\nexport function getPackageBase(): string {\r\n  return \"\";\r\n}\r\n\r\nexport { ensureRollup as loadRollup };\r\n\r\nexport interface Plugin {\r\n  name: string;\r\n  [key: string]: unknown;\r\n}\r\n\r\nexport interface PluginContext {\r\n  meta: { rollupVersion: string };\r\n  parse: (code: string) => unknown;\r\n  [key: string]: unknown;\r\n}\r\n\r\nexport default {\r\n  VERSION,\r\n  rollup,\r\n  watch,\r\n  defineConfig,\r\n  parseAst,\r\n  parseAstAsync,\r\n  loadRollup: ensureRollup,\r\n};\r\n","// stub - not available in browser\r\n\r\nexport function getHeapStatistics() {\r\n  return {\r\n    total_heap_size: 0,\r\n    total_heap_size_executable: 0,\r\n    total_physical_size: 0,\r\n    total_available_size: 0,\r\n    used_heap_size: 0,\r\n    heap_size_limit: 0,\r\n    malloced_memory: 0,\r\n    peak_malloced_memory: 0,\r\n    does_zap_garbage: 0,\r\n    number_of_native_contexts: 0,\r\n    number_of_detached_contexts: 0,\r\n  };\r\n}\r\n\r\nexport function getHeapSpaceStatistics(): unknown[] {\r\n  return [];\r\n}\r\n\r\nexport function getHeapCodeStatistics() {\r\n  return {\r\n    code_and_metadata_size: 0,\r\n    bytecode_and_metadata_size: 0,\r\n    external_script_source_size: 0,\r\n  };\r\n}\r\n\r\nexport function getHeapSnapshot(): null { return null; }\r\nexport function writeHeapSnapshot(): string { return ''; }\r\n\r\n\r\nexport function setFlagsFromString(_flags: string): void {}\r\nexport function takeCoverage(): void {}\r\nexport function stopCoverage(): void {}\r\n\r\nexport function cachedDataVersionTag(): number {\r\n  return 0;\r\n}\r\n\r\n// serialize/deserialize use JSON as a fallback\r\n\r\nexport function serialize(value: unknown): Uint8Array {\r\n  return new TextEncoder().encode(JSON.stringify(value));\r\n}\r\n\r\nexport function deserialize(bytes: Uint8Array): unknown {\r\n  return JSON.parse(new TextDecoder().decode(bytes));\r\n}\r\n\r\nexport interface Serializer {\r\n  writeHeader(): void;\r\n  writeValue(_v: unknown): void;\r\n  releaseBuffer(): Uint8Array;\r\n}\r\n\r\nexport const Serializer = function Serializer(this: any) {\r\n  if (!this) return;\r\n} as unknown as { new(): Serializer; prototype: any };\r\n\r\nSerializer.prototype.writeHeader = function writeHeader(): void {};\r\nSerializer.prototype.writeValue = function writeValue(_v: unknown): void {};\r\nSerializer.prototype.releaseBuffer = function releaseBuffer(): Uint8Array { return new Uint8Array(0); };\r\n\r\nexport interface Deserializer {\r\n  readHeader(): boolean;\r\n  readValue(): unknown;\r\n}\r\n\r\nexport const Deserializer = function Deserializer(this: any, _buf: Uint8Array) {\r\n  if (!this) return;\r\n} as unknown as { new(_buf: Uint8Array): Deserializer; prototype: any };\r\n\r\nDeserializer.prototype.readHeader = function readHeader(): boolean { return true; };\r\nDeserializer.prototype.readValue = function readValue(): unknown { return null; };\r\n\r\nexport interface DefaultSerializer extends Serializer {}\r\n\r\nexport const DefaultSerializer = function DefaultSerializer(this: any) {\r\n  if (!this) return;\r\n  (Serializer as any).call(this);\r\n} as unknown as { new(): DefaultSerializer; prototype: any };\r\n\r\nObject.setPrototypeOf(DefaultSerializer.prototype, Serializer.prototype);\r\n\r\nexport interface DefaultDeserializer extends Deserializer {}\r\n\r\nexport const DefaultDeserializer = function DefaultDeserializer(this: any, _buf: Uint8Array) {\r\n  if (!this) return;\r\n  (Deserializer as any).call(this, _buf);\r\n} as unknown as { new(_buf: Uint8Array): DefaultDeserializer; prototype: any };\r\n\r\nObject.setPrototypeOf(DefaultDeserializer.prototype, Deserializer.prototype);\r\n\r\n\r\nexport function promiseHooks() {\r\n  return {\r\n    onInit: () => {},\r\n    onSettled: () => {},\r\n    onBefore: () => {},\r\n    onAfter: () => {},\r\n    createHook: () => ({ enable: () => {}, disable: () => {} }),\r\n  };\r\n}\r\n\r\n\r\nexport default {\r\n  getHeapStatistics,\r\n  getHeapSpaceStatistics,\r\n  getHeapCodeStatistics,\r\n  getHeapSnapshot,\r\n  writeHeapSnapshot,\r\n  setFlagsFromString,\r\n  takeCoverage,\r\n  stopCoverage,\r\n  cachedDataVersionTag,\r\n  serialize,\r\n  deserialize,\r\n  Serializer,\r\n  Deserializer,\r\n  DefaultSerializer,\r\n  DefaultDeserializer,\r\n  promiseHooks,\r\n};\r\n","// readline polyfill — createInterface, emitKeypressEvents, terminal helpers\r\n// we track line/cursor on every keystroke because @clack reads rl.line directly\r\n\r\nimport { EventEmitter } from \"./events\";\r\nimport { getRegistry, type Handle } from \"../helpers/event-loop\";\r\n\r\n// the wait loop checks this so it doesn't bail while the user is typing\r\nlet _activeInterfaceCount = 0;\r\n\r\nexport function getActiveInterfaceCount(): number {\r\n  return _activeInterfaceCount;\r\n}\r\n\r\nexport function setActiveInterfaceCount(n: number): void {\r\n  _activeInterfaceCount = n;\r\n}\r\n\r\nexport function resetActiveInterfaceCount(): void {\r\n  _activeInterfaceCount = 0;\r\n}\r\n\r\n\r\nexport interface InterfaceConfig {\r\n  input?: unknown;\r\n  output?: unknown;\r\n  terminal?: boolean;\r\n  prompt?: string;\r\n  historySize?: number;\r\n  history?: string[];\r\n  removeHistoryDuplicates?: boolean;\r\n  completer?: (line: string) => [string[], string] | void;\r\n  crlfDelay?: number;\r\n  escapeCodeTimeout?: number;\r\n  tabSize?: number;\r\n  signal?: AbortSignal;\r\n}\r\n\r\n// turns raw data events into proper keypress events\r\n\r\nconst KEYPRESS_DECODER = Symbol(\"keypressDecoder\");\r\n\r\n// parses individual chars (including escape sequences) and fires keypress\r\nfunction parseAndEmitKeypress(\r\n  stream: any,\r\n  char: string,\r\n  escapeBuf: string[],\r\n): string[] {\r\n  if (escapeBuf.length > 0) {\r\n    escapeBuf.push(char);\r\n    const seq = escapeBuf.join(\"\");\r\n\r\n    if (seq.length >= 3 && seq[1] === \"[\") {\r\n      // CSI escape sequence (arrows, home, end, etc.)\r\n      const lastChar = seq[seq.length - 1];\r\n      if (/[A-Za-z~]/.test(lastChar)) {\r\n        let name = \"\";\r\n        let ctrl = false;\r\n        if (lastChar === \"A\") name = \"up\";\r\n        else if (lastChar === \"B\") name = \"down\";\r\n        else if (lastChar === \"C\") name = \"right\";\r\n        else if (lastChar === \"D\") name = \"left\";\r\n        else if (lastChar === \"H\") name = \"home\";\r\n        else if (lastChar === \"F\") name = \"end\";\r\n        else if (seq === \"\\x1b[3~\") name = \"delete\";\r\n        else if (seq === \"\\x1b[2~\") name = \"insert\";\r\n        else if (seq === \"\\x1b[5~\") name = \"pageup\";\r\n        else if (seq === \"\\x1b[6~\") name = \"pagedown\";\r\n        else if (seq === \"\\x1b[1;5C\") { name = \"right\"; ctrl = true; }  // Ctrl+Right\r\n        else if (seq === \"\\x1b[1;5D\") { name = \"left\"; ctrl = true; }   // Ctrl+Left\r\n        else name = lastChar;\r\n\r\n        stream.emit(\"keypress\", seq, {\r\n          sequence: seq,\r\n          name,\r\n          ctrl,\r\n          meta: false,\r\n          shift: false,\r\n        });\r\n        return [];\r\n      }\r\n      if (seq.length > 8) {\r\n        stream.emit(\"keypress\", seq, {\r\n          sequence: seq,\r\n          name: \"unknown\",\r\n          ctrl: false,\r\n          meta: false,\r\n          shift: false,\r\n        });\r\n        return [];\r\n      }\r\n      return escapeBuf;\r\n    }\r\n\r\n    if (seq.length >= 3 && seq[1] === \"O\") {\r\n      const lastChar = seq[seq.length - 1];\r\n      let name = \"\";\r\n      if (lastChar === \"A\") name = \"up\";\r\n      else if (lastChar === \"B\") name = \"down\";\r\n      else if (lastChar === \"C\") name = \"right\";\r\n      else if (lastChar === \"D\") name = \"left\";\r\n      else if (lastChar === \"H\") name = \"home\";\r\n      else if (lastChar === \"F\") name = \"end\";\r\n      else name = lastChar;\r\n\r\n      stream.emit(\"keypress\", seq, {\r\n        sequence: seq,\r\n        name,\r\n        ctrl: false,\r\n        meta: false,\r\n        shift: false,\r\n      });\r\n      return [];\r\n    }\r\n\r\n    if (seq.length >= 2 && seq[1] !== \"[\" && seq[1] !== \"O\") {\r\n      // Alt+letter combo\r\n      const metaChar = seq[1];\r\n      let name = metaChar;\r\n      if (metaChar.charCodeAt(0) >= 32) {\r\n        name = metaChar.toLowerCase();\r\n      }\r\n      stream.emit(\"keypress\", seq, {\r\n        sequence: seq,\r\n        name,\r\n        ctrl: false,\r\n        meta: true,\r\n        shift: false,\r\n      });\r\n      return [];\r\n    }\r\n\r\n    return escapeBuf;\r\n  }\r\n\r\n  if (char === \"\\x1b\") {\r\n    return [char];\r\n  }\r\n\r\n  let name = char;\r\n  let ctrl = false;\r\n  if (char === \"\\r\" || char === \"\\n\") name = \"return\";\r\n  else if (char === \"\\x7f\" || char === \"\\b\") name = \"backspace\";\r\n  else if (char === \"\\t\") name = \"tab\";\r\n  else if (char === \" \") name = \"space\";\r\n  else if (char.charCodeAt(0) < 32) {\r\n    ctrl = true;\r\n    name = String.fromCharCode(char.charCodeAt(0) + 96);\r\n  }\r\n\r\n  stream.emit(\"keypress\", char, {\r\n    sequence: char,\r\n    name,\r\n    ctrl,\r\n    meta: false,\r\n    shift: false,\r\n  });\r\n\r\n  return [];\r\n}\r\n\r\nexport function emitKeypressEvents(stream: unknown, _iface?: Interface): void {\r\n  if (!stream || typeof (stream as any).on !== \"function\") return;\r\n  if ((stream as any)[KEYPRESS_DECODER]) return;\r\n  (stream as any)[KEYPRESS_DECODER] = true;\r\n\r\n  let escapeBuf: string[] = [];\r\n  let escapeTimeout: ReturnType<typeof setTimeout> | null = null;\r\n\r\n  (stream as any).on(\"data\", (data: unknown) => {\r\n    if ((stream as any).listenerCount(\"keypress\") <= 0) return;\r\n    const text = typeof data === \"string\" ? data : String(data);\r\n\r\n    for (const char of text) {\r\n      if (escapeTimeout) {\r\n        clearTimeout(escapeTimeout);\r\n        escapeTimeout = null;\r\n      }\r\n      escapeBuf = parseAndEmitKeypress(stream as any, char, escapeBuf);\r\n\r\n      // if we're mid-escape, flush it after a short timeout\r\n      if (escapeBuf.length > 0) {\r\n        escapeTimeout = setTimeout(() => {\r\n          if (escapeBuf.length > 0) {\r\n            const seq = escapeBuf.join(\"\");\r\n            (stream as any).emit(\"keypress\", seq, {\r\n              sequence: seq,\r\n              name: \"escape\",\r\n              ctrl: false,\r\n              meta: false,\r\n              shift: false,\r\n            });\r\n            escapeBuf = [];\r\n          }\r\n        }, 50);\r\n      }\r\n    }\r\n  });\r\n}\r\n\r\n// word boundary helpers for Ctrl+Left/Right, Ctrl+W, etc.\r\n\r\nfunction wordLeft(line: string, cursor: number): number {\r\n  let i = cursor - 1;\r\n  while (i >= 0 && /\\s/.test(line[i])) i--;\r\n  while (i >= 0 && !/\\s/.test(line[i])) i--;\r\n  return i + 1;\r\n}\r\n\r\nfunction wordRight(line: string, cursor: number): number {\r\n  let i = cursor;\r\n  while (i < line.length && !/\\s/.test(line[i])) i++;\r\n  while (i < line.length && /\\s/.test(line[i])) i++;\r\n  return i;\r\n}\r\n\r\n\r\nexport interface Interface extends EventEmitter {\r\n  _promptStr: string;\r\n  input: unknown;\r\n  output: unknown;\r\n  closed: boolean;\r\n  _lineBuffer: string;\r\n  _pendingQuestions: Array<{\r\n    query: string;\r\n    handler: (answer: string) => void;\r\n    signal?: AbortSignal;\r\n    abortListener?: () => void;\r\n  }>;\r\n  terminal: boolean;\r\n  line: string;\r\n  cursor: number;\r\n  history: string[];\r\n  _historyIndex: number;\r\n  _historySize: number;\r\n  _removeHistoryDuplicates: boolean;\r\n  _savedLine: string;\r\n  _killRing: string[];\r\n  _refreshLine(): void;\r\n  _onKeypress(char: string | undefined, key: any): void;\r\n  _onData(text: string): void;\r\n  _addToHistory(line: string): void;\r\n  prompt(preserveCursor?: boolean): void;\r\n  setPrompt(text: string): void;\r\n  getPrompt(): string;\r\n  question(query: string, optsOrHandler?: unknown, handler?: (answer: string) => void): void;\r\n  pause(): this;\r\n  resume(): this;\r\n  close(): void;\r\n  ref(): this;\r\n  unref(): this;\r\n  write(data: string | null, _key?: { ctrl?: boolean; name?: string; meta?: boolean; shift?: boolean; sequence?: string }): void;\r\n  clearLine(dir?: number): void;\r\n  getCursorPos(): { rows: number; cols: number };\r\n  [Symbol.asyncIterator](): AsyncGenerator<string, void, undefined>;\r\n}\r\n\r\ninterface InterfaceConstructor {\r\n  new (cfg?: InterfaceConfig): Interface;\r\n  (this: any, cfg?: InterfaceConfig): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Interface = function Interface(this: any, cfg?: InterfaceConfig) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n  this._promptStr = cfg?.prompt ?? \"> \";\r\n  this.input = cfg?.input;\r\n  this.output = cfg?.output;\r\n  this.closed = false;\r\n  this._lineBuffer = \"\";\r\n  this._pendingQuestions = [];\r\n  // node auto-detects terminal from input.isTTY (and output.isTTY when\r\n  // output is set). without this, createInterface({input: process.stdin})\r\n  // falls back to line mode and emitKeypressEvents never runs, which\r\n  // breaks vite's q-shortcut handler.\r\n  if (cfg?.terminal !== undefined) {\r\n    this.terminal = cfg.terminal;\r\n  } else {\r\n    const inputIsTTY = !!(cfg?.input as any)?.isTTY;\r\n    const outputIsTTY = !!(cfg?.output as any)?.isTTY;\r\n    this.terminal = inputIsTTY && (cfg?.output == null || outputIsTTY);\r\n  }\r\n  this.line = \"\";\r\n  this.cursor = 0;\r\n\r\n  this._historySize = cfg?.historySize ?? 30;\r\n  this._removeHistoryDuplicates = cfg?.removeHistoryDuplicates ?? false;\r\n  this.history = Array.isArray(cfg?.history) ? cfg!.history.slice(0, this._historySize) : [];\r\n  this._historyIndex = -1;\r\n  this._savedLine = \"\";\r\n  this._killRing = [];\r\n\r\n  if (cfg?.signal) {\r\n    const signal = cfg.signal;\r\n    if (signal.aborted) {\r\n      queueMicrotask(() => this.close());\r\n    } else {\r\n      const onAbort = () => this.close();\r\n      signal.addEventListener(\"abort\", onAbort, { once: true });\r\n    }\r\n  }\r\n\r\n  if (this.input && typeof (this.input as any).on === \"function\") {\r\n    _activeInterfaceCount++;\r\n    (this as any)._elHandle = getRegistry().register(\"ReadlineInterface\");\r\n    const inputStream = this.input as EventEmitter;\r\n    const self = this;\r\n\r\n    // remember every listener we attach so close() can drop them. otherwise\r\n    // each closed readline leaves dead keypress/data/end handlers on stdin\r\n    // and they pile up across lifecycles.\r\n    const installed: Array<{ evt: string; fn: (...a: any[]) => void }> = [];\r\n    const installAndTrack = (evt: string, fn: (...a: any[]) => void) => {\r\n      inputStream.on(evt, fn);\r\n      installed.push({ evt, fn });\r\n    };\r\n    (this as any)._installedListeners = installed;\r\n\r\n    if (this.terminal) {\r\n      // raw mode so we get individual keystrokes instead of line-buffered input\r\n      if (typeof (this.input as any).setRawMode === \"function\") {\r\n        (this.input as any).setRawMode(true);\r\n      }\r\n\r\n      emitKeypressEvents(this.input, this);\r\n\r\n      installAndTrack(\"keypress\", (char: string | undefined, key: any) => {\r\n        if (self.closed) return;\r\n        self._onKeypress(char, key);\r\n      });\r\n    } else {\r\n      installAndTrack(\"data\", (data: unknown) => {\r\n        if (self.closed) return;\r\n        const text = typeof data === \"string\" ? data : String(data);\r\n        self._onData(text);\r\n      });\r\n    }\r\n\r\n    installAndTrack(\"end\", () => {\r\n      if (!self.closed) self.close();\r\n    });\r\n  }\r\n} as unknown as InterfaceConstructor;\r\n\r\nObject.setPrototypeOf(Interface.prototype, EventEmitter.prototype);\r\n\r\nInterface.prototype._refreshLine = function _refreshLine(this: any): void {\r\n  if (this.output && typeof (this.output as any).write === \"function\") {\r\n    (this.output as any).write(this.line);\r\n  }\r\n};\r\n\r\nInterface.prototype._addToHistory = function _addToHistory(this: any, line: string): void {\r\n  if (this._historySize === 0 || !line) return;\r\n\r\n  if (this._removeHistoryDuplicates) {\r\n    const idx = this.history.indexOf(line);\r\n    if (idx !== -1) this.history.splice(idx, 1);\r\n  }\r\n\r\n  this.history.unshift(line);\r\n  if (this.history.length > this._historySize) {\r\n    this.history.length = this._historySize;\r\n  }\r\n\r\n  this._historyIndex = -1;\r\n  this.emit(\"history\", this.history);\r\n};\r\n\r\nInterface.prototype._onKeypress = function _onKeypress(this: any, char: string | undefined, key: any): void {\r\n  if (!key) return;\r\n\r\n  // Ctrl+C\r\n  if (key.ctrl && key.name === \"c\") {\r\n    if (this.listenerCount(\"SIGINT\") > 0) {\r\n      this.emit(\"SIGINT\");\r\n    } else {\r\n      this.close();\r\n    }\r\n    return;\r\n  }\r\n\r\n  // Ctrl+Z\r\n  if (key.ctrl && key.name === \"z\") {\r\n    if (this.listenerCount(\"SIGTSTP\") > 0) {\r\n      this.emit(\"SIGTSTP\");\r\n    }\r\n    return;\r\n  }\r\n\r\n  // Enter — submit the line\r\n  if (key.name === \"return\") {\r\n    const line = this._lineBuffer;\r\n    this._lineBuffer = \"\";\r\n    this.line = line;\r\n\r\n    this._addToHistory(line);\r\n\r\n    if (this._pendingQuestions.length > 0) {\r\n      const q = this._pendingQuestions.shift()!;\r\n      if (q.signal && q.abortListener) {\r\n        q.signal.removeEventListener(\"abort\", q.abortListener);\r\n      }\r\n      q.handler(line);\r\n    }\r\n\r\n    this.emit(\"line\", line);\r\n    this.line = \"\";\r\n    this.cursor = 0;\r\n    return;\r\n  }\r\n\r\n  // Backspace\r\n  if (key.name === \"backspace\") {\r\n    if (this.cursor > 0) {\r\n      const deleted = this._lineBuffer[this.cursor - 1];\r\n      this._lineBuffer =\r\n        this._lineBuffer.slice(0, this.cursor - 1) +\r\n        this._lineBuffer.slice(this.cursor);\r\n      this.cursor--;\r\n      this.line = this._lineBuffer;\r\n      this._refreshLine();\r\n    }\r\n    return;\r\n  }\r\n\r\n  // Delete\r\n  if (key.name === \"delete\") {\r\n    if (this.cursor < this._lineBuffer.length) {\r\n      this._lineBuffer =\r\n        this._lineBuffer.slice(0, this.cursor) +\r\n        this._lineBuffer.slice(this.cursor + 1);\r\n      this.line = this._lineBuffer;\r\n      this._refreshLine();\r\n    }\r\n    return;\r\n  }\r\n\r\n  // Ctrl+D — delete char or close if empty\r\n  if (key.ctrl && key.name === \"d\") {\r\n    if (this._lineBuffer.length === 0) {\r\n      this.close();\r\n    } else if (this.cursor < this._lineBuffer.length) {\r\n      this._lineBuffer =\r\n        this._lineBuffer.slice(0, this.cursor) +\r\n        this._lineBuffer.slice(this.cursor + 1);\r\n      this.line = this._lineBuffer;\r\n      this._refreshLine();\r\n    }\r\n    return;\r\n  }\r\n\r\n  // arrow keys\r\n  if (key.name === \"left\" && !key.ctrl && !key.meta) {\r\n    this.cursor = Math.max(0, this.cursor - 1);\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n  if (key.name === \"right\" && !key.ctrl && !key.meta) {\r\n    this.cursor = Math.min(this._lineBuffer.length, this.cursor + 1);\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n\r\n  // Ctrl+Left / Alt+B — jump word left\r\n  if ((key.ctrl && key.name === \"left\") || (key.meta && key.name === \"b\")) {\r\n    this.cursor = wordLeft(this._lineBuffer, this.cursor);\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n\r\n  // Ctrl+Right / Alt+F — jump word right\r\n  if ((key.ctrl && key.name === \"right\") || (key.meta && key.name === \"f\")) {\r\n    this.cursor = wordRight(this._lineBuffer, this.cursor);\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n\r\n  // Home / Ctrl+A\r\n  if (key.name === \"home\" || (key.ctrl && key.name === \"a\")) {\r\n    this.cursor = 0;\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n\r\n  // End / Ctrl+E\r\n  if (key.name === \"end\" || (key.ctrl && key.name === \"e\")) {\r\n    this.cursor = this._lineBuffer.length;\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n\r\n  // Ctrl+B — back one char\r\n  if (key.ctrl && key.name === \"b\") {\r\n    this.cursor = Math.max(0, this.cursor - 1);\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n\r\n  // Ctrl+F — forward one char\r\n  if (key.ctrl && key.name === \"f\") {\r\n    this.cursor = Math.min(this._lineBuffer.length, this.cursor + 1);\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n\r\n  // Up / Ctrl+P — previous history entry\r\n  if (key.name === \"up\" || (key.ctrl && key.name === \"p\")) {\r\n    if (this.history.length > 0 && this._historyIndex < this.history.length - 1) {\r\n      if (this._historyIndex === -1) {\r\n        this._savedLine = this._lineBuffer;\r\n      }\r\n      this._historyIndex++;\r\n      this._lineBuffer = this.history[this._historyIndex];\r\n      this.cursor = this._lineBuffer.length;\r\n      this.line = this._lineBuffer;\r\n      this._refreshLine();\r\n    }\r\n    return;\r\n  }\r\n\r\n  // Down / Ctrl+N — next history entry\r\n  if (key.name === \"down\" || (key.ctrl && key.name === \"n\")) {\r\n    if (this._historyIndex > 0) {\r\n      this._historyIndex--;\r\n      this._lineBuffer = this.history[this._historyIndex];\r\n      this.cursor = this._lineBuffer.length;\r\n      this.line = this._lineBuffer;\r\n      this._refreshLine();\r\n    } else if (this._historyIndex === 0) {\r\n      this._historyIndex = -1;\r\n      this._lineBuffer = this._savedLine;\r\n      this.cursor = this._lineBuffer.length;\r\n      this.line = this._lineBuffer;\r\n      this._refreshLine();\r\n    }\r\n    return;\r\n  }\r\n\r\n  // Ctrl+U — kill everything before cursor\r\n  if (key.ctrl && key.name === \"u\") {\r\n    const killed = this._lineBuffer.slice(0, this.cursor);\r\n    if (killed) this._killRing.push(killed);\r\n    this._lineBuffer = this._lineBuffer.slice(this.cursor);\r\n    this.cursor = 0;\r\n    this.line = this._lineBuffer;\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n\r\n  // Ctrl+K — kill everything after cursor\r\n  if (key.ctrl && key.name === \"k\") {\r\n    const killed = this._lineBuffer.slice(this.cursor);\r\n    if (killed) this._killRing.push(killed);\r\n    this._lineBuffer = this._lineBuffer.slice(0, this.cursor);\r\n    this.line = this._lineBuffer;\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n\r\n  // Ctrl+H — same as backspace\r\n  if (key.ctrl && key.name === \"h\") {\r\n    if (this.cursor > 0) {\r\n      this._lineBuffer =\r\n        this._lineBuffer.slice(0, this.cursor - 1) +\r\n        this._lineBuffer.slice(this.cursor);\r\n      this.cursor--;\r\n      this.line = this._lineBuffer;\r\n      this._refreshLine();\r\n    }\r\n    return;\r\n  }\r\n\r\n  // Ctrl+W — delete word backward\r\n  if (key.ctrl && key.name === \"w\") {\r\n    const newPos = wordLeft(this._lineBuffer, this.cursor);\r\n    const killed = this._lineBuffer.slice(newPos, this.cursor);\r\n    if (killed) this._killRing.push(killed);\r\n    this._lineBuffer =\r\n      this._lineBuffer.slice(0, newPos) +\r\n      this._lineBuffer.slice(this.cursor);\r\n    this.cursor = newPos;\r\n    this.line = this._lineBuffer;\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n\r\n  // Alt+D — delete word forward\r\n  if (key.meta && key.name === \"d\") {\r\n    const newPos = wordRight(this._lineBuffer, this.cursor);\r\n    const killed = this._lineBuffer.slice(this.cursor, newPos);\r\n    if (killed) this._killRing.push(killed);\r\n    this._lineBuffer =\r\n      this._lineBuffer.slice(0, this.cursor) +\r\n      this._lineBuffer.slice(newPos);\r\n    this.line = this._lineBuffer;\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n\r\n  // Ctrl+Y — paste last killed text\r\n  if (key.ctrl && key.name === \"y\") {\r\n    if (this._killRing.length > 0) {\r\n      const text = this._killRing[this._killRing.length - 1];\r\n      this._lineBuffer =\r\n        this._lineBuffer.slice(0, this.cursor) +\r\n        text +\r\n        this._lineBuffer.slice(this.cursor);\r\n      this.cursor += text.length;\r\n      this.line = this._lineBuffer;\r\n      this._refreshLine();\r\n    }\r\n    return;\r\n  }\r\n\r\n  // Ctrl+L — clear screen\r\n  if (key.ctrl && key.name === \"l\") {\r\n    if (this.output && typeof (this.output as any).write === \"function\") {\r\n      (this.output as any).write(\"\\x1b[2J\\x1b[H\");\r\n    }\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n\r\n  // regular printable character\r\n  if (\r\n    char &&\r\n    !key.ctrl &&\r\n    !key.meta &&\r\n    char.length === 1 &&\r\n    char.charCodeAt(0) >= 32\r\n  ) {\r\n    this._lineBuffer =\r\n      this._lineBuffer.slice(0, this.cursor) +\r\n      char +\r\n      this._lineBuffer.slice(this.cursor);\r\n    this.cursor++;\r\n    this.line = this._lineBuffer;\r\n    this._refreshLine();\r\n    return;\r\n  }\r\n\r\n};\r\n\r\nInterface.prototype._onData = function _onData(this: any, text: string): void {\r\n  for (const char of text) {\r\n    if (char === \"\\n\" || char === \"\\r\") {\r\n      const line = this._lineBuffer;\r\n      this._lineBuffer = \"\";\r\n      this.line = line;\r\n\r\n      this._addToHistory(line);\r\n\r\n      if (this._pendingQuestions.length > 0) {\r\n        const q = this._pendingQuestions.shift()!;\r\n        if (q.signal && q.abortListener) {\r\n          q.signal.removeEventListener(\"abort\", q.abortListener);\r\n        }\r\n        q.handler(line);\r\n      }\r\n\r\n      this.emit(\"line\", line);\r\n      this.line = \"\";\r\n      this.cursor = 0;\r\n    } else if (char === \"\\x7f\" || char === \"\\b\") {\r\n      if (this._lineBuffer.length > 0) {\r\n        this._lineBuffer =\r\n          this._lineBuffer.slice(0, this.cursor - 1) +\r\n          this._lineBuffer.slice(this.cursor);\r\n        this.cursor = Math.max(0, this.cursor - 1);\r\n        this.line = this._lineBuffer;\r\n        this._refreshLine();\r\n      }\r\n    } else if (char.charCodeAt(0) >= 32) {\r\n      this._lineBuffer =\r\n        this._lineBuffer.slice(0, this.cursor) +\r\n        char +\r\n        this._lineBuffer.slice(this.cursor);\r\n      this.cursor++;\r\n      this.line = this._lineBuffer;\r\n      this._refreshLine();\r\n    }\r\n  }\r\n};\r\n\r\nInterface.prototype.prompt = function prompt(this: any, preserveCursor?: boolean): void {\r\n  if (this.output && typeof (this.output as any).write === \"function\") {\r\n    (this.output as any).write(this._promptStr);\r\n  }\r\n  if (!preserveCursor) {\r\n    this.cursor = 0;\r\n    this.line = \"\";\r\n    this._lineBuffer = \"\";\r\n  }\r\n};\r\n\r\nInterface.prototype.setPrompt = function setPrompt(this: any, text: string): void {\r\n  this._promptStr = text;\r\n};\r\n\r\nInterface.prototype.getPrompt = function getPrompt(this: any): string {\r\n  return this._promptStr;\r\n};\r\n\r\nInterface.prototype.question = function question(\r\n  this: any,\r\n  query: string,\r\n  optsOrHandler?: unknown,\r\n  handler?: (answer: string) => void,\r\n): void {\r\n  let actualHandler: ((answer: string) => void) | undefined;\r\n  let signal: AbortSignal | undefined;\r\n\r\n  if (typeof optsOrHandler === \"function\") {\r\n    actualHandler = optsOrHandler as (answer: string) => void;\r\n  } else if (optsOrHandler && typeof optsOrHandler === \"object\") {\r\n    signal = (optsOrHandler as any).signal;\r\n    actualHandler = handler;\r\n  } else {\r\n    actualHandler = handler;\r\n  }\r\n\r\n  if (!actualHandler) return;\r\n\r\n  if (signal?.aborted) {\r\n    const err = new DOMException(\"The operation was aborted\", \"AbortError\");\r\n    throw err;\r\n  }\r\n\r\n  if (this.output && typeof (this.output as any).write === \"function\") {\r\n    (this.output as any).write(query);\r\n  }\r\n\r\n  if (this.input && typeof (this.input as any).on === \"function\") {\r\n    const entry: any = { query, handler: actualHandler, signal };\r\n\r\n    if (signal) {\r\n      const onAbort = () => {\r\n        const idx = this._pendingQuestions.indexOf(entry);\r\n        if (idx !== -1) this._pendingQuestions.splice(idx, 1);\r\n        actualHandler!(\"\");\r\n      };\r\n      entry.abortListener = onAbort;\r\n      signal.addEventListener(\"abort\", onAbort, { once: true });\r\n    }\r\n\r\n    this._pendingQuestions.push(entry);\r\n  } else {\r\n    setTimeout(() => actualHandler!(\"\"), 0);\r\n  }\r\n};\r\n\r\nInterface.prototype.pause = function pause(this: any): any {\r\n  if (this.input && typeof (this.input as any).pause === \"function\") {\r\n    (this.input as any).pause();\r\n  }\r\n  this.emit(\"pause\");\r\n  return this;\r\n};\r\n\r\nInterface.prototype.resume = function resume(this: any): any {\r\n  if (this.input && typeof (this.input as any).resume === \"function\") {\r\n    (this.input as any).resume();\r\n  }\r\n  this.emit(\"resume\");\r\n  return this;\r\n};\r\n\r\n// node's Interface.ref/unref lets users opt out of keeping the loop alive\r\n// while the interface is still open. forward to our Handle.\r\nInterface.prototype.ref = function ref(this: any): any {\r\n  const h = (this as any)._elHandle as Handle | undefined;\r\n  if (h) h.ref();\r\n  return this;\r\n};\r\n\r\nInterface.prototype.unref = function unref(this: any): any {\r\n  const h = (this as any)._elHandle as Handle | undefined;\r\n  if (h) h.unref();\r\n  return this;\r\n};\r\n\r\nInterface.prototype.close = function close(this: any): void {\r\n  if (this.closed) return;\r\n  this.closed = true;\r\n  // put raw mode back how it was\r\n  if (this.terminal && this.input && typeof (this.input as any).setRawMode === \"function\") {\r\n    (this.input as any).setRawMode(false);\r\n  }\r\n  if (this.input && typeof (this.input as any).on === \"function\") {\r\n    _activeInterfaceCount = Math.max(0, _activeInterfaceCount - 1);\r\n    const h = (this as any)._elHandle as Handle | undefined;\r\n    if (h) {\r\n      h.close();\r\n      (this as any)._elHandle = undefined;\r\n    }\r\n    // drop the listeners we put on input. otherwise a long-lived stdin keeps\r\n    // a stack of dead handlers (keypress/data/end) from every past readline,\r\n    // which starts interfering with later ones on the same stdin (e.g.\r\n    // create-vite's prompts vs vite's q-shortcut).\r\n    const installed = (this as any)._installedListeners as\r\n      | Array<{ evt: string; fn: (...a: any[]) => void }>\r\n      | undefined;\r\n    if (installed && typeof (this.input as any).removeListener === \"function\") {\r\n      for (const { evt, fn } of installed) {\r\n        try { (this.input as any).removeListener(evt, fn); } catch { /* ignore */ }\r\n      }\r\n      installed.length = 0;\r\n    }\r\n    // pause the input so the process can exit once the readline is gone.\r\n    // node's stdin handle unrefs on pause and releases the loop.\r\n    if (typeof (this.input as any).pause === \"function\") {\r\n      try { (this.input as any).pause(); } catch { /* ignore */ }\r\n    }\r\n  }\r\n  // answer any pending questions with empty string\r\n  for (const q of this._pendingQuestions) {\r\n    if (q.signal && q.abortListener) {\r\n      q.signal.removeEventListener(\"abort\", q.abortListener);\r\n    }\r\n    q.handler(\"\");\r\n  }\r\n  this._pendingQuestions.length = 0;\r\n  this.emit(\"close\");\r\n};\r\n\r\n// `using rl = ...` support\r\nif (typeof Symbol.dispose !== \"undefined\") {\r\n  (Interface.prototype as any)[Symbol.dispose] = function (this: any): void {\r\n    this.close();\r\n  };\r\n}\r\n\r\nInterface.prototype.write = function write(\r\n  this: any,\r\n  data: string | null,\r\n  _key?: {\r\n    ctrl?: boolean;\r\n    name?: string;\r\n    meta?: boolean;\r\n    shift?: boolean;\r\n    sequence?: string;\r\n  },\r\n): void {\r\n  if (this.closed) return;\r\n\r\n  if (data === null || data === undefined) {\r\n    if (_key) {\r\n      // fire a keypress on input so things like @clack pick it up\r\n      const emitOnInput =\r\n        this.input && typeof (this.input as any).emit === \"function\";\r\n\r\n      if (_key.ctrl && _key.name === \"c\") {\r\n        if (this.listenerCount(\"SIGINT\") > 0) {\r\n          this.emit(\"SIGINT\");\r\n        } else {\r\n          this.close();\r\n        }\r\n        return;\r\n      }\r\n      if (_key.ctrl && _key.name === \"h\") {\r\n        if (this.cursor > 0) {\r\n          this._lineBuffer =\r\n            this._lineBuffer.slice(0, this.cursor - 1) +\r\n            this._lineBuffer.slice(this.cursor);\r\n          this.cursor--;\r\n          this.line = this._lineBuffer;\r\n        }\r\n        if (emitOnInput) {\r\n          (this.input as any).emit(\"keypress\", \"\\x7f\", {\r\n            sequence: \"\\x7f\",\r\n            name: \"backspace\",\r\n            ctrl: false,\r\n            meta: false,\r\n            shift: false,\r\n          });\r\n        }\r\n        return;\r\n      }\r\n      if (_key.ctrl && _key.name === \"u\") {\r\n        const killed = this._lineBuffer.slice(0, this.cursor);\r\n        if (killed) this._killRing.push(killed);\r\n        this._lineBuffer = this._lineBuffer.slice(this.cursor);\r\n        this.cursor = 0;\r\n        this.line = this._lineBuffer;\r\n        return;\r\n      }\r\n      if (_key.ctrl && _key.name === \"k\") {\r\n        const killed = this._lineBuffer.slice(this.cursor);\r\n        if (killed) this._killRing.push(killed);\r\n        this._lineBuffer = this._lineBuffer.slice(0, this.cursor);\r\n        this.line = this._lineBuffer;\r\n        return;\r\n      }\r\n      if (_key.ctrl && _key.name === \"w\") {\r\n        const newPos = wordLeft(this._lineBuffer, this.cursor);\r\n        const killed = this._lineBuffer.slice(newPos, this.cursor);\r\n        if (killed) this._killRing.push(killed);\r\n        this._lineBuffer =\r\n          this._lineBuffer.slice(0, newPos) +\r\n          this._lineBuffer.slice(this.cursor);\r\n        this.cursor = newPos;\r\n        this.line = this._lineBuffer;\r\n        return;\r\n      }\r\n      if (_key.ctrl && _key.name === \"y\") {\r\n        if (this._killRing.length > 0) {\r\n          const text = this._killRing[this._killRing.length - 1];\r\n          this._lineBuffer =\r\n            this._lineBuffer.slice(0, this.cursor) +\r\n            text +\r\n            this._lineBuffer.slice(this.cursor);\r\n          this.cursor += text.length;\r\n          this.line = this._lineBuffer;\r\n        }\r\n        return;\r\n      }\r\n      if (_key.ctrl && _key.name === \"a\") {\r\n        this.cursor = 0;\r\n        return;\r\n      }\r\n      if (_key.ctrl && _key.name === \"e\") {\r\n        this.cursor = this._lineBuffer.length;\r\n        return;\r\n      }\r\n      if (_key.ctrl && _key.name === \"b\") {\r\n        this.cursor = Math.max(0, this.cursor - 1);\r\n        return;\r\n      }\r\n      if (_key.ctrl && _key.name === \"f\") {\r\n        this.cursor = Math.min(this._lineBuffer.length, this.cursor + 1);\r\n        return;\r\n      }\r\n      if (_key.ctrl && _key.name === \"d\") {\r\n        if (this._lineBuffer.length === 0) {\r\n          this.close();\r\n        } else if (this.cursor < this._lineBuffer.length) {\r\n          this._lineBuffer =\r\n            this._lineBuffer.slice(0, this.cursor) +\r\n            this._lineBuffer.slice(this.cursor + 1);\r\n          this.line = this._lineBuffer;\r\n        }\r\n        return;\r\n      }\r\n      if (_key.ctrl && _key.name === \"l\") {\r\n        if (this.output && typeof (this.output as any).write === \"function\") {\r\n          (this.output as any).write(\"\\x1b[2J\\x1b[H\");\r\n        }\r\n        return;\r\n      }\r\n      if (_key.name === \"left\") {\r\n        if (_key.ctrl || _key.meta) {\r\n          this.cursor = wordLeft(this._lineBuffer, this.cursor);\r\n        } else {\r\n          this.cursor = Math.max(0, this.cursor - 1);\r\n        }\r\n        return;\r\n      }\r\n      if (_key.name === \"right\") {\r\n        if (_key.ctrl || _key.meta) {\r\n          this.cursor = wordRight(this._lineBuffer, this.cursor);\r\n        } else {\r\n          this.cursor = Math.min(this._lineBuffer.length, this.cursor + 1);\r\n        }\r\n        return;\r\n      }\r\n      if (_key.name === \"home\") {\r\n        this.cursor = 0;\r\n        return;\r\n      }\r\n      if (_key.name === \"end\") {\r\n        this.cursor = this._lineBuffer.length;\r\n        return;\r\n      }\r\n      if (_key.name === \"up\") {\r\n        if (this.history.length > 0 && this._historyIndex < this.history.length - 1) {\r\n          if (this._historyIndex === -1) this._savedLine = this._lineBuffer;\r\n          this._historyIndex++;\r\n          this._lineBuffer = this.history[this._historyIndex];\r\n          this.cursor = this._lineBuffer.length;\r\n          this.line = this._lineBuffer;\r\n        }\r\n        return;\r\n      }\r\n      if (_key.name === \"down\") {\r\n        if (this._historyIndex > 0) {\r\n          this._historyIndex--;\r\n          this._lineBuffer = this.history[this._historyIndex];\r\n          this.cursor = this._lineBuffer.length;\r\n          this.line = this._lineBuffer;\r\n        } else if (this._historyIndex === 0) {\r\n          this._historyIndex = -1;\r\n          this._lineBuffer = this._savedLine;\r\n          this.cursor = this._lineBuffer.length;\r\n          this.line = this._lineBuffer;\r\n        }\r\n        return;\r\n      }\r\n      if (_key.meta && _key.name === \"b\") {\r\n        this.cursor = wordLeft(this._lineBuffer, this.cursor);\r\n        return;\r\n      }\r\n      if (_key.meta && _key.name === \"f\") {\r\n        this.cursor = wordRight(this._lineBuffer, this.cursor);\r\n        return;\r\n      }\r\n      if (_key.meta && _key.name === \"d\") {\r\n        const newPos = wordRight(this._lineBuffer, this.cursor);\r\n        const killed = this._lineBuffer.slice(this.cursor, newPos);\r\n        if (killed) this._killRing.push(killed);\r\n        this._lineBuffer =\r\n          this._lineBuffer.slice(0, this.cursor) +\r\n          this._lineBuffer.slice(newPos);\r\n        this.line = this._lineBuffer;\r\n        return;\r\n      }\r\n    }\r\n    return;\r\n  }\r\n\r\n  if (_key?.ctrl && _key?.name === \"c\") {\r\n    if (this.listenerCount(\"SIGINT\") > 0) {\r\n      this.emit(\"SIGINT\");\r\n    } else {\r\n      this.close();\r\n    }\r\n    return;\r\n  }\r\n\r\n  this._onData(data);\r\n};\r\n\r\n// @inquirer calls rl.clearLine(0) directly so we need this on the interface\r\nInterface.prototype.clearLine = function clearLine(this: any, dir?: number): void {\r\n  this._lineBuffer = \"\";\r\n  this.line = \"\";\r\n  this.cursor = 0;\r\n  if (this.output && typeof (this.output as any).clearLine === \"function\") {\r\n    (this.output as any).clearLine(dir ?? 0);\r\n  }\r\n};\r\n\r\nInterface.prototype.getCursorPos = function getCursorPos(this: any): { rows: number; cols: number } {\r\n  // cursor position relative to prompt, wrapping at terminal width\r\n  const promptLen = typeof this._promptStr === \"string\" ? this._promptStr.length : 0;\r\n  const columns = (this.output && (this.output as any).columns) || 80;\r\n  const offset = promptLen + this.cursor;\r\n  return {\r\n    rows: Math.floor(offset / columns),\r\n    cols: offset % columns,\r\n  };\r\n};\r\n\r\nInterface.prototype[Symbol.asyncIterator] = async function*(this: any): AsyncGenerator<string, void, undefined> {\r\n  const self = this;\r\n  while (!self.closed) {\r\n    const line = await new Promise<string | null>((resolve) => {\r\n      if (self.closed) {\r\n        resolve(null);\r\n        return;\r\n      }\r\n      self.once(\"line\", (l: string) => resolve(l));\r\n      self.once(\"close\", () => resolve(null));\r\n    });\r\n    if (line === null) break;\r\n    yield line;\r\n  }\r\n};\r\n\r\n\r\nexport function createInterface(\r\n  cfgOrInput?: InterfaceConfig | unknown,\r\n  output?: unknown,\r\n): Interface {\r\n  if (\r\n    cfgOrInput &&\r\n    typeof cfgOrInput === \"object\" &&\r\n    !(\"on\" in (cfgOrInput as any)) &&\r\n    !(\"read\" in (cfgOrInput as any))\r\n  ) {\r\n    return new Interface(cfgOrInput as InterfaceConfig);\r\n  }\r\n  return new Interface({ input: cfgOrInput, output });\r\n}\r\n\r\n\r\nexport function clearLine(\r\n  stream: unknown,\r\n  dir: number,\r\n  done?: () => void,\r\n): boolean {\r\n  if (stream && typeof (stream as any).clearLine === \"function\") {\r\n    return (stream as any).clearLine(dir, done);\r\n  }\r\n  if (done) done();\r\n  return true;\r\n}\r\n\r\nexport function clearScreenDown(stream: unknown, done?: () => void): boolean {\r\n  if (stream && typeof (stream as any).write === \"function\") {\r\n    (stream as any).write(\"\\x1b[J\");\r\n  }\r\n  if (done) done();\r\n  return true;\r\n}\r\n\r\nexport function cursorTo(\r\n  stream: unknown,\r\n  x: number,\r\n  yOrDone?: number | (() => void),\r\n  done?: () => void,\r\n): boolean {\r\n  const cb = typeof yOrDone === \"function\" ? yOrDone : done;\r\n  if (stream && typeof (stream as any).cursorTo === \"function\") {\r\n    return (stream as any).cursorTo(\r\n      x,\r\n      typeof yOrDone === \"number\" ? yOrDone : undefined,\r\n      cb,\r\n    );\r\n  }\r\n  if (cb) cb();\r\n  return true;\r\n}\r\n\r\nexport function moveCursor(\r\n  stream: unknown,\r\n  dx: number,\r\n  dy: number,\r\n  done?: () => void,\r\n): boolean {\r\n  if (stream && typeof (stream as any).moveCursor === \"function\") {\r\n    return (stream as any).moveCursor(dx, dy, done);\r\n  }\r\n  if (done) done();\r\n  return true;\r\n}\r\n\r\n\r\n// promises API\r\n\r\nclass ReadlineWriter {\r\n  private _stream: any;\r\n  private _buffer: string[];\r\n  private _autoCommit: boolean;\r\n\r\n  constructor(stream: any, opts?: { autoCommit?: boolean }) {\r\n    this._stream = stream;\r\n    this._buffer = [];\r\n    this._autoCommit = opts?.autoCommit ?? false;\r\n  }\r\n\r\n  clearLine(dir: -1 | 0 | 1): this {\r\n    let seq: string;\r\n    if (dir === -1) seq = \"\\x1b[1K\";\r\n    else if (dir === 1) seq = \"\\x1b[0K\";\r\n    else seq = \"\\x1b[2K\";\r\n    if (this._autoCommit) {\r\n      this._stream.write(seq);\r\n    } else {\r\n      this._buffer.push(seq);\r\n    }\r\n    return this;\r\n  }\r\n\r\n  clearScreenDown(): this {\r\n    const seq = \"\\x1b[J\";\r\n    if (this._autoCommit) {\r\n      this._stream.write(seq);\r\n    } else {\r\n      this._buffer.push(seq);\r\n    }\r\n    return this;\r\n  }\r\n\r\n  cursorTo(x: number, y?: number): this {\r\n    let seq: string;\r\n    if (y !== undefined) {\r\n      seq = `\\x1b[${y + 1};${x + 1}H`;\r\n    } else {\r\n      seq = `\\x1b[${x + 1}G`;\r\n    }\r\n    if (this._autoCommit) {\r\n      this._stream.write(seq);\r\n    } else {\r\n      this._buffer.push(seq);\r\n    }\r\n    return this;\r\n  }\r\n\r\n  moveCursor(dx: number, dy: number): this {\r\n    const parts: string[] = [];\r\n    if (dx > 0) parts.push(`\\x1b[${dx}C`);\r\n    else if (dx < 0) parts.push(`\\x1b[${-dx}D`);\r\n    if (dy > 0) parts.push(`\\x1b[${dy}B`);\r\n    else if (dy < 0) parts.push(`\\x1b[${-dy}A`);\r\n    const seq = parts.join(\"\");\r\n    if (seq) {\r\n      if (this._autoCommit) {\r\n        this._stream.write(seq);\r\n      } else {\r\n        this._buffer.push(seq);\r\n      }\r\n    }\r\n    return this;\r\n  }\r\n\r\n  commit(): Promise<void> {\r\n    if (this._buffer.length > 0) {\r\n      this._stream.write(this._buffer.join(\"\"));\r\n      this._buffer.length = 0;\r\n    }\r\n    return Promise.resolve();\r\n  }\r\n\r\n  rollback(): this {\r\n    this._buffer.length = 0;\r\n    return this;\r\n  }\r\n}\r\n\r\nexport const promises = {\r\n  createInterface(cfg?: InterfaceConfig): any {\r\n    const rl = createInterface(cfg);\r\n    const wrapper: any = Object.create(rl);\r\n\r\n    wrapper.question = function (\r\n      query: string,\r\n      opts?: { signal?: AbortSignal },\r\n    ): Promise<string> {\r\n      return new Promise((resolve, reject) => {\r\n        if (opts?.signal?.aborted) {\r\n          reject(new DOMException(\"The operation was aborted\", \"AbortError\"));\r\n          return;\r\n        }\r\n\r\n        let onAbort: (() => void) | undefined;\r\n\r\n        const handler = (answer: string) => {\r\n          if (opts?.signal && onAbort) {\r\n            opts.signal.removeEventListener(\"abort\", onAbort);\r\n          }\r\n          resolve(answer);\r\n        };\r\n\r\n        if (opts?.signal) {\r\n          onAbort = () => {\r\n            reject(new DOMException(\"The operation was aborted\", \"AbortError\"));\r\n          };\r\n          opts.signal.addEventListener(\"abort\", onAbort, { once: true });\r\n        }\r\n\r\n        rl.question(query, handler);\r\n      });\r\n    };\r\n\r\n    return wrapper;\r\n  },\r\n\r\n  Readline: ReadlineWriter,\r\n};\r\n\r\n\r\nexport default {\r\n  Interface,\r\n  createInterface,\r\n  clearLine,\r\n  clearScreenDown,\r\n  cursorTo,\r\n  moveCursor,\r\n  emitKeypressEvents,\r\n  promises,\r\n};\r\n","// stub - not available in browser\r\n\r\nimport { EventEmitter } from \"./events\";\r\n\r\nexport interface TLSSocket extends EventEmitter {\r\n  authorized: boolean;\r\n  encrypted: boolean;\r\n  getPeerCertificate(_detailed?: boolean): object;\r\n  getCipher(): { name: string; version: string } | null;\r\n  getProtocol(): string | null;\r\n  setServername(_name: string): void;\r\n  renegotiate(_opts: unknown, _cb: (err: Error | null) => void): boolean;\r\n}\r\n\r\nexport const TLSSocket = function TLSSocket(this: any, _sock?: unknown, _opts?: unknown) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n  this.authorized = false;\r\n  this.encrypted = true;\r\n} as unknown as { new(_sock?: unknown, _opts?: unknown): TLSSocket; prototype: any };\r\n\r\nObject.setPrototypeOf(TLSSocket.prototype, EventEmitter.prototype);\r\n\r\nTLSSocket.prototype.getPeerCertificate = function getPeerCertificate(_detailed?: boolean): object {\r\n  return {};\r\n};\r\nTLSSocket.prototype.getCipher = function getCipher(): { name: string; version: string } | null {\r\n  return null;\r\n};\r\nTLSSocket.prototype.getProtocol = function getProtocol(): string | null {\r\n  return null;\r\n};\r\nTLSSocket.prototype.setServername = function setServername(_name: string): void {};\r\nTLSSocket.prototype.renegotiate = function renegotiate(_opts: unknown, _cb: (err: Error | null) => void): boolean {\r\n  return false;\r\n};\r\n\r\nexport interface Server extends EventEmitter {\r\n  listen(..._args: unknown[]): this;\r\n  close(_cb?: (err?: Error) => void): this;\r\n  address(): { port: number; family: string; address: string } | string | null;\r\n  getTicketKeys(): Uint8Array;\r\n  setTicketKeys(_keys: Uint8Array): void;\r\n  setSecureContext(_opts: unknown): void;\r\n}\r\n\r\nexport const Server = function Server(this: any, _opts?: unknown, _handler?: (sock: TLSSocket) => void) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n} as unknown as { new(_opts?: unknown, _handler?: (sock: TLSSocket) => void): Server; prototype: any };\r\n\r\nObject.setPrototypeOf(Server.prototype, EventEmitter.prototype);\r\n\r\nServer.prototype.listen = function listen(..._args: unknown[]) { return this; };\r\nServer.prototype.close = function close(_cb?: (err?: Error) => void) { return this; };\r\nServer.prototype.address = function address(): { port: number; family: string; address: string } | string | null {\r\n  return null;\r\n};\r\nServer.prototype.getTicketKeys = function getTicketKeys(): Uint8Array {\r\n  return new Uint8Array(0);\r\n};\r\nServer.prototype.setTicketKeys = function setTicketKeys(_keys: Uint8Array): void {};\r\nServer.prototype.setSecureContext = function setSecureContext(_opts: unknown): void {};\r\n\r\nexport function createServer(\r\n  _opts?: unknown,\r\n  _handler?: (sock: TLSSocket) => void,\r\n): Server {\r\n  return new Server(_opts, _handler);\r\n}\r\n\r\nexport function connect(_opts: unknown, _cb?: () => void): TLSSocket {\r\n  const sock = new TLSSocket();\r\n  if (_cb) setTimeout(_cb, 0);\r\n  return sock;\r\n}\r\n\r\nexport function createSecureContext(_opts?: unknown): object {\r\n  return {};\r\n}\r\n\r\nexport type SecureContext = object;\r\n\r\nexport const getCiphers = (): string[] => [\r\n  \"TLS_AES_256_GCM_SHA384\",\r\n  \"TLS_AES_128_GCM_SHA256\",\r\n];\r\n\r\nexport const DEFAULT_ECDH_CURVE = \"auto\";\r\nexport const DEFAULT_MAX_VERSION = \"TLSv1.3\";\r\nexport const DEFAULT_MIN_VERSION = \"TLSv1.2\";\r\nexport const rootCertificates: string[] = [];\r\n\r\nexport default {\r\n  TLSSocket,\r\n  Server,\r\n  createServer,\r\n  connect,\r\n  createSecureContext,\r\n  getCiphers,\r\n  DEFAULT_ECDH_CURVE,\r\n  DEFAULT_MAX_VERSION,\r\n  DEFAULT_MIN_VERSION,\r\n  rootCertificates,\r\n};\r\n","// stub - not available in browser\r\n\r\n\r\nimport { EventEmitter } from \"./events\";\r\nimport { getRegistry, type Handle } from \"../helpers/event-loop\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Sessions                                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Http2Session extends EventEmitter {\r\n  close(done?: () => void): void;\r\n  destroy(_err?: Error, _code?: number): void;\r\n  readonly destroyed: boolean;\r\n  readonly encrypted: boolean;\r\n  readonly closed: boolean;\r\n  ping(_cb: (err: Error | null, dur: number, buf: Uint8Array) => void): boolean;\r\n  ref(): void;\r\n  unref(): void;\r\n  setTimeout(_ms: number, _cb?: () => void): void;\r\n}\r\n\r\nexport const Http2Session = function Http2Session(this: any) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n  this._elHandle = getRegistry().register(\"HTTP2Session\");\r\n} as unknown as { new(): Http2Session; prototype: any };\r\n\r\nObject.setPrototypeOf(Http2Session.prototype, EventEmitter.prototype);\r\n\r\nHttp2Session.prototype.close = function close(done?: () => void): void {\r\n  (this._elHandle as Handle | null)?.close();\r\n  this._elHandle = null;\r\n  if (done) setTimeout(done, 0);\r\n};\r\nHttp2Session.prototype.destroy = function destroy(_err?: Error, _code?: number): void {\r\n  (this._elHandle as Handle | null)?.close();\r\n  this._elHandle = null;\r\n};\r\nObject.defineProperty(Http2Session.prototype, 'destroyed', { get() { return false; }, configurable: true });\r\nObject.defineProperty(Http2Session.prototype, 'encrypted', { get() { return false; }, configurable: true });\r\nObject.defineProperty(Http2Session.prototype, 'closed', { get() { return false; }, configurable: true });\r\nHttp2Session.prototype.ping = function ping(\r\n  _cb: (err: Error | null, dur: number, buf: Uint8Array) => void,\r\n): boolean { return false; };\r\nHttp2Session.prototype.ref = function ref(): void { (this._elHandle as Handle | null)?.ref(); };\r\nHttp2Session.prototype.unref = function unref(): void { (this._elHandle as Handle | null)?.unref(); };\r\nHttp2Session.prototype.setTimeout = function setTimeout(_ms: number, _cb?: () => void): void {};\r\n\r\nexport interface ClientHttp2Session extends Http2Session {}\r\n\r\nexport const ClientHttp2Session = function ClientHttp2Session(this: any) {\r\n  if (!this) return;\r\n  (Http2Session as any).call(this);\r\n} as unknown as { new(): ClientHttp2Session; prototype: any };\r\n\r\nObject.setPrototypeOf(ClientHttp2Session.prototype, Http2Session.prototype);\r\n\r\nexport interface ServerHttp2Session extends Http2Session {}\r\n\r\nexport const ServerHttp2Session = function ServerHttp2Session(this: any) {\r\n  if (!this) return;\r\n  (Http2Session as any).call(this);\r\n} as unknown as { new(): ServerHttp2Session; prototype: any };\r\n\r\nObject.setPrototypeOf(ServerHttp2Session.prototype, Http2Session.prototype);\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Streams                                                            */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Http2Stream extends EventEmitter {\r\n  close(_code?: number, _cb?: () => void): void;\r\n  readonly id: number;\r\n  readonly pending: boolean;\r\n  readonly destroyed: boolean;\r\n  readonly closed: boolean;\r\n  priority(_opts: unknown): void;\r\n  setTimeout(_ms: number, _cb?: () => void): void;\r\n  end(_data?: unknown, _enc?: string, _cb?: () => void): void;\r\n}\r\n\r\nexport const Http2Stream = function Http2Stream(this: any) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n} as unknown as { new(): Http2Stream; prototype: any };\r\n\r\nObject.setPrototypeOf(Http2Stream.prototype, EventEmitter.prototype);\r\n\r\nHttp2Stream.prototype.close = function close(_code?: number, _cb?: () => void): void {};\r\nObject.defineProperty(Http2Stream.prototype, 'id', { get() { return 0; }, configurable: true });\r\nObject.defineProperty(Http2Stream.prototype, 'pending', { get() { return false; }, configurable: true });\r\nObject.defineProperty(Http2Stream.prototype, 'destroyed', { get() { return false; }, configurable: true });\r\nObject.defineProperty(Http2Stream.prototype, 'closed', { get() { return false; }, configurable: true });\r\nHttp2Stream.prototype.priority = function priority(_opts: unknown): void {};\r\nHttp2Stream.prototype.setTimeout = function setTimeout(_ms: number, _cb?: () => void): void {};\r\nHttp2Stream.prototype.end = function end(_data?: unknown, _enc?: string, _cb?: () => void): void {};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Request / Response                                                 */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Http2ServerRequest extends EventEmitter {}\r\n\r\nexport const Http2ServerRequest = function Http2ServerRequest(this: any) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n} as unknown as { new(): Http2ServerRequest; prototype: any };\r\n\r\nObject.setPrototypeOf(Http2ServerRequest.prototype, EventEmitter.prototype);\r\n\r\nexport interface Http2ServerResponse extends EventEmitter {\r\n  writeHead(_code: number, _hdrs?: object): this;\r\n  end(_data?: unknown): void;\r\n}\r\n\r\nexport const Http2ServerResponse = function Http2ServerResponse(this: any) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n} as unknown as { new(): Http2ServerResponse; prototype: any };\r\n\r\nObject.setPrototypeOf(Http2ServerResponse.prototype, EventEmitter.prototype);\r\n\r\nHttp2ServerResponse.prototype.writeHead = function writeHead(_code: number, _hdrs?: object) { return this; };\r\nHttp2ServerResponse.prototype.end = function end(_data?: unknown): void {};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Factories                                                          */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport function createServer(\r\n  _opts?: unknown,\r\n  _handler?: unknown,\r\n): EventEmitter {\r\n  return new EventEmitter();\r\n}\r\n\r\nexport function createSecureServer(\r\n  _opts?: unknown,\r\n  _handler?: unknown,\r\n): EventEmitter {\r\n  return new EventEmitter();\r\n}\r\n\r\nexport function connect(\r\n  _authority: string,\r\n  _opts?: unknown,\r\n  _cb?: () => void,\r\n): ClientHttp2Session {\r\n  return new ClientHttp2Session();\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Constants                                                          */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const constants = {\r\n  NGHTTP2_SESSION_SERVER: 0,\r\n  NGHTTP2_SESSION_CLIENT: 1,\r\n  HTTP2_HEADER_STATUS: \":status\",\r\n  HTTP2_HEADER_METHOD: \":method\",\r\n  HTTP2_HEADER_AUTHORITY: \":authority\",\r\n  HTTP2_HEADER_SCHEME: \":scheme\",\r\n  HTTP2_HEADER_PATH: \":path\",\r\n  HTTP_STATUS_OK: 200,\r\n  HTTP_STATUS_NOT_FOUND: 404,\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Settings helpers                                                   */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport function getDefaultSettings(): object {\r\n  return {};\r\n}\r\n\r\nexport function getPackedSettings(_settings?: object): Uint8Array {\r\n  return new Uint8Array(0);\r\n}\r\n\r\nexport function getUnpackedSettings(_buf: Uint8Array): object {\r\n  return {};\r\n}\r\n\r\nexport const sensitiveHeaders = Symbol(\"sensitiveHeaders\");\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Default export                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport default {\r\n  Http2Session,\r\n  ClientHttp2Session,\r\n  ServerHttp2Session,\r\n  Http2Stream,\r\n  Http2ServerRequest,\r\n  Http2ServerResponse,\r\n  createServer,\r\n  createSecureServer,\r\n  connect,\r\n  constants,\r\n  getDefaultSettings,\r\n  getPackedSettings,\r\n  getUnpackedSettings,\r\n  sensitiveHeaders,\r\n};\r\n","// stub - not available in browser, always reports as primary\r\n\r\nimport { EventEmitter } from \"./events\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Flags                                                              */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const isMaster = true;\r\nexport const isPrimary = true;\r\nexport const isWorker = false;\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Worker                                                             */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Worker extends EventEmitter {\r\n  id: number;\r\n  process: null;\r\n  send(_msg: unknown, _cb?: (err: Error | null) => void): boolean;\r\n  kill(_sig?: string): void;\r\n  disconnect(): void;\r\n  isDead(): boolean;\r\n  isConnected(): boolean;\r\n}\r\n\r\nexport const Worker = function Worker(this: any) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n  this.id = 0;\r\n  this.process = null;\r\n} as unknown as { new(): Worker; prototype: any };\r\n\r\nObject.setPrototypeOf(Worker.prototype, EventEmitter.prototype);\r\n\r\nWorker.prototype.send = function send(_msg: unknown, _cb?: (err: Error | null) => void): boolean { return false; };\r\nWorker.prototype.kill = function kill(_sig?: string): void {};\r\nWorker.prototype.disconnect = function disconnect(): void {};\r\nWorker.prototype.isDead = function isDead(): boolean { return false; };\r\nWorker.prototype.isConnected = function isConnected(): boolean { return false; };\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Singletons                                                         */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const worker: Worker | null = null;\r\nexport const workers: Record<number, Worker> = {};\r\nexport const settings: Record<string, unknown> = {};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Scheduling                                                         */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const SCHED_NONE = 1;\r\nexport const SCHED_RR = 2;\r\nexport let schedulingPolicy = SCHED_RR;\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Functions                                                          */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport function fork(_env?: object): Worker {\r\n  return new Worker();\r\n}\r\n\r\nexport function disconnect(done?: () => void): void {\r\n  if (done) setTimeout(done, 0);\r\n}\r\n\r\nexport function setupMaster(_cfg?: object): void {}\r\nexport function setupPrimary(_cfg?: object): void {}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Event emitter delegation                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst _bus = new EventEmitter();\r\nexport const on = _bus.on.bind(_bus);\r\nexport const once = _bus.once.bind(_bus);\r\nexport const emit = _bus.emit.bind(_bus);\r\nexport const removeListener = _bus.removeListener.bind(_bus);\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Default export                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport default {\r\n  isMaster,\r\n  isPrimary,\r\n  isWorker,\r\n  Worker,\r\n  worker,\r\n  workers,\r\n  fork,\r\n  disconnect,\r\n  settings,\r\n  SCHED_NONE,\r\n  SCHED_RR,\r\n  schedulingPolicy,\r\n  setupMaster,\r\n  setupPrimary,\r\n  on,\r\n  once,\r\n  emit,\r\n  removeListener,\r\n};\r\n","// stub - not available in browser\r\n\r\nimport { EventEmitter } from \"./events\";\r\nimport { getRegistry, type Handle } from \"../helpers/event-loop\";\r\n\r\nexport interface Socket extends EventEmitter {\r\n  bind(_port?: number, _addr?: string, _cb?: () => void): this;\r\n  close(_cb?: () => void): void;\r\n  send(\r\n    _msg: Uint8Array | string,\r\n    _offset?: number,\r\n    _length?: number,\r\n    _port?: number,\r\n    _addr?: string,\r\n    _cb?: (err: Error | null, bytes: number) => void,\r\n  ): void;\r\n  address(): { address: string; family: string; port: number };\r\n  setBroadcast(_flag: boolean): void;\r\n  setTTL(_ttl: number): number;\r\n  setMulticastTTL(_ttl: number): number;\r\n  setMulticastLoopback(_flag: boolean): boolean;\r\n  setMulticastInterface(_iface: string): void;\r\n  addMembership(_group: string, _iface?: string): void;\r\n  dropMembership(_group: string, _iface?: string): void;\r\n  ref(): this;\r\n  unref(): this;\r\n  setRecvBufferSize(_sz: number): void;\r\n  setSendBufferSize(_sz: number): void;\r\n  getRecvBufferSize(): number;\r\n  getSendBufferSize(): number;\r\n}\r\n\r\nexport const Socket = function Socket(this: any) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n  this._elHandle = null;\r\n} as unknown as { new(): Socket; prototype: any };\r\n\r\nObject.setPrototypeOf(Socket.prototype, EventEmitter.prototype);\r\n\r\nSocket.prototype.bind = function bind(_port?: number, _addr?: string, _cb?: () => void) {\r\n  if (!this._elHandle) this._elHandle = getRegistry().register(\"UDPWrap\");\r\n  if (_cb) setTimeout(_cb, 0);\r\n  return this;\r\n};\r\n\r\nSocket.prototype.close = function close(_cb?: () => void): void {\r\n  (this._elHandle as Handle | null)?.close();\r\n  this._elHandle = null;\r\n  if (_cb) setTimeout(_cb, 0);\r\n};\r\n\r\nSocket.prototype.send = function send(\r\n  _msg: Uint8Array | string,\r\n  _offset?: number,\r\n  _length?: number,\r\n  _port?: number,\r\n  _addr?: string,\r\n  _cb?: (err: Error | null, bytes: number) => void,\r\n): void {\r\n  if (_cb) setTimeout(() => _cb(null, 0), 0);\r\n};\r\n\r\nSocket.prototype.address = function address(): { address: string; family: string; port: number } {\r\n  return { address: \"0.0.0.0\", family: \"IPv4\", port: 0 };\r\n};\r\n\r\nSocket.prototype.setBroadcast = function setBroadcast(_flag: boolean): void {};\r\nSocket.prototype.setTTL = function setTTL(_ttl: number): number { return _ttl; };\r\nSocket.prototype.setMulticastTTL = function setMulticastTTL(_ttl: number): number { return _ttl; };\r\nSocket.prototype.setMulticastLoopback = function setMulticastLoopback(_flag: boolean): boolean { return _flag; };\r\nSocket.prototype.setMulticastInterface = function setMulticastInterface(_iface: string): void {};\r\nSocket.prototype.addMembership = function addMembership(_group: string, _iface?: string): void {};\r\nSocket.prototype.dropMembership = function dropMembership(_group: string, _iface?: string): void {};\r\nSocket.prototype.ref = function ref() { (this._elHandle as Handle | null)?.ref(); return this; };\r\nSocket.prototype.unref = function unref() { (this._elHandle as Handle | null)?.unref(); return this; };\r\nSocket.prototype.setRecvBufferSize = function setRecvBufferSize(_sz: number): void {};\r\nSocket.prototype.setSendBufferSize = function setSendBufferSize(_sz: number): void {};\r\nSocket.prototype.getRecvBufferSize = function getRecvBufferSize(): number { return 0; };\r\nSocket.prototype.getSendBufferSize = function getSendBufferSize(): number { return 0; };\r\n\r\nexport function createSocket(\r\n  _type: string | object,\r\n  _cb?: (msg: Uint8Array, rinfo: object) => void,\r\n): Socket {\r\n  return new Socket();\r\n}\r\n\r\nexport default {\r\n  Socket,\r\n  createSocket,\r\n};\r\n","// VM polyfill using eval/Function since no V8 isolate API in browser\n\n\n/* ------------------------------------------------------------------ */\n/*  Script                                                             */\n/* ------------------------------------------------------------------ */\n\nexport interface Script {\n  runInThisContext(_opts?: object): unknown;\n  runInNewContext(ctx?: object, _opts?: object): unknown;\n  runInContext(ctx: object, _opts?: object): unknown;\n  createCachedData(): Uint8Array;\n}\n\nexport const Script = function Script(this: any, src: string, _opts?: object) {\n  if (!this) return;\n  this._src = src;\n} as unknown as { new(src: string, _opts?: object): Script; prototype: any };\n\nScript.prototype.runInThisContext = function runInThisContext(_opts?: object): unknown {\n  return (0, eval)(this._src);\n};\n\nScript.prototype.runInNewContext = function runInNewContext(ctx?: object, _opts?: object): unknown {\n  const sandbox = (ctx ?? {}) as Record<string, unknown>;\n  // In Node's vm, the sandbox IS the context's global object: writes to\n  // `globalThis.foo` / `this.foo` inside the script must land on the sandbox.\n  // Next.js relies on this (evalManifest reads ctx.__RSC_MANIFEST back out).\n  // We emulate it by shadowing `globalThis` with the sandbox and binding\n  // `this` to it; sandbox keys are also exposed as local bindings.\n  const names = Object.keys(sandbox).filter(\n    (n) => n !== \"globalThis\" && n !== \"self\" && n !== \"this\",\n  );\n  const vals = names.map((n) => sandbox[n]);\n  const wrapper = new Function(\"globalThis\", \"self\", ...names, `return eval(${JSON.stringify(this._src)})`);\n  return wrapper.call(sandbox, sandbox, sandbox, ...vals);\n};\n\nScript.prototype.runInContext = function runInContext(ctx: object, _opts?: object): unknown {\n  return this.runInNewContext(ctx, _opts);\n};\n\nScript.prototype.createCachedData = function createCachedData(): Uint8Array {\n  return new Uint8Array(0);\n};\n\n/* ------------------------------------------------------------------ */\n/*  Standalone helpers                                                 */\n/* ------------------------------------------------------------------ */\n\nexport function createContext(sandbox?: object, _opts?: object): object {\n  return sandbox ?? {};\n}\n\nexport function isContext(_box: object): boolean {\n  return true;\n}\n\nexport function runInThisContext(code: string, _opts?: object): unknown {\n  return (0, eval)(code);\n}\n\nexport function runInNewContext(code: string, ctx?: object, _opts?: object): unknown {\n  return new Script(code).runInNewContext(ctx);\n}\n\nexport function runInContext(code: string, ctx: object, _opts?: object): unknown {\n  return runInNewContext(code, ctx);\n}\n\nexport function compileFunction(\n  body: string,\n  params?: string[],\n  _opts?: object\n): Function {\n  return new Function(...(params ?? []), body);\n}\n\n/* ------------------------------------------------------------------ */\n/*  ESM Module stubs                                                   */\n/* ------------------------------------------------------------------ */\n\nexport interface Module {\n  link(_linker: unknown): Promise<void>;\n  evaluate(_opts?: object): Promise<unknown>;\n  readonly status: string;\n  readonly identifier: string;\n  readonly context: object;\n  readonly namespace: object;\n}\n\nexport const Module = function Module(this: any, _code: string, _opts?: object) {\n  if (!this) return;\n} as unknown as { new(_code: string, _opts?: object): Module; prototype: any };\n\nModule.prototype.link = function link(_linker: unknown): Promise<void> { return Promise.resolve(); };\nModule.prototype.evaluate = function evaluate(_opts?: object): Promise<unknown> { return Promise.resolve(); };\nObject.defineProperty(Module.prototype, 'status', { get() { return 'unlinked'; }, configurable: true });\nObject.defineProperty(Module.prototype, 'identifier', { get() { return ''; }, configurable: true });\nObject.defineProperty(Module.prototype, 'context', { get() { return {}; }, configurable: true });\nObject.defineProperty(Module.prototype, 'namespace', { get() { return {}; }, configurable: true });\n\nexport interface SourceTextModule extends Module {}\n\nexport const SourceTextModule = function SourceTextModule(this: any, _code: string, _opts?: object) {\n  if (!this) return;\n  (Module as any).call(this, _code, _opts);\n} as unknown as { new(_code: string, _opts?: object): SourceTextModule; prototype: any };\n\nObject.setPrototypeOf(SourceTextModule.prototype, Module.prototype);\n\nexport interface SyntheticModule extends Module {\n  setExport(_name: string, _value: unknown): void;\n}\n\nexport const SyntheticModule = function SyntheticModule(this: any, _code: string, _opts?: object) {\n  if (!this) return;\n  (Module as any).call(this, _code, _opts);\n} as unknown as { new(_code: string, _opts?: object): SyntheticModule; prototype: any };\n\nObject.setPrototypeOf(SyntheticModule.prototype, Module.prototype);\n\nSyntheticModule.prototype.setExport = function setExport(_name: string, _value: unknown): void {};\n\n/* ------------------------------------------------------------------ */\n/*  Default export                                                     */\n/* ------------------------------------------------------------------ */\n\nexport default {\n  Script,\n  createContext,\n  isContext,\n  runInThisContext,\n  runInNewContext,\n  runInContext,\n  compileFunction,\n  Module,\n  SourceTextModule,\n  SyntheticModule,\n};\n","// stub - not available in browser\n\n\nimport { EventEmitter } from \"./events\";\n\n/* ------------------------------------------------------------------ */\n/*  Session                                                            */\n/* ------------------------------------------------------------------ */\n\nexport interface Session extends EventEmitter {\n  connect(): void;\n  connectToMainThread(): void;\n  disconnect(): void;\n  post(\n    _method: string,\n    _params?: object,\n    _cb?: (err: Error | null, result?: object) => void,\n  ): void;\n}\n\nexport const Session = function Session(this: any) {\n  if (!this) return;\n  EventEmitter.call(this);\n} as unknown as { new(): Session; prototype: any };\n\nObject.setPrototypeOf(Session.prototype, EventEmitter.prototype);\n\nSession.prototype.connect = function connect(): void {};\nSession.prototype.connectToMainThread = function connectToMainThread(): void {};\nSession.prototype.disconnect = function disconnect(): void {};\nSession.prototype.post = function post(\n  _method: string,\n  _params?: object,\n  _cb?: (err: Error | null, result?: object) => void,\n): void {\n  if (_cb) setTimeout(() => _cb(null, {}), 0);\n};\n\n/* ------------------------------------------------------------------ */\n/*  Module-level helpers                                               */\n/* ------------------------------------------------------------------ */\n\nexport function open(_port?: number, _host?: string, _wait?: boolean): void {}\nexport function close(): void {}\nexport function url(): string | undefined {\n  return undefined;\n}\nexport function waitForDebugger(): void {}\rconst nativeConsole: Console = globalThis.console;\nexport { nativeConsole as console };\n\n/* ------------------------------------------------------------------ */\n/*  Default export                                                     */\n/* ------------------------------------------------------------------ */\n\nexport default {\n  Session,\n  open,\n  close,\n  url,\n  waitForDebugger,\n  console: nativeConsole,\n};\n","// AsyncLocalStorage polyfill with async-context propagation.\n// Next.js app-router stores per-request state in workUnitAsyncStorage and\n// expects getStore() to survive await boundaries and concurrent requests.\n//\n// V8 async/await schedules continuations through the global Promise constructor\n// but bypasses Promise.prototype.then on the builtin prototype. Replacing\n// globalThis.Promise with a subclass whose then/catch/finally capture the\n// current store frame makes await participate in context propagation. run()\n// keeps the active frame until an async callback's returned promise settles so\n// the frame is still current when await registers its continuation handler.\n\ntype StoreFrame = Map<object, unknown>;\n\nlet currentFrame: StoreFrame = new Map();\nlet asyncContextInstalled = false;\n\nfunction captureFrame(): StoreFrame {\n  return new Map(currentFrame);\n}\n\nconst NativePromise = Promise;\n\n// Synchronous frame switch. Always restores in finally: continuations\n// registered outside an active run() fire interleaved with the run's awaits,\n// and leaving their (often empty) frame current would clobber the run's store\n// for every subsequent native-await resumption.\nfunction runWithFrame<R>(frame: StoreFrame, fn: () => R): R {\n  const prev = currentFrame;\n  currentFrame = frame;\n  try {\n    return fn();\n  } finally {\n    currentFrame = prev;\n  }\n}\n\n// Frame switch that survives native async/await inside fn. If fn returns a\n// promise, the frame is held current until it settles, because V8 resumes\n// async function bodies through internal promise reactions that bypass any\n// user-visible then(). Restore is guarded so a scope that settles while a\n// newer scope's frame is current doesn't stomp it.\nfunction runScoped<R>(frame: StoreFrame, fn: () => R): R {\n  const prev = currentFrame;\n  currentFrame = frame;\n  const finish = () => {\n    if (currentFrame === frame) {\n      currentFrame = prev;\n    }\n  };\n  try {\n    const result = fn();\n    const maybePromise = result as unknown;\n    if (maybePromise != null && typeof (maybePromise as PromiseLike<unknown>).then === \"function\") {\n      return NativePromise.resolve(maybePromise as PromiseLike<unknown>).finally(finish) as R;\n    }\n    finish();\n    return result;\n  } catch (err) {\n    finish();\n    throw err;\n  }\n}\n\nfunction wrapCallback<T extends (...args: any[]) => any>(\n  cb: T | undefined | null,\n  frame: StoreFrame,\n): T | undefined | null {\n  if (typeof cb !== \"function\") return cb;\n  const wrapped = function (this: unknown, ...args: unknown[]) {\n    // Sync restore (runWithFrame, NOT runScoped): if this callback captured\n    // an empty/stale frame and held it across its own awaits, it would be\n    // current when an active run()'s native-await resumptions fire and would\n    // clobber the run's store. The run's frame is held by runScoped instead,\n    // so restoring here hands control straight back to it.\n    return runWithFrame(frame, () => cb.apply(this, args));\n  } as T;\n  return wrapped;\n}\n\nclass ContextPromise<T = unknown> extends NativePromise<T> {\n  static get [Symbol.species]() {\n    return ContextPromise;\n  }\n\n  then<TResult1 = T, TResult2 = never>(\n    onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n    onRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n  ): ContextPromise<TResult1 | TResult2> {\n    const frame = captureFrame();\n    return super.then(\n      wrapCallback(onFulfilled, frame),\n      wrapCallback(onRejected, frame),\n    ) as ContextPromise<TResult1 | TResult2>;\n  }\n\n  catch<TResult = never>(\n    onRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null,\n  ): ContextPromise<T | TResult> {\n    const frame = captureFrame();\n    return super.catch(wrapCallback(onRejected, frame)) as ContextPromise<T | TResult>;\n  }\n\n  finally(onFinally?: (() => void) | null): ContextPromise<T> {\n    const frame = captureFrame();\n    return super.finally(wrapCallback(onFinally, frame)) as ContextPromise<T>;\n  }\n\n  static resolve<T>(value?: T | PromiseLike<T>): ContextPromise<T> {\n    if (value instanceof ContextPromise) {\n      return value;\n    }\n    if (value != null && typeof (value as PromiseLike<T>).then === \"function\") {\n      return new ContextPromise((resolve, reject) => {\n        NativePromise.resolve(value).then(resolve, reject);\n      });\n    }\n    return new ContextPromise((resolve) => {\n      resolve(value as T);\n    });\n  }\n\n  static reject<T = never>(reason?: unknown): ContextPromise<T> {\n    return new ContextPromise((_resolve, reject) => {\n      reject(reason);\n    });\n  }\n\n  static all<T extends readonly unknown[] | []>(\n    values: T,\n  ): ContextPromise<{ -readonly [P in keyof T]: Awaited<T[P]> }> {\n    return ContextPromise.resolve(\n      NativePromise.all(values),\n    ) as ContextPromise<{ -readonly [P in keyof T]: Awaited<T[P]> }>;\n  }\n\n  static race<T extends readonly unknown[] | []>(\n    values: T,\n  ): ContextPromise<Awaited<T[number]>> {\n    return ContextPromise.resolve(\n      NativePromise.race(values),\n    ) as ContextPromise<Awaited<T[number]>>;\n  }\n\n  static allSettled<T extends readonly unknown[] | []>(\n    values: T,\n  ): ContextPromise<{ -readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>> }> {\n    return ContextPromise.resolve(\n      NativePromise.allSettled(values),\n    ) as ContextPromise<{ -readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>> }>;\n  }\n\n  static any<T extends readonly unknown[] | []>(\n    values: T,\n  ): ContextPromise<Awaited<T[number]>> {\n    return ContextPromise.resolve(\n      NativePromise.any(values),\n    ) as ContextPromise<Awaited<T[number]>>;\n  }\n}\n\nfunction patchTimerContext(): void {\n  const wrapTimer = <F extends (...args: any[]) => void>(fn: F): F => {\n    const frame = captureFrame();\n    return ((...args: unknown[]) => {\n      // Sync restore for the same reason as wrapCallback.\n      runWithFrame(frame, () => fn(...args));\n    }) as F;\n  };\n\n  if (!(globalThis.queueMicrotask as any)?.__nodepodAsyncCtx) {\n    const orig = globalThis.queueMicrotask.bind(globalThis);\n    globalThis.queueMicrotask = ((cb: () => void) => {\n      orig(wrapTimer(cb));\n    }) as typeof queueMicrotask;\n    (globalThis.queueMicrotask as any).__nodepodAsyncCtx = true;\n  }\n\n  if (!(globalThis.setTimeout as any)?.__nodepodAsyncCtx) {\n    const origSetTimeout = globalThis.setTimeout.bind(globalThis);\n    globalThis.setTimeout = ((handler: TimerHandler, timeout?: number, ...args: unknown[]) => {\n      const wrapped =\n        typeof handler === \"function\" ? wrapTimer(handler as (...a: unknown[]) => void) : handler;\n      return origSetTimeout(wrapped, timeout as number, ...args);\n    }) as typeof setTimeout;\n    (globalThis.setTimeout as any).__nodepodAsyncCtx = true;\n  }\n\n  if (typeof globalThis.setImmediate === \"function\" && !(globalThis.setImmediate as any).__nodepodAsyncCtx) {\n    const origSetImmediate = globalThis.setImmediate.bind(globalThis);\n    globalThis.setImmediate = ((handler: (...args: unknown[]) => void, ...args: unknown[]) => {\n      return origSetImmediate(wrapTimer(handler), ...args);\n    }) as typeof setImmediate;\n    (globalThis.setImmediate as any).__nodepodAsyncCtx = true;\n  }\n}\n\nexport function installAsyncContext(): void {\n  if (asyncContextInstalled) return;\n  asyncContextInstalled = true;\n\n  if (!(globalThis.Promise as any)?.__nodepodAsyncCtx) {\n    (globalThis as any).Promise = ContextPromise;\n    (ContextPromise as any).__nodepodAsyncCtx = true;\n  }\n\n  patchTimerContext();\n}\n\ninstallAsyncContext();\n\n/* ------------------------------------------------------------------ */\n/*  AsyncResource                                                      */\n/* ------------------------------------------------------------------ */\n\nexport interface AsyncResource {\n  runInAsyncScope<R>(fn: (...a: any[]) => R, thisArg?: unknown, ...args: any[]): R;\n  emitDestroy(): this;\n  asyncId(): number;\n  triggerAsyncId(): number;\n}\n\nexport const AsyncResource = function AsyncResource(this: any, _kind: string, _opts?: object) {\n  if (!this) return;\n} as unknown as { new(_kind: string, _opts?: object): AsyncResource; prototype: any; bind<F extends (...a: any[]) => any>(fn: F, _kind?: string): F };\n\nAsyncResource.prototype.runInAsyncScope = function runInAsyncScope<R>(\n  fn: (...a: any[]) => R,\n  thisArg?: unknown,\n  ...args: any[]\n): R {\n  return fn.apply(thisArg, args);\n};\nAsyncResource.prototype.emitDestroy = function emitDestroy() { return this; };\nAsyncResource.prototype.asyncId = function asyncId(): number { return 0; };\nAsyncResource.prototype.triggerAsyncId = function triggerAsyncId(): number { return 0; };\n\nAsyncResource.bind = function bind<F extends (...a: any[]) => any>(fn: F, _kind?: string): F {\n  const frame = captureFrame();\n  return function (this: unknown, ...args: unknown[]) {\n    return runWithFrame(frame, () => fn.apply(this, args));\n  } as F;\n};\n\n/* ------------------------------------------------------------------ */\n/*  AsyncLocalStorage                                                  */\n/* ------------------------------------------------------------------ */\n\nexport interface AsyncLocalStorage<T> {\n  disable(): void;\n  getStore(): T | undefined;\n  run<R>(store: T, fn: (...args: any[]) => R, ...args: any[]): R;\n  exit<R>(fn: (...args: any[]) => R, ...args: any[]): R;\n  enterWith(store: T): void;\n}\n\nexport const AsyncLocalStorage = function AsyncLocalStorage(this: any) {\n  if (!this) return;\n  this._enabled = true;\n} as unknown as {\n  new<T>(): AsyncLocalStorage<T>;\n  prototype: any;\n  snapshot(): <R>(fn: (...args: any[]) => R, ...args: any[]) => R;\n  bind<F extends (...a: any[]) => any>(fn: F): F;\n};\n\n(AsyncLocalStorage as any).__nodepodAsyncCtx = true;\n\nAsyncLocalStorage.snapshot = function snapshot() {\n  const frame = captureFrame();\n  return function runSnapshot(fn: (...args: any[]) => any, ...args: any[]) {\n    return runWithFrame(frame, () => fn(...args));\n  };\n};\n\nAsyncLocalStorage.bind = function bind<F extends (...a: any[]) => any>(fn: F): F {\n  const frame = captureFrame();\n  return function (this: unknown, ...args: unknown[]) {\n    return runWithFrame(frame, () => fn.apply(this, args));\n  } as F;\n};\n\n// Marks \"explicitly no store\" inside exit() frames, so the sticky fallback\n// below doesn't resurrect a store the caller asked to leave.\nconst EXCLUDED: unique symbol = Symbol(\"nodepod.als.excluded\");\n\nAsyncLocalStorage.prototype.disable = function disable(): void {\n  this._enabled = false;\n  this._stickyStore = undefined;\n};\n\n// Sticky fallback: when the current frame has no entry for this storage,\n// return the store of the most recent run(). Real AsyncLocalStorage carries\n// context per-continuation, so work spawned inside run() (e.g. Next.js\n// streaming Suspense chunks that flush AFTER the awaited response promise\n// settled) still sees the request store. We can't observe native async/await\n// resumptions from a polyfill, so without this fallback that late work reads\n// undefined and Next throws \"Expected workUnitAsyncStorage to have a store\".\n// Trade-off: code running truly outside any run() sees the last run's store\n// instead of undefined — acceptable for a dev sandbox, where a missing store\n// is fatal but a stale one is not.\nAsyncLocalStorage.prototype.getStore = function getStore() {\n  if (this._enabled === false) return undefined;\n  if (currentFrame.has(this)) {\n    const value = currentFrame.get(this);\n    return value === EXCLUDED ? undefined : value;\n  }\n  return this._stickyStore;\n};\n\nAsyncLocalStorage.prototype.run = function run(store: any, fn: (...args: any[]) => any, ...args: any[]) {\n  this._stickyStore = store;\n  const frame = captureFrame();\n  frame.set(this, store);\n  return runScoped(frame, () => fn(...args));\n};\n\nAsyncLocalStorage.prototype.exit = function exit(fn: (...args: any[]) => any, ...args: any[]) {\n  const frame = captureFrame();\n  frame.set(this, EXCLUDED);\n  return runScoped(frame, () => fn(...args));\n};\n\nAsyncLocalStorage.prototype.enterWith = function enterWith(store: any): void {\n  this._stickyStore = store;\n  currentFrame.set(this, store);\n};\n\n/* ------------------------------------------------------------------ */\n/*  Hook API                                                           */\n/* ------------------------------------------------------------------ */\n\nexport interface AsyncHook {\n  enable(): AsyncHook;\n  disable(): AsyncHook;\n}\n\nexport function createHook(_callbacks: object): AsyncHook {\n  const hook: AsyncHook = {\n    enable() {\n      return hook;\n    },\n    disable() {\n      return hook;\n    },\n  };\n  return hook;\n}\n\nexport function executionAsyncId(): number {\n  return 0;\n}\nexport function executionAsyncResource(): object {\n  return {};\n}\nexport function triggerAsyncId(): number {\n  return 0;\n}\n\n/* ------------------------------------------------------------------ */\n/*  Default export                                                     */\n/* ------------------------------------------------------------------ */\n\nexport default {\n  AsyncResource,\n  AsyncLocalStorage,\n  createHook,\n  executionAsyncId,\n  executionAsyncResource,\n  triggerAsyncId,\n  installAsyncContext,\n};\n","// stub - deprecated in Node.js, minimal pass-through implementation\n\n\nimport { EventEmitter } from \"./events\";\n\n/* ------------------------------------------------------------------ */\n/*  Domain                                                             */\n/* ------------------------------------------------------------------ */\n\nexport interface Domain extends EventEmitter {\n  members: unknown[];\n  add(emitter: EventEmitter): void;\n  remove(emitter: EventEmitter): void;\n  bind<F extends (...args: unknown[]) => unknown>(fn: F): F;\n  intercept<F extends (...args: unknown[]) => unknown>(fn: F): F;\n  run<T>(fn: () => T): T;\n  dispose(): void;\n  enter(): void;\n  exit(): void;\n}\n\nexport const Domain = function Domain(this: any) {\n  if (!this) return;\n  EventEmitter.call(this);\n  this.members = [];\n} as unknown as { new(): Domain; prototype: any };\n\nObject.setPrototypeOf(Domain.prototype, EventEmitter.prototype);\n\nDomain.prototype.add = function add(emitter: EventEmitter): void {\n  this.members.push(emitter);\n};\nDomain.prototype.remove = function remove(emitter: EventEmitter): void {\n  const idx = this.members.indexOf(emitter);\n  if (idx >= 0) this.members.splice(idx, 1);\n};\nDomain.prototype.bind = function bind<F extends (...args: unknown[]) => unknown>(fn: F): F {\n  return fn;\n};\nDomain.prototype.intercept = function intercept<F extends (...args: unknown[]) => unknown>(fn: F): F {\n  return fn;\n};\nDomain.prototype.run = function run<T>(fn: () => T): T {\n  return fn();\n};\nDomain.prototype.dispose = function dispose(): void {\n  this.members.length = 0;\n};\nDomain.prototype.enter = function enter(): void {};\nDomain.prototype.exit = function exit(): void {};\n\n/* ------------------------------------------------------------------ */\n/*  Factory                                                            */\n/* ------------------------------------------------------------------ */\n\nexport function create(): Domain {\n  return new Domain();\n}\rexport let active: Domain | null = null;\n\n/* ------------------------------------------------------------------ */\n/*  Default export                                                     */\n/* ------------------------------------------------------------------ */\n\nexport default {\n  Domain,\n  create,\n  active,\n};\n","// stub - minimal diagnostics_channel for compatibility\r\n\r\n\r\nexport interface DiagChannel {\r\n  name: string;\r\n  readonly hasSubscribers: boolean;\r\n  subscribe(handler: (message: unknown, name: string) => void): void;\r\n  unsubscribe(handler: (message: unknown, name: string) => void): boolean;\r\n  publish(message: unknown): void;\r\n}\r\n\r\nexport const DiagChannel = function DiagChannel(this: any, name: string) {\r\n  if (!this) return;\r\n  this.name = name;\r\n  this._listeners = [];\r\n} as unknown as { new(name: string): DiagChannel; prototype: any };\r\n\r\nObject.defineProperty(DiagChannel.prototype, 'hasSubscribers', {\r\n  get(this: any) { return this._listeners.length > 0; },\r\n  configurable: true,\r\n});\r\n\r\nDiagChannel.prototype.subscribe = function subscribe(handler: (message: unknown, name: string) => void): void {\r\n  this._listeners.push(handler);\r\n};\r\n\r\nDiagChannel.prototype.unsubscribe = function unsubscribe(handler: (message: unknown, name: string) => void): boolean {\r\n  const idx = this._listeners.indexOf(handler);\r\n  if (idx === -1) return false;\r\n  this._listeners.splice(idx, 1);\r\n  return true;\r\n};\r\n\r\nDiagChannel.prototype.publish = function publish(this: any, message: unknown): void {\r\n  for (const handler of this._listeners) {\r\n    try {\r\n      handler(message, this.name);\r\n    } catch {\r\n      /* swallow */\r\n    }\r\n  }\r\n};\r\n\r\nconst channels = new Map<string, DiagChannel>();\r\n\r\nexport function channel(name: string): DiagChannel {\r\n  if (!channels.has(name)) channels.set(name, new DiagChannel(name));\r\n  return channels.get(name)!;\r\n}\r\n\r\nexport function hasSubscribers(name: string): boolean {\r\n  return channels.get(name)?.hasSubscribers ?? false;\r\n}\r\n\r\nexport function subscribe(\r\n  name: string,\r\n  handler: (message: unknown, name: string) => void,\r\n): void {\r\n  channel(name).subscribe(handler);\r\n}\r\n\r\nexport function unsubscribe(\r\n  name: string,\r\n  handler: (message: unknown, name: string) => void,\r\n): boolean {\r\n  return channels.get(name)?.unsubscribe(handler) ?? false;\r\n}\r\n\r\nexport { DiagChannel as Channel };\r\n\r\n// ---------------------------------------------------------------------------\r\n// TracingChannel — Node's higher-level trace API built on five sub-channels.\r\n// Real implementation (no AsyncLocalStorage / async_hooks needed). Semantics\r\n// match node:diagnostics_channel's TracingChannel for publish/subscribe and\r\n// for the three trace helpers (traceSync, tracePromise, traceCallback).\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface TracingChannelSubscribers {\r\n  start?: (message: unknown, name: string) => void;\r\n  end?: (message: unknown, name: string) => void;\r\n  asyncStart?: (message: unknown, name: string) => void;\r\n  asyncEnd?: (message: unknown, name: string) => void;\r\n  error?: (message: unknown, name: string) => void;\r\n}\r\n\r\nexport interface TracingChannelChannels {\r\n  start: DiagChannel;\r\n  end: DiagChannel;\r\n  asyncStart: DiagChannel;\r\n  asyncEnd: DiagChannel;\r\n  error: DiagChannel;\r\n}\r\n\r\nconst TRACING_CHANNEL_EVENTS = ['start', 'end', 'asyncStart', 'asyncEnd', 'error'] as const;\r\n\r\nexport class TracingChannel implements TracingChannelChannels {\r\n  start: DiagChannel;\r\n  end: DiagChannel;\r\n  asyncStart: DiagChannel;\r\n  asyncEnd: DiagChannel;\r\n  error: DiagChannel;\r\n\r\n  constructor(nameOrChannels: string | TracingChannelChannels) {\r\n    if (typeof nameOrChannels === 'string') {\r\n      const name = nameOrChannels;\r\n      this.start = channel(`tracing:${name}:start`);\r\n      this.end = channel(`tracing:${name}:end`);\r\n      this.asyncStart = channel(`tracing:${name}:asyncStart`);\r\n      this.asyncEnd = channel(`tracing:${name}:asyncEnd`);\r\n      this.error = channel(`tracing:${name}:error`);\r\n    } else if (nameOrChannels && typeof nameOrChannels === 'object') {\r\n      for (const evt of TRACING_CHANNEL_EVENTS) {\r\n        const ch = (nameOrChannels as TracingChannelChannels)[evt];\r\n        if (!ch || typeof (ch as DiagChannel).publish !== 'function') {\r\n          throw new TypeError(\r\n            `tracingChannel: channels.${evt} must be a Channel instance`,\r\n          );\r\n        }\r\n      }\r\n      this.start = nameOrChannels.start;\r\n      this.end = nameOrChannels.end;\r\n      this.asyncStart = nameOrChannels.asyncStart;\r\n      this.asyncEnd = nameOrChannels.asyncEnd;\r\n      this.error = nameOrChannels.error;\r\n    } else {\r\n      throw new TypeError(\r\n        'tracingChannel: argument must be a string name or an object of 5 Channel instances',\r\n      );\r\n    }\r\n  }\r\n\r\n  get hasSubscribers(): boolean {\r\n    return (\r\n      this.start.hasSubscribers ||\r\n      this.end.hasSubscribers ||\r\n      this.asyncStart.hasSubscribers ||\r\n      this.asyncEnd.hasSubscribers ||\r\n      this.error.hasSubscribers\r\n    );\r\n  }\r\n\r\n  subscribe(subscribers: TracingChannelSubscribers): void {\r\n    for (const evt of TRACING_CHANNEL_EVENTS) {\r\n      const handler = subscribers[evt];\r\n      if (typeof handler === 'function') this[evt].subscribe(handler);\r\n    }\r\n  }\r\n\r\n  unsubscribe(subscribers: TracingChannelSubscribers): boolean {\r\n    let allRemoved = true;\r\n    for (const evt of TRACING_CHANNEL_EVENTS) {\r\n      const handler = subscribers[evt];\r\n      if (typeof handler === 'function') {\r\n        if (!this[evt].unsubscribe(handler)) allRemoved = false;\r\n      }\r\n    }\r\n    return allRemoved;\r\n  }\r\n\r\n  traceSync<R>(\r\n    fn: (...a: unknown[]) => R,\r\n    context: Record<string, unknown> = {},\r\n    thisArg?: unknown,\r\n    ...args: unknown[]\r\n  ): R {\r\n    this.start.publish(context);\r\n    try {\r\n      const result = fn.apply(thisArg, args);\r\n      (context as { result?: unknown }).result = result;\r\n      return result;\r\n    } catch (err) {\r\n      (context as { error?: unknown }).error = err;\r\n      this.error.publish(context);\r\n      throw err;\r\n    } finally {\r\n      this.end.publish(context);\r\n    }\r\n  }\r\n\r\n  tracePromise<R>(\r\n    fn: (...a: unknown[]) => Promise<R> | R,\r\n    context: Record<string, unknown> = {},\r\n    thisArg?: unknown,\r\n    ...args: unknown[]\r\n  ): Promise<R> {\r\n    const onFulfilled = (result: R): R => {\r\n      (context as { result?: unknown }).result = result;\r\n      this.asyncStart.publish(context);\r\n      this.asyncEnd.publish(context);\r\n      return result;\r\n    };\r\n    const onRejected = (err: unknown): never => {\r\n      (context as { error?: unknown }).error = err;\r\n      this.error.publish(context);\r\n      this.asyncStart.publish(context);\r\n      this.asyncEnd.publish(context);\r\n      throw err;\r\n    };\r\n\r\n    this.start.publish(context);\r\n    try {\r\n      let promise = fn.apply(thisArg, args) as Promise<R> | R;\r\n      if (!(promise instanceof Promise)) promise = Promise.resolve(promise);\r\n      return (promise as Promise<R>).then(onFulfilled, onRejected);\r\n    } catch (err) {\r\n      (context as { error?: unknown }).error = err;\r\n      this.error.publish(context);\r\n      throw err;\r\n    } finally {\r\n      this.end.publish(context);\r\n    }\r\n  }\r\n\r\n  traceCallback<R>(\r\n    fn: (...a: unknown[]) => R,\r\n    position: number = -1,\r\n    context: Record<string, unknown> = {},\r\n    thisArg?: unknown,\r\n    ...args: unknown[]\r\n  ): R {\r\n    const idx = position < 0 ? args.length + position : position;\r\n    const callback = args[idx];\r\n    if (typeof callback !== 'function') {\r\n      throw new TypeError('traceCallback: target argument is not a function');\r\n    }\r\n    const self = this;\r\n    function wrappedCallback(this: unknown, err: unknown, res: unknown): unknown {\r\n      if (err) {\r\n        (context as { error?: unknown }).error = err;\r\n        self.error.publish(context);\r\n      } else {\r\n        (context as { result?: unknown }).result = res;\r\n      }\r\n      self.asyncStart.publish(context);\r\n      try {\r\n        return (callback as (...a: unknown[]) => unknown).apply(this, arguments as unknown as unknown[]);\r\n      } finally {\r\n        self.asyncEnd.publish(context);\r\n      }\r\n    }\r\n    args[idx] = wrappedCallback;\r\n\r\n    this.start.publish(context);\r\n    try {\r\n      return fn.apply(thisArg, args);\r\n    } catch (err) {\r\n      (context as { error?: unknown }).error = err;\r\n      this.error.publish(context);\r\n      throw err;\r\n    } finally {\r\n      this.end.publish(context);\r\n    }\r\n  }\r\n}\r\n\r\nexport function tracingChannel(\r\n  nameOrChannels: string | TracingChannelChannels,\r\n): TracingChannel {\r\n  return new TracingChannel(nameOrChannels);\r\n}\r\n\r\nexport default {\r\n  channel,\r\n  hasSubscribers,\r\n  subscribe,\r\n  unsubscribe,\r\n  tracingChannel,\r\n  Channel: DiagChannel,\r\n  TracingChannel,\r\n};\r\n","// Console class matching Node.js constructor (accepts stdout/stderr streams)\r\n\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Console class                                                      */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Console {\r\n  _out: { write: (s: string) => void } | null;\r\n  _err: { write: (s: string) => void } | null;\r\n  _emit(target: \"out\" | \"err\", args: unknown[]): void;\r\n  log(...a: unknown[]): void;\r\n  error(...a: unknown[]): void;\r\n  warn(...a: unknown[]): void;\r\n  info(...a: unknown[]): void;\r\n  debug(...a: unknown[]): void;\r\n  trace(...a: unknown[]): void;\r\n  dir(o: unknown): void;\r\n  time(): void;\r\n  timeEnd(): void;\r\n  timeLog(): void;\r\n  assert(v: unknown, ...a: unknown[]): void;\r\n  clear(): void;\r\n  count(): void;\r\n  countReset(): void;\r\n  group(): void;\r\n  groupCollapsed(): void;\r\n  groupEnd(): void;\r\n  table(d: unknown): void;\r\n}\r\n\r\ninterface ConsoleConstructor {\r\n  new (stdout?: unknown, stderr?: unknown): Console;\r\n  (this: any, stdout?: unknown, stderr?: unknown): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Console = function Console(this: any, stdout?: unknown, stderr?: unknown) {\r\n  if (!this) return;\r\n  const o = stdout as Record<string, unknown> | undefined;\r\n  if (o && typeof o === \"object\" && \"write\" in o) {\r\n    // new Console(stream) or new Console(stdout, stderr)\r\n    this._out = o as unknown as { write: (s: string) => void };\r\n    this._err =\r\n      (stderr as { write: (s: string) => void }) || this._out;\r\n  } else if (o && typeof o === \"object\" && \"stdout\" in o) {\r\n    // new Console({ stdout, stderr })\r\n    this._out = (o.stdout as { write: (s: string) => void }) || null;\r\n    this._err = (o.stderr as { write: (s: string) => void }) || this._out;\r\n  } else {\r\n    this._out = null;\r\n    this._err = null;\r\n  }\r\n} as unknown as ConsoleConstructor;\r\n\r\nConsole.prototype._emit = function _emit(this: any, target: \"out\" | \"err\", args: unknown[]) {\r\n  const text =\r\n    args\r\n      .map((a: unknown) => (typeof a === \"string\" ? a : JSON.stringify(a)))\r\n      .join(\" \") + \"\\n\";\r\n  const dest = target === \"err\" ? this._err : this._out;\r\n  if (dest) dest.write(text);\r\n  else if (target === \"err\") globalThis.console.error(...args);\r\n  else globalThis.console.log(...args);\r\n};\r\n\r\nConsole.prototype.log = function log(this: any, ...a: unknown[]) { this._emit(\"out\", a); };\r\nConsole.prototype.error = function error(this: any, ...a: unknown[]) { this._emit(\"err\", a); };\r\nConsole.prototype.warn = function warn(this: any, ...a: unknown[]) { this._emit(\"err\", a); };\r\nConsole.prototype.info = function info(this: any, ...a: unknown[]) { this._emit(\"out\", a); };\r\nConsole.prototype.debug = function debug(this: any, ...a: unknown[]) { this._emit(\"out\", a); };\r\nConsole.prototype.trace = function trace(this: any, ...a: unknown[]) { this._emit(\"err\", a); };\r\nConsole.prototype.dir = function dir(this: any, o: unknown) { this._emit(\"out\", [o]); };\r\nConsole.prototype.time = function time() {};\r\nConsole.prototype.timeEnd = function timeEnd() {};\r\nConsole.prototype.timeLog = function timeLog() {};\r\nConsole.prototype.assert = function assert(this: any, v: unknown, ...a: unknown[]) {\r\n  if (!v) this._emit(\"err\", [\"Assertion failed:\", ...a]);\r\n};\r\nConsole.prototype.clear = function clear() {};\r\nConsole.prototype.count = function count() {};\r\nConsole.prototype.countReset = function countReset() {};\r\nConsole.prototype.group = function group() {};\r\nConsole.prototype.groupCollapsed = function groupCollapsed() {};\r\nConsole.prototype.groupEnd = function groupEnd() {};\r\nConsole.prototype.table = function table(this: any, d: unknown) { this._emit(\"out\", [d]); };\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Named re-exports from global console                               */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst _gc = globalThis.console;\r\n\r\nexport const log = _gc.log.bind(_gc);\r\nexport const error = _gc.error.bind(_gc);\r\nexport const warn = _gc.warn.bind(_gc);\r\nexport const info = _gc.info.bind(_gc);\r\nexport const debug = _gc.debug.bind(_gc);\r\nexport const trace = _gc.trace.bind(_gc);\r\nexport const dir = _gc.dir.bind(_gc);\r\nexport const time = _gc.time.bind(_gc);\r\nexport const timeEnd = _gc.timeEnd.bind(_gc);\r\nexport const timeLog = _gc.timeLog.bind(_gc);\r\nexport const clear = _gc.clear.bind(_gc);\r\nexport const count = _gc.count.bind(_gc);\r\nexport const countReset = _gc.countReset.bind(_gc);\r\nexport const group = _gc.group.bind(_gc);\r\nexport const groupCollapsed = _gc.groupCollapsed.bind(_gc);\r\nexport const groupEnd = _gc.groupEnd.bind(_gc);\r\nexport const table = _gc.table.bind(_gc);\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Default export                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport default {\r\n  Console,\r\n  log,\r\n  error,\r\n  warn,\r\n  info,\r\n  debug,\r\n  trace,\r\n  dir,\r\n  time,\r\n  timeEnd,\r\n  timeLog,\r\n  assert: _gc.assert.bind(_gc),\r\n  clear,\r\n  count,\r\n  countReset,\r\n  group,\r\n  groupCollapsed,\r\n  groupEnd,\r\n  table,\r\n};\r\n","// lightweight REPL stub for compatibility\r\n\r\n\r\nimport { EventEmitter } from \"./events\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Constants                                                          */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const REPL_MODE_SLOPPY = Symbol.for(\"repl-sloppy\");\r\nexport const REPL_MODE_STRICT = Symbol.for(\"repl-strict\");\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Recoverable                                                        */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Recoverable extends SyntaxError {\r\n  err: Error;\r\n}\r\n\r\ninterface RecoverableConstructor {\r\n  new (err: Error): Recoverable;\r\n  (this: any, err: Error): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Recoverable = function Recoverable(this: any, err: Error) {\r\n  if (!this) return;\r\n  SyntaxError.call(this, err.message);\r\n  this.message = err.message;\r\n  this.name = \"SyntaxError\";\r\n  this.err = err;\r\n  if (Error.captureStackTrace) Error.captureStackTrace(this, Recoverable);\r\n} as unknown as RecoverableConstructor;\r\n\r\nObject.setPrototypeOf(Recoverable.prototype, SyntaxError.prototype);\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  REPLServer                                                         */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface REPLServer extends EventEmitter {\r\n  context: Record<string, unknown>;\r\n  terminal: boolean;\r\n  _prompt: string;\r\n  _commands: Map<string, { help: string; action: Function }>;\r\n  setPrompt(prompt: string): void;\r\n  getPrompt(): string;\r\n  displayPrompt(_preserveCursor?: boolean): void;\r\n  defineCommand(keyword: string, cmd: { help?: string; action: Function } | Function): void;\r\n  close(): void;\r\n  setupHistory(_historyPath: string, cb: (err: Error | null, repl: REPLServer) => void): void;\r\n}\r\n\r\ninterface REPLServerConstructor {\r\n  new (options?: string | Record<string, unknown>): REPLServer;\r\n  (this: any, options?: string | Record<string, unknown>): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const REPLServer = function REPLServer(this: any, options?: string | Record<string, unknown>) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n  this.context = Object.create(null);\r\n  this.terminal = false;\r\n  this._prompt = \"> \";\r\n  this._commands = new Map<string, { help: string; action: Function }>();\r\n  if (typeof options === \"string\") {\r\n    this._prompt = options;\r\n  } else if (options) {\r\n    if (typeof options.prompt === \"string\") this._prompt = options.prompt;\r\n    if (options.terminal !== undefined) this.terminal = !!options.terminal;\r\n  }\r\n} as unknown as REPLServerConstructor;\r\n\r\nObject.setPrototypeOf(REPLServer.prototype, EventEmitter.prototype);\r\n\r\nREPLServer.prototype.setPrompt = function setPrompt(this: any, prompt: string): void {\r\n  this._prompt = prompt;\r\n};\r\n\r\nREPLServer.prototype.getPrompt = function getPrompt(this: any): string {\r\n  return this._prompt;\r\n};\r\n\r\nREPLServer.prototype.displayPrompt = function displayPrompt(_preserveCursor?: boolean): void {\r\n};\r\n\r\nREPLServer.prototype.defineCommand = function defineCommand(\r\n  this: any,\r\n  keyword: string,\r\n  cmd: { help?: string; action: Function } | Function,\r\n): void {\r\n  if (typeof cmd === \"function\") {\r\n    this._commands.set(keyword, { help: \"\", action: cmd });\r\n  } else {\r\n    this._commands.set(keyword, { help: cmd.help || \"\", action: cmd.action });\r\n  }\r\n};\r\n\r\nREPLServer.prototype.close = function close(this: any): void {\r\n  this.emit(\"exit\");\r\n  this.emit(\"close\");\r\n};\r\n\r\nREPLServer.prototype.setupHistory = function setupHistory(\r\n  this: any,\r\n  _historyPath: string,\r\n  cb: (err: Error | null, repl: REPLServer) => void,\r\n): void {\r\n  cb(null, this);\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Factory                                                            */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport function start(\r\n  options?: string | Record<string, unknown>,\r\n): REPLServer {\r\n  return new REPLServer(options);\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Default export                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport default {\r\n  start,\r\n  REPLServer,\r\n  Recoverable,\r\n  REPL_MODE_SLOPPY,\r\n  REPL_MODE_STRICT,\r\n};\r\n","// lightweight node:test polyfill with describe/it/test, hooks, and basic mocks\r\n\r\nexport interface TestContext {\r\n  name: string;\r\n  signal: AbortSignal;\r\n  _controller: AbortController;\r\n  diagnostic(msg: string): void;\r\n  plan(_count: number): void;\r\n  todo(msg?: string): void;\r\n  skip(msg?: string): void;\r\n  abort(): void;\r\n}\r\n\r\ninterface TestContextConstructor {\r\n  new (name: string): TestContext;\r\n  (this: any, name: string): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const TestContext = function TestContext(this: any, name: string) {\r\n  if (!this) return;\r\n  this.name = name;\r\n  this._controller = new AbortController();\r\n  this.signal = this._controller.signal;\r\n} as unknown as TestContextConstructor;\r\n\r\nTestContext.prototype.diagnostic = function diagnostic(this: any, msg: string): void {\r\n  globalThis.console.log(`# ${msg}`);\r\n};\r\n\r\nTestContext.prototype.plan = function plan(_count: number): void {\r\n};\r\n\r\nTestContext.prototype.todo = function todo(msg?: string): void {\r\n  globalThis.console.log(`# TODO${msg ? \": \" + msg : \"\"}`);\r\n};\r\n\r\nTestContext.prototype.skip = function skip(msg?: string): void {\r\n  globalThis.console.log(`# SKIP${msg ? \": \" + msg : \"\"}`);\r\n};\r\n\r\nTestContext.prototype.abort = function abort(this: any): void {\r\n  this._controller.abort();\r\n};\r\n\r\ntype TestFn = (t: TestContext) => void | Promise<void>;\r\ntype HookFn = () => void | Promise<void>;\r\n\r\ninterface TestOpts {\r\n  name: string;\r\n  skip?: boolean;\r\n  todo?: boolean;\r\n  only?: boolean;\r\n}\r\n\r\nexport function describe(name: string, fn: () => void | Promise<void>): void;\r\nexport function describe(\r\n  options: TestOpts,\r\n  fn: () => void | Promise<void>,\r\n): void;\r\nexport function describe(\r\n  nameOrOpts: string | TestOpts,\r\n  fn?: () => void | Promise<void>,\r\n): void {\r\n  const name = typeof nameOrOpts === \"string\" ? nameOrOpts : nameOrOpts.name;\r\n  const opts: TestOpts = typeof nameOrOpts === \"object\" ? nameOrOpts : { name };\r\n  const body = fn!;\r\n\r\n  if (opts.skip) {\r\n    globalThis.console.log(`# SKIP - ${name}`);\r\n    return;\r\n  }\r\n  if (opts.todo) {\r\n    globalThis.console.log(`# TODO - ${name}`);\r\n    return;\r\n  }\r\n\r\n  try {\r\n    const result = body();\r\n    if (result && typeof (result as Promise<void>).then === \"function\") {\r\n      (result as Promise<void>).catch((err) => {\r\n        globalThis.console.error(`Suite \"${name}\" failed:`, err);\r\n      });\r\n    }\r\n  } catch (err) {\r\n    globalThis.console.error(`Suite \"${name}\" failed:`, err);\r\n  }\r\n}\r\n\r\nexport function it(name: string, fn?: TestFn): void;\r\nexport function it(options: TestOpts, fn?: TestFn): void;\r\nexport function it(nameOrOpts: string | TestOpts, fn?: TestFn): void {\r\n  const name = typeof nameOrOpts === \"string\" ? nameOrOpts : nameOrOpts.name;\r\n  const opts: TestOpts = typeof nameOrOpts === \"object\" ? nameOrOpts : { name };\r\n\r\n  if (opts.skip || !fn) {\r\n    globalThis.console.log(`# SKIP - ${name}`);\r\n    return;\r\n  }\r\n  if (opts.todo) {\r\n    globalThis.console.log(`# TODO - ${name}`);\r\n    return;\r\n  }\r\n\r\n  const ctx = new TestContext(name);\r\n  try {\r\n    const result = fn(ctx);\r\n    if (result && typeof (result as Promise<void>).then === \"function\") {\r\n      (result as Promise<void>).catch((err) => {\r\n        globalThis.console.error(`Test \"${name}\" failed:`, err);\r\n      });\r\n    }\r\n  } catch (err) {\r\n    globalThis.console.error(`Test \"${name}\" failed:`, err);\r\n  }\r\n}\r\n\r\nexport { it as test };\r\n\r\nexport function before(fn: HookFn): void {\r\n  try {\r\n    fn();\r\n  } catch {\r\n  }\r\n}\r\n\r\nexport function after(fn: HookFn): void {\r\n  try {\r\n    fn();\r\n  } catch {\r\n  }\r\n}\r\n\r\nexport function beforeEach(fn: HookFn): void {\r\n  try {\r\n    fn();\r\n  } catch {\r\n  }\r\n}\r\n\r\nexport function afterEach(fn: HookFn): void {\r\n  try {\r\n    fn();\r\n  } catch {\r\n  }\r\n}\r\n\r\nexport function skip(name?: string, _fn?: TestFn): void {\r\n  if (name) globalThis.console.log(`# SKIP - ${name}`);\r\n}\r\n\r\nexport function todo(name?: string, _fn?: TestFn): void {\r\n  if (name) globalThis.console.log(`# TODO - ${name}`);\r\n}\r\n\r\nexport const mock = {\r\n  fn(impl?: Function): Function {\r\n    const calls: unknown[][] = [];\r\n    const mockFn = (...args: unknown[]) => {\r\n      calls.push(args);\r\n      return impl ? impl(...args) : undefined;\r\n    };\r\n    (mockFn as any).mock = { calls, callCount: () => calls.length };\r\n    return mockFn;\r\n  },\r\n\r\n  method(\r\n    obj: Record<string, unknown>,\r\n    methodName: string,\r\n    impl?: Function,\r\n  ): Function {\r\n    const original = obj[methodName];\r\n    const mocked = mock.fn(impl || (original as Function));\r\n    obj[methodName] = mocked;\r\n    return mocked;\r\n  },\r\n\r\n  reset(): void {\r\n  },\r\n\r\n  restoreAll(): void {\r\n  },\r\n};\r\n\r\nexport default {\r\n  describe,\r\n  it,\r\n  test: it,\r\n  before,\r\n  after,\r\n  beforeEach,\r\n  afterEach,\r\n  skip,\r\n  todo,\r\n  mock,\r\n  TestContext,\r\n};\r\n","// stub - not available in browser\r\n\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Tracing class                                                      */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Tracing {\r\n  readonly categories: string;\r\n  readonly enabled: boolean;\r\n  enable(): void;\r\n  disable(): void;\r\n}\r\n\r\ninterface TracingConstructor {\r\n  new (categories: string[]): Tracing;\r\n  (this: any, categories: string[]): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Tracing = function Tracing(this: any, categories: string[]) {\r\n  if (!this) return;\r\n  this.categories = categories.join(\",\");\r\n  this.enabled = false;\r\n} as unknown as TracingConstructor;\r\n\r\nTracing.prototype.enable = function enable(): void { };\r\nTracing.prototype.disable = function disable(): void { };\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Factory                                                            */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport function createTracing(opts: { categories: string[] }): Tracing {\r\n  return new Tracing(opts.categories);\r\n}\r\n\r\nexport function getEnabledCategories(): string | undefined {\r\n  return undefined;\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Default export                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport default {\r\n  createTracing,\r\n  getEnabledCategories,\r\n  Tracing,\r\n};\r\n","const ERRNO_SUCCESS = 0;\r\nconst ERRNO_2BIG = 1;\r\nconst ERRNO_ACCES = 2;\r\nconst ERRNO_BADF = 8;\r\nconst ERRNO_EXIST = 20;\r\nconst ERRNO_FAULT = 21;\r\nconst ERRNO_INVAL = 28;\r\nconst ERRNO_IO = 29;\r\nconst ERRNO_ISDIR = 31;\r\nconst ERRNO_NOENT = 44;\r\nconst ERRNO_NOSYS = 52;\r\nconst ERRNO_NOTDIR = 54;\r\nconst ERRNO_NOTEMPTY = 55;\r\nconst ERRNO_PERM = 63;\r\nconst ERRNO_PIPE = 64;\r\nconst ERRNO_SPIPE = 70;\r\n\r\nconst CLOCKID_REALTIME = 0;\r\nconst CLOCKID_MONOTONIC = 1;\r\nconst CLOCKID_PROCESS_CPUTIME_ID = 2;\r\nconst CLOCKID_THREAD_CPUTIME_ID = 3;\r\n\r\nconst FILETYPE_UNKNOWN = 0;\r\nconst FILETYPE_DIRECTORY = 3;\r\nconst FILETYPE_REGULAR_FILE = 4;\r\nconst FILETYPE_SYMBOLIC_LINK = 7;\r\n\r\nconst FDFLAGS_APPEND = 0x0001;\r\n\r\nconst FSTFLAGS_ATIM = 0x0001;\r\nconst FSTFLAGS_ATIM_NOW = 0x0002;\r\nconst FSTFLAGS_MTIM = 0x0004;\r\nconst FSTFLAGS_MTIM_NOW = 0x0008;\r\n\r\nconst OFLAGS_CREAT = 0x0001;\r\nconst OFLAGS_DIRECTORY = 0x0002;\r\nconst OFLAGS_EXCL = 0x0004;\r\nconst OFLAGS_TRUNC = 0x0008;\r\n\r\nconst WHENCE_SET = 0;\r\nconst WHENCE_CUR = 1;\r\nconst WHENCE_END = 2;\r\n\r\nconst PREOPENTYPE_DIR = 0;\r\n\r\nconst RIGHTS_FD_READ = 0x0000000000000002n;\r\nconst RIGHTS_FD_WRITE = 0x0000000000000040n;\r\nconst RIGHTS_FD_SEEK = 0x0000000000000004n;\r\nconst RIGHTS_FD_TELL = 0x0000000000000020n;\r\nconst RIGHTS_FD_READDIR = 0x0000000000004000n;\r\nconst RIGHTS_PATH_OPEN = 0x0000000000002000n;\r\nconst RIGHTS_PATH_CREATE_DIRECTORY = 0x0000000000000200n;\r\nconst RIGHTS_PATH_CREATE_FILE = 0x0000000000000400n;\r\nconst RIGHTS_PATH_UNLINK_FILE = 0x0000000004000000n;\r\nconst RIGHTS_PATH_REMOVE_DIRECTORY = 0x0000000002000000n;\r\nconst RIGHTS_PATH_RENAME_SOURCE = 0x0000000000010000n;\r\nconst RIGHTS_PATH_RENAME_TARGET = 0x0000000000020000n;\r\nconst RIGHTS_PATH_FILESTAT_GET = 0x0000000000040000n;\r\nconst RIGHTS_PATH_SYMLINK = 0x0000000001000000n;\r\nconst RIGHTS_PATH_READLINK = 0x0000000000008000n;\r\nconst RIGHTS_FD_FILESTAT_GET = 0x0000000000200000n;\r\nconst RIGHTS_FD_FILESTAT_SET_SIZE = 0x0000000000400000n;\r\n\r\nconst RIGHTS_ALL = 0x1fffffffn;\r\nconst RIGHTS_DIR_BASE =\r\n  RIGHTS_FD_READ |\r\n  RIGHTS_FD_READDIR |\r\n  RIGHTS_PATH_OPEN |\r\n  RIGHTS_PATH_CREATE_DIRECTORY |\r\n  RIGHTS_PATH_CREATE_FILE |\r\n  RIGHTS_PATH_UNLINK_FILE |\r\n  RIGHTS_PATH_REMOVE_DIRECTORY |\r\n  RIGHTS_PATH_RENAME_SOURCE |\r\n  RIGHTS_PATH_RENAME_TARGET |\r\n  RIGHTS_PATH_FILESTAT_GET |\r\n  RIGHTS_PATH_SYMLINK |\r\n  RIGHTS_PATH_READLINK |\r\n  RIGHTS_FD_FILESTAT_GET;\r\nconst RIGHTS_FILE_BASE =\r\n  RIGHTS_FD_READ |\r\n  RIGHTS_FD_WRITE |\r\n  RIGHTS_FD_SEEK |\r\n  RIGHTS_FD_TELL |\r\n  RIGHTS_FD_FILESTAT_GET |\r\n  RIGHTS_FD_FILESTAT_SET_SIZE;\r\n\r\nconst EVENTTYPE_CLOCK = 0;\r\nconst EVENTTYPE_FD_READ = 1;\r\nconst EVENTTYPE_FD_WRITE = 2;\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Filesystem interface (subset of our MemoryVolume / fs bridge)     */\r\n/* ------------------------------------------------------------------ */\r\n\r\ninterface WasiFileStat {\r\n  isFile(): boolean;\r\n  isDirectory(): boolean;\r\n  isSymbolicLink(): boolean;\r\n  size: number;\r\n  mtimeMs: number;\r\n  atimeMs: number;\r\n  ctimeMs: number;\r\n  ino?: number;\r\n  nlink?: number;\r\n}\r\n\r\ninterface WasiFS {\r\n  readFileSync(p: string): Uint8Array;\r\n  writeFileSync(p: string, data: string | Uint8Array): void;\r\n  mkdirSync(p: string, options?: { recursive?: boolean }): void;\r\n  statSync(p: string): WasiFileStat;\r\n  readdirSync(p: string): string[];\r\n  unlinkSync(p: string): void;\r\n  rmdirSync(p: string): void;\r\n  renameSync(from: string, to: string): void;\r\n  existsSync(p: string): boolean;\r\n  symlinkSync?(target: string, linkPath: string): void;\r\n  readlinkSync?(p: string): string;\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  File descriptor table                                             */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst enum FdKind {\r\n  Stdin,\r\n  Stdout,\r\n  Stderr,\r\n  PreopenDir,\r\n  File,\r\n}\r\n\r\ninterface FdEntry {\r\n  kind: FdKind;\r\n  path: string; // real path (for dirs and files)\r\n  rights: bigint;\r\n  // file-specific\r\n  data?: Uint8Array;\r\n  offset?: number;\r\n  dirty?: boolean; // needs flush on close\r\n  flags?: number; // O_APPEND etc\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  ExitStatus                                                         */\r\n/* ---------------------------------------------------------------- */\r\nexport class ExitStatus extends Error {\r\n  readonly code: number;\r\n  constructor(code: number) {\r\n    super(`WASI exit(${code})`);\r\n    this.code = code;\r\n  }\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  syscall wrapper                                                    */\r\n/* ---------------------------------------------------------------- */\r\nlet _wasiSyscallErrorLogged = false;\r\nfunction syscall(target: Function): Function {\r\n  return function (this: unknown, ...args: unknown[]): number {\r\n    try {\r\n      return target.apply(this, args);\r\n    } catch (err: any) {\r\n      if (err instanceof ExitStatus) throw err;\r\n      // log the first syscall error to help debug WASM trap issues\r\n      if (!_wasiSyscallErrorLogged && err?.message?.includes(\"Memory not available\")) {\r\n        _wasiSyscallErrorLogged = true;\r\n        console.error(\"[WASI] Syscall failed — memory not available:\", err.message);\r\n        throw err; // don't swallow memory errors, they cause unreachable traps\r\n      }\r\n      // map common fs errors to WASI errno\r\n      const code = err?.code;\r\n      if (code === \"ENOENT\") return ERRNO_NOENT;\r\n      if (code === \"EEXIST\") return ERRNO_EXIST;\r\n      if (code === \"EISDIR\") return ERRNO_ISDIR;\r\n      if (code === \"ENOTDIR\") return ERRNO_NOTDIR;\r\n      if (code === \"ENOTEMPTY\") return ERRNO_NOTEMPTY;\r\n      if (code === \"EACCES\" || code === \"EPERM\") return ERRNO_ACCES;\r\n      if (!_wasiSyscallErrorLogged) {\r\n        _wasiSyscallErrorLogged = true;\r\n        console.error(\"[WASI] First syscall error:\", err?.message || err, \"code:\", code);\r\n      }\r\n      return ERRNO_IO;\r\n    }\r\n  };\r\n}\r\n\r\n/*  Path helpers */\r\n\r\nfunction joinPath(base: string, rel: string): string {\r\n  if (rel.startsWith(\"/\")) return normalizePath(rel);\r\n  const combined = base.endsWith(\"/\") ? base + rel : base + \"/\" + rel;\r\n  return normalizePath(combined);\r\n}\r\n\r\nfunction normalizePath(p: string): string {\r\n  const parts = p.split(\"/\");\r\n  const out: string[] = [];\r\n  for (const seg of parts) {\r\n    if (seg === \".\" || seg === \"\") continue;\r\n    if (seg === \"..\") {\r\n      out.pop();\r\n      continue;\r\n    }\r\n    out.push(seg);\r\n  }\r\n  return \"/\" + out.join(\"/\");\r\n}\r\n\r\n/*  Text encoder / decoder (cached)*/\r\nconst encoder = new TextEncoder();\r\nconst decoder = new TextDecoder();\r\n\r\n// TextDecoder.decode() rejects SharedArrayBuffer views (\"The provided ArrayBufferView value must not be shared.\")\r\n// threaded WASM (wasm32-wasip1-threads, emnapi) uses SharedArrayBuffer memory, so copy before decoding\r\nconst decodeFromMemory = (\r\n  buffer: ArrayBufferLike,\r\n  ptr: number,\r\n  len: number,\r\n): string => {\r\n  if (len === 0) return \"\";\r\n  const src = new Uint8Array(buffer, ptr, len);\r\n  if (typeof SharedArrayBuffer !== \"undefined\" && buffer instanceof SharedArrayBuffer) {\r\n    // copy into regular ArrayBuffer, TextDecoder accepts that\r\n    const copy = new Uint8Array(len);\r\n    copy.set(src);\r\n    return decoder.decode(copy);\r\n  }\r\n  return decoder.decode(src);\r\n};\r\n\r\n/*  WASI class (matches Nodejs `wasi` module API) */\r\n\r\nexport interface WASIOptions {\r\n  version?: \"preview1\" | \"unstable\";\r\n  args?: string[];\r\n  env?: Record<string, string>;\r\n  preopens?: Record<string, string>;\r\n  returnOnExit?: boolean;\r\n  stdin?: number;\r\n  stdout?: number;\r\n  stderr?: number;\r\n  // extensions for our environment\r\n  fs?: WasiFS;\r\n}\r\n\r\nexport interface WASI {\r\n  readonly wasiImport: Record<string, Function>;\r\n  start(instance: object): number;\r\n  initialize(instance: object): void;\r\n  getImportObject(): Record<string, Record<string, Function>>;\r\n}\r\n\r\ninterface WASIConstructor {\r\n  new (options?: WASIOptions): WASI;\r\n  (this: any, options?: WASIOptions): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const WASI = function WASI(this: any, options?: WASIOptions) {\r\n  if (!(this instanceof WASI)) {\r\n    throw new TypeError(\r\n      \"Class constructor WASI cannot be invoked without 'new'\",\r\n    );\r\n  }\r\n\r\n  const opts = options ?? {};\r\n  const args = opts.args ?? [];\r\n  const envVars = opts.env ?? {};\r\n  const preopens = opts.preopens ?? {};\r\n  const returnOnExit = opts.returnOnExit ?? false;\r\n  const fs = opts.fs ?? null;\r\n\r\n  /* file descriptor table */\r\n\r\n  const fds = new Map<number, FdEntry>();\r\n  let nextFd = 3;\r\n\r\n  // fd 0 = stdin, fd 1 = stdout, fd 2 = stderr\r\n  fds.set(0, { kind: FdKind.Stdin, path: \"\", rights: RIGHTS_FD_READ });\r\n  fds.set(1, { kind: FdKind.Stdout, path: \"\", rights: RIGHTS_FD_WRITE });\r\n  fds.set(2, { kind: FdKind.Stderr, path: \"\", rights: RIGHTS_FD_WRITE });\r\n\r\n  // preopened directories\r\n  const preopenEntries: Array<{\r\n    fd: number;\r\n    virtualPath: string;\r\n    realPath: string;\r\n  }> = [];\r\n  for (const [virtualPath, realPath] of Object.entries(preopens)) {\r\n    const fd = nextFd++;\r\n    fds.set(fd, {\r\n      kind: FdKind.PreopenDir,\r\n      path: realPath,\r\n      rights: RIGHTS_DIR_BASE,\r\n    });\r\n    preopenEntries.push({ fd, virtualPath, realPath });\r\n  }\r\n\r\n  /* wasm memory ref */\r\n\r\n  let memory: WebAssembly.Memory | null = null;\r\n  let instance: WebAssembly.Instance | null = null;\r\n\r\n  const getMemory = (): WebAssembly.Memory => {\r\n    if (memory) return memory;\r\n    if (instance) {\r\n      memory = (instance as any).exports?.memory as WebAssembly.Memory;\r\n      if (memory) return memory;\r\n    }\r\n    // napi-rs imports memory instead of exporting it, must be set via initialize() or setMemory() before any syscall\r\n    console.error(\"[WASI] Memory not available — initialize() may not have been called yet\");\r\n    throw new Error(\"WASI: WebAssembly.Memory not available — call initialize() or setMemory() first\");\r\n  };\r\n\r\n  const view = () => new DataView(getMemory().buffer);\r\n  const bytes = () => new Uint8Array(getMemory().buffer);\r\n\r\n  /* stdout / stderr text buffers */\r\n\r\n  let stdoutBuf = \"\";\r\n  let stderrBuf = \"\";\r\n\r\n  const flushLine = (fd: number, buf: string): string => {\r\n    const nl = buf.lastIndexOf(\"\\n\");\r\n    if (nl < 0) return buf;\r\n    const lines = buf.substring(0, nl);\r\n    if (fd === 1) console.log(lines);\r\n    else console.error(lines);\r\n    return buf.substring(nl + 1);\r\n  };\r\n\r\n  /* helpers */\r\n\r\n  const readString = (ptr: number, len: number): string => {\r\n    return decodeFromMemory(getMemory().buffer, ptr, len);\r\n  };\r\n\r\n  const writeString = (ptr: number, str: string): number => {\r\n    const encoded = encoder.encode(str + \"\\0\");\r\n    bytes().set(encoded, ptr);\r\n    return encoded.length;\r\n  };\r\n\r\n  const flushFile = (entry: FdEntry): void => {\r\n    if (entry.dirty && fs && entry.path && entry.data) {\r\n      fs.writeFileSync(entry.path, entry.data);\r\n      entry.dirty = false;\r\n    }\r\n  };\r\n\r\n  /* Build the wasi_snapshot_preview1 import object */\r\n  const wasiImport: Record<string, Function> = {\r\n    /* args */\r\n    args_get: syscall((argv_ptr: number, argv_buf_ptr: number): number => {\r\n      const dv = view();\r\n      const mem = bytes();\r\n      for (const arg of args) {\r\n        dv.setUint32(argv_ptr, argv_buf_ptr, true);\r\n        argv_ptr += 4;\r\n        const encoded = encoder.encode(arg + \"\\0\");\r\n        mem.set(encoded, argv_buf_ptr);\r\n        argv_buf_ptr += encoded.length;\r\n      }\r\n      return ERRNO_SUCCESS;\r\n    }),\r\n\r\n    args_sizes_get: syscall(\r\n      (argc_out: number, argv_buf_size_out: number): number => {\r\n        const dv = view();\r\n        dv.setUint32(argc_out, args.length, true);\r\n        let bufSize = 0;\r\n        for (const arg of args) bufSize += encoder.encode(arg + \"\\0\").length;\r\n        dv.setUint32(argv_buf_size_out, bufSize, true);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    /* environ */\r\n\r\n    environ_get: syscall(\r\n      (environ_ptr: number, environ_buf_ptr: number): number => {\r\n        const entries = Object.entries(envVars);\r\n        const dv = view();\r\n        const mem = bytes();\r\n        for (const [key, value] of entries) {\r\n          dv.setUint32(environ_ptr, environ_buf_ptr, true);\r\n          environ_ptr += 4;\r\n          const encoded = encoder.encode(`${key}=${value}\\0`);\r\n          mem.set(encoded, environ_buf_ptr);\r\n          environ_buf_ptr += encoded.length;\r\n        }\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    environ_sizes_get: syscall(\r\n      (environc_out: number, environ_buf_size_out: number): number => {\r\n        const entries = Object.entries(envVars);\r\n        const dv = view();\r\n        dv.setUint32(environc_out, entries.length, true);\r\n        let bufSize = 0;\r\n        for (const [key, value] of entries)\r\n          bufSize += encoder.encode(`${key}=${value}\\0`).length;\r\n        dv.setUint32(environ_buf_size_out, bufSize, true);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    /* clock */\r\n\r\n    clock_res_get: syscall((id: number, resolution_out: number): number => {\r\n      const dv = view();\r\n      switch (id) {\r\n        case CLOCKID_REALTIME:\r\n          dv.setBigUint64(resolution_out, BigInt(1e6), true);\r\n          break;\r\n        case CLOCKID_MONOTONIC:\r\n        case CLOCKID_PROCESS_CPUTIME_ID:\r\n        case CLOCKID_THREAD_CPUTIME_ID:\r\n          dv.setBigUint64(resolution_out, BigInt(1e3), true);\r\n          break;\r\n        default:\r\n          return ERRNO_INVAL;\r\n      }\r\n      return ERRNO_SUCCESS;\r\n    }),\r\n\r\n    clock_time_get: syscall(\r\n      (id: number, _precision: bigint, time_out: number): number => {\r\n        const dv = view();\r\n        switch (id) {\r\n          case CLOCKID_REALTIME: {\r\n            const time = BigInt(Date.now()) * BigInt(1e6);\r\n            dv.setBigUint64(time_out, time, true);\r\n            break;\r\n          }\r\n          case CLOCKID_MONOTONIC:\r\n          case CLOCKID_PROCESS_CPUTIME_ID:\r\n          case CLOCKID_THREAD_CPUTIME_ID: {\r\n            const t = performance.now();\r\n            const s = Math.trunc(t);\r\n            const ms = Math.floor((t - s) * 1e3);\r\n            const time = BigInt(s) * BigInt(1e9) + BigInt(ms) * BigInt(1e6);\r\n            dv.setBigUint64(time_out, time, true);\r\n            break;\r\n          }\r\n          default:\r\n            return ERRNO_INVAL;\r\n        }\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    /* ---- fd operations ------------------------------------------- */\r\n\r\n    fd_advise: syscall(\r\n      (_fd: number, _offset: bigint, _len: bigint, _advice: number): number => {\r\n        return ERRNO_SUCCESS; // advisory, can be a no-op\r\n      },\r\n    ),\r\n\r\n    fd_allocate: syscall(\r\n      (_fd: number, _offset: bigint, _len: bigint): number => {\r\n        return ERRNO_NOSYS;\r\n      },\r\n    ),\r\n\r\n    fd_close: syscall((fd: number): number => {\r\n      const entry = fds.get(fd);\r\n      if (!entry) return ERRNO_BADF;\r\n      if (entry.kind === FdKind.File) flushFile(entry);\r\n      fds.delete(fd);\r\n      return ERRNO_SUCCESS;\r\n    }),\r\n\r\n    fd_datasync: syscall((fd: number): number => {\r\n      const entry = fds.get(fd);\r\n      if (!entry) return ERRNO_BADF;\r\n      if (entry.kind === FdKind.File) flushFile(entry);\r\n      return ERRNO_SUCCESS;\r\n    }),\r\n\r\n    fd_fdstat_get: syscall((fd: number, stat_out: number): number => {\r\n      const entry = fds.get(fd);\r\n      if (!entry) return ERRNO_BADF;\r\n      const dv = view();\r\n\r\n      let filetype = FILETYPE_UNKNOWN;\r\n      let fdflags = 0;\r\n      let rightsBase = entry.rights;\r\n      let rightsInheriting = 0n;\r\n\r\n      switch (entry.kind) {\r\n        case FdKind.Stdin:\r\n        case FdKind.Stdout:\r\n        case FdKind.Stderr:\r\n          filetype = FILETYPE_UNKNOWN; // character device, but WASI doesnt have that in snapshot1 for this\r\n          break;\r\n        case FdKind.PreopenDir:\r\n          filetype = FILETYPE_DIRECTORY;\r\n          rightsInheriting = RIGHTS_ALL;\r\n          break;\r\n        case FdKind.File:\r\n          filetype = FILETYPE_REGULAR_FILE;\r\n          if (entry.flags && entry.flags & FDFLAGS_APPEND)\r\n            fdflags |= FDFLAGS_APPEND;\r\n          break;\r\n      }\r\n\r\n      // fdstat layout: u8 filetype, u16 fdflags, u64 rights_base, u64 rights_inheriting\r\n      dv.setUint8(stat_out, filetype);\r\n      dv.setUint16(stat_out + 2, fdflags, true);\r\n      dv.setBigUint64(stat_out + 8, rightsBase, true);\r\n      dv.setBigUint64(stat_out + 16, rightsInheriting, true);\r\n      return ERRNO_SUCCESS;\r\n    }),\r\n\r\n    fd_fdstat_set_flags: syscall((_fd: number, _flags: number): number => {\r\n      return ERRNO_NOSYS;\r\n    }),\r\n\r\n    fd_fdstat_set_rights: syscall(\r\n      (\r\n        _fd: number,\r\n        _rights_base: bigint,\r\n        _rights_inheriting: bigint,\r\n      ): number => {\r\n        return ERRNO_NOSYS;\r\n      },\r\n    ),\r\n\r\n    fd_filestat_get: syscall((fd: number, buf_out: number): number => {\r\n      const entry = fds.get(fd);\r\n      if (!entry) return ERRNO_BADF;\r\n\r\n      const dv = view();\r\n      let size = 0n;\r\n      let filetype = FILETYPE_UNKNOWN;\r\n      let mtimeNs = 0n;\r\n      let atimeNs = 0n;\r\n      let ctimeNs = 0n;\r\n      let ino = 0n;\r\n      let nlink = 1n;\r\n\r\n      if (entry.kind === FdKind.File) {\r\n        size = BigInt(entry.data ? entry.data.length : 0);\r\n        filetype = FILETYPE_REGULAR_FILE;\r\n        if (fs && entry.path) {\r\n          try {\r\n            const stat = fs.statSync(entry.path);\r\n            mtimeNs = BigInt(Math.floor(stat.mtimeMs)) * BigInt(1e6);\r\n            atimeNs = BigInt(Math.floor(stat.atimeMs)) * BigInt(1e6);\r\n            ctimeNs = BigInt(Math.floor(stat.ctimeMs)) * BigInt(1e6);\r\n            if (stat.ino) ino = BigInt(stat.ino);\r\n            if (stat.nlink) nlink = BigInt(stat.nlink);\r\n          } catch {\r\n            /* ignore */\r\n          }\r\n        }\r\n      } else if (entry.kind === FdKind.PreopenDir) {\r\n        filetype = FILETYPE_DIRECTORY;\r\n        // unique ino so walkdir with follow_links doesnt collapse opened dirs\r\n        if (fs && entry.path) {\r\n          try {\r\n            const stat = fs.statSync(entry.path);\r\n            if (stat.ino) ino = BigInt(stat.ino);\r\n            if (stat.nlink) nlink = BigInt(stat.nlink);\r\n          } catch {}\r\n        }\r\n      }\r\n\r\n      // filestat layout: u64 dev, u64 ino, u8 filetype (at +16), u64 nlink, u64 size,\r\n      //                  u64 atim, u64 mtim, u64 ctim\r\n      dv.setBigUint64(buf_out, 0n, true); // dev\r\n      dv.setBigUint64(buf_out + 8, ino, true); // ino\r\n      dv.setUint8(buf_out + 16, filetype); // filetype\r\n      dv.setBigUint64(buf_out + 24, nlink, true); // nlink\r\n      dv.setBigUint64(buf_out + 32, size, true); // size\r\n      dv.setBigUint64(buf_out + 40, atimeNs, true);\r\n      dv.setBigUint64(buf_out + 48, mtimeNs, true);\r\n      dv.setBigUint64(buf_out + 56, ctimeNs, true);\r\n      return ERRNO_SUCCESS;\r\n    }),\r\n\r\n    fd_filestat_set_size: syscall((fd: number, size: bigint): number => {\r\n      const entry = fds.get(fd);\r\n      if (!entry || entry.kind !== FdKind.File) return ERRNO_BADF;\r\n      const newSize = Number(size);\r\n      if (!entry.data) {\r\n        entry.data = new Uint8Array(newSize);\r\n      } else if (entry.data.length !== newSize) {\r\n        const newData = new Uint8Array(newSize);\r\n        newData.set(\r\n          entry.data.subarray(0, Math.min(entry.data.length, newSize)),\r\n        );\r\n        entry.data = newData;\r\n      }\r\n      entry.dirty = true;\r\n      return ERRNO_SUCCESS;\r\n    }),\r\n\r\n    fd_filestat_set_times: syscall(\r\n      (\r\n        _fd: number,\r\n        _atim: bigint,\r\n        _mtim: bigint,\r\n        _fst_flags: number,\r\n      ): number => {\r\n        return ERRNO_SUCCESS; // no-op, our MemoryVolume auto timestamps\r\n      },\r\n    ),\r\n\r\n    fd_pread: syscall(\r\n      (\r\n        fd: number,\r\n        iovs_ptr: number,\r\n        iovs_len: number,\r\n        offset: bigint,\r\n        nread_out: number,\r\n      ): number => {\r\n        const entry = fds.get(fd);\r\n        if (!entry || entry.kind !== FdKind.File) return ERRNO_BADF;\r\n        if (!entry.data) {\r\n          view().setUint32(nread_out, 0, true);\r\n          return ERRNO_SUCCESS;\r\n        }\r\n\r\n        const dv = view();\r\n        let pos = Number(offset);\r\n        let totalRead = 0;\r\n\r\n        for (let i = 0; i < iovs_len; i++) {\r\n          const bufPtr = dv.getUint32(iovs_ptr + i * 8, true);\r\n          const bufLen = dv.getUint32(iovs_ptr + i * 8 + 4, true);\r\n          const toRead = Math.min(bufLen, entry.data.length - pos);\r\n          if (toRead <= 0) break;\r\n          bytes().set(entry.data.subarray(pos, pos + toRead), bufPtr);\r\n          pos += toRead;\r\n          totalRead += toRead;\r\n        }\r\n\r\n        dv.setUint32(nread_out, totalRead, true);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    fd_prestat_get: syscall((fd: number, buf_out: number): number => {\r\n      const entry = fds.get(fd);\r\n      if (!entry || entry.kind !== FdKind.PreopenDir) return ERRNO_BADF;\r\n\r\n      const preopen = preopenEntries.find((p) => p.fd === fd);\r\n      if (!preopen) return ERRNO_BADF;\r\n\r\n      const dv = view();\r\n      const nameLen = encoder.encode(preopen.virtualPath).length;\r\n      // prestat: u8 type (0 = dir), then u32 name_len at +4\r\n      dv.setUint8(buf_out, PREOPENTYPE_DIR);\r\n      dv.setUint32(buf_out + 4, nameLen, true);\r\n      return ERRNO_SUCCESS;\r\n    }),\r\n\r\n    fd_prestat_dir_name: syscall(\r\n      (fd: number, path_ptr: number, path_len: number): number => {\r\n        const entry = fds.get(fd);\r\n        if (!entry || entry.kind !== FdKind.PreopenDir) return ERRNO_BADF;\r\n\r\n        const preopen = preopenEntries.find((p) => p.fd === fd);\r\n        if (!preopen) return ERRNO_BADF;\r\n\r\n        const encoded = encoder.encode(preopen.virtualPath);\r\n        const toCopy = Math.min(encoded.length, path_len);\r\n        bytes().set(encoded.subarray(0, toCopy), path_ptr);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    fd_pwrite: syscall(\r\n      (\r\n        fd: number,\r\n        iovs_ptr: number,\r\n        iovs_len: number,\r\n        offset: bigint,\r\n        nwritten_out: number,\r\n      ): number => {\r\n        const entry = fds.get(fd);\r\n        if (!entry || entry.kind !== FdKind.File) return ERRNO_BADF;\r\n\r\n        const dv = view();\r\n        let pos = Number(offset);\r\n        let totalWritten = 0;\r\n\r\n        for (let i = 0; i < iovs_len; i++) {\r\n          const bufPtr = dv.getUint32(iovs_ptr + i * 8, true);\r\n          const bufLen = dv.getUint32(iovs_ptr + i * 8 + 4, true);\r\n          const chunk = new Uint8Array(getMemory().buffer, bufPtr, bufLen);\r\n\r\n          // grow data if needed\r\n          const needed = pos + bufLen;\r\n          if (!entry.data || entry.data.length < needed) {\r\n            const newData = new Uint8Array(needed);\r\n            if (entry.data) newData.set(entry.data);\r\n            entry.data = newData;\r\n          }\r\n          entry.data.set(chunk, pos);\r\n          pos += bufLen;\r\n          totalWritten += bufLen;\r\n        }\r\n\r\n        entry.dirty = true;\r\n        dv.setUint32(nwritten_out, totalWritten, true);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    fd_read: syscall(\r\n      (\r\n        fd: number,\r\n        iovs_ptr: number,\r\n        iovs_len: number,\r\n        nread_out: number,\r\n      ): number => {\r\n        const entry = fds.get(fd);\r\n        if (!entry) return ERRNO_BADF;\r\n\r\n        const dv = view();\r\n\r\n        if (entry.kind === FdKind.Stdin) {\r\n          // stdin - no interactive input in browser, return 0 bytes (EOF)\r\n          dv.setUint32(nread_out, 0, true);\r\n          return ERRNO_SUCCESS;\r\n        }\r\n\r\n        if (entry.kind !== FdKind.File) return ERRNO_BADF;\r\n        if (!entry.data) {\r\n          dv.setUint32(nread_out, 0, true);\r\n          return ERRNO_SUCCESS;\r\n        }\r\n\r\n        let totalRead = 0;\r\n        let pos = entry.offset ?? 0;\r\n\r\n        for (let i = 0; i < iovs_len; i++) {\r\n          const bufPtr = dv.getUint32(iovs_ptr + i * 8, true);\r\n          const bufLen = dv.getUint32(iovs_ptr + i * 8 + 4, true);\r\n          const toRead = Math.min(bufLen, entry.data.length - pos);\r\n          if (toRead <= 0) break;\r\n          bytes().set(entry.data.subarray(pos, pos + toRead), bufPtr);\r\n          pos += toRead;\r\n          totalRead += toRead;\r\n        }\r\n\r\n        entry.offset = pos;\r\n        dv.setUint32(nread_out, totalRead, true);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    fd_readdir: syscall(\r\n      (\r\n        fd: number,\r\n        buf_ptr: number,\r\n        buf_len: number,\r\n        cookie: bigint,\r\n        bufused_out: number,\r\n      ): number => {\r\n        const entry = fds.get(fd);\r\n        if (\r\n          !entry ||\r\n          (entry.kind !== FdKind.PreopenDir && entry.kind !== FdKind.File)\r\n        )\r\n          return ERRNO_BADF;\r\n        if (!fs) return ERRNO_NOSYS;\r\n\r\n        let entries: string[];\r\n        try {\r\n          entries = fs.readdirSync(entry.path);\r\n        } catch {\r\n          return ERRNO_IO;\r\n        }\r\n\r\n        const dv = view();\r\n        const mem = bytes();\r\n        let offset = buf_ptr;\r\n        const end = buf_ptr + buf_len;\r\n        const start = Number(cookie);\r\n\r\n        for (let i = start; i < entries.length; i++) {\r\n          const name = entries[i];\r\n          const nameBytes = encoder.encode(name);\r\n\r\n          // dirent: u64 d_next, u64 d_ino, u32 d_namlen, u8 d_type, then name.\r\n          // stop on the first entry that wont fit, the caller (rust ReadDir)\r\n          // refills with cookie = last d_next written. dont write partial\r\n          // headers, that confuses the iterator on the refill path.\r\n          if (offset + 24 + nameBytes.length > end) break;\r\n\r\n          dv.setBigUint64(offset, BigInt(i + 1), true); // d_next\r\n\r\n          // real ino from stat, see MemoryVolume._inoFor for why\r\n          let dtype = FILETYPE_REGULAR_FILE;\r\n          let dino = BigInt(i + 1);\r\n          try {\r\n            const st = fs.statSync(joinPath(entry.path, name));\r\n            if (st.isDirectory()) dtype = FILETYPE_DIRECTORY;\r\n            else if (st.isSymbolicLink()) dtype = FILETYPE_SYMBOLIC_LINK;\r\n            if (st.ino) dino = BigInt(st.ino);\r\n          } catch {}\r\n          dv.setBigUint64(offset + 8, dino, true); // d_ino\r\n          dv.setUint32(offset + 16, nameBytes.length, true); // d_namlen\r\n          dv.setUint8(offset + 20, dtype); // d_type\r\n          mem.set(nameBytes, offset + 24);\r\n          offset += 24 + nameBytes.length;\r\n        }\r\n\r\n        dv.setUint32(bufused_out, offset - buf_ptr, true);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    fd_renumber: syscall((fd: number, to: number): number => {\r\n      const entry = fds.get(fd);\r\n      if (!entry) return ERRNO_BADF;\r\n      if (fds.has(to)) {\r\n        const toEntry = fds.get(to)!;\r\n        if (toEntry.kind === FdKind.File) flushFile(toEntry);\r\n      }\r\n      fds.set(to, entry);\r\n      fds.delete(fd);\r\n      return ERRNO_SUCCESS;\r\n    }),\r\n\r\n    fd_seek: syscall(\r\n      (\r\n        fd: number,\r\n        offset: bigint,\r\n        whence: number,\r\n        newoffset_out: number,\r\n      ): number => {\r\n        const entry = fds.get(fd);\r\n        if (!entry) return ERRNO_BADF;\r\n\r\n        if (\r\n          entry.kind === FdKind.Stdin ||\r\n          entry.kind === FdKind.Stdout ||\r\n          entry.kind === FdKind.Stderr\r\n        ) {\r\n          return ERRNO_SPIPE;\r\n        }\r\n        if (entry.kind === FdKind.PreopenDir) return ERRNO_BADF;\r\n\r\n        const dataLen = entry.data ? entry.data.length : 0;\r\n        let pos = entry.offset ?? 0;\r\n        const off = Number(offset);\r\n\r\n        switch (whence) {\r\n          case WHENCE_SET:\r\n            pos = off;\r\n            break;\r\n          case WHENCE_CUR:\r\n            pos += off;\r\n            break;\r\n          case WHENCE_END:\r\n            pos = dataLen + off;\r\n            break;\r\n          default:\r\n            return ERRNO_INVAL;\r\n        }\r\n\r\n        if (pos < 0) pos = 0;\r\n        entry.offset = pos;\r\n        view().setBigUint64(newoffset_out, BigInt(pos), true);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    fd_sync: syscall((fd: number): number => {\r\n      const entry = fds.get(fd);\r\n      if (!entry) return ERRNO_BADF;\r\n      if (entry.kind === FdKind.File) flushFile(entry);\r\n      return ERRNO_SUCCESS;\r\n    }),\r\n\r\n    fd_tell: syscall((fd: number, offset_out: number): number => {\r\n      const entry = fds.get(fd);\r\n      if (!entry || entry.kind !== FdKind.File) return ERRNO_BADF;\r\n      view().setBigUint64(offset_out, BigInt(entry.offset ?? 0), true);\r\n      return ERRNO_SUCCESS;\r\n    }),\r\n\r\n    fd_write: syscall(\r\n      (\r\n        fd: number,\r\n        iovs_ptr: number,\r\n        iovs_len: number,\r\n        nwritten_out: number,\r\n      ): number => {\r\n        const entry = fds.get(fd);\r\n        if (!entry) return ERRNO_BADF;\r\n\r\n        const dv = view();\r\n\r\n        // stdout / stderr\r\n        if (entry.kind === FdKind.Stdout || entry.kind === FdKind.Stderr) {\r\n          let totalWritten = 0;\r\n          for (let i = 0; i < iovs_len; i++) {\r\n            const bufPtr = dv.getUint32(iovs_ptr + i * 8, true);\r\n            const bufLen = dv.getUint32(iovs_ptr + i * 8 + 4, true);\r\n            const text = decodeFromMemory(getMemory().buffer, bufPtr, bufLen);\r\n            if (entry.kind === FdKind.Stdout) {\r\n              stdoutBuf += text;\r\n              stdoutBuf = flushLine(1, stdoutBuf);\r\n            } else {\r\n              stderrBuf += text;\r\n              stderrBuf = flushLine(2, stderrBuf);\r\n            }\r\n            totalWritten += bufLen;\r\n          }\r\n          dv.setUint32(nwritten_out, totalWritten, true);\r\n          return ERRNO_SUCCESS;\r\n        }\r\n\r\n        if (entry.kind !== FdKind.File) return ERRNO_BADF;\r\n\r\n        let totalWritten = 0;\r\n        let pos =\r\n          entry.flags && entry.flags & FDFLAGS_APPEND\r\n            ? entry.data\r\n              ? entry.data.length\r\n              : 0\r\n            : (entry.offset ?? 0);\r\n\r\n        for (let i = 0; i < iovs_len; i++) {\r\n          const bufPtr = dv.getUint32(iovs_ptr + i * 8, true);\r\n          const bufLen = dv.getUint32(iovs_ptr + i * 8 + 4, true);\r\n          const chunk = new Uint8Array(getMemory().buffer, bufPtr, bufLen);\r\n\r\n          const needed = pos + bufLen;\r\n          if (!entry.data || entry.data.length < needed) {\r\n            const newData = new Uint8Array(needed);\r\n            if (entry.data) newData.set(entry.data);\r\n            entry.data = newData;\r\n          }\r\n          entry.data.set(chunk, pos);\r\n          pos += bufLen;\r\n          totalWritten += bufLen;\r\n        }\r\n\r\n        entry.offset = pos;\r\n        entry.dirty = true;\r\n        dv.setUint32(nwritten_out, totalWritten, true);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    /* path operations */\r\n\r\n    path_create_directory: syscall(\r\n      (fd: number, path_ptr: number, path_len: number): number => {\r\n        if (!fs) return ERRNO_NOSYS;\r\n        const entry = fds.get(fd);\r\n        if (!entry) return ERRNO_BADF;\r\n        const rel = readString(path_ptr, path_len);\r\n        const fullPath = joinPath(entry.path, rel);\r\n        fs.mkdirSync(fullPath, { recursive: true });\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    path_filestat_get: syscall(\r\n      (\r\n        fd: number,\r\n        _flags: number,\r\n        path_ptr: number,\r\n        path_len: number,\r\n        buf_out: number,\r\n      ): number => {\r\n        if (!fs) return ERRNO_NOSYS;\r\n        const entry = fds.get(fd);\r\n        if (!entry) return ERRNO_BADF;\r\n        const rel = readString(path_ptr, path_len);\r\n        const fullPath = joinPath(entry.path, rel);\r\n\r\n        const stat = fs.statSync(fullPath);\r\n        const dv = view();\r\n\r\n        let filetype = FILETYPE_REGULAR_FILE;\r\n        if (stat.isDirectory()) filetype = FILETYPE_DIRECTORY;\r\n        else if (stat.isSymbolicLink()) filetype = FILETYPE_SYMBOLIC_LINK;\r\n\r\n        const mtimeNs = BigInt(Math.floor(stat.mtimeMs)) * BigInt(1e6);\r\n        const atimeNs = BigInt(Math.floor(stat.atimeMs)) * BigInt(1e6);\r\n        const ctimeNs = BigInt(Math.floor(stat.ctimeMs)) * BigInt(1e6);\r\n\r\n        dv.setBigUint64(buf_out, 0n, true); // dev\r\n        dv.setBigUint64(buf_out + 8, BigInt(stat.ino ?? 0), true); // ino\r\n        dv.setUint8(buf_out + 16, filetype); // filetype\r\n        dv.setBigUint64(buf_out + 24, BigInt(stat.nlink ?? 1), true);\r\n        dv.setBigUint64(buf_out + 32, BigInt(stat.size), true);\r\n        dv.setBigUint64(buf_out + 40, atimeNs, true);\r\n        dv.setBigUint64(buf_out + 48, mtimeNs, true);\r\n        dv.setBigUint64(buf_out + 56, ctimeNs, true);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    path_filestat_set_times: syscall(\r\n      (\r\n        _fd: number,\r\n        _flags: number,\r\n        _path_ptr: number,\r\n        _path_len: number,\r\n        _atim: bigint,\r\n        _mtim: bigint,\r\n        _fst_flags: number,\r\n      ): number => {\r\n        return ERRNO_SUCCESS; // no-op\r\n      },\r\n    ),\r\n\r\n    path_link: syscall(\r\n      (\r\n        _old_fd: number,\r\n        _old_flags: number,\r\n        _old_path_ptr: number,\r\n        _old_path_len: number,\r\n        _new_fd: number,\r\n        _new_path_ptr: number,\r\n        _new_path_len: number,\r\n      ): number => {\r\n        return ERRNO_NOSYS;\r\n      },\r\n    ),\r\n\r\n    path_open: syscall(\r\n      (\r\n        fd: number,\r\n        _dirflags: number,\r\n        path_ptr: number,\r\n        path_len: number,\r\n        oflags: number,\r\n        _fs_rights_base: bigint,\r\n        _fs_rights_inheriting: bigint,\r\n        fdflags: number,\r\n        opened_fd_out: number,\r\n      ): number => {\r\n        if (!fs) return ERRNO_NOSYS;\r\n        const dirEntry = fds.get(fd);\r\n        if (!dirEntry) return ERRNO_BADF;\r\n\r\n        const rel = readString(path_ptr, path_len);\r\n        const fullPath = joinPath(dirEntry.path, rel);\r\n\r\n        const wantDir = (oflags & OFLAGS_DIRECTORY) !== 0;\r\n        const wantCreate = (oflags & OFLAGS_CREAT) !== 0;\r\n        const wantExcl = (oflags & OFLAGS_EXCL) !== 0;\r\n        const wantTrunc = (oflags & OFLAGS_TRUNC) !== 0;\r\n\r\n        let exists = fs.existsSync(fullPath);\r\n        if (wantExcl && exists) return ERRNO_EXIST;\r\n\r\n        if (wantDir) {\r\n          if (!exists) {\r\n            if (wantCreate) {\r\n              fs.mkdirSync(fullPath, { recursive: true });\r\n            } else {\r\n              return ERRNO_NOENT;\r\n            }\r\n          }\r\n          // open directory fd\r\n          const newFd = nextFd++;\r\n          fds.set(newFd, {\r\n            kind: FdKind.PreopenDir,\r\n            path: fullPath,\r\n            rights: RIGHTS_DIR_BASE,\r\n          });\r\n          view().setUint32(opened_fd_out, newFd, true);\r\n          return ERRNO_SUCCESS;\r\n        }\r\n\r\n        // regular file\r\n        let data: Uint8Array;\r\n        if (exists && !wantTrunc) {\r\n          data = fs.readFileSync(fullPath);\r\n          // make a copy so mutations dont affect the volume until flush\r\n          const copy = new Uint8Array(data.length);\r\n          copy.set(data);\r\n          data = copy;\r\n        } else if (wantCreate || wantTrunc) {\r\n          if (!exists) {\r\n            fs.writeFileSync(fullPath, new Uint8Array(0));\r\n          }\r\n          data = new Uint8Array(0);\r\n        } else {\r\n          if (!exists) return ERRNO_NOENT;\r\n          data = fs.readFileSync(fullPath);\r\n          const copy = new Uint8Array(data.length);\r\n          copy.set(data);\r\n          data = copy;\r\n        }\r\n\r\n        const newFd = nextFd++;\r\n        fds.set(newFd, {\r\n          kind: FdKind.File,\r\n          path: fullPath,\r\n          rights: RIGHTS_FILE_BASE,\r\n          data,\r\n          offset: 0,\r\n          dirty: false,\r\n          flags: fdflags,\r\n        });\r\n        view().setUint32(opened_fd_out, newFd, true);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    path_readlink: syscall(\r\n      (\r\n        fd: number,\r\n        path_ptr: number,\r\n        path_len: number,\r\n        buf_ptr: number,\r\n        buf_len: number,\r\n        bufused_out: number,\r\n      ): number => {\r\n        if (!fs || !fs.readlinkSync) return ERRNO_NOSYS;\r\n        const entry = fds.get(fd);\r\n        if (!entry) return ERRNO_BADF;\r\n        const rel = readString(path_ptr, path_len);\r\n        const fullPath = joinPath(entry.path, rel);\r\n        const target = fs.readlinkSync(fullPath);\r\n        const encoded = encoder.encode(target);\r\n        const toCopy = Math.min(encoded.length, buf_len);\r\n        bytes().set(encoded.subarray(0, toCopy), buf_ptr);\r\n        view().setUint32(bufused_out, toCopy, true);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    path_remove_directory: syscall(\r\n      (fd: number, path_ptr: number, path_len: number): number => {\r\n        if (!fs) return ERRNO_NOSYS;\r\n        const entry = fds.get(fd);\r\n        if (!entry) return ERRNO_BADF;\r\n        const rel = readString(path_ptr, path_len);\r\n        const fullPath = joinPath(entry.path, rel);\r\n        fs.rmdirSync(fullPath);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    path_rename: syscall(\r\n      (\r\n        fd: number,\r\n        old_path_ptr: number,\r\n        old_path_len: number,\r\n        new_fd: number,\r\n        new_path_ptr: number,\r\n        new_path_len: number,\r\n      ): number => {\r\n        if (!fs) return ERRNO_NOSYS;\r\n        const oldEntry = fds.get(fd);\r\n        const newEntry = fds.get(new_fd);\r\n        if (!oldEntry || !newEntry) return ERRNO_BADF;\r\n        const oldRel = readString(old_path_ptr, old_path_len);\r\n        const newRel = readString(new_path_ptr, new_path_len);\r\n        const oldPath = joinPath(oldEntry.path, oldRel);\r\n        const newPath = joinPath(newEntry.path, newRel);\r\n        fs.renameSync(oldPath, newPath);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    path_symlink: syscall(\r\n      (\r\n        old_path_ptr: number,\r\n        old_path_len: number,\r\n        fd: number,\r\n        new_path_ptr: number,\r\n        new_path_len: number,\r\n      ): number => {\r\n        if (!fs || !fs.symlinkSync) return ERRNO_NOSYS;\r\n        const entry = fds.get(fd);\r\n        if (!entry) return ERRNO_BADF;\r\n        const target = readString(old_path_ptr, old_path_len);\r\n        const linkRel = readString(new_path_ptr, new_path_len);\r\n        const linkPath = joinPath(entry.path, linkRel);\r\n        fs.symlinkSync(target, linkPath);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    path_unlink_file: syscall(\r\n      (fd: number, path_ptr: number, path_len: number): number => {\r\n        if (!fs) return ERRNO_NOSYS;\r\n        const entry = fds.get(fd);\r\n        if (!entry) return ERRNO_BADF;\r\n        const rel = readString(path_ptr, path_len);\r\n        const fullPath = joinPath(entry.path, rel);\r\n        fs.unlinkSync(fullPath);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    /* ---- misc ---------------------------------------------------- */\r\n\r\n    poll_oneoff: syscall(\r\n      (\r\n        in_ptr: number,\r\n        out_ptr: number,\r\n        nsubscriptions: number,\r\n        nevents_out: number,\r\n      ): number => {\r\n        // uhm this is a very minimal implementation: handle clock subscriptions as immediate,\r\n        // report all fd subscriptions as ready\r\n        const dv = view();\r\n        let nevents = 0;\r\n\r\n        for (let i = 0; i < nsubscriptions; i++) {\r\n          const subPtr = in_ptr + i * 48;\r\n          const eventPtr = out_ptr + nevents * 32;\r\n\r\n          const userdata = dv.getBigUint64(subPtr, true);\r\n          const eventType = dv.getUint8(subPtr + 8);\r\n\r\n          dv.setBigUint64(eventPtr, userdata, true); // userdata\r\n          dv.setUint16(eventPtr + 8, ERRNO_SUCCESS, true); // error\r\n          dv.setUint8(eventPtr + 10, eventType); // type\r\n\r\n          if (\r\n            eventType === EVENTTYPE_FD_READ ||\r\n            eventType === EVENTTYPE_FD_WRITE\r\n          ) {\r\n            // report some available bytes\r\n            dv.setBigUint64(eventPtr + 16, BigInt(1), true); // nbytes\r\n            dv.setUint16(eventPtr + 24, 0, true); // flags\r\n          }\r\n\r\n          nevents++;\r\n        }\r\n\r\n        dv.setUint32(nevents_out, nevents, true);\r\n        return ERRNO_SUCCESS;\r\n      },\r\n    ),\r\n\r\n    proc_exit: syscall((rval: number): never => {\r\n      // flush remaining output\r\n      if (stdoutBuf) {\r\n        console.log(stdoutBuf);\r\n        stdoutBuf = \"\";\r\n      }\r\n      if (stderrBuf) {\r\n        console.error(stderrBuf);\r\n        stderrBuf = \"\";\r\n      }\r\n      throw new ExitStatus(rval);\r\n    }),\r\n\r\n    proc_raise: syscall((_sig: number): number => {\r\n      return ERRNO_NOSYS;\r\n    }),\r\n\r\n    sched_yield: syscall((): number => {\r\n      return ERRNO_SUCCESS;\r\n    }),\r\n\r\n    random_get: syscall((buf_ptr: number, buf_len: number): number => {\r\n      const mem = getMemory();\r\n      if (mem.buffer instanceof SharedArrayBuffer) {\r\n        // crypto.getRandomValues() rejects SharedArrayBuffer views (Web Crypto spec), generate into tmp then copy\r\n        const tmp = new Uint8Array(buf_len);\r\n        crypto.getRandomValues(tmp);\r\n        new Uint8Array(mem.buffer).set(tmp, buf_ptr);\r\n      } else {\r\n        const slice = new Uint8Array(mem.buffer, buf_ptr, buf_len);\r\n        crypto.getRandomValues(slice);\r\n      }\r\n      return ERRNO_SUCCESS;\r\n    }),\r\n\r\n    sock_recv: syscall((): number => ERRNO_NOSYS),\r\n    sock_send: syscall((): number => ERRNO_NOSYS),\r\n    sock_shutdown: syscall((): number => ERRNO_NOSYS),\r\n    sock_accept: syscall((): number => ERRNO_NOSYS),\r\n  };\r\n\r\n  /* public api */\r\n\r\n  const self: any = this;\r\n  self.wasiImport = wasiImport;\r\n\r\n  self.start = function start(wasmInstance: any): number {\r\n    instance = wasmInstance;\r\n    // memory can come from exports or be pre-set via imports (napi-rs --import-memory)\r\n    memory = wasmInstance.exports.memory as WebAssembly.Memory ?? memory;\r\n\r\n    const _start = wasmInstance.exports._start;\r\n    if (typeof _start !== \"function\") {\r\n      throw new Error(\"WASI: instance has no _start export\");\r\n    }\r\n\r\n    try {\r\n      _start();\r\n    } catch (err) {\r\n      if (err instanceof ExitStatus) {\r\n        if (returnOnExit) return err.code;\r\n        throw err;\r\n      }\r\n      throw err;\r\n    } finally {\r\n      // flush remaining output\r\n      if (stdoutBuf) {\r\n        console.log(stdoutBuf);\r\n        stdoutBuf = \"\";\r\n      }\r\n      if (stderrBuf) {\r\n        console.error(stderrBuf);\r\n        stderrBuf = \"\";\r\n      }\r\n    }\r\n    return 0;\r\n  };\r\n\r\n  self.initialize = function initialize(wasmInstance: any): void {\r\n    instance = wasmInstance;\r\n    // memory can come from exports (normal) or imports (napi-rs --import-memory), emnapi may add it to exports even for imported memory\r\n    const exportedMemory = wasmInstance?.exports?.memory as WebAssembly.Memory | undefined;\r\n    if (exportedMemory) {\r\n      memory = exportedMemory;\r\n    }\r\n\r\n    const _initialize = wasmInstance?.exports?._initialize;\r\n    if (typeof _initialize === \"function\") {\r\n      try {\r\n        _initialize();\r\n      } catch (err: any) {\r\n        console.error(\"[WASI] _initialize() failed:\", err?.message || err);\r\n        throw err;\r\n      }\r\n    }\r\n  };\r\n\r\n  // lets emnapi set memory before instantiation, the .wasi.cjs loader creates SharedArrayBuffer memory and passes it via importObject.env.memory\r\n  self.setMemory = function setMemory(mem: WebAssembly.Memory): void {\r\n    memory = mem;\r\n  };\r\n\r\n  self.getImportObject = function getImportObject(): Record<\r\n    string,\r\n    Record<string, Function>\r\n  > {\r\n    return { wasi_snapshot_preview1: wasiImport };\r\n  };\r\n} as unknown as WASIConstructor;\r\n\r\n/*  matches Node.js `require('wasi')` */\r\nexport default {\r\n  WASI,\r\n};\r\n","// stub - not available in browser\r\n\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  API                                                                */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport function isSea(): boolean {\r\n  return false;\r\n}\r\n\r\nexport function getAsset(_key: string): never {\r\n  throw new Error(\"Single Executable Applications (SEA) are not supported in the browser\");\r\n}\r\n\r\nexport function getAssetAsBlob(_key: string): never {\r\n  throw new Error(\"Single Executable Applications (SEA) are not supported in the browser\");\r\n}\r\n\r\nexport function getRawAsset(_key: string): never {\r\n  throw new Error(\"Single Executable Applications (SEA) are not supported in the browser\");\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Default export                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport default {\r\n  isSea,\r\n  getAsset,\r\n  getAssetAsBlob,\r\n  getRawAsset,\r\n};\r\n","// Primary result codes.\n// https://www.sqlite.org/rescode.html\nexport const SQLITE_OK = 0;\nexport const SQLITE_ERROR = 1;\nexport const SQLITE_INTERNAL = 2;\nexport const SQLITE_PERM = 3;\nexport const SQLITE_ABORT = 4;\nexport const SQLITE_BUSY = 5;\nexport const SQLITE_LOCKED = 6;\nexport const SQLITE_NOMEM = 7;\nexport const SQLITE_READONLY = 8;\nexport const SQLITE_INTERRUPT = 9;\nexport const SQLITE_IOERR = 10;\nexport const SQLITE_CORRUPT = 11;\nexport const SQLITE_NOTFOUND = 12;\nexport const SQLITE_FULL = 13;\nexport const SQLITE_CANTOPEN = 14;\nexport const SQLITE_PROTOCOL = 15;\nexport const SQLITE_EMPTY = 16;\nexport const SQLITE_SCHEMA = 17;\nexport const SQLITE_TOOBIG = 18;\nexport const SQLITE_CONSTRAINT = 19;\nexport const SQLITE_MISMATCH = 20;\nexport const SQLITE_MISUSE = 21;\nexport const SQLITE_NOLFS = 22;\nexport const SQLITE_AUTH = 23;\nexport const SQLITE_FORMAT = 24;\nexport const SQLITE_RANGE = 25;\nexport const SQLITE_NOTADB = 26;\nexport const SQLITE_NOTICE = 27;\nexport const SQLITE_WARNING = 28;\nexport const SQLITE_ROW = 100;\nexport const SQLITE_DONE = 101;\n\n// Extended error codes.\nexport const SQLITE_IOERR_ACCESS = 3338;\nexport const SQLITE_IOERR_CHECKRESERVEDLOCK = 3594;\nexport const SQLITE_IOERR_CLOSE = 4106;\nexport const SQLITE_IOERR_DATA = 8202;\nexport const SQLITE_IOERR_DELETE = 2570;\nexport const SQLITE_IOERR_DELETE_NOENT = 5898;\nexport const SQLITE_IOERR_DIR_FSYNC = 1290;\nexport const SQLITE_IOERR_FSTAT = 1802;\nexport const SQLITE_IOERR_FSYNC = 1034;\nexport const SQLITE_IOERR_GETTEMPPATH = 6410;\nexport const SQLITE_IOERR_LOCK = 3850;\nexport const SQLITE_IOERR_NOMEM = 3082;\nexport const SQLITE_IOERR_READ = 266;\nexport const SQLITE_IOERR_RDLOCK = 2314;\nexport const SQLITE_IOERR_SEEK = 5642;\nexport const SQLITE_IOERR_SHORT_READ = 522;\nexport const SQLITE_IOERR_TRUNCATE = 1546;\nexport const SQLITE_IOERR_UNLOCK = 2058;\nexport const SQLITE_IOERR_VNODE = 6922;\nexport const SQLITE_IOERR_WRITE = 778;\nexport const SQLITE_IOERR_BEGIN_ATOMIC = 7434;\nexport const SQLITE_IOERR_COMMIT_ATOMIC = 7690;\nexport const SQLITE_IOERR_ROLLBACK_ATOMIC = 7946;\n\n// Other extended result codes.\nexport const SQLITE_CONSTRAINT_CHECK = 275;\nexport const SQLITE_CONSTRAINT_COMMITHOOK = 531;\nexport const SQLITE_CONSTRAINT_FOREIGNKEY = 787;\nexport const SQLITE_CONSTRAINT_FUNCTION = 1043;\nexport const SQLITE_CONSTRAINT_NOTNULL = 1299;\nexport const SQLITE_CONSTRAINT_PINNED = 2835;\nexport const SQLITE_CONSTRAINT_PRIMARYKEY = 1555;\nexport const SQLITE_CONSTRAINT_ROWID = 2579;\nexport const SQLITE_CONSTRAINT_TRIGGER = 1811;\nexport const SQLITE_CONSTRAINT_UNIQUE = 2067;\nexport const SQLITE_CONSTRAINT_VTAB = 2323;\n\n// Open flags.\n// https://www.sqlite.org/c3ref/c_open_autoproxy.html\nexport const SQLITE_OPEN_READONLY = 0x00000001;\nexport const SQLITE_OPEN_READWRITE = 0x00000002;\nexport const SQLITE_OPEN_CREATE = 0x00000004;\nexport const SQLITE_OPEN_DELETEONCLOSE = 0x00000008;\nexport const SQLITE_OPEN_EXCLUSIVE = 0x00000010;\nexport const SQLITE_OPEN_AUTOPROXY = 0x00000020;\nexport const SQLITE_OPEN_URI = 0x00000040;\nexport const SQLITE_OPEN_MEMORY = 0x00000080;\nexport const SQLITE_OPEN_MAIN_DB = 0x00000100;\nexport const SQLITE_OPEN_TEMP_DB = 0x00000200;\nexport const SQLITE_OPEN_TRANSIENT_DB = 0x00000400;\nexport const SQLITE_OPEN_MAIN_JOURNAL = 0x00000800;\nexport const SQLITE_OPEN_TEMP_JOURNAL = 0x00001000;\nexport const SQLITE_OPEN_SUBJOURNAL = 0x00002000;\nexport const SQLITE_OPEN_SUPER_JOURNAL = 0x00004000;\nexport const SQLITE_OPEN_NOMUTEX = 0x00008000;\nexport const SQLITE_OPEN_FULLMUTEX = 0x00010000;\nexport const SQLITE_OPEN_SHAREDCACHE = 0x00020000;\nexport const SQLITE_OPEN_PRIVATECACHE = 0x00040000;\nexport const SQLITE_OPEN_WAL = 0x00080000;\nexport const SQLITE_OPEN_NOFOLLOW = 0x01000000;\n\n// Locking levels.\n// https://www.sqlite.org/c3ref/c_lock_exclusive.html\nexport const SQLITE_LOCK_NONE = 0;\nexport const SQLITE_LOCK_SHARED = 1;\nexport const SQLITE_LOCK_RESERVED = 2;\nexport const SQLITE_LOCK_PENDING = 3;\nexport const SQLITE_LOCK_EXCLUSIVE = 4;\n\n// Device characteristics.\n// https://www.sqlite.org/c3ref/c_iocap_atomic.html\nexport const SQLITE_IOCAP_ATOMIC = 0x00000001;\nexport const SQLITE_IOCAP_ATOMIC512 = 0x00000002;\nexport const SQLITE_IOCAP_ATOMIC1K = 0x00000004;\nexport const SQLITE_IOCAP_ATOMIC2K = 0x00000008;\nexport const SQLITE_IOCAP_ATOMIC4K = 0x00000010;\nexport const SQLITE_IOCAP_ATOMIC8K = 0x00000020;\nexport const SQLITE_IOCAP_ATOMIC16K = 0x00000040;\nexport const SQLITE_IOCAP_ATOMIC32K = 0x00000080;\nexport const SQLITE_IOCAP_ATOMIC64K = 0x00000100;\nexport const SQLITE_IOCAP_SAFE_APPEND = 0x00000200;\nexport const SQLITE_IOCAP_SEQUENTIAL = 0x00000400;\nexport const SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN = 0x00000800;\nexport const SQLITE_IOCAP_POWERSAFE_OVERWRITE = 0x00001000;\nexport const SQLITE_IOCAP_IMMUTABLE = 0x00002000;\nexport const SQLITE_IOCAP_BATCH_ATOMIC = 0x00004000;\n\n// xAccess flags.\n// https://www.sqlite.org/c3ref/c_access_exists.html\nexport const SQLITE_ACCESS_EXISTS = 0;\nexport const SQLITE_ACCESS_READWRITE = 1;\nexport const SQLITE_ACCESS_READ = 2;\n\n// File control opcodes\n// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlbeginatomicwrite\nexport const SQLITE_FCNTL_LOCKSTATE = 1; \nexport const SQLITE_FCNTL_GET_LOCKPROXYFILE = 2; \nexport const SQLITE_FCNTL_SET_LOCKPROXYFILE = 3; \nexport const SQLITE_FCNTL_LAST_ERRNO = 4; \nexport const SQLITE_FCNTL_SIZE_HINT = 5; \nexport const SQLITE_FCNTL_CHUNK_SIZE = 6; \nexport const SQLITE_FCNTL_FILE_POINTER = 7; \nexport const SQLITE_FCNTL_SYNC_OMITTED = 8; \nexport const SQLITE_FCNTL_WIN32_AV_RETRY = 9; \nexport const SQLITE_FCNTL_PERSIST_WAL = 10; \nexport const SQLITE_FCNTL_OVERWRITE = 11; \nexport const SQLITE_FCNTL_VFSNAME = 12; \nexport const SQLITE_FCNTL_POWERSAFE_OVERWRITE = 13; \nexport const SQLITE_FCNTL_PRAGMA = 14; \nexport const SQLITE_FCNTL_BUSYHANDLER = 15; \nexport const SQLITE_FCNTL_TEMPFILENAME = 16; \nexport const SQLITE_FCNTL_MMAP_SIZE = 18; \nexport const SQLITE_FCNTL_TRACE = 19; \nexport const SQLITE_FCNTL_HAS_MOVED = 20; \nexport const SQLITE_FCNTL_SYNC = 21; \nexport const SQLITE_FCNTL_COMMIT_PHASETWO = 22; \nexport const SQLITE_FCNTL_WIN32_SET_HANDLE = 23; \nexport const SQLITE_FCNTL_WAL_BLOCK = 24; \nexport const SQLITE_FCNTL_ZIPVFS = 25; \nexport const SQLITE_FCNTL_RBU = 26; \nexport const SQLITE_FCNTL_VFS_POINTER = 27; \nexport const SQLITE_FCNTL_JOURNAL_POINTER = 28; \nexport const SQLITE_FCNTL_WIN32_GET_HANDLE = 29; \nexport const SQLITE_FCNTL_PDB = 30; \nexport const SQLITE_FCNTL_BEGIN_ATOMIC_WRITE = 31; \nexport const SQLITE_FCNTL_COMMIT_ATOMIC_WRITE = 32; \nexport const SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE = 33; \nexport const SQLITE_FCNTL_LOCK_TIMEOUT = 34; \nexport const SQLITE_FCNTL_DATA_VERSION = 35; \nexport const SQLITE_FCNTL_SIZE_LIMIT = 36; \nexport const SQLITE_FCNTL_CKPT_DONE = 37; \nexport const SQLITE_FCNTL_RESERVE_BYTES = 38; \nexport const SQLITE_FCNTL_CKPT_START = 39;\n\n// Fundamental datatypes.\n// https://www.sqlite.org/c3ref/c_blob.html\nexport const SQLITE_INTEGER = 1;\nexport const SQLITE_FLOAT = 2;\nexport const SQLITE_TEXT = 3;\nexport const SQLITE_BLOB = 4;\nexport const SQLITE_NULL = 5;\n\n// Special destructor behavior.\n// https://www.sqlite.org/c3ref/c_static.html\nexport const SQLITE_STATIC = 0;\nexport const SQLITE_TRANSIENT = -1;\n\n// Text encodings.\n// https://sqlite.org/c3ref/c_any.html\nexport const SQLITE_UTF8 = 1;     /* IMP: R-37514-35566 */\nexport const SQLITE_UTF16LE = 2;  /* IMP: R-03371-37637 */\nexport const SQLITE_UTF16BE = 3;  /* IMP: R-51971-34154 */\nexport const SQLITE_UTF16 = 4;    /* Use native byte order */\n\n// Module constraint ops.\nexport const SQLITE_INDEX_CONSTRAINT_EQ        = 2;\nexport const SQLITE_INDEX_CONSTRAINT_GT        = 4;\nexport const SQLITE_INDEX_CONSTRAINT_LE        = 8;\nexport const SQLITE_INDEX_CONSTRAINT_LT        = 16;\nexport const SQLITE_INDEX_CONSTRAINT_GE        = 32;\nexport const SQLITE_INDEX_CONSTRAINT_MATCH     = 64;\nexport const SQLITE_INDEX_CONSTRAINT_LIKE      = 65;\nexport const SQLITE_INDEX_CONSTRAINT_GLOB      = 66;\nexport const SQLITE_INDEX_CONSTRAINT_REGEXP    = 67;\nexport const SQLITE_INDEX_CONSTRAINT_NE        = 68;\nexport const SQLITE_INDEX_CONSTRAINT_ISNOT     = 69;\nexport const SQLITE_INDEX_CONSTRAINT_ISNOTNULL = 70;\nexport const SQLITE_INDEX_CONSTRAINT_ISNULL    = 71;\nexport const SQLITE_INDEX_CONSTRAINT_IS        = 72;\nexport const SQLITE_INDEX_CONSTRAINT_FUNCTION  = 150;\nexport const SQLITE_INDEX_SCAN_UNIQUE          = 1;  /* Scan visits at most = 1 row */\n\n// Function flags\nexport const SQLITE_DETERMINISTIC = 0x000000800;\nexport const SQLITE_DIRECTONLY    = 0x000080000;\nexport const SQLITE_SUBTYPE       = 0x000100000;\nexport const SQLITE_INNOCUOUS     = 0x000200000;\n\n// Sync flags\nexport const SQLITE_SYNC_NORMAL   = 0x00002;\nexport const SQLITE_SYNC_FULL     = 0x00003;\nexport const SQLITE_SYNC_DATAONLY = 0x00010;\n\n// Authorizer action codes\nexport const SQLITE_CREATE_INDEX        = 1;\nexport const SQLITE_CREATE_TABLE        = 2;\nexport const SQLITE_CREATE_TEMP_INDEX   = 3;\nexport const SQLITE_CREATE_TEMP_TABLE   = 4;\nexport const SQLITE_CREATE_TEMP_TRIGGER = 5;\nexport const SQLITE_CREATE_TEMP_VIEW    = 6;\nexport const SQLITE_CREATE_TRIGGER      = 7;\nexport const SQLITE_CREATE_VIEW         = 8;\nexport const SQLITE_DELETE              = 9;\nexport const SQLITE_DROP_INDEX          = 10;\nexport const SQLITE_DROP_TABLE          = 11;\nexport const SQLITE_DROP_TEMP_INDEX     = 12;\nexport const SQLITE_DROP_TEMP_TABLE     = 13;\nexport const SQLITE_DROP_TEMP_TRIGGER   = 14;\nexport const SQLITE_DROP_TEMP_VIEW      = 15;\nexport const SQLITE_DROP_TRIGGER        = 16;\nexport const SQLITE_DROP_VIEW           = 17;\nexport const SQLITE_INSERT              = 18;\nexport const SQLITE_PRAGMA              = 19;\nexport const SQLITE_READ                = 20;\nexport const SQLITE_SELECT              = 21;\nexport const SQLITE_TRANSACTION         = 22;\nexport const SQLITE_UPDATE              = 23;\nexport const SQLITE_ATTACH              = 24;\nexport const SQLITE_DETACH              = 25;\nexport const SQLITE_ALTER_TABLE         = 26;\nexport const SQLITE_REINDEX             = 27;\nexport const SQLITE_ANALYZE             = 28;\nexport const SQLITE_CREATE_VTABLE       = 29;\nexport const SQLITE_DROP_VTABLE         = 30;\nexport const SQLITE_FUNCTION            = 31;\nexport const SQLITE_SAVEPOINT           = 32;\nexport const SQLITE_COPY                = 0;\nexport const SQLITE_RECURSIVE           = 33;\n\n// Authorizer return codes\nexport const SQLITE_DENY   = 1;\nexport const SQLITE_IGNORE = 2;\n\n// Limit categories\nexport const SQLITE_LIMIT_LENGTH              = 0;\nexport const SQLITE_LIMIT_SQL_LENGTH          = 1;\nexport const SQLITE_LIMIT_COLUMN              = 2;\nexport const SQLITE_LIMIT_EXPR_DEPTH          = 3;\nexport const SQLITE_LIMIT_COMPOUND_SELECT     = 4;\nexport const SQLITE_LIMIT_VDBE_OP             = 5;\nexport const SQLITE_LIMIT_FUNCTION_ARG        = 6;\nexport const SQLITE_LIMIT_ATTACHED            = 7;\nexport const SQLITE_LIMIT_LIKE_PATTERN_LENGTH = 8;\nexport const SQLITE_LIMIT_VARIABLE_NUMBER     = 9;\nexport const SQLITE_LIMIT_TRIGGER_DEPTH       = 10;\nexport const SQLITE_LIMIT_WORKER_THREADS      = 11;","// Copyright 2021 Roy T. Hashimoto. All Rights Reserved.\n\nimport * as SQLite from './sqlite-constants.js';\nexport * from './sqlite-constants.js';\n\nconst MAX_INT64 = 0x7fffffffffffffffn;\nconst MIN_INT64 = -0x8000000000000000n;\n\nexport class SQLiteError extends Error {\n  constructor(message, code) {\n    super(message);\n    this.code = code;\n  }\n}\n\nconst async = true;\n\n/**\n * Builds a Javascript API from the Emscripten module. This API is still\n * low-level and closely corresponds to the C API exported by the module,\n * but differs in some specifics like throwing exceptions on errors.\n * @param {*} Module SQLite Emscripten module\n * @returns {SQLiteAPI}\n */\nexport function Factory(Module) {\n  /** @type {SQLiteAPI} */ const sqlite3 = {};\n\n  const sqliteFreeAddress = Module._getSqliteFree();\n\n  // Allocate some space for 32-bit returned values.\n  const tmp = Module._malloc(8);\n  const tmpPtr = [tmp, tmp + 4];\n\n  // Convert a JS string to a C string. sqlite3_malloc is used to allocate\n  // memory (use sqlite3_free to deallocate).\n  function createUTF8(s) {\n    if (typeof s !== 'string') return 0;\n    const n = Module.lengthBytesUTF8(s);\n    const zts = Module._sqlite3_malloc(n + 1);\n    Module.stringToUTF8(s, zts, n + 1);\n    return zts;\n  }\n\n  /**\n   * Concatenate 32-bit numbers into a 64-bit (signed) BigInt.\n   * @param {number} lo32\n   * @param {number} hi32\n   * @returns {bigint}\n   */\n  function cvt32x2ToBigInt(lo32, hi32) {\n    return (BigInt(hi32) << 32n) | (BigInt(lo32) & 0xffffffffn);\n  }\n\n  /**\n   * Concatenate 32-bit numbers and return as number or BigInt, depending\n   * on the value.\n   * @param {number} lo32 \n   * @param {number} hi32 \n   * @returns {number|bigint}\n   */\n  const cvt32x2AsSafe = (function () {\n    const hiMax = BigInt(Number.MAX_SAFE_INTEGER) >> 32n;\n    const hiMin = BigInt(Number.MIN_SAFE_INTEGER) >> 32n;\n\n    return function (lo32, hi32) {\n      if (hi32 > hiMax || hi32 < hiMin) {\n        // Can't be expressed as a Number so use BigInt.\n        return cvt32x2ToBigInt(lo32, hi32);\n      } else {\n        // Combine the upper and lower 32-bit numbers. The complication is\n        // that lo32 is a signed integer which makes manipulating its bits\n        // a little tricky - the sign bit gets handled separately.\n        return (hi32 * 0x100000000) + (lo32 & 0x7fffffff) - (lo32 & 0x80000000);\n      }\n    }\n  })();\n\n  const databases = new Set();\n  function verifyDatabase(db) {\n    if (!databases.has(db)) {\n      throw new SQLiteError('not a database', SQLite.SQLITE_MISUSE);\n    }\n  }\n\n  const mapStmtToDB = new Map();\n  function verifyStatement(stmt) {\n    if (!mapStmtToDB.has(stmt)) {\n      throw new SQLiteError('not a statement', SQLite.SQLITE_MISUSE);\n    }\n  }\n\n  sqlite3.bind_collection = function (stmt, bindings) {\n    verifyStatement(stmt);\n    const isArray = Array.isArray(bindings);\n    const nBindings = sqlite3.bind_parameter_count(stmt);\n    for (let i = 1; i <= nBindings; ++i) {\n      const key = isArray ? i - 1 : sqlite3.bind_parameter_name(stmt, i);\n      const value = bindings[key];\n      if (value !== undefined) {\n        sqlite3.bind(stmt, i, value);\n      }\n    }\n    return SQLite.SQLITE_OK;\n  };\n\n  sqlite3.bind = function (stmt, i, value) {\n    verifyStatement(stmt);\n    switch (typeof value) {\n      case 'number':\n        if (value === (value | 0)) {\n          return sqlite3.bind_int(stmt, i, value);\n        } else {\n          return sqlite3.bind_double(stmt, i, value);\n        }\n      case 'string':\n        return sqlite3.bind_text(stmt, i, value);\n      default:\n        if (value instanceof Uint8Array || Array.isArray(value)) {\n          return sqlite3.bind_blob(stmt, i, value);\n        } else if (value === null) {\n          return sqlite3.bind_null(stmt, i);\n        } else if (typeof value === 'bigint') {\n          return sqlite3.bind_int64(stmt, i, value);\n        } else if (value === undefined) {\n          // Existing binding (or NULL) will be used.\n          return SQLite.SQLITE_NOTICE;\n        } else {\n          console.warn('unknown binding converted to null', value);\n          return sqlite3.bind_null(stmt, i);\n        }\n    }\n  };\n\n  sqlite3.bind_blob = (function () {\n    const fname = 'sqlite3_bind_blob';\n    const f = Module.cwrap(fname, ...decl('nnnnn:n'));\n    return function (stmt, i, value) {\n      verifyStatement(stmt);\n      // @ts-ignore\n      const byteLength = value.byteLength ?? value.length;\n      const ptr = Module._sqlite3_malloc(byteLength);\n      Module.HEAPU8.subarray(ptr).set(value);\n      const result = f(stmt, i, ptr, byteLength, sqliteFreeAddress);\n      // trace(fname, result);\n      return check(fname, result, mapStmtToDB.get(stmt));\n    };\n  })();\n\n  sqlite3.bind_parameter_count = (function () {\n    const fname = 'sqlite3_bind_parameter_count';\n    const f = Module.cwrap(fname, ...decl('n:n'));\n    return function (stmt) {\n      verifyStatement(stmt);\n      const result = f(stmt);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.bind_double = (function () {\n    const fname = 'sqlite3_bind_double';\n    const f = Module.cwrap(fname, ...decl('nnn:n'));\n    return function (stmt, i, value) {\n      verifyStatement(stmt);\n      const result = f(stmt, i, value);\n      // trace(fname, result);\n      return check(fname, result, mapStmtToDB.get(stmt));\n    };\n  })();\n\n  sqlite3.bind_int = (function () {\n    const fname = 'sqlite3_bind_int';\n    const f = Module.cwrap(fname, ...decl('nnn:n'));\n    return function (stmt, i, value) {\n      verifyStatement(stmt);\n      if (value > 0x7fffffff || value < -0x80000000) return SQLite.SQLITE_RANGE;\n\n      const result = f(stmt, i, value);\n      // trace(fname, result);\n      return check(fname, result, mapStmtToDB.get(stmt));\n    };\n  })();\n\n  sqlite3.bind_int64 = (function () {\n    const fname = 'sqlite3_bind_int64';\n    const f = Module.cwrap(fname, ...decl('nnnn:n'));\n    return function (stmt, i, value) {\n      verifyStatement(stmt);\n      if (value > MAX_INT64 || value < MIN_INT64) return SQLite.SQLITE_RANGE;\n\n      const lo32 = value & 0xffffffffn;\n      const hi32 = value >> 32n;\n      const result = f(stmt, i, Number(lo32), Number(hi32));\n      // trace(fname, result);\n      return check(fname, result, mapStmtToDB.get(stmt));\n    };\n  })();\n\n  sqlite3.bind_null = (function () {\n    const fname = 'sqlite3_bind_null';\n    const f = Module.cwrap(fname, ...decl('nn:n'));\n    return function (stmt, i) {\n      verifyStatement(stmt);\n      const result = f(stmt, i);\n      // trace(fname, result);\n      return check(fname, result, mapStmtToDB.get(stmt));\n    };\n  })();\n\n  sqlite3.bind_parameter_name = (function () {\n    const fname = 'sqlite3_bind_parameter_name';\n    const f = Module.cwrap(fname, ...decl('n:s'));\n    return function (stmt, i) {\n      verifyStatement(stmt);\n      const result = f(stmt, i);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.bind_text = (function () {\n    const fname = 'sqlite3_bind_text';\n    const f = Module.cwrap(fname, ...decl('nnnnn:n'));\n    return function (stmt, i, value) {\n      verifyStatement(stmt);\n      const ptr = createUTF8(value);\n      const result = f(stmt, i, ptr, -1, sqliteFreeAddress);\n      // trace(fname, result);\n      return check(fname, result, mapStmtToDB.get(stmt));\n    };\n  })();\n\n  sqlite3.changes = (function () {\n    const fname = 'sqlite3_changes';\n    const f = Module.cwrap(fname, ...decl('n:n'));\n    return function (db) {\n      verifyDatabase(db);\n      const result = f(db);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.close = (function () {\n    const fname = 'sqlite3_close';\n    const f = Module.cwrap(fname, ...decl('n:n'), { async });\n    return async function (db) {\n      verifyDatabase(db);\n      const result = await f(db);\n      databases.delete(db);\n      return check(fname, result, db);\n    };\n  })();\n\n  sqlite3.column = function (stmt, iCol) {\n    verifyStatement(stmt);\n    const type = sqlite3.column_type(stmt, iCol);\n    switch (type) {\n      case SQLite.SQLITE_BLOB:\n        return sqlite3.column_blob(stmt, iCol);\n      case SQLite.SQLITE_FLOAT:\n        return sqlite3.column_double(stmt, iCol);\n      case SQLite.SQLITE_INTEGER:\n        const lo32 = sqlite3.column_int(stmt, iCol);\n        const hi32 = Module.getTempRet0();\n        return cvt32x2AsSafe(lo32, hi32);\n      case SQLite.SQLITE_NULL:\n        return null;\n      case SQLite.SQLITE_TEXT:\n        return sqlite3.column_text(stmt, iCol);\n      default:\n        throw new SQLiteError('unknown type', type);\n    }\n  };\n\n  sqlite3.column_blob = (function () {\n    const fname = 'sqlite3_column_blob';\n    const f = Module.cwrap(fname, ...decl('nn:n'));\n    return function (stmt, iCol) {\n      verifyStatement(stmt);\n      const nBytes = sqlite3.column_bytes(stmt, iCol);\n      const address = f(stmt, iCol);\n      const result = Module.HEAPU8.subarray(address, address + nBytes);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.column_bytes = (function () {\n    const fname = 'sqlite3_column_bytes';\n    const f = Module.cwrap(fname, ...decl('nn:n'));\n    return function (stmt, iCol) {\n      verifyStatement(stmt);\n      const result = f(stmt, iCol);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.column_count = (function () {\n    const fname = 'sqlite3_column_count';\n    const f = Module.cwrap(fname, ...decl('n:n'));\n    return function (stmt) {\n      verifyStatement(stmt);\n      const result = f(stmt);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.column_double = (function () {\n    const fname = 'sqlite3_column_double';\n    const f = Module.cwrap(fname, ...decl('nn:n'));\n    return function (stmt, iCol) {\n      verifyStatement(stmt);\n      const result = f(stmt, iCol);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.column_int = (function () {\n    // Retrieve int64 but use only the lower 32 bits. The upper 32-bits are\n    // accessible with Module.getTempRet0().\n    const fname = 'sqlite3_column_int64';\n    const f = Module.cwrap(fname, ...decl('nn:n'));\n    return function (stmt, iCol) {\n      verifyStatement(stmt);\n      const result = f(stmt, iCol);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.column_int64 = (function () {\n    const fname = 'sqlite3_column_int64';\n    const f = Module.cwrap(fname, ...decl('nn:n'));\n    return function (stmt, iCol) {\n      verifyStatement(stmt);\n      const lo32 = f(stmt, iCol);\n      const hi32 = Module.getTempRet0();\n      const result = cvt32x2ToBigInt(lo32, hi32);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.column_name = (function () {\n    const fname = 'sqlite3_column_name';\n    const f = Module.cwrap(fname, ...decl('nn:s'));\n    return function (stmt, iCol) {\n      verifyStatement(stmt);\n      const result = f(stmt, iCol);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.column_names = function (stmt) {\n    const columns = [];\n    const nColumns = sqlite3.column_count(stmt);\n    for (let i = 0; i < nColumns; ++i) {\n      columns.push(sqlite3.column_name(stmt, i));\n    }\n    return columns;\n  };\n\n  sqlite3.column_text = (function () {\n    const fname = 'sqlite3_column_text';\n    const f = Module.cwrap(fname, ...decl('nn:s'));\n    return function (stmt, iCol) {\n      verifyStatement(stmt);\n      const result = f(stmt, iCol);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.column_type = (function () {\n    const fname = 'sqlite3_column_type';\n    const f = Module.cwrap(fname, ...decl('nn:n'));\n    return function (stmt, iCol) {\n      verifyStatement(stmt);\n      const result = f(stmt, iCol);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.create_function = function (db, zFunctionName, nArg, eTextRep, pApp, xFunc, xStep, xFinal) {\n    verifyDatabase(db);\n    if (xFunc && !xStep && !xFinal) {\n      const result = Module.createFunction(db, zFunctionName, nArg, eTextRep, pApp, xFunc);\n      return check('sqlite3_create_function', result, db);\n    }\n\n    if (!xFunc && xStep && xFinal) {\n      const result = Module.createAggregate(db, zFunctionName, nArg, eTextRep, pApp, xStep, xFinal);\n      return check('sqlite3_create_function', result, db);\n    }\n\n    throw new SQLiteError('invalid function combination', SQLite.SQLITE_MISUSE);\n  };\n\n  sqlite3.create_module = function (db, zName, module, appData) {\n    verifyDatabase(db);\n    const result = Module.createModule(db, zName, module, appData);\n    return check('sqlite3_create_module', result, db);\n  };\n\n  sqlite3.data_count = (function () {\n    const fname = 'sqlite3_data_count';\n    const f = Module.cwrap(fname, ...decl('n:n'));\n    return function (stmt) {\n      verifyStatement(stmt);\n      const result = f(stmt);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.declare_vtab = (function () {\n    const fname = 'sqlite3_declare_vtab';\n    const f = Module.cwrap(fname, ...decl('ns:n'));\n    return function (pVTab, zSQL) {\n      const result = f(pVTab, zSQL);\n      return check('sqlite3_declare_vtab', result);\n    }\n  })();\n\n  sqlite3.exec = async function (db, sql, callback) {\n    for await (const stmt of sqlite3.statements(db, sql)) {\n      let columns;\n      while (await sqlite3.step(stmt) === SQLite.SQLITE_ROW) {\n        if (callback) {\n          columns = columns ?? sqlite3.column_names(stmt);\n          const row = sqlite3.row(stmt);\n          await callback(row, columns);\n        }\n      }\n    }\n    return SQLite.SQLITE_OK;\n  };\n\n  sqlite3.run = async function (db, sql, params) {\n    for await (const stmt of sqlite3.statements(db, sql)) {\n      if (params) {\n        sqlite3.bind_collection(stmt, params)\n      }\n      await sqlite3.step(stmt)\n    }\n    return SQLite.SQLITE_OK;\n  };\n\n  sqlite3.execWithParams = async function (db, sql, params) {\n    let columns = [];\n    const rows = []\n    for await (const stmt of sqlite3.statements(db, sql)) {\n      if (params) {\n        sqlite3.bind_collection(stmt, params)\n      }\n      while (await sqlite3.step(stmt) === SQLite.SQLITE_ROW) {\n        columns = columns.length === 0 ? sqlite3.column_names(stmt) : columns;\n        const row = sqlite3.row(stmt);\n        rows.push(row)\n        // await callback(row, columns);\n      }\n    }\n    return {\n      rows: rows,\n      columns: columns\n    }\n  };\n\n  sqlite3.executeBatch = async function (db, sqlQueries, params) {\n    try {\n      await sqlite3.run(db, `BEGIN EXCLUSIVE TRANSACTION`, null)\n      for (let i = 0; i < sqlQueries.length; i++) {\n        const bindParams = params ? params[i] : null;\n        let stmt;\n        const str = sqlite3.str_new(db, sqlQueries[i]);\n        try {\n          const sqlPointer = sqlite3.str_value(str)\n          stmt = await sqlite3.prepare_v2(db, sqlPointer)\n          if (bindParams) {\n            sqlite3.bind_collection(stmt.stmt, bindParams)\n          }\n          await sqlite3.step(stmt.stmt)\n        } finally {\n          if (stmt?.stmt) {\n            sqlite3.finalize(stmt.stmt);\n          }\n          sqlite3.str_finish(str);\n        }\n      }\n      await sqlite3.run(db, `COMMIT`, null)\n      return SQLite.SQLITE_OK;\n    } catch (error) {\n      await sqlite3.run(db, `ROLLBACK`, null)\n    }\n  };\n\n  sqlite3.finalize = (function () {\n    const fname = 'sqlite3_finalize';\n    const f = Module.cwrap(fname, ...decl('n:n'), { async });\n    return async function (stmt) {\n      if (!mapStmtToDB.has(stmt)) {\n        return SQLite.SQLITE_MISUSE;\n      }\n      const result = await f(stmt);\n\n      const db = mapStmtToDB.get(stmt);\n      mapStmtToDB.delete(stmt)\n\n      // Don't throw on error here. Typically the error has already been\n      // thrown and finalize() is part of the cleanup.\n      return result;\n    };\n  })();\n\n  sqlite3.get_autocommit = (function () {\n    const fname = 'sqlite3_get_autocommit';\n    const f = Module.cwrap(fname, ...decl('n:n'));\n    return function (db) {\n      const result = f(db);\n      return result;\n    };\n  })();\n\n  sqlite3.libversion = (function () {\n    const fname = 'sqlite3_libversion';\n    const f = Module.cwrap(fname, ...decl(':s'));\n    return function () {\n      const result = f();\n      return result;\n    };\n  })();\n\n  sqlite3.libversion_number = (function () {\n    const fname = 'sqlite3_libversion_number';\n    const f = Module.cwrap(fname, ...decl(':n'));\n    return function () {\n      const result = f();\n      return result;\n    };\n  })();\n\n  sqlite3.limit = (function () {\n    const fname = 'sqlite3_limit';\n    const f = Module.cwrap(fname, ...decl('nnn:n'));\n    return function (db, id, newVal) {\n      const result = f(db, id, newVal);\n      return result;\n    };\n  })();\n\n  sqlite3.open_v2 = (function () {\n    const fname = 'sqlite3_open_v2';\n    const f = Module.cwrap(fname, ...decl('snnn:n'), { async });\n    return async function (zFilename, flags, zVfs) {\n      flags = flags || SQLite.SQLITE_OPEN_CREATE | SQLite.SQLITE_OPEN_READWRITE;\n      zVfs = createUTF8(zVfs);\n      const result = await f(zFilename, tmpPtr[0], flags, zVfs);\n\n      const db = Module.getValue(tmpPtr[0], '*');\n      databases.add(db);\n      Module._sqlite3_free(zVfs);\n\n      Module.ccall('RegisterExtensionFunctions', 'void', ['number'], [db]);\n      check(fname, result);\n      return db;\n    };\n  })();\n\n  sqlite3.prepare_v2 = (function () {\n    const fname = 'sqlite3_prepare_v2';\n    const f = Module.cwrap(fname, ...decl('nnnnn:n'), { async });\n    return async function (db, sql) {\n      const result = await f(db, sql, -1, tmpPtr[0], tmpPtr[1]);\n      check(fname, result, db);\n\n      const stmt = Module.getValue(tmpPtr[0], '*');\n      if (stmt) {\n        mapStmtToDB.set(stmt, db);\n        return { stmt, sql: Module.getValue(tmpPtr[1], '*') };\n      }\n      return null;\n    };\n  })();\n\n  sqlite3.progress_handler = function (db, nProgressOps, handler, userData) {\n    verifyDatabase(db);\n    Module.progressHandler(db, nProgressOps, handler, userData);\n  };;\n\n  sqlite3.reset = (function () {\n    const fname = 'sqlite3_reset';\n    const f = Module.cwrap(fname, ...decl('n:n'), { async });\n    return async function (stmt) {\n      verifyStatement(stmt);\n      const result = await f(stmt);\n      return check(fname, result, mapStmtToDB.get(stmt));\n    };\n  })();\n\n  sqlite3.result = function (context, value) {\n    switch (typeof value) {\n      case 'number':\n        if (value === (value | 0)) {\n          sqlite3.result_int(context, value);\n        } else {\n          sqlite3.result_double(context, value);\n        }\n        break;\n      case 'string':\n        sqlite3.result_text(context, value);\n        break;\n      default:\n        if (value instanceof Uint8Array || Array.isArray(value)) {\n          sqlite3.result_blob(context, value);\n        } else if (value === null) {\n          sqlite3.result_null(context);\n        } else if (typeof value === 'bigint') {\n          return sqlite3.result_int64(context, value);\n        } else {\n          console.warn('unknown result converted to null', value);\n          sqlite3.result_null(context);\n        }\n        break;\n    }\n\n  };\n\n  sqlite3.result_blob = (function () {\n    const fname = 'sqlite3_result_blob';\n    const f = Module.cwrap(fname, ...decl('nnnn:n'));\n    return function (context, value) {\n      // @ts-ignore\n      const byteLength = value.byteLength ?? value.length;\n      const ptr = Module._sqlite3_malloc(byteLength);\n      Module.HEAPU8.subarray(ptr).set(value);\n      f(context, ptr, byteLength, sqliteFreeAddress); // void return\n    };\n  })();\n\n  sqlite3.result_double = (function () {\n    const fname = 'sqlite3_result_double';\n    const f = Module.cwrap(fname, ...decl('nn:n'));\n    return function (context, value) {\n      f(context, value); // void return\n    };\n  })();\n\n  sqlite3.result_int = (function () {\n    const fname = 'sqlite3_result_int';\n    const f = Module.cwrap(fname, ...decl('nn:n'));\n    return function (context, value) {\n      f(context, value); // void return\n    };\n  })();\n\n  sqlite3.result_int64 = (function () {\n    const fname = 'sqlite3_result_int64';\n    const f = Module.cwrap(fname, ...decl('nnn:n'));\n    return function (context, value) {\n      if (value > MAX_INT64 || value < MIN_INT64) return SQLite.SQLITE_RANGE;\n\n      const lo32 = value & 0xffffffffn;\n      const hi32 = value >> 32n;\n      f(context, Number(lo32), Number(hi32)); // void return\n    };\n  })();\n\n  sqlite3.result_null = (function () {\n    const fname = 'sqlite3_result_null';\n    const f = Module.cwrap(fname, ...decl('n:n'));\n    return function (context) {\n      f(context); // void return\n    };\n  })();\n\n  sqlite3.result_text = (function () {\n    const fname = 'sqlite3_result_text';\n    const f = Module.cwrap(fname, ...decl('nnnn:n'));\n    return function (context, value) {\n      const ptr = createUTF8(value);\n      f(context, ptr, -1, sqliteFreeAddress); // void return\n    };\n  })();\n\n  sqlite3.row = function (stmt) {\n    const row = [];\n    const nColumns = sqlite3.data_count(stmt);\n    for (let i = 0; i < nColumns; ++i) {\n      const value = sqlite3.column(stmt, i);\n\n      // Copy blob if aliasing volatile WebAssembly memory. This avoids an\n      // unnecessary copy if users monkey patch column_blob to copy.\n      // @ts-ignore\n      row.push(value?.buffer === Module.HEAPU8.buffer ? value.slice() : value);\n    }\n    return row;\n  };\n\n  sqlite3.set_authorizer = function (db, authFunction, userData) {\n    verifyDatabase(db);\n    const result = Module.setAuthorizer(db, authFunction, userData);\n    return check('sqlite3_set_authorizer', result, db);\n  };;\n\n  sqlite3.sql = (function () {\n    const fname = 'sqlite3_sql';\n    const f = Module.cwrap(fname, ...decl('n:s'));\n    return function (stmt) {\n      verifyStatement(stmt);\n      const result = f(stmt);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.statements = function (db, sql) {\n    return (async function* () {\n      const str = sqlite3.str_new(db, sql);\n      let prepared = { stmt: null, sql: sqlite3.str_value(str) };\n      try {\n        while (prepared = await sqlite3.prepare_v2(db, prepared.sql)) {\n          // console.log(sqlite3.sql(prepared.stmt));\n          yield prepared.stmt;\n          sqlite3.finalize(prepared.stmt);\n          prepared.stmt = null;\n        }\n      } finally {\n        if (prepared?.stmt) {\n          sqlite3.finalize(prepared.stmt);\n        }\n        sqlite3.str_finish(str);\n      }\n    })();\n  };\n\n  sqlite3.step = (function () {\n    const fname = 'sqlite3_step';\n    const f = Module.cwrap(fname, ...decl('n:n'), { async });\n    return async function (stmt) {\n      verifyStatement(stmt);\n      const result = await f(stmt);\n      return check(fname, result, mapStmtToDB.get(stmt), [SQLite.SQLITE_ROW, SQLite.SQLITE_DONE]);\n    };\n  })();\n\n  // Duplicate some of the SQLite dynamic string API but without\n  // calling SQLite (except for memory allocation). We need some way\n  // to transfer Javascript strings and might as well use an API\n  // that mimics the SQLite API.\n  let stringId = 0;\n  const strings = new Map();\n\n  sqlite3.str_new = function (db, s = '') {\n    const sBytes = Module.lengthBytesUTF8(s);\n    const str = stringId++ & 0xffffffff;\n    const data = {\n      offset: Module._sqlite3_malloc(sBytes + 1),\n      bytes: sBytes\n    };\n    strings.set(str, data);\n    Module.stringToUTF8(s, data.offset, data.bytes + 1);\n    return str;\n  };\n\n  sqlite3.str_appendall = function (str, s) {\n    if (!strings.has(str)) {\n      throw new SQLiteError('not a string', SQLite.SQLITE_MISUSE);\n    }\n    const data = strings.get(str);\n\n    const sBytes = Module.lengthBytesUTF8(s);\n    const newBytes = data.bytes + sBytes;\n    const newOffset = Module._sqlite3_malloc(newBytes + 1);\n    const newArray = Module.HEAPU8.subarray(newOffset, newOffset + newBytes + 1);\n    newArray.set(Module.HEAPU8.subarray(data.offset, data.offset + data.bytes));\n    Module.stringToUTF8(s, newOffset + data.bytes, sBytes + 1);\n\n    Module._sqlite3_free(data.offset);\n    data.offset = newOffset;\n    data.bytes = newBytes;\n    strings.set(str, data);\n  };\n\n  sqlite3.str_finish = function (str) {\n    if (!strings.has(str)) {\n      throw new SQLiteError('not a string', SQLite.SQLITE_MISUSE);\n    }\n    const data = strings.get(str);\n    strings.delete(str);\n    Module._sqlite3_free(data.offset);\n  };\n\n  sqlite3.str_value = function (str) {\n    if (!strings.has(str)) {\n      throw new SQLiteError('not a string', SQLite.SQLITE_MISUSE);\n    }\n    return strings.get(str).offset;\n  };\n\n  sqlite3.update_hook = function (db, xUpdate) {\n    verifyDatabase(db);\n    Module.updateHook(db, xUpdate);\n    return SQLite.SQLITE_OK;\n  }\n\n  sqlite3.user_data = function (context) {\n    return Module.getFunctionUserData(context);\n  };\n\n  sqlite3.value = function (pValue) {\n    const type = sqlite3.value_type(pValue);\n    switch (type) {\n      case SQLite.SQLITE_BLOB:\n        return sqlite3.value_blob(pValue);\n      case SQLite.SQLITE_FLOAT:\n        return sqlite3.value_double(pValue);\n      case SQLite.SQLITE_INTEGER:\n        const lo32 = sqlite3.value_int(pValue);\n        const hi32 = Module.getTempRet0();\n        return cvt32x2AsSafe(lo32, hi32);\n      case SQLite.SQLITE_NULL:\n        return null;\n      case SQLite.SQLITE_TEXT:\n        return sqlite3.value_text(pValue);\n      default:\n        throw new SQLiteError('unknown type', type);\n    }\n  };\n\n  sqlite3.value_blob = (function () {\n    const fname = 'sqlite3_value_blob';\n    const f = Module.cwrap(fname, ...decl('n:n'));\n    return function (pValue) {\n      const nBytes = sqlite3.value_bytes(pValue);\n      const address = f(pValue);\n      const result = Module.HEAPU8.subarray(address, address + nBytes);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.value_bytes = (function () {\n    const fname = 'sqlite3_value_bytes';\n    const f = Module.cwrap(fname, ...decl('n:n'));\n    return function (pValue) {\n      const result = f(pValue);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.value_double = (function () {\n    const fname = 'sqlite3_value_double';\n    const f = Module.cwrap(fname, ...decl('n:n'));\n    return function (pValue) {\n      const result = f(pValue);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.value_int = (function () {\n    const fname = 'sqlite3_value_int64';\n    const f = Module.cwrap(fname, ...decl('n:n'));\n    return function (pValue) {\n      const result = f(pValue);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.value_int64 = (function () {\n    const fname = 'sqlite3_value_int64';\n    const f = Module.cwrap(fname, ...decl('n:n'));\n    return function (pValue) {\n      const lo32 = f(pValue);\n      const hi32 = Module.getTempRet0();\n      const result = cvt32x2ToBigInt(lo32, hi32);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.value_text = (function () {\n    const fname = 'sqlite3_value_text';\n    const f = Module.cwrap(fname, ...decl('n:s'));\n    return function (pValue) {\n      const result = f(pValue);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.value_type = (function () {\n    const fname = 'sqlite3_value_type';\n    const f = Module.cwrap(fname, ...decl('n:n'));\n    return function (pValue) {\n      const result = f(pValue);\n      // trace(fname, result);\n      return result;\n    };\n  })();\n\n  sqlite3.vfs_register = function (vfs, makeDefault) {\n    const result = Module.registerVFS(vfs, makeDefault);\n    return check('sqlite3_vfs_register', result);\n  };\n\n  function check(fname, result, db = null, allowed = [SQLite.SQLITE_OK]) {\n    // trace(fname, result);\n    if (allowed.includes(result)) return result;\n    const message = db ?\n      Module.ccall('sqlite3_errmsg', 'string', ['number'], [db]) :\n      fname;\n    throw new SQLiteError(message, result);\n  }\n\n  return sqlite3;\n}\n\nfunction trace(...args) {\n  // const date = new Date();\n  // const t = date.getHours().toString().padStart(2, '0') + ':' +\n  //           date.getMinutes().toString().padStart(2, '0') + ':' +\n  //           date.getSeconds().toString().padStart(2, '0') + '.' +\n  //           date.getMilliseconds().toString().padStart(3, '0');\n  // console.debug(t, ...args);\n}\n\n// Helper function to use a more compact signature specification.\nfunction decl(s) {\n  const result = [];\n  const m = s.match(/([ns@]*):([nsv@])/);\n  switch (m[2]) {\n    case 'n': result.push('number'); break;\n    case 's': result.push('string'); break;\n    case 'v': result.push(null); break;\n  }\n\n  const args = [];\n  for (let c of m[1]) {\n    switch (c) {\n      case 'n': args.push('number'); break;\n      case 's': args.push('string'); break;\n    }\n  }\n  result.push(args);\n  return result;\n}\n","\nvar Module = (() => {\n  var _scriptDir = import.meta.url;\n  \n  return (\nfunction(moduleArg = {}) {\n\nvar f=moduleArg,aa,ba;f.ready=new Promise((a,b)=>{aa=a;ba=b});var ca=Object.assign({},f),ea=\"./this.program\",fa=(a,b)=>{throw b;},ha=\"object\"==typeof window,ia=\"function\"==typeof importScripts,q=\"\",ja;\nif(ha||ia)ia?q=self.location.href:\"undefined\"!=typeof document&&document.currentScript&&(q=document.currentScript.src),_scriptDir&&(q=_scriptDir),0!==q.indexOf(\"blob:\")?q=q.substr(0,q.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):q=\"\",ia&&(ja=a=>{var b=new XMLHttpRequest;b.open(\"GET\",a,!1);b.responseType=\"arraybuffer\";b.send(null);return new Uint8Array(b.response)});var ka=f.print||console.log.bind(console),t=f.printErr||console.error.bind(console);Object.assign(f,ca);ca=null;f.thisProgram&&(ea=f.thisProgram);\nf.quit&&(fa=f.quit);var la;f.wasmBinary&&(la=f.wasmBinary);var noExitRuntime=f.noExitRuntime||!0;\"object\"!=typeof WebAssembly&&u(\"no native wasm support detected\");var ma,na=!1,v,w,oa,x,z,pa,qa;function ra(){var a=ma.buffer;f.HEAP8=v=new Int8Array(a);f.HEAP16=oa=new Int16Array(a);f.HEAPU8=w=new Uint8Array(a);f.HEAPU16=new Uint16Array(a);f.HEAP32=x=new Int32Array(a);f.HEAPU32=z=new Uint32Array(a);f.HEAPF32=pa=new Float32Array(a);f.HEAPF64=qa=new Float64Array(a)}var sa=[],ta=[],ua=[],va=[];\nfunction wa(){var a=f.preRun.shift();sa.unshift(a)}var B=0,xa=null,ya=null;function u(a){if(f.onAbort)f.onAbort(a);a=\"Aborted(\"+a+\")\";t(a);na=!0;a=new WebAssembly.RuntimeError(a+\". Build with -sASSERTIONS for more info.\");ba(a);throw a;}function za(a){return a.startsWith(\"data:application/octet-stream;base64,\")}var C;if(f.locateFile){if(C=\"wa-sqlite.wasm\",!za(C)){var Aa=C;C=f.locateFile?f.locateFile(Aa,q):q+Aa}}else C=(new URL(\"wa-sqlite.wasm\",import.meta.url)).href;\nfunction Ba(a){if(a==C&&la)return new Uint8Array(la);if(ja)return ja(a);throw\"both async and sync fetching of the wasm failed\";}function Ca(a){return la||!ha&&!ia||\"function\"!=typeof fetch?Promise.resolve().then(()=>Ba(a)):fetch(a,{credentials:\"same-origin\"}).then(b=>{if(!b.ok)throw\"failed to load wasm binary file at '\"+a+\"'\";return b.arrayBuffer()}).catch(()=>Ba(a))}\nfunction Da(a,b,c){return Ca(a).then(d=>WebAssembly.instantiate(d,b)).then(d=>d).then(c,d=>{t(`failed to asynchronously prepare wasm: ${d}`);u(d)})}function Ea(a,b){var c=C;return la||\"function\"!=typeof WebAssembly.instantiateStreaming||za(c)||\"function\"!=typeof fetch?Da(c,a,b):fetch(c,{credentials:\"same-origin\"}).then(d=>WebAssembly.instantiateStreaming(d,a).then(b,function(e){t(`wasm streaming compile failed: ${e}`);t(\"falling back to ArrayBuffer instantiation\");return Da(c,a,b)}))}var D,F;\nfunction Fa(a){this.name=\"ExitStatus\";this.message=`Program terminated with exit(${a})`;this.status=a}var Ga=a=>{for(;0<a.length;)a.shift()(f)};function I(a,b=\"i8\"){b.endsWith(\"*\")&&(b=\"*\");switch(b){case \"i1\":return v[a>>0];case \"i8\":return v[a>>0];case \"i16\":return oa[a>>1];case \"i32\":return x[a>>2];case \"i64\":u(\"to do getValue(i64) use WASM_BIGINT\");case \"float\":return pa[a>>2];case \"double\":return qa[a>>3];case \"*\":return z[a>>2];default:u(`invalid type for getValue: ${b}`)}}\nfunction J(a,b,c=\"i8\"){c.endsWith(\"*\")&&(c=\"*\");switch(c){case \"i1\":v[a>>0]=b;break;case \"i8\":v[a>>0]=b;break;case \"i16\":oa[a>>1]=b;break;case \"i32\":x[a>>2]=b;break;case \"i64\":u(\"to do setValue(i64) use WASM_BIGINT\");case \"float\":pa[a>>2]=b;break;case \"double\":qa[a>>3]=b;break;case \"*\":z[a>>2]=b;break;default:u(`invalid type for setValue: ${c}`)}}\nvar Ha=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf8\"):void 0,K=(a,b,c)=>{var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16<c-b&&a.buffer&&Ha)return Ha.decode(a.subarray(b,c));for(d=\"\";b<c;){var e=a[b++];if(e&128){var h=a[b++]&63;if(192==(e&224))d+=String.fromCharCode((e&31)<<6|h);else{var g=a[b++]&63;e=224==(e&240)?(e&15)<<12|h<<6|g:(e&7)<<18|h<<12|g<<6|a[b++]&63;65536>e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d},\nIa=(a,b)=>{for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];\".\"===e?a.splice(d,1):\"..\"===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift(\"..\");return a},M=a=>{var b=\"/\"===a.charAt(0),c=\"/\"===a.substr(-1);(a=Ia(a.split(\"/\").filter(d=>!!d),!b).join(\"/\"))||b||(a=\".\");a&&c&&(a+=\"/\");return(b?\"/\":\"\")+a},Ja=a=>{var b=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return\".\";b&&(b=b.substr(0,b.length-1));return a+b},Ka=a=>{if(\"/\"===\na)return\"/\";a=M(a);a=a.replace(/\\/$/,\"\");var b=a.lastIndexOf(\"/\");return-1===b?a:a.substr(b+1)},La=()=>{if(\"object\"==typeof crypto&&\"function\"==typeof crypto.getRandomValues)return a=>crypto.getRandomValues(a);u(\"initRandomDevice\")},Ma=a=>(Ma=La())(a);\nfunction Na(){for(var a=\"\",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:\"/\";if(\"string\"!=typeof b)throw new TypeError(\"Arguments to path.resolve must be strings\");if(!b)return\"\";a=b+\"/\"+a;b=\"/\"===b.charAt(0)}a=Ia(a.split(\"/\").filter(d=>!!d),!b).join(\"/\");return(b?\"/\":\"\")+a||\".\"}\nvar Oa=[],N=a=>{for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);127>=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},O=(a,b,c,d)=>{if(!(0<d))return 0;var e=c;d=c+d-1;for(var h=0;h<a.length;++h){var g=a.charCodeAt(h);if(55296<=g&&57343>=g){var m=a.charCodeAt(++h);g=65536+((g&1023)<<10)|m&1023}if(127>=g){if(c>=d)break;b[c++]=g}else{if(2047>=g){if(c+1>=d)break;b[c++]=192|g>>6}else{if(65535>=g){if(c+2>=d)break;b[c++]=224|g>>12}else{if(c+3>=d)break;b[c++]=240|g>>18;b[c++]=128|g>>\n12&63}b[c++]=128|g>>6&63}b[c++]=128|g&63}}b[c]=0;return c-e},Pa=[];function Qa(a,b){Pa[a]={input:[],Pb:[],ac:b};Ra(a,Sa)}\nvar Sa={open(a){var b=Pa[a.node.dc];if(!b)throw new P(43);a.Qb=b;a.seekable=!1},close(a){a.Qb.ac.Yb(a.Qb)},Yb(a){a.Qb.ac.Yb(a.Qb)},read(a,b,c,d){if(!a.Qb||!a.Qb.ac.uc)throw new P(60);for(var e=0,h=0;h<d;h++){try{var g=a.Qb.ac.uc(a.Qb)}catch(m){throw new P(29);}if(void 0===g&&0===e)throw new P(6);if(null===g||void 0===g)break;e++;b[c+h]=g}e&&(a.node.timestamp=Date.now());return e},write(a,b,c,d){if(!a.Qb||!a.Qb.ac.oc)throw new P(60);try{for(var e=0;e<d;e++)a.Qb.ac.oc(a.Qb,b[c+e])}catch(h){throw new P(29);\n}d&&(a.node.timestamp=Date.now());return e}},Ta={uc(){a:{if(!Oa.length){var a=null;\"undefined\"!=typeof window&&\"function\"==typeof window.prompt?(a=window.prompt(\"Input: \"),null!==a&&(a+=\"\\n\")):\"function\"==typeof readline&&(a=readline(),null!==a&&(a+=\"\\n\"));if(!a){var b=null;break a}b=Array(N(a)+1);a=O(a,b,0,b.length);b.length=a;Oa=b}b=Oa.shift()}return b},oc(a,b){null===b||10===b?(ka(K(a.Pb,0)),a.Pb=[]):0!=b&&a.Pb.push(b)},Yb(a){a.Pb&&0<a.Pb.length&&(ka(K(a.Pb,0)),a.Pb=[])},Uc(){return{Qc:25856,Sc:5,\nPc:191,Rc:35387,Oc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},Vc(){return 0},Wc(){return[24,80]}},Ua={oc(a,b){null===b||10===b?(t(K(a.Pb,0)),a.Pb=[]):0!=b&&a.Pb.push(b)},Yb(a){a.Pb&&0<a.Pb.length&&(t(K(a.Pb,0)),a.Pb=[])}};function Va(a,b){var c=a.Lb?a.Lb.length:0;c>=b||(b=Math.max(b,c*(1048576>c?2:1.125)>>>0),0!=c&&(b=Math.max(b,256)),c=a.Lb,a.Lb=new Uint8Array(b),0<a.Nb&&a.Lb.set(c.subarray(0,a.Nb),0))}\nvar Q={Sb:null,Tb(){return Q.createNode(null,\"/\",16895,0)},createNode(a,b,c,d){if(24576===(c&61440)||4096===(c&61440))throw new P(63);Q.Sb||(Q.Sb={dir:{node:{Rb:Q.Eb.Rb,Ob:Q.Eb.Ob,bc:Q.Eb.bc,hc:Q.Eb.hc,yc:Q.Eb.yc,mc:Q.Eb.mc,kc:Q.Eb.kc,xc:Q.Eb.xc,lc:Q.Eb.lc},stream:{Xb:Q.Kb.Xb}},file:{node:{Rb:Q.Eb.Rb,Ob:Q.Eb.Ob},stream:{Xb:Q.Kb.Xb,read:Q.Kb.read,write:Q.Kb.write,rc:Q.Kb.rc,ic:Q.Kb.ic,jc:Q.Kb.jc}},link:{node:{Rb:Q.Eb.Rb,Ob:Q.Eb.Ob,ec:Q.Eb.ec},stream:{}},sc:{node:{Rb:Q.Eb.Rb,Ob:Q.Eb.Ob},stream:Wa}});\nc=Xa(a,b,c,d);R(c.mode)?(c.Eb=Q.Sb.dir.node,c.Kb=Q.Sb.dir.stream,c.Lb={}):32768===(c.mode&61440)?(c.Eb=Q.Sb.file.node,c.Kb=Q.Sb.file.stream,c.Nb=0,c.Lb=null):40960===(c.mode&61440)?(c.Eb=Q.Sb.link.node,c.Kb=Q.Sb.link.stream):8192===(c.mode&61440)&&(c.Eb=Q.Sb.sc.node,c.Kb=Q.Sb.sc.stream);c.timestamp=Date.now();a&&(a.Lb[b]=c,a.timestamp=c.timestamp);return c},Tc(a){return a.Lb?a.Lb.subarray?a.Lb.subarray(0,a.Nb):new Uint8Array(a.Lb):new Uint8Array(0)},Eb:{Rb(a){var b={};b.Ec=8192===(a.mode&61440)?a.id:\n1;b.vc=a.id;b.mode=a.mode;b.Kc=1;b.uid=0;b.Gc=0;b.dc=a.dc;R(a.mode)?b.size=4096:32768===(a.mode&61440)?b.size=a.Nb:40960===(a.mode&61440)?b.size=a.link.length:b.size=0;b.Ac=new Date(a.timestamp);b.Jc=new Date(a.timestamp);b.Dc=new Date(a.timestamp);b.Bc=4096;b.Cc=Math.ceil(b.size/b.Bc);return b},Ob(a,b){void 0!==b.mode&&(a.mode=b.mode);void 0!==b.timestamp&&(a.timestamp=b.timestamp);if(void 0!==b.size&&(b=b.size,a.Nb!=b))if(0==b)a.Lb=null,a.Nb=0;else{var c=a.Lb;a.Lb=new Uint8Array(b);c&&a.Lb.set(c.subarray(0,\nMath.min(b,a.Nb)));a.Nb=b}},bc(){throw Ya[44];},hc(a,b,c,d){return Q.createNode(a,b,c,d)},yc(a,b,c){if(R(a.mode)){try{var d=Za(b,c)}catch(h){}if(d)for(var e in d.Lb)throw new P(55);}delete a.parent.Lb[a.name];a.parent.timestamp=Date.now();a.name=c;b.Lb[c]=a;b.timestamp=a.parent.timestamp;a.parent=b},mc(a,b){delete a.Lb[b];a.timestamp=Date.now()},kc(a,b){var c=Za(a,b),d;for(d in c.Lb)throw new P(55);delete a.Lb[b];a.timestamp=Date.now()},xc(a){var b=[\".\",\"..\"],c;for(c in a.Lb)a.Lb.hasOwnProperty(c)&&\nb.push(c);return b},lc(a,b,c){a=Q.createNode(a,b,41471,0);a.link=c;return a},ec(a){if(40960!==(a.mode&61440))throw new P(28);return a.link}},Kb:{read(a,b,c,d,e){var h=a.node.Lb;if(e>=a.node.Nb)return 0;a=Math.min(a.node.Nb-e,d);if(8<a&&h.subarray)b.set(h.subarray(e,e+a),c);else for(d=0;d<a;d++)b[c+d]=h[e+d];return a},write(a,b,c,d,e,h){b.buffer===v.buffer&&(h=!1);if(!d)return 0;a=a.node;a.timestamp=Date.now();if(b.subarray&&(!a.Lb||a.Lb.subarray)){if(h)return a.Lb=b.subarray(c,c+d),a.Nb=d;if(0===\na.Nb&&0===e)return a.Lb=b.slice(c,c+d),a.Nb=d;if(e+d<=a.Nb)return a.Lb.set(b.subarray(c,c+d),e),d}Va(a,e+d);if(a.Lb.subarray&&b.subarray)a.Lb.set(b.subarray(c,c+d),e);else for(h=0;h<d;h++)a.Lb[e+h]=b[c+h];a.Nb=Math.max(a.Nb,e+d);return d},Xb(a,b,c){1===c?b+=a.position:2===c&&32768===(a.node.mode&61440)&&(b+=a.node.Nb);if(0>b)throw new P(28);return b},rc(a,b,c){Va(a.node,b+c);a.node.Nb=Math.max(a.node.Nb,b+c)},ic(a,b,c,d,e){if(32768!==(a.node.mode&61440))throw new P(43);a=a.node.Lb;if(e&2||a.buffer!==\nv.buffer){if(0<c||c+b<a.length)a.subarray?a=a.subarray(c,c+b):a=Array.prototype.slice.call(a,c,c+b);c=!0;b=65536*Math.ceil(b/65536);(e=$a(65536,b))?(w.fill(0,e,e+b),b=e):b=0;if(!b)throw new P(48);v.set(a,b)}else c=!1,b=a.byteOffset;return{Lc:b,zc:c}},jc(a,b,c,d){Q.Kb.write(a,b,0,d,c,!1);return 0}}},ab=(a,b)=>{var c=0;a&&(c|=365);b&&(c|=146);return c},bb=null,cb={},db=[],eb=1,S=null,fb=!0,P=null,Ya={};\nfunction T(a,b={}){a=Na(a);if(!a)return{path:\"\",node:null};b=Object.assign({tc:!0,pc:0},b);if(8<b.pc)throw new P(32);a=a.split(\"/\").filter(g=>!!g);for(var c=bb,d=\"/\",e=0;e<a.length;e++){var h=e===a.length-1;if(h&&b.parent)break;c=Za(c,a[e]);d=M(d+\"/\"+a[e]);c.Zb&&(!h||h&&b.tc)&&(c=c.Zb.root);if(!h||b.Wb)for(h=0;40960===(c.mode&61440);)if(c=gb(d),d=Na(Ja(d),c),c=T(d,{pc:b.pc+1}).node,40<h++)throw new P(32);}return{path:d,node:c}}\nfunction hb(a){for(var b;;){if(a===a.parent)return a=a.Tb.wc,b?\"/\"!==a[a.length-1]?`${a}/${b}`:a+b:a;b=b?`${a.name}/${b}`:a.name;a=a.parent}}function ib(a,b){for(var c=0,d=0;d<b.length;d++)c=(c<<5)-c+b.charCodeAt(d)|0;return(a+c>>>0)%S.length}function jb(a){var b=ib(a.parent.id,a.name);if(S[b]===a)S[b]=a.$b;else for(b=S[b];b;){if(b.$b===a){b.$b=a.$b;break}b=b.$b}}\nfunction Za(a,b){var c;if(c=(c=kb(a,\"x\"))?c:a.Eb.bc?0:2)throw new P(c,a);for(c=S[ib(a.id,b)];c;c=c.$b){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.Eb.bc(a,b)}function Xa(a,b,c,d){a=new lb(a,b,c,d);b=ib(a.parent.id,a.name);a.$b=S[b];return S[b]=a}function R(a){return 16384===(a&61440)}function mb(a){var b=[\"r\",\"w\",\"rw\"][a&3];a&512&&(b+=\"w\");return b}\nfunction kb(a,b){if(fb)return 0;if(!b.includes(\"r\")||a.mode&292){if(b.includes(\"w\")&&!(a.mode&146)||b.includes(\"x\")&&!(a.mode&73))return 2}else return 2;return 0}function nb(a,b){try{return Za(a,b),20}catch(c){}return kb(a,\"wx\")}function ob(a,b,c){try{var d=Za(a,b)}catch(e){return e.Mb}if(a=kb(a,\"wx\"))return a;if(c){if(!R(d.mode))return 54;if(d===d.parent||\"/\"===hb(d))return 10}else if(R(d.mode))return 31;return 0}function pb(){for(var a=0;4096>=a;a++)if(!db[a])return a;throw new P(33);}\nfunction V(a){a=db[a];if(!a)throw new P(8);return a}function qb(a,b=-1){rb||(rb=function(){this.fc={}},rb.prototype={},Object.defineProperties(rb.prototype,{object:{get(){return this.node},set(c){this.node=c}},flags:{get(){return this.fc.flags},set(c){this.fc.flags=c}},position:{get(){return this.fc.position},set(c){this.fc.position=c}}}));a=Object.assign(new rb,a);-1==b&&(b=pb());a.Ub=b;return db[b]=a}var Wa={open(a){a.Kb=cb[a.node.dc].Kb;a.Kb.open&&a.Kb.open(a)},Xb(){throw new P(70);}};\nfunction Ra(a,b){cb[a]={Kb:b}}function sb(a,b){var c=\"/\"===b,d=!b;if(c&&bb)throw new P(10);if(!c&&!d){var e=T(b,{tc:!1});b=e.path;e=e.node;if(e.Zb)throw new P(10);if(!R(e.mode))throw new P(54);}b={type:a,Yc:{},wc:b,Ic:[]};a=a.Tb(b);a.Tb=b;b.root=a;c?bb=a:e&&(e.Zb=b,e.Tb&&e.Tb.Ic.push(b))}function tb(a,b,c){var d=T(a,{parent:!0}).node;a=Ka(a);if(!a||\".\"===a||\"..\"===a)throw new P(28);var e=nb(d,a);if(e)throw new P(e);if(!d.Eb.hc)throw new P(63);return d.Eb.hc(d,a,b,c)}\nfunction W(a,b){return tb(a,(void 0!==b?b:511)&1023|16384,0)}function ub(a,b,c){\"undefined\"==typeof c&&(c=b,b=438);tb(a,b|8192,c)}function vb(a,b){if(!Na(a))throw new P(44);var c=T(b,{parent:!0}).node;if(!c)throw new P(44);b=Ka(b);var d=nb(c,b);if(d)throw new P(d);if(!c.Eb.lc)throw new P(63);c.Eb.lc(c,b,a)}function wb(a){var b=T(a,{parent:!0}).node;a=Ka(a);var c=Za(b,a),d=ob(b,a,!0);if(d)throw new P(d);if(!b.Eb.kc)throw new P(63);if(c.Zb)throw new P(10);b.Eb.kc(b,a);jb(c)}\nfunction gb(a){a=T(a).node;if(!a)throw new P(44);if(!a.Eb.ec)throw new P(28);return Na(hb(a.parent),a.Eb.ec(a))}function xb(a,b){a=T(a,{Wb:!b}).node;if(!a)throw new P(44);if(!a.Eb.Rb)throw new P(63);return a.Eb.Rb(a)}function yb(a){return xb(a,!0)}function zb(a,b){a=\"string\"==typeof a?T(a,{Wb:!0}).node:a;if(!a.Eb.Ob)throw new P(63);a.Eb.Ob(a,{mode:b&4095|a.mode&-4096,timestamp:Date.now()})}\nfunction Ab(a,b){if(0>b)throw new P(28);a=\"string\"==typeof a?T(a,{Wb:!0}).node:a;if(!a.Eb.Ob)throw new P(63);if(R(a.mode))throw new P(31);if(32768!==(a.mode&61440))throw new P(28);var c=kb(a,\"w\");if(c)throw new P(c);a.Eb.Ob(a,{size:b,timestamp:Date.now()})}\nfunction Bb(a,b,c){if(\"\"===a)throw new P(44);if(\"string\"==typeof b){var d={r:0,\"r+\":2,w:577,\"w+\":578,a:1089,\"a+\":1090}[b];if(\"undefined\"==typeof d)throw Error(`Unknown file open mode: ${b}`);b=d}c=b&64?(\"undefined\"==typeof c?438:c)&4095|32768:0;if(\"object\"==typeof a)var e=a;else{a=M(a);try{e=T(a,{Wb:!(b&131072)}).node}catch(h){}}d=!1;if(b&64)if(e){if(b&128)throw new P(20);}else e=tb(a,c,0),d=!0;if(!e)throw new P(44);8192===(e.mode&61440)&&(b&=-513);if(b&65536&&!R(e.mode))throw new P(54);if(!d&&(c=\ne?40960===(e.mode&61440)?32:R(e.mode)&&(\"r\"!==mb(b)||b&512)?31:kb(e,mb(b)):44))throw new P(c);b&512&&!d&&Ab(e,0);b&=-131713;e=qb({node:e,path:hb(e),flags:b,seekable:!0,position:0,Kb:e.Kb,Nc:[],error:!1});e.Kb.open&&e.Kb.open(e);!f.logReadFiles||b&1||(Cb||(Cb={}),a in Cb||(Cb[a]=1));return e}function Db(a,b,c){if(null===a.Ub)throw new P(8);if(!a.seekable||!a.Kb.Xb)throw new P(70);if(0!=c&&1!=c&&2!=c)throw new P(28);a.position=a.Kb.Xb(a,b,c);a.Nc=[]}\nfunction Eb(){P||(P=function(a,b){this.name=\"ErrnoError\";this.node=b;this.Mc=function(c){this.Mb=c};this.Mc(a);this.message=\"FS error\"},P.prototype=Error(),P.prototype.constructor=P,[44].forEach(a=>{Ya[a]=new P(a);Ya[a].stack=\"<generic error, no stack>\"}))}var Fb;\nfunction Gb(a,b,c){a=M(\"/dev/\"+a);var d=ab(!!b,!!c);Hb||(Hb=64);var e=Hb++<<8|0;Ra(e,{open(h){h.seekable=!1},close(){c&&c.buffer&&c.buffer.length&&c(10)},read(h,g,m,l){for(var k=0,p=0;p<l;p++){try{var n=b()}catch(r){throw new P(29);}if(void 0===n&&0===k)throw new P(6);if(null===n||void 0===n)break;k++;g[m+p]=n}k&&(h.node.timestamp=Date.now());return k},write(h,g,m,l){for(var k=0;k<l;k++)try{c(g[m+k])}catch(p){throw new P(29);}l&&(h.node.timestamp=Date.now());return k}});ub(a,d,e)}var Hb,X={},rb,Cb;\nfunction Ib(a,b,c){if(\"/\"===b.charAt(0))return b;a=-100===a?\"/\":V(a).path;if(0==b.length){if(!c)throw new P(44);return a}return M(a+\"/\"+b)}\nfunction Jb(a,b,c){try{var d=a(b)}catch(h){if(h&&h.node&&M(b)!==M(hb(h.node)))return-54;throw h;}x[c>>2]=d.Ec;x[c+4>>2]=d.mode;z[c+8>>2]=d.Kc;x[c+12>>2]=d.uid;x[c+16>>2]=d.Gc;x[c+20>>2]=d.dc;F=[d.size>>>0,(D=d.size,1<=+Math.abs(D)?0<D?+Math.floor(D/4294967296)>>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)];x[c+24>>2]=F[0];x[c+28>>2]=F[1];x[c+32>>2]=4096;x[c+36>>2]=d.Cc;a=d.Ac.getTime();b=d.Jc.getTime();var e=d.Dc.getTime();F=[Math.floor(a/1E3)>>>0,(D=Math.floor(a/1E3),1<=+Math.abs(D)?0<D?+Math.floor(D/\n4294967296)>>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)];x[c+40>>2]=F[0];x[c+44>>2]=F[1];z[c+48>>2]=a%1E3*1E3;F=[Math.floor(b/1E3)>>>0,(D=Math.floor(b/1E3),1<=+Math.abs(D)?0<D?+Math.floor(D/4294967296)>>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)];x[c+56>>2]=F[0];x[c+60>>2]=F[1];z[c+64>>2]=b%1E3*1E3;F=[Math.floor(e/1E3)>>>0,(D=Math.floor(e/1E3),1<=+Math.abs(D)?0<D?+Math.floor(D/4294967296)>>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)];x[c+72>>2]=F[0];x[c+76>>2]=F[1];z[c+80>>2]=\ne%1E3*1E3;F=[d.vc>>>0,(D=d.vc,1<=+Math.abs(D)?0<D?+Math.floor(D/4294967296)>>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)];x[c+88>>2]=F[0];x[c+92>>2]=F[1];return 0}var Kb=void 0;function Lb(){var a=x[Kb>>2];Kb+=4;return a}\nvar Mb=(a,b)=>b+2097152>>>0<4194305-!!a?(a>>>0)+4294967296*b:NaN,Nb=[0,31,60,91,121,152,182,213,244,274,305,335],Ob=[0,31,59,90,120,151,181,212,243,273,304,334],Qb=a=>{var b=N(a)+1,c=Pb(b);c&&O(a,w,c,b);return c},Rb={},Tb=()=>{if(!Sb){var a={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:(\"object\"==typeof navigator&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",_:ea||\"./this.program\"},b;for(b in Rb)void 0===Rb[b]?delete a[b]:a[b]=Rb[b];\nvar c=[];for(b in a)c.push(`${b}=${a[b]}`);Sb=c}return Sb},Sb;function Ub(){}function Vb(){}function Wb(){}function Xb(){}function Yb(){}function Zb(){}function $b(){}function ac(){}function bc(){}function cc(){}function dc(){}function ec(){}function fc(){}function gc(){}function hc(){}function ic(){}function jc(){}function kc(){}function lc(){}function mc(){}function nc(){}function oc(){}function pc(){}function qc(){}function rc(){}function sc(){}function tc(){}function uc(){}function vc(){}\nfunction wc(){}function xc(){}function yc(){}function zc(){}function Ac(){}function Bc(){}function Cc(){}function Dc(){}function Ec(){}function Fc(){}function Gc(){}\nvar Y=(a,b,c,d)=>{var e={string:k=>{var p=0;if(null!==k&&void 0!==k&&0!==k){p=N(k)+1;var n=Hc(p);O(k,w,n,p);p=n}return p},array:k=>{var p=Hc(k.length);v.set(k,p);return p}};a=f[\"_\"+a];var h=[],g=0;if(d)for(var m=0;m<d.length;m++){var l=e[c[m]];l?(0===g&&(g=Ic()),h[m]=l(d[m])):h[m]=d[m]}c=a.apply(null,h);return c=function(k){0!==g&&Jc(g);return\"string\"===b?k?K(w,k):\"\":\"boolean\"===b?!!k:k}(c)};\nfunction lb(a,b,c,d){a||(a=this);this.parent=a;this.Tb=a.Tb;this.Zb=null;this.id=eb++;this.name=b;this.mode=c;this.Eb={};this.Kb={};this.dc=d}Object.defineProperties(lb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}}});Eb();S=Array(4096);sb(Q,\"/\");W(\"/tmp\");W(\"/home\");W(\"/home/web_user\");\n(function(){W(\"/dev\");Ra(259,{read:()=>0,write:(d,e,h,g)=>g});ub(\"/dev/null\",259);Qa(1280,Ta);Qa(1536,Ua);ub(\"/dev/tty\",1280);ub(\"/dev/tty1\",1536);var a=new Uint8Array(1024),b=0,c=()=>{0===b&&(b=Ma(a).byteLength);return a[--b]};Gb(\"random\",c);Gb(\"urandom\",c);W(\"/dev/shm\");W(\"/dev/shm/tmp\")})();\n(function(){W(\"/proc\");var a=W(\"/proc/self\");W(\"/proc/self/fd\");sb({Tb(){var b=Xa(a,\"fd\",16895,73);b.Eb={bc(c,d){var e=V(+d);c={parent:null,Tb:{wc:\"fake\"},Eb:{ec:()=>e.path}};return c.parent=c}};return b}},\"/proc/self/fd\")})();\n(function(){const a=new Map;f.setAuthorizer=function(b,c,d){c?a.set(b,{f:c,qc:d}):a.delete(b);return Y(\"set_authorizer\",\"number\",[\"number\"],[b])};Ub=function(b,c,d,e,h,g){if(a.has(b)){const {f:m,qc:l}=a.get(b);return m(l,c,d?d?K(w,d):\"\":null,e?e?K(w,e):\"\":null,h?h?K(w,h):\"\":null,g?g?K(w,g):\"\":null)}return 0}})();\n(function(){function a(d,e){const h=[];for(let g=0;0!=d[e+g];++g){if(1E3<g)throw Error(\"C-string never terminated after 1k characters\");h.push(d[e+g])}return String.fromCharCode(...h)}const b=new Map,c=new Map;f.createFunction=function(d,e,h,g,m,l){const k=b.size;b.set(k,{f:l,Vb:m});return Y(\"create_function\",\"number\",\"number string number number number number\".split(\" \"),[d,e,h,g,k,0])};f.createAggregate=function(d,e,h,g,m,l,k){const p=b.size;b.set(p,{step:l,Fc:k,Vb:m});return Y(\"create_function\",\n\"number\",\"number string number number number number\".split(\" \"),[d,e,h,g,p,1])};f.getFunctionUserData=function(d){return c.get(d)};f.updateHook=function(d,e){const h=b.size;b.set(h,e);return Y(\"update_hook\",\"void\",[\"number\",\"number\"],[d,h])};Wb=function(d,e,h,g){d=b.get(d);c.set(e,d.Vb);d.f(e,new Uint32Array(w.buffer,g,h));c.delete(e)};Yb=function(d,e,h,g){d=b.get(d);c.set(e,d.Vb);d.step(e,new Uint32Array(w.buffer,g,h));c.delete(e)};Vb=function(d,e){d=b.get(d);c.set(e,d.Vb);d.Fc(e);c.delete(e)};Zb=\nfunction(d,e,h,g,m,l){d=b.get(d);const k=w;m=BigInt(l)<<32n|BigInt(m)&4294967295n;d(e,a(k,h),a(k,g),m)}})();(function(){const a=new Map;f.progressHandler=function(b,c,d,e){d?a.set(b,{f:d,qc:e}):a.delete(b);return Y(\"progress_handler\",null,[\"number\",\"number\"],[b,c])};Xb=function(b){if(a.has(b)){const {f:c,qc:d}=a.get(b);return c(d)}return 0}})();\n(function(){function a(l,k){const p=`get${l}`,n=`set${l}`;return new Proxy(new DataView(w.buffer,k,\"Int32\"===l?4:8),{get(r,y){if(y===p)return function(A,G){if(!G)throw Error(\"must be little endian\");return r[y](A,G)};if(y===n)return function(A,G,E){if(!E)throw Error(\"must be little endian\");return r[y](A,G,E)};if(\"string\"===typeof y&&y.match(/^(get)|(set)/))throw Error(\"invalid type\");return r[y]}})}const b=\"object\"===typeof Asyncify,c=new Map,d=new Map,e=new Map,h=b?new Set:null,g=b?new Set:null,\nm=new Map;pc=function(l,k,p,n){m.set(l?K(w,l):\"\",{size:k,cc:Array.from(new Uint32Array(w.buffer,n,p))})};f.createModule=function(l,k,p,n){b&&(p.handleAsync=Asyncify.Hc);const r=c.size;c.set(r,{module:p,Vb:n});n=0;p.xCreate&&(n|=1);p.xConnect&&(n|=2);p.xBestIndex&&(n|=4);p.xDisconnect&&(n|=8);p.xDestroy&&(n|=16);p.xOpen&&(n|=32);p.xClose&&(n|=64);p.xFilter&&(n|=128);p.xNext&&(n|=256);p.xEof&&(n|=512);p.xColumn&&(n|=1024);p.xRowid&&(n|=2048);p.xUpdate&&(n|=4096);p.xBegin&&(n|=8192);p.xSync&&(n|=16384);\np.xCommit&&(n|=32768);p.xRollback&&(n|=65536);p.xFindFunction&&(n|=131072);p.xRename&&(n|=262144);return Y(\"create_module\",\"number\",[\"number\",\"string\",\"number\",\"number\"],[l,k,r,n])};fc=function(l,k,p,n,r,y){k=c.get(k);d.set(r,k);if(b){h.delete(r);for(const A of h)d.delete(A)}n=Array.from(new Uint32Array(w.buffer,n,p)).map(A=>A?K(w,A):\"\");return k.module.xCreate(l,k.Vb,n,r,a(\"Int32\",y))};ec=function(l,k,p,n,r,y){k=c.get(k);d.set(r,k);if(b){h.delete(r);for(const A of h)d.delete(A)}n=Array.from(new Uint32Array(w.buffer,\nn,p)).map(A=>A?K(w,A):\"\");return k.module.xConnect(l,k.Vb,n,r,a(\"Int32\",y))};ac=function(l,k){var p=d.get(l),n=m.get(\"sqlite3_index_info\").cc;const r={};r.nConstraint=I(k+n[0],\"i32\");r.aConstraint=[];var y=I(k+n[1],\"*\"),A=m.get(\"sqlite3_index_constraint\").size;for(var G=0;G<r.nConstraint;++G){var E=r.aConstraint,L=E.push,H=y+G*A,da=m.get(\"sqlite3_index_constraint\").cc,U={};U.iColumn=I(H+da[0],\"i32\");U.op=I(H+da[1],\"i8\");U.usable=!!I(H+da[2],\"i8\");L.call(E,U)}r.nOrderBy=I(k+n[2],\"i32\");r.aOrderBy=\n[];y=I(k+n[3],\"*\");A=m.get(\"sqlite3_index_orderby\").size;for(G=0;G<r.nOrderBy;++G)E=r.aOrderBy,L=E.push,H=y+G*A,da=m.get(\"sqlite3_index_orderby\").cc,U={},U.iColumn=I(H+da[0],\"i32\"),U.desc=!!I(H+da[1],\"i8\"),L.call(E,U);r.aConstraintUsage=[];for(y=0;y<r.nConstraint;++y)r.aConstraintUsage.push({argvIndex:0,omit:!1});r.idxNum=I(k+n[5],\"i32\");r.idxStr=null;r.orderByConsumed=!!I(k+n[8],\"i8\");r.estimatedCost=I(k+n[9],\"double\");r.estimatedRows=I(k+n[10],\"i32\");r.idxFlags=I(k+n[11],\"i32\");r.colUsed=I(k+n[12],\n\"i32\");l=p.module.xBestIndex(l,r);p=m.get(\"sqlite3_index_info\").cc;n=I(k+p[4],\"*\");y=m.get(\"sqlite3_index_constraint_usage\").size;for(L=0;L<r.nConstraint;++L)A=n+L*y,E=r.aConstraintUsage[L],H=m.get(\"sqlite3_index_constraint_usage\").cc,J(A+H[0],E.argvIndex,\"i32\"),J(A+H[1],E.omit?1:0,\"i8\");J(k+p[5],r.idxNum,\"i32\");\"string\"===typeof r.idxStr&&(n=N(r.idxStr),y=Y(\"sqlite3_malloc\",\"number\",[\"number\"],[n+1]),O(r.idxStr,w,y,n+1),J(k+p[6],y,\"*\"),J(k+p[7],1,\"i32\"));J(k+p[8],r.orderByConsumed,\"i32\");J(k+p[9],\nr.estimatedCost,\"double\");J(k+p[10],r.estimatedRows,\"i32\");J(k+p[11],r.idxFlags,\"i32\");return l};hc=function(l){const k=d.get(l);b?h.add(l):d.delete(l);return k.module.xDisconnect(l)};gc=function(l){const k=d.get(l);b?h.add(l):d.delete(l);return k.module.xDestroy(l)};lc=function(l,k){const p=d.get(l);e.set(k,p);if(b){g.delete(k);for(const n of g)e.delete(n)}return p.module.xOpen(l,k)};bc=function(l){const k=e.get(l);b?g.add(l):e.delete(l);return k.module.xClose(l)};ic=function(l){return e.get(l).module.xEof(l)?\n1:0};jc=function(l,k,p,n,r){const y=e.get(l);p=p?p?K(w,p):\"\":null;r=new Uint32Array(w.buffer,r,n);return y.module.xFilter(l,k,p,r)};kc=function(l){return e.get(l).module.xNext(l)};cc=function(l,k,p){return e.get(l).module.xColumn(l,k,p)};oc=function(l,k){return e.get(l).module.xRowid(l,a(\"BigInt64\",k))};rc=function(l,k,p,n){const r=d.get(l);p=new Uint32Array(w.buffer,p,k);return r.module.xUpdate(l,p,a(\"BigInt64\",n))};$b=function(l){return d.get(l).module.xBegin(l)};qc=function(l){return d.get(l).module.xSync(l)};\ndc=function(l){return d.get(l).module.xCommit(l)};nc=function(l){return d.get(l).module.xRollback(l)};mc=function(l,k){const p=d.get(l);k=k?K(w,k):\"\";return p.module.xRename(l,k)}})();\n(function(){function a(g,m){const l=`get${g}`,k=`set${g}`;return new Proxy(new DataView(w.buffer,m,\"Int32\"===g?4:8),{get(p,n){if(n===l)return function(r,y){if(!y)throw Error(\"must be little endian\");return p[n](r,y)};if(n===k)return function(r,y,A){if(!A)throw Error(\"must be little endian\");return p[n](r,y,A)};if(\"string\"===typeof n&&n.match(/^(get)|(set)/))throw Error(\"invalid type\");return p[n]}})}function b(g){g>>=2;return z[g]+z[g+1]*2**32}const c=\"object\"===typeof Asyncify,d=new Map,e=new Map;\nf.registerVFS=function(g,m){if(Y(\"sqlite3_vfs_find\",\"number\",[\"string\"],[g.name]))throw Error(`VFS '${g.name}' already registered`);c&&(g.handleAsync=Asyncify.Hc);var l=g.Xc??64;const k=f._malloc(4);m=Y(\"register_vfs\",\"number\",[\"string\",\"number\",\"number\",\"number\"],[g.name,l,m?1:0,k]);m||(l=I(k,\"*\"),d.set(l,g));f._free(k);return m};const h=c?new Set:null;uc=function(g){const m=e.get(g);c?h.add(g):e.delete(g);return m.xClose(g)};Bc=function(g,m,l,k){return e.get(g).xRead(g,w.subarray(m,m+l),b(k))};\nGc=function(g,m,l,k){return e.get(g).xWrite(g,w.subarray(m,m+l),b(k))};Ec=function(g,m){return e.get(g).xTruncate(g,b(m))};Dc=function(g,m){return e.get(g).xSync(g,m)};yc=function(g,m){const l=e.get(g);m=a(\"BigInt64\",m);return l.xFileSize(g,m)};zc=function(g,m){return e.get(g).xLock(g,m)};Fc=function(g,m){return e.get(g).xUnlock(g,m)};tc=function(g,m){const l=e.get(g);m=a(\"Int32\",m);return l.xCheckReservedLock(g,m)};xc=function(g,m,l){const k=e.get(g);l=new DataView(w.buffer,l);return k.xFileControl(g,\nm,l)};Cc=function(g){return e.get(g).xSectorSize(g)};wc=function(g){return e.get(g).xDeviceCharacteristics(g)};Ac=function(g,m,l,k,p){g=d.get(g);e.set(l,g);if(c){h.delete(l);for(var n of h)e.delete(n)}n=null;if(k&64){n=1;const r=[];for(;n;){const y=w[m++];if(y)r.push(y);else switch(w[m]||(n=null),n){case 1:r.push(63);n=2;break;case 2:r.push(61);n=3;break;case 3:r.push(38),n=2}}n=(new TextDecoder).decode(new Uint8Array(r))}else m&&(n=m?K(w,m):\"\");p=a(\"Int32\",p);return g.xOpen(n,l,k,p)};vc=function(g,\nm,l){return d.get(g).xDelete(m?K(w,m):\"\",l)};sc=function(g,m,l,k){g=d.get(g);k=a(\"Int32\",k);return g.xAccess(m?K(w,m):\"\",l,k)}})();\nvar Lc={a:(a,b,c,d)=>{u(`Assertion failed: ${a?K(w,a):\"\"}, at: `+[b?b?K(w,b):\"\":\"unknown filename\",c,d?d?K(w,d):\"\":\"unknown function\"])},K:function(a,b){try{return a=a?K(w,a):\"\",zb(a,b),0}catch(c){if(\"undefined\"==typeof X||\"ErrnoError\"!==c.name)throw c;return-c.Mb}},M:function(a,b,c){try{b=b?K(w,b):\"\";b=Ib(a,b);if(c&-8)return-28;var d=T(b,{Wb:!0}).node;if(!d)return-44;a=\"\";c&4&&(a+=\"r\");c&2&&(a+=\"w\");c&1&&(a+=\"x\");return a&&kb(d,a)?-2:0}catch(e){if(\"undefined\"==typeof X||\"ErrnoError\"!==e.name)throw e;\nreturn-e.Mb}},L:function(a,b){try{var c=V(a);zb(c.node,b);return 0}catch(d){if(\"undefined\"==typeof X||\"ErrnoError\"!==d.name)throw d;return-d.Mb}},J:function(a){try{var b=V(a).node;var c=\"string\"==typeof b?T(b,{Wb:!0}).node:b;if(!c.Eb.Ob)throw new P(63);c.Eb.Ob(c,{timestamp:Date.now()});return 0}catch(d){if(\"undefined\"==typeof X||\"ErrnoError\"!==d.name)throw d;return-d.Mb}},b:function(a,b,c){Kb=c;try{var d=V(a);switch(b){case 0:var e=Lb();if(0>e)return-28;for(;db[e];)e++;return qb(d,e).Ub;case 1:case 2:return 0;\ncase 3:return d.flags;case 4:return e=Lb(),d.flags|=e,0;case 5:return e=Lb(),oa[e+0>>1]=2,0;case 6:case 7:return 0;case 16:case 8:return-28;case 9:return x[Kc()>>2]=28,-1;default:return-28}}catch(h){if(\"undefined\"==typeof X||\"ErrnoError\"!==h.name)throw h;return-h.Mb}},I:function(a,b){try{var c=V(a);return Jb(xb,c.path,b)}catch(d){if(\"undefined\"==typeof X||\"ErrnoError\"!==d.name)throw d;return-d.Mb}},n:function(a,b,c){b=Mb(b,c);try{if(isNaN(b))return 61;var d=V(a);if(0===(d.flags&2097155))throw new P(28);\nAb(d.node,b);return 0}catch(e){if(\"undefined\"==typeof X||\"ErrnoError\"!==e.name)throw e;return-e.Mb}},C:function(a,b){try{if(0===b)return-28;var c=N(\"/\")+1;if(b<c)return-68;O(\"/\",w,a,b);return c}catch(d){if(\"undefined\"==typeof X||\"ErrnoError\"!==d.name)throw d;return-d.Mb}},F:function(a,b){try{return a=a?K(w,a):\"\",Jb(yb,a,b)}catch(c){if(\"undefined\"==typeof X||\"ErrnoError\"!==c.name)throw c;return-c.Mb}},z:function(a,b,c){try{return b=b?K(w,b):\"\",b=Ib(a,b),b=M(b),\"/\"===b[b.length-1]&&(b=b.substr(0,b.length-\n1)),W(b,c),0}catch(d){if(\"undefined\"==typeof X||\"ErrnoError\"!==d.name)throw d;return-d.Mb}},E:function(a,b,c,d){try{b=b?K(w,b):\"\";var e=d&256;b=Ib(a,b,d&4096);return Jb(e?yb:xb,b,c)}catch(h){if(\"undefined\"==typeof X||\"ErrnoError\"!==h.name)throw h;return-h.Mb}},y:function(a,b,c,d){Kb=d;try{b=b?K(w,b):\"\";b=Ib(a,b);var e=d?Lb():0;return Bb(b,c,e).Ub}catch(h){if(\"undefined\"==typeof X||\"ErrnoError\"!==h.name)throw h;return-h.Mb}},v:function(a,b,c,d){try{b=b?K(w,b):\"\";b=Ib(a,b);if(0>=d)return-28;var e=gb(b),\nh=Math.min(d,N(e)),g=v[c+h];O(e,w,c,d+1);v[c+h]=g;return h}catch(m){if(\"undefined\"==typeof X||\"ErrnoError\"!==m.name)throw m;return-m.Mb}},u:function(a){try{return a=a?K(w,a):\"\",wb(a),0}catch(b){if(\"undefined\"==typeof X||\"ErrnoError\"!==b.name)throw b;return-b.Mb}},G:function(a,b){try{return a=a?K(w,a):\"\",Jb(xb,a,b)}catch(c){if(\"undefined\"==typeof X||\"ErrnoError\"!==c.name)throw c;return-c.Mb}},r:function(a,b,c){try{b=b?K(w,b):\"\";b=Ib(a,b);if(0===c){a=b;var d=T(a,{parent:!0}).node;if(!d)throw new P(44);\nvar e=Ka(a),h=Za(d,e),g=ob(d,e,!1);if(g)throw new P(g);if(!d.Eb.mc)throw new P(63);if(h.Zb)throw new P(10);d.Eb.mc(d,e);jb(h)}else 512===c?wb(b):u(\"Invalid flags passed to unlinkat\");return 0}catch(m){if(\"undefined\"==typeof X||\"ErrnoError\"!==m.name)throw m;return-m.Mb}},q:function(a,b,c){try{b=b?K(w,b):\"\";b=Ib(a,b,!0);if(c){var d=z[c>>2]+4294967296*x[c+4>>2],e=x[c+8>>2];h=1E3*d+e/1E6;c+=16;d=z[c>>2]+4294967296*x[c+4>>2];e=x[c+8>>2];g=1E3*d+e/1E6}else var h=Date.now(),g=h;a=h;var m=T(b,{Wb:!0}).node;\nm.Eb.Ob(m,{timestamp:Math.max(a,g)});return 0}catch(l){if(\"undefined\"==typeof X||\"ErrnoError\"!==l.name)throw l;return-l.Mb}},k:function(a,b,c){a=new Date(1E3*Mb(a,b));x[c>>2]=a.getSeconds();x[c+4>>2]=a.getMinutes();x[c+8>>2]=a.getHours();x[c+12>>2]=a.getDate();x[c+16>>2]=a.getMonth();x[c+20>>2]=a.getFullYear()-1900;x[c+24>>2]=a.getDay();b=a.getFullYear();x[c+28>>2]=(0!==b%4||0===b%100&&0!==b%400?Ob:Nb)[a.getMonth()]+a.getDate()-1|0;x[c+36>>2]=-(60*a.getTimezoneOffset());b=(new Date(a.getFullYear(),\n6,1)).getTimezoneOffset();var d=(new Date(a.getFullYear(),0,1)).getTimezoneOffset();x[c+32>>2]=(b!=d&&a.getTimezoneOffset()==Math.min(d,b))|0},i:function(a,b,c,d,e,h,g,m){e=Mb(e,h);try{if(isNaN(e))return 61;var l=V(d);if(0!==(b&2)&&0===(c&2)&&2!==(l.flags&2097155))throw new P(2);if(1===(l.flags&2097155))throw new P(2);if(!l.Kb.ic)throw new P(43);var k=l.Kb.ic(l,a,e,b,c);var p=k.Lc;x[g>>2]=k.zc;z[m>>2]=p;return 0}catch(n){if(\"undefined\"==typeof X||\"ErrnoError\"!==n.name)throw n;return-n.Mb}},j:function(a,\nb,c,d,e,h,g){h=Mb(h,g);try{if(isNaN(h))return 61;var m=V(e);if(c&2){if(32768!==(m.node.mode&61440))throw new P(43);d&2||m.Kb.jc&&m.Kb.jc(m,w.slice(a,a+b),h,b,d)}}catch(l){if(\"undefined\"==typeof X||\"ErrnoError\"!==l.name)throw l;return-l.Mb}},s:(a,b,c)=>{function d(l){return(l=l.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?l[1]:\"GMT\"}var e=(new Date).getFullYear(),h=new Date(e,0,1),g=new Date(e,6,1);e=h.getTimezoneOffset();var m=g.getTimezoneOffset();z[a>>2]=60*Math.max(e,m);x[b>>2]=Number(e!=m);a=d(h);\nb=d(g);a=Qb(a);b=Qb(b);m<e?(z[c>>2]=a,z[c+4>>2]=b):(z[c>>2]=b,z[c+4>>2]=a)},e:()=>Date.now(),d:()=>performance.now(),o:a=>{var b=w.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);var e=Math;d=Math.max(a,d);a:{e=(e.min.call(e,2147483648,d+(65536-d%65536)%65536)-ma.buffer.byteLength+65535)/65536;try{ma.grow(e);ra();var h=1;break a}catch(g){}h=void 0}if(h)return!0}return!1},A:(a,b)=>{var c=0;Tb().forEach((d,e)=>{var h=b+c;e=z[a+4*e>>2]=h;for(h=\n0;h<d.length;++h)v[e++>>0]=d.charCodeAt(h);v[e>>0]=0;c+=d.length+1});return 0},B:(a,b)=>{var c=Tb();z[a>>2]=c.length;var d=0;c.forEach(e=>d+=e.length+1);z[b>>2]=d;return 0},f:function(a){try{var b=V(a);if(null===b.Ub)throw new P(8);b.nc&&(b.nc=null);try{b.Kb.close&&b.Kb.close(b)}catch(c){throw c;}finally{db[b.Ub]=null}b.Ub=null;return 0}catch(c){if(\"undefined\"==typeof X||\"ErrnoError\"!==c.name)throw c;return c.Mb}},p:function(a,b){try{var c=V(a);v[b>>0]=c.Qb?2:R(c.mode)?3:40960===(c.mode&61440)?7:\n4;oa[b+2>>1]=0;F=[0,(D=0,1<=+Math.abs(D)?0<D?+Math.floor(D/4294967296)>>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)];x[b+8>>2]=F[0];x[b+12>>2]=F[1];F=[0,(D=0,1<=+Math.abs(D)?0<D?+Math.floor(D/4294967296)>>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)];x[b+16>>2]=F[0];x[b+20>>2]=F[1];return 0}catch(d){if(\"undefined\"==typeof X||\"ErrnoError\"!==d.name)throw d;return d.Mb}},x:function(a,b,c,d){try{a:{var e=V(a);a=b;for(var h,g=b=0;g<c;g++){var m=z[a>>2],l=z[a+4>>2];a+=8;var k=e,p=m,n=l,r=h,y=\nv;if(0>n||0>r)throw new P(28);if(null===k.Ub)throw new P(8);if(1===(k.flags&2097155))throw new P(8);if(R(k.node.mode))throw new P(31);if(!k.Kb.read)throw new P(28);var A=\"undefined\"!=typeof r;if(!A)r=k.position;else if(!k.seekable)throw new P(70);var G=k.Kb.read(k,y,p,n,r);A||(k.position+=G);var E=G;if(0>E){var L=-1;break a}b+=E;if(E<l)break;\"undefined\"!==typeof h&&(h+=E)}L=b}z[d>>2]=L;return 0}catch(H){if(\"undefined\"==typeof X||\"ErrnoError\"!==H.name)throw H;return H.Mb}},m:function(a,b,c,d,e){b=\nMb(b,c);try{if(isNaN(b))return 61;var h=V(a);Db(h,b,d);F=[h.position>>>0,(D=h.position,1<=+Math.abs(D)?0<D?+Math.floor(D/4294967296)>>>0:~~+Math.ceil((D-+(~~D>>>0))/4294967296)>>>0:0)];x[e>>2]=F[0];x[e+4>>2]=F[1];h.nc&&0===b&&0===d&&(h.nc=null);return 0}catch(g){if(\"undefined\"==typeof X||\"ErrnoError\"!==g.name)throw g;return g.Mb}},D:function(a){try{var b=V(a);return b.Kb&&b.Kb.Yb?b.Kb.Yb(b):0}catch(c){if(\"undefined\"==typeof X||\"ErrnoError\"!==c.name)throw c;return c.Mb}},t:function(a,b,c,d){try{a:{var e=\nV(a);a=b;for(var h,g=b=0;g<c;g++){var m=z[a>>2],l=z[a+4>>2];a+=8;var k=e,p=m,n=l,r=h,y=v;if(0>n||0>r)throw new P(28);if(null===k.Ub)throw new P(8);if(0===(k.flags&2097155))throw new P(8);if(R(k.node.mode))throw new P(31);if(!k.Kb.write)throw new P(28);k.seekable&&k.flags&1024&&Db(k,0,2);var A=\"undefined\"!=typeof r;if(!A)r=k.position;else if(!k.seekable)throw new P(70);var G=k.Kb.write(k,y,p,n,r,void 0);A||(k.position+=G);var E=G;if(0>E){var L=-1;break a}b+=E;\"undefined\"!==typeof h&&(h+=E)}L=b}z[d>>\n2]=L;return 0}catch(H){if(\"undefined\"==typeof X||\"ErrnoError\"!==H.name)throw H;return H.Mb}},sa:Ub,O:Vb,ha:Wb,ca:Xb,Z:Yb,H:Zb,la:$b,w:ac,g:bc,oa:cc,ja:dc,ea:ec,fa:fc,h:gc,l:hc,pa:ic,ra:jc,qa:kc,da:lc,ga:mc,ia:nc,na:oc,c:pc,ka:qc,ma:rc,aa:sc,V:tc,$:uc,ba:vc,S:wc,U:xc,Y:yc,X:zc,R:Ac,Q:Bc,T:Cc,_:Dc,N:Ec,W:Fc,P:Gc},Z=function(){function a(c){Z=c=c.exports;ma=Z.ta;ra();ta.unshift(Z.ua);B--;f.monitorRunDependencies&&f.monitorRunDependencies(B);if(0==B&&(null!==xa&&(clearInterval(xa),xa=null),ya)){var d=\nya;ya=null;d()}return c}var b={a:Lc};B++;f.monitorRunDependencies&&f.monitorRunDependencies(B);if(f.instantiateWasm)try{return f.instantiateWasm(b,a)}catch(c){t(`Module.instantiateWasm callback failed with error: ${c}`),ba(c)}Ea(b,function(c){a(c.instance)}).catch(ba);return{}}();f._sqlite3_vfs_find=a=>(f._sqlite3_vfs_find=Z.va)(a);f._sqlite3_malloc=a=>(f._sqlite3_malloc=Z.wa)(a);f._sqlite3_free=a=>(f._sqlite3_free=Z.xa)(a);f._sqlite3_prepare_v2=(a,b,c,d,e)=>(f._sqlite3_prepare_v2=Z.ya)(a,b,c,d,e);\nf._sqlite3_step=a=>(f._sqlite3_step=Z.za)(a);f._sqlite3_column_int64=(a,b)=>(f._sqlite3_column_int64=Z.Aa)(a,b);f._sqlite3_column_int=(a,b)=>(f._sqlite3_column_int=Z.Ba)(a,b);f._sqlite3_finalize=a=>(f._sqlite3_finalize=Z.Ca)(a);f._sqlite3_reset=a=>(f._sqlite3_reset=Z.Da)(a);f._sqlite3_clear_bindings=a=>(f._sqlite3_clear_bindings=Z.Ea)(a);f._sqlite3_value_blob=a=>(f._sqlite3_value_blob=Z.Fa)(a);f._sqlite3_value_text=a=>(f._sqlite3_value_text=Z.Ga)(a);\nf._sqlite3_value_bytes=a=>(f._sqlite3_value_bytes=Z.Ha)(a);f._sqlite3_value_double=a=>(f._sqlite3_value_double=Z.Ia)(a);f._sqlite3_value_int=a=>(f._sqlite3_value_int=Z.Ja)(a);f._sqlite3_value_int64=a=>(f._sqlite3_value_int64=Z.Ka)(a);f._sqlite3_value_type=a=>(f._sqlite3_value_type=Z.La)(a);f._sqlite3_result_blob=(a,b,c,d)=>(f._sqlite3_result_blob=Z.Ma)(a,b,c,d);f._sqlite3_result_double=(a,b)=>(f._sqlite3_result_double=Z.Na)(a,b);\nf._sqlite3_result_error=(a,b,c)=>(f._sqlite3_result_error=Z.Oa)(a,b,c);f._sqlite3_result_int=(a,b)=>(f._sqlite3_result_int=Z.Pa)(a,b);f._sqlite3_result_int64=(a,b,c)=>(f._sqlite3_result_int64=Z.Qa)(a,b,c);f._sqlite3_result_null=a=>(f._sqlite3_result_null=Z.Ra)(a);f._sqlite3_result_text=(a,b,c,d)=>(f._sqlite3_result_text=Z.Sa)(a,b,c,d);f._sqlite3_column_count=a=>(f._sqlite3_column_count=Z.Ta)(a);f._sqlite3_data_count=a=>(f._sqlite3_data_count=Z.Ua)(a);\nf._sqlite3_column_blob=(a,b)=>(f._sqlite3_column_blob=Z.Va)(a,b);f._sqlite3_column_bytes=(a,b)=>(f._sqlite3_column_bytes=Z.Wa)(a,b);f._sqlite3_column_double=(a,b)=>(f._sqlite3_column_double=Z.Xa)(a,b);f._sqlite3_column_text=(a,b)=>(f._sqlite3_column_text=Z.Ya)(a,b);f._sqlite3_column_type=(a,b)=>(f._sqlite3_column_type=Z.Za)(a,b);f._sqlite3_column_name=(a,b)=>(f._sqlite3_column_name=Z._a)(a,b);f._sqlite3_bind_blob=(a,b,c,d,e)=>(f._sqlite3_bind_blob=Z.$a)(a,b,c,d,e);\nf._sqlite3_bind_double=(a,b,c)=>(f._sqlite3_bind_double=Z.ab)(a,b,c);f._sqlite3_bind_int=(a,b,c)=>(f._sqlite3_bind_int=Z.bb)(a,b,c);f._sqlite3_bind_int64=(a,b,c,d)=>(f._sqlite3_bind_int64=Z.cb)(a,b,c,d);f._sqlite3_bind_null=(a,b)=>(f._sqlite3_bind_null=Z.db)(a,b);f._sqlite3_bind_text=(a,b,c,d,e)=>(f._sqlite3_bind_text=Z.eb)(a,b,c,d,e);f._sqlite3_bind_parameter_count=a=>(f._sqlite3_bind_parameter_count=Z.fb)(a);f._sqlite3_bind_parameter_name=(a,b)=>(f._sqlite3_bind_parameter_name=Z.gb)(a,b);\nf._sqlite3_sql=a=>(f._sqlite3_sql=Z.hb)(a);f._sqlite3_exec=(a,b,c,d,e)=>(f._sqlite3_exec=Z.ib)(a,b,c,d,e);f._sqlite3_errmsg=a=>(f._sqlite3_errmsg=Z.jb)(a);f._sqlite3_declare_vtab=(a,b)=>(f._sqlite3_declare_vtab=Z.kb)(a,b);f._sqlite3_libversion=()=>(f._sqlite3_libversion=Z.lb)();f._sqlite3_libversion_number=()=>(f._sqlite3_libversion_number=Z.mb)();f._sqlite3_changes=a=>(f._sqlite3_changes=Z.nb)(a);f._sqlite3_close=a=>(f._sqlite3_close=Z.ob)(a);\nf._sqlite3_limit=(a,b,c)=>(f._sqlite3_limit=Z.pb)(a,b,c);f._sqlite3_open_v2=(a,b,c,d)=>(f._sqlite3_open_v2=Z.qb)(a,b,c,d);f._sqlite3_get_autocommit=a=>(f._sqlite3_get_autocommit=Z.rb)(a);var Kc=()=>(Kc=Z.sb)(),Pb=f._malloc=a=>(Pb=f._malloc=Z.tb)(a);f._free=a=>(f._free=Z.ub)(a);f._RegisterExtensionFunctions=a=>(f._RegisterExtensionFunctions=Z.vb)(a);f._set_authorizer=a=>(f._set_authorizer=Z.wb)(a);f._create_function=(a,b,c,d,e,h)=>(f._create_function=Z.xb)(a,b,c,d,e,h);\nf._update_hook=(a,b)=>(f._update_hook=Z.yb)(a,b);f._create_module=(a,b,c,d)=>(f._create_module=Z.zb)(a,b,c,d);f._progress_handler=(a,b)=>(f._progress_handler=Z.Ab)(a,b);f._register_vfs=(a,b,c,d)=>(f._register_vfs=Z.Bb)(a,b,c,d);f._getSqliteFree=()=>(f._getSqliteFree=Z.Cb)();var Mc=f._main=(a,b)=>(Mc=f._main=Z.Db)(a,b),$a=(a,b)=>($a=Z.Fb)(a,b),Nc=()=>(Nc=Z.Gb)(),Ic=()=>(Ic=Z.Hb)(),Jc=a=>(Jc=Z.Ib)(a),Hc=a=>(Hc=Z.Jb)(a);f.getTempRet0=Nc;f.ccall=Y;\nf.cwrap=(a,b,c,d)=>{var e=!c||c.every(h=>\"number\"===h||\"boolean\"===h);return\"string\"!==b&&e&&!d?f[\"_\"+a]:function(){return Y(a,b,c,arguments,d)}};f.setValue=J;f.getValue=I;f.UTF8ToString=(a,b)=>a?K(w,a,b):\"\";f.stringToUTF8=(a,b,c)=>O(a,w,b,c);f.lengthBytesUTF8=N;var Oc;ya=function Pc(){Oc||Qc();Oc||(ya=Pc)};\nfunction Qc(){function a(){if(!Oc&&(Oc=!0,f.calledRun=!0,!na)){f.noFSInit||Fb||(Fb=!0,Eb(),f.stdin=f.stdin,f.stdout=f.stdout,f.stderr=f.stderr,f.stdin?Gb(\"stdin\",f.stdin):vb(\"/dev/tty\",\"/dev/stdin\"),f.stdout?Gb(\"stdout\",null,f.stdout):vb(\"/dev/tty\",\"/dev/stdout\"),f.stderr?Gb(\"stderr\",null,f.stderr):vb(\"/dev/tty1\",\"/dev/stderr\"),Bb(\"/dev/stdin\",0),Bb(\"/dev/stdout\",1),Bb(\"/dev/stderr\",1));fb=!1;Ga(ta);Ga(ua);aa(f);if(f.onRuntimeInitialized)f.onRuntimeInitialized();if(Rc){var b=Mc;try{var c=b(0,0);if(!noExitRuntime){if(f.onExit)f.onExit(c);\nna=!0}fa(c,new Fa(c))}catch(d){d instanceof Fa||\"unwind\"==d||fa(1,d)}}if(f.postRun)for(\"function\"==typeof f.postRun&&(f.postRun=[f.postRun]);f.postRun.length;)b=f.postRun.shift(),va.unshift(b);Ga(va)}}if(!(0<B)){if(f.preRun)for(\"function\"==typeof f.preRun&&(f.preRun=[f.preRun]);f.preRun.length;)wa();Ga(sa);0<B||(f.setStatus?(f.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){f.setStatus(\"\")},1);a()},1)):a())}}\nif(f.preInit)for(\"function\"==typeof f.preInit&&(f.preInit=[f.preInit]);0<f.preInit.length;)f.preInit.pop()();var Rc=!0;f.noInitialRun&&(Rc=!1);Qc();\n\n\n  return moduleArg.ready\n}\n\n);\n})();\nexport default Module;","// SQLite polyfill using wa-sqlite for DatabaseSync and StatementSync\r\n\r\nimport type { MemoryVolume } from \"../memory-volume\";\r\nimport {\r\n  CDN_WA_SQLITE,\r\n  CDN_WA_SQLITE_WASM,\r\n  cdnImport,\r\n} from \"../constants/cdn-urls\";\r\nimport { getRegistry } from \"../helpers/event-loop\";\r\nimport { getCachedModule, precompileWasm } from \"../helpers/wasm-cache\";\r\nimport { Buffer } from \"./buffer\";\r\nimport { setSharedVolume, getSharedVolume } from \"./volume-registry\";\r\nimport { Factory, SQLiteError } from \"wa-sqlite/src/sqlite-api.js\";\r\nimport * as SQLite from \"wa-sqlite/src/sqlite-constants.js\";\r\nimport waSqliteFactory from \"wa-sqlite/dist/wa-sqlite.mjs\";\r\n\r\nexport const constants = {\r\n  SQLITE_CHANGESET_DATA: 1,\r\n  SQLITE_CHANGESET_NOTFOUND: 2,\r\n  SQLITE_CHANGESET_CONFLICT: 3,\r\n  SQLITE_CHANGESET_CONSTRAINT: 4,\r\n  SQLITE_CHANGESET_FOREIGN_KEY: 5,\r\n  SQLITE_CHANGESET_OMIT: 0,\r\n  SQLITE_CHANGESET_REPLACE: 1,\r\n  SQLITE_CHANGESET_ABORT: 2,\r\n  SQLITE_OK: 0,\r\n  SQLITE_DENY: 1,\r\n  SQLITE_IGNORE: 2,\r\n  SQLITE_CREATE_INDEX: 1,\r\n  SQLITE_CREATE_TABLE: 2,\r\n  SQLITE_CREATE_TEMP_INDEX: 3,\r\n  SQLITE_CREATE_TEMP_TABLE: 4,\r\n  SQLITE_CREATE_TEMP_TRIGGER: 5,\r\n  SQLITE_CREATE_TEMP_VIEW: 6,\r\n  SQLITE_CREATE_TRIGGER: 7,\r\n  SQLITE_CREATE_VIEW: 8,\r\n  SQLITE_CREATE_VTABLE: 9,\r\n  SQLITE_DELETE: 10,\r\n  SQLITE_DROP_INDEX: 11,\r\n  SQLITE_DROP_TABLE: 12,\r\n  SQLITE_DROP_TEMP_INDEX: 13,\r\n  SQLITE_DROP_TEMP_TABLE: 14,\r\n  SQLITE_DROP_TEMP_TRIGGER: 15,\r\n  SQLITE_DROP_TEMP_VIEW: 16,\r\n  SQLITE_DROP_TRIGGER: 17,\r\n  SQLITE_DROP_VIEW: 18,\r\n  SQLITE_DROP_VTABLE: 19,\r\n  SQLITE_INSERT: 20,\r\n  SQLITE_PRAGMA: 21,\r\n  SQLITE_READ: 22,\r\n  SQLITE_SELECT: 23,\r\n  SQLITE_TRANSACTION: 24,\r\n  SQLITE_UPDATE: 25,\r\n  SQLITE_ATTACH: 26,\r\n  SQLITE_DETACH: 27,\r\n  SQLITE_ALTER_TABLE: 28,\r\n  SQLITE_REINDEX: 29,\r\n  SQLITE_ANALYZE: 30,\r\n} as const;\r\n\r\nconst NODEPOD_VFS_NAME = \"nodepod\";\r\nconst OPEN_READWRITE = SQLite.SQLITE_OPEN_READWRITE;\r\nconst OPEN_CREATE = SQLite.SQLITE_OPEN_CREATE;\r\nconst MAX_SAFE = Number.MAX_SAFE_INTEGER;\r\nconst MIN_SAFE = Number.MIN_SAFE_INTEGER;\r\n\r\nconst SESSION_ERR =\r\n  \"SQLite session extension is not available in the browser WASM build\";\r\n\r\nlet sharedCwd = \"/\";\r\n\r\nexport function setVolume(vol: MemoryVolume): void {\r\n  setSharedVolume(vol);\r\n}\r\n\r\nexport function setSqliteCwd(cwd: string): void {\r\n  sharedCwd = cwd || \"/\";\r\n}\r\n\r\nfunction vol(): MemoryVolume {\r\n  const v = getSharedVolume();\r\n  if (!v) throw new Error(\"[node:sqlite] MemoryVolume not initialized\");\r\n  return v;\r\n}\r\n\r\nfunction resolveDbPath(location: string): string {\r\n  if (location === \":memory:\" || location === \"\") return location;\r\n  if (location.startsWith(\"file:\")) {\r\n    try {\r\n      const u = new URL(location);\r\n      return decodeURIComponent(u.pathname.replace(/^\\/([A-Za-z]:)/, \"$1\"));\r\n    } catch {\r\n      return location;\r\n    }\r\n  }\r\n  if (location.startsWith(\"/\")) return location;\r\n  const base = sharedCwd.endsWith(\"/\") ? sharedCwd.slice(0, -1) : sharedCwd;\r\n  return base === \"/\"\r\n    ? `/${location}`\r\n    : `${base}/${location}`.replace(/\\/+/g, \"/\");\r\n}\r\n\r\nfunction readDbBytes(path: string): Uint8Array | null {\r\n  const v = vol();\r\n  try {\r\n    if (!v.existsSync(path) || v.statSync(path).isDirectory()) return null;\r\n    return v.readFileSync(path);\r\n  } catch {\r\n    return null;\r\n  }\r\n}\r\n\r\nfunction writeDbBytes(path: string, data: Uint8Array): void {\r\n  const v = vol();\r\n  const parent = path.substring(0, path.lastIndexOf(\"/\")) || \"/\";\r\n  if (parent !== \"/\" && !v.existsSync(parent)) v.mkdirSync(parent, { recursive: true });\r\n  v.writeFileSync(path, data);\r\n}\r\n\r\nfunction removeDbFile(path: string): void {\r\n  try {\r\n    if (vol().existsSync(path)) vol().unlinkSync(path);\r\n  } catch {\r\n    /* ignore */\r\n  }\r\n}\r\n\r\nfunction tempDbPath(prefix: string): string {\r\n  return `/.__nodepod_${prefix}_${Date.now()}_${Math.random().toString(36).slice(2)}.db`;\r\n}\r\n\r\nfunction sqlQuotePath(path: string): string {\r\n  return `'${path.replace(/'/g, \"''\")}'`;\r\n}\r\n\r\nfunction bindValue(value: unknown): unknown {\r\n  if (value === undefined) return undefined;\r\n  if (value === null) return null;\r\n  if (typeof value === \"bigint\" || typeof value === \"number\" || typeof value === \"string\") {\r\n    return value;\r\n  }\r\n  if (Buffer.isBuffer(value)) return new Uint8Array(value);\r\n  if (value instanceof Uint8Array) return value;\r\n  if (value instanceof ArrayBuffer) return new Uint8Array(value);\r\n  if (Array.isArray(value)) return value;\r\n  if (ArrayBuffer.isView(value)) {\r\n    return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\r\n  }\r\n  throw new TypeError(`Cannot bind value of type ${typeof value} to SQLite parameter`);\r\n}\r\n\r\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\r\n  return typeof value === \"object\" && value !== null && !Array.isArray(value);\r\n}\r\n\r\nfunction normalizeParams(\r\n  namedParameters?: Record<string, unknown> | unknown[],\r\n  ...anonymousParameters: unknown[]\r\n): Record<string, unknown> | unknown[] {\r\n  if (namedParameters !== undefined && isPlainObject(namedParameters)) {\r\n    const merged = { ...namedParameters } as Record<string, unknown>;\r\n    anonymousParameters.forEach((v, i) => {\r\n      merged[String(i + 1)] = v;\r\n    });\r\n    return merged;\r\n  }\r\n  const positional = [\r\n    ...(Array.isArray(namedParameters)\r\n      ? namedParameters\r\n      : namedParameters !== undefined\r\n        ? [namedParameters]\r\n        : []),\r\n    ...anonymousParameters,\r\n  ];\r\n  return positional;\r\n}\r\n\r\nfunction readColumnValueRaw(\r\n  module: WaModule,\r\n  stmt: number,\r\n  col: number,\r\n  readBigInts: boolean,\r\n): unknown {\r\n  const type = module._sqlite3_column_type(stmt, col);\r\n  switch (type) {\r\n    case SQLite.SQLITE_NULL:\r\n      return null;\r\n    case SQLite.SQLITE_INTEGER: {\r\n      const lo32 = module._sqlite3_column_int64(stmt, col);\r\n      const hi32 = module.getTempRet0?.() ?? 0;\r\n      const value = (BigInt(hi32) << 32n) | (BigInt(lo32) & 0xffffffffn);\r\n      if (typeof value === \"bigint\") {\r\n        if (!readBigInts && (value > BigInt(MAX_SAFE) || value < BigInt(MIN_SAFE))) {\r\n          const err = new RangeError(\r\n            \"SQLite INTEGER value is outside JavaScript safe integer range. Enable readBigInts.\",\r\n          ) as RangeError & { code?: string };\r\n          err.code = \"ERR_OUT_OF_RANGE\";\r\n          throw err;\r\n        }\r\n        return readBigInts ? value : Number(value);\r\n      }\r\n      return value;\r\n    }\r\n    case SQLite.SQLITE_FLOAT:\r\n      return module._sqlite3_column_double(stmt, col);\r\n    case SQLite.SQLITE_TEXT: {\r\n      const ptr = module._sqlite3_column_text(stmt, col);\r\n      return ptr ? module.UTF8ToString(ptr) : null;\r\n    }\r\n    case SQLite.SQLITE_BLOB: {\r\n      const nBytes = module._sqlite3_column_bytes(stmt, col);\r\n      const address = module._sqlite3_column_blob(stmt, col);\r\n      const slice = module.HEAPU8.subarray(address, address + nBytes);\r\n      return Buffer.from(slice);\r\n    }\r\n    default:\r\n      throw new SQLiteError(\"unknown type\", type);\r\n  }\r\n}\r\n\r\nfunction rowToObjectRaw(\r\n  module: WaModule,\r\n  stmt: number,\r\n  readBigInts: boolean,\r\n  returnArrays: boolean,\r\n): unknown {\r\n  const n = module._sqlite3_data_count(stmt);\r\n  if (returnArrays) {\r\n    const row: unknown[] = [];\r\n    for (let i = 0; i < n; i++) row.push(readColumnValueRaw(module, stmt, i, readBigInts));\r\n    return row;\r\n  }\r\n  const row: Record<string, unknown> = {};\r\n  for (let i = 0; i < n; i++) {\r\n    const namePtr = module._sqlite3_column_name(stmt, i);\r\n    row[module.UTF8ToString(namePtr)] = readColumnValueRaw(module, stmt, i, readBigInts);\r\n  }\r\n  return row;\r\n}\r\n\r\ntype WaModule = {\r\n  _malloc: (n: number) => number;\r\n  _free: (p: number) => void;\r\n  _sqlite3_open_v2: (f: number, pp: number, flags: number, vfs: number) => number;\r\n  _sqlite3_close: (db: number) => number;\r\n  _sqlite3_prepare_v2: (db: number, sql: number, n: number, pp: number, tail: number) => number;\r\n  _sqlite3_step: (stmt: number) => number;\r\n  _sqlite3_finalize: (stmt: number) => number;\r\n  _sqlite3_reset: (stmt: number) => number;\r\n  _sqlite3_clear_bindings: (stmt: number) => number;\r\n  _sqlite3_errmsg: (db: number) => number;\r\n  _sqlite3_changes: (db: number) => number;\r\n  _sqlite3_data_count: (stmt: number) => number;\r\n  _sqlite3_column_count: (stmt: number) => number;\r\n  _sqlite3_column_name: (stmt: number, col: number) => number;\r\n  _sqlite3_column_type: (stmt: number, col: number) => number;\r\n  _sqlite3_column_int64: (stmt: number, col: number) => number;\r\n  _sqlite3_column_double: (stmt: number, col: number) => number;\r\n  _sqlite3_column_text: (stmt: number, col: number) => number;\r\n  _sqlite3_column_blob: (stmt: number, col: number) => number;\r\n  _sqlite3_column_bytes: (stmt: number, col: number) => number;\r\n  _sqlite3_bind_null: (stmt: number, index: number) => number;\r\n  _sqlite3_bind_int: (stmt: number, index: number, value: number) => number;\r\n  _sqlite3_bind_int64: (stmt: number, index: number, lo: number, hi: number) => number;\r\n  _sqlite3_bind_double: (stmt: number, index: number, value: number) => number;\r\n  _sqlite3_bind_text: (stmt: number, index: number, ptr: number, n: number, free: number) => number;\r\n  _sqlite3_bind_blob: (stmt: number, index: number, ptr: number, n: number, free: number) => number;\r\n  _sqlite3_bind_parameter_count: (stmt: number) => number;\r\n  _sqlite3_bind_parameter_name: (stmt: number, index: number) => number;\r\n  _sqlite3_get_autocommit: (db: number) => number;\r\n  _sqlite3_malloc: (n: number) => number;\r\n  _getSqliteFree: () => number;\r\n  HEAPU8: Uint8Array;\r\n  getValue: (ptr: number, type: string) => number;\r\n  stringToUTF8: (s: string, ptr: number, max: number) => void;\r\n  lengthBytesUTF8: (s: string) => number;\r\n  UTF8ToString: (ptr: number) => string;\r\n  getTempRet0?: () => number;\r\n  ccall: (...args: unknown[]) => unknown;\r\n  createFunction: (...args: unknown[]) => number;\r\n  createAggregate: (...args: unknown[]) => number;\r\n  setAuthorizer: (db: number, fn: unknown, userData: unknown) => number;\r\n};\r\n\r\ntype WaApi = {\r\n  module?: WaModule;\r\n  SQLite?: typeof SQLite;\r\n  str_new: (db: number, sql: string) => number;\r\n  str_value: (str: number) => number;\r\n  str_finish: (str: number) => void;\r\n  vfs_register: (vfs: unknown, makeDefault?: boolean | number) => number;\r\n  limit: (db: number, id: number, value: number) => number;\r\n  value: (valuePtr: number) => unknown;\r\n  result_null: (ctx: number) => void;\r\n  result: (ctx: number, value: unknown) => void;\r\n};\r\n\r\ninterface SqliteEngine {\r\n  module: WaModule;\r\n  api: WaApi;\r\n  sync: SyncOps;\r\n}\r\n\r\nclass SyncOps {\r\n  readonly stmtToDb = new Map<number, number>();\r\n  private readonly stmtStr = new Map<number, number>();\r\n  private readonly tmp: number;\r\n  private readonly sqliteFree: number;\r\n\r\n  constructor(\r\n    readonly module: WaModule,\r\n    readonly api: WaApi,\r\n  ) {\r\n    this.tmp = module._malloc(8);\r\n    this.sqliteFree = module._getSqliteFree();\r\n  }\r\n\r\n  private sqliteString(s: string): number {\r\n    const n = this.module.lengthBytesUTF8(s);\r\n    const ptr = this.module._sqlite3_malloc(n + 1);\r\n    this.module.stringToUTF8(s, ptr, n + 1);\r\n    return ptr;\r\n  }\r\n\r\n  private utf8(s: string): number {\r\n    const n = this.module.lengthBytesUTF8(s);\r\n    const ptr = this.module._malloc(n + 1);\r\n    this.module.stringToUTF8(s, ptr, n + 1);\r\n    return ptr;\r\n  }\r\n\r\n  private freePtr(ptr: number): void {\r\n    this.module._free(ptr);\r\n  }\r\n\r\n  private errmsg(db: number): string {\r\n    const ptr = this.module._sqlite3_errmsg(db);\r\n    return ptr ? this.module.UTF8ToString(ptr) : \"SQLite error\";\r\n  }\r\n\r\n  check(rc: number, db: number | null, allowed: number[] = [SQLite.SQLITE_OK]): void {\r\n    if (allowed.includes(rc)) return;\r\n    throw new SQLiteError(db != null ? this.errmsg(db) : `SQLite error (${rc})`, rc);\r\n  }\r\n\r\n  open(path: string, vfsName?: string): number {\r\n    const filePtr = this.utf8(path);\r\n    const vfsPtr = vfsName ? this.utf8(vfsName) : 0;\r\n    const rc = this.module._sqlite3_open_v2(\r\n      filePtr,\r\n      this.tmp,\r\n      OPEN_READWRITE | OPEN_CREATE,\r\n      vfsPtr,\r\n    );\r\n    this.freePtr(filePtr);\r\n    if (vfsPtr) this.freePtr(vfsPtr);\r\n    const db = this.module.getValue(this.tmp, \"*\");\r\n    this.check(rc, db);\r\n    this.module.ccall(\"RegisterExtensionFunctions\", \"void\", [\"number\"], [db]);\r\n    return db;\r\n  }\r\n\r\n  close(db: number): void {\r\n    const rc = this.module._sqlite3_close(db);\r\n    this.check(rc, db);\r\n  }\r\n\r\n  exec(db: number, sql: string): void {\r\n    const str = this.api.str_new(db, sql);\r\n    try {\r\n      let tail = this.api.str_value(str);\r\n      while (true) {\r\n        const rc = this.module._sqlite3_prepare_v2(db, tail, -1, this.tmp, this.tmp + 4);\r\n        this.check(rc, db);\r\n        const stmt = this.module.getValue(this.tmp, \"*\");\r\n        if (!stmt) break;\r\n        this.stmtToDb.set(stmt, db);\r\n        try {\r\n          let stepRc = this.module._sqlite3_step(stmt);\r\n          while (stepRc === SQLite.SQLITE_ROW) stepRc = this.module._sqlite3_step(stmt);\r\n          this.check(stepRc, db, [SQLite.SQLITE_DONE]);\r\n        } finally {\r\n          this.module._sqlite3_finalize(stmt);\r\n          this.stmtToDb.delete(stmt);\r\n        }\r\n        tail = this.module.getValue(this.tmp + 4, \"*\");\r\n        if (!tail) break;\r\n      }\r\n    } finally {\r\n      this.api.str_finish(str);\r\n    }\r\n  }\r\n\r\n  prepare(db: number, sql: string): { stmt: number; str: number } {\r\n    const str = this.api.str_new(db, sql);\r\n    const rc = this.module._sqlite3_prepare_v2(\r\n      db,\r\n      this.api.str_value(str),\r\n      -1,\r\n      this.tmp,\r\n      this.tmp + 4,\r\n    );\r\n    this.check(rc, db);\r\n    const stmt = this.module.getValue(this.tmp, \"*\");\r\n    if (!stmt) {\r\n      this.api.str_finish(str);\r\n      throw new SQLiteError(\"empty statement\", SQLite.SQLITE_MISUSE);\r\n    }\r\n    this.stmtToDb.set(stmt, db);\r\n    this.stmtStr.set(stmt, str);\r\n    return { stmt, str };\r\n  }\r\n\r\n  finalize(stmt: number, str?: number): void {\r\n    const trackedStr = str ?? this.stmtStr.get(stmt);\r\n    if (this.stmtToDb.has(stmt)) {\r\n      this.module._sqlite3_finalize(stmt);\r\n      this.stmtToDb.delete(stmt);\r\n    }\r\n    if (trackedStr != null) {\r\n      this.api.str_finish(trackedStr);\r\n      this.stmtStr.delete(stmt);\r\n    }\r\n  }\r\n\r\n  reset(stmt: number): void {\r\n    const db = this.stmtToDb.get(stmt)!;\r\n    this.check(this.module._sqlite3_reset(stmt), db);\r\n    this.module._sqlite3_clear_bindings(stmt);\r\n  }\r\n\r\n  step(stmt: number): number {\r\n    const db = this.stmtToDb.get(stmt)!;\r\n    const rc = this.module._sqlite3_step(stmt);\r\n    if (rc === SQLite.SQLITE_ROW || rc === SQLite.SQLITE_DONE) return rc;\r\n    this.check(rc, db);\r\n    return rc;\r\n  }\r\n\r\n  changes(db: number): number {\r\n    return this.module._sqlite3_changes(db);\r\n  }\r\n\r\n  lastInsertRowid(db: number): number | bigint {\r\n    const prep = this.prepare(db, \"SELECT last_insert_rowid() AS id\");\r\n    try {\r\n      const rc = this.step(prep.stmt);\r\n      if (rc !== SQLite.SQLITE_ROW) throw new Error(\"Failed to read last_insert_rowid\");\r\n      const lo32 = this.module._sqlite3_column_int64(prep.stmt, 0);\r\n      const hi32 = this.module.getTempRet0?.() ?? 0;\r\n      const v = (BigInt(hi32) << 32n) | (BigInt(lo32) & 0xffffffffn);\r\n      if (v > BigInt(MAX_SAFE) || v < BigInt(MIN_SAFE)) return v;\r\n      return Number(v);\r\n    } finally {\r\n      this.finalize(prep.stmt, prep.str);\r\n    }\r\n  }\r\n\r\n  isAutocommit(db: number): boolean {\r\n    return this.module._sqlite3_get_autocommit(db) !== 0;\r\n  }\r\n\r\n  bindParameterCount(stmt: number): number {\r\n    return this.module._sqlite3_bind_parameter_count(stmt);\r\n  }\r\n\r\n  bindParameterName(stmt: number, index: number): string | null {\r\n    const ptr = this.module._sqlite3_bind_parameter_name(stmt, index);\r\n    return ptr ? this.module.UTF8ToString(ptr) : null;\r\n  }\r\n\r\n  bind(stmt: number, index: number, value: unknown): void {\r\n    const db = this.stmtToDb.get(stmt)!;\r\n    let rc: number;\r\n    if (value === null || value === undefined) {\r\n      rc = this.module._sqlite3_bind_null(stmt, index);\r\n      this.check(rc, db);\r\n      return;\r\n    }\r\n    if (typeof value === \"number\") {\r\n      if (Number.isInteger(value)) {\r\n        if (value > 0x7fffffff || value < -0x80000000) {\r\n          const lo = value & 0xffffffff;\r\n          const hi = value < 0 ? -1 : 0;\r\n          rc = this.module._sqlite3_bind_int64(stmt, index, lo, hi);\r\n        } else {\r\n          rc = this.module._sqlite3_bind_int(stmt, index, value);\r\n        }\r\n      } else {\r\n        rc = this.module._sqlite3_bind_double(stmt, index, value);\r\n      }\r\n      this.check(rc, db);\r\n      return;\r\n    }\r\n    if (typeof value === \"bigint\") {\r\n      const lo = Number(value & 0xffffffffn);\r\n      const hi = Number(value >> 32n);\r\n      rc = this.module._sqlite3_bind_int64(stmt, index, lo, hi);\r\n      this.check(rc, db);\r\n      return;\r\n    }\r\n    if (typeof value === \"string\") {\r\n      const ptr = this.sqliteString(value);\r\n      rc = this.module._sqlite3_bind_text(stmt, index, ptr, -1, this.sqliteFree);\r\n      this.check(rc, db);\r\n      return;\r\n    }\r\n    if (value instanceof Uint8Array || Buffer.isBuffer(value)) {\r\n      const bytes = value instanceof Uint8Array ? value : new Uint8Array(value);\r\n      const ptr = this.module._sqlite3_malloc(bytes.byteLength);\r\n      this.module.HEAPU8.set(bytes, ptr);\r\n      rc = this.module._sqlite3_bind_blob(stmt, index, ptr, bytes.byteLength, this.sqliteFree);\r\n      this.check(rc, db);\r\n      return;\r\n    }\r\n    throw new TypeError(`Cannot bind value of type ${typeof value}`);\r\n  }\r\n}\r\n\r\nclass NodepodVFS {\r\n  name = NODEPOD_VFS_NAME;\r\n  mxPathName = 512;\r\n  private mapNameToFile = new Map<\r\n    string,\r\n    { vfsPath: string; size: number; data: ArrayBuffer; dirty: boolean }\r\n  >();\r\n  private mapIdToFile = new Map<number, (typeof this.mapNameToFile extends Map<string, infer V> ? V : never)>();\r\n\r\n  xOpen(name: string | null, fileId: number, flags: number, pOutFlags: DataView): number {\r\n    name = name || `anon-${Math.random().toString(36).slice(2)}`;\r\n    let file = this.mapNameToFile.get(name);\r\n    if (!file) {\r\n      const existing = readDbBytes(name);\r\n      if (!existing && !(flags & 0x4)) return 14; // SQLITE_CANTOPEN\r\n      file = {\r\n        vfsPath: name,\r\n        size: existing?.byteLength ?? 0,\r\n        data: existing\r\n          ? (existing.buffer.slice(\r\n              existing.byteOffset,\r\n              existing.byteOffset + existing.byteLength,\r\n            ) as ArrayBuffer)\r\n          : new ArrayBuffer(0),\r\n        dirty: false,\r\n      };\r\n      this.mapNameToFile.set(name, file);\r\n    }\r\n    this.mapIdToFile.set(fileId, file!);\r\n    pOutFlags.setInt32(0, flags, true);\r\n    return 0;\r\n  }\r\n\r\n  xClose(fileId: number): number {\r\n    const file = this.mapIdToFile.get(fileId);\r\n    if (file) {\r\n      this.mapIdToFile.delete(fileId);\r\n      this.flush(file);\r\n    }\r\n    return 0;\r\n  }\r\n\r\n  xRead(fileId: number, pData: Uint8Array, iOffset: number): number {\r\n    const file = this.mapIdToFile.get(fileId);\r\n    if (!file) return 1;\r\n    const bgn = Math.min(iOffset, file.size);\r\n    const end = Math.min(iOffset + pData.byteLength, file.size);\r\n    const n = end - bgn;\r\n    if (n > 0) pData.set(new Uint8Array(file.data, bgn, n));\r\n    if (n < pData.byteLength) {\r\n      pData.fill(0, n);\r\n      return 522;\r\n    }\r\n    return 0;\r\n  }\r\n\r\n  xWrite(fileId: number, pData: Uint8Array, iOffset: number): number {\r\n    const file = this.mapIdToFile.get(fileId);\r\n    if (!file) return 1;\r\n    if (iOffset + pData.byteLength > file.data.byteLength) {\r\n      const newSize = Math.max(iOffset + pData.byteLength, file.data.byteLength * 2 || 4096);\r\n      const data = new ArrayBuffer(newSize);\r\n      new Uint8Array(data).set(new Uint8Array(file.data, 0, file.size));\r\n      file.data = data;\r\n    }\r\n    new Uint8Array(file.data, iOffset, pData.byteLength).set(pData);\r\n    file.size = Math.max(file.size, iOffset + pData.byteLength);\r\n    file.dirty = true;\r\n    return 0;\r\n  }\r\n\r\n  xTruncate(fileId: number, iSize: number): number {\r\n    const file = this.mapIdToFile.get(fileId);\r\n    if (!file) return 1;\r\n    if (iSize > file.data.byteLength) {\r\n      const data = new ArrayBuffer(iSize);\r\n      new Uint8Array(data).set(new Uint8Array(file.data, 0, file.size));\r\n      file.data = data;\r\n    }\r\n    file.size = iSize;\r\n    file.dirty = true;\r\n    return 0;\r\n  }\r\n\r\n  xSync(fileId: number): number {\r\n    const file = this.mapIdToFile.get(fileId);\r\n    if (file) this.flush(file);\r\n    return 0;\r\n  }\r\n\r\n  xFileSize(fileId: number, pSize64: DataView): number {\r\n    const file = this.mapIdToFile.get(fileId);\r\n    if (!file) return 1;\r\n    pSize64.setBigInt64(0, BigInt(file.size), true);\r\n    return 0;\r\n  }\r\n\r\n  xLock(): number { return 0; }\r\n  xUnlock(): number { return 0; }\r\n  xCheckReservedLock(_id: number, out: DataView): number {\r\n    out.setInt32(0, 0, true);\r\n    return 0;\r\n  }\r\n  xFileControl(): number { return 12; }\r\n  xSectorSize(): number { return 512; }\r\n  xDeviceCharacteristics(): number { return 0; }\r\n\r\n  xDelete(name: string): number {\r\n    this.mapNameToFile.delete(name);\r\n    removeDbFile(name);\r\n    return 0;\r\n  }\r\n\r\n  xAccess(name: string, _flags: number, out: DataView): number {\r\n    out.setInt32(0, this.mapNameToFile.has(name) || readDbBytes(name) ? 1 : 0, true);\r\n    return 0;\r\n  }\r\n\r\n  private flush(file: { vfsPath: string; size: number; data: ArrayBuffer; dirty: boolean }): void {\r\n    if (!file.dirty) return;\r\n    writeDbBytes(file.vfsPath, new Uint8Array(file.data, 0, file.size));\r\n    file.dirty = false;\r\n  }\r\n\r\n  flushAll(): void {\r\n    for (const file of this.mapNameToFile.values()) this.flush(file);\r\n  }\r\n}\r\n\r\nexport const WASM_CACHE_PATH = \"/.nodepod/wa-sqlite.wasm\";\r\nexport const WASM_SAB_HEADER_BYTES = 16;\r\nexport const WASM_SAB_MAX_BYTES = 1024 * 1024;\r\n\r\nconst ENGINE_LOAD_TIMEOUT_MS = 30_000;\r\nconst SAB_STATUS_PENDING = 0;\r\nconst SAB_STATUS_OK = 1;\r\nconst SAB_STATUS_FAIL = 2;\r\n\r\nlet engineInstance: SqliteEngine | null = null;\r\nlet engineLoading: Promise<SqliteEngine | null> | null = null;\r\nlet engineLoadFailed = false;\r\nlet nodepodVfs: NodepodVFS | null = null;\r\n\r\n// Injected in process workers — blocks until wa-sqlite.wasm bytes are in the pod VFS.\r\nexport interface SqliteHostBridge {\r\n  ensureWasmCached(): void;\r\n}\r\n\r\nlet hostBridge: SqliteHostBridge | null = null;\r\n\r\nexport function setSqliteHostBridge(bridge: SqliteHostBridge | null): void {\r\n  hostBridge = bridge;\r\n}\r\n\r\n/** @internal test helper */\r\nexport function __resetSqliteEngineForTesting(): void {\r\n  engineInstance = null;\r\n  engineLoading = null;\r\n  engineLoadFailed = false;\r\n  nodepodVfs = null;\r\n}\r\n\r\nfunction syncAwait(val: unknown): unknown {\r\n  if (val && typeof (val as { then?: unknown }).then === \"function\") {\r\n    let resolved: unknown;\r\n    let gotSync = false;\r\n    (val as Promise<unknown>).then((v) => {\r\n      resolved = v;\r\n      gotSync = true;\r\n    });\r\n    if (gotSync) return resolved;\r\n    return undefined;\r\n  }\r\n  return val;\r\n}\r\n\r\nfunction ensureLoadStarted(): void {\r\n  if (engineInstance || engineLoading) return;\r\n  const loadHandle = getRegistry().register(\"WASMWork\");\r\n  engineLoading = loadEngine().finally(() => loadHandle.close());\r\n}\r\n\r\nasync function loadWasmBinary(): Promise<Uint8Array> {\r\n  try {\r\n    const v = vol();\r\n    if (v.existsSync(WASM_CACHE_PATH)) {\r\n      return new Uint8Array(v.readFileSync(WASM_CACHE_PATH));\r\n    }\r\n  } catch {\r\n    /* volume unavailable */\r\n  }\r\n\r\n  try {\r\n    const resp = await fetch(CDN_WA_SQLITE_WASM);\r\n    if (resp.ok) return new Uint8Array(await resp.arrayBuffer());\r\n  } catch {\r\n    /* browser fetch failed — try Node below */\r\n  }\r\n\r\n  try {\r\n    const { readFileSync } = await import(/* @vite-ignore */ \"node:fs\");\r\n    const { createRequire } = await import(/* @vite-ignore */ \"node:module\");\r\n    const { cwd } = await import(/* @vite-ignore */ \"node:process\");\r\n    const req = createRequire(cwd() + \"/package.json\");\r\n    const pkgDir = req.resolve(\"wa-sqlite/package.json\").replace(/[/\\\\]package\\.json$/, \"\");\r\n    return readFileSync(`${pkgDir}/dist/wa-sqlite.wasm`);\r\n  } catch {\r\n    throw new Error(\"Failed to load wa-sqlite.wasm\");\r\n  }\r\n}\r\n\r\nasync function loadEngine(): Promise<SqliteEngine | null> {\r\n  try {\r\n    const wasmBinary = await loadWasmBinary();\r\n    precompileWasm(wasmBinary);\r\n    let factory: (opts: { wasmBinary: Uint8Array }) => Promise<WaModule>;\r\n    try {\r\n      factory = (await cdnImport(CDN_WA_SQLITE)).default as typeof factory;\r\n    } catch {\r\n      factory = (await import(/* @vite-ignore */ \"wa-sqlite/dist/wa-sqlite.mjs\"))\r\n        .default as typeof factory;\r\n    }\r\n    const module = (await factory({ wasmBinary })) as WaModule;\r\n    return buildEngineFromWaModule(module);\r\n  } catch (err) {\r\n    if (typeof console !== \"undefined\") console.warn(\"[node:sqlite] load failed:\", err);\r\n    return null;\r\n  }\r\n}\r\n\r\nfunction buildEngineFromWaModule(waModule: WaModule): SqliteEngine {\r\n  const api = Factory(waModule) as WaApi;\r\n  nodepodVfs = new NodepodVFS();\r\n  api.vfs_register(nodepodVfs, false);\r\n  return { module: waModule, api, sync: new SyncOps(waModule, api) };\r\n}\r\n\r\n// sync fast path: load from pod VFS after host preload (or warm cache).\r\nfunction loadEngineSync(): SqliteEngine | null {\r\n  try {\r\n    const v = vol();\r\n    if (!v.existsSync(WASM_CACHE_PATH)) return null;\r\n\r\n    const wasmBinary = new Uint8Array(v.readFileSync(WASM_CACHE_PATH));\r\n    precompileWasm(wasmBinary);\r\n\r\n    let compiled = getCachedModule(wasmBinary);\r\n    if (!compiled) {\r\n      compiled = new WebAssembly.Module(wasmBinary);\r\n    }\r\n\r\n    const ready = waSqliteFactory({\r\n      wasmBinary,\r\n      wasmModule: compiled,\r\n      noInitialRun: true,\r\n    });\r\n\r\n    const waModule = syncAwait(ready);\r\n    if (!waModule || typeof waModule !== \"object\") return null;\r\n    return buildEngineFromWaModule(waModule as WaModule);\r\n  } catch (err) {\r\n    if (typeof console !== \"undefined\") {\r\n      console.warn(\"[node:sqlite] sync load failed:\", err);\r\n    }\r\n    return null;\r\n  }\r\n}\r\n\r\nfunction waitForEngineLoading(): SqliteEngine | null {\r\n  ensureLoadStarted();\r\n  if (engineInstance) return engineInstance;\r\n  if (!engineLoading) return null;\r\n\r\n  const warm = syncAwait(engineLoading);\r\n  if (warm && typeof warm === \"object\") return warm as SqliteEngine;\r\n\r\n  if (typeof SharedArrayBuffer === \"undefined\" || typeof Atomics === \"undefined\") {\r\n    return null;\r\n  }\r\n\r\n  let result: SqliteEngine | null = null;\r\n  let failed = false;\r\n  const sab = new SharedArrayBuffer(4);\r\n  const ctrl = new Int32Array(sab);\r\n  engineLoading.then(\r\n    (r) => {\r\n      result = r;\r\n    },\r\n    () => {\r\n      failed = true;\r\n    },\r\n  ).finally(() => {\r\n    Atomics.store(ctrl, 0, 1);\r\n    Atomics.notify(ctrl, 0);\r\n  });\r\n\r\n  const deadline = Date.now() + ENGINE_LOAD_TIMEOUT_MS;\r\n  while (result === null && !failed) {\r\n    if (Date.now() > deadline) break;\r\n    Atomics.wait(ctrl, 0, 0, 10);\r\n  }\r\n  return result;\r\n}\r\n\r\nfunction blockForEngineViaHost(): void {\r\n  if (!hostBridge) return;\r\n  try {\r\n    hostBridge.ensureWasmCached();\r\n  } catch (err) {\r\n    engineLoadFailed = true;\r\n    throw err;\r\n  }\r\n  const eng = loadEngineSync();\r\n  if (eng) {\r\n    engineInstance = eng;\r\n    return;\r\n  }\r\n  engineLoadFailed = true;\r\n}\r\n\r\nfunction getEngine(): SqliteEngine {\r\n  if (engineInstance) return engineInstance;\r\n  if (engineLoadFailed) {\r\n    throw new Error(\"[node:sqlite] WASM engine failed to load.\");\r\n  }\r\n\r\n  ensureLoadStarted();\r\n  if (engineLoading) {\r\n    const eng = syncAwait(engineLoading);\r\n    if (eng && typeof eng === \"object\") {\r\n      engineInstance = eng as SqliteEngine;\r\n      return engineInstance;\r\n    }\r\n  }\r\n\r\n  try {\r\n    const syncEng = loadEngineSync();\r\n    if (syncEng) {\r\n      engineInstance = syncEng;\r\n      return engineInstance;\r\n    }\r\n  } catch {\r\n    /* volume unavailable */\r\n  }\r\n\r\n  blockForEngineViaHost();\r\n  if (engineInstance) return engineInstance;\r\n\r\n  try {\r\n    const syncEng = loadEngineSync();\r\n    if (syncEng) {\r\n      engineInstance = syncEng;\r\n      return engineInstance;\r\n    }\r\n  } catch {\r\n    /* volume unavailable */\r\n  }\r\n\r\n  throw new Error(\r\n    \"[node:sqlite] WASM engine not ready. Await preloadSqlite() before using DatabaseSync.\",\r\n  );\r\n}\r\n\r\nexport async function preloadSqlite(): Promise<boolean> {\r\n  if (engineInstance) return true;\r\n  ensureLoadStarted();\r\n  const eng = await engineLoading!;\r\n  if (!eng) {\r\n    engineLoadFailed = true;\r\n    return false;\r\n  }\r\n  engineInstance = eng;\r\n  return true;\r\n}\r\n\r\n// worker init: host-fetch WASM bytes, then async engine load before posting ready.\r\nexport async function warmSqliteEngine(): Promise<boolean> {\r\n  if (engineInstance) return true;\r\n  if (hostBridge) {\r\n    try {\r\n      hostBridge.ensureWasmCached();\r\n    } catch {\r\n      engineLoadFailed = true;\r\n      return false;\r\n    }\r\n  }\r\n  return preloadSqlite();\r\n}\r\n\r\ninterface DbOptions {\r\n  open?: boolean;\r\n  readBigInts?: boolean;\r\n  returnArrays?: boolean;\r\n  allowExtension?: boolean;\r\n  allowBareNamedParameters?: boolean;\r\n  allowUnknownNamedParameters?: boolean;\r\n  defensive?: boolean;\r\n}\r\n\r\nexport interface StatementSync {\r\n  readonly sourceSQL: string;\r\n  readonly expandedSQL: string;\r\n  run(...params: unknown[]): { changes: number | bigint; lastInsertRowid: number | bigint };\r\n  get(...params: unknown[]): unknown;\r\n  all(...params: unknown[]): unknown[];\r\n  iterate(...params: unknown[]): IterableIterator<unknown>;\r\n  columns(): Array<{ column: string | null; database: string | null; name: string; table: string | null; type: string | null }>;\r\n  setAllowBareNamedParameters(enabled: boolean): void;\r\n  setAllowUnknownNamedParameters(enabled: boolean): void;\r\n  setReturnArrays(enabled: boolean): void;\r\n  setReadBigInts(enabled: boolean): void;\r\n}\r\n\r\nclass StatementSyncImpl implements StatementSync {\r\n  readonly sourceSQL: string;\r\n  private _expandedSQL = \"\";\r\n  private _readBigInts: boolean;\r\n  private _returnArrays: boolean;\r\n  private _allowBareNamed: boolean;\r\n  private _allowUnknownNamed: boolean;\r\n  private _closed = false;\r\n  private readonly _stmt: number;\r\n  private readonly _str: number;\r\n\r\n  get expandedSQL(): string {\r\n    return this._expandedSQL;\r\n  }\r\n\r\n  constructor(\r\n    private readonly _db: DatabaseSync,\r\n    private readonly _handle: number,\r\n    sql: string,\r\n    opts: DbOptions,\r\n  ) {\r\n    this.sourceSQL = sql;\r\n    this._readBigInts = opts.readBigInts ?? false;\r\n    this._returnArrays = opts.returnArrays ?? false;\r\n    this._allowBareNamed = opts.allowBareNamedParameters ?? true;\r\n    this._allowUnknownNamed = opts.allowUnknownNamedParameters ?? false;\r\n    const { sync } = getEngine();\r\n    const prep = sync.prepare(_handle, sql);\r\n    this._stmt = prep.stmt;\r\n    this._str = prep.str;\r\n    _db._trackStatement(this);\r\n  }\r\n\r\n  private bindParams(named?: Record<string, unknown> | unknown[], ...rest: unknown[]): void {\r\n    const { sync } = getEngine();\r\n    const params = normalizeParams(named, ...rest);\r\n    sync.reset(this._stmt);\r\n    if (Array.isArray(params)) {\r\n      params.forEach((v, i) => {\r\n        const val = bindValue(v);\r\n        if (val !== undefined) sync.bind(this._stmt, i + 1, val);\r\n      });\r\n      return;\r\n    }\r\n    const n = sync.bindParameterCount(this._stmt);\r\n    for (let i = 1; i <= n; i++) {\r\n      let name = sync.bindParameterName(this._stmt, i);\r\n      if (!name) continue;\r\n      const raw = name;\r\n      if (name.startsWith(\":\") || name.startsWith(\"$\") || name.startsWith(\"@\")) {\r\n        name = name.slice(1);\r\n      }\r\n      let value = params[raw];\r\n      if (value === undefined) value = params[name];\r\n      if (value === undefined) {\r\n        if (!this._allowUnknownNamed) throw new Error(`Unknown named parameter: ${raw}`);\r\n        continue;\r\n      }\r\n      sync.bind(this._stmt, i, bindValue(value));\r\n    }\r\n  }\r\n\r\n  run(named?: Record<string, unknown> | unknown[], ...rest: unknown[]) {\r\n    const { sync } = getEngine();\r\n    this.bindParams(named, ...rest);\r\n    const rc = sync.step(this._stmt);\r\n    if (rc !== SQLite.SQLITE_DONE) throw new Error(\"Statement did not complete\");\r\n    this._expandedSQL = this.sourceSQL;\r\n    return {\r\n      changes: sync.changes(this._handle),\r\n      lastInsertRowid: sync.lastInsertRowid(this._handle),\r\n    };\r\n  }\r\n\r\n  get(named?: Record<string, unknown> | unknown[], ...rest: unknown[]) {\r\n    const { sync, module } = getEngine();\r\n    this.bindParams(named, ...rest);\r\n    const rc = sync.step(this._stmt);\r\n    if (rc === SQLite.SQLITE_DONE) return undefined;\r\n    if (rc !== SQLite.SQLITE_ROW) throw new Error(\"Failed to execute statement\");\r\n    this._expandedSQL = this.sourceSQL;\r\n    return rowToObjectRaw(module, this._stmt, this._readBigInts, this._returnArrays);\r\n  }\r\n\r\n  all(named?: Record<string, unknown> | unknown[], ...rest: unknown[]) {\r\n    const { sync, module } = getEngine();\r\n    this.bindParams(named, ...rest);\r\n    const rows: unknown[] = [];\r\n    let rc: number;\r\n    while ((rc = sync.step(this._stmt)) === SQLite.SQLITE_ROW) {\r\n      rows.push(rowToObjectRaw(module, this._stmt, this._readBigInts, this._returnArrays));\r\n    }\r\n    if (rc !== SQLite.SQLITE_DONE) throw new Error(\"Failed to execute statement\");\r\n    this._expandedSQL = this.sourceSQL;\r\n    return rows;\r\n  }\r\n\r\n  *iterate(named?: Record<string, unknown> | unknown[], ...rest: unknown[]) {\r\n    const { sync, module } = getEngine();\r\n    this.bindParams(named, ...rest);\r\n    let rc: number;\r\n    while ((rc = sync.step(this._stmt)) === SQLite.SQLITE_ROW) {\r\n      yield rowToObjectRaw(module, this._stmt, this._readBigInts, this._returnArrays);\r\n    }\r\n    if (rc !== SQLite.SQLITE_DONE) throw new Error(\"Failed to execute statement\");\r\n    this._expandedSQL = this.sourceSQL;\r\n  }\r\n\r\n  columns() {\r\n    const { sync, module } = getEngine();\r\n    const n = module._sqlite3_column_count(this._stmt);\r\n    const cols = [];\r\n    for (let i = 0; i < n; i++) {\r\n      const namePtr = module._sqlite3_column_name(this._stmt, i);\r\n      cols.push({\r\n        column: null,\r\n        database: null,\r\n        name: module.UTF8ToString(namePtr),\r\n        table: null,\r\n        type: null,\r\n      });\r\n    }\r\n    return cols;\r\n  }\r\n\r\n  setAllowBareNamedParameters(v: boolean): void { this._allowBareNamed = v; }\r\n  setAllowUnknownNamedParameters(v: boolean): void { this._allowUnknownNamed = v; }\r\n  setReturnArrays(v: boolean): void { this._returnArrays = v; }\r\n  setReadBigInts(v: boolean): void { this._readBigInts = v; }\r\n\r\n  _close(): void {\r\n    if (this._closed) return;\r\n    getEngine().sync.finalize(this._stmt, this._str);\r\n    this._db._untrackStatement(this);\r\n    this._closed = true;\r\n  }\r\n}\r\n\r\nexport const StatementSync = function StatementSync(this: unknown) {\r\n  if (!(this instanceof StatementSyncImpl)) return;\r\n  throw new TypeError(\"StatementSync cannot be constructed directly\");\r\n} as unknown as { new (): StatementSync; prototype: StatementSync };\r\nStatementSync.prototype = StatementSyncImpl.prototype;\r\n\r\nexport class Session {\r\n  constructor(private readonly _db: DatabaseSync) {}\r\n  changeset(): Uint8Array { throw new Error(SESSION_ERR); }\r\n  patchset(): Uint8Array { throw new Error(SESSION_ERR); }\r\n  close(): void {}\r\n  [Symbol.dispose](): void { this.close(); }\r\n}\r\n\r\nexport class SQLTagStore {\r\n  private cache = new Map<string, StatementSyncImpl>();\r\n  readonly capacity: number;\r\n  get size(): number { return this.cache.size; }\r\n  get db(): DatabaseSync { return this._db; }\r\n\r\n  constructor(\r\n    private readonly _db: DatabaseSync,\r\n    maxSize = 1000,\r\n  ) {\r\n    this.capacity = maxSize;\r\n  }\r\n\r\n  clear(): void {\r\n    for (const stmt of this.cache.values()) stmt._close();\r\n    this.cache.clear();\r\n  }\r\n\r\n  private getStmt(sql: string): StatementSyncImpl {\r\n    let stmt = this.cache.get(sql);\r\n    if (!stmt) {\r\n      if (this.cache.size >= this.capacity) {\r\n        const first = this.cache.keys().next().value;\r\n        if (first) {\r\n          this.cache.get(first)!._close();\r\n          this.cache.delete(first);\r\n        }\r\n      }\r\n      stmt = this._db.prepare(sql) as StatementSyncImpl;\r\n      this.cache.set(sql, stmt);\r\n    }\r\n    return stmt;\r\n  }\r\n\r\n  private tagSql(strings: TemplateStringsArray): string {\r\n    let sql = strings[0] ?? \"\";\r\n    for (let i = 1; i < strings.length; i++) sql += \"?\" + strings[i];\r\n    return sql;\r\n  }\r\n\r\n  run(strings: TemplateStringsArray, ...values: unknown[]) {\r\n    return this.getStmt(this.tagSql(strings)).run(values);\r\n  }\r\n\r\n  get(strings: TemplateStringsArray, ...values: unknown[]) {\r\n    return this.getStmt(this.tagSql(strings)).get(values);\r\n  }\r\n\r\n  all(strings: TemplateStringsArray, ...values: unknown[]) {\r\n    return this.getStmt(this.tagSql(strings)).all(values);\r\n  }\r\n\r\n  *iterate(strings: TemplateStringsArray, ...values: unknown[]) {\r\n    yield* this.getStmt(this.tagSql(strings)).iterate(values);\r\n  }\r\n}\r\n\r\ninterface DatabaseSyncInterface {\r\n  readonly isOpen: boolean;\r\n  readonly isTransaction: boolean;\r\n  readonly location: string | null;\r\n  readonly limits: Record<string, number>;\r\n  close(): void;\r\n  open(): void;\r\n  exec(sql: string): void;\r\n  prepare(sql: string, options?: object): StatementSync;\r\n  function(name: string, optionsOrFn: object | ((...args: unknown[]) => unknown), fn?: (...args: unknown[]) => unknown): void;\r\n  aggregate(name: string, options: {\r\n    start?: unknown;\r\n    step: (acc: unknown, ...args: unknown[]) => unknown;\r\n    result?: (acc: unknown) => unknown;\r\n    inverse?: (acc: unknown, ...args: unknown[]) => unknown;\r\n  }): void;\r\n  setAuthorizer(callback: ((actionCode: number, arg1: string | null, arg2: string | null, dbName: string | null, triggerOrView: string | null) => number) | null): void;\r\n  enableDefensive(active: boolean): void;\r\n  enableLoadExtension(allow: boolean): void;\r\n  loadExtension(_path: string, _entryPoint?: string): void;\r\n  serialize(dbName?: string): Uint8Array;\r\n  deserialize(buffer: Uint8Array, options?: { dbName?: string }): void;\r\n  createSession(_options?: object): Session;\r\n  applyChangeset(_changeset: Uint8Array, _options?: object): boolean;\r\n  createTagStore(maxSize?: number): SQLTagStore;\r\n  [Symbol.dispose](): void;\r\n}\r\n\r\nexport class DatabaseSync implements DatabaseSyncInterface {\r\n  private _handle: number | null = null;\r\n  private _open = false;\r\n  private _allowExtension: boolean;\r\n  private _opts: DbOptions;\r\n  private readonly _statements = new Set<StatementSyncImpl>();\r\n  readonly path: string;\r\n  readonly resolvedPath: string;\r\n\r\n  constructor(path: string | URL | Buffer, options: DbOptions = {}) {\r\n    const loc =\r\n      path instanceof URL\r\n        ? path.href\r\n        : Buffer.isBuffer(path)\r\n          ? path.toString(\"utf8\")\r\n          : String(path);\r\n    this.path = loc;\r\n    this.resolvedPath = resolveDbPath(loc);\r\n    this._opts = { ...options };\r\n    this._allowExtension = options.allowExtension ?? false;\r\n    if (options.open !== false) this.open();\r\n  }\r\n\r\n  get isOpen(): boolean {\r\n    return this._open;\r\n  }\r\n\r\n  get isTransaction(): boolean {\r\n    if (!this._open || this._handle == null) return false;\r\n    return !getEngine().sync.isAutocommit(this._handle);\r\n  }\r\n\r\n  get location(): string | null {\r\n    return this.resolvedPath === \":memory:\" ? null : this.resolvedPath;\r\n  }\r\n\r\n  get limits(): Record<string, number> {\r\n    const proxy: Record<string, number> = {};\r\n    const ids: Record<string, number> = {\r\n      length: 0,\r\n      sqlLength: 1,\r\n      column: 2,\r\n      exprDepth: 3,\r\n      compoundSelect: 4,\r\n      vdbeOp: 5,\r\n      functionArg: 6,\r\n      attach: 7,\r\n      likePatternLength: 8,\r\n      variableNumber: 9,\r\n      triggerDepth: 10,\r\n    };\r\n    if (!this._open || this._handle == null) return proxy;\r\n    const { api } = getEngine();\r\n    for (const [key, id] of Object.entries(ids)) {\r\n      Object.defineProperty(proxy, key, {\r\n        get: () => api.limit(this._handle!, id, -1),\r\n        set: (v: number) => {\r\n          api.limit(this._handle!, id, v === Infinity ? -1 : v);\r\n        },\r\n        enumerable: true,\r\n      });\r\n    }\r\n    return proxy;\r\n  }\r\n\r\n  open(): void {\r\n    if (this._open) throw new Error(\"Database is already open\");\r\n    const { sync } = getEngine();\r\n    const vfs =\r\n      this.resolvedPath === \":memory:\" ? undefined : NODEPOD_VFS_NAME;\r\n    this._handle = sync.open(\r\n      this.resolvedPath === \":memory:\" ? \":memory:\" : this.resolvedPath,\r\n      vfs,\r\n    );\r\n    this._open = true;\r\n    if (this._opts.defensive !== false) {\r\n      try {\r\n        sync.exec(this._handle, \"PRAGMA defensive=ON\");\r\n      } catch {\r\n        /* optional */\r\n      }\r\n    }\r\n  }\r\n\r\n  close(): void {\r\n    if (!this._open || this._handle == null) return;\r\n    for (const stmt of [...this._statements]) stmt._close();\r\n    this._statements.clear();\r\n    nodepodVfs?.flushAll();\r\n    getEngine().sync.close(this._handle);\r\n    this._handle = null;\r\n    this._open = false;\r\n  }\r\n\r\n  _trackStatement(stmt: StatementSyncImpl): void {\r\n    this._statements.add(stmt);\r\n  }\r\n\r\n  _untrackStatement(stmt: StatementSyncImpl): void {\r\n    this._statements.delete(stmt);\r\n  }\r\n\r\n  [Symbol.dispose](): void {\r\n    this.close();\r\n  }\r\n\r\n  exec(sql: string): void {\r\n    this.assertOpen();\r\n    getEngine().sync.exec(this._handle!, sql);\r\n  }\r\n\r\n  prepare(sql: string, options: DbOptions = {}): StatementSync {\r\n    this.assertOpen();\r\n    const merged = { ...this._opts, ...options };\r\n    return new StatementSyncImpl(this, this._handle!, sql, merged);\r\n  }\r\n\r\n  function(\r\n    name: string,\r\n    optionsOrFn: object | ((...args: unknown[]) => unknown),\r\n    fn?: (...args: unknown[]) => unknown,\r\n  ): void {\r\n    this.assertOpen();\r\n    let options: Record<string, unknown> = {};\r\n    let func: (...args: unknown[]) => unknown;\r\n    if (typeof optionsOrFn === \"function\") {\r\n      func = optionsOrFn as (...args: unknown[]) => unknown;\r\n    } else {\r\n      options = optionsOrFn as Record<string, unknown>;\r\n      func = fn!;\r\n    }\r\n    if (func.constructor.name === \"AsyncFunction\") {\r\n      throw new TypeError(\"SQLite user-defined functions must be synchronous\");\r\n    }\r\n    const { api, module } = getEngine();\r\n    const nArg = func.length < 0 ? -1 : func.length;\r\n    const rc = module.createFunction(\r\n      this._handle!,\r\n      name,\r\n      nArg,\r\n      SQLite.SQLITE_UTF8,\r\n      0,\r\n      (ctx: number, values: Uint32Array) => {\r\n        const args: unknown[] = [];\r\n        for (let i = 0; i < values.length; i++) {\r\n          args.push(api.value(values[i]));\r\n        }\r\n        const result = func(...args);\r\n        if (result === undefined) api.result_null(ctx);\r\n        else api.result(ctx, result);\r\n      },\r\n    );\r\n    if (rc !== SQLite.SQLITE_OK) {\r\n      throw new SQLiteError(`Failed to create function ${name}`, rc);\r\n    }\r\n  }\r\n\r\n  aggregate(\r\n    name: string,\r\n    options: {\r\n      start?: unknown;\r\n      step: (acc: unknown, ...args: unknown[]) => unknown;\r\n      result?: (acc: unknown) => unknown;\r\n      inverse?: (acc: unknown, ...args: unknown[]) => unknown;\r\n    },\r\n  ): void {\r\n    this.assertOpen();\r\n    const accRef: { value: unknown } = {\r\n      value: typeof options.start === \"function\" ? undefined : options.start ?? null,\r\n    };\r\n    const { api, module } = getEngine();\r\n    const nArg = Math.max(0, options.step.length - 1);\r\n    const rc = module.createAggregate(\r\n      this._handle!,\r\n      name,\r\n      nArg,\r\n      SQLite.SQLITE_UTF8,\r\n      accRef,\r\n      (ctx: number, values: Uint32Array) => {\r\n        let acc = accRef.value;\r\n        if (acc === undefined) {\r\n          acc = typeof options.start === \"function\" ? (options.start as () => unknown)() : options.start ?? null;\r\n        }\r\n        const args: unknown[] = [];\r\n        for (let i = 0; i < values.length; i++) args.push(api.value(values[i]));\r\n        accRef.value = options.step(acc, ...args);\r\n      },\r\n      (ctx: number) => {\r\n        const out = options.result ? options.result(accRef.value) : accRef.value;\r\n        if (out === undefined) api.result_null(ctx);\r\n        else api.result(ctx, out);\r\n        accRef.value = typeof options.start === \"function\" ? undefined : options.start ?? null;\r\n      },\r\n    );\r\n    if (rc !== SQLite.SQLITE_OK) {\r\n      throw new SQLiteError(`Failed to create aggregate ${name}`, rc);\r\n    }\r\n  }\r\n\r\n  setAuthorizer(\r\n    callback: ((actionCode: number, arg1: string | null, arg2: string | null, dbName: string | null, triggerOrView: string | null) => number) | null,\r\n  ): void {\r\n    this.assertOpen();\r\n    const { module } = getEngine();\r\n    if (!callback) {\r\n      module.setAuthorizer(this._handle!, null, 0);\r\n      return;\r\n    }\r\n    module.setAuthorizer(this._handle!, (_userData: unknown, action: number, a1: string | null, a2: string | null, db: string | null, trigger: string | null) => {\r\n      return callback(action, a1, a2, db, trigger);\r\n    }, 0);\r\n  }\r\n\r\n  enableDefensive(_active: boolean): void {\r\n    /* defensive pragma applied at open when enabled by default */\r\n  }\r\n\r\n  enableLoadExtension(allow: boolean): void {\r\n    if (!this._allowExtension && allow) {\r\n      throw new Error(\"Cannot enable extension loading when allowExtension is false\");\r\n    }\r\n  }\r\n\r\n  loadExtension(_path: string, _entryPoint?: string): void {\r\n    throw new Error(\r\n      \"loadExtension() is not supported in the browser — native SQLite extensions cannot be loaded\",\r\n    );\r\n  }\r\n\r\n  serialize(_dbName = \"main\"): Uint8Array {\r\n    this.assertOpen();\r\n    if (this.resolvedPath !== \":memory:\") {\r\n      nodepodVfs?.flushAll();\r\n      const bytes = readDbBytes(this.resolvedPath);\r\n      if (bytes) return new Uint8Array(bytes);\r\n    }\r\n    const tmp = tempDbPath(\"serialize\");\r\n    try {\r\n      copyDatabaseToFile(this, tmp);\r\n      const bytes = readDbBytes(tmp);\r\n      if (!bytes) throw new Error(\"Failed to serialize database\");\r\n      return new Uint8Array(bytes);\r\n    } finally {\r\n      removeDbFile(tmp);\r\n    }\r\n  }\r\n\r\n  deserialize(buffer: Uint8Array, _options?: { dbName?: string }): void {\r\n    this.assertOpen();\r\n    const tmp = tempDbPath(\"deserialize\");\r\n    writeDbBytes(tmp, buffer);\r\n    try {\r\n      const external = new DatabaseSync(tmp);\r\n      try {\r\n        this.exec(\"PRAGMA foreign_keys=OFF\");\r\n        const existing = this.prepare(\r\n          \"SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'\",\r\n        ).all() as Array<{ name: string }>;\r\n        for (const t of existing) {\r\n          const esc = t.name.replace(/\"/g, '\"\"');\r\n          this.exec(`DROP TABLE IF EXISTS \"${esc}\"`);\r\n        }\r\n        const objects = external\r\n          .prepare(\"SELECT sql FROM sqlite_master WHERE sql NOT NULL ORDER BY rowid\")\r\n          .all() as Array<{ sql: string }>;\r\n        for (const { sql } of objects) this.exec(sql);\r\n        const tables = external\r\n          .prepare(\r\n            \"SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'\",\r\n          )\r\n          .all() as Array<{ name: string }>;\r\n        for (const { name } of tables) {\r\n          const esc = name.replace(/\"/g, '\"\"');\r\n          const rows = external\r\n            .prepare(`SELECT * FROM \"${esc}\"`)\r\n            .all() as Array<Record<string, unknown>>;\r\n          if (!rows.length) continue;\r\n          const cols = Object.keys(rows[0]!);\r\n          const colList = cols.map((c) => `\"${c.replace(/\"/g, '\"\"')}\"`).join(\", \");\r\n          for (const row of rows) {\r\n            const values = cols.map((c) => sqlLiteral(row[c])).join(\", \");\r\n            this.exec(`INSERT INTO \"${esc}\" (${colList}) VALUES (${values})`);\r\n          }\r\n        }\r\n      } finally {\r\n        external.close();\r\n      }\r\n    } finally {\r\n      removeDbFile(tmp);\r\n    }\r\n  }\r\n\r\n  createSession(_options?: object): Session {\r\n    this.assertOpen();\r\n    return new Session(this);\r\n  }\r\n\r\n  applyChangeset(_changeset: Uint8Array, _options?: object): boolean {\r\n    throw new Error(SESSION_ERR);\r\n  }\r\n\r\n  createTagStore(maxSize?: number): SQLTagStore {\r\n    this.assertOpen();\r\n    return new SQLTagStore(this, maxSize);\r\n  }\r\n\r\n  private assertOpen(): void {\r\n    if (!this._open || this._handle == null) throw new Error(\"Database is not open\");\r\n  }\r\n}\r\n\r\nexport async function backup(\r\n  sourceDb: DatabaseSync,\r\n  path: string | URL | Buffer,\r\n  options?: {\r\n    source?: string;\r\n    target?: string;\r\n    rate?: number;\r\n    progress?: (info: { totalPages: number; remainingPages: number }) => void;\r\n  },\r\n): Promise<number> {\r\n  const src = sourceDb as DatabaseSync;\r\n  if (!src.isOpen) throw new Error(\"Source database is not open\");\r\n  const target = resolveDbPath(\r\n    path instanceof URL\r\n      ? path.href\r\n      : Buffer.isBuffer(path)\r\n        ? path.toString(\"utf8\")\r\n        : String(path),\r\n  );\r\n  copyDatabaseToFile(src, target);\r\n  options?.progress?.({ totalPages: 1, remainingPages: 0 });\r\n  return 1;\r\n}\r\n\r\nfunction copyDatabaseToFile(db: DatabaseSync, destPath: string): void {\r\n  const { sync } = getEngine();\r\n  removeDbFile(destPath);\r\n  const dest = sync.open(destPath, NODEPOD_VFS_NAME);\r\n  try {\r\n    const objects = db\r\n      .prepare(\"SELECT sql FROM sqlite_master WHERE sql NOT NULL ORDER BY rowid\")\r\n      .all() as Array<{ sql: string }>;\r\n    for (const { sql } of objects) sync.exec(dest, sql);\r\n\r\n    const tables = db\r\n      .prepare(\r\n        \"SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'\",\r\n      )\r\n      .all() as Array<{ name: string }>;\r\n    for (const { name } of tables) {\r\n      const esc = name.replace(/\"/g, '\"\"');\r\n      const rows = db\r\n        .prepare(`SELECT * FROM \"${esc}\"`)\r\n        .all() as Array<Record<string, unknown>>;\r\n      if (!rows.length) continue;\r\n      const cols = Object.keys(rows[0]!);\r\n      const colList = cols.map((c) => `\"${c.replace(/\"/g, '\"\"')}\"`).join(\", \");\r\n      for (const row of rows) {\r\n        const values = cols.map((c) => sqlLiteral(row[c])).join(\", \");\r\n        sync.exec(dest, `INSERT INTO \"${esc}\" (${colList}) VALUES (${values})`);\r\n      }\r\n    }\r\n  } finally {\r\n    sync.close(dest);\r\n    nodepodVfs?.flushAll();\r\n  }\r\n}\r\n\r\nfunction sqlLiteral(value: unknown): string {\r\n  if (value === null || value === undefined) return \"NULL\";\r\n  if (typeof value === \"number\") return String(value);\r\n  if (typeof value === \"bigint\") return String(value);\r\n  if (typeof value === \"string\") return `'${value.replace(/'/g, \"''\")}'`;\r\n  if (Buffer.isBuffer(value) || value instanceof Uint8Array) {\r\n    const bytes = Buffer.isBuffer(value) ? value : Buffer.from(value);\r\n    return `X'${bytes.toString(\"hex\")}'`;\r\n  }\r\n  throw new TypeError(`Cannot copy value of type ${typeof value}`);\r\n}\r\n\r\nexport default {\r\n  DatabaseSync,\r\n  StatementSync,\r\n  Session,\r\n  SQLTagStore,\r\n  backup,\r\n  constants,\r\n  preloadSqlite,\r\n  setVolume,\r\n  setSqliteCwd,\r\n  setSqliteHostBridge,\r\n  WASM_CACHE_PATH,\r\n};\r\n","// stub - not available in browser\r\n\r\n\r\nimport { EventEmitter } from \"./events\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  QuicEndpoint                                                       */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface QuicEndpoint extends EventEmitter {\r\n  close(): void;\r\n  destroy(_err?: Error): void;\r\n  readonly address: { address: string; family: string; port: number };\r\n}\r\n\r\ninterface QuicEndpointConstructor {\r\n  new (_opts?: object): QuicEndpoint;\r\n  (this: any, _opts?: object): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const QuicEndpoint = function QuicEndpoint(this: any, _opts?: object) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n} as unknown as QuicEndpointConstructor;\r\n\r\nObject.setPrototypeOf(QuicEndpoint.prototype, EventEmitter.prototype);\r\n\r\nQuicEndpoint.prototype.close = function close(this: any): void {\r\n  this.emit(\"close\");\r\n};\r\n\r\nQuicEndpoint.prototype.destroy = function destroy(this: any, _err?: Error): void {\r\n  this.emit(\"close\");\r\n};\r\n\r\nObject.defineProperty(QuicEndpoint.prototype, \"address\", {\r\n  get: function(this: any): { address: string; family: string; port: number } {\r\n    return { address: \"0.0.0.0\", family: \"IPv4\", port: 0 };\r\n  },\r\n  configurable: true,\r\n});\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  QuicSession                                                        */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface QuicSession extends EventEmitter {\r\n  close(): void;\r\n  destroy(_err?: Error): void;\r\n  readonly destroyed: boolean;\r\n}\r\n\r\ninterface QuicSessionConstructor {\r\n  new (): QuicSession;\r\n  (this: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const QuicSession = function QuicSession(this: any) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n} as unknown as QuicSessionConstructor;\r\n\r\nObject.setPrototypeOf(QuicSession.prototype, EventEmitter.prototype);\r\n\r\nQuicSession.prototype.close = function close(this: any): void {\r\n  this.emit(\"close\");\r\n};\r\n\r\nQuicSession.prototype.destroy = function destroy(this: any, _err?: Error): void {\r\n  this.emit(\"close\");\r\n};\r\n\r\nObject.defineProperty(QuicSession.prototype, \"destroyed\", {\r\n  get: function(this: any): boolean {\r\n    return false;\r\n  },\r\n  configurable: true,\r\n});\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  QuicStream                                                         */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface QuicStream extends EventEmitter {\r\n  readonly id: number;\r\n}\r\n\r\ninterface QuicStreamConstructor {\r\n  new (): QuicStream;\r\n  (this: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const QuicStream = function QuicStream(this: any) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n} as unknown as QuicStreamConstructor;\r\n\r\nObject.setPrototypeOf(QuicStream.prototype, EventEmitter.prototype);\r\n\r\nObject.defineProperty(QuicStream.prototype, \"id\", {\r\n  get: function(this: any): number {\r\n    return 0;\r\n  },\r\n  configurable: true,\r\n});\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Default export                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport default {\r\n  QuicEndpoint,\r\n  QuicSession,\r\n  QuicStream,\r\n};\r\n","// last-resort CDN polyfill via esm.sh, used when both the native .node binary and the lightningcss-wasm npm package fail to load\r\n// primary path is the npm package with VFS-to-CDN fallback for the large .wasm (see fetch patch in ScriptEngine)\r\n\r\nimport { CDN_LIGHTNINGCSS_WASM, cdnImport } from \"../constants/cdn-urls\";\r\n\r\n// Bitfield constants -- must be available synchronously before WASM loads\r\nexport const Features = {\r\n  Nesting:                        1,\r\n  NotSelectorList:                2,\r\n  DirSelector:                    4,\r\n  LangSelectorList:               8,\r\n  IsSelector:                    16,\r\n  TextDecorationThicknessPercent: 32,\r\n  MediaIntervalSyntax:           64,\r\n  MediaRangeSyntax:             128,\r\n  CustomMediaQueries:           256,\r\n  ClampFunction:                512,\r\n  ColorFunction:               1024,\r\n  OklabColors:                 2048,\r\n  LabColors:                   4096,\r\n  P3Colors:                    8192,\r\n  HexAlphaColors:             16384,\r\n  SpaceSeparatedColorNotation: 32768,\r\n  FontFamilySystemUi:         65536,\r\n  DoublePositionGradients:   131072,\r\n  VendorPrefixes:            262144,\r\n  LogicalProperties:         524288,\r\n  LightDark:                1048576,\r\n  // Composite flags\r\n  Selectors:                     31,\r\n  MediaQueries:                 448,\r\n  Colors:                   1113088,\r\n} as const;\r\n\r\nlet wasmMod: any = null;\r\nlet initPromise: Promise<void> | null = null;\r\n\r\nasync function ensureInit(): Promise<void> {\r\n  if (wasmMod) return;\r\n  if (initPromise) return initPromise;\r\n\r\n  initPromise = (async () => {\r\n    try {\r\n      const mod = await cdnImport(CDN_LIGHTNINGCSS_WASM);\r\n      if (typeof mod.default === \"function\") {\r\n        await mod.default();\r\n      } else if (typeof mod.init === \"function\") {\r\n        await mod.init();\r\n      }\r\n      wasmMod = mod;\r\n    } catch (err) {\r\n      initPromise = null;\r\n      throw new Error(`lightningcss: WASM initialization failed -- ${err}`);\r\n    }\r\n  })();\r\n\r\n  return initPromise;\r\n}\r\n\r\n// No eager init at bundle import: the ~16MB WASM only loads when something\r\n// actually uses lightningcss. The script engine's native-package fallback\r\n// syncAwaits init() before handing this polyfill to the requiring module,\r\n// so the sync APIs (transform, bundle, ...) are ready by then.\r\n\r\nfunction requireInit(): void {\r\n  if (!wasmMod) throw new Error(\"lightningcss: WASM not ready yet — call await init() first\");\r\n}\r\n\r\nexport function transform(opts: any): any {\r\n  requireInit();\r\n  return wasmMod.transform(opts);\r\n}\r\n\r\nexport function transformStyleAttribute(opts: any): any {\r\n  requireInit();\r\n  return wasmMod.transformStyleAttribute(opts);\r\n}\r\n\r\nexport function bundle(opts: any): any {\r\n  requireInit();\r\n  return wasmMod.bundle(opts);\r\n}\r\n\r\nexport async function bundleAsync(opts: any): Promise<any> {\r\n  await ensureInit();\r\n  return wasmMod.bundleAsync(opts);\r\n}\r\n\r\nexport function composeVisitors(visitors: any[]): any {\r\n  requireInit();\r\n  return wasmMod.composeVisitors(visitors);\r\n}\r\n\r\nexport function browserslistToTargets(browserslist: any): any {\r\n  if (wasmMod?.browserslistToTargets) return wasmMod.browserslistToTargets(browserslist);\r\n  return {};\r\n}\r\n\r\nexport { ensureInit as init };\r\n\r\nexport default {\r\n  transform,\r\n  transformStyleAttribute,\r\n  bundle,\r\n  bundleAsync,\r\n  composeVisitors,\r\n  Features,\r\n  browserslistToTargets,\r\n  init: ensureInit,\r\n};\r\n","/**\r\n * generic support for napi-rs WASM packages in nodepod\r\n *\r\n * every napi-rs v3 WASM package (targeting wasm32-wasip1-threads) ships a\r\n * wasi-worker.mjs that needs a real Web Worker so Atomics.wait() can block\r\n *\r\n * we:\r\n * 1. detect napi-rs WASI worker scripts\r\n * 2. bundle them + deps into self-contained blobs\r\n * 3. spawn real Web Workers wrapping the Node.js worker_threads API\r\n *\r\n * no hardcoding per package\r\n */\r\n\r\nimport type { MemoryVolume } from \"../memory-volume\";\r\nimport { EventEmitter } from \"../polyfills/events\";\r\nimport { getRegistry, type Handle } from \"./event-loop\";\r\n\r\n/**\r\n * true if scriptPath is a wasi-worker script in a node_modules package that\r\n * also has a .wasm file next to it (i.e. an napi-rs WASM package)\r\n *\r\n * napi-rs generates these names: wasi-worker.mjs and wasi-worker-browser.mjs\r\n */\r\nexport function isNapiWasiWorkerScript(\r\n  scriptPath: string,\r\n  vol: MemoryVolume,\r\n): boolean {\r\n  const base = scriptPath.split(\"/\").pop() ?? \"\";\r\n  if (base !== \"wasi-worker.mjs\" && base !== \"wasi-worker-browser.mjs\") {\r\n    return false;\r\n  }\r\n  // containing dir must have a .wasm file\r\n  const dir = scriptPath.substring(0, scriptPath.lastIndexOf(\"/\"));\r\n  try {\r\n    const entries = vol.readdirSync(dir);\r\n    return entries.some(\r\n      (e: string) => e.endsWith(\".wasm\") || e.endsWith(\".wasi.cjs\"),\r\n    );\r\n  } catch {\r\n    return false;\r\n  }\r\n}\r\n\r\n/**\r\n * builds a self-contained Web Worker script from a VFS entry point\r\n * recursively resolves imports/requires and inlines everything\r\n */\r\nexport function buildNapiWorkerBundle(\r\n  entryPath: string,\r\n  vol: MemoryVolume,\r\n  resolveModule: (id: string, fromDir: string) => string,\r\n  processEnv: Record<string, string>,\r\n): string {\r\n  const modules = new Map<string, string>(); // resolvedPath -> source\r\n  const moduleIds = new Map<string, number>(); // resolvedPath -> numeric id\r\n  let nextId = 0;\r\n  const visited = new Set<string>();\r\n\r\n  function collectDeps(filePath: string): void {\r\n    if (visited.has(filePath)) return;\r\n    visited.add(filePath);\r\n\r\n    let source: string;\r\n    try {\r\n      const raw = vol.readFileSync(filePath);\r\n      source =\r\n        typeof raw === \"string\" ? raw : new TextDecoder().decode(raw as any);\r\n    } catch {\r\n      return; // skip unreadable files\r\n    }\r\n\r\n    const id = nextId++;\r\n    moduleIds.set(filePath, id);\r\n    modules.set(filePath, source);\r\n\r\n    // simplified regex, good enough for napi-rs deps\r\n    const importRe =\r\n      /(?:import\\s+.*?\\s+from\\s+['\"]([^'\"]+)['\"]|require\\s*\\(\\s*['\"]([^'\"]+)['\"]\\s*\\)|export\\s+.*?\\s+from\\s+['\"]([^'\"]+)['\"])/g;\r\n    let match: RegExpExecArray | null;\r\n    const fromDir = filePath.substring(0, filePath.lastIndexOf(\"/\")) || \"/\";\r\n\r\n    while ((match = importRe.exec(source)) !== null) {\r\n      const dep = match[1] || match[2] || match[3];\r\n      if (!dep) continue;\r\n\r\n      // Node.js builtins get stubs instead\r\n      if (isBuiltin(dep)) continue;\r\n\r\n      try {\r\n        const resolved = resolveModule(dep, fromDir);\r\n        if (resolved && !isBuiltin(resolved)) {\r\n          // skip .min.js, deeply nested expressions overflow Chrome's parser\r\n          // when embedded in a blob worker. non-minified .cjs.js is identical\r\n          if (/\\.min\\.(js|cjs|mjs)$/.test(resolved)) continue;\r\n          collectDeps(resolved);\r\n        }\r\n      } catch {\r\n        // unresolvable, handle at runtime\r\n      }\r\n    }\r\n  }\r\n\r\n  collectDeps(entryPath);\r\n\r\n  const parts: string[] = [];\r\n\r\n  parts.push(WORKER_PREAMBLE(processEnv));\r\n\r\n  parts.push(`const __modules = {};`);\r\n  parts.push(`const __moduleCache = {};`);\r\n\r\n  // IMPORTANT: module source is stored as a STRING, not as a function body\r\n  // V8's parser has a recursion limit that blows up when dozens of large\r\n  // module sources are embedded as function bodies in one script. storing\r\n  // as strings means V8 only parses top-level string assignments at load\r\n  // time, and each module gets lazily compiled via `new Function()` on first\r\n  // require\r\n  for (const [filePath, source] of modules) {\r\n    const id = moduleIds.get(filePath)!;\r\n    const dir = filePath.substring(0, filePath.lastIndexOf(\"/\")) || \"/\";\r\n\r\n    // only convert ESM -> CJS for actual ESM files (.mjs or containing import/export)\r\n    // don't touch CJS files, the regex would mangle minified code\r\n    const isESM = filePath.endsWith(\".mjs\") ||\r\n      (/\\b(import\\s+[\\w{*]|export\\s+(default|const|let|var|function|class|\\{|\\*))\\b/.test(source) &&\r\n       !source.includes(\"module.exports\") && !source.includes(\"exports.__esModule\"));\r\n    let transformed = isESM ? esmToCjs(source) : source;\r\n\r\n    // escape for embedding as a template literal: backtick, backslash, ${\r\n    const escaped = transformed\r\n      .replace(/\\\\/g, \"\\\\\\\\\")\r\n      .replace(/`/g, \"\\\\`\")\r\n      .replace(/\\$\\{/g, \"\\\\${\");\r\n\r\n    parts.push(\r\n      `__modules[${id}] = { dir: ${JSON.stringify(dir)}, path: ${JSON.stringify(filePath)}, src: \\`${escaped}\\` };`,\r\n    );\r\n  }\r\n\r\n  parts.push(`const __pathToId = ${JSON.stringify(Object.fromEntries([...moduleIds.entries()]))};`);\r\n\r\n  parts.push(REQUIRE_IMPL);\r\n\r\n  const entryId = moduleIds.get(entryPath);\r\n  if (entryId !== undefined) {\r\n    parts.push(`\r\ntry {\r\n  __require(${entryId});\r\n} catch(e) {\r\n  console.error('[worker] Entry point failed:', e?.message || e);\r\n  if (e?.stack) console.error(e.stack);\r\n}\r\n`);\r\n  }\r\n\r\n  return parts.join(\"\\n\");\r\n}\r\n\r\nlet _nextWasiThreadId = 100;\r\n\r\n// chrome silently drops `new Worker()` if the parent web worker is about to\r\n// enter Atomics.wait (tailwind oxide does this back to back in\r\n// instantiateNapiModuleSync). pre-spawn empty workers while the spawned\r\n// process boots so theyre already running before anyone blocks, then inject\r\n// the actual bundle via importScripts when napi-rs needs one.\r\nconst _wasiPool: globalThis.Worker[] = [];\r\nconst _WASI_POOL_TARGET = 8;\r\nlet _poolPreambleUrl: string | null = null;\r\n\r\nfunction getPoolPreambleUrl(): string {\r\n  if (_poolPreambleUrl) return _poolPreambleUrl;\r\n  const src = `\r\n    self.onmessage = function(e) {\r\n      var d = e && e.data;\r\n      if (d && d.__nodepod_init_bundle__) {\r\n        var url = d.bundleUrl;\r\n        // stash transferred fs port for the bundle preamble to pick up\r\n        if (d.fsPort) {\r\n          globalThis.__nodepodWasiFsPort = d.fsPort;\r\n          try { d.fsPort.start(); } catch (_) {}\r\n        }\r\n        try {\r\n          self.onmessage = null;\r\n          importScripts(url);\r\n        } catch (err) {\r\n          try { self.postMessage({ __nodepod_pool_err__: String(err && err.message || err) }); } catch (_) {}\r\n        }\r\n      }\r\n    };\r\n  `;\r\n  const blob = new Blob([src], { type: \"application/javascript\" });\r\n  _poolPreambleUrl = URL.createObjectURL(blob);\r\n  return _poolPreambleUrl;\r\n}\r\n\r\nfunction refillPool(): void {\r\n  while (_wasiPool.length < _WASI_POOL_TARGET) {\r\n    try {\r\n      _wasiPool.push(new globalThis.Worker(getPoolPreambleUrl(), { name: \"wasi-pool\" }));\r\n    } catch {\r\n      break;\r\n    }\r\n  }\r\n}\r\n\r\nfunction pullFromPool(): globalThis.Worker | null {\r\n  if (_wasiPool.length < _WASI_POOL_TARGET / 2) {\r\n    queueMicrotask(refillPool);\r\n  }\r\n  return _wasiPool.shift() ?? null;\r\n}\r\n\r\n// call early in spawned-process boot, before anything blocks\r\nexport function prewarmWasiPool(): void {\r\n  refillPool();\r\n}\r\n\r\n// MessagePort pool from the tab. each port is a 1:1 fs proxy channel for one\r\n// WASI worker. sidesteps chrome dropping BroadcastChannel messages from blob\r\n// workers, and works when the parent is in sync wasm (oxide.scan).\r\nconst _wasiFsPortPool: MessagePort[] = [];\r\nexport function setWasiFsPortPool(ports: MessagePort[]): void {\r\n  _wasiFsPortPool.length = 0;\r\n  for (const p of ports) _wasiFsPortPool.push(p);\r\n}\r\nfunction pullFsPort(): MessagePort | null {\r\n  return _wasiFsPortPool.shift() ?? null;\r\n}\r\n\r\n/**\r\n * makes a PatchedWorker constructor that spawns real browser Web Workers for\r\n * napi-rs WASI scripts, falling back to the standard fork-based worker otherwise\r\n */\r\nexport function createNapiWorkerFactory(\r\n  vol: MemoryVolume,\r\n  resolveModule: (id: string, fromDir: string) => string,\r\n  processEnv: Record<string, string>,\r\n  fsBridge: any, // for handling __fs__ proxy messages\r\n  fallbackWorkerFn: ((...args: any[]) => any) | null,\r\n  sabEnabled: boolean,\r\n) {\r\n  // bundled scripts don't change at runtime, so cache per entry path\r\n  const bundleCache = new Map<string, string>();\r\n\r\n  return function PatchedWorkerConstructor(\r\n    this: any,\r\n    script: string | URL,\r\n    opts?: any,\r\n  ) {\r\n    const scriptStr = typeof script === \"string\" ? script : script.href;\r\n    const isWasi = isNapiWasiWorkerScript(scriptStr, vol);\r\n\r\n    if (isWasi) {\r\n      // threaded wasi needs SAB for Atomics.wait, would deadlock without it\r\n      if (!sabEnabled) {\r\n        queueMicrotask(() => {\r\n          this.emit?.(\r\n            \"error\",\r\n            new Error(\r\n              `[Nodepod] ${scriptStr} needs SharedArrayBuffer (threaded wasi module). ` +\r\n                \"enable COOP/COEP headers, or drop `enableSharedArrayBuffer: false` from NodepodOptions.\",\r\n            ),\r\n          );\r\n        });\r\n        return;\r\n      }\r\n      return createRealWebWorker.call(\r\n        this,\r\n        scriptStr,\r\n        opts,\r\n        vol,\r\n        resolveModule,\r\n        processEnv,\r\n        fsBridge,\r\n        bundleCache,\r\n      );\r\n    }\r\n\r\n    // non-WASI: fall back to standard fork-based worker\r\n    if (!fallbackWorkerFn) {\r\n      queueMicrotask(() => {\r\n        this.emit?.(\r\n          \"error\",\r\n          new Error(\r\n            \"[Nodepod] worker_threads.Worker requires worker mode for non-WASI scripts.\",\r\n          ),\r\n        );\r\n      });\r\n      return;\r\n    }\r\n\r\n    const workerDataVal = opts?.workerData ?? null;\r\n    const isEval = !!opts?.eval;\r\n    const env =\r\n      opts?.env && typeof opts.env !== \"symbol\"\r\n        ? (opts.env as Record<string, string>)\r\n        : {};\r\n    const self = this;\r\n\r\n    const handle = fallbackWorkerFn(scriptStr, {\r\n      workerData: workerDataVal,\r\n      threadId: this.threadId,\r\n      isEval,\r\n      cwd: (globalThis as any).process?.cwd?.() ?? \"/\",\r\n      env,\r\n      onMessage: (data: unknown) => self.emit(\"message\", data),\r\n      onError: (err: Error) => self.emit(\"error\", err),\r\n      onExit: (code: number) => {\r\n        (self._elHandle as Handle | null)?.close();\r\n        self._elHandle = null;\r\n        self._terminated = true;\r\n        self.emit(\"exit\", code);\r\n      },\r\n    });\r\n\r\n    this._handle = handle;\r\n    this._elHandle = getRegistry().register(\"Worker\");\r\n    queueMicrotask(() => {\r\n      if (!self._terminated) self.emit(\"online\");\r\n    });\r\n  };\r\n}\r\n\r\n/**\r\n * spawns a real browser Web Worker for an napi-rs WASI script\r\n * the worker gets a bundled copy of the script + all its npm deps,\r\n * plus polyfills for Node.js builtins (worker_threads, path, fs, etc)\r\n */\r\nfunction createRealWebWorker(\r\n  this: any,\r\n  scriptPath: string,\r\n  opts: any,\r\n  vol: MemoryVolume,\r\n  resolveModule: (id: string, fromDir: string) => string,\r\n  processEnv: Record<string, string>,\r\n  fsBridge: any,\r\n  bundleCache: Map<string, string>,\r\n) {\r\n  const self = this;\r\n  self.threadId = _nextWasiThreadId++;\r\n  self.resourceLimits = {};\r\n  self._handle = null;\r\n  self._terminated = false;\r\n  self._elHandle = null;\r\n\r\n  let bundleSource = bundleCache.get(scriptPath);\r\n  if (!bundleSource) {\r\n    try {\r\n      bundleSource = buildNapiWorkerBundle(\r\n        scriptPath,\r\n        vol,\r\n        resolveModule,\r\n        processEnv,\r\n      );\r\n      bundleCache.set(scriptPath, bundleSource);\r\n    } catch (err: any) {\r\n      queueMicrotask(() =>\r\n        self.emit(\r\n          \"error\",\r\n          new Error(`Failed to bundle WASI worker: ${err.message}`),\r\n        ),\r\n      );\r\n      return;\r\n    }\r\n  }\r\n\r\n  let realWorker: globalThis.Worker;\r\n  let blobUrl: string;\r\n  try {\r\n    const blob = new Blob([bundleSource], { type: \"application/javascript\" });\r\n    blobUrl = URL.createObjectURL(blob);\r\n  } catch (err: any) {\r\n    queueMicrotask(() =>\r\n      self.emit(\"error\", new Error(`Failed to build WASI bundle: ${err.message}`)),\r\n    );\r\n    return;\r\n  }\r\n\r\n  const pooled = pullFromPool();\r\n  if (pooled) {\r\n    realWorker = pooled;\r\n    const fsPort = pullFsPort();\r\n    try {\r\n      const initMsg: any = { __nodepod_init_bundle__: true, bundleUrl: blobUrl };\r\n      if (fsPort) {\r\n        initMsg.fsPort = fsPort;\r\n        realWorker.postMessage(initMsg, [fsPort]);\r\n      } else {\r\n        realWorker.postMessage(initMsg);\r\n      }\r\n    } catch { /* ignore */ }\r\n    setTimeout(() => URL.revokeObjectURL(blobUrl), 5000);\r\n  } else {\r\n    // pool empty, direct spawn. hits the chrome quirk if parent is about to\r\n    // block but at least non-blocking cases still work.\r\n    try {\r\n      realWorker = new globalThis.Worker(blobUrl, { name: `napi-wasi-${self.threadId}` });\r\n      setTimeout(() => URL.revokeObjectURL(blobUrl), 5000);\r\n    } catch (err: any) {\r\n      queueMicrotask(() =>\r\n        self.emit(\r\n          \"error\",\r\n          new Error(`Failed to create WASI Web Worker: ${err.message}`),\r\n        ),\r\n      );\r\n      return;\r\n    }\r\n  }\r\n\r\n  realWorker.onmessage = (e: MessageEvent) => {\r\n    const data = e.data;\r\n    if (data && typeof data === \"object\" && data.__fs__) {\r\n      handleFsProxy(data.__fs__, fsBridge);\r\n      return;\r\n    }\r\n    self.emit(\"message\", data);\r\n  };\r\n\r\n  realWorker.onerror = (e: ErrorEvent) => {\r\n    self.emit(\"error\", new Error(e.message || \"Worker error\"));\r\n    // web workers dont emit exit, fake one so the loop ref isnt leaked\r\n    if (!self._terminated) {\r\n      (self._elHandle as Handle | null)?.close();\r\n      self._elHandle = null;\r\n      self._terminated = true;\r\n      try { self.emit(\"exit\", 1); } catch { /* ignore */ }\r\n    }\r\n  };\r\n\r\n  self._realWorker = realWorker;\r\n  self.postMessage = (value: unknown, transferList?: unknown[]) => {\r\n    if (!self._terminated) {\r\n      realWorker.postMessage(value, transferList as Transferable[]);\r\n    }\r\n  };\r\n  self.terminate = () => {\r\n    if (!self._terminated) {\r\n      (self._elHandle as Handle | null)?.close();\r\n      self._elHandle = null;\r\n      self._terminated = true;\r\n      realWorker.terminate();\r\n    }\r\n    return Promise.resolve(0);\r\n  };\r\n  self.ref = () => {\r\n    if (!self._terminated) (self._elHandle as Handle | null)?.ref();\r\n    return self;\r\n  };\r\n  // napi-rs's wasi.cjs calls worker.unref() to mirror node behavior where the\r\n  // http server keeps the loop alive. in nodepod the spawned process loop\r\n  // would drain before vite even binds, so we ignore unref. terminate/onExit\r\n  // still close the handle so the loop drains once the worker is done.\r\n  self.unref = () => self;\r\n\r\n  // start reffed like Node.js does\r\n  self._elHandle = getRegistry().register(\"Worker\");\r\n\r\n  queueMicrotask(() => {\r\n    if (!self._terminated) self.emit(\"online\");\r\n  });\r\n}\r\n\r\n// handles __fs__ messages from WASI workers. exported so Nodepod.boot can\r\n// subscribe to the broadcast channel and service the same protocol from the\r\n// browser tab when the spawned process is busy in sync WASM\r\nexport function handleFsProxy(\r\n  req: { sab: Int32Array; type: string; payload: any[] },\r\n  fsBridge: any,\r\n): void {\r\n  const { sab, type, payload } = req;\r\n  const maxPayload = sab.buffer.byteLength - 16; // minus 16-byte header\r\n\r\n  try {\r\n    const fn = fsBridge[type];\r\n    if (typeof fn !== \"function\") {\r\n      throw new Error(`fs.${type} is not a function`);\r\n    }\r\n\r\n    let result = fn.apply(fsBridge, payload);\r\n\r\n    // flatten stat objects so they survive structured clone\r\n    if ((type === \"statSync\" || type === \"lstatSync\") && result && typeof result.isFile === \"function\") {\r\n      result = {\r\n        size: result.size,\r\n        mode: result.mode,\r\n        nlink: result.nlink,\r\n        uid: result.uid,\r\n        gid: result.gid,\r\n        dev: result.dev,\r\n        ino: result.ino,\r\n        rdev: result.rdev || 0,\r\n        blksize: result.blksize || 4096,\r\n        blocks: result.blocks || 0,\r\n        mtimeMs: result.mtimeMs,\r\n        atimeMs: result.atimeMs,\r\n        ctimeMs: result.ctimeMs,\r\n        birthtimeMs: result.birthtimeMs,\r\n        _isFile: result.isFile(),\r\n        _isDir: result.isDirectory(),\r\n        _isSymlink: typeof result.isSymbolicLink === \"function\" ? result.isSymbolicLink() : false,\r\n      };\r\n    }\r\n\r\n    // flatten Dirent[] from readdirSync({withFileTypes:true}). structured\r\n    // clone strips the prototype methods so the worker would otherwise get\r\n    // [{name}, ...] with no type info, and rust readdir handlers panic.\r\n    if (type === \"readdirSync\" && Array.isArray(result) && result.length > 0 && typeof result[0] === \"object\" && result[0] !== null && typeof (result[0] as any).isFile === \"function\") {\r\n      result = (result as any[]).map((d) => ({\r\n        name: d.name,\r\n        parentPath: d.parentPath || d.path,\r\n        _isFile: typeof d.isFile === \"function\" ? d.isFile() : false,\r\n        _isDir: typeof d.isDirectory === \"function\" ? d.isDirectory() : false,\r\n        _isSymlink: typeof d.isSymbolicLink === \"function\" ? d.isSymbolicLink() : false,\r\n      }));\r\n    }\r\n\r\n    // encode into the SAB\r\n    const encoded = encodeValue(result);\r\n    const resultType = getValueType(result);\r\n\r\n    Atomics.store(sab, 1, resultType);\r\n    Atomics.store(sab, 2, encoded.byteLength);\r\n    // payload goes after the 16-byte header\r\n    const writeLen = Math.min(encoded.byteLength, maxPayload);\r\n    const payloadView = new Uint8Array(sab.buffer, 16, writeLen);\r\n    payloadView.set(encoded.subarray(0, writeLen));\r\n\r\n    Atomics.store(sab, 0, 0); // success\r\n  } catch (err: any) {\r\n    const errMsg = err?.message || String(err);\r\n    const errCode = err?.code || \"\";\r\n    const errObj = JSON.stringify({ message: errMsg, code: errCode });\r\n    const encoded = new TextEncoder().encode(errObj);\r\n\r\n    Atomics.store(sab, 1, 6); // type = json/object\r\n    Atomics.store(sab, 2, encoded.byteLength);\r\n    const writeLen = Math.min(encoded.byteLength, maxPayload);\r\n    const payloadView = new Uint8Array(sab.buffer, 16, writeLen);\r\n    payloadView.set(encoded.subarray(0, writeLen));\r\n\r\n    Atomics.store(sab, 0, 1); // error\r\n  } finally {\r\n    Atomics.notify(sab, 0);\r\n  }\r\n}\r\n\r\nfunction getValueType(v: unknown): number {\r\n  if (v === undefined) return 0;\r\n  if (v === null) return 1;\r\n  if (typeof v === \"boolean\") return 2;\r\n  if (typeof v === \"number\") return 3;\r\n  if (typeof v === \"string\") return 4;\r\n  if (v instanceof Uint8Array || v instanceof ArrayBuffer) return 5; // buffer\r\n  if (typeof v === \"bigint\") return 9;\r\n  return 6; // json/object\r\n}\r\n\r\nfunction encodeValue(v: unknown): Uint8Array {\r\n  const enc = new TextEncoder();\r\n  if (v === undefined || v === null) return new Uint8Array(0);\r\n  if (typeof v === \"boolean\") return enc.encode(v ? \"1\" : \"0\");\r\n  if (typeof v === \"number\") return enc.encode(String(v));\r\n  if (typeof v === \"string\") return enc.encode(v);\r\n  if (typeof v === \"bigint\") return enc.encode(v.toString());\r\n  if (v instanceof Uint8Array) return v;\r\n  if (v instanceof ArrayBuffer) return new Uint8Array(v);\r\n  // object, fall back to JSON\r\n  try {\r\n    return enc.encode(JSON.stringify(v));\r\n  } catch {\r\n    return enc.encode(\"{}\");\r\n  }\r\n}\r\n\r\nconst NODE_BUILTINS = new Set([\r\n  \"assert\", \"async_hooks\", \"buffer\", \"child_process\", \"cluster\",\r\n  \"console\", \"constants\", \"crypto\", \"dgram\", \"dns\", \"domain\",\r\n  \"events\", \"fs\", \"http\", \"http2\", \"https\", \"inspector\", \"module\",\r\n  \"net\", \"os\", \"path\", \"perf_hooks\", \"process\", \"punycode\",\r\n  \"querystring\", \"readline\", \"repl\", \"stream\", \"string_decoder\",\r\n  \"test\", \"timers\", \"tls\", \"trace_events\", \"tty\", \"url\", \"util\",\r\n  \"v8\", \"vm\", \"wasi\", \"worker_threads\", \"zlib\",\r\n]);\r\n\r\nfunction isBuiltin(id: string): boolean {\r\n  const bare = id.replace(/^node:/, \"\");\r\n  return NODE_BUILTINS.has(bare);\r\n}\r\n\r\n/**\r\n * minimal ESM -> CJS for worker bundling\r\n * covers the patterns used by @emnapi/*, @napi-rs/*, @tybys/* packages\r\n */\r\nfunction esmToCjs(source: string): string {\r\n  let out = source;\r\n\r\n  // import X from 'Y' -> const X = require('Y')\r\n  out = out.replace(\r\n    /import\\s+(\\w+)\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?/g,\r\n    \"const $1 = require('$2');\",\r\n  );\r\n\r\n  // import { A, B } from 'Y' -> const { A, B } = require('Y')\r\n  out = out.replace(\r\n    /import\\s+\\{([^}]+)\\}\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?/g,\r\n    \"const {$1} = require('$2');\",\r\n  );\r\n\r\n  // import * as X from 'Y' -> const X = require('Y')\r\n  out = out.replace(\r\n    /import\\s+\\*\\s+as\\s+(\\w+)\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?/g,\r\n    \"const $1 = require('$2');\",\r\n  );\r\n\r\n  // import 'Y' -> require('Y')\r\n  out = out.replace(\r\n    /import\\s+['\"]([^'\"]+)['\"]\\s*;?/g,\r\n    \"require('$1');\",\r\n  );\r\n\r\n  // strip `const require = createRequire(...)` - the wrapper already supplies\r\n  // require as a parameter. napi-rs wasi-worker scripts have this line and it\r\n  // throws \"Identifier 'require' has already been declared\"\r\n  out = out.replace(\r\n    /(?:const|let|var)\\s+require\\s*=\\s*createRequire\\s*\\([^)]*\\)\\s*;?/g,\r\n    \"/* require provided by wrapper */\",\r\n  );\r\n\r\n  // in real Web Workers, `self` is a read-only getter on WorkerGlobalScope\r\n  // napi-rs does Object.assign(globalThis, {self: globalThis, ...}) which\r\n  // throws. drop `self: globalThis` since self already === globalThis\r\n  out = out.replace(/self:\\s*globalThis\\s*,?/g, \"/* self already set in Worker */ \");\r\n\r\n  // export default X -> module.exports.default = X\r\n  out = out.replace(\r\n    /export\\s+default\\s+/g,\r\n    \"module.exports.default = \",\r\n  );\r\n\r\n  // export { A, B } -> module.exports.A = A; module.exports.B = B\r\n  out = out.replace(\r\n    /export\\s+\\{([^}]+)\\}\\s*;?/g,\r\n    (_, names) => {\r\n      return names\r\n        .split(\",\")\r\n        .map((n: string) => {\r\n          const trimmed = n.trim();\r\n          const asMatch = trimmed.match(/(\\w+)\\s+as\\s+(\\w+)/);\r\n          if (asMatch) return `module.exports.${asMatch[2]} = ${asMatch[1]};`;\r\n          return `module.exports.${trimmed} = ${trimmed};`;\r\n        })\r\n        .join(\"\\n\");\r\n    },\r\n  );\r\n\r\n  // export const/let/var/function/class X\r\n  out = out.replace(\r\n    /export\\s+(const|let|var|function|class)\\s+(\\w+)/g,\r\n    \"$1 $2; module.exports.$2 = $2; $1 $2\",\r\n  );\r\n  // clean up double declarations from the rule above\r\n  out = out.replace(\r\n    /(const|let|var)\\s+(\\w+);\\s*module\\.exports\\.\\2\\s*=\\s*\\2;\\s*\\1\\s+\\2/g,\r\n    \"$1 $2\",\r\n  );\r\n\r\n  // export * from 'Y' -> Object.assign(module.exports, require('Y'))\r\n  out = out.replace(\r\n    /export\\s+\\*\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?/g,\r\n    \"Object.assign(module.exports, require('$1'));\",\r\n  );\r\n\r\n  // export { A } from 'Y'\r\n  out = out.replace(\r\n    /export\\s+\\{([^}]+)\\}\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?/g,\r\n    (_, names, mod) => {\r\n      return names\r\n        .split(\",\")\r\n        .map((n: string) => {\r\n          const trimmed = n.trim();\r\n          const asMatch = trimmed.match(/(\\w+)\\s+as\\s+(\\w+)/);\r\n          if (asMatch) return `module.exports.${asMatch[2]} = require('${mod}').${asMatch[1]};`;\r\n          return `module.exports.${trimmed} = require('${mod}').${trimmed};`;\r\n        })\r\n        .join(\"\\n\");\r\n    },\r\n  );\r\n\r\n  return out;\r\n}\r\n\r\n// worker preamble: minimal Node.js stubs for running inside a Web Worker\r\nfunction WORKER_PREAMBLE(env: Record<string, string>): string {\r\n  // pool size = 0 disables emnapi's UV thread pool in child workers\r\n  // without this, emnapi tries to create Workers for its async work pool,\r\n  // but child workers have no onCreateWorker callback\r\n  // rayon/tokio thread spawning goes via emnapi's child-thread delegation:\r\n  // child posts 'spawn-thread' to main, main creates Worker, writes TID to SAB\r\n  const workerEnv = {\r\n    ...env,\r\n    UV_THREADPOOL_SIZE: \"0\",\r\n    EMNAPI_WORKER_POOL_SIZE: \"0\",\r\n    // don't set RAYON_NUM_THREADS here - WASM reads environ from shared\r\n    // memory (set by the main thread's _initialize), not this process.env\r\n  };\r\n  return `\r\n// === nodepod napi-rs WASI worker preamble ===\r\n\"use strict\";\r\n\r\n// Save reference to native postMessage BEFORE any override.\r\n// In a Web Worker, self === globalThis, so overriding globalThis.postMessage\r\n// would shadow self.postMessage causing infinite recursion.\r\nconst __nativePostMessage = self.postMessage.bind(self);\r\n\r\n// Bridge parentPort ↔ Web Worker message API\r\nconst __parentPortListeners = [];\r\nconst __parentPort = {\r\n  on(event, fn) {\r\n    if (event === 'message') __parentPortListeners.push(fn);\r\n    return __parentPort;\r\n  },\r\n  once(event, fn) {\r\n    if (event === 'message') {\r\n      const wrapped = (data) => { fn(data); const idx = __parentPortListeners.indexOf(wrapped); if (idx >= 0) __parentPortListeners.splice(idx, 1); };\r\n      __parentPortListeners.push(wrapped);\r\n    }\r\n    return __parentPort;\r\n  },\r\n  off(event, fn) {\r\n    if (event === 'message') {\r\n      const idx = __parentPortListeners.indexOf(fn);\r\n      if (idx >= 0) __parentPortListeners.splice(idx, 1);\r\n    }\r\n    return __parentPort;\r\n  },\r\n  removeListener(event, fn) { return __parentPort.off(event, fn); },\r\n  addListener(event, fn) { return __parentPort.on(event, fn); },\r\n  emit(event, ...args) {\r\n    if (event === 'message') __parentPortListeners.forEach(fn => fn(...args));\r\n    return true;\r\n  },\r\n  postMessage(data, transfer) { __nativePostMessage(data, transfer || []); },\r\n  ref() {},\r\n  unref() {},\r\n  removeAllListeners() { __parentPortListeners.length = 0; return __parentPort; },\r\n};\r\n\r\n// Process stub\r\nconst process = {\r\n  env: ${JSON.stringify(workerEnv)},\r\n  cwd() { return \"/\"; },\r\n  platform: \"wasi\",\r\n  arch: \"wasm32\",\r\n  version: \"v20.0.0\",\r\n  versions: { node: \"20.0.0\" },\r\n  exit(code) { throw new Error(\"process.exit(\" + code + \")\"); },\r\n  nextTick(fn, ...args) { queueMicrotask(() => fn(...args)); },\r\n  stdout: { write(s) { console.log(s); }, isTTY: false },\r\n  stderr: { write(s) { console.error(s); }, isTTY: false },\r\n  pid: 1,\r\n  ppid: 0,\r\n  argv: [],\r\n  execArgv: [],\r\n};\r\nglobalThis.process = process;\r\n\r\n// Web Worker globals that napi-rs wasi-worker expects.\r\n// self is already globalThis in a Web Worker (read-only getter, cannot set).\r\n\r\n// WASM THREADING: emnapi's child-thread delegation model\r\n//\r\n// In child-thread mode (childThread: true), emnapi's WASIThreads does NOT\r\n// create Workers directly. When WASM code calls wasi_thread_spawn, emnapi:\r\n//   1. Posts a 'spawn-thread' message to the main thread via postMessage\r\n//   2. Blocks with Atomics.wait() on the errorOrTid struct in shared memory\r\n//   3. Main thread receives the message, creates a new Worker, writes TID\r\n//   4. Atomics.notify() wakes the child, which returns the TID to WASM\r\n//\r\n// This means child workers don't need the Worker constructor. We keep it\r\n// disabled as a safety net (preventing accidental direct Worker creation).\r\n// But we do NOT neuter wasi.thread-spawn — that would break the delegation.\r\nconst __DisabledWorker = class Worker {\r\n  constructor() { throw new Error('Direct Worker creation not available in nodepod child worker (use emnapi child-thread delegation)'); }\r\n};\r\ntry { Object.defineProperty(globalThis, 'Worker', { value: __DisabledWorker, writable: true, configurable: true }); } catch {}\r\ntry { globalThis.Worker = __DisabledWorker; } catch {}\r\n\r\n// DO NOT intercept WebAssembly.Instance or WebAssembly.instantiate.\r\n// emnapi's WASIThreads provides the wasi.thread-spawn import function.\r\n// In child-thread mode, it delegates to the main thread via postMessage.\r\n// Neutering it would make rayon/tokio thread creation fail with EAGAIN,\r\n// causing \"The global thread pool has not been initialized\" panics.\r\n\r\ntry { if (!globalThis.importScripts) globalThis.importScripts = function(f) {}; } catch {};\r\n\r\n// Message dispatch: route Web Worker messages to EXACTLY ONE handler path.\r\n//\r\n// CRITICAL: emnapi's ThreadMessageHandler._start(payload) has NO idempotence\r\n// guard — it calls wasi_thread_start(tid, arg) every time it's invoked. If a\r\n// 'start' message is dispatched twice, wasi_thread_start runs twice with the\r\n// same (tid, arg), which corrupts per-thread TLS / reuses the stack and\r\n// traps at \"unreachable\" or \"memory access out of bounds\".\r\n//\r\n// napi-rs ships TWO worker variants, each using a different delivery model:\r\n//\r\n//   1. wasi-worker.mjs (Node variant): registers parentPort.on('message',\r\n//      data => globalThis.onmessage({data})). This is a TRAMPOLINE — the\r\n//      parentPort listener re-dispatches to globalThis.onmessage.\r\n//\r\n//   2. wasi-worker-browser.mjs (browser variant): NO parentPort listener,\r\n//      only sets globalThis.onmessage = handler.handle directly.\r\n//\r\n// Native Web Worker dispatch uses the event handler internal slot (set when\r\n// the original prototype setter fired at line \"self.onmessage = ...\", before\r\n// we defined our accessor below). That internal slot points to THIS function.\r\n// Our accessor shadows JS reads/writes but does NOT update the internal slot.\r\n//\r\n// So: this function is the ONLY callback native dispatch invokes. We must\r\n// pick ONE path — parentPort trampoline OR direct globalThis.onmessage — but\r\n// never both.\r\nself.onmessage = function(e) {\r\n  if (__parentPortListeners.length > 0) {\r\n    // Node variant: parentPort trampoline will call globalThis.onmessage\r\n    for (const fn of __parentPortListeners) {\r\n      try { fn(e.data); } catch (err) { console.error('[wasi-worker] parentPort listener error:', err); }\r\n    }\r\n  } else if (typeof globalThis.__userOnMessage === 'function') {\r\n    // Browser variant: no trampoline, invoke globalThis.onmessage directly\r\n    globalThis.__userOnMessage(e);\r\n  }\r\n};\r\n\r\n// Override globalThis.onmessage setter to capture user handler.\r\n// User code (wasi-worker.mjs/wasi-worker-browser.mjs) does:\r\n//   globalThis.onmessage = function(e) { handler.handle(e); };\r\n// We store the handler here. The native Web Worker dispatcher can't reach it\r\n// (its internal slot points to the function assigned at line \"self.onmessage\r\n// = function(e)\" above, which was stored via the prototype setter BEFORE this\r\n// defineProperty shadowed the property). So the stored handler is invoked\r\n// only by our dispatch above — exactly once per message.\r\nlet __userOnMessageFn = null;\r\nObject.defineProperty(globalThis, 'onmessage', {\r\n  get() { return __userOnMessageFn; },\r\n  set(fn) {\r\n    __userOnMessageFn = fn;\r\n    globalThis.__userOnMessage = fn;\r\n  },\r\n  configurable: true,\r\n});\r\n\r\nglobalThis.postMessage = function(data, transfer) {\r\n  __nativePostMessage(data, transfer || []);\r\n};\r\n\r\n// Minimal require for node builtins used by wasi-worker scripts\r\nconst __builtinRequire = function(id) {\r\n  const bare = id.replace(/^node:/, '');\r\n  if (bare === 'worker_threads') {\r\n    return {\r\n      parentPort: __parentPort,\r\n      isMainThread: false,\r\n      workerData: null,\r\n      threadId: ${_nextWasiThreadId},\r\n      Worker: __DisabledWorker,\r\n      MessageChannel: globalThis.MessageChannel || class MessageChannel {\r\n        constructor() { this.port1 = {}; this.port2 = {}; }\r\n      },\r\n      MessagePort: class MessagePort {},\r\n    };\r\n  }\r\n  if (bare === 'path') return __pathStub;\r\n  if (bare === 'fs') return __fsStub;\r\n  if (bare === 'fs/promises') return __fsStub.promises;\r\n  if (bare === 'os') return __osStub;\r\n  if (bare === 'url') return __urlStub;\r\n  if (bare === 'util') return __utilStub;\r\n  if (bare === 'events') return __eventsStub;\r\n  if (bare === 'wasi') return __wasiStub;\r\n  if (bare === 'buffer') return { Buffer: __BufferStub };\r\n  if (bare === 'string_decoder') return { StringDecoder: class StringDecoder { write(buf) { return new TextDecoder().decode(buf); } end() { return ''; } } };\r\n  if (bare === 'assert') return Object.assign(function assert(v, msg) { if (!v) throw new Error(msg || 'assertion failed'); }, { ok(v,m){if(!v) throw new Error(m);}, strictEqual(a,b,m){if(a!==b) throw new Error(m);}, deepStrictEqual(){} });\r\n  if (bare === 'module') return { createRequire() { return __builtinRequire; } };\r\n  if (bare === 'crypto') return {\r\n    randomBytes(n) { const b = new Uint8Array(n); crypto.getRandomValues(b); return b; },\r\n    createHash() { return { update() { return this; }, digest() { return ''; } }; },\r\n    getRandomValues: crypto.getRandomValues.bind(crypto),\r\n    subtle: crypto.subtle,\r\n  };\r\n  if (bare === 'stream') return __eventsStub; // minimal — EventEmitter base\r\n  if (bare === 'child_process' || bare === 'net' || bare === 'tls' ||\r\n      bare === 'http' || bare === 'https' || bare === 'http2' ||\r\n      bare === 'dgram' || bare === 'dns' || bare === 'cluster' ||\r\n      bare === 'inspector' || bare === 'repl' || bare === 'readline' ||\r\n      bare === 'tty' || bare === 'v8' || bare === 'vm' ||\r\n      bare === 'perf_hooks' || bare === 'async_hooks' || bare === 'trace_events') return {};\r\n  // Return undefined for unknown modules so resolution falls through\r\n  // to the bundled module search in __require / localRequire\r\n  return undefined;\r\n};\r\n\r\n// path stub\r\nconst __pathStub = {\r\n  join(...parts) { return parts.join('/').replace(/\\\\/\\\\/+/g, '/'); },\r\n  resolve(...parts) { return __pathStub.join(...parts); },\r\n  dirname(p) { return p.substring(0, p.lastIndexOf('/')) || '/'; },\r\n  basename(p, ext) { const b = p.split('/').pop() || ''; return ext && b.endsWith(ext) ? b.slice(0, -ext.length) : b; },\r\n  extname(p) { const d = p.lastIndexOf('.'); return d > p.lastIndexOf('/') ? p.slice(d) : ''; },\r\n  normalize(p) { return p.replace(/\\\\/\\\\/+/g, '/'); },\r\n  isAbsolute(p) { return p.startsWith('/'); },\r\n  relative(from, to) { return to; },\r\n  parse(p) {\r\n    const lastSlash = p.lastIndexOf('/');\r\n    const base = lastSlash >= 0 ? p.slice(lastSlash + 1) : p;\r\n    const dotIdx = base.lastIndexOf('.');\r\n    return {\r\n      root: p.startsWith('/') ? '/' : '',\r\n      dir: lastSlash >= 0 ? p.slice(0, lastSlash) : '',\r\n      base: base,\r\n      ext: dotIdx > 0 ? base.slice(dotIdx) : '',\r\n      name: dotIdx > 0 ? base.slice(0, dotIdx) : base,\r\n    };\r\n  },\r\n  format(obj) { return (obj.dir ? obj.dir + '/' : '') + (obj.base || obj.name + (obj.ext || '')); },\r\n  sep: '/',\r\n  delimiter: ':',\r\n  posix: null,\r\n};\r\n__pathStub.posix = __pathStub;\r\n\r\n// fs proxy — synchronous FS operations forwarded to main thread via SharedArrayBuffer + Atomics.\r\n// The main thread handles __fs__ messages using the real nodepod VFS (MemoryVolume).\r\n// Protocol: worker creates a SAB, posts {__fs__: {sab, type, payload}}, then Atomics.wait().\r\n// Main thread performs the op, writes result to SAB, Atomics.notify().\r\n// Header layout (Int32Array view, first 16 bytes):\r\n//   [0] = status: -1 = pending, 0 = success, 1 = error\r\n//   [1] = result type: 0=undefined, 1=null, 2=bool, 3=number, 4=string, 5=buffer, 6=json, 9=bigint\r\n//   [2] = payload byte length\r\n//   [3] = reserved\r\nconst __FS_DEFAULT_SAB = 16 + 65536; // 16 header + 64KB payload (enough for most ops)\r\n\r\n// fs proxy: try dedicated MessagePort first (transferred from tab via the pool\r\n// init message, direct 1:1 channel, works in chrome where BC from blob workers\r\n// is broken). fall through to BC (firefox path) and parent postMessage (works\r\n// when parent isnt in sync wasm). first one to flip the SAB status wins.\r\nconst __wasiFsPort = globalThis.__nodepodWasiFsPort || null;\r\nconst __wasiFsBC = (typeof BroadcastChannel !== 'undefined') ? new BroadcastChannel('nodepod-wasi-fs') : null;\r\nif (__wasiFsBC && typeof __wasiFsBC.unref === 'function') {\r\n  try { __wasiFsBC.unref(); } catch {}\r\n}\r\n\r\nfunction __fsSyncCall(type, args, sabSize) {\r\n  const size = sabSize || __FS_DEFAULT_SAB;\r\n  const sab = new SharedArrayBuffer(size);\r\n  const ctrl = new Int32Array(sab, 0, 4);\r\n  Atomics.store(ctrl, 0, -1); // pending\r\n\r\n  const message = { __fs__: { sab: ctrl, type: type, payload: args || [] } };\r\n\r\n  if (__wasiFsPort) {\r\n    try { __wasiFsPort.postMessage(message); } catch {}\r\n  }\r\n  if (__wasiFsBC) {\r\n    try { __wasiFsBC.postMessage(message); } catch {}\r\n  }\r\n  __nativePostMessage(message);\r\n\r\n  const result = Atomics.wait(ctrl, 0, -1, 30000); // 30s timeout\r\n  if (result === 'timed-out') {\r\n    throw Object.assign(new Error('fs.' + type + ' timed out (30s)'), { code: 'ETIMEDOUT' });\r\n  }\r\n\r\n  const status = Atomics.load(ctrl, 0);\r\n  const resultType = Atomics.load(ctrl, 1);\r\n  const payloadLen = Atomics.load(ctrl, 2);\r\n\r\n  // Read payload bytes. The view is over a SharedArrayBuffer; TextDecoder\r\n  // rejects shared views, so copy into a regular ArrayBuffer before decoding.\r\n  const maxPayload = size - 16;\r\n  const payloadView = payloadLen > 0 ? new Uint8Array(sab, 16, Math.min(payloadLen, maxPayload)) : null;\r\n  const payloadCopy = payloadView ? new Uint8Array(payloadView.length) : null;\r\n  if (payloadView && payloadCopy) payloadCopy.set(payloadView);\r\n  const decodePayload = () => payloadCopy ? new TextDecoder().decode(payloadCopy) : '';\r\n\r\n  if (status === 1) {\r\n    // Error\r\n    let errObj;\r\n    try { errObj = JSON.parse(decodePayload()); } catch { errObj = { message: 'fs.' + type + ' failed' }; }\r\n    const err = new Error(errObj.message || 'fs.' + type + ' failed');\r\n    if (errObj.code) err.code = errObj.code;\r\n    throw err;\r\n  }\r\n\r\n  // Decode result based on type\r\n  if (resultType === 0) return undefined;\r\n  if (resultType === 1) return null;\r\n  if (resultType === 2) return decodePayload() === '1';\r\n  if (resultType === 3) return Number(decodePayload());\r\n  if (resultType === 4) return decodePayload();\r\n  if (resultType === 5) return payloadCopy ? payloadCopy : new Uint8Array(0); // non-shared buffer copy\r\n  if (resultType === 9) return BigInt(decodePayload());\r\n  // json/object\r\n  try { return JSON.parse(decodePayload()); } catch { return {}; }\r\n}\r\n\r\n// Get an appropriately-sized SAB for readFileSync — stat the file first to\r\n// determine how large the response buffer needs to be.\r\nfunction __fsReadFileSabSize(p) {\r\n  try {\r\n    const stat = __fsSyncCall('statSync', [p]);\r\n    const fileSize = (stat && stat.size) || 0;\r\n    // Add margin for encoding overhead + header\r\n    return Math.max(__FS_DEFAULT_SAB, 16 + fileSize + 1024);\r\n  } catch {\r\n    return __FS_DEFAULT_SAB; // fallback\r\n  }\r\n}\r\n\r\n// Build stat-like object with methods\r\nfunction __makeStatObj(raw) {\r\n  if (!raw || typeof raw !== 'object') return raw;\r\n  const s = Object.assign({}, raw);\r\n  // Reconstruct Date objects from timestamps\r\n  if (s.mtimeMs) s.mtime = new Date(s.mtimeMs);\r\n  if (s.atimeMs) s.atime = new Date(s.atimeMs);\r\n  if (s.ctimeMs) s.ctime = new Date(s.ctimeMs);\r\n  if (s.birthtimeMs) s.birthtime = new Date(s.birthtimeMs);\r\n  // Add stat methods\r\n  s.isFile = function() { return !!s._isFile; };\r\n  s.isDirectory = function() { return !!s._isDir; };\r\n  s.isBlockDevice = function() { return false; };\r\n  s.isCharacterDevice = function() { return false; };\r\n  s.isSymbolicLink = function() { return !!s._isSymlink; };\r\n  s.isFIFO = function() { return false; };\r\n  s.isSocket = function() { return false; };\r\n  return s;\r\n}\r\n\r\nconst __fsStub = {\r\n  readFileSync(p, opts) {\r\n    const encoding = typeof opts === 'string' ? opts : opts?.encoding;\r\n    // Dynamically size the SAB based on the file size — needed for large\r\n    // files like .wasm binaries that can be 15+ MB.\r\n    const sabSize = __fsReadFileSabSize(p);\r\n    const result = __fsSyncCall('readFileSync', [p, encoding || null], sabSize);\r\n    return result;\r\n  },\r\n  writeFileSync(p, data, opts) {\r\n    // Normalize binary data to a fresh (non-shared, non-WASM-memory-backed) Uint8Array\r\n    // so it survives structured clone intact. napi-rs WASM packages pass a mix of:\r\n    //   - ArrayBuffer  -> NOT iterable; Array.from returns [] (silent data loss)\r\n    //   - Uint8Array   -> iterable but may be backed by SAB or WASM memory that grows\r\n    //   - Buffer       -> Uint8Array subclass; treat like Uint8Array\r\n    //   - TypedArray   -> other views (Int32Array, etc.)\r\n    //   - Array        -> plain JS array (rare)\r\n    // Copy into a fresh ArrayBuffer-backed Uint8Array so the receiver gets proper\r\n    // binary data (and downstream TextDecoder.decode doesn't throw).\r\n    let payload = data;\r\n    if (data != null && typeof data !== 'string') {\r\n      if (data instanceof ArrayBuffer) {\r\n        payload = new Uint8Array(data.slice(0));\r\n      } else if (ArrayBuffer.isView(data)) {\r\n        const view = new Uint8Array(data.buffer, data.byteOffset || 0, data.byteLength);\r\n        const copy = new Uint8Array(view.byteLength);\r\n        copy.set(view);\r\n        payload = copy;\r\n      } else if (Array.isArray(data)) {\r\n        payload = Uint8Array.from(data);\r\n      } else if (typeof data.length === 'number') {\r\n        // Array-like (e.g. Node Buffer polyfill that somehow isn't ArrayBufferView)\r\n        payload = Uint8Array.from(data);\r\n      }\r\n    }\r\n    return __fsSyncCall('writeFileSync', [p, payload, opts]);\r\n  },\r\n  existsSync(p) { try { __fsSyncCall('statSync', [p]); return true; } catch { return false; } },\r\n  statSync(p) { return __makeStatObj(__fsSyncCall('statSync', [p])); },\r\n  lstatSync(p) { return __makeStatObj(__fsSyncCall('lstatSync', [p])); },\r\n  readdirSync(p, opts) {\r\n    const result = __fsSyncCall('readdirSync', [p, opts]) || [];\r\n    // When opts.withFileTypes is set the main thread returns flattened Dirent\r\n    // descriptors -- objects with name, _isFile, _isDir, _isSymlink. We\r\n    // reconstruct full Dirent-shaped objects with the methods callers expect.\r\n    const wantTypes = opts && typeof opts === 'object' && opts.withFileTypes;\r\n    if (wantTypes && Array.isArray(result) && result.length && typeof result[0] === 'object') {\r\n      return result.map(function(d) {\r\n        return {\r\n          name: d.name,\r\n          parentPath: d.parentPath || p,\r\n          path: d.parentPath || p,\r\n          isFile: function() { return !!d._isFile; },\r\n          isDirectory: function() { return !!d._isDir; },\r\n          isSymbolicLink: function() { return !!d._isSymlink; },\r\n          isBlockDevice: function() { return false; },\r\n          isCharacterDevice: function() { return false; },\r\n          isFIFO: function() { return false; },\r\n          isSocket: function() { return false; },\r\n        };\r\n      });\r\n    }\r\n    return result;\r\n  },\r\n  mkdirSync(p, opts) { return __fsSyncCall('mkdirSync', [p, opts]); },\r\n  unlinkSync(p) { return __fsSyncCall('unlinkSync', [p]); },\r\n  rmdirSync(p) { return __fsSyncCall('rmdirSync', [p]); },\r\n  renameSync(o, n) { return __fsSyncCall('renameSync', [o, n]); },\r\n  realpathSync(p) { try { return __fsSyncCall('realpathSync', [p]); } catch { return p; } },\r\n  accessSync(p) { return __fsSyncCall('accessSync', [p]); },\r\n  openSync(p, flags) {\r\n    // Return a pseudo fd — actual file content goes through readFileSync\r\n    try { __fsSyncCall('statSync', [p]); return 3; } catch { const e = new Error('ENOENT: ' + p); e.code = 'ENOENT'; throw e; }\r\n  },\r\n  closeSync() { return; },\r\n  readSync() { return 0; },\r\n  fstatSync(fd) { return __makeStatObj({ mode: 0o100644, size: 0, _isFile: true }); },\r\n  createReadStream() { throw new Error('createReadStream not supported in worker'); },\r\n  createWriteStream() { throw new Error('createWriteStream not supported in worker'); },\r\n  // Async variants (return promises or take callbacks)\r\n  readFile(p, opts, cb) {\r\n    if (typeof opts === 'function') { cb = opts; opts = undefined; }\r\n    try { const r = __fsStub.readFileSync(p, opts); if (cb) cb(null, r); } catch(e) { if (cb) cb(e); }\r\n  },\r\n  stat(p, cb) { try { const r = __fsStub.statSync(p); if (cb) cb(null, r); } catch(e) { if (cb) cb(e); } },\r\n  lstat(p, cb) { try { const r = __fsStub.lstatSync(p); if (cb) cb(null, r); } catch(e) { if (cb) cb(e); } },\r\n  readdir(p, opts, cb) {\r\n    if (typeof opts === 'function') { cb = opts; opts = undefined; }\r\n    try { const r = __fsStub.readdirSync(p, opts); if (cb) cb(null, r); } catch(e) { if (cb) cb(e); }\r\n  },\r\n  access(p, mode, cb) {\r\n    if (typeof mode === 'function') { cb = mode; mode = undefined; }\r\n    try { __fsStub.accessSync(p); if (cb) cb(null); } catch(e) { if (cb) cb(e); }\r\n  },\r\n  // promises namespace\r\n  promises: {\r\n    readFile(p, opts) { try { return Promise.resolve(__fsStub.readFileSync(p, opts)); } catch(e) { return Promise.reject(e); } },\r\n    stat(p) { try { return Promise.resolve(__fsStub.statSync(p)); } catch(e) { return Promise.reject(e); } },\r\n    lstat(p) { try { return Promise.resolve(__fsStub.lstatSync(p)); } catch(e) { return Promise.reject(e); } },\r\n    readdir(p, opts) { try { return Promise.resolve(__fsStub.readdirSync(p, opts)); } catch(e) { return Promise.reject(e); } },\r\n    access(p) { try { __fsStub.accessSync(p); return Promise.resolve(); } catch(e) { return Promise.reject(e); } },\r\n    writeFile(p, d, opts) { try { __fsStub.writeFileSync(p, d, opts); return Promise.resolve(); } catch(e) { return Promise.reject(e); } },\r\n    mkdir(p, opts) { try { __fsStub.mkdirSync(p, opts); return Promise.resolve(); } catch(e) { return Promise.reject(e); } },\r\n    unlink(p) { try { __fsStub.unlinkSync(p); return Promise.resolve(); } catch(e) { return Promise.reject(e); } },\r\n  },\r\n  // Constants\r\n  constants: { F_OK: 0, R_OK: 4, W_OK: 2, X_OK: 1 },\r\n};\r\n\r\n// os stub\r\nconst __osStub = {\r\n  cpus() { return [{ model: 'wasm', speed: 0, times: {} }]; },\r\n  platform() { return 'linux'; },\r\n  arch() { return 'wasm32'; },\r\n  homedir() { return '/'; },\r\n  tmpdir() { return '/tmp'; },\r\n  hostname() { return 'nodepod'; },\r\n  type() { return 'Linux'; },\r\n  release() { return '0.0.0'; },\r\n  totalmem() { return 1073741824; },\r\n  freemem() { return 536870912; },\r\n  EOL: '\\\\n',\r\n  endianness() { return 'LE'; },\r\n};\r\n\r\n// url stub\r\nconst __urlStub = {\r\n  URL: globalThis.URL,\r\n  URLSearchParams: globalThis.URLSearchParams,\r\n  fileURLToPath(u) {\r\n    try { return decodeURIComponent(new URL(u).pathname); }\r\n    catch { return u; }\r\n  },\r\n  pathToFileURL(p) { return p.startsWith('file://') ? new URL(p) : new URL('file://' + p); },\r\n};\r\n\r\n// util stub\r\nconst __utilStub = {\r\n  inherits(ctor, superCtor) { Object.setPrototypeOf(ctor.prototype, superCtor.prototype); },\r\n  types: { isTypedArray(v) { return ArrayBuffer.isView(v); }, isUint8Array(v) { return v instanceof Uint8Array; } },\r\n  promisify(fn) { return function(...args) { return new Promise((res, rej) => fn(...args, (err, val) => err ? rej(err) : res(val))); }; },\r\n  TextEncoder: globalThis.TextEncoder,\r\n  TextDecoder: globalThis.TextDecoder,\r\n  deprecate(fn) { return fn; },\r\n};\r\n\r\n// events stub\r\nconst __eventsStub = {\r\n  EventEmitter: class EventEmitter {\r\n    constructor() { this._e = {}; }\r\n    on(n, f) { (this._e[n] = this._e[n] || []).push(f); return this; }\r\n    off(n, f) { const a = this._e[n]; if (a) { const i = a.indexOf(f); if (i >= 0) a.splice(i, 1); } return this; }\r\n    once(n, f) { const w = (...args) => { this.off(n, w); f(...args); }; this.on(n, w); return this; }\r\n    emit(n, ...args) { (this._e[n] || []).forEach(f => f(...args)); return !!this._e[n]?.length; }\r\n    removeListener(n, f) { return this.off(n, f); }\r\n    addListener(n, f) { return this.on(n, f); }\r\n    removeAllListeners(n) { if (n) delete this._e[n]; else this._e = {}; return this; }\r\n    listeners(n) { return this._e[n] || []; }\r\n    listenerCount(n) { return (this._e[n] || []).length; }\r\n    setMaxListeners() { return this; }\r\n    getMaxListeners() { return 10; }\r\n    prependListener(n, f) { (this._e[n] = this._e[n] || []).unshift(f); return this; }\r\n    prependOnceListener(n, f) { const w = (...args) => { this.off(n, w); f(...args); }; this.prependListener(n, w); return this; }\r\n    eventNames() { return Object.keys(this._e); }\r\n    rawListeners(n) { return this._e[n] || []; }\r\n  }\r\n};\r\n__eventsStub.default = __eventsStub.EventEmitter;\r\n\r\n// Buffer stub\r\nconst __BufferStub = {\r\n  from(src, enc, len) {\r\n    if (typeof src === 'string') return new TextEncoder().encode(src);\r\n    if (src instanceof ArrayBuffer || src instanceof SharedArrayBuffer) {\r\n      return new Uint8Array(src, typeof enc === 'number' ? enc : 0, len);\r\n    }\r\n    if (src instanceof Uint8Array) return new Uint8Array(src);\r\n    return new Uint8Array(src || []);\r\n  },\r\n  alloc(len, fill) { const b = new Uint8Array(len); if (fill) b.fill(fill); return b; },\r\n  allocUnsafe(len) { return new Uint8Array(len); },\r\n  isBuffer(v) { return v instanceof Uint8Array; },\r\n  isEncoding() { return true; },\r\n  concat(list, totalLen) {\r\n    if (!totalLen) totalLen = list.reduce((s, b) => s + b.length, 0);\r\n    const out = new Uint8Array(totalLen); let off = 0;\r\n    for (const b of list) { out.set(b, off); off += b.length; }\r\n    return out;\r\n  },\r\n  byteLength(s, enc) { return new TextEncoder().encode(s).length; },\r\n};\r\n\r\n// WASM child thread initialization is handled by emnapi's instance proxy\r\n// which provides a no-op _initialize for child threads. No manual guard needed.\r\n\r\n// Real WASI preview1 implementation for worker threads.\r\n// Provides all required syscalls so WASM modules can initialize.\r\nconst __wasiStub = { WASI: class WASI {\r\n  constructor(opts) {\r\n    this._opts = opts || {};\r\n    // Merge process.env into WASI env. The wasi-worker.mjs may pass env: {} or\r\n    // omit it entirely — either way we need process.env to be visible.\r\n    // Note: for child threads, _initialize is a no-op (emnapi proxy), so the\r\n    // WASM code never re-reads environ — it uses the main thread's values\r\n    // from shared memory. This env is only used by this WASI instance's JS.\r\n    const _procEnv = (typeof process !== 'undefined' && process.env) ? process.env : {};\r\n    const _optsEnv = this._opts.env || {};\r\n    this._env = { ..._procEnv, ..._optsEnv };\r\n    this._args = this._opts.args || [];\r\n    this._preopens = [];\r\n    this._memory = null;\r\n    this._instance = null;\r\n    this._nextFd = 3;\r\n    this._fds = new Map([[0, 'stdin'], [1, 'stdout'], [2, 'stderr']]);\r\n    const po = this._opts.preopens || {};\r\n    for (const [virt, real] of Object.entries(po)) {\r\n      const fd = this._nextFd++;\r\n      this._preopens.push({ fd, virtualPath: virt, realPath: real });\r\n      this._fds.set(fd, { kind: 'dir', path: virt });\r\n    }\r\n  }\r\n  initialize(inst) {\r\n    this._instance = inst;\r\n    this._memory = inst.exports.memory;\r\n    const _init = inst.exports._initialize;\r\n    // emnapi's @emnapi/wasi-threads wraps child thread instances in a Proxy\r\n    // that returns a no-op for _initialize. So calling _init() is safe for both\r\n    // main thread (real _initialize) and child threads (no-op).\r\n    // IMPORTANT: Do NOT write guard values to WASM shared memory — it corrupts\r\n    // the stack/data segment.\r\n    if (typeof _init === 'function') _init();\r\n  }\r\n  start(inst) { this.initialize(inst); return 0; }\r\n  getImportObject() { return { wasi_snapshot_preview1: this._buildImports() }; }\r\n  get wasiImport() { return this._buildImports(); }\r\n  _view() { return new DataView(this._memory.buffer); }\r\n  _bytes() { return new Uint8Array(this._memory.buffer); }\r\n  // Read a string from WASM memory, handling SharedArrayBuffer.\r\n  // TextDecoder.decode() rejects SharedArrayBuffer-backed views,\r\n  // so we must copy to a non-shared buffer first.\r\n  // Resolve a WASI path relative to a directory entry, normalizing . and ..\r\n  _resolvePath(dirPath, rel) {\r\n    const base = dirPath || '/';\r\n    const raw = rel.startsWith('/') ? rel : (base.endsWith('/') ? base + rel : base + '/' + rel);\r\n    const segs = raw.split('/');\r\n    const out = [];\r\n    for (const s of segs) { if (s === '.' || s === '') continue; if (s === '..') { out.pop(); continue; } out.push(s); }\r\n    return '/' + out.join('/');\r\n  }\r\n  _readStr(ptr, len) {\r\n    const src = new Uint8Array(this._memory.buffer, ptr, len);\r\n    if (this._memory.buffer instanceof SharedArrayBuffer) {\r\n      const copy = new Uint8Array(len);\r\n      copy.set(src);\r\n      return new TextDecoder().decode(copy);\r\n    }\r\n    return new TextDecoder().decode(src);\r\n  }\r\n  // Flush an fd's accumulated in-memory data back to the filesystem.\r\n  // Called from fd_close / fd_sync / fd_datasync. Without this, every\r\n  // WASI file write via fd_write would be silently lost.\r\n  // Mirrors the pattern in src/polyfills/wasi.ts's flushFile().\r\n  _flushFile(entry) {\r\n    if (!entry || entry.kind !== 'file' || !entry.dirty || !entry.path) return;\r\n    const data = entry.data || new Uint8Array(0);\r\n    __fsStub.writeFileSync(entry.path, data);\r\n    entry.dirty = false;\r\n  }\r\n  _buildImports() {\r\n    const E = { SUCCESS: 0, BADF: 8, INVAL: 28, NOENT: 44, NOSYS: 52, IO: 29, ISDIR: 31, NOTDIR: 54, NOTEMPTY: 55, ACCES: 2, EXIST: 20 };\r\n    const self = this;\r\n    const enc = new TextEncoder();\r\n    return {\r\n      args_get(argv, buf) { const dv = self._view(); const b = self._bytes(); let off = buf; for (let i = 0; i < self._args.length; i++) { dv.setUint32(argv + i * 4, off, true); const a = enc.encode(self._args[i] + '\\\\0'); b.set(a, off); off += a.length; } return E.SUCCESS; },\r\n      args_sizes_get(argc_out, bufsz_out) { const dv = self._view(); dv.setUint32(argc_out, self._args.length, true); let sz = 0; for (const a of self._args) sz += enc.encode(a).length + 1; dv.setUint32(bufsz_out, sz, true); return E.SUCCESS; },\r\n      environ_get(env_ptr, buf) { const dv = self._view(); const b = self._bytes(); let off = buf; let i = 0; for (const [k, v] of Object.entries(self._env)) { dv.setUint32(env_ptr + i * 4, off, true); const e = enc.encode(k + '=' + v + '\\\\0'); b.set(e, off); off += e.length; i++; } return E.SUCCESS; },\r\n      environ_sizes_get(count_out, bufsz_out) { const dv = self._view(); const entries = Object.entries(self._env); dv.setUint32(count_out, entries.length, true); let sz = 0; for (const [k, v] of entries) sz += enc.encode(k + '=' + v).length + 1; dv.setUint32(bufsz_out, sz, true); return E.SUCCESS; },\r\n      clock_time_get(id, precision, time_out) { const dv = self._view(); const now = BigInt(Math.round(performance.now() * 1e6)); dv.setBigUint64(time_out, now, true); return E.SUCCESS; },\r\n      clock_res_get(id, res_out) { const dv = self._view(); dv.setBigUint64(res_out, BigInt(1000000), true); return E.SUCCESS; },\r\n      fd_prestat_get(fd, buf) { const p = self._preopens.find(x => x.fd === fd); if (!p) return E.BADF; const dv = self._view(); dv.setUint8(buf, 0); dv.setUint32(buf + 4, enc.encode(p.virtualPath).length, true); return E.SUCCESS; },\r\n      fd_prestat_dir_name(fd, path, len) { const p = self._preopens.find(x => x.fd === fd); if (!p) return E.BADF; const e = enc.encode(p.virtualPath); self._bytes().set(e.subarray(0, Math.min(e.length, len)), path); return E.SUCCESS; },\r\n      fd_fdstat_get(fd, buf) { const dv = self._view(); dv.setUint8(buf, fd <= 2 ? 2 : 3); dv.setUint16(buf + 2, 0, true); dv.setBigUint64(buf + 8, BigInt(0), true); dv.setBigUint64(buf + 16, BigInt(0), true); return E.SUCCESS; },\r\n      fd_fdstat_set_flags() { return E.SUCCESS; },\r\n      fd_fdstat_set_rights() { return E.SUCCESS; },\r\n      fd_write(fd, iovs, iovs_len, nwritten) {\r\n        let total = 0;\r\n        for (let i = 0; i < iovs_len; i++) {\r\n          // Re-acquire views each iteration (memory.grow() safety)\r\n          const dv = self._view(); const b = self._bytes();\r\n          const ptr = dv.getUint32(iovs + i * 8, true);\r\n          const len = dv.getUint32(iovs + i * 8 + 4, true);\r\n          if (ptr + len > b.length) break; // bounds check\r\n          // Explicit copy into a non-shared buffer. TextDecoder rejects\r\n          // SharedArrayBuffer-backed views, and while .slice() should\r\n          // produce a non-shared copy per spec, being explicit avoids\r\n          // any engine-specific surprises.\r\n          const chunk = new Uint8Array(len);\r\n          chunk.set(b.subarray(ptr, ptr + len));\r\n          if (fd === 1 || fd === 2) {\r\n            const txt = new TextDecoder().decode(chunk);\r\n            if (fd === 1) console.log(txt); else console.error(txt);\r\n          } else {\r\n            // File fd: write to fd data at current offset (positional write).\r\n            // WASI fd_write is positional — it uses entry.offset and advances\r\n            // it by len. Simply appending would lose data if the app seeks.\r\n            // If the fd was opened with FDFLAGS_APPEND, all writes go to EOF.\r\n            const entry = self._fds.get(fd);\r\n            if (entry) {\r\n              if (!entry.data) entry.data = new Uint8Array(0);\r\n              const off = entry.append ? entry.data.length : (entry.offset || 0);\r\n              const end = off + len;\r\n              if (end > entry.data.length) {\r\n                const newData = new Uint8Array(end);\r\n                newData.set(entry.data);\r\n                entry.data = newData;\r\n              }\r\n              entry.data.set(chunk, off);\r\n              entry.offset = end;\r\n              entry.dirty = true;\r\n            }\r\n          }\r\n          total += len;\r\n        }\r\n        self._view().setUint32(nwritten, total, true);\r\n        return E.SUCCESS;\r\n      },\r\n      fd_read(fd, iovs, iovs_len, nread) {\r\n        const entry = self._fds.get(fd);\r\n        if (!entry || !entry.data) { self._view().setUint32(nread, 0, true); return E.SUCCESS; }\r\n        let total = 0;\r\n        for (let i = 0; i < iovs_len; i++) {\r\n          // Re-acquire views each iteration — WASM memory.grow() can resize\r\n          // the underlying buffer, invalidating previous TypedArray views.\r\n          const dv = self._view();\r\n          const b = self._bytes();\r\n          const ptr = dv.getUint32(iovs + i * 8, true);\r\n          const len = dv.getUint32(iovs + i * 8 + 4, true);\r\n          const avail = Math.min(len, entry.data.length - (entry.offset || 0));\r\n          if (avail <= 0) break;\r\n          // Bounds check: don't write beyond WASM memory\r\n          if (ptr + avail > b.length) break;\r\n          b.set(entry.data.subarray(entry.offset || 0, (entry.offset || 0) + avail), ptr);\r\n          entry.offset = (entry.offset || 0) + avail;\r\n          total += avail;\r\n        }\r\n        self._view().setUint32(nread, total, true);\r\n        return E.SUCCESS;\r\n      },\r\n      fd_close(fd) {\r\n        const entry = self._fds.get(fd);\r\n        // CRITICAL: flush accumulated write data before closing. Without this,\r\n        // rolldown-wasm's bundle.write() pipeline (which uses WASI fd_write +\r\n        // fd_close) would silently drop every byte of every binary file.\r\n        try { self._flushFile(entry); } catch {}\r\n        self._fds.delete(fd);\r\n        return E.SUCCESS;\r\n      },\r\n      fd_seek(fd, offset, whence, newoff) {\r\n        const entry = self._fds.get(fd);\r\n        const dv = self._view();\r\n        if (!entry) { dv.setBigUint64(newoff, BigInt(0), true); return E.BADF; }\r\n        const size = entry.data ? entry.data.length : 0;\r\n        let pos = entry.offset || 0;\r\n        const off = Number(offset);\r\n        if (whence === 0) pos = off;       // SEEK_SET\r\n        else if (whence === 1) pos += off;  // SEEK_CUR\r\n        else if (whence === 2) pos = size + off; // SEEK_END\r\n        entry.offset = Math.max(0, pos);\r\n        dv.setBigUint64(newoff, BigInt(entry.offset), true);\r\n        return E.SUCCESS;\r\n      },\r\n      fd_tell(fd, off) {\r\n        const dv = self._view();\r\n        const entry = self._fds.get(fd);\r\n        dv.setBigUint64(off, BigInt(entry ? (entry.offset || 0) : 0), true);\r\n        return E.SUCCESS;\r\n      },\r\n      fd_sync(fd) { try { self._flushFile(self._fds.get(fd)); } catch {} return E.SUCCESS; },\r\n      fd_datasync(fd) { try { self._flushFile(self._fds.get(fd)); } catch {} return E.SUCCESS; },\r\n      fd_advise() { return E.SUCCESS; },\r\n      fd_allocate() { return E.SUCCESS; },\r\n      fd_filestat_get(fd, buf) {\r\n        const dv = self._view();\r\n        const entry = self._fds.get(fd);\r\n        const now = BigInt(Date.now()) * BigInt(1000000);\r\n        for (let i = 0; i < 64; i++) dv.setUint8(buf + i, 0);\r\n        if (entry && entry.data) {\r\n          dv.setUint8(buf + 16, 4); // FILETYPE_REGULAR_FILE\r\n          dv.setBigUint64(buf + 32, BigInt(entry.data.length), true); // size\r\n        } else if (entry && entry.kind === 'dir') {\r\n          dv.setUint8(buf + 16, 3); // FILETYPE_DIRECTORY\r\n        } else {\r\n          dv.setUint8(buf + 16, fd <= 2 ? 2 : 4);\r\n        }\r\n        dv.setBigUint64(buf + 48, now, true);\r\n        dv.setBigUint64(buf + 56, now, true);\r\n        return E.SUCCESS;\r\n      },\r\n      fd_filestat_set_size(fd, size) {\r\n        const entry = self._fds.get(fd);\r\n        if (!entry || entry.kind !== 'file') return E.BADF;\r\n        const newLen = Number(size);\r\n        const cur = entry.data || new Uint8Array(0);\r\n        if (newLen === cur.length) return E.SUCCESS;\r\n        const newData = new Uint8Array(newLen);\r\n        newData.set(cur.subarray(0, Math.min(cur.length, newLen)));\r\n        entry.data = newData;\r\n        entry.dirty = true;\r\n        if ((entry.offset || 0) > newLen) entry.offset = newLen;\r\n        return E.SUCCESS;\r\n      },\r\n      fd_filestat_set_times() { return E.SUCCESS; },\r\n      fd_pread(fd, iovs, iovs_len, offset, nread) {\r\n        const entry = self._fds.get(fd);\r\n        if (!entry || !entry.data) { self._view().setUint32(nread, 0, true); return E.SUCCESS; }\r\n        let pos = Number(offset);\r\n        let total = 0;\r\n        for (let i = 0; i < iovs_len; i++) {\r\n          const dv = self._view();\r\n          const b = self._bytes();\r\n          const ptr = dv.getUint32(iovs + i * 8, true);\r\n          const len = dv.getUint32(iovs + i * 8 + 4, true);\r\n          const avail = Math.min(len, entry.data.length - pos);\r\n          if (avail <= 0) break;\r\n          if (ptr + avail > b.length) break;\r\n          b.set(entry.data.subarray(pos, pos + avail), ptr);\r\n          pos += avail;\r\n          total += avail;\r\n        }\r\n        self._view().setUint32(nread, total, true);\r\n        return E.SUCCESS;\r\n      },\r\n      fd_pwrite(fd, iovs, iovs_len, offset, nwritten) {\r\n        const entry = self._fds.get(fd);\r\n        if (!entry || entry.kind !== 'file') { self._view().setUint32(nwritten, 0, true); return E.BADF; }\r\n        if (!entry.data) entry.data = new Uint8Array(0);\r\n        let pos = Number(offset);\r\n        let total = 0;\r\n        for (let i = 0; i < iovs_len; i++) {\r\n          const dv = self._view();\r\n          const b = self._bytes();\r\n          const ptr = dv.getUint32(iovs + i * 8, true);\r\n          const len = dv.getUint32(iovs + i * 8 + 4, true);\r\n          if (ptr + len > b.length) break;\r\n          const end = pos + len;\r\n          if (end > entry.data.length) {\r\n            const newData = new Uint8Array(end);\r\n            newData.set(entry.data);\r\n            entry.data = newData;\r\n          }\r\n          // Copy non-shared (chunk) to avoid SAB view issues\r\n          const chunk = new Uint8Array(len);\r\n          chunk.set(b.subarray(ptr, ptr + len));\r\n          entry.data.set(chunk, pos);\r\n          pos += len;\r\n          total += len;\r\n        }\r\n        entry.dirty = true;\r\n        self._view().setUint32(nwritten, total, true);\r\n        return E.SUCCESS;\r\n      },\r\n      fd_readdir(fd, buf, buf_len, cookie, used) {\r\n        const dv = self._view(); const b = self._bytes();\r\n        const entry = self._fds.get(fd);\r\n        if (!entry || !entry.path) { dv.setUint32(used, 0, true); return E.SUCCESS; }\r\n        try {\r\n          // Ask for Dirent objects so we can populate d_type accurately.\r\n          // d_type values per WASI: 3=DIRECTORY, 4=REGULAR_FILE, 7=SYMBOLIC_LINK.\r\n          const items = __fsStub.readdirSync(entry.path, { withFileTypes: true });\r\n          let offset = 0;\r\n          const cookieNum = Number(cookie);\r\n          for (let i = cookieNum; i < items.length; i++) {\r\n            const item = items[i];\r\n            const itemName = (item && typeof item === 'object') ? item.name : item;\r\n            const isDir = item && typeof item.isDirectory === 'function' ? item.isDirectory() : false;\r\n            const isSym = item && typeof item.isSymbolicLink === 'function' ? item.isSymbolicLink() : false;\r\n            const dType = isDir ? 3 : (isSym ? 7 : 4);\r\n            // d_ino must be unique per (parent, name) for walkdir cycle\r\n            // detection to work correctly. statSync goes through MemoryVolume\r\n            // which assigns stable per-path inos.\r\n            var dino = BigInt(i + 1);\r\n            try {\r\n              var fullChild = entry.path === '/' ? '/' + itemName : entry.path + '/' + itemName;\r\n              var st = __fsStub.statSync(fullChild);\r\n              if (st && st.ino) dino = BigInt(st.ino);\r\n            } catch (_) {}\r\n            const name = enc.encode(itemName);\r\n            // Stop when we cant fit the next FULL entry. Caller refills with\r\n            // cookie = last d_next written. Don't write partial headers --\r\n            // Rust's ReadDir gets confused by them.\r\n            if (offset + 24 + name.length > buf_len) break;\r\n            dv.setBigUint64(buf + offset, BigInt(i + 1), true); // d_next\r\n            dv.setBigUint64(buf + offset + 8, dino, true); // d_ino\r\n            dv.setUint32(buf + offset + 16, name.length, true); // d_namlen\r\n            dv.setUint8(buf + offset + 20, dType); // d_type\r\n            b.set(name, buf + offset + 24);\r\n            offset += 24 + name.length;\r\n          }\r\n          dv.setUint32(used, offset, true);\r\n        } catch (e) { dv.setUint32(used, 0, true); }\r\n        return E.SUCCESS;\r\n      },\r\n      fd_renumber() { return E.NOSYS; },\r\n      path_create_directory(fd, path_ptr, path_len) {\r\n        const dirEntry = self._fds.get(fd);\r\n        if (!dirEntry) return E.BADF;\r\n        const rel = self._readStr(path_ptr, path_len);\r\n        const full = self._resolvePath(dirEntry.path, rel);\r\n        try { __fsStub.mkdirSync(full, { recursive: true }); return E.SUCCESS; } catch { return E.IO; }\r\n      },\r\n      path_filestat_get(fd, flags, path_ptr, path_len, buf) {\r\n        const dv = self._view();\r\n        const dirEntry = self._fds.get(fd);\r\n        if (!dirEntry) return E.BADF;\r\n        const rel = self._readStr(path_ptr, path_len);\r\n        const full = self._resolvePath(dirEntry.path, rel);\r\n        try {\r\n          const stat = __fsStub.statSync(full);\r\n          for (let i = 0; i < 64; i++) dv.setUint8(buf + i, 0);\r\n          // ino at offset 8 -- walkdir uses (dev,ino) for cycle detection\r\n          // when follow_links is on, so we need a unique value per path or\r\n          // every file looks like the same identity and gets dropped.\r\n          if (stat && stat.ino) dv.setBigUint64(buf + 8, BigInt(stat.ino), true);\r\n          dv.setUint8(buf + 16, stat.isDirectory() ? 3 : 4);\r\n          dv.setBigUint64(buf + 32, BigInt(stat.size || 0), true);\r\n          dv.setBigUint64(buf + 48, BigInt(stat.mtimeMs || Date.now()) * BigInt(1000000), true);\r\n          dv.setBigUint64(buf + 56, BigInt(stat.mtimeMs || Date.now()) * BigInt(1000000), true);\r\n          return E.SUCCESS;\r\n        } catch (e) {\r\n          return E.NOENT;\r\n        }\r\n      },\r\n      path_filestat_set_times() { return E.SUCCESS; },\r\n      path_link() { return E.NOSYS; },\r\n      path_open(fd, dirflags, path_ptr, path_len, oflags, fs_rights_base, fs_rights_inheriting, fdflags, fd_out) {\r\n        const dv = self._view();\r\n        const dirEntry = self._fds.get(fd);\r\n        if (!dirEntry) return E.BADF;\r\n        const rel = self._readStr(path_ptr, path_len);\r\n        const full = self._resolvePath(dirEntry.path, rel);\r\n        const wantDir = (oflags & 0x0002) !== 0;\r\n        const wantCreate = (oflags & 0x0001) !== 0;\r\n        const wantTrunc = (oflags & 0x0008) !== 0;\r\n        let exists;\r\n        try { exists = __fsStub.existsSync(full); } catch { exists = false; }\r\n        if (wantDir) {\r\n          if (!exists && !wantCreate) return E.NOENT;\r\n          if (!exists) try { __fsStub.mkdirSync(full, { recursive: true }); } catch {}\r\n          const newFd = self._nextFd++;\r\n          self._fds.set(newFd, { kind: 'dir', path: full });\r\n          dv.setUint32(fd_out, newFd, true);\r\n          return E.SUCCESS;\r\n        }\r\n        // Regular file\r\n        if (!exists && !wantCreate) return E.NOENT;\r\n        const wantAppend = (fdflags & 0x0001) !== 0;\r\n        let data;\r\n        let dirty = false;\r\n        try {\r\n          if (exists && !wantTrunc) {\r\n            const raw = __fsStub.readFileSync(full);\r\n            // MUST copy — raw may be a view into a SharedArrayBuffer from the fs proxy.\r\n            // new Uint8Array(sharedView) creates another VIEW, not a copy!\r\n            if (raw instanceof Uint8Array) {\r\n              data = new Uint8Array(raw.length);\r\n              data.set(raw);\r\n            } else if (typeof raw === 'string') {\r\n              data = new TextEncoder().encode(raw);\r\n            } else if (raw && ArrayBuffer.isView(raw)) {\r\n              const v = new Uint8Array(raw.buffer, raw.byteOffset || 0, raw.byteLength);\r\n              data = new Uint8Array(v.byteLength);\r\n              data.set(v);\r\n            } else if (raw instanceof ArrayBuffer) {\r\n              data = new Uint8Array(raw.slice(0));\r\n            } else {\r\n              data = new TextEncoder().encode(String(raw));\r\n            }\r\n          } else {\r\n            data = new Uint8Array(0);\r\n            if (!exists && wantCreate) {\r\n              try { __fsStub.writeFileSync(full, data); } catch {}\r\n            } else if (exists && wantTrunc) {\r\n              // Truncating an existing file → mark dirty so the empty content\r\n              // (or whatever gets written next) is flushed on fd_close, even\r\n              // if no fd_write calls follow.\r\n              dirty = true;\r\n            }\r\n          }\r\n        } catch { return E.NOENT; }\r\n        const newFd = self._nextFd++;\r\n        // FDFLAGS_APPEND → start at end of existing data\r\n        const initialOffset = wantAppend ? data.length : 0;\r\n        self._fds.set(newFd, {\r\n          kind: 'file',\r\n          path: full,\r\n          data: data,\r\n          offset: initialOffset,\r\n          dirty: dirty,\r\n          append: wantAppend,\r\n        });\r\n        dv.setUint32(fd_out, newFd, true);\r\n        return E.SUCCESS;\r\n      },\r\n      path_readlink() { return E.NOSYS; },\r\n      path_remove_directory(fd, path_ptr, path_len) {\r\n        const dirEntry = self._fds.get(fd);\r\n        if (!dirEntry) return E.BADF;\r\n        const rel = self._readStr(path_ptr, path_len);\r\n        const full = self._resolvePath(dirEntry.path, rel);\r\n        try { __fsStub.rmdirSync(full); return E.SUCCESS; } catch { return E.IO; }\r\n      },\r\n      path_rename(fd, old_ptr, old_len, new_fd, new_ptr, new_len) {\r\n        const dirEntry = self._fds.get(fd);\r\n        const newDirEntry = self._fds.get(new_fd);\r\n        if (!dirEntry || !newDirEntry) return E.BADF;\r\n        const oldRel = self._readStr(old_ptr, old_len);\r\n        const newRel = self._readStr(new_ptr, new_len);\r\n        const oldFull = self._resolvePath(dirEntry.path, oldRel);\r\n        const newFull = self._resolvePath(newDirEntry.path, newRel);\r\n        try { __fsStub.renameSync(oldFull, newFull); return E.SUCCESS; } catch { return E.IO; }\r\n      },\r\n      path_symlink() { return E.NOSYS; },\r\n      path_unlink_file(fd, path_ptr, path_len) {\r\n        const dirEntry = self._fds.get(fd);\r\n        if (!dirEntry) return E.BADF;\r\n        const rel = self._readStr(path_ptr, path_len);\r\n        const full = self._resolvePath(dirEntry.path, rel);\r\n        try { __fsStub.unlinkSync(full); return E.SUCCESS; } catch { return E.IO; }\r\n      },\r\n      poll_oneoff(in_ptr, out_ptr, nsubs, nevents_out) { const dv = self._view(); let n = 0; for (let i = 0; i < nsubs; i++) { const sp = in_ptr + i * 48; const ep = out_ptr + n * 32; const ud = dv.getBigUint64(sp, true); const ty = dv.getUint8(sp + 8); dv.setBigUint64(ep, ud, true); dv.setUint16(ep + 8, 0, true); dv.setUint8(ep + 10, ty); n++; } dv.setUint32(nevents_out, n, true); return E.SUCCESS; },\r\n      proc_exit(code) { throw new Error('proc_exit(' + code + ')'); },\r\n      proc_raise() { return E.NOSYS; },\r\n      sched_yield() { return E.SUCCESS; },\r\n      random_get(buf_ptr, buf_len) {\r\n        const mem = self._memory;\r\n        if (mem.buffer instanceof SharedArrayBuffer) {\r\n          const tmp = new Uint8Array(buf_len); crypto.getRandomValues(tmp);\r\n          new Uint8Array(mem.buffer).set(tmp, buf_ptr);\r\n        } else {\r\n          crypto.getRandomValues(new Uint8Array(mem.buffer, buf_ptr, buf_len));\r\n        }\r\n        return E.SUCCESS;\r\n      },\r\n      sock_recv() { return E.NOSYS; },\r\n      sock_send() { return E.NOSYS; },\r\n      sock_shutdown() { return E.NOSYS; },\r\n      sock_accept() { return E.NOSYS; },\r\n    };\r\n  }\r\n} };\r\n\r\n// === end preamble ===\r\n`;\r\n}\r\n\r\n// require() implementation for the bundled worker\r\nconst REQUIRE_IMPL = `\r\nlet __requireDepth = 0;\r\nfunction __require(idOrPath) {\r\n  __requireDepth++;\r\n  if (__requireDepth > 100) {\r\n    __requireDepth--;\r\n    console.error('[worker] require depth > 100, circular dep? id=' + idOrPath);\r\n    return {};\r\n  }\r\n  try { return __requireInner(idOrPath); } finally { __requireDepth--; }\r\n}\r\nfunction __requireInner(idOrPath) {\r\n  // Numeric id → direct module lookup\r\n  if (typeof idOrPath === 'number') {\r\n    if (__moduleCache[idOrPath]) return __moduleCache[idOrPath].exports;\r\n    const mod = __modules[idOrPath];\r\n    if (!mod) throw new Error('Module not found: ' + idOrPath);\r\n    // Lazily compile the module function from its source string.\r\n    // This defers V8 parsing to first-require time, preventing parser\r\n    // stack overflow that occurs when all modules are parsed at once.\r\n    if (!mod.fn && mod.src !== undefined) {\r\n      mod.fn = new Function('module', 'exports', 'require', '__filename', '__dirname', mod.src);\r\n    }\r\n    if (!mod.fn) throw new Error('Module has no source: ' + idOrPath);\r\n    const m = { exports: {}, id: mod.path, filename: mod.path, loaded: false };\r\n    __moduleCache[idOrPath] = m;\r\n    const localRequire = function(dep) {\r\n      // Node builtins — check once, always return result (even empty object)\r\n      const bare = dep.replace(/^node:/, '');\r\n      const builtin = __builtinRequire(bare);\r\n      if (builtin !== undefined) return builtin;\r\n      // Resolve relative paths\r\n      if (dep.startsWith('./') || dep.startsWith('../')) {\r\n        const resolved = __resolvePath(mod.dir, dep);\r\n        const resolvedId = __pathToId[resolved];\r\n        if (resolvedId !== undefined) return __require(resolvedId);\r\n        // Try with extensions\r\n        for (const ext of ['.js', '.cjs', '.mjs', '.json', '/index.js', '/index.cjs', '/index.mjs']) {\r\n          const withExt = __pathToId[resolved + ext];\r\n          if (withExt !== undefined) return __require(withExt);\r\n        }\r\n        throw new Error('Cannot find module: ' + dep + ' from ' + mod.dir);\r\n      }\r\n      // Bare specifier: search in collected modules\r\n      for (const [p, id] of Object.entries(__pathToId)) {\r\n        if (p.includes('/node_modules/' + dep + '/') || p.endsWith('/node_modules/' + dep)) {\r\n          return __require(id);\r\n        }\r\n        // Check package.json main field\r\n        if (p.includes('/' + dep + '/') && (p.endsWith('/index.js') || p.endsWith('/index.cjs'))) {\r\n          return __require(id);\r\n        }\r\n      }\r\n      // Fall back to empty object for unknown modules (don't crash)\r\n      console.warn('[worker] Unknown module: ' + dep);\r\n      return {};\r\n    };\r\n    localRequire.resolve = function(id) { return id; };\r\n    mod.fn(m, m.exports, localRequire, mod.path, mod.dir);\r\n    m.loaded = true;\r\n    return m.exports;\r\n  }\r\n  // String path → lookup in pathToId\r\n  const id = __pathToId[idOrPath];\r\n  if (id !== undefined) return __require(id);\r\n  // Bare specifier search (same as localRequire does)\r\n  for (const [p, pid] of Object.entries(__pathToId)) {\r\n    if (p.includes('/node_modules/' + idOrPath + '/') || p.endsWith('/node_modules/' + idOrPath)) {\r\n      return __require(pid);\r\n    }\r\n  }\r\n  // Try builtin\r\n  const builtin = __builtinRequire(idOrPath);\r\n  if (builtin !== undefined) return builtin;\r\n  return {};\r\n}\r\n\r\nfunction __resolvePath(base, rel) {\r\n  const parts = (base + '/' + rel).split('/');\r\n  const out = [];\r\n  for (const seg of parts) {\r\n    if (seg === '.' || seg === '') continue;\r\n    if (seg === '..') { out.pop(); continue; }\r\n    out.push(seg);\r\n  }\r\n  return '/' + out.join('/');\r\n}\r\n`;\r\n","// Node.js assert polyfill\r\n\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  AssertionError                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface AssertionError extends Error {\r\n  actual: unknown;\r\n  expected: unknown;\r\n  operator: string;\r\n  generatedMessage: boolean;\r\n  code: string;\r\n}\r\n\r\ninterface AssertionErrorConstructor {\r\n  new (info: {\r\n    message?: string;\r\n    actual?: unknown;\r\n    expected?: unknown;\r\n    operator?: string;\r\n    stackStartFn?: Function;\r\n  }): AssertionError;\r\n  (this: any, info: {\r\n    message?: string;\r\n    actual?: unknown;\r\n    expected?: unknown;\r\n    operator?: string;\r\n    stackStartFn?: Function;\r\n  }): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const AssertionError = function AssertionError(this: any, info: {\r\n  message?: string;\r\n  actual?: unknown;\r\n  expected?: unknown;\r\n  operator?: string;\r\n  stackStartFn?: Function;\r\n}) {\r\n  if (!this) return;\r\n  const text =\r\n    info.message ??\r\n    `${formatValue(info.actual)} ${info.operator ?? '=='} ${formatValue(info.expected)}`;\r\n  Error.call(this, text);\r\n  this.message = text;\r\n  this.name = 'AssertionError';\r\n  this.actual = info.actual;\r\n  this.expected = info.expected;\r\n  this.operator = info.operator ?? '';\r\n  this.generatedMessage = !info.message;\r\n  this.code = 'ERR_ASSERTION';\r\n  if (Error.captureStackTrace && info.stackStartFn) {\r\n    Error.captureStackTrace(this, info.stackStartFn);\r\n  }\r\n} as unknown as AssertionErrorConstructor;\r\n\r\nObject.setPrototypeOf(AssertionError.prototype, Error.prototype);\r\n\r\nfunction formatValue(v: unknown): string {\r\n  try { return JSON.stringify(v); } catch { return String(v); }\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Deep comparison engine                                             */\r\n/* ------------------------------------------------------------------ */\r\n\r\nfunction deepMatch(a: unknown, b: unknown): boolean {\r\n  if (Object.is(a, b)) return true;\r\n  if (a === null || b === null || a === undefined || b === undefined) return a === b;\r\n  if (typeof a !== typeof b) return false;\r\n\r\n  // NaN\r\n  if (typeof a === 'number' && Number.isNaN(a) && Number.isNaN(b as number)) return true;\r\n\r\n  // Dates\r\n  if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();\r\n\r\n  // RegExp\r\n  if (a instanceof RegExp && b instanceof RegExp)\r\n    return a.source === b.source && a.flags === b.flags;\r\n\r\n  // Arrays\r\n  if (Array.isArray(a) && Array.isArray(b)) {\r\n    if (a.length !== b.length) return false;\r\n    for (let i = 0; i < a.length; i++) if (!deepMatch(a[i], b[i])) return false;\r\n    return true;\r\n  }\r\n\r\n  // Typed arrays\r\n  if (a instanceof Uint8Array && b instanceof Uint8Array) {\r\n    if (a.length !== b.length) return false;\r\n    for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;\r\n    return true;\r\n  }\r\n\r\n  // Map\r\n  if (a instanceof Map && b instanceof Map) {\r\n    if (a.size !== b.size) return false;\r\n    for (const [k, v] of a) if (!b.has(k) || !deepMatch(v, b.get(k))) return false;\r\n    return true;\r\n  }\r\n\r\n  // Set\r\n  if (a instanceof Set && b instanceof Set) {\r\n    if (a.size !== b.size) return false;\r\n    for (const v of a) {\r\n      if (!b.has(v)) {\r\n        let found = false;\r\n        for (const bv of b) { if (deepMatch(v, bv)) { found = true; break; } }\r\n        if (!found) return false;\r\n      }\r\n    }\r\n    return true;\r\n  }\r\n\r\n  // Plain objects\r\n  if (typeof a === 'object' && typeof b === 'object') {\r\n    const ka = Object.keys(a as object);\r\n    const kb = Object.keys(b as object);\r\n    if (ka.length !== kb.length) return false;\r\n    for (const k of ka) {\r\n      if (!Object.prototype.hasOwnProperty.call(b, k)) return false;\r\n      if (!deepMatch((a as any)[k], (b as any)[k])) return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  return false;\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Throw helper                                                       */\r\n/* ------------------------------------------------------------------ */\r\n\r\nfunction raiseIf(cond: boolean, info: ConstructorParameters<typeof AssertionError>[0], msg?: string | Error): void {\r\n  if (!cond) return;\r\n  if (msg instanceof Error) throw msg;\r\n  if (msg !== undefined) info.message = msg;\r\n  throw new AssertionError(info);\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Main assert function                                               */\r\n/* ------------------------------------------------------------------ */\r\n\r\nfunction assert(value: unknown, message?: string | Error): asserts value {\r\n  raiseIf(!value, { actual: value, expected: true, operator: '==', stackStartFn: assert }, message ?? 'Value is falsy');\r\n}\r\n\r\n/* ---- ok ---- */\r\n\r\nassert.ok = function ok(value: unknown, message?: string | Error): asserts value {\r\n  raiseIf(!value, { actual: value, expected: true, operator: '==', stackStartFn: ok }, message ?? 'Value is falsy');\r\n};\r\n\r\n/* ---- equal / notEqual (loose) ---- */\r\n\r\nassert.equal = function equal(actual: unknown, expected: unknown, message?: string | Error): void {\r\n  raiseIf(actual != expected, { actual, expected, operator: '==', stackStartFn: equal }, message);\r\n};\r\n\r\nassert.notEqual = function notEqual(actual: unknown, expected: unknown, message?: string | Error): void {\r\n  raiseIf(actual == expected, { actual, expected, operator: '!=', stackStartFn: notEqual }, message);\r\n};\r\n\r\n/* ---- strictEqual / notStrictEqual ---- */\r\n\r\nassert.strictEqual = function strictEqual(actual: unknown, expected: unknown, message?: string | Error): void {\r\n  raiseIf(actual !== expected, { actual, expected, operator: '===', stackStartFn: strictEqual }, message);\r\n};\r\n\r\nassert.notStrictEqual = function notStrictEqual(actual: unknown, expected: unknown, message?: string | Error): void {\r\n  raiseIf(actual === expected, { actual, expected, operator: '!==', stackStartFn: notStrictEqual }, message);\r\n};\r\n\r\n/* ---- deepEqual / deepStrictEqual ---- */\r\n\r\nassert.deepEqual = function deepEqual<T>(actual: T, expected: T, message?: string | Error): void {\r\n  raiseIf(!deepMatch(actual, expected), { actual, expected, operator: 'deepEqual', stackStartFn: deepEqual }, message);\r\n};\r\n\r\nassert.deepStrictEqual = function deepStrictEqual<T>(actual: T, expected: T, message?: string | Error): void {\r\n  raiseIf(!deepMatch(actual, expected), { actual, expected, operator: 'deepStrictEqual', stackStartFn: deepStrictEqual }, message);\r\n};\r\n\r\nassert.notDeepStrictEqual = function notDeepStrictEqual<T>(actual: T, expected: T, message?: string | Error): void {\r\n  raiseIf(deepMatch(actual, expected), { actual, expected, operator: 'notDeepStrictEqual', stackStartFn: notDeepStrictEqual }, message);\r\n};\r\n\r\n/* ---- throws ---- */\r\n\r\nassert.throws = function throws(\r\n  fn: () => unknown,\r\n  validatorOrMsg?: RegExp | Function | Error | { message?: RegExp | string; code?: string } | string,\r\n  msg?: string\r\n): void {\r\n  let caught = false;\r\n  let thrown: unknown;\r\n  try { fn(); } catch (e) { caught = true; thrown = e; }\r\n\r\n  if (!caught) {\r\n    throw new AssertionError({\r\n      message: typeof validatorOrMsg === 'string' ? validatorOrMsg : (msg ?? 'Expected function to throw'),\r\n      operator: 'throws',\r\n      stackStartFn: throws,\r\n    });\r\n  }\r\n\r\n  if (validatorOrMsg !== undefined && typeof validatorOrMsg !== 'string') {\r\n    validateThrown(thrown, validatorOrMsg, msg, throws);\r\n  }\r\n};\r\n\r\n/* ---- doesNotThrow ---- */\r\n\r\nassert.doesNotThrow = function doesNotThrow(\r\n  fn: () => unknown,\r\n  validatorOrMsg?: RegExp | Function | string,\r\n  msg?: string\r\n): void {\r\n  try { fn(); } catch (e) {\r\n    if (validatorOrMsg === undefined || typeof validatorOrMsg === 'string') {\r\n      throw new AssertionError({\r\n        message: typeof validatorOrMsg === 'string' ? validatorOrMsg : (msg ?? 'Unexpected throw'),\r\n        actual: e, operator: 'doesNotThrow', stackStartFn: doesNotThrow,\r\n      });\r\n    }\r\n    if (validatorOrMsg instanceof RegExp) {\r\n      const m = e instanceof Error ? e.message : String(e);\r\n      if (validatorOrMsg.test(m)) {\r\n        throw new AssertionError({ message: msg ?? 'Unexpected matching throw', actual: e, expected: validatorOrMsg, operator: 'doesNotThrow', stackStartFn: doesNotThrow });\r\n      }\r\n    } else if (typeof validatorOrMsg === 'function' && e instanceof (validatorOrMsg as any)) {\r\n      throw new AssertionError({ message: msg ?? 'Unexpected throw of matching type', actual: e, expected: validatorOrMsg, operator: 'doesNotThrow', stackStartFn: doesNotThrow });\r\n    }\r\n  }\r\n};\r\n\r\n/* ---- rejects ---- */\r\n\r\nassert.rejects = async function rejects(\r\n  asyncFn: Promise<unknown> | (() => Promise<unknown>),\r\n  validatorOrMsg?: RegExp | Function | Error | { message?: RegExp | string; code?: string } | string,\r\n  msg?: string\r\n): Promise<void> {\r\n  const p = typeof asyncFn === 'function' ? asyncFn() : asyncFn;\r\n  let caught = false;\r\n  let thrown: unknown;\r\n  try { await p; } catch (e) { caught = true; thrown = e; }\r\n\r\n  if (!caught) {\r\n    throw new AssertionError({\r\n      message: typeof validatorOrMsg === 'string' ? validatorOrMsg : (msg ?? 'Expected rejection'),\r\n      operator: 'rejects', stackStartFn: rejects,\r\n    });\r\n  }\r\n\r\n  if (validatorOrMsg !== undefined && typeof validatorOrMsg !== 'string') {\r\n    validateThrown(thrown, validatorOrMsg, msg, rejects);\r\n  }\r\n};\r\n\r\n/* ---- doesNotReject ---- */\r\n\r\nassert.doesNotReject = async function doesNotReject(\r\n  asyncFn: Promise<unknown> | (() => Promise<unknown>),\r\n  validatorOrMsg?: RegExp | Function | string,\r\n  msg?: string\r\n): Promise<void> {\r\n  const p = typeof asyncFn === 'function' ? asyncFn() : asyncFn;\r\n  try { await p; } catch (e) {\r\n    if (validatorOrMsg === undefined || typeof validatorOrMsg === 'string') {\r\n      throw new AssertionError({\r\n        message: typeof validatorOrMsg === 'string' ? validatorOrMsg : (msg ?? 'Unexpected rejection'),\r\n        actual: e, operator: 'doesNotReject', stackStartFn: doesNotReject,\r\n      });\r\n    }\r\n    if (validatorOrMsg instanceof RegExp) {\r\n      const m = e instanceof Error ? e.message : String(e);\r\n      if (validatorOrMsg.test(m)) {\r\n        throw new AssertionError({ message: msg ?? 'Unexpected matching rejection', actual: e, expected: validatorOrMsg, operator: 'doesNotReject', stackStartFn: doesNotReject });\r\n      }\r\n    } else if (typeof validatorOrMsg === 'function' && e instanceof (validatorOrMsg as any)) {\r\n      throw new AssertionError({ message: msg ?? 'Unexpected rejection of matching type', actual: e, expected: validatorOrMsg, operator: 'doesNotReject', stackStartFn: doesNotReject });\r\n    }\r\n  }\r\n};\r\n\r\n/* ---- fail ---- */\r\n\r\nassert.fail = function fail(\r\n  msgOrActual?: string | unknown,\r\n  expected?: unknown,\r\n  message?: string,\r\n  operator?: string\r\n): never {\r\n  if (arguments.length <= 1) {\r\n    throw new AssertionError({\r\n      message: typeof msgOrActual === 'string' ? msgOrActual : 'Failed',\r\n      stackStartFn: fail,\r\n    });\r\n  }\r\n  throw new AssertionError({\r\n    message,\r\n    actual: msgOrActual,\r\n    expected,\r\n    operator: operator ?? 'fail',\r\n    stackStartFn: fail,\r\n  });\r\n};\r\n\r\n/* ---- match / doesNotMatch ---- */\r\n\r\nassert.match = function match(str: string, re: RegExp, message?: string | Error): void {\r\n  raiseIf(!re.test(str), { actual: str, expected: re, operator: 'match', stackStartFn: match }, message);\r\n};\r\n\r\nassert.doesNotMatch = function doesNotMatch(str: string, re: RegExp, message?: string | Error): void {\r\n  raiseIf(re.test(str), { actual: str, expected: re, operator: 'doesNotMatch', stackStartFn: doesNotMatch }, message);\r\n};\r\n\r\n/* ---- ifError ---- */\r\n\r\nassert.ifError = function ifError(value: unknown): void {\r\n  if (value === null || value === undefined) return;\r\n  if (value instanceof Error) throw value;\r\n  throw new AssertionError({\r\n    message: `ifError received unwanted value: ${value}`,\r\n    actual: value,\r\n    expected: null,\r\n    operator: 'ifError',\r\n    stackStartFn: ifError,\r\n  });\r\n};\r\n\r\n/* ---- metadata ---- */\r\n\r\nassert.AssertionError = AssertionError;\r\nassert.strict = assert;\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Internal: validate a thrown/rejected value                         */\r\n/* ------------------------------------------------------------------ */\r\n\r\nfunction validateThrown(\r\n  thrown: unknown,\r\n  validator: RegExp | Function | Error | { message?: RegExp | string; code?: string },\r\n  msg: string | undefined,\r\n  caller: Function\r\n): void {\r\n  if (validator instanceof RegExp) {\r\n    const text = thrown instanceof Error ? thrown.message : String(thrown);\r\n    if (!validator.test(text)) {\r\n      throw new AssertionError({ message: msg ?? 'Error message did not match', actual: thrown, expected: validator, operator: 'throws', stackStartFn: caller });\r\n    }\r\n  } else if (typeof validator === 'function') {\r\n    if (!(thrown instanceof (validator as any))) {\r\n      throw new AssertionError({ message: msg ?? 'Error type mismatch', actual: thrown, expected: validator, operator: 'throws', stackStartFn: caller });\r\n    }\r\n  } else if (typeof validator === 'object') {\r\n    const spec = validator as { message?: RegExp | string; code?: string };\r\n    const err = thrown as Error & { code?: string };\r\n    if (spec.message !== undefined) {\r\n      const errMsg = err.message ?? String(thrown);\r\n      if (spec.message instanceof RegExp) {\r\n        if (!spec.message.test(errMsg))\r\n          throw new AssertionError({ message: msg ?? 'Error message mismatch', actual: errMsg, expected: spec.message, operator: 'throws', stackStartFn: caller });\r\n      } else if (errMsg !== spec.message) {\r\n        throw new AssertionError({ message: msg ?? 'Error message mismatch', actual: errMsg, expected: spec.message, operator: 'throws', stackStartFn: caller });\r\n      }\r\n    }\r\n    if (spec.code !== undefined && err.code !== spec.code) {\r\n      throw new AssertionError({ message: msg ?? 'Error code mismatch', actual: err.code, expected: spec.code, operator: 'throws', stackStartFn: caller });\r\n    }\r\n  }\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Exports                                                            */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport default assert;\r\nexport { assert };\r\n","// StringDecoder for decoding Buffer/Uint8Array to strings\r\n\r\n\r\nexport interface StringDecoder {\r\n  encoding: string;\r\n  write(buf: Uint8Array | Buffer): string;\r\n  end(buf?: Uint8Array | Buffer): string;\r\n}\r\n\r\nexport const StringDecoder = function StringDecoder(this: any, encoding?: string) {\r\n  if (!this) return;\r\n  this.encoding = encoding || \"utf8\";\r\n} as unknown as { new(encoding?: string): StringDecoder; prototype: any };\r\n\r\nStringDecoder.prototype.write = function write(buf: Uint8Array | Buffer): string {\r\n  if (!buf || buf.length === 0) return \"\";\r\n  if (!this._decoder) {\r\n    this._decoder = new TextDecoder(this.encoding, { fatal: false });\r\n  }\r\n  const bytes = buf instanceof Uint8Array ? buf : new Uint8Array(buf);\r\n  return this._decoder.decode(bytes, { stream: true });\r\n};\r\n\r\nStringDecoder.prototype.end = function end(buf?: Uint8Array | Buffer): string {\r\n  if (!this._decoder) {\r\n    this._decoder = new TextDecoder(this.encoding, { fatal: false });\r\n  }\r\n  let out = \"\";\r\n  if (buf && buf.length) {\r\n    const bytes = buf instanceof Uint8Array ? buf : new Uint8Array(buf);\r\n    out = this._decoder.decode(bytes, { stream: true });\r\n  }\r\n  out += this._decoder.decode();\r\n  return out;\r\n};\r\n\r\nexport default { StringDecoder };\r\n","// timer polyfills with Handle tracking. every setTimeout/setInterval/\r\n// setImmediate registers a typed Handle in the active HandleRegistry so the\r\n// event loop knows about it. handles auto-close when a one-shot fires or\r\n// the timer is cleared. script-engine's globalThis patch routes through\r\n// here too, so `node:timers` and bare setTimeout share the same path.\r\n\r\nimport {\r\n  getRegistry,\r\n  isExitSentinel,\r\n  type Handle,\r\n  type HandleType,\r\n} from \"../helpers/event-loop\";\r\n\r\n// keep references to the raw browser timer functions. captured at import\r\n// so later patches of globalThis.setTimeout don't recurse through us.\r\nconst _rawSetTimeout = globalThis.setTimeout.bind(globalThis);\r\nconst _rawSetInterval = globalThis.setInterval.bind(globalThis);\r\nconst _rawClearTimeout = globalThis.clearTimeout.bind(globalThis);\r\nconst _rawClearInterval = globalThis.clearInterval.bind(globalThis);\r\n\r\n// tracked timers so process teardown can cancel the underlying browser ids.\r\n// closeAll() only drops registry handles; without this, intervals keep firing\r\n// in persistent shell workers after Ctrl+C.\r\nconst _activeTimers = new Set<TimeoutLike>();\r\n\r\nfunction trackTimer(timer: TimeoutLike): void {\r\n  _activeTimers.add(timer);\r\n}\r\n\r\nfunction untrackTimer(timer: TimeoutLike): void {\r\n  _activeTimers.delete(timer);\r\n}\r\n\r\n/** Cancel every tracked timer. Called from child_process cleanup on exit/abort. */\r\nexport function disposeAllTimers(): void {\r\n  for (const timer of Array.from(_activeTimers)) {\r\n    if (timer._isInterval) {\r\n      _rawClearInterval(timer._id);\r\n    } else {\r\n      const id = timer._id as unknown;\r\n      if (id && typeof id === \"object\" && \"cleared\" in (id as object)) {\r\n        (id as ImmediateEntry).cleared = true;\r\n      } else {\r\n        _rawClearTimeout(timer._id);\r\n      }\r\n    }\r\n    timer._handle.close();\r\n    timer._fired = true;\r\n  }\r\n  _activeTimers.clear();\r\n}\r\n\r\n// node's TIMEOUT_MAX = 2^31 - 1. anything outside [1, TIMEOUT_MAX] (NaN,\r\n// negative, non-finite, non-numeric) is coerced to 1. matches\r\n// lib/internal/timers.js#getTimerDuration in node source.\r\nconst TIMEOUT_MAX = 2147483647;\r\n\r\nfunction normalizeDelay(ms: unknown): number {\r\n  const n = typeof ms === \"number\" ? ms : Number(ms);\r\n  if (!Number.isFinite(n) || n < 1) return 1;\r\n  if (n > TIMEOUT_MAX) return 1;\r\n  return n;\r\n}\r\n\r\nexport interface TimeoutLike {\r\n  _id: ReturnType<typeof _rawSetTimeout>;\r\n  _handle: Handle;\r\n  _isInterval: boolean;\r\n  _fired: boolean;\r\n  ref(): TimeoutLike;\r\n  unref(): TimeoutLike;\r\n  hasRef(): boolean;\r\n  refresh(): TimeoutLike;\r\n  [Symbol.toPrimitive](): number;\r\n}\r\n\r\nfunction makeTimeout(\r\n  kind: HandleType,\r\n  callback: (...args: unknown[]) => void,\r\n  msRaw: number,\r\n  args: unknown[],\r\n  isInterval: boolean,\r\n): TimeoutLike {\r\n  const ms = normalizeDelay(msRaw);\r\n  const handle = getRegistry().register(kind);\r\n  const self = {} as TimeoutLike;\r\n  self._isInterval = isInterval;\r\n  self._fired = false;\r\n  self._handle = handle;\r\n\r\n  const fire = () => {\r\n    if (!isInterval) {\r\n      self._fired = true;\r\n      handle.close();\r\n      untrackTimer(self);\r\n    }\r\n    try {\r\n      // widen the declared void return so we can duck-type async callbacks.\r\n      // setTimeout(async () => {...}) returns a Promise and plenty of user\r\n      // code depends on that even though node's types say void.\r\n      const r: unknown = callback(...args);\r\n      // if the callback is async, a process.exit() inside it becomes a\r\n      // Promise rejection, not a sync throw, so the try/catch below can't\r\n      // see it. filter the sentinel out of the rejection path to match\r\n      // node (process.exit inside a timer doesn't surface as an unhandled\r\n      // rejection). other rejections propagate normally.\r\n      if (r && typeof (r as { then?: unknown }).then === \"function\") {\r\n        (r as Promise<unknown>).then(undefined, (e: unknown) => {\r\n          if (isExitSentinel(e)) return;\r\n          // re-raise on the next microtask so it reaches the global\r\n          // unhandledrejection handler, same as node.\r\n          queueMicrotask(() => { throw e as Error; });\r\n        });\r\n      }\r\n    } catch (e) {\r\n      if (isExitSentinel(e)) return;\r\n      throw e;\r\n    }\r\n  };\r\n\r\n  self._id = isInterval\r\n    ? _rawSetInterval(fire, ms)\r\n    : _rawSetTimeout(fire, ms);\r\n  trackTimer(self);\r\n\r\n  self.ref = () => {\r\n    if (!self._fired) handle.ref();\r\n    return self;\r\n  };\r\n  self.unref = () => {\r\n    handle.unref();\r\n    return self;\r\n  };\r\n  self.hasRef = () => handle.refed;\r\n\r\n  // Timeout.refresh() re-arms the timer with its original delay, cancelling\r\n  // any pending fire. undici, ws heartbeats, node-fetch, socket.io and many\r\n  // others rely on this; a no-op here breaks those libraries silently.\r\n  self.refresh = () => {\r\n    if (handle.closed) return self;\r\n    if (isInterval) {\r\n      _rawClearInterval(self._id);\r\n      self._id = _rawSetInterval(fire, ms);\r\n    } else {\r\n      _rawClearTimeout(self._id);\r\n      // refresh resurrects a one-shot Timeout: if it already fired we need\r\n      // to re-register the handle so the loop counts it again.\r\n      if (self._fired) {\r\n        self._fired = false;\r\n        handle.ref();\r\n      }\r\n      self._id = _rawSetTimeout(fire, ms);\r\n    }\r\n    return self;\r\n  };\r\n\r\n  self[Symbol.toPrimitive] = () => self._id as unknown as number;\r\n\r\n  return self;\r\n}\r\n\r\n// setImmediate approximation of node's check phase. node runs setImmediate\r\n// callbacks after I/O + microtasks and before the next timer tick, in\r\n// scheduling order. we approximate this by queueing into an array and\r\n// draining via a single MessageChannel message per flush cycle (the\r\n// closest browser analogue to the check phase). callbacks enqueued during\r\n// a flush run in the next cycle, not the current one, which preserves the\r\n// scheduling order without collapsing into setTimeout(0).\r\n\r\ninterface ImmediateEntry {\r\n  handle: Handle;\r\n  cb: (...args: unknown[]) => void;\r\n  args: unknown[];\r\n  cleared: boolean;\r\n}\r\n\r\nconst _immediateQueue: ImmediateEntry[] = [];\r\nlet _immediateScheduled = false;\r\n\r\n// MessageChannel is the \"check\" trampoline. falls back to queueMicrotask\r\n// in environments without it (sandboxed workers without structured-clone).\r\n// both run after the current microtask queue drains, which is what matters\r\n// for nextTick/Promise ordering.\r\nlet _scheduleCheck: () => void;\r\nif (typeof MessageChannel !== \"undefined\") {\r\n  const _mc = new MessageChannel();\r\n  _mc.port1.onmessage = () => _flushImmediates();\r\n  _scheduleCheck = () => _mc.port2.postMessage(0);\r\n} else {\r\n  _scheduleCheck = () => queueMicrotask(_flushImmediates);\r\n}\r\n\r\nfunction _flushImmediates(): void {\r\n  _immediateScheduled = false;\r\n  // snapshot: entries added during flush run in the next cycle\r\n  const batch = _immediateQueue.splice(0);\r\n  for (const entry of batch) {\r\n    if (entry.cleared) continue;\r\n    entry.handle.close();\r\n    try {\r\n      const r: unknown = entry.cb(...entry.args);\r\n      if (r && typeof (r as { then?: unknown }).then === \"function\") {\r\n        (r as Promise<unknown>).then(undefined, (e: unknown) => {\r\n          if (isExitSentinel(e)) return;\r\n          queueMicrotask(() => { throw e as Error; });\r\n        });\r\n      }\r\n    } catch (e) {\r\n      if (isExitSentinel(e)) continue;\r\n      // surface other throws as unhandled errors like node does\r\n      queueMicrotask(() => { throw e as Error; });\r\n    }\r\n  }\r\n  if (_immediateQueue.length > 0 && !_immediateScheduled) {\r\n    _immediateScheduled = true;\r\n    _scheduleCheck();\r\n  }\r\n}\r\n\r\nfunction makeImmediate(\r\n  cb: (...args: unknown[]) => void,\r\n  args: unknown[],\r\n): TimeoutLike {\r\n  const handle = getRegistry().register(\"Immediate\");\r\n  const entry: ImmediateEntry = { handle, cb, args, cleared: false };\r\n  const self = {} as TimeoutLike;\r\n  self._isInterval = false;\r\n  self._fired = false;\r\n  self._handle = handle;\r\n  // no raw timer id here, stash the entry pointer for clearImmediate\r\n  self._id = entry as unknown as ReturnType<typeof _rawSetTimeout>;\r\n  trackTimer(self);\r\n  self.ref = () => {\r\n    if (!entry.cleared) handle.ref();\r\n    return self;\r\n  };\r\n  self.unref = () => {\r\n    handle.unref();\r\n    return self;\r\n  };\r\n  self.hasRef = () => handle.refed;\r\n  self.refresh = () => self; // setImmediate handles have no meaningful refresh\r\n  self[Symbol.toPrimitive] = () => 0 as number;\r\n  _immediateQueue.push(entry);\r\n  if (!_immediateScheduled) {\r\n    _immediateScheduled = true;\r\n    _scheduleCheck();\r\n  }\r\n  return self;\r\n}\r\n\r\nexport function setTimeout(\r\n  callback: (...args: unknown[]) => void,\r\n  ms?: number,\r\n  ...args: unknown[]\r\n): TimeoutLike {\r\n  return makeTimeout(\"Timeout\", callback, ms ?? 0, args, false);\r\n}\r\n\r\nexport function setInterval(\r\n  callback: (...args: unknown[]) => void,\r\n  ms?: number,\r\n  ...args: unknown[]\r\n): TimeoutLike {\r\n  return makeTimeout(\"Interval\", callback, ms ?? 0, args, true);\r\n}\r\n\r\nexport function setImmediate(\r\n  callback: (...args: unknown[]) => void,\r\n  ...args: unknown[]\r\n): TimeoutLike {\r\n  return makeImmediate(callback, args);\r\n}\r\n\r\nexport function clearTimeout(t: unknown): void {\r\n  if (t && typeof t === \"object\" && \"_id\" in t && \"_handle\" in t) {\r\n    const timer = t as TimeoutLike;\r\n    untrackTimer(timer);\r\n    // setImmediate handles use the ImmediateEntry as _id; detect and mark\r\n    const id = timer._id as unknown;\r\n    if (id && typeof id === \"object\" && \"cleared\" in (id as object)) {\r\n      (id as ImmediateEntry).cleared = true;\r\n    } else {\r\n      _rawClearTimeout(timer._id);\r\n    }\r\n    timer._handle.close();\r\n    return;\r\n  }\r\n  // plain numeric id passthrough (legacy code paths)\r\n  _rawClearTimeout(t as number);\r\n}\r\n\r\nexport function clearInterval(t: unknown): void {\r\n  if (t && typeof t === \"object\" && \"_id\" in t && \"_handle\" in t) {\r\n    const timer = t as TimeoutLike;\r\n    untrackTimer(timer);\r\n    _rawClearInterval(timer._id);\r\n    timer._handle.close();\r\n    return;\r\n  }\r\n  _rawClearInterval(t as number);\r\n}\r\n\r\nexport function clearImmediate(t: unknown): void {\r\n  // clearTimeout handles the ImmediateEntry path. kept as a separate export\r\n  // for consumers that pattern-match on the name.\r\n  clearTimeout(t);\r\n}\r\n\r\n// timers/promises API. each awaited call owns a Handle for the life of the\r\n// Promise. aborted promises release via the abort path.\r\nexport const promises = {\r\n  setTimeout: (ms: number, value?: unknown, opts?: { signal?: AbortSignal }) =>\r\n    new Promise((resolve, reject) => {\r\n      const handle = getRegistry().register(\"Timeout\");\r\n      const id = _rawSetTimeout(() => {\r\n        handle.close();\r\n        resolve(value);\r\n      }, normalizeDelay(ms));\r\n      if (opts?.signal) {\r\n        if (opts.signal.aborted) {\r\n          _rawClearTimeout(id);\r\n          handle.close();\r\n          reject(new DOMException(\"The operation was aborted\", \"AbortError\"));\r\n          return;\r\n        }\r\n        opts.signal.addEventListener(\r\n          \"abort\",\r\n          () => {\r\n            _rawClearTimeout(id);\r\n            handle.close();\r\n            reject(new DOMException(\"The operation was aborted\", \"AbortError\"));\r\n          },\r\n          { once: true },\r\n        );\r\n      }\r\n    }),\r\n\r\n  setInterval: setInterval,\r\n\r\n  // routes through the real check-phase queue so ordering matches setImmediate\r\n  setImmediate: (value?: unknown, opts?: { signal?: AbortSignal }) =>\r\n    new Promise((resolve, reject) => {\r\n      if (opts?.signal?.aborted) {\r\n        reject(new DOMException(\"The operation was aborted\", \"AbortError\"));\r\n        return;\r\n      }\r\n      const im = makeImmediate(() => resolve(value), []);\r\n      if (opts?.signal) {\r\n        opts.signal.addEventListener(\r\n          \"abort\",\r\n          () => {\r\n            clearImmediate(im);\r\n            reject(new DOMException(\"The operation was aborted\", \"AbortError\"));\r\n          },\r\n          { once: true },\r\n        );\r\n      }\r\n    }),\r\n\r\n  scheduler: {\r\n    wait: (ms: number) =>\r\n      new Promise((resolve) => {\r\n        const handle = getRegistry().register(\"Timeout\");\r\n        _rawSetTimeout(() => {\r\n          handle.close();\r\n          resolve(undefined);\r\n        }, normalizeDelay(ms));\r\n      }),\r\n  },\r\n};\r\n\r\nexport default {\r\n  setTimeout,\r\n  setInterval,\r\n  setImmediate,\r\n  clearTimeout,\r\n  clearInterval,\r\n  clearImmediate,\r\n  promises,\r\n};\r\n","// Punycode/IDNA encoding for internationalized domain names (deprecated but still required by some packages)\r\n\r\n\r\nconst BASE = 36;\r\nconst TMIN = 1;\r\nconst TMAX = 26;\r\nconst SKEW = 38;\r\nconst DAMP = 700;\r\nconst INITIAL_BIAS = 72;\r\nconst INITIAL_N = 128;\r\nconst DELIMITER = \"-\";\r\n\r\nfunction adapt(delta: number, numPoints: number, firstTime: boolean): number {\r\n  let d = firstTime ? Math.floor(delta / DAMP) : delta >> 1;\r\n  d += Math.floor(d / numPoints);\r\n  let k = 0;\r\n  while (d > ((BASE - TMIN) * TMAX) >> 1) {\r\n    d = Math.floor(d / (BASE - TMIN));\r\n    k += BASE;\r\n  }\r\n  return Math.floor(k + ((BASE - TMIN + 1) * d) / (d + SKEW));\r\n}\r\n\r\nfunction basicToDigit(cp: number): number {\r\n  if (cp - 48 < 10) return cp - 22;\r\n  if (cp - 65 < 26) return cp - 65;\r\n  if (cp - 97 < 26) return cp - 97;\r\n  return BASE;\r\n}\r\n\r\nfunction digitToBasic(digit: number, flag: boolean): number {\r\n  return digit + 22 + 75 * (digit < 26 ? 1 : 0) - ((flag ? 1 : 0) << 5);\r\n}\r\n\r\nexport function decode(input: string): string {\r\n  const output: number[] = [];\r\n  let i = 0;\r\n  let n = INITIAL_N;\r\n  let bias = INITIAL_BIAS;\r\n\r\n  let basic = input.lastIndexOf(DELIMITER);\r\n  if (basic < 0) basic = 0;\r\n\r\n  for (let j = 0; j < basic; ++j) {\r\n    output.push(input.charCodeAt(j));\r\n  }\r\n\r\n  let index = basic > 0 ? basic + 1 : 0;\r\n\r\n  while (index < input.length) {\r\n    const oldi = i;\r\n    let w = 1;\r\n    let k = BASE;\r\n\r\n    while (true) {\r\n      if (index >= input.length) throw new RangeError(\"Invalid input\");\r\n      const digit = basicToDigit(input.charCodeAt(index++));\r\n      if (digit >= BASE) throw new RangeError(\"Invalid input\");\r\n      if (digit > Math.floor((0x7fffffff - i) / w)) throw new RangeError(\"Overflow\");\r\n      i += digit * w;\r\n      const t = k <= bias ? TMIN : k >= bias + TMAX ? TMAX : k - bias;\r\n      if (digit < t) break;\r\n      if (w > Math.floor(0x7fffffff / (BASE - t))) throw new RangeError(\"Overflow\");\r\n      w *= BASE - t;\r\n      k += BASE;\r\n    }\r\n\r\n    const out = output.length + 1;\r\n    bias = adapt(i - oldi, out, oldi === 0);\r\n    if (Math.floor(i / out) > 0x7fffffff - n) throw new RangeError(\"Overflow\");\r\n    n += Math.floor(i / out);\r\n    i %= out;\r\n    output.splice(i++, 0, n);\r\n  }\r\n\r\n  return String.fromCodePoint(...output);\r\n}\r\n\r\nexport function encode(input: string): string {\r\n  const output: string[] = [];\r\n  const inputCodes = Array.from(input).map((c) => c.codePointAt(0)!);\r\n  let n = INITIAL_N;\r\n  let delta = 0;\r\n  let bias = INITIAL_BIAS;\r\n\r\n  for (const cp of inputCodes) {\r\n    if (cp < 0x80) output.push(String.fromCharCode(cp));\r\n  }\r\n\r\n  let h = output.length;\r\n  const b = h;\r\n  if (b > 0) output.push(DELIMITER);\r\n\r\n  while (h < inputCodes.length) {\r\n    let m = 0x7fffffff;\r\n    for (const cp of inputCodes) {\r\n      if (cp >= n && cp < m) m = cp;\r\n    }\r\n\r\n    if (m - n > Math.floor((0x7fffffff - delta) / (h + 1)))\r\n      throw new RangeError(\"Overflow\");\r\n    delta += (m - n) * (h + 1);\r\n    n = m;\r\n\r\n    for (const cp of inputCodes) {\r\n      if (cp < n && ++delta > 0x7fffffff) throw new RangeError(\"Overflow\");\r\n      if (cp === n) {\r\n        let q = delta;\r\n        let k = BASE;\r\n        while (true) {\r\n          const t = k <= bias ? TMIN : k >= bias + TMAX ? TMAX : k - bias;\r\n          if (q < t) break;\r\n          output.push(String.fromCharCode(digitToBasic(t + ((q - t) % (BASE - t)), false)));\r\n          q = Math.floor((q - t) / (BASE - t));\r\n          k += BASE;\r\n        }\r\n        output.push(String.fromCharCode(digitToBasic(q, false)));\r\n        bias = adapt(delta, h + 1, h === b);\r\n        delta = 0;\r\n        ++h;\r\n      }\r\n    }\r\n\r\n    ++delta;\r\n    ++n;\r\n  }\r\n\r\n  return output.join(\"\");\r\n}\r\n\r\nexport function toUnicode(domain: string): string {\r\n  return domain\r\n    .split(\".\")\r\n    .map((label) =>\r\n      label.startsWith(\"xn--\") ? decode(label.slice(4)) : label,\r\n    )\r\n    .join(\".\");\r\n}\r\n\r\nexport function toASCII(domain: string): string {\r\n  return domain\r\n    .split(\".\")\r\n    .map((label) => {\r\n      if (/[^\\x00-\\x7E]/.test(label)) {\r\n        return \"xn--\" + encode(label);\r\n      }\r\n      return label;\r\n    })\r\n    .join(\".\");\r\n}\r\n\r\nexport const ucs2 = {\r\n  decode: (str: string): number[] => Array.from(str).map((c) => c.codePointAt(0)!),\r\n  encode: (codePoints: number[]): string => String.fromCodePoint(...codePoints),\r\n};\r\n\r\nexport const version = \"2.3.1\";\r\n\r\nexport default { decode, encode, toUnicode, toASCII, ucs2, version };\r\n","// OS/filesystem constants (deprecated in Node.js, use os.constants instead)\r\n\r\n\r\nexport const SIGKILL = 9;\r\nexport const SIGTERM = 15;\r\nexport const SIGINT = 2;\r\nexport const SIGHUP = 1;\r\nexport const SIGQUIT = 3;\r\nexport const SIGABRT = 6;\r\nexport const SIGALRM = 14;\r\nexport const SIGUSR1 = 10;\r\nexport const SIGUSR2 = 12;\r\nexport const SIGPIPE = 13;\r\nexport const SIGCHLD = 17;\r\nexport const SIGCONT = 18;\r\nexport const SIGSTOP = 19;\r\nexport const SIGTSTP = 20;\r\n\r\n// File access constants\r\nexport const F_OK = 0;\r\nexport const R_OK = 4;\r\nexport const W_OK = 2;\r\nexport const X_OK = 1;\r\n\r\n// File open constants\r\nexport const O_RDONLY = 0;\r\nexport const O_WRONLY = 1;\r\nexport const O_RDWR = 2;\r\nexport const O_CREAT = 64;\r\nexport const O_EXCL = 128;\r\nexport const O_TRUNC = 512;\r\nexport const O_APPEND = 1024;\r\nexport const O_DIRECTORY = 65536;\r\nexport const O_NOFOLLOW = 131072;\r\nexport const O_SYNC = 1052672;\r\n\r\n// File type constants\r\nexport const S_IFMT = 61440;\r\nexport const S_IFREG = 32768;\r\nexport const S_IFDIR = 16384;\r\nexport const S_IFCHR = 8192;\r\nexport const S_IFBLK = 24576;\r\nexport const S_IFIFO = 4096;\r\nexport const S_IFLNK = 40960;\r\nexport const S_IFSOCK = 49152;\r\n\r\n// Errno constants\r\nexport const EACCES = -13;\r\nexport const EEXIST = -17;\r\nexport const EISDIR = -21;\r\nexport const EMFILE = -24;\r\nexport const ENOENT = -2;\r\nexport const ENOTDIR = -20;\r\nexport const ENOTEMPTY = -39;\r\nexport const EPERM = -1;\r\nexport const EBADF = -9;\r\n\r\nexport const os = {\r\n  constants: {\r\n    signals: {\r\n      SIGKILL,\r\n      SIGTERM,\r\n      SIGINT,\r\n      SIGHUP,\r\n      SIGQUIT,\r\n      SIGABRT,\r\n      SIGALRM,\r\n      SIGUSR1,\r\n      SIGUSR2,\r\n      SIGPIPE,\r\n      SIGCHLD,\r\n      SIGCONT,\r\n      SIGSTOP,\r\n      SIGTSTP,\r\n    },\r\n    errno: {\r\n      EACCES,\r\n      EEXIST,\r\n      EISDIR,\r\n      EMFILE,\r\n      ENOENT,\r\n      ENOTDIR,\r\n      ENOTEMPTY,\r\n      EPERM,\r\n      EBADF,\r\n    },\r\n  },\r\n};\r\n\r\nexport const fs = {\r\n  constants: {\r\n    F_OK,\r\n    R_OK,\r\n    W_OK,\r\n    X_OK,\r\n    O_RDONLY,\r\n    O_WRONLY,\r\n    O_RDWR,\r\n    O_CREAT,\r\n    O_EXCL,\r\n    O_TRUNC,\r\n    O_APPEND,\r\n    O_DIRECTORY,\r\n    O_NOFOLLOW,\r\n    O_SYNC,\r\n    S_IFMT,\r\n    S_IFREG,\r\n    S_IFDIR,\r\n    S_IFCHR,\r\n    S_IFBLK,\r\n    S_IFIFO,\r\n    S_IFLNK,\r\n    S_IFSOCK,\r\n  },\r\n};\r\n\r\nexport default {\r\n  ...os.constants.signals,\r\n  ...os.constants.errno,\r\n  ...fs.constants,\r\n  os,\r\n  fs,\r\n};\r\n","function e(e,n,r){throw new Error(r?`No known conditions for \"${n}\" specifier in \"${e}\" package`:`Missing \"${n}\" specifier in \"${e}\" package`)}function n(n,i,o,f){let s,u,l=r(n,o),c=function(e){let n=new Set([\"default\",...e.conditions||[]]);return e.unsafe||n.add(e.require?\"require\":\"import\"),e.unsafe||n.add(e.browser?\"browser\":\"node\"),n}(f||{}),a=i[l];if(void 0===a){let e,n,r,t;for(t in i)n&&t.length<n.length||(\"/\"===t[t.length-1]&&l.startsWith(t)?(u=l.substring(t.length),n=t):t.length>1&&(r=t.indexOf(\"*\",1),~r&&(e=RegExp(\"^\"+t.substring(0,r)+\"(.*)\"+t.substring(1+r)+\"$\").exec(l),e&&e[1]&&(u=e[1],n=t))));a=i[n]}return a||e(n,l),s=t(a,c),s||e(n,l,1),u&&function(e,n){let r,t=0,i=e.length,o=/[*]/g,f=/[/]$/;for(;t<i;t++)e[t]=o.test(r=e[t])?r.replace(o,n):f.test(r)?r+n:r}(s,u),s}function r(e,n,r){if(e===n||\".\"===n)return\".\";let t=e+\"/\",i=t.length,o=n.slice(0,i)===t,f=o?n.slice(i):n;return\"#\"===f[0]?f:o||!r?\"./\"===f.slice(0,2)?f:\"./\"+f:f}function t(e,n,r){if(e){if(\"string\"==typeof e)return r&&r.add(e),[e];let i,o;if(Array.isArray(e)){for(o=r||new Set,i=0;i<e.length;i++)t(e[i],n,o);if(!r&&o.size)return[...o]}else for(i in e)if(n.has(i))return t(e[i],n,r)}}function i(e,n={}){let t,i=0,o=n.browser,f=n.fields||[\"module\",\"main\"],s=\"string\"==typeof o;for(o&&!f.includes(\"browser\")&&(f.unshift(\"browser\"),s&&(o=r(e.name,o,!0)));i<f.length;i++)if(t=e[f[i]]){if(\"string\"==typeof t);else{if(\"object\"!=typeof t||\"browser\"!=f[i])continue;if(s&&(t=t[o],null==t))return o}return\"string\"==typeof t?\"./\"+t.replace(/^\\.?\\//,\"\"):t}}function o(e,r,t){let i,o=e.exports;if(o){if(\"string\"==typeof o)o={\".\":o};else for(i in o){\".\"!==i[0]&&(o={\".\":o});break}return n(e.name,o,r||\".\",t)}}function f(e,r,t){if(e.imports)return n(e.name,e.imports,r,t)}function s(e,n,t){return\"#\"===(n=r(e.name,n||\".\"))[0]?f(e,n,t):o(e,n,t)}export{o as exports,f as imports,i as legacy,s as resolve};","// ScriptEngine — JS execution engine with require(), module resolution,\n// ESM-to-CJS conversion, and Node.js polyfills. Runs in the browser.\n\nimport { MemoryVolume } from \"./memory-volume\";\nimport type {\n  IScriptEngine,\n  ExecutionOutcome,\n  EngineConfig,\n  LoadedModule,\n} from \"./engine-types\";\nimport type { PackageManifest } from \"./types/manifest\";\nimport { quickDigest } from \"./helpers/digest\";\nimport { LRUCache as _LRUCache } from \"./memory-handler\";\nimport { bytesToBase64, bytesToHex } from \"./helpers/byte-encoding\";\nimport { buildFileSystemBridge, FsBridge } from \"./polyfills/fs\";\nimport * as pathPolyfill from \"./polyfills/path\";\nimport {\n  RESOLVE_EXTENSIONS,\n  MAIN_FIELD_EXTENSIONS,\n  INDEX_FILES,\n  IMPORTS_FIELD_EXTENSIONS,\n  LIMITS,\n} from \"./constants/config\";\nimport { buildProcessEnv, ProcessObject } from \"./polyfills/process\";\nimport * as httpPolyfill from \"./polyfills/http\";\nimport {\n  installFetchHeadersSetCookieParity,\n  installNodeFetchClassParity,\n  patchFetchNodeAdapterExports,\n} from \"./polyfills/fetch-response\";\n\ninstallFetchHeadersSetCookieParity();\ninstallNodeFetchClassParity();\nimport * as httpsPolyfill from \"./polyfills/https\";\nimport * as tcpPolyfill from \"./polyfills/net\";\nimport eventBusPolyfill from \"./polyfills/events\";\nimport streamPolyfill from \"./polyfills/stream\";\nimport * as urlPolyfill from \"./polyfills/url\";\nimport * as qsPolyfill from \"./polyfills/querystring\";\nimport * as helpersPolyfill from \"./polyfills/util\";\nimport * as ttyPolyfill from \"./polyfills/tty\";\nimport * as osPolyfill from \"./polyfills/os\";\nimport * as hashingPolyfill from \"./polyfills/crypto\";\nimport * as compressionPolyfill from \"./polyfills/zlib\";\nimport * as dnsPolyfill from \"./polyfills/dns\";\nimport bufferPolyfill from \"./polyfills/buffer\";\n// child_process is lazy-loaded to avoid pulling in the shell at import time\nlet _shellExecPolyfill: any = null;\nlet _initShellExec: ((vol: any) => void) | null = null;\nconst shellExecProxy = new Proxy({} as any, {\n  get(_target, prop) {\n    if (!_shellExecPolyfill) return undefined;\n    return _shellExecPolyfill[prop];\n  },\n  ownKeys() {\n    if (!_shellExecPolyfill) return [];\n    return Reflect.ownKeys(_shellExecPolyfill);\n  },\n  getOwnPropertyDescriptor(_target, prop) {\n    if (!_shellExecPolyfill) return undefined;\n    return Object.getOwnPropertyDescriptor(_shellExecPolyfill, prop);\n  },\n  has(_target, prop) {\n    if (!_shellExecPolyfill) return false;\n    return prop in _shellExecPolyfill;\n  },\n});\n\n// Set eagerly so require('child_process') works sync in workers.\n// The async .then() in the constructor fires too late for top-level require() calls.\nexport function setChildProcessPolyfill(mod: any): void {\n  _shellExecPolyfill = mod;\n  _initShellExec = mod.initShellExec;\n}\nimport { getProxyInstance } from \"./request-proxy\";\nimport * as watcherPolyfill from \"./polyfills/chokidar\";\nimport * as wsPolyfill from \"./polyfills/ws\";\nimport * as macEventsPolyfill from \"./polyfills/fsevents\";\nimport * as scannerPolyfill from \"./polyfills/readdirp\";\nimport * as moduleSysPolyfill from \"./polyfills/module\";\nimport * as perfPolyfill from \"./polyfills/perf_hooks\";\nimport * as threadPoolPolyfill from \"./polyfills/worker_threads\";\nimport * as esbuildPolyfill from \"./polyfills/esbuild\";\nimport * as rollupPolyfill from \"./polyfills/rollup\";\nimport * as v8Polyfill from \"./polyfills/v8\";\nimport * as lineReaderPolyfill from \"./polyfills/readline\";\nimport * as tlsPolyfill from \"./polyfills/tls\";\nimport * as http2Polyfill from \"./polyfills/http2\";\nimport * as clusterPolyfill from \"./polyfills/cluster\";\nimport * as udpPolyfill from \"./polyfills/dgram\";\nimport * as vmPolyfill from \"./polyfills/vm\";\nimport * as debugPolyfill from \"./polyfills/inspector\";\nimport * as asyncCtxPolyfill from \"./polyfills/async_hooks\";\nimport * as domainPolyfill from \"./polyfills/domain\";\nimport * as tracePolyfill from \"./polyfills/diagnostics_channel\";\nimport * as consolePolyfill from \"./polyfills/console\";\nimport * as replPolyfill from \"./polyfills/repl\";\nimport * as testPolyfill from \"./polyfills/test\";\nimport * as traceEventsPolyfill from \"./polyfills/trace_events\";\nimport * as wasiPolyfill from \"./polyfills/wasi\";\nimport * as seaPolyfill from \"./polyfills/sea\";\nimport * as sqlitePolyfill from \"./polyfills/sqlite\";\nimport * as quicPolyfill from \"./polyfills/quic\";\nimport * as lightningcssPolyfill from \"./polyfills/lightningcss\";\nimport { createNapiWorkerFactory, isNapiWasiWorkerScript, prewarmWasiPool } from \"./helpers/napi-wasm-worker\";\nimport {\n  promises as streamPromises,\n  Readable,\n  Writable,\n  Duplex,\n  Transform,\n  PassThrough,\n} from \"./polyfills/stream\";\nimport { promises as dnsPromises } from \"./polyfills/dns\";\nimport { promises as readlinePromises } from \"./polyfills/readline\";\n\nimport assertPolyfill from \"./polyfills/assert\";\nimport stringDecoderPolyfill from \"./polyfills/string_decoder\";\nimport timersPolyfill from \"./polyfills/timers\";\nimport { promises as timersPromises } from \"./polyfills/timers\";\nimport * as punycodePolyfill from \"./polyfills/punycode\";\nimport constantsPolyfill from \"./polyfills/constants\";\nimport {\n  resolve as resolveExports,\n  imports as resolveImports,\n} from \"resolve.exports\";\nimport {\n  esmToCjs,\n  collectEsmCjsPatches,\n  hasTopLevelAwait,\n  stripTopLevelAwait,\n} from \"./syntax-transforms\";\nimport {\n  getCachedModule,\n  precompileWasm,\n  compileWasmInWorker,\n  registerCompiledModule,\n  PRECOMPILE_THRESHOLD,\n} from \"./helpers/wasm-cache\";\nimport { buildCdnWasmUrl } from \"./helpers/wasm-cdn\";\nimport { getRegistry } from \"./helpers/event-loop\";\nimport * as acorn from \"acorn\";\n\n// ── TypeScript type stripper ──\n// Regex-based stripping of TS syntax so acorn/eval can handle it at runtime.\n\nfunction stripTypeScript(source: string): string {\n  let s = source;\n\n  s = s.replace(\n    /^\\s*declare\\s+(module|namespace|global)\\s+[^{]*\\{[^}]*(?:\\{[^}]*\\}[^}]*)*\\}/gm,\n    \"\",\n  );\n  s = s.replace(\n    /^\\s*declare\\s+(?:const|let|var|function|class|enum|type|interface)\\s+[^;\\n]+[;\\n]/gm,\n    \"\",\n  );\n\n  s = s.replace(\n    /^\\s*(?:export\\s+)?interface\\s+\\w+(?:\\s+extends\\s+[^{]+)?\\s*\\{[^}]*(?:\\{[^}]*\\}[^}]*)*\\}/gm,\n    \"\",\n  );\n\n  s = s.replace(/^\\s*(?:export\\s+)?type\\s+\\w+(?:<[^>]*>)?\\s*=\\s*[^;]+;/gm, \"\");\n\n  s = s.replace(\n    /^\\s*export\\s+type\\s*\\{[^}]*\\}\\s*(?:from\\s*['\"][^'\"]*['\"])?\\s*;?/gm,\n    \"\",\n  );\n  s = s.replace(\n    /^\\s*import\\s+type\\s+(?:\\{[^}]*\\}|\\w+)\\s*(?:from\\s*['\"][^'\"]*['\"])?\\s*;?/gm,\n    \"\",\n  );\n\n  s = s.replace(/\\bas\\s+const\\b/g, \"\");\n  s = s.replace(/\\s+as\\s+(?:[A-Z][\\w.<>,\\s|&\\[\\]]*)/g, \"\");\n\n  s = s.replace(\n    /(function\\s+\\w+|(?:const|let|var)\\s+\\w+\\s*=\\s*(?:async\\s+)?(?:function\\s*)?)\\s*<[^(]*?>\\s*\\(/g,\n    \"$1(\",\n  );\n\n  // Strip type annotations from params and return types\n  s = s.replace(\n    /:\\s*(?:readonly\\s+)?(?:[A-Z][\\w.<>,\\s|&\\[\\]]*|string|number|boolean|void|any|never|unknown|null|undefined|object|bigint)(?:\\s*\\|\\s*(?:[A-Z][\\w.<>,\\s|&\\[\\]]*|string|number|boolean|void|any|never|unknown|null|undefined|object|bigint))*/g,\n    (match, offset) => {\n      // Heuristic: only strip if we're in a signature context, not object literals\n      const before = s.slice(Math.max(0, offset - 40), offset);\n      if (/[,(?]\\s*\\w+\\s*\\??$/.test(before)) return \"\";\n      if (/\\)\\s*$/.test(before)) return \"\";\n      if (/\\(\\s*\\w+\\s*\\??$/.test(before)) return \"\";\n      if (/\\b(?:const|let|var)\\s+\\w+$/.test(before)) return \"\";\n      return match;\n    },\n  );\n\n  s = s.replace(/(\\w)!\\./g, \"$1.\");\n  s = s.replace(/(\\w)!\\)/g, \"$1)\");\n  s = s.replace(/(\\w)!\\,/g, \"$1,\");\n\n  s = s.replace(\n    /(?<!=)\\s*<(?:string|number|boolean|any|unknown|never|void|object|bigint|Record|Partial|Required|Readonly|Pick|Omit|Extract|Exclude|Array|Promise|Set|Map)\\b[^>]*>/g,\n    \"\",\n  );\n\n  // Convert enums to plain objects\n  s = s.replace(\n    /^\\s*(?:export\\s+)?(?:const\\s+)?enum\\s+(\\w+)\\s*\\{([^}]*)\\}/gm,\n    (_, name, body) => {\n      const entries = body\n        .split(\",\")\n        .map((e: string) => e.trim())\n        .filter(Boolean);\n      const obj: string[] = [];\n      let autoVal = 0;\n      for (const entry of entries) {\n        const eqIdx = entry.indexOf(\"=\");\n        if (eqIdx !== -1) {\n          const key = entry.slice(0, eqIdx).trim();\n          const val = entry.slice(eqIdx + 1).trim();\n          obj.push(`${JSON.stringify(key)}: ${val}`);\n          const numVal = Number(val);\n          if (!isNaN(numVal)) autoVal = numVal + 1;\n        } else {\n          obj.push(`${JSON.stringify(entry)}: ${autoVal}`);\n          autoVal++;\n        }\n      }\n      return `var ${name} = {${obj.join(\", \")}};`;\n    },\n  );\n\n  s = s.replace(/^\\s*(public|private|protected)?\\s*readonly\\s+/gm, \"$1 \");\n  s = s.replace(/\\b(public|private|protected)\\s+(?=\\w+[\\s,):])/g, \"\");\n  s = s.replace(/\\babstract\\s+(class|extends)/g, \"$1\");\n  s = s.replace(/\\bimplements\\s+[\\w.,\\s<>]+(?=\\s*\\{)/g, \"\");\n  s = s.replace(/\\boverride\\s+(?=\\w)/g, \"\");\n\n  return s;\n}\n\nfunction isTypeScriptFile(filename: string): boolean {\n  const clean = filename.split(\"?\")[0];\n  if (clean.endsWith(\".ts\") || clean.endsWith(\".tsx\") || clean.endsWith(\".mts\"))\n    return true;\n  // Vite SFC query params like ?type=script&lang.ts\n  if (filename.includes(\"lang.ts\") || filename.includes(\"lang=ts\")) return true;\n  return false;\n}\n\n// CSS files must never go through stripTypeScript\nfunction isCSSFile(filename: string): boolean {\n  const clean = filename.split(\"?\")[0];\n  if (\n    clean.endsWith(\".css\") ||\n    clean.endsWith(\".scss\") ||\n    clean.endsWith(\".sass\") ||\n    clean.endsWith(\".less\") ||\n    clean.endsWith(\".styl\") ||\n    clean.endsWith(\".stylus\") ||\n    clean.endsWith(\".postcss\")\n  )\n    return true;\n  if (filename.includes(\"type=style\")) return true;\n  if (/lang[.=](?:css|scss|sass|less|styl|stylus|postcss)/.test(filename))\n    return true;\n  return false;\n}\n\n// Fallback heuristic when filename doesn't indicate TS\nfunction looksLikeTypeScript(source: string): boolean {\n  return (\n    /\\b(?:interface|type)\\s+\\w+/.test(source) ||\n    /:\\s*(?:string|number|boolean|void|any|never|unknown|Record|Array|Promise)\\b/.test(\n      source,\n    ) ||\n    /(?:as\\s+(?:string|number|boolean|any|const)\\b)/.test(source)\n  );\n}\n\n// ── AST walk helper ──\nfunction traverseAst(node: any, visitor: (n: any) => void): void {\n  if (!node || typeof node !== \"object\") return;\n  if (typeof node.type === \"string\") visitor(node);\n  for (const key in node) {\n    if (\n      key === \"type\" ||\n      key === \"start\" ||\n      key === \"end\" ||\n      key === \"loc\" ||\n      key === \"range\"\n    )\n      continue;\n    const val = node[key];\n    if (val && typeof val === \"object\") {\n      if (Array.isArray(val)) {\n        for (let i = 0; i < val.length; i++) {\n          const item = val[i];\n          if (item && typeof item === \"object\" && typeof item.type === \"string\")\n            traverseAst(item, visitor);\n        }\n      } else if (typeof val.type === \"string\") {\n        traverseAst(val, visitor);\n      }\n    }\n  }\n}\n\n// ── Dynamic import regex fallback ──\nfunction rewriteDynamicImportsRegex(source: string): string {\n  return source.replace(/(?<![.$\\w])import\\s*\\(/g, \"__asyncLoad(\");\n}\n\n// ── ESM → CJS conversion ──\nfunction convertModuleSyntax(source: string, filePath: string): string {\n  if (!/\\bimport\\b|\\bexport\\b/.test(source)) return source;\n  try {\n    return convertViaAst(source, filePath);\n  } catch (astErr) {\n    _nativeConsole.warn(\n      \"[convertModuleSyntax] AST parse failed for\",\n      filePath,\n      \"falling back to regex:\",\n      astErr instanceof Error ? astErr.message : String(astErr),\n    );\n    return convertViaRegex(source, filePath);\n  }\n}\n\nfunction convertViaAst(source: string, filePath: string): string {\n  const ast = acorn.parse(source, {\n    ecmaVersion: \"latest\",\n    sourceType: \"module\",\n  }) as any;\n  const patches: Array<[number, number, string]> = [];\n\n  // collect import.meta and import() patches\n  traverseAst(ast, (node: any) => {\n    if (\n      node.type === \"MetaProperty\" &&\n      node.meta?.name === \"import\" &&\n      node.property?.name === \"meta\"\n    ) {\n      patches.push([node.start, node.end, \"import_meta\"]);\n    }\n    if (node.type === \"ImportExpression\") {\n      patches.push([node.start, node.start + 6, \"__asyncLoad\"]);\n    }\n  });\n\n  const hasImportDecl = ast.body.some(\n    (n: any) => n.type === \"ImportDeclaration\",\n  );\n  const hasExportDecl = ast.body.some((n: any) => n.type?.startsWith(\"Export\"));\n\n  // collect ESM→CJS patches from the same AST (no second parse)\n  if (hasImportDecl || hasExportDecl) {\n    collectEsmCjsPatches(ast, source, patches);\n  }\n\n  // apply all patches in one pass\n  let output = source;\n  patches.sort((a, b) => b[0] - a[0] || b[1] - a[1]);\n  for (const [s, e, r] of patches)\n    output = output.slice(0, s) + r + output.slice(e);\n\n  if (hasExportDecl) {\n    // wrapper sets __esModule in outer scope (see ESM_SENTINEL). doing it\n    // here breaks if user code shadows Object (eg typebox 1.x). #56\n    output = ESM_SENTINEL + output;\n  }\n\n  // .mjs files with `const require = createRequire(...)` hit TDZ after esmToCjs\n  output = demoteLexicalRequire(output);\n\n  return output;\n}\n\n// stamped by convertModuleSyntax, stripped by buildModuleWrapper. #56\nconst ESM_SENTINEL = \"/*@nodepod-esm*/\\n\";\n\n// Demote `const/let require =` to plain assignment to avoid TDZ with esmToCjs-generated require() calls\nfunction demoteLexicalRequire(code: string): string {\n  if (!/\\b(?:const|let)\\s+require\\s*=/.test(code)) return code;\n  return code.replace(/\\b(const|let)\\s+(require)\\s*=/g, \"require =\");\n}\n\n// Builds the IIFE wrapper that sandboxes user code with shimmed globals\nfunction buildModuleWrapper(\n  code: string,\n  opts: {\n    async?: boolean;\n    useNativePromise?: boolean;\n    includeViteVars?: boolean;\n    hideBrowserGlobals?: boolean;\n    wasmHelpers?: boolean;\n  } = {},\n): string {\n  const {\n    async: isAsync = false,\n    useNativePromise = false,\n    includeViteVars = true,\n    hideBrowserGlobals = true,\n    wasmHelpers = false,\n  } = opts;\n\n  const promiseVar = useNativePromise ? \"globalThis.Promise\" : \"$SyncPromise\";\n  const fnKeyword = isAsync ? \"async function\" : \"function\";\n\n  // strip sentinel, emit __esModule in outer scope below\n  const isEsmModule = code.startsWith(ESM_SENTINEL);\n  if (isEsmModule) code = code.slice(ESM_SENTINEL.length);\n\n  let vars = `var exports = $exports;\nvar require = $require;\nvar module = $module;\nvar __filename = $filename;\nvar __dirname = $dirname;\n`;\n  if (includeViteVars) {\n    vars += `var __vite_injected_original_filename = $filename;\nvar __vite_injected_original_dirname = $dirname;\nvar __vite_injected_original_import_meta_url = \"file://\" + $filename;\n`;\n  }\n  vars += `var process = $process;\nvar console = $console;\nvar import_meta = $importMeta;\nvar __asyncLoad = $asyncLoad;\nvar __syncAwait = $syncAwait;\nvar Promise = ${promiseVar};\nvar global = globalThis;\n`;\n  if (hideBrowserGlobals) {\n    vars += `var document = undefined;\nvar window = undefined;\nvar HTMLElement = undefined;\n`;\n  }\n  vars += `globalThis.process = $process;\nglobalThis.console = $console;\nglobalThis.require = $require;\nglobal.process = $process;\nglobal.console = $console;\nglobal.require = $require;\n`;\n  if (wasmHelpers) {\n    vars += `async function __wasmCompile(bytes) { return WebAssembly.compile(bytes); }\nasync function __wasmInstantiate(moduleOrBytes, imports) {\n  var mod = moduleOrBytes;\n  if (moduleOrBytes instanceof ArrayBuffer || ArrayBuffer.isView(moduleOrBytes)) {\n    mod = await WebAssembly.compile(moduleOrBytes);\n  }\n  var result = await WebAssembly.instantiate(mod, imports);\n  return result.instance || result;\n}\n`;\n  }\n  if (isEsmModule) {\n    // runs in outer scope, above the inner IIFE that holds user code\n    vars += `Object.defineProperty($exports, \"__esModule\", { value: true });\n`;\n  }\n\n  return `(function($exports, $require, $module, $filename, $dirname, $process, $console, $importMeta, $asyncLoad, $syncAwait, $SyncPromise) {\n${vars}return (${fnKeyword}() {\n${code}\n}).call(this);\n})`;\n}\n\nfunction convertViaRegex(source: string, filePath: string): string {\n  let output = source;\n  output = output.replace(/\\bimport\\.meta\\.url\\b/g, `\"file://${filePath}\"`);\n  output = output.replace(\n    /\\bimport\\.meta\\.dirname\\b/g,\n    `\"${pathPolyfill.dirname(filePath)}\"`,\n  );\n  output = output.replace(/\\bimport\\.meta\\.filename\\b/g, `\"${filePath}\"`);\n  output = output.replace(\n    /\\bimport\\.meta\\b/g,\n    `({ url: \"file://${filePath}\", dirname: \"${pathPolyfill.dirname(filePath)}\", filename: \"${filePath}\" })`,\n  );\n  output = rewriteDynamicImportsRegex(output);\n\n  const hasImport = /\\bimport\\s+[\\w{*'\"]/m.test(source);\n  const hasExport =\n    /\\bexport\\s+(?:default|const|let|var|function|class|{|\\*)/m.test(source);\n  if (hasImport || hasExport) {\n    output = esmToCjs(output);\n    if (hasExport) {\n      // see ESM_SENTINEL above. #56\n      output = ESM_SENTINEL + output;\n    }\n  }\n\n  output = demoteLexicalRequire(output);\n\n  return output;\n}\n\n// ── Sync promise infrastructure ──\n// SyncThenable and SyncPromise let __syncAwait unwrap values without hitting\n// the microtask queue. This is how require() can work synchronously even when\n// modules use async patterns internally.\n\n// .then() fires synchronously when value is already resolved\nclass SyncThenable<T> {\n  private _value: T;\n  constructor(value: T) {\n    this._value = value;\n  }\n  then<R>(\n    onFulfilled?: ((v: T) => R) | null,\n    _onRejected?: ((e: any) => R) | null,\n  ): SyncThenable<R> | this {\n    if (onFulfilled) return new SyncThenable(onFulfilled(this._value));\n    return this;\n  }\n  catch(_onRejected?: ((e: any) => unknown) | null): this {\n    return this;\n  }\n  finally(onFinally?: (() => void) | null): this {\n    if (onFinally) onFinally();\n    return this;\n  }\n}\n\n// Try to synchronously unwrap a thenable. Returns the value if .then() fires sync,\n// otherwise returns the original value (possibly a native Promise).\nfunction syncAwait(val: unknown): unknown {\n  if (val && typeof (val as any).then === \"function\") {\n    let resolved: unknown;\n    let gotSync = false;\n    (val as any).then((v: unknown) => {\n      resolved = v;\n      gotSync = true;\n    });\n    if (gotSync) return resolved;\n  }\n  return val;\n}\n\n// Promise subclass that resolves .then() synchronously when the executor resolves sync.\n// Needed because async functions always return native Promises, but when their body\n// resolves synchronously we want __syncAwait to unwrap the result.\n// Injected as `Promise` inside module wrappers.\nfunction createSyncPromise(): typeof Promise {\n  const NativePromise = Promise;\n\n  class SyncPromise<T> extends NativePromise<T> {\n    private _syncValue: T | undefined;\n    private _syncResolved = false;\n    private _syncRejected = false;\n    private _syncError: any;\n\n    constructor(\n      executor: (\n        resolve: (value: T | PromiseLike<T>) => void,\n        reject: (reason?: any) => void,\n      ) => void,\n    ) {\n      let syncVal: T | undefined;\n      let syncResolved = false;\n      let syncRejected = false;\n      let syncErr: any;\n\n      super((resolve, reject) => {\n        executor(\n          (value) => {\n            // Try sync unwrap. If it can't resolve sync, let native handle it.\n            // Without this, p-limit's resolve(asyncPromise) gets treated as\n            // sync-resolved with the Promise object as the value.\n            if (\n              value &&\n              typeof value === \"object\" &&\n              typeof (value as any).then === \"function\"\n            ) {\n              let innerResolved = false;\n              let innerVal: T | undefined;\n              let innerRejected = false;\n              let innerErr: any;\n              (value as any).then(\n                (v: T) => {\n                  innerVal = v;\n                  innerResolved = true;\n                },\n                (e: any) => {\n                  innerErr = e;\n                  innerRejected = true;\n                },\n              );\n              if (innerResolved) {\n                syncVal = innerVal;\n                syncResolved = true;\n                resolve(innerVal!);\n                return;\n              }\n              if (innerRejected) {\n                syncRejected = true;\n                syncErr = innerErr;\n                reject(innerErr);\n                return;\n              }\n              resolve(value);\n              return;\n            }\n            syncVal = value as T;\n            syncResolved = true;\n            resolve(value);\n          },\n          (reason) => {\n            syncRejected = true;\n            syncErr = reason;\n            reject(reason);\n          },\n        );\n      });\n\n      this._syncValue = syncVal;\n      this._syncResolved = syncResolved;\n      this._syncRejected = syncRejected;\n      this._syncError = syncErr;\n\n      // Suppress native unhandledrejection — our .then() handles these sync\n      if (syncRejected) {\n        NativePromise.prototype.catch.call(this, () => {});\n      }\n    }\n\n    then<TResult1 = T, TResult2 = never>(\n      onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n      onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n    ): Promise<TResult1 | TResult2> {\n      if (this._syncResolved && onFulfilled) {\n        try {\n          const result = onFulfilled(this._syncValue as T);\n          if (\n            result &&\n            typeof result === \"object\" &&\n            typeof (result as any).then === \"function\"\n          ) {\n            let innerVal: any;\n            let innerResolved = false;\n            let innerRejected = false;\n            let innerErr: any;\n            (result as any).then(\n              (v: any) => {\n                innerVal = v;\n                innerResolved = true;\n              },\n              (e: any) => {\n                innerErr = e;\n                innerRejected = true;\n              },\n            );\n            if (innerResolved) {\n              return new SyncPromise<TResult1>((res) => res(innerVal)) as any;\n            }\n            if (innerRejected) {\n              if (onRejected) {\n                return new SyncPromise<TResult2>((res) =>\n                  res(onRejected(innerErr) as TResult2),\n                ) as any;\n              }\n              return new SyncPromise<TResult2>((_, rej) =>\n                rej(innerErr),\n              ) as any;\n            }\n            return NativePromise.resolve(result).then(null, onRejected) as any;\n          }\n          return new SyncPromise<TResult1>((res) =>\n            res(result as TResult1),\n          ) as any;\n        } catch (e) {\n          if (onRejected) {\n            return new SyncPromise<TResult2>((res) =>\n              res(onRejected(e) as TResult2),\n            ) as any;\n          }\n          // Must be SyncPromise so downstream .catch() fires sync (p-locate depends on this)\n          return new SyncPromise<TResult2>((_, rej) => rej(e)) as any;\n        }\n      }\n      if (this._syncRejected && onRejected) {\n        try {\n          const result = onRejected(this._syncError);\n          return new SyncPromise<TResult2>((res) =>\n            res(result as TResult2),\n          ) as any;\n        } catch (e) {\n          return new SyncPromise<TResult2>((_, rej) => rej(e)) as any;\n        }\n      }\n      if (this._syncRejected && !onRejected) {\n        return new SyncPromise<TResult2>((_, rej) =>\n          rej(this._syncError),\n        ) as any;\n      }\n      return super.then(onFulfilled, onRejected);\n    }\n  }\n\n  // instanceof must work for native Promises too since we inject SyncPromise as `Promise`\n  Object.defineProperty(SyncPromise, Symbol.hasInstance, {\n    value: (instance: any) => instance instanceof NativePromise,\n    configurable: true,\n  });\n\n  (SyncPromise as any).resolve = (value: any) => {\n    if (\n      value &&\n      typeof value === \"object\" &&\n      typeof (value as any).then === \"function\"\n    ) {\n      return new SyncPromise((res) => res(value));\n    }\n    return new SyncPromise((res) => res(value));\n  };\n  (SyncPromise as any).reject = (reason: any) =>\n    new SyncPromise((_, rej) => rej(reason));\n\n  // all/race/allSettled/any return SyncPromise so __syncAwait can unwrap them\n  (SyncPromise as any).all = (iterable: Iterable<any>) => {\n    const arr = Array.from(iterable);\n    const results: any[] = new Array(arr.length);\n    let allSync = true;\n    for (let i = 0; i < arr.length; i++) {\n      const v = arr[i];\n      if (v instanceof SyncPromise) {\n        if ((v as any)._syncResolved) {\n          results[i] = (v as any)._syncValue;\n        } else if ((v as any)._syncRejected) {\n          return new SyncPromise((_, rej) => rej((v as any)._syncError));\n        } else {\n          allSync = false;\n          break;\n        }\n      } else if (v && typeof v === \"object\" && typeof v.then === \"function\") {\n        let probed = false,\n          pVal: any;\n        v.then((x: any) => {\n          pVal = x;\n          probed = true;\n        });\n        if (probed) {\n          results[i] = pVal;\n        } else {\n          allSync = false;\n          break;\n        }\n      } else {\n        results[i] = v;\n      }\n    }\n    if (allSync) {\n      return new SyncPromise((res: any) => res(results));\n    }\n    return new SyncPromise((res: any, rej: any) => {\n      NativePromise.all(arr).then(res, rej);\n    });\n  };\n\n  (SyncPromise as any).allSettled = (iterable: Iterable<any>) => {\n    const arr = Array.from(iterable);\n    const results: any[] = new Array(arr.length);\n    let allSync = true;\n    for (let i = 0; i < arr.length; i++) {\n      const v = arr[i];\n      if (v instanceof SyncPromise) {\n        if ((v as any)._syncResolved) {\n          results[i] = { status: \"fulfilled\", value: (v as any)._syncValue };\n        } else if ((v as any)._syncRejected) {\n          results[i] = { status: \"rejected\", reason: (v as any)._syncError };\n        } else {\n          allSync = false;\n          break;\n        }\n      } else if (v && typeof v === \"object\" && typeof v.then === \"function\") {\n        allSync = false;\n        break;\n      } else {\n        results[i] = { status: \"fulfilled\", value: v };\n      }\n    }\n    if (allSync) {\n      return new SyncPromise((res: any) => res(results));\n    }\n    return new SyncPromise((res: any, rej: any) => {\n      NativePromise.allSettled(arr).then(res, rej);\n    });\n  };\n\n  (SyncPromise as any).race = (iterable: Iterable<any>) => {\n    const arr = Array.from(iterable);\n    for (const v of arr) {\n      if (v instanceof SyncPromise) {\n        if ((v as any)._syncResolved) {\n          return new SyncPromise((res: any) => res((v as any)._syncValue));\n        }\n        if ((v as any)._syncRejected) {\n          return new SyncPromise((_, rej: any) => rej((v as any)._syncError));\n        }\n      } else if (\n        !(v && typeof v === \"object\" && typeof v.then === \"function\")\n      ) {\n        return new SyncPromise((res: any) => res(v));\n      }\n    }\n    return new SyncPromise((res: any, rej: any) => {\n      NativePromise.race(arr).then(res, rej);\n    });\n  };\n\n  (SyncPromise as any).any = (iterable: Iterable<any>) => {\n    const arr = Array.from(iterable);\n    for (const v of arr) {\n      if (v instanceof SyncPromise && (v as any)._syncResolved) {\n        return new SyncPromise((res: any) => res((v as any)._syncValue));\n      }\n      if (!(v && typeof v === \"object\" && typeof v.then === \"function\")) {\n        return new SyncPromise((res: any) => res(v));\n      }\n    }\n    let allSyncRejected = true;\n    const errors: any[] = [];\n    for (const v of arr) {\n      if (v instanceof SyncPromise && (v as any)._syncRejected) {\n        errors.push((v as any)._syncError);\n      } else {\n        allSyncRejected = false;\n        break;\n      }\n    }\n    if (allSyncRejected && arr.length > 0) {\n      return new SyncPromise((_, rej: any) =>\n        rej(new AggregateError(errors, \"All promises were rejected\")),\n      );\n    }\n    return new SyncPromise((res: any, rej: any) => {\n      NativePromise.any(arr).then(res, rej);\n    });\n  };\n\n  return SyncPromise as any;\n}\n\nconst SyncPromiseClass = createSyncPromise();\n\nfunction toImportNamespace(loaded: unknown): Record<string, unknown> {\n  if (loaded == null || (typeof loaded !== \"object\" && typeof loaded !== \"function\")) {\n    return { default: loaded };\n  }\n\n  const mod = loaded as Record<string, unknown>;\n  const ns: Record<string, unknown> = {};\n  for (const key of Object.getOwnPropertyNames(mod)) {\n    ns[key] = mod[key];\n  }\n\n  // import() should yield a module namespace like Node. Hoist named exports\n  // off default when the CJS interop layer only put them there.\n  const def = mod.default;\n  if (def && (typeof def === \"object\" || typeof def === \"function\")) {\n    for (const key of Object.getOwnPropertyNames(def)) {\n      if (key === \"default\") continue;\n      if (ns[key] === undefined) ns[key] = (def as Record<string, unknown>)[key];\n    }\n    if (ns.default === undefined) ns.default = def;\n  }\n\n  return ns;\n}\n\nfunction makeDynamicLoader(\n  resolver: ResolverFn,\n): (specifier: string) => SyncThenable<unknown> {\n  return (specifier: string): SyncThenable<unknown> => {\n    const loaded = resolver(specifier);\n    return new SyncThenable(toImportNamespace(loaded));\n  };\n}\n\n// ── Types ──\nexport interface ModuleRecord {\n  id: string;\n  filename: string;\n  exports: unknown;\n  loaded: boolean;\n  children: ModuleRecord[];\n  paths: string[];\n  parent: ModuleRecord | null;\n}\n\nexport interface EngineOptions {\n  cwd?: string;\n  env?: Record<string, string>;\n  onConsole?: (method: string, args: unknown[]) => void;\n  onStdout?: (data: string) => void;\n  onStderr?: (data: string) => void;\n  workerThreadsOverride?: {\n    isMainThread: boolean;\n    parentPort: unknown;\n    workerData: unknown;\n    threadId: number;\n  };\n  handler?: import(\"./memory-handler\").MemoryHandler;\n  enableSharedArrayBuffer?: boolean;\n  /** Injected transform cache (e.g. the shared worker LRU). Takes precedence\n   *  over `handler`'s cache. Must behave like Map<string, string>. */\n  transformCache?: Map<string, string>;\n}\n\nexport interface ResolverFn {\n  (id: string): unknown;\n  resolve: (id: string, options?: { paths?: string[] }) => string;\n  cache: Record<string, ModuleRecord>;\n  extensions: Record<string, unknown>;\n  main: ModuleRecord | null;\n  _ownerRecord?: ModuleRecord;\n}\n\n// Mutable copy so packages can monkey-patch frozen polyfill namespaces\nfunction shallowCopy(source: Record<string, unknown>): Record<string, unknown> {\n  const copy: Record<string, unknown> = {};\n  for (const k of Object.keys(source)) copy[k] = source[k];\n  return copy;\n}\n\n// ── Core module registry ──\nconst CORE_MODULES: Record<string, unknown> = {\n  path: pathPolyfill,\n  http: shallowCopy(httpPolyfill as unknown as Record<string, unknown>),\n  https: shallowCopy(httpsPolyfill as unknown as Record<string, unknown>),\n  net: tcpPolyfill,\n  events: eventBusPolyfill,\n  stream: streamPolyfill,\n  buffer: bufferPolyfill,\n  url: urlPolyfill,\n  querystring: qsPolyfill,\n  util: helpersPolyfill,\n  tty: ttyPolyfill,\n  os: osPolyfill,\n  crypto: shallowCopy(hashingPolyfill as unknown as Record<string, unknown>),\n  zlib: compressionPolyfill,\n  dns: dnsPolyfill,\n  child_process: shellExecProxy,\n  assert: assertPolyfill,\n  string_decoder: stringDecoderPolyfill,\n  timers: timersPolyfill,\n  constants: constantsPolyfill,\n  punycode: punycodePolyfill,\n  _http_common: {},\n  _http_incoming: {},\n  _http_outgoing: {},\n  chokidar: watcherPolyfill,\n  ws: wsPolyfill,\n  fsevents: macEventsPolyfill,\n  readdirp: scannerPolyfill,\n  module: moduleSysPolyfill.Module,\n  perf_hooks: perfPolyfill,\n  worker_threads: threadPoolPolyfill,\n  esbuild: esbuildPolyfill,\n  rollup: rollupPolyfill,\n  v8: v8Polyfill,\n  readline: lineReaderPolyfill,\n  tls: tlsPolyfill,\n  http2: http2Polyfill,\n  cluster: clusterPolyfill,\n  dgram: udpPolyfill,\n  vm: vmPolyfill,\n  inspector: debugPolyfill,\n  \"inspector/promises\": debugPolyfill,\n  async_hooks: asyncCtxPolyfill,\n  domain: domainPolyfill,\n  diagnostics_channel: tracePolyfill,\n  console: { ...console, Console: consolePolyfill.Console },\n  repl: replPolyfill,\n  test: testPolyfill,\n  trace_events: traceEventsPolyfill,\n  wasi: wasiPolyfill,\n  sea: seaPolyfill,\n  sqlite: sqlitePolyfill,\n  quic: quicPolyfill,\n  // native packages (lightningcss, tailwindcss/oxide, rolldown, @node-rs/*) load via generic WASM fallback, no hardcoded polyfills\n  sys: helpersPolyfill,\n  \"util/types\": helpersPolyfill.types,\n  \"path/posix\": pathPolyfill,\n  \"path/win32\": pathPolyfill.win32,\n  \"timers/promises\": timersPromises,\n  \"stream/promises\": streamPromises,\n  \"stream/web\": {\n    ReadableStream: globalThis.ReadableStream,\n    WritableStream: globalThis.WritableStream,\n    TransformStream: globalThis.TransformStream,\n    ByteLengthQueuingStrategy: globalThis.ByteLengthQueuingStrategy,\n    CountQueuingStrategy: globalThis.CountQueuingStrategy,\n  },\n  \"stream/consumers\": {\n    async arrayBuffer(stream: any): Promise<ArrayBuffer> {\n      const chunks: Uint8Array[] = [];\n      for await (const chunk of stream) {\n        chunks.push(\n          typeof chunk === \"string\" ? new TextEncoder().encode(chunk) : chunk,\n        );\n      }\n      let len = 0;\n      for (const c of chunks) len += c.byteLength;\n      const buf = new Uint8Array(len);\n      let off = 0;\n      for (const c of chunks) {\n        buf.set(c, off);\n        off += c.byteLength;\n      }\n      return buf.buffer;\n    },\n    async blob(stream: any): Promise<Blob> {\n      const chunks: Uint8Array[] = [];\n      for await (const chunk of stream) {\n        chunks.push(\n          typeof chunk === \"string\" ? new TextEncoder().encode(chunk) : chunk,\n        );\n      }\n      return new Blob(chunks as unknown as BlobPart[]);\n    },\n    async buffer(stream: any): Promise<Uint8Array> {\n      const chunks: Uint8Array[] = [];\n      for await (const chunk of stream) {\n        chunks.push(\n          typeof chunk === \"string\" ? new TextEncoder().encode(chunk) : chunk,\n        );\n      }\n      let len = 0;\n      for (const c of chunks) len += c.byteLength;\n      const buf = new Uint8Array(len);\n      let off = 0;\n      for (const c of chunks) {\n        buf.set(c, off);\n        off += c.byteLength;\n      }\n      return buf;\n    },\n    async json(stream: any): Promise<unknown> {\n      const chunks: string[] = [];\n      for await (const chunk of stream) {\n        chunks.push(\n          typeof chunk === \"string\" ? chunk : new TextDecoder().decode(chunk),\n        );\n      }\n      return JSON.parse(chunks.join(\"\"));\n    },\n    async text(stream: any): Promise<string> {\n      const chunks: string[] = [];\n      for await (const chunk of stream) {\n        chunks.push(\n          typeof chunk === \"string\" ? chunk : new TextDecoder().decode(chunk),\n        );\n      }\n      return chunks.join(\"\");\n    },\n  },\n  \"dns/promises\": dnsPromises,\n  \"assert/strict\": assertPolyfill,\n  \"readline/promises\": readlinePromises,\n  _stream_readable: Readable,\n  _stream_writable: Writable,\n  _stream_duplex: Duplex,\n  _stream_transform: Transform,\n  _stream_passthrough: PassThrough,\n  // Vite imports rollup/parseAst which normally uses native bindings\n  \"rollup/parseAst\": {\n    parseAst: rollupPolyfill.parseAst,\n    parseAstAsync: rollupPolyfill.parseAstAsync,\n  },\n};\n\n// last-resort CDN polyfills used only when a native package fails to load and no WASM npm alt works\n// installed WASM packages always win, loaded on-demand\nconst NATIVE_PACKAGE_POLYFILLS: Record<string, unknown> = {\n  // lightningcss-wasm is tried first but its 15.9MB .wasm often fails to extract, so we fall back to loading from CDN\n  lightningcss: lightningcssPolyfill,\n};\n\n// ── Console wrapper ──\n// Captured at module load time to avoid infinite recursion when globalThis.console is overridden\nconst _nativeConsole = console;\n\nfunction wrapConsole(\n  onConsole?: (method: string, args: unknown[]) => void,\n): Console {\n  // Route through onConsole callback exclusively when provided, else fall back to browser console\n  const nc = _nativeConsole;\n  const wrapped = {\n    log: (...args: unknown[]) => {\n      if (onConsole) onConsole(\"log\", args);\n      else nc.log(...args);\n    },\n    error: (...args: unknown[]) => {\n      if (onConsole) onConsole(\"error\", args);\n      else nc.error(...args);\n    },\n    warn: (...args: unknown[]) => {\n      if (onConsole) onConsole(\"warn\", args);\n      else nc.warn(...args);\n    },\n    info: (...args: unknown[]) => {\n      if (onConsole) onConsole(\"info\", args);\n      else nc.info(...args);\n    },\n    debug: (...args: unknown[]) => {\n      if (onConsole) onConsole(\"debug\", args);\n      else nc.debug(...args);\n    },\n    trace: (...args: unknown[]) => {\n      if (onConsole) onConsole(\"trace\", args);\n      else nc.trace(...args);\n    },\n    dir: (obj: unknown) => {\n      if (onConsole) onConsole(\"dir\", [obj]);\n      else nc.dir(obj);\n    },\n    time: nc.time.bind(nc),\n    timeEnd: nc.timeEnd.bind(nc),\n    timeLog: nc.timeLog.bind(nc),\n    assert: (...args: unknown[]) => {\n      const [v, ...rest] = args;\n      if (!v) {\n        if (onConsole) onConsole(\"error\", [\"Assertion failed:\", ...rest]);\n        else nc.assert(v as boolean, ...rest);\n      }\n    },\n    clear: nc.clear.bind(nc),\n    count: nc.count.bind(nc),\n    countReset: nc.countReset.bind(nc),\n    group: nc.group.bind(nc),\n    groupCollapsed: nc.groupCollapsed.bind(nc),\n    groupEnd: nc.groupEnd.bind(nc),\n    table: (...args: unknown[]) => {\n      if (onConsole) onConsole(\"log\", args);\n      else nc.table(...args);\n    },\n    timeStamp: nc.timeStamp ? nc.timeStamp.bind(nc) : () => {},\n    profile: nc.profile ? nc.profile.bind(nc) : () => {},\n    profileEnd: nc.profileEnd ? nc.profileEnd.bind(nc) : () => {},\n  };\n  return wrapped as unknown as Console;\n}\n\n// ── Module resolver & loader ──\nfunction buildResolver(\n  vol: MemoryVolume,\n  fsBridge: FsBridge,\n  proc: ProcessObject,\n  baseDir: string,\n  cache: Record<string, ModuleRecord>,\n  opts: EngineOptions,\n  codeCache?: Map<string, string>,\n  deAsyncImports = false,\n): ResolverFn {\n  // Shared across all resolvers — avoids re-resolving the same paths/manifests per module\n  // Use bounded LRU when a memory handler is available, else plain Map\n  const resolveCache: Map<string, string | null> =\n    (cache as any).__resolveCache ??\n    ((cache as any).__resolveCache = opts.handler\n      ? new _LRUCache<string, string | null>(\n          opts.handler.options.resolveCacheSize,\n        )\n      : new Map());\n  const manifestCache: Map<string, PackageManifest | null> =\n    (cache as any).__manifestCache ??\n    ((cache as any).__manifestCache = opts.handler\n      ? new _LRUCache<string, PackageManifest | null>(\n          opts.handler.options.manifestCacheSize,\n        )\n      : new Map());\n  // Shared across all resolvers — deduplicates same-version packages from nested node_modules\n  const _pkgIdentityMap: Record<string, string> =\n    (cache as any).__pkgIdentityMap ?? ((cache as any).__pkgIdentityMap = {});\n\n  const readManifest = (manifestPath: string): PackageManifest | null => {\n    if (manifestCache.has(manifestPath))\n      return manifestCache.get(manifestPath)!;\n    try {\n      const raw = vol.readFileSync(manifestPath, \"utf8\");\n      const parsed = JSON.parse(raw) as PackageManifest;\n      manifestCache.set(manifestPath, parsed);\n      return parsed;\n    } catch {\n      manifestCache.set(manifestPath, null);\n      return null;\n    }\n  };\n\n  const resolveId = (\n    id: string,\n    fromDir: string,\n    preferEsm: boolean = false,\n  ): string => {\n    if (typeof id !== \"string\") {\n      throw new TypeError(\n        `The \"id\" argument must be of type string. Received ${typeof id}`,\n      );\n    }\n    if (id.startsWith(\"node:\")) id = id.slice(5);\n\n    if (id.startsWith(\"file:///\")) {\n      id = decodeURIComponent(id.slice(7));\n      if (/^[A-Za-z]:[\\\\/]/.test(id)) {\n        id = \"/\" + id.slice(2).replace(/\\\\/g, \"/\");\n      }\n    } else if (id.startsWith(\"file://\")) {\n      id = decodeURIComponent(id.slice(7));\n      if (/^[A-Za-z]:[\\\\/]/.test(id)) {\n        id = \"/\" + id.slice(2).replace(/\\\\/g, \"/\");\n      }\n    }\n\n    const qIdx = id.indexOf(\"?\");\n    if (qIdx !== -1) id = id.slice(0, qIdx);\n\n    const hashIdx = id.indexOf(\"#\");\n    if (hashIdx !== -1 && !id.startsWith(\"#\")) id = id.slice(0, hashIdx);\n\n    if (id.includes(\"\\\\\")) id = id.replace(/\\\\/g, \"/\");\n\n    if (\n      CORE_MODULES[id] ||\n      id === \"fs\" ||\n      id === \"process\" ||\n      id === \"url\" ||\n      id === \"querystring\" ||\n      id === \"util\"\n    ) {\n      return id;\n    }\n\n    // Native Rust bindings can't run in browser — provide JS stubs\n    if (id.startsWith(\"@rollup/rollup-\")) {\n      if (!CORE_MODULES[id]) {\n        CORE_MODULES[id] = {\n          parse: rollupPolyfill.parseAst,\n          parseAsync: rollupPolyfill.parseAstAsync,\n        };\n      }\n      return id;\n    }\n\n    if (id.startsWith(\"@rolldown/binding-\") && !id.includes(\"wasm32-wasi\")) {\n      // platform-specific native binding (e.g. @rolldown/binding-linux-x64-gnu) — redirect to the wasm32-wasi variant via the generic napi-rs fallback below\n      const e = new Error(\n        `Cannot load native addon '${id}' — install @rolldown/binding-wasm32-wasi`,\n      ) as Error & { code: string };\n      e.code = \"MODULE_NOT_FOUND\";\n      throw e;\n    }\n\n    if (id.startsWith(\"#\")) {\n      let dir = fromDir;\n      while (dir !== \"/\" && dir) {\n        const mf = readManifest(pathPolyfill.join(dir, \"package.json\"));\n        if (mf?.imports) {\n          for (const conds of [\n            { browser: true, require: true },\n            { require: true },\n            { browser: true, import: true },\n            {},\n          ] as const) {\n            try {\n              const resolved = resolveImports(mf, id, conds);\n              if (resolved?.length) {\n                const full = pathPolyfill.join(dir, resolved[0]);\n                if (vol.existsSync(full)) return full;\n                for (const ext of IMPORTS_FIELD_EXTENSIONS) {\n                  if (vol.existsSync(full + ext)) return full + ext;\n                }\n              }\n            } catch {\n              /* try next condition set */\n            }\n          }\n        }\n        const parent = pathPolyfill.dirname(dir);\n        if (parent === dir) break;\n        dir = parent;\n      }\n      // Unresolvable # imports get a stub (many are just feature-detection flags)\n      const stubPath = `/node_modules/.nodepod-stubs/${id.slice(1)}.js`;\n      if (!vol.existsSync(stubPath)) {\n        vol.mkdirSync(pathPolyfill.dirname(stubPath), { recursive: true });\n        vol.writeFileSync(stubPath, \"module.exports = {};\");\n      }\n      return stubPath;\n    }\n\n    const cacheKey = `${fromDir}|${id}`;\n    const cached = resolveCache.get(cacheKey);\n    if (cached !== undefined) {\n      if (cached === null) {\n        const e = new Error(`Cannot find module '${id}'`) as Error & {\n          code: string;\n        };\n        e.code = \"MODULE_NOT_FOUND\";\n        throw e;\n      }\n      return cached;\n    }\n\n    const tryFile = (base: string): string | null => {\n      if (vol.existsSync(base)) {\n        const s = vol.statSync(base);\n        if (s.isFile()) return base;\n        const localMf = readManifest(pathPolyfill.join(base, \"package.json\"));\n        if (localMf?.main) {\n          const mainPath = pathPolyfill.join(base, localMf.main);\n          if (vol.existsSync(mainPath)) {\n            const ms = vol.statSync(mainPath);\n            if (ms.isFile()) return mainPath;\n          }\n          for (const ext of MAIN_FIELD_EXTENSIONS) {\n            const withExt = mainPath + ext;\n            if (vol.existsSync(withExt)) return withExt;\n          }\n        }\n        for (const idx of INDEX_FILES) {\n          const idxPath = pathPolyfill.join(base, idx);\n          if (vol.existsSync(idxPath)) return idxPath;\n        }\n      }\n      for (const ext of [...MAIN_FIELD_EXTENSIONS, \".node\"]) {\n        const withExt = base + ext;\n        if (vol.existsSync(withExt)) return withExt;\n      }\n      return null;\n    };\n\n    if (id === \".\" || id === \"..\") id = id + \"/\";\n    if (id.startsWith(\"./\") || id.startsWith(\"../\") || id.startsWith(\"/\")) {\n      const abs = id.startsWith(\"/\") ? id : pathPolyfill.resolve(fromDir, id);\n      const found = tryFile(abs);\n      if (found) {\n        resolveCache.set(cacheKey, found);\n        return found;\n      }\n\n      resolveCache.set(cacheKey, null);\n      const e = new Error(\n        `Cannot find module '${id}' from '${fromDir}'`,\n      ) as Error & { code: string };\n      e.code = \"MODULE_NOT_FOUND\";\n      throw e;\n    }\n\n    const applyBrowserRemap = (\n      resolved: string,\n      manifest: PackageManifest,\n      pkgRoot: string,\n    ): string | null => {\n      if (!manifest.browser || typeof manifest.browser !== \"object\")\n        return resolved;\n      const map = manifest.browser as Record<string, string | false>;\n      const rel = \"./\" + pathPolyfill.relative(pkgRoot, resolved);\n      const relNoExt = rel.replace(/\\.(js|json|cjs|mjs)$/, \"\");\n      for (const k of [rel, relNoExt]) {\n        if (k in map) {\n          if (map[k] === false) return null;\n          return tryFile(pathPolyfill.join(pkgRoot, map[k] as string));\n        }\n      }\n      return resolved;\n    };\n\n    const tryNodeModules = (nmDir: string, moduleId: string): string | null => {\n      const parts = moduleId.split(\"/\");\n      const pkgName =\n        parts[0].startsWith(\"@\") && parts.length > 1\n          ? `${parts[0]}/${parts[1]}`\n          : parts[0];\n\n      const pkgRoot = pathPolyfill.join(nmDir, pkgName);\n      const mfPath = pathPolyfill.join(pkgRoot, \"package.json\");\n      const manifest = readManifest(mfPath);\n\n      if (manifest) {\n        let exportsResolved = false;\n        if (manifest.exports) {\n          const subpath =\n            moduleId === pkgName\n              ? \".\"\n              : \"./\" + moduleId.slice(pkgName.length + 1);\n\n          // Custom export conditions from --conditions flag / NODE_OPTIONS\n          const extraConditions: string[] = [];\n          const execArgv: string[] = proc.execArgv || [];\n          for (let ai = 0; ai < execArgv.length; ai++) {\n            const arg = execArgv[ai];\n            if (arg === \"--conditions\" || arg === \"-C\") {\n              if (ai + 1 < execArgv.length)\n                extraConditions.push(execArgv[++ai]);\n            } else if (arg.startsWith(\"--conditions=\")) {\n              extraConditions.push(arg.slice(\"--conditions=\".length));\n            }\n          }\n          const nodeOpts = proc.env?.NODE_OPTIONS || \"\";\n          const condMatch = nodeOpts.matchAll(/(?:--conditions[= ]|-C )(\\S+)/g);\n          for (const m of condMatch) extraConditions.push(m[1]);\n          const condExtra =\n            extraConditions.length > 0 ? { conditions: extraConditions } : {};\n\n          // for WASM packages prefer Node.js conditions — browser entry needs native Worker(url) or async init, Node.js entry uses polyfilled worker_threads and sync init\n          const isWasmPkg = pkgName.includes(\"wasm32-wasi\") || pkgName.endsWith(\"-wasm\") || (Array.isArray((manifest as any).cpu) && (manifest as any).cpu.includes(\"wasm32\"));\n          const baseSets: Record<string, unknown>[] = isWasmPkg\n            ? [\n                { node: true, require: true, ...condExtra },\n                { require: true, ...condExtra },\n                { node: true, import: true, ...condExtra },\n                { import: true, ...condExtra },\n              ]\n            : preferEsm\n            ? [\n                { node: true, import: true, ...condExtra },\n                { browser: true, import: true, ...condExtra },\n                { import: true, ...condExtra },\n                { node: true, require: true, ...condExtra },\n                { browser: true, require: true, ...condExtra },\n                { require: true, ...condExtra },\n              ]\n            : [\n                { node: true, require: true, ...condExtra },\n                { browser: true, require: true, ...condExtra },\n                { require: true, ...condExtra },\n                { node: true, import: true, ...condExtra },\n                { browser: true, import: true, ...condExtra },\n                { import: true, ...condExtra },\n              ];\n\n          for (const conds of baseSets) {\n            try {\n              const resolved = resolveExports(manifest, subpath, conds);\n              if (resolved?.length) {\n                const full = pathPolyfill.join(pkgRoot, resolved[0]);\n                const found = tryFile(full);\n                if (found) {\n                  if (found.endsWith(\".cjs\")) {\n                    try {\n                      const content = vol.readFileSync(found, \"utf8\");\n                      if (content.trimStart().startsWith(\"throw \")) continue;\n                    } catch {\n                      /* proceed */\n                    }\n                  }\n                  exportsResolved = true;\n                  return found;\n                }\n              }\n            } catch {\n              /* try next */\n            }\n          }\n        }\n\n        if (!exportsResolved && pkgName === moduleId) {\n          let entry: string | undefined;\n          // for WASM packages prefer Node.js \"main\" over \"browser\" — same reason as above (browser entry needs native Worker(url) or async init)\n          const isWasmPkg = pkgName.includes(\"wasm32-wasi\") || pkgName.endsWith(\"-wasm\") || (Array.isArray((manifest as any).cpu) && (manifest as any).cpu.includes(\"wasm32\"));\n          if (!isWasmPkg && typeof manifest.browser === \"string\") entry = manifest.browser;\n          if (!entry && manifest.module) entry = manifest.module as string;\n          if (!entry) entry = manifest.main || \"index.js\";\n          let found = tryFile(pathPolyfill.join(pkgRoot, entry));\n          // apply browser field object remapping (e.g. lightningcss maps \"./node/index.js\" to \"./browser.js\")\n          if (found && !isWasmPkg) {\n            const remapped = applyBrowserRemap(found, manifest, pkgRoot);\n            if (remapped === null) found = null; // browser: { \"./file\": false } means \"ignore\"\n            else if (remapped !== found) found = remapped;\n          }\n          if (found) return found;\n        }\n      }\n\n      const directPath = pathPolyfill.join(nmDir, moduleId);\n      return tryFile(directPath);\n    };\n\n    let searchDir = fromDir;\n    while (searchDir !== \"/\") {\n      const nmDir = pathPolyfill.join(searchDir, \"node_modules\");\n      const found = tryNodeModules(nmDir, id);\n      if (found) {\n        resolveCache.set(cacheKey, found);\n        return found;\n      }\n      searchDir = pathPolyfill.dirname(searchDir);\n    }\n\n    const rootFound = tryNodeModules(\"/node_modules\", id);\n    if (rootFound) {\n      resolveCache.set(cacheKey, rootFound);\n      return rootFound;\n    }\n\n    // Fallback: resolve from cwd (handles modules loaded from temp/bundled locations)\n    const cwd = proc.cwd();\n    if (cwd !== fromDir && cwd !== \"/\") {\n      let fallbackDir = cwd;\n      while (fallbackDir !== \"/\" && fallbackDir !== fromDir) {\n        const nmDir = pathPolyfill.join(fallbackDir, \"node_modules\");\n        const found = tryNodeModules(nmDir, id);\n        if (found) {\n          resolveCache.set(cacheKey, found);\n          return found;\n        }\n        fallbackDir = pathPolyfill.dirname(fallbackDir);\n      }\n    }\n\n    resolveCache.set(cacheKey, null);\n    const e = new Error(\n      `Cannot find module '${id}' from '${fromDir}'`,\n    ) as Error & { code: string };\n    e.code = \"MODULE_NOT_FOUND\";\n    throw e;\n  };\n\n  const loadModule = (\n    resolved: string,\n    parentRecord?: ModuleRecord,\n  ): ModuleRecord => {\n    if (cache[resolved]) return cache[resolved];\n\n    // Package dedup: reuse first instance of name@version:path to prevent\n    // \"Cannot use X from another module or realm\" errors\n    const nmIdx = resolved.lastIndexOf(\"/node_modules/\");\n    if (nmIdx !== -1) {\n      const afterNm = resolved.slice(nmIdx + \"/node_modules/\".length);\n      const parts = afterNm.split(\"/\");\n      const pkgName = parts[0].startsWith(\"@\")\n        ? parts[0] + \"/\" + parts[1]\n        : parts[0];\n      const pkgDir = resolved.slice(0, nmIdx) + \"/node_modules/\" + pkgName;\n      try {\n        const pkgJson = JSON.parse(\n          vol.readFileSync(pkgDir + \"/package.json\", \"utf8\"),\n        );\n        // Include file path so different subpath exports (svelte vs svelte/compiler) aren't deduped\n        const identity =\n          pkgName + \"@\" + (pkgJson.version || \"0.0.0\") + \":\" + afterNm;\n        if (!_pkgIdentityMap[identity]) {\n          _pkgIdentityMap[identity] = resolved;\n        } else if (_pkgIdentityMap[identity] !== resolved) {\n          // Only reuse fully-loaded modules — returning mid-execution ones causes \"X is not a function\"\n          const canonical = _pkgIdentityMap[identity];\n          if (cache[canonical] && cache[canonical].loaded) {\n            cache[resolved] = cache[canonical];\n            return cache[canonical];\n          }\n        }\n      } catch {\n        /* no package.json */\n      }\n    }\n\n    const _loadDepth = ((globalThis as any).__loadModuleDepth ?? 0) + 1;\n    (globalThis as any).__loadModuleDepth = _loadDepth;\n\n    const record: ModuleRecord = {\n      id: resolved,\n      filename: resolved,\n      exports: {},\n      loaded: false,\n      children: [],\n      paths: [],\n      parent: parentRecord ?? null,\n    };\n    if (parentRecord) parentRecord.children.push(record);\n\n    cache[resolved] = record;\n\n    const keys = Object.keys(cache);\n    if (keys.length > LIMITS.MODULE_CACHE_MAX) delete cache[keys[0]];\n\n    if (resolved.endsWith(\".json\")) {\n      const raw = vol.readFileSync(resolved, \"utf8\");\n      record.exports = JSON.parse(raw);\n      record.loaded = true;\n      return record;\n    }\n\n    // Native .node addons cannot run in the browser — throw so that\n    // callers (e.g. napi-rs packages) fall back to their WASM build.\n    if (resolved.endsWith(\".node\")) {\n      delete cache[resolved];\n      const e = new Error(\n        `Cannot load native addon '${resolved}' — native .node binaries are not supported in the browser`,\n      ) as Error & { code: string };\n      e.code = \"ERR_DLOPEN_FAILED\";\n      throw e;\n    }\n\n    // raw .wasm bytes — napi-rs loaders read these via fs.readFileSync and feed them to WebAssembly.instantiate\n    if (resolved.endsWith(\".wasm\")) {\n      record.exports = vol.readFileSync(resolved);\n      record.loaded = true;\n      return record;\n    }\n\n    const rawSource = vol.readFileSync(resolved, \"utf8\");\n    const dir = pathPolyfill.dirname(resolved);\n\n    const codeCacheKey = `${resolved}|${quickDigest(rawSource)}`;\n    let processedCode = codeCache?.get(codeCacheKey);\n\n    if (!processedCode) {\n      processedCode = rawSource;\n      if (processedCode.startsWith(\"#!\")) {\n        processedCode = processedCode.slice(processedCode.indexOf(\"\\n\") + 1);\n      }\n      if (isTypeScriptFile(resolved)) {\n        processedCode = stripTypeScript(processedCode);\n      }\n      if (resolved.endsWith(\".cjs\")) {\n        // CJS: only rewrite import()/import.meta via AST, skip full ESM conversion\n        try {\n          const cjsAst = acorn.parse(processedCode, {\n            ecmaVersion: \"latest\",\n            sourceType: \"script\",\n            allowImportExportEverywhere: true,\n          });\n          const cjsPatches: Array<[number, number, string]> = [];\n          const walkCjs = (node: any) => {\n            if (!node || typeof node !== \"object\") return;\n            if (Array.isArray(node)) {\n              for (const c of node) walkCjs(c);\n              return;\n            }\n            if (typeof node.type !== \"string\") return;\n            if (node.type === \"ImportExpression\") {\n              cjsPatches.push([node.start, node.start + 6, \"__asyncLoad\"]);\n            }\n            if (\n              node.type === \"MetaProperty\" &&\n              node.meta?.name === \"import\" &&\n              node.property?.name === \"meta\"\n            ) {\n              cjsPatches.push([\n                node.start,\n                node.end,\n                `({ url: \"file://${resolved}\", dirname: \"${pathPolyfill.dirname(resolved)}\", filename: \"${resolved}\" })`,\n              ]);\n            }\n            for (const key of Object.keys(node)) {\n              if (key === \"type\" || key === \"start\" || key === \"end\") continue;\n              const val = node[key];\n              if (val && typeof val === \"object\") walkCjs(val);\n            }\n          };\n          walkCjs(cjsAst);\n          if (cjsPatches.length > 0) {\n            cjsPatches.sort((a, b) => b[0] - a[0] || b[1] - a[1]);\n            for (const [start, end, replacement] of cjsPatches) {\n              processedCode =\n                processedCode.slice(0, start) +\n                replacement +\n                processedCode.slice(end);\n            }\n          }\n        } catch {\n          /* can't parse — leave untransformed */\n        }\n      } else {\n        processedCode = convertModuleSyntax(processedCode, resolved);\n      }\n      codeCache?.set(codeCacheKey, processedCode);\n    }\n\n    const isCjs = resolved.endsWith(\".cjs\");\n    const moduleHasTLA = !isCjs && hasTopLevelAwait(processedCode);\n    const useFullDeAsync = deAsyncImports || moduleHasTLA;\n    if (!isCjs)\n      processedCode = stripTopLevelAwait(\n        processedCode,\n        deAsyncImports ? \"full\" : \"topLevelOnly\",\n      );\n\n    const childResolver = buildResolver(\n      vol,\n      fsBridge,\n      proc,\n      dir,\n      cache,\n      opts,\n      codeCache,\n      useFullDeAsync,\n    );\n    childResolver.cache = cache;\n    childResolver._ownerRecord = record;\n\n    const wrappedConsole = wrapConsole(opts.onConsole);\n\n    try {\n      const metaUrl = \"file://\" + resolved;\n      const wrapper = buildModuleWrapper(processedCode);\n\n      let fn;\n      try {\n        fn = (0, eval)(wrapper);\n      } catch (syntaxErr) {\n        const msg =\n          syntaxErr instanceof Error ? syntaxErr.message : String(syntaxErr);\n        throw new SyntaxError(`${msg} (in ${resolved})`);\n      }\n\n      {\n        const srcMap =\n          (globalThis as any).__dbgSrcMap ||\n          ((globalThis as any).__dbgSrcMap = new Map());\n        srcMap.set(resolved, wrapper);\n      }\n\n      const asyncLoader = makeDynamicLoader(childResolver);\n      fn(\n        record.exports,\n        childResolver,\n        record,\n        resolved,\n        dir,\n        proc,\n        wrappedConsole,\n        { url: metaUrl, dirname: dir, filename: resolved },\n        asyncLoader,\n        syncAwait,\n        SyncPromiseClass,\n      );\n\n      record.loaded = true;\n      patchFetchNodeAdapterExports(\n        record.exports as Record<string, unknown>,\n      );\n      (globalThis as any).__loadModuleDepth = _loadDepth - 1;\n    } catch (err) {\n      (globalThis as any).__loadModuleDepth = _loadDepth - 1;\n      delete cache[resolved];\n      // >8MB WASM: retry with async compilation APIs\n      const errMsg = err instanceof Error ? err.message : String(err);\n      if (\n        errMsg.includes(\"disallowed on the main thread\") ||\n        errMsg.includes(\"buffer size is larger than\") ||\n        errMsg.includes(\"__WASM_COMPILE_PENDING__\")\n      ) {\n        let asyncCode = processedCode!;\n        asyncCode = asyncCode.replace(\n          /new\\s+WebAssembly\\.Module\\b/g,\n          \"await __wasmCompile\",\n        );\n        asyncCode = asyncCode.replace(\n          /new\\s+WebAssembly\\.Instance\\b/g,\n          \"await __wasmInstantiate\",\n        );\n\n        const asyncWrapper = buildModuleWrapper(asyncCode, {\n          async: true,\n          useNativePromise: true,\n          includeViteVars: false,\n          hideBrowserGlobals: false,\n          wasmHelpers: true,\n        });\n        try {\n          const asyncFn = (0, eval)(asyncWrapper);\n          const asyncLoader = makeDynamicLoader(childResolver);\n          const wasmReady = asyncFn(\n            record.exports,\n            childResolver,\n            record,\n            resolved,\n            dir,\n            proc,\n            wrappedConsole,\n            { url: \"file://\" + resolved, dirname: dir, filename: resolved },\n            asyncLoader,\n            syncAwait,\n            SyncPromiseClass,\n          );\n          record.loaded = true;\n          patchFetchNodeAdapterExports(\n            record.exports as Record<string, unknown>,\n          );\n          (record as any).__wasmReady = wasmReady;\n          cache[resolved] = record;\n        } catch (retryErr) {\n          if (err instanceof Error && !err.message.includes(\"(in /\")) {\n            err.message = `${err.message} (in ${resolved})`;\n          }\n          throw err;\n        }\n        return record;\n      }\n\n      if (err instanceof Error && !err.message.includes(\"(in /\")) {\n        err.message = `${err.message} (in ${resolved})`;\n      }\n      throw err;\n    }\n\n    return record;\n  };\n\n  const resolver: ResolverFn = (id: string): unknown => {\n    if (typeof id !== \"string\") {\n      // Match real Node.js error: TypeError with ERR_INVALID_ARG_TYPE code\n      const err: any = new TypeError(\n        `The \"id\" argument must be of type string. Received ${id === null ? \"null\" : typeof id}`,\n      );\n      err.code = \"ERR_INVALID_ARG_TYPE\";\n      throw err;\n    }\n    if (id.startsWith(\"node:\")) id = id.slice(5);\n\n    if (id === \"fs\") return fsBridge;\n    if (id === \"fs/promises\") return fsBridge.promises;\n    if (id === \"process\") return proc;\n    if (id === \"console\") return wrapConsole(opts.onConsole);\n    if (id === \"zlib\") {\n      // brotli WASM is lazy now — kick the load on first require so sync\n      // brotli APIs are usually ready by the time code calls them\n      compressionPolyfill.preloadBrotli().catch(() => {});\n      return CORE_MODULES[\"zlib\"];\n    }\n    if (id === \"sqlite\") {\n      sqlitePolyfill.preloadSqlite().catch(() => {});\n      return CORE_MODULES[\"sqlite\"];\n    }\n    if (id === \"worker_threads\") {\n      if (opts.workerThreadsOverride) {\n        const base = CORE_MODULES[\"worker_threads\"];\n        const override = Object.assign(\n          Object.create(null),\n          base,\n          opts.workerThreadsOverride,\n        );\n        override.default = override;\n        return override;\n      }\n      return CORE_MODULES[\"worker_threads\"];\n    }\n    if (id === \"module\") {\n      // Per-engine Module so fork() doesn't clobber parent's _resolveFilename\n      const OrigModule = moduleSysPolyfill.Module;\n\n      function PerEngineModule(this: any, mid?: string, parent?: any) {\n        OrigModule.call(this, mid, parent);\n      }\n      PerEngineModule.prototype = OrigModule.prototype;\n\n      const liveCreateRequire = (from: string) => {\n        let fromPath = from;\n        if (from.startsWith(\"file://\")) {\n          fromPath = decodeURIComponent(from.slice(7));\n          if (fromPath.startsWith(\"/\") && fromPath[2] === \":\")\n            fromPath = fromPath.slice(1);\n        }\n        const childDir = pathPolyfill.dirname(fromPath);\n        const child = buildResolver(\n          vol,\n          fsBridge,\n          proc,\n          childDir,\n          cache,\n          opts,\n          codeCache,\n          deAsyncImports,\n        );\n        child.cache = cache;\n        return child;\n      };\n\n      PerEngineModule.createRequire = liveCreateRequire;\n      PerEngineModule._cache = cache;\n      PerEngineModule._resolveFilename = (\n        request: string,\n        parent?: any,\n        isMain?: boolean,\n        options?: any,\n      ) => {\n        if (typeof request !== \"string\") {\n          const err: any = new Error(`Cannot find module '${request}'`);\n          err.code = \"MODULE_NOT_FOUND\";\n          throw err;\n        }\n        if (options?.paths && Array.isArray(options.paths)) {\n          for (const p of options.paths) {\n            try {\n              return resolveId(request, p);\n            } catch {\n              /* try next */\n            }\n          }\n        }\n        if (parent?.paths && Array.isArray(parent.paths)) {\n          for (const p of parent.paths) {\n            try {\n              const dir = p.endsWith(\"/node_modules\")\n                ? pathPolyfill.dirname(p)\n                : p;\n              return resolveId(request, dir);\n            } catch {\n              /* try next */\n            }\n          }\n        }\n        const fromDir = parent?.filename\n          ? pathPolyfill.dirname(parent.filename)\n          : baseDir;\n        try {\n          return resolveId(request, fromDir);\n        } catch {\n          const err: any = new Error(`Cannot find module '${request}'`);\n          err.code = \"MODULE_NOT_FOUND\";\n          throw err;\n        }\n      };\n      PerEngineModule._load = (\n        request: string,\n        parent?: any,\n        isMain?: boolean,\n      ) => {\n        try {\n          return resolver(request);\n        } catch {\n          return moduleSysPolyfill._load(request, parent, isMain);\n        }\n      };\n\n      PerEngineModule.builtinModules = moduleSysPolyfill.builtinModules;\n      PerEngineModule.isBuiltin = moduleSysPolyfill.isBuiltin;\n      PerEngineModule._extensions = moduleSysPolyfill._extensions;\n      PerEngineModule._pathCache = moduleSysPolyfill._pathCache;\n      PerEngineModule._nodeModulePaths = moduleSysPolyfill._nodeModulePaths;\n      PerEngineModule._findPath = moduleSysPolyfill._findPath;\n      PerEngineModule.syncBuiltinESMExports =\n        moduleSysPolyfill.syncBuiltinESMExports;\n      PerEngineModule.findSourceMap = moduleSysPolyfill.findSourceMap;\n      PerEngineModule.SourceMap = moduleSysPolyfill.SourceMap;\n      PerEngineModule.wrap = moduleSysPolyfill.wrap;\n      PerEngineModule.wrapper = moduleSysPolyfill.wrapper;\n      PerEngineModule.Module = PerEngineModule;\n      PerEngineModule.runMain = OrigModule.runMain;\n      PerEngineModule._preloadModules = OrigModule._preloadModules;\n      PerEngineModule._initPaths = OrigModule._initPaths;\n      PerEngineModule.globalPaths = OrigModule.globalPaths;\n      (PerEngineModule as any).default = PerEngineModule;\n      return PerEngineModule;\n    }\n    // inject VFS-backed fs into WASI so any napi-rs .wasi.cjs loader gets filesystem access\n    if (id === \"wasi\") {\n      const origWASI = wasiPolyfill.WASI;\n      return {\n        ...wasiPolyfill,\n        WASI: function WASIWithFs(this: any, options?: any) {\n          const opts = { ...options };\n          if (!opts.fs) opts.fs = fsBridge;\n          return new (origWASI as any)(opts);\n        },\n      };\n    }\n\n    if (CORE_MODULES[id]) return CORE_MODULES[id];\n\n    let resolved: string;\n    try {\n      resolved = resolveId(id, baseDir);\n    } catch (resolveErr: any) {\n      if (\n        resolveErr?.code === \"MODULE_NOT_FOUND\" &&\n        !id.startsWith(\"./\") &&\n        !id.startsWith(\"../\")\n      ) {\n        // --- Determine WASM alternative package name(s) to try ---\n        const wasmAlts: string[] = [];\n\n        if (id.includes(\"wasm32-wasi\")) {\n          // Explicit wasm32-wasi package — auto-install as-is\n          wasmAlts.push(id);\n        } else {\n          // Platform-specific native package pattern:\n          //   {name}-{platform}-{arch}[-{abi}]\n          // e.g. lightningcss-linux-x64-gnu, @pkg/core-darwin-arm64\n          const platformRe =\n            /^(.+)-(darwin|linux|win32|freebsd|android|sunos)-(x64|x86|arm64|arm|ia32|s390x|ppc64|mips64el|riscv64)(-[a-z]+)?$/;\n          const m = id.match(platformRe);\n          if (m) {\n            const baseName = m[1]; // e.g. \"lightningcss\" or \"@scope/pkg\"\n            wasmAlts.push(baseName + \"-wasm32-wasi\");\n            wasmAlts.push(baseName + \"-wasm\");\n          }\n        }\n\n        // Try resolving any of the WASM alternatives (already installed)\n        for (const alt of wasmAlts) {\n          resolveCache.delete(`${baseDir}|${alt}`);\n          try {\n            const altResolved = resolveId(alt, baseDir);\n            const altRec = loadModule(altResolved, resolver._ownerRecord);\n            return altRec.exports;\n          } catch {\n            // not installed yet\n          }\n        }\n      }\n      throw resolveErr;\n    }\n    if (CORE_MODULES[resolved]) return CORE_MODULES[resolved];\n\n    let rec: ModuleRecord;\n    try {\n      rec = loadModule(resolved, resolver._ownerRecord);\n    } catch (loadErr: any) {\n      // When a bare module fails to load (e.g. native binding not found inside\n      // the module), try a WASM drop-in replacement: {name}-wasm or {name}-wasm32-wasi\n      if (\n        !id.startsWith(\"./\") &&\n        !id.startsWith(\"../\") &&\n        !id.startsWith(\"/\") &&\n        (loadErr?.code === \"MODULE_NOT_FOUND\" ||\n          loadErr?.code === \"ERR_DLOPEN_FAILED\" ||\n          (loadErr?.message &&\n            /cannot\\s+(find|load)\\s+(module|native)/i.test(loadErr.message)))\n      ) {\n        const wasmAlts = [id + \"-wasm32-wasi\", id + \"-wasm\"];\n        for (const alt of wasmAlts) {\n          try {\n            resolveCache.delete(`${baseDir}|${alt}`);\n            const altResolved = resolveId(alt, baseDir);\n            const altRec = loadModule(altResolved, resolver._ownerRecord);\n            return altRec.exports;\n          } catch (altErr: any) {\n            // surface WASM alt errors so they don't silently vanish\n            if (altErr?.code !== \"MODULE_NOT_FOUND\") {\n              _nativeConsole.warn(`[wasm-fallback] ${alt}:`, altErr?.message?.slice(0, 200));\n            }\n          }\n        }\n        // last resort — built-in CDN polyfill (e.g. lightningcss)\n        // if it has async init(), block via syncAwait so sync APIs work immediately after\n        const polyfillFallback = NATIVE_PACKAGE_POLYFILLS[id] as any;\n        if (polyfillFallback) {\n          if (typeof polyfillFallback.init === \"function\") {\n            try { syncAwait(polyfillFallback.init()); } catch { /* best effort */ }\n          }\n          return polyfillFallback;\n        }\n      }\n      throw loadErr;\n    }\n    // Proxy for async WASM — reads from rec.exports at access time so\n    // reassigned module.exports is picked up after compilation finishes\n    if ((rec as any).__wasmReady) {\n      return new Proxy(Object.create(null), {\n        get(_t, prop) {\n          const ex = rec.exports as any;\n          if (ex && prop in ex) return ex[prop];\n          return undefined;\n        },\n        set(_t, prop, val) {\n          (rec.exports as any)[prop] = val;\n          return true;\n        },\n        has(_t, prop) {\n          return rec.exports ? prop in (rec.exports as any) : false;\n        },\n        ownKeys() {\n          return rec.exports ? Reflect.ownKeys(rec.exports as any) : [];\n        },\n        getOwnPropertyDescriptor(_t, prop) {\n          if (!rec.exports) return undefined;\n          return Object.getOwnPropertyDescriptor(rec.exports as any, prop);\n        },\n      });\n    }\n    return rec.exports;\n  };\n\n  resolver.resolve = (id: string, options?: { paths?: string[] }): string => {\n    if (id === \"fs\" || id === \"process\" || CORE_MODULES[id]) return id;\n    if (options?.paths && Array.isArray(options.paths)) {\n      for (const p of options.paths) {\n        try {\n          return resolveId(id, p);\n        } catch {\n          /* try next */\n        }\n      }\n    }\n    return resolveId(id, baseDir);\n  };\n\n  resolver.cache = cache;\n  resolver.extensions = {\n    \".js\": () => {},\n    \".json\": () => {},\n    \".node\": () => {},\n    \".ts\": () => {},\n    \".tsx\": () => {},\n    \".mjs\": () => {},\n    \".cjs\": () => {},\n  };\n  resolver.main = null;\n  return resolver;\n}\n\n// ── ScriptEngine class ──\nexport class ScriptEngine {\n  private vol: MemoryVolume;\n  private fsBridge: FsBridge;\n  private proc: ProcessObject;\n  private moduleRegistry: Record<string, ModuleRecord> = {};\n  private opts: EngineOptions;\n  private transformCache: Map<string, string>;\n\n  constructor(vol: MemoryVolume, opts: EngineOptions = {}) {\n    // Precedence: explicit injected cache > handler's LRU > plain Map\n    if (opts.transformCache) {\n      this.transformCache = opts.transformCache;\n    } else if (opts.handler) {\n      this.transformCache = opts.handler.transformCache as unknown as Map<\n        string,\n        string\n      >;\n    } else {\n      this.transformCache = new Map();\n    }\n    this.vol = vol;\n    this.proc = buildProcessEnv({\n      cwd: opts.cwd || \"/\",\n      env: opts.env,\n      onStdout: opts.onStdout,\n      onStderr: opts.onStderr,\n    });\n    this.fsBridge = buildFileSystemBridge(vol, () => this.proc.cwd());\n    this.opts = opts;\n\n    // Don't call initShellExec here — Nodepod.boot() sets up the shell with correct cwd\n    import(\"./polyfills/child_process\")\n      .then((mod) => {\n        _shellExecPolyfill = mod;\n        _initShellExec = mod.initShellExec;\n      })\n      .catch(() => {\n        /* shell unavailable in this environment */\n      });\n    watcherPolyfill.setVolume(vol);\n    scannerPolyfill.setVolume(vol);\n    sqlitePolyfill.setVolume(vol);\n    sqlitePolyfill.setSqliteCwd(opts.cwd ?? \"/\");\n    esbuildPolyfill.setVolume(vol);\n    rollupPolyfill.setVFSBridge(\n      (path, opts) => vol.mkdirSync(path, opts),\n      (path, data) => vol.writeFileSync(path, data),\n    );\n\n    (globalThis as any).__nodepodVolume = vol;\n\n    // generic napi-rs WASI worker hook — overrides Worker constructor to detect wasi-worker.mjs scripts and spawn them as real Web Workers with bundled deps, everything else falls back to the fork-based worker\n    // works for any napi-rs WASM package\n    {\n      const resolverForWorker = (id: string, fromDir: string): string => {\n        const r = buildResolver(vol, this.fsBridge, this.proc, fromDir, this.moduleRegistry, this.opts, this.transformCache);\n        return r.resolve(id);\n      };\n      const workerFactory = createNapiWorkerFactory(\n        vol,\n        resolverForWorker,\n        this.proc.env as Record<string, string>,\n        this.fsBridge,\n        (threadPoolPolyfill as any)._workerThreadForkFn ?? null,\n        this.opts.enableSharedArrayBuffer ?? true,\n      );\n      threadPoolPolyfill.setWorkerConstructorOverride((self, script, opts) => {\n        workerFactory.call(self, script, opts);\n      });\n      // prewarm now while the parent thread is free. chrome wont schedule\n      // child workers spawned from a parent thats about to Atomics.wait\n      try { prewarmWasiPool(); } catch (err) { _nativeConsole.warn(\"[Nodepod] WASI pool prewarm failed:\", err); }\n    }\n\n    // Next.js createAsyncLocalStorage() prefers globalThis.AsyncLocalStorage over\n    // require('async_hooks'). Install our propagation-aware polyfill so\n    // workUnitAsyncStorage / workAsyncStorage survive await boundaries.\n    asyncCtxPolyfill.installAsyncContext();\n    if (!(globalThis as any).AsyncLocalStorage?.__nodepodAsyncCtx) {\n      (globalThis as any).AsyncLocalStorage = asyncCtxPolyfill.AsyncLocalStorage;\n      ((globalThis as any).AsyncLocalStorage as any).__nodepodAsyncCtx = true;\n    }\n\n    // Intercept fetch() for file:// URLs — serve from VFS instead of network.\n    // napi-rs wasm32-wasi packages use fetch(new URL('file.wasm', import.meta.url))\n    // which browsers block. This patches fetch to read from the in-memory filesystem.\n    // every fetch also registers a FetchRequest Handle so the loop stays\n    // alive until the request settles. matches node's undici.\n    if (!(globalThis.fetch as any).__nodepodPatched) {\n      const origFetch = globalThis.fetch.bind(globalThis);\n      const patchedFetch = (\n        input: RequestInfo | URL,\n        init?: RequestInit,\n      ): Promise<Response> => {\n        const handle = getRegistry().register(\"FetchRequest\");\n        const doFetch = (): Promise<Response> => {\n          let url: string | undefined;\n          if (typeof input === \"string\") url = input;\n          else if (input instanceof URL) url = input.href;\n          else if (input instanceof Request) url = input.url;\n\n          if (url?.startsWith(\"file://\")) {\n            // Convert file:// URL to VFS path\n            let vfsPath: string;\n            try {\n              vfsPath = decodeURIComponent(new URL(url).pathname);\n            } catch {\n              vfsPath = decodeURIComponent(url.slice(7));\n            }\n            const v = (globalThis as any).__nodepodVolume as\n              | MemoryVolume\n              | undefined;\n            if (v) {\n              try {\n                const data = v.readFileSync(vfsPath);\n                const bytes =\n                  data instanceof Uint8Array\n                    ? data\n                    : new TextEncoder().encode(String(data));\n                const contentType = vfsPath.endsWith(\".wasm\")\n                  ? \"application/wasm\"\n                  : \"application/octet-stream\";\n                return Promise.resolve(\n                  new Response(\n                    bytes.buffer.slice(\n                      bytes.byteOffset,\n                      bytes.byteOffset + bytes.byteLength,\n                    ) as ArrayBuffer,\n                    {\n                      status: 200,\n                      headers: { \"Content-Type\": contentType },\n                    },\n                  ),\n                );\n              } catch {\n                // .wasm under node_modules that aren't in the VFS (big binaries that didn't extract), pull from CDN\n                const cdnUrl = buildCdnWasmUrl(v, vfsPath);\n                if (cdnUrl) {\n                  return origFetch(cdnUrl).then((resp) => {\n                    if (resp.ok) {\n                      try {\n                        // overlap compile with the caller's byte read, and\n                        // persist to VFS so the next read skips the network\n                        const forCompile =\n                          typeof WebAssembly !== \"undefined\" &&\n                          typeof WebAssembly.compileStreaming === \"function\"\n                            ? resp.clone()\n                            : null;\n                        const forBytes = resp.clone();\n                        (async () => {\n                          const streaming = forCompile\n                            ? WebAssembly.compileStreaming(forCompile)\n                            : null;\n                          streaming?.catch(() => {});\n                          const bytes = new Uint8Array(await forBytes.arrayBuffer());\n                          try {\n                            const dir =\n                              vfsPath.substring(0, vfsPath.lastIndexOf(\"/\")) || \"/\";\n                            v.mkdirSync(dir, { recursive: true });\n                            v.writeFileSync(vfsPath, bytes);\n                          } catch { /* best-effort */ }\n                          if (streaming && bytes.byteLength >= PRECOMPILE_THRESHOLD) {\n                            try {\n                              registerCompiledModule(bytes, await streaming);\n                            } catch {\n                              precompileWasm(bytes);\n                            }\n                          } else {\n                            precompileWasm(bytes);\n                          }\n                        })().catch(() => {});\n                      } catch { /* clone unsupported — plain passthrough */ }\n                    }\n                    return resp;\n                  });\n                }\n                return Promise.resolve(\n                  new Response(\"Not found\", { status: 404 }),\n                );\n              }\n            }\n          }\n          return origFetch(input, init);\n        };\n        return doFetch().finally(() => handle.close());\n      };\n      (globalThis as any).fetch = Object.assign(patchedFetch, {\n        __nodepodPatched: true,\n      });\n    }\n\n    // bundlers (rolldown, rollup, Vite) prefix virtual module paths with null bytes (\\0module, %00module), but Chrome's URL constructor rejects those — sanitize while keeping the virtual semantics\n    if (!(globalThis.URL as any).__nodepodPatched) {\n      const OrigURL = globalThis.URL;\n      const PatchedURL = function URL(this: any, url: string, base?: string) {\n        try {\n          if (base !== undefined) return new OrigURL(url, base);\n          return new OrigURL(url);\n        } catch (e: any) {\n          if (typeof url === \"string\" && (url.includes(\"%00\") || url.includes(\"\\0\"))) {\n            const sanitized = url\n              .replace(/%00/g, \"__v_nul__\")\n              .replace(/\\0/g, \"__v_nul__\")\n              // file:// absolute paths need three slashes\n              .replace(/^file:\\/\\/([^/])/, \"file:///$1\");\n            if (base !== undefined) return new OrigURL(sanitized, base);\n            return new OrigURL(sanitized);\n          }\n          throw e;\n        }\n      } as any;\n      PatchedURL.prototype = OrigURL.prototype;\n      PatchedURL.createObjectURL = OrigURL.createObjectURL?.bind(OrigURL);\n      PatchedURL.revokeObjectURL = OrigURL.revokeObjectURL?.bind(OrigURL);\n      PatchedURL.canParse = (OrigURL as any).canParse?.bind(OrigURL);\n      (PatchedURL as any).__nodepodPatched = true;\n      (globalThis as any).URL = PatchedURL;\n    }\n\n    if (typeof globalThis.setImmediate === \"undefined\") {\n      (globalThis as any).setImmediate = (\n        fn: (...a: unknown[]) => void,\n        ...a: unknown[]\n      ) => setTimeout(fn, 0, ...a);\n      (globalThis as any).clearImmediate = (id: number) => clearTimeout(id);\n    }\n\n    // Browsers disallow sync WebAssembly.Module() for >8MB buffers — serve from cache\n    if (\n      typeof WebAssembly !== \"undefined\" &&\n      !(WebAssembly.Module as any).__nodepodPatched\n    ) {\n      const OrigModule = WebAssembly.Module;\n      const PatchedModule = function WebAssemblyModule(\n        this: any,\n        bytes: BufferSource,\n      ) {\n        const cached = getCachedModule(bytes);\n        if (cached) return cached;\n        try {\n          return new OrigModule(bytes);\n        } catch (e: any) {\n          if (\n            e &&\n            (e.message?.includes(\"disallowed on the main thread\") ||\n              e.message?.includes(\"buffer size is larger than\"))\n          ) {\n            const cached2 = getCachedModule(bytes);\n            if (cached2) return cached2;\n            const compilePromise = compileWasmInWorker(\n              bytes instanceof ArrayBuffer\n                ? new Uint8Array(bytes)\n                : (bytes as Uint8Array),\n            );\n            (globalThis as any).__wasmCompilePromise = compilePromise;\n          }\n          throw e;\n        }\n      } as any;\n      PatchedModule.prototype = OrigModule.prototype;\n      PatchedModule.__nodepodPatched = true;\n      PatchedModule.imports = OrigModule.imports?.bind(OrigModule);\n      PatchedModule.exports = OrigModule.exports?.bind(OrigModule);\n      PatchedModule.customSections =\n        OrigModule.customSections?.bind(OrigModule);\n      (globalThis as any).WebAssembly.Module = PatchedModule;\n    }\n\n    // timers need .ref/.unref to match node's API and have to register\n    // Handles so the loop knows about pending work. delegate to the\n    // node:timers polyfill, it wires everything through getRegistry().\n    if (!(globalThis.setTimeout as any).__nodepodPatched) {\n      (globalThis as any).setTimeout = Object.assign(timersPolyfill.setTimeout, {\n        __nodepodPatched: true,\n      });\n      (globalThis as any).setInterval = Object.assign(\n        timersPolyfill.setInterval,\n        { __nodepodPatched: true },\n      );\n      (globalThis as any).clearTimeout = timersPolyfill.clearTimeout;\n      (globalThis as any).clearInterval = timersPolyfill.clearInterval;\n    }\n\n    this.patchStackTraceApi();\n    this.patchTextDecoder();\n  }\n\n  private patchTextDecoder(): void {\n    const Original = globalThis.TextDecoder;\n\n    class ExtendedDecoder {\n      private enc: string;\n      private inner: TextDecoder | null = null;\n\n      constructor(encoding: string = \"utf-8\", options?: TextDecoderOptions) {\n        this.enc = encoding.toLowerCase();\n        const textEncodings = [\n          \"utf-8\",\n          \"utf8\",\n          \"utf-16le\",\n          \"utf-16be\",\n          \"utf-16\",\n          \"ascii\",\n          \"iso-8859-1\",\n          \"latin1\",\n          \"windows-1252\",\n        ];\n        if (textEncodings.includes(this.enc)) {\n          try {\n            this.inner = new Original(encoding, options);\n          } catch {\n            this.inner = new Original(\"utf-8\", options);\n          }\n        }\n      }\n\n      // make a BufferSource safe for native TextDecoder — it throws on SharedArrayBuffer-backed views, which threaded WASM modules (wasm32-wasip1-threads, emnapi, rayon, tokio) emit all the time\n      // copies into a regular ArrayBuffer when needed, transparent to callers\n      private static normalizeInput(input: BufferSource): BufferSource {\n        if (typeof SharedArrayBuffer === \"undefined\") return input;\n        if (input instanceof ArrayBuffer) return input;\n        if (input instanceof SharedArrayBuffer) {\n          const copy = new Uint8Array(input.byteLength);\n          copy.set(new Uint8Array(input));\n          return copy;\n        }\n        const view = input as ArrayBufferView;\n        if (view.buffer instanceof SharedArrayBuffer) {\n          const src = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n          const copy = new Uint8Array(view.byteLength);\n          copy.set(src);\n          return copy;\n        }\n        return input;\n      }\n\n      decode(input?: BufferSource, options?: TextDecodeOptions): string {\n        if (!input) {\n          if (this.inner) return this.inner.decode(undefined, options);\n          return \"\";\n        }\n        const safe = ExtendedDecoder.normalizeInput(input);\n        if (this.inner) return this.inner.decode(safe, options);\n        const safeView = safe as ArrayBufferView | ArrayBuffer;\n        const bytes =\n          safeView instanceof ArrayBuffer\n            ? new Uint8Array(safeView)\n            : new Uint8Array(\n                (safeView as ArrayBufferView).buffer,\n                (safeView as ArrayBufferView).byteOffset,\n                (safeView as ArrayBufferView).byteLength,\n              );\n\n        if (this.enc === \"base64\") return bytesToBase64(bytes);\n        if (this.enc === \"base64url\")\n          return bytesToBase64(bytes)\n            .replace(/\\+/g, \"-\")\n            .replace(/\\//g, \"_\")\n            .replace(/=/g, \"\");\n        if (this.enc === \"hex\") return bytesToHex(bytes);\n        return new Original(\"utf-8\").decode(safe, options);\n      }\n\n      get fatal(): boolean {\n        return this.inner?.fatal ?? false;\n      }\n      get ignoreBOM(): boolean {\n        return this.inner?.ignoreBOM ?? false;\n      }\n    }\n\n    globalThis.TextDecoder = ExtendedDecoder as unknown as typeof TextDecoder;\n  }\n\n  // Override even in Chrome — eval produces stack frames the native V8 API can't map to VFS paths\n  private patchStackTraceApi(): void {\n    if ((Error as any).stackTraceLimit === undefined)\n      (Error as any).stackTraceLimit = 10;\n\n    function parseFrames(stack: string) {\n      if (!stack) return [];\n      const frames: Array<{\n        fn: string;\n        file: string;\n        line: number;\n        col: number;\n      }> = [];\n      for (const raw of stack.split(\"\\n\")) {\n        const trimmed = raw.trim();\n        if (!trimmed) continue;\n        if (/^\\w*Error\\b/.test(trimmed) && !trimmed.startsWith(\"at \")) continue;\n\n        const safari = trimmed.match(/^(.*)@(.*?):(\\d+):(\\d+)$/);\n        if (safari) {\n          frames.push({\n            fn: safari[1] || \"\",\n            file: safari[2],\n            line: +safari[3],\n            col: +safari[4],\n          });\n          continue;\n        }\n\n        const chrome = trimmed.match(\n          /^at\\s+(?:(.+?)\\s+\\()?(.*?):(\\d+):(\\d+)\\)?$/,\n        );\n        if (chrome) {\n          frames.push({\n            fn: chrome[1] || \"\",\n            file: chrome[2],\n            line: +chrome[3],\n            col: +chrome[4],\n          });\n          continue;\n        }\n\n        const chromePlain = trimmed.match(/^at\\s+(?:(.+?)\\s+\\()?(.*?)\\)?$/);\n        if (chromePlain) {\n          frames.push({\n            fn: chromePlain[1] || \"\",\n            file: chromePlain[2] || \"<anonymous>\",\n            line: 0,\n            col: 0,\n          });\n        }\n      }\n      return frames;\n    }\n\n    function makeCallSite(f: {\n      fn: string;\n      file: string;\n      line: number;\n      col: number;\n    }) {\n      return {\n        getFileName: () => f.file || null,\n        getLineNumber: () => f.line || null,\n        getColumnNumber: () => f.col || null,\n        getFunctionName: () => f.fn || null,\n        getMethodName: () => f.fn || null,\n        getTypeName: () => null,\n        getThis: () => undefined,\n        getFunction: () => undefined,\n        getEvalOrigin: () => undefined,\n        isNative: () => false,\n        isConstructor: () => false,\n        isToplevel: () => !f.fn,\n        isEval: () => false,\n        toString: () =>\n          f.fn\n            ? `${f.fn} (${f.file}:${f.line}:${f.col})`\n            : `${f.file}:${f.line}:${f.col}`,\n      };\n    }\n\n    function buildSites(stack: string, ctorOpt?: Function) {\n      const frames = parseFrames(stack);\n      let start = 0;\n      if (ctorOpt?.name) {\n        for (let i = 0; i < frames.length; i++) {\n          if (frames[i].fn === ctorOpt.name) {\n            start = i + 1;\n            break;\n          }\n        }\n      }\n      return frames.slice(start).map(makeCallSite);\n    }\n\n    const sym = Symbol(\"rawStack\");\n    const symProcessed = Symbol(\"stackProcessed\");\n\n    const nativeCapture = (Error as any).captureStackTrace;\n\n    Object.defineProperty(Error.prototype, \"stack\", {\n      get() {\n        if ((this as any)[symProcessed]) return (this as any)[sym];\n        const raw = (this as any)[sym];\n        if (\n          typeof raw === \"string\" &&\n          typeof (Error as any).prepareStackTrace === \"function\"\n        ) {\n          try {\n            const sites = buildSites(raw);\n            if (sites.length > 0) {\n              return (Error as any).prepareStackTrace(this, sites);\n            }\n          } catch {\n            return raw;\n          }\n        }\n        return raw;\n      },\n      set(val: any) {\n        (this as any)[sym] = val;\n      },\n      configurable: true,\n      enumerable: false,\n    });\n\n    (Error as any).captureStackTrace = function (\n      target: any,\n      ctorOpt?: Function,\n    ) {\n      const saved = (Error as any).prepareStackTrace;\n      (Error as any).prepareStackTrace = undefined;\n\n      let raw: string;\n      if (nativeCapture) {\n        const tmp = {} as any;\n        nativeCapture(tmp);\n        raw = tmp.stack || \"\";\n      } else {\n        raw = new Error().stack || \"\";\n      }\n      (Error as any).prepareStackTrace = saved;\n\n      if (typeof saved === \"function\") {\n        try {\n          const result = saved(target, buildSites(raw, ctorOpt));\n          (target as any)[symProcessed] = true;\n          target.stack = result;\n        } catch {\n          target.stack = raw;\n        }\n      } else {\n        target.stack = raw;\n      }\n    };\n  }\n\n  execute(\n    code: string,\n    filename: string = \"/index.js\",\n  ): { exports: unknown; module: ModuleRecord } {\n    this._trimModuleCache();\n    const dir = pathPolyfill.dirname(filename);\n    // Only write when the content differs to avoid triggering file watchers\n    // (e.g. nodemon/chokidar) with a no-op write that causes restart loops.\n    try {\n      const existing = this.vol.readFileSync(filename, \"utf8\");\n      if (existing !== code) this.vol.writeFileSync(filename, code);\n    } catch {\n      this.vol.writeFileSync(filename, code);\n    }\n\n    const mod: ModuleRecord = {\n      id: filename,\n      filename,\n      exports: {},\n      loaded: false,\n      children: [],\n      paths: [],\n      parent: null,\n    };\n    this.moduleRegistry[filename] = mod;\n\n    const consoleProxy = wrapConsole(this.opts.onConsole);\n\n    let processed = code;\n    if (processed.startsWith(\"#!\"))\n      processed = processed.slice(processed.indexOf(\"\\n\") + 1);\n    if (isTypeScriptFile(filename)) {\n      processed = stripTypeScript(processed);\n    }\n    if (filename.endsWith(\".cjs\")) {\n      try {\n        const cjsAst = acorn.parse(processed, {\n          ecmaVersion: \"latest\",\n          sourceType: \"script\",\n          allowImportExportEverywhere: true,\n        });\n        const cjsPatches: Array<[number, number, string]> = [];\n        const walkCjs = (node: any) => {\n          if (!node || typeof node !== \"object\") return;\n          if (Array.isArray(node)) {\n            for (const c of node) walkCjs(c);\n            return;\n          }\n          if (typeof node.type !== \"string\") return;\n          if (node.type === \"ImportExpression\") {\n            cjsPatches.push([node.start, node.start + 6, \"__asyncLoad\"]);\n          }\n          if (\n            node.type === \"MetaProperty\" &&\n            node.meta?.name === \"import\" &&\n            node.property?.name === \"meta\"\n          ) {\n            cjsPatches.push([\n              node.start,\n              node.end,\n              `({ url: \"file://${filename}\", dirname: \"${pathPolyfill.dirname(filename)}\", filename: \"${filename}\" })`,\n            ]);\n          }\n          for (const key of Object.keys(node)) {\n            if (key === \"type\" || key === \"start\" || key === \"end\") continue;\n            const val = node[key];\n            if (val && typeof val === \"object\") walkCjs(val);\n          }\n        };\n        walkCjs(cjsAst);\n        if (cjsPatches.length > 0) {\n          cjsPatches.sort((a, b) => b[0] - a[0]);\n          for (const [start, end, replacement] of cjsPatches) {\n            processed =\n              processed.slice(0, start) + replacement + processed.slice(end);\n          }\n        }\n      } catch {\n        /* can't parse */\n      }\n    } else {\n      processed = convertModuleSyntax(processed, filename);\n    }\n\n    const isCjs = filename.endsWith(\".cjs\");\n    const fileHasTLA = !isCjs && hasTopLevelAwait(processed);\n    if (!isCjs) processed = stripTopLevelAwait(processed);\n\n    const resolver = buildResolver(\n      this.vol,\n      this.fsBridge,\n      this.proc,\n      dir,\n      this.moduleRegistry,\n      this.opts,\n      this.transformCache,\n      fileHasTLA,\n    );\n    resolver._ownerRecord = mod;\n\n    try {\n      const metaUrl = \"file://\" + filename;\n      const wrapper = buildModuleWrapper(processed);\n\n      const asyncLoader = makeDynamicLoader(resolver);\n      let fn;\n      try {\n        fn = (0, eval)(wrapper);\n      } catch (syntaxErr) {\n        throw syntaxErr;\n      }\n\n      fn(\n        mod.exports,\n        resolver,\n        mod,\n        filename,\n        dir,\n        this.proc,\n        consoleProxy,\n        { url: metaUrl, dirname: dir, filename },\n        asyncLoader,\n        syncAwait,\n        SyncPromiseClass,\n      );\n\n      mod.loaded = true;\n    } catch (err) {\n      delete this.moduleRegistry[filename];\n      throw err;\n    }\n\n    return { exports: mod.exports, module: mod };\n  }\n\n  executeSync = this.execute;\n\n  async executeAsync(\n    code: string,\n    filename: string = \"/index.js\",\n  ): Promise<ExecutionOutcome> {\n    return Promise.resolve(this.execute(code, filename));\n  }\n\n  runFile(filename: string): { exports: unknown; module: ModuleRecord } {\n    const source = this.vol.readFileSync(filename, \"utf8\");\n    return this.execute(source, filename);\n  }\n\n  runFileSync = this.runFile;\n\n  // Wraps in async IIFE when TLA is detected, falls back to sync otherwise\n  async runFileTLA(\n    filename: string,\n  ): Promise<{ exports: unknown; module: ModuleRecord }> {\n    const source = this.vol.readFileSync(filename, \"utf8\");\n    const dir = pathPolyfill.dirname(filename);\n    // No need to write — source was just read from the same volume.\n    // Writing it back triggers file watchers (nodemon restart loops).\n\n    const mod: ModuleRecord = {\n      id: filename,\n      filename,\n      exports: {},\n      loaded: false,\n      children: [],\n      paths: [],\n      parent: null,\n    };\n    this.moduleRegistry[filename] = mod;\n\n    const consoleProxy = wrapConsole(this.opts.onConsole);\n\n    let processed = source as string;\n    if (processed.startsWith(\"#!\"))\n      processed = processed.slice(processed.indexOf(\"\\n\") + 1);\n    if (isTypeScriptFile(filename)) {\n      processed = stripTypeScript(processed);\n    }\n    if (filename.endsWith(\".cjs\")) {\n      processed = rewriteDynamicImportsRegex(processed);\n      processed = processed.replace(\n        /\\bimport\\.meta\\.url\\b/g,\n        `\"file://${filename}\"`,\n      );\n      processed = processed.replace(\n        /\\bimport\\.meta\\b/g,\n        `({ url: \"file://${filename}\" })`,\n      );\n    } else {\n      processed = convertModuleSyntax(processed, filename);\n    }\n    const tla = hasTopLevelAwait(processed);\n    const tlaStripped = stripTopLevelAwait(processed);\n\n    // Don't propagate deAsyncImports from entry — it uses native await (async IIFE),\n    // so deps don't need de-async. loadModule handles individual TLA modules.\n    const resolver = buildResolver(\n      this.vol,\n      this.fsBridge,\n      this.proc,\n      dir,\n      this.moduleRegistry,\n      this.opts,\n      this.transformCache,\n      false,\n    );\n    resolver._ownerRecord = mod;\n\n    if (!tla) {\n      try {\n        processed = tlaStripped;\n        const wrapper = buildModuleWrapper(processed);\n        const asyncLoader = makeDynamicLoader(resolver);\n        const fn = (0, eval)(wrapper);\n\n        fn(\n          mod.exports,\n          resolver,\n          mod,\n          filename,\n          dir,\n          this.proc,\n          consoleProxy,\n          { url: \"file://\" + filename, dirname: dir, filename },\n          asyncLoader,\n          syncAwait,\n          SyncPromiseClass,\n        );\n        mod.loaded = true;\n      } catch (err) {\n        delete this.moduleRegistry[filename];\n        throw err;\n      }\n      return { exports: mod.exports, module: mod };\n    }\n\n    try {\n      const metaUrl = \"file://\" + filename;\n      const wrapper = buildModuleWrapper(processed, { async: true });\n      const asyncLoader = makeDynamicLoader(resolver);\n      const fn = (0, eval)(wrapper);\n      await fn(\n        mod.exports,\n        resolver,\n        mod,\n        filename,\n        dir,\n        this.proc,\n        consoleProxy,\n        { url: metaUrl, dirname: dir, filename },\n        asyncLoader,\n        syncAwait,\n        SyncPromiseClass,\n      );\n      mod.loaded = true;\n    } catch (err) {\n      delete this.moduleRegistry[filename];\n      throw err;\n    }\n    return { exports: mod.exports, module: mod };\n  }\n\n  async runFileAsync(filename: string): Promise<ExecutionOutcome> {\n    return Promise.resolve(this.runFile(filename));\n  }\n\n  clearCache(): void {\n    for (const k of Object.keys(this.moduleRegistry))\n      delete this.moduleRegistry[k];\n    // Also clear shared resolver/manifest caches\n    (this.moduleRegistry as any).__resolveCache?.clear();\n    (this.moduleRegistry as any).__manifestCache?.clear();\n    delete (this.moduleRegistry as any).__pkgIdentityMap;\n    this.transformCache.clear();\n  }\n\n  /** Evict one node_modules entry when module cache exceeds soft limit. */\n  private _trimModuleCache(): void {\n    const limit = this.opts.handler?.options.moduleSoftCacheSize ?? 512;\n    const keys = Object.keys(this.moduleRegistry);\n    if (keys.length < limit) return;\n    for (const k of keys) {\n      if (k.includes(\"/node_modules/\")) {\n        delete this.moduleRegistry[k];\n        return; // One eviction per call — amortized O(1)\n      }\n    }\n  }\n\n  getVolume(): MemoryVolume {\n    return this.vol;\n  }\n  getProcess(): ProcessObject {\n    return this.proc;\n  }\n\n  createREPL(): { eval: (code: string) => unknown } {\n    const resolver = buildResolver(\n      this.vol,\n      this.fsBridge,\n      this.proc,\n      \"/\",\n      this.moduleRegistry,\n      this.opts,\n      this.transformCache,\n    );\n    const consoleProxy = wrapConsole(this.opts.onConsole);\n    const proc = this.proc;\n    const buf = bufferPolyfill.Buffer;\n\n    const GenFn = Object.getPrototypeOf(function* () {}).constructor;\n    const gen = new GenFn(\n      \"require\",\n      \"console\",\n      \"process\",\n      \"Buffer\",\n      `var __code, __result;\nwhile (true) {\n  __code = yield;\n  try {\n    __result = eval(__code);\n    yield { value: __result, error: null };\n  } catch (e) {\n    yield { value: undefined, error: e };\n  }\n}`,\n    )(resolver, consoleProxy, proc, buf);\n    gen.next();\n\n    return {\n      eval(code: string): unknown {\n        const normalized = code.replace(/^\\s*(const|let)\\s+/gm, \"var \");\n        const exprResult = gen.next(\"(\" + normalized + \")\").value as {\n          value: unknown;\n          error: unknown;\n        };\n        if (!exprResult.error) {\n          gen.next();\n          return exprResult.value;\n        }\n        gen.next();\n        const stmtResult = gen.next(normalized).value as {\n          value: unknown;\n          error: unknown;\n        };\n        if (stmtResult.error) {\n          gen.next();\n          throw stmtResult.error;\n        }\n        gen.next();\n        return stmtResult.value;\n      },\n    };\n  }\n}\n\nexport function executeCode(\n  code: string,\n  vol: MemoryVolume,\n  opts?: EngineOptions,\n): { exports: unknown; module: ModuleRecord } {\n  const engine = new ScriptEngine(vol, opts);\n  return engine.execute(code);\n}\n\nexport type {\n  IScriptEngine,\n  ExecutionOutcome,\n  EngineConfig,\n} from \"./engine-types\";\nexport default ScriptEngine;\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nconst proxyMarker = Symbol(\"Comlink.proxy\");\nconst createEndpoint = Symbol(\"Comlink.endpoint\");\nconst releaseProxy = Symbol(\"Comlink.releaseProxy\");\nconst finalizer = Symbol(\"Comlink.finalizer\");\nconst throwMarker = Symbol(\"Comlink.thrown\");\nconst isObject = (val) => (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n/**\n * Internal transfer handle to handle objects marked to proxy.\n */\nconst proxyTransferHandler = {\n    canHandle: (val) => isObject(val) && val[proxyMarker],\n    serialize(obj) {\n        const { port1, port2 } = new MessageChannel();\n        expose(obj, port1);\n        return [port2, [port2]];\n    },\n    deserialize(port) {\n        port.start();\n        return wrap(port);\n    },\n};\n/**\n * Internal transfer handler to handle thrown exceptions.\n */\nconst throwTransferHandler = {\n    canHandle: (value) => isObject(value) && throwMarker in value,\n    serialize({ value }) {\n        let serialized;\n        if (value instanceof Error) {\n            serialized = {\n                isError: true,\n                value: {\n                    message: value.message,\n                    name: value.name,\n                    stack: value.stack,\n                },\n            };\n        }\n        else {\n            serialized = { isError: false, value };\n        }\n        return [serialized, []];\n    },\n    deserialize(serialized) {\n        if (serialized.isError) {\n            throw Object.assign(new Error(serialized.value.message), serialized.value);\n        }\n        throw serialized.value;\n    },\n};\n/**\n * Allows customizing the serialization of certain values.\n */\nconst transferHandlers = new Map([\n    [\"proxy\", proxyTransferHandler],\n    [\"throw\", throwTransferHandler],\n]);\nfunction isAllowedOrigin(allowedOrigins, origin) {\n    for (const allowedOrigin of allowedOrigins) {\n        if (origin === allowedOrigin || allowedOrigin === \"*\") {\n            return true;\n        }\n        if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n            return true;\n        }\n    }\n    return false;\n}\nfunction expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n    ep.addEventListener(\"message\", function callback(ev) {\n        if (!ev || !ev.data) {\n            return;\n        }\n        if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n            console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n            return;\n        }\n        const { id, type, path } = Object.assign({ path: [] }, ev.data);\n        const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n        let returnValue;\n        try {\n            const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n            const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n            switch (type) {\n                case \"GET\" /* MessageType.GET */:\n                    {\n                        returnValue = rawValue;\n                    }\n                    break;\n                case \"SET\" /* MessageType.SET */:\n                    {\n                        parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n                        returnValue = true;\n                    }\n                    break;\n                case \"APPLY\" /* MessageType.APPLY */:\n                    {\n                        returnValue = rawValue.apply(parent, argumentList);\n                    }\n                    break;\n                case \"CONSTRUCT\" /* MessageType.CONSTRUCT */:\n                    {\n                        const value = new rawValue(...argumentList);\n                        returnValue = proxy(value);\n                    }\n                    break;\n                case \"ENDPOINT\" /* MessageType.ENDPOINT */:\n                    {\n                        const { port1, port2 } = new MessageChannel();\n                        expose(obj, port2);\n                        returnValue = transfer(port1, [port1]);\n                    }\n                    break;\n                case \"RELEASE\" /* MessageType.RELEASE */:\n                    {\n                        returnValue = undefined;\n                    }\n                    break;\n                default:\n                    return;\n            }\n        }\n        catch (value) {\n            returnValue = { value, [throwMarker]: 0 };\n        }\n        Promise.resolve(returnValue)\n            .catch((value) => {\n            return { value, [throwMarker]: 0 };\n        })\n            .then((returnValue) => {\n            const [wireValue, transferables] = toWireValue(returnValue);\n            ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n            if (type === \"RELEASE\" /* MessageType.RELEASE */) {\n                // detach and deactive after sending release response above.\n                ep.removeEventListener(\"message\", callback);\n                closeEndPoint(ep);\n                if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n                    obj[finalizer]();\n                }\n            }\n        })\n            .catch((error) => {\n            // Send Serialization Error To Caller\n            const [wireValue, transferables] = toWireValue({\n                value: new TypeError(\"Unserializable return value\"),\n                [throwMarker]: 0,\n            });\n            ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n        });\n    });\n    if (ep.start) {\n        ep.start();\n    }\n}\nfunction isMessagePort(endpoint) {\n    return endpoint.constructor.name === \"MessagePort\";\n}\nfunction closeEndPoint(endpoint) {\n    if (isMessagePort(endpoint))\n        endpoint.close();\n}\nfunction wrap(ep, target) {\n    const pendingListeners = new Map();\n    ep.addEventListener(\"message\", function handleMessage(ev) {\n        const { data } = ev;\n        if (!data || !data.id) {\n            return;\n        }\n        const resolver = pendingListeners.get(data.id);\n        if (!resolver) {\n            return;\n        }\n        try {\n            resolver(data);\n        }\n        finally {\n            pendingListeners.delete(data.id);\n        }\n    });\n    return createProxy(ep, pendingListeners, [], target);\n}\nfunction throwIfProxyReleased(isReleased) {\n    if (isReleased) {\n        throw new Error(\"Proxy has been released and is not useable\");\n    }\n}\nfunction releaseEndpoint(ep) {\n    return requestResponseMessage(ep, new Map(), {\n        type: \"RELEASE\" /* MessageType.RELEASE */,\n    }).then(() => {\n        closeEndPoint(ep);\n    });\n}\nconst proxyCounter = new WeakMap();\nconst proxyFinalizers = \"FinalizationRegistry\" in globalThis &&\n    new FinalizationRegistry((ep) => {\n        const newCount = (proxyCounter.get(ep) || 0) - 1;\n        proxyCounter.set(ep, newCount);\n        if (newCount === 0) {\n            releaseEndpoint(ep);\n        }\n    });\nfunction registerProxy(proxy, ep) {\n    const newCount = (proxyCounter.get(ep) || 0) + 1;\n    proxyCounter.set(ep, newCount);\n    if (proxyFinalizers) {\n        proxyFinalizers.register(proxy, ep, proxy);\n    }\n}\nfunction unregisterProxy(proxy) {\n    if (proxyFinalizers) {\n        proxyFinalizers.unregister(proxy);\n    }\n}\nfunction createProxy(ep, pendingListeners, path = [], target = function () { }) {\n    let isProxyReleased = false;\n    const proxy = new Proxy(target, {\n        get(_target, prop) {\n            throwIfProxyReleased(isProxyReleased);\n            if (prop === releaseProxy) {\n                return () => {\n                    unregisterProxy(proxy);\n                    releaseEndpoint(ep);\n                    pendingListeners.clear();\n                    isProxyReleased = true;\n                };\n            }\n            if (prop === \"then\") {\n                if (path.length === 0) {\n                    return { then: () => proxy };\n                }\n                const r = requestResponseMessage(ep, pendingListeners, {\n                    type: \"GET\" /* MessageType.GET */,\n                    path: path.map((p) => p.toString()),\n                }).then(fromWireValue);\n                return r.then.bind(r);\n            }\n            return createProxy(ep, pendingListeners, [...path, prop]);\n        },\n        set(_target, prop, rawValue) {\n            throwIfProxyReleased(isProxyReleased);\n            // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n            // boolean. To show good will, we return true asynchronously ¯\\_(ツ)_/¯\n            const [value, transferables] = toWireValue(rawValue);\n            return requestResponseMessage(ep, pendingListeners, {\n                type: \"SET\" /* MessageType.SET */,\n                path: [...path, prop].map((p) => p.toString()),\n                value,\n            }, transferables).then(fromWireValue);\n        },\n        apply(_target, _thisArg, rawArgumentList) {\n            throwIfProxyReleased(isProxyReleased);\n            const last = path[path.length - 1];\n            if (last === createEndpoint) {\n                return requestResponseMessage(ep, pendingListeners, {\n                    type: \"ENDPOINT\" /* MessageType.ENDPOINT */,\n                }).then(fromWireValue);\n            }\n            // We just pretend that `bind()` didn’t happen.\n            if (last === \"bind\") {\n                return createProxy(ep, pendingListeners, path.slice(0, -1));\n            }\n            const [argumentList, transferables] = processArguments(rawArgumentList);\n            return requestResponseMessage(ep, pendingListeners, {\n                type: \"APPLY\" /* MessageType.APPLY */,\n                path: path.map((p) => p.toString()),\n                argumentList,\n            }, transferables).then(fromWireValue);\n        },\n        construct(_target, rawArgumentList) {\n            throwIfProxyReleased(isProxyReleased);\n            const [argumentList, transferables] = processArguments(rawArgumentList);\n            return requestResponseMessage(ep, pendingListeners, {\n                type: \"CONSTRUCT\" /* MessageType.CONSTRUCT */,\n                path: path.map((p) => p.toString()),\n                argumentList,\n            }, transferables).then(fromWireValue);\n        },\n    });\n    registerProxy(proxy, ep);\n    return proxy;\n}\nfunction myFlat(arr) {\n    return Array.prototype.concat.apply([], arr);\n}\nfunction processArguments(argumentList) {\n    const processed = argumentList.map(toWireValue);\n    return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n}\nconst transferCache = new WeakMap();\nfunction transfer(obj, transfers) {\n    transferCache.set(obj, transfers);\n    return obj;\n}\nfunction proxy(obj) {\n    return Object.assign(obj, { [proxyMarker]: true });\n}\nfunction windowEndpoint(w, context = globalThis, targetOrigin = \"*\") {\n    return {\n        postMessage: (msg, transferables) => w.postMessage(msg, targetOrigin, transferables),\n        addEventListener: context.addEventListener.bind(context),\n        removeEventListener: context.removeEventListener.bind(context),\n    };\n}\nfunction toWireValue(value) {\n    for (const [name, handler] of transferHandlers) {\n        if (handler.canHandle(value)) {\n            const [serializedValue, transferables] = handler.serialize(value);\n            return [\n                {\n                    type: \"HANDLER\" /* WireValueType.HANDLER */,\n                    name,\n                    value: serializedValue,\n                },\n                transferables,\n            ];\n        }\n    }\n    return [\n        {\n            type: \"RAW\" /* WireValueType.RAW */,\n            value,\n        },\n        transferCache.get(value) || [],\n    ];\n}\nfunction fromWireValue(value) {\n    switch (value.type) {\n        case \"HANDLER\" /* WireValueType.HANDLER */:\n            return transferHandlers.get(value.name).deserialize(value.value);\n        case \"RAW\" /* WireValueType.RAW */:\n            return value.value;\n    }\n}\nfunction requestResponseMessage(ep, pendingListeners, msg, transfers) {\n    return new Promise((resolve) => {\n        const id = generateUUID();\n        pendingListeners.set(id, resolve);\n        if (ep.start) {\n            ep.start();\n        }\n        ep.postMessage(Object.assign({ id }, msg), transfers);\n    });\n}\nfunction generateUUID() {\n    return new Array(4)\n        .fill(0)\n        .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n        .join(\"-\");\n}\n\nexport { createEndpoint, expose, finalizer, proxy, proxyMarker, releaseProxy, transfer, transferHandlers, windowEndpoint, wrap };\n//# sourceMappingURL=comlink.mjs.map\n","// executes code in a dedicated Web Worker behind the IScriptEngine interface\r\n\r\nimport { wrap, proxy, Remote } from 'comlink';\r\nimport type { MemoryVolume } from './memory-volume';\r\nimport type { IScriptEngine, ExecutionOutcome, EngineConfig, VolumeSnapshot } from './engine-types';\r\n\r\ninterface WorkerEndpoint {\r\n  init(snapshot: VolumeSnapshot, config: EngineConfig): void;\r\n  setConsoleForwarder(cb: ((method: string, args: unknown[]) => void) | null): void;\r\n  syncFile(path: string, content: string | null): void;\r\n  execute(code: string, filename?: string): Promise<ExecutionOutcome>;\r\n  runFile(filename: string): Promise<ExecutionOutcome>;\r\n  clearCache(): void;\r\n  getSnapshot(): VolumeSnapshot | null;\r\n}\r\n\r\n// URL is built at runtime so bundlers can't statically resolve it\r\nfunction createWorker(): Worker {\r\n  const base = import.meta.url;\r\n  const path = './threading/engine-worker' + '.ts';\r\n  const url = new (globalThis.URL)(path, base);\r\n  return new (globalThis.Worker)(url, { type: 'module' });\r\n}\r\n\r\nexport class WorkerSandbox implements IScriptEngine {\r\n  private thread: Worker;\r\n  private endpoint: Remote<WorkerEndpoint>;\r\n  private vol: MemoryVolume;\r\n  private cfg: EngineConfig;\r\n  private ready: Promise<void>;\r\n  private onFileChange: ((path: string, content: string) => void) | null = null;\r\n  private onFileDelete: ((path: string) => void) | null = null;\r\n\r\n  constructor(vol: MemoryVolume, cfg: EngineConfig = {}) {\r\n    this.vol = vol;\r\n    this.cfg = cfg;\r\n\r\n    this.thread = createWorker();\r\n\r\n    this.endpoint = wrap<WorkerEndpoint>(this.thread);\r\n    this.ready = this.bootstrap();\r\n    this.attachVolumeSync();\r\n  }\r\n\r\n  private async bootstrap(): Promise<void> {\r\n    const snapshot = this.vol.toSnapshot();\r\n    const workerCfg: EngineConfig = { cwd: this.cfg.cwd, env: this.cfg.env };\r\n    await this.endpoint.init(snapshot, workerCfg);\r\n\r\n    if (this.cfg.onConsole) {\r\n      await this.endpoint.setConsoleForwarder(proxy(this.cfg.onConsole));\r\n    }\r\n  }\r\n\r\n  private attachVolumeSync(): void {\r\n    this.onFileChange = (path: string, content: string) => {\r\n      this.endpoint.syncFile(path, content);\r\n    };\r\n    this.vol.on('change', this.onFileChange);\r\n\r\n    this.onFileDelete = (path: string) => {\r\n      this.endpoint.syncFile(path, null);\r\n    };\r\n    this.vol.on('delete', this.onFileDelete);\r\n  }\r\n\r\n  async execute(code: string, filename?: string): Promise<ExecutionOutcome> {\r\n    await this.ready;\r\n    return this.endpoint.execute(code, filename);\r\n  }\r\n\r\n  async runFile(filename: string): Promise<ExecutionOutcome> {\r\n    await this.ready;\r\n    return this.endpoint.runFile(filename);\r\n  }\r\n\r\n  clearCache(): void {\r\n    this.endpoint.clearCache();\r\n  }\r\n\r\n  getVolume(): MemoryVolume {\r\n    return this.vol;\r\n  }\r\n\r\n  terminate(): void {\r\n    if (this.onFileChange) this.vol.off('change', this.onFileChange);\r\n    if (this.onFileDelete) this.vol.off('delete', this.onFileDelete);\r\n    this.thread.terminate();\r\n  }\r\n}\r\n","// executes code in a cross-origin iframe for maximum browser isolation\r\n\r\nimport type { MemoryVolume } from './memory-volume';\r\nimport type { IScriptEngine, ExecutionOutcome, EngineConfig, VolumeSnapshot } from './engine-types';\r\n\r\ninterface CrossOriginMessage {\r\n  type: 'init' | 'execute' | 'runFile' | 'clearCache' | 'syncFile' | 'ready' | 'result' | 'error' | 'console';\r\n  id?: string;\r\n  code?: string;\r\n  filename?: string;\r\n  snapshot?: VolumeSnapshot;\r\n  config?: EngineConfig;\r\n  result?: ExecutionOutcome;\r\n  error?: string;\r\n  path?: string;\r\n  content?: string | null;\r\n  consoleMethod?: string;\r\n  consoleArgs?: unknown[];\r\n}\r\n\r\nexport class IframeSandbox implements IScriptEngine {\r\n  private frame: HTMLIFrameElement;\r\n  private targetOrigin: string;\r\n  private vol: MemoryVolume;\r\n  private cfg: EngineConfig;\r\n  private ready: Promise<void>;\r\n  private pendingCalls = new Map<string, { resolve: (r: ExecutionOutcome) => void; reject: (e: Error) => void }>();\r\n  private nextId = 0;\r\n  private onFileChange: ((p: string, c: string) => void) | null = null;\r\n  private onFileDelete: ((p: string) => void) | null = null;\r\n  private onMessage: ((e: MessageEvent) => void) | null = null;\r\n\r\n  constructor(sandboxUrl: string, vol: MemoryVolume, cfg: EngineConfig = {}) {\r\n    this.targetOrigin = new URL(sandboxUrl).origin;\r\n    this.vol = vol;\r\n    this.cfg = cfg;\r\n\r\n    this.frame = document.createElement('iframe');\r\n    this.frame.src = sandboxUrl;\r\n    this.frame.style.display = 'none';\r\n    // @ts-expect-error - credentialless attribute may not exist in types\r\n    this.frame.credentialless = true;\r\n    this.frame.setAttribute('credentialless', '');\r\n    this.frame.setAttribute('sandbox', 'allow-scripts');\r\n    document.body.appendChild(this.frame);\r\n\r\n    this.bindMessageHandler();\r\n    this.ready = this.awaitReady().then(() => this.sendInit());\r\n    this.attachVolumeSync();\r\n  }\r\n\r\n  private bindMessageHandler(): void {\r\n    this.onMessage = (event: MessageEvent) => {\r\n      // sandbox=\"allow-scripts\" without allow-same-origin makes the origin \"null\"\r\n      if (event.origin !== 'null' && event.origin !== this.targetOrigin) return;\r\n      const msg = event.data as CrossOriginMessage;\r\n\r\n      if (msg.type === 'result' && msg.id) {\r\n        const pending = this.pendingCalls.get(msg.id);\r\n        if (pending && msg.result) { pending.resolve(msg.result); this.pendingCalls.delete(msg.id); }\r\n      } else if (msg.type === 'error' && msg.id) {\r\n        const pending = this.pendingCalls.get(msg.id);\r\n        if (pending) { pending.reject(new Error(msg.error || 'Sandbox error')); this.pendingCalls.delete(msg.id); }\r\n      } else if (msg.type === 'console' && this.cfg.onConsole) {\r\n        this.cfg.onConsole(msg.consoleMethod || 'log', msg.consoleArgs || []);\r\n      }\r\n    };\r\n    window.addEventListener('message', this.onMessage);\r\n  }\r\n\r\n  private awaitReady(): Promise<void> {\r\n    return new Promise(resolve => {\r\n      const handler = (event: MessageEvent) => {\r\n        if (event.origin !== 'null' && event.origin !== this.targetOrigin) return;\r\n        if ((event.data as CrossOriginMessage).type === 'ready') {\r\n          window.removeEventListener('message', handler);\r\n          resolve();\r\n        }\r\n      };\r\n      window.addEventListener('message', handler);\r\n    });\r\n  }\r\n\r\n  private async sendInit(): Promise<void> {\r\n    const msg: CrossOriginMessage = {\r\n      type: 'init',\r\n      snapshot: this.vol.toSnapshot(),\r\n      config: { cwd: this.cfg.cwd, env: this.cfg.env },\r\n    };\r\n    // '*' is fine here — we're posting to this.frame.contentWindow directly,\r\n    // and sandboxed iframes have a \"null\" origin so we cant target them specifically\r\n    this.frame.contentWindow?.postMessage(msg, '*');\r\n  }\r\n\r\n  private attachVolumeSync(): void {\r\n    this.onFileChange = (path, content) => {\r\n      this.frame.contentWindow?.postMessage({ type: 'syncFile', path, content } as CrossOriginMessage, '*');\r\n    };\r\n    this.vol.on('change', this.onFileChange);\r\n\r\n    this.onFileDelete = (path) => {\r\n      this.frame.contentWindow?.postMessage({ type: 'syncFile', path, content: null } as CrossOriginMessage, '*');\r\n    };\r\n    this.vol.on('delete', this.onFileDelete);\r\n  }\r\n\r\n  private dispatch(msg: CrossOriginMessage): Promise<ExecutionOutcome> {\r\n    return new Promise((resolve, reject) => {\r\n      const id = String(this.nextId++);\r\n      this.pendingCalls.set(id, { resolve, reject });\r\n      this.frame.contentWindow?.postMessage({ ...msg, id }, '*');\r\n      setTimeout(() => {\r\n        if (this.pendingCalls.has(id)) {\r\n          this.pendingCalls.delete(id);\r\n          reject(new Error('Sandbox execution timeout'));\r\n        }\r\n      }, 60000);\r\n    });\r\n  }\r\n\r\n  async execute(code: string, filename?: string): Promise<ExecutionOutcome> {\r\n    await this.ready;\r\n    return this.dispatch({ type: 'execute', code, filename });\r\n  }\r\n\r\n  async runFile(filename: string): Promise<ExecutionOutcome> {\r\n    await this.ready;\r\n    return this.dispatch({ type: 'runFile', filename });\r\n  }\r\n\r\n  clearCache(): void {\r\n    this.frame.contentWindow?.postMessage({ type: 'clearCache' } as CrossOriginMessage, '*');\r\n  }\r\n\r\n  getVolume(): MemoryVolume { return this.vol; }\r\n\r\n  terminate(): void {\r\n    if (this.onFileChange) this.vol.off('change', this.onFileChange);\r\n    if (this.onFileDelete) this.vol.off('delete', this.onFileDelete);\r\n    if (this.onMessage) window.removeEventListener('message', this.onMessage);\r\n    this.frame.remove();\r\n    for (const [, { reject }] of this.pendingCalls) reject(new Error('Sandbox terminated'));\r\n    this.pendingCalls.clear();\r\n  }\r\n}\r\n","// ProcessHandle — per-process main-thread state.\n// Tracks lifecycle, routes I/O, emits events for each spawned worker.\n\nimport { EventEmitter } from \"../polyfills/events\";\nimport type {\n  MainToWorkerMessage,\n  WorkerToMainMessage,\n  SpawnConfig,\n  MainToWorker_Init,\n  MainToWorker_Exec,\n} from \"./worker-protocol\";\n\nconst MAX_HANDLE_OUTPUT_BYTES = 5_000_000;\n\n/* ------------------------------------------------------------------ */\n/*  ProcessHandle                                                      */\n/* ------------------------------------------------------------------ */\n\nexport type ProcessState = \"starting\" | \"running\" | \"exited\";\n\nexport class ProcessHandle extends EventEmitter {\n  readonly pid: number;\n  readonly worker: Worker;\n  readonly command: string;\n  readonly args: string[];\n  readonly parentPid?: number;\n\n  private _state: ProcessState = \"starting\";\n  private _exitCode: number | undefined;\n  private _stdout = \"\";\n  private _stderr = \"\";\n\n  // When > 0, \"exit\" is deferred — children still running, output keeps flowing\n  private _exitHoldCount = 0;\n  private _deferredExit: { exitCode: number; stdout: string; stderr: string } | null = null;\n\n  // Same deferral for \"shell-done\" in persistent mode\n  private _shellDoneHoldCount = 0;\n  private _deferredShellDone: { exitCode: number; stdout: string; stderr: string } | null = null;\n\n  // When > 0, worker is blocked on Atomics.wait() — stdin can't be delivered via postMessage\n  private _syncBlockedCount = 0;\n\n  get workerExited(): boolean { return this._deferredExit !== null || this._state === \"exited\"; }\n  get shellCommandDone(): boolean { return this._deferredShellDone !== null; }\n  get syncBlocked(): boolean { return this._syncBlockedCount > 0; }\n  holdSync(): void { this._syncBlockedCount++; }\n  releaseSync(): void { this._syncBlockedCount = Math.max(0, this._syncBlockedCount - 1); }\n\n  get stdout(): string { return this._stdout; }\n  get stderr(): string { return this._stderr; }\n\n  private _trim(s: string): string {\n    return s.length > MAX_HANDLE_OUTPUT_BYTES\n      ? s.slice(-Math.floor(MAX_HANDLE_OUTPUT_BYTES * 0.75))\n      : s;\n  }\n\n  get state(): ProcessState { return this._state; }\n  get exitCode(): number | undefined { return this._exitCode; }\n\n  constructor(worker: Worker, config: SpawnConfig) {\n    super();\n    this.pid = config.snapshot ? Math.floor(Math.random() * 90000) + 10000 : 0; // will be set properly\n    this.worker = worker;\n    this.command = config.command;\n    this.args = config.args;\n    this.parentPid = config.parentPid;\n\n    this._setupWorkerListeners();\n  }\n\n  _setPid(pid: number): void {\n    (this as any).pid = pid;\n  }\n\n  postMessage(msg: MainToWorkerMessage, transfer?: Transferable[]): void {\n    this.worker.postMessage(msg, transfer ?? []);\n  }\n\n  init(initMsg: MainToWorker_Init, extraTransfer?: Transferable[]): void {\n    const transfer: Transferable[] = [];\n    if (initMsg.snapshot.data.byteLength > 0) {\n      transfer.push(initMsg.snapshot.data);\n    }\n    if (extraTransfer) transfer.push(...extraTransfer);\n    this.postMessage(initMsg, transfer);\n  }\n\n  exec(execMsg: MainToWorker_Exec): void {\n    this.postMessage(execMsg);\n  }\n\n  sendStdin(data: string): void {\n    // Forward to children via ProcessManager\n    this.emit(\"stdin-forward\", data);\n\n    // Skip postMessage if blocked on Atomics.wait() or already exited\n    if (!this.workerExited && !this.syncBlocked) {\n      this.postMessage({ type: \"stdin\", data });\n    }\n  }\n\n  kill(signal: string = \"SIGTERM\"): void {\n    this.postMessage({ type: \"signal\", signal });\n    this.emit(\"signal\", signal);\n    if (signal === \"SIGKILL\") {\n      this._terminate(137);\n    }\n  }\n\n  resize(cols: number, rows: number): void {\n    this.postMessage({ type: \"resize\", cols, rows });\n  }\n\n  holdExit(): void {\n    this._exitHoldCount++;\n  }\n\n  releaseExit(): void {\n    this._exitHoldCount = Math.max(0, this._exitHoldCount - 1);\n    if (this._exitHoldCount === 0 && this._deferredExit) {\n      const { exitCode, stdout, stderr } = this._deferredExit;\n      this._deferredExit = null;\n      this._state = \"exited\";\n      this._exitCode = exitCode;\n      this.emit(\"exit\", exitCode, stdout, stderr);\n      // kill the worker so late callbacks can't post back after exit\n      try { this.worker.terminate(); } catch { /* ignore */ }\n    }\n  }\n\n  holdShellDone(): void {\n    this._shellDoneHoldCount++;\n  }\n\n  releaseShellDone(): void {\n    this._shellDoneHoldCount = Math.max(0, this._shellDoneHoldCount - 1);\n    if (this._shellDoneHoldCount === 0 && this._deferredShellDone) {\n      const { exitCode, stdout, stderr } = this._deferredShellDone;\n      this._deferredShellDone = null;\n      this.emit(\"shell-done\", exitCode, stdout, stderr);\n    }\n  }\n\n  private _terminate(exitCode: number = 1): void {\n    if (this._state === \"exited\") return;\n    this._state = \"exited\";\n    this._exitCode = exitCode;\n    this._deferredExit = null;\n    this._exitHoldCount = 0;\n    try { this.worker.terminate(); } catch {\n      /* ignore */\n    }\n    this.emit(\"exit\", exitCode, this._stdout, this._stderr);\n  }\n\n  private _setupWorkerListeners(): void {\n    this.worker.addEventListener(\"message\", (ev: MessageEvent) => {\n      const msg = ev.data as WorkerToMainMessage;\n      if (!msg || !msg.type) return;\n\n      switch (msg.type) {\n        case \"ready\":\n          this._state = \"running\";\n          this.emit(\"ready\");\n          break;\n\n        case \"stdout\":\n          this._stdout = this._trim(this._stdout + msg.data);\n          this.emit(\"stdout\", msg.data);\n          break;\n\n        case \"stderr\":\n          this._stderr = this._trim(this._stderr + msg.data);\n          this.emit(\"stderr\", msg.data);\n          break;\n\n        case \"exit\": {\n          const stdout = msg.stdout || this._stdout;\n          const stderr = msg.stderr || this._stderr;\n          this._stdout = this._trim(stdout);\n          this._stderr = this._trim(stderr);\n          if (this._exitHoldCount > 0) {\n            // Children still running — defer exit, keep output flowing\n            this._deferredExit = { exitCode: msg.exitCode, stdout, stderr };\n            this.emit(\"worker-done\", msg.exitCode);\n          } else {\n            this._state = \"exited\";\n            this._exitCode = msg.exitCode;\n            this.emit(\"exit\", msg.exitCode, stdout, stderr);\n            // kill the worker so late callbacks can't post back after exit\n            try { this.worker.terminate(); } catch { /* ignore */ }\n          }\n          break;\n        }\n\n        case \"console\":\n          this.emit(\"console\", msg.method, msg.args);\n          break;\n\n        case \"vfs-write\":\n          this.emit(\"vfs-write\", msg.path, msg.content, msg.isDirectory);\n          break;\n\n        case \"vfs-delete\":\n          this.emit(\"vfs-delete\", msg.path);\n          break;\n\n        case \"spawn-request\":\n          this.emit(\"spawn-request\", msg);\n          break;\n\n        case \"fork-request\":\n          this.emit(\"fork-request\", msg);\n          break;\n\n        case \"workerthread-request\":\n          this.emit(\"workerthread-request\", msg);\n          break;\n\n        case \"ipc-message\":\n          this.emit(\"ipc-message\", msg);\n          break;\n\n        case \"spawn-sync\":\n          this.emit(\"spawn-sync\", msg);\n          break;\n\n        case \"sqlite-preload\":\n          this.emit(\"sqlite-preload\", msg);\n          break;\n\n        case \"server-listen\":\n          this.emit(\"server-listen\", msg.port, msg.hostname);\n          break;\n\n        case \"server-close\":\n          this.emit(\"server-close\", msg.port);\n          break;\n\n        case \"http-request\":\n          this.emit(\"http-request\", msg);\n          break;\n\n        case \"http-client-request\":\n          this.emit(\"http-client-request\", msg);\n          break;\n\n        case \"http-response\":\n          this.emit(\"http-response\", msg);\n          break;\n\n        case \"shell-done\": {\n          const sd = msg as any;\n          if (this._shellDoneHoldCount > 0) {\n            this._deferredShellDone = { exitCode: sd.exitCode, stdout: sd.stdout, stderr: sd.stderr };\n          } else {\n            this.emit(\"shell-done\", sd.exitCode, sd.stdout, sd.stderr);\n          }\n          break;\n        }\n\n        case \"cwd-change\":\n          this.emit(\"cwd-change\", msg.cwd);\n          break;\n\n        case \"stdin-raw-status\":\n          this.emit(\"stdin-raw-status\", msg.isRaw);\n          break;\n\n        case \"ws-frame\":\n          this.emit(\"ws-frame\", msg);\n          break;\n\n        case \"error\":\n          this.emit(\"worker-error\", msg.message, msg.stack);\n          break;\n\n        default:\n          break;\n      }\n    });\n\n    this.worker.addEventListener(\"error\", (ev: ErrorEvent) => {\n      this.emit(\"worker-error\", ev.message, undefined);\n      if (this._state !== \"exited\") {\n        this._terminate(1);\n      }\n    });\n  }\n}\n","// SharedVFS — SharedArrayBuffer-backed VFS for synchronous cross-thread reads.\r\n//\r\n// When SAB is available (requires COOP/COEP headers), workers can do\r\n// fs.readFileSync() directly from shared memory without async IPC.\r\n// Falls back to snapshot-based approach when SAB is unavailable.\r\n//\r\n// Layout: file table (paths -> offset+length) + data region, all in one SAB.\r\n// Main thread owns the canonical table; workers read from it.\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Feature detection                                                  */\r\n/* ------------------------------------------------------------------ */\r\nexport function isSharedArrayBufferAvailable(): boolean {\r\n  try {\r\n    return (\r\n      typeof SharedArrayBuffer !== 'undefined' &&\r\n      typeof Atomics !== 'undefined'\r\n    );\r\n  } catch {\r\n    return false;\r\n  }\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Shared memory layout                                               */\r\n/* ------------------------------------------------------------------ */\r\n\r\n// Per entry, 272 bytes (8-byte aligned):\r\n//   [0..3] flags  [4..7] contentOffset  [8..11] contentLength\r\n//   [12..15] modified  [16..19] fnv1a path hash (fast lookup reject)\r\n//   [20..267] null-terminated path  [268..271] spare\r\n// Controller and reader are always compiled from this same file, so no\r\n// cross-version layout negotiation is needed.\r\nconst ENTRY_SIZE = 272;\r\nconst ENTRY_FLAGS_OFFSET = 0;\r\nconst ENTRY_CONTENT_OFFSET = 4;\r\nconst ENTRY_CONTENT_LENGTH = 8;\r\nconst ENTRY_MODIFIED_OFFSET = 12;\r\nconst ENTRY_HASH_OFFSET = 16;\r\nconst ENTRY_PATH_OFFSET = 20;\r\nconst ENTRY_PATH_MAX = 248;\r\n\r\nconst FLAG_ACTIVE = 1;\r\nconst FLAG_DIRECTORY = 2;\r\nconst FLAG_SYMLINK = 4;\r\n\r\n// Header (32 bytes, int32 slots):\r\n//   [0] change version  [1] entry count  [2] data used  [3] writer lock\r\n//   [4] waste bytes (orphaned data-region bytes from updates/deletes)\r\n//   [5..7] reserved\r\nconst HEADER_SIZE = 32;\r\nconst MAX_ENTRIES = 16384;\r\nconst TABLE_SIZE = MAX_ENTRIES * ENTRY_SIZE;\r\nconst DATA_OFFSET = HEADER_SIZE + TABLE_SIZE;\r\n\r\nconst DEFAULT_BUFFER_SIZE = 64 * 1024 * 1024; // 64MB\r\nconst COMPACT_WASTE_THRESHOLD = 16 * 1024 * 1024; // 16MB\r\n\r\nexport interface SharedVFSStats {\r\n  entries: number;\r\n  activeEntries: number;\r\n  dataUsed: number;\r\n  wasteBytes: number;\r\n  droppedWrites: number;\r\n  bufferSize: number;\r\n  compactions: number;\r\n}\r\n\r\nexport interface SharedVFSStat {\r\n  isFile: boolean;\r\n  isDirectory: boolean;\r\n  size: number;\r\n  /** ms since epoch. resolution is seconds, the SAB only stores seconds. */\r\n  mtime: number;\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  FNV-1a hash                                                        */\r\n/* ------------------------------------------------------------------ */\r\n\r\nfunction fnv1a(str: string): number {\r\n  let hash = 0x811c9dc5;\r\n  for (let i = 0; i < str.length; i++) {\r\n    hash ^= str.charCodeAt(i);\r\n    hash = (hash * 0x01000193) >>> 0;\r\n  }\r\n  return hash;\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  SharedVFSController (main thread)                                  */\r\n/* ------------------------------------------------------------------ */\r\n\r\n// Main-thread controller. Owns the SAB and manages the file table.\r\nexport class SharedVFSController {\r\n  private _buffer: SharedArrayBuffer;\r\n  private _view: DataView;\r\n  private _int32: Int32Array;\r\n  private _uint8: Uint8Array;\r\n  private _pathEncoder = new TextEncoder();\r\n  private _pathDecoder = new TextDecoder();\r\n\r\n  private _droppedWrites = 0;\r\n  private _compactions = 0;\r\n\r\n  constructor(bufferSize: number = DEFAULT_BUFFER_SIZE) {\r\n    if (!isSharedArrayBufferAvailable()) {\r\n      throw new Error('SharedArrayBuffer not available. Ensure COOP/COEP headers are set.');\r\n    }\r\n\r\n    this._buffer = new SharedArrayBuffer(bufferSize);\r\n    this._view = new DataView(this._buffer);\r\n    this._int32 = new Int32Array(this._buffer);\r\n    this._uint8 = new Uint8Array(this._buffer);\r\n\r\n    Atomics.store(this._int32, 0, 0);\r\n    Atomics.store(this._int32, 1, 0);\r\n    this._view.setUint32(8, 0);\r\n    Atomics.store(this._int32, 3, 0);\r\n    this._view.setUint32(16, 0); // waste bytes\r\n  }\r\n\r\n  get buffer(): SharedArrayBuffer {\r\n    return this._buffer;\r\n  }\r\n\r\n  writeFile(path: string, content: Uint8Array): boolean {\r\n    this._lock();\r\n    try {\r\n      // opportunistic compaction when orphaned bytes pile up (HMR rewriting\r\n      // the same files bloats the append-only region)\r\n      if (this._view.getUint32(16) > COMPACT_WASTE_THRESHOLD) {\r\n        this._compactLocked();\r\n      }\r\n\r\n      let ok = this._writeFileLocked(path, content);\r\n      if (!ok && this._view.getUint32(16) > 0) {\r\n        // rescue: reclaim orphaned space, then retry once\r\n        this._compactLocked();\r\n        ok = this._writeFileLocked(path, content);\r\n      }\r\n      if (!ok) this._droppedWrites++;\r\n      return ok;\r\n    } finally {\r\n      this._unlock();\r\n    }\r\n  }\r\n\r\n  private _writeFileLocked(path: string, content: Uint8Array): boolean {\r\n    const entryCount = Atomics.load(this._int32, 1);\r\n    const dataUsed = this._view.getUint32(8);\r\n\r\n    const existingIdx = this._findEntry(path);\r\n    if (existingIdx !== -1) {\r\n      return this._updateEntry(existingIdx, content, dataUsed);\r\n    }\r\n\r\n    if (entryCount >= MAX_ENTRIES) return false;\r\n    if (DATA_OFFSET + dataUsed + content.byteLength > this._buffer.byteLength) return false;\r\n\r\n    const contentOffset = dataUsed;\r\n    this._uint8.set(content, DATA_OFFSET + contentOffset);\r\n\r\n    const entryOffset = HEADER_SIZE + entryCount * ENTRY_SIZE;\r\n    this._view.setUint32(entryOffset + ENTRY_FLAGS_OFFSET, FLAG_ACTIVE);\r\n    this._view.setUint32(entryOffset + ENTRY_CONTENT_OFFSET, contentOffset);\r\n    this._view.setUint32(entryOffset + ENTRY_CONTENT_LENGTH, content.byteLength);\r\n    this._view.setUint32(entryOffset + ENTRY_MODIFIED_OFFSET, (Date.now() / 1000) | 0);\r\n\r\n    this._writePath(entryOffset, path);\r\n\r\n    Atomics.store(this._int32, 1, entryCount + 1);\r\n    this._view.setUint32(8, dataUsed + content.byteLength);\r\n\r\n    Atomics.add(this._int32, 0, 1);\r\n    Atomics.notify(this._int32, 0);\r\n\r\n    return true;\r\n  }\r\n\r\n  writeDirectory(path: string): boolean {\r\n    this._lock();\r\n    try {\r\n      const entryCount = Atomics.load(this._int32, 1);\r\n      if (this._findEntry(path) !== -1) return true;\r\n      if (entryCount >= MAX_ENTRIES) {\r\n        this._droppedWrites++;\r\n        return false;\r\n      }\r\n\r\n      const entryOffset = HEADER_SIZE + entryCount * ENTRY_SIZE;\r\n      this._view.setUint32(entryOffset + ENTRY_FLAGS_OFFSET, FLAG_ACTIVE | FLAG_DIRECTORY);\r\n      this._view.setUint32(entryOffset + ENTRY_CONTENT_OFFSET, 0);\r\n      this._view.setUint32(entryOffset + ENTRY_CONTENT_LENGTH, 0);\r\n      this._view.setUint32(entryOffset + ENTRY_MODIFIED_OFFSET, (Date.now() / 1000) | 0);\r\n\r\n      this._writePath(entryOffset, path);\r\n\r\n      Atomics.store(this._int32, 1, entryCount + 1);\r\n      Atomics.add(this._int32, 0, 1);\r\n      Atomics.notify(this._int32, 0);\r\n\r\n      return true;\r\n    } finally {\r\n      this._unlock();\r\n    }\r\n  }\r\n\r\n  deleteFile(path: string): boolean {\r\n    this._lock();\r\n    try {\r\n      const idx = this._findEntry(path);\r\n      if (idx === -1) return false;\r\n\r\n      const entryOffset = HEADER_SIZE + idx * ENTRY_SIZE;\r\n      const flags = this._view.getUint32(entryOffset + ENTRY_FLAGS_OFFSET);\r\n      this._view.setUint32(entryOffset + ENTRY_FLAGS_OFFSET, 0);\r\n\r\n      // orphaned content bytes become waste (dirs carry no content)\r\n      if (!(flags & FLAG_DIRECTORY)) {\r\n        const contentLength = this._view.getUint32(entryOffset + ENTRY_CONTENT_LENGTH);\r\n        this._addWaste(contentLength);\r\n      }\r\n\r\n      Atomics.add(this._int32, 0, 1);\r\n      Atomics.notify(this._int32, 0);\r\n\r\n      return true;\r\n    } finally {\r\n      this._unlock();\r\n    }\r\n  }\r\n\r\n  readFile(path: string): Uint8Array | null {\r\n    const idx = this._findEntry(path);\r\n    if (idx === -1) return null;\r\n\r\n    const entryOffset = HEADER_SIZE + idx * ENTRY_SIZE;\r\n    const flags = this._view.getUint32(entryOffset + ENTRY_FLAGS_OFFSET);\r\n    if (!(flags & FLAG_ACTIVE) || (flags & FLAG_DIRECTORY)) return null;\r\n\r\n    const contentOffset = this._view.getUint32(entryOffset + ENTRY_CONTENT_OFFSET);\r\n    const contentLength = this._view.getUint32(entryOffset + ENTRY_CONTENT_LENGTH);\r\n\r\n    // Copy, not view, to avoid races\r\n    return new Uint8Array(this._uint8.slice(\r\n      DATA_OFFSET + contentOffset,\r\n      DATA_OFFSET + contentOffset + contentLength,\r\n    ));\r\n  }\r\n\r\n  exists(path: string): boolean {\r\n    return this._findEntry(path) !== -1;\r\n  }\r\n\r\n  get version(): number {\r\n    return Atomics.load(this._int32, 0);\r\n  }\r\n\r\n  getStats(): SharedVFSStats {\r\n    const entries = Atomics.load(this._int32, 1);\r\n    let active = 0;\r\n    for (let i = 0; i < entries; i++) {\r\n      const flags = this._view.getUint32(HEADER_SIZE + i * ENTRY_SIZE + ENTRY_FLAGS_OFFSET);\r\n      if (flags & FLAG_ACTIVE) active++;\r\n    }\r\n    return {\r\n      entries,\r\n      activeEntries: active,\r\n      dataUsed: this._view.getUint32(8),\r\n      wasteBytes: this._view.getUint32(16),\r\n      droppedWrites: this._droppedWrites,\r\n      bufferSize: this._buffer.byteLength,\r\n      compactions: this._compactions,\r\n    };\r\n  }\r\n\r\n  // Rebuild the data region contiguously and drop tombstoned entries.\r\n  // Public entry point takes the writer lock; writeFile calls the locked\r\n  // variant internally.\r\n  compact(): void {\r\n    this._lock();\r\n    try {\r\n      this._compactLocked();\r\n    } finally {\r\n      this._unlock();\r\n    }\r\n  }\r\n\r\n  /* ---- Internal ---- */\r\n\r\n  private _addWaste(bytes: number): void {\r\n    this._view.setUint32(16, this._view.getUint32(16) + bytes);\r\n  }\r\n\r\n  private _writePath(entryOffset: number, path: string): void {\r\n    const pathBytes = this._pathEncoder.encode(path);\r\n    const pathLen = Math.min(pathBytes.byteLength, ENTRY_PATH_MAX - 1);\r\n    this._view.setUint32(entryOffset + ENTRY_HASH_OFFSET, fnv1a(path));\r\n    this._uint8.set(pathBytes.subarray(0, pathLen), entryOffset + ENTRY_PATH_OFFSET);\r\n    this._uint8[entryOffset + ENTRY_PATH_OFFSET + pathLen] = 0;\r\n  }\r\n\r\n  // Compacts both the entry table (drops inactive entries) and the data\r\n  // region (copies live content contiguously). Caller must hold the lock.\r\n  // Readers never cache offsets across calls, and main-thread JS can't run\r\n  // concurrently with a worker read of a *consistent* entry — the version\r\n  // bump at the end tells pollers something moved.\r\n  private _compactLocked(): void {\r\n    const entryCount = Atomics.load(this._int32, 1);\r\n\r\n    // gather live entries\r\n    const live: Array<{\r\n      flags: number;\r\n      length: number;\r\n      modified: number;\r\n      hash: number;\r\n      pathBytes: Uint8Array;\r\n      content: Uint8Array | null;\r\n    }> = [];\r\n\r\n    for (let i = 0; i < entryCount; i++) {\r\n      const entryOffset = HEADER_SIZE + i * ENTRY_SIZE;\r\n      const flags = this._view.getUint32(entryOffset + ENTRY_FLAGS_OFFSET);\r\n      if (!(flags & FLAG_ACTIVE)) continue;\r\n\r\n      const contentOffset = this._view.getUint32(entryOffset + ENTRY_CONTENT_OFFSET);\r\n      const contentLength = this._view.getUint32(entryOffset + ENTRY_CONTENT_LENGTH);\r\n\r\n      let pathEnd = 0;\r\n      while (pathEnd < ENTRY_PATH_MAX && this._uint8[entryOffset + ENTRY_PATH_OFFSET + pathEnd] !== 0) {\r\n        pathEnd++;\r\n      }\r\n      const pathBytes = this._uint8.slice(\r\n        entryOffset + ENTRY_PATH_OFFSET,\r\n        entryOffset + ENTRY_PATH_OFFSET + pathEnd,\r\n      );\r\n\r\n      const isDir = (flags & FLAG_DIRECTORY) !== 0;\r\n      const content = isDir || contentLength === 0\r\n        ? null\r\n        : this._uint8.slice(\r\n            DATA_OFFSET + contentOffset,\r\n            DATA_OFFSET + contentOffset + contentLength,\r\n          );\r\n\r\n      live.push({\r\n        flags,\r\n        length: isDir ? 0 : contentLength,\r\n        modified: this._view.getUint32(entryOffset + ENTRY_MODIFIED_OFFSET),\r\n        hash: this._view.getUint32(entryOffset + ENTRY_HASH_OFFSET),\r\n        pathBytes,\r\n        content,\r\n      });\r\n    }\r\n\r\n    // write back contiguously\r\n    let dataUsed = 0;\r\n    for (let i = 0; i < live.length; i++) {\r\n      const e = live[i];\r\n      const entryOffset = HEADER_SIZE + i * ENTRY_SIZE;\r\n      let contentOffset = 0;\r\n      if (e.content) {\r\n        contentOffset = dataUsed;\r\n        this._uint8.set(e.content, DATA_OFFSET + contentOffset);\r\n        dataUsed += e.content.byteLength;\r\n      }\r\n      this._view.setUint32(entryOffset + ENTRY_FLAGS_OFFSET, e.flags);\r\n      this._view.setUint32(entryOffset + ENTRY_CONTENT_OFFSET, contentOffset);\r\n      this._view.setUint32(entryOffset + ENTRY_CONTENT_LENGTH, e.length);\r\n      this._view.setUint32(entryOffset + ENTRY_MODIFIED_OFFSET, e.modified);\r\n      this._view.setUint32(entryOffset + ENTRY_HASH_OFFSET, e.hash);\r\n      this._uint8.set(e.pathBytes, entryOffset + ENTRY_PATH_OFFSET);\r\n      this._uint8[entryOffset + ENTRY_PATH_OFFSET + e.pathBytes.byteLength] = 0;\r\n    }\r\n\r\n    // zero flags of now-unused trailing entry slots so stale data can't match\r\n    for (let i = live.length; i < entryCount; i++) {\r\n      this._view.setUint32(HEADER_SIZE + i * ENTRY_SIZE + ENTRY_FLAGS_OFFSET, 0);\r\n    }\r\n\r\n    Atomics.store(this._int32, 1, live.length);\r\n    this._view.setUint32(8, dataUsed);\r\n    this._view.setUint32(16, 0);\r\n    this._compactions++;\r\n\r\n    Atomics.add(this._int32, 0, 1);\r\n    Atomics.notify(this._int32, 0);\r\n  }\r\n\r\n  private _findEntry(path: string): number {\r\n    const entryCount = Atomics.load(this._int32, 1);\r\n    const hash = fnv1a(path);\r\n    const pathBytes = this._pathEncoder.encode(path);\r\n\r\n    for (let i = 0; i < entryCount; i++) {\r\n      const entryOffset = HEADER_SIZE + i * ENTRY_SIZE;\r\n      const flags = this._view.getUint32(entryOffset + ENTRY_FLAGS_OFFSET);\r\n      if (!(flags & FLAG_ACTIVE)) continue;\r\n      // hash-first: one int compare rejects almost all non-matches\r\n      if (this._view.getUint32(entryOffset + ENTRY_HASH_OFFSET) !== hash) continue;\r\n\r\n      let match = true;\r\n      for (let j = 0; j < pathBytes.byteLength; j++) {\r\n        if (this._uint8[entryOffset + ENTRY_PATH_OFFSET + j] !== pathBytes[j]) {\r\n          match = false;\r\n          break;\r\n        }\r\n      }\r\n      if (match && this._uint8[entryOffset + ENTRY_PATH_OFFSET + pathBytes.byteLength] === 0) {\r\n        return i;\r\n      }\r\n    }\r\n    return -1;\r\n  }\r\n\r\n  private _updateEntry(idx: number, content: Uint8Array, dataUsed: number): boolean {\r\n    if (DATA_OFFSET + dataUsed + content.byteLength > this._buffer.byteLength) return false;\r\n\r\n    const entryOffset = HEADER_SIZE + idx * ENTRY_SIZE;\r\n\r\n    // the old content bytes become orphaned waste (append-only region)\r\n    this._addWaste(this._view.getUint32(entryOffset + ENTRY_CONTENT_LENGTH));\r\n\r\n    // Append-only — don't reuse old space to avoid races\r\n    const contentOffset = dataUsed;\r\n    this._uint8.set(content, DATA_OFFSET + contentOffset);\r\n\r\n    this._view.setUint32(entryOffset + ENTRY_CONTENT_OFFSET, contentOffset);\r\n    this._view.setUint32(entryOffset + ENTRY_CONTENT_LENGTH, content.byteLength);\r\n    this._view.setUint32(entryOffset + ENTRY_MODIFIED_OFFSET, (Date.now() / 1000) | 0);\r\n\r\n    this._view.setUint32(8, dataUsed + content.byteLength);\r\n    Atomics.add(this._int32, 0, 1);\r\n    Atomics.notify(this._int32, 0);\r\n\r\n    return true;\r\n  }\r\n\r\n  private _lock(): void {\r\n    while (Atomics.compareExchange(this._int32, 3, 0, 1) !== 0) {\r\n      Atomics.wait(this._int32, 3, 1, 1);\r\n    }\r\n  }\r\n\r\n  private _unlock(): void {\r\n    Atomics.store(this._int32, 3, 0);\r\n    Atomics.notify(this._int32, 3);\r\n  }\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  SharedVFSReader (worker thread)                                    */\r\n/* ------------------------------------------------------------------ */\r\n\r\n// Worker-thread reader. Synchronous read access to shared memory.\r\nexport class SharedVFSReader {\r\n  private _buffer: SharedArrayBuffer;\r\n  private _view: DataView;\r\n  private _int32: Int32Array;\r\n  private _uint8: Uint8Array;\r\n  private _pathEncoder = new TextEncoder();\r\n  private _pathDecoder = new TextDecoder();\r\n\r\n  constructor(buffer: SharedArrayBuffer) {\r\n    this._buffer = buffer;\r\n    this._view = new DataView(buffer);\r\n    this._int32 = new Int32Array(buffer);\r\n    this._uint8 = new Uint8Array(buffer);\r\n  }\r\n\r\n  readFileSync(path: string): Uint8Array | null {\r\n    const idx = this._findEntry(path);\r\n    if (idx === -1) return null;\r\n\r\n    const entryOffset = HEADER_SIZE + idx * ENTRY_SIZE;\r\n    const flags = this._view.getUint32(entryOffset + ENTRY_FLAGS_OFFSET);\r\n    if (!(flags & FLAG_ACTIVE) || (flags & FLAG_DIRECTORY)) return null;\r\n\r\n    const contentOffset = this._view.getUint32(entryOffset + ENTRY_CONTENT_OFFSET);\r\n    const contentLength = this._view.getUint32(entryOffset + ENTRY_CONTENT_LENGTH);\r\n\r\n    const result = new Uint8Array(contentLength);\r\n    result.set(this._uint8.subarray(\r\n      DATA_OFFSET + contentOffset,\r\n      DATA_OFFSET + contentOffset + contentLength,\r\n    ));\r\n    return result;\r\n  }\r\n\r\n  existsSync(path: string): boolean {\r\n    return this._findEntry(path) !== -1;\r\n  }\r\n\r\n  isDirectorySync(path: string): boolean {\r\n    const idx = this._findEntry(path);\r\n    if (idx === -1) return false;\r\n    const entryOffset = HEADER_SIZE + idx * ENTRY_SIZE;\r\n    const flags = this._view.getUint32(entryOffset + ENTRY_FLAGS_OFFSET);\r\n    return (flags & FLAG_ACTIVE) !== 0 && (flags & FLAG_DIRECTORY) !== 0;\r\n  }\r\n\r\n  statSync(path: string): SharedVFSStat | null {\r\n    const idx = this._findEntry(path);\r\n    if (idx === -1) return null;\r\n    const entryOffset = HEADER_SIZE + idx * ENTRY_SIZE;\r\n    const flags = this._view.getUint32(entryOffset + ENTRY_FLAGS_OFFSET);\r\n    if (!(flags & FLAG_ACTIVE)) return null;\r\n    const isDirectory = (flags & FLAG_DIRECTORY) !== 0;\r\n    const contentLength = this._view.getUint32(entryOffset + ENTRY_CONTENT_LENGTH);\r\n    const modified = this._view.getUint32(entryOffset + ENTRY_MODIFIED_OFFSET);\r\n    return {\r\n      isFile: !isDirectory,\r\n      isDirectory,\r\n      size: isDirectory ? 0 : contentLength,\r\n      mtime: modified * 1000,\r\n    };\r\n  }\r\n\r\n  // immediate children only, basenames, O(n) over the entry table.\r\n  // returns [] for missing paths.\r\n  readdirSync(dir: string): string[] {\r\n    const prefix = dir === \"/\" ? \"/\" : dir.endsWith(\"/\") ? dir : dir + \"/\";\r\n    const entryCount = Atomics.load(this._int32, 1);\r\n    const names: string[] = [];\r\n    const seen = new Set<string>();\r\n\r\n    for (let i = 0; i < entryCount; i++) {\r\n      const entryOffset = HEADER_SIZE + i * ENTRY_SIZE;\r\n      const flags = this._view.getUint32(entryOffset + ENTRY_FLAGS_OFFSET);\r\n      if (!(flags & FLAG_ACTIVE)) continue;\r\n\r\n      const path = this._readPath(entryOffset);\r\n      if (!path.startsWith(prefix) || path === prefix) continue;\r\n\r\n      // strip prefix then take up to the next slash, skip nested entries\r\n      const rest = path.slice(prefix.length);\r\n      const slashIdx = rest.indexOf(\"/\");\r\n      const name = slashIdx === -1 ? rest : rest.slice(0, slashIdx);\r\n      if (!name || seen.has(name)) continue;\r\n      seen.add(name);\r\n      names.push(name);\r\n    }\r\n\r\n    return names;\r\n  }\r\n\r\n  get version(): number {\r\n    return Atomics.load(this._int32, 0);\r\n  }\r\n\r\n  // Blocks until version changes. Returns new version or -1 on timeout.\r\n  waitForChange(currentVersion: number, timeoutMs: number = 5000): number {\r\n    const result = Atomics.wait(this._int32, 0, currentVersion, timeoutMs);\r\n    if (result === 'timed-out') return -1;\r\n    return Atomics.load(this._int32, 0);\r\n  }\r\n\r\n  /* ---- Internal ---- */\r\n\r\n  private _findEntry(path: string): number {\r\n    const entryCount = Atomics.load(this._int32, 1);\r\n    const hash = fnv1a(path);\r\n    const pathBytes = this._pathEncoder.encode(path);\r\n\r\n    for (let i = 0; i < entryCount; i++) {\r\n      const entryOffset = HEADER_SIZE + i * ENTRY_SIZE;\r\n      const flags = this._view.getUint32(entryOffset + ENTRY_FLAGS_OFFSET);\r\n      if (!(flags & FLAG_ACTIVE)) continue;\r\n      // hash-first: one int compare rejects almost all non-matches\r\n      if (this._view.getUint32(entryOffset + ENTRY_HASH_OFFSET) !== hash) continue;\r\n\r\n      let match = true;\r\n      for (let j = 0; j < pathBytes.byteLength; j++) {\r\n        if (this._uint8[entryOffset + ENTRY_PATH_OFFSET + j] !== pathBytes[j]) {\r\n          match = false;\r\n          break;\r\n        }\r\n      }\r\n      if (match && this._uint8[entryOffset + ENTRY_PATH_OFFSET + pathBytes.byteLength] === 0) {\r\n        return i;\r\n      }\r\n    }\r\n    return -1;\r\n  }\r\n\r\n  // decode a null-terminated path from an entry. needs a non-shared copy\r\n  // because TextDecoder throws on SAB views.\r\n  private _readPath(entryOffset: number): string {\r\n    let end = 0;\r\n    while (end < ENTRY_PATH_MAX && this._uint8[entryOffset + ENTRY_PATH_OFFSET + end] !== 0) {\r\n      end++;\r\n    }\r\n    if (end === 0) return \"\";\r\n    const copy = new Uint8Array(end);\r\n    copy.set(this._uint8.subarray(entryOffset + ENTRY_PATH_OFFSET, entryOffset + ENTRY_PATH_OFFSET + end));\r\n    return this._pathDecoder.decode(copy);\r\n  }\r\n}\r\n","// real blocking execSync/spawnSync via SharedArrayBuffer + Atomics\r\n// worker allocates a slot, posts spawn-sync, blocks on Atomics.wait()\r\n// main thread runs the child, writes result to the slot, calls Atomics.notify()\r\n\r\nimport { isSharedArrayBufferAvailable } from \"./shared-vfs\";\r\n\r\n// shared memory layout\r\n// per-slot (16KB = 4096 Int32s):\r\n//   [0] status (0=pending, 1=complete, 2=error)\r\n//   [1] exit code\r\n//   [2] stdout byte length\r\n//   [3..4095] stdout data\r\n// last Int32 at MAX_SLOTS * SLOT_SIZE is the atomic allocation counter\r\nexport const SLOT_SIZE = 4096; // 4096 Int32s = 16KB per slot\r\nexport const MAX_SLOTS = 64;\r\nconst STATUS_PENDING = 0;\r\nconst STATUS_COMPLETE = 1;\r\nconst STATUS_ERROR = 2;\r\n\r\nconst DEFAULT_SYNC_BUFFER_SIZE = MAX_SLOTS * SLOT_SIZE * 4 + 4; // ~1MB\r\nconst COUNTER_INDEX = MAX_SLOTS * SLOT_SIZE;\r\n\r\n// main thread side\r\nexport class SyncChannelController {\r\n  private _buffer: SharedArrayBuffer;\r\n  private _int32: Int32Array;\r\n  private _uint8: Uint8Array;\r\n\r\n  constructor(bufferSize: number = DEFAULT_SYNC_BUFFER_SIZE) {\r\n    if (!isSharedArrayBufferAvailable()) {\r\n      throw new Error(\"SharedArrayBuffer not available. Ensure COOP/COEP headers are set.\");\r\n    }\r\n\r\n    this._buffer = new SharedArrayBuffer(bufferSize);\r\n    this._int32 = new Int32Array(this._buffer);\r\n    this._uint8 = new Uint8Array(this._buffer);\r\n\r\n    for (let i = 0; i < MAX_SLOTS; i++) {\r\n      Atomics.store(this._int32, i * SLOT_SIZE, STATUS_PENDING);\r\n    }\r\n    Atomics.store(this._int32, COUNTER_INDEX, 0);\r\n  }\r\n\r\n  get buffer(): SharedArrayBuffer {\r\n    return this._buffer;\r\n  }\r\n\r\n  writeResult(syncSlot: number, exitCode: number, stdout: string): void {\r\n    const base = syncSlot * SLOT_SIZE;\r\n\r\n    Atomics.store(this._int32, base + 1, exitCode);\r\n\r\n    const encoder = new TextEncoder();\r\n    const stdoutBytes = encoder.encode(stdout);\r\n    const maxStdoutLen = (SLOT_SIZE - 3) * 4;\r\n    const truncatedLen = Math.min(stdoutBytes.byteLength, maxStdoutLen);\r\n\r\n    Atomics.store(this._int32, base + 2, truncatedLen);\r\n\r\n    const dataOffset = (base + 3) * 4;\r\n    this._uint8.set(stdoutBytes.subarray(0, truncatedLen), dataOffset);\r\n\r\n    // last store wakes the waiting worker\r\n    Atomics.store(this._int32, base, STATUS_COMPLETE);\r\n    Atomics.notify(this._int32, base);\r\n  }\r\n\r\n  writeError(syncSlot: number, exitCode: number, errorMessage: string): void {\r\n    const base = syncSlot * SLOT_SIZE;\r\n\r\n    Atomics.store(this._int32, base + 1, exitCode);\r\n\r\n    const encoder = new TextEncoder();\r\n    const errorBytes = encoder.encode(errorMessage);\r\n    const maxLen = (SLOT_SIZE - 3) * 4;\r\n    const truncatedLen = Math.min(errorBytes.byteLength, maxLen);\r\n\r\n    Atomics.store(this._int32, base + 2, truncatedLen);\r\n    const dataOffset = (base + 3) * 4;\r\n    this._uint8.set(errorBytes.subarray(0, truncatedLen), dataOffset);\r\n\r\n    Atomics.store(this._int32, base, STATUS_ERROR);\r\n    Atomics.notify(this._int32, base);\r\n  }\r\n}\r\n\r\n// worker thread side\r\nexport class SyncChannelWorker {\r\n  private _int32: Int32Array;\r\n  private _uint8: Uint8Array;\r\n\r\n  constructor(buffer: SharedArrayBuffer) {\r\n    this._int32 = new Int32Array(buffer);\r\n    this._uint8 = new Uint8Array(buffer);\r\n  }\r\n\r\n  // atomic counter stops slot collisions across workers\r\n  allocateSlot(): number {\r\n    const raw = Atomics.add(this._int32, COUNTER_INDEX, 1);\r\n    const slot = raw % MAX_SLOTS;\r\n    Atomics.store(this._int32, slot * SLOT_SIZE, STATUS_PENDING);\r\n    return slot;\r\n  }\r\n\r\n  // blocks the worker until main writes the result\r\n  waitForResult(syncSlot: number, timeoutMs: number = 120_000): { exitCode: number; stdout: string } {\r\n    const base = syncSlot * SLOT_SIZE;\r\n\r\n    const result = Atomics.wait(this._int32, base, STATUS_PENDING, timeoutMs);\r\n\r\n    if (result === \"timed-out\") {\r\n      throw new Error(\"execSync timed out\");\r\n    }\r\n\r\n    const status = Atomics.load(this._int32, base);\r\n    const exitCode = Atomics.load(this._int32, base + 1);\r\n    const stdoutLen = Atomics.load(this._int32, base + 2);\r\n\r\n    // TextDecoder rejects SAB-backed views — copy the slice into a non-shared buffer first\r\n    // Uint8Array.slice should do this per spec but engines have had bugs, be explicit\r\n    const decoder = new TextDecoder();\r\n    const dataOffset = (base + 3) * 4;\r\n    const stdoutCopy = new Uint8Array(stdoutLen);\r\n    stdoutCopy.set(this._uint8.subarray(dataOffset, dataOffset + stdoutLen));\r\n    const stdout = decoder.decode(stdoutCopy);\r\n\r\n    if (status === STATUS_ERROR) {\r\n      const err = new Error(`Command failed with exit code ${exitCode}\\n${stdout}`);\r\n      (err as any).status = exitCode;\r\n      (err as any).stdout = stdout;\r\n      throw err;\r\n    }\r\n\r\n    return { exitCode, stdout };\r\n  }\r\n}\r\n","// main-thread process lifecycle manager\n// spawns Web Worker processes, routes I/O, syncs VFS, tracks process tree\n\nimport { EventEmitter } from \"../polyfills/events\";\nimport type { MemoryVolume } from \"../memory-volume\";\nimport { CDN_WA_SQLITE_WASM } from \"../constants/cdn-urls\";\nimport { isInternalVfsPath } from \"../constants/internal-vfs-paths\";\nimport { precompileWasm } from \"../helpers/wasm-cache\";\nimport { WASM_CACHE_PATH, WASM_SAB_HEADER_BYTES, WASM_SAB_MAX_BYTES } from \"../polyfills/sqlite\";\nimport { ProcessHandle } from \"./process-handle\";\nimport { buildFileSystemBridge } from \"../polyfills/fs\";\nimport { handleFsProxy } from \"../helpers/napi-wasm-worker\";\nimport type {\n  SpawnConfig,\n  ProcessInfo,\n  MainToWorker_Init,\n  VFSBinarySnapshot,\n  WorkerToMain_SpawnRequest,\n  WorkerToMain_ForkRequest,\n  WorkerToMain_WorkerThreadRequest,\n  WorkerToMain_SpawnSync,\n  WorkerToMain_HttpResponse,\n  WorkerToMain_HttpClientRequest,\n  WorkerToMain_SqlitePreload,\n} from \"./worker-protocol\";\nimport type { VFSBridge } from \"./vfs-bridge\";\nimport { PROCESS_WORKER_BUNDLE } from \"virtual:process-worker-bundle\";\nimport { SLOT_SIZE } from \"./sync-channel\";\n\nconst MAX_PROCESS_DEPTH = 10;\nconst MAX_PROCESSES = 50;\n\n// lean spawn mode: dirs excluded from spawn snapshots at any depth, hydrated\n// lazily by the worker. Mirrors the SDK's shallow-snapshot exclude set.\nconst LEAN_EXCLUDE_DIR_NAMES = [\"node_modules\", \".npm\", \".cache\"];\n\nexport class ProcessManager extends EventEmitter {\n  private _processes = new Map<number, ProcessHandle>();\n  private _nextPid = 100;\n  private _volume: MemoryVolume;\n  private _vfsBridge: VFSBridge | null = null;\n  private _sharedBuffer: SharedArrayBuffer | null = null;\n  private _syncBuffer: SharedArrayBuffer | null = null;\n\n  // port → owning pid\n  private _serverPorts = new Map<number, number>();\n  // parent pid → child pids, used for exit deferral\n  private _childPids = new Map<number, Set<number>>();\n  // pids of children that inherit their parent's stdin. stdin-forward only\n  // routes to pids in this set. stdio:'pipe' kids get their own isolated stdin.\n  private _inheritStdinChildren = new Set<number>();\n  private _httpCallbacks = new Map<\n    number,\n    { pid: number; fn: (resp: WorkerToMain_HttpResponse) => void }\n  >();\n  private _nextHttpRequestId = 1;\n  private static readonly HTTP_REQUEST_TIMEOUT_MS = 300_000;\n\n  constructor(volume: MemoryVolume) {\n    super();\n    this._volume = volume;\n  }\n\n  setVFSBridge(bridge: VFSBridge): void {\n    this._vfsBridge = bridge;\n  }\n\n  setSharedBuffer(buf: SharedArrayBuffer): void {\n    this._sharedBuffer = buf;\n  }\n\n  setSyncBuffer(buf: SharedArrayBuffer): void {\n    this._syncBuffer = buf;\n  }\n\n  // \"lean\" spawns exclude node_modules etc. from snapshots; workers hydrate\n  // lazily over a sync fs proxy (needs SAB). Default \"full\" — flip via the\n  // NodepodOptions.spawnSnapshot option.\n  private _spawnSnapshotMode: \"full\" | \"lean\" = \"full\";\n  private _warnedLeanUnavailable = false;\n\n  setSpawnSnapshotMode(mode: \"full\" | \"lean\"): void {\n    this._spawnSnapshotMode = mode;\n  }\n\n  spawn(config: {\n    command: string;\n    args?: string[];\n    cwd?: string;\n    env?: Record<string, string>;\n    parentPid?: number;\n  }): ProcessHandle {\n    if (this._processes.size >= MAX_PROCESSES) {\n      throw new Error(`Process limit exceeded (max ${MAX_PROCESSES})`);\n    }\n\n    if (config.parentPid !== undefined) {\n      let depth = 0;\n      let pid: number | undefined = config.parentPid;\n      while (pid !== undefined && depth < MAX_PROCESS_DEPTH) {\n        const parent = this._processes.get(pid);\n        pid = parent?.parentPid;\n        depth++;\n      }\n      if (depth >= MAX_PROCESS_DEPTH) {\n        throw new Error(`Process tree depth limit exceeded (max ${MAX_PROCESS_DEPTH})`);\n      }\n    }\n\n    const pid = this._nextPid++;\n\n    // lean mode needs SAB in the worker (Atomics.wait for the lazy fs proxy)\n    let lean = this._spawnSnapshotMode === \"lean\";\n    if (lean && (typeof SharedArrayBuffer === \"undefined\" || !this._syncBuffer)) {\n      if (!this._warnedLeanUnavailable) {\n        this._warnedLeanUnavailable = true;\n        console.warn(\n          \"[nodepod] spawnSnapshot 'lean' requires SharedArrayBuffer (COOP/COEP); falling back to full snapshots\",\n        );\n      }\n      lean = false;\n    }\n\n    const snapshot = this._vfsBridge\n      ? this._vfsBridge.createSnapshot(\n          lean ? { excludeDirNames: LEAN_EXCLUDE_DIR_NAMES } : undefined,\n        )\n      : this._createEmptySnapshot();\n\n    const spawnConfig: SpawnConfig = {\n      command: config.command,\n      args: config.args ?? [],\n      cwd: config.cwd ?? \"/\",\n      env: config.env ?? {},\n      snapshot,\n      syncBuffer: this._syncBuffer ?? undefined,\n      parentPid: config.parentPid,\n    };\n\n    const worker = this._createWorker();\n    const handle = new ProcessHandle(worker, spawnConfig);\n    handle._setPid(pid);\n\n    this._processes.set(pid, handle);\n    this._wireHandleEvents(handle);\n\n    // pool of fs proxy MessagePorts for the spawned process to hand out to\n    // its WASI workers. one port per worker, tab side handles each. chrome\n    // drops BroadcastChannel delivery from blob workers so we cant rely on\n    // that as the only route (#54 follow-up).\n    const wasiFsPorts: MessagePort[] = [];\n    const transferPorts: MessagePort[] = [];\n    {\n      const tabFsBridge = buildFileSystemBridge(this._volume, () => \"/\");\n      const POOL_SIZE = 16;\n      for (let i = 0; i < POOL_SIZE; i++) {\n        const ch = new MessageChannel();\n        ch.port1.onmessage = (e: MessageEvent) => {\n          const data = e.data;\n          if (!data || typeof data !== \"object\" || !data.__fs__) return;\n          handleFsProxy(data.__fs__, tabFsBridge);\n        };\n        ch.port1.start();\n        transferPorts.push(ch.port2);\n        wasiFsPorts.push(ch.port2);\n      }\n    }\n\n    // lean mode: dedicated fs proxy channel for the worker's own lazy reads\n    let lazyFsPort: MessagePort | undefined;\n    if (lean && snapshot.lazyDirNames) {\n      const lazyBridge = buildFileSystemBridge(this._volume, () => \"/\");\n      const lazyCh = new MessageChannel();\n      lazyCh.port1.onmessage = (e: MessageEvent) => {\n        const data = e.data;\n        if (!data || typeof data !== \"object\" || !data.__fs__) return;\n        handleFsProxy(data.__fs__, lazyBridge);\n      };\n      lazyCh.port1.start();\n      transferPorts.push(lazyCh.port2);\n      lazyFsPort = lazyCh.port2;\n    }\n\n    const initMsg: MainToWorker_Init = {\n      type: \"init\",\n      pid,\n      cwd: spawnConfig.cwd,\n      env: spawnConfig.env,\n      snapshot: spawnConfig.snapshot,\n      syncBuffer: spawnConfig.syncBuffer,\n      wasiFsPorts,\n      lazyFsPort,\n    };\n    handle.init(initMsg, transferPorts);\n\n    this.emit(\"spawn\", pid, config.command, config.args);\n    return handle;\n  }\n\n  getProcess(pid: number): ProcessHandle | undefined {\n    return this._processes.get(pid);\n  }\n\n  listProcesses(): ProcessInfo[] {\n    const result: ProcessInfo[] = [];\n    for (const [pid, handle] of this._processes) {\n      result.push({\n        pid,\n        command: handle.command,\n        args: handle.args,\n        state: handle.state,\n        exitCode: handle.exitCode,\n        parentPid: handle.parentPid,\n      });\n    }\n    return result;\n  }\n\n  // kills process and all descendants recursively, cleans up server ports\n  kill(pid: number, signal: string = \"SIGTERM\"): boolean {\n    const handle = this._processes.get(pid);\n    if (!handle) return false;\n    handle.kill(signal);\n    this._killDescendants(pid, signal);\n    this._cleanupServerPorts(pid);\n    return true;\n  }\n\n  private _cleanupServerPorts(pid: number): void {\n    for (const [port, ownerPid] of this._serverPorts) {\n      if (ownerPid === pid) {\n        this._serverPorts.delete(port);\n        this.emit(\"server-close\", pid, port);\n      }\n    }\n    const children = this._childPids.get(pid);\n    if (children) {\n      for (const childPid of children) {\n        this._cleanupServerPorts(childPid);\n      }\n    }\n  }\n\n  private _killDescendants(pid: number, signal: string): void {\n    const children = this._childPids.get(pid);\n    if (!children) return;\n    for (const childPid of children) {\n      const childHandle = this._processes.get(childPid);\n      if (childHandle && childHandle.state !== \"exited\") {\n        childHandle.kill(signal);\n        // stop stale output from dying workers leaking into the terminal\n        childHandle.removeAllListeners(\"stdout\");\n        childHandle.removeAllListeners(\"stderr\");\n      }\n      this._killDescendants(childPid, signal);\n    }\n  }\n\n  teardown(): void {\n    for (const [pid, handle] of this._processes) {\n      try { handle.kill(\"SIGKILL\"); } catch {\n        /* ignore */\n      }\n    }\n    this._processes.clear();\n  }\n\n  get processCount(): number {\n    return this._processes.size;\n  }\n\n  registerServerPort(port: number, pid: number): void {\n    this._serverPorts.set(port, pid);\n  }\n\n  unregisterServerPort(port: number): void {\n    this._serverPorts.delete(port);\n  }\n\n  getServerPorts(): number[] {\n    return [...this._serverPorts.keys()];\n  }\n\n  // send HTTP request to the worker that owns the port\n  dispatchHttpRequest(\n    port: number,\n    method: string,\n    path: string,\n    headers: Record<string, string>,\n    body?: string | null,\n  ): Promise<{ statusCode: number; statusMessage: string; headers: Record<string, string | string[]>; body: string | ArrayBuffer }> {\n    const pid = this._serverPorts.get(port);\n    if (pid === undefined) {\n      return Promise.resolve({\n        statusCode: 503,\n        statusMessage: \"Service Unavailable\",\n        headers: { \"Content-Type\": \"text/plain\" },\n        body: `No server on port ${port}`,\n      });\n    }\n\n    const handle = this._processes.get(pid);\n    if (!handle || handle.state === \"exited\") {\n      this._serverPorts.delete(port);\n      return Promise.resolve({\n        statusCode: 503,\n        statusMessage: \"Service Unavailable\",\n        headers: { \"Content-Type\": \"text/plain\" },\n        body: `Server process exited (pid ${pid})`,\n      });\n    }\n\n    const requestId = this._nextHttpRequestId++;\n    return new Promise((resolve) => {\n      const timer = setTimeout(() => {\n        this._httpCallbacks.delete(requestId);\n        resolve({\n          statusCode: 504,\n          statusMessage: \"Gateway Timeout\",\n          headers: { \"Content-Type\": \"text/plain\" },\n          body: `No response from server on port ${port}`,\n        });\n      }, ProcessManager.HTTP_REQUEST_TIMEOUT_MS);\n\n      this._httpCallbacks.set(requestId, {\n        pid,\n        fn: (resp) => {\n          clearTimeout(timer);\n          this._httpCallbacks.delete(requestId);\n          resolve({\n            statusCode: resp.statusCode,\n            statusMessage: resp.statusMessage,\n            headers: resp.headers,\n            body: resp.body,\n          });\n        },\n      });\n\n      handle.postMessage({\n        type: \"http-request\",\n        requestId,\n        port,\n        method,\n        path,\n        headers,\n        body: body ?? null,\n      });\n    });\n  }\n\n  private _handleWorkerHttpClientRequest(\n    clientHandle: ProcessHandle,\n    msg: WorkerToMain_HttpClientRequest,\n  ): void {\n    this.dispatchHttpRequest(\n      msg.port,\n      msg.method,\n      msg.path,\n      msg.headers,\n      msg.body ?? null,\n    )\n      .then((resp) => {\n        let bodyVal: string | ArrayBuffer = \"\";\n        const transferList: Transferable[] = [];\n        if (resp.body instanceof ArrayBuffer) {\n          bodyVal = resp.body;\n          transferList.push(resp.body);\n        } else if (typeof resp.body === \"string\") {\n          bodyVal = resp.body;\n        }\n        clientHandle.postMessage(\n          {\n            type: \"http-client-response\",\n            requestId: msg.requestId,\n            statusCode: resp.statusCode,\n            statusMessage: resp.statusMessage,\n            headers: resp.headers,\n            body: bodyVal,\n          },\n          transferList,\n        );\n      })\n      .catch((err) => {\n        const message = err instanceof Error ? err.message : String(err);\n        clientHandle.postMessage({\n          type: \"http-client-response\",\n          requestId: msg.requestId,\n          statusCode: 502,\n          statusMessage: \"Bad Gateway\",\n          headers: { \"Content-Type\": \"text/plain\" },\n          body: message,\n        });\n      });\n  }\n\n  // returns owning pid, or -1 if no server found\n  dispatchWsUpgrade(\n    port: number,\n    uid: string,\n    path: string,\n    headers: Record<string, string>,\n  ): number {\n    const pid = this._serverPorts.get(port);\n    if (pid === undefined) {\n      return -1;\n    }\n\n    const handle = this._processes.get(pid);\n    if (!handle || handle.state === \"exited\") {\n      this._serverPorts.delete(port);\n      return -1;\n    }\n\n    handle.postMessage({ type: \"ws-upgrade\", uid, port, path, headers });\n    return pid;\n  }\n\n  dispatchWsData(pid: number, uid: string, frame: number[]): void {\n    const handle = this._processes.get(pid);\n    if (!handle || handle.state === \"exited\") return;\n    handle.postMessage({ type: \"ws-data\", uid, frame });\n  }\n\n  dispatchWsClose(pid: number, uid: string, code: number): void {\n    const handle = this._processes.get(pid);\n    if (!handle || handle.state === \"exited\") return;\n    handle.postMessage({ type: \"ws-close\", uid, code });\n  }\n\n  private static _workerBlobUrl: string | null = null;\n  private static _externalWorkerSource: string | null = null;\n  private static _workerProbePromise: Promise<void> | null = null;\n\n  /**\n   * Try to load the worker bundle from a same-origin asset\n   * (dist/__worker__.js) so spawns don't need the embedded string copy.\n   * Fire-and-forget from boot; until (and unless) it resolves, spawns use\n   * the embedded bundle. Explicit `workerUrl` wins over auto-detection.\n   */\n  static probeExternalWorkerBundle(workerUrl?: string): Promise<void> {\n    if (ProcessManager._workerProbePromise) return ProcessManager._workerProbePromise;\n\n    ProcessManager._workerProbePromise = (async () => {\n      if (typeof fetch === \"undefined\") return;\n      let url: string | null = workerUrl ?? null;\n      if (!url) {\n        try {\n          // resolves next to the built library (dist/index.mjs → dist/__worker__.js)\n          url = new URL(\"./__worker__.js\", import.meta.url).href;\n        } catch {\n          return;\n        }\n        // blob:/data: base URLs can't host a sibling asset\n        if (!/^https?:/.test(url)) return;\n      }\n      try {\n        const resp = await fetch(url);\n        if (!resp.ok) return;\n        const contentType = resp.headers.get(\"content-type\") || \"\";\n        // guard against SPA index.html fallbacks answering for missing paths\n        if (contentType && !/javascript|ecmascript/i.test(contentType)) return;\n        const text = await resp.text();\n        if (text.length > 0) ProcessManager._externalWorkerSource = text;\n      } catch {\n        /* asset not served — embedded fallback keeps working */\n      }\n    })();\n\n    return ProcessManager._workerProbePromise;\n  }\n\n  private _createWorker(): Worker {\n    // blob URL built once from whichever source is available first; the\n    // external asset (if probed successfully) avoids the embedded copy\n    if (!ProcessManager._workerBlobUrl) {\n      const source = ProcessManager._externalWorkerSource ?? PROCESS_WORKER_BUNDLE;\n      const blob = new Blob([source], { type: \"application/javascript\" });\n      ProcessManager._workerBlobUrl = URL.createObjectURL(blob);\n    }\n    return new Worker(ProcessManager._workerBlobUrl);\n  }\n\n  private _wireHandleEvents(handle: ProcessHandle): void {\n    // forward signals to all descendants, works whether parent is running or exited\n    handle.on(\"signal\", (signal: string) => {\n      this._killDescendants(handle.pid, signal);\n    });\n\n    // forward stdin to children even when parent is blocked on Atomics.wait.\n    // only routes to stdio:'inherit' children; stdio:'pipe' kids are isolated.\n    handle.on(\"stdin-forward\", (data: string) => {\n      const children = this._childPids.get(handle.pid);\n      if (children) {\n        for (const childPid of children) {\n          if (!this._inheritStdinChildren.has(childPid)) continue;\n          const childHandle = this._processes.get(childPid);\n          if (childHandle && childHandle.state !== \"exited\") {\n            childHandle.sendStdin(data);\n          }\n        }\n      }\n    });\n\n    handle.on(\"exit\", (exitCode: number) => {\n      for (const [port, pid] of this._serverPorts) {\n        if (pid === handle.pid) {\n          this._serverPorts.delete(port);\n          this.emit(\"server-close\", handle.pid, port);\n        }\n      }\n      // drain pending HTTP callbacks for this worker so they don't leak\n      for (const [reqId, entry] of this._httpCallbacks) {\n        if (entry.pid !== handle.pid) continue;\n        entry.fn({\n          type: \"http-response\",\n          requestId: reqId,\n          statusCode: 503,\n          statusMessage: \"Worker Exited\",\n          headers: {},\n          body: \"Worker process exited before completing the request\",\n        } as WorkerToMain_HttpResponse);\n      }\n      this.emit(\"exit\", handle.pid, exitCode);\n      // delayed so event handlers finish first\n      setTimeout(() => {\n        this._processes.delete(handle.pid);\n      }, 100);\n    });\n\n    handle.on(\"vfs-write\", (path: string, content: ArrayBuffer, isDirectory: boolean) => {\n      if (this._vfsBridge) {\n        if (isDirectory) {\n          this._vfsBridge.handleWorkerMkdir(path);\n        } else {\n          this._vfsBridge.handleWorkerWrite(path, new Uint8Array(content));\n        }\n        if (!isInternalVfsPath(path)) {\n          this._vfsBridge.broadcastChange(path, content, handle.pid);\n        }\n      }\n    });\n\n    handle.on(\"vfs-delete\", (path: string) => {\n      if (this._vfsBridge) {\n        this._vfsBridge.handleWorkerDelete(path);\n        if (!isInternalVfsPath(path)) {\n          this._vfsBridge.broadcastChange(path, null, handle.pid);\n        }\n      }\n    });\n\n    handle.on(\"spawn-request\", (msg: WorkerToMain_SpawnRequest) => {\n      const fullCmd = msg.args.length ? `${msg.command} ${msg.args.join(\" \")}` : msg.command;\n      try {\n        const childHandle = this.spawn({\n          command: msg.command,\n          args: msg.args,\n          cwd: msg.cwd,\n          env: msg.env,\n          parentPid: handle.pid,\n        });\n\n        if (!this._childPids.has(handle.pid)) {\n          this._childPids.set(handle.pid, new Set());\n        }\n        this._childPids.get(handle.pid)!.add(childHandle.pid);\n\n        // remember stdio:inherit so stdin-forward routes parent's stdin here.\n        // msg.stdio can be the legacy string or node's [stdin, stdout, stderr].\n        const inheritsStdin = msg.stdio === \"inherit\"\n          || (Array.isArray(msg.stdio) && msg.stdio[0] === \"inherit\");\n        if (inheritsStdin) this._inheritStdinChildren.add(childHandle.pid);\n\n        // defer parent exit/done until child finishes (e.g. create-vite -> vite dev)\n        handle.holdExit();\n        handle.holdShellDone();\n\n        handle.postMessage({\n          type: \"spawn-result\",\n          requestId: msg.requestId,\n          pid: childHandle.pid,\n        });\n\n        // bare `node` invocations go through as direct execution\n        const isNodeBin = /(?:^|\\/)node$/.test(msg.command);\n        const sendExec = () => {\n          if (isNodeBin && msg.args.length > 0) {\n            childHandle.exec({\n              type: \"exec\",\n              filePath: msg.args[0],\n              args: msg.args.slice(1),\n              cwd: msg.cwd,\n              env: msg.env,\n              isShell: false,\n            });\n          } else {\n            childHandle.exec({\n              type: \"exec\",\n              filePath: \"\",\n              args: msg.args,\n              cwd: msg.cwd,\n              env: msg.env,\n              isShell: true,\n              shellCommand: fullCmd,\n            });\n          }\n        };\n\n        if (childHandle.state === \"running\") {\n          sendExec();\n        } else {\n          childHandle.on(\"ready\", sendExec);\n        }\n\n        // relay child output — direct emit if parent is done, postMessage otherwise\n        childHandle.on(\"stdout\", (data: string) => {\n          if (handle.workerExited || handle.shellCommandDone) {\n            handle.emit(\"stdout\", data);\n          } else {\n            handle.postMessage({\n              type: \"child-output\",\n              requestId: msg.requestId,\n              stream: \"stdout\",\n              data,\n            });\n          }\n        });\n        childHandle.on(\"stderr\", (data: string) => {\n          if (handle.workerExited || handle.shellCommandDone) {\n            handle.emit(\"stderr\", data);\n          } else {\n            handle.postMessage({\n              type: \"child-output\",\n              requestId: msg.requestId,\n              stream: \"stderr\",\n              data,\n            });\n          }\n        });\n\n        childHandle.on(\"stdin-raw-status\", (isRaw: boolean) => {\n          handle.emit(\"stdin-raw-status\", isRaw);\n        });\n\n        childHandle.on(\"exit\", (exitCode: number) => {\n          if (!handle.workerExited) {\n            handle.postMessage({\n              type: \"child-exit\",\n              requestId: msg.requestId,\n              exitCode,\n              stdout: childHandle.stdout,\n              stderr: childHandle.stderr,\n            });\n          }\n          const children = this._childPids.get(handle.pid);\n          if (children) {\n            children.delete(childHandle.pid);\n            if (children.size === 0) this._childPids.delete(handle.pid);\n          }\n          this._inheritStdinChildren.delete(childHandle.pid);\n          handle.releaseExit();\n          handle.releaseShellDone();\n        });\n      } catch (e) {\n        handle.postMessage({\n          type: \"spawn-result\",\n          requestId: msg.requestId,\n          pid: -1,\n          error: e instanceof Error ? e.message : String(e),\n        });\n      }\n    });\n\n    handle.on(\"fork-request\", (msg: WorkerToMain_ForkRequest) => {\n      try {\n        const childHandle = this.spawn({\n          command: \"node\",\n          args: [msg.modulePath, ...msg.args],\n          cwd: msg.cwd,\n          env: msg.env,\n          parentPid: handle.pid,\n        });\n\n        if (!this._childPids.has(handle.pid)) {\n          this._childPids.set(handle.pid, new Set());\n        }\n        this._childPids.get(handle.pid)!.add(childHandle.pid);\n        handle.holdExit();\n        handle.holdShellDone();\n\n        handle.postMessage({\n          type: \"spawn-result\",\n          requestId: msg.requestId,\n          pid: childHandle.pid,\n        });\n\n        const sendExec = () => {\n          childHandle.exec({\n            type: \"exec\",\n            filePath: msg.modulePath,\n            args: msg.args,\n            cwd: msg.cwd,\n            env: msg.env,\n            isShell: false,\n            isFork: true,\n          });\n        };\n\n        if (childHandle.state === \"running\") {\n          sendExec();\n        } else {\n          childHandle.on(\"ready\", sendExec);\n        }\n\n        childHandle.on(\"stdout\", (data: string) => {\n          if (handle.workerExited || handle.shellCommandDone) {\n            handle.emit(\"stdout\", data);\n          } else {\n            handle.postMessage({\n              type: \"child-output\",\n              requestId: msg.requestId,\n              stream: \"stdout\",\n              data,\n            });\n          }\n        });\n        childHandle.on(\"stderr\", (data: string) => {\n          if (handle.workerExited || handle.shellCommandDone) {\n            handle.emit(\"stderr\", data);\n          } else {\n            handle.postMessage({\n              type: \"child-output\",\n              requestId: msg.requestId,\n              stream: \"stderr\",\n              data,\n            });\n          }\n        });\n\n        // IPC child → parent\n        childHandle.on(\"ipc-message\", (ipcMsg: any) => {\n          const payload = ipcMsg?.data ?? ipcMsg;\n          if (!handle.workerExited) {\n            handle.postMessage({\n              type: \"ipc-message\",\n              targetRequestId: msg.requestId,\n              data: payload,\n            } as any);\n          }\n        });\n\n        // IPC parent → child\n        handle.on(\"ipc-message\", (ipcMsg: any) => {\n          if (ipcMsg.targetRequestId === msg.requestId) {\n            childHandle.postMessage({\n              type: \"ipc-message\",\n              data: ipcMsg.data,\n            });\n          }\n        });\n\n        childHandle.on(\"exit\", (exitCode: number) => {\n          if (!handle.workerExited) {\n            handle.postMessage({\n              type: \"child-exit\",\n              requestId: msg.requestId,\n              exitCode,\n              stdout: childHandle.stdout,\n              stderr: childHandle.stderr,\n            });\n          }\n          const children = this._childPids.get(handle.pid);\n          if (children) {\n            children.delete(childHandle.pid);\n            if (children.size === 0) this._childPids.delete(handle.pid);\n          }\n          this._inheritStdinChildren.delete(childHandle.pid);\n          handle.releaseExit();\n          handle.releaseShellDone();\n        });\n      } catch (e) {\n        handle.postMessage({\n          type: \"spawn-result\",\n          requestId: msg.requestId,\n          pid: -1,\n          error: e instanceof Error ? e.message : String(e),\n        });\n      }\n    });\n\n    handle.on(\"workerthread-request\", (msg: WorkerToMain_WorkerThreadRequest) => {\n      try {\n        let modulePath = msg.modulePath;\n        // eval mode — write code to a temp VFS file\n        if (msg.isEval) {\n          const evalPath = `/__wt_eval_${msg.threadId}__.js`;\n          this._volume.writeFileSync(evalPath, msg.modulePath);\n          modulePath = evalPath;\n          if (this._vfsBridge) {\n            const encoder = new TextEncoder();\n            const content = encoder.encode(msg.modulePath).buffer as ArrayBuffer;\n            this._vfsBridge.handleWorkerWrite(evalPath, new Uint8Array(content));\n            this._vfsBridge.broadcastChange(evalPath, content, handle.pid);\n          }\n        }\n\n        const childHandle = this.spawn({\n          command: \"node\",\n          args: [modulePath],\n          cwd: msg.cwd,\n          env: msg.env,\n          parentPid: handle.pid,\n        });\n\n        if (!this._childPids.has(handle.pid)) {\n          this._childPids.set(handle.pid, new Set());\n        }\n        this._childPids.get(handle.pid)!.add(childHandle.pid);\n        handle.holdExit();\n        handle.holdShellDone();\n\n        handle.postMessage({\n          type: \"spawn-result\",\n          requestId: msg.requestId,\n          pid: childHandle.pid,\n        });\n\n        const sendExec = () => {\n          childHandle.exec({\n            type: \"exec\",\n            filePath: modulePath,\n            args: msg.args || [],\n            cwd: msg.cwd,\n            env: msg.env,\n            isShell: false,\n            isFork: true,\n            isWorkerThread: true,\n            workerData: msg.workerData,\n            threadId: msg.threadId,\n          });\n        };\n\n        if (childHandle.state === \"running\") {\n          sendExec();\n        } else {\n          childHandle.on(\"ready\", sendExec);\n        }\n\n        childHandle.on(\"stdout\", (data: string) => {\n          if (handle.workerExited || handle.shellCommandDone) {\n            handle.emit(\"stdout\", data);\n          } else {\n            handle.postMessage({\n              type: \"child-output\",\n              requestId: msg.requestId,\n              stream: \"stdout\",\n              data,\n            });\n          }\n        });\n        childHandle.on(\"stderr\", (data: string) => {\n          if (handle.workerExited || handle.shellCommandDone) {\n            handle.emit(\"stderr\", data);\n          } else {\n            handle.postMessage({\n              type: \"child-output\",\n              requestId: msg.requestId,\n              stream: \"stderr\",\n              data,\n            });\n          }\n        });\n\n        childHandle.on(\"ipc-message\", (ipcMsg: any) => {\n          const payload = ipcMsg?.data ?? ipcMsg;\n          if (!handle.workerExited) {\n            handle.postMessage({\n              type: \"ipc-message\",\n              targetRequestId: msg.requestId,\n              data: payload,\n            } as any);\n          }\n        });\n\n        handle.on(\"ipc-message\", (ipcMsg: any) => {\n          if (ipcMsg.targetRequestId === msg.requestId) {\n            childHandle.postMessage({\n              type: \"ipc-message\",\n              data: ipcMsg.data,\n            });\n          }\n        });\n\n        childHandle.on(\"exit\", (exitCode: number) => {\n          if (msg.isEval) {\n            try {\n              this._volume.unlinkSync(`/__wt_eval_${msg.threadId}__.js`);\n            } catch {\n              /* ignore */\n            }\n          }\n\n          if (!handle.workerExited) {\n            handle.postMessage({\n              type: \"child-exit\",\n              requestId: msg.requestId,\n              exitCode,\n              stdout: childHandle.stdout,\n              stderr: childHandle.stderr,\n            });\n          }\n          const children = this._childPids.get(handle.pid);\n          if (children) {\n            children.delete(childHandle.pid);\n            if (children.size === 0) this._childPids.delete(handle.pid);\n          }\n          this._inheritStdinChildren.delete(childHandle.pid);\n          handle.releaseExit();\n          handle.releaseShellDone();\n        });\n      } catch (e) {\n        handle.postMessage({\n          type: \"spawn-result\",\n          requestId: msg.requestId,\n          pid: -1,\n          error: e instanceof Error ? e.message : String(e),\n        });\n      }\n    });\n\n    handle.on(\"sqlite-preload\", (msg: WorkerToMain_SqlitePreload) => {\n      handle.holdSync();\n      void this._handleSqlitePreload(handle, msg.sab).finally(() => {\n        handle.releaseSync();\n      });\n    });\n\n    handle.on(\"spawn-sync\", (msg: WorkerToMain_SpawnSync) => {\n      if (!this._syncBuffer) {\n        return;\n      }\n\n      const fullCmd = msg.shellCommand ??\n        (msg.args.length ? `${msg.command} ${msg.args.join(\" \")}` : msg.command);\n      const maxStdoutLen = (SLOT_SIZE - 3) * 4;\n\n      const signalError = (exitCode: number) => {\n        try {\n          const int32 = new Int32Array(this._syncBuffer!);\n          const slotBase = msg.syncSlot * SLOT_SIZE;\n          Atomics.store(int32, slotBase + 1, exitCode);\n          Atomics.store(int32, slotBase + 2, 0);\n          Atomics.store(int32, slotBase, 2); // STATUS_ERROR\n          Atomics.notify(int32, slotBase);\n        } catch {\n          // buffer unusable, worker will time out\n        }\n      };\n\n      try {\n        const childHandle = this.spawn({\n          command: msg.command,\n          args: msg.args,\n          cwd: msg.cwd,\n          env: msg.env,\n          parentPid: handle.pid,\n        });\n\n        // must track for Ctrl+C signal propagation via _killDescendants\n        if (!this._childPids.has(handle.pid)) {\n          this._childPids.set(handle.pid, new Set());\n        }\n        this._childPids.get(handle.pid)!.add(childHandle.pid);\n\n        // spawnSync defaults to 'inherit' when stdio is omitted (matches node,\n        // since it's usually used for interactive children like npm install\n        // under create-vite).\n        const stdinInherits = !msg.stdio || msg.stdio[0] === \"inherit\";\n        if (stdinInherits) this._inheritStdinChildren.add(childHandle.pid);\n\n        handle.holdExit();\n        handle.holdShellDone();\n        handle.holdSync(); // parent is blocked on Atomics.wait — stdin has to bypass\n\n        const sendExec = () => {\n          childHandle.exec({\n            type: \"exec\",\n            filePath: \"\",\n            args: msg.args,\n            cwd: msg.cwd,\n            env: msg.env,\n            isShell: true,\n            shellCommand: fullCmd,\n          });\n        };\n\n        if (childHandle.state === \"running\") {\n          sendExec();\n        } else {\n          childHandle.on(\"ready\", sendExec);\n        }\n\n        // parent is blocked on Atomics.wait, can't process postMessage — emit directly\n        childHandle.on(\"stdout\", (data: string) => {\n          handle.emit(\"stdout\", data);\n        });\n        childHandle.on(\"stderr\", (data: string) => {\n          handle.emit(\"stderr\", data);\n        });\n\n        childHandle.on(\"stdin-raw-status\", (isRaw: boolean) => {\n          handle.emit(\"stdin-raw-status\", isRaw);\n        });\n\n        childHandle.on(\"exit\", (exitCode: number) => {\n          try {\n            const int32 = new Int32Array(this._syncBuffer!);\n            const encoder = new TextEncoder();\n            const slotBase = msg.syncSlot * SLOT_SIZE;\n            const stdoutBytes = encoder.encode(childHandle.stdout);\n            const truncatedLen = Math.min(stdoutBytes.byteLength, maxStdoutLen);\n\n            Atomics.store(int32, slotBase + 1, exitCode);\n            Atomics.store(int32, slotBase + 2, truncatedLen);\n\n            const uint8 = new Uint8Array(this._syncBuffer!);\n            const dataOffset = (slotBase + 3) * 4;\n            uint8.set(stdoutBytes.subarray(0, truncatedLen), dataOffset);\n\n            // last store wakes the waiting worker\n            Atomics.store(int32, slotBase, 1);\n            Atomics.notify(int32, slotBase);\n          } catch {\n            signalError(1);\n          }\n\n          const children = this._childPids.get(handle.pid);\n          if (children) {\n            children.delete(childHandle.pid);\n            if (children.size === 0) this._childPids.delete(handle.pid);\n          }\n          this._inheritStdinChildren.delete(childHandle.pid);\n\n          handle.releaseSync();\n          handle.releaseExit();\n          handle.releaseShellDone();\n        });\n\n        childHandle.on(\"worker-error\", () => {\n          signalError(1);\n          const children = this._childPids.get(handle.pid);\n          if (children) {\n            children.delete(childHandle.pid);\n            if (children.size === 0) this._childPids.delete(handle.pid);\n          }\n          this._inheritStdinChildren.delete(childHandle.pid);\n          handle.releaseSync();\n          handle.releaseExit();\n          handle.releaseShellDone();\n        });\n      } catch {\n        signalError(1);\n      }\n    });\n\n    handle.on(\"server-listen\", (port: number, hostname: string) => {\n      this.registerServerPort(port, handle.pid);\n      this.emit(\"server-listen\", handle.pid, port, hostname);\n    });\n\n    handle.on(\"server-close\", (port: number) => {\n      this.unregisterServerPort(port);\n      this.emit(\"server-close\", handle.pid, port);\n    });\n\n    handle.on(\"http-response\", (msg: WorkerToMain_HttpResponse) => {\n      const entry = this._httpCallbacks.get(msg.requestId);\n      if (entry) entry.fn(msg);\n    });\n\n    handle.on(\"http-client-request\", (msg: WorkerToMain_HttpClientRequest) => {\n      this._handleWorkerHttpClientRequest(handle, msg);\n    });\n\n    handle.on(\"ws-frame\", (msg: any) => {\n      this.emit(\"ws-frame\", msg);\n    });\n\n    handle.on(\"cwd-change\", (cwd: string) => {\n      this.emit(\"cwd-change\", handle.pid, cwd);\n    });\n\n    handle.on(\"stdin-raw-status\", (isRaw: boolean) => {\n      this.emit(\"stdin-raw-status\", handle.pid, isRaw);\n    });\n\n    handle.on(\"worker-error\", (message: string, stack?: string) => {\n      this.emit(\"error\", handle.pid, message, stack);\n    });\n  }\n\n  private static readonly SAB_STATUS_PENDING = 0;\n  private static readonly SAB_STATUS_OK = 1;\n  private static readonly SAB_STATUS_FAIL = 2;\n\n  private async _handleSqlitePreload(\n    handle: ProcessHandle,\n    sab: Int32Array,\n  ): Promise<void> {\n    const notify = (status: number, byteLength = 0): void => {\n      Atomics.store(sab, 1, byteLength);\n      Atomics.store(sab, 0, status);\n      Atomics.notify(sab, 0);\n    };\n\n    try {\n      const payloadView = new Uint8Array(\n        sab.buffer,\n        WASM_SAB_HEADER_BYTES,\n        WASM_SAB_MAX_BYTES,\n      );\n\n      let bytes: Uint8Array;\n      if (this._volume.existsSync(WASM_CACHE_PATH)) {\n        bytes = new Uint8Array(this._volume.readFileSync(WASM_CACHE_PATH));\n      } else {\n        const resp = await fetch(CDN_WA_SQLITE_WASM);\n        if (!resp.ok) {\n          throw new Error(`fetch wa-sqlite.wasm failed: ${resp.status}`);\n        }\n        bytes = new Uint8Array(await resp.arrayBuffer());\n        if (this._vfsBridge) {\n          this._vfsBridge.handleWorkerWrite(WASM_CACHE_PATH, bytes);\n        } else {\n          const parent = WASM_CACHE_PATH.substring(\n            0,\n            WASM_CACHE_PATH.lastIndexOf(\"/\"),\n          );\n          if (parent && !this._volume.existsSync(parent)) {\n            this._volume.mkdirSync(parent, { recursive: true });\n          }\n          this._volume.writeFileSync(WASM_CACHE_PATH, bytes);\n        }\n        precompileWasm(bytes);\n      }\n\n      if (bytes.byteLength > payloadView.byteLength) {\n        throw new Error(\n          `wa-sqlite.wasm too large for preload SAB (${bytes.byteLength} > ${payloadView.byteLength})`,\n        );\n      }\n\n      payloadView.set(bytes);\n      notify(ProcessManager.SAB_STATUS_OK, bytes.byteLength);\n    } catch (err) {\n      if (typeof console !== \"undefined\") {\n        console.warn(\"[node:sqlite] host preload failed:\", err);\n      }\n      notify(ProcessManager.SAB_STATUS_FAIL);\n    }\n  }\n\n  private _createEmptySnapshot(): VFSBinarySnapshot {\n    return {\n      manifest: [],\n      data: new ArrayBuffer(0),\n    };\n  }\n\n  // content larger than this is broadcast as a path-only invalidation in lean\n  // mode — workers drop their copy and re-pull over the lazy fs proxy.\n  // TODO(plan 013/011): once lean spawns are the default, the invalidation\n  // path can become the norm for all sizes (pure pull model, no byte traffic).\n  private static readonly VFS_BROADCAST_MAX_BYTES = 4 * 1024 * 1024;\n\n  broadcastVFSChange(path: string, content: ArrayBuffer | null, isDirectory: boolean, excludePid: number): void {\n    // build the outgoing payload once — postMessage without a transfer list\n    // structured-clones per recipient, so no explicit per-recipient copy is\n    // needed on the main thread. copy only if the source is SAB-backed\n    // (TypeScript lets SAB satisfy ArrayBuffer; SAB can't be cloned to workers)\n    let payload: ArrayBuffer | null = null;\n    if (content) {\n      if (typeof SharedArrayBuffer !== \"undefined\" && (content as unknown) instanceof SharedArrayBuffer) {\n        payload = new ArrayBuffer(content.byteLength);\n        new Uint8Array(payload).set(new Uint8Array(content));\n      } else {\n        payload = content;\n      }\n    }\n\n    // size gate: only when workers can re-pull the bytes (lean mode + SAB)\n    const invalidateInstead =\n      payload !== null &&\n      !isDirectory &&\n      payload.byteLength > ProcessManager.VFS_BROADCAST_MAX_BYTES &&\n      this._spawnSnapshotMode === \"lean\" &&\n      this._syncBuffer !== null;\n\n    for (const [pid, handle] of this._processes) {\n      if (pid === excludePid || handle.state === \"exited\") continue;\n      try {\n        if (invalidateInstead) {\n          handle.postMessage({ type: \"vfs-invalidate\", path });\n        } else {\n          handle.postMessage({\n            type: \"vfs-sync\",\n            path,\n            content: payload,\n            isDirectory,\n          });\n        }\n      } catch {\n        /* ignore */\n      }\n    }\n  }\n}\n\n","// syncs the canonical MemoryVolume with worker VFS clones\r\n// creates snapshots for init, applies worker writes, broadcasts changes\r\n\r\nimport type { MemoryVolume } from \"../memory-volume\";\r\nimport { isInternalVfsPath } from \"../constants/internal-vfs-paths\";\r\nimport type { VFSBinarySnapshot, VFSSnapshotEntry } from \"./worker-protocol\";\r\nimport type { SharedVFSController } from \"./shared-vfs\";\r\n\r\nconst VFS_CHUNK_SIZE = 4 * 1024 * 1024; // 4MB\r\n\r\nexport class VFSBridge {\r\n  private _volume: MemoryVolume;\r\n  private _broadcaster: ((path: string, content: ArrayBuffer | null, excludePid: number) => void) | null = null;\r\n  private _sharedVFS: SharedVFSController | null = null;\r\n  // suppressed during handleWorkerWrite/Mkdir/Delete to prevent double-broadcasting\r\n  private _suppressWatch = false;\r\n  private _warnedSharedVFSDrop = false;\r\n\r\n  constructor(volume: MemoryVolume) {\r\n    this._volume = volume;\r\n  }\r\n\r\n  setBroadcaster(fn: (path: string, content: ArrayBuffer | null, excludePid: number) => void): void {\r\n    this._broadcaster = fn;\r\n  }\r\n\r\n  setSharedVFS(controller: SharedVFSController): void {\r\n    this._sharedVFS = controller;\r\n  }\r\n\r\n  // packs all files into one ArrayBuffer plus a manifest.\r\n  // excludeDirNames (lean spawn mode): directories with these names are\r\n  // recorded as empty dir entries but not descended into — the worker\r\n  // hydrates their contents lazily via the fs proxy.\r\n  createSnapshot(opts?: { excludeDirNames?: string[] }): VFSBinarySnapshot {\r\n    const manifest: VFSSnapshotEntry[] = [];\r\n    const chunks: Uint8Array[] = [];\r\n    let totalSize = 0;\r\n    const exclude =\r\n      opts?.excludeDirNames && opts.excludeDirNames.length > 0\r\n        ? new Set(opts.excludeDirNames)\r\n        : null;\r\n\r\n    this._walkVolume(\"/\", (path, isDirectory, content) => {\r\n      if (isDirectory) {\r\n        manifest.push({\r\n          path,\r\n          offset: 0,\r\n          length: 0,\r\n          isDirectory: true,\r\n        });\r\n      } else if (content) {\r\n        manifest.push({\r\n          path,\r\n          offset: totalSize,\r\n          length: content.byteLength,\r\n          isDirectory: false,\r\n        });\r\n        chunks.push(content);\r\n        totalSize += content.byteLength;\r\n      }\r\n    }, exclude);\r\n\r\n    const data = new ArrayBuffer(totalSize);\r\n    const view = new Uint8Array(data);\r\n    let offset = 0;\r\n    for (const chunk of chunks) {\r\n      view.set(chunk, offset);\r\n      offset += chunk.byteLength;\r\n    }\r\n\r\n    const snapshot: VFSBinarySnapshot = { manifest, data };\r\n    if (exclude) snapshot.lazyDirNames = opts!.excludeDirNames!.slice();\r\n    return snapshot;\r\n  }\r\n\r\n  // split into chunks for large transfers\r\n  createChunkedSnapshots(): { chunkIndex: number; totalChunks: number; data: ArrayBuffer; manifest: VFSSnapshotEntry[] }[] {\r\n    const fullSnapshot = this.createSnapshot();\r\n    const totalSize = fullSnapshot.data.byteLength;\r\n\r\n    if (totalSize <= VFS_CHUNK_SIZE) {\r\n      return [{\r\n        chunkIndex: 0,\r\n        totalChunks: 1,\r\n        data: fullSnapshot.data,\r\n        manifest: fullSnapshot.manifest,\r\n      }];\r\n    }\r\n\r\n    const chunks: { chunkIndex: number; totalChunks: number; data: ArrayBuffer; manifest: VFSSnapshotEntry[] }[] = [];\r\n    const fullData = new Uint8Array(fullSnapshot.data);\r\n    const totalChunks = Math.ceil(totalSize / VFS_CHUNK_SIZE);\r\n\r\n    let currentOffset = 0;\r\n    for (let i = 0; i < totalChunks; i++) {\r\n      const chunkEnd = Math.min(currentOffset + VFS_CHUNK_SIZE, totalSize);\r\n      const chunkData = fullData.slice(currentOffset, chunkEnd);\r\n\r\n      const chunkManifest = fullSnapshot.manifest.filter(entry => {\r\n        if (entry.isDirectory) return i === 0;\r\n        return entry.offset >= currentOffset && entry.offset < chunkEnd;\r\n      }).map(entry => ({\r\n        ...entry,\r\n        offset: entry.isDirectory ? 0 : entry.offset - currentOffset,\r\n      }));\r\n\r\n      // defensive copy — fullSnapshot.data is a plain ArrayBuffer today, but this keeps chunks transferable if the source ever becomes SAB-backed\r\n      const chunkBuffer = new ArrayBuffer(chunkData.byteLength);\r\n      new Uint8Array(chunkBuffer).set(chunkData);\r\n\r\n      chunks.push({\r\n        chunkIndex: i,\r\n        totalChunks,\r\n        data: chunkBuffer,\r\n        manifest: chunkManifest,\r\n      });\r\n\r\n      currentOffset = chunkEnd;\r\n    }\r\n\r\n    return chunks;\r\n  }\r\n\r\n  handleWorkerWrite(path: string, content: Uint8Array): void {\r\n    this._suppressWatch = true;\r\n    try {\r\n      const parentDir = path.substring(0, path.lastIndexOf(\"/\")) || \"/\";\r\n      if (parentDir !== \"/\" && !this._volume.existsSync(parentDir)) {\r\n        this._volume.mkdirSync(parentDir, { recursive: true });\r\n      }\r\n      if (isInternalVfsPath(path)) {\r\n        this._volume.writeCacheSync(path, content);\r\n      } else {\r\n        this._volume.writeFileSync(path, content);\r\n      }\r\n      if (this._sharedVFS) {\r\n        this._sharedVFSWrite(path, content);\r\n      }\r\n    } finally {\r\n      this._suppressWatch = false;\r\n    }\r\n  }\r\n\r\n  // writeFile returns false on table/data exhaustion — silent drops mean\r\n  // workers stop seeing updates, so surface it once per session\r\n  private _sharedVFSWrite(path: string, content: Uint8Array): void {\r\n    if (!this._sharedVFS!.writeFile(path, content) && !this._warnedSharedVFSDrop) {\r\n      this._warnedSharedVFSDrop = true;\r\n      const stats = this._sharedVFS!.getStats();\r\n      console.warn(\r\n        `[VFSBridge] SharedVFS write dropped for \"${path}\" (entries: ${stats.entries}, data: ${stats.dataUsed}/${stats.bufferSize} bytes). ` +\r\n          `Workers may see stale reads. Further drops counted in getStats().droppedWrites.`,\r\n      );\r\n    }\r\n  }\r\n\r\n  handleWorkerMkdir(path: string): void {\r\n    this._suppressWatch = true;\r\n    try {\r\n      if (!this._volume.existsSync(path)) {\r\n        this._volume.mkdirSync(path, { recursive: true });\r\n      }\r\n      if (this._sharedVFS) {\r\n        this._sharedVFS.writeDirectory(path);\r\n      }\r\n    } finally {\r\n      this._suppressWatch = false;\r\n    }\r\n  }\r\n\r\n  handleWorkerDelete(path: string): void {\r\n    this._suppressWatch = true;\r\n    try {\r\n      try {\r\n        if (this._volume.existsSync(path)) {\r\n          const stat = this._volume.statSync(path);\r\n          if (stat.isDirectory()) {\r\n            // recursive delete matching Node's fs.rmSync({ recursive: true })\r\n            // workers may emit vfs-delete out of order (a rename's \"from\" fires before descendants are cleaned) or skip intermediate subdirs entirely — if the dir is still on main when a delete arrives, nuke it and everything under it\r\n            this._rmTree(path);\r\n          } else {\r\n            this._volume.unlinkSync(path);\r\n          }\r\n        }\r\n      } catch (e) {\r\n        console.warn(`[VFSBridge] Failed to delete \"${path}\":`, e);\r\n      }\r\n      if (this._sharedVFS) {\r\n        this._sharedVFS.deleteFile(path);\r\n      }\r\n    } finally {\r\n      this._suppressWatch = false;\r\n    }\r\n  }\r\n\r\n  // recursively remove a directory tree, mirroring fs.rmSync({ recursive: true })\r\n  private _rmTree(path: string): void {\r\n    let entries: string[] = [];\r\n    try {\r\n      entries = this._volume.readdirSync(path);\r\n    } catch {\r\n      // path already gone, or not a directory\r\n    }\r\n    for (const name of entries) {\r\n      const child = path.endsWith(\"/\") ? path + name : path + \"/\" + name;\r\n      try {\r\n        const childStat = this._volume.statSync(child);\r\n        if (childStat.isDirectory()) {\r\n          this._rmTree(child);\r\n        } else {\r\n          this._volume.unlinkSync(child);\r\n        }\r\n      } catch {\r\n        // ignore per-entry errors, still try to remove the parent\r\n      }\r\n    }\r\n    try {\r\n      this._volume.rmdirSync(path);\r\n    } catch (e) {\r\n      // only re-throw if the directory is still there, otherwise it's a benign race\r\n      if (this._volume.existsSync(path)) throw e;\r\n    }\r\n  }\r\n\r\n  broadcastChange(path: string, content: ArrayBuffer | null, excludePid: number): void {\r\n    if (isInternalVfsPath(path)) return;\r\n    if (this._broadcaster) {\r\n      this._broadcaster(path, content, excludePid);\r\n    }\r\n  }\r\n\r\n  // watch the canonical volume and push changes to workers, returns unsubscribe fn\r\n  watch(): () => void {\r\n    const handle = this._volume.watch(\"/\", { recursive: true }, (event, filename) => {\r\n      if (!filename || this._suppressWatch) return;\r\n\r\n      // watch callbacks get filenames relative to the watch root, so\r\n      // writing /hello.txt while watching / comes through as \"hello.txt\".\r\n      // SharedVFS and broadcast keys are absolute, promote it here.\r\n      const absPath = filename.startsWith(\"/\") ? filename : \"/\" + filename;\r\n      if (isInternalVfsPath(absPath)) return;\r\n\r\n      try {\r\n        if (this._volume.existsSync(absPath)) {\r\n          const stat = this._volume.statSync(absPath);\r\n          if (stat.isDirectory()) {\r\n            this.broadcastChange(absPath, new ArrayBuffer(0), -1);\r\n            if (this._sharedVFS) this._sharedVFS.writeDirectory(absPath);\r\n          } else {\r\n            const data = this._volume.readFileSync(absPath);\r\n            // fresh ArrayBuffer copy — VFS nodes may store SAB-backed Uint8Arrays when written from WASM threads, and SAB isn't transferable via postMessage\r\n            const buffer = new ArrayBuffer(data.byteLength);\r\n            new Uint8Array(buffer).set(data);\r\n            this.broadcastChange(absPath, buffer, -1);\r\n            if (this._sharedVFS) this._sharedVFSWrite(absPath, data);\r\n          }\r\n        } else {\r\n          this.broadcastChange(absPath, null, -1);\r\n          if (this._sharedVFS) this._sharedVFS.deleteFile(absPath);\r\n        }\r\n      } catch (e) {\r\n        console.warn(`[VFSBridge] Watch error for \"${absPath}\":`, e);\r\n      }\r\n    });\r\n\r\n    return () => handle.close();\r\n  }\r\n\r\n  private _walkVolume(\r\n    dir: string,\r\n    visitor: (path: string, isDirectory: boolean, content: Uint8Array | null) => void,\r\n    excludeDirNames?: Set<string> | null,\r\n  ): void {\r\n    try {\r\n      const entries = this._volume.readdirSync(dir);\r\n      for (const name of entries) {\r\n        const fullPath = dir === \"/\" ? `/${name}` : `${dir}/${name}`;\r\n        if (isInternalVfsPath(fullPath)) continue;\r\n        try {\r\n          const stat = this._volume.statSync(fullPath);\r\n          if (stat.isDirectory()) {\r\n            visitor(fullPath, true, null);\r\n            // record the dir itself but don't descend — worker fetches lazily\r\n            if (excludeDirNames?.has(name)) continue;\r\n            this._walkVolume(fullPath, visitor, excludeDirNames);\r\n          } else {\r\n            const content = this._volume.readFileSync(fullPath);\r\n            visitor(fullPath, false, content);\r\n          }\r\n        } catch (e) {\r\n          console.warn(`[VFSBridge] Failed to stat/read \"${fullPath}\":`, e);\r\n        }\r\n      }\r\n    } catch (e) {\r\n      console.warn(`[VFSBridge] Failed to read directory \"${dir}\":`, e);\r\n    }\r\n  }\r\n}\r\n","// spawns a ScriptEngine in the requested execution mode:\r\n// sandboxUrl → cross-origin iframe, useWorker → Worker thread, otherwise main thread\r\n\r\nimport { ScriptEngine } from './script-engine';\r\nimport { WorkerSandbox } from './worker-sandbox';\r\nimport { IframeSandbox } from './iframe-sandbox';\r\nimport type { MemoryVolume } from './memory-volume';\r\nimport type { IScriptEngine, ExecutionOutcome, SpawnEngineConfig, EngineConfig } from './engine-types';\r\nimport { ProcessManager } from './threading/process-manager';\r\nimport { VFSBridge } from './threading/vfs-bridge';\r\n\r\nfunction canUseWorker(): boolean {\r\n  return typeof Worker !== 'undefined';\r\n}\r\n\r\n// wraps the synchronous ScriptEngine behind the async IScriptEngine interface\r\nclass SyncEngineAdapter implements IScriptEngine {\r\n  private engine: ScriptEngine;\r\n\r\n  constructor(vol: MemoryVolume, cfg: EngineConfig = {}) {\r\n    this.engine = new ScriptEngine(vol, cfg);\r\n  }\r\n\r\n  async execute(code: string, filename?: string): Promise<ExecutionOutcome> {\r\n    return Promise.resolve(this.engine.execute(code, filename));\r\n  }\r\n\r\n  async runFile(filename: string): Promise<ExecutionOutcome> {\r\n    return Promise.resolve(this.engine.runFile(filename));\r\n  }\r\n\r\n  clearCache(): void { this.engine.clearCache(); }\r\n  getVolume(): MemoryVolume { return this.engine.getVolume(); }\r\n\r\n  unwrap(): ScriptEngine { return this.engine; }\r\n}\r\n\r\n// create a script engine in the appropriate execution mode\r\n// throws if neither sandboxUrl nor allowUnsafeEval is specified\r\nexport async function spawnEngine(\r\n  vol: MemoryVolume,\r\n  config: SpawnEngineConfig = {},\r\n): Promise<IScriptEngine> {\r\n  const { sandboxUrl, allowUnsafeEval, useWorker = false, ...engineCfg } = config;\r\n\r\n  if (sandboxUrl) {\r\n    const sandbox = new IframeSandbox(sandboxUrl, vol, engineCfg);\r\n    await sandbox.execute('/* sandbox ready check */', '/__sandbox_init__.js');\r\n    return sandbox;\r\n  }\r\n\r\n  if (!allowUnsafeEval) {\r\n    throw new Error(\r\n      'nodepod: For security, you must either:\\n' +\r\n      '  1. Use sandbox mode: { sandboxUrl: \"https://your-sandbox.example.com\" }\\n' +\r\n      '  2. Explicitly opt-in to same-origin: { allowUnsafeEval: true }\\n\\n' +\r\n      'Same-origin execution allows code to access cookies, localStorage, and IndexedDB.\\n' +\r\n      'Only use allowUnsafeEval for trusted code or demos.'\r\n    );\r\n  }\r\n\r\n  let shouldUseWorker = false;\r\n  if (useWorker === true) {\r\n    shouldUseWorker = canUseWorker();\r\n  } else if (useWorker === 'auto') {\r\n    shouldUseWorker = canUseWorker();\r\n  }\r\n\r\n  if (shouldUseWorker) {\r\n    const worker = new WorkerSandbox(vol, engineCfg);\r\n    await worker.execute('/* worker ready check */', '/__worker_init__.js');\r\n    return worker;\r\n  }\r\n\r\n  return new SyncEngineAdapter(vol, engineCfg);\r\n}\r\n\r\n// ---- Process-worker engine adapter ----\r\n\r\n// wraps ProcessManager-based workers behind IScriptEngine.\r\n// each execute()/runFile() spawns a new worker process.\r\nclass ProcessWorkerAdapter implements IScriptEngine {\r\n  private _vol: MemoryVolume;\r\n  private _processManager: ProcessManager;\r\n  private _vfsBridge: VFSBridge;\r\n  private _cfg: EngineConfig;\r\n\r\n  constructor(vol: MemoryVolume, cfg: EngineConfig = {}) {\r\n    this._vol = vol;\r\n    this._cfg = cfg;\r\n    this._processManager = new ProcessManager(vol);\r\n    this._vfsBridge = new VFSBridge(vol);\r\n    this._processManager.setVFSBridge(this._vfsBridge);\r\n\r\n    this._vfsBridge.setBroadcaster((path, content, excludePid) => {\r\n      const isDirectory = content !== null && content.byteLength === 0;\r\n      this._processManager.broadcastVFSChange(path, content, isDirectory, excludePid);\r\n    });\r\n  }\r\n\r\n  async execute(code: string, filename?: string): Promise<ExecutionOutcome> {\r\n    const tmpFile = filename ?? '/__exec_tmp__.js';\r\n    this._vol.writeFileSync(tmpFile, code as any);\r\n\r\n    const result = await this._runInWorker(tmpFile);\r\n    return result;\r\n  }\r\n\r\n  async runFile(filename: string): Promise<ExecutionOutcome> {\r\n    return this._runInWorker(filename);\r\n  }\r\n\r\n  private async _runInWorker(filePath: string): Promise<ExecutionOutcome> {\r\n    return new Promise<ExecutionOutcome>((resolve) => {\r\n      const handle = this._processManager.spawn({\r\n        command: 'node',\r\n        args: [filePath],\r\n        cwd: this._cfg.cwd ?? '/',\r\n        env: (this._cfg as any).env ?? {},\r\n      });\r\n\r\n      let stdout = '';\r\n      let stderr = '';\r\n\r\n      handle.on('stdout', (data: string) => { stdout += data; });\r\n      handle.on('stderr', (data: string) => { stderr += data; });\r\n\r\n      handle.on('ready', () => {\r\n        handle.exec({\r\n          type: 'exec',\r\n          filePath,\r\n          args: [],\r\n          cwd: this._cfg.cwd,\r\n          env: (this._cfg as any).env,\r\n        });\r\n      });\r\n\r\n      handle.on('exit', (_exitCode: number) => {\r\n        resolve({\r\n          exports: {},\r\n          module: {\r\n            id: filePath,\r\n            filename: filePath,\r\n            exports: {},\r\n            loaded: true,\r\n            children: [],\r\n            paths: [],\r\n          },\r\n        });\r\n      });\r\n    });\r\n  }\r\n\r\n  clearCache(): void { }\r\n  getVolume(): MemoryVolume { return this._vol; }\r\n\r\n  getProcessManager(): ProcessManager { return this._processManager; }\r\n\r\n  teardown(): void {\r\n    this._processManager.teardown();\r\n  }\r\n}\r\n\r\n// create a process-worker engine where each execution runs in a dedicated Web Worker\r\nexport async function spawnProcessWorkerEngine(\r\n  vol: MemoryVolume,\r\n  config: EngineConfig = {},\r\n): Promise<ProcessWorkerAdapter> {\r\n  return new ProcessWorkerAdapter(vol, config);\r\n}\r\n\r\nexport { ScriptEngine } from './script-engine';\r\nexport { WorkerSandbox } from './worker-sandbox';\r\nexport { IframeSandbox } from './iframe-sandbox';\r\nexport { ProcessWorkerAdapter };\r\nexport type { IScriptEngine, ExecutionOutcome, EngineConfig, SpawnEngineConfig, VolumeSnapshot } from './engine-types';\r\n","// helpers for deploying a cross-origin sandbox environment\r\n\r\n// Node.js-only helper. Uses opaque dynamic require so bundlers can't resolve it.\r\nfunction readServiceWorkerSource(): string | null {\r\n  try {\r\n    // invisible to bundlers' static analysis\r\n    const _req = globalThis['require' as keyof typeof globalThis] as typeof require | undefined;\r\n    if (typeof _req !== 'function') return null;\r\n    const fs = _req('fs' + '');\r\n    const path = _req('path' + '');\r\n    let dir: string;\r\n    try {\r\n      const url = _req('url' + '');\r\n      dir = path.dirname(url.fileURLToPath(import.meta.url));\r\n    } catch {\r\n      dir = typeof __dirname !== 'undefined' ? __dirname : '.';\r\n    }\r\n\r\n    let swFile = path.join(dir, '__sw__.js');\r\n    if (fs.existsSync(swFile)) return fs.readFileSync(swFile, 'utf-8');\r\n    swFile = path.join(dir, '../dist/__sw__.js');\r\n    if (fs.existsSync(swFile)) return fs.readFileSync(swFile, 'utf-8');\r\n    return null;\r\n  } catch {\r\n    return null;\r\n  }\r\n}\r\n\r\nimport { DEFAULT_NODEPOD_CDN } from \"./constants/config\";\r\n\r\nexport interface SandboxPageConfig {\r\n  nodepodUrl?: string;\r\n  enableServiceWorker?: boolean;\r\n  /** parent page origin, e.g. 'https://myapp.com'. locks down who can\r\n   *  talk to the sandbox. defaults to '*' for backwards compat */\r\n  parentOrigin?: string;\r\n}\r\n\r\nexport function getSandboxPageHtml(config: SandboxPageConfig | string = {}): string {\r\n  const opts: SandboxPageConfig = typeof config === 'string' ? { nodepodUrl: config } : config;\r\n  const nodepodUrl = opts.nodepodUrl ?? DEFAULT_NODEPOD_CDN;\r\n  const withSW = opts.enableServiceWorker ?? true;\r\n  const parentOriginJs = opts.parentOrigin ? JSON.stringify(opts.parentOrigin) : \"'*'\";\r\n\r\n  const swBlock = withSW ? `\r\n  if ('serviceWorker' in navigator) {\r\n    navigator.serviceWorker.register('/__sw__.js', { scope: '/' })\r\n      .then(() => console.log('[Sandbox] SW registered'))\r\n      .catch(e => console.warn('[Sandbox] SW failed:', e));\r\n  }\r\n` : '';\r\n\r\n  return `<!DOCTYPE html>\r\n<html>\r\n<head><meta charset=\"UTF-8\"><title>Nodepod Sandbox</title></head>\r\n<body>\r\n<script type=\"module\">\r\n  import { MemoryVolume, ScriptEngine } from '${nodepodUrl}';\r\n${swBlock}\r\n  const PARENT_ORIGIN = ${parentOriginJs};\r\n  let volume = null;\r\n  let engine = null;\r\n\r\n  window.addEventListener('message', async (event) => {\r\n    if (PARENT_ORIGIN !== '*' && event.origin !== PARENT_ORIGIN) return;\r\n    const { type, id, code, filename, snapshot, config, path, content } = event.data;\r\n    try {\r\n      switch (type) {\r\n        case 'init':\r\n          volume = MemoryVolume.fromSnapshot(snapshot);\r\n          engine = new ScriptEngine(volume, {\r\n            cwd: config?.cwd,\r\n            env: config?.env,\r\n            onConsole: (method, args) => {\r\n              parent.postMessage({ type: 'console', consoleMethod: method, consoleArgs: args }, PARENT_ORIGIN);\r\n            },\r\n          });\r\n          break;\r\n        case 'syncFile':\r\n          if (volume) {\r\n            if (content === null) { try { volume.unlinkSync(path); } catch {} }\r\n            else { volume.writeFileSync(path, content); }\r\n          }\r\n          break;\r\n        case 'execute':\r\n          if (!engine) { parent.postMessage({ type: 'error', id, error: 'Engine not initialized' }, PARENT_ORIGIN); return; }\r\n          parent.postMessage({ type: 'result', id, result: engine.execute(code, filename) }, PARENT_ORIGIN);\r\n          break;\r\n        case 'runFile':\r\n          if (!engine) { parent.postMessage({ type: 'error', id, error: 'Engine not initialized' }, PARENT_ORIGIN); return; }\r\n          parent.postMessage({ type: 'result', id, result: engine.runFile(filename) }, PARENT_ORIGIN);\r\n          break;\r\n        case 'clearCache':\r\n          if (engine) engine.clearCache();\r\n          break;\r\n      }\r\n    } catch (err) {\r\n      if (id) parent.postMessage({ type: 'error', id, error: err instanceof Error ? err.message : String(err) }, PARENT_ORIGIN);\r\n    }\r\n  });\r\n\r\n  parent.postMessage({ type: 'ready' }, PARENT_ORIGIN);\r\n</script>\r\n</body>\r\n</html>`;\r\n}\r\n\r\n// Vercel config with CORS headers for cross-origin iframe embedding\r\nexport function getSandboxHostingConfig(): object {\r\n  return {\r\n    headers: [{\r\n      source: '/(.*)',\r\n      headers: [\r\n        { key: 'Access-Control-Allow-Origin', value: '*' },\r\n        { key: 'Cross-Origin-Resource-Policy', value: 'cross-origin' },\r\n      ],\r\n    }],\r\n  };\r\n}\r\n\r\nexport interface GeneratedSandboxFiles {\r\n  'index.html': string;\r\n  'vercel.json': string;\r\n  '__sw__.js'?: string;\r\n}\r\n\r\nexport function generateSandboxDeployment(config: SandboxPageConfig | string = {}): GeneratedSandboxFiles {\r\n  const opts: SandboxPageConfig = typeof config === 'string' ? { nodepodUrl: config } : config;\r\n  const withSW = opts.enableServiceWorker ?? true;\r\n  const swSource = withSW ? readServiceWorkerSource() : null;\r\n\r\n  const files: GeneratedSandboxFiles = {\r\n    'index.html': getSandboxPageHtml(opts),\r\n    'vercel.json': JSON.stringify(getSandboxHostingConfig(), null, 2),\r\n  };\r\n\r\n  if (swSource) files['__sw__.js'] = swSource;\r\n  return files;\r\n}\r\n\r\nexport const SANDBOX_DEPLOYMENT_GUIDE = `\r\n# Deploying a Nodepod Sandbox\r\n\r\n## 1. Generate sandbox files\r\n   Use generateSandboxDeployment() to create the required files.\r\n\r\n## 2. Deploy to a hosting provider\r\n   cd sandbox && vercel --prod\r\n\r\n## 3. Use in your app\r\n   const engine = await spawnEngine(volume, {\r\n     sandboxUrl: 'https://your-sandbox.example.com'\r\n   });\r\n`.trim();\r\n","// Registry Client — fetches package metadata, versions, and tarballs from npm.\r\n\r\nexport interface VersionDetail {\r\n  name: string;\r\n  version: string;\r\n  dependencies?: Record<string, string>;\r\n  devDependencies?: Record<string, string>;\r\n  peerDependencies?: Record<string, string>;\r\n  peerDependenciesMeta?: Record<string, { optional?: boolean }>;\r\n  optionalDependencies?: Record<string, string>;\r\n  dist: {\r\n    tarball: string;\r\n    shasum: string;\r\n    integrity?: string;\r\n  };\r\n  main?: string;\r\n  module?: string;\r\n  exports?: Record<string, unknown>;\r\n  bin?: Record<string, string> | string;\r\n}\r\n\r\nexport interface PackageMetadata {\r\n  name: string;\r\n  'dist-tags': {\r\n    latest: string;\r\n    [label: string]: string;\r\n  };\r\n  versions: Record<string, VersionDetail>;\r\n  time?: Record<string, string>;\r\n}\r\n\r\nexport interface RegistryConfig {\r\n  endpoint?: string;\r\n  metadataCache?: Map<string, PackageMetadata>;\r\n}\r\n\r\nimport { NPM_REGISTRY_URL } from \"../constants/config\";\r\n\r\nconst NPM_REGISTRY_BASE = NPM_REGISTRY_URL;\r\n\r\n// @scope/pkg -> @scope%2fpkg\r\nfunction encodeForUrl(pkgName: string): string {\r\n  return pkgName.replace(/\\//g, '%2f');\r\n}\r\n\r\nexport class RegistryClient {\r\n  private baseUrl: string;\r\n  private metadataStore: Map<string, PackageMetadata>;\r\n\r\n  constructor(config: RegistryConfig = {}) {\r\n    this.baseUrl = (config.endpoint || NPM_REGISTRY_BASE).replace(/\\/+$/, '');\r\n    this.metadataStore = config.metadataCache || new Map();\r\n  }\r\n\r\n  // Cached per client instance\r\n  async fetchManifest(name: string): Promise<PackageMetadata> {\r\n    const cached = this.metadataStore.get(name);\r\n    if (cached) {\r\n      return cached;\r\n    }\r\n\r\n    const requestUrl = `${this.baseUrl}/${encodeForUrl(name)}`;\r\n\r\n    const resp = await fetch(requestUrl, {\r\n      headers: {\r\n        Accept:\r\n          'application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8',\r\n      },\r\n    });\r\n\r\n    if (resp.status === 404) {\r\n      throw new Error(`Package \"${name}\" does not exist in the registry`);\r\n    }\r\n    if (!resp.ok) {\r\n      throw new Error(\r\n        `Registry request for \"${name}\" failed with HTTP ${resp.status}`\r\n      );\r\n    }\r\n\r\n    const metadata = (await resp.json()) as PackageMetadata;\r\n    this.metadataStore.set(name, metadata);\r\n\r\n    return metadata;\r\n  }\r\n\r\n  // Resolves dist-tags (e.g. \"latest\", \"next\") to concrete versions\r\n  async fetchVersion(name: string, version: string): Promise<VersionDetail> {\r\n    const metadata = await this.fetchManifest(name);\r\n\r\n    const taggedVersion = metadata['dist-tags'][version];\r\n    const resolvedVersion = taggedVersion || version;\r\n\r\n    const detail = metadata.versions[resolvedVersion];\r\n    if (!detail) {\r\n      throw new Error(\r\n        `Version \"${version}\" does not exist for package \"${name}\"`\r\n      );\r\n    }\r\n\r\n    return detail;\r\n  }\r\n\r\n  async getLatestVersion(name: string): Promise<string> {\r\n    const metadata = await this.fetchManifest(name);\r\n    return metadata['dist-tags'].latest;\r\n  }\r\n\r\n  async listVersions(name: string): Promise<string[]> {\r\n    const metadata = await this.fetchManifest(name);\r\n    return Object.keys(metadata.versions);\r\n  }\r\n\r\n  async getTarballUrl(name: string, version: string): Promise<string> {\r\n    const detail = await this.fetchVersion(name, version);\r\n    return detail.dist.tarball;\r\n  }\r\n\r\n  async downloadArchive(tarballUrl: string): Promise<ArrayBuffer> {\r\n    const resp = await fetch(tarballUrl);\r\n    if (!resp.ok) {\r\n      throw new Error(`Tarball download failed (HTTP ${resp.status}): ${tarballUrl}`);\r\n    }\r\n    return resp.arrayBuffer();\r\n  }\r\n\r\n  flushCache(): void {\r\n    this.metadataStore.clear();\r\n  }\r\n}\r\n\r\nexport default RegistryClient;\r\n","// Version Resolver — semver parsing, range matching, and dependency tree resolution.\r\n\r\nimport { RegistryClient, VersionDetail } from \"./registry-client\";\r\n\r\n// ---------------------------------------------------------------------------\r\n// Public types\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ResolvedDependency {\r\n  name: string;\r\n  version: string;\r\n  tarballUrl: string;\r\n  dependencies: Record<string, string>;\r\n  shasum?: string;\r\n}\r\n\r\nexport interface ResolutionConfig {\r\n  registry?: RegistryClient;\r\n  devDependencies?: boolean;\r\n  optionalDependencies?: boolean;\r\n  onProgress?: (msg: string) => void;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Semver data structures\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface SemverComponents {\r\n  major: number;\r\n  minor: number;\r\n  patch: number;\r\n  prerelease?: string;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Semver parsing and comparison\r\n// ---------------------------------------------------------------------------\r\n\r\nconst SEMVER_PATTERN = /^(\\d+)\\.(\\d+)\\.(\\d+)(?:-(.+))?$/;\r\n\r\n// Returns null for unparseable strings\r\nexport function parseSemver(raw: string): SemverComponents | null {\r\n  const m = raw.match(SEMVER_PATTERN);\r\n  if (!m) return null;\r\n  return {\r\n    major: Number(m[1]),\r\n    minor: Number(m[2]),\r\n    patch: Number(m[3]),\r\n    prerelease: m[4],\r\n  };\r\n}\r\n\r\n// Standard three-way comparison: negative if left < right, 0 if equal, positive if left > right\r\nexport function compareSemver(left: string, right: string): number {\r\n  const a = parseSemver(left);\r\n  const b = parseSemver(right);\r\n\r\n  if (!a || !b) return left.localeCompare(right);\r\n\r\n  const majorDiff = a.major - b.major;\r\n  if (majorDiff !== 0) return majorDiff;\r\n\r\n  const minorDiff = a.minor - b.minor;\r\n  if (minorDiff !== 0) return minorDiff;\r\n\r\n  const patchDiff = a.patch - b.patch;\r\n  if (patchDiff !== 0) return patchDiff;\r\n\r\n  // pre-release has lower precedence than release\r\n  if (a.prerelease && !b.prerelease) return -1;\r\n  if (!a.prerelease && b.prerelease) return 1;\r\n  if (a.prerelease && b.prerelease) {\r\n    return a.prerelease.localeCompare(b.prerelease);\r\n  }\r\n\r\n  return 0;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Range satisfaction\r\n// ---------------------------------------------------------------------------\r\n\r\n// Supports: exact, ^, ~, *, x-ranges, comparators, compound, hyphen, || unions\r\nexport function satisfiesRange(version: string, range: string): boolean {\r\n  const sv = parseSemver(version);\r\n  if (!sv) return false;\r\n\r\n  // pre-release versions only match ranges that explicitly include a prerelease\r\n  // for the SAME major.minor.patch (npm semantics). e.g. 5.0.0-next.0 matches\r\n  // ^5.0.0-beta.0 but NOT >=4.0.0-beta.0 (different major.minor.patch)\r\n  if (sv.prerelease) {\r\n    // Extract the comparator version(s) from the range and check if any\r\n    // share the same major.minor.patch as the candidate\r\n    const rangeVersions = range.match(/\\d+\\.\\d+\\.\\d+(?:-[^\\s)]*)?/g) || [];\r\n    const hasMatchingPrerelease = rangeVersions.some((rv) => {\r\n      if (!rv.includes(\"-\")) return false;\r\n      const rvParsed = parseSemver(rv);\r\n      return (\r\n        rvParsed &&\r\n        rvParsed.major === sv.major &&\r\n        rvParsed.minor === sv.minor &&\r\n        rvParsed.patch === sv.patch\r\n      );\r\n    });\r\n    if (!hasMatchingPrerelease) return false;\r\n  }\r\n\r\n  range = range.trim();\r\n\r\n  if (range === \"*\" || range === \"latest\" || range === \"\") return true;\r\n\r\n  if (range.includes(\"||\")) {\r\n    return range.split(\"||\").some((sub) => satisfiesRange(version, sub.trim()));\r\n  }\r\n\r\n  if (range.includes(\" - \")) {\r\n    const [lo, hi] = range.split(\" - \").map((s) => s.trim());\r\n    return compareSemver(version, lo) >= 0 && compareSemver(version, hi) <= 0;\r\n  }\r\n\r\n  // compound comparators like \">=1.2.0 <3.0.0\"\r\n  const comparatorSegments = range.match(\r\n    /(>=|<=|>|<|=)\\s*(\\d+(?:\\.\\d+)?(?:\\.\\d+)?(?:-[^\\s]*)?)/g,\r\n  );\r\n  if (comparatorSegments && comparatorSegments.length > 1) {\r\n    return comparatorSegments.every((seg) => {\r\n      const parts = seg.match(\r\n        /^(>=|<=|>|<|=)\\s*(\\d+(?:\\.\\d+)?(?:\\.\\d+)?(?:-[^\\s]*)?)$/,\r\n      );\r\n      if (!parts) return true;\r\n      const op = parts[1];\r\n      let target = parts[2];\r\n      // pad partial versions: \"3\" -> \"3.0.0\"\r\n      const dots = (target.match(/\\./g) || []).length;\r\n      if (dots === 0) target += \".0.0\";\r\n      else if (dots === 1) target += \".0\";\r\n      return applyOperator(version, op, target);\r\n    });\r\n  }\r\n\r\n  if (range.startsWith(\"^\")) {\r\n    const base = padVersion(range.slice(1));\r\n    const bv = parseSemver(base);\r\n    if (!bv) return false;\r\n\r\n    if (sv.major !== bv.major) return false;\r\n    if (bv.major === 0) {\r\n      if (bv.minor !== 0 && sv.minor !== bv.minor) return false;\r\n      if (bv.minor === 0 && sv.minor !== 0) return false;\r\n    }\r\n    return compareSemver(version, base) >= 0;\r\n  }\r\n\r\n  if (range.startsWith(\"~\")) {\r\n    const base = padVersion(range.slice(1));\r\n    const bv = parseSemver(base);\r\n    if (!bv) return false;\r\n    return (\r\n      sv.major === bv.major &&\r\n      sv.minor === bv.minor &&\r\n      compareSemver(version, base) >= 0\r\n    );\r\n  }\r\n\r\n  if (range.startsWith(\">=\"))\r\n    return compareSemver(version, padVersion(range.slice(2).trim())) >= 0;\r\n  if (range.startsWith(\">\"))\r\n    return compareSemver(version, padVersion(range.slice(1).trim())) > 0;\r\n  if (range.startsWith(\"<=\"))\r\n    return compareSemver(version, padVersion(range.slice(2).trim())) <= 0;\r\n  if (range.startsWith(\"<\"))\r\n    return compareSemver(version, padVersion(range.slice(1).trim())) < 0;\r\n  if (range.startsWith(\"=\"))\r\n    return compareSemver(version, padVersion(range.slice(1).trim())) === 0;\r\n\r\n  if (\r\n    range.includes(\"x\") ||\r\n    range.includes(\"X\") ||\r\n    /^\\d+$/.test(range) ||\r\n    /^\\d+\\.\\d+$/.test(range)\r\n  ) {\r\n    const segments = range.replace(/[xX]/g, \"\").split(\".\").filter(Boolean);\r\n    if (segments.length === 1) return sv.major === Number(segments[0]);\r\n    if (segments.length === 2) {\r\n      return (\r\n        sv.major === Number(segments[0]) && sv.minor === Number(segments[1])\r\n      );\r\n    }\r\n  }\r\n\r\n  if (range.includes(\" \")) {\r\n    return range\r\n      .split(/\\s+/)\r\n      .filter(Boolean)\r\n      .every((part) => satisfiesRange(version, part));\r\n  }\r\n\r\n  if (/^\\d+\\.\\d+\\.\\d+/.test(range)) {\r\n    const exact = range.match(/^(\\d+\\.\\d+\\.\\d+(?:-[^\\s]+)?)/);\r\n    if (exact) return compareSemver(version, exact[1]) === 0;\r\n  }\r\n\r\n  return compareSemver(version, range) === 0;\r\n}\r\n\r\n// \"3\" -> \"3.0.0\", \"0.10.x\" -> \"0.10.0\"\r\nfunction padVersion(v: string): string {\r\n  const parts = v.replace(/[xX*]/g, \"0\").split(\".\");\r\n  while (parts.length < 3) parts.push(\"0\");\r\n  return parts.join(\".\");\r\n}\r\n\r\nfunction applyOperator(ver: string, op: string, target: string): boolean {\r\n  const cmp = compareSemver(ver, target);\r\n  switch (op) {\r\n    case \">=\":\r\n      return cmp >= 0;\r\n    case \"<=\":\r\n      return cmp <= 0;\r\n    case \">\":\r\n      return cmp > 0;\r\n    case \"<\":\r\n      return cmp < 0;\r\n    default:\r\n      return cmp === 0;\r\n  }\r\n}\r\n\r\n// Pick the highest version satisfying the range, or null\r\nexport function pickBestMatch(\r\n  available: string[],\r\n  range: string,\r\n): string | null {\r\n  const descending = [...available].sort((a, b) => compareSemver(b, a));\r\n  for (const candidate of descending) {\r\n    if (satisfiesRange(candidate, range)) return candidate;\r\n  }\r\n  return null;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// npm alias handling\r\n// ---------------------------------------------------------------------------\r\n\r\n// Parse \"npm:strip-ansi@^6.0.1\" into { realName, realRange }\r\nfunction parseNpmAlias(range: string): { realName: string; realRange: string } | null {\r\n  if (!range.startsWith(\"npm:\")) return null;\r\n  const rest = range.slice(4);\r\n  let atIdx: number;\r\n  if (rest.startsWith(\"@\")) {\r\n    // scoped: find the second @ after the scope\r\n    atIdx = rest.indexOf(\"@\", 1);\r\n  } else {\r\n    atIdx = rest.indexOf(\"@\");\r\n  }\r\n  if (atIdx === -1) {\r\n    return { realName: rest, realRange: \"latest\" };\r\n  }\r\n  return {\r\n    realName: rest.slice(0, atIdx),\r\n    realRange: rest.slice(atIdx + 1),\r\n  };\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Full dependency tree resolution\r\n// ---------------------------------------------------------------------------\r\n\r\n// The resolver produces a map keyed by *placement path* — where a package\r\n// should be materialised relative to the project's node_modules root. For\r\n// hoisted packages the key is just the package name (\"find-up\"). When two\r\n// requirers ask for incompatible versions of the same package, the second\r\n// one is nested under the requirer (\"ember-cli/node_modules/find-up\") so\r\n// Node's resolution walk finds the correct version from each consumer.\r\ninterface TreeWalkState {\r\n  registry: RegistryClient;\r\n  // placementKey → resolved dependency\r\n  completed: Map<string, ResolvedDependency>;\r\n  // Tracks the hoisted (root) version of each package name. Stored as a\r\n  // promise so concurrent walks for the same name all see the same outcome\r\n  // instead of racing to write to `completed`.\r\n  rootPromises: Map<string, Promise<ResolvedDependency>>;\r\n  // Per-placement resolution promises, to dedup concurrent nested installs.\r\n  placementPromises: Map<string, Promise<void>>;\r\n  config: ResolutionConfig;\r\n}\r\n\r\nfunction createState(\r\n  client: RegistryClient,\r\n  config: ResolutionConfig,\r\n): TreeWalkState {\r\n  return {\r\n    registry: client,\r\n    completed: new Map(),\r\n    rootPromises: new Map(),\r\n    placementPromises: new Map(),\r\n    config,\r\n  };\r\n}\r\n\r\nexport async function resolveDependencyTree(\r\n  rootName: string,\r\n  versionRange: string = \"latest\",\r\n  config: ResolutionConfig = {},\r\n): Promise<Map<string, ResolvedDependency>> {\r\n  const client = config.registry || new RegistryClient();\r\n  const state = createState(client, config);\r\n\r\n  await walkDependency(rootName, versionRange, state);\r\n  return state.completed;\r\n}\r\n\r\nexport async function resolveFromManifest(\r\n  manifest: {\r\n    dependencies?: Record<string, string>;\r\n    devDependencies?: Record<string, string>;\r\n  },\r\n  config: ResolutionConfig = {},\r\n): Promise<Map<string, ResolvedDependency>> {\r\n  const client = config.registry || new RegistryClient();\r\n  const state = createState(client, config);\r\n\r\n  const allDeps: Record<string, string> = { ...manifest.dependencies };\r\n  if (config.devDependencies && manifest.devDependencies) {\r\n    Object.assign(allDeps, manifest.devDependencies);\r\n  }\r\n\r\n  const entries = Object.entries(allDeps);\r\n\r\n  // Claim root slots for every direct manifest dep before walking transitive\r\n  // edges or auto-installed peers. Otherwise a plugin's peer range (e.g.\r\n  // @tailwindcss/vite wanting vite@^5||^8) can hoist a newer major before\r\n  // the project's own vite@^5 devDependency is seen.\r\n  for (const [depName, depRange] of entries) {\r\n    await walkDependency(depName, depRange, state, \"\", { walkEdges: false });\r\n  }\r\n\r\n  // Walk transitive and peer edges for each direct manifest dependency.\r\n  for (const [depName] of entries) {\r\n    await walkDependencyEdges(depName, state);\r\n  }\r\n\r\n  return state.completed;\r\n}\r\n\r\n// Recursively resolve a package and its transitive deps.\r\n//\r\n// Placement strategy: hoist to root whenever possible, nest under the\r\n// requiring package when the root already holds an incompatible version.\r\n// This mirrors npm's own algorithm and is what lets packages with\r\n// conflicting version requirements (e.g. ember-cli wants find-up@^8 while\r\n// one of its transitive deps wants find-up@^5) coexist correctly.\r\n//\r\n// `parentPath` is the placement key of the package that pulled this one\r\n// in. Empty string means \"called directly from a manifest\" — at that\r\n// level there is no enclosing package to nest under, so top-level\r\n// conflicts silently reuse the first-chosen version (same as npm warning\r\n// on conflicting peer deps at the top level).\r\nasync function walkDependency(\r\n  pkgName: string,\r\n  versionConstraint: string,\r\n  state: TreeWalkState,\r\n  parentPath: string = \"\",\r\n  options: { walkEdges?: boolean } = {},\r\n): Promise<void> {\r\n  const walkEdges = options.walkEdges !== false;\r\n  const { rootPromises, placementPromises, completed } = state;\r\n\r\n  // npm aliases: fetch the real package but install under the alias name\r\n  const alias = parseNpmAlias(versionConstraint);\r\n  const installName = pkgName;\r\n  const fetchName = alias?.realName ?? pkgName;\r\n  versionConstraint = alias?.realRange ?? versionConstraint;\r\n\r\n  // --- Synchronous decision: claim root or plan a nested install ---\r\n  // This block MUST NOT await — between checking `rootPromises.get` and\r\n  // calling `rootPromises.set` we rely on single-threaded atomicity so\r\n  // the first concurrent walk wins the root slot.\r\n  const existingRootPromise = rootPromises.get(installName);\r\n\r\n  if (!existingRootPromise) {\r\n    // Claim root for this package.\r\n    const placementKey = installName;\r\n    const deferred = createDeferred<ResolvedDependency>();\r\n    rootPromises.set(installName, deferred.promise);\r\n    try {\r\n      const resolved = await installPackageAt(\r\n        placementKey,\r\n        fetchName,\r\n        installName,\r\n        versionConstraint,\r\n        state,\r\n        walkEdges,\r\n      );\r\n      deferred.resolve(resolved);\r\n    } catch (err) {\r\n      deferred.reject(err);\r\n      throw err;\r\n    }\r\n    return;\r\n  }\r\n\r\n  // Someone else owns the root slot. Usually we wait for them, but if\r\n  // this is a cycle (A -> B -> A), the outer walk that claimed root has\r\n  // already set `completed[installName]` before recursing into its edges.\r\n  // Reading it directly avoids deadlocking on its own promise.\r\n  let rootDep: ResolvedDependency;\r\n  const alreadyResolved = completed.get(installName);\r\n  if (alreadyResolved) {\r\n    rootDep = alreadyResolved;\r\n  } else {\r\n    try {\r\n      rootDep = await existingRootPromise;\r\n    } catch {\r\n      // Root resolution failed; nothing we can do at nested level either.\r\n      return;\r\n    }\r\n  }\r\n  if (satisfiesRange(rootDep.version, versionConstraint)) return; // reuse\r\n  if (!parentPath) return; // top-level conflict: first-chosen wins\r\n\r\n  const placementKey = `${parentPath}/node_modules/${installName}`;\r\n\r\n  // Nested install dedup: another sibling may have already claimed this\r\n  // exact placement.\r\n  const existingPlacement = placementPromises.get(placementKey);\r\n  if (existingPlacement) {\r\n    await existingPlacement;\r\n    return;\r\n  }\r\n  if (completed.has(placementKey)) {\r\n    const existing = completed.get(placementKey)!;\r\n    if (satisfiesRange(existing.version, versionConstraint)) return;\r\n    // Conflict at nested level — rare; accept what we have.\r\n    return;\r\n  }\r\n\r\n  const nestedPromise = installPackageAt(\r\n    placementKey,\r\n    fetchName,\r\n    installName,\r\n    versionConstraint,\r\n    state,\r\n  );\r\n  placementPromises.set(\r\n    placementKey,\r\n    nestedPromise.then(() => undefined),\r\n  );\r\n  await nestedPromise;\r\n}\r\n\r\ninterface Deferred<T> {\r\n  promise: Promise<T>;\r\n  resolve: (value: T) => void;\r\n  reject: (err: unknown) => void;\r\n}\r\n\r\nfunction createDeferred<T>(): Deferred<T> {\r\n  // Cast via unknown: the Promise constructor runs the executor synchronously,\r\n  // so resolve/reject are definitely assigned before new Promise() returns,\r\n  // but TS control-flow analysis can't prove that.\r\n  let resolve!: (value: T) => void;\r\n  let reject!: (err: unknown) => void;\r\n  const promise = new Promise<T>((res, rej) => {\r\n    resolve = res;\r\n    reject = rej;\r\n  });\r\n  return { promise, resolve, reject };\r\n}\r\n\r\n// Fetch the manifest for fetchName, choose a version, record the entry at\r\n// placementKey, and optionally walk transitive/peer edges.\r\nasync function installPackageAt(\r\n  placementKey: string,\r\n  fetchName: string,\r\n  installName: string,\r\n  versionConstraint: string,\r\n  state: TreeWalkState,\r\n  walkEdges: boolean = true,\r\n): Promise<ResolvedDependency> {\r\n  const { registry, completed, config } = state;\r\n\r\n  const existing = completed.get(placementKey);\r\n  if (existing) return existing;\r\n\r\n  config.onProgress?.(`Resolving ${fetchName}@${versionConstraint}`);\r\n\r\n  const metadata = await registry.fetchManifest(fetchName);\r\n  const allVersions = Object.keys(metadata.versions);\r\n\r\n  let chosenVersion: string;\r\n  if (versionConstraint === \"latest\" || versionConstraint === \"*\") {\r\n    chosenVersion = metadata[\"dist-tags\"].latest;\r\n  } else if (metadata[\"dist-tags\"][versionConstraint]) {\r\n    chosenVersion = metadata[\"dist-tags\"][versionConstraint];\r\n  } else {\r\n    const best = pickBestMatch(allVersions, versionConstraint);\r\n    if (!best) {\r\n      throw new Error(\r\n        `Could not find a version of \"${fetchName}\" matching \"${versionConstraint}\"`,\r\n      );\r\n    }\r\n    chosenVersion = best;\r\n  }\r\n\r\n  const versionInfo: VersionDetail = metadata.versions[chosenVersion];\r\n\r\n  const resolved: ResolvedDependency = {\r\n    name: installName,\r\n    version: chosenVersion,\r\n    tarballUrl: versionInfo.dist.tarball,\r\n    dependencies: versionInfo.dependencies || {},\r\n    shasum: versionInfo.dist.shasum,\r\n  };\r\n  completed.set(placementKey, resolved);\r\n\r\n  if (walkEdges) {\r\n    await walkEdgesForPackage(placementKey, installName, versionInfo, state);\r\n  }\r\n\r\n  return resolved;\r\n}\r\n\r\nasync function walkDependencyEdges(\r\n  placementKey: string,\r\n  state: TreeWalkState,\r\n): Promise<void> {\r\n  const resolved = state.completed.get(placementKey);\r\n  if (!resolved) return;\r\n\r\n  const metadata = await state.registry.fetchManifest(resolved.name);\r\n  const versionInfo = metadata.versions[resolved.version];\r\n  if (!versionInfo) return;\r\n\r\n  await walkEdgesForPackage(\r\n    placementKey,\r\n    resolved.name,\r\n    versionInfo,\r\n    state,\r\n  );\r\n}\r\n\r\nasync function walkEdgesForPackage(\r\n  placementKey: string,\r\n  installName: string,\r\n  versionInfo: VersionDetail,\r\n  state: TreeWalkState,\r\n): Promise<void> {\r\n  // non-optional peers are included (npm v7+ behaviour)\r\n  const edges: Record<string, string> = {};\r\n\r\n  if (versionInfo.peerDependencies) {\r\n    const peerMeta = versionInfo.peerDependenciesMeta || {};\r\n    for (const [peer, peerRange] of Object.entries(\r\n      versionInfo.peerDependencies,\r\n    )) {\r\n      if (!peerMeta[peer]?.optional) {\r\n        edges[peer] = peerRange;\r\n      }\r\n    }\r\n  }\r\n\r\n  // regular deps take precedence over peers\r\n  if (versionInfo.dependencies) {\r\n    Object.assign(edges, versionInfo.dependencies);\r\n  }\r\n\r\n  if (versionInfo.optionalDependencies) {\r\n    const optEntries = Object.entries(versionInfo.optionalDependencies);\r\n\r\n    if (state.config.optionalDependencies) {\r\n      for (const [optName, optRange] of optEntries) {\r\n        edges[optName] = optRange as string;\r\n      }\r\n    } else {\r\n      // Always include wasm32-wasi optional deps — they're WASM alternatives\r\n      // to native bindings and are the only variant that can run in-browser\r\n      const optNames = Object.keys(versionInfo.optionalDependencies);\r\n      let hasWasmVariant = false;\r\n      for (const [optName, optRange] of Object.entries(versionInfo.optionalDependencies)) {\r\n        if (optName.includes(\"wasm32-wasi\") || optName.includes(\"wasm\")) {\r\n          edges[optName] = optRange as string;\r\n          hasWasmVariant = true;\r\n        }\r\n      }\r\n\r\n      // generic napi-rs detection: if ALL optional deps are platform-specific\r\n      // native bindings (contain OS/arch tags) but no WASM variant exists, try\r\n      // {pkg}-wasm32-wasi and {pkg}-wasm as alternatives. covers packages like\r\n      // lightningcss that ship a separate -wasm package. errors are swallowed\r\n      // since these may not exist on the registry\r\n      if (!hasWasmVariant && optNames.length >= 2) {\r\n        const platformRe = /-(darwin|linux|win32|freebsd|android|sunos)-(x64|x86|arm64|arm|ia32|s390x|ppc64|mips|riscv)/;\r\n        const allPlatform = optNames.every(n => platformRe.test(n));\r\n        if (allPlatform) {\r\n          const wasmAltsToTry = [installName + \"-wasm32-wasi\", installName + \"-wasm\"];\r\n          await Promise.all(wasmAltsToTry.map(async (alt) => {\r\n            try { await walkDependency(alt, \"*\", state, placementKey); } catch { /* package may not exist */ }\r\n          }));\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  const edgeList = Object.entries(edges);\r\n  const PARALLEL_LIMIT = 8;\r\n\r\n  for (let start = 0; start < edgeList.length; start += PARALLEL_LIMIT) {\r\n    const chunk = edgeList.slice(start, start + PARALLEL_LIMIT);\r\n    await Promise.all(\r\n      chunk.map(([childName, childRange]) =>\r\n        walkDependency(childName, childRange, state, placementKey),\r\n      ),\r\n    );\r\n  }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Class facade\r\n// ---------------------------------------------------------------------------\r\n\r\nexport class VersionResolver {\r\n  parse = parseSemver;\r\n  compare = compareSemver;\r\n  satisfies = satisfiesRange;\r\n  pickBest = pickBestMatch;\r\n  resolveTree = resolveDependencyTree;\r\n  resolveManifest = resolveFromManifest;\r\n}\r\n\r\nexport default VersionResolver;\r\n","// creates offload workers from an embedded source string via Blob URL so no separate file needs serving\r\n// speaks Comlink's wire protocol directly so the message listener is synchronous on boot — avoids races with the first init() call\r\n// heavy deps (esbuild, pako) load from CDN lazily\r\n\r\nimport { CDN_ESBUILD_ESM, CDN_ESBUILD_BINARY } from \"../constants/cdn-urls\";\r\nimport { CDN_PAKO } from \"../constants/config\";\r\n\r\nconst WORKER_SOURCE = /* js */ `\r\n\"use strict\";\r\n\r\n// CDN URLs injected at build time\r\nconst ESBUILD_ESM_URL = \"${CDN_ESBUILD_ESM}\";\r\nconst ESBUILD_WASM_URL = \"${CDN_ESBUILD_BINARY}\";\r\nconst PAKO_URL = \"${CDN_PAKO}\";\r\n\r\nconst cdnImport = new Function(\"url\", \"return import(url)\");\r\n\r\nlet esbuildEngine = null;\r\nlet pakoModule = null;\r\nlet _initialized = false;\r\n\r\n// minimal Comlink-compatible expose() — implements the wire protocol that comlink.wrap() speaks on the main thread\r\nfunction miniExpose(obj) {\r\n  self.addEventListener(\"message\", function handler(ev) {\r\n    if (!ev || !ev.data || !ev.data.id) return;\r\n    const { id, type, path } = { path: [], ...ev.data };\r\n\r\n    const args = (ev.data.argumentList || []).map(function(a) {\r\n      return (a && a.type === \"RAW\") ? a.value : a;\r\n    });\r\n\r\n    let returnValue;\r\n    try {\r\n      const parent = path.length > 1\r\n        ? path.slice(0, -1).reduce(function(o, p) { return o[p]; }, obj)\r\n        : obj;\r\n      const target = path.reduce(function(o, p) { return o[p]; }, obj);\r\n\r\n      switch (type) {\r\n        case \"GET\":\r\n          returnValue = target;\r\n          break;\r\n        case \"SET\":\r\n          parent[path[path.length - 1]] = (ev.data.value && ev.data.value.type === \"RAW\")\r\n            ? ev.data.value.value\r\n            : ev.data.value;\r\n          returnValue = true;\r\n          break;\r\n        case \"APPLY\":\r\n          returnValue = target.apply(parent, args);\r\n          break;\r\n        case \"CONSTRUCT\":\r\n          returnValue = new target(...args);\r\n          break;\r\n        case \"RELEASE\":\r\n          returnValue = undefined;\r\n          break;\r\n        default:\r\n          return;\r\n      }\r\n    } catch (err) {\r\n      self.postMessage({\r\n        id: id,\r\n        type: \"HANDLER\",\r\n        name: \"throw\",\r\n        value: {\r\n          isError: true,\r\n          value: { message: (err && err.message) || String(err), name: (err && err.name) || \"Error\", stack: (err && err.stack) || \"\" }\r\n        }\r\n      });\r\n      return;\r\n    }\r\n\r\n    Promise.resolve(returnValue)\r\n      .then(function(result) {\r\n        self.postMessage({ id: id, type: \"RAW\", value: result });\r\n      })\r\n      .catch(function(err) {\r\n        self.postMessage({\r\n          id: id,\r\n          type: \"HANDLER\",\r\n          name: \"throw\",\r\n          value: {\r\n            isError: true,\r\n            value: { message: (err && err.message) || String(err), name: (err && err.name) || \"Error\", stack: (err && err.stack) || \"\" }\r\n          }\r\n        });\r\n      });\r\n  });\r\n}\r\n\r\nconst SEGMENT_SIZE = 8192;\r\n\r\nfunction uint8ToBase64(data) {\r\n  const segments = [];\r\n  for (let offset = 0; offset < data.length; offset += SEGMENT_SIZE) {\r\n    segments.push(\r\n      String.fromCharCode.apply(\r\n        null,\r\n        Array.from(data.subarray(offset, offset + SEGMENT_SIZE))\r\n      )\r\n    );\r\n  }\r\n  return btoa(segments.join(\"\"));\r\n}\r\n\r\nfunction readNullTerminated(buf, start, len) {\r\n  // TextDecoder rejects SharedArrayBuffer-backed views, copy first\r\n  const section = buf.subarray(start, start + len);\r\n  const zeroPos = section.indexOf(0);\r\n  const effLen = zeroPos >= 0 ? zeroPos : section.byteLength;\r\n  const copy = new Uint8Array(effLen);\r\n  copy.set(section.subarray(0, effLen));\r\n  return new TextDecoder().decode(copy);\r\n}\r\n\r\nfunction readOctalField(buf, start, len) {\r\n  const raw = readNullTerminated(buf, start, len).trim();\r\n  return parseInt(raw, 8) || 0;\r\n}\r\n\r\nfunction classifyTypeFlag(flag) {\r\n  switch (flag) {\r\n    case \"0\": case \"\\\\0\": case \"\": return \"file\";\r\n    case \"5\": return \"directory\";\r\n    case \"1\": case \"2\": return \"link\";\r\n    default: return \"other\";\r\n  }\r\n}\r\n\r\nfunction* parseTar(raw) {\r\n  const BLOCK = 512;\r\n  let cursor = 0;\r\n  while (cursor + BLOCK <= raw.length) {\r\n    const header = raw.slice(cursor, cursor + BLOCK);\r\n    cursor += BLOCK;\r\n    if (header.every(function(b) { return b === 0; })) break;\r\n    const nameField = readNullTerminated(header, 0, 100);\r\n    if (!nameField) continue;\r\n    const byteSize = readOctalField(header, 124, 12);\r\n    const typeChar = String.fromCharCode(header[156]);\r\n    const prefixField = readNullTerminated(header, 345, 155);\r\n    const filepath = prefixField ? prefixField + \"/\" + nameField : nameField;\r\n    const kind = classifyTypeFlag(typeChar);\r\n    let payload;\r\n    if (kind === \"file\") {\r\n      payload = byteSize > 0 ? raw.slice(cursor, cursor + byteSize) : new Uint8Array(0);\r\n      if (byteSize > 0) cursor += Math.ceil(byteSize / BLOCK) * BLOCK;\r\n    }\r\n    yield { filepath: filepath, kind: kind, byteSize: byteSize, payload: payload };\r\n  }\r\n}\r\n\r\nfunction detectJsx(source) {\r\n  if (/<[A-Z][a-zA-Z0-9.]*[\\\\s/>]/.test(source)) return true;\r\n  if (/<\\\\/[a-zA-Z]/.test(source)) return true;\r\n  if (/\\\\/>/.test(source)) return true;\r\n  if (/<>|<\\\\/>/.test(source)) return true;\r\n  if (/React\\\\.createElement\\\\b/.test(source)) return true;\r\n  if (/jsx\\\\(|jsxs\\\\(|jsxDEV\\\\(/.test(source)) return true;\r\n  return false;\r\n}\r\n\r\nconst DEFAULT_DEFINE = {\r\n  \"import.meta.url\": \"import_meta.url\",\r\n  \"import.meta.dirname\": \"import_meta.dirname\",\r\n  \"import.meta.filename\": \"import_meta.filename\",\r\n  \"import.meta\": \"import_meta\",\r\n};\r\n\r\n// esbuild (~10MB) loads lazily on the first transform/build task — warm-up\r\n// only pulls pako, which every extract task needs. With lazy install\r\n// transforms most pool workers never fetch esbuild at all.\r\nlet _esbuildInitPromise = null;\r\n\r\nfunction ensureEsbuild() {\r\n  if (esbuildEngine) return Promise.resolve();\r\n  if (_esbuildInitPromise) return _esbuildInitPromise;\r\n  _esbuildInitPromise = (async function () {\r\n    const esbuildMod = await cdnImport(ESBUILD_ESM_URL);\r\n    const engine = esbuildMod.default || esbuildMod;\r\n    try {\r\n      await engine.initialize({ wasmURL: ESBUILD_WASM_URL });\r\n    } catch (err) {\r\n      if (!(err instanceof Error && err.message.includes('Cannot call \"initialize\" more than once'))) {\r\n        throw err;\r\n      }\r\n    }\r\n    esbuildEngine = engine;\r\n  })();\r\n  _esbuildInitPromise.catch(function () { _esbuildInitPromise = null; });\r\n  return _esbuildInitPromise;\r\n}\r\n\r\nconst endpoint = {\r\n  async init() {\r\n    if (_initialized) return;\r\n\r\n    const pakoMod = await cdnImport(PAKO_URL);\r\n    pakoModule = pakoMod.default || pakoMod;\r\n\r\n    _initialized = true;\r\n  },\r\n\r\n  async transform(task) {\r\n    await ensureEsbuild();\r\n    if (!esbuildEngine) throw new Error(\"Worker not initialized\");\r\n\r\n    const opts = task.options || {};\r\n    let loader = opts.loader || \"js\";\r\n    const format = opts.format || \"cjs\";\r\n    const define = opts.define || DEFAULT_DEFINE;\r\n\r\n    if (loader === \"js\" && detectJsx(task.source)) loader = \"jsx\";\r\n\r\n    const transformOpts = {\r\n      loader: loader,\r\n      format: format,\r\n      target: opts.target || \"esnext\",\r\n      platform: opts.platform || \"neutral\",\r\n      define: define,\r\n    };\r\n\r\n    try {\r\n      const output = await esbuildEngine.transform(task.source, transformOpts);\r\n      return {\r\n        type: \"transform\",\r\n        id: task.id,\r\n        code: output.code,\r\n        warnings: (output.warnings || []).map(function(w) { return w.text || String(w); }),\r\n      };\r\n    } catch (err) {\r\n      const fallbacks = loader === \"js\" ? [\"jsx\", \"tsx\", \"ts\"] : loader === \"jsx\" ? [\"tsx\"] : [];\r\n      for (let i = 0; i < fallbacks.length; i++) {\r\n        try {\r\n          const output = await esbuildEngine.transform(task.source, Object.assign({}, transformOpts, { loader: fallbacks[i] }));\r\n          return { type: \"transform\", id: task.id, code: output.code, warnings: [] };\r\n        } catch (e) { /* try next */ }\r\n      }\r\n      if (err && err.message && err.message.includes(\"Top-level await\")) {\r\n        try {\r\n          const output = await esbuildEngine.transform(task.source, Object.assign({}, transformOpts, { format: \"esm\" }));\r\n          return { type: \"transform\", id: task.id, code: output.code, warnings: [] };\r\n        } catch (e) { /* fall through */ }\r\n      }\r\n      return { type: \"transform\", id: task.id, code: task.source, warnings: [(err && err.message) || \"transform failed\"] };\r\n    }\r\n  },\r\n\r\n  async extract(task) {\r\n    if (!pakoModule) throw new Error(\"Worker not initialized\");\r\n\r\n    // main thread passes cached tarball bytes on warm runs — skip the fetch\r\n    let compressed;\r\n    if (task.tarballBytes && task.tarballBytes.byteLength > 0) {\r\n      compressed = new Uint8Array(task.tarballBytes);\r\n    } else {\r\n      const response = await fetch(task.tarballUrl);\r\n      if (!response.ok) {\r\n        throw new Error(\"Archive download failed (HTTP \" + response.status + \"): \" + task.tarballUrl);\r\n      }\r\n      compressed = new Uint8Array(await response.arrayBuffer());\r\n    }\r\n    const tarBytes = pakoModule.inflate(compressed);\r\n\r\n    const files = [];\r\n    for (const entry of parseTar(tarBytes)) {\r\n      if (entry.kind !== \"file\" && entry.kind !== \"directory\") continue;\r\n      let relative = entry.filepath;\r\n      if (task.stripComponents > 0) {\r\n        const segments = relative.split(\"/\").filter(Boolean);\r\n        if (segments.length <= task.stripComponents) continue;\r\n        relative = segments.slice(task.stripComponents).join(\"/\");\r\n      }\r\n      if (entry.kind === \"file\" && entry.payload) {\r\n        let data;\r\n        let isBinary = false;\r\n        try {\r\n          // TextDecoder rejects SAB-backed views\r\n          const payload = entry.payload;\r\n          const decodable = (typeof SharedArrayBuffer !== \"undefined\" && payload.buffer instanceof SharedArrayBuffer)\r\n            ? (function () { const c = new Uint8Array(payload.byteLength); c.set(payload); return c; })()\r\n            : payload;\r\n          data = new TextDecoder(\"utf-8\", { fatal: true }).decode(decodable);\r\n        } catch (e) {\r\n          data = uint8ToBase64(entry.payload);\r\n          isBinary = true;\r\n        }\r\n        files.push({ path: relative, data: data, isBinary: isBinary });\r\n      }\r\n    }\r\n\r\n    const result = { type: \"extract\", id: task.id, files: files };\r\n    // hand the compressed bytes back so main can persist them (tarball cache)\r\n    if (task.wantTarball) {\r\n      result.tarballBytes = compressed.buffer.byteLength === compressed.byteLength\r\n        ? compressed.buffer\r\n        : compressed.slice().buffer;\r\n    }\r\n    return result;\r\n  },\r\n\r\n  async build(task) {\r\n    await ensureEsbuild();\r\n    if (!esbuildEngine) throw new Error(\"Worker not initialized\");\r\n\r\n    const fileMap = new Map();\r\n    const entries = Object.entries(task.files);\r\n    for (let i = 0; i < entries.length; i++) {\r\n      fileMap.set(entries[i][0], entries[i][1]);\r\n    }\r\n\r\n    const volumePlugin = {\r\n      name: \"offload-volume\",\r\n      setup: function(build) {\r\n        build.onLoad({ filter: /.*/ }, function(args) {\r\n          const content = fileMap.get(args.path);\r\n          if (content === undefined) return null;\r\n          const ext = args.path.substring(args.path.lastIndexOf(\".\"));\r\n          const loaderMap = { \".ts\": \"ts\", \".tsx\": \"tsx\", \".js\": \"js\", \".mjs\": \"js\", \".cjs\": \"js\", \".jsx\": \"jsx\", \".json\": \"json\", \".css\": \"css\" };\r\n          return { contents: content, loader: loaderMap[ext] || undefined };\r\n        });\r\n      },\r\n    };\r\n\r\n    try {\r\n      const result = await esbuildEngine.build({\r\n        entryPoints: task.entryPoints,\r\n        stdin: task.stdin,\r\n        bundle: task.bundle !== false,\r\n        format: task.format || \"esm\",\r\n        platform: task.platform || \"browser\",\r\n        target: task.target || \"esnext\",\r\n        minify: !!task.minify,\r\n        external: task.external,\r\n        write: false,\r\n        plugins: [volumePlugin],\r\n        absWorkingDir: task.absWorkingDir || \"/\",\r\n      });\r\n\r\n      return {\r\n        type: \"build\",\r\n        id: task.id,\r\n        outputFiles: (result.outputFiles || []).map(function(f) {\r\n          let text = f.text;\r\n          if (!text && f.contents) {\r\n            const c = f.contents;\r\n            const decodable = (typeof SharedArrayBuffer !== \"undefined\" && c.buffer instanceof SharedArrayBuffer)\r\n              ? (function () { const copy = new Uint8Array(c.byteLength); copy.set(c); return copy; })()\r\n              : c;\r\n            text = new TextDecoder().decode(decodable);\r\n          }\r\n          return { path: f.path, text: text };\r\n        }),\r\n        errors: (result.errors || []).map(function(e) { return e.text || String(e); }),\r\n        warnings: (result.warnings || []).map(function(w) { return w.text || String(w); }),\r\n      };\r\n    } catch (err) {\r\n      return {\r\n        type: \"build\",\r\n        id: task.id,\r\n        outputFiles: [],\r\n        errors: [(err && err.message) || \"build failed\"],\r\n        warnings: [],\r\n      };\r\n    }\r\n  },\r\n\r\n  ping: function() {\r\n    return true;\r\n  },\r\n};\r\n\r\nminiExpose(endpoint);\r\n`;\r\n\r\nlet cachedBlobUrl: string | null = null;\r\n\r\n// blob URL is cached and reused across workers\r\nexport function createInlineWorker(): Worker | null {\r\n  try {\r\n    if (!cachedBlobUrl) {\r\n      const blob = new Blob([WORKER_SOURCE], { type: \"application/javascript\" });\r\n      cachedBlobUrl = URL.createObjectURL(blob);\r\n    }\r\n    return new Worker(cachedBlobUrl);\r\n  } catch {\r\n    return null;\r\n  }\r\n}\r\n\r\n// call when the pool is permanently disposed\r\nexport function revokeInlineWorkerUrl(): void {\r\n  if (cachedBlobUrl) {\r\n    URL.revokeObjectURL(cachedBlobUrl);\r\n    cachedBlobUrl = null;\r\n  }\r\n}\r\n","// WorkerPool — on-demand Web Worker pool for offload tasks.\r\n// Workers are pre-warmed, reused, and reaped after idle timeout.\r\n// If Worker creation fails (CSP, etc.), acquire() throws so the caller can fall back.\r\n\r\nimport { wrap, type Remote } from \"comlink\";\r\nimport type { OffloadWorkerEndpoint, PoolConfig } from \"./offload-types\";\r\nimport { createInlineWorker, revokeInlineWorkerUrl } from \"./inline-worker\";\r\nimport { TIMEOUTS, LIMITS } from \"../constants/config\";\r\n\r\n// --- Internal types ---\r\n\r\ninterface PooledWorker {\r\n  thread: Worker;\r\n  endpoint: Remote<OffloadWorkerEndpoint>;\r\n  busy: boolean;\r\n  initialized: boolean;\r\n  initPromise: Promise<void> | null;\r\n  lastUsed: number;\r\n  id: number;\r\n}\r\n\r\ninterface WaitEntry {\r\n  resolve: (result: { worker: PooledWorker; release: () => void }) => void;\r\n  reject: (err: Error) => void;\r\n}\r\n\r\n// --- WorkerPool ---\r\n\r\nexport class WorkerPool {\r\n  private workers: PooledWorker[] = [];\r\n  private waitQueue: WaitEntry[] = [];\r\n  private nextId = 0;\r\n  private config: Required<PoolConfig>;\r\n  private idleTimer: ReturnType<typeof setInterval> | null = null;\r\n  private disposed = false;\r\n\r\n  broken = false;\r\n\r\n  constructor(config: PoolConfig = {}) {\r\n    const cores =\r\n      typeof navigator !== \"undefined\"\r\n        ? navigator.hardwareConcurrency || 4\r\n        : 4;\r\n\r\n    this.config = {\r\n      minWorkers: config.minWorkers ?? 1,\r\n      maxWorkers: config.maxWorkers ?? Math.min(cores, LIMITS.MAX_WORKERS_CAP),\r\n      idleTimeoutMs: config.idleTimeoutMs ?? TIMEOUTS.WORKER_IDLE_TIMEOUT,\r\n      warmUpOnCreate: config.warmUpOnCreate ?? true,\r\n    };\r\n\r\n    this.idleTimer = setInterval(() => this.reapIdle(), TIMEOUTS.WORKER_REAP_INTERVAL);\r\n  }\r\n\r\n  // --- Public API ---\r\n\r\n  // Returns a worker + release callback. Caller MUST call release() when done.\r\n  async acquire(): Promise<{ worker: PooledWorker; release: () => void }> {\r\n    if (this.disposed) throw new Error(\"WorkerPool is disposed\");\r\n    if (this.broken) throw new Error(\"WorkerPool is broken — Workers unavailable\");\r\n\r\n    // Try idle initialized worker first\r\n    const idle = this.workers.find((w) => !w.busy && w.initialized);\r\n    if (idle) {\r\n      idle.busy = true;\r\n      idle.lastUsed = Date.now();\r\n      return { worker: idle, release: () => this.release(idle) };\r\n    }\r\n\r\n    // Create new worker if under capacity\r\n    if (this.workers.length < this.config.maxWorkers) {\r\n      const pooled = this.tryCreateWorker();\r\n      if (!pooled) {\r\n        // Construction failed — mark pool as broken\r\n        this.broken = true;\r\n        this.rejectAllWaiters();\r\n        throw new Error(\"WorkerPool is broken — Worker construction failed\");\r\n      }\r\n\r\n      pooled.busy = true;\r\n\r\n      // Wait for init to finish\r\n      if (!pooled.initialized && pooled.initPromise) {\r\n        try {\r\n          await pooled.initPromise;\r\n        } catch (err) {\r\n          // Init failed — mark pool as broken\r\n          this.terminateWorker(pooled);\r\n          this.broken = true;\r\n          this.rejectAllWaiters();\r\n          throw new Error(\r\n            `WorkerPool is broken — Worker init failed: ${err instanceof Error ? err.message : err}`,\r\n          );\r\n        }\r\n      }\r\n\r\n      pooled.lastUsed = Date.now();\r\n      return { worker: pooled, release: () => this.release(pooled) };\r\n    }\r\n\r\n    // At capacity — wait for a worker to become free\r\n    return new Promise<{ worker: PooledWorker; release: () => void }>(\r\n      (resolve, reject) => {\r\n        this.waitQueue.push({ resolve, reject });\r\n      },\r\n    );\r\n  }\r\n\r\n  dispose(): void {\r\n    this.disposed = true;\r\n    if (this.idleTimer) {\r\n      clearInterval(this.idleTimer);\r\n      this.idleTimer = null;\r\n    }\r\n    for (const w of [...this.workers]) {\r\n      this.terminateWorker(w);\r\n    }\r\n    this.rejectAllWaiters();\r\n    revokeInlineWorkerUrl();\r\n  }\r\n\r\n  stats(): {\r\n    total: number;\r\n    busy: number;\r\n    idle: number;\r\n    initialized: number;\r\n  } {\r\n    return {\r\n      total: this.workers.length,\r\n      busy: this.workers.filter((w) => w.busy).length,\r\n      idle: this.workers.filter((w) => !w.busy).length,\r\n      initialized: this.workers.filter((w) => w.initialized).length,\r\n    };\r\n  }\r\n\r\n  // --- Internal ---\r\n\r\n  private rejectAllWaiters(): void {\r\n    for (const entry of this.waitQueue) {\r\n      entry.reject(new Error(\"WorkerPool is no longer available\"));\r\n    }\r\n    this.waitQueue.length = 0;\r\n  }\r\n\r\n  private release(pooled: PooledWorker): void {\r\n    pooled.busy = false;\r\n    pooled.lastUsed = Date.now();\r\n\r\n    // Wake up anyone waiting for a worker\r\n    if (this.waitQueue.length > 0) {\r\n      const entry = this.waitQueue.shift()!;\r\n      pooled.busy = true;\r\n      pooled.lastUsed = Date.now();\r\n      entry.resolve({ worker: pooled, release: () => this.release(pooled) });\r\n    }\r\n  }\r\n\r\n  // Returns null if Worker construction fails (CSP, etc.)\r\n  private tryCreateWorker(): PooledWorker | null {\r\n    const thread = createInlineWorker();\r\n    if (!thread) return null;\r\n\r\n    try {\r\n      const endpoint = wrap<OffloadWorkerEndpoint>(thread);\r\n      const id = this.nextId++;\r\n\r\n      const pooled: PooledWorker = {\r\n        thread,\r\n        endpoint,\r\n        busy: false,\r\n        initialized: false,\r\n        initPromise: null,\r\n        lastUsed: Date.now(),\r\n        id,\r\n      };\r\n\r\n      // Pre-warm pako only (esbuild loads lazily on the first transform/build\r\n      // task). Timeout prevents stalled CDN from hanging.\r\n      if (this.config.warmUpOnCreate) {\r\n        const INIT_TIMEOUT = TIMEOUTS.WORKER_INIT_TIMEOUT;\r\n        const initCall = endpoint.init();\r\n        const timeout = new Promise<never>((_, reject) =>\r\n          setTimeout(() => reject(new Error(\"Worker init timed out\")), INIT_TIMEOUT),\r\n        );\r\n        pooled.initPromise = Promise.race([initCall, timeout])\r\n          .then(() => {\r\n            pooled.initialized = true;\r\n            pooled.initPromise = null;\r\n          })\r\n          .catch((err) => {\r\n            this.terminateWorker(pooled);\r\n            throw err; // propagate so acquire() can catch it\r\n          });\r\n      }\r\n\r\n      this.workers.push(pooled);\r\n      return pooled;\r\n    } catch {\r\n      try { thread.terminate(); } catch { /* ignore */ }\r\n      return null;\r\n    }\r\n  }\r\n\r\n  private reapIdle(): void {\r\n    const now = Date.now();\r\n    const candidates = this.workers.filter(\r\n      (w) =>\r\n        !w.busy &&\r\n        w.initialized &&\r\n        now - w.lastUsed > this.config.idleTimeoutMs,\r\n    );\r\n\r\n    // Keep at least minWorkers\r\n    const canRemove = Math.max(\r\n      0,\r\n      this.workers.length - this.config.minWorkers,\r\n    );\r\n    const toRemove = candidates.slice(0, canRemove);\r\n\r\n    for (const w of toRemove) {\r\n      this.terminateWorker(w);\r\n    }\r\n  }\r\n\r\n  private terminateWorker(pooled: PooledWorker): void {\r\n    const idx = this.workers.indexOf(pooled);\r\n    if (idx >= 0) this.workers.splice(idx, 1);\r\n    try {\r\n      pooled.thread.terminate();\r\n    } catch {\r\n      /* ignore */\r\n    }\r\n  }\r\n}\r\n","// TaskQueue — priority-sorted queue that dispatches tasks to the WorkerPool.\r\n\r\nimport type { WorkerPool } from \"./worker-pool\";\r\nimport type {\r\n  OffloadTask,\r\n  OffloadResult,\r\n  TransformTask,\r\n  TransformResult,\r\n  ExtractTask,\r\n  ExtractResult,\r\n  BuildTask,\r\n  BuildResult,\r\n} from \"./offload-types\";\r\n\r\n// --- Internal types ---\r\n\r\ninterface QueuedTask {\r\n  task: OffloadTask;\r\n  resolve: (result: any) => void;\r\n  reject: (error: Error) => void;\r\n  cancelled: boolean;\r\n}\r\n\r\n// --- TaskQueue ---\r\n\r\nexport class TaskQueue {\r\n  private queue: QueuedTask[] = [];\r\n  private pool: WorkerPool;\r\n  private dispatching = false;\r\n\r\n  constructor(pool: WorkerPool) {\r\n    this.pool = pool;\r\n  }\r\n\r\n  // --- Public API ---\r\n\r\n  submit<T extends OffloadTask>(\r\n    task: T,\r\n  ): Promise<\r\n    T extends TransformTask\r\n      ? TransformResult\r\n      : T extends ExtractTask\r\n        ? ExtractResult\r\n        : T extends BuildTask\r\n          ? BuildResult\r\n          : OffloadResult\r\n  > {\r\n    return new Promise((resolve, reject) => {\r\n      const queued: QueuedTask = {\r\n        task,\r\n        resolve,\r\n        reject,\r\n        cancelled: false,\r\n      };\r\n\r\n      // Lower number = higher priority\r\n      const idx = this.queue.findIndex(\r\n        (q) => q.task.priority > task.priority,\r\n      );\r\n      if (idx === -1) {\r\n        this.queue.push(queued);\r\n      } else {\r\n        this.queue.splice(idx, 0, queued);\r\n      }\r\n\r\n      this.dispatch();\r\n    });\r\n  }\r\n\r\n  submitBatch(tasks: OffloadTask[]): Promise<OffloadResult[]> {\r\n    return Promise.all(tasks.map((t) => this.submit(t)));\r\n  }\r\n\r\n  cancel(taskId: string): boolean {\r\n    const idx = this.queue.findIndex(\r\n      (q) => q.task.id === taskId && !q.cancelled,\r\n    );\r\n    if (idx >= 0) {\r\n      const queued = this.queue[idx];\r\n      queued.cancelled = true;\r\n      queued.reject(new Error(`Task ${taskId} cancelled`));\r\n      this.queue.splice(idx, 1);\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  get pending(): number {\r\n    return this.queue.length;\r\n  }\r\n\r\n  // --- Internal ---\r\n\r\n  private async dispatch(): Promise<void> {\r\n    if (this.dispatching) return;\r\n    this.dispatching = true;\r\n\r\n    try {\r\n      while (this.queue.length > 0) {\r\n        const queued = this.queue.shift()!;\r\n        if (queued.cancelled) continue;\r\n\r\n        let worker: any;\r\n        let release: (() => void) | undefined;\r\n        try {\r\n          const acquired = await this.pool.acquire();\r\n          worker = acquired.worker;\r\n          release = acquired.release;\r\n        } catch (err) {\r\n          // Pool broken — reject everything so offload() can fall back to main thread\r\n          const reason =\r\n            err instanceof Error ? err : new Error(String(err));\r\n          queued.reject(reason);\r\n          this.rejectAll(reason);\r\n          return;\r\n        }\r\n\r\n        // Don't block the dispatch loop — fire and re-trigger on completion\r\n        this.executeTask(worker.endpoint, queued).finally(() => {\r\n          release!();\r\n          // More tasks may have arrived while we were busy\r\n          if (this.queue.length > 0) {\r\n            this.dispatching = false;\r\n            this.dispatch();\r\n          }\r\n        });\r\n      }\r\n    } finally {\r\n      this.dispatching = false;\r\n    }\r\n  }\r\n\r\n  private rejectAll(reason: Error): void {\r\n    const pending = this.queue.splice(0);\r\n    for (const q of pending) {\r\n      if (!q.cancelled) {\r\n        q.reject(reason);\r\n      }\r\n    }\r\n  }\r\n\r\n  private async executeTask(\r\n    endpoint: any,\r\n    queued: QueuedTask,\r\n  ): Promise<void> {\r\n    if (queued.cancelled) return;\r\n\r\n    try {\r\n      let result: OffloadResult;\r\n      switch (queued.task.type) {\r\n        case \"transform\":\r\n          result = await endpoint.transform(queued.task);\r\n          break;\r\n        case \"extract\":\r\n          result = await endpoint.extract(queued.task);\r\n          break;\r\n        case \"build\":\r\n          result = await endpoint.build(queued.task);\r\n          break;\r\n        default:\r\n          throw new Error(\r\n            `Unknown task type: ${(queued.task as any).type}`,\r\n          );\r\n      }\r\n\r\n      if (!queued.cancelled) {\r\n        queued.resolve(result);\r\n      }\r\n    } catch (err) {\r\n      if (!queued.cancelled) {\r\n        queued.reject(\r\n          err instanceof Error ? err : new Error(String(err)),\r\n        );\r\n      }\r\n    }\r\n  }\r\n}\r\n","// types for the worker offloading system — all must be structured-clone safe (postMessage)\r\n\r\nexport enum TaskPriority {\r\n  HIGH = 0,    // runtime transforms (user waiting)\r\n  NORMAL = 1,  // install-time bulk transforms\r\n  LOW = 2,     // background pre-bundling\r\n}\r\n\r\nexport interface TransformTask {\r\n  type: \"transform\";\r\n  id: string;\r\n  source: string;\r\n  filePath: string;\r\n  options?: {\r\n    loader?: \"js\" | \"jsx\" | \"ts\" | \"tsx\";\r\n    format?: \"cjs\" | \"esm\";\r\n    target?: string;\r\n    platform?: string;\r\n    define?: Record<string, string>;\r\n  };\r\n  priority: TaskPriority;\r\n}\r\n\r\nexport interface TransformResult {\r\n  type: \"transform\";\r\n  id: string;\r\n  code: string;\r\n  warnings: string[];\r\n}\r\n\r\nexport interface ExtractTask {\r\n  type: \"extract\";\r\n  id: string;\r\n  tarballUrl: string;\r\n  stripComponents: number;\r\n  priority: TaskPriority;\r\n  expectedShasum?: string;\r\n  // cached compressed tarball bytes — worker skips its fetch when provided\r\n  tarballBytes?: ArrayBuffer;\r\n  // ask the worker to return the compressed bytes so main can cache them\r\n  wantTarball?: boolean;\r\n}\r\n\r\nexport interface ExtractedFile {\r\n  path: string;\r\n  // UTF-8 text, base64-encoded binary, or raw Uint8Array for large binaries\r\n  data: string | Uint8Array;\r\n  isBinary: boolean;\r\n}\r\n\r\nexport interface ExtractResult {\r\n  type: \"extract\";\r\n  id: string;\r\n  files: ExtractedFile[];\r\n  // compressed tarball bytes, present when the task set wantTarball\r\n  tarballBytes?: ArrayBuffer;\r\n}\r\n\r\nexport interface BuildTask {\r\n  type: \"build\";\r\n  id: string;\r\n  files: Record<string, string>;\r\n  entryPoints?: string[];\r\n  stdin?: { contents: string; resolveDir?: string; loader?: string };\r\n  bundle?: boolean;\r\n  format?: \"iife\" | \"cjs\" | \"esm\";\r\n  platform?: \"browser\" | \"node\" | \"neutral\";\r\n  target?: string | string[];\r\n  minify?: boolean;\r\n  external?: string[];\r\n  absWorkingDir?: string;\r\n  priority: TaskPriority;\r\n}\r\n\r\nexport interface BuildOutputFile {\r\n  path: string;\r\n  text: string;\r\n}\r\n\r\nexport interface BuildResult {\r\n  type: \"build\";\r\n  id: string;\r\n  outputFiles: BuildOutputFile[];\r\n  errors: string[];\r\n  warnings: string[];\r\n}\r\n\r\nexport type OffloadTask = TransformTask | ExtractTask | BuildTask;\r\nexport type OffloadResult = TransformResult | ExtractResult | BuildResult;\r\n\r\n// exposed via Comlink\r\nexport interface OffloadWorkerEndpoint {\r\n  init(): Promise<void>;\r\n  transform(task: TransformTask): Promise<TransformResult>;\r\n  extract(task: ExtractTask): Promise<ExtractResult>;\r\n  build(task: BuildTask): Promise<BuildResult>;\r\n  ping(): boolean;\r\n}\r\n\r\nexport interface PoolConfig {\r\n  minWorkers?: number;\r\n  maxWorkers?: number;\r\n  idleTimeoutMs?: number;\r\n  warmUpOnCreate?: boolean;\r\n}\r\n","// Offload API — routes CPU-heavy tasks (esbuild, tarball extraction, bundling)\r\n// to a Web Worker pool. Falls back to main-thread if Workers aren't available.\r\n\r\nimport { WorkerPool } from \"./worker-pool\";\r\nimport { TaskQueue } from \"./task-queue\";\r\nimport type {\r\n  OffloadTask,\r\n  OffloadResult,\r\n  PoolConfig,\r\n  TransformTask,\r\n  TransformResult,\r\n  ExtractTask,\r\n  ExtractResult,\r\n  BuildTask,\r\n  BuildResult,\r\n} from \"./offload-types\";\r\n\r\nexport { TaskPriority } from \"./offload-types\";\r\nexport type {\r\n  TransformTask,\r\n  TransformResult,\r\n  ExtractTask,\r\n  ExtractResult,\r\n  BuildTask,\r\n  BuildResult,\r\n  OffloadTask,\r\n  OffloadResult,\r\n  PoolConfig,\r\n} from \"./offload-types\";\r\n\r\n// --- Singleton state ---\r\n\r\nlet pool: WorkerPool | null = null;\r\nlet queue: TaskQueue | null = null;\r\nlet fallbackMode = false;\r\nlet storedConfig: PoolConfig | undefined;\r\n\r\n// --- Environment detection ---\r\n\r\nfunction canUseWorkers(): boolean {\r\n  return (\r\n    typeof Worker !== \"undefined\" &&\r\n    typeof Blob !== \"undefined\" &&\r\n    typeof URL !== \"undefined\" &&\r\n    typeof URL.createObjectURL === \"function\"\r\n  );\r\n}\r\n\r\n// --- Pool lifecycle ---\r\n\r\nfunction ensurePool(): TaskQueue {\r\n  if (queue) return queue;\r\n\r\n  if (!canUseWorkers()) {\r\n    fallbackMode = true;\r\n    throw new Error(\"Workers not available\");\r\n  }\r\n\r\n  pool = new WorkerPool(storedConfig);\r\n  queue = new TaskQueue(pool);\r\n  return queue;\r\n}\r\n\r\n// --- Main-thread fallback implementations ---\r\n\r\nasync function mainThreadTransform(\r\n  task: TransformTask,\r\n): Promise<TransformResult> {\r\n  // convertFileDirect, not convertFile — avoids circular: convertFile → offload → fallback → loop\r\n  const { convertFileDirect, prepareTransformer } = await import(\r\n    \"../module-transformer\"\r\n  );\r\n  await prepareTransformer();\r\n\r\n  const code = await convertFileDirect(task.source, task.filePath);\r\n  return { type: \"transform\", id: task.id, code, warnings: [] };\r\n}\r\n\r\nasync function mainThreadExtract(\r\n  task: ExtractTask,\r\n): Promise<ExtractResult> {\r\n  const pako = await import(\"pako\");\r\n  const { parseTarArchive } = await import(\"../packages/archive-extractor\");\r\n  const { bytesToBase64 } = await import(\"../helpers/byte-encoding\");\r\n\r\n  let compressed: Uint8Array;\r\n  if (task.tarballBytes && task.tarballBytes.byteLength > 0) {\r\n    compressed = new Uint8Array(task.tarballBytes);\r\n  } else {\r\n    const response = await fetch(task.tarballUrl);\r\n    if (!response.ok) {\r\n      throw new Error(\r\n        `Archive download failed (HTTP ${response.status}): ${task.tarballUrl}`,\r\n      );\r\n    }\r\n    compressed = new Uint8Array(await response.arrayBuffer());\r\n  }\r\n  const tarBytes = pako.inflate(compressed);\r\n\r\n  const files: ExtractResult[\"files\"] = [];\r\n  for (const entry of parseTarArchive(tarBytes)) {\r\n    if (entry.kind !== \"file\" || !entry.payload) continue;\r\n\r\n    let relative = entry.filepath;\r\n    if (task.stripComponents > 0) {\r\n      const segments = relative.split(\"/\").filter(Boolean);\r\n      if (segments.length <= task.stripComponents) continue;\r\n      relative = segments.slice(task.stripComponents).join(\"/\");\r\n    }\r\n\r\n    let data: string;\r\n    let isBinary = false;\r\n    try {\r\n      data = new TextDecoder(\"utf-8\", { fatal: true }).decode(entry.payload);\r\n    } catch {\r\n      data = bytesToBase64(entry.payload);\r\n      isBinary = true;\r\n    }\r\n    files.push({ path: relative, data, isBinary });\r\n  }\r\n\r\n  const result: ExtractResult = { type: \"extract\", id: task.id, files };\r\n  if (task.wantTarball) {\r\n    result.tarballBytes =\r\n      compressed.buffer instanceof ArrayBuffer && compressed.byteLength === compressed.buffer.byteLength\r\n        ? compressed.buffer\r\n        : compressed.slice().buffer as ArrayBuffer;\r\n  }\r\n  return result;\r\n}\r\n\r\nasync function mainThreadBuild(task: BuildTask): Promise<BuildResult> {\r\n  const esbuild = await import(\"../polyfills/esbuild\");\r\n  try {\r\n    const result = await (esbuild as any).build({\r\n      entryPoints: task.entryPoints,\r\n      stdin: task.stdin,\r\n      bundle: task.bundle,\r\n      format: task.format,\r\n      platform: task.platform,\r\n      target: task.target,\r\n      minify: task.minify,\r\n      external: task.external,\r\n      write: false,\r\n      absWorkingDir: task.absWorkingDir,\r\n    });\r\n    return {\r\n      type: \"build\",\r\n      id: task.id,\r\n      outputFiles: (result.outputFiles || []).map((f: any) => ({\r\n        path: f.path,\r\n        text: f.text || new TextDecoder().decode(f.contents),\r\n      })),\r\n      errors: (result.errors || []).map((e: any) => e.text || String(e)),\r\n      warnings: (result.warnings || []).map(\r\n        (w: any) => w.text || String(w),\r\n      ),\r\n    };\r\n  } catch (err: any) {\r\n    return {\r\n      type: \"build\",\r\n      id: task.id,\r\n      outputFiles: [],\r\n      errors: [err?.message || \"build failed\"],\r\n      warnings: [],\r\n    };\r\n  }\r\n}\r\n\r\n// --- Public API ---\r\n\r\nexport function taskId(): string {\r\n  if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\r\n    return crypto.randomUUID();\r\n  }\r\n  return `task-${Date.now()}-${Math.random().toString(36).slice(2)}`;\r\n}\r\n\r\nexport async function offload<T extends OffloadTask>(\r\n  task: T,\r\n): Promise<\r\n  T extends TransformTask\r\n    ? TransformResult\r\n    : T extends ExtractTask\r\n      ? ExtractResult\r\n      : T extends BuildTask\r\n        ? BuildResult\r\n        : OffloadResult\r\n> {\r\n  // Fast path: already know Workers aren't available\r\n  if (fallbackMode) {\r\n    return runFallback(task) as any;\r\n  }\r\n\r\n  try {\r\n    const q = ensurePool();\r\n    return await q.submit(task) as any;\r\n  } catch (err) {\r\n    // Log once so consumers know fallback is active\r\n    if (!fallbackMode) {\r\n      console.debug(\r\n        \"[offload] Falling back to main thread:\",\r\n        err instanceof Error ? err.message : err,\r\n      );\r\n    }\r\n    switchToFallback();\r\n    return runFallback(task) as any;\r\n  }\r\n}\r\n\r\nexport async function offloadBatch(\r\n  tasks: OffloadTask[],\r\n): Promise<OffloadResult[]> {\r\n  if (fallbackMode) {\r\n    return Promise.all(tasks.map((t) => runFallback(t)));\r\n  }\r\n\r\n  try {\r\n    const q = ensurePool();\r\n    return await q.submitBatch(tasks);\r\n  } catch {\r\n    switchToFallback();\r\n    return Promise.all(tasks.map((t) => runFallback(t)));\r\n  }\r\n}\r\n\r\nfunction switchToFallback(): void {\r\n  fallbackMode = true;\r\n  if (pool) {\r\n    pool.dispose();\r\n    pool = null;\r\n  }\r\n  queue = null;\r\n}\r\n\r\nasync function runFallback(task: OffloadTask): Promise<OffloadResult> {\r\n  switch (task.type) {\r\n    case \"transform\":\r\n      return mainThreadTransform(task);\r\n    case \"extract\":\r\n      return mainThreadExtract(task);\r\n    case \"build\":\r\n      return mainThreadBuild(task);\r\n    default:\r\n      throw new Error(`Unknown task type: ${(task as any).type}`);\r\n  }\r\n}\r\n\r\nexport function cancelTask(id: string): boolean {\r\n  return queue?.cancel(id) ?? false;\r\n}\r\n\r\nexport function poolStats(): {\r\n  total: number;\r\n  busy: number;\r\n  idle: number;\r\n  initialized: number;\r\n  fallback: boolean;\r\n} {\r\n  const stats = pool?.stats() ?? {\r\n    total: 0,\r\n    busy: 0,\r\n    idle: 0,\r\n    initialized: 0,\r\n  };\r\n  return { ...stats, fallback: fallbackMode };\r\n}\r\n\r\nexport function disposePool(): void {\r\n  queue = null;\r\n  pool?.dispose();\r\n  pool = null;\r\n  fallbackMode = false;\r\n}\r\n\r\n// Must be called before any offload() task is submitted\r\nexport function configurePool(config: PoolConfig): void {\r\n  if (pool) {\r\n    throw new Error(\"Pool already created; call disposePool() first\");\r\n  }\r\n  storedConfig = config;\r\n}\r\n","// IndexedDB-backed cache of compressed npm tarballs, keyed by tarball URL.\r\n// Lets warm installs skip the network entirely. All methods are best-effort:\r\n// any IDB failure degrades to a cache miss, never a thrown error.\r\n\r\nconst DB_NAME = \"nodepod-tarballs\";\r\nconst STORE_NAME = \"tarballs\";\r\nconst DB_VERSION = 1;\r\n\r\nconst DEFAULT_MAX_BYTES = 256 * 1024 * 1024; // 256MB\r\nconst DEFAULT_MAX_AGE_MS = 14 * 24 * 60 * 60 * 1000; // 14 days\r\n\r\ninterface TarballEntry {\r\n  bytes: ArrayBuffer;\r\n  integrity?: string;\r\n  storedAt: number;\r\n  size: number;\r\n}\r\n\r\nexport interface TarballCache {\r\n  get(url: string): Promise<ArrayBuffer | null>;\r\n  put(url: string, bytes: ArrayBuffer, integrity?: string): Promise<void>;\r\n  prune(maxBytes?: number, maxAgeMs?: number): Promise<void>;\r\n  close(): void;\r\n}\r\n\r\nfunction openDB(): Promise<IDBDatabase | null> {\r\n  if (typeof indexedDB === \"undefined\") return Promise.resolve(null);\r\n  return new Promise((resolve) => {\r\n    try {\r\n      const req = indexedDB.open(DB_NAME, DB_VERSION);\r\n      req.onupgradeneeded = () => {\r\n        const db = req.result;\r\n        if (!db.objectStoreNames.contains(STORE_NAME)) {\r\n          db.createObjectStore(STORE_NAME);\r\n        }\r\n      };\r\n      req.onsuccess = () => resolve(req.result);\r\n      req.onerror = () => resolve(null);\r\n    } catch {\r\n      resolve(null);\r\n    }\r\n  });\r\n}\r\n\r\nfunction idbGet(db: IDBDatabase, key: string): Promise<TarballEntry | null> {\r\n  return new Promise((resolve, reject) => {\r\n    const tx = db.transaction(STORE_NAME, \"readonly\");\r\n    const req = tx.objectStore(STORE_NAME).get(key);\r\n    req.onsuccess = () => resolve((req.result as TarballEntry) ?? null);\r\n    req.onerror = () => reject(req.error);\r\n  });\r\n}\r\n\r\nfunction idbPut(db: IDBDatabase, key: string, value: TarballEntry): Promise<void> {\r\n  return new Promise((resolve, reject) => {\r\n    const tx = db.transaction(STORE_NAME, \"readwrite\");\r\n    tx.objectStore(STORE_NAME).put(value, key);\r\n    tx.oncomplete = () => resolve();\r\n    tx.onerror = () => reject(tx.error);\r\n  });\r\n}\r\n\r\nexport async function openTarballCache(): Promise<TarballCache | null> {\r\n  const db = await openDB();\r\n  if (!db) return null;\r\n\r\n  return {\r\n    async get(url: string): Promise<ArrayBuffer | null> {\r\n      try {\r\n        const entry = await idbGet(db, url);\r\n        if (!entry?.bytes) return null;\r\n        if (Date.now() - entry.storedAt > DEFAULT_MAX_AGE_MS) return null;\r\n        return entry.bytes;\r\n      } catch {\r\n        return null;\r\n      }\r\n    },\r\n\r\n    async put(url: string, bytes: ArrayBuffer, integrity?: string): Promise<void> {\r\n      try {\r\n        await idbPut(db, url, {\r\n          bytes,\r\n          integrity,\r\n          storedAt: Date.now(),\r\n          size: bytes.byteLength,\r\n        });\r\n      } catch {\r\n        /* quota or transaction failure — cache is optional */\r\n      }\r\n    },\r\n\r\n    // Evict expired entries, then oldest-first until under the byte budget.\r\n    prune(maxBytes = DEFAULT_MAX_BYTES, maxAgeMs = DEFAULT_MAX_AGE_MS): Promise<void> {\r\n      return new Promise((resolve) => {\r\n        try {\r\n          const tx = db.transaction(STORE_NAME, \"readwrite\");\r\n          const store = tx.objectStore(STORE_NAME);\r\n          const req = store.openCursor();\r\n          const now = Date.now();\r\n          const kept: Array<{ key: IDBValidKey; storedAt: number; size: number }> = [];\r\n\r\n          req.onsuccess = () => {\r\n            const cursor = req.result;\r\n            if (cursor) {\r\n              const entry = cursor.value as TarballEntry;\r\n              if (!entry?.storedAt || now - entry.storedAt > maxAgeMs) {\r\n                cursor.delete();\r\n              } else {\r\n                kept.push({ key: cursor.key, storedAt: entry.storedAt, size: entry.size ?? 0 });\r\n              }\r\n              cursor.continue();\r\n              return;\r\n            }\r\n            // cursor exhausted — evict oldest until under budget\r\n            let total = kept.reduce((sum, e) => sum + e.size, 0);\r\n            if (total > maxBytes) {\r\n              kept.sort((a, b) => a.storedAt - b.storedAt);\r\n              const evictTx = db.transaction(STORE_NAME, \"readwrite\");\r\n              const evictStore = evictTx.objectStore(STORE_NAME);\r\n              for (const e of kept) {\r\n                if (total <= maxBytes) break;\r\n                evictStore.delete(e.key);\r\n                total -= e.size;\r\n              }\r\n            }\r\n            resolve();\r\n          };\r\n          req.onerror = () => resolve();\r\n          tx.onerror = () => resolve();\r\n        } catch {\r\n          resolve();\r\n        }\r\n      });\r\n    },\r\n\r\n    close(): void {\r\n      try {\r\n        db.close();\r\n      } catch {\r\n        /* ignore */\r\n      }\r\n    },\r\n  };\r\n}\r\n\r\n/* singleton for the extract dispatch path — opened once per realm */\r\nlet _singleton: Promise<TarballCache | null> | null = null;\r\n\r\nexport function getTarballCache(): Promise<TarballCache | null> {\r\n  if (!_singleton) _singleton = openTarballCache();\r\n  return _singleton;\r\n}\r\n","// Archive Extractor — downloads .tgz from npm, decompresses, parses tar, writes to VFS.\r\n// Heavy work is offloaded to web workers when available.\r\n\r\nimport pako from \"pako\";\r\nimport { MemoryVolume } from \"../memory-volume\";\r\nimport * as path from \"../polyfills/path\";\r\nimport { offload, taskId, TaskPriority } from \"../threading/offload\";\r\nimport type { ExtractResult } from \"../threading/offload-types\";\r\nimport { base64ToBytes } from \"../helpers/byte-encoding\";\r\nimport { precompileWasm } from \"../helpers/wasm-cache\";\r\nimport { getTarballCache } from \"../persistence/tarball-cache\";\r\n\r\n// skip round-tripping very large tarballs back from the worker just to cache\r\nconst TARBALL_CACHE_MAX_BYTES = 20 * 1024 * 1024;\r\n\r\n/** Returns safe absolute path if relative stays inside destDir, else null (zip-slip guard). */\r\nexport function safeJoin(destDir: string, relative: string): string | null {\r\n  const base = path.normalize(destDir).replace(/\\/+$/, \"\");\r\n  const abs = path.normalize(path.join(base, relative));\r\n  if (abs === base) return abs;\r\n  if (abs.startsWith(base + \"/\")) return abs;\r\n  return null;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Public types\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface ExtractionOptions {\r\n  // default 1 — strips npm's \"package/\" prefix\r\n  stripComponents?: number;\r\n  filter?: (entryPath: string) => boolean;\r\n  onProgress?: (msg: string) => void;\r\n  /** expected sha1 hex from the npm registry, checked after download */\r\n  expectedShasum?: string;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Internal tar structures\r\n// ---------------------------------------------------------------------------\r\n\r\ntype EntryKind = \"file\" | \"directory\" | \"link\" | \"other\";\r\n\r\ninterface ArchiveEntry {\r\n  filepath: string;\r\n  kind: EntryKind;\r\n  byteSize: number;\r\n  fileMode: number;\r\n  payload?: Uint8Array;\r\n  linkDestination?: string;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Tar header helpers\r\n// ---------------------------------------------------------------------------\r\n\r\nfunction readNullTerminated(\r\n  buf: Uint8Array,\r\n  start: number,\r\n  len: number,\r\n): string {\r\n  const slice = buf.slice(start, start + len);\r\n  const zeroPos = slice.indexOf(0);\r\n  const trimmed = zeroPos >= 0 ? slice.slice(0, zeroPos) : slice;\r\n  return new TextDecoder().decode(trimmed);\r\n}\r\n\r\nfunction readOctalField(buf: Uint8Array, start: number, len: number): number {\r\n  const raw = readNullTerminated(buf, start, len).trim();\r\n  return parseInt(raw, 8) || 0;\r\n}\r\n\r\nfunction classifyTypeFlag(flag: string): EntryKind {\r\n  switch (flag) {\r\n    case \"0\":\r\n    case \"\\0\":\r\n    case \"\":\r\n      return \"file\";\r\n    case \"5\":\r\n      return \"directory\";\r\n    case \"1\":\r\n    case \"2\":\r\n      return \"link\";\r\n    default:\r\n      return \"other\";\r\n  }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Tar parser (generator)\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function* parseTarArchive(raw: Uint8Array): Generator<ArchiveEntry> {\r\n  const BLOCK = 512;\r\n  let cursor = 0;\r\n\r\n  while (cursor + BLOCK <= raw.length) {\r\n    const headerBlock = raw.slice(cursor, cursor + BLOCK);\r\n    cursor += BLOCK;\r\n\r\n    // two zero blocks = end of archive\r\n    const allZero = headerBlock.every((b) => b === 0);\r\n    if (allZero) break;\r\n\r\n    const nameField = readNullTerminated(headerBlock, 0, 100);\r\n    if (!nameField) continue;\r\n\r\n    const fileMode = readOctalField(headerBlock, 100, 8);\r\n    const byteSize = readOctalField(headerBlock, 124, 12);\r\n    const typeChar = String.fromCharCode(headerBlock[156]);\r\n    const linkField = readNullTerminated(headerBlock, 157, 100);\r\n    const prefixField = readNullTerminated(headerBlock, 345, 155);\r\n\r\n    const filepath = prefixField ? `${prefixField}/${nameField}` : nameField;\r\n    const kind = classifyTypeFlag(typeChar);\r\n\r\n    let payload: Uint8Array | undefined;\r\n    if (kind === \"file\") {\r\n      payload =\r\n        byteSize > 0 ? raw.slice(cursor, cursor + byteSize) : new Uint8Array(0);\r\n      if (byteSize > 0) {\r\n        cursor += Math.ceil(byteSize / BLOCK) * BLOCK;\r\n      }\r\n    }\r\n\r\n    yield {\r\n      filepath,\r\n      kind,\r\n      byteSize,\r\n      fileMode,\r\n      payload,\r\n      linkDestination: kind === \"link\" ? linkField : undefined,\r\n    };\r\n  }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Decompression\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function inflateGzip(compressed: ArrayBuffer | Uint8Array): Uint8Array {\r\n  const input =\r\n    compressed instanceof Uint8Array ? compressed : new Uint8Array(compressed);\r\n  return pako.inflate(input);\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Extraction into MemoryVolume\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function extractArchive(\r\n  archiveBytes: ArrayBuffer | Uint8Array,\r\n  vol: MemoryVolume,\r\n  destDir: string,\r\n  opts: ExtractionOptions = {},\r\n): string[] {\r\n  const { stripComponents = 1, filter, onProgress } = opts;\r\n\r\n  onProgress?.(\"Inflating archive...\");\r\n  const tarBytes = inflateGzip(archiveBytes);\r\n\r\n  const writtenPaths: string[] = [];\r\n\r\n  for (const entry of parseTarArchive(tarBytes)) {\r\n    if (entry.kind !== \"file\" && entry.kind !== \"directory\") continue;\r\n\r\n    let relative = entry.filepath;\r\n    if (stripComponents > 0) {\r\n      const segments = relative.split(\"/\").filter(Boolean);\r\n      if (segments.length <= stripComponents) continue;\r\n      relative = segments.slice(stripComponents).join(\"/\");\r\n    }\r\n\r\n    if (filter && !filter(relative)) continue;\r\n\r\n    const absolute = safeJoin(destDir, relative);\r\n    if (!absolute) continue;\r\n\r\n    if (entry.kind === \"directory\") {\r\n      vol.mkdirSync(absolute, { recursive: true });\r\n    } else if (entry.kind === \"file\" && entry.payload) {\r\n      const parentDir = path.dirname(absolute);\r\n      vol.mkdirSync(parentDir, { recursive: true });\r\n      vol.writeFileSync(absolute, entry.payload);\r\n      // pre-compile so it's ready by the time code needs it\r\n      if (absolute.endsWith(\".wasm\")) {\r\n        precompileWasm(entry.payload);\r\n      }\r\n      writtenPaths.push(absolute);\r\n    }\r\n  }\r\n\r\n  onProgress?.(`Extracted ${writtenPaths.length} files`);\r\n  return writtenPaths;\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// High-level: download + extract in one step\r\n// ---------------------------------------------------------------------------\r\n\r\n// Offloads fetch + decompress + parse to a worker, then writes results to VFS on main thread\r\nexport async function downloadAndExtract(\r\n  url: string,\r\n  vol: MemoryVolume,\r\n  destDir: string,\r\n  opts: ExtractionOptions = {},\r\n): Promise<string[]> {\r\n  opts.onProgress?.(`Fetching ${url}...`);\r\n\r\n  // warm runs skip the network: pass cached tarball bytes into the worker;\r\n  // on a miss ask the worker for the compressed bytes and persist them.\r\n  // any cache failure degrades to an uncached install.\r\n  let cachedBytes: ArrayBuffer | null = null;\r\n  let cache: Awaited<ReturnType<typeof getTarballCache>> = null;\r\n  try {\r\n    cache = await getTarballCache();\r\n    if (cache) cachedBytes = await cache.get(url);\r\n  } catch {\r\n    cache = null;\r\n  }\r\n\r\n  const result: ExtractResult = await offload({\r\n    type: \"extract\",\r\n    id: taskId(),\r\n    tarballUrl: url,\r\n    stripComponents: opts.stripComponents ?? 1,\r\n    priority: TaskPriority.NORMAL,\r\n    expectedShasum: opts.expectedShasum,\r\n    tarballBytes: cachedBytes ?? undefined,\r\n    wantTarball: !cachedBytes && !!cache,\r\n  });\r\n\r\n  if (\r\n    cache &&\r\n    !cachedBytes &&\r\n    result.tarballBytes &&\r\n    result.tarballBytes.byteLength > 0 &&\r\n    result.tarballBytes.byteLength <= TARBALL_CACHE_MAX_BYTES\r\n  ) {\r\n    cache.put(url, result.tarballBytes, opts.expectedShasum).catch(() => {});\r\n  }\r\n\r\n  const writtenPaths: string[] = [];\r\n  for (const file of result.files) {\r\n    if (opts.filter && !opts.filter(file.path)) continue;\r\n\r\n    const absolute = safeJoin(destDir, file.path);\r\n    if (!absolute) continue;\r\n    const parentDir = path.dirname(absolute);\r\n    vol.mkdirSync(parentDir, { recursive: true });\r\n\r\n    if (file.isBinary) {\r\n      // binary data arrives as raw Uint8Array (large files via structured clone)\r\n      // or base64 string (small files)\r\n      const bytes = file.data instanceof Uint8Array\r\n        ? file.data\r\n        : base64ToBytes(file.data as string);\r\n      vol.writeFileSync(absolute, bytes);\r\n      // pre-compile WASM so it's ready by the time code needs it\r\n      if (absolute.endsWith(\".wasm\")) {\r\n        precompileWasm(bytes);\r\n      }\r\n    } else {\r\n      vol.writeFileSync(absolute, file.data as string);\r\n    }\r\n    writtenPaths.push(absolute);\r\n  }\r\n\r\n  opts.onProgress?.(`Extracted ${writtenPaths.length} files`);\r\n  return writtenPaths;\r\n}\r\n\r\n// Main-thread fallback when workers aren't available\r\nexport async function downloadAndExtractDirect(\r\n  url: string,\r\n  vol: MemoryVolume,\r\n  destDir: string,\r\n  opts: ExtractionOptions = {},\r\n): Promise<string[]> {\r\n  opts.onProgress?.(`Fetching ${url}...`);\r\n\r\n  let cache: Awaited<ReturnType<typeof getTarballCache>> = null;\r\n  try {\r\n    cache = await getTarballCache();\r\n    const cached = cache ? await cache.get(url) : null;\r\n    if (cached) return extractArchive(cached, vol, destDir, opts);\r\n  } catch {\r\n    cache = null;\r\n  }\r\n\r\n  const response = await fetch(url);\r\n  if (!response.ok) {\r\n    throw new Error(\r\n      `Archive download failed (HTTP ${response.status}): ${url}`,\r\n    );\r\n  }\r\n\r\n  const rawBytes = await response.arrayBuffer();\r\n  if (cache && rawBytes.byteLength > 0 && rawBytes.byteLength <= TARBALL_CACHE_MAX_BYTES) {\r\n    cache.put(url, rawBytes, opts.expectedShasum).catch(() => {});\r\n  }\r\n  return extractArchive(rawBytes, vol, destDir, opts);\r\n}\r\n\r\nexport default {\r\n  downloadAndExtract,\r\n  downloadAndExtractDirect,\r\n  parseTarArchive,\r\n  extractArchive,\r\n  inflateGzip,\r\n};\r\n","// ESM-to-CJS bulk transformer (esbuild-wasm). Used at install time to\r\n// pre-convert packages so synchronous require() works at runtime.\r\n// Transforms are offloaded to Web Workers when available.\r\n\r\nimport type { MemoryVolume } from \"./memory-volume\";\r\nimport { offload, taskId, TaskPriority } from \"./threading/offload\";\r\nimport type { TransformResult } from \"./threading/offload-types\";\r\nimport { getEsbuild, getEsbuildIfReady } from \"./helpers/esbuild-engine\";\r\n\r\nconst inBrowser = typeof window !== \"undefined\";\r\n\r\n// load and init esbuild-wasm from CDN (realm-wide singleton, shared with the esbuild polyfill)\r\nexport async function prepareTransformer(): Promise<void> {\r\n  if (!inBrowser) {\r\n    return;\r\n  }\r\n  await getEsbuild();\r\n}\r\n\r\nexport function isTransformerLoaded(): boolean {\r\n  if (!inBrowser) return true;\r\n  return getEsbuildIfReady() !== null;\r\n}\r\n\r\nfunction containsJsx(source: string): boolean {\r\n  if (/<[A-Z][a-zA-Z0-9.]*[\\s/>]/.test(source)) return true;\r\n  if (/<\\/[a-zA-Z]/.test(source)) return true;\r\n  if (/\\/>/.test(source)) return true;\r\n  if (/<>|<\\/>/.test(source)) return true;\r\n  if (/React\\.createElement\\b/.test(source)) return true;\r\n  if (/jsx\\(|jsxs\\(|jsxDEV\\(/.test(source)) return true;\r\n  return false;\r\n}\r\n\r\nfunction detectLoader(\r\n  filePath: string,\r\n  source: string,\r\n): \"js\" | \"jsx\" | \"ts\" | \"tsx\" {\r\n  if (filePath.endsWith(\".jsx\")) return \"jsx\";\r\n  if (filePath.endsWith(\".ts\")) return \"ts\";\r\n  if (filePath.endsWith(\".tsx\")) return \"tsx\";\r\n  if (filePath.endsWith(\".mjs\")) return \"js\";\r\n  if (containsJsx(source)) return \"jsx\";\r\n  return \"js\";\r\n}\r\n\r\n// convert a single file ESM->CJS via offloaded esbuild.transform()\r\nexport async function convertFile(\r\n  source: string,\r\n  filePath: string,\r\n): Promise<string> {\r\n  if (!inBrowser) return source;\r\n\r\n  const result: TransformResult = await offload({\r\n    type: \"transform\",\r\n    id: taskId(),\r\n    source,\r\n    filePath,\r\n    options: {\r\n      loader: detectLoader(filePath, source),\r\n      format: \"cjs\",\r\n      target: \"esnext\",\r\n      platform: \"neutral\",\r\n      define: {\r\n        \"import.meta.url\": \"import_meta.url\",\r\n        \"import.meta.dirname\": \"import_meta.dirname\",\r\n        \"import.meta.filename\": \"import_meta.filename\",\r\n        \"import.meta\": \"import_meta\",\r\n      },\r\n    },\r\n    priority: TaskPriority.NORMAL,\r\n  });\r\n\r\n  // patch dynamic imports of node builtins to synchronous require()\r\n  let code = result.code;\r\n  code = code.replace(\r\n    /\\bimport\\s*\\(\\s*[\"']node:([^\"']+)[\"']\\s*\\)/g,\r\n    'Promise.resolve(require(\"node:$1\"))',\r\n  );\r\n\r\n  const coreModules = [\r\n    \"assert\", \"buffer\", \"child_process\", \"cluster\", \"crypto\",\r\n    \"dgram\", \"dns\", \"events\", \"fs\", \"http\", \"http2\", \"https\",\r\n    \"net\", \"os\", \"path\", \"perf_hooks\", \"querystring\", \"readline\",\r\n    \"stream\", \"string_decoder\", \"timers\", \"tls\", \"url\", \"util\",\r\n    \"v8\", \"vm\", \"worker_threads\", \"zlib\", \"async_hooks\",\r\n    \"inspector\", \"module\",\r\n  ];\r\n  for (const mod of coreModules) {\r\n    const re = new RegExp(`\\\\bimport\\\\s*\\\\(\\\\s*[\"']${mod}[\"']\\\\s*\\\\)`, \"g\");\r\n    code = code.replace(re, `Promise.resolve(require(\"${mod}\"))`);\r\n  }\r\n\r\n  return code;\r\n}\r\n\r\n// direct main-thread esbuild transform (no worker offloading).\r\n// used as the fallback path to avoid circular offload -> convertFile -> offload.\r\nexport async function convertFileDirect(\r\n  source: string,\r\n  filePath: string,\r\n): Promise<string> {\r\n  if (!inBrowser) return source;\r\n\r\n  const engine = await getEsbuild();\r\n  if (!engine) throw new Error(\"esbuild engine not available\");\r\n\r\n  const loader = detectLoader(filePath, source);\r\n\r\n  try {\r\n    const output = await engine.transform(source, {\r\n      loader,\r\n      format: \"cjs\",\r\n      target: \"esnext\",\r\n      platform: \"neutral\",\r\n      define: {\r\n        \"import.meta.url\": \"import_meta.url\",\r\n        \"import.meta.dirname\": \"import_meta.dirname\",\r\n        \"import.meta.filename\": \"import_meta.filename\",\r\n        \"import.meta\": \"import_meta\",\r\n      },\r\n    });\r\n    return output.code;\r\n  } catch (err: unknown) {\r\n    const msg = err instanceof Error ? err.message : String(err);\r\n\r\n    // retry with alternative loaders\r\n    if (loader === \"js\" || loader === \"jsx\") {\r\n      const fallbacks = loader === \"js\" ? [\"jsx\", \"tsx\", \"ts\"] : [\"tsx\"];\r\n      for (const fallbackLoader of fallbacks) {\r\n        try {\r\n          const output = await engine.transform(source, {\r\n            loader: fallbackLoader as \"jsx\" | \"tsx\" | \"ts\",\r\n            format: \"cjs\",\r\n            target: \"esnext\",\r\n            platform: \"neutral\",\r\n            define: {\r\n              \"import.meta.url\": \"import_meta.url\",\r\n              \"import.meta.dirname\": \"import_meta.dirname\",\r\n              \"import.meta.filename\": \"import_meta.filename\",\r\n              \"import.meta\": \"import_meta\",\r\n            },\r\n          });\r\n          return output.code;\r\n        } catch {\r\n        }\r\n      }\r\n    }\r\n\r\n    if (msg.includes(\"Top-level await\")) {\r\n      try {\r\n        const output = await engine.transform(source, {\r\n          loader,\r\n          format: \"esm\",\r\n          target: \"esnext\",\r\n          platform: \"neutral\",\r\n          define: {\r\n            \"import.meta.url\": \"import_meta.url\",\r\n            \"import.meta.dirname\": \"import_meta.dirname\",\r\n            \"import.meta.filename\": \"import_meta.filename\",\r\n            \"import.meta\": \"import_meta\",\r\n          },\r\n        });\r\n        return output.code;\r\n      } catch {\r\n        return source;\r\n      }\r\n    }\r\n    return source;\r\n  }\r\n}\r\n\r\nfunction requiresConversion(filePath: string, source: string): boolean {\r\n  // .mjs must stay ESM in the VFS -- tools read them directly. the runtime\r\n  // handles ESM->CJS on-the-fly for require().\r\n  if (filePath.endsWith(\".mjs\")) return false;\r\n  if (filePath.endsWith(\".cjs\")) return false;\r\n  return (\r\n    /\\bimport\\s+[\\w{*'\"]/m.test(source) ||\r\n    /\\bexport\\s+(?:default|const|let|var|function|class|{|\\*)/m.test(source) ||\r\n    /\\bimport\\.meta\\b/.test(source)\r\n  );\r\n}\r\n\r\nfunction needsBuiltinPatching(source: string): boolean {\r\n  return (\r\n    /\\bimport\\s*\\(\\s*[\"']node:/.test(source) ||\r\n    /\\bimport\\s*\\(\\s*[\"'](fs|path|http|https|net|url|util|events|stream|os|crypto)[\"']/.test(\r\n      source,\r\n    )\r\n  );\r\n}\r\n\r\nfunction patchBuiltinImports(source: string): string {\r\n  let patched = source;\r\n  patched = patched.replace(\r\n    /\\bimport\\s*\\(\\s*[\"']node:([^\"']+)[\"']\\s*\\)/g,\r\n    'Promise.resolve(require(\"node:$1\"))',\r\n  );\r\n  const builtins = [\r\n    \"assert\",\r\n    \"buffer\",\r\n    \"child_process\",\r\n    \"cluster\",\r\n    \"crypto\",\r\n    \"dgram\",\r\n    \"dns\",\r\n    \"events\",\r\n    \"fs\",\r\n    \"http\",\r\n    \"http2\",\r\n    \"https\",\r\n    \"net\",\r\n    \"os\",\r\n    \"path\",\r\n    \"perf_hooks\",\r\n    \"querystring\",\r\n    \"readline\",\r\n    \"stream\",\r\n    \"string_decoder\",\r\n    \"timers\",\r\n    \"tls\",\r\n    \"url\",\r\n    \"util\",\r\n    \"v8\",\r\n    \"vm\",\r\n    \"worker_threads\",\r\n    \"zlib\",\r\n    \"async_hooks\",\r\n    \"inspector\",\r\n    \"module\",\r\n  ];\r\n  for (const b of builtins) {\r\n    patched = patched.replace(\r\n      new RegExp(`\\\\bimport\\\\s*\\\\(\\\\s*[\"']${b}[\"']\\\\s*\\\\)`, \"g\"),\r\n      `Promise.resolve(require(\"${b}\"))`,\r\n    );\r\n  }\r\n  return patched;\r\n}\r\n\r\nfunction listJsFiles(vol: MemoryVolume, dir: string): string[] {\r\n  const result: string[] = [];\r\n  try {\r\n    for (const name of vol.readdirSync(dir)) {\r\n      const full = dir + \"/\" + name;\r\n      try {\r\n        const info = vol.statSync(full);\r\n        if (info.isDirectory()) {\r\n          if (name !== \"node_modules\") result.push(...listJsFiles(vol, full));\r\n        } else if (\r\n          name.endsWith(\".js\") ||\r\n          name.endsWith(\".mjs\") ||\r\n          name.endsWith(\".jsx\")\r\n        ) {\r\n          result.push(full);\r\n        }\r\n      } catch {\r\n      }\r\n    }\r\n  } catch {\r\n  }\r\n  return result;\r\n}\r\n\r\nfunction isEsmPackage(vol: MemoryVolume, packageDir: string): boolean {\r\n  try {\r\n    const pkgPath = packageDir + \"/package.json\";\r\n    if (vol.existsSync(pkgPath)) {\r\n      const raw = vol.readFileSync(pkgPath, \"utf8\");\r\n      const pkg = JSON.parse(raw);\r\n      return pkg.type === \"module\";\r\n    }\r\n  } catch {\r\n  }\r\n  return false;\r\n}\r\n\r\n// convert all ESM files in a package directory to CJS\r\nexport async function convertPackage(\r\n  vol: MemoryVolume,\r\n  packageDir: string,\r\n  onProgress?: (msg: string) => void,\r\n): Promise<number> {\r\n  let converted = 0;\r\n  const files = listJsFiles(vol, packageDir);\r\n  onProgress?.(`  Converting ${files.length} files in ${packageDir}...`);\r\n\r\n  // \"type\":\"module\" packages stay as ESM in VFS -- tools like Vite read them\r\n  // directly and expect ESM syntax. require() handles conversion at runtime.\r\n  const esmPackage = isEsmPackage(vol, packageDir);\r\n\r\n  const BATCH = 50;\r\n  for (let i = 0; i < files.length; i += BATCH) {\r\n    const batch = files.slice(i, i + BATCH);\r\n    await Promise.all(\r\n      batch.map(async (fp) => {\r\n        try {\r\n          const src = vol.readFileSync(fp, \"utf8\");\r\n\r\n          if (esmPackage) {\r\n            if (needsBuiltinPatching(src)) {\r\n              vol.writeFileSync(fp, patchBuiltinImports(src));\r\n              converted++;\r\n            }\r\n            return;\r\n          }\r\n\r\n          // .mjs stays ESM even in non-ESM packages\r\n          if (fp.endsWith(\".mjs\")) {\r\n            if (needsBuiltinPatching(src)) {\r\n              vol.writeFileSync(fp, patchBuiltinImports(src));\r\n              converted++;\r\n            }\r\n            return;\r\n          }\r\n\r\n          if (requiresConversion(fp, src)) {\r\n            const out = await convertFile(src, fp);\r\n            vol.writeFileSync(fp, out);\r\n            converted++;\r\n          } else if (needsBuiltinPatching(src)) {\r\n            vol.writeFileSync(fp, patchBuiltinImports(src));\r\n            converted++;\r\n          }\r\n        } catch {\r\n        }\r\n      }),\r\n    );\r\n  }\r\n\r\n  return converted;\r\n}\r\n","// Flat binary snapshots for the persistence layer: one ArrayBuffer of file\r\n// contents plus an offset manifest — no base64 inflation, IDB stores the\r\n// buffer natively. Same wire shape as the spawn snapshot (VFSBinarySnapshot)\r\n// but built/applied with a path filter so it can carry just node_modules.\r\n\r\nimport type { MemoryVolume } from \"../memory-volume\";\r\nimport type { VFSBinarySnapshot } from \"../threading/worker-protocol\";\r\n\r\n// Collect all paths matching `filter` into a binary snapshot. Directories\r\n// matching the filter are recorded as empty entries so restores can recreate\r\n// empty dirs.\r\nexport function createFilteredBinarySnapshot(\r\n  vol: MemoryVolume,\r\n  filter: (path: string) => boolean,\r\n): VFSBinarySnapshot {\r\n  const manifest: VFSBinarySnapshot[\"manifest\"] = [];\r\n  const chunks: Uint8Array[] = [];\r\n  let totalSize = 0;\r\n\r\n  const walk = (dir: string): void => {\r\n    let entries: string[];\r\n    try {\r\n      entries = vol.readdirSync(dir);\r\n    } catch {\r\n      return;\r\n    }\r\n    for (const name of entries) {\r\n      const fullPath = dir === \"/\" ? `/${name}` : `${dir}/${name}`;\r\n      let isDir = false;\r\n      try {\r\n        isDir = vol.statSync(fullPath).isDirectory();\r\n      } catch {\r\n        continue;\r\n      }\r\n      if (isDir) {\r\n        if (filter(fullPath)) {\r\n          manifest.push({ path: fullPath, offset: 0, length: 0, isDirectory: true });\r\n        }\r\n        walk(fullPath);\r\n      } else if (filter(fullPath)) {\r\n        let content: Uint8Array;\r\n        try {\r\n          content = vol.readFileSync(fullPath);\r\n        } catch {\r\n          continue;\r\n        }\r\n        manifest.push({\r\n          path: fullPath,\r\n          offset: totalSize,\r\n          length: content.byteLength,\r\n          isDirectory: false,\r\n        });\r\n        chunks.push(content);\r\n        totalSize += content.byteLength;\r\n      }\r\n    }\r\n  };\r\n  walk(\"/\");\r\n\r\n  const data = new ArrayBuffer(totalSize);\r\n  const view = new Uint8Array(data);\r\n  let offset = 0;\r\n  for (const chunk of chunks) {\r\n    view.set(chunk, offset);\r\n    offset += chunk.byteLength;\r\n  }\r\n\r\n  return { manifest, data };\r\n}\r\n\r\n// Merge a binary snapshot into a live volume: creates dirs/files from the\r\n// snapshot, overwrites files it carries, leaves everything else untouched.\r\n// (fromBinarySnapshot builds a NEW volume — the spawn path keeps that\r\n// semantics; this is the merge-into-existing variant.)\r\nexport function restoreBinarySnapshot(\r\n  vol: MemoryVolume,\r\n  snapshot: VFSBinarySnapshot,\r\n): number {\r\n  const fullData = new Uint8Array(snapshot.data);\r\n\r\n  const sorted = [...snapshot.manifest].sort((a, b) => {\r\n    if (a.isDirectory && !b.isDirectory) return -1;\r\n    if (!a.isDirectory && b.isDirectory) return 1;\r\n    return a.path.split(\"/\").length - b.path.split(\"/\").length;\r\n  });\r\n\r\n  let restored = 0;\r\n  for (const entry of sorted) {\r\n    if (entry.path === \"/\") continue;\r\n    try {\r\n      if (entry.isDirectory) {\r\n        if (!vol.existsSync(entry.path)) {\r\n          vol.mkdirSync(entry.path, { recursive: true });\r\n        }\r\n      } else {\r\n        const parentDir = entry.path.substring(0, entry.path.lastIndexOf(\"/\")) || \"/\";\r\n        if (parentDir !== \"/\" && !vol.existsSync(parentDir)) {\r\n          vol.mkdirSync(parentDir, { recursive: true });\r\n        }\r\n        vol.writeFileSync(\r\n          entry.path,\r\n          fullData.slice(entry.offset, entry.offset + entry.length),\r\n        );\r\n      }\r\n      restored++;\r\n    } catch {\r\n      // per-entry failures shouldn't abort the whole restore\r\n    }\r\n  }\r\n  return restored;\r\n}\r\n","// Dependency Installer\r\n// Handles the full install lifecycle: resolve, download, extract, transform, bin stubs, lock file.\r\n\r\nimport { MemoryVolume } from \"../memory-volume\";\r\nimport { RegistryClient, RegistryConfig } from \"./registry-client\";\r\nimport {\r\n  resolveDependencyTree,\r\n  resolveFromManifest,\r\n  ResolvedDependency,\r\n  ResolutionConfig,\r\n} from \"./version-resolver\";\r\nimport { downloadAndExtract } from \"./archive-extractor\";\r\nimport { convertPackage, prepareTransformer } from \"../module-transformer\";\r\nimport type { PackageManifest } from \"../types/manifest\";\r\nimport * as path from \"../polyfills/path\";\r\nimport type { IDBSnapshotCache } from \"../persistence/idb-cache\";\r\nimport { quickDigest } from \"../helpers/digest\";\r\nimport {\r\n  createFilteredBinarySnapshot,\r\n  restoreBinarySnapshot,\r\n} from \"../persistence/binary-snapshot\";\r\nimport { getTarballCache } from \"../persistence/tarball-cache\";\r\n\r\n// ---------------------------------------------------------------------------\r\n// Public types\r\n// ---------------------------------------------------------------------------\r\n\r\nexport interface InstallFlags {\r\n  registry?: string;\r\n  persist?: boolean;\r\n  persistDev?: boolean;\r\n  withDevDeps?: boolean;\r\n  withOptionalDeps?: boolean;\r\n  onProgress?: (message: string) => void;\r\n  /**\r\n   * Module transform timing. Default is lazy: install only downloads and\r\n   * extracts; the runtime module loader converts ESM/CJS on first require()\r\n   * (and caches it). Pass \"eager\" (or the legacy `true`) to run esbuild over\r\n   * every installed file at install time like before.\r\n   */\r\n  transformModules?: boolean | \"eager\";\r\n}\r\n\r\n// \"eager\" | true → install-time transforms; false | undefined → lazy (default)\r\nexport function isEagerTransform(value: boolean | \"eager\" | undefined): boolean {\r\n  return value === \"eager\" || value === true;\r\n}\r\n\r\nexport interface InstallOutcome {\r\n  resolved: Map<string, ResolvedDependency>;\r\n  newPackages: string[];\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Helpers\r\n// ---------------------------------------------------------------------------\r\n\r\n// Normalize bin field — handles both shorthand string and object forms\r\nfunction normalizeBinField(\r\n  packageName: string,\r\n  bin?: string | Record<string, string>,\r\n): Record<string, string> {\r\n  if (!bin) return {};\r\n  if (typeof bin === \"string\") {\r\n    const command = packageName.includes(\"/\")\r\n      ? packageName.split(\"/\").pop()!\r\n      : packageName;\r\n    return { [command]: bin };\r\n  }\r\n  return bin;\r\n}\r\n\r\n// Walk up from a package directory to the enclosing `node_modules` folder.\r\n// Handles scoped packages (whose direct parent is the scope dir, not\r\n// node_modules) and nested placements like `.../foo/node_modules/bar`.\r\nfunction enclosingNodeModules(pkgDir: string): string {\r\n  let dir = path.dirname(pkgDir);\r\n  while (dir !== \"/\" && dir !== \"\" && path.basename(dir) !== \"node_modules\") {\r\n    const parent = path.dirname(dir);\r\n    if (parent === dir) break;\r\n    dir = parent;\r\n  }\r\n  return dir;\r\n}\r\n\r\n// Split \"express@4.18.2\" or \"@types/node@20\" into name + version\r\nfunction splitSpecifier(spec: string): { name: string; version?: string } {\r\n  if (spec.startsWith(\"@\")) {\r\n    const slashIdx = spec.indexOf(\"/\");\r\n    if (slashIdx === -1)\r\n      throw new Error(`Malformed package specifier: ${spec}`);\r\n\r\n    const tail = spec.slice(slashIdx + 1);\r\n    const atIdx = tail.indexOf(\"@\");\r\n    if (atIdx === -1) return { name: spec };\r\n    return {\r\n      name: spec.slice(0, slashIdx + 1 + atIdx),\r\n      version: tail.slice(atIdx + 1),\r\n    };\r\n  }\r\n\r\n  const atIdx = spec.indexOf(\"@\");\r\n  if (atIdx === -1) return { name: spec };\r\n  return {\r\n    name: spec.slice(0, atIdx),\r\n    version: spec.slice(atIdx + 1),\r\n  };\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Main class\r\n// ---------------------------------------------------------------------------\r\n\r\nlet transformerReady = false;\r\n\r\nexport class DependencyInstaller {\r\n  private vol: MemoryVolume;\r\n  private registryClient: RegistryClient;\r\n  private workingDir: string;\r\n  private _snapshotCache: IDBSnapshotCache | null;\r\n\r\n  constructor(vol: MemoryVolume, opts: { cwd?: string; snapshotCache?: IDBSnapshotCache | null } & RegistryConfig = {}) {\r\n    this.vol = vol;\r\n    this.registryClient = new RegistryClient(opts);\r\n    this.workingDir = opts.cwd || \"/\";\r\n    this._snapshotCache = opts.snapshotCache ?? null;\r\n  }\r\n\r\n  // -----------------------------------------------------------------------\r\n  // Public API\r\n  // -----------------------------------------------------------------------\r\n\r\n  async install(\r\n    packageName: string,\r\n    version?: string,\r\n    flags: InstallFlags = {},\r\n  ): Promise<InstallOutcome> {\r\n    const { onProgress } = flags;\r\n\r\n    const spec = splitSpecifier(packageName);\r\n    const targetName = spec.name;\r\n    const targetRange = version || spec.version || \"latest\";\r\n\r\n    onProgress?.(`Resolving ${targetName}@${targetRange}...`);\r\n\r\n    const resolutionOpts: ResolutionConfig = {\r\n      registry: flags.registry\r\n        ? new RegistryClient({ endpoint: flags.registry })\r\n        : this.registryClient,\r\n      devDependencies: flags.withDevDeps,\r\n      optionalDependencies: flags.withOptionalDeps,\r\n      onProgress,\r\n    };\r\n\r\n    const tree = await resolveDependencyTree(\r\n      targetName,\r\n      targetRange,\r\n      resolutionOpts,\r\n    );\r\n\r\n    // snapshot cache keyed by the resolved package set — skips download,\r\n    // extract, and transform on warm runs (resolution still hit the registry).\r\n    // TODO(follow-up): upgrade quickDigest to SHA-256 via sync-digest.ts\r\n    const treeKey = this._snapshotCache\r\n      ? \"tree:\" + quickDigest(\r\n          [...tree].map(([n, d]) => `${n}@${d.version}`).sort().join(\",\") +\r\n            \"|\" + this.workingDir,\r\n        )\r\n      : null;\r\n\r\n    if (this._snapshotCache && treeKey) {\r\n      try {\r\n        const cached = await this._snapshotCache.get(treeKey);\r\n        if (cached) {\r\n          onProgress?.(\"Restoring cached packages...\");\r\n          const restored = restoreBinarySnapshot(this.vol, cached);\r\n          // bin stubs + lock file are deterministic — recreate from the tree\r\n          const nmRoot = path.join(this.workingDir, \"node_modules\");\r\n          for (const [depName] of tree) {\r\n            this.createBinStubs(nmRoot, depName, path.join(nmRoot, depName));\r\n          }\r\n          this.writeLockFile(tree);\r\n          if (flags.persist || flags.persistDev) {\r\n            const entry = tree.get(targetName);\r\n            if (entry) {\r\n              await this.patchManifest(targetName, `^${entry.version}`, !!flags.persistDev);\r\n            }\r\n          }\r\n          onProgress?.(`Restored ${restored} cached entries`);\r\n          return { resolved: tree, newPackages: [] };\r\n        }\r\n      } catch {\r\n        // cache error — proceed with normal install\r\n      }\r\n    }\r\n\r\n    const newPkgs = await this.materializePackages(tree, flags);\r\n\r\n    // cache just this tree's package dirs so unrelated node_modules content\r\n    // from the session doesn't leak into the entry\r\n    if (this._snapshotCache && treeKey && newPkgs.length > 0) {\r\n      try {\r\n        const nmRoot = path.join(this.workingDir, \"node_modules\");\r\n        const prefixes = [...tree.keys()].map((n) => path.join(nmRoot, n));\r\n        const snapshot = createFilteredBinarySnapshot(this.vol, (p) =>\r\n          prefixes.some((prefix) => p === prefix || p.startsWith(prefix + \"/\")),\r\n        );\r\n        await this._snapshotCache.set(treeKey, snapshot);\r\n      } catch { /* cache write failure is non-fatal */ }\r\n    }\r\n\r\n    if (flags.persist || flags.persistDev) {\r\n      const entry = tree.get(targetName);\r\n      if (entry) {\r\n        await this.patchManifest(\r\n          targetName,\r\n          `^${entry.version}`,\r\n          !!flags.persistDev,\r\n        );\r\n      }\r\n    }\r\n\r\n    onProgress?.(`Installed ${tree.size} package(s)`);\r\n\r\n    return { resolved: tree, newPackages: newPkgs };\r\n  }\r\n\r\n  async installFromManifest(\r\n    manifestPath?: string,\r\n    flags: InstallFlags = {},\r\n  ): Promise<InstallOutcome> {\r\n    const { onProgress } = flags;\r\n\r\n    const jsonPath = manifestPath || path.join(this.workingDir, \"package.json\");\r\n\r\n    if (!this.vol.existsSync(jsonPath)) {\r\n      throw new Error(`Manifest not found at ${jsonPath}`);\r\n    }\r\n\r\n    const raw = this.vol.readFileSync(jsonPath, \"utf8\");\r\n    const manifest: PackageManifest = JSON.parse(raw);\r\n\r\n    // Check IDB snapshot cache — skip full install if we have a cached node_modules\r\n    const cacheKey = this._snapshotCache ? quickDigest(raw) : null;\r\n    if (this._snapshotCache && cacheKey) {\r\n      try {\r\n        const cached = await this._snapshotCache.get(cacheKey);\r\n        if (cached) {\r\n          onProgress?.(\"Restoring cached node_modules...\");\r\n          const restored = restoreBinarySnapshot(this.vol, cached);\r\n          onProgress?.(`Restored ${restored} cached entries`);\r\n          return { resolved: new Map(), newPackages: [] };\r\n        }\r\n      } catch {\r\n        // Cache miss or error — proceed with normal install\r\n      }\r\n    }\r\n\r\n    onProgress?.(\"Resolving dependency tree...\");\r\n\r\n    const resolutionOpts: ResolutionConfig = {\r\n      registry: flags.registry\r\n        ? new RegistryClient({ endpoint: flags.registry })\r\n        : this.registryClient,\r\n      devDependencies: flags.withDevDeps,\r\n      optionalDependencies: flags.withOptionalDeps,\r\n      onProgress,\r\n    };\r\n\r\n    const tree = await resolveFromManifest(manifest, resolutionOpts);\r\n\r\n    const newPkgs = await this.materializePackages(tree, flags);\r\n\r\n    // Cache the installed node_modules snapshot for future reuse (raw bytes,\r\n    // no base64 — restores go through the bulk binary path)\r\n    if (this._snapshotCache && cacheKey && newPkgs.length > 0) {\r\n      try {\r\n        const snapshot = createFilteredBinarySnapshot(this.vol, (p) =>\r\n          p.includes(\"/node_modules/\"),\r\n        );\r\n        await this._snapshotCache.set(cacheKey, snapshot);\r\n      } catch { /* cache write failure is non-fatal */ }\r\n    }\r\n\r\n    onProgress?.(`Installed ${tree.size} package(s)`);\r\n\r\n    return { resolved: tree, newPackages: newPkgs };\r\n  }\r\n\r\n  listInstalled(): Record<string, string> {\r\n    const nmDir = path.join(this.workingDir, \"node_modules\");\r\n    if (!this.vol.existsSync(nmDir)) return {};\r\n\r\n    const result: Record<string, string> = {};\r\n    const topLevel = this.vol.readdirSync(nmDir) as string[];\r\n\r\n    for (const entry of topLevel) {\r\n      if (entry.startsWith(\".\")) continue;\r\n\r\n      if (entry.startsWith(\"@\")) {\r\n        const scopeDir = path.join(nmDir, entry);\r\n        const scopedEntries = this.vol.readdirSync(scopeDir) as string[];\r\n        for (const child of scopedEntries) {\r\n          const manifest = path.join(scopeDir, child, \"package.json\");\r\n          if (this.vol.existsSync(manifest)) {\r\n            const data = JSON.parse(this.vol.readFileSync(manifest, \"utf8\"));\r\n            result[`${entry}/${child}`] = data.version;\r\n          }\r\n        }\r\n      } else {\r\n        const manifest = path.join(nmDir, entry, \"package.json\");\r\n        if (this.vol.existsSync(manifest)) {\r\n          const data = JSON.parse(this.vol.readFileSync(manifest, \"utf8\"));\r\n          result[entry] = data.version;\r\n        }\r\n      }\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n  // -----------------------------------------------------------------------\r\n  // Private helpers\r\n  // -----------------------------------------------------------------------\r\n\r\n  // Download, extract, transform, and wire up packages not already in node_modules\r\n  private async materializePackages(\r\n    tree: Map<string, ResolvedDependency>,\r\n    flags: InstallFlags,\r\n  ): Promise<string[]> {\r\n    const { onProgress } = flags;\r\n    const additions: string[] = [];\r\n\r\n    const nmRoot = path.join(this.workingDir, \"node_modules\");\r\n    this.vol.mkdirSync(nmRoot, { recursive: true });\r\n\r\n    const pending: Array<{\r\n      depName: string;\r\n      dep: ResolvedDependency;\r\n      targetDir: string;\r\n    }> = [];\r\n\r\n    for (const [depName, dep] of tree) {\r\n      const targetDir = path.join(nmRoot, depName);\r\n      const existingManifest = path.join(targetDir, \"package.json\");\r\n\r\n      if (this.vol.existsSync(existingManifest)) {\r\n        try {\r\n          const current = JSON.parse(\r\n            this.vol.readFileSync(existingManifest, \"utf8\"),\r\n          );\r\n          if (current.version === dep.version) {\r\n            onProgress?.(`Skipping ${depName}@${dep.version} (up to date)`);\r\n            continue;\r\n          }\r\n        } catch {\r\n          // corrupt manifest, reinstall\r\n        }\r\n      }\r\n\r\n      pending.push({ depName, dep, targetDir });\r\n    }\r\n\r\n    // Only need main-thread transformer as fallback when workers aren't available\r\n    const shouldTransform = isEagerTransform(flags.transformModules);\r\n    if (shouldTransform && !transformerReady) {\r\n      if (typeof Worker === \"undefined\") {\r\n        onProgress?.(\"Preparing module transformer...\");\r\n        await prepareTransformer();\r\n      }\r\n      transformerReady = true;\r\n    }\r\n\r\n    // Safe to batch aggressively since extract + transform are offloaded to workers\r\n    const WORKER_COUNT = 12;\r\n    onProgress?.(`Downloading ${pending.length} package(s)...`);\r\n\r\n    for (let offset = 0; offset < pending.length; offset += WORKER_COUNT) {\r\n      const batch = pending.slice(offset, offset + WORKER_COUNT);\r\n\r\n      await Promise.all(\r\n        batch.map(async ({ depName, dep, targetDir }) => {\r\n          onProgress?.(`  Fetching ${depName}@${dep.version}...`);\r\n\r\n          await downloadAndExtract(dep.tarballUrl, this.vol, targetDir, {\r\n            stripComponents: 1,\r\n            expectedShasum: dep.shasum,\r\n          });\r\n\r\n          if (shouldTransform) {\r\n            try {\r\n              const transformed = await convertPackage(\r\n                this.vol,\r\n                targetDir,\r\n                onProgress,\r\n              );\r\n              if (transformed > 0) {\r\n                onProgress?.(\r\n                  `  Transformed ${transformed} file(s) in ${depName}`,\r\n                );\r\n              }\r\n            } catch (err) {\r\n              onProgress?.(\r\n                `  Warning: transformation failed for ${depName}: ${err}`,\r\n              );\r\n            }\r\n          }\r\n\r\n          this.createBinStubs(nmRoot, depName, targetDir);\r\n\r\n          additions.push(depName);\r\n        }),\r\n      );\r\n    }\r\n\r\n    this.writeLockFile(tree);\r\n\r\n    // keep the tarball cache under its byte/age budget (fire and forget)\r\n    if (additions.length > 0) {\r\n      getTarballCache()\r\n        .then((cache) => cache?.prune())\r\n        .catch(() => {});\r\n    }\r\n\r\n    return additions;\r\n  }\r\n\r\n  private createBinStubs(\r\n    _nmRoot: string,\r\n    depName: string,\r\n    pkgDir: string,\r\n  ): void {\r\n    try {\r\n      const manifestPath = path.join(pkgDir, \"package.json\");\r\n      if (!this.vol.existsSync(manifestPath)) return;\r\n\r\n      const data = JSON.parse(this.vol.readFileSync(manifestPath, \"utf8\"));\r\n      const bins = normalizeBinField(depName, data.bin);\r\n      // Bin stubs live alongside the enclosing node_modules so nested\r\n      // deps (e.g. ember-cli/node_modules/foo) get their bins in the\r\n      // parent's .bin, not the top-level one where they'd collide with a\r\n      // hoisted version.\r\n      const binDir = path.join(enclosingNodeModules(pkgDir), \".bin\");\r\n\r\n      for (const [cmd, relPath] of Object.entries(bins)) {\r\n        this.vol.mkdirSync(binDir, { recursive: true });\r\n        const target = path.join(pkgDir, relPath);\r\n        this.vol.writeFileSync(\r\n          path.join(binDir, cmd),\r\n          `node \"${target}\" \"$@\"\\n`,\r\n        );\r\n      }\r\n    } catch {\r\n      // best-effort\r\n    }\r\n  }\r\n\r\n  private writeLockFile(tree: Map<string, ResolvedDependency>): void {\r\n    const entries: Record<string, { version: string; resolved: string }> = {};\r\n\r\n    for (const [depName, dep] of tree) {\r\n      entries[depName] = {\r\n        version: dep.version,\r\n        resolved: dep.tarballUrl,\r\n      };\r\n    }\r\n\r\n    const lockPath = path.join(\r\n      this.workingDir,\r\n      \"node_modules\",\r\n      \".package-lock.json\",\r\n    );\r\n    this.vol.writeFileSync(lockPath, JSON.stringify(entries, null, 2));\r\n  }\r\n\r\n  private async patchManifest(\r\n    depName: string,\r\n    versionSpec: string,\r\n    asDev: boolean,\r\n  ): Promise<void> {\r\n    const jsonPath = path.join(this.workingDir, \"package.json\");\r\n\r\n    let manifest: Record<string, unknown> = {};\r\n    if (this.vol.existsSync(jsonPath)) {\r\n      manifest = JSON.parse(this.vol.readFileSync(jsonPath, \"utf8\"));\r\n    }\r\n\r\n    const section = asDev ? \"devDependencies\" : \"dependencies\";\r\n    if (!manifest[section]) {\r\n      manifest[section] = {};\r\n    }\r\n    (manifest[section] as Record<string, string>)[depName] = versionSpec;\r\n\r\n    this.vol.writeFileSync(jsonPath, JSON.stringify(manifest, null, 2));\r\n  }\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Convenience function\r\n// ---------------------------------------------------------------------------\r\n\r\n// One-shot install: `install(\"express@4.18.2\", vol)`\r\nexport async function install(\r\n  specifier: string,\r\n  vol: MemoryVolume,\r\n  flags?: InstallFlags,\r\n): Promise<InstallOutcome> {\r\n  const installer = new DependencyInstaller(vol);\r\n  return installer.install(specifier, undefined, flags);\r\n}\r\n\r\nexport { RegistryClient } from \"./registry-client\";\r\nexport type {\r\n  RegistryConfig,\r\n  VersionDetail,\r\n  PackageMetadata,\r\n} from \"./registry-client\";\r\nexport type { ResolvedDependency, ResolutionConfig } from \"./version-resolver\";\r\nexport type { ExtractionOptions } from \"./archive-extractor\";\r\nexport { splitSpecifier };\r\n","// Error thrown when Nodepod.boot() can't reach /__sw__.js. Includes a\r\n// framework-specific hint so the user knows which one-liner to add.\r\n\r\nexport type NodepodSWFrameworkHint = \"vite\" | \"next\" | \"generic\";\r\n\r\nexport interface NodepodSWSetupErrorDetails {\r\n  swUrl: string;\r\n  status?: number;\r\n  contentType?: string;\r\n  /** Underlying network/abort error, if the preflight never got a response. */\r\n  cause?: unknown;\r\n  framework: NodepodSWFrameworkHint;\r\n}\r\n\r\nconst HINTS: Record<NodepodSWFrameworkHint, string> = {\r\n  vite: [\r\n    \"Detected Vite. Add the nodepod plugin to serve __sw__.js automatically:\",\r\n    \"\",\r\n    \"  // vite.config.ts\",\r\n    \"  import nodepod from '@scelar/nodepod/vite';\",\r\n    \"  export default defineConfig({ plugins: [nodepod()] });\",\r\n  ].join(\"\\n\"),\r\n  next: [\r\n    \"Detected Next.js. Add a route handler to serve __sw__.js:\",\r\n    \"\",\r\n    \"  // app/__sw__.js/route.ts\",\r\n    \"  export { GET } from '@scelar/nodepod/next';\",\r\n    \"\",\r\n    \"Or compose `nodepodProxy` (Next 16+, proxy.ts) / `nodepodMiddleware`\",\r\n    \"(Next <=15, middleware.ts) alongside your own handler.\",\r\n  ].join(\"\\n\"),\r\n  generic: [\r\n    \"No recognised framework detected. Either:\",\r\n    \"\",\r\n    \"  1. Mount the framework-agnostic handler:\",\r\n    \"       import { serveSW } from '@scelar/nodepod/server';\",\r\n    \"       app.get('/__sw__.js', () => serveSW());\",\r\n    \"\",\r\n    \"  2. Or copy node_modules/@scelar/nodepod/dist/__sw__.js\",\r\n    \"     into your public/ (or static/) directory so it's served at /__sw__.js\",\r\n    \"     from the same origin as your page.\",\r\n  ].join(\"\\n\"),\r\n};\r\n\r\nexport class NodepodSWSetupError extends Error {\r\n  readonly details: NodepodSWSetupErrorDetails;\r\n\r\n  constructor(message: string, details: NodepodSWSetupErrorDetails) {\r\n    super(message);\r\n    this.name = \"NodepodSWSetupError\";\r\n    this.details = details;\r\n    if (details.cause !== undefined) {\r\n      (this as { cause?: unknown }).cause = details.cause;\r\n    }\r\n  }\r\n\r\n  override toString(): string {\r\n    const { swUrl, status, contentType, framework } = this.details;\r\n    const lines: string[] = [\r\n      `NodepodSWSetupError: ${this.message}`,\r\n      \"\",\r\n      `  Requested:    ${swUrl}`,\r\n    ];\r\n    if (status !== undefined) {\r\n      lines.push(`  HTTP status:  ${status}`);\r\n    }\r\n    if (contentType !== undefined) {\r\n      lines.push(`  Content-Type: ${contentType}`);\r\n    }\r\n    lines.push(\"\", HINTS[framework]);\r\n    return lines.join(\"\\n\");\r\n  }\r\n}\r\n\r\n/**\r\n * Guess which framework hint to show by sniffing the current runtime.\r\n * Defaults to \"generic\" if nothing matches.\r\n */\r\nexport function detectFrameworkHint(): NodepodSWFrameworkHint {\r\n  try {\r\n    const w = typeof window !== \"undefined\"\r\n      ? (window as unknown as Record<string, unknown>)\r\n      : null;\r\n    if (w) {\r\n      if (\r\n        \"__vite_plugin_react_preamble_installed__\" in w ||\r\n        \"__VITE_PRELOAD__\" in w ||\r\n        \"__vite_is_modern_browser\" in w\r\n      ) {\r\n        return \"vite\";\r\n      }\r\n      if (\r\n        \"next\" in w ||\r\n        \"__NEXT_DATA__\" in w ||\r\n        \"__NEXT_ROUTER_BASEPATH__\" in w\r\n      ) {\r\n        return \"next\";\r\n      }\r\n    }\r\n  } catch {\r\n    // detection must never throw\r\n  }\r\n  return \"generic\";\r\n}\r\n","/** In-memory cookie jar for virtual dev-server origins (instance + port). */\r\n\r\nimport { splitCookiesString } from \"set-cookie-parser\";\r\n\r\nexport type CookieRecord = {\r\n  value: string;\r\n  path: string;\r\n  expires: number | null;\r\n};\r\n\r\nexport function cookieJarKey(instanceId: string, serverPort: number | string): string {\r\n  return `${instanceId}\\u0000${serverPort}`;\r\n}\r\n\r\nexport function parseSetCookie(raw: string): { name: string; rec: CookieRecord } | null {\r\n  const str = String(raw);\r\n  const semi = str.split(\";\");\r\n  const nameValue = semi.shift();\r\n  if (nameValue == null) return null;\r\n  const eq = nameValue.indexOf(\"=\");\r\n  if (eq < 0) return null;\r\n  const name = nameValue.slice(0, eq).trim();\r\n  if (!name) return null;\r\n  const value = nameValue.slice(eq + 1).trim();\r\n\r\n  const rec: CookieRecord = { value, path: \"/\", expires: null };\r\n  let maxAge: number | null = null;\r\n  let expiresAttr: number | null = null;\r\n  for (const attr of semi) {\r\n    const i = attr.indexOf(\"=\");\r\n    const key = (i < 0 ? attr : attr.slice(0, i)).trim().toLowerCase();\r\n    const val = i < 0 ? \"\" : attr.slice(i + 1).trim();\r\n    if (key === \"path\") {\r\n      rec.path = val || \"/\";\r\n    } else if (key === \"max-age\") {\r\n      const secs = parseInt(val, 10);\r\n      // Max-Age=0 (or negative) means delete immediately — use 0 as sentinel.\r\n      if (!Number.isNaN(secs)) maxAge = secs <= 0 ? 0 : Date.now() + secs * 1000;\r\n    } else if (key === \"expires\") {\r\n      const t = Date.parse(val);\r\n      if (!Number.isNaN(t)) expiresAttr = t;\r\n    }\r\n  }\r\n  rec.expires = maxAge !== null ? maxAge : expiresAttr;\r\n  return { name, rec };\r\n}\r\n\r\nexport function cookiePathMatches(requestPath: string, cookiePath: string): boolean {\r\n  if (cookiePath === requestPath) return true;\r\n  if (requestPath.indexOf(cookiePath) === 0) {\r\n    if (cookiePath.charAt(cookiePath.length - 1) === \"/\") return true;\r\n    if (requestPath.charAt(cookiePath.length) === \"/\") return true;\r\n  }\r\n  return false;\r\n}\r\n\r\nexport function buildCookieHeader(\r\n  jar: Map<string, CookieRecord> | undefined,\r\n  path: string,\r\n): string {\r\n  if (!jar || jar.size === 0) return \"\";\r\n  const now = Date.now();\r\n  const reqPath = (String(path).split(\"?\")[0] || \"/\") as string;\r\n  const out: string[] = [];\r\n  for (const [name, rec] of jar) {\r\n    if (rec.expires === 0 || (rec.expires !== null && rec.expires <= now)) {\r\n      jar.delete(name);\r\n      continue;\r\n    }\r\n    if (!cookiePathMatches(reqPath, rec.path)) continue;\r\n    out.push(`${name}=${rec.value}`);\r\n  }\r\n  return out.join(\"; \");\r\n}\r\n\r\nexport function mergeCookieHeaders(\r\n  browserCookie: string | undefined,\r\n  jarCookie: string,\r\n): string {\r\n  if (!jarCookie) return browserCookie || \"\";\r\n  if (!browserCookie) return jarCookie;\r\n  const seen = new Set<string>();\r\n  const pairs: string[] = [];\r\n  for (const part of jarCookie.split(\";\")) {\r\n    const p = part.trim();\r\n    if (!p) continue;\r\n    const eq = p.indexOf(\"=\");\r\n    const name = (eq < 0 ? p : p.slice(0, eq)).trim();\r\n    seen.add(name);\r\n    pairs.push(p);\r\n  }\r\n  for (const part of browserCookie.split(\";\")) {\r\n    const p = part.trim();\r\n    if (!p) continue;\r\n    const eq = p.indexOf(\"=\");\r\n    const name = (eq < 0 ? p : p.slice(0, eq)).trim();\r\n    if (seen.has(name)) continue;\r\n    pairs.push(p);\r\n  }\r\n  return pairs.join(\"; \");\r\n}\r\n\r\nexport class VirtualCookieJar {\r\n  private _jars = new Map<string, Map<string, CookieRecord>>();\r\n\r\n  store(\r\n    instanceId: string,\r\n    serverPort: number | string,\r\n    setCookieValue: string | string[] | undefined,\r\n  ): void {\r\n    if (setCookieValue == null) return;\r\n    const list = Array.isArray(setCookieValue)\r\n      ? setCookieValue.flatMap((v) => splitCookiesString(v))\r\n      : splitCookiesString(setCookieValue);\r\n    const key = cookieJarKey(instanceId, serverPort);\r\n    let jar = this._jars.get(key);\r\n    if (!jar) {\r\n      jar = new Map();\r\n      this._jars.set(key, jar);\r\n    }\r\n    for (const raw of list) {\r\n      const parsed = parseSetCookie(raw);\r\n      if (!parsed) continue;\r\n      const { name, rec } = parsed;\r\n      if (\r\n        rec.expires === 0 ||\r\n        (rec.expires !== null && rec.expires <= Date.now())\r\n      ) {\r\n        jar.delete(name);\r\n      } else {\r\n        jar.set(name, rec);\r\n      }\r\n    }\r\n    if (jar.size === 0) this._jars.delete(key);\r\n  }\r\n\r\n  cookieHeader(instanceId: string, serverPort: number | string, path: string): string {\r\n    return buildCookieHeader(this._jars.get(cookieJarKey(instanceId, serverPort)), path);\r\n  }\r\n\r\n  clearInstance(instanceId: string): void {\r\n    for (const key of [...this._jars.keys()]) {\r\n      if (key.startsWith(instanceId + \"\\u0000\")) this._jars.delete(key);\r\n    }\r\n  }\r\n\r\n  clearAll(): void {\r\n    this._jars.clear();\r\n  }\r\n}\r\n","// bridges Service Worker HTTP requests to virtual servers.\n// intercepts browser fetches via SW and routes them to the http polyfill's server registry.\n//\n// multi-tenant: one RequestProxy singleton (one SW per scope), state is\n// multiplexed across N Nodepods by instanceId. each Nodepod attach()/detach()s\n// and routes its servers/preview scripts/WS bridge under its own id. SW fetches\n// carry /__virtual__/{instanceId}/{port}/... back to the right instance.\n// Legacy /__virtual__/{port}/... falls back to DEFAULT_INSTANCE.\n\nimport type { CompletedResponse } from \"./polyfills/http\";\nimport {\n  Server,\n  setServerListenCallback,\n  setServerCloseCallback,\n  getServer,\n  encodeFrame,\n  decodeFrame,\n} from \"./polyfills/http\";\nimport { EventEmitter } from \"./polyfills/events\";\nimport { Buffer } from \"./polyfills/buffer\";\nimport { bytesToBase64 } from \"./helpers/byte-encoding\";\nimport { TIMEOUTS, WS_OPCODE } from \"./constants/config\";\nimport { createHash } from \"./polyfills/crypto\";\nimport {\n  NodepodSWSetupError,\n  detectFrameworkHint,\n} from \"./integrations/shared/errors\";\nimport {\n  VirtualCookieJar,\n  mergeCookieHeaders,\n} from \"./cookie-jar\";\nimport { recordToFetchHeaders } from \"./polyfills/fetch-response\";\n\nexport { NodepodSWSetupError };\nexport type { NodepodSWFrameworkHint } from \"./integrations/shared/errors\";\n\nconst _enc = new TextEncoder();\n\n/** used by legacy zero-arg callers (createWorkspace, setServerListenCallback).\n *  multi-tenant callers pass their own instanceId */\nexport const DEFAULT_INSTANCE = \"default\";\n\n/** id must be non-empty, url-safe, and have at least one non-digit so the url\n *  parser can tell it apart from a port number */\nfunction isValidInstanceId(id: string): boolean {\n  if (!id || !/^[A-Za-z0-9_-]+$/.test(id)) return false;\n  return /\\D/.test(id);\n}\n\nexport interface IVirtualServer {\n  listening: boolean;\n  address(): { port: number; address: string; family: string } | null;\n  dispatchRequest(\n    method: string,\n    url: string,\n    headers: Record<string, string>,\n    body?: Buffer | string,\n  ): Promise<CompletedResponse>;\n}\n\nexport interface RegisteredServer {\n  server: Server | IVirtualServer;\n  port: number;\n  hostname: string;\n}\n\nexport interface ProxyOptions {\n  baseUrl?: string;\n  onServerReady?: (port: number, url: string) => void;\n}\n\nexport interface ServiceWorkerConfig {\n  swUrl?: string;\n  /**\n   * Skip the HEAD preflight that checks /__sw__.js is served as JS.\n   * Opt in if your host blocks HEAD, needs auth, or otherwise trips the probe.\n   */\n  skipPreflight?: boolean;\n}\n\ninterface InstanceState {\n  processManager: any | null;\n  previewScript: string | null;\n  wsBridgeToken: string | null;\n  registry: Map<number, RegisteredServer>;\n  workerWsConns: Map<string, { pid: number }>;\n  wsConns: Map<\n    string,\n    { socket: import(\"./polyfills/net\").TcpSocket; cleanup: () => void }\n  >;\n  /** kept so detach() can remove it */\n  wsFrameListener: ((msg: any) => void) | null;\n}\n\nexport { CompletedResponse };\n\ntype HandleRequestOptions = {\n  /** when true, skip merging the local cookie jar into headers — SW\n   *  requests already carry the authoritative jar from proxyToVirtualServer */\n  skipCookieInject?: boolean;\n};\n\nexport class RequestProxy extends EventEmitter {\n  static DEBUG = false;\n  // ── Shared (process-wide) state ──\n  private baseUrl: string;\n  private opts: ProxyOptions;\n  private channel: MessageChannel | null = null;\n  private swReady = false;\n  private heartbeat: ReturnType<typeof setInterval> | null = null;\n  private _swAuthToken: string | null = null;\n  /** memoizes concurrent initServiceWorker() callers so N parallel boots\n   *  don't kick off N registrations that hang Chromium */\n  private _swInitPromise: Promise<void> | null = null;\n  /** global, not per-instance. last writer wins across tabs */\n  private _watermarkEnabled = true;\n  /** guards pagehide/beforeunload listener registration so reinit doesn't stack them */\n  private _farewellInstalled = false;\n  /** server-registered etc. that fire before swReady; flushed once the port is up */\n  private _pendingSwMessages: Array<{ type: string; data: unknown }> = [];\n\n  // ── Per-instance state, keyed by instanceId ──\n  private _instances = new Map<string, InstanceState>();\n\n  // ── WS bridge (one BroadcastChannel for the page, messages tagged per-instance) ──\n  private _wsBridge: BroadcastChannel | null = null;\n\n  /** In-memory cookie jar for virtual dev-server origins. Browsers ignore\n   *  Set-Cookie on synthetic SW responses, so we replay Cookie headers here. */\n  private _cookieJar = new VirtualCookieJar();\n\n  constructor(opts: ProxyOptions = {}) {\n    super();\n    this.opts = opts;\n    this.baseUrl =\n      typeof location !== \"undefined\"\n        ? opts.baseUrl || `${location.protocol}//${location.host}`\n        : opts.baseUrl || \"http://localhost\";\n\n    // legacy http polyfill callbacks fire only when main thread calls\n    // http.createServer().listen() directly (createWorkspace path). routed\n    // to DEFAULT_INSTANCE. Nodepod SDK uses register(instanceId, ...) instead\n    setServerListenCallback((port, srv) => this.register(srv, port));\n    setServerCloseCallback((port) => this.unregister(port));\n  }\n\n  private _getOrCreateInstance(instanceId: string): InstanceState {\n    let inst = this._instances.get(instanceId);\n    if (!inst) {\n      inst = {\n        processManager: null,\n        previewScript: null,\n        wsBridgeToken: null,\n        registry: new Map(),\n        workerWsConns: new Map(),\n        wsConns: new Map(),\n        wsFrameListener: null,\n      };\n      this._instances.set(instanceId, inst);\n    }\n    return inst;\n  }\n\n  // ── Instance lifecycle ──\n\n  /** attach a Nodepod to this proxy. idempotent: re-attaching with the same\n   *  id rewires the process manager but keeps registry/preview script etc */\n  attach(instanceId: string, processManager: any): void {\n    if (instanceId !== DEFAULT_INSTANCE && !isValidInstanceId(instanceId)) {\n      throw new Error(\n        `[RequestProxy] invalid instanceId ${JSON.stringify(instanceId)}: ` +\n          `must be URL-safe and contain at least one non-digit char`,\n      );\n    }\n    const inst = this._getOrCreateInstance(instanceId);\n\n    // drop the old ws-frame listener on re-attach\n    if (inst.processManager && inst.wsFrameListener) {\n      try {\n        inst.processManager.removeListener?.(\n          \"ws-frame\",\n          inst.wsFrameListener,\n        );\n      } catch {\n        /* */\n      }\n    }\n\n    inst.processManager = processManager;\n    const listener = (msg: any) => this._handleWorkerWsFrame(instanceId, msg);\n    inst.wsFrameListener = listener;\n    processManager.on(\"ws-frame\", listener);\n\n    // tell the SW which tab owns this instanceId so multi-tab fetches route\n    // correctly. without this Tab A's requests land on Tab B's RequestProxy\n    this.notifySW(\"claim-instance\", { instanceId });\n  }\n\n  /** detach an instance, unregister all its servers and tear down its ws\n   *  connections. safe on an unknown id */\n  detach(instanceId: string): void {\n    const inst = this._instances.get(instanceId);\n    if (!inst) return;\n\n    for (const port of [...inst.registry.keys()]) {\n      this.notifySW(\"server-unregistered\", { instanceId, port });\n    }\n    // release the routing claim so future fetches for this instance 503\n    // instead of hitting stale state\n    this.notifySW(\"release-instance\", { instanceId });\n\n    if (inst.processManager && inst.wsFrameListener) {\n      try {\n        inst.processManager.removeListener?.(\n          \"ws-frame\",\n          inst.wsFrameListener,\n        );\n      } catch {\n        /* */\n      }\n    }\n\n    for (const { cleanup } of inst.wsConns.values()) {\n      try {\n        cleanup();\n      } catch {\n        /* */\n      }\n    }\n\n    this._instances.delete(instanceId);\n  }\n\n  /** @deprecated use attach(instanceId, pm). legacy callers route to DEFAULT_INSTANCE */\n  setProcessManager(pm: any): void {\n    this.attach(DEFAULT_INSTANCE, pm);\n  }\n\n  // ── Server registration ──\n\n  register(\n    instanceId: string,\n    server: Server | IVirtualServer,\n    port: number,\n    hostname?: string,\n  ): void;\n  register(\n    server: Server | IVirtualServer,\n    port: number,\n    hostname?: string,\n  ): void;\n  register(...args: any[]): void {\n    let instanceId: string;\n    let server: Server | IVirtualServer;\n    let port: number;\n    let hostname: string;\n\n    if (typeof args[0] === \"string\") {\n      instanceId = args[0];\n      server = args[1];\n      port = args[2];\n      hostname = args[3] ?? \"0.0.0.0\";\n    } else {\n      instanceId = DEFAULT_INSTANCE;\n      server = args[0];\n      port = args[1];\n      hostname = args[2] ?? \"0.0.0.0\";\n    }\n\n    const inst = this._getOrCreateInstance(instanceId);\n    inst.registry.set(port, { server, port, hostname });\n    const url = this.serverUrl(instanceId, port);\n    // flat (port, url) shape kept for back-compat with existing listeners\n    this.emit(\"server-ready\", port, url);\n    this.opts.onServerReady?.(port, url);\n    this.notifySW(\"server-registered\", { instanceId, port, hostname });\n  }\n\n  unregister(instanceId: string, port: number): void;\n  unregister(port: number): void;\n  unregister(...args: any[]): void {\n    let instanceId: string;\n    let port: number;\n    if (typeof args[0] === \"string\") {\n      instanceId = args[0];\n      port = args[1];\n    } else {\n      instanceId = DEFAULT_INSTANCE;\n      port = args[0];\n    }\n    const inst = this._instances.get(instanceId);\n    if (!inst) return;\n    inst.registry.delete(port);\n    this.notifySW(\"server-unregistered\", { instanceId, port });\n  }\n\n  private _extractSetCookie(\n    headers: Record<string, string | string[]>,\n  ): string | string[] | undefined {\n    for (const k of Object.keys(headers)) {\n      if (k.toLowerCase() === \"set-cookie\") return headers[k];\n    }\n    return undefined;\n  }\n\n  private _storeResponseCookies(\n    instanceId: string,\n    port: number,\n    headers: Record<string, string | string[]>,\n  ): void {\n    const setCookie = this._extractSetCookie(headers);\n    if (setCookie) this._cookieJar.store(instanceId, port, setCookie);\n  }\n\n  private _injectVirtualCookies(\n    instanceId: string,\n    port: number,\n    url: string,\n    headers: Record<string, string>,\n  ): void {\n    const jarCookie = this._cookieJar.cookieHeader(instanceId, port, url);\n    const browserCookie = headers[\"cookie\"] ?? headers[\"Cookie\"];\n    const merged = mergeCookieHeaders(browserCookie, jarCookie);\n    if (merged) headers[\"cookie\"] = merged;\n    else {\n      delete headers[\"cookie\"];\n      delete headers[\"Cookie\"];\n    }\n  }\n\n  // Sends a script to the Service Worker that gets injected into every HTML\n  // response served to preview iframes. Runs before any page content.\n  setPreviewScript(instanceId: string, script: string | null): void;\n  setPreviewScript(script: string | null): void;\n  setPreviewScript(...args: any[]): void {\n    let instanceId: string;\n    let script: string | null;\n    if (args.length >= 2 || (args.length === 1 && typeof args[0] === \"string\" && isValidInstanceId(args[0]))) {\n      // 2 args means (instanceId, script). 1 string arg is the legacy shape\n      // where the string is the script itself\n      if (args.length >= 2) {\n        instanceId = args[0];\n        script = args[1];\n      } else {\n        instanceId = DEFAULT_INSTANCE;\n        script = args[0];\n      }\n    } else {\n      instanceId = DEFAULT_INSTANCE;\n      script = args[0] ?? null;\n    }\n    const inst = this._getOrCreateInstance(instanceId);\n    inst.previewScript = script;\n    this._sendPreviewScriptToSW(instanceId);\n  }\n\n  setWatermark(enabled: boolean): void {\n    this._watermarkEnabled = enabled;\n    if (\n      typeof navigator !== \"undefined\" &&\n      navigator.serviceWorker?.controller\n    ) {\n      navigator.serviceWorker.controller.postMessage({\n        type: \"set-watermark\",\n        enabled,\n        token: this._swAuthToken,\n      });\n    }\n  }\n\n  private _sendPreviewScriptToSW(instanceId: string): void {\n    if (\n      typeof navigator === \"undefined\" ||\n      !navigator.serviceWorker?.controller\n    ) {\n      return;\n    }\n    const inst = this._instances.get(instanceId);\n    if (!inst) return;\n    navigator.serviceWorker.controller.postMessage({\n      type: \"set-preview-script\",\n      instanceId,\n      script: inst.previewScript,\n      token: this._swAuthToken,\n    });\n  }\n\n  private _sendWsTokenToSW(instanceId: string): void {\n    if (\n      typeof navigator === \"undefined\" ||\n      !navigator.serviceWorker?.controller\n    ) {\n      return;\n    }\n    const inst = this._instances.get(instanceId);\n    if (!inst) return;\n    navigator.serviceWorker.controller.postMessage({\n      type: \"set-ws-token\",\n      instanceId,\n      wsToken: inst.wsBridgeToken,\n      token: this._swAuthToken,\n    });\n  }\n\n  serverUrl(instanceId: string, port: number): string;\n  serverUrl(port: number): string;\n  serverUrl(a: string | number, b?: number): string {\n    const instanceId = typeof a === \"string\" ? a : DEFAULT_INSTANCE;\n    const port = typeof a === \"string\" ? (b as number) : a;\n    return `${this.baseUrl}/__virtual__/${instanceId}/${port}`;\n  }\n\n  /** ports registered with the given instance. no arg returns the union\n   *  across all instances (flat-list back-compat) */\n  activePorts(instanceId?: string): number[] {\n    if (instanceId !== undefined) {\n      const inst = this._instances.get(instanceId);\n      return inst ? [...inst.registry.keys()] : [];\n    }\n    const all = new Set<number>();\n    for (const inst of this._instances.values()) {\n      for (const p of inst.registry.keys()) all.add(p);\n    }\n    return [...all];\n  }\n\n  async handleRequest(\n    instanceId: string,\n    port: number,\n    method: string,\n    url: string,\n    headers: Record<string, string>,\n    body?: ArrayBuffer,\n    options?: HandleRequestOptions,\n  ): Promise<CompletedResponse>;\n  async handleRequest(\n    port: number,\n    method: string,\n    url: string,\n    headers: Record<string, string>,\n    body?: ArrayBuffer,\n    options?: HandleRequestOptions,\n  ): Promise<CompletedResponse>;\n  async handleRequest(...args: any[]): Promise<CompletedResponse> {\n    let instanceId: string;\n    let port: number;\n    let method: string;\n    let url: string;\n    let headers: Record<string, string>;\n    let body: ArrayBuffer | undefined;\n    let skipCookieInject = false;\n\n    const last = args[args.length - 1];\n    if (\n      last &&\n      typeof last === \"object\" &&\n      !(last instanceof ArrayBuffer) &&\n      !ArrayBuffer.isView(last) &&\n      \"skipCookieInject\" in last\n    ) {\n      skipCookieInject = !!(last as HandleRequestOptions).skipCookieInject;\n      args = args.slice(0, -1);\n    }\n\n    if (typeof args[0] === \"string\") {\n      [instanceId, port, method, url, headers, body] = args;\n    } else {\n      instanceId = DEFAULT_INSTANCE;\n      [port, method, url, headers, body] = args;\n    }\n\n    const inst = this._instances.get(instanceId);\n    const entry = inst?.registry.get(port);\n    if (!entry) {\n      return {\n        statusCode: 503,\n        statusMessage: \"Service Unavailable\",\n        headers: { \"Content-Type\": \"text/plain\" },\n        body: Buffer.from(\n          `No server on ${instanceId}/${port}`,\n        ),\n      };\n    }\n    if (!skipCookieInject) {\n      this._injectVirtualCookies(instanceId, port, url, headers);\n    }\n    try {\n      const buf = body ? Buffer.from(new Uint8Array(body)) : undefined;\n      return await entry.server.dispatchRequest(method, url, headers, buf);\n    } catch (err) {\n      const msg = err instanceof Error ? err.message : \"Internal Server Error\";\n      return {\n        statusCode: 500,\n        statusMessage: \"Internal Server Error\",\n        headers: { \"Content-Type\": \"text/plain\" },\n        body: Buffer.from(msg),\n      };\n    }\n  }\n\n  // HEAD /__sw__.js so a broken setup fails loud with a useful message\n  // instead of whatever opaque thing register() would throw. Four failure\n  // modes: unreachable, non-2xx, missing Content-Type, or served as HTML\n  // (the SPA fallback trap).\n  private async _preflightServiceWorker(swPath: string): Promise<void> {\n    const framework = detectFrameworkHint();\n    let res: Response;\n    try {\n      res = await fetch(swPath, {\n        method: \"HEAD\",\n        cache: \"no-store\",\n        // 3s covers a local file; don't let boot() hang behind a dead proxy.\n        signal: AbortSignal.timeout(3000),\n      });\n    } catch (cause) {\n      throw new NodepodSWSetupError(\n        `service worker at ${swPath} could not be reached`,\n        { swUrl: swPath, cause, framework },\n      );\n    }\n\n    if (!res.ok) {\n      throw new NodepodSWSetupError(\n        `service worker at ${swPath} returned HTTP ${res.status}`,\n        { swUrl: swPath, status: res.status, framework },\n      );\n    }\n\n    const contentType = res.headers.get(\"content-type\") ?? \"\";\n    // Match /javascript/ so application/javascript, text/javascript and\n    // application/x-javascript all pass. 200 OK + text/html is the SPA\n    // fallback trap we're here to catch.\n    if (!/javascript/i.test(contentType)) {\n      throw new NodepodSWSetupError(\n        `service worker at ${swPath} served with wrong Content-Type ` +\n          `(${contentType || \"<empty>\"}); expected application/javascript`,\n        { swUrl: swPath, status: res.status, contentType, framework },\n      );\n    }\n  }\n\n  /** concurrent callers share one in-flight promise, stops the Chromium\n   *  SW-registration storm when N Nodepods boot in parallel.\n   *\n   *  NOT async on purpose. an async wrapper would create a fresh outer\n   *  promise per call, so N callers each get their own identity and a\n   *  .catch() on the inner shared promise wouldn't reach them, causing\n   *  unhandled rejection warnings. returning the memoized promise directly\n   *  means all callers share one object */\n  initServiceWorker(config?: ServiceWorkerConfig): Promise<void> {\n    if (this.swReady) return Promise.resolve();\n    if (this._swInitPromise) return this._swInitPromise;\n    this._swInitPromise = this._doInitServiceWorker(config).catch((err) => {\n      // allow retry on failure\n      this._swInitPromise = null;\n      throw err;\n    });\n    return this._swInitPromise;\n  }\n\n  private async _doInitServiceWorker(\n    config?: ServiceWorkerConfig,\n  ): Promise<void> {\n    if (!(\"serviceWorker\" in navigator))\n      throw new Error(\"Service Workers not supported\");\n\n    const swPath = config?.swUrl ?? \"/__sw__.js\";\n\n    if (!config?.skipPreflight) {\n      await this._preflightServiceWorker(swPath);\n    }\n\n    // fire and forget: register() can stall for seconds on hard refresh\n    // (Ctrl+Shift+R) while the browser reconciles the bypass. we don't need\n    // its promise to resolve, navigator.serviceWorker.ready below is the\n    // real signal\n    navigator.serviceWorker\n      .register(swPath, { scope: \"/\", updateViaCache: \"none\" })\n      .catch((err) => {\n        console.warn(\"[Nodepod] SW register() rejected:\", err);\n      });\n\n    // .ready handles first install, repeat reload, hard refresh, and\n    // update-pending uniformly. timeout is a safety net\n    const reg = await Promise.race([\n      navigator.serviceWorker.ready,\n      new Promise<ServiceWorkerRegistration>((_, reject) =>\n        setTimeout(\n          () => reject(new Error(\"SW ready timeout\")),\n          TIMEOUTS.SW_ACTIVATION,\n        ),\n      ),\n    ]);\n    const sw = reg.active;\n    if (!sw) {\n      throw new Error(\n        \"Service Worker registration has no active worker after ready\",\n      );\n    }\n\n    this._swAuthToken = crypto.randomUUID();\n\n    this.channel = new MessageChannel();\n    this.channel.port1.onmessage = this.onSWMessage.bind(this);\n    sw.postMessage(\n      { type: \"init\", port: this.channel.port2, token: this._swAuthToken },\n      [this.channel.port2],\n    );\n\n    // claim every instance attached before the SW was ready. bypassing\n    // notifySW because swReady flips further down, but MessagePort delivery\n    // doesn't care: the browser queues messages on port2 until the SW sets\n    // its onmessage in the init handler\n    for (const id of this._instances.keys()) {\n      this.channel.port1.postMessage({\n        type: \"claim-instance\",\n        data: { instanceId: id },\n      });\n    }\n\n    // on SW update (controllerchange) the new SW has empty state. resend\n    // init + claims so it learns our routing table again\n    const reinit = () => {\n      if (!navigator.serviceWorker.controller) return;\n      this.channel = new MessageChannel();\n      this.channel.port1.onmessage = this.onSWMessage.bind(this);\n      navigator.serviceWorker.controller.postMessage(\n        { type: \"init\", port: this.channel.port2, token: this._swAuthToken },\n        [this.channel.port2],\n      );\n      for (const id of this._instances.keys()) {\n        this.notifySW(\"claim-instance\", { instanceId: id });\n      }\n      for (const id of this._instances.keys()) {\n        const inst = this._instances.get(id)!;\n        if (inst.previewScript !== null) this._sendPreviewScriptToSW(id);\n        if (inst.wsBridgeToken) this._sendWsTokenToSW(id);\n      }\n      navigator.serviceWorker.controller.postMessage({\n        type: \"set-watermark\",\n        enabled: this._watermarkEnabled,\n        token: this._swAuthToken,\n      });\n      this._flushPendingSwMessages();\n      this._replayServerRegistrationsToSW();\n    };\n    navigator.serviceWorker.addEventListener(\"controllerchange\", reinit);\n    navigator.serviceWorker.addEventListener(\"message\", (ev) => {\n      if (ev.data?.type === \"sw-needs-init\") reinit();\n    });\n\n    // tell the SW to drop this tab's port + instance claims when the page\n    // goes away. without this a closed tab leaves stale routing entries and\n    // the next request for its instance times out after 30s. pagehide fires\n    // reliably (including bfcache), beforeunload is a backup\n    if (!this._farewellInstalled && typeof window !== \"undefined\") {\n      const farewell = () => {\n        try {\n          this.channel?.port1.postMessage({ type: \"release-all\" });\n        } catch {\n          // channel already torn down\n        }\n      };\n      window.addEventListener(\"pagehide\", farewell);\n      window.addEventListener(\"beforeunload\", farewell);\n      this._farewellInstalled = true;\n    }\n\n    this.heartbeat = setInterval(() => {\n      this.channel?.port1.postMessage({ type: \"keepalive\" });\n    }, TIMEOUTS.SW_HEARTBEAT);\n\n    this.swReady = true;\n    this.emit(\"sw-ready\");\n\n    this._startWsBridge();\n\n    // servers often register during boot before initServiceWorker() finishes.\n    // notifySW() queues those while !swReady; replay the registry now so the\n    // SW instanceServers map is warm before stripped-path subresources arrive.\n    this._flushPendingSwMessages();\n    this._replayServerRegistrationsToSW();\n\n    // mint a ws token for every instance that attached before the SW was\n    // ready. common case: Nodepod constructor runs before initServiceWorker\n    // finishes because N parallel boots serialize here\n    for (const id of this._instances.keys()) {\n      this._ensureWsTokenForInstance(id);\n      this._sendWsTokenToSW(id);\n    }\n  }\n\n  // strip /__preview__/{instanceId}/{port} or legacy /__preview__/{port} prefix\n  private _normalizeSwUrl(url: string, _headers: Record<string, string>): string | null {\n    // new: /__preview__/{instanceId}/{port}/rest\n    const newMatch = url.match(/^\\/__preview__\\/[^/]+\\/\\d+(.*)?$/);\n    if (newMatch) {\n      let stripped = newMatch[1] || \"/\";\n      if (stripped[0] !== \"/\") stripped = \"/\" + stripped;\n      const qIdx = url.indexOf(\"?\");\n      if (qIdx >= 0 && !stripped.includes(\"?\")) {\n        stripped += url.slice(qIdx);\n      }\n      return stripped;\n    }\n    // legacy: /__preview__/{port}/rest\n    const oldMatch = url.match(/^\\/__preview__\\/\\d+(.*)?$/);\n    if (oldMatch) {\n      let stripped = oldMatch[1] || \"/\";\n      if (stripped[0] !== \"/\") stripped = \"/\" + stripped;\n      const qIdx = url.indexOf(\"?\");\n      if (qIdx >= 0 && !stripped.includes(\"?\")) {\n        stripped += url.slice(qIdx);\n      }\n      return stripped;\n    }\n    return url;\n  }\n\n  private async onSWMessage(event: MessageEvent): Promise<void> {\n    const { type, id, data } = event.data;\n    RequestProxy.DEBUG &&\n      console.log(\"[RequestProxy] SW:\", type, id, data?.url);\n\n    if (type === \"request\") {\n      const {\n        instanceId: rawInstanceId,\n        port,\n        method,\n        headers,\n        body,\n        streaming,\n        originalUrl,\n      } = data;\n      const instanceId: string = rawInstanceId || DEFAULT_INSTANCE;\n      let url: string = data.url;\n\n      const normalized = this._normalizeSwUrl(url, headers);\n      if (normalized !== null && normalized !== url) {\n        url = normalized;\n      }\n\n      try {\n        if (streaming) {\n          await this.handleStreaming(\n            instanceId,\n            id,\n            port,\n            method,\n            url,\n            headers,\n            body,\n          );\n        } else {\n          const resp = await this.handleRequest(\n            instanceId,\n            port,\n            method,\n            url,\n            headers,\n            body,\n            { skipCookieInject: true },\n          );\n          this._storeResponseCookies(instanceId, port, resp.headers);\n          // 404 + original URL = try fetching from the real network as fallback\n          // (handles cross-origin resources like Google Fonts, CDN assets, etc.)\n          if (resp.statusCode === 404 && originalUrl) {\n            try {\n              const origUrl = new URL(originalUrl);\n              const isLocalhost = origUrl.hostname === \"localhost\" ||\n                origUrl.hostname === \"127.0.0.1\" ||\n                origUrl.hostname === \"0.0.0.0\";\n              if (!isLocalhost) {\n                const fallbackResp = await fetch(originalUrl);\n                const fallbackBody = await fallbackResp.arrayBuffer();\n                const fallbackHeaders: Record<string, string> = {};\n                fallbackResp.headers.forEach((v, k) => {\n                  fallbackHeaders[k] = v;\n                });\n                const fallbackB64 = fallbackBody.byteLength > 0\n                  ? bytesToBase64(new Uint8Array(fallbackBody))\n                  : \"\";\n                this.channel?.port1.postMessage({\n                  type: \"response\",\n                  id,\n                  data: {\n                    statusCode: fallbackResp.status,\n                    statusMessage: fallbackResp.statusText || \"OK\",\n                    headers: fallbackHeaders,\n                    bodyBase64: fallbackB64,\n                  },\n                });\n                return;\n              }\n            } catch (fallbackErr) {\n            }\n          }\n\n          let bodyB64 = \"\";\n          if (resp.body?.length) {\n            const bytes =\n              resp.body instanceof Uint8Array ? resp.body : new Uint8Array(0);\n            bodyB64 = bytesToBase64(bytes);\n          }\n          this.channel?.port1.postMessage({\n            type: \"response\",\n            id,\n            data: {\n              statusCode: resp.statusCode,\n              statusMessage: resp.statusMessage,\n              headers: resp.headers,\n              bodyBase64: bodyB64,\n            },\n          });\n        }\n      } catch (err) {\n        this.channel?.port1.postMessage({\n          type: \"response\",\n          id,\n          error: err instanceof Error ? err.message : \"Unknown error\",\n        });\n      }\n    }\n  }\n\n  private async handleStreaming(\n    instanceId: string,\n    id: number,\n    port: number,\n    method: string,\n    url: string,\n    headers: Record<string, string>,\n    body?: ArrayBuffer,\n  ): Promise<void> {\n    const inst = this._instances.get(instanceId);\n    const entry = inst?.registry.get(port);\n    if (!entry) {\n      this.channel?.port1.postMessage({\n        type: \"stream-start\",\n        id,\n        data: {\n          statusCode: 503,\n          statusMessage: \"Service Unavailable\",\n          headers: {},\n        },\n      });\n      this.channel?.port1.postMessage({ type: \"stream-end\", id });\n      return;\n    }\n\n    const srv = entry.server as any;\n    if (typeof srv.handleStreamingRequest === \"function\") {\n      const buf = body ? Buffer.from(new Uint8Array(body)) : undefined;\n      await srv.handleStreamingRequest(\n        method,\n        url,\n        headers,\n        buf,\n        (\n          statusCode: number,\n          statusMessage: string,\n          h: Record<string, string | string[]>,\n        ) => {\n          this._storeResponseCookies(instanceId, port, h);\n          this.channel?.port1.postMessage({\n            type: \"stream-start\",\n            id,\n            data: { statusCode, statusMessage, headers: h },\n          });\n        },\n        (chunk: string | Uint8Array) => {\n          const bytes = typeof chunk === \"string\" ? _enc.encode(chunk) : chunk;\n          this.channel?.port1.postMessage({\n            type: \"stream-chunk\",\n            id,\n            data: { chunkBase64: bytesToBase64(bytes) },\n          });\n        },\n        () => {\n          this.channel?.port1.postMessage({ type: \"stream-end\", id });\n        },\n      );\n    } else {\n      const buf = body ? Buffer.from(new Uint8Array(body)) : undefined;\n      const resp = await entry.server.dispatchRequest(\n        method,\n        url,\n        headers,\n        buf,\n      );\n      this._storeResponseCookies(instanceId, port, resp.headers);\n      this.channel?.port1.postMessage({\n        type: \"stream-start\",\n        id,\n        data: {\n          statusCode: resp.statusCode,\n          statusMessage: resp.statusMessage,\n          headers: resp.headers,\n        },\n      });\n      if (resp.body?.length) {\n        const bytes =\n          resp.body instanceof Uint8Array ? resp.body : new Uint8Array(0);\n        this.channel?.port1.postMessage({\n          type: \"stream-chunk\",\n          id,\n          data: { chunkBase64: bytesToBase64(bytes) },\n        });\n      }\n      this.channel?.port1.postMessage({ type: \"stream-end\", id });\n    }\n  }\n\n  // ---- WebSocket bridge ----\n\n  /** mint a ws bridge token if the instance doesn't have one yet */\n  private _ensureWsTokenForInstance(instanceId: string): void {\n    const inst = this._getOrCreateInstance(instanceId);\n    if (!inst.wsBridgeToken) {\n      inst.wsBridgeToken = crypto.randomUUID();\n    }\n  }\n\n  // listens on BroadcastChannel \"nodepod-ws\" for connect/send/close from preview\n  // iframes, dispatches WS upgrade events on the virtual server, relays frames.\n  private _startWsBridge(): void {\n    if (typeof BroadcastChannel === \"undefined\") return;\n    if (this._wsBridge) return;\n\n    this._wsBridge = new BroadcastChannel(\"nodepod-ws\");\n    this._wsBridge.onmessage = (ev: MessageEvent) => {\n      const d = ev.data;\n      if (!d || !d.kind) return;\n\n      // validate against the instance-specific token\n      const instanceId: string = d.instanceId || DEFAULT_INSTANCE;\n      const inst = this._instances.get(instanceId);\n      if (!inst) return;\n      if (inst.wsBridgeToken && d.token !== inst.wsBridgeToken) return;\n\n      if (d.kind === \"ws-connect\") {\n        this._handleWsConnect(instanceId, d.uid, d.port, d.path, d.protocols);\n      } else if (d.kind === \"ws-send\") {\n        this._handleWsSend(instanceId, d.uid, d.data, d.type);\n      } else if (d.kind === \"ws-close\") {\n        this._handleWsClose(instanceId, d.uid, d.code, d.reason);\n      }\n    };\n  }\n\n  private _handleWsConnect(\n    instanceId: string,\n    uid: string,\n    port: number,\n    path: string,\n    protocols?: string,\n  ): void {\n    const inst = this._instances.get(instanceId);\n    if (!inst) return;\n\n    const server = getServer(port);\n\n    const wsKey = btoa(\n      String.fromCharCode(...crypto.getRandomValues(new Uint8Array(16))),\n    );\n\n    const headers: Record<string, string> = {\n      upgrade: \"websocket\",\n      connection: \"Upgrade\",\n      \"sec-websocket-key\": wsKey,\n      \"sec-websocket-version\": \"13\",\n      host: `localhost:${port}`,\n    };\n    if (protocols) headers[\"sec-websocket-protocol\"] = protocols;\n\n    // no local server, try the instance's process manager (worker mode)\n    if (!server) {\n      if (inst.processManager) {\n        const pid = inst.processManager.dispatchWsUpgrade(\n          port,\n          uid,\n          path || \"/\",\n          headers,\n        );\n        if (pid >= 0) {\n          inst.workerWsConns.set(uid, { pid });\n          return;\n        }\n      }\n      this._wsBridge?.postMessage({\n        kind: \"ws-error\",\n        instanceId,\n        uid,\n        message: `No server on port ${port}`,\n        token: inst.wsBridgeToken,\n      });\n      return;\n    }\n\n    const { socket } = server.dispatchUpgrade(path || \"/\", headers);\n    const bridge = this._wsBridge!;\n    const token = inst.wsBridgeToken;\n\n    let outboundBuf = new Uint8Array(0);\n    let handshakeDone = false;\n\n    // intercept socket.write to decode WS frames from server and relay to iframe\n    socket.write = ((\n      chunk: Uint8Array | string,\n      encOrCb?: BufferEncoding | ((err?: Error | null) => void),\n      cb?: (err?: Error | null) => void,\n    ): boolean => {\n      const raw =\n        typeof chunk === \"string\" ? Buffer.from(chunk) : new Uint8Array(chunk);\n      const fn = typeof encOrCb === \"function\" ? encOrCb : cb;\n\n      if (!handshakeDone) {\n        const text = new TextDecoder().decode(raw);\n        if (text.startsWith(\"HTTP/1.1 101\")) {\n          handshakeDone = true;\n          bridge.postMessage({ kind: \"ws-open\", instanceId, uid, token });\n          if (fn) queueMicrotask(() => fn(null));\n          return true;\n        }\n      }\n\n      const merged = new Uint8Array(outboundBuf.length + raw.length);\n      merged.set(outboundBuf, 0);\n      merged.set(raw, outboundBuf.length);\n      outboundBuf = merged;\n\n      while (outboundBuf.length >= 2) {\n        const frame = decodeFrame(outboundBuf);\n        if (!frame) break;\n        outboundBuf = outboundBuf.slice(frame.consumed);\n\n        switch (frame.op) {\n          case WS_OPCODE.TEXT: {\n            const text = new TextDecoder().decode(frame.data);\n            bridge.postMessage({\n              kind: \"ws-message\",\n              instanceId,\n              uid,\n              data: text,\n              type: \"text\",\n              token,\n            });\n            break;\n          }\n          case WS_OPCODE.BINARY:\n            bridge.postMessage({\n              kind: \"ws-message\",\n              instanceId,\n              uid,\n              data: Array.from(frame.data),\n              type: \"binary\",\n              token,\n            });\n            break;\n          case WS_OPCODE.CLOSE: {\n            const code =\n              frame.data.length >= 2\n                ? (frame.data[0] << 8) | frame.data[1]\n                : 1000;\n            bridge.postMessage({\n              kind: \"ws-closed\",\n              instanceId,\n              uid,\n              code,\n              token,\n            });\n            break;\n          }\n          case WS_OPCODE.PING:\n            socket._feedData(\n              Buffer.from(encodeFrame(WS_OPCODE.PONG, frame.data, true)),\n            );\n            break;\n        }\n      }\n\n      if (fn) queueMicrotask(() => fn(null));\n      return true;\n    }) as any;\n\n    const cleanup = () => {\n      outboundBuf = new Uint8Array(0);\n      try { socket.destroy(); } catch { /* */ }\n    };\n    inst.wsConns.set(uid, { socket, cleanup });\n  }\n\n  private _handleWorkerWsFrame(instanceId: string, msg: any): void {\n    const bridge = this._wsBridge;\n    if (!bridge) return;\n    const inst = this._instances.get(instanceId);\n    if (!inst) return;\n    const uid = msg.uid;\n    const token = inst.wsBridgeToken;\n\n    switch (msg.kind) {\n      case \"open\":\n        bridge.postMessage({ kind: \"ws-open\", instanceId, uid, token });\n        break;\n      case \"text\":\n        bridge.postMessage({\n          kind: \"ws-message\",\n          instanceId,\n          uid,\n          data: msg.data,\n          type: \"text\",\n          token,\n        });\n        break;\n      case \"binary\":\n        bridge.postMessage({\n          kind: \"ws-message\",\n          instanceId,\n          uid,\n          data: msg.bytes,\n          type: \"binary\",\n          token,\n        });\n        break;\n      case \"close\":\n        bridge.postMessage({\n          kind: \"ws-closed\",\n          instanceId,\n          uid,\n          code: msg.code || 1000,\n          token,\n        });\n        inst.workerWsConns.delete(uid);\n        break;\n      case \"error\":\n        bridge.postMessage({\n          kind: \"ws-error\",\n          instanceId,\n          uid,\n          message: msg.message,\n          token,\n        });\n        inst.workerWsConns.delete(uid);\n        break;\n    }\n  }\n\n  private _handleWsSend(\n    instanceId: string,\n    uid: string,\n    data: unknown,\n    type?: string,\n  ): void {\n    const inst = this._instances.get(instanceId);\n    if (!inst) return;\n\n    const workerConn = inst.workerWsConns.get(uid);\n    if (workerConn && inst.processManager) {\n      let payload: Uint8Array;\n      let op: number;\n      if (type === \"binary\" && Array.isArray(data)) {\n        payload = new Uint8Array(data);\n        op = WS_OPCODE.BINARY;\n      } else {\n        payload = new TextEncoder().encode(String(data));\n        op = WS_OPCODE.TEXT;\n      }\n      const frame = encodeFrame(op, payload, true);\n      inst.processManager.dispatchWsData(\n        workerConn.pid,\n        uid,\n        Array.from(new Uint8Array(frame)),\n      );\n      return;\n    }\n\n    const conn = inst.wsConns.get(uid);\n    if (!conn) return;\n\n    let payload: Uint8Array;\n    let op: number;\n    if (type === \"binary\" && Array.isArray(data)) {\n      payload = new Uint8Array(data);\n      op = WS_OPCODE.BINARY;\n    } else {\n      payload = new TextEncoder().encode(String(data));\n      op = WS_OPCODE.TEXT;\n    }\n    const frame = encodeFrame(op, payload, true);\n    conn.socket._feedData(Buffer.from(frame));\n  }\n\n  private _handleWsClose(\n    instanceId: string,\n    uid: string,\n    code?: number,\n    _reason?: string,\n  ): void {\n    const inst = this._instances.get(instanceId);\n    if (!inst) return;\n\n    const workerConn = inst.workerWsConns.get(uid);\n    if (workerConn && inst.processManager) {\n      inst.processManager.dispatchWsClose(workerConn.pid, uid, code ?? 1000);\n      inst.workerWsConns.delete(uid);\n      return;\n    }\n\n    const conn = inst.wsConns.get(uid);\n    if (!conn) return;\n\n    const codeBuf = new Uint8Array(2);\n    codeBuf[0] = ((code ?? 1000) >> 8) & 0xff;\n    codeBuf[1] = (code ?? 1000) & 0xff;\n    const frame = encodeFrame(WS_OPCODE.CLOSE, codeBuf, true);\n    try { conn.socket._feedData(Buffer.from(frame)); } catch { /* */ }\n\n    conn.cleanup();\n    inst.wsConns.delete(uid);\n  }\n\n  private notifySW(type: string, data: unknown): void {\n    const msg = { type, data };\n    if (this.swReady && this.channel) {\n      this.channel.port1.postMessage(msg);\n      return;\n    }\n    this._pendingSwMessages.push(msg);\n  }\n\n  private _flushPendingSwMessages(): void {\n    if (!this.swReady || !this.channel) return;\n    for (const msg of this._pendingSwMessages) {\n      this.channel.port1.postMessage(msg);\n    }\n    this._pendingSwMessages.length = 0;\n  }\n\n  /** replay live server-registered messages after sw-ready or controllerchange reinit. */\n  private _replayServerRegistrationsToSW(): void {\n    if (!this.swReady || !this.channel) return;\n    for (const [instanceId, inst] of this._instances) {\n      for (const [port, entry] of inst.registry) {\n        this.channel.port1.postMessage({\n          type: \"server-registered\",\n          data: { instanceId, port, hostname: entry.hostname },\n        });\n      }\n    }\n  }\n\n  createFetchHandler(): (req: Request) => Promise<Response> {\n    return async (req: Request): Promise<Response> => {\n      const parsed = new URL(req.url);\n      // /__virtual__/{instanceId}/{port}/... or legacy /__virtual__/{port}/...\n      // new form requires at least one non-digit char in the first segment\n      const newMatch = parsed.pathname.match(\n        /^\\/__virtual__\\/([^/]+)\\/(\\d+)(\\/.*)?$/,\n      );\n      const oldMatch =\n        !newMatch &&\n        parsed.pathname.match(/^\\/__virtual__\\/(\\d+)(\\/.*)?$/);\n\n      let instanceId: string;\n      let port: number;\n      let path: string;\n      if (newMatch) {\n        // all-digits first segment means the old form with a swallowed slash\n        if (/^\\d+$/.test(newMatch[1])) {\n          instanceId = DEFAULT_INSTANCE;\n          port = parseInt(newMatch[1], 10);\n          path = (newMatch[2] ? \"/\" + newMatch[2] : \"/\") + (newMatch[3] || \"\");\n        } else {\n          instanceId = newMatch[1];\n          port = parseInt(newMatch[2], 10);\n          path = newMatch[3] || \"/\";\n        }\n      } else if (oldMatch) {\n        instanceId = DEFAULT_INSTANCE;\n        port = parseInt(oldMatch[1], 10);\n        path = oldMatch[2] || \"/\";\n      } else {\n        throw new Error(\"Not a virtual server request\");\n      }\n\n      const hdrs: Record<string, string> = {};\n      req.headers.forEach((v, k) => {\n        hdrs[k] = v;\n      });\n      let reqBody: ArrayBuffer | undefined;\n      if (req.method !== \"GET\" && req.method !== \"HEAD\")\n        reqBody = await req.arrayBuffer();\n\n      const resp = await this.handleRequest(\n        instanceId,\n        port,\n        req.method,\n        path + parsed.search,\n        hdrs,\n        reqBody,\n      );\n      // The browser won't persist Set-Cookie from a synthetic Response, so\n      // the jar is the only place these cookies survive for the next request.\n      this._storeResponseCookies(instanceId, port, resp.headers);\n      let body: BodyInit | null = null;\n      if (resp.body instanceof Uint8Array) {\n        body = new Uint8Array(resp.body.buffer as ArrayBuffer, resp.body.byteOffset, resp.body.byteLength) as Uint8Array<ArrayBuffer>;\n      } else if (typeof resp.body === \"string\") {\n        body = resp.body;\n      }\n      return new Response(body, {\n        status: resp.statusCode,\n        statusText: resp.statusMessage,\n        headers: recordToFetchHeaders(resp.headers),\n      });\n    };\n  }\n}\n\n// ── Singleton ──\n\nlet instance: RequestProxy | null = null;\n\nexport function getProxyInstance(opts?: ProxyOptions): RequestProxy {\n  if (!instance) instance = new RequestProxy(opts);\n  return instance;\n}\n\nexport function resetProxy(): void {\n  instance = null;\n}\n\nexport default RequestProxy;\n","// Async facade over MemoryVolume. Returns Promises even though the\r\n// underlying VFS is synchronous -- keeps the public API consistent.\r\n\r\nimport type { MemoryVolume } from \"../memory-volume\";\r\nimport type { StatResult } from \"./types\";\r\n\r\nexport class NodepodFS {\r\n  constructor(private _vol: MemoryVolume) {}\r\n\r\n  // Auto-creates parent dirs on write\r\n  async writeFile(path: string, data: string | Uint8Array): Promise<void> {\r\n    const dir = path.substring(0, path.lastIndexOf(\"/\")) || \"/\";\r\n    if (dir !== \"/\" && !this._vol.existsSync(dir)) {\r\n      this._vol.mkdirSync(dir, { recursive: true });\r\n    }\r\n    this._vol.writeFileSync(path, data as any);\r\n  }\r\n\r\n  async readFile(path: string, encoding?: \"utf-8\" | \"utf8\"): Promise<string>;\r\n  async readFile(path: string): Promise<Uint8Array>;\r\n  async readFile(\r\n    path: string,\r\n    encoding?: string,\r\n  ): Promise<string | Uint8Array> {\r\n    if (encoding) return this._vol.readFileSync(path, \"utf8\") as string;\r\n    return this._vol.readFileSync(path) as any;\r\n  }\r\n\r\n  async mkdir(path: string, opts?: { recursive?: boolean }): Promise<void> {\r\n    this._vol.mkdirSync(path, opts);\r\n  }\r\n\r\n  async readdir(path: string): Promise<string[]> {\r\n    return this._vol.readdirSync(path) as string[];\r\n  }\r\n\r\n  async exists(path: string): Promise<boolean> {\r\n    return this._vol.existsSync(path);\r\n  }\r\n\r\n  async stat(path: string): Promise<StatResult> {\r\n    const s = this._vol.statSync(path);\r\n    return {\r\n      isFile: s.isFile(),\r\n      isDirectory: s.isDirectory(),\r\n      size: s.size,\r\n      mtime: s.mtimeMs ?? Date.now(),\r\n    };\r\n  }\r\n\r\n  async unlink(path: string): Promise<void> {\r\n    this._vol.unlinkSync(path);\r\n  }\r\n\r\n  async rmdir(path: string, opts?: { recursive?: boolean }): Promise<void> {\r\n    if (opts?.recursive) {\r\n      this._removeRecursive(path);\r\n    } else {\r\n      this._vol.rmdirSync(path);\r\n    }\r\n  }\r\n\r\n  async rm(path: string, opts?: { recursive?: boolean; force?: boolean }): Promise<void> {\r\n    const exists = this._vol.existsSync(path);\r\n    if (!exists) {\r\n      if (opts?.force) return;\r\n      throw new Error(`ENOENT: no such file or directory, rm '${path}'`);\r\n    }\r\n    const st = this._vol.statSync(path);\r\n    if (st.isDirectory()) {\r\n      if (opts?.recursive) this._removeRecursive(path);\r\n      else this._vol.rmdirSync(path);\r\n    } else {\r\n      this._vol.unlinkSync(path);\r\n    }\r\n  }\r\n\r\n  async rename(from: string, to: string): Promise<void> {\r\n    this._vol.renameSync(from, to);\r\n  }\r\n\r\n  watch(\r\n    path: string,\r\n    optionsOrCb?:\r\n      | { recursive?: boolean }\r\n      | ((event: string, filename: string | null) => void),\r\n    cb?: (event: string, filename: string | null) => void,\r\n  ): { close(): void } {\r\n    if (typeof optionsOrCb === \"function\") {\r\n      return this._vol.watch(path, optionsOrCb);\r\n    }\r\n    return this._vol.watch(path, optionsOrCb ?? {}, cb!);\r\n  }\r\n\r\n  get volume(): MemoryVolume {\r\n    return this._vol;\r\n  }\r\n\r\n  private _removeRecursive(dir: string): void {\r\n    for (const name of this._vol.readdirSync(dir) as string[]) {\r\n      const full = `${dir}/${name}`;\r\n      const st = this._vol.statSync(full);\r\n      if (st.isDirectory()) this._removeRecursive(full);\r\n      else this._vol.unlinkSync(full);\r\n    }\r\n    this._vol.rmdirSync(dir);\r\n  }\r\n}\r\n","// Process handle returned by nodepod.spawn().\r\n// Emits 'output', 'error', 'exit'. Has write() for stdin and kill() to abort.\r\n\r\nimport { EventEmitter } from \"../polyfills/events\";\r\n\r\nexport class NodepodProcess extends EventEmitter {\r\n  private _abortController = new AbortController();\r\n  private _resolve!: (r: {\r\n    stdout: string;\r\n    stderr: string;\r\n    exitCode: number;\r\n  }) => void;\r\n  private _stdout = \"\";\r\n  private _stderr = \"\";\r\n  private _exitCode: number | null = null;\r\n  private _sendStdinFn: ((data: string) => void) | null = null;\r\n  private _killFn: (() => void) | null = null;\r\n  private _maxOutputBytes: number;\r\n\r\n  // Resolves when the process exits -- use `await proc.completion`\r\n  readonly completion: Promise<{\r\n    stdout: string;\r\n    stderr: string;\r\n    exitCode: number;\r\n  }>;\r\n\r\n  constructor(maxOutputBytes = 4_194_304) {\r\n    super();\r\n    this._maxOutputBytes = maxOutputBytes;\r\n    this.completion = new Promise((resolve) => {\r\n      this._resolve = resolve;\r\n    });\r\n  }\r\n\r\n  _setSendStdin(fn: (data: string) => void): void {\r\n    this._sendStdinFn = fn;\r\n  }\r\n\r\n  _setKillFn(fn: () => void): void {\r\n    this._killFn = fn;\r\n  }\r\n\r\n  _pushStdout(chunk: string): void {\r\n    this._stdout += chunk;\r\n    if (this._stdout.length > this._maxOutputBytes) {\r\n      this._stdout = this._stdout.slice(-Math.floor(this._maxOutputBytes * 0.75));\r\n    }\r\n    this.emit(\"output\", chunk);\r\n  }\r\n\r\n  _pushStderr(chunk: string): void {\r\n    this._stderr += chunk;\r\n    if (this._stderr.length > this._maxOutputBytes) {\r\n      this._stderr = this._stderr.slice(-Math.floor(this._maxOutputBytes * 0.75));\r\n    }\r\n    this.emit(\"error\", chunk);\r\n  }\r\n\r\n  // Worker exit messages carry the full buffered stdout/stderr. Streaming chunks\r\n  // may be missing (e.g. output only flushed at process end), so merge any tail.\r\n  _mergeExitOutput(stdout?: string, stderr?: string): void {\r\n    if (stdout && stdout.length > this._stdout.length) {\r\n      this._pushStdout(stdout.slice(this._stdout.length));\r\n    }\r\n    if (stderr && stderr.length > this._stderr.length) {\r\n      this._pushStderr(stderr.slice(this._stderr.length));\r\n    }\r\n  }\r\n\r\n  // Idempotent -- safe to call twice\r\n  _finish(exitCode: number): void {\r\n    if (this._exitCode !== null) return;\r\n    this._exitCode = exitCode;\r\n    this.emit(\"exit\", exitCode);\r\n    this._resolve({\r\n      stdout: this._stdout,\r\n      stderr: this._stderr,\r\n      exitCode,\r\n    });\r\n  }\r\n\r\n  get signal(): AbortSignal {\r\n    return this._abortController.signal;\r\n  }\r\n\r\n  get exited(): boolean {\r\n    return this._exitCode !== null;\r\n  }\r\n\r\n  write(data: string): void {\r\n    if (this._sendStdinFn) this._sendStdinFn(data);\r\n  }\r\n\r\n  kill(): void {\r\n    this._abortController.abort();\r\n    if (this._killFn) this._killFn();\r\n  }\r\n\r\n  on(event: \"output\", handler: (chunk: string) => void): this;\r\n  on(event: \"error\", handler: (chunk: string) => void): this;\r\n  on(event: \"exit\", handler: (code: number) => void): this;\r\n  on(event: string, handler: (...args: any[]) => void): this {\r\n    return super.on(event, handler) as this;\r\n  }\r\n}\r\n","// Interactive terminal with line editing, history, raw/cooked mode, etc.\r\n// xterm.js is a peer dep -- passed in via TerminalOptions, not imported here.\r\n\r\nimport type { TerminalOptions, TerminalTheme } from \"./types\";\r\nimport { DEFAULT_TERMINAL } from \"../constants/config\";\r\n\r\n// GitHub Dark theme\r\nconst DEFAULT_THEME: TerminalTheme = {\r\n  background: \"#0d1117\",\r\n  foreground: \"#c9d1d9\",\r\n  cursor: \"#58a6ff\",\r\n  selectionBackground: \"#264f78\",\r\n  black: \"#0d1117\",\r\n  red: \"#f85149\",\r\n  green: \"#3fb950\",\r\n  yellow: \"#d29922\",\r\n  blue: \"#58a6ff\",\r\n  magenta: \"#bc8cff\",\r\n  cyan: \"#39c5cf\",\r\n  white: \"#c9d1d9\",\r\n  brightBlack: \"#8b949e\",\r\n  brightRed: \"#f85149\",\r\n  brightGreen: \"#3fb950\",\r\n  brightYellow: \"#d29922\",\r\n  brightBlue: \"#58a6ff\",\r\n  brightMagenta: \"#bc8cff\",\r\n  brightCyan: \"#39c5cf\",\r\n  brightWhite: \"#ffffff\",\r\n};\r\n\r\nconst DEFAULT_PROMPT = (cwd: string) =>\r\n  `\\x1b[36mnodepod\\x1b[0m:\\x1b[34m${cwd}\\x1b[0m$ `;\r\n\r\nfunction longestCommonPrefix(strs: string[]): string {\r\n  if (strs.length === 0) return \"\";\r\n  if (strs.length === 1) return strs[0];\r\n  let prefix = strs[0];\r\n  for (let i = 1; i < strs.length && prefix.length > 0; i++) {\r\n    const s = strs[i];\r\n    let j = 0;\r\n    while (j < prefix.length && j < s.length && prefix[j] === s[j]) j++;\r\n    prefix = prefix.slice(0, j);\r\n  }\r\n  return prefix;\r\n}\r\n\r\n// Wired by Nodepod.createTerminal()\r\nexport interface TerminalWiring {\r\n  onCommand: (cmd: string) => Promise<void>;\r\n  getSendStdin: () => ((data: string) => void) | null;\r\n  getIsStdinRaw: () => boolean;\r\n  getActiveAbort: () => AbortController | null;\r\n  setActiveAbort: (ac: AbortController | null) => void;\r\n  /** tab-completion hook. returns candidates + the slice to replace. */\r\n  getCompletions?: (\r\n    line: string,\r\n    cursorPos: number,\r\n    cwd: string,\r\n  ) => {\r\n    token: string;\r\n    tokenStart: number;\r\n    matches: string[];\r\n  };\r\n  /** called after xterm reflows so the worker side (and any TUI running\r\n   * inside it) can update process.stdout.columns/rows and fire 'resize'. */\r\n  onResize?: (cols: number, rows: number) => void;\r\n}\r\n\r\nexport class NodepodTerminal {\r\n  private _term: any = null;\r\n  private _fitAddon: any = null;\r\n  private _serializeAddon: any = null;\r\n  private _serializedBuffer = \"\";\r\n  private _dataDisposable: any = null;\r\n  private _xtermResizeDisposable: any = null;\r\n  private _resizeHandler: (() => void) | null = null;\r\n  private _resizeDebounce: ReturnType<typeof setTimeout> | null = null;\r\n  private _lastNotifiedCols = -1;\r\n  private _lastNotifiedRows = -1;\r\n\r\n  private _lineBuffer = \"\";\r\n  private _history: string[] = [];\r\n  private _historyIndex = -1;\r\n  private _savedLine = \"\";\r\n  private _running = false;\r\n  private _cwd = \"/\";\r\n\r\n  private _promptFn: (cwd: string) => string;\r\n  private _theme: TerminalTheme;\r\n  private _opts: TerminalOptions;\r\n  private _wiring: TerminalWiring | null = null;\r\n\r\n  constructor(opts: TerminalOptions) {\r\n    this._opts = opts;\r\n    this._theme = opts.theme ?? DEFAULT_THEME;\r\n    this._promptFn = opts.prompt ?? DEFAULT_PROMPT;\r\n  }\r\n\r\n  /* ---- Internal wiring ---- */\r\n\r\n  _wireExecution(wiring: TerminalWiring): void {\r\n    this._wiring = wiring;\r\n  }\r\n\r\n  _setRunning(running: boolean): void {\r\n    this._running = running;\r\n  }\r\n\r\n  _writePrompt(): void {\r\n    this._term?.write(this._promptFn(this._cwd));\r\n  }\r\n\r\n  _getCols(): number {\r\n    return this._term?.cols ?? 80;\r\n  }\r\n\r\n  _getRows(): number {\r\n    return this._term?.rows ?? 24;\r\n  }\r\n\r\n  _writeOutput(text: string, isError = false): void {\r\n    if (!this._term) return;\r\n    const escaped = text.replace(/\\r?\\n/g, \"\\r\\n\");\r\n    if (isError) {\r\n      this._term.write(\"\\x1b[31m\" + escaped + \"\\x1b[0m\");\r\n    } else {\r\n      this._term.write(escaped);\r\n    }\r\n  }\r\n\r\n  /* ---- Public API ---- */\r\n\r\n  attach(target: HTMLElement | string): void {\r\n    const container =\r\n      typeof target === \"string\"\r\n        ? (document.querySelector(target) as HTMLElement)\r\n        : target;\r\n    if (!container) throw new Error(`Terminal target not found: ${target}`);\r\n\r\n    const TermCtor = this._opts.Terminal;\r\n\r\n    this._term = new TermCtor({\r\n      cursorBlink: true,\r\n      fontSize: this._opts.fontSize ?? DEFAULT_TERMINAL.FONT_SIZE,\r\n      fontFamily:\r\n        this._opts.fontFamily ??\r\n        '\"Cascadia Code\", \"Fira Code\", \"Consolas\", \"Monaco\", monospace',\r\n      theme: this._theme,\r\n    });\r\n\r\n    if (this._opts.FitAddon) {\r\n      this._fitAddon = new this._opts.FitAddon();\r\n      this._term.loadAddon(this._fitAddon);\r\n    }\r\n\r\n    if (this._opts.SerializeAddon) {\r\n      this._serializeAddon = new this._opts.SerializeAddon();\r\n      this._term.loadAddon(this._serializeAddon);\r\n    }\r\n\r\n    this._term.open(container);\r\n\r\n    if (this._serializedBuffer) {\r\n      this._term.write(this._serializedBuffer);\r\n    }\r\n\r\n    if (this._opts.WebglAddon) {\r\n      try {\r\n        this._term.loadAddon(new this._opts.WebglAddon());\r\n      } catch {\r\n        // canvas fallback is fine\r\n      }\r\n    }\r\n\r\n    if (this._fitAddon) {\r\n      // Defer fit() so the container has final layout dimensions,\r\n      // otherwise interactive CLIs get wrong cols/rows\r\n      const addon = this._fitAddon;\r\n      requestAnimationFrame(() => {\r\n        addon.fit();\r\n        // second fit covers the case where the container was still\r\n        // laying out when the first fit ran\r\n        setTimeout(() => {\r\n          addon.fit();\r\n          this._notifyResize();\r\n        }, 100);\r\n      });\r\n      this._resizeHandler = () => this._fitAddon?.fit();\r\n      window.addEventListener(\"resize\", this._resizeHandler);\r\n    }\r\n\r\n    // xterm fires onResize after any fit(), container size change, or\r\n    // manual term.resize(). debounced so dragging the window doesn't spam\r\n    // the worker channel.\r\n    this._xtermResizeDisposable = this._term.onResize?.(() => {\r\n      this._scheduleResizeNotify();\r\n    });\r\n\r\n    this._dataDisposable = this._term.onData((data: string) =>\r\n      this._handleInput(data),\r\n    );\r\n\r\n    this._term.focus();\r\n  }\r\n\r\n  private _scheduleResizeNotify(): void {\r\n    if (this._resizeDebounce) clearTimeout(this._resizeDebounce);\r\n    this._resizeDebounce = setTimeout(() => {\r\n      this._resizeDebounce = null;\r\n      this._notifyResize();\r\n    }, 80);\r\n  }\r\n\r\n  private _notifyResize(): void {\r\n    if (!this._term || !this._wiring?.onResize) return;\r\n    const cols = this._term.cols;\r\n    const rows = this._term.rows;\r\n    if (!cols || !rows) return;\r\n    if (cols === this._lastNotifiedCols && rows === this._lastNotifiedRows) return;\r\n    this._lastNotifiedCols = cols;\r\n    this._lastNotifiedRows = rows;\r\n    try {\r\n      this._wiring.onResize(cols, rows);\r\n    } catch {\r\n      // wiring threw, nothing we can do from the terminal side\r\n    }\r\n  }\r\n\r\n  detach(): void {\r\n    if (this._dataDisposable) {\r\n      this._dataDisposable.dispose();\r\n      this._dataDisposable = null;\r\n    }\r\n    if (this._xtermResizeDisposable) {\r\n      this._xtermResizeDisposable.dispose?.();\r\n      this._xtermResizeDisposable = null;\r\n    }\r\n    if (this._resizeDebounce) {\r\n      clearTimeout(this._resizeDebounce);\r\n      this._resizeDebounce = null;\r\n    }\r\n    if (this._resizeHandler) {\r\n      window.removeEventListener(\"resize\", this._resizeHandler);\r\n      this._resizeHandler = null;\r\n    }\r\n    if (this._serializeAddon) {\r\n      this._serializedBuffer = this._serializeAddon.serialize();\r\n      this._serializeAddon = null;\r\n    }\r\n    if (this._term) {\r\n      this._term.dispose();\r\n      this._term = null;\r\n    }\r\n    this._fitAddon = null;\r\n  }\r\n\r\n  clear(): void {\r\n    if (!this._term) return;\r\n    this._term.clear();\r\n    if (!this._running) this._term.write(this._promptFn(this._cwd));\r\n  }\r\n\r\n  input(text: string): void {\r\n    if (!this._term) return;\r\n    for (const ch of text) {\r\n      this._handleInput(ch);\r\n    }\r\n  }\r\n\r\n  setTheme(theme: Partial<TerminalTheme>): void {\r\n    this._theme = { ...this._theme, ...theme };\r\n    if (this._term) this._term.options.theme = this._theme;\r\n  }\r\n\r\n  fit(): void {\r\n    this._fitAddon?.fit();\r\n  }\r\n\r\n  serialize(): string {\r\n    if (this._serializeAddon) {\r\n      return this._serializeAddon.serialize();\r\n    }\r\n    return this._serializedBuffer;\r\n  }\r\n\r\n  write(text: string): void {\r\n    this._term?.write(text);\r\n  }\r\n\r\n  writeln(text: string): void {\r\n    this._term?.writeln(text);\r\n  }\r\n\r\n  showPrompt(): void {\r\n    this._term?.write(this._promptFn(this._cwd));\r\n  }\r\n\r\n  setCwd(cwd: string): void {\r\n    this._cwd = cwd;\r\n  }\r\n\r\n  getCwd(): string {\r\n    return this._cwd;\r\n  }\r\n\r\n  get xterm(): any {\r\n    return this._term;\r\n  }\r\n\r\n  /* ---- Input handling ---- */\r\n\r\n  private _handleInput(data: string): void {\r\n    if (!this._term) return;\r\n\r\n    if (this._running) {\r\n      // Ctrl+C\r\n    if (data.includes(\"\\x03\")) {\r\n      const isRaw = this._wiring?.getIsStdinRaw() ?? false;\r\n      const sendStdin = this._wiring?.getSendStdin();\r\n\r\n      // raw TUI apps handle ctrl+c themselves (often need two presses to quit)\r\n      if (isRaw && sendStdin) {\r\n        sendStdin(data);\r\n        return;\r\n      }\r\n\r\n      const abort = this._wiring?.getActiveAbort();\r\n        if (abort) {\r\n          abort.abort();\r\n          // Don't clear activeAbort -- nodepod.ts checks it to skip duplicate prompt\r\n        }\r\n        this._term.write(\"^C\\r\\n\");\r\n        this._running = false;\r\n        this._writePrompt();\r\n        return;\r\n      }\r\n\r\n      const isRaw = this._wiring?.getIsStdinRaw() ?? false;\r\n      const sendStdin = this._wiring?.getSendStdin();\r\n\r\n      if (isRaw && sendStdin) {\r\n        sendStdin(data);\r\n      } else if (sendStdin) {\r\n        // Cooked mode: local echo + line buffering\r\n        for (let i = 0; i < data.length; i++) {\r\n          const ch = data[i];\r\n          const code = ch.charCodeAt(0);\r\n          if (ch === \"\\r\" || ch === \"\\n\") {\r\n            this._term.write(\"\\r\\n\");\r\n            sendStdin(\"\\n\");\r\n          } else if (code === 127 || code === 8) {\r\n            this._term.write(\"\\b \\b\");\r\n            sendStdin(\"\\x7f\");\r\n          } else if (code >= 32) {\r\n            this._term.write(ch);\r\n            sendStdin(ch);\r\n          } else {\r\n            // Control chars -- send remainder as-is\r\n            sendStdin(data.slice(i));\r\n            break;\r\n          }\r\n        }\r\n      }\r\n      return;\r\n    }\r\n\r\n    // Line editing mode\r\n    for (let i = 0; i < data.length; i++) {\r\n      const ch = data[i];\r\n      const code = ch.charCodeAt(0);\r\n\r\n      if (ch === \"\\r\" || ch === \"\\n\") {\r\n        const cmd = this._lineBuffer;\r\n        this._lineBuffer = \"\";\r\n        this._historyIndex = -1;\r\n        this._executeCommand(cmd);\r\n      } else if (code === 127 || code === 8) {\r\n        if (this._lineBuffer.length > 0) {\r\n          this._lineBuffer = this._lineBuffer.slice(0, -1);\r\n          this._term.write(\"\\b \\b\");\r\n        }\r\n      } else if (code === 3) {\r\n        this._lineBuffer = \"\";\r\n        this._term.write(\"^C\");\r\n        this._writePrompt();\r\n      } else if (code === 12) {\r\n        this._term.clear();\r\n        this._term.write(this._promptFn(this._cwd) + this._lineBuffer);\r\n      } else if (ch === \"\\x1b\" && i + 2 < data.length && data[i + 1] === \"[\") {\r\n        const arrow = data[i + 2];\r\n        i += 2;\r\n        if (arrow === \"A\") this._historyUp();\r\n        else if (arrow === \"B\") this._historyDown();\r\n      } else if (code === 9) {\r\n        this._handleTab();\r\n      } else if (code >= 32) {\r\n        this._lineBuffer += ch;\r\n        this._term.write(ch);\r\n        this._tabCount = 0;\r\n      }\r\n    }\r\n  }\r\n\r\n  /* ---- History navigation ---- */\r\n\r\n  private _historyUp(): void {\r\n    if (this._history.length === 0) return;\r\n    if (this._historyIndex === -1) {\r\n      this._savedLine = this._lineBuffer;\r\n      this._historyIndex = this._history.length - 1;\r\n    } else if (this._historyIndex > 0) {\r\n      this._historyIndex--;\r\n    } else {\r\n      return;\r\n    }\r\n    this._replaceLineWith(this._history[this._historyIndex]);\r\n  }\r\n\r\n  private _historyDown(): void {\r\n    if (this._historyIndex === -1) return;\r\n    if (this._historyIndex < this._history.length - 1) {\r\n      this._historyIndex++;\r\n      this._replaceLineWith(this._history[this._historyIndex]);\r\n    } else {\r\n      this._historyIndex = -1;\r\n      this._replaceLineWith(this._savedLine);\r\n    }\r\n  }\r\n\r\n  private _replaceLineWith(text: string): void {\r\n    const prompt = this._promptFn(this._cwd);\r\n    this._term.write(\r\n      \"\\r\" + prompt + \" \".repeat(this._lineBuffer.length) + \"\\r\" + prompt,\r\n    );\r\n    this._lineBuffer = text;\r\n    this._term.write(text);\r\n  }\r\n\r\n  /* ---- tab completion ---- */\r\n\r\n  // bash style: one match => insert it. several sharing a longer common\r\n  // prefix => extend to that prefix. otherwise first tab does nothing,\r\n  // second tab prints the list.\r\n  private _tabCount = 0;\r\n\r\n  private _handleTab(): void {\r\n    const provider = this._wiring?.getCompletions;\r\n    if (!provider) return;\r\n\r\n    // cursor is always at the end — no mid-line editing yet\r\n    const cursorPos = this._lineBuffer.length;\r\n    let result;\r\n    try {\r\n      result = provider(this._lineBuffer, cursorPos, this._cwd);\r\n    } catch {\r\n      return;\r\n    }\r\n    const { token, tokenStart, matches } = result;\r\n    if (!matches || matches.length === 0) {\r\n      this._tabCount = 0;\r\n      return;\r\n    }\r\n\r\n    // the completer adds a trailing ' ' or '/' as a hint. strip it so the\r\n    // prefix math compares against the raw token.\r\n    const rawMatches = matches.map((m) =>\r\n      m.endsWith(\" \") || m.endsWith(\"/\") ? m.slice(0, -1) : m,\r\n    );\r\n\r\n    let insertion: string | null = null;\r\n    if (matches.length === 1) {\r\n      insertion = matches[0];\r\n    } else {\r\n      const lcp = longestCommonPrefix(rawMatches);\r\n      if (lcp.length > token.length) {\r\n        // extend to the shared prefix, no trailing space\r\n        insertion = lcp;\r\n      }\r\n    }\r\n\r\n    if (insertion !== null) {\r\n      this._replaceToken(tokenStart, insertion);\r\n      this._tabCount = 0;\r\n      return;\r\n    }\r\n\r\n    // still ambiguous. first tab does nothing, second one prints the list.\r\n    this._tabCount++;\r\n    if (this._tabCount >= 2) {\r\n      this._printMatches(matches);\r\n      this._redrawLine();\r\n      this._tabCount = 0;\r\n    }\r\n  }\r\n\r\n  private _replaceToken(tokenStart: number, replacement: string): void {\r\n    const oldLen = this._lineBuffer.length;\r\n    const newBuffer = this._lineBuffer.slice(0, tokenStart) + replacement;\r\n    // erase what's there, then write the replacement\r\n    const toErase = oldLen - tokenStart;\r\n    if (toErase > 0) {\r\n      this._term.write(\"\\b\".repeat(toErase) + \" \".repeat(toErase) + \"\\b\".repeat(toErase));\r\n    }\r\n    this._term.write(replacement);\r\n    this._lineBuffer = newBuffer;\r\n  }\r\n\r\n  private _printMatches(matches: string[]): void {\r\n    // drop the trailing space on display\r\n    const display = matches.map((m) =>\r\n      m.endsWith(\" \") ? m.slice(0, -1) : m,\r\n    );\r\n    this._term.write(\"\\r\\n\");\r\n    const cols = this._getCols();\r\n    const maxLen = display.reduce((a, s) => Math.max(a, s.length), 0);\r\n    const colWidth = maxLen + 2;\r\n    const perRow = Math.max(1, Math.floor(cols / colWidth));\r\n    for (let i = 0; i < display.length; i++) {\r\n      const cell = display[i].padEnd(colWidth, \" \");\r\n      this._term.write(cell);\r\n      if ((i + 1) % perRow === 0) this._term.write(\"\\r\\n\");\r\n    }\r\n    if (display.length % perRow !== 0) this._term.write(\"\\r\\n\");\r\n  }\r\n\r\n  private _redrawLine(): void {\r\n    this._term.write(this._promptFn(this._cwd) + this._lineBuffer);\r\n  }\r\n\r\n  /* ---- Command execution ---- */\r\n\r\n  private async _executeCommand(cmd: string): Promise<void> {\r\n    if (!cmd.trim()) {\r\n      this._term?.write(\"\\r\\n\" + this._promptFn(this._cwd));\r\n      return;\r\n    }\r\n    this._history.push(cmd);\r\n    this._historyIndex = -1;\r\n    this._running = true;\r\n\r\n    if (this._wiring?.onCommand) {\r\n      await this._wiring.onCommand(cmd);\r\n    } else {\r\n      this._running = false;\r\n      this._writePrompt();\r\n    }\r\n  }\r\n}\r\n","// tab completion for the shell. takes a partial line + cwd + vfs, gives\r\n// back a list of possible replacements. first word can match a command\r\n// (builtins + any extras + paths); anything after is paths only. dirs\r\n// get a trailing '/' and files get ' ', like bash.\r\n\r\nimport type { MemoryVolume } from \"../memory-volume\";\r\n\r\nexport interface CompletionResult {\r\n  token: string;\r\n  tokenStart: number;\r\n  /** dirs end with '/', files with ' ' */\r\n  matches: string[];\r\n}\r\n\r\nexport interface CompletionOptions {\r\n  /** extra command names for first-word completion (registered commands, PATH execs) */\r\n  extraCommands?: Iterable<string>;\r\n}\r\n\r\n// splits on whitespace, doesn't understand quotes or escaped spaces.\r\n// good enough for normal paths.\r\nexport function getCompletions(\r\n  line: string,\r\n  cursorPos: number,\r\n  cwd: string,\r\n  volume: MemoryVolume,\r\n  builtinNames: Iterable<string>,\r\n  opts?: CompletionOptions,\r\n): CompletionResult {\r\n  const safeCursor = Math.max(0, Math.min(cursorPos, line.length));\r\n  const before = line.slice(0, safeCursor);\r\n\r\n  // walk back over non-whitespace to find where the current token starts.\r\n  // if the cursor sits on whitespace we get an empty token.\r\n  let tokenStart = safeCursor;\r\n  while (tokenStart > 0 && !/\\s/.test(before[tokenStart - 1])) {\r\n    tokenStart--;\r\n  }\r\n  const token = before.slice(tokenStart);\r\n\r\n  // first token on the line? then everything before it is whitespace\r\n  const isFirstWord = /^\\s*$/.test(before.slice(0, tokenStart));\r\n\r\n  const matches: string[] = [];\r\n\r\n  // commands: first word, bare name only. bash also skips PATH lookup\r\n  // once there's a '/' in the token.\r\n  if (isFirstWord && !token.includes(\"/\")) {\r\n    const seen = new Set<string>();\r\n    const pushCmd = (name: string) => {\r\n      if (seen.has(name)) return;\r\n      if (!name.startsWith(token)) return;\r\n      seen.add(name);\r\n      matches.push(name + \" \");\r\n    };\r\n    for (const name of builtinNames) pushCmd(name);\r\n    if (opts?.extraCommands) {\r\n      for (const name of opts.extraCommands) pushCmd(name);\r\n    }\r\n  }\r\n\r\n  // path completion always runs, even for the first word, so ./foo,\r\n  // /bin/sh, src/main.ts etc still work\r\n  const pathMatches = completePath(token, cwd, volume);\r\n  for (const m of pathMatches) {\r\n    if (!matches.includes(m)) matches.push(m);\r\n  }\r\n\r\n  matches.sort();\r\n\r\n  return { token, tokenStart, matches };\r\n}\r\n\r\nexport function longestCommonPrefix(strs: string[]): string {\r\n  if (strs.length === 0) return \"\";\r\n  if (strs.length === 1) return strs[0];\r\n  let prefix = strs[0];\r\n  for (let i = 1; i < strs.length && prefix.length > 0; i++) {\r\n    const s = strs[i];\r\n    let j = 0;\r\n    while (j < prefix.length && j < s.length && prefix[j] === s[j]) j++;\r\n    prefix = prefix.slice(0, j);\r\n  }\r\n  return prefix;\r\n}\r\n\r\n/* ---------- path completion ---------- */\r\n\r\nfunction completePath(\r\n  token: string,\r\n  cwd: string,\r\n  volume: MemoryVolume,\r\n): string[] {\r\n  // split the token on the last '/' into a dir part and a prefix:\r\n  //   \"src/sh\"   -> \"src/\",  \"sh\"\r\n  //   \"sh\"       -> \"\",      \"sh\"\r\n  //   \"/usr/b\"   -> \"/usr/\", \"b\"\r\n  //   \"\"         -> \"\",      \"\"\r\n  //   \"src/\"     -> \"src/\",  \"\"\r\n  const lastSlash = token.lastIndexOf(\"/\");\r\n  const dirPart = lastSlash >= 0 ? token.slice(0, lastSlash + 1) : \"\";\r\n  const prefix = lastSlash >= 0 ? token.slice(lastSlash + 1) : token;\r\n\r\n  // turn it into an absolute path so we can readdir it\r\n  let absDir: string;\r\n  if (dirPart.startsWith(\"/\")) {\r\n    absDir = dirPart || \"/\";\r\n  } else if (dirPart === \"\") {\r\n    absDir = cwd || \"/\";\r\n  } else {\r\n    absDir = joinPath(cwd, dirPart);\r\n  }\r\n  absDir = normalize(absDir);\r\n\r\n  let entries: string[];\r\n  try {\r\n    entries = volume.readdirSync(absDir);\r\n  } catch {\r\n    return [];\r\n  }\r\n\r\n  const results: string[] = [];\r\n  for (const entry of entries) {\r\n    if (!entry.startsWith(prefix)) continue;\r\n\r\n    // skip dotfiles unless the user typed a leading '.'\r\n    if (entry.startsWith(\".\") && !prefix.startsWith(\".\")) continue;\r\n\r\n    const full = joinPath(absDir, entry);\r\n    let isDir = false;\r\n    try {\r\n      isDir = volume.statSync(full).isDirectory();\r\n    } catch {\r\n      // if stat blows up just assume it's a file\r\n    }\r\n\r\n    const replacement = dirPart + entry + (isDir ? \"/\" : \" \");\r\n    results.push(replacement);\r\n  }\r\n\r\n  return results;\r\n}\r\n\r\nfunction joinPath(a: string, b: string): string {\r\n  if (b.startsWith(\"/\")) return b;\r\n  if (a.endsWith(\"/\")) return a + b;\r\n  return a + \"/\" + b;\r\n}\r\n\r\nfunction normalize(p: string): string {\r\n  const parts = p.split(\"/\").filter(Boolean);\r\n  const stack: string[] = [];\r\n  for (const part of parts) {\r\n    if (part === \"..\") stack.pop();\r\n    else if (part !== \".\") stack.push(part);\r\n  }\r\n  return \"/\" + stack.join(\"/\");\r\n}\r\n","// Tokenizer + recursive-descent parser.\r\n// Converts a shell command string into an AST (ListNode).\r\n\r\nimport type {\r\n  Token,\r\n  TokenType,\r\n  ListNode,\r\n  ListEntry,\r\n  ListOperator,\r\n  PipelineNode,\r\n  CommandNode,\r\n  RedirectNode,\r\n} from \"./shell-types\";\r\nimport type { MemoryVolume } from \"../memory-volume\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Variable & substitution expansion                                  */\r\n/* ------------------------------------------------------------------ */\r\n\r\n// Expand $VAR, ${VAR}, $?, $$, $0, and tilde.\r\n// Single-quote handling is the caller's job.\r\nexport function expandVariables(\r\n  raw: string,\r\n  env: Record<string, string>,\r\n  lastExit: number,\r\n): string {\r\n  let result = \"\";\r\n  let i = 0;\r\n\r\n  if (raw === \"~\" || raw.startsWith(\"~/\")) {\r\n    const home = env.HOME || \"/home/user\";\r\n    return home + raw.slice(1);\r\n  }\r\n\r\n  while (i < raw.length) {\r\n    if (raw[i] === \"\\\\\") {\r\n      i++;\r\n      if (i < raw.length) result += raw[i++];\r\n      continue;\r\n    }\r\n\r\n    if (raw[i] === \"$\") {\r\n      i++;\r\n      if (i >= raw.length) {\r\n        result += \"$\";\r\n        break;\r\n      }\r\n\r\n      if (raw[i] === \"?\") {\r\n        result += String(lastExit);\r\n        i++;\r\n        continue;\r\n      }\r\n      if (raw[i] === \"$\") {\r\n        result += \"1\"; // stub PID\r\n        i++;\r\n        continue;\r\n      }\r\n      if (raw[i] === \"0\") {\r\n        result += \"nodepod\";\r\n        i++;\r\n        continue;\r\n      }\r\n      if (raw[i] === \"#\") {\r\n        result += \"0\"; // $# stub\r\n        i++;\r\n        continue;\r\n      }\r\n\r\n      if (raw[i] === \"{\") {\r\n        i++;\r\n        let name = \"\";\r\n        while (i < raw.length && raw[i] !== \"}\" && raw[i] !== \":\" && raw[i] !== \"-\" && raw[i] !== \"=\") {\r\n          name += raw[i++];\r\n        }\r\n        let defaultVal = \"\";\r\n        let useDefault = false;\r\n        if (i < raw.length && (raw[i] === \":\" || raw[i] === \"-\")) {\r\n          useDefault = true;\r\n          if (raw[i] === \":\") i++;\r\n          if (i < raw.length && (raw[i] === \"-\" || raw[i] === \"=\")) i++;\r\n          while (i < raw.length && raw[i] !== \"}\") {\r\n            defaultVal += raw[i++];\r\n          }\r\n        }\r\n        if (i < raw.length && raw[i] === \"}\") i++;\r\n\r\n        const val = env[name];\r\n        if (val !== undefined && val !== \"\") {\r\n          result += val;\r\n        } else if (useDefault) {\r\n          result += defaultVal;\r\n        }\r\n        continue;\r\n      }\r\n\r\n      let name = \"\";\r\n      while (i < raw.length && /[a-zA-Z0-9_]/.test(raw[i])) {\r\n        name += raw[i++];\r\n      }\r\n      if (name) {\r\n        result += env[name] ?? \"\";\r\n      } else {\r\n        result += \"$\";\r\n      }\r\n      continue;\r\n    }\r\n\r\n    result += raw[i++];\r\n  }\r\n\r\n  return result;\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Glob expansion                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport function expandGlob(\r\n  pattern: string,\r\n  cwd: string,\r\n  volume: MemoryVolume,\r\n): string[] {\r\n  if (!pattern.includes(\"*\") && !pattern.includes(\"?\")) return [pattern];\r\n\r\n  const lastSlash = pattern.lastIndexOf(\"/\");\r\n  let dir: string;\r\n  let filePattern: string;\r\n\r\n  if (lastSlash === -1) {\r\n    dir = cwd;\r\n    filePattern = pattern;\r\n  } else {\r\n    dir = pattern.slice(0, lastSlash) || \"/\";\r\n    if (!dir.startsWith(\"/\")) dir = `${cwd}/${dir}`.replace(/\\/+/g, \"/\");\r\n    filePattern = pattern.slice(lastSlash + 1);\r\n  }\r\n\r\n  try {\r\n    const entries = volume.readdirSync(dir);\r\n    const regex = globToRegex(filePattern);\r\n    const matches = entries.filter((e) => regex.test(e));\r\n\r\n    if (matches.length === 0) return [pattern];\r\n\r\n    return matches.sort().map((m) =>\r\n      lastSlash === -1 ? m : `${dir}/${m}`.replace(/\\/+/g, \"/\"),\r\n    );\r\n  } catch {\r\n    return [pattern];\r\n  }\r\n}\r\n\r\nfunction globToRegex(pattern: string): RegExp {\r\n  let regex = \"^\";\r\n  for (const ch of pattern) {\r\n    if (ch === \"*\") regex += \".*\";\r\n    else if (ch === \"?\") regex += \".\";\r\n    else if (\".+^${}()|[]\\\\\".includes(ch)) regex += \"\\\\\" + ch;\r\n    else regex += ch;\r\n  }\r\n  regex += \"$\";\r\n  return new RegExp(regex);\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Tokenizer                                                          */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport function tokenize(\r\n  input: string,\r\n  env: Record<string, string>,\r\n  lastExit: number,\r\n): Token[] {\r\n  const tokens: Token[] = [];\r\n  let i = 0;\r\n\r\n  while (i < input.length) {\r\n    if (input[i] === \" \" || input[i] === \"\\t\") {\r\n      i++;\r\n      continue;\r\n    }\r\n\r\n    if (input[i] === \"\\n\") {\r\n      tokens.push({ type: \"newline\", value: \"\\n\" });\r\n      i++;\r\n      continue;\r\n    }\r\n\r\n    if (input[i] === \"#\") {\r\n      while (i < input.length && input[i] !== \"\\n\") i++;\r\n      continue;\r\n    }\r\n\r\n    if (input.slice(i, i + 4) === \"2>&1\") {\r\n      tokens.push({ type: \"redirect-2to1\", value: \"2>&1\" });\r\n      i += 4;\r\n      continue;\r\n    }\r\n\r\n    if (input[i] === \">\" && input[i + 1] === \">\") {\r\n      tokens.push({ type: \"redirect-app\", value: \">>\" });\r\n      i += 2;\r\n      continue;\r\n    }\r\n\r\n    if (input[i] === \">\") {\r\n      tokens.push({ type: \"redirect-out\", value: \">\" });\r\n      i++;\r\n      continue;\r\n    }\r\n\r\n    if (input[i] === \"<\") {\r\n      tokens.push({ type: \"redirect-in\", value: \"<\" });\r\n      i++;\r\n      continue;\r\n    }\r\n\r\n    if (input[i] === \"&\" && input[i + 1] === \"&\") {\r\n      tokens.push({ type: \"and\", value: \"&&\" });\r\n      i += 2;\r\n      continue;\r\n    }\r\n\r\n    if (input[i] === \"|\" && input[i + 1] === \"|\") {\r\n      tokens.push({ type: \"or\", value: \"||\" });\r\n      i += 2;\r\n      continue;\r\n    }\r\n\r\n    if (input[i] === \"|\") {\r\n      tokens.push({ type: \"pipe\", value: \"|\" });\r\n      i++;\r\n      continue;\r\n    }\r\n\r\n    if (input[i] === \";\") {\r\n      tokens.push({ type: \"semi\", value: \";\" });\r\n      i++;\r\n      continue;\r\n    }\r\n\r\n    let word = \"\";\r\n    while (i < input.length) {\r\n      const ch = input[i];\r\n\r\n      if (ch === \" \" || ch === \"\\t\" || ch === \"\\n\") break;\r\n      if (ch === \"|\" || ch === \"&\" || ch === \";\" || ch === \">\" || ch === \"<\") break;\r\n      if (ch === \"2\" && input.slice(i, i + 4) === \"2>&1\") break;\r\n\r\n      if (ch === \"\\\\\") {\r\n        i++;\r\n        if (i < input.length) word += input[i++];\r\n        continue;\r\n      }\r\n\r\n      // single quotes: no expansion\r\n      if (ch === \"'\") {\r\n        i++;\r\n        while (i < input.length && input[i] !== \"'\") {\r\n          word += input[i++];\r\n        }\r\n        if (i < input.length) i++;\r\n        continue;\r\n      }\r\n\r\n      // double quotes: expand variables\r\n      if (ch === '\"') {\r\n        i++;\r\n        let dqContent = \"\";\r\n        while (i < input.length && input[i] !== '\"') {\r\n          if (input[i] === \"\\\\\" && i + 1 < input.length) {\r\n            const next = input[i + 1];\r\n            if (next === '\"' || next === \"\\\\\" || next === \"$\" || next === \"`\") {\r\n              dqContent += next;\r\n              i += 2;\r\n              continue;\r\n            }\r\n          }\r\n          dqContent += input[i++];\r\n        }\r\n        if (i < input.length) i++;\r\n        word += expandVariables(dqContent, env, lastExit);\r\n        continue;\r\n      }\r\n\r\n      word += ch;\r\n      i++;\r\n    }\r\n\r\n    if (word.length > 0) {\r\n      const expanded = expandVariables(word, env, lastExit);\r\n      tokens.push({ type: \"word\", value: expanded });\r\n    }\r\n  }\r\n\r\n  tokens.push({ type: \"eof\", value: \"\" });\r\n  return tokens;\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Recursive-descent parser                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nclass Parser {\r\n  private tokens: Token[];\r\n  private pos = 0;\r\n\r\n  constructor(tokens: Token[]) {\r\n    this.tokens = tokens;\r\n  }\r\n\r\n  private peek(): Token {\r\n    return this.tokens[this.pos] ?? { type: \"eof\", value: \"\" };\r\n  }\r\n\r\n  private advance(): Token {\r\n    return this.tokens[this.pos++] ?? { type: \"eof\", value: \"\" };\r\n  }\r\n\r\n  private skipNewlines(): void {\r\n    while (this.peek().type === \"newline\") this.advance();\r\n  }\r\n\r\n  parseList(): ListNode {\r\n    this.skipNewlines();\r\n    const entries: ListEntry[] = [];\r\n\r\n    while (this.peek().type !== \"eof\") {\r\n      this.skipNewlines();\r\n      if (this.peek().type === \"eof\") break;\r\n\r\n      const pipeline = this.parsePipeline();\r\n      const op = this.peek();\r\n\r\n      if (op.type === \"and\" || op.type === \"or\" || op.type === \"semi\") {\r\n        this.advance();\r\n        const operator: ListOperator =\r\n          op.type === \"and\" ? \"&&\" : op.type === \"or\" ? \"||\" : \";\";\r\n        entries.push({ pipeline, next: operator });\r\n      } else {\r\n        entries.push({ pipeline });\r\n        break;\r\n      }\r\n    }\r\n\r\n    return { kind: \"list\", entries };\r\n  }\r\n\r\n  private parsePipeline(): PipelineNode {\r\n    const commands: CommandNode[] = [];\r\n    commands.push(this.parseCommand());\r\n\r\n    while (this.peek().type === \"pipe\") {\r\n      this.advance();\r\n      commands.push(this.parseCommand());\r\n    }\r\n\r\n    return { kind: \"pipeline\", commands };\r\n  }\r\n\r\n  private parseCommand(): CommandNode {\r\n    const args: string[] = [];\r\n    const redirects: RedirectNode[] = [];\r\n    const assignments: Record<string, string> = {};\r\n\r\n    // leading KEY=value assignments (only before any regular args)\r\n    while (this.peek().type === \"word\") {\r\n      const val = this.peek().value;\r\n      const eqIdx = val.indexOf(\"=\");\r\n      if (eqIdx > 0 && args.length === 0 && /^[a-zA-Z_]/.test(val)) {\r\n        this.advance();\r\n        assignments[val.slice(0, eqIdx)] = val.slice(eqIdx + 1);\r\n      } else {\r\n        break;\r\n      }\r\n    }\r\n\r\n    while (true) {\r\n      const tok = this.peek();\r\n\r\n      if (tok.type === \"word\") {\r\n        this.advance();\r\n        args.push(tok.value);\r\n        continue;\r\n      }\r\n\r\n      if (tok.type === \"redirect-out\" || tok.type === \"redirect-app\" || tok.type === \"redirect-in\") {\r\n        this.advance();\r\n        const target = this.peek();\r\n        if (target.type === \"word\") {\r\n          this.advance();\r\n          const rtype =\r\n            tok.type === \"redirect-out\" ? \"write\" as const :\r\n            tok.type === \"redirect-app\" ? \"append\" as const :\r\n            \"read\" as const;\r\n          redirects.push({ type: rtype, target: target.value });\r\n        }\r\n        continue;\r\n      }\r\n\r\n      if (tok.type === \"redirect-2to1\") {\r\n        this.advance();\r\n        redirects.push({ type: \"stderr-to-stdout\", target: \"\" });\r\n        continue;\r\n      }\r\n\r\n      break;\r\n    }\r\n\r\n    return { kind: \"command\", args, redirects, assignments };\r\n  }\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Public API                                                         */\r\n/* ------------------------------------------------------------------ */\r\n\r\n// Glob expansion happens in the interpreter (needs volume access),\r\n// but variable expansion and quoting are done here at tokenize time.\r\nexport function parse(\r\n  input: string,\r\n  env: Record<string, string>,\r\n  lastExit: number = 0,\r\n): ListNode {\r\n  const tokens = tokenize(input, env, lastExit);\r\n  const parser = new Parser(tokens);\r\n  return parser.parseList();\r\n}\r\n","// Shared utilities for shell builtins: colors, arg parsing, path helpers, result builders.\r\n\r\nimport type { ShellResult } from \"./shell-types\";\r\nimport * as pathModule from \"../polyfills/path\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  ANSI color helpers                                                 */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const RESET = \"\\x1b[0m\";\r\nexport const DIM = \"\\x1b[2m\";\r\nexport const GREEN = \"\\x1b[32m\";\r\nexport const MAGENTA = \"\\x1b[35m\";\r\nexport const CYAN = \"\\x1b[36m\";\r\nexport const BOLD_BLUE = \"\\x1b[1;34m\";\r\nexport const BOLD_RED = \"\\x1b[1;31m\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  ShellResult builders                                               */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const ok = (stdout = \"\"): ShellResult => ({\r\n  stdout,\r\n  stderr: \"\",\r\n  exitCode: 0,\r\n});\r\n\r\nexport const fail = (stderr: string, code = 1): ShellResult => ({\r\n  stdout: \"\",\r\n  stderr,\r\n  exitCode: code,\r\n});\r\n\r\nexport const EXIT_OK: ShellResult = { stdout: \"\", stderr: \"\", exitCode: 0 };\r\nexport const EXIT_FAIL: ShellResult = { stdout: \"\", stderr: \"\", exitCode: 1 };\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Date / time constants                                              */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const MONTHS_SHORT = [\r\n  \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\r\n  \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\",\r\n] as const;\r\n\r\nexport const MONTHS_LONG = [\r\n  \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\r\n  \"July\", \"August\", \"September\", \"October\", \"November\", \"December\",\r\n] as const;\r\n\r\nexport const DAYS_SHORT = [\r\n  \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\",\r\n] as const;\r\n\r\nexport const DAYS_LONG = [\r\n  \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\",\r\n  \"Thursday\", \"Friday\", \"Saturday\",\r\n] as const;\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Path resolution                                                    */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport function resolvePath(p: string, cwd: string): string {\r\n  if (p.startsWith(\"/\")) return pathModule.normalize(p);\r\n  return pathModule.normalize(`${cwd}/${p}`);\r\n}\r\n\r\nexport { pathModule };\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Argument parsing                                                   */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport function parseArgs(\r\n  args: string[],\r\n  knownFlags: string[],\r\n  knownOpts: string[] = [],\r\n): { flags: Set<string>; opts: Record<string, string>; positional: string[] } {\r\n  const flags = new Set<string>();\r\n  const opts: Record<string, string> = {};\r\n  const positional: string[] = [];\r\n  for (let i = 0; i < args.length; i++) {\r\n    const a = args[i];\r\n    if (a === \"--\") {\r\n      positional.push(...args.slice(i + 1));\r\n      break;\r\n    }\r\n    if (a.startsWith(\"--\")) {\r\n      const eq = a.indexOf(\"=\");\r\n      if (eq > 0) {\r\n        opts[a.slice(2, eq)] = a.slice(eq + 1);\r\n      } else {\r\n        flags.add(a.slice(2));\r\n      }\r\n    } else if (a.startsWith(\"-\") && a.length > 1 && !/^-\\d/.test(a)) {\r\n      for (let j = 1; j < a.length; j++) {\r\n        const ch = a[j];\r\n        if (knownOpts.includes(ch) && j + 1 < a.length) {\r\n          opts[ch] = a.slice(j + 1);\r\n          break;\r\n        } else if (knownOpts.includes(ch) && i + 1 < args.length) {\r\n          opts[ch] = args[++i];\r\n          break;\r\n        } else if (knownFlags.includes(ch)) {\r\n          flags.add(ch);\r\n        }\r\n      }\r\n    } else {\r\n      positional.push(a);\r\n    }\r\n  }\r\n  return { flags, opts, positional };\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  String processing                                                  */\r\n/* ------------------------------------------------------------------ */\r\n\r\n// Expand POSIX character classes like [:upper:], [:lower:], etc. for `tr`\r\nexport function expandCharClass(s: string): string {\r\n  return s\r\n    .replace(/\\[:upper:\\]/g, \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\")\r\n    .replace(/\\[:lower:\\]/g, \"abcdefghijklmnopqrstuvwxyz\")\r\n    .replace(\r\n      /\\[:alpha:\\]/g,\r\n      \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",\r\n    )\r\n    .replace(/\\[:digit:\\]/g, \"0123456789\")\r\n    .replace(\r\n      /\\[:alnum:\\]/g,\r\n      \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\",\r\n    )\r\n    .replace(/\\[:space:\\]/g, \" \\t\\n\\r\\x0b\\x0c\")\r\n    .replace(/\\[:blank:\\]/g, \" \\t\")\r\n    .replace(/\\[:punct:\\]/g, \"!\\\"#$%&'()*+,-./:;<=>?@[\\\\]^_`{|}~\")\r\n    .replace(\r\n      /\\[:print:\\]/g,\r\n      (() => {\r\n        let r = \"\";\r\n        for (let i = 32; i < 127; i++) r += String.fromCharCode(i);\r\n        return r;\r\n      })(),\r\n    )\r\n    .replace(\r\n      /\\[:graph:\\]/g,\r\n      (() => {\r\n        let r = \"\";\r\n        for (let i = 33; i < 127; i++) r += String.fromCharCode(i);\r\n        return r;\r\n      })(),\r\n    )\r\n    .replace(\r\n      /\\[:cntrl:\\]/g,\r\n      (() => {\r\n        let r = \"\";\r\n        for (let i = 0; i < 32; i++) r += String.fromCharCode(i);\r\n        r += String.fromCharCode(127);\r\n        return r;\r\n      })(),\r\n    );\r\n}\r\n\r\nexport function processEscapes(s: string): string {\r\n  let out = \"\";\r\n  for (let i = 0; i < s.length; i++) {\r\n    if (s[i] === \"\\\\\" && i + 1 < s.length) {\r\n      const c = s[i + 1];\r\n      if (c === \"n\") {\r\n        out += \"\\n\";\r\n        i++;\r\n        continue;\r\n      }\r\n      if (c === \"t\") {\r\n        out += \"\\t\";\r\n        i++;\r\n        continue;\r\n      }\r\n      if (c === \"r\") {\r\n        out += \"\\r\";\r\n        i++;\r\n        continue;\r\n      }\r\n      if (c === \"a\") {\r\n        out += \"\\x07\";\r\n        i++;\r\n        continue;\r\n      }\r\n      if (c === \"b\") {\r\n        out += \"\\b\";\r\n        i++;\r\n        continue;\r\n      }\r\n      if (c === \"f\") {\r\n        out += \"\\f\";\r\n        i++;\r\n        continue;\r\n      }\r\n      if (c === \"v\") {\r\n        out += \"\\x0b\";\r\n        i++;\r\n        continue;\r\n      }\r\n      if (c === \"\\\\\") {\r\n        out += \"\\\\\";\r\n        i++;\r\n        continue;\r\n      }\r\n      if (c === \"0\") {\r\n        let oct = \"\";\r\n        let j = i + 2;\r\n        while (j < s.length && j < i + 5 && s[j] >= \"0\" && s[j] <= \"7\")\r\n          oct += s[j++];\r\n        out += String.fromCharCode(parseInt(oct || \"0\", 8));\r\n        i = j - 1;\r\n        continue;\r\n      }\r\n      if (c === \"x\") {\r\n        const hex = s.slice(i + 2, i + 4);\r\n        if (/^[0-9a-fA-F]{1,2}$/.test(hex)) {\r\n          out += String.fromCharCode(parseInt(hex, 16));\r\n          i += 1 + hex.length;\r\n          continue;\r\n        }\r\n      }\r\n      out += s[i];\r\n    } else {\r\n      out += s[i];\r\n    }\r\n  }\r\n  return out;\r\n}\r\n\r\nexport function humanSize(bytes: number): string {\r\n  if (bytes < 1024) return String(bytes);\r\n  const units = [\"K\", \"M\", \"G\", \"T\"];\r\n  let size = bytes;\r\n  for (const u of units) {\r\n    size /= 1024;\r\n    if (size < 1024 || u === \"T\") return size.toFixed(size < 10 ? 1 : 0) + u;\r\n  }\r\n  return String(bytes);\r\n}\r\n\r\nexport function globToRegex(pattern: string): string {\r\n  return pattern\r\n    .replace(/[.+^${}()|[\\]\\\\]/g, \"\\\\$&\")\r\n    .replace(/\\*/g, \".*\")\r\n    .replace(/\\?/g, \".\");\r\n}\r\n","import type { BuiltinFn, ShellContext } from \"../shell-types\";\r\nimport {\r\n  ok,\r\n  fail,\r\n  resolvePath,\r\n  parseArgs,\r\n  pathModule,\r\n} from \"../shell-helpers\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Helpers                                                            */\r\n/* ------------------------------------------------------------------ */\r\n\r\nfunction formatCat(\r\n  content: string,\r\n  numberAll: boolean,\r\n  numberNonBlank: boolean,\r\n  squeeze: boolean,\r\n  showEnds: boolean,\r\n  showTabs: boolean,\r\n): string {\r\n  let lines = content.split(\"\\n\");\r\n  if (squeeze) {\r\n    const squeezed: string[] = [];\r\n    let prevBlank = false;\r\n    for (const line of lines) {\r\n      const blank = line.length === 0;\r\n      if (blank && prevBlank) continue;\r\n      squeezed.push(line);\r\n      prevBlank = blank;\r\n    }\r\n    lines = squeezed;\r\n  }\r\n  let lineNum = 1;\r\n  const result = lines.map((line, idx) => {\r\n    let l = line;\r\n    if (showTabs) l = l.replace(/\\t/g, \"^I\");\r\n    if (showEnds && idx < lines.length - 1) l += \"$\";\r\n    if (numberNonBlank) {\r\n      if (line.length > 0) l = `${String(lineNum++).padStart(6)}\\t${l}`;\r\n    } else if (numberAll) {\r\n      l = `${String(lineNum++).padStart(6)}\\t${l}`;\r\n    }\r\n    return l;\r\n  });\r\n  return result.join(\"\\n\");\r\n}\r\n\r\nfunction copyTree(ctx: ShellContext, src: string, dst: string): void {\r\n  ctx.volume.mkdirSync(dst, { recursive: true });\r\n  for (const name of ctx.volume.readdirSync(src)) {\r\n    const s = `${src}/${name}`;\r\n    const d = `${dst}/${name}`;\r\n    const st = ctx.volume.statSync(s);\r\n    if (st.isDirectory()) {\r\n      copyTree(ctx, s, d);\r\n    } else {\r\n      ctx.volume.writeFileSync(d, ctx.volume.readFileSync(s));\r\n    }\r\n  }\r\n}\r\n\r\nfunction removeTree(ctx: ShellContext, dir: string): void {\r\n  for (const name of ctx.volume.readdirSync(dir)) {\r\n    const full = `${dir}/${name}`;\r\n    const st = ctx.volume.statSync(full);\r\n    if (st.isDirectory()) removeTree(ctx, full);\r\n    else ctx.volume.unlinkSync(full);\r\n  }\r\n  ctx.volume.rmdirSync(dir);\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Commands                                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst cat: BuiltinFn = (args, ctx, stdin) => {\r\n  const { flags, positional } = parseArgs(args, [\r\n    \"n\",\r\n    \"b\",\r\n    \"s\",\r\n    \"E\",\r\n    \"T\",\r\n    \"A\",\r\n    \"e\",\r\n    \"t\",\r\n    \"v\",\r\n  ]);\r\n  const numberAll = flags.has(\"n\") || flags.has(\"A\");\r\n  const numberNonBlank = flags.has(\"b\");\r\n  const squeeze = flags.has(\"s\");\r\n  const showEnds = flags.has(\"E\") || flags.has(\"A\") || flags.has(\"e\");\r\n  const showTabs = flags.has(\"T\") || flags.has(\"A\") || flags.has(\"t\");\r\n\r\n  if (positional.length === 0 && stdin !== undefined) {\r\n    return ok(\r\n      formatCat(stdin, numberAll, numberNonBlank, squeeze, showEnds, showTabs),\r\n    );\r\n  }\r\n  if (positional.length === 0) return fail(\"cat: missing operand\\n\");\r\n\r\n  let out = \"\";\r\n  for (const file of positional) {\r\n    if (file === \"-\" && stdin !== undefined) {\r\n      out += formatCat(\r\n        stdin,\r\n        numberAll,\r\n        numberNonBlank,\r\n        squeeze,\r\n        showEnds,\r\n        showTabs,\r\n      );\r\n      continue;\r\n    }\r\n    const p = resolvePath(file, ctx.cwd);\r\n    try {\r\n      const content = ctx.volume.readFileSync(p, \"utf8\");\r\n      out += formatCat(\r\n        content,\r\n        numberAll,\r\n        numberNonBlank,\r\n        squeeze,\r\n        showEnds,\r\n        showTabs,\r\n      );\r\n    } catch {\r\n      return fail(`cat: ${file}: No such file or directory\\n`);\r\n    }\r\n  }\r\n  return ok(out);\r\n};\r\n\r\nconst head: BuiltinFn = (args, ctx, stdin) => {\r\n  let n = 10;\r\n  let byteMode = false;\r\n  let bytes = 0;\r\n  const files: string[] = [];\r\n  for (let i = 0; i < args.length; i++) {\r\n    if (args[i] === \"-n\" && i + 1 < args.length) {\r\n      n = parseInt(args[++i], 10) || 10;\r\n    } else if (args[i] === \"-c\" && i + 1 < args.length) {\r\n      bytes = parseInt(args[++i], 10) || 0;\r\n      byteMode = true;\r\n    } else if (args[i].startsWith(\"-\") && /^\\d+$/.test(args[i].slice(1))) {\r\n      n = parseInt(args[i].slice(1), 10);\r\n    } else if (!args[i].startsWith(\"-\")) {\r\n      files.push(args[i]);\r\n    }\r\n  }\r\n\r\n  const doHead = (content: string) => {\r\n    if (byteMode) return content.slice(0, bytes);\r\n    return content.split(\"\\n\").slice(0, n).join(\"\\n\") + \"\\n\";\r\n  };\r\n\r\n  if (files.length === 0 && stdin !== undefined) return ok(doHead(stdin));\r\n  if (files.length === 0) return fail(\"head: missing operand\\n\");\r\n\r\n  let out = \"\";\r\n  for (const file of files) {\r\n    const p = resolvePath(file, ctx.cwd);\r\n    try {\r\n      const content = ctx.volume.readFileSync(p, \"utf8\");\r\n      if (files.length > 1) out += `==> ${file} <==\\n`;\r\n      out += doHead(content);\r\n    } catch {\r\n      return fail(`head: ${file}: No such file or directory\\n`);\r\n    }\r\n  }\r\n  return ok(out);\r\n};\r\n\r\nconst tail: BuiltinFn = (args, ctx, stdin) => {\r\n  let n = 10;\r\n  let byteMode = false;\r\n  let bytes = 0;\r\n  const files: string[] = [];\r\n  for (let i = 0; i < args.length; i++) {\r\n    if (args[i] === \"-n\" && i + 1 < args.length) {\r\n      n = parseInt(args[++i], 10) || 10;\r\n    } else if (args[i] === \"-c\" && i + 1 < args.length) {\r\n      bytes = parseInt(args[++i], 10) || 0;\r\n      byteMode = true;\r\n    } else if (args[i] === \"-f\") {\r\n      // -f (follow) can't work in VFS, ignore\r\n    } else if (args[i].startsWith(\"-\") && /^\\d+$/.test(args[i].slice(1))) {\r\n      n = parseInt(args[i].slice(1), 10);\r\n    } else if (!args[i].startsWith(\"-\")) {\r\n      files.push(args[i]);\r\n    }\r\n  }\r\n\r\n  const doTail = (content: string) => {\r\n    if (byteMode) return content.slice(-bytes);\r\n    const lines = content.split(\"\\n\");\r\n    const start = Math.max(\r\n      0,\r\n      lines.length - n - (content.endsWith(\"\\n\") ? 1 : 0),\r\n    );\r\n    return lines.slice(start).join(\"\\n\");\r\n  };\r\n\r\n  if (files.length === 0 && stdin !== undefined) return ok(doTail(stdin));\r\n  if (files.length === 0) return fail(\"tail: missing operand\\n\");\r\n\r\n  let out = \"\";\r\n  for (const file of files) {\r\n    const p = resolvePath(file, ctx.cwd);\r\n    try {\r\n      const content = ctx.volume.readFileSync(p, \"utf8\");\r\n      if (files.length > 1) out += `==> ${file} <==\\n`;\r\n      out += doTail(content);\r\n    } catch {\r\n      return fail(`tail: ${file}: No such file or directory\\n`);\r\n    }\r\n  }\r\n  return ok(out);\r\n};\r\n\r\nconst touch: BuiltinFn = (args, ctx) => {\r\n  if (args.length === 0) return fail(\"touch: missing operand\\n\");\r\n  for (const file of args) {\r\n    if (file.startsWith(\"-\")) continue;\r\n    const p = resolvePath(file, ctx.cwd);\r\n    if (!ctx.volume.existsSync(p)) {\r\n      ctx.volume.writeFileSync(p, \"\");\r\n    }\r\n  }\r\n  return ok();\r\n};\r\n\r\nconst cpCmd: BuiltinFn = (args, ctx) => {\r\n  const { flags, positional } = parseArgs(args, [\"r\", \"R\", \"f\", \"n\", \"v\"]);\r\n  const recursive = flags.has(\"r\") || flags.has(\"R\") || flags.has(\"recursive\");\r\n  const verbose = flags.has(\"v\");\r\n\r\n  if (positional.length < 2) return fail(\"cp: missing operand\\n\");\r\n\r\n  const dest = positional[positional.length - 1];\r\n  const sources = positional.slice(0, -1);\r\n  const dstPath = resolvePath(dest, ctx.cwd);\r\n  let out = \"\";\r\n\r\n  for (const src of sources) {\r\n    const srcPath = resolvePath(src, ctx.cwd);\r\n    try {\r\n      const st = ctx.volume.statSync(srcPath);\r\n      if (st.isDirectory()) {\r\n        if (!recursive)\r\n          return fail(`cp: -r not specified; omitting directory '${src}'\\n`);\r\n        copyTree(ctx, srcPath, dstPath);\r\n        if (verbose) out += `'${src}' -> '${dest}'\\n`;\r\n      } else {\r\n        let destFinal = dstPath;\r\n        if (ctx.volume.existsSync(dstPath)) {\r\n          try {\r\n            if (ctx.volume.statSync(dstPath).isDirectory()) {\r\n              destFinal = `${dstPath}/${pathModule.basename(srcPath)}`;\r\n            }\r\n          } catch {\r\n            /* */\r\n          }\r\n        }\r\n        ctx.volume.writeFileSync(destFinal, ctx.volume.readFileSync(srcPath));\r\n        if (verbose) out += `'${src}' -> '${dest}'\\n`;\r\n      }\r\n    } catch {\r\n      return fail(`cp: cannot stat '${src}': No such file or directory\\n`);\r\n    }\r\n  }\r\n  return ok(out);\r\n};\r\n\r\nconst mv: BuiltinFn = (args, ctx) => {\r\n  const { flags, positional } = parseArgs(args, [\"f\", \"n\", \"v\"]);\r\n  const verbose = flags.has(\"v\");\r\n  if (positional.length < 2) return fail(\"mv: missing operand\\n\");\r\n\r\n  const dest = positional[positional.length - 1];\r\n  const sources = positional.slice(0, -1);\r\n  const dstPath = resolvePath(dest, ctx.cwd);\r\n  let out = \"\";\r\n\r\n  for (const src of sources) {\r\n    const srcPath = resolvePath(src, ctx.cwd);\r\n    try {\r\n      let destFinal = dstPath;\r\n      if (ctx.volume.existsSync(dstPath)) {\r\n        try {\r\n          if (ctx.volume.statSync(dstPath).isDirectory()) {\r\n            destFinal = `${dstPath}/${pathModule.basename(srcPath)}`;\r\n          }\r\n        } catch {\r\n          /* */\r\n        }\r\n      }\r\n      ctx.volume.renameSync(srcPath, destFinal);\r\n      if (verbose) out += `renamed '${src}' -> '${dest}'\\n`;\r\n    } catch {\r\n      return fail(\r\n        `mv: cannot move '${src}' to '${dest}': No such file or directory\\n`,\r\n      );\r\n    }\r\n  }\r\n  return ok(out);\r\n};\r\n\r\nconst rm: BuiltinFn = (args, ctx) => {\r\n  const { flags, positional } = parseArgs(args, [\"r\", \"R\", \"f\", \"v\"]);\r\n  const recursive = flags.has(\"r\") || flags.has(\"R\") || flags.has(\"recursive\");\r\n  const force = flags.has(\"f\") || flags.has(\"force\");\r\n  const verbose = flags.has(\"v\");\r\n\r\n  if (positional.length === 0 && !force) return fail(\"rm: missing operand\\n\");\r\n\r\n  let out = \"\";\r\n  for (const target of positional) {\r\n    const p = resolvePath(target, ctx.cwd);\r\n    if (!ctx.volume.existsSync(p)) {\r\n      if (force) continue;\r\n      return fail(`rm: cannot remove '${target}': No such file or directory\\n`);\r\n    }\r\n    const st = ctx.volume.statSync(p);\r\n    if (st.isDirectory()) {\r\n      if (!recursive)\r\n        return fail(`rm: cannot remove '${target}': Is a directory\\n`);\r\n      removeTree(ctx, p);\r\n      if (verbose) out += `removed directory '${target}'\\n`;\r\n    } else {\r\n      ctx.volume.unlinkSync(p);\r\n      if (verbose) out += `removed '${target}'\\n`;\r\n    }\r\n  }\r\n  return ok(out);\r\n};\r\n\r\nconst mkdir_cmd: BuiltinFn = (args, ctx) => {\r\n  const { flags, positional } = parseArgs(args, [\"p\", \"v\"]);\r\n  const recursive = flags.has(\"p\");\r\n  const verbose = flags.has(\"v\");\r\n\r\n  if (positional.length === 0) return fail(\"mkdir: missing operand\\n\");\r\n\r\n  let out = \"\";\r\n  for (const dir of positional) {\r\n    const p = resolvePath(dir, ctx.cwd);\r\n    try {\r\n      ctx.volume.mkdirSync(p, { recursive });\r\n      if (verbose) out += `mkdir: created directory '${dir}'\\n`;\r\n    } catch (e) {\r\n      if (!recursive)\r\n        return fail(\r\n          `mkdir: cannot create directory '${dir}': ${e instanceof Error ? e.message : String(e)}\\n`,\r\n        );\r\n    }\r\n  }\r\n  return ok(out);\r\n};\r\n\r\nconst rmdir_cmd: BuiltinFn = (args, ctx) => {\r\n  const { flags, positional } = parseArgs(args, [\"p\", \"v\"]);\r\n  const parents = flags.has(\"p\");\r\n  const verbose = flags.has(\"v\");\r\n\r\n  if (positional.length === 0) return fail(\"rmdir: missing operand\\n\");\r\n\r\n  let out = \"\";\r\n  for (const dir of positional) {\r\n    let p = resolvePath(dir, ctx.cwd);\r\n    try {\r\n      ctx.volume.rmdirSync(p);\r\n      if (verbose) out += `rmdir: removing directory, '${dir}'\\n`;\r\n      if (parents) {\r\n        while (p !== \"/\") {\r\n          p = pathModule.dirname(p);\r\n          if (p === \"/\") break;\r\n          try {\r\n            ctx.volume.rmdirSync(p);\r\n          } catch {\r\n            break;\r\n          }\r\n        }\r\n      }\r\n    } catch {\r\n      return fail(\r\n        `rmdir: failed to remove '${dir}': Directory not empty or not found\\n`,\r\n      );\r\n    }\r\n  }\r\n  return ok(out);\r\n};\r\n\r\nconst chmod: BuiltinFn = (args, _ctx) => {\r\n  if (args.length < 2) return fail(\"chmod: missing operand\\n\");\r\n  return ok(); // no-op in VFS\r\n};\r\n\r\nconst wc: BuiltinFn = (args, ctx, stdin) => {\r\n  const { flags, positional } = parseArgs(args, [\"l\", \"w\", \"c\", \"m\", \"L\"]);\r\n  const showLines = flags.has(\"l\");\r\n  const showWords = flags.has(\"w\");\r\n  const showBytes = flags.has(\"c\");\r\n  const showChars = flags.has(\"m\");\r\n  const showMaxLine = flags.has(\"L\");\r\n  const showAll =\r\n    !showLines && !showWords && !showBytes && !showChars && !showMaxLine;\r\n\r\n  const doWc = (content: string, label?: string) => {\r\n    const lines = content.split(\"\\n\").length - (content.endsWith(\"\\n\") ? 1 : 0);\r\n    const words = content.split(/\\s+/).filter(Boolean).length;\r\n    const bytes = new TextEncoder().encode(content).length;\r\n    const chars = [...content].length;\r\n    const maxLine = content\r\n      .split(\"\\n\")\r\n      .reduce((mx, l) => Math.max(mx, l.length), 0);\r\n\r\n    const parts: string[] = [];\r\n    if (showAll || showLines) parts.push(String(lines).padStart(7));\r\n    if (showAll || showWords) parts.push(String(words).padStart(7));\r\n    if (showChars) parts.push(String(chars).padStart(7));\r\n    if (showAll || showBytes) parts.push(String(bytes).padStart(7));\r\n    if (showMaxLine) parts.push(String(maxLine).padStart(7));\r\n\r\n    const suffix = label ? ` ${label}` : \"\";\r\n    return parts.join(\"\") + suffix + \"\\n\";\r\n  };\r\n\r\n  if (positional.length === 0 && stdin !== undefined) return ok(doWc(stdin));\r\n  if (positional.length === 0) return fail(\"wc: missing operand\\n\");\r\n\r\n  let out = \"\";\r\n  let totalLines = 0,\r\n    totalWords = 0,\r\n    totalBytes = 0;\r\n  for (const file of positional) {\r\n    const p = resolvePath(file, ctx.cwd);\r\n    try {\r\n      const content = ctx.volume.readFileSync(p, \"utf8\");\r\n      out += doWc(content, file);\r\n      totalLines +=\r\n        content.split(\"\\n\").length - (content.endsWith(\"\\n\") ? 1 : 0);\r\n      totalWords += content.split(/\\s+/).filter(Boolean).length;\r\n      totalBytes += new TextEncoder().encode(content).length;\r\n    } catch {\r\n      return fail(`wc: ${file}: No such file or directory\\n`);\r\n    }\r\n  }\r\n  if (positional.length > 1) {\r\n    const parts: string[] = [];\r\n    if (showAll || showLines) parts.push(String(totalLines).padStart(7));\r\n    if (showAll || showWords) parts.push(String(totalWords).padStart(7));\r\n    if (showAll || showBytes) parts.push(String(totalBytes).padStart(7));\r\n    out += parts.join(\"\") + \" total\\n\";\r\n  }\r\n  return ok(out);\r\n};\r\n\r\nconst tee: BuiltinFn = (args, ctx, stdin) => {\r\n  const { flags, positional } = parseArgs(args, [\"a\"]);\r\n  const append = flags.has(\"a\");\r\n  const content = stdin ?? \"\";\r\n\r\n  for (const file of positional) {\r\n    const p = resolvePath(file, ctx.cwd);\r\n    if (append && ctx.volume.existsSync(p)) {\r\n      const existing = ctx.volume.readFileSync(p, \"utf8\");\r\n      ctx.volume.writeFileSync(p, existing + content);\r\n    } else {\r\n      ctx.volume.writeFileSync(p, content);\r\n    }\r\n  }\r\n  return ok(content);\r\n};\r\n\r\nconst readlink_cmd: BuiltinFn = (args, ctx) => {\r\n  const { positional } = parseArgs(args, [\"f\", \"e\", \"m\", \"n\", \"q\", \"z\"]);\r\n  if (positional.length === 0) return fail(\"readlink: missing operand\\n\");\r\n  const p = resolvePath(positional[0], ctx.cwd);\r\n  return ok(p + \"\\n\");\r\n};\r\n\r\nconst ln_cmd: BuiltinFn = (args, ctx) => {\r\n  const { positional } = parseArgs(args, [\"s\", \"f\"]);\r\n  if (positional.length < 2) return fail(\"ln: missing operand\\n\");\r\n  const src = resolvePath(positional[0], ctx.cwd);\r\n  const dst = resolvePath(positional[1], ctx.cwd);\r\n  try {\r\n    const content = ctx.volume.readFileSync(src);\r\n    ctx.volume.writeFileSync(dst, content);\r\n    return ok();\r\n  } catch {\r\n    return fail(\r\n      `ln: cannot create link '${positional[1]}': source not found\\n`,\r\n    );\r\n  }\r\n};\r\n\r\nconst writeFile: BuiltinFn = (args, ctx) => {\r\n  if (args.length < 2) return fail(\"write: missing arguments\\n\");\r\n  const path = resolvePath(args[0], ctx.cwd);\r\n  ctx.volume.writeFileSync(path, args.slice(1).join(\" \"));\r\n  return ok();\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Registry                                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const fileOpsCommands: [string, BuiltinFn][] = [\r\n  [\"cat\", cat],\r\n  [\"head\", head],\r\n  [\"tail\", tail],\r\n  [\"touch\", touch],\r\n  [\"cp\", cpCmd],\r\n  [\"mv\", mv],\r\n  [\"rm\", rm],\r\n  [\"mkdir\", mkdir_cmd],\r\n  [\"rmdir\", rmdir_cmd],\r\n  [\"chmod\", chmod],\r\n  [\"wc\", wc],\r\n  [\"tee\", tee],\r\n  [\"ln\", ln_cmd],\r\n  [\"readlink\", readlink_cmd],\r\n  [\"write\", writeFile],\r\n];\r\n","import type { BuiltinFn } from \"../shell-types\";\r\nimport {\r\n  ok,\r\n  fail,\r\n  resolvePath,\r\n  parseArgs,\r\n  humanSize,\r\n  pathModule,\r\n  MONTHS_SHORT,\r\n  RESET,\r\n  DIM,\r\n  GREEN,\r\n  CYAN,\r\n  BOLD_BLUE,\r\n} from \"../shell-helpers\";\r\nimport { LS_BLOCK_SIZE } from \"../../constants/config\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Helpers                                                            */\r\n/* ------------------------------------------------------------------ */\r\n\r\nfunction colorName(name: string, isDir: boolean): string {\r\n  if (isDir) return `${BOLD_BLUE}${name}${RESET}`;\r\n  const dot = name.lastIndexOf(\".\");\r\n  const ext = dot >= 0 ? name.slice(dot) : \"\";\r\n  if (ext === \".sh\" || ext === \".bin\") return `${GREEN}${name}${RESET}`;\r\n  return name;\r\n}\r\n\r\nfunction lsDate(d: Date): string {\r\n  const mon = MONTHS_SHORT[d.getMonth()];\r\n  const day = String(d.getDate()).padStart(2, \" \");\r\n  const now = new Date();\r\n  const sixMonthsAgo = new Date(\r\n    now.getFullYear(),\r\n    now.getMonth() - 6,\r\n    now.getDate(),\r\n  );\r\n  if (d < sixMonthsAgo || d > now) {\r\n    return `${mon} ${day}  ${d.getFullYear()}`;\r\n  }\r\n  const hh = String(d.getHours()).padStart(2, \"0\");\r\n  const mm = String(d.getMinutes()).padStart(2, \"0\");\r\n  return `${mon} ${day} ${hh}:${mm}`;\r\n}\r\n\r\nfunction hashCode(s: string): number {\r\n  let h = 0;\r\n  for (let i = 0; i < s.length; i++) h = ((h << 5) - h + s.charCodeAt(i)) | 0;\r\n  return h;\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Commands                                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst ls: BuiltinFn = (args, ctx) => {\r\n  const { flags, positional } = parseArgs(args, [\r\n    \"l\",\r\n    \"a\",\r\n    \"A\",\r\n    \"R\",\r\n    \"1\",\r\n    \"h\",\r\n    \"S\",\r\n    \"t\",\r\n    \"r\",\r\n    \"F\",\r\n    \"d\",\r\n    \"i\",\r\n  ]);\r\n  const showAll = flags.has(\"a\");\r\n  const showAlmostAll = flags.has(\"A\");\r\n  const longForm = flags.has(\"l\");\r\n  const recursive = flags.has(\"R\");\r\n  const onePerLine = flags.has(\"1\") || longForm;\r\n  const humanReadable = flags.has(\"h\");\r\n  const sortBySize = flags.has(\"S\");\r\n  const sortByTime = flags.has(\"t\");\r\n  const reverseSort = flags.has(\"r\");\r\n  const classify = flags.has(\"F\");\r\n  const dirOnly = flags.has(\"d\");\r\n  const showInode = flags.has(\"i\");\r\n\r\n  const dir =\r\n    positional.length > 0 ? resolvePath(positional[0], ctx.cwd) : ctx.cwd;\r\n\r\n  const lsDir = (d: string, prefix: string): string => {\r\n    if (dirOnly) {\r\n      const name = positional[0] || d;\r\n      if (longForm) {\r\n        const st = ctx.volume.statSync(d);\r\n        const isDir = st.isDirectory();\r\n        const mode = isDir\r\n          ? `${CYAN}drwxr-xr-x${RESET}`\r\n          : `${DIM}-rw-r--r--${RESET}`;\r\n        return `${mode} 1 user user ${String(0).padStart(6)} ${lsDate(new Date(st.mtimeMs || Date.now()))} ${colorName(name, isDir)}\\n`;\r\n      }\r\n      return colorName(name, true) + \"\\n\";\r\n    }\r\n\r\n    let entries: string[];\r\n    try {\r\n      entries = ctx.volume.readdirSync(d);\r\n    } catch {\r\n      return `ls: cannot access '${d}': No such file or directory\\n`;\r\n    }\r\n\r\n    if (showAll) {\r\n      /* all */\r\n    } else if (showAlmostAll)\r\n      entries = entries.filter((e) => e !== \".\" && e !== \"..\");\r\n    else entries = entries.filter((e) => !e.startsWith(\".\"));\r\n\r\n    interface EntryInfo {\r\n      name: string;\r\n      isDir: boolean;\r\n      size: number;\r\n      mtime: number;\r\n    }\r\n    const infos: EntryInfo[] = entries.map((name) => {\r\n      const full = d === \"/\" ? `/${name}` : `${d}/${name}`;\r\n      try {\r\n        const st = ctx.volume.statSync(full);\r\n        const isDir = st.isDirectory();\r\n        let size = 0;\r\n        if (!isDir) {\r\n          try {\r\n            size = ctx.volume.readFileSync(full).length;\r\n          } catch {\r\n            /* */\r\n          }\r\n        }\r\n        return { name, isDir, size, mtime: st.mtimeMs || 0 };\r\n      } catch {\r\n        return { name, isDir: false, size: 0, mtime: 0 };\r\n      }\r\n    });\r\n\r\n    if (sortBySize) infos.sort((a, b) => b.size - a.size);\r\n    else if (sortByTime) infos.sort((a, b) => b.mtime - a.mtime);\r\n    else infos.sort((a, b) => a.name.localeCompare(b.name));\r\n    if (reverseSort) infos.reverse();\r\n\r\n    let out = prefix ? `${BOLD_BLUE}${prefix}${RESET}:\\n` : \"\";\r\n\r\n    if (longForm) {\r\n      const totalBlocks = infos.reduce(\r\n        (s, e) => s + Math.ceil(e.size / LS_BLOCK_SIZE),\r\n        0,\r\n      );\r\n      out += `total ${totalBlocks}\\n`;\r\n      for (const info of infos) {\r\n        const mode = info.isDir\r\n          ? `${CYAN}drwxr-xr-x${RESET}`\r\n          : `${DIM}-rw-r--r--${RESET}`;\r\n        const sizeStr = humanReadable\r\n          ? humanSize(info.size).padStart(5)\r\n          : String(info.size).padStart(6);\r\n        const date = lsDate(new Date(info.mtime || Date.now()));\r\n        const colored = colorName(info.name, info.isDir);\r\n        const suffix = classify\r\n          ? info.isDir\r\n            ? \"/\"\r\n            : \"\"\r\n          : info.isDir\r\n            ? \"/\"\r\n            : \"\";\r\n        const inode = showInode\r\n          ? `${String(Math.abs(hashCode(d + \"/\" + info.name))).padStart(7)} `\r\n          : \"\";\r\n        out += `${inode}${mode} 1 user user ${sizeStr} ${date} ${colored}${suffix}\\n`;\r\n      }\r\n    } else if (onePerLine) {\r\n      for (const info of infos) {\r\n        const inode = showInode\r\n          ? `${String(Math.abs(hashCode(d + \"/\" + info.name))).padStart(7)} `\r\n          : \"\";\r\n        const suffix = classify ? (info.isDir ? \"/\" : \"\") : \"\";\r\n        out += `${inode}${colorName(info.name, info.isDir)}${suffix}\\n`;\r\n      }\r\n    } else {\r\n      const colored = infos.map((info) => {\r\n        const suffix = classify ? (info.isDir ? \"/\" : \"\") : \"\";\r\n        return colorName(info.name, info.isDir) + suffix;\r\n      });\r\n      out += colored.join(\"  \") + \"\\n\";\r\n    }\r\n\r\n    if (recursive) {\r\n      for (const info of infos) {\r\n        if (info.isDir) {\r\n          const full = d === \"/\" ? `/${info.name}` : `${d}/${info.name}`;\r\n          out += \"\\n\" + lsDir(full, full);\r\n        }\r\n      }\r\n    }\r\n\r\n    return out;\r\n  };\r\n\r\n  try {\r\n    const st = ctx.volume.statSync(dir);\r\n    if (st.isFile() && !dirOnly) {\r\n      if (longForm) {\r\n        let size = 0;\r\n        try {\r\n          size = ctx.volume.readFileSync(dir).length;\r\n        } catch {\r\n          /* */\r\n        }\r\n        const sizeStr = humanReadable\r\n          ? humanSize(size).padStart(5)\r\n          : String(size).padStart(6);\r\n        const date = lsDate(new Date(st.mtimeMs || Date.now()));\r\n        return ok(\r\n          `${DIM}-rw-r--r--${RESET} 1 user user ${sizeStr} ${date} ${positional[0]}\\n`,\r\n        );\r\n      }\r\n      return ok(positional[0] + \"\\n\");\r\n    }\r\n  } catch {\r\n    return fail(\r\n      `ls: cannot access '${positional[0] || dir}': No such file or directory\\n`,\r\n    );\r\n  }\r\n\r\n  return ok(lsDir(dir, positional.length > 1 ? dir : \"\"));\r\n};\r\n\r\nconst cd: BuiltinFn = (args, ctx) => {\r\n  const target = args[0] || ctx.env.HOME || \"/\";\r\n  let newDir: string;\r\n\r\n  if (target === \"-\") {\r\n    newDir = ctx.env.OLDPWD || ctx.cwd;\r\n  } else {\r\n    newDir = resolvePath(target, ctx.cwd);\r\n  }\r\n\r\n  try {\r\n    const st = ctx.volume.statSync(newDir);\r\n    if (!st.isDirectory()) return fail(`cd: not a directory: ${target}\\n`);\r\n    ctx.env.OLDPWD = ctx.cwd;\r\n    ctx.cwd = newDir;\r\n    ctx.env.PWD = newDir;\r\n    // keep process.cwd() in sync\r\n    try {\r\n      (globalThis as any).process?.chdir?.(newDir);\r\n    } catch {}\r\n    return ok();\r\n  } catch {\r\n    return fail(`cd: no such file or directory: ${target}\\n`);\r\n  }\r\n};\r\n\r\nconst pwd: BuiltinFn = (_args, ctx) => {\r\n  return ok(ctx.cwd + \"\\n\");\r\n};\r\n\r\nconst basename_cmd: BuiltinFn = (args) => {\r\n  const { positional } = parseArgs(args, [\"a\", \"z\"], [\"s\"]);\r\n  if (positional.length === 0) return fail(\"basename: missing operand\\n\");\r\n\r\n  const suffix = positional[1] || \"\";\r\n  let result = pathModule.basename(positional[0]);\r\n  if (suffix && result.endsWith(suffix)) {\r\n    result = result.slice(0, -suffix.length);\r\n  }\r\n  return ok(result + \"\\n\");\r\n};\r\n\r\nconst dirname_cmd: BuiltinFn = (args) => {\r\n  if (args.length === 0) return fail(\"dirname: missing operand\\n\");\r\n  return ok(pathModule.dirname(args[0]) + \"\\n\");\r\n};\r\n\r\nconst realpath_cmd: BuiltinFn = (args, ctx) => {\r\n  if (args.length === 0) return fail(\"realpath: missing operand\\n\");\r\n  const p = resolvePath(args[0], ctx.cwd);\r\n  if (!ctx.volume.existsSync(p))\r\n    return fail(`realpath: ${args[0]}: No such file or directory\\n`);\r\n  return ok(p + \"\\n\");\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Registry                                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const directoryCommands: [string, BuiltinFn][] = [\r\n  [\"ls\", ls],\r\n  [\"cd\", cd],\r\n  [\"pwd\", pwd],\r\n  [\"basename\", basename_cmd],\r\n  [\"dirname\", dirname_cmd],\r\n  [\"realpath\", realpath_cmd],\r\n];\r\n","import type { BuiltinFn, ShellContext } from \"../shell-types\";\r\nimport {\r\n  ok,\r\n  fail,\r\n  EXIT_OK,\r\n  EXIT_FAIL,\r\n  resolvePath,\r\n  parseArgs,\r\n  processEscapes,\r\n  expandCharClass,\r\n  RESET,\r\n  GREEN,\r\n  MAGENTA,\r\n  CYAN,\r\n  BOLD_RED,\r\n} from \"../shell-helpers\";\r\nimport { YES_REPEAT_COUNT } from \"../../constants/config\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  echo / printf                                                      */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst echo: BuiltinFn = (args) => {\r\n  let noNewline = false;\r\n  let enableEscapes = false;\r\n  let start = 0;\r\n\r\n  while (start < args.length) {\r\n    const a = args[start];\r\n    if (a === \"-n\") {\r\n      noNewline = true;\r\n      start++;\r\n    } else if (a === \"-e\") {\r\n      enableEscapes = true;\r\n      start++;\r\n    } else if (a === \"-E\") {\r\n      enableEscapes = false;\r\n      start++;\r\n    } else if (a === \"-ne\" || a === \"-en\") {\r\n      noNewline = true;\r\n      enableEscapes = true;\r\n      start++;\r\n    } else if (a === \"-nE\" || a === \"-En\") {\r\n      noNewline = true;\r\n      start++;\r\n    } else break;\r\n  }\r\n\r\n  let output = args.slice(start).join(\" \");\r\n  if (enableEscapes) output = processEscapes(output);\r\n  return ok(output + (noNewline ? \"\" : \"\\n\"));\r\n};\r\n\r\nconst printf_cmd: BuiltinFn = (args) => {\r\n  if (args.length === 0) return ok();\r\n  const fmt = args[0];\r\n  const vals = args.slice(1);\r\n  let out = \"\";\r\n  let vi = 0;\r\n\r\n  let i = 0;\r\n  while (i < fmt.length) {\r\n    if (fmt[i] === \"\\\\\" && i + 1 < fmt.length) {\r\n      const c = fmt[i + 1];\r\n      if (c === \"n\") { out += \"\\n\"; i += 2; continue; }\r\n      if (c === \"t\") { out += \"\\t\"; i += 2; continue; }\r\n      if (c === \"r\") { out += \"\\r\"; i += 2; continue; }\r\n      if (c === \"a\") { out += \"\\x07\"; i += 2; continue; }\r\n      if (c === \"b\") { out += \"\\b\"; i += 2; continue; }\r\n      if (c === \"f\") { out += \"\\f\"; i += 2; continue; }\r\n      if (c === \"v\") { out += \"\\x0b\"; i += 2; continue; }\r\n      if (c === \"\\\\\") { out += \"\\\\\"; i += 2; continue; }\r\n      if (c === \"0\") {\r\n        let oct = \"\";\r\n        let j = i + 2;\r\n        while (j < fmt.length && j < i + 5 && fmt[j] >= \"0\" && fmt[j] <= \"7\")\r\n          oct += fmt[j++];\r\n        out += String.fromCharCode(parseInt(oct || \"0\", 8));\r\n        i = j;\r\n        continue;\r\n      }\r\n      if (c === \"x\") {\r\n        const hex = fmt.slice(i + 2, i + 4).match(/^[0-9a-fA-F]+/)?.[0] ?? \"\";\r\n        if (hex) {\r\n          out += String.fromCharCode(parseInt(hex, 16));\r\n          i += 2 + hex.length;\r\n          continue;\r\n        }\r\n      }\r\n      out += fmt[i];\r\n      i++;\r\n      continue;\r\n    }\r\n\r\n    if (fmt[i] === \"%\" && i + 1 < fmt.length) {\r\n      i++;\r\n      let fmtFlags = \"\";\r\n      while (\"-+ 0#\".includes(fmt[i])) fmtFlags += fmt[i++];\r\n      let width = \"\";\r\n      if (fmt[i] === \"*\") { width = vals[vi++] ?? \"0\"; i++; }\r\n      else { while (fmt[i] >= \"0\" && fmt[i] <= \"9\") width += fmt[i++]; }\r\n      let prec = \"\";\r\n      if (fmt[i] === \".\") {\r\n        i++;\r\n        if (fmt[i] === \"*\") { prec = vals[vi++] ?? \"0\"; i++; }\r\n        else { while (fmt[i] >= \"0\" && fmt[i] <= \"9\") prec += fmt[i++]; }\r\n      }\r\n      const spec = fmt[i++];\r\n      const val = vals[vi++] ?? \"\";\r\n\r\n      if (spec === \"%\") { out += \"%\"; vi--; continue; }\r\n      if (spec === \"s\") {\r\n        let s = val;\r\n        if (prec) s = s.slice(0, parseInt(prec));\r\n        const w = parseInt(width) || 0;\r\n        if (fmtFlags.includes(\"-\")) out += s.padEnd(w);\r\n        else out += s.padStart(w);\r\n        continue;\r\n      }\r\n      if (spec === \"d\" || spec === \"i\") {\r\n        const n = parseInt(val) || 0;\r\n        let s = (fmtFlags.includes(\"+\") && n >= 0 ? \"+\" : \"\") + String(n);\r\n        if (fmtFlags.includes(\" \") && n >= 0 && !fmtFlags.includes(\"+\")) s = \" \" + s;\r\n        const w = parseInt(width) || 0;\r\n        const pad = fmtFlags.includes(\"0\") && !fmtFlags.includes(\"-\") ? \"0\" : \" \";\r\n        if (fmtFlags.includes(\"-\")) out += s.padEnd(w);\r\n        else if (pad === \"0\" && s[0] === \"-\") out += \"-\" + s.slice(1).padStart(w - 1, \"0\");\r\n        else out += s.padStart(w, pad);\r\n        continue;\r\n      }\r\n      if (spec === \"f\") {\r\n        const n = parseFloat(val) || 0;\r\n        const p = prec !== \"\" ? parseInt(prec) : 6;\r\n        let s = n.toFixed(p);\r\n        if (fmtFlags.includes(\"+\") && n >= 0) s = \"+\" + s;\r\n        const w = parseInt(width) || 0;\r\n        if (fmtFlags.includes(\"-\")) out += s.padEnd(w);\r\n        else out += s.padStart(w, fmtFlags.includes(\"0\") ? \"0\" : \" \");\r\n        continue;\r\n      }\r\n      if (spec === \"x\") {\r\n        const n = (parseInt(val) || 0) >>> 0;\r\n        let s = n.toString(16);\r\n        if (fmtFlags.includes(\"#\") && n !== 0) s = \"0x\" + s;\r\n        out += s.padStart(parseInt(width) || 0, fmtFlags.includes(\"0\") ? \"0\" : \" \");\r\n        continue;\r\n      }\r\n      if (spec === \"X\") {\r\n        const n = (parseInt(val) || 0) >>> 0;\r\n        let s = n.toString(16).toUpperCase();\r\n        if (fmtFlags.includes(\"#\") && n !== 0) s = \"0X\" + s;\r\n        out += s.padStart(parseInt(width) || 0, fmtFlags.includes(\"0\") ? \"0\" : \" \");\r\n        continue;\r\n      }\r\n      if (spec === \"o\") {\r\n        const n = (parseInt(val) || 0) >>> 0;\r\n        let s = n.toString(8);\r\n        if (fmtFlags.includes(\"#\") && n !== 0) s = \"0\" + s;\r\n        out += s.padStart(parseInt(width) || 0, fmtFlags.includes(\"0\") ? \"0\" : \" \");\r\n        continue;\r\n      }\r\n      if (spec === \"e\" || spec === \"E\") {\r\n        const n = parseFloat(val) || 0;\r\n        const p = prec !== \"\" ? parseInt(prec) : 6;\r\n        let s = spec === \"E\" ? n.toExponential(p).toUpperCase() : n.toExponential(p);\r\n        if (fmtFlags.includes(\"+\") && n >= 0) s = \"+\" + s;\r\n        out += s.padStart(parseInt(width) || 0);\r\n        continue;\r\n      }\r\n      if (spec === \"g\" || spec === \"G\") {\r\n        const n = parseFloat(val) || 0;\r\n        const p = prec !== \"\" ? parseInt(prec) : 6;\r\n        let s = spec === \"G\" ? n.toPrecision(p).toUpperCase() : n.toPrecision(p);\r\n        if (fmtFlags.includes(\"+\") && n >= 0) s = \"+\" + s;\r\n        out += s.padStart(parseInt(width) || 0);\r\n        continue;\r\n      }\r\n      if (spec === \"c\") { out += val ? val[0] : \"\"; continue; }\r\n      out += \"%\" + spec;\r\n      vi--;\r\n      continue;\r\n    }\r\n    out += fmt[i++];\r\n  }\r\n  return ok(out);\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  grep / egrep / fgrep                                               */\r\n/* ------------------------------------------------------------------ */\r\n\r\ninterface GrepOpts {\r\n  regex: RegExp;\r\n  highlightRe: RegExp;\r\n  patternStr: string;\r\n  ignoreCase: boolean;\r\n  invert: boolean;\r\n  countOnly: boolean;\r\n  filesOnly: boolean;\r\n  lineNumbers: boolean;\r\n  onlyMatching: boolean;\r\n  quiet: boolean;\r\n  beforeCtx: number;\r\n  afterCtx: number;\r\n  maxCount: number;\r\n}\r\n\r\nfunction grepLines(content: string, opts: GrepOpts, label?: string): string {\r\n  const {\r\n    regex, highlightRe, patternStr, ignoreCase, invert,\r\n    countOnly, filesOnly, lineNumbers, onlyMatching, quiet,\r\n    beforeCtx, afterCtx, maxCount,\r\n  } = opts;\r\n  const lines = content.split(\"\\n\");\r\n  const matchedIndices = new Set<number>();\r\n  let matchCount = 0;\r\n\r\n  for (let i = 0; i < lines.length; i++) {\r\n    if (regex.test(lines[i]) !== invert) {\r\n      matchedIndices.add(i);\r\n      matchCount++;\r\n      if (matchCount >= maxCount) break;\r\n    }\r\n  }\r\n\r\n  if (countOnly) {\r\n    return (label ? `${MAGENTA}${label}${RESET}${CYAN}:${RESET}` : \"\") +\r\n      matchedIndices.size + \"\\n\";\r\n  }\r\n  if (filesOnly && matchedIndices.size > 0) {\r\n    return `${MAGENTA}${label ?? \"\"}${RESET}\\n`;\r\n  }\r\n  if (quiet) return matchedIndices.size > 0 ? \"\\0\" : \"\";\r\n\r\n  const showLines = new Set<number>();\r\n  for (const idx of matchedIndices) {\r\n    for (\r\n      let j = Math.max(0, idx - beforeCtx);\r\n      j <= Math.min(lines.length - 1, idx + afterCtx);\r\n      j++\r\n    ) {\r\n      showLines.add(j);\r\n    }\r\n  }\r\n\r\n  let out = \"\";\r\n  let prevShown = -2;\r\n  for (let i = 0; i < lines.length; i++) {\r\n    if (!showLines.has(i)) continue;\r\n    if (\r\n      prevShown >= 0 &&\r\n      i > prevShown + 1 &&\r\n      (beforeCtx > 0 || afterCtx > 0)\r\n    ) {\r\n      out += \"--\\n\";\r\n    }\r\n    prevShown = i;\r\n\r\n    const isMatch = matchedIndices.has(i);\r\n    const sep = isMatch ? `${CYAN}:${RESET}` : `${CYAN}-${RESET}`;\r\n    const prefix = label ? `${MAGENTA}${label}${RESET}${sep}` : \"\";\r\n    const num = lineNumbers ? `${GREEN}${i + 1}${RESET}${sep}` : \"\";\r\n\r\n    if (onlyMatching && isMatch && !invert) {\r\n      const gRe = new RegExp(patternStr, ignoreCase ? \"gi\" : \"g\");\r\n      let m: RegExpExecArray | null;\r\n      while ((m = gRe.exec(lines[i])) !== null) {\r\n        out += `${prefix}${num}${BOLD_RED}${m[0]}${RESET}\\n`;\r\n      }\r\n    } else {\r\n      const hl =\r\n        isMatch && !invert\r\n          ? lines[i].replace(highlightRe, (m) => `${BOLD_RED}${m}${RESET}`)\r\n          : lines[i];\r\n      out += `${prefix}${num}${hl}\\n`;\r\n    }\r\n  }\r\n\r\n  return out;\r\n}\r\n\r\nfunction grepDirFull(\r\n  ctx: ShellContext,\r\n  dir: string,\r\n  opts: GrepOpts,\r\n): string {\r\n  let out = \"\";\r\n  try {\r\n    for (const name of ctx.volume.readdirSync(dir)) {\r\n      const full = `${dir}/${name}`;\r\n      const st = ctx.volume.statSync(full);\r\n      if (st.isDirectory()) {\r\n        out += grepDirFull(ctx, full, opts);\r\n      } else {\r\n        try {\r\n          const content = ctx.volume.readFileSync(full, \"utf8\");\r\n          out += grepLines(content, opts, full);\r\n        } catch {\r\n          /* skip binary/unreadable */\r\n        }\r\n      }\r\n    }\r\n  } catch {\r\n    /* skip unreadable dirs */\r\n  }\r\n  return out;\r\n}\r\n\r\nconst grep_cmd: BuiltinFn = (args, ctx, stdin) => {\r\n  const { flags, opts: parsedOpts, positional } = parseArgs(\r\n    args,\r\n    [\r\n      \"i\", \"v\", \"c\", \"l\", \"n\", \"r\", \"R\", \"o\", \"w\", \"x\",\r\n      \"E\", \"F\", \"P\", \"H\", \"h\", \"q\", \"s\", \"z\",\r\n    ],\r\n    [\"A\", \"B\", \"C\", \"m\", \"e\", \"f\"],\r\n  );\r\n  const ignoreCase = flags.has(\"i\");\r\n  const invert = flags.has(\"v\");\r\n  const countOnly = flags.has(\"c\");\r\n  const filesOnly = flags.has(\"l\");\r\n  const lineNumbers = flags.has(\"n\");\r\n  const recursive = flags.has(\"r\") || flags.has(\"R\");\r\n  const onlyMatching = flags.has(\"o\");\r\n  const wordRegex = flags.has(\"w\");\r\n  const lineRegex = flags.has(\"x\");\r\n  const fixedStrings = flags.has(\"F\");\r\n  const quiet = flags.has(\"q\");\r\n  const suppressErrors = flags.has(\"s\");\r\n  const afterCtx = parseInt(parsedOpts[\"A\"] || parsedOpts[\"C\"] || \"0\");\r\n  const beforeCtx = parseInt(parsedOpts[\"B\"] || parsedOpts[\"C\"] || \"0\");\r\n  const maxCount = parsedOpts[\"m\"] ? parseInt(parsedOpts[\"m\"]) : Infinity;\r\n\r\n  let patternStr: string;\r\n  if (parsedOpts[\"e\"] !== undefined) {\r\n    patternStr = parsedOpts[\"e\"];\r\n  } else if (positional.length === 0) {\r\n    return fail(\"grep: missing pattern\\n\");\r\n  } else {\r\n    patternStr = positional.shift()!;\r\n  }\r\n\r\n  if (fixedStrings)\r\n    patternStr = patternStr.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n  if (wordRegex) patternStr = `\\\\b${patternStr}\\\\b`;\r\n  if (lineRegex) patternStr = `^${patternStr}$`;\r\n\r\n  let regex: RegExp;\r\n  let highlightRe: RegExp;\r\n  try {\r\n    regex = new RegExp(patternStr, ignoreCase ? \"im\" : \"m\");\r\n    highlightRe = new RegExp(patternStr, ignoreCase ? \"gi\" : \"g\");\r\n  } catch {\r\n    return fail(`grep: Invalid regular expression: '${patternStr}'\\n`);\r\n  }\r\n\r\n  const grepOpts: GrepOpts = {\r\n    regex, highlightRe, patternStr, ignoreCase, invert,\r\n    countOnly, filesOnly, lineNumbers, onlyMatching, quiet,\r\n    beforeCtx, afterCtx, maxCount,\r\n  };\r\n\r\n  const files = positional;\r\n\r\n  if (files.length === 0 && stdin !== undefined) {\r\n    const result = grepLines(stdin, grepOpts);\r\n    if (quiet) return result ? EXIT_OK : EXIT_FAIL;\r\n    return result ? ok(result) : EXIT_FAIL;\r\n  }\r\n\r\n  if (files.length === 0) {\r\n    return fail(\"grep: missing file operand\\n\");\r\n  }\r\n\r\n  let out = \"\";\r\n  const multiFile = files.length > 1 || recursive;\r\n  let anyMatch = false;\r\n\r\n  for (const file of files) {\r\n    const p = resolvePath(file, ctx.cwd);\r\n    try {\r\n      const st = ctx.volume.statSync(p);\r\n      if (st.isDirectory()) {\r\n        if (recursive) {\r\n          const r = grepDirFull(ctx, p, grepOpts);\r\n          out += r;\r\n          if (r) anyMatch = true;\r\n        } else if (!suppressErrors) {\r\n          out += `grep: ${file}: Is a directory\\n`;\r\n        }\r\n        continue;\r\n      }\r\n      const content = ctx.volume.readFileSync(p, \"utf8\");\r\n      const result = grepLines(content, grepOpts, multiFile ? file : undefined);\r\n      out += result;\r\n      if (result) anyMatch = true;\r\n    } catch {\r\n      if (!suppressErrors)\r\n        return fail(`grep: ${file}: No such file or directory\\n`);\r\n    }\r\n  }\r\n\r\n  if (quiet) return anyMatch ? EXIT_OK : EXIT_FAIL;\r\n  return anyMatch ? ok(out) : { stdout: out, stderr: \"\", exitCode: 1 };\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  sed                                                                */\r\n/* ------------------------------------------------------------------ */\r\n\r\ninterface SedCmd {\r\n  addr?:\r\n    | { type: \"line\"; n: number }\r\n    | { type: \"range\"; from: number; to: number }\r\n    | { type: \"last\" }\r\n    | { type: \"regex\"; re: RegExp };\r\n  type: string;\r\n  pattern?: string;\r\n  replacement?: string;\r\n  sFlags?: string;\r\n  text?: string;\r\n  printAfter?: boolean;\r\n}\r\n\r\nfunction parseSedScript(script: string): SedCmd[] | string {\r\n  const cmds: SedCmd[] = [];\r\n  const parts = script.split(/\\s*;\\s*|\\n/).filter(Boolean);\r\n\r\n  for (const part of parts) {\r\n    let rest = part.trim();\r\n    if (!rest) continue;\r\n\r\n    let addr: SedCmd[\"addr\"];\r\n    if (rest[0] === \"$\") {\r\n      addr = { type: \"last\" };\r\n      rest = rest.slice(1);\r\n    } else if (/^\\d/.test(rest)) {\r\n      const m = rest.match(/^(\\d+)(?:,(\\d+|\\$))?/);\r\n      if (m) {\r\n        rest = rest.slice(m[0].length);\r\n        if (m[2]) {\r\n          const to = m[2] === \"$\" ? Infinity : parseInt(m[2]);\r\n          addr = { type: \"range\", from: parseInt(m[1]), to };\r\n        } else {\r\n          addr = { type: \"line\", n: parseInt(m[1]) };\r\n        }\r\n      }\r\n    } else if (rest[0] === \"/\") {\r\n      const end = rest.indexOf(\"/\", 1);\r\n      if (end > 0) {\r\n        const pattern = rest.slice(1, end);\r\n        try {\r\n          addr = { type: \"regex\", re: new RegExp(pattern) };\r\n        } catch {\r\n          return `invalid regular expression: ${pattern}`;\r\n        }\r\n        rest = rest.slice(end + 1);\r\n      }\r\n    }\r\n\r\n    const cmd = rest[0];\r\n    rest = rest.slice(1);\r\n\r\n    if (cmd === \"s\") {\r\n      const delim = rest[0];\r\n      if (!delim) return `unsupported expression: ${part}`;\r\n      const parts2 = rest.slice(1).split(delim);\r\n      if (parts2.length < 2) return `unsupported expression: ${part}`;\r\n      const printAfter = parts2[2]?.includes(\"p\") ?? false;\r\n      const sFlags = (parts2[2] ?? \"\").replace(\"p\", \"\") || undefined;\r\n      cmds.push({ addr, type: \"s\", pattern: parts2[0], replacement: parts2[1], sFlags, printAfter });\r\n    } else if (cmd === \"d\") { cmds.push({ addr, type: \"d\" }); }\r\n    else if (cmd === \"p\") { cmds.push({ addr, type: \"p\" }); }\r\n    else if (cmd === \"q\") { cmds.push({ addr, type: \"q\" }); }\r\n    else if (cmd === \"a\") { cmds.push({ addr, type: \"a\", text: rest.replace(/^\\\\?\\s*/, \"\") }); }\r\n    else if (cmd === \"i\") { cmds.push({ addr, type: \"i\", text: rest.replace(/^\\\\?\\s*/, \"\") }); }\r\n    else if (cmd === \"c\") { cmds.push({ addr, type: \"c\", text: rest.replace(/^\\\\?\\s*/, \"\") }); }\r\n    else if (cmd === \"y\") {\r\n      const delim2 = rest[0];\r\n      const parts2 = rest.slice(1).split(delim2);\r\n      if (parts2.length < 2) return `unsupported expression: ${part}`;\r\n      cmds.push({ addr, type: \"y\", pattern: parts2[0], replacement: parts2[1] });\r\n    } else if (cmd === \"=\") { cmds.push({ addr, type: \"=\" }); }\r\n    else { return `unsupported command: ${cmd}`; }\r\n  }\r\n  return cmds;\r\n}\r\n\r\nfunction sedAddressMatch(\r\n  addr: SedCmd[\"addr\"],\r\n  lineNum: number,\r\n  totalLines: number,\r\n  _line: string,\r\n): boolean {\r\n  if (!addr) return true;\r\n  if (addr.type === \"line\") return lineNum === addr.n;\r\n  if (addr.type === \"range\")\r\n    return lineNum >= addr.from && lineNum <= (addr.to === Infinity ? totalLines : addr.to);\r\n  if (addr.type === \"last\") return lineNum === totalLines;\r\n  if (addr.type === \"regex\") return addr.re.test(_line);\r\n  return true;\r\n}\r\n\r\nconst sed_cmd: BuiltinFn = (args, ctx, stdin) => {\r\n  const { flags, positional } = parseArgs(args, [\"i\", \"n\", \"r\", \"E\"]);\r\n  const inPlace = flags.has(\"i\");\r\n  const quietMode = flags.has(\"n\");\r\n\r\n  if (positional.length === 0) return fail(\"sed: missing expression\\n\");\r\n\r\n  const expressions = positional[0];\r\n  const files = positional.slice(1);\r\n\r\n  const cmds = parseSedScript(expressions);\r\n  if (typeof cmds === \"string\") return fail(`sed: ${cmds}\\n`);\r\n\r\n  const doSed = (content: string): string => {\r\n    const lines = content.split(\"\\n\");\r\n    let out = \"\";\r\n    for (let i = 0; i < lines.length; i++) {\r\n      const lineNum = i + 1;\r\n      const isLast = i === lines.length - 1;\r\n      let line = lines[i];\r\n      let suppress = quietMode;\r\n      let deleted = false;\r\n\r\n      for (const cmd of cmds) {\r\n        if (deleted) break;\r\n        if (!sedAddressMatch(cmd.addr, lineNum, lines.length, line)) continue;\r\n\r\n        switch (cmd.type) {\r\n          case \"s\": {\r\n            let re: RegExp;\r\n            try {\r\n              re = new RegExp(cmd.pattern!, cmd.sFlags || undefined);\r\n            } catch {\r\n              break;\r\n            }\r\n            line = line.replace(re, cmd.replacement!);\r\n            if (cmd.printAfter && re.test(lines[i])) suppress = false;\r\n            break;\r\n          }\r\n          case \"d\": deleted = true; break;\r\n          case \"p\": out += line + \"\\n\"; break;\r\n          case \"q\": { if (!suppress) out += line + \"\\n\"; return out; }\r\n          case \"a\": out += line + \"\\n\" + cmd.text! + \"\\n\"; suppress = true; break;\r\n          case \"i\": out += cmd.text! + \"\\n\"; break;\r\n          case \"c\": out += cmd.text! + \"\\n\"; deleted = true; break;\r\n          case \"y\": {\r\n            const from = cmd.pattern!;\r\n            const to = cmd.replacement!;\r\n            let result = \"\";\r\n            for (const ch of line) {\r\n              const idx = from.indexOf(ch);\r\n              result += idx >= 0 ? to[idx] : ch;\r\n            }\r\n            line = result;\r\n            break;\r\n          }\r\n          case \"=\": out += lineNum + \"\\n\"; break;\r\n        }\r\n      }\r\n      if (!deleted && !suppress) {\r\n        out += line + (isLast && !content.endsWith(\"\\n\") ? \"\" : \"\\n\");\r\n      }\r\n    }\r\n    return out;\r\n  };\r\n\r\n  if (files.length === 0 && stdin !== undefined) return ok(doSed(stdin));\r\n  if (files.length === 0) return fail(\"sed: missing input\\n\");\r\n\r\n  let out = \"\";\r\n  for (const file of files) {\r\n    const p = resolvePath(file, ctx.cwd);\r\n    try {\r\n      const content = ctx.volume.readFileSync(p, \"utf8\");\r\n      const result = doSed(content);\r\n      if (inPlace) {\r\n        ctx.volume.writeFileSync(p, result);\r\n      } else {\r\n        out += result;\r\n      }\r\n    } catch {\r\n      return fail(`sed: ${file}: No such file or directory\\n`);\r\n    }\r\n  }\r\n  return ok(out);\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  sort                                                               */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst sort_cmd: BuiltinFn = (args, ctx, stdin) => {\r\n  const { flags, opts, positional } = parseArgs(\r\n    args,\r\n    [\"r\", \"n\", \"u\", \"f\", \"h\", \"V\", \"b\", \"s\"],\r\n    [\"k\", \"t\", \"o\"],\r\n  );\r\n  const reverse = flags.has(\"r\");\r\n  const numeric = flags.has(\"n\");\r\n  const unique = flags.has(\"u\");\r\n  const ignoreCase = flags.has(\"f\");\r\n  const humanNumeric = flags.has(\"h\");\r\n  const versionSort = flags.has(\"V\");\r\n  const stable = flags.has(\"s\");\r\n  const keySpec = opts[\"k\"];\r\n  const fieldSep = opts[\"t\"];\r\n  const outputFile = opts[\"o\"];\r\n\r\n  let content = stdin ?? \"\";\r\n  if (positional.length > 0) {\r\n    const p = resolvePath(positional[0], ctx.cwd);\r\n    try {\r\n      content = ctx.volume.readFileSync(p, \"utf8\");\r\n    } catch {\r\n      return fail(`sort: ${positional[0]}: No such file or directory\\n`);\r\n    }\r\n  }\r\n\r\n  let lines = content.split(\"\\n\").filter(Boolean);\r\n\r\n  const getKey = (line: string): string => {\r\n    if (!keySpec) return line;\r\n    const sep = fieldSep || /\\s+/;\r\n    const fields = line.split(sep);\r\n    const [startSpec, endSpec] = keySpec.split(\",\");\r\n    const startField = parseInt(startSpec) - 1;\r\n    const endField = endSpec ? parseInt(endSpec) - 1 : startField;\r\n    return fields\r\n      .slice(startField, endField + 1)\r\n      .join(typeof sep === \"string\" ? sep : \" \");\r\n  };\r\n\r\n  const parseHumanSize = (s: string): number => {\r\n    const m = s.trim().match(/^([\\d.]+)([KMGTPE]i?)?$/i);\r\n    if (!m) return 0;\r\n    const n = parseFloat(m[1]);\r\n    const u = (m[2] || \"\").toUpperCase().replace(\"I\", \"\");\r\n    const mult: Record<string, number> = {\r\n      \"\": 1, K: 1024, M: 1048576, G: 1073741824, T: 1099511627776,\r\n    };\r\n    return n * (mult[u] || 1);\r\n  };\r\n\r\n  const compare = (a: string, b: string): number => {\r\n    let ka = getKey(a), kb = getKey(b);\r\n    if (ignoreCase) { ka = ka.toLowerCase(); kb = kb.toLowerCase(); }\r\n    if (numeric) return parseFloat(ka) - parseFloat(kb);\r\n    if (humanNumeric) return parseHumanSize(ka) - parseHumanSize(kb);\r\n    if (versionSort)\r\n      return ka.localeCompare(kb, undefined, { numeric: true, sensitivity: \"base\" });\r\n    return ka.localeCompare(kb);\r\n  };\r\n\r\n  if (stable) {\r\n    const indexed = lines.map((l, i) => ({ l, i }));\r\n    indexed.sort((a, b) => compare(a.l, b.l) || a.i - b.i);\r\n    lines = indexed.map((x) => x.l);\r\n  } else {\r\n    lines.sort(compare);\r\n  }\r\n  if (reverse) lines.reverse();\r\n  if (unique) {\r\n    const seen = new Set<string>();\r\n    lines = lines.filter((l) => {\r\n      const k = ignoreCase ? getKey(l).toLowerCase() : getKey(l);\r\n      if (seen.has(k)) return false;\r\n      seen.add(k);\r\n      return true;\r\n    });\r\n  }\r\n\r\n  const result = lines.join(\"\\n\") + (lines.length ? \"\\n\" : \"\");\r\n  if (outputFile) {\r\n    const p = resolvePath(outputFile, ctx.cwd);\r\n    try {\r\n      ctx.volume.writeFileSync(p, result);\r\n    } catch {\r\n      /* */\r\n    }\r\n  }\r\n  return ok(result);\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  uniq                                                               */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst uniq_cmd: BuiltinFn = (args, ctx, stdin) => {\r\n  const { flags, opts, positional } = parseArgs(\r\n    args,\r\n    [\"c\", \"d\", \"u\", \"i\"],\r\n    [\"f\", \"s\", \"w\"],\r\n  );\r\n  const count = flags.has(\"c\");\r\n  const dupsOnly = flags.has(\"d\");\r\n  const uniqueOnly = flags.has(\"u\");\r\n  const ignoreCase = flags.has(\"i\");\r\n  const skipFields = parseInt(opts[\"f\"] || \"0\");\r\n  const skipChars = parseInt(opts[\"s\"] || \"0\");\r\n  const checkChars = opts[\"w\"] ? parseInt(opts[\"w\"]) : Infinity;\r\n\r\n  let content = stdin ?? \"\";\r\n  if (positional.length > 0) {\r\n    const p = resolvePath(positional[0], ctx.cwd);\r\n    try {\r\n      content = ctx.volume.readFileSync(p, \"utf8\");\r\n    } catch {\r\n      return fail(`uniq: ${positional[0]}: No such file or directory\\n`);\r\n    }\r\n  }\r\n\r\n  const getKey = (line: string): string => {\r\n    let l = line;\r\n    if (skipFields > 0) {\r\n      const parts = l.split(/\\s+/);\r\n      l = parts.slice(skipFields).join(\" \");\r\n    }\r\n    if (skipChars > 0) l = l.slice(skipChars);\r\n    if (checkChars < Infinity) l = l.slice(0, checkChars);\r\n    if (ignoreCase) l = l.toLowerCase();\r\n    return l;\r\n  };\r\n\r\n  const lines = content.split(\"\\n\");\r\n  const result: string[] = [];\r\n  let prev = \"\";\r\n  let prevLine = \"\";\r\n  let prevCount = 0;\r\n\r\n  for (const line of lines) {\r\n    const key = getKey(line);\r\n    if (key === prev) {\r\n      prevCount++;\r\n    } else {\r\n      if (prevCount > 0) {\r\n        const show = dupsOnly ? prevCount > 1 : uniqueOnly ? prevCount === 1 : true;\r\n        if (show)\r\n          result.push(count ? `${String(prevCount).padStart(7)} ${prevLine}` : prevLine);\r\n      }\r\n      prev = key;\r\n      prevLine = line;\r\n      prevCount = 1;\r\n    }\r\n  }\r\n  if (prevCount > 0 && prevLine !== \"\") {\r\n    const show = dupsOnly ? prevCount > 1 : uniqueOnly ? prevCount === 1 : true;\r\n    if (show)\r\n      result.push(count ? `${String(prevCount).padStart(7)} ${prevLine}` : prevLine);\r\n  }\r\n\r\n  return ok(result.join(\"\\n\") + (result.length ? \"\\n\" : \"\"));\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  tr                                                                 */\r\n/* ------------------------------------------------------------------ */\r\n\r\nfunction expandRange(s: string): string {\r\n  return s.replace(/(.)-(.)/g, (_, a: string, b: string) => {\r\n    let result = \"\";\r\n    const start = a.charCodeAt(0);\r\n    const end = b.charCodeAt(0);\r\n    for (let i = start; i <= end; i++) result += String.fromCharCode(i);\r\n    return result;\r\n  });\r\n}\r\n\r\nfunction squeezeDups(s: string, chars: Set<string>): string {\r\n  let out = \"\";\r\n  let prev = \"\";\r\n  for (const ch of s) {\r\n    if (ch === prev && chars.has(ch)) continue;\r\n    out += ch;\r\n    prev = ch;\r\n  }\r\n  return out;\r\n}\r\n\r\nfunction buildComplement(set: string): string {\r\n  const setChars = new Set(set);\r\n  let result = \"\";\r\n  for (let i = 0; i < 128; i++) {\r\n    const ch = String.fromCharCode(i);\r\n    if (!setChars.has(ch)) result += ch;\r\n  }\r\n  return result;\r\n}\r\n\r\nconst tr_cmd: BuiltinFn = (args, _ctx, stdin) => {\r\n  const { flags, positional } = parseArgs(args, [\"d\", \"s\", \"c\", \"C\"]);\r\n  const deleteMode = flags.has(\"d\");\r\n  const squeeze = flags.has(\"s\");\r\n  const complement = flags.has(\"c\") || flags.has(\"C\");\r\n\r\n  if (positional.length === 0) return fail(\"tr: missing operand\\n\");\r\n  const content = stdin ?? \"\";\r\n\r\n  let set1 = expandCharClass(positional[0]);\r\n  const set2 = positional.length > 1 ? expandCharClass(positional[1]) : \"\";\r\n\r\n  set1 = expandRange(set1);\r\n  const expandedSet2 = set2 ? expandRange(set2) : \"\";\r\n\r\n  if (deleteMode) {\r\n    const chars = complement ? null : new Set(set1);\r\n    let out = \"\";\r\n    for (const ch of content) {\r\n      const inSet = chars ? chars.has(ch) : set1.includes(ch);\r\n      if (complement ? inSet : !inSet) out += ch;\r\n    }\r\n    if (squeeze && expandedSet2) {\r\n      const squeezeSet = new Set(expandedSet2);\r\n      out = squeezeDups(out, squeezeSet);\r\n    }\r\n    return ok(out);\r\n  }\r\n\r\n  if (positional.length < 2 && !squeeze) return fail(\"tr: missing operand\\n\");\r\n\r\n  if (squeeze && positional.length === 1) {\r\n    const squeezeSet = new Set(set1);\r\n    return ok(squeezeDups(content, squeezeSet));\r\n  }\r\n\r\n  let out = \"\";\r\n  const s1 = complement ? buildComplement(set1) : set1;\r\n  for (const ch of content) {\r\n    const idx = s1.indexOf(ch);\r\n    if (idx >= 0) {\r\n      const replacement =\r\n        idx < expandedSet2.length\r\n          ? expandedSet2[idx]\r\n          : expandedSet2[expandedSet2.length - 1] || ch;\r\n      out += replacement;\r\n    } else {\r\n      out += ch;\r\n    }\r\n  }\r\n\r\n  if (squeeze) {\r\n    const squeezeSet = new Set(expandedSet2);\r\n    out = squeezeDups(out, squeezeSet);\r\n  }\r\n  return ok(out);\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  cut                                                                */\r\n/* ------------------------------------------------------------------ */\r\n\r\nfunction parseRangeSpec(spec: string): number[] {\r\n  const result: number[] = [];\r\n  for (const part of spec.split(\",\")) {\r\n    const range = part.match(/^(\\d+)-(\\d*)$/);\r\n    if (range) {\r\n      const start = parseInt(range[1]);\r\n      const end = range[2] ? parseInt(range[2]) : start + 100;\r\n      for (let i = start; i <= end; i++) result.push(i);\r\n    } else {\r\n      result.push(parseInt(part));\r\n    }\r\n  }\r\n  return result.filter((n) => !isNaN(n));\r\n}\r\n\r\nconst cut_cmd: BuiltinFn = (args, ctx, stdin) => {\r\n  let delimiter = \"\\t\";\r\n  let fields: number[] = [];\r\n  let bytes: number[] = [];\r\n  let chars: number[] = [];\r\n  let outputDelimiter: string | null = null;\r\n  const files: string[] = [];\r\n\r\n  for (let i = 0; i < args.length; i++) {\r\n    if (args[i] === \"-d\" && i + 1 < args.length) delimiter = args[++i];\r\n    else if (args[i] === \"-f\" && i + 1 < args.length)\r\n      fields = parseRangeSpec(args[++i]);\r\n    else if (args[i] === \"-b\" && i + 1 < args.length)\r\n      bytes = parseRangeSpec(args[++i]);\r\n    else if (args[i] === \"-c\" && i + 1 < args.length)\r\n      chars = parseRangeSpec(args[++i]);\r\n    else if (args[i] === \"--output-delimiter\" && i + 1 < args.length)\r\n      outputDelimiter = args[++i];\r\n    else if (!args[i].startsWith(\"-\")) files.push(args[i]);\r\n  }\r\n\r\n  const outDelim = outputDelimiter ?? delimiter;\r\n\r\n  const doCut = (content: string) => {\r\n    return content\r\n      .split(\"\\n\")\r\n      .map((line) => {\r\n        if (bytes.length > 0 || chars.length > 0) {\r\n          const indices = bytes.length > 0 ? bytes : chars;\r\n          return indices.map((idx) => line[idx - 1] ?? \"\").join(\"\");\r\n        }\r\n        const parts = line.split(delimiter);\r\n        return fields.map((f) => parts[f - 1] ?? \"\").join(outDelim);\r\n      })\r\n      .join(\"\\n\");\r\n  };\r\n\r\n  if (files.length === 0) return ok(doCut(stdin ?? \"\"));\r\n  let out = \"\";\r\n  for (const file of files) {\r\n    const p = resolvePath(file, ctx.cwd);\r\n    try {\r\n      out += doCut(ctx.volume.readFileSync(p, \"utf8\"));\r\n    } catch {\r\n      return fail(`cut: ${file}: No such file or directory\\n`);\r\n    }\r\n  }\r\n  return ok(out);\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Small text utilities                                               */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst rev_cmd: BuiltinFn = (args, ctx, stdin) => {\r\n  let content = stdin ?? \"\";\r\n  if (args.length > 0) {\r\n    const p = resolvePath(args[0], ctx.cwd);\r\n    try {\r\n      content = ctx.volume.readFileSync(p, \"utf8\");\r\n    } catch {\r\n      return fail(`rev: ${args[0]}: No such file or directory\\n`);\r\n    }\r\n  }\r\n  return ok(\r\n    content\r\n      .split(\"\\n\")\r\n      .map((l) => [...l].reverse().join(\"\"))\r\n      .join(\"\\n\"),\r\n  );\r\n};\r\n\r\nconst paste_cmd: BuiltinFn = (args, ctx, stdin) => {\r\n  const { opts, positional } = parseArgs(args, [\"s\"], [\"d\"]);\r\n  const delim = opts[\"d\"] || \"\\t\";\r\n\r\n  const contents: string[][] = [];\r\n  for (const file of positional) {\r\n    if (file === \"-\" && stdin) {\r\n      contents.push(stdin.split(\"\\n\"));\r\n      continue;\r\n    }\r\n    const p = resolvePath(file, ctx.cwd);\r\n    try {\r\n      contents.push(ctx.volume.readFileSync(p, \"utf8\").split(\"\\n\"));\r\n    } catch {\r\n      return fail(`paste: ${file}: No such file or directory\\n`);\r\n    }\r\n  }\r\n  if (contents.length === 0 && stdin) contents.push(stdin.split(\"\\n\"));\r\n\r\n  const maxLen = Math.max(...contents.map((c) => c.length));\r\n  let out = \"\";\r\n  for (let i = 0; i < maxLen; i++) {\r\n    out += contents.map((c) => c[i] ?? \"\").join(delim) + \"\\n\";\r\n  }\r\n  return ok(out);\r\n};\r\n\r\nconst comm_cmd: BuiltinFn = (args, ctx) => {\r\n  const { flags, positional } = parseArgs(args, [\"1\", \"2\", \"3\"]);\r\n  if (positional.length < 2) return fail(\"comm: missing operand\\n\");\r\n\r\n  const readFile = (f: string) => {\r\n    const p = resolvePath(f, ctx.cwd);\r\n    return ctx.volume.readFileSync(p, \"utf8\").split(\"\\n\").filter(Boolean);\r\n  };\r\n\r\n  try {\r\n    const a = readFile(positional[0]);\r\n    const b = readFile(positional[1]);\r\n    let out = \"\";\r\n    let ai = 0, bi = 0;\r\n    while (ai < a.length || bi < b.length) {\r\n      if (ai >= a.length) {\r\n        if (!flags.has(\"2\"))\r\n          out += \"\\t\" + (flags.has(\"1\") ? \"\" : \"\\t\") + b[bi] + \"\\n\";\r\n        bi++;\r\n      } else if (bi >= b.length) {\r\n        if (!flags.has(\"1\")) out += a[ai] + \"\\n\";\r\n        ai++;\r\n      } else if (a[ai] < b[bi]) {\r\n        if (!flags.has(\"1\")) out += a[ai] + \"\\n\";\r\n        ai++;\r\n      } else if (a[ai] > b[bi]) {\r\n        if (!flags.has(\"2\"))\r\n          out += \"\\t\" + (flags.has(\"1\") ? \"\" : \"\\t\") + b[bi] + \"\\n\";\r\n        bi++;\r\n      } else {\r\n        if (!flags.has(\"3\")) out += \"\\t\\t\" + a[ai] + \"\\n\";\r\n        ai++;\r\n        bi++;\r\n      }\r\n    }\r\n    return ok(out);\r\n  } catch (e) {\r\n    return fail(`comm: ${e instanceof Error ? e.message : String(e)}\\n`);\r\n  }\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  diff                                                               */\r\n/* ------------------------------------------------------------------ */\r\n\r\nfunction simpleLCS(a: string[], b: string[]): string[] {\r\n  const m = a.length, n = b.length;\r\n  const dp: number[][] = Array.from({ length: m + 1 }, () =>\r\n    new Array(n + 1).fill(0),\r\n  );\r\n  for (let i = 1; i <= m; i++) {\r\n    for (let j = 1; j <= n; j++) {\r\n      dp[i][j] =\r\n        a[i - 1] === b[j - 1]\r\n          ? dp[i - 1][j - 1] + 1\r\n          : Math.max(dp[i - 1][j], dp[i][j - 1]);\r\n    }\r\n  }\r\n  const result: string[] = [];\r\n  let i = m, j = n;\r\n  while (i > 0 && j > 0) {\r\n    if (a[i - 1] === b[j - 1]) {\r\n      result.unshift(a[i - 1]);\r\n      i--;\r\n      j--;\r\n    } else if (dp[i - 1][j] > dp[i][j - 1]) i--;\r\n    else j--;\r\n  }\r\n  return result;\r\n}\r\n\r\nconst diff_cmd: BuiltinFn = (args, ctx) => {\r\n  const { flags, positional } = parseArgs(args, [\"u\", \"q\", \"r\", \"N\"]);\r\n  if (positional.length < 2) return fail(\"diff: missing operand\\n\");\r\n\r\n  const brief = flags.has(\"q\");\r\n  const unified = flags.has(\"u\");\r\n\r\n  const p1 = resolvePath(positional[0], ctx.cwd);\r\n  const p2 = resolvePath(positional[1], ctx.cwd);\r\n\r\n  try {\r\n    const a = ctx.volume.readFileSync(p1, \"utf8\").split(\"\\n\");\r\n    const b = ctx.volume.readFileSync(p2, \"utf8\").split(\"\\n\");\r\n\r\n    if (a.join(\"\\n\") === b.join(\"\\n\")) return ok();\r\n    if (brief)\r\n      return {\r\n        stdout: `Files ${positional[0]} and ${positional[1]} differ\\n`,\r\n        stderr: \"\",\r\n        exitCode: 1,\r\n      };\r\n\r\n    let out = \"\";\r\n    if (unified) {\r\n      out += `--- ${positional[0]}\\n+++ ${positional[1]}\\n`;\r\n      out += `@@ -1,${a.length} +1,${b.length} @@\\n`;\r\n      const lcs = simpleLCS(a, b);\r\n      let ai = 0, bi = 0, li = 0;\r\n      while (ai < a.length || bi < b.length) {\r\n        if (\r\n          li < lcs.length &&\r\n          ai < a.length && a[ai] === lcs[li] &&\r\n          bi < b.length && b[bi] === lcs[li]\r\n        ) {\r\n          out += ` ${a[ai]}\\n`;\r\n          ai++; bi++; li++;\r\n        } else if (ai < a.length && (li >= lcs.length || a[ai] !== lcs[li])) {\r\n          out += `-${a[ai]}\\n`;\r\n          ai++;\r\n        } else if (bi < b.length) {\r\n          out += `+${b[bi]}\\n`;\r\n          bi++;\r\n        }\r\n      }\r\n    } else {\r\n      for (let i = 0; i < Math.max(a.length, b.length); i++) {\r\n        if (i >= a.length) out += `> ${b[i]}\\n`;\r\n        else if (i >= b.length) out += `< ${a[i]}\\n`;\r\n        else if (a[i] !== b[i]) {\r\n          out += `< ${a[i]}\\n---\\n> ${b[i]}\\n`;\r\n        }\r\n      }\r\n    }\r\n\r\n    return { stdout: out, stderr: \"\", exitCode: 1 };\r\n  } catch (e) {\r\n    return fail(`diff: ${e instanceof Error ? e.message : String(e)}\\n`);\r\n  }\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  seq / yes                                                          */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst seq_cmd: BuiltinFn = (args) => {\r\n  if (args.length === 0) return fail(\"seq: missing operand\\n\");\r\n  let first = 1, increment = 1, last = 1;\r\n  if (args.length === 1) {\r\n    last = parseFloat(args[0]);\r\n  } else if (args.length === 2) {\r\n    first = parseFloat(args[0]);\r\n    last = parseFloat(args[1]);\r\n  } else {\r\n    first = parseFloat(args[0]);\r\n    increment = parseFloat(args[1]);\r\n    last = parseFloat(args[2]);\r\n  }\r\n\r\n  const lines: string[] = [];\r\n  if (increment > 0) {\r\n    for (let i = first; i <= last; i += increment) lines.push(String(i));\r\n  } else if (increment < 0) {\r\n    for (let i = first; i >= last; i += increment) lines.push(String(i));\r\n  }\r\n  return ok(lines.join(\"\\n\") + (lines.length ? \"\\n\" : \"\"));\r\n};\r\n\r\nconst yes_cmd: BuiltinFn = (args) => {\r\n  const text = args.length > 0 ? args.join(\" \") : \"y\";\r\n  return ok((text + \"\\n\").repeat(YES_REPEAT_COUNT));\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Registry                                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const textProcessingCommands: [string, BuiltinFn][] = [\r\n  [\"echo\", echo],\r\n  [\"printf\", printf_cmd],\r\n  [\"grep\", grep_cmd],\r\n  [\"egrep\", grep_cmd],\r\n  [\"fgrep\", grep_cmd],\r\n  [\"sed\", sed_cmd],\r\n  [\"sort\", sort_cmd],\r\n  [\"uniq\", uniq_cmd],\r\n  [\"tr\", tr_cmd],\r\n  [\"cut\", cut_cmd],\r\n  [\"rev\", rev_cmd],\r\n  [\"paste\", paste_cmd],\r\n  [\"comm\", comm_cmd],\r\n  [\"diff\", diff_cmd],\r\n  [\"seq\", seq_cmd],\r\n  [\"yes\", yes_cmd],\r\n];\r\n","import type { BuiltinFn } from \"../shell-types\";\r\nimport { ok, fail, resolvePath, globToRegex } from \"../shell-helpers\";\r\nimport { LS_BLOCK_SIZE } from \"../../constants/config\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Helpers                                                            */\r\n/* ------------------------------------------------------------------ */\r\n\r\nfunction matchSize(fileSize: number, spec: string): boolean {\r\n  const m = spec.match(/^([+-]?)(\\d+)([cwbkMG]?)$/);\r\n  if (!m) return true;\r\n  const op = m[1];\r\n  let n = parseInt(m[2]);\r\n  const unit = m[3];\r\n  if (unit === \"c\") {\r\n    /* bytes */\r\n  } else if (unit === \"w\") n *= 2;\r\n  else if (unit === \"k\") n *= 1024;\r\n  else if (unit === \"M\") n *= 1048576;\r\n  else if (unit === \"G\") n *= 1073741824;\r\n  else n *= LS_BLOCK_SIZE;\r\n\r\n  if (op === \"+\") return fileSize > n;\r\n  if (op === \"-\") return fileSize < n;\r\n  return fileSize === n;\r\n}\r\n\r\nfunction matchMtime(mtimeMs: number, spec: string): boolean {\r\n  const m = spec.match(/^([+-]?)(\\d+)$/);\r\n  if (!m) return true;\r\n  const op = m[1];\r\n  const days = parseInt(m[2]);\r\n  const age = (Date.now() - mtimeMs) / 86400000;\r\n  if (op === \"+\") return age > days;\r\n  if (op === \"-\") return age < days;\r\n  return Math.floor(age) === days;\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Commands                                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst find_cmd: BuiltinFn = async (args, ctx) => {\r\n  let searchDir = ctx.cwd;\r\n  let namePattern = \"\";\r\n  let inamePattern = \"\";\r\n  let pathPattern = \"\";\r\n  let typeFilter = \"\";\r\n  let maxDepth = Infinity;\r\n  let minDepth = 0;\r\n  let sizeFilter = \"\";\r\n  let mtimeFilter = \"\";\r\n  let execCmd = \"\";\r\n  let execArgs: string[] = [];\r\n  let deleteMode = false;\r\n  let print0 = false;\r\n  let printMode = true;\r\n  let emptyFilter = false;\r\n\r\n  for (let i = 0; i < args.length; i++) {\r\n    const a = args[i];\r\n    if (a === \"-name\" && i + 1 < args.length) {\r\n      namePattern = args[++i];\r\n    } else if (a === \"-iname\" && i + 1 < args.length) {\r\n      inamePattern = args[++i];\r\n    } else if (a === \"-path\" || (a === \"-wholename\" && i + 1 < args.length)) {\r\n      pathPattern = args[++i];\r\n    } else if (a === \"-type\" && i + 1 < args.length) {\r\n      typeFilter = args[++i];\r\n    } else if (a === \"-maxdepth\" && i + 1 < args.length) {\r\n      maxDepth = parseInt(args[++i]);\r\n    } else if (a === \"-mindepth\" && i + 1 < args.length) {\r\n      minDepth = parseInt(args[++i]);\r\n    } else if (a === \"-size\" && i + 1 < args.length) {\r\n      sizeFilter = args[++i];\r\n    } else if (a === \"-mtime\" && i + 1 < args.length) {\r\n      mtimeFilter = args[++i];\r\n    } else if (a === \"-empty\") {\r\n      emptyFilter = true;\r\n    } else if (a === \"-delete\") {\r\n      deleteMode = true;\r\n      printMode = false;\r\n    } else if (a === \"-print0\") {\r\n      print0 = true;\r\n    } else if (a === \"-print\") {\r\n      printMode = true;\r\n    } else if (a === \"-exec\") {\r\n      const cmdParts: string[] = [];\r\n      i++;\r\n      while (i < args.length && args[i] !== \";\") {\r\n        cmdParts.push(args[i]);\r\n        i++;\r\n      }\r\n      if (cmdParts.length > 0) {\r\n        execCmd = cmdParts[0];\r\n        execArgs = cmdParts.slice(1);\r\n        printMode = false;\r\n      }\r\n    } else if (!a.startsWith(\"-\")) {\r\n      searchDir = resolvePath(a, ctx.cwd);\r\n    }\r\n  }\r\n\r\n  const nameRe = namePattern\r\n    ? new RegExp(\"^\" + globToRegex(namePattern) + \"$\")\r\n    : null;\r\n  const inameRe = inamePattern\r\n    ? new RegExp(\"^\" + globToRegex(inamePattern) + \"$\", \"i\")\r\n    : null;\r\n  const pathRe = pathPattern ? new RegExp(globToRegex(pathPattern)) : null;\r\n\r\n  const results: string[] = [];\r\n  let execOut = \"\";\r\n\r\n  const walk = (dir: string, depth: number) => {\r\n    if (depth > maxDepth) return;\r\n    try {\r\n      for (const name of ctx.volume.readdirSync(dir)) {\r\n        const full = dir === \"/\" ? `/${name}` : `${dir}/${name}`;\r\n        try {\r\n          const st = ctx.volume.statSync(full);\r\n          const isDir = st.isDirectory();\r\n          const isFile = st.isFile();\r\n\r\n          if (depth >= minDepth) {\r\n            let match = true;\r\n            if (typeFilter) {\r\n              if (typeFilter === \"f\" && !isFile) match = false;\r\n              if (typeFilter === \"d\" && !isDir) match = false;\r\n            }\r\n            if (nameRe && !nameRe.test(name)) match = false;\r\n            if (inameRe && !inameRe.test(name)) match = false;\r\n            if (pathRe && !pathRe.test(full)) match = false;\r\n            if (sizeFilter && isFile) {\r\n              const fileSize = ctx.volume.readFileSync(full).length;\r\n              if (!matchSize(fileSize, sizeFilter)) match = false;\r\n            }\r\n            if (mtimeFilter) {\r\n              const mtime = st.mtimeMs || Date.now();\r\n              if (!matchMtime(mtime, mtimeFilter)) match = false;\r\n            }\r\n            if (emptyFilter) {\r\n              if (isDir) {\r\n                try {\r\n                  if (ctx.volume.readdirSync(full).length > 0) match = false;\r\n                } catch {\r\n                  match = false;\r\n                }\r\n              } else if (isFile) {\r\n                if (ctx.volume.readFileSync(full).length > 0) match = false;\r\n              } else match = false;\r\n            }\r\n            if (match) results.push(full);\r\n          }\r\n          if (isDir) walk(full, depth + 1);\r\n        } catch {\r\n          /* skip */\r\n        }\r\n      }\r\n    } catch {\r\n      /* skip */\r\n    }\r\n  };\r\n\r\n  walk(searchDir, 1);\r\n\r\n  if (deleteMode) {\r\n    for (const path of results.reverse()) {\r\n      try {\r\n        const st = ctx.volume.statSync(path);\r\n        if (st.isDirectory()) ctx.volume.rmdirSync(path);\r\n        else ctx.volume.unlinkSync(path);\r\n      } catch {\r\n        /* */\r\n      }\r\n    }\r\n    return ok();\r\n  }\r\n\r\n  if (execCmd) {\r\n    for (const path of results) {\r\n      const expandedArgs = execArgs.map((a) => (a === \"{}\" ? path : a));\r\n      const fullCmd = [execCmd, ...expandedArgs].join(\" \");\r\n      const result = await ctx.exec(fullCmd, { cwd: ctx.cwd, env: ctx.env });\r\n      execOut += result.stdout;\r\n    }\r\n    return ok(execOut);\r\n  }\r\n\r\n  if (print0) return ok(results.join(\"\\0\"));\r\n  if (printMode) return ok(results.join(\"\\n\") + (results.length ? \"\\n\" : \"\"));\r\n  return ok();\r\n};\r\n\r\nconst xargs_cmd: BuiltinFn = async (args, ctx, stdin) => {\r\n  if (!stdin) return ok();\r\n\r\n  let maxArgs = Infinity;\r\n  let placeholder = \"\";\r\n  let nullDelim = false;\r\n  const cmdParts: string[] = [];\r\n\r\n  for (let i = 0; i < args.length; i++) {\r\n    if (args[i] === \"-n\" && i + 1 < args.length)\r\n      maxArgs = parseInt(args[++i]) || 1;\r\n    else if (args[i] === \"-I\" && i + 1 < args.length) placeholder = args[++i];\r\n    else if (args[i] === \"-0\" || args[i] === \"--null\") nullDelim = true;\r\n    else if (args[i] === \"-t\") {\r\n      /* */\r\n    } else cmdParts.push(args[i]);\r\n  }\r\n\r\n  if (cmdParts.length === 0) cmdParts.push(\"echo\");\r\n\r\n  const delim = nullDelim ? \"\\0\" : /\\s+/;\r\n  const items = stdin.trim().split(delim).filter(Boolean);\r\n  const cmd = cmdParts.join(\" \");\r\n  let out = \"\";\r\n  let err = \"\";\r\n  let lastCode = 0;\r\n\r\n  if (placeholder) {\r\n    for (const item of items) {\r\n      const expanded = cmd.replace(\r\n        new RegExp(placeholder.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"), \"g\"),\r\n        item,\r\n      );\r\n      const result = await ctx.exec(expanded, { cwd: ctx.cwd, env: ctx.env });\r\n      out += result.stdout;\r\n      err += result.stderr;\r\n      lastCode = result.exitCode;\r\n    }\r\n  } else if (maxArgs < Infinity) {\r\n    for (let i = 0; i < items.length; i += maxArgs) {\r\n      const batch = items.slice(i, i + maxArgs).join(\" \");\r\n      const result = await ctx.exec(`${cmd} ${batch}`, {\r\n        cwd: ctx.cwd,\r\n        env: ctx.env,\r\n      });\r\n      out += result.stdout;\r\n      err += result.stderr;\r\n      lastCode = result.exitCode;\r\n    }\r\n  } else {\r\n    const result = await ctx.exec(`${cmd} ${items.join(\" \")}`, {\r\n      cwd: ctx.cwd,\r\n      env: ctx.env,\r\n    });\r\n    out += result.stdout;\r\n    err += result.stderr;\r\n    lastCode = result.exitCode;\r\n  }\r\n\r\n  return { stdout: out, stderr: err, exitCode: lastCode };\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Registry                                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const searchCommands: [string, BuiltinFn][] = [\r\n  [\"find\", find_cmd],\r\n  [\"xargs\", xargs_cmd],\r\n];\r\n","import type { BuiltinFn, ShellContext } from \"../shell-types\";\r\nimport {\r\n  ok,\r\n  fail,\r\n  EXIT_FAIL,\r\n  resolvePath,\r\n  parseArgs,\r\n  pathModule,\r\n  MONTHS_SHORT,\r\n  MONTHS_LONG,\r\n  DAYS_SHORT,\r\n  DAYS_LONG,\r\n} from \"../shell-helpers\";\r\n\r\n// set by the registry so `which` and `type` can check builtins\r\nlet _builtins: Map<string, BuiltinFn> | null = null;\r\n\r\nexport function setBuiltinsRef(b: Map<string, BuiltinFn>): void {\r\n  _builtins = b;\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Commands                                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst exportCmd: BuiltinFn = (args, ctx) => {\r\n  if (args.length === 0) {\r\n    let out = \"\";\r\n    for (const [k, v] of Object.entries(ctx.env)) {\r\n      out += `declare -x ${k}=\"${v}\"\\n`;\r\n    }\r\n    return ok(out);\r\n  }\r\n  for (const arg of args) {\r\n    const eq = arg.indexOf(\"=\");\r\n    if (eq > 0) {\r\n      ctx.env[arg.slice(0, eq)] = arg.slice(eq + 1);\r\n    }\r\n  }\r\n  return ok();\r\n};\r\n\r\nconst unset: BuiltinFn = (args, ctx) => {\r\n  for (const name of args) delete ctx.env[name];\r\n  return ok();\r\n};\r\n\r\nconst envCmd: BuiltinFn = (_args, ctx) => {\r\n  let out = \"\";\r\n  for (const [k, v] of Object.entries(ctx.env)) out += `${k}=${v}\\n`;\r\n  return ok(out);\r\n};\r\n\r\nconst which: BuiltinFn = (args, ctx) => {\r\n  if (args.length === 0) return fail(\"which: missing argument\\n\");\r\n\r\n  const { flags } = parseArgs(args, [\"a\"]);\r\n  const showAll = flags.has(\"a\");\r\n  const names = args.filter((a) => !a.startsWith(\"-\"));\r\n\r\n  let out = \"\";\r\n  for (const name of names) {\r\n    const found: string[] = [];\r\n\r\n    if (_builtins?.has(name)) found.push(`${name}: shell built-in command`);\r\n\r\n    const knownBins: Record<string, string> = {\r\n      node: \"/usr/local/bin/node\",\r\n      npm: \"/usr/local/bin/npm\",\r\n      npx: \"/usr/local/bin/npx\",\r\n      pnpm: \"/usr/local/bin/pnpm\",\r\n      yarn: \"/usr/local/bin/yarn\",\r\n      bun: \"/usr/local/bin/bun\",\r\n      bunx: \"/usr/local/bin/bunx\",\r\n    };\r\n    if (knownBins[name]) found.push(knownBins[name]);\r\n\r\n    const binPath = `/node_modules/.bin/${name}`;\r\n    if (ctx.volume.existsSync(binPath)) found.push(binPath);\r\n\r\n    const pathDirs = (ctx.env.PATH || \"\").split(\":\").filter(Boolean);\r\n    for (const dir of pathDirs) {\r\n      const candidate = `${dir}/${name}`;\r\n      if (ctx.volume.existsSync(candidate)) {\r\n        if (!found.includes(candidate)) found.push(candidate);\r\n      }\r\n    }\r\n\r\n    if (found.length === 0) {\r\n      out += `${name} not found\\n`;\r\n    } else if (showAll) {\r\n      for (const f of found) out += f + \"\\n\";\r\n    } else {\r\n      out += found[0] + \"\\n\";\r\n    }\r\n  }\r\n  return out.includes(\"not found\")\r\n    ? { stdout: out, stderr: \"\", exitCode: 1 }\r\n    : ok(out);\r\n};\r\n\r\nconst typeCmd: BuiltinFn = (args, ctx) => {\r\n  if (args.length === 0) return fail(\"type: missing argument\\n\");\r\n  const name = args[0];\r\n  if (_builtins?.has(name)) return ok(`${name} is a shell builtin\\n`);\r\n\r\n  const w = which([name], ctx);\r\n  if (typeof w === \"object\" && \"exitCode\" in w && w.exitCode === 0) {\r\n    return ok(`${name} is ${w.stdout.trim()}\\n`);\r\n  }\r\n  return fail(`type: ${name}: not found\\n`);\r\n};\r\n\r\nconst trueCmd: BuiltinFn = () => ok();\r\nconst falseCmd: BuiltinFn = () => EXIT_FAIL;\r\n\r\nconst exitCmd: BuiltinFn = (args) => {\r\n  const code = args[0] ? parseInt(args[0], 10) : 0;\r\n  return { stdout: \"\", stderr: \"\", exitCode: code };\r\n};\r\n\r\nconst clear: BuiltinFn = () => ok(\"\\x1b[H\\x1b[2J\\x1b[3J\");\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  test / [                                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nfunction evalTest(args: string[], ctx: ShellContext): boolean {\r\n  if (args.length === 0) return false;\r\n\r\n  if (args[0] === \"!\") return !evalTest(args.slice(1), ctx);\r\n\r\n  if (args[0] === \"(\" && args[args.length - 1] === \")\") {\r\n    return evalTest(args.slice(1, -1), ctx);\r\n  }\r\n\r\n  for (let i = 0; i < args.length; i++) {\r\n    if (args[i] === \"-o\") {\r\n      return (\r\n        evalTest(args.slice(0, i), ctx) || evalTest(args.slice(i + 1), ctx)\r\n      );\r\n    }\r\n  }\r\n  for (let i = 0; i < args.length; i++) {\r\n    if (args[i] === \"-a\") {\r\n      return (\r\n        evalTest(args.slice(0, i), ctx) && evalTest(args.slice(i + 1), ctx)\r\n      );\r\n    }\r\n  }\r\n\r\n  if (args.length === 1) return args[0].length > 0;\r\n\r\n  if (args.length === 2) {\r\n    const [flag, val] = args;\r\n    const p = resolvePath(val, ctx.cwd);\r\n\r\n    if (flag === \"-f\") {\r\n      try { return ctx.volume.statSync(p).isFile(); } catch { return false; }\r\n    }\r\n    if (flag === \"-d\") {\r\n      try { return ctx.volume.statSync(p).isDirectory(); } catch { return false; }\r\n    }\r\n    if (flag === \"-e\") return ctx.volume.existsSync(p);\r\n    if (flag === \"-L\" || flag === \"-h\") return ctx.volume.existsSync(p);\r\n    if (flag === \"-s\") {\r\n      try { return ctx.volume.readFileSync(p).length > 0; } catch { return false; }\r\n    }\r\n    if (flag === \"-r\" || flag === \"-w\") return ctx.volume.existsSync(p);\r\n    if (flag === \"-x\") {\r\n      if (ctx.volume.existsSync(p)) {\r\n        const ext = pathModule.extname(p);\r\n        return ext === \".sh\" || ext === \"\" || p.includes(\"/bin/\");\r\n      }\r\n      return false;\r\n    }\r\n    if (flag === \"-n\") return val.length > 0;\r\n    if (flag === \"-z\") return val.length === 0;\r\n    if (flag === \"-t\") return false;\r\n  }\r\n\r\n  if (args.length === 3) {\r\n    const [left, op, right] = args;\r\n    if (op === \"=\" || op === \"==\") return left === right;\r\n    if (op === \"!=\") return left !== right;\r\n    if (op === \"-eq\") return parseInt(left) === parseInt(right);\r\n    if (op === \"-ne\") return parseInt(left) !== parseInt(right);\r\n    if (op === \"-lt\") return parseInt(left) < parseInt(right);\r\n    if (op === \"-le\") return parseInt(left) <= parseInt(right);\r\n    if (op === \"-gt\") return parseInt(left) > parseInt(right);\r\n    if (op === \"-ge\") return parseInt(left) >= parseInt(right);\r\n\r\n    if (op === \"-nt\" || op === \"-ot\" || op === \"-ef\") {\r\n      try {\r\n        const sl = ctx.volume.statSync(resolvePath(left, ctx.cwd));\r\n        const sr = ctx.volume.statSync(resolvePath(right, ctx.cwd));\r\n        if (op === \"-nt\") return (sl.mtimeMs || 0) > (sr.mtimeMs || 0);\r\n        if (op === \"-ot\") return (sl.mtimeMs || 0) < (sr.mtimeMs || 0);\r\n        if (op === \"-ef\")\r\n          return resolvePath(left, ctx.cwd) === resolvePath(right, ctx.cwd);\r\n      } catch {\r\n        return false;\r\n      }\r\n    }\r\n  }\r\n\r\n  return false;\r\n}\r\n\r\nconst test_cmd: BuiltinFn = (args, ctx) => {\r\n  const testArgs = [...args];\r\n  if (testArgs[testArgs.length - 1] === \"]\") testArgs.pop();\r\n  return { stdout: \"\", stderr: \"\", exitCode: evalTest(testArgs, ctx) ? 0 : 1 };\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  date                                                               */\r\n/* ------------------------------------------------------------------ */\r\n\r\nfunction getTimezoneAbbr(d: Date): string {\r\n  const str = d.toTimeString();\r\n  const m = str.match(/\\((.+?)\\)/);\r\n  if (m) {\r\n    const words = m[1].split(\" \");\r\n    if (words.length === 1) return words[0];\r\n    return words.map((w) => w[0]).join(\"\");\r\n  }\r\n  const off = -d.getTimezoneOffset();\r\n  const sign = off >= 0 ? \"+\" : \"-\";\r\n  const h = String(Math.floor(Math.abs(off) / 60)).padStart(2, \"0\");\r\n  const min = String(Math.abs(off) % 60).padStart(2, \"0\");\r\n  return `${sign}${h}${min}`;\r\n}\r\n\r\nfunction formatDate(d: Date, fmt: string, utc: boolean): string {\r\n  const g = utc\r\n    ? {\r\n        Y: d.getUTCFullYear(), m: d.getUTCMonth(), d: d.getUTCDate(),\r\n        H: d.getUTCHours(), M: d.getUTCMinutes(), S: d.getUTCSeconds(),\r\n        w: d.getUTCDay(),\r\n      }\r\n    : {\r\n        Y: d.getFullYear(), m: d.getMonth(), d: d.getDate(),\r\n        H: d.getHours(), M: d.getMinutes(), S: d.getSeconds(),\r\n        w: d.getDay(),\r\n      };\r\n  let out = \"\";\r\n  for (let i = 0; i < fmt.length; i++) {\r\n    if (fmt[i] === \"%\" && i + 1 < fmt.length) {\r\n      const s = fmt[++i];\r\n      if (s === \"Y\") out += g.Y;\r\n      else if (s === \"y\") out += String(g.Y).slice(-2);\r\n      else if (s === \"m\") out += String(g.m + 1).padStart(2, \"0\");\r\n      else if (s === \"d\") out += String(g.d).padStart(2, \"0\");\r\n      else if (s === \"e\") out += String(g.d).padStart(2, \" \");\r\n      else if (s === \"H\") out += String(g.H).padStart(2, \"0\");\r\n      else if (s === \"M\") out += String(g.M).padStart(2, \"0\");\r\n      else if (s === \"S\") out += String(g.S).padStart(2, \"0\");\r\n      else if (s === \"I\") out += String(g.H % 12 || 12).padStart(2, \"0\");\r\n      else if (s === \"p\") out += g.H < 12 ? \"AM\" : \"PM\";\r\n      else if (s === \"P\") out += g.H < 12 ? \"am\" : \"pm\";\r\n      else if (s === \"a\") out += DAYS_SHORT[g.w];\r\n      else if (s === \"A\") out += DAYS_LONG[g.w];\r\n      else if (s === \"b\" || s === \"h\") out += MONTHS_SHORT[g.m];\r\n      else if (s === \"B\") out += MONTHS_LONG[g.m];\r\n      else if (s === \"w\") out += g.w;\r\n      else if (s === \"u\") out += g.w === 0 ? 7 : g.w;\r\n      else if (s === \"j\") {\r\n        const jan1 = new Date(g.Y, 0, 1);\r\n        const diff = d.getTime() - jan1.getTime();\r\n        out += String(Math.floor(diff / 86400000) + 1).padStart(3, \"0\");\r\n      } else if (s === \"s\") out += Math.floor(d.getTime() / 1000);\r\n      else if (s === \"N\") out += String(d.getMilliseconds() * 1000000).padStart(9, \"0\");\r\n      else if (s === \"n\") out += \"\\n\";\r\n      else if (s === \"t\") out += \"\\t\";\r\n      else if (s === \"T\")\r\n        out += `${String(g.H).padStart(2, \"0\")}:${String(g.M).padStart(2, \"0\")}:${String(g.S).padStart(2, \"0\")}`;\r\n      else if (s === \"R\")\r\n        out += `${String(g.H).padStart(2, \"0\")}:${String(g.M).padStart(2, \"0\")}`;\r\n      else if (s === \"F\")\r\n        out += `${g.Y}-${String(g.m + 1).padStart(2, \"0\")}-${String(g.d).padStart(2, \"0\")}`;\r\n      else if (s === \"D\")\r\n        out += `${String(g.m + 1).padStart(2, \"0\")}/${String(g.d).padStart(2, \"0\")}/${String(g.Y).slice(-2)}`;\r\n      else if (s === \"Z\") out += utc ? \"UTC\" : getTimezoneAbbr(d);\r\n      else if (s === \"%\") out += \"%\";\r\n      else out += \"%\" + s;\r\n    } else {\r\n      out += fmt[i];\r\n    }\r\n  }\r\n  return out;\r\n}\r\n\r\nconst date_cmd: BuiltinFn = (args) => {\r\n  const { flags, opts, positional } = parseArgs(args, [\"u\", \"R\", \"I\"], [\"d\"]);\r\n  const utc = flags.has(\"u\");\r\n  const rfc = flags.has(\"R\");\r\n  const iso = flags.has(\"I\");\r\n  const dateStr = opts[\"d\"];\r\n\r\n  const d = dateStr ? new Date(dateStr) : new Date();\r\n  if (isNaN(d.getTime())) return fail(`date: invalid date '${dateStr}'\\n`);\r\n\r\n  const fmt = positional.find((a) => a.startsWith(\"+\"));\r\n  if (fmt) return ok(formatDate(d, fmt.slice(1), utc) + \"\\n\");\r\n  if (rfc) return ok(d.toUTCString() + \"\\n\");\r\n  if (iso) return ok(d.toISOString().slice(0, 10) + \"\\n\");\r\n\r\n  const day = DAYS_SHORT[utc ? d.getUTCDay() : d.getDay()];\r\n  const mon = MONTHS_SHORT[utc ? d.getUTCMonth() : d.getMonth()];\r\n  const date = utc ? d.getUTCDate() : d.getDate();\r\n  const hh = String(utc ? d.getUTCHours() : d.getHours()).padStart(2, \"0\");\r\n  const mm = String(utc ? d.getUTCMinutes() : d.getMinutes()).padStart(2, \"0\");\r\n  const ss = String(utc ? d.getUTCSeconds() : d.getSeconds()).padStart(2, \"0\");\r\n  const year = utc ? d.getUTCFullYear() : d.getFullYear();\r\n  const tz = utc ? \"UTC\" : getTimezoneAbbr(d);\r\n\r\n  return ok(\r\n    `${day} ${mon} ${String(date).padStart(2, \" \")} ${hh}:${mm}:${ss} ${tz} ${year}\\n`,\r\n  );\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  sleep                                                              */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst sleep_cmd: BuiltinFn = async (args) => {\r\n  const seconds = parseFloat(args[0] || \"0\");\r\n  if (seconds > 0) await new Promise((r) => setTimeout(r, seconds * 1000));\r\n  return ok();\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Registry                                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport const shellEnvCommands: [string, BuiltinFn][] = [\r\n  [\"export\", exportCmd],\r\n  [\"unset\", unset],\r\n  [\"env\", envCmd],\r\n  [\"which\", which],\r\n  [\"type\", typeCmd],\r\n  [\"true\", trueCmd],\r\n  [\"false\", falseCmd],\r\n  [\":\", trueCmd],\r\n  [\"exit\", exitCmd],\r\n  [\"clear\", clear],\r\n  [\"test\", test_cmd],\r\n  [\"[\", test_cmd],\r\n  [\"date\", date_cmd],\r\n  [\"sleep\", sleep_cmd],\r\n];\r\n","// Assembles all builtin commands from category modules into one map.\r\n\r\nimport type { BuiltinFn } from \"./shell-types\";\r\nimport { fileOpsCommands } from \"./commands/file-ops\";\r\nimport { directoryCommands } from \"./commands/directory\";\r\nimport { textProcessingCommands } from \"./commands/text-processing\";\r\nimport { searchCommands } from \"./commands/search\";\r\nimport { shellEnvCommands, setBuiltinsRef } from \"./commands/shell-env\";\r\n\r\nexport const builtins = new Map<string, BuiltinFn>([\r\n  ...fileOpsCommands,\r\n  ...directoryCommands,\r\n  ...textProcessingCommands,\r\n  ...searchCommands,\r\n  ...shellEnvCommands,\r\n]);\r\n\r\n// shell-env needs the builtins ref for `which` and `type`\r\nsetBuiltinsRef(builtins);\r\n","// read-only fs client for sibling workers. on main call\r\n// nodepod.sharedFSBuffer, postMessage it to the worker, then on the worker\r\n// side do Nodepod.attachFS(buffer) and you get this. reads hit the shared\r\n// buffer directly so there's no IPC per call.\r\n//\r\n// writes aren't supported (the canonical MemoryVolume lives on the main\r\n// thread, a sibling writing directly would desync it). send write requests\r\n// back over a MessagePort if you need them.\r\n\r\nimport { SharedVFSReader } from \"../threading/shared-vfs\";\r\nimport type { SharedVFSStat } from \"../threading/shared-vfs\";\r\n\r\nexport class NodepodFSClientError extends Error {\r\n  readonly code: string;\r\n  constructor(code: string, message: string) {\r\n    super(message);\r\n    this.code = code;\r\n    this.name = \"NodepodFSClientError\";\r\n  }\r\n}\r\n\r\nfunction notSupported(op: string): never {\r\n  throw new NodepodFSClientError(\r\n    \"ENOTSUP\",\r\n    `NodepodFSClient is read-only, ${op}() not supported from a sibling worker. ` +\r\n      `route the call back to the thread that booted nodepod and use nodepod.fs.${op}() there.`,\r\n  );\r\n}\r\n\r\nexport class NodepodFSClient {\r\n  constructor(private _reader: SharedVFSReader) {}\r\n\r\n  async readFile(path: string, encoding: \"utf-8\" | \"utf8\"): Promise<string>;\r\n  async readFile(path: string): Promise<Uint8Array>;\r\n  async readFile(path: string, encoding?: string): Promise<string | Uint8Array> {\r\n    const bytes = this._reader.readFileSync(path);\r\n    if (bytes === null) {\r\n      throw new NodepodFSClientError(\"ENOENT\", `ENOENT: no such file, open '${path}'`);\r\n    }\r\n    if (encoding === \"utf8\" || encoding === \"utf-8\") {\r\n      // reader already returns a non-shared copy, so TextDecoder is happy\r\n      return new TextDecoder().decode(bytes);\r\n    }\r\n    return bytes;\r\n  }\r\n\r\n  async exists(path: string): Promise<boolean> {\r\n    return this._reader.existsSync(path);\r\n  }\r\n\r\n  async stat(path: string): Promise<SharedVFSStat> {\r\n    const s = this._reader.statSync(path);\r\n    if (s === null) {\r\n      throw new NodepodFSClientError(\"ENOENT\", `ENOENT: no such file or directory, stat '${path}'`);\r\n    }\r\n    return s;\r\n  }\r\n\r\n  async readdir(path: string): Promise<string[]> {\r\n    // match node: scandir on missing path throws ENOENT (except root)\r\n    if (!this._reader.existsSync(path) && path !== \"/\") {\r\n      throw new NodepodFSClientError(\"ENOENT\", `ENOENT: no such file or directory, scandir '${path}'`);\r\n    }\r\n    return this._reader.readdirSync(path);\r\n  }\r\n\r\n  /** SAB version counter, bumped on every write/delete. */\r\n  get version(): number {\r\n    return this._reader.version;\r\n  }\r\n\r\n  /**\r\n   * Block until the version changes or timeout. returns the new version, or\r\n   * -1 on timeout. don't call this on a browser main thread, Atomics.wait\r\n   * throws there.\r\n   */\r\n  waitForChange(currentVersion: number, timeoutMs: number = 5000): number {\r\n    return this._reader.waitForChange(currentVersion, timeoutMs);\r\n  }\r\n\r\n  async writeFile(_path: string, _data: string | Uint8Array): Promise<void> {\r\n    notSupported(\"writeFile\");\r\n  }\r\n  async mkdir(_path: string, _opts?: { recursive?: boolean }): Promise<void> {\r\n    notSupported(\"mkdir\");\r\n  }\r\n  async unlink(_path: string): Promise<void> {\r\n    notSupported(\"unlink\");\r\n  }\r\n  async rmdir(_path: string, _opts?: { recursive?: boolean }): Promise<void> {\r\n    notSupported(\"rmdir\");\r\n  }\r\n  async rename(_from: string, _to: string): Promise<void> {\r\n    notSupported(\"rename\");\r\n  }\r\n  async appendFile(_path: string, _data: string | Uint8Array): Promise<void> {\r\n    notSupported(\"appendFile\");\r\n  }\r\n\r\n  /** escape hatch if you need the sync reader directly */\r\n  get reader(): SharedVFSReader {\r\n    return this._reader;\r\n  }\r\n}\r\n","// IndexedDB-backed cache for node_modules snapshots.\r\n// Keyed by a hash of the package.json contents so stale caches auto-invalidate.\r\n//\r\n// v2 (plan 015): snapshots are stored in the flat binary format (offset\r\n// manifest + one ArrayBuffer) instead of base64-encoded VolumeSnapshots.\r\n// The schema bump means v1 entries are simply ignored and age out.\r\n\r\nimport type { VFSBinarySnapshot } from '../threading/worker-protocol';\r\n\r\nconst DB_NAME = 'nodepod-snapshots';\r\nconst STORE_NAME = 'snapshots';\r\nconst DB_VERSION = 2;\r\nconst MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\r\nconst SCHEMA = 2; // stored per entry; entries with a different schema are misses\r\n\r\nexport interface IDBSnapshotCache {\r\n  get(packageJsonHash: string): Promise<VFSBinarySnapshot | null>;\r\n  set(packageJsonHash: string, snapshot: VFSBinarySnapshot): Promise<void>;\r\n  close(): void;\r\n}\r\n\r\nfunction openDB(): Promise<IDBDatabase | null> {\r\n  if (typeof indexedDB === 'undefined') return Promise.resolve(null);\r\n  return new Promise((resolve) => {\r\n    try {\r\n      const req = indexedDB.open(DB_NAME, DB_VERSION);\r\n      req.onupgradeneeded = () => {\r\n        const db = req.result;\r\n        if (!db.objectStoreNames.contains(STORE_NAME)) {\r\n          db.createObjectStore(STORE_NAME);\r\n        }\r\n      };\r\n      req.onsuccess = () => resolve(req.result);\r\n      req.onerror = () => resolve(null);\r\n    } catch {\r\n      resolve(null);\r\n    }\r\n  });\r\n}\r\n\r\nfunction idbGet(db: IDBDatabase, key: string): Promise<any> {\r\n  return new Promise((resolve, reject) => {\r\n    const tx = db.transaction(STORE_NAME, 'readonly');\r\n    const store = tx.objectStore(STORE_NAME);\r\n    const req = store.get(key);\r\n    req.onsuccess = () => resolve(req.result ?? null);\r\n    req.onerror = () => reject(req.error);\r\n  });\r\n}\r\n\r\nfunction idbPut(db: IDBDatabase, key: string, value: any): Promise<void> {\r\n  return new Promise((resolve, reject) => {\r\n    const tx = db.transaction(STORE_NAME, 'readwrite');\r\n    const store = tx.objectStore(STORE_NAME);\r\n    store.put(value, key);\r\n    tx.oncomplete = () => resolve();\r\n    tx.onerror = () => reject(tx.error);\r\n  });\r\n}\r\n\r\nfunction idbCleanExpired(db: IDBDatabase): void {\r\n  try {\r\n    const tx = db.transaction(STORE_NAME, 'readwrite');\r\n    const store = tx.objectStore(STORE_NAME);\r\n    const req = store.openCursor();\r\n    const now = Date.now();\r\n    req.onsuccess = () => {\r\n      const cursor = req.result;\r\n      if (!cursor) return;\r\n      const entry = cursor.value;\r\n      // expired entries AND pre-v2 (base64) entries get dropped\r\n      if (\r\n        (entry?.createdAt && (now - entry.createdAt) > MAX_AGE_MS) ||\r\n        entry?.schema !== SCHEMA\r\n      ) {\r\n        cursor.delete();\r\n      }\r\n      cursor.continue();\r\n    };\r\n  } catch { /* best-effort cleanup */ }\r\n}\r\n\r\nexport async function openSnapshotCache(): Promise<IDBSnapshotCache | null> {\r\n  const db = await openDB();\r\n  if (!db) return null;\r\n\r\n  // Background cleanup of expired entries\r\n  idbCleanExpired(db);\r\n\r\n  return {\r\n    async get(packageJsonHash: string): Promise<VFSBinarySnapshot | null> {\r\n      try {\r\n        const entry = await idbGet(db, packageJsonHash);\r\n        if (!entry || entry.schema !== SCHEMA || !entry.manifest || !entry.data) return null;\r\n        // Check expiry\r\n        if (entry.createdAt && (Date.now() - entry.createdAt) > MAX_AGE_MS) return null;\r\n        return { manifest: entry.manifest, data: entry.data } as VFSBinarySnapshot;\r\n      } catch {\r\n        return null;\r\n      }\r\n    },\r\n\r\n    async set(packageJsonHash: string, snapshot: VFSBinarySnapshot): Promise<void> {\r\n      try {\r\n        await idbPut(db, packageJsonHash, {\r\n          schema: SCHEMA,\r\n          manifest: snapshot.manifest,\r\n          data: snapshot.data,\r\n          createdAt: Date.now(),\r\n        });\r\n      } catch { /* silently fail — cache is optional */ }\r\n    },\r\n\r\n    close(): void {\r\n      try { db.close(); } catch { /* ignore */ }\r\n    },\r\n  };\r\n}\r\n","import { MemoryVolume } from \"../memory-volume\";\r\nimport { DependencyInstaller } from \"../packages/installer\";\r\nimport {\r\n  RequestProxy,\r\n  getProxyInstance,\r\n  NodepodSWSetupError,\r\n  type IVirtualServer,\r\n} from \"../request-proxy\";\r\nimport type { VolumeSnapshot } from \"../engine-types\";\r\nimport { Buffer } from \"../polyfills/buffer\";\r\nimport type {\r\n  NodepodOptions,\r\n  TerminalOptions,\r\n  Snapshot,\r\n  SnapshotOptions,\r\n  SpawnOptions,\r\n} from \"./types\";\r\nimport { NodepodFS } from \"./nodepod-fs\";\r\nimport { NodepodProcess } from \"./nodepod-process\";\r\nimport { NodepodTerminal } from \"./nodepod-terminal\";\r\nimport { getCompletions } from \"../shell/shell-completions\";\r\nimport { parse as parseShell } from \"../shell/shell-parser\";\r\nimport { builtins as shellBuiltins } from \"../shell/shell-builtins\";\r\nimport { ProcessManager } from \"../threading/process-manager\";\r\nimport { setAllowedDomains } from \"../cross-origin\";\r\nimport type { ProcessHandle } from \"../threading/process-handle\";\r\nimport { VFSBridge } from \"../threading/vfs-bridge\";\r\nimport {\r\n  isSharedArrayBufferAvailable,\r\n  SharedVFSController,\r\n  SharedVFSReader,\r\n} from \"../threading/shared-vfs\";\r\nimport { NodepodFSClient } from \"./nodepod-fs-client\";\r\nimport { SyncChannelController } from \"../threading/sync-channel\";\r\nimport { MemoryHandler } from \"../memory-handler\";\r\nimport { openSnapshotCache } from \"../persistence/idb-cache\";\r\nimport { handleFsProxy } from \"../helpers/napi-wasm-worker\";\r\nimport { buildFileSystemBridge } from \"../polyfills/fs\";\r\nimport { getEsbuild } from \"../helpers/esbuild-engine\";\r\n\r\n// short url-safe id. always starts with a letter so it can't be confused\r\n// with a port number in /__virtual__/{id}/{port}\r\nfunction makeInstanceId(): string {\r\n  const rand =\r\n    typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\"\r\n      ? crypto.randomUUID().replace(/-/g, \"\").slice(0, 8)\r\n      : Math.random().toString(36).slice(2, 10);\r\n  return \"pod\" + rand;\r\n}\r\n\r\n// quote args before joining so the shell doesn't retokenize them.\r\n// without this, `sh -c 'mv /a/* /b/'` loses the body.\r\nfunction shellQuote(arg: string): string {\r\n  if (arg === \"\") return \"''\";\r\n  if (/^[A-Za-z0-9_\\-./:=@%+,]+$/.test(arg)) return arg;\r\n  // single-quote it, escape any inner quotes the posix way\r\n  return \"'\" + arg.replace(/'/g, \"'\\\\''\") + \"'\";\r\n}\r\n\r\nfunction parseSimpleCommand(\r\n  input: string,\r\n  env: Record<string, string>,\r\n): { name: string; args: string[] } | null {\r\n  const ast = parseShell(input, env);\r\n  if (ast.entries.length !== 1 || ast.entries[0].next) return null;\r\n\r\n  const pipeline = ast.entries[0].pipeline;\r\n  if (pipeline.commands.length !== 1) return null;\r\n\r\n  const command = pipeline.commands[0];\r\n  if (command.redirects.length || command.args.length === 0) return null;\r\n\r\n  const [name, ...args] = command.args;\r\n  return { name, args };\r\n}\r\n\r\nexport class Nodepod {\r\n  readonly fs: NodepodFS;\r\n\r\n  /** unique id used by RequestProxy + SW to route back to this Nodepod when\r\n   *  multiple coexist on one page */\r\n  readonly instanceId: string;\r\n\r\n  private _volume: MemoryVolume;\r\n  private _packages: DependencyInstaller;\r\n  private _proxy: RequestProxy;\r\n  private _cwd: string;\r\n  private _env: Record<string, string>;\r\n\r\n  private _processManager: ProcessManager;\r\n  private _vfsBridge: VFSBridge;\r\n  private _sharedVFS: SharedVFSController | null = null;\r\n  private _syncChannel: SyncChannelController | null = null;\r\n  private _unwatchVFS: (() => void) | null = null;\r\n  private _handler: MemoryHandler;\r\n  private _sabEnabled: boolean;\r\n  private _wasiFsChannel: BroadcastChannel | null = null;\r\n\r\n  /* ---- Construction (use Nodepod.boot()) ---- */\r\n\r\n  private constructor(\r\n    volume: MemoryVolume,\r\n    packages: DependencyInstaller,\r\n    proxy: RequestProxy,\r\n    cwd: string,\r\n    handler: MemoryHandler,\r\n    env: Record<string, string>,\r\n    sabEnabled: boolean,\r\n    instanceId: string,\r\n  ) {\r\n    this._volume = volume;\r\n    this._packages = packages;\r\n    this._proxy = proxy;\r\n    this._cwd = cwd;\r\n    this._env = env;\r\n    this._handler = handler;\r\n    this._sabEnabled = sabEnabled;\r\n    this.instanceId = instanceId;\r\n    this.fs = new NodepodFS(volume);\r\n    this._processManager = new ProcessManager(volume);\r\n    this._vfsBridge = new VFSBridge(volume);\r\n\r\n    this._vfsBridge.setBroadcaster((path, content, excludePid) => {\r\n      const isDirectory = content !== null && content.byteLength === 0;\r\n      this._processManager.broadcastVFSChange(\r\n        path,\r\n        content,\r\n        isDirectory,\r\n        excludePid,\r\n      );\r\n    });\r\n\r\n    this._processManager.setVFSBridge(this._vfsBridge);\r\n\r\n    // VFS watcher broadcasts main-thread file changes to workers (needed for HMR)\r\n    this._unwatchVFS = this._vfsBridge.watch();\r\n\r\n    if (sabEnabled) {\r\n      try {\r\n        this._sharedVFS = new SharedVFSController();\r\n        this._processManager.setSharedBuffer(this._sharedVFS.buffer);\r\n        this._vfsBridge.setSharedVFS(this._sharedVFS);\r\n      } catch (e) {\r\n        // COOP/COEP headers probably missing\r\n      }\r\n\r\n      try {\r\n        this._syncChannel = new SyncChannelController();\r\n        this._processManager.setSyncBuffer(this._syncChannel.buffer);\r\n      } catch (e) {\r\n        // SyncChannel init failed\r\n      }\r\n\r\n      // SAB was detected but controllers failed, probably COOP/COEP\r\n      if (!this._sharedVFS || !this._syncChannel) {\r\n        this._sabEnabled = false;\r\n        console.warn(\r\n          \"[Nodepod] SharedArrayBuffer init failed mid-boot, features disabled.\",\r\n        );\r\n      }\r\n    }\r\n\r\n    // Bridge worker HTTP servers to the RequestProxy for preview URLs\r\n    this._processManager.on(\r\n      \"server-listen\",\r\n      (_pid: number, port: number, _hostname: string) => {\r\n        const proxyServer: IVirtualServer = {\r\n          listening: true,\r\n          address: () => ({ port, address: \"0.0.0.0\", family: \"IPv4\" }),\r\n          dispatchRequest: async (method, url, headers, body) => {\r\n            const bodyStr = body\r\n              ? typeof body === \"string\"\r\n                ? body\r\n                : body.toString(\"utf8\")\r\n              : null;\r\n            const result = await this._processManager.dispatchHttpRequest(\r\n              port,\r\n              method,\r\n              url,\r\n              headers,\r\n              bodyStr,\r\n            );\r\n            // Body can be ArrayBuffer (binary) or string (text)\r\n            const respBody =\r\n              result.body instanceof ArrayBuffer\r\n                ? Buffer.from(new Uint8Array(result.body))\r\n                : Buffer.from(result.body);\r\n            return {\r\n              statusCode: result.statusCode,\r\n              statusMessage: result.statusMessage,\r\n              headers: result.headers,\r\n              body: respBody,\r\n            };\r\n          },\r\n        };\r\n        this._proxy.register(this.instanceId, proxyServer, port);\r\n      },\r\n    );\r\n\r\n    this._processManager.on(\"server-close\", (_pid: number, port: number) => {\r\n      this._proxy.unregister(this.instanceId, port);\r\n    });\r\n\r\n    this._proxy.attach(this.instanceId, this._processManager);\r\n  }\r\n\r\n  /* ---- Static factory ---- */\r\n\r\n  static async boot(opts: NodepodOptions = {}): Promise<Nodepod> {\r\n    if (typeof Worker === \"undefined\") {\r\n      throw new Error(\r\n        \"[Nodepod] Web Workers are required. Nodepod cannot run without Web Worker support.\",\r\n      );\r\n    }\r\n\r\n    const sabAvailable = isSharedArrayBufferAvailable();\r\n    const sabEnabled = opts.enableSharedArrayBuffer !== false && sabAvailable;\r\n    if (!sabEnabled) {\r\n      const reason = !sabAvailable\r\n        ? \"unavailable (likely missing COOP/COEP headers)\"\r\n        : \"disabled via enableSharedArrayBuffer: false\";\r\n      console.warn(\r\n        `[Nodepod] SharedArrayBuffer ${reason}. ` +\r\n          \"execSync/spawnSync will throw on call, threaded wasi modules \" +\r\n          \"(rolldown, lightningcss, tailwind-oxide) will refuse to load, \" +\r\n          \"cross-thread vfs reads use async message passing.\",\r\n      );\r\n    }\r\n\r\n    const cwd = opts.workdir ?? \"/\";\r\n    const env = opts.env ?? {};\r\n\r\n    const handler = new MemoryHandler(opts.memory);\r\n    handler.startMonitoring();\r\n    const volume = new MemoryVolume(handler);\r\n\r\n    // fs bridge for napi-rs WASI workers (tailwind v4 oxide, rolldown, etc).\r\n    // they call fs from inside a Web Worker which would normally route\r\n    // through the spawned process, but that process is often in sync WASM\r\n    // and cant drain its message queue. listen on the same channel here\r\n    // (browser tab is idle) and service the request against MemoryVolume.\r\n    let wasiFsChannel: BroadcastChannel | null = null;\r\n    if (typeof BroadcastChannel !== \"undefined\") {\r\n      try {\r\n        const tabFsBridge = buildFileSystemBridge(volume, () => \"/\");\r\n        wasiFsChannel = new BroadcastChannel(\"nodepod-wasi-fs\");\r\n        wasiFsChannel.onmessage = (e: MessageEvent) => {\r\n          const data = e.data;\r\n          if (!data || typeof data !== \"object\" || !data.__fs__) return;\r\n          handleFsProxy(data.__fs__, tabFsBridge);\r\n        };\r\n      } catch (err) {\r\n        if (typeof console !== \"undefined\") {\r\n          console.warn(\"[Nodepod] WASI fs broadcast bridge setup failed:\", err);\r\n        }\r\n      }\r\n    }\r\n\r\n    // Open IDB snapshot cache for faster re-boots (opt-out via enableSnapshotCache: false)\r\n    let snapshotCache = null;\r\n    if (opts.enableSnapshotCache !== false) {\r\n      try {\r\n        snapshotCache = await openSnapshotCache();\r\n      } catch {\r\n        /* IDB unavailable */\r\n      }\r\n    }\r\n\r\n    const packages = new DependencyInstaller(volume, { snapshotCache });\r\n    const proxy = getProxyInstance({\r\n      onServerReady: opts.onServerReady,\r\n    });\r\n\r\n    // set up fetch domain whitelist (null = allow everything)\r\n    if (opts.allowedFetchDomains === null) {\r\n      setAllowedDomains(null);\r\n    } else {\r\n      setAllowedDomains(opts.allowedFetchDomains ?? []);\r\n    }\r\n\r\n    const nodepod = new Nodepod(\r\n      volume,\r\n      packages,\r\n      proxy,\r\n      cwd,\r\n      handler,\r\n      env,\r\n      sabEnabled,\r\n      makeInstanceId(),\r\n    );\r\n    nodepod._wasiFsChannel = wasiFsChannel;\r\n\r\n    if (opts.spawnSnapshot) {\r\n      // ProcessManager double-checks SAB availability per spawn and falls\r\n      // back to full snapshots with a one-time warning\r\n      nodepod._processManager.setSpawnSnapshotMode(opts.spawnSnapshot);\r\n    }\r\n\r\n    // warm the shared esbuild instance while the rest of boot proceeds;\r\n    // fire-and-forget — consumers await getEsbuild() themselves\r\n    if (opts.preloadEsbuild !== false && typeof window !== \"undefined\") {\r\n      getEsbuild().catch(() => {});\r\n    }\r\n\r\n    // probe for the external worker asset so first spawn can skip the\r\n    // embedded bundle string; fire-and-forget with embedded fallback\r\n    ProcessManager.probeExternalWorkerBundle(opts.workerUrl).catch(() => {});\r\n\r\n    if (opts.files) {\r\n      for (const [path, content] of Object.entries(opts.files)) {\r\n        const dir = path.substring(0, path.lastIndexOf(\"/\")) || \"/\";\r\n        if (dir !== \"/\" && !volume.existsSync(dir)) {\r\n          volume.mkdirSync(dir, { recursive: true });\r\n        }\r\n        volume.writeFileSync(path, content as any);\r\n      }\r\n    }\r\n\r\n    if (cwd !== \"/\" && !volume.existsSync(cwd)) {\r\n      volume.mkdirSync(cwd, { recursive: true });\r\n    }\r\n\r\n    for (const dir of [\"/tmp\", \"/home\"]) {\r\n      if (!volume.existsSync(dir)) {\r\n        volume.mkdirSync(dir, { recursive: true });\r\n      }\r\n    }\r\n\r\n    // SW is default-on as of 1.2. Pass `serviceWorker: false` to opt out\r\n    // (SSR, Node tests). Pre-1.2 required `swUrl` to enable it, which\r\n    // silently broke preview iframes for anyone who installed from npm.\r\n    const swEnabled =\r\n      opts.serviceWorker !== false &&\r\n      typeof navigator !== \"undefined\" &&\r\n      \"serviceWorker\" in navigator;\r\n\r\n    if (swEnabled) {\r\n      try {\r\n        await proxy.initServiceWorker({\r\n          swUrl: opts.swUrl,\r\n          skipPreflight: opts.skipSWPreflight,\r\n        });\r\n        // Watermark is on by default, only disable if explicitly set to false\r\n        if (opts.watermark === false) {\r\n          proxy.setWatermark(false);\r\n        }\r\n      } catch (e) {\r\n        // Setup errors have an actionable hint attached, rethrow them.\r\n        // Anything else (weird host envs, navigator vanishing mid-boot)\r\n        // is non-fatal; warn and let boot() return so spawn/VFS still work.\r\n        if (e instanceof NodepodSWSetupError) throw e;\r\n        if (typeof console !== \"undefined\" && console.warn) {\r\n          console.warn(\r\n            \"[nodepod] service worker registration failed \" +\r\n              \"(preview iframes and virtual HTTP servers won't work):\",\r\n            e,\r\n          );\r\n        }\r\n      }\r\n    }\r\n\r\n    return nodepod;\r\n  }\r\n\r\n  /* ---- spawn() ---- */\r\n\r\n  // Each spawn gets a dedicated worker with its own engine + shell\r\n  async spawn(\r\n    cmd: string,\r\n    args?: string[],\r\n    opts?: SpawnOptions,\r\n  ): Promise<NodepodProcess> {\r\n    const proc = new NodepodProcess();\r\n    const execCwd = opts?.cwd ?? this._cwd;\r\n    const combinedEnv = { ...this._env, ...(opts?.env ?? {}) };\r\n\r\n    const handle = this._processManager.spawn({\r\n      command: cmd,\r\n      args: args ?? [],\r\n      cwd: execCwd,\r\n      env: combinedEnv,\r\n    });\r\n\r\n    handle.on(\"stdout\", (data: string) => {\r\n      if (!proc.exited) proc._pushStdout(data);\r\n    });\r\n\r\n    handle.on(\"stderr\", (data: string) => {\r\n      if (!proc.exited) proc._pushStderr(data);\r\n    });\r\n\r\n    handle.on(\"exit\", (exitCode: number, stdout?: string, stderr?: string) => {\r\n      if (!proc.exited) {\r\n        proc._mergeExitOutput(stdout, stderr);\r\n        proc._finish(exitCode);\r\n      }\r\n    });\r\n\r\n    handle.on(\"worker-error\", (message: string) => {\r\n      if (!proc.exited) {\r\n        proc._pushStderr(`Worker error: ${message}\\n`);\r\n        proc._finish(1);\r\n      }\r\n    });\r\n\r\n    proc._setSendStdin((data: string) => handle.sendStdin(data));\r\n    proc._setKillFn(() => handle.kill(\"SIGINT\"));\r\n\r\n    if (opts?.signal) {\r\n      opts.signal.addEventListener(\r\n        \"abort\",\r\n        () => {\r\n          handle.kill(\"SIGINT\");\r\n        },\r\n        { once: true },\r\n      );\r\n    }\r\n\r\n    await new Promise<void>((resolve) => {\r\n      if (handle.state === \"running\") {\r\n        resolve();\r\n      } else {\r\n        handle.on(\"ready\", () => resolve());\r\n      }\r\n    });\r\n\r\n    const isNodeFileRun =\r\n      cmd === \"node\" &&\r\n      args?.length &&\r\n      !args[0].startsWith(\"-\");\r\n    if (isNodeFileRun) {\r\n      const filePath = this._resolveCommand(cmd, args);\r\n      handle.exec({\r\n        type: \"exec\",\r\n        filePath,\r\n        args: args?.slice(1) ?? [],\r\n        cwd: execCwd,\r\n        env: opts?.env,\r\n        isShell: false,\r\n      });\r\n    } else {\r\n      // quote everything so sh -c bodies survive the round-trip\r\n      const fullCmd = args?.length\r\n        ? `${shellQuote(cmd)} ${args.map(shellQuote).join(\" \")}`\r\n        : cmd;\r\n      handle.exec({\r\n        type: \"exec\",\r\n        filePath: \"\",\r\n        args: args ?? [],\r\n        cwd: execCwd,\r\n        env: opts?.env,\r\n        isShell: true,\r\n        shellCommand: fullCmd,\r\n      });\r\n    }\r\n\r\n    return proc;\r\n  }\r\n\r\n  private _resolveCommand(cmd: string, args?: string[]): string {\r\n    if (cmd === \"node\" && args?.length) {\r\n      const filePath = args[0];\r\n      if (filePath.startsWith(\"/\")) return filePath;\r\n      return `${this._cwd}/${filePath}`.replace(/\\/+/g, \"/\");\r\n    }\r\n    return cmd;\r\n  }\r\n\r\n  /* ---- createTerminal() ---- */\r\n\r\n  createTerminal(opts: TerminalOptions): NodepodTerminal {\r\n    const terminal = new NodepodTerminal(opts);\r\n    terminal.setCwd(this._cwd);\r\n    const customCommands = opts.customCommands ?? {};\r\n    const customCommandNames = Object.keys(customCommands);\r\n\r\n    let activeAbort: AbortController | null = null;\r\n    let currentSendStdin: ((data: string) => void) | null = null;\r\n    let activeCommandId = 0;\r\n    const nextCommandId = () => {\r\n      activeCommandId = (activeCommandId + 1) % Number.MAX_SAFE_INTEGER;\r\n      return activeCommandId;\r\n    };\r\n    let isStdinRaw = false;\r\n\r\n    // Persistent shell worker -- reused across commands so VFS state persists\r\n    // and we skip the ~1s worker creation overhead per command\r\n    let shellHandle: ProcessHandle | null = null;\r\n    let shellReady: Promise<void> | null = null;\r\n\r\n    const ensureShellWorker = (): Promise<void> => {\r\n      if (shellHandle && shellHandle.state !== \"exited\") {\r\n        return shellReady!;\r\n      }\r\n      shellHandle = this._processManager.spawn({\r\n        command: \"shell\",\r\n        args: [],\r\n        cwd: terminal.getCwd(),\r\n        env: this._env,\r\n      });\r\n      shellReady = new Promise<void>((resolve) => {\r\n        const seedSize = () => {\r\n          // seed size before the first exec so interactive CLIs see real\r\n          // dimensions instead of the 80x24 worker defaults\r\n          if (lastCols && lastRows && shellHandle) {\r\n            shellHandle.resize(lastCols, lastRows);\r\n          }\r\n        };\r\n        if (shellHandle!.state === \"running\") {\r\n          seedSize();\r\n          resolve();\r\n        } else {\r\n          shellHandle!.on(\"ready\", () => {\r\n            seedSize();\r\n            resolve();\r\n          });\r\n        }\r\n      });\r\n\r\n      shellHandle.on(\"cwd-change\", (cwd: string) => {\r\n        this._cwd = cwd;\r\n        terminal.setCwd(cwd);\r\n      });\r\n\r\n      shellHandle.on(\"stdin-raw-status\", (raw: boolean) => {\r\n        isStdinRaw = raw;\r\n      });\r\n\r\n      // Worker died -- next command will spawn a fresh one\r\n      shellHandle.on(\"exit\", () => {\r\n        shellHandle = null;\r\n        shellReady = null;\r\n      });\r\n\r\n      return shellReady;\r\n    };\r\n\r\n    // last known size, sent to the shell worker as soon as it boots so the\r\n    // first command sees the real dimensions instead of 80x24 defaults\r\n    let lastCols = 0;\r\n    let lastRows = 0;\r\n\r\n    const forwardResize = (cols: number, rows: number) => {\r\n      lastCols = cols;\r\n      lastRows = rows;\r\n      // fire and forget. if no shell exists yet, the size is seeded via\r\n      // the \"ready\" handler below so the first exec picks it up.\r\n      if (shellHandle && shellHandle.state !== \"exited\") {\r\n        shellHandle.resize(cols, rows);\r\n      }\r\n    };\r\n\r\n    terminal._wireExecution({\r\n      onCommand: async (cmd: string) => {\r\n        const myAbort = new AbortController();\r\n        activeAbort = myAbort;\r\n        const myCommandId = nextCommandId();\r\n\r\n        let streamed = false;\r\n        let wroteNewline = false;\r\n\r\n        function ensureNewline() {\r\n          if (!wroteNewline) {\r\n            wroteNewline = true;\r\n            terminal.write(\"\\r\\n\");\r\n          }\r\n        }\r\n\r\n        const simpleCommand = parseSimpleCommand(cmd, this._env);\r\n        if (simpleCommand && customCommands[simpleCommand.name]) {\r\n          try {\r\n            const output = customCommands[simpleCommand.name](\r\n              terminal.getCwd(),\r\n              simpleCommand.args,\r\n            );\r\n            if (output) {\r\n              ensureNewline();\r\n              terminal._writeOutput(output);\r\n            }\r\n          } catch (err) {\r\n            ensureNewline();\r\n            const message = err instanceof Error ? err.message : String(err);\r\n            terminal._writeOutput(`${simpleCommand.name}: ${message}\\n`, true);\r\n          } finally {\r\n            if (activeAbort === myAbort) activeAbort = null;\r\n            currentSendStdin = null;\r\n            if (!wroteNewline) terminal.write(\"\\r\\n\");\r\n            terminal._setRunning(false);\r\n            terminal._writePrompt();\r\n          }\r\n          return;\r\n        }\r\n\r\n        // Ensure persistent shell worker is running\r\n        await ensureShellWorker();\r\n        const handle = shellHandle!;\r\n\r\n        // Ignore output from previous commands or before exec is sent (stale child output)\r\n        let execSent = false;\r\n        const onStdout = (data: string) => {\r\n          if (myCommandId !== activeCommandId) return;\r\n          if (!execSent) return;\r\n          streamed = true;\r\n          ensureNewline();\r\n          terminal._writeOutput(data);\r\n        };\r\n        const onStderr = (data: string) => {\r\n          if (myCommandId !== activeCommandId) return;\r\n          if (!execSent) return;\r\n          streamed = true;\r\n          ensureNewline();\r\n          terminal._writeOutput(data, true);\r\n        };\r\n\r\n        handle.on(\"stdout\", onStdout);\r\n        handle.on(\"stderr\", onStderr);\r\n\r\n        currentSendStdin = (data: string) => handle.sendStdin(data);\r\n\r\n        // PM.kill() recursively kills descendants + cleans up server ports\r\n        myAbort.signal.addEventListener(\r\n          \"abort\",\r\n          () => {\r\n            this._processManager.kill(handle.pid, \"SIGINT\");\r\n          },\r\n          { once: true },\r\n        );\r\n\r\n        handle.exec({\r\n          type: \"exec\",\r\n          filePath: \"\",\r\n          args: [],\r\n          cwd: terminal.getCwd(),\r\n          isShell: true,\r\n          shellCommand: cmd,\r\n          persistent: true,\r\n        });\r\n        execSent = true;\r\n\r\n        return new Promise<void>((resolve) => {\r\n          const cleanup = () => {\r\n            handle.removeListener(\"shell-done\", onDone);\r\n            handle.removeListener(\"exit\", onExit);\r\n            handle.removeListener(\"stdout\", onStdout);\r\n            handle.removeListener(\"stderr\", onStderr);\r\n          };\r\n\r\n          const onDone = (exitCode: number, stdout: string, stderr: string) => {\r\n            cleanup();\r\n            const isStale = myCommandId !== activeCommandId;\r\n            if (!isStale) {\r\n              currentSendStdin = null;\r\n            }\r\n\r\n            const aborted = myAbort.signal.aborted;\r\n\r\n            if (!aborted && !streamed && !isStale) {\r\n              const outStr = String(stdout ?? \"\");\r\n              const errStr = String(stderr ?? \"\");\r\n              if (outStr || errStr) ensureNewline();\r\n              if (outStr) terminal._writeOutput(outStr);\r\n              if (errStr) terminal._writeOutput(errStr, true);\r\n            }\r\n\r\n            if (activeAbort === myAbort) activeAbort = null;\r\n\r\n            if (!aborted && !isStale) {\r\n              if (!wroteNewline) terminal.write(\"\\r\\n\");\r\n              terminal._setRunning(false);\r\n              terminal._writePrompt();\r\n            }\r\n            resolve();\r\n          };\r\n\r\n          const onExit = (exitCode: number, stdout: string, stderr: string) => {\r\n            cleanup();\r\n            const isStale = myCommandId !== activeCommandId;\r\n            if (!isStale) currentSendStdin = null;\r\n            const aborted = myAbort.signal.aborted;\r\n            if (!aborted && !streamed && !isStale) {\r\n              const outStr = String(stdout ?? \"\");\r\n              const errStr = String(stderr ?? \"\");\r\n              if (outStr || errStr) ensureNewline();\r\n              if (outStr) terminal._writeOutput(outStr);\r\n              if (errStr) terminal._writeOutput(errStr, true);\r\n            }\r\n            if (activeAbort === myAbort) activeAbort = null;\r\n            if (!aborted && !isStale) {\r\n              if (!wroteNewline) terminal.write(\"\\r\\n\");\r\n              terminal._setRunning(false);\r\n              terminal._writePrompt();\r\n            }\r\n            resolve();\r\n          };\r\n\r\n          handle.on(\"shell-done\", onDone);\r\n          handle.on(\"exit\", onExit);\r\n        });\r\n      },\r\n\r\n      getSendStdin: () => currentSendStdin,\r\n      getIsStdinRaw: () => isStdinRaw,\r\n      getActiveAbort: () => activeAbort,\r\n      setActiveAbort: (ac) => {\r\n        activeAbort = ac;\r\n      },\r\n      getCompletions: (line: string, cursorPos: number, cwd: string) =>\r\n        getCompletions(line, cursorPos, cwd, this._volume, shellBuiltins.keys(), {\r\n          extraCommands: customCommandNames,\r\n        }),\r\n      onResize: forwardResize,\r\n    });\r\n\r\n    return terminal;\r\n  }\r\n\r\n  /* ---- setPreviewScript() ---- */\r\n\r\n  // Inject a script into every preview iframe before any page content loads.\r\n  // Useful for setting up a communication bridge between the main window and\r\n  // the preview iframe, injecting polyfills, analytics, etc.\r\n  async setPreviewScript(script: string): Promise<void> {\r\n    this._proxy.setPreviewScript(this.instanceId, script);\r\n  }\r\n\r\n  async clearPreviewScript(): Promise<void> {\r\n    this._proxy.setPreviewScript(this.instanceId, null);\r\n  }\r\n\r\n  /* ---- port() ---- */\r\n\r\n  // preview url for a server on this port, or null. scoped to instanceId so\r\n  // multiple Nodepods on one page don't collide\r\n  port(num: number): string | null {\r\n    if (this._proxy.activePorts(this.instanceId).includes(num)) {\r\n      return this._proxy.serverUrl(this.instanceId, num);\r\n    }\r\n    return null;\r\n  }\r\n\r\n  /* ---- snapshot / restore ---- */\r\n\r\n  /** Directory names excluded from snapshots at any depth when shallow=true. */\r\n  private static readonly SHALLOW_EXCLUDE_DIRS = new Set([\r\n    \"node_modules\",\r\n    \".cache\",\r\n    \".npm\",\r\n  ]);\r\n\r\n  snapshot(opts?: SnapshotOptions): Snapshot {\r\n    const shallow = opts?.shallow ?? true;\r\n    return this._volume.toSnapshot(\r\n      undefined,\r\n      shallow ? Nodepod.SHALLOW_EXCLUDE_DIRS : undefined,\r\n    );\r\n  }\r\n\r\n  async restore(snapshot: Snapshot, opts?: SnapshotOptions): Promise<void> {\r\n    const autoInstall = opts?.autoInstall ?? true;\r\n\r\n    // Swap the internal tree\r\n    const fresh = MemoryVolume.fromSnapshot(snapshot);\r\n    (this._volume as any).tree = (fresh as any).tree;\r\n\r\n    // Auto-install deps from package.json if requested and manifest exists\r\n    if (autoInstall && this._volume.existsSync(\"/package.json\")) {\r\n      await this._packages.installFromManifest();\r\n    }\r\n  }\r\n\r\n  /* ---- teardown ---- */\r\n\r\n  teardown(): void {\r\n    if (this._unwatchVFS) {\r\n      this._unwatchVFS();\r\n      this._unwatchVFS = null;\r\n    }\r\n    // release our slot so sibling Nodepods on the same page keep working\r\n    try {\r\n      this._proxy.detach(this.instanceId);\r\n    } catch {\r\n      /* */\r\n    }\r\n    if (this._wasiFsChannel) {\r\n      try { this._wasiFsChannel.close(); } catch { /* */ }\r\n      this._wasiFsChannel = null;\r\n    }\r\n    this._processManager.teardown();\r\n    this._volume.dispose();\r\n    this._handler.destroy();\r\n  }\r\n\r\n  /* ---- Performance stats ---- */\r\n\r\n  memoryStats(): {\r\n    vfs: {\r\n      fileCount: number;\r\n      totalBytes: number;\r\n      dirCount: number;\r\n      watcherCount: number;\r\n    };\r\n    engine: { moduleCacheSize: number; transformCacheSize: number };\r\n    heap: { usedMB: number; totalMB: number; limitMB: number } | null;\r\n  } {\r\n    const vfs = this._volume.getStats();\r\n    // Engine stats are per-worker; main thread no longer runs a ScriptEngine\r\n    const engine = { moduleCacheSize: 0, transformCacheSize: 0 };\r\n    let heap: { usedMB: number; totalMB: number; limitMB: number } | null =\r\n      null;\r\n    const perf =\r\n      typeof performance !== \"undefined\" ? (performance as any) : null;\r\n    if (perf?.memory) {\r\n      heap = {\r\n        usedMB: Math.round((perf.memory.usedJSHeapSize / 1048576) * 10) / 10,\r\n        totalMB: Math.round((perf.memory.totalJSHeapSize / 1048576) * 10) / 10,\r\n        limitMB: Math.round((perf.memory.jsHeapSizeLimit / 1048576) * 10) / 10,\r\n      };\r\n    }\r\n    return { vfs, engine, heap };\r\n  }\r\n\r\n  /**\r\n   * postMessage this to a sibling worker (one the host app spawned, not one\r\n   * nodepod spawned via spawn()), then call Nodepod.attachFS(buffer) on the\r\n   * other side. null if SAB is unavailable, but boot() would have thrown in\r\n   * that case so this is mostly defensive.\r\n   *\r\n   * caps: 16,384 entries, 64 MB, 248-byte paths. writes past the caps\r\n   * silently drop, not ideal for node_modules scale scans.\r\n   */\r\n  get sharedFSBuffer(): SharedArrayBuffer | null {\r\n    return this._sharedVFS?.buffer ?? null;\r\n  }\r\n\r\n  /**\r\n   * attach to an existing nodepod from a sibling worker using the buffer\r\n   * from nodepod.sharedFSBuffer. the returned client is read-only, writes\r\n   * throw ENOTSUP.\r\n   */\r\n  static attachFS(buffer: SharedArrayBuffer): NodepodFSClient {\r\n    if (!isSharedArrayBufferAvailable()) {\r\n      throw new Error(\r\n        \"[Nodepod.attachFS] SharedArrayBuffer is required. Ensure COOP/COEP headers are set.\",\r\n      );\r\n    }\r\n    return new NodepodFSClient(new SharedVFSReader(buffer));\r\n  }\r\n\r\n  /* ---- Escape hatches ---- */\r\n\r\n  get volume(): MemoryVolume {\r\n    return this._volume;\r\n  }\r\n  /** @deprecated Main-thread engine removed for security. all code now runs in isolated Web Workers via spawn() <-- this removes fatal security flaws. */\r\n  get engine(): never {\r\n    throw new Error(\r\n      \"[Nodepod] Main-thread engine removed for security. \" +\r\n        \"All code now runs in isolated Web Workers via spawn().\",\r\n    );\r\n  }\r\n  get packages(): DependencyInstaller {\r\n    return this._packages;\r\n  }\r\n  get proxy(): RequestProxy {\r\n    return this._proxy;\r\n  }\r\n  get processManager(): ProcessManager {\r\n    return this._processManager;\r\n  }\r\n  get cwd(): string {\r\n    return this._cwd;\r\n  }\r\n  /** true if SAB features are active on this instance */\r\n  get isSharedArrayBufferEnabled(): boolean {\r\n    return this._sabEnabled;\r\n  }\r\n}\r\n","// worker-side filesystem proxy\r\n// reads are instant from a local Map, writes go to both the local store and main thread\r\n\r\nimport type { VFSBinarySnapshot, VFSSnapshotEntry } from \"./worker-protocol\";\r\n\r\nexport class WorkerVFS {\r\n  private _files = new Map<string, Uint8Array>();\r\n  private _dirs = new Set<string>();\r\n  private _onWrite: ((path: string, content: Uint8Array, isDir: boolean) => void) | null = null;\r\n  private _onDelete: ((path: string) => void) | null = null;\r\n  private _decoder = new TextDecoder();\r\n  private _encoder = new TextEncoder();\r\n\r\n  constructor() {\r\n    this._dirs.add(\"/\");\r\n  }\r\n\r\n  initFromSnapshot(snapshot: VFSBinarySnapshot): void {\r\n    const data = new Uint8Array(snapshot.data);\r\n\r\n    for (const entry of snapshot.manifest) {\r\n      if (entry.isDirectory) {\r\n        this._dirs.add(entry.path);\r\n      } else {\r\n        this._files.set(entry.path, data.slice(entry.offset, entry.offset + entry.length));\r\n        this._ensureParentDirs(entry.path);\r\n      }\r\n    }\r\n  }\r\n\r\n  setWriteCallback(cb: (path: string, content: Uint8Array, isDir: boolean) => void): void {\r\n    this._onWrite = cb;\r\n  }\r\n\r\n  setDeleteCallback(cb: (path: string) => void): void {\r\n    this._onDelete = cb;\r\n  }\r\n\r\n  readFileSync(path: string, encoding?: string): string | Uint8Array {\r\n    const data = this._files.get(path);\r\n    if (!data) {\r\n      const err = new Error(`ENOENT: no such file or directory, open '${path}'`) as Error & { code: string; errno: number };\r\n      err.code = \"ENOENT\";\r\n      err.errno = -2;\r\n      throw err;\r\n    }\r\n    if (encoding === \"utf8\" || encoding === \"utf-8\") {\r\n      // defensive copy — TextDecoder rejects SAB-backed views, snapshots usually come via postMessage (non-shared) but worker VFS can be initialized from shared memory in some paths\r\n      if (typeof SharedArrayBuffer !== \"undefined\" && data.buffer instanceof SharedArrayBuffer) {\r\n        const copy = new Uint8Array(data.byteLength);\r\n        copy.set(data);\r\n        return this._decoder.decode(copy);\r\n      }\r\n      return this._decoder.decode(data);\r\n    }\r\n    return new Uint8Array(data);\r\n  }\r\n\r\n  existsSync(path: string): boolean {\r\n    return this._files.has(path) || this._dirs.has(path);\r\n  }\r\n\r\n  statSync(path: string): { isFile: () => boolean; isDirectory: () => boolean; size: number } {\r\n    if (this._dirs.has(path)) {\r\n      return {\r\n        isFile: () => false,\r\n        isDirectory: () => true,\r\n        size: 0,\r\n      };\r\n    }\r\n    const data = this._files.get(path);\r\n    if (data) {\r\n      return {\r\n        isFile: () => true,\r\n        isDirectory: () => false,\r\n        size: data.byteLength,\r\n      };\r\n    }\r\n    const err = new Error(`ENOENT: no such file or directory, stat '${path}'`) as Error & { code: string; errno: number };\r\n    err.code = \"ENOENT\";\r\n    err.errno = -2;\r\n    throw err;\r\n  }\r\n\r\n  readdirSync(path: string): string[] {\r\n    if (!this._dirs.has(path)) {\r\n      const err = new Error(`ENOENT: no such file or directory, scandir '${path}'`) as Error & { code: string; errno: number };\r\n      err.code = \"ENOENT\";\r\n      err.errno = -2;\r\n      throw err;\r\n    }\r\n\r\n    const prefix = path === \"/\" ? \"/\" : path + \"/\";\r\n    const entries = new Set<string>();\r\n\r\n    for (const filePath of this._files.keys()) {\r\n      if (filePath.startsWith(prefix)) {\r\n        const rest = filePath.slice(prefix.length);\r\n        const slashIdx = rest.indexOf(\"/\");\r\n        entries.add(slashIdx === -1 ? rest : rest.slice(0, slashIdx));\r\n      }\r\n    }\r\n\r\n    for (const dirPath of this._dirs) {\r\n      if (dirPath.startsWith(prefix) && dirPath !== path) {\r\n        const rest = dirPath.slice(prefix.length);\r\n        const slashIdx = rest.indexOf(\"/\");\r\n        entries.add(slashIdx === -1 ? rest : rest.slice(0, slashIdx));\r\n      }\r\n    }\r\n\r\n    return Array.from(entries).filter(Boolean).sort();\r\n  }\r\n\r\n  writeFileSync(path: string, content: string | Uint8Array): void {\r\n    const bytes = typeof content === \"string\" ? this._encoder.encode(content) : new Uint8Array(content);\r\n    this._files.set(path, bytes);\r\n    this._ensureParentDirs(path);\r\n    if (this._onWrite) this._onWrite(path, bytes, false);\r\n  }\r\n\r\n  mkdirSync(path: string, opts?: { recursive?: boolean }): void {\r\n    if (this._dirs.has(path)) return;\r\n    if (opts?.recursive) {\r\n      const parts = path.split(\"/\").filter(Boolean);\r\n      let current = \"\";\r\n      for (const part of parts) {\r\n        current += \"/\" + part;\r\n        if (!this._dirs.has(current)) {\r\n          this._dirs.add(current);\r\n          if (this._onWrite) this._onWrite(current, new Uint8Array(0), true);\r\n        }\r\n      }\r\n    } else {\r\n      this._dirs.add(path);\r\n      if (this._onWrite) this._onWrite(path, new Uint8Array(0), true);\r\n    }\r\n  }\r\n\r\n  unlinkSync(path: string): void {\r\n    if (!this._files.has(path)) {\r\n      const err = new Error(`ENOENT: no such file or directory, unlink '${path}'`) as Error & { code: string; errno: number };\r\n      err.code = \"ENOENT\";\r\n      err.errno = -2;\r\n      throw err;\r\n    }\r\n    this._files.delete(path);\r\n    if (this._onDelete) this._onDelete(path);\r\n  }\r\n\r\n  rmdirSync(path: string): void {\r\n    this._dirs.delete(path);\r\n    if (this._onDelete) this._onDelete(path);\r\n  }\r\n\r\n  renameSync(src: string, dest: string): void {\r\n    const data = this._files.get(src);\r\n    if (data) {\r\n      this._files.delete(src);\r\n      this._files.set(dest, data);\r\n      if (this._onDelete) this._onDelete(src);\r\n      if (this._onWrite) this._onWrite(dest, data, false);\r\n    } else if (this._dirs.has(src)) {\r\n      this._dirs.delete(src);\r\n      this._dirs.add(dest);\r\n      if (this._onDelete) this._onDelete(src);\r\n      if (this._onWrite) this._onWrite(dest, new Uint8Array(0), true);\r\n    }\r\n  }\r\n\r\n  appendFileSync(path: string, content: string | Uint8Array): void {\r\n    const existing = this._files.get(path) ?? new Uint8Array(0);\r\n    const bytes = typeof content === \"string\" ? this._encoder.encode(content) : new Uint8Array(content);\r\n    const merged = new Uint8Array(existing.byteLength + bytes.byteLength);\r\n    merged.set(existing, 0);\r\n    merged.set(bytes, existing.byteLength);\r\n    this._files.set(path, merged);\r\n    this._ensureParentDirs(path);\r\n    if (this._onWrite) this._onWrite(path, merged, false);\r\n  }\r\n\r\n  copyFileSync(src: string, dest: string): void {\r\n    const data = this._files.get(src);\r\n    if (!data) {\r\n      const err = new Error(`ENOENT: no such file or directory, copyfile '${src}'`) as Error & { code: string; errno: number };\r\n      err.code = \"ENOENT\";\r\n      err.errno = -2;\r\n      throw err;\r\n    }\r\n    const copy = new Uint8Array(data);\r\n    this._files.set(dest, copy);\r\n    this._ensureParentDirs(dest);\r\n    if (this._onWrite) this._onWrite(dest, copy, false);\r\n  }\r\n\r\n  applySync(path: string, content: ArrayBuffer | null, isDirectory: boolean): void {\r\n    if (content === null) {\r\n      this._files.delete(path);\r\n      this._dirs.delete(path);\r\n    } else if (isDirectory) {\r\n      this._dirs.add(path);\r\n    } else {\r\n      this._files.set(path, new Uint8Array(content));\r\n      this._ensureParentDirs(path);\r\n    }\r\n  }\r\n\r\n  private _ensureParentDirs(path: string): void {\r\n    const parts = path.split(\"/\").filter(Boolean);\r\n    let current = \"\";\r\n    for (let i = 0; i < parts.length - 1; i++) {\r\n      current += \"/\" + parts[i];\r\n      this._dirs.add(current);\r\n    }\r\n  }\r\n\r\n  get fileCount(): number {\r\n    return this._files.size;\r\n  }\r\n\r\n  get dirCount(): number {\r\n    return this._dirs.size;\r\n  }\r\n}\r\n","// nodepod - browser-native Node.js runtime environment\n\nexport { MemoryVolume } from \"./memory-volume\";\nexport type {\n  VolumeNode,\n  FileStat,\n  FileWatchHandle,\n  WatchCallback,\n  WatchEventKind,\n  SystemError,\n} from \"./memory-volume\";\nexport { ScriptEngine, executeCode } from \"./script-engine\";\nexport type { ModuleRecord, EngineOptions, ResolverFn } from \"./script-engine\";\nexport { spawnEngine, WorkerSandbox, IframeSandbox, spawnProcessWorkerEngine, ProcessWorkerAdapter } from \"./engine-factory\";\nexport type {\n  IScriptEngine,\n  ExecutionOutcome,\n  SpawnEngineConfig,\n  EngineConfig,\n  VolumeSnapshot,\n} from \"./engine-types\";\nexport {\n  generateSandboxDeployment,\n  getSandboxPageHtml,\n  getSandboxHostingConfig,\n  SANDBOX_DEPLOYMENT_GUIDE,\n} from \"./isolation-helpers\";\nexport { buildFileSystemBridge } from \"./polyfills/fs\";\nexport type { FsBridge } from \"./polyfills/fs\";\nexport { buildProcessEnv } from \"./polyfills/process\";\nexport type { ProcessObject, ProcessEnvVars } from \"./polyfills/process\";\nexport * as path from \"./polyfills/path\";\nexport * as http from \"./polyfills/http\";\nexport {\n  setFetchResponse,\n  installFetchHeadersSetCookieParity,\n  installNodeFetchClassParity,\n} from \"./polyfills/fetch-response\";\nexport * as net from \"./polyfills/net\";\nexport * as events from \"./polyfills/events\";\nexport * as stream from \"./polyfills/stream\";\nexport * as url from \"./polyfills/url\";\nexport * as querystring from \"./polyfills/querystring\";\nexport * as util from \"./polyfills/util\";\nexport * as npm from \"./packages/installer\";\nexport { DependencyInstaller, install } from \"./packages/installer\";\nexport { RequestProxy, getProxyInstance, resetProxy, NodepodSWSetupError } from \"./request-proxy\";\nexport type { ProxyOptions, ServiceWorkerConfig, NodepodSWFrameworkHint } from \"./request-proxy\";\nexport * as chokidar from \"./polyfills/chokidar\";\nexport * as ws from \"./polyfills/ws\";\nexport * as fsevents from \"./polyfills/fsevents\";\nexport * as readdirp from \"./polyfills/readdirp\";\nexport * as module from \"./polyfills/module\";\nexport * as perf_hooks from \"./polyfills/perf_hooks\";\nexport * as worker_threads from \"./polyfills/worker_threads\";\nexport * as esbuild from \"./polyfills/esbuild\";\nexport * as rollup from \"./polyfills/rollup\";\nexport * as assert from \"./polyfills/assert\";\n\nimport { MemoryVolume } from \"./memory-volume\";\nimport { ScriptEngine, EngineOptions } from \"./script-engine\";\nimport { DependencyInstaller } from \"./packages/installer\";\nimport { RequestProxy, getProxyInstance } from \"./request-proxy\";\n// lazy-load child_process to avoid pulling in the shell at module load time\nlet _shellMod: typeof import(\"./polyfills/child_process\") | null = null;\nasync function getShellMod() {\n  if (!_shellMod) _shellMod = await import(\"./polyfills/child_process\");\n  return _shellMod;\n}\n\nexport interface CommandResult {\n  stdout: string;\n  stderr: string;\n  exitCode: number;\n}\n\nexport interface CommandOptions {\n  cwd?: string;\n  onStdout?: (data: string) => void;\n  onStderr?: (data: string) => void;\n  signal?: AbortSignal;\n}\n\nexport interface WorkspaceConfig extends EngineOptions {\n  baseUrl?: string;\n  onServerReady?: (port: number, url: string) => void;\n}\n\n// create a fully-wired workspace (volume + engine + packages + proxy)\nexport function createWorkspace(config?: WorkspaceConfig): {\n  volume: MemoryVolume;\n  engine: ScriptEngine;\n  packages: DependencyInstaller;\n  proxy: RequestProxy;\n  execute: (code: string, filename?: string) => { exports: unknown };\n  runFile: (filename: string) => { exports: unknown };\n  run: (command: string, options?: CommandOptions) => Promise<CommandResult>;\n  sendInput: (data: string) => Promise<void>;\n  createREPL: () => { eval: (code: string) => unknown };\n  on: (event: string, listener: (...args: unknown[]) => void) => void;\n} {\n  const volume = new MemoryVolume();\n  const engine = new ScriptEngine(volume, config);\n  const packages = new DependencyInstaller(volume);\n  const proxy = getProxyInstance({\n    baseUrl: config?.baseUrl,\n    onServerReady: config?.onServerReady,\n  });\n\n  // init shell lazily (SDK path uses Nodepod.boot() instead)\n  getShellMod().then((mod) => mod.initShellExec(volume, { cwd: config?.cwd }));\n\n  return {\n    volume,\n    engine,\n    packages,\n    proxy,\n    execute: (code: string, filename?: string) =>\n      engine.execute(code, filename),\n    runFile: (filename: string) => engine.runFile(filename),\n    run: async (\n      command: string,\n      runOpts?: CommandOptions,\n    ): Promise<CommandResult> => {\n      if (runOpts?.signal?.aborted) {\n        return { stdout: \"\", stderr: \"\", exitCode: 130 };\n      }\n\n      const shell = await getShellMod();\n      const hasStreaming =\n        runOpts?.onStdout || runOpts?.onStderr || runOpts?.signal;\n      if (hasStreaming) {\n        shell.setStreamingCallbacks({\n          onStdout: runOpts?.onStdout,\n          onStderr: runOpts?.onStderr,\n          signal: runOpts?.signal,\n        });\n      }\n\n      return new Promise((resolve) => {\n        shell.exec(command, { cwd: runOpts?.cwd }, (error, stdout, stderr) => {\n          if (hasStreaming) shell.clearStreamingCallbacks();\n          resolve({\n            stdout: String(stdout),\n            stderr: String(stderr),\n            exitCode: error ? ((error as any).code ?? 1) : 0,\n          });\n        });\n      });\n    },\n    sendInput: async (data: string) => {\n      const shell = await getShellMod();\n      shell.sendStdin(data);\n    },\n    createREPL: () => engine.createREPL(),\n    on: (event: string, listener: (...args: unknown[]) => void) => {\n      proxy.on(event, listener);\n    },\n  };\n}\n\nexport default createWorkspace;\n\n/* ---- SDK (clean public API) ---- */\n\nexport { Nodepod } from \"./sdk/nodepod\";\nexport { NodepodTerminal } from \"./sdk/nodepod-terminal\";\nexport { NodepodProcess } from \"./sdk/nodepod-process\";\nexport { NodepodFS } from \"./sdk/nodepod-fs\";\nexport { NodepodFSClient, NodepodFSClientError } from \"./sdk/nodepod-fs-client\";\nexport type {\n  NodepodOptions,\n  TerminalOptions,\n  TerminalTheme,\n  StatResult,\n  Snapshot,\n  SpawnOptions,\n} from \"./sdk/types\";\nexport { MemoryHandler, LRUCache } from \"./memory-handler\";\nexport type { MemoryHandlerOptions } from \"./memory-handler\";\n\n/* ---- Threading / Worker Infrastructure ---- */\n\nexport { ProcessManager } from \"./threading/process-manager\";\nexport { ProcessHandle } from \"./threading/process-handle\";\nexport type { ProcessState } from \"./threading/process-handle\";\nexport { VFSBridge } from \"./threading/vfs-bridge\";\nexport { WorkerVFS } from \"./threading/worker-vfs\";\nexport { SyncChannelController, SyncChannelWorker } from \"./threading/sync-channel\";\nexport { SharedVFSController, SharedVFSReader, isSharedArrayBufferAvailable } from \"./threading/shared-vfs\";\nexport type { SharedVFSStat } from \"./threading/shared-vfs\";\nexport { createProcessContext, getActiveContext, setActiveContext } from \"./threading/process-context\";\nexport type { ProcessContext, ProcessWriter, ProcessReader, OpenFileEntry } from \"./threading/process-context\";\nexport type {\n  VFSBinarySnapshot,\n  VFSSnapshotEntry,\n  SpawnConfig,\n  ProcessInfo,\n  MainToWorkerMessage,\n  WorkerToMainMessage,\n} from \"./threading/worker-protocol\";\n"],"names":["DB_NAME","STORE_NAME","DB_VERSION","MAX_ENTRIES","MAX_AGE_MS","openDB","idbGet","idbPut","_singleton","EventEmitter","constants","atob","btoa","Readable","Writable","_destroy","close","destroy","toWeb","fromWeb","Duplex","_write","_final","write","end","cork","uncork","setDefaultEncoding","from","PassThrough","Transform","Stream","pipe","unpipe","promises","decoder","encoder","Dirent","isFile","Dir","URL_SCHEME_RE","resolvePath","normalize","resolve","parse","format","_nativeConsole","TcpSocket","connect","TcpServer","address","ref","unref","createServer","Hash","u64.split","u64.rotrSH","u64.shrSH","u64.rotrSL","u64.shrSL","u64.rotrBH","u64.rotrBL","u64.add4L","u64.add4H","u64.add5L","u64.add5H","u64.add","u64.add3L","u64.add3H","sha512","sha384","sha512n","sha384n","nobleSha384","nobleSha512","Hmac","update","digestAsync","digest","SignStream","sign","VerifyStream","verify","KeyObject","getCiphers","parseSetCookie","IncomingMessage","setTimeout","ServerResponse","Server","ClientRequest","setHeader","getHeader","removeHeader","flushHeaders","incoming","err","self","request","get","Agent","URL","encode","decode","isArray","isObject","types","parseArgs","TextEncoder","TextDecoder","ReadStream","WriteStream","version","lookup","i","require$$0","require$$1","require$$2","context","transform","require$$3","require$$4","require$$5","require$$6","constants$2","toString","defaultOptions","Deflate","deflate","deflateRaw","gzip","Inflate","inflate","inflateRaw","cdnImport","ZlibTransform","Gzip","Gunzip","_transform","_flush","DeflateRaw","InflateRaw","Unzip","BrotliCompressStream","BrotliDecompressStream","setVolume","MiniEmitter","PathWatcher","watch","TinyEmitter","WebSocket","WebSocketServer","pong","DirectoryScanner","isBuiltin","wrap","Module","performance","PerformanceObserver","TimingHistogram","MessagePort","MessageChannel","Worker","postMessage","BroadcastChannel","Parser","esmToCjs","acorn.parse","importerDir","this","acorn.Parser","Serializer","Deserializer","DefaultSerializer","DefaultDeserializer","name","ctrl","Interface","clearLine","TLSSocket","Http2Session","ClientHttp2Session","ServerHttp2Session","Http2Stream","Http2ServerRequest","Http2ServerResponse","disconnect","Socket","Script","runInThisContext","runInNewContext","runInContext","SourceTextModule","SyntheticModule","Session","AsyncResource","triggerAsyncId","AsyncLocalStorage","bind","Domain","DiagChannel","subscribe","unsubscribe","Console","log","error","warn","info","debug","trace","dir","time","timeEnd","timeLog","clear","count","countReset","group","groupCollapsed","groupEnd","table","Recoverable","REPLServer","TestContext","todo","skip","Tracing","joinPath","WASI","totalWritten","newFd","SQLite.SQLITE_MISUSE","SQLite.SQLITE_OK","SQLite.SQLITE_NOTICE","SQLite.SQLITE_RANGE","SQLite.SQLITE_BLOB","SQLite.SQLITE_FLOAT","SQLite.SQLITE_INTEGER","SQLite.SQLITE_NULL","SQLite.SQLITE_TEXT","SQLite.SQLITE_ROW","SQLite.SQLITE_OPEN_CREATE","SQLite.SQLITE_OPEN_READWRITE","SQLite.SQLITE_DONE","vol","row","syncAwait","waSqliteFactory","StatementSync","SQLite.SQLITE_UTF8","QuicEndpoint","QuicSession","QuicStream","AssertionError","StringDecoder","setInterval","clearTimeout","clearInterval","pathPolyfill.dirname","eventBusPolyfill","streamPolyfill","bufferPolyfill","assertPolyfill","moduleSysPolyfill.Module","consolePolyfill.Console","helpersPolyfill.types","pathPolyfill.win32","timersPromises","streamPromises","dnsPromises","readlinePromises","rollupPolyfill.parseAst","rollupPolyfill.parseAstAsync","_LRUCache","e","pathPolyfill.join","resolveImports","pathPolyfill.resolve","pathPolyfill.relative","resolveExports","compressionPolyfill.preloadBrotli","sqlitePolyfill.preloadSqlite","moduleSysPolyfill._load","moduleSysPolyfill.builtinModules","moduleSysPolyfill.isBuiltin","moduleSysPolyfill._extensions","moduleSysPolyfill._pathCache","moduleSysPolyfill._nodeModulePaths","moduleSysPolyfill._findPath","moduleSysPolyfill.syncBuiltinESMExports","moduleSysPolyfill.findSourceMap","moduleSysPolyfill.SourceMap","moduleSysPolyfill.wrap","moduleSysPolyfill.wrapper","wasiPolyfill.WASI","opts","watcherPolyfill.setVolume","scannerPolyfill.setVolume","sqlitePolyfill.setVolume","sqlitePolyfill.setSqliteCwd","esbuildPolyfill.setVolume","rollupPolyfill.setVFSBridge","threadPoolPolyfill.setWorkerConstructorOverride","asyncCtxPolyfill.installAsyncContext","asyncCtxPolyfill.AsyncLocalStorage","pid","placementKey","TaskPriority","path.normalize","path.join","path.dirname","path.basename","atIdx","payload","op","frame","isRaw","sendStdin","globToRegex","pathModule.normalize","pathModule.basename","pathModule.dirname","out","j","pathModule.extname","parseShell","shellBuiltins","MemoryVolume","ScriptEngine","DependencyInstaller","getProxyInstance"],"mappings":"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EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;AAChE;AACA,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD;AACA,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD;AACA;AACA,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD;AACA,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD;AACA,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD;AACA,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD;AACA,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACjD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE;AACA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE;AACA,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAChE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAChE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChE;AACA,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE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AAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC;;AAEnrC;AACA,IAAI,0BAA0B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,E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,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC;;AAErrC;AACA,IAAE,IAAI,0BAA0B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG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AAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACtf,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,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AAQ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAClf,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;AACtf,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AACnZ,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9a,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC;AAC7W,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC;AAC9W,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3e,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5e,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtd,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC;AAC5d,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAC;AACxY,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAC;AAChQ,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACrf,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAE;AACnc,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,4BAA2B,CAAC,CAAC,EAAC,CAAC,IAAI,EAAE;AACvQ,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACtf,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1I,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAM,IAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/f,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpf,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC;AAClO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrf,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;AAChf,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;AACpK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1Y,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACxc,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,EAAC,CAAC,GAAG;AACtS,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,EAAC,CAAC,GAAG;AAClO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,GAAG;AACzT,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,2CAA2C,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB;AACtf,QAAQ,CAAC,2CAA2C,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE;AACtf,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,EAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,GAAG;AAC1V,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI;AACrf,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC;AACxf,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM;AACzgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ;AACpf,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxf,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtf,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACngB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrgB,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAG;AACvL,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,GAAG,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG;AACtf,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpf,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC;AAC1f,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;AACvf,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAG;AAClI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACzf,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAClgB,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,OAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,OAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;AAC3f,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;AAC3f,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzf,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;AACxf,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAG,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;AACvf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;AACtf,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3f,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,OAAM,MAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,GAAG,CAAC,CAAC,OAAM,KAAE,CAAC,OAAM,MAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrf,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACpf,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrf,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpf,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3f,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,GAAG,OAAO,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AAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAChb,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtc,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,C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A;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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AAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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","x_google_ignoreList":[18,19,20,21,22,26,36,37,38,39,40,41,42,43,44,45,46,47,48,60,63,64,65,84,85,86,96,98]}