{"version":3,"file":"index-DD64yxUr.cjs","sources":["../src/helpers/byte-encoding.ts","../src/constants/config.ts","../src/memory-volume.ts","../src/helpers/digest.ts","../src/memory-handler.ts","../src/helpers/wasm-cache.ts","../src/threading/process-context.ts","../src/helpers/event-loop.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","../src/polyfills/crypto.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/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","../node_modules/acorn/dist/acorn.mjs","../src/syntax-transforms.ts","../src/polyfills/esbuild.ts","../node_modules/acorn-jsx/xhtml.js","../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","../src/polyfills/sqlite.ts","../src/polyfills/quic.ts","../src/polyfills/assert.ts","../src/polyfills/string_decoder.ts","../src/polyfills/timers.ts","../src/polyfills/punycode.ts","../src/polyfills/constants.ts","../node_modules/resolve.exports/dist/index.mjs","../src/script-engine.ts","../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/packages/archive-extractor.ts","../src/module-transformer.ts","../src/packages/installer.ts","../src/packages/prebundle/store.ts","../src/request-proxy.ts","../src/sdk/nodepod-fs.ts","../src/sdk/nodepod-process.ts","../src/sdk/nodepod-terminal.ts","../src/cross-origin.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  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  HTTP_DISPATCH_SAFETY: 120000,\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}\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\r\n  constructor(closeFn: () => void) {\r\n    this._closeFn = closeFn;\r\n  }\r\n\r\n  close(): void {\r\n    if (this._closeFn) { this._closeFn(); this._closeFn = null; }\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  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  // ---- Internal write ----\r\n\r\n  // expects pre-normalized path\r\n  private writeInternal(norm: string, data: string | Uint8Array, 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    const bytes = typeof data === 'string' ? this.textEncoder.encode(data) : 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      this.broadcast('change', norm, typeof data === 'string' ? data : this.textDecoder.decode(data));\r\n      this.notifyGlobalListeners(norm, existed ? 'change' : 'add');\r\n    }\r\n  }\r\n\r\n  // ---- Public synchronous API ----\r\n\r\n  existsSync(p: string): boolean {\r\n    return this.locate(this.normalize(p)) !== 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    const node = this.locate(norm);\r\n    if (!node) throw makeSystemError('ENOENT', 'stat', p);\r\n\r\n    const fileSize = node.kind === 'file' ? (node.content?.length || 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: 0,\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    const node = this.locateRaw(norm);\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: 0,\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    const node = this.locate(norm);\r\n    if (!node) throw makeSystemError('ENOENT', 'open', p);\r\n    if (node.kind !== 'file') throw makeSystemError('EISDIR', 'read', p);\r\n\r\n    const bytes = node.content || new Uint8Array(0);\r\n    if (encoding === 'utf8' || encoding === 'utf-8') {\r\n      return this.textDecoder.decode(bytes);\r\n    }\r\n    return bytes;\r\n  }\r\n\r\n  writeFileSync(p: string, data: string | Uint8Array): void {\r\n    const norm = this.normalize(p);\r\n    this.writeInternal(norm, data, true);\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      this.ensureDir(norm);\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\r\n  readdirSync(p: string): string[] {\r\n    const norm = this.normalize(p);\r\n    const node = this.locate(norm);\r\n    if (!node) throw makeSystemError('ENOENT', 'scandir', p);\r\n    if (node.kind !== 'directory') throw makeSystemError('ENOTDIR', 'scandir', p);\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\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    const node = fromParent.children!.get(fromName);\r\n    if (!node) throw makeSystemError('ENOENT', 'rename', from);\r\n\r\n    const toParent = this.ensureDir(this.parentOf(normTo));\r\n    const toName = this.nameOf(normTo);\r\n\r\n    fromParent.children!.delete(fromName);\r\n    toParent.children!.set(toName, node);\r\n\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\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    const node = this.locateRaw(norm);\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\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 existing = this.locate(this.normalize(existingPath));\r\n    if (!existing) throw makeSystemError('ENOENT', 'link', existingPath);\r\n    if (existing.kind !== 'file') throw makeSystemError('EISDIR', 'link', existingPath);\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\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): 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      existing = node.content || new Uint8Array(0);\r\n    }\r\n    const bytes = typeof data === 'string' ? this.textEncoder.encode(data) : 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    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\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","// 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\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// Keyed by byte length -- good enough since multiple same-size .wasm files are rare\r\nconst sizeCache = new Map<number, CacheEntry>();\r\n\r\nfunction actualByteLength(bytes: BufferSource): number {\r\n  if (bytes instanceof ArrayBuffer) return bytes.byteLength;\r\n  return (bytes as ArrayBufferView).byteLength;\r\n}\r\n\r\nfunction toUint8(bytes: Uint8Array | ArrayBuffer): Uint8Array {\r\n  if (bytes instanceof ArrayBuffer) return new Uint8Array(bytes);\r\n  if (\r\n    bytes.byteOffset !== 0 ||\r\n    bytes.byteLength !== (bytes.buffer as ArrayBuffer).byteLength\r\n  ) {\r\n    return new Uint8Array(\r\n      bytes.buffer as ArrayBuffer,\r\n      bytes.byteOffset,\r\n      bytes.byteLength,\r\n    );\r\n  }\r\n  return bytes;\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// 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\r\n  const len = bytes instanceof ArrayBuffer ? bytes.byteLength : bytes.byteLength;\r\n  if (len < PRECOMPILE_THRESHOLD) return;\r\n  if (sizeCache.has(len)) return;\r\n\r\n  const view = toUint8(bytes);\r\n  const entry: CacheEntry = {\r\n    promise: WebAssembly.compile(view as BufferSource),\r\n    module: null,\r\n  };\r\n  entry.promise.then(\r\n    (m) => { entry.module = m; },\r\n    () => {},\r\n  );\r\n  sizeCache.set(len, entry);\r\n}\r\n\r\nexport function getCachedModule(bytes: BufferSource): WebAssembly.Module | null {\r\n  const len = actualByteLength(bytes);\r\n  const entry = sizeCache.get(len);\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)\r\nlet _workerUrl: string | null = null;\r\n\r\nfunction getWorkerUrl(): string {\r\n  if (_workerUrl) return _workerUrl;\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({ ok: true, module: mod });\r\n      } catch (err) {\r\n        self.postMessage({ ok: false, error: err.message });\r\n      }\r\n    };\r\n  `;\r\n  _workerUrl = URL.createObjectURL(\r\n    new Blob([code], { type: \"application/javascript\" }),\r\n  );\r\n  return _workerUrl;\r\n}\r\n\r\nexport function compileWasmInWorker(\r\n  bytes: Uint8Array | ArrayBuffer,\r\n): Promise<WebAssembly.Module> {\r\n  return new Promise((resolve, reject) => {\r\n    try {\r\n      const worker = new Worker(getWorkerUrl());\r\n      worker.onmessage = (e: MessageEvent) => {\r\n        worker.terminate();\r\n        if (e.data.ok) {\r\n          const len = bytes instanceof ArrayBuffer ? bytes.byteLength : bytes.byteLength;\r\n          const entry = sizeCache.get(len);\r\n          if (entry) {\r\n            entry.module = e.data.module;\r\n          } else {\r\n            sizeCache.set(len, {\r\n              promise: Promise.resolve(e.data.module),\r\n              module: e.data.module,\r\n            });\r\n          }\r\n          resolve(e.data.module);\r\n        } else {\r\n          reject(new Error(e.data.error));\r\n        }\r\n      };\r\n      worker.onerror = (e) => {\r\n        worker.terminate();\r\n        reject(new Error(e.message || \"Worker compilation failed\"));\r\n      };\r\n      const ab = toArrayBuffer(bytes);\r\n      worker.postMessage({ bytes: ab }, [ab]);\r\n    } catch (e) {\r\n      // No workers -- fall back to async compile\r\n      const view = toUint8(bytes instanceof ArrayBuffer ? new Uint8Array(bytes) : bytes);\r\n      WebAssembly.compile(view as BufferSource).then(resolve, reject);\r\n    }\r\n  });\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","// 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\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  refCount: number;\r\n  drainListeners: Set<() => void>;\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    refCount: 0,\r\n    drainListeners: new Set(),\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 ref-counting, mirroring Node.js/libuv semantics.\r\n// Process stays alive while refCount > 0 (servers, readline, child procs).\r\n// Supports both global mode and per-ProcessContext mode.\r\n\r\nimport type { ProcessContext } from \"../threading/process-context\";\r\nimport { getActiveContext } from \"../threading/process-context\";\r\n\r\n/* ---- Global state (fallback when no ProcessContext) ---- */\r\n\r\nlet _refCount = 0;\r\nconst _drainListeners = new Set<() => void>();\r\n\r\nfunction effectiveDrainListeners(): Set<() => void> {\r\n  const ctx = getActiveContext();\r\n  return ctx?.drainListeners ?? _drainListeners;\r\n}\r\n\r\n/* ---- Public API ---- */\r\n\r\nexport function addDrainListener(cb: () => void): () => void {\r\n  const listeners = effectiveDrainListeners();\r\n  listeners.add(cb);\r\n  return () => listeners.delete(cb);\r\n}\r\n\r\nexport function notifyDrain(): void {\r\n  const ctx = getActiveContext();\r\n  if (ctx) {\r\n    for (const cb of ctx.drainListeners) cb();\r\n  }\r\n  // Always notify global too (ProcessManager observers)\r\n  for (const cb of _drainListeners) cb();\r\n}\r\n\r\nexport function ref(): void {\r\n  const ctx = getActiveContext();\r\n  if (ctx) {\r\n    ctx.refCount++;\r\n  } else {\r\n    _refCount++;\r\n  }\r\n}\r\n\r\nexport function unref(): void {\r\n  const ctx = getActiveContext();\r\n  if (ctx) {\r\n    if (ctx.refCount > 0) ctx.refCount--;\r\n  } else {\r\n    if (_refCount > 0) _refCount--;\r\n  }\r\n  notifyDrain();\r\n}\r\n\r\nexport function getRefCount(): number {\r\n  const ctx = getActiveContext();\r\n  return ctx ? ctx.refCount : _refCount;\r\n}\r\n\r\nexport function setRefCount(n: number): void {\r\n  const ctx = getActiveContext();\r\n  if (ctx) {\r\n    ctx.refCount = n;\r\n  } else {\r\n    _refCount = n;\r\n  }\r\n}\r\n\r\nexport function resetRefCount(): void {\r\n  const ctx = getActiveContext();\r\n  if (ctx) {\r\n    ctx.refCount = 0;\r\n  } else {\r\n    _refCount = 0;\r\n  }\r\n}\r\n\r\n/* ---- Context-specific API ---- */\r\n\r\nexport function refCtx(ctx: ProcessContext): void {\r\n  ctx.refCount++;\r\n}\r\n\r\nexport function unrefCtx(ctx: ProcessContext): void {\r\n  if (ctx.refCount > 0) ctx.refCount--;\r\n  for (const cb of ctx.drainListeners) cb();\r\n  for (const cb of _drainListeners) cb();\r\n}\r\n\r\nexport function getRefCountCtx(ctx: ProcessContext): number {\r\n  return ctx.refCount;\r\n}\r\n\r\nexport function addDrainListenerCtx(ctx: ProcessContext, cb: () => void): () => void {\r\n  ctx.drainListeners.add(cb);\r\n  return () => ctx.drainListeners.delete(cb);\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 { ref, unref } from \"../helpers/event-loop\";\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport type EventHandler = (...args: any[]) => void;\r\n\r\nconst 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 (path.includes('/node_modules/') || path.includes('/.cache/')) {\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 === '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  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  // if a handler returns a promise, hold a ref so the process doesn't bail early\r\n  const trackResult = (result: unknown) => {\r\n    if (result && typeof (result as any).then === \"function\") {\r\n      ref();\r\n      (result as Promise<unknown>).then(() => unref(), () => unref());\r\n    }\r\n  };\r\n\r\n  // Fast path: single listener — avoid slice() allocation\r\n  if (slot.length === 1) {\r\n    try {\r\n      const r = slot[0].apply(this, payload);\r\n      trackResult(r);\r\n    } catch (_) { /* swallow */ }\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      const r = handler.apply(this, payload);\r\n      trackResult(r);\r\n    } catch (fault) {\r\n      /* swallow handler errors */\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// 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  const asyncIter = {\r\n    async next() {\r\n      return new Promise<{ value: unknown[]; done: boolean }>((fulfill) => {\r\n        target.once(name, (...args) => fulfill({ value: args, done: false }));\r\n      });\r\n    },\r\n    [Symbol.asyncIterator]() {\r\n      return this;\r\n    },\r\n  };\r\n  return asyncIter as AsyncIterable<unknown[]>;\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(source: ArrayLike<number>): BufferPolyfill;\r\n  static from<T>(source: ArrayLike<T>, mapper: (v: T, i: number) => number, ctx?: unknown): BufferPolyfill;\r\n  static from(source: string, enc?: string): BufferPolyfill;\r\n  static from(source: ArrayBuffer | Uint8Array): BufferPolyfill;\r\n  static from(source: Iterable<number>): BufferPolyfill;\r\n  static from(\r\n    source: string | ArrayBuffer | Uint8Array | number[] | ArrayLike<number> | Iterable<number>,\r\n    encOrMapper?: string | ((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) {\r\n      return new BufferPolyfill(source);\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  static isBuffer(candidate: unknown): candidate is BufferPolyfill {\r\n    return candidate instanceof BufferPolyfill || candidate instanceof Uint8Array;\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'): string {\r\n    const lower = (enc || 'utf8').toLowerCase();\r\n\r\n    if (lower === 'base64') return bytesToBase64(this);\r\n\r\n    if (lower === 'base64url') {\r\n      return bytesToBase64(this).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\r\n    }\r\n\r\n    if (lower === 'hex') return bytesToHex(this);\r\n\r\n    if (lower === 'latin1' || lower === 'binary') return bytesToLatin1(this);\r\n\r\n    return textDec.decode(this);\r\n  }\r\n\r\n  slice(begin?: number, end?: number): BufferPolyfill {\r\n    return new BufferPolyfill(super.slice(begin, end));\r\n  }\r\n\r\n  subarray(begin?: number, end?: number): BufferPolyfill {\r\n    return new BufferPolyfill(super.subarray(begin, end));\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    const encoded = textEnc.encode(string);\r\n    const len = typeof lengthOrEncoding === \"number\" ? Math.min(lengthOrEncoding, encoded.length) : encoded.length;\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.\r\n// Uses function constructors (not classes) so Readable.call(this) works for pre-ES6 inheritance.\r\n\r\nimport { EventEmitter } from \"./events\";\r\nimport { Buffer } from \"./buffer\";\r\n\r\nfunction bufferByteLength(chunk: unknown): number {\r\n  if (chunk instanceof Uint8Array) return chunk.byteLength;\r\n  if (typeof chunk === \"string\") return Buffer.byteLength(chunk);\r\n  return 0;\r\n}\r\n\r\n// Readable\r\n\r\nexport interface Readable extends EventEmitter {\r\n  readable: boolean;\r\n  readableEnded: boolean;\r\n  readableFlowing: boolean | null;\r\n  destroyed: boolean;\r\n  closed: boolean;\r\n  errored: Error | null;\r\n  readableObjectMode: boolean;\r\n  readableHighWaterMark: number;\r\n  readableDidRead: boolean;\r\n  readableAborted: boolean;\r\n  _readableState: any;\r\n  _read(size: number): void;\r\n  _destroy(err: Error | null, cb: (err?: Error | null) => void): void;\r\n  readonly readableLength: number;\r\n  readonly readableEncoding: BufferEncoding | null;\r\n  _rawBind(evt: string | symbol, fn: (...args: unknown[]) => void): this;\r\n  on(evt: string | symbol, fn: (...args: any[]) => void): this;\r\n  addListener(evt: string | symbol, fn: (...args: any[]) => void): this;\r\n  once(evt: string | symbol, fn: (...args: any[]) => void): this;\r\n  push(chunk: any): boolean;\r\n  unshift(chunk: any): void;\r\n  read(amount?: number): any;\r\n  resume(): this;\r\n  pause(): this;\r\n  isPaused(): boolean;\r\n  pipe(target: any): any;\r\n  unpipe(target?: any): this;\r\n  setEncoding(enc: string): this;\r\n  close(cb?: (err?: Error | null) => void): void;\r\n  destroy(fault?: Error): this;\r\n  wrap(oldStream: EventEmitter): this;\r\n  [Symbol.asyncIterator](): AsyncIterableIterator<unknown>;\r\n}\r\n\r\ninterface ReadableConstructor {\r\n  new (opts?: any): Readable;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n  toWeb(readable: Readable): ReadableStream<Uint8Array>;\r\n  fromWeb(webStream: ReadableStream, opts?: any): Readable;\r\n  from(source: Iterable<unknown> | AsyncIterable<unknown>, opts?: any): Readable;\r\n}\r\n\r\nexport const Readable = function Readable(this: any, opts?: any) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n\r\n  this._queue = [];\r\n  this._terminated = false;\r\n  this._active = false;\r\n  this._endFired = false;\r\n  this._endEmitted = false;\r\n  this._objectMode = false;\r\n  this._reading = false;\r\n  this._highWaterMark = 16384;\r\n  this._autoDestroy = true;\r\n  this._encoding = null;\r\n  this._readableByteLength = 0;\r\n  this._draining = false;\r\n\r\n  this.readable = true;\r\n  this.readableEnded = false;\r\n  this.readableFlowing = null;\r\n  this.destroyed = false;\r\n  this.closed = false;\r\n  this.errored = null;\r\n  this.readableObjectMode = false;\r\n  this.readableHighWaterMark = 16384;\r\n  this.readableDidRead = false;\r\n  this.readableAborted = false;\r\n\r\n  // _readableState proxy so libs like readable-stream can inspect internals\r\n  const self = this;\r\n  this._readableState = {\r\n    get objectMode() { return self._objectMode; },\r\n    get highWaterMark() { return self._highWaterMark; },\r\n    get ended() { return self._terminated; },\r\n    get endEmitted() { return self._endEmitted; },\r\n    set endEmitted(v: boolean) { self._endEmitted = v; },\r\n    get flowing() { return self.readableFlowing; },\r\n    set flowing(v: boolean | null) { self.readableFlowing = v; },\r\n    get reading() { return self._reading; },\r\n    get length() { return self.readableLength; },\r\n    get destroyed() { return self.destroyed; },\r\n    get errored() { return self.errored; },\r\n    get closed() { return self.closed; },\r\n    pipes: [],\r\n    awaitDrainWriters: null,\r\n    multiAwaitDrain: false,\r\n    readableListening: false,\r\n    resumeScheduled: false,\r\n    paused: true,\r\n    emitClose: true,\r\n    get autoDestroy() { return self._autoDestroy; },\r\n    defaultEncoding: \"utf8\",\r\n    needReadable: false,\r\n    emittedReadable: false,\r\n    readingMore: false,\r\n    dataEmitted: false,\r\n  };\r\n\r\n  if (opts) {\r\n    if (opts.objectMode) {\r\n      this._objectMode = true;\r\n      this.readableObjectMode = true;\r\n      if (opts.highWaterMark === undefined) {\r\n        this._highWaterMark = 16;\r\n        this.readableHighWaterMark = 16;\r\n      }\r\n    }\r\n    if (opts.highWaterMark !== undefined) {\r\n      this._highWaterMark = opts.highWaterMark;\r\n      this.readableHighWaterMark = opts.highWaterMark;\r\n    }\r\n    if (opts.autoDestroy !== undefined) {\r\n      this._autoDestroy = opts.autoDestroy;\r\n    }\r\n    if (opts.read) {\r\n      this._read = opts.read.bind(this);\r\n    }\r\n    if (opts.destroy) {\r\n      this._destroy = opts.destroy.bind(this);\r\n    }\r\n  }\r\n} as unknown as ReadableConstructor;\r\n\r\nObject.setPrototypeOf(Readable.prototype, EventEmitter.prototype);\r\n\r\nReadable.prototype._read = function _read(_size: number): void {};\r\n\r\nReadable.prototype._destroy = function _destroy(\r\n  err: Error | null,\r\n  callback: (err?: Error | null) => void,\r\n): void {\r\n  callback(err);\r\n};\r\n\r\n// skips auto-flow logic so internal listeners don't trigger resume()\r\nReadable.prototype._rawBind = function _rawBind(\r\n  evt: string | symbol,\r\n  fn: (...args: unknown[]) => void,\r\n): any {\r\n  EventEmitter.prototype.addListener.call(this, evt as string, fn);\r\n  return this;\r\n};\r\n\r\nReadable.prototype.on = function on(\r\n  evt: string | symbol,\r\n  fn: (...args: unknown[]) => void,\r\n): any {\r\n  this._rawBind(evt, fn);\r\n  if (evt === \"data\" && !this._active) {\r\n    this.resume();\r\n  }\r\n  if (evt === \"readable\") {\r\n    this.readableFlowing = false;\r\n  }\r\n  // fire late 'end' listeners async (matches Node.js behavior)\r\n  if (evt === \"end\" && this._endEmitted) {\r\n    queueMicrotask(() => fn());\r\n  } else if (evt === \"end\" && this._terminated && this._queue.length === 0 && !this._endFired) {\r\n    this._endFired = true;\r\n    queueMicrotask(() => {\r\n      this._endEmitted = true;\r\n      this.emit(\"end\");\r\n      if (this._autoDestroy) {\r\n        this.destroy();\r\n      }\r\n    });\r\n  }\r\n  return this;\r\n};\r\n\r\nReadable.prototype.addListener = function addListener(\r\n  evt: string | symbol,\r\n  fn: (...args: unknown[]) => void,\r\n): any {\r\n  return this.on(evt, fn);\r\n};\r\n\r\nReadable.prototype.once = function once(\r\n  evt: string | symbol,\r\n  fn: (...args: unknown[]) => void,\r\n): any {\r\n  if (evt === \"end\" && this._endEmitted) {\r\n    queueMicrotask(() => fn());\r\n    return this;\r\n  }\r\n  if (evt === \"end\" && this._terminated && this._queue.length === 0 && !this._endFired) {\r\n    this._endFired = true;\r\n    EventEmitter.prototype.once.call(this, evt as string, fn);\r\n    queueMicrotask(() => {\r\n      this._endEmitted = true;\r\n      this.emit(\"end\");\r\n      if (this._autoDestroy) {\r\n        this.destroy();\r\n      }\r\n    });\r\n    return this;\r\n  }\r\n  if (evt === \"data\" && !this._active) {\r\n    EventEmitter.prototype.once.call(this, evt as string, fn);\r\n    this.resume();\r\n    return this;\r\n  }\r\n  return EventEmitter.prototype.once.call(this, evt as string, fn);\r\n};\r\n\r\nReadable.prototype.push = function push(chunk: any): boolean {\r\n  if (chunk === null) {\r\n    this._terminated = true;\r\n    this.readableEnded = true;\r\n    this.readable = false;\r\n    if (this._active && this._queue.length === 0 && !this._endFired) {\r\n      this._endFired = true;\r\n      queueMicrotask(() => {\r\n        this._endEmitted = true;\r\n        this.emit(\"end\");\r\n      });\r\n    }\r\n    return false;\r\n  }\r\n\r\n  if (this._objectMode) {\r\n    this._queue.push(chunk);\r\n  } else {\r\n    const bytes = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\r\n    this._readableByteLength += bufferByteLength(bytes);\r\n    this._queue.push(bytes);\r\n  }\r\n\r\n  if (this._active) {\r\n    this._drain();\r\n  }\r\n  return this._queue.length < this._highWaterMark;\r\n};\r\n\r\nReadable.prototype.unshift = function unshift(chunk: any): void {\r\n  if (chunk === null) return;\r\n  if (this._objectMode) {\r\n    this._queue.unshift(chunk);\r\n  } else {\r\n    const bytes = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\r\n    this._readableByteLength += bufferByteLength(bytes);\r\n    this._queue.unshift(bytes);\r\n  }\r\n};\r\n\r\nReadable.prototype._drain = function _drain(): void {\r\n  if (this._draining) return;\r\n  this._draining = true;\r\n  while (this._queue.length > 0 && this._active) {\r\n    const item = this._queue.shift();\r\n    if (!this._objectMode) {\r\n      this._readableByteLength -= bufferByteLength(item);\r\n    }\r\n    this.readableDidRead = true;\r\n    if (this._encoding && item instanceof Uint8Array) {\r\n      this.emit(\"data\", Buffer.from(item).toString(this._encoding));\r\n    } else {\r\n      this.emit(\"data\", item);\r\n    }\r\n  }\r\n  this._draining = false;\r\n  if (this._terminated && this._queue.length === 0 && !this._endFired) {\r\n    this._endFired = true;\r\n    queueMicrotask(() => {\r\n      this._endEmitted = true;\r\n      this.emit(\"end\");\r\n      if (this._autoDestroy) {\r\n        this.destroy();\r\n      }\r\n    });\r\n  }\r\n  if (!this._terminated && this._queue.length === 0 && this._active && !this._reading) {\r\n    this._reading = true;\r\n    queueMicrotask(() => {\r\n      this._reading = false;\r\n      if (!this._terminated && this._active) {\r\n        this._read(this._highWaterMark);\r\n      }\r\n    });\r\n  }\r\n};\r\n\r\nReadable.prototype.read = function read(amount?: number): any {\r\n  this.readableDidRead = true;\r\n  if (!this._reading && !this._terminated) {\r\n    this._reading = true;\r\n    this._read(amount ?? this._highWaterMark);\r\n    this._reading = false;\r\n  }\r\n\r\n  if (this._queue.length === 0) return null;\r\n\r\n  if (this._objectMode) {\r\n    const item = this._queue.shift();\r\n    return item;\r\n  }\r\n\r\n  if (amount === undefined || amount === 0) {\r\n    const combined = Buffer.concat(this._queue as Uint8Array[]);\r\n    this._readableByteLength = 0;\r\n    this._queue.length = 0;\r\n    return combined;\r\n  }\r\n\r\n  const pieces: Uint8Array[] = [];\r\n  let needed = amount;\r\n  while (needed > 0 && this._queue.length > 0) {\r\n    const front = this._queue[0] as Uint8Array;\r\n    if (front.length <= needed) {\r\n      pieces.push(this._queue.shift() as Uint8Array);\r\n      this._readableByteLength -= front.length;\r\n      needed -= front.length;\r\n    } else {\r\n      pieces.push(front.slice(0, needed));\r\n      this._queue[0] = front.slice(needed);\r\n      this._readableByteLength -= needed;\r\n      needed = 0;\r\n    }\r\n  }\r\n  return pieces.length > 0 ? Buffer.concat(pieces) : null;\r\n};\r\n\r\nReadable.prototype.resume = function resume(): any {\r\n  this._active = true;\r\n  this.readableFlowing = true;\r\n  this._drain();\r\n  if (!this._terminated && this._queue.length === 0 && !this._reading) {\r\n    this._reading = true;\r\n    queueMicrotask(() => {\r\n      this._reading = false;\r\n      if (!this._terminated && this._active) {\r\n        this._read(this._highWaterMark);\r\n      }\r\n    });\r\n  }\r\n  return this;\r\n};\r\n\r\nReadable.prototype.pause = function pause(): any {\r\n  this._active = false;\r\n  this.readableFlowing = false;\r\n  return this;\r\n};\r\n\r\nReadable.prototype.isPaused = function isPaused(): boolean {\r\n  return !this._active;\r\n};\r\n\r\nReadable.prototype.pipe = function pipe(target: any): any {\r\n  const self = this;\r\n  self.on(\"data\", function onData(chunk: unknown) {\r\n    const needDrain = !target.write(chunk);\r\n    if (needDrain) {\r\n      self.pause();\r\n      target.once(\"drain\", function onDrain() { self.resume(); });\r\n    }\r\n  });\r\n  self.on(\"end\", function onEnd() {\r\n    target.end();\r\n  });\r\n  self.resume();\r\n  return target;\r\n};\r\n\r\nReadable.prototype.unpipe = function unpipe(_target?: any): any {\r\n  this.removeAllListeners(\"data\");\r\n  this.removeAllListeners(\"end\");\r\n  return this;\r\n};\r\n\r\nReadable.prototype.setEncoding = function setEncoding(enc: string): any {\r\n  this._encoding = enc as BufferEncoding;\r\n  return this;\r\n};\r\n\r\nReadable.prototype.close = function close(cb?: (err?: Error | null) => void): void {\r\n  this.destroy();\r\n  if (cb) cb(null);\r\n};\r\n\r\nReadable.prototype.destroy = function destroy(fault?: Error): any {\r\n  if (this.destroyed) return this;\r\n  this.destroyed = true;\r\n  if (fault) this.errored = fault;\r\n\r\n  this._destroy(fault ?? null, (err: Error | null | undefined) => {\r\n    if (err && !fault) this.errored = err;\r\n    this._queue.length = 0;\r\n    this._readableByteLength = 0;\r\n    this._terminated = true;\r\n    this.readable = false;\r\n    if (err || fault) this.emit(\"error\", err || fault);\r\n    this.closed = true;\r\n    this.emit(\"close\");\r\n  });\r\n  return this;\r\n};\r\n\r\nReadable.prototype.wrap = function wrap(oldStream: any): any {\r\n  const self = this;\r\n  oldStream.on(\"data\", function onData(chunk: unknown) {\r\n    self.push(chunk);\r\n  });\r\n  oldStream.on(\"end\", function onEnd() {\r\n    self.push(null);\r\n  });\r\n  oldStream.on(\"error\", function onError(err: unknown) {\r\n    self.destroy(err as Error);\r\n  });\r\n  return this;\r\n};\r\n\r\nReadable.prototype[Symbol.asyncIterator] = function asyncIterator(): AsyncIterableIterator<unknown> {\r\n  const stream = this;\r\n  const buffer: unknown[] = [];\r\n  let done = false;\r\n  let error: Error | null = null;\r\n  let waiting: ((val: IteratorResult<unknown>) => void) | null = null;\r\n  let waitingReject: ((err: Error) => void) | null = null;\r\n\r\n  const onData = (chunk: unknown) => {\r\n    if (waiting) {\r\n      const resolve = waiting;\r\n      waiting = null;\r\n      waitingReject = null;\r\n      resolve({ value: chunk, done: false });\r\n    } else {\r\n      buffer.push(chunk);\r\n    }\r\n  };\r\n\r\n  const onEnd = () => {\r\n    done = true;\r\n    if (waiting) {\r\n      const resolve = waiting;\r\n      waiting = null;\r\n      waitingReject = null;\r\n      resolve({ value: undefined, done: true });\r\n    }\r\n    cleanup();\r\n  };\r\n\r\n  const onError = (...args: unknown[]) => {\r\n    error = args[0] as Error;\r\n    if (waitingReject) {\r\n      const reject = waitingReject;\r\n      waiting = null;\r\n      waitingReject = null;\r\n      reject(error);\r\n    }\r\n    cleanup();\r\n  };\r\n\r\n  const cleanup = () => {\r\n    stream.removeListener(\"data\", onData);\r\n    stream.removeListener(\"end\", onEnd);\r\n    stream.removeListener(\"error\", onError);\r\n  };\r\n\r\n  stream._rawBind(\"data\", onData);\r\n  stream._rawBind(\"end\", onEnd);\r\n  stream._rawBind(\"error\", onError);\r\n  if (!stream._active) stream.resume();\r\n\r\n  return {\r\n    next(): Promise<IteratorResult<unknown>> {\r\n      if (buffer.length > 0) {\r\n        return Promise.resolve({ value: buffer.shift(), done: false });\r\n      }\r\n      if (error) return Promise.reject(error);\r\n      if (done) return Promise.resolve({ value: undefined, done: true });\r\n\r\n      return new Promise<IteratorResult<unknown>>((resolve, reject) => {\r\n        waiting = resolve;\r\n        waitingReject = reject;\r\n      });\r\n    },\r\n    return(): Promise<IteratorResult<unknown>> {\r\n      cleanup();\r\n      stream.destroy();\r\n      return Promise.resolve({ value: undefined, done: true });\r\n    },\r\n    throw(err: Error): Promise<IteratorResult<unknown>> {\r\n      cleanup();\r\n      stream.destroy(err);\r\n      return Promise.reject(err);\r\n    },\r\n    [Symbol.asyncIterator]() {\r\n      return this;\r\n    },\r\n  };\r\n};\r\n\r\nObject.defineProperty(Readable.prototype, \"readableLength\", {\r\n  get: function (this: any) {\r\n    if (this._objectMode) return this._queue.length;\r\n    return this._readableByteLength;\r\n  },\r\n  configurable: true,\r\n});\r\n\r\nObject.defineProperty(Readable.prototype, \"readableEncoding\", {\r\n  get: function (this: any) {\r\n    return this._encoding;\r\n  },\r\n  configurable: true,\r\n});\r\n\r\nReadable.toWeb = function toWeb(readable: any): ReadableStream<Uint8Array> {\r\n  return new ReadableStream({\r\n    start(controller) {\r\n      readable.on(\"data\", (chunk: unknown) => {\r\n        const buf =\r\n          chunk instanceof Uint8Array ? chunk : Buffer.from(String(chunk));\r\n        controller.enqueue(buf);\r\n      });\r\n      readable.on(\"end\", () => {\r\n        controller.close();\r\n      });\r\n      readable.on(\"error\", (err: unknown) => {\r\n        controller.error(err);\r\n      });\r\n      readable.resume();\r\n    },\r\n    cancel() {\r\n      readable.destroy();\r\n    },\r\n  });\r\n};\r\n\r\nReadable.fromWeb = function fromWeb(\r\n  webStream: ReadableStream,\r\n  opts?: { objectMode?: boolean; highWaterMark?: number },\r\n): Readable {\r\n  const reader = webStream.getReader();\r\n  const stream = new Readable({\r\n    ...opts,\r\n    read() {\r\n      reader.read().then(\r\n        ({ value, done }: { value: any; done: boolean }) => {\r\n          if (done) {\r\n            stream.push(null);\r\n          } else {\r\n            stream.push(value);\r\n          }\r\n        },\r\n        (err: Error) => {\r\n          stream.destroy(err);\r\n        },\r\n      );\r\n    },\r\n  });\r\n  return stream;\r\n};\r\n\r\nReadable.from = function from(\r\n  source: Iterable<unknown> | AsyncIterable<unknown>,\r\n  _opts?: { objectMode?: boolean; highWaterMark?: number },\r\n): Readable {\r\n  const stream = new Readable(_opts);\r\n  (async () => {\r\n    try {\r\n      for await (const item of source as AsyncIterable<unknown>) {\r\n        if (item !== null && item !== undefined) {\r\n          const data = typeof item === \"string\" ? Buffer.from(item) : item;\r\n          stream.push(data as Buffer);\r\n        }\r\n      }\r\n      stream.push(null);\r\n    } catch (err) {\r\n      stream.destroy(err as Error);\r\n    }\r\n  })();\r\n  return stream;\r\n};\r\n\r\n// Writable\r\n\r\nexport interface Writable extends EventEmitter {\r\n  writable: boolean;\r\n  writableEnded: boolean;\r\n  writableFinished: boolean;\r\n  writableNeedDrain: boolean;\r\n  destroyed: boolean;\r\n  closed: boolean;\r\n  errored: Error | null;\r\n  writableObjectMode: boolean;\r\n  writableHighWaterMark: number;\r\n  writableCorked: number;\r\n  _writableState: any;\r\n  _write(chunk: any, encoding: string, callback: (err?: Error | null) => void): void;\r\n  _writev?(chunks: Array<{ chunk: any; encoding: string }>, callback: (err?: Error | null) => void): void;\r\n  _final(callback: (err?: Error | null) => void): void;\r\n  _destroy(err: Error | null, cb: (err?: Error | null) => void): void;\r\n  readonly writableLength: number;\r\n  write(chunk: any, encOrCb?: any, cb?: any): boolean;\r\n  end(chunkOrCb?: any, encOrCb?: any, cb?: any): this;\r\n  getBuffer(): Buffer;\r\n  getBufferAsString(enc?: BufferEncoding): string;\r\n  close(cb?: (err?: Error | null) => void): void;\r\n  destroy(fault?: Error): this;\r\n  cork(): void;\r\n  uncork(): void;\r\n  setDefaultEncoding(enc: string): this;\r\n}\r\n\r\ninterface WritableConstructor {\r\n  new (opts?: any): Writable;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n  toWeb(writable: Writable): WritableStream<Uint8Array>;\r\n  fromWeb(webStream: WritableStream, opts?: any): Writable;\r\n}\r\n\r\nexport const Writable = function Writable(this: any, opts?: any) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n\r\n  this._parts = [];\r\n  this._closed = false;\r\n  this._objectMode = false;\r\n  this._highWaterMark = 16384;\r\n  this._autoDestroy = true;\r\n  this._corked = 0;\r\n  this._corkedWrites = [];\r\n  this._writableByteLength = 0;\r\n\r\n  this.writable = true;\r\n  this.writableEnded = false;\r\n  this.writableFinished = false;\r\n  this.writableNeedDrain = false;\r\n  this.destroyed = false;\r\n  this.closed = false;\r\n  this.errored = null;\r\n  this.writableObjectMode = false;\r\n  this.writableHighWaterMark = 16384;\r\n  this.writableCorked = 0;\r\n\r\n  const self = this;\r\n  this._writableState = {\r\n    get objectMode() { return self._objectMode; },\r\n    get highWaterMark() { return self._highWaterMark; },\r\n    get finished() { return self.writableFinished; },\r\n    set finished(v: boolean) { self.writableFinished = v; },\r\n    get ended() { return self.writableEnded; },\r\n    set ended(v: boolean) { self.writableEnded = v; },\r\n    get destroyed() { return self.destroyed; },\r\n    get errored() { return self.errored; },\r\n    get closed() { return self.closed; },\r\n    get corked() { return self._corked; },\r\n    get length() { return self.writableLength; },\r\n    get needDrain() { return self.writableNeedDrain; },\r\n    writing: false,\r\n    errorEmitted: false,\r\n    emitClose: true,\r\n    get autoDestroy() { return self._autoDestroy; },\r\n    defaultEncoding: \"utf8\",\r\n    finalCalled: false,\r\n    ending: false,\r\n    bufferedIndex: 0,\r\n  };\r\n\r\n  if (opts) {\r\n    if (opts.objectMode) {\r\n      this._objectMode = true;\r\n      this.writableObjectMode = true;\r\n      if (opts.highWaterMark === undefined) {\r\n        this._highWaterMark = 16;\r\n        this.writableHighWaterMark = 16;\r\n      }\r\n    }\r\n    if (opts.highWaterMark !== undefined) {\r\n      this._highWaterMark = opts.highWaterMark;\r\n      this.writableHighWaterMark = opts.highWaterMark;\r\n    }\r\n    if (opts.autoDestroy !== undefined) {\r\n      this._autoDestroy = opts.autoDestroy;\r\n    }\r\n    if (opts.write) {\r\n      this._write = opts.write.bind(this);\r\n    }\r\n    if (opts.writev) {\r\n      this._writev = opts.writev.bind(this);\r\n    }\r\n    if (opts.final) {\r\n      this._final = opts.final.bind(this);\r\n    }\r\n    if (opts.destroy) {\r\n      this._destroy = opts.destroy.bind(this);\r\n    }\r\n  }\r\n} as unknown as WritableConstructor;\r\n\r\nObject.setPrototypeOf(Writable.prototype, EventEmitter.prototype);\r\n\r\nWritable.prototype._write = function _write(\r\n  _chunk: any,\r\n  _encoding: string,\r\n  callback: (err?: Error | null) => void,\r\n): void {\r\n  callback(null);\r\n};\r\n\r\nWritable.prototype._final = function _final(\r\n  callback: (err?: Error | null) => void,\r\n): void {\r\n  callback(null);\r\n};\r\n\r\nWritable.prototype._destroy = function _destroy(\r\n  err: Error | null,\r\n  callback: (err?: Error | null) => void,\r\n): void {\r\n  callback(err);\r\n};\r\n\r\nWritable.prototype.write = function write(\r\n  chunk: any,\r\n  encOrCb?: string | ((err?: Error | null) => void),\r\n  cb?: (err?: Error | null) => void,\r\n): boolean {\r\n  if (this._closed) {\r\n    const fault = new Error(\"write after end\");\r\n    if (typeof encOrCb === \"function\") {\r\n      encOrCb(fault);\r\n    } else if (cb) {\r\n      cb(fault);\r\n    }\r\n    return false;\r\n  }\r\n\r\n  const encoding = typeof encOrCb === \"string\" ? encOrCb : \"utf8\";\r\n  const callback = typeof encOrCb === \"function\" ? encOrCb : cb;\r\n\r\n  const bytes = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\r\n  this._parts.push(bytes);\r\n  this._writableByteLength += bufferByteLength(bytes);\r\n\r\n  if (this._corked > 0) {\r\n    this._corkedWrites.push({ chunk, encoding, callback });\r\n    return this._writableByteLength < this._highWaterMark;\r\n  }\r\n\r\n  this._write(chunk, encoding, (err: Error | null | undefined) => {\r\n    this._writableByteLength -= bufferByteLength(bytes);\r\n    if (callback) callback(err);\r\n    if (this.writableNeedDrain && this._writableByteLength < this._highWaterMark) {\r\n      this.writableNeedDrain = false;\r\n      this.emit(\"drain\");\r\n    }\r\n  });\r\n\r\n  const belowHWM = this._writableByteLength < this._highWaterMark;\r\n  if (!belowHWM) {\r\n    this.writableNeedDrain = true;\r\n  }\r\n  return belowHWM;\r\n};\r\n\r\nWritable.prototype.end = function end(\r\n  chunkOrCb?: any,\r\n  encOrCb?: any,\r\n  cb?: () => void,\r\n): any {\r\n  if (typeof chunkOrCb === \"function\") {\r\n    cb = chunkOrCb;\r\n  } else if (chunkOrCb !== undefined) {\r\n    this.write(chunkOrCb);\r\n  }\r\n  if (typeof encOrCb === \"function\") cb = encOrCb;\r\n\r\n  this._closed = true;\r\n  this.writable = false;\r\n  this.writableEnded = true;\r\n\r\n  const self = this;\r\n  const doFinish = () => {\r\n    self.writableFinished = true;\r\n    self.emit(\"finish\");\r\n    if (self._autoDestroy) {\r\n      self.closed = true;\r\n      self.emit(\"close\");\r\n    }\r\n    if (cb) cb();\r\n  };\r\n\r\n  queueMicrotask(() => {\r\n    self._final((err: Error | null | undefined) => {\r\n      if (err) {\r\n        self.errored = err;\r\n        self.emit(\"error\", err);\r\n        return;\r\n      }\r\n      doFinish();\r\n    });\r\n  });\r\n  return this;\r\n};\r\n\r\nWritable.prototype.getBuffer = function getBuffer(): Buffer {\r\n  return Buffer.concat(this._parts);\r\n};\r\n\r\nWritable.prototype.getBufferAsString = function getBufferAsString(enc?: BufferEncoding): string {\r\n  return this.getBuffer().toString(enc || \"utf8\");\r\n};\r\n\r\nWritable.prototype.close = function close(cb?: (err?: Error | null) => void): void {\r\n  this.destroy();\r\n  if (cb) cb(null);\r\n};\r\n\r\nWritable.prototype.destroy = function destroy(fault?: Error): any {\r\n  if (this.destroyed) return this;\r\n  this.destroyed = true;\r\n  if (fault) this.errored = fault;\r\n\r\n  this._destroy(fault ?? null, (err: Error | null | undefined) => {\r\n    if (err && !fault) this.errored = err;\r\n    this._parts.length = 0;\r\n    this._corkedWrites.length = 0;\r\n    this._writableByteLength = 0;\r\n    this._closed = true;\r\n    this.writable = false;\r\n    if (err || fault) this.emit(\"error\", err || fault);\r\n    this.closed = true;\r\n    this.emit(\"close\");\r\n  });\r\n  return this;\r\n};\r\n\r\nWritable.prototype.cork = function cork(): void {\r\n  this._corked++;\r\n  this.writableCorked = this._corked;\r\n};\r\n\r\nWritable.prototype.uncork = function uncork(): void {\r\n  if (this._corked > 0) {\r\n    this._corked--;\r\n    this.writableCorked = this._corked;\r\n  }\r\n  if (this._corked === 0 && this._corkedWrites.length > 0) {\r\n    const writes = this._corkedWrites.splice(0);\r\n    if (this._writev) {\r\n      this._writev(\r\n        writes.map((w: any) => ({ chunk: w.chunk, encoding: w.encoding })),\r\n        (err: Error | null | undefined) => {\r\n          for (const w of writes) {\r\n            if (w.callback) w.callback(err);\r\n          }\r\n        },\r\n      );\r\n    } else {\r\n      for (const w of writes) {\r\n        this._write(w.chunk, w.encoding, (err: Error | null | undefined) => {\r\n          if (w.callback) w.callback(err);\r\n        });\r\n      }\r\n    }\r\n  }\r\n};\r\n\r\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(_enc: string): any {\r\n  return this;\r\n};\r\n\r\nObject.defineProperty(Writable.prototype, \"writableLength\", {\r\n  get: function (this: any) {\r\n    if (this._objectMode) return this._parts.length;\r\n    return this._writableByteLength;\r\n  },\r\n  configurable: true,\r\n});\r\n\r\nWritable.toWeb = function toWeb(writable: any): WritableStream<Uint8Array> {\r\n  return new WritableStream({\r\n    write(chunk) {\r\n      return new Promise<void>((resolve, reject) => {\r\n        const ok = writable.write(chunk, (err?: Error | null) => {\r\n          if (err) reject(err);\r\n          else resolve();\r\n        });\r\n        if (ok) resolve();\r\n      });\r\n    },\r\n    close() {\r\n      return new Promise<void>((resolve) => {\r\n        writable.end(() => resolve());\r\n      });\r\n    },\r\n    abort(reason) {\r\n      writable.destroy(\r\n        reason instanceof Error ? reason : new Error(String(reason)),\r\n      );\r\n    },\r\n  });\r\n};\r\n\r\nWritable.fromWeb = function fromWeb(\r\n  webStream: WritableStream,\r\n  opts?: { objectMode?: boolean; highWaterMark?: number },\r\n): Writable {\r\n  const writer = webStream.getWriter();\r\n  return new Writable({\r\n    ...opts,\r\n    write(chunk: any, _encoding: string, callback: (err?: Error | null) => void) {\r\n      writer.write(chunk).then(\r\n        () => callback(null),\r\n        (err: Error) => callback(err),\r\n      );\r\n    },\r\n    final(callback: (err?: Error | null) => void) {\r\n      writer.close().then(\r\n        () => callback(null),\r\n        (err: Error) => callback(err),\r\n      );\r\n    },\r\n  });\r\n};\r\n\r\n// Duplex\r\n\r\nexport interface Duplex extends Readable {\r\n  writable: boolean;\r\n  writableEnded: boolean;\r\n  writableFinished: boolean;\r\n  writableNeedDrain: boolean;\r\n  writableObjectMode: boolean;\r\n  writableHighWaterMark: number;\r\n  writableCorked: number;\r\n  allowHalfOpen: boolean;\r\n  _writableState: any;\r\n  _write(chunk: any, encoding: string, callback: (err?: Error | null) => void): void;\r\n  _writev?(chunks: Array<{ chunk: any; encoding: string }>, callback: (err?: Error | null) => void): void;\r\n  _final(callback: (err?: Error | null) => void): void;\r\n  readonly writableLength: number;\r\n  write(chunk: any, encOrCb?: any, cb?: any): boolean;\r\n  end(chunkOrCb?: any, encOrCb?: any, cb?: any): this;\r\n  cork(): void;\r\n  uncork(): void;\r\n  setDefaultEncoding(enc: string): this;\r\n}\r\n\r\ninterface DuplexConstructor {\r\n  new (opts?: any): Duplex;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n  from(source: any, opts?: any): Duplex;\r\n  toWeb(duplex: any): any;\r\n  fromWeb(source: any, opts?: any): any;\r\n}\r\n\r\nexport const Duplex = function Duplex(this: any, opts?: any) {\r\n  if (!this) return;\r\n\r\n  Readable.call(this, {\r\n    objectMode: opts?.objectMode || opts?.readableObjectMode,\r\n    highWaterMark: opts?.readableHighWaterMark ?? opts?.highWaterMark,\r\n    autoDestroy: opts?.autoDestroy,\r\n    read: opts?.read,\r\n    destroy: opts?.destroy,\r\n  });\r\n\r\n  this._writeParts = [];\r\n  this._writeClosed = false;\r\n  this._writeObjectMode = false;\r\n  this._writeHighWaterMark = 16384;\r\n  this._writeAutoDestroy = true;\r\n  this._duplexCorked = 0;\r\n  this._duplexCorkedWrites = [];\r\n  this._writableByteLen = 0;\r\n\r\n  this.writable = true;\r\n  this.writableEnded = false;\r\n  this.writableFinished = false;\r\n  this.writableNeedDrain = false;\r\n  this.writableObjectMode = false;\r\n  this.writableHighWaterMark = 16384;\r\n  this.writableCorked = 0;\r\n  this.allowHalfOpen = true;\r\n\r\n  const self = this;\r\n  this._writableState = {\r\n    get objectMode() { return self._writeObjectMode; },\r\n    get highWaterMark() { return self._writeHighWaterMark; },\r\n    get finished() { return self.writableFinished; },\r\n    set finished(v: boolean) { self.writableFinished = v; },\r\n    get ended() { return self.writableEnded; },\r\n    set ended(v: boolean) { self.writableEnded = v; },\r\n    get destroyed() { return self.destroyed; },\r\n    get errored() { return self.errored; },\r\n    get closed() { return self.closed; },\r\n    get corked() { return self._duplexCorked; },\r\n    get length() { return self.writableLength; },\r\n    get needDrain() { return self.writableNeedDrain; },\r\n    writing: false,\r\n    errorEmitted: false,\r\n    emitClose: true,\r\n    get autoDestroy() { return self._writeAutoDestroy; },\r\n    defaultEncoding: \"utf8\",\r\n    finalCalled: false,\r\n    ending: false,\r\n    bufferedIndex: 0,\r\n  };\r\n\r\n  if (opts) {\r\n    if (opts.objectMode || opts.writableObjectMode) {\r\n      this._writeObjectMode = true;\r\n      this.writableObjectMode = true;\r\n      if ((opts.writableHighWaterMark ?? opts.highWaterMark) === undefined) {\r\n        this._writeHighWaterMark = 16;\r\n        this.writableHighWaterMark = 16;\r\n      }\r\n    }\r\n    if (opts.writableHighWaterMark !== undefined) {\r\n      this._writeHighWaterMark = opts.writableHighWaterMark;\r\n      this.writableHighWaterMark = opts.writableHighWaterMark;\r\n    } else if (opts.highWaterMark !== undefined) {\r\n      this._writeHighWaterMark = opts.highWaterMark;\r\n      this.writableHighWaterMark = opts.highWaterMark;\r\n    }\r\n    if (opts.autoDestroy !== undefined) {\r\n      this._writeAutoDestroy = opts.autoDestroy;\r\n    }\r\n    if (opts.allowHalfOpen !== undefined) {\r\n      this.allowHalfOpen = opts.allowHalfOpen;\r\n    }\r\n    if (opts.write) {\r\n      this._write = opts.write.bind(this);\r\n    }\r\n    if (opts.writev) {\r\n      this._writev = opts.writev.bind(this);\r\n    }\r\n    if (opts.final) {\r\n      this._final = opts.final.bind(this);\r\n    }\r\n  }\r\n} as unknown as DuplexConstructor;\r\n\r\nObject.setPrototypeOf(Duplex.prototype, Readable.prototype);\r\n\r\nDuplex.prototype._write = function _write(\r\n  _chunk: any,\r\n  _encoding: string,\r\n  callback: (err?: Error | null) => void,\r\n): void {\r\n  callback(null);\r\n};\r\n\r\nDuplex.prototype._final = function _final(\r\n  callback: (err?: Error | null) => void,\r\n): void {\r\n  callback(null);\r\n};\r\n\r\nDuplex.prototype.write = function write(\r\n  chunk: any,\r\n  encOrCb?: string | ((err?: Error | null) => void),\r\n  cb?: (err?: Error | null) => void,\r\n): boolean {\r\n  if (this._writeClosed) return false;\r\n  const encoding = typeof encOrCb === \"string\" ? encOrCb : \"utf8\";\r\n  const callback = typeof encOrCb === \"function\" ? encOrCb : cb;\r\n  const bytes = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\r\n  this._writeParts.push(bytes);\r\n  this._writableByteLen += bufferByteLength(bytes);\r\n\r\n  if (this._duplexCorked > 0) {\r\n    this._duplexCorkedWrites.push({ chunk, encoding, callback });\r\n    return this._writableByteLen < this._writeHighWaterMark;\r\n  }\r\n\r\n  this._write(chunk, encoding, (err: Error | null | undefined) => {\r\n    this._writableByteLen -= bufferByteLength(bytes);\r\n    if (callback) callback(err);\r\n    if (this.writableNeedDrain && this._writableByteLen < this._writeHighWaterMark) {\r\n      this.writableNeedDrain = false;\r\n      this.emit(\"drain\");\r\n    }\r\n  });\r\n\r\n  const belowHWM = this._writableByteLen < this._writeHighWaterMark;\r\n  if (!belowHWM) {\r\n    this.writableNeedDrain = true;\r\n  }\r\n  return belowHWM;\r\n};\r\n\r\nDuplex.prototype.end = function end(\r\n  chunkOrCb?: any,\r\n  encOrCb?: any,\r\n  cb?: () => void,\r\n): any {\r\n  if (typeof chunkOrCb === \"function\") {\r\n    cb = chunkOrCb;\r\n  } else if (chunkOrCb !== undefined) {\r\n    this.write(chunkOrCb);\r\n  }\r\n  if (typeof encOrCb === \"function\") cb = encOrCb;\r\n\r\n  this._writeClosed = true;\r\n  this.writable = false;\r\n  this.writableEnded = true;\r\n\r\n  const self = this;\r\n  const doFinish = () => {\r\n    self.writableFinished = true;\r\n    self.emit(\"finish\");\r\n    if (cb) cb();\r\n  };\r\n\r\n  queueMicrotask(() => {\r\n    self._final((err: Error | null | undefined) => {\r\n      if (err) {\r\n        self.errored = err;\r\n        self.emit(\"error\", err);\r\n        return;\r\n      }\r\n      doFinish();\r\n    });\r\n  });\r\n  return this;\r\n};\r\n\r\nDuplex.prototype.cork = function cork(): void {\r\n  this._duplexCorked++;\r\n  this.writableCorked = this._duplexCorked;\r\n};\r\n\r\nDuplex.prototype.uncork = function uncork(): void {\r\n  if (this._duplexCorked > 0) {\r\n    this._duplexCorked--;\r\n    this.writableCorked = this._duplexCorked;\r\n  }\r\n  if (this._duplexCorked === 0 && this._duplexCorkedWrites.length > 0) {\r\n    const writes = this._duplexCorkedWrites.splice(0);\r\n    if (this._writev) {\r\n      this._writev(\r\n        writes.map((w: any) => ({ chunk: w.chunk, encoding: w.encoding })),\r\n        (err: Error | null | undefined) => {\r\n          for (const w of writes) {\r\n            if (w.callback) w.callback(err);\r\n          }\r\n        },\r\n      );\r\n    } else {\r\n      for (const w of writes) {\r\n        this._write(w.chunk, w.encoding, (err: Error | null | undefined) => {\r\n          if (w.callback) w.callback(err);\r\n        });\r\n      }\r\n    }\r\n  }\r\n};\r\n\r\nDuplex.prototype.setDefaultEncoding = function setDefaultEncoding(_enc: string): any {\r\n  return this;\r\n};\r\n\r\nObject.defineProperty(Duplex.prototype, \"writableLength\", {\r\n  get: function (this: any) {\r\n    if (this._writeObjectMode) return this._writeParts.length;\r\n    return this._writableByteLen;\r\n  },\r\n  configurable: true,\r\n});\r\n\r\nDuplex.from = function from(\r\n  source: any,\r\n  _opts?: { objectMode?: boolean; highWaterMark?: number },\r\n): Duplex {\r\n  const duplex = new Duplex();\r\n  if (source instanceof ReadableStream) {\r\n    const reader = source.getReader();\r\n    (async () => {\r\n      try {\r\n        while (true) {\r\n          const { value, done } = await reader.read();\r\n          if (done) { duplex.push(null); break; }\r\n          duplex.push(value);\r\n        }\r\n      } catch (err) {\r\n        duplex.destroy(err as Error);\r\n      }\r\n    })();\r\n  } else {\r\n    (async () => {\r\n      try {\r\n        for await (const item of source as AsyncIterable<unknown>) {\r\n          if (item !== null && item !== undefined) {\r\n            const data = typeof item === \"string\" ? Buffer.from(item) : item;\r\n            duplex.push(data as Buffer);\r\n          }\r\n        }\r\n        duplex.push(null);\r\n      } catch (err) {\r\n        duplex.destroy(err as Error);\r\n      }\r\n    })();\r\n  }\r\n  return duplex;\r\n};\r\n\r\nDuplex.toWeb = function toWeb(duplex: any): any {\r\n  if (duplex instanceof Duplex) {\r\n    const readable = Readable.toWeb(duplex);\r\n    const writable = Writable.toWeb(duplex as any);\r\n    return { readable, writable };\r\n  }\r\n  return Readable.toWeb(duplex);\r\n};\r\n\r\nDuplex.fromWeb = function fromWeb(\r\n  source: any,\r\n  _opts?: Record<string, unknown>,\r\n): any {\r\n  if (source instanceof ReadableStream) {\r\n    return Readable.fromWeb(source, _opts as { objectMode?: boolean; highWaterMark?: number });\r\n  }\r\n  const pair = source;\r\n  const duplex = new Duplex();\r\n  const reader = pair.readable.getReader();\r\n  (async () => {\r\n    try {\r\n      while (true) {\r\n        const { value, done } = await reader.read();\r\n        if (done) { duplex.push(null); break; }\r\n        duplex.push(value);\r\n      }\r\n    } catch (err) {\r\n      duplex.destroy(err as Error);\r\n    }\r\n  })();\r\n  return duplex;\r\n};\r\n\r\n// PassThrough\r\n\r\nexport interface PassThrough extends Duplex {}\r\n\r\ninterface PassThroughConstructor {\r\n  new (opts?: any): PassThrough;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const PassThrough = function PassThrough(this: any, opts?: any) {\r\n  if (!this) return;\r\n  Duplex.call(this, opts);\r\n} as unknown as PassThroughConstructor;\r\n\r\nObject.setPrototypeOf(PassThrough.prototype, Duplex.prototype);\r\n\r\nPassThrough.prototype.write = function write(\r\n  chunk: any,\r\n  encOrCb?: string | ((err?: Error | null) => void),\r\n  cb?: (err?: Error | null) => void,\r\n): boolean {\r\n  const bytes = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\r\n  this.push(bytes);\r\n  const callback = typeof encOrCb === \"function\" ? encOrCb : cb;\r\n  if (callback) queueMicrotask(() => callback(null));\r\n  return true;\r\n};\r\n\r\n// Transform\r\n\r\nexport interface Transform extends Duplex {\r\n  _transform(chunk: any, encoding: string, done: (err?: Error | null, output?: any) => void): void;\r\n  _flush(done: (err?: Error | null, output?: any) => void): void;\r\n}\r\n\r\ninterface TransformConstructor {\r\n  new (opts?: any): Transform;\r\n  (this: any, opts?: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Transform = function Transform(this: any, opts?: any) {\r\n  if (!this) return;\r\n  Duplex.call(this, opts);\r\n  this._flushed = false;\r\n\r\n  if (opts) {\r\n    if (opts.transform) {\r\n      this._transform = opts.transform.bind(this);\r\n    }\r\n    if (opts.flush) {\r\n      this._flush = opts.flush.bind(this);\r\n    }\r\n  }\r\n} as unknown as TransformConstructor;\r\n\r\nObject.setPrototypeOf(Transform.prototype, Duplex.prototype);\r\n\r\nTransform.prototype._transform = function _transform(\r\n  chunk: any,\r\n  _encoding: string,\r\n  done: (err?: Error | null, output?: any) => void,\r\n): void {\r\n  done(null, chunk);\r\n};\r\n\r\nTransform.prototype._flush = function _flush(\r\n  done: (err?: Error | null, output?: any) => void,\r\n): void {\r\n  done(null);\r\n};\r\n\r\n// flush remaining transform data before terminating the readable side\r\nTransform.prototype._final = function _final(\r\n  callback: (err?: Error | null) => void,\r\n): void {\r\n  const self = this;\r\n  const finish = () => {\r\n    callback(null);\r\n    self.push(null);\r\n  };\r\n  if (self._flushed) {\r\n    finish();\r\n    return;\r\n  }\r\n  self._flushed = true;\r\n  self._flush((err: Error | null | undefined, output: any) => {\r\n    if (err) {\r\n      callback(err);\r\n      return;\r\n    }\r\n    if (output) self.push(output);\r\n    finish();\r\n  });\r\n};\r\n\r\nTransform.prototype.write = function write(\r\n  chunk: any,\r\n  encOrCb?: string | ((err?: Error | null) => void),\r\n  cb?: (err?: Error | null) => void,\r\n): boolean {\r\n  const bytes = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\r\n  const encoding = typeof encOrCb === \"string\" ? encOrCb : \"utf8\";\r\n  const callback = typeof encOrCb === \"function\" ? encOrCb : cb;\r\n\r\n  this._transform(bytes, encoding, (err: Error | null | undefined, output: any) => {\r\n    if (err) {\r\n      if (callback) callback(err);\r\n      return;\r\n    }\r\n    if (output) this.push(output);\r\n    if (callback) callback(null);\r\n  });\r\n  return true;\r\n};\r\n\r\nTransform.prototype.end = function end(\r\n  chunkOrCb?: any,\r\n  encOrCb?: any,\r\n  cb?: () => void,\r\n): any {\r\n  // flush eagerly so data reaches the pipe destination before _final's microtask\r\n  if (!this._flushed) {\r\n    this._flushed = true;\r\n    this._flush((_err: Error | null | undefined, output: any) => {\r\n      if (output) this.push(output);\r\n    });\r\n  }\r\n  return Duplex.prototype.end.call(this, chunkOrCb, encOrCb, cb);\r\n};\r\n\r\n// Stream (base class)\r\n\r\nexport interface Stream extends EventEmitter {\r\n  pipe(dest: any): any;\r\n}\r\n\r\ninterface StreamConstructor {\r\n  new (): Stream;\r\n  (this: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Stream = function Stream(this: any) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n} as unknown as StreamConstructor;\r\n\r\nObject.setPrototypeOf(Stream.prototype, EventEmitter.prototype);\r\n\r\nStream.prototype.pipe = function pipe(dest: any): any {\r\n  const src = this;\r\n  const onData = (chunk: any) => {\r\n    if (dest.write) dest.write(chunk);\r\n  };\r\n  src.on(\"data\", onData);\r\n  const onEnd = () => {\r\n    if (dest.end) dest.end();\r\n  };\r\n  src.on(\"end\", onEnd);\r\n  // store for unpipe\r\n  if (!src._pipeDests) src._pipeDests = [];\r\n  src._pipeDests.push({ dest, onData, onEnd });\r\n  return dest;\r\n};\r\n\r\nStream.prototype.unpipe = function unpipe(dest?: any): any {\r\n  const dests: Array<{ dest: any; onData: Function; onEnd: Function }> =\r\n    this._pipeDests || [];\r\n  if (dest) {\r\n    const idx = dests.findIndex((d: any) => d.dest === dest);\r\n    if (idx !== -1) {\r\n      this.removeListener(\"data\", dests[idx].onData as any);\r\n      this.removeListener(\"end\", dests[idx].onEnd as any);\r\n      dests.splice(idx, 1);\r\n    }\r\n  } else {\r\n    for (const d of dests) {\r\n      this.removeListener(\"data\", d.onData as any);\r\n      this.removeListener(\"end\", d.onEnd as any);\r\n    }\r\n    this._pipeDests = [];\r\n  }\r\n  return this;\r\n};\r\n\r\nexport function addAbortSignal(\r\n  signal: AbortSignal,\r\n  stream: any,\r\n): any {\r\n  if (signal.aborted) {\r\n    stream.destroy(new Error(\"The operation was aborted\"));\r\n  } else {\r\n    const onAbort = () => {\r\n      stream.destroy(new Error(\"The operation was aborted\"));\r\n    };\r\n    signal.addEventListener(\"abort\", onAbort, { once: true });\r\n    const origDestroy = stream.destroy.bind(stream);\r\n    stream.destroy = (err?: Error) => {\r\n      signal.removeEventListener(\"abort\", onAbort);\r\n      return origDestroy(err);\r\n    };\r\n  }\r\n  return stream;\r\n}\r\n\r\n// require('stream') compatibility -- attach all types as static properties\r\nconst StreamAny = Stream as unknown as Record<string, unknown>;\r\nStreamAny.Readable = Readable;\r\nStreamAny.Writable = Writable;\r\nStreamAny.Duplex = Duplex;\r\nStreamAny.Transform = Transform;\r\nStreamAny.PassThrough = PassThrough;\r\nStreamAny.Stream = Stream;\r\nStreamAny.from = Readable.from;\r\nStreamAny.addAbortSignal = addAbortSignal;\r\n\r\nexport function pipeline(...args: unknown[]): unknown {\r\n  const cb =\r\n    typeof args[args.length - 1] === \"function\"\r\n      ? (args.pop() as (err?: Error | null) => void)\r\n      : null;\r\n\r\n  const streams = args as any[];\r\n  if (streams.length < 2) {\r\n    if (cb)\r\n      setTimeout(\r\n        () => cb(new Error(\"pipeline requires at least 2 streams\")),\r\n        0,\r\n      );\r\n    return streams[0];\r\n  }\r\n\r\n  // web ReadableStreams (like fetch response.body) don't have .pipe(), wrap them\r\n  for (let i = 0; i < streams.length; i++) {\r\n    const s = streams[i];\r\n    if (\r\n      s &&\r\n      typeof s.getReader === \"function\" &&\r\n      typeof s.pipe !== \"function\" &&\r\n      typeof s.on !== \"function\"\r\n    ) {\r\n      streams[i] = Readable.fromWeb(s);\r\n    }\r\n  }\r\n\r\n  let errorOccurred = false;\r\n  const onError = (...errArgs: unknown[]) => {\r\n    const err = errArgs[0] as Error;\r\n    if (errorOccurred) return;\r\n    errorOccurred = true;\r\n    for (const s of streams) {\r\n      if (typeof s.destroy === \"function\") {\r\n        s.destroy();\r\n      }\r\n    }\r\n    if (cb) cb(err);\r\n  };\r\n\r\n  for (let i = 0; i < streams.length - 1; i++) {\r\n    const src = streams[i];\r\n    const dest = streams[i + 1];\r\n    if (typeof src.pipe === \"function\") {\r\n      src.pipe(dest);\r\n    }\r\n    src.on(\"error\", onError);\r\n  }\r\n\r\n  const last = streams[streams.length - 1];\r\n  last.on(\"error\", onError);\r\n\r\n  if (cb && !errorOccurred) {\r\n    const onFinish = () => {\r\n      if (!errorOccurred) cb(null);\r\n    };\r\n    if (last instanceof Readable) {\r\n      last.on(\"end\", onFinish);\r\n    } else {\r\n      last.on(\"finish\", onFinish);\r\n    }\r\n  }\r\n\r\n  return last;\r\n}\r\n\r\nexport function finished(\r\n  stream: unknown,\r\n  optsOrCb?: { error?: boolean } | ((err?: Error) => void),\r\n  cb?: (err?: Error) => void,\r\n): () => void {\r\n  const done = typeof optsOrCb === \"function\" ? optsOrCb : cb;\r\n  const s = stream as any;\r\n  let called = false;\r\n\r\n  const onDone = (err?: Error) => {\r\n    if (called) return;\r\n    called = true;\r\n    if (done) done(err);\r\n  };\r\n\r\n  const cleanup = () => {\r\n    s.removeListener(\"end\", onEnd);\r\n    s.removeListener(\"finish\", onFinish);\r\n    s.removeListener(\"error\", onErr);\r\n    s.removeListener(\"close\", onClose);\r\n  };\r\n\r\n  const onEnd = () => { cleanup(); onDone(); };\r\n  const onFinish = () => { cleanup(); onDone(); };\r\n  const onErr = (err: Error) => { cleanup(); onDone(err); };\r\n  const onClose = () => { cleanup(); onDone(); };\r\n\r\n  s.on(\"end\", onEnd);\r\n  s.on(\"finish\", onFinish);\r\n  s.on(\"error\", onErr);\r\n  s.on(\"close\", onClose);\r\n\r\n  if (s.readableEnded || s.writableFinished) {\r\n    queueMicrotask(() => onDone());\r\n  }\r\n\r\n  return cleanup;\r\n}\r\n\r\nlet _defaultHighWaterMark = 16384;\r\nlet _defaultObjectHighWaterMark = 16;\r\n\r\nexport function getDefaultHighWaterMark(objectMode?: boolean): number {\r\n  return objectMode ? _defaultObjectHighWaterMark : _defaultHighWaterMark;\r\n}\r\n\r\nexport function setDefaultHighWaterMark(objectMode: boolean, value: number): void {\r\n  if (objectMode) {\r\n    _defaultObjectHighWaterMark = value;\r\n  } else {\r\n    _defaultHighWaterMark = value;\r\n  }\r\n}\r\n\r\nexport const promises = {\r\n  pipeline: async (...streams: unknown[]): Promise<void> => {\r\n    return new Promise<void>((resolve, reject) => {\r\n      pipeline(...streams, (err?: Error | null) => {\r\n        if (err) reject(err);\r\n        else resolve();\r\n      });\r\n    });\r\n  },\r\n  finished: async (\r\n    stream: unknown,\r\n    opts?: { error?: boolean },\r\n  ): Promise<void> => {\r\n    return new Promise<void>((resolve, reject) => {\r\n      finished(stream, opts, (err) => {\r\n        if (err) reject(err);\r\n        else resolve();\r\n      });\r\n    });\r\n  },\r\n};\r\n\r\nStreamAny.pipeline = pipeline;\r\nStreamAny.finished = finished;\r\nStreamAny.promises = promises;\r\nStreamAny.getDefaultHighWaterMark = getDefaultHighWaterMark;\r\nStreamAny.setDefaultHighWaterMark = setDefaultHighWaterMark;\r\n\r\nexport function compose(..._streams: unknown[]): Duplex {\r\n  return new PassThrough() as unknown as Duplex;\r\n}\r\n\r\nexport function isReadable(stream: unknown): boolean {\r\n  if (!stream || typeof stream !== \"object\") return false;\r\n  const s = stream as any;\r\n  if (typeof s.read !== \"function\") return false;\r\n  if (s.destroyed) return false;\r\n  if (s.readableEnded || s._terminated) return false;\r\n  return true;\r\n}\r\n\r\nexport function isWritable(stream: unknown): boolean {\r\n  if (!stream || typeof stream !== \"object\") return false;\r\n  const s = stream as any;\r\n  if (typeof s.write !== \"function\") return false;\r\n  if (s.destroyed) return false;\r\n  if (s.writableEnded || s.writableFinished) return false;\r\n  return true;\r\n}\r\n\r\nexport function isDisturbed(stream: unknown): boolean {\r\n  if (!stream || typeof stream !== \"object\") return false;\r\n  const s = stream as any;\r\n  return !!s.readableDidRead || !!s._reading;\r\n}\r\n\r\nexport function isErrored(stream: unknown): boolean {\r\n  if (!stream || typeof stream !== \"object\") return false;\r\n  const s = stream as any;\r\n  return s.errored != null;\r\n}\r\n\r\nStreamAny.compose = compose;\r\nStreamAny.isReadable = isReadable;\r\nStreamAny.isWritable = isWritable;\r\nStreamAny.isDisturbed = isDisturbed;\r\nStreamAny.isErrored = isErrored;\r\n\r\n(Readable as any).isDisturbed = isDisturbed;\r\n(Readable as any).isReadable = isReadable;\r\n\r\nexport default Stream;\r\n","// fs polyfill -- buildFileSystemBridge(volume, getCwd) wraps MemoryVolume into a Node.js-compatible fs API\r\n\r\nimport type {\r\n  MemoryVolume,\r\n  FileStat,\r\n  FileWatchHandle,\r\n  WatchCallback,\r\n  WatchEventKind,\r\n} from \"../memory-volume\";\r\nimport { makeSystemError } from \"../memory-volume\";\r\nimport { bytesToBase64, bytesToHex } from \"../helpers/byte-encoding\";\r\nimport { precompileWasm } from \"../helpers/wasm-cache\";\r\nimport { Readable, Writable } from \"./stream\";\r\nimport { Buffer } from \"./buffer\";\r\nimport type { FsReadStreamInstance, FsWriteStreamInstance, FsReadableState, FsWritableState } from \"../types/fs-streams\";\r\n\r\nexport type { FileStat, FileWatchHandle, WatchCallback, WatchEventKind };\r\n\r\nconst decoder = new TextDecoder();\r\nconst encoder = new TextEncoder();\r\n\r\nexport type PathArg = string | URL;\r\n\r\nexport interface Dirent {\r\n  name: string;\r\n  parentPath: string;\r\n  path: string;\r\n  _dir: boolean;\r\n  _file: boolean;\r\n  isDirectory(): boolean;\r\n  isFile(): boolean;\r\n  isBlockDevice(): boolean;\r\n  isCharacterDevice(): boolean;\r\n  isFIFO(): boolean;\r\n  isSocket(): boolean;\r\n  isSymbolicLink(): boolean;\r\n}\r\n\r\ninterface DirentConstructor {\r\n  new (entryName: string, isDir: boolean, isFile: boolean, parentPath?: string): Dirent;\r\n  (this: any, entryName: string, isDir: boolean, isFile: boolean, parentPath?: string): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Dirent = function Dirent(this: any, entryName: string, isDir: boolean, isFile: boolean, parentPath?: string) {\r\n  if (!this) return;\r\n  this.name = entryName;\r\n  this._dir = isDir;\r\n  this._file = isFile;\r\n  this.parentPath = parentPath ?? \"\";\r\n  this.path = this.parentPath;\r\n} as unknown as DirentConstructor;\r\n\r\nDirent.prototype.isDirectory = function isDirectory(this: any): boolean {\r\n  return this._dir;\r\n};\r\nDirent.prototype.isFile = function isFile(this: any): boolean {\r\n  return this._file;\r\n};\r\nDirent.prototype.isBlockDevice = function isBlockDevice(): boolean {\r\n  return false;\r\n};\r\nDirent.prototype.isCharacterDevice = function isCharacterDevice(): boolean {\r\n  return false;\r\n};\r\nDirent.prototype.isFIFO = function isFIFO(): boolean {\r\n  return false;\r\n};\r\nDirent.prototype.isSocket = function isSocket(): boolean {\r\n  return false;\r\n};\r\nDirent.prototype.isSymbolicLink = function isSymbolicLink(): boolean {\r\n  return false;\r\n};\r\n\r\nexport interface Dir {\r\n  readonly path: string;\r\n  _entries: Dirent[];\r\n  _pos: number;\r\n  _closed: boolean;\r\n  readSync(): Dirent | null;\r\n  read(): Promise<Dirent | null>;\r\n  read(cb: (err: Error | null, dirent: Dirent | null) => void): void;\r\n  closeSync(): void;\r\n  close(): Promise<void>;\r\n  close(cb: (err: Error | null) => void): void;\r\n  [Symbol.asyncIterator](): AsyncIterableIterator<Dirent>;\r\n}\r\n\r\ninterface DirConstructor {\r\n  new (dirPath: string, entries: Dirent[]): Dir;\r\n  (this: any, dirPath: string, entries: Dirent[]): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Dir = function Dir(this: any, dirPath: string, entries: Dirent[]) {\r\n  if (!this) return;\r\n  this.path = dirPath;\r\n  this._entries = entries;\r\n  this._pos = 0;\r\n  this._closed = false;\r\n} as unknown as DirConstructor;\r\n\r\nDir.prototype.readSync = function readSync(this: any): Dirent | null {\r\n  if (this._closed) throw new Error(\"ERR_DIR_CLOSED: Directory handle was closed\");\r\n  if (this._pos >= this._entries.length) return null;\r\n  return this._entries[this._pos++];\r\n};\r\n\r\nDir.prototype.read = function read(this: any, cb?: (err: Error | null, dirent: Dirent | null) => void): Promise<Dirent | null> | void {\r\n  if (cb) {\r\n    try {\r\n      const entry = this.readSync();\r\n      queueMicrotask(() => cb(null, entry));\r\n    } catch (e) {\r\n      queueMicrotask(() => cb(e as Error, null));\r\n    }\r\n    return;\r\n  }\r\n  const self = this;\r\n  return new Promise((resolve, reject) => {\r\n    try {\r\n      resolve(self.readSync());\r\n    } catch (e) {\r\n      reject(e);\r\n    }\r\n  });\r\n};\r\n\r\nDir.prototype.closeSync = function closeSync(this: any): void {\r\n  this._closed = true;\r\n};\r\n\r\nDir.prototype.close = function close(this: any, cb?: (err: Error | null) => void): Promise<void> | void {\r\n  this._closed = true;\r\n  if (cb) {\r\n    queueMicrotask(() => cb(null));\r\n    return;\r\n  }\r\n  return Promise.resolve();\r\n};\r\n\r\nDir.prototype[Symbol.asyncIterator] = function(this: any): AsyncIterableIterator<Dirent> {\r\n  const self = this;\r\n  return {\r\n    async next(): Promise<IteratorResult<Dirent>> {\r\n      const entry = self.readSync();\r\n      if (entry === null) return { done: true, value: undefined as any };\r\n      return { done: false, value: entry };\r\n    },\r\n    [Symbol.asyncIterator]() { return this; },\r\n  };\r\n};\r\n\r\nexport class StatFs {\r\n  type: number;\r\n  bsize: number;\r\n  blocks: number;\r\n  bfree: number;\r\n  bavail: number;\r\n  files: number;\r\n  ffree: number;\r\n  constructor() {\r\n    this.type = 0x61756673; // \"aufs\" magic number\r\n    this.bsize = 4096;\r\n    this.blocks = 262144;     // ~1GB virtual\r\n    this.bfree = 131072;      // ~512MB free\r\n    this.bavail = 131072;\r\n    this.files = 65536;\r\n    this.ffree = 32768;\r\n  }\r\n}\r\n\r\nexport class StatWatcher {\r\n  private _listeners: Map<string, ((...args: unknown[]) => void)[]> = new Map();\r\n  private _interval: ReturnType<typeof setInterval> | null = null;\r\n\r\n  start(_filename: string, _persistent?: boolean, _interval?: number): void {\r\n  }\r\n  stop(): void {\r\n    if (this._interval) {\r\n      clearInterval(this._interval);\r\n      this._interval = null;\r\n    }\r\n    this._emit(\"stop\");\r\n  }\r\n  ref(): this { return this; }\r\n  unref(): this { return this; }\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  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  removeListener(event: string, listener: (...args: unknown[]) => void): this {\r\n    const arr = this._listeners.get(event);\r\n    if (arr) {\r\n      const idx = arr.indexOf(listener);\r\n      if (idx !== -1) arr.splice(idx, 1);\r\n    }\r\n    return this;\r\n  }\r\n  off(event: string, listener: (...args: unknown[]) => void): this {\r\n    return this.removeListener(event, listener);\r\n  }\r\n  addListener(event: string, listener: (...args: unknown[]) => void): this {\r\n    return this.on(event, listener);\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    return this._emit(event, ...args);\r\n  }\r\n  private _emit(event: string, ...args: unknown[]): boolean {\r\n    const arr = this._listeners.get(event);\r\n    if (!arr || arr.length === 0) return false;\r\n    for (const fn of arr.slice()) fn(...args);\r\n    return true;\r\n  }\r\n}\r\n\r\ninterface FsConstantsShape {\r\n  F_OK: number;\r\n  R_OK: number;\r\n  W_OK: number;\r\n  X_OK: number;\r\n  O_RDONLY: number;\r\n  O_WRONLY: number;\r\n  O_RDWR: number;\r\n  O_CREAT: number;\r\n  O_EXCL: number;\r\n  O_TRUNC: number;\r\n  O_APPEND: number;\r\n  O_DIRECTORY: number;\r\n  O_NOFOLLOW: number;\r\n  O_SYNC: number;\r\n  O_DSYNC: number;\r\n  O_NONBLOCK: number;\r\n  O_NOCTTY: number;\r\n  S_IFMT: number;\r\n  S_IFREG: number;\r\n  S_IFDIR: number;\r\n  S_IFLNK: number;\r\n  S_IFCHR: number;\r\n  S_IFBLK: number;\r\n  S_IFIFO: number;\r\n  S_IFSOCK: number;\r\n  S_IRWXU: number;\r\n  S_IRUSR: number;\r\n  S_IWUSR: number;\r\n  S_IXUSR: number;\r\n  S_IRWXG: number;\r\n  S_IRGRP: number;\r\n  S_IWGRP: number;\r\n  S_IXGRP: number;\r\n  S_IRWXO: number;\r\n  S_IROTH: number;\r\n  S_IWOTH: number;\r\n  S_IXOTH: number;\r\n  COPYFILE_EXCL: number;\r\n  COPYFILE_FICLONE: number;\r\n  COPYFILE_FICLONE_FORCE: number;\r\n  UV_FS_SYMLINK_DIR: number;\r\n  UV_FS_SYMLINK_JUNCTION: number;\r\n}\r\n\r\ninterface FsPromisesShape {\r\n  readFile(target: PathArg): Promise<Buffer>;\r\n  readFile(target: PathArg, enc: \"utf8\" | \"utf-8\"): Promise<string>;\r\n  readFile(\r\n    target: PathArg,\r\n    opts: { encoding: \"utf8\" | \"utf-8\" },\r\n  ): Promise<string>;\r\n  writeFile(target: PathArg, data: string | Uint8Array): Promise<void>;\r\n  appendFile(target: PathArg, data: string | Uint8Array): Promise<void>;\r\n  stat(target: PathArg): Promise<FileStat>;\r\n  lstat(target: PathArg): Promise<FileStat>;\r\n  readdir(target: PathArg): Promise<string[]>;\r\n  mkdir(target: PathArg, opts?: { recursive?: boolean }): Promise<void>;\r\n  unlink(target: PathArg): Promise<void>;\r\n  rmdir(target: PathArg): Promise<void>;\r\n  rm(\r\n    target: PathArg,\r\n    opts?: { recursive?: boolean; force?: boolean },\r\n  ): Promise<void>;\r\n  rename(src: PathArg, dest: PathArg): Promise<void>;\r\n  access(target: PathArg, mode?: number): Promise<void>;\r\n  realpath(target: PathArg): Promise<string>;\r\n  copyFile(src: PathArg, dest: PathArg): Promise<void>;\r\n  symlink(target: PathArg, path: PathArg, type?: string): Promise<void>;\r\n  readlink(target: PathArg): Promise<string>;\r\n  link(existingPath: PathArg, newPath: PathArg): Promise<void>;\r\n  chmod(target: PathArg, mode: number): Promise<void>;\r\n  chown(target: PathArg, uid: number, gid: number): Promise<void>;\r\n  lchown(target: PathArg, uid: number, gid: number): Promise<void>;\r\n  truncate(target: PathArg, len?: number): Promise<void>;\r\n  utimes(target: PathArg, atime: unknown, mtime: unknown): Promise<void>;\r\n  lutimes(target: PathArg, atime: unknown, mtime: unknown): Promise<void>;\r\n  glob(pattern: string | string[], opts?: { cwd?: string; exclude?: string[] | ((p: string) => boolean) }): AsyncIterable<string>;\r\n}\r\n\r\n\r\nexport interface FsBridge {\r\n  readFileSync(target: PathArg): Buffer;\r\n  readFileSync(target: PathArg, enc: \"utf8\" | \"utf-8\"): string;\r\n  readFileSync(target: PathArg, opts: { encoding: \"utf8\" | \"utf-8\" }): string;\r\n  readFileSync(target: PathArg, opts: { encoding?: null }): Buffer;\r\n  writeFileSync(target: PathArg, data: string | Uint8Array): void;\r\n  appendFileSync(target: PathArg, data: string | Uint8Array): void;\r\n  existsSync(target: PathArg): boolean;\r\n  mkdirSync(target: PathArg, opts?: { recursive?: boolean }): void;\r\n  readdirSync(target: PathArg): string[];\r\n  readdirSync(target: PathArg, opts: { withFileTypes: true }): Dirent[];\r\n  readdirSync(\r\n    target: PathArg,\r\n    opts?: { withFileTypes?: boolean; encoding?: string } | string,\r\n  ): string[] | Dirent[];\r\n  statSync(target: PathArg): FileStat;\r\n  lstatSync(target: PathArg): FileStat;\r\n  fstatSync(fd: number): FileStat;\r\n  unlinkSync(target: PathArg): void;\r\n  rmdirSync(target: PathArg): void;\r\n  renameSync(src: PathArg, dest: PathArg): void;\r\n  realpathSync: ((target: PathArg) => string) & {\r\n    native: (target: PathArg) => string;\r\n  };\r\n  accessSync(target: PathArg, mode?: number): void;\r\n  copyFileSync(src: PathArg, dest: PathArg): void;\r\n  symlinkSync(target: PathArg, path: PathArg, type?: string): void;\r\n  readlinkSync(target: PathArg): string;\r\n  linkSync(existingPath: PathArg, newPath: PathArg): void;\r\n  chmodSync(target: PathArg, mode: number): void;\r\n  chownSync(target: PathArg, uid: number, gid: number): void;\r\n  truncateSync(target: PathArg, len?: number): void;\r\n  openSync(target: string, flags: string | number, mode?: number): number;\r\n  closeSync(fd: number): void;\r\n  readSync(\r\n    fd: number,\r\n    buf: Buffer | Uint8Array,\r\n    off: number,\r\n    len: number,\r\n    pos: number | null,\r\n  ): number;\r\n  writeSync(\r\n    fd: number,\r\n    buf: Buffer | Uint8Array | string,\r\n    off?: number,\r\n    len?: number,\r\n    pos?: number | null,\r\n  ): number;\r\n  ftruncateSync(fd: number, len?: number): void;\r\n  fsyncSync(fd: number): void;\r\n  fdatasyncSync(fd: number): void;\r\n  mkdtempSync(prefix: string): string;\r\n  rmSync(target: string, opts?: { recursive?: boolean; force?: boolean }): void;\r\n  opendirSync(target: unknown): Dir;\r\n  watch(\r\n    filename: string,\r\n    opts?: { persistent?: boolean; recursive?: boolean },\r\n    listener?: WatchCallback,\r\n  ): FileWatchHandle;\r\n  watch(filename: string, listener?: WatchCallback): FileWatchHandle;\r\n  readFile(\r\n    target: string,\r\n    cb: (err: Error | null, data?: Uint8Array) => void,\r\n  ): void;\r\n  readFile(\r\n    target: string,\r\n    opts: { encoding: string },\r\n    cb: (err: Error | null, data?: string) => void,\r\n  ): void;\r\n  writeFile(\r\n    target: string,\r\n    data: string | Uint8Array,\r\n    cb: (err: Error | null) => void,\r\n  ): void;\r\n  appendFile(\r\n    target: string,\r\n    data: string | Uint8Array,\r\n    cb: (err: Error | null) => void,\r\n  ): void;\r\n  stat(target: string, cb: (err: Error | null, stats?: FileStat) => void): void;\r\n  lstat(\r\n    target: string,\r\n    cb: (err: Error | null, stats?: FileStat) => void,\r\n  ): void;\r\n  readdir(\r\n    target: string,\r\n    cb: (err: Error | null, entries?: string[]) => void,\r\n  ): void;\r\n  mkdir(\r\n    target: string,\r\n    opts: { recursive?: boolean },\r\n    cb: (err: Error | null) => void,\r\n  ): void;\r\n  unlink(target: string, cb: (err: Error | null) => void): void;\r\n  rmdir(target: string, cb: (err: Error | null) => void): void;\r\n  rename(oldPath: string, newPath: string, cb: (err: Error | null) => void): void;\r\n  realpath(\r\n    target: string,\r\n    cb: (err: Error | null, resolved?: string) => void,\r\n  ): void;\r\n  access(target: string, cb: (err: Error | null) => void): void;\r\n  access(target: string, mode: number, cb: (err: Error | null) => void): void;\r\n  symlink(target: string, path: string, cb: (err: Error | null) => void): void;\r\n  symlink(\r\n    target: string,\r\n    path: string,\r\n    type: string,\r\n    cb: (err: Error | null) => void,\r\n  ): void;\r\n  readlink(\r\n    target: string,\r\n    cb: (err: Error | null, linkTarget?: string) => void,\r\n  ): void;\r\n  link(\r\n    existingPath: string,\r\n    newPath: string,\r\n    cb: (err: Error | null) => void,\r\n  ): void;\r\n  chmod(target: string, mode: number, cb: (err: Error | null) => void): void;\r\n  chown(\r\n    target: string,\r\n    uid: number,\r\n    gid: number,\r\n    cb: (err: Error | null) => void,\r\n  ): void;\r\n  createReadStream(\r\n    target: string,\r\n    opts?: { encoding?: string; start?: number; end?: number },\r\n  ): import(\"./stream\").Readable;\r\n  createWriteStream(\r\n    target: string,\r\n    opts?: { encoding?: string; flags?: string },\r\n  ): import(\"./stream\").Writable;\r\n  cpSync(src: unknown, dest: unknown, opts?: { recursive?: boolean; force?: boolean; errorOnExist?: boolean }): void;\r\n  cp(src: unknown, dest: unknown, optsOrCb?: unknown, cb?: (err: Error | null) => void): void;\r\n  readvSync(fd: number, buffers: ArrayBufferView[], pos?: number | null): number;\r\n  readv(fd: number, buffers: ArrayBufferView[], posOrCb?: unknown, cb?: unknown): void;\r\n  globSync(pattern: string | string[], opts?: { cwd?: string; exclude?: string[] | ((p: string) => boolean) }): string[];\r\n  glob(pattern: string | string[], optsOrCb?: unknown, cb?: unknown): void;\r\n  statfsSync(target: unknown, opts?: unknown): StatFs;\r\n  statfs(target: unknown, optsOrCb?: unknown, cb?: unknown): void;\r\n  openAsBlob(target: unknown, opts?: { type?: string }): Promise<Blob>;\r\n  exists(target: unknown, cb: (exists: boolean) => void): void;\r\n  lchmodSync(target: unknown, mode: number): void;\r\n  lchmod(target: unknown, mode: number, cb: (err: Error | null) => void): void;\r\n  fdatasync(fd: number, cb: (err: Error | null) => void): void;\r\n  fsync(fd: number, cb: (err: Error | null) => void): void;\r\n  ftruncate(fd: number, lenOrCb?: unknown, cb?: unknown): void;\r\n  truncate(target: unknown, lenOrCb?: unknown, cb?: unknown): void;\r\n  mkdtemp(prefix: string, optsOrCb?: unknown, cb?: unknown): void;\r\n  StatFs: typeof StatFs;\r\n  StatWatcher: typeof StatWatcher;\r\n  promises: FsPromisesShape;\r\n  constants: FsConstantsShape;\r\n}\r\n\r\nfunction resolvePath(target: unknown, cwdFn?: () => string): string {\r\n  let p: string;\r\n\r\n  if (typeof target === \"string\") {\r\n    p = target;\r\n  } else if (\r\n    target instanceof URL ||\r\n    // cross-realm URL objects fail instanceof, so duck-type check\r\n    (target && typeof target === \"object\" &&\r\n      typeof (target as any).protocol === \"string\" &&\r\n      typeof (target as any).pathname === \"string\")\r\n  ) {\r\n    const url = target as { protocol: string; pathname: string };\r\n    if (url.protocol !== \"file:\") {\r\n      throw new Error(`Unsupported protocol: ${url.protocol}`);\r\n    }\r\n    p = decodeURIComponent(url.pathname);\r\n  } else if (target && typeof target === \"object\" && \"toString\" in target) {\r\n    p = String(target);\r\n  } else {\r\n    throw new TypeError(`Path must be a string or URL. Got: ${typeof target}`);\r\n  }\r\n\r\n  if (!p.startsWith(\"/\") && cwdFn) {\r\n    const cwd = cwdFn();\r\n    p = cwd.endsWith(\"/\") ? cwd + p : cwd + \"/\" + p;\r\n  }\r\n\r\n  return p;\r\n}\r\n\r\n// plain Uint8Array.toString() returns comma-separated bytes, not UTF-8 text --\r\n// must wrap with Buffer.from() so .toString() works like Node's Buffer\r\nfunction wrapAsBuffer(raw: Uint8Array): Buffer {\r\n  if (typeof (raw as any).readUInt8 === \"function\") return raw as Buffer;\r\n  return Buffer.from(raw) as Buffer;\r\n}\r\n\r\ninterface OpenFile {\r\n  filePath: string;\r\n  cursor: number;\r\n  mode: string;\r\n  data: Uint8Array;\r\n}\r\n\r\nexport function buildFileSystemBridge(\r\n  volume: MemoryVolume,\r\n  getCwd?: () => string,\r\n): FsBridge {\r\n  // each bridge gets its own FD namespace (per-process isolation)\r\n  const openFiles = new Map<number, OpenFile>();\r\n  let fdCounter = 3;\r\n  const abs = (target: unknown) => resolvePath(target, getCwd);\r\n\r\n  const fsConst: FsConstantsShape = {\r\n    F_OK: 0,\r\n    R_OK: 4,\r\n    W_OK: 2,\r\n    X_OK: 1,\r\n    O_RDONLY: 0,\r\n    O_WRONLY: 1,\r\n    O_RDWR: 2,\r\n    O_CREAT: 64,\r\n    O_EXCL: 128,\r\n    O_TRUNC: 512,\r\n    O_APPEND: 1024,\r\n    O_DIRECTORY: 65536,\r\n    O_NOFOLLOW: 131072,\r\n    O_SYNC: 1052672,\r\n    O_DSYNC: 4096,\r\n    O_NONBLOCK: 2048,\r\n    O_NOCTTY: 256,\r\n    S_IFMT: 61440,\r\n    S_IFREG: 32768,\r\n    S_IFDIR: 16384,\r\n    S_IFLNK: 40960,\r\n    S_IFCHR: 8192,\r\n    S_IFBLK: 24576,\r\n    S_IFIFO: 4096,\r\n    S_IFSOCK: 49152,\r\n    S_IRWXU: 448,   // 0o700\r\n    S_IRUSR: 256,   // 0o400\r\n    S_IWUSR: 128,   // 0o200\r\n    S_IXUSR: 64,    // 0o100\r\n    S_IRWXG: 56,    // 0o070\r\n    S_IRGRP: 32,    // 0o040\r\n    S_IWGRP: 16,    // 0o020\r\n    S_IXGRP: 8,     // 0o010\r\n    S_IRWXO: 7,     // 0o007\r\n    S_IROTH: 4,     // 0o004\r\n    S_IWOTH: 2,     // 0o002\r\n    S_IXOTH: 1,     // 0o001\r\n    COPYFILE_EXCL: 1,\r\n    COPYFILE_FICLONE: 2,\r\n    COPYFILE_FICLONE_FORCE: 4,\r\n    UV_FS_SYMLINK_DIR: 1,\r\n    UV_FS_SYMLINK_JUNCTION: 2,\r\n  };\r\n\r\n  // Helper to build Dirent array from directory entries\r\n  function toDirents(dirPath: string, names: string[]): Dirent[] {\r\n    return names.map((name) => {\r\n      const full = dirPath.endsWith(\"/\")\r\n        ? dirPath + name\r\n        : dirPath + \"/\" + name;\r\n      let isDir = false;\r\n      let isFile = false;\r\n      try {\r\n        const st = volume.statSync(full);\r\n        isDir = st.isDirectory();\r\n        isFile = st.isFile();\r\n      } catch {\r\n        isFile = true;\r\n      }\r\n      return new Dirent(name, isDir, isFile, dirPath);\r\n    });\r\n  }\r\n  class FileHandle {\r\n    fd: number;\r\n    constructor(fd: number) {\r\n      this.fd = fd;\r\n    }\r\n\r\n    appendFile(data: string | Uint8Array): Promise<void> {\r\n      const entry = openFiles.get(this.fd);\r\n      if (!entry) return Promise.reject(makeBadfError(\"appendFile\"));\r\n      const bytes = typeof data === \"string\" ? encoder.encode(data) : data;\r\n      const newData = new Uint8Array(entry.data.length + bytes.length);\r\n      newData.set(entry.data);\r\n      newData.set(bytes, entry.data.length);\r\n      entry.data = newData;\r\n      entry.cursor = newData.length;\r\n      return Promise.resolve();\r\n    }\r\n\r\n    chmod(_mode: number): Promise<void> {\r\n      return Promise.resolve();\r\n    }\r\n\r\n    chown(_uid: number, _gid: number): Promise<void> {\r\n      return Promise.resolve();\r\n    }\r\n\r\n    close(): Promise<void> {\r\n      try {\r\n        const entry = openFiles.get(this.fd);\r\n        if (entry) {\r\n          if (entry.mode.includes(\"w\") || entry.mode.includes(\"a\") || entry.mode.includes(\"+\")) {\r\n            volume.writeFileSync(entry.filePath, entry.data);\r\n          }\r\n          openFiles.delete(this.fd);\r\n        }\r\n        return Promise.resolve();\r\n      } catch (e) {\r\n        return Promise.reject(e);\r\n      }\r\n    }\r\n\r\n    createReadStream(opts?: { encoding?: string; start?: number; end?: number }): Readable {\r\n      const entry = openFiles.get(this.fd);\r\n      if (!entry) throw makeBadfError(\"createReadStream\");\r\n      const stream: any = new Readable();\r\n      stream.path = entry.filePath;\r\n      stream.fd = this.fd;\r\n      queueMicrotask(() => {\r\n        try {\r\n          const data = entry.data;\r\n          const start = opts?.start ?? 0;\r\n          const end = opts?.end !== undefined ? opts.end + 1 : data.length;\r\n          stream.push(Buffer.from(data.slice(start, end)));\r\n          stream.push(null);\r\n        } catch (err) {\r\n          stream.destroy(err as Error);\r\n        }\r\n      });\r\n      return stream;\r\n    }\r\n\r\n    createWriteStream(_opts?: { encoding?: string }): Writable {\r\n      const entry = openFiles.get(this.fd);\r\n      if (!entry) throw makeBadfError(\"createWriteStream\");\r\n      const chunks: Uint8Array[] = [];\r\n      const stream: any = new Writable();\r\n      stream.path = entry.filePath;\r\n      stream.fd = this.fd;\r\n      stream._write = (chunk: Uint8Array | string, _enc: string, cb: (err?: Error | null) => void) => {\r\n        const bytes = typeof chunk === \"string\" ? encoder.encode(chunk) : chunk;\r\n        chunks.push(bytes);\r\n        cb(null);\r\n      };\r\n      stream.on(\"finish\", () => {\r\n        const totalLen = chunks.reduce((sum, c) => sum + c.length, 0);\r\n        const merged = new Uint8Array(totalLen);\r\n        let pos = 0;\r\n        for (const c of chunks) { merged.set(c, pos); pos += c.length; }\r\n        entry.data = merged;\r\n        entry.cursor = merged.length;\r\n      });\r\n      return stream;\r\n    }\r\n\r\n    datasync(): Promise<void> {\r\n      return Promise.resolve();\r\n    }\r\n\r\n    read(\r\n      bufOrOpts?: Buffer | Uint8Array | { buffer: Buffer | Uint8Array; offset?: number; length?: number; position?: number | null },\r\n      offset?: number,\r\n      length?: number,\r\n      position?: number | null,\r\n    ): Promise<{ bytesRead: number; buffer: Buffer | Uint8Array }> {\r\n      const entry = openFiles.get(this.fd);\r\n      if (!entry) return Promise.reject(makeBadfError(\"read\"));\r\n      let buf: Buffer | Uint8Array;\r\n      let off: number;\r\n      let len: number;\r\n      let pos: number | null;\r\n      if (bufOrOpts && typeof bufOrOpts === \"object\" && \"buffer\" in bufOrOpts) {\r\n        const opts = bufOrOpts as { buffer: Buffer | Uint8Array; offset?: number; length?: number; position?: number | null };\r\n        buf = opts.buffer;\r\n        off = opts.offset ?? 0;\r\n        len = opts.length ?? buf.length;\r\n        pos = opts.position ?? null;\r\n      } else {\r\n        buf = bufOrOpts ? (bufOrOpts as Buffer | Uint8Array) : (Buffer.alloc(16384) as unknown as Buffer);\r\n        off = offset ?? 0;\r\n        len = length ?? buf.length;\r\n        pos = position ?? null;\r\n      }\r\n      const readAt = pos !== null ? pos : entry.cursor;\r\n      const count = Math.min(len, entry.data.length - readAt);\r\n      if (count <= 0) return Promise.resolve({ bytesRead: 0, buffer: buf });\r\n      for (let i = 0; i < count; i++) buf[off + i] = entry.data[readAt + i];\r\n      if (pos === null) entry.cursor += count;\r\n      return Promise.resolve({ bytesRead: count, buffer: buf });\r\n    }\r\n\r\n    readableWebStream(): ReadableStream<Uint8Array> {\r\n      const entry = openFiles.get(this.fd);\r\n      const data = entry ? new Uint8Array(entry.data) : new Uint8Array(0);\r\n      return new ReadableStream({\r\n        start(controller) {\r\n          controller.enqueue(data);\r\n          controller.close();\r\n        },\r\n      });\r\n    }\r\n\r\n    readFile(opts?: { encoding?: string | null } | string): Promise<Buffer | string> {\r\n      const entry = openFiles.get(this.fd);\r\n      if (!entry) return Promise.reject(makeBadfError(\"readFile\"));\r\n      const enc = typeof opts === \"string\" ? opts : opts?.encoding;\r\n      if (enc === \"utf8\" || enc === \"utf-8\") {\r\n        return Promise.resolve(decoder.decode(entry.data));\r\n      }\r\n      return Promise.resolve(wrapAsBuffer(new Uint8Array(entry.data)));\r\n    }\r\n\r\n    readLines(): AsyncIterable<string> {\r\n      const entry = openFiles.get(this.fd);\r\n      const content = entry ? decoder.decode(entry.data) : \"\";\r\n      const lines = content.split(\"\\n\");\r\n      return {\r\n        [Symbol.asyncIterator]() {\r\n          let i = 0;\r\n          return {\r\n            next(): Promise<IteratorResult<string>> {\r\n              if (i < lines.length) return Promise.resolve({ value: lines[i++], done: false });\r\n              return Promise.resolve({ value: undefined as any, done: true });\r\n            },\r\n          };\r\n        },\r\n      };\r\n    }\r\n\r\n    readv(buffers: ArrayBufferView[], position?: number): Promise<{ bytesRead: number; buffers: ArrayBufferView[] }> {\r\n      const entry = openFiles.get(this.fd);\r\n      if (!entry) return Promise.reject(makeBadfError(\"readv\"));\r\n      let totalRead = 0;\r\n      let readPos = position ?? entry.cursor;\r\n      for (const buf of buffers) {\r\n        const u8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\r\n        const count = Math.min(u8.length, entry.data.length - readPos);\r\n        if (count <= 0) break;\r\n        for (let i = 0; i < count; i++) u8[i] = entry.data[readPos + i];\r\n        readPos += count;\r\n        totalRead += count;\r\n        if (count < u8.length) break;\r\n      }\r\n      if (position === undefined) entry.cursor = readPos;\r\n      return Promise.resolve({ bytesRead: totalRead, buffers });\r\n    }\r\n\r\n    stat(): Promise<FileStat> {\r\n      const entry = openFiles.get(this.fd);\r\n      if (!entry) return Promise.reject(makeBadfError(\"fstat\"));\r\n      try {\r\n        return Promise.resolve(volume.statSync(entry.filePath));\r\n      } catch (e) {\r\n        return Promise.reject(e);\r\n      }\r\n    }\r\n\r\n    sync(): Promise<void> {\r\n      return Promise.resolve();\r\n    }\r\n\r\n    truncate(len: number = 0): Promise<void> {\r\n      const entry = openFiles.get(this.fd);\r\n      if (!entry) return Promise.reject(makeBadfError(\"ftruncate\"));\r\n      if (len < entry.data.length) {\r\n        entry.data = entry.data.slice(0, len);\r\n      } else if (len > entry.data.length) {\r\n        const bigger = new Uint8Array(len);\r\n        bigger.set(entry.data);\r\n        entry.data = bigger;\r\n      }\r\n      return Promise.resolve();\r\n    }\r\n\r\n    utimes(_atime: unknown, _mtime: unknown): Promise<void> {\r\n      return Promise.resolve();\r\n    }\r\n\r\n    write(\r\n      buf: Buffer | Uint8Array | string,\r\n      offsetOrOpts?: number | { offset?: number; length?: number; position?: number | null },\r\n      length?: number,\r\n      position?: number | null,\r\n    ): Promise<{ bytesWritten: number; buffer: Buffer | Uint8Array | string }> {\r\n      const entry = openFiles.get(this.fd);\r\n      if (!entry) return Promise.reject(makeBadfError(\"write\"));\r\n      let bytes: Uint8Array;\r\n      let off: number;\r\n      let len: number;\r\n      let pos: number | null | undefined;\r\n      if (typeof buf === \"string\") {\r\n        bytes = encoder.encode(buf);\r\n        off = 0;\r\n        len = bytes.length;\r\n        pos = typeof offsetOrOpts === \"number\" ? offsetOrOpts : null;\r\n      } else if (typeof offsetOrOpts === \"object\" && offsetOrOpts !== null) {\r\n        bytes = buf;\r\n        off = offsetOrOpts.offset ?? 0;\r\n        len = offsetOrOpts.length ?? bytes.length - off;\r\n        pos = offsetOrOpts.position;\r\n      } else {\r\n        bytes = buf;\r\n        off = (offsetOrOpts as number) ?? 0;\r\n        len = length ?? bytes.length - off;\r\n        pos = position;\r\n      }\r\n      const writeAt = pos !== null && pos !== undefined ? pos : entry.cursor;\r\n      const endAt = writeAt + len;\r\n      if (endAt > entry.data.length) {\r\n        const expanded = new Uint8Array(endAt);\r\n        expanded.set(entry.data);\r\n        entry.data = expanded;\r\n      }\r\n      for (let i = 0; i < len; i++) entry.data[writeAt + i] = bytes[off + i];\r\n      if (pos === null || pos === undefined) entry.cursor = endAt;\r\n      return Promise.resolve({ bytesWritten: len, buffer: buf });\r\n    }\r\n\r\n    writeFile(data: string | Uint8Array): Promise<void> {\r\n      const entry = openFiles.get(this.fd);\r\n      if (!entry) return Promise.reject(makeBadfError(\"writeFile\"));\r\n      const bytes = typeof data === \"string\" ? encoder.encode(data) : data;\r\n      entry.data = new Uint8Array(bytes);\r\n      entry.cursor = bytes.length;\r\n      return Promise.resolve();\r\n    }\r\n\r\n    writev(buffers: ArrayBufferView[], position?: number): Promise<{ bytesWritten: number; buffers: ArrayBufferView[] }> {\r\n      const entry = openFiles.get(this.fd);\r\n      if (!entry) return Promise.reject(makeBadfError(\"writev\"));\r\n      let totalWritten = 0;\r\n      let writePos = position ?? entry.cursor;\r\n      for (const buf of buffers) {\r\n        const u8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\r\n        const endAt = writePos + u8.length;\r\n        if (endAt > entry.data.length) {\r\n          const expanded = new Uint8Array(endAt);\r\n          expanded.set(entry.data);\r\n          entry.data = expanded;\r\n        }\r\n        for (let i = 0; i < u8.length; i++) entry.data[writePos + i] = u8[i];\r\n        writePos += u8.length;\r\n        totalWritten += u8.length;\r\n      }\r\n      if (position === undefined) entry.cursor = writePos;\r\n      return Promise.resolve({ bytesWritten: totalWritten, buffers });\r\n    }\r\n\r\n    [Symbol.asyncDispose](): Promise<void> {\r\n      return this.close();\r\n    }\r\n  }\r\n\r\n  function makeBadfError(syscall: string): Error & { code: string; errno: number } {\r\n    const err = new Error(`EBADF: bad file descriptor, ${syscall}`) as Error & { code: string; errno: number };\r\n    err.code = \"EBADF\";\r\n    err.errno = -9;\r\n    return err;\r\n  }\r\n  const promisesApi: FsPromisesShape = {\r\n    readFile(\r\n      target: unknown,\r\n      encOrOpts?: string | { encoding?: string | null },\r\n    ): Promise<Buffer | string> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          const p = abs(target);\r\n          let enc: string | undefined;\r\n          if (typeof encOrOpts === \"string\") enc = encOrOpts;\r\n          else if (encOrOpts?.encoding) enc = encOrOpts.encoding;\r\n\r\n          if (enc === \"utf8\" || enc === \"utf-8\") {\r\n            ok(volume.readFileSync(p, \"utf8\"));\r\n          } else {\r\n            ok(wrapAsBuffer(volume.readFileSync(p)));\r\n          }\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    writeFile(target: unknown, data: string | Uint8Array): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          const wp = abs(target);\r\n          volume.writeFileSync(wp, data);\r\n          if (wp.endsWith(\".wasm\") && typeof data !== \"string\") {\r\n            precompileWasm(data);\r\n          }\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    stat(target: unknown): Promise<FileStat> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          ok(volume.statSync(abs(target)));\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    mkdir(target: unknown, opts?: { recursive?: boolean }): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          volume.mkdirSync(abs(target), opts);\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    unlink(target: unknown): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          volume.unlinkSync(abs(target));\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    rmdir(target: unknown): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          volume.rmdirSync(abs(target) as string);\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    rename(src: unknown, dest: unknown): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          volume.renameSync(abs(src), abs(dest));\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    access(target: unknown, mode?: number): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          volume.accessSync(abs(target), mode);\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    realpath(target: unknown): Promise<string> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          ok(volume.realpathSync(abs(target)));\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    copyFile(src: unknown, dest: unknown): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          volume.copyFileSync(abs(src), abs(dest));\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    appendFile(target: unknown, data: string | Uint8Array): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          volume.appendFileSync(abs(target), data);\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    symlink(target: unknown, path: unknown, type?: string): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          volume.symlinkSync(abs(target), abs(path), type);\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    readlink(target: unknown): Promise<string> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          ok(volume.readlinkSync(abs(target)));\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    link(existingPath: unknown, newPath: unknown): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          volume.linkSync(abs(existingPath), abs(newPath));\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    chmod(target: unknown, mode: number): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          volume.chmodSync(abs(target), mode);\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    chown(target: unknown, uid: number, gid: number): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          volume.chownSync(abs(target), uid, gid);\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    truncate(target: unknown, len?: number): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          volume.truncateSync(abs(target), len);\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    rm(\r\n      target: unknown,\r\n      opts?: { recursive?: boolean; force?: boolean },\r\n    ): Promise<void> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          bridge.rmSync(abs(target), opts);\r\n          ok();\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    lstat(target: unknown): Promise<FileStat> {\r\n      return new Promise((ok, fail) => {\r\n        try {\r\n          ok(volume.lstatSync(abs(target)));\r\n        } catch (e) {\r\n          fail(e);\r\n        }\r\n      });\r\n    },\r\n    utimes(_target: unknown, _atime: unknown, _mtime: unknown): Promise<void> {\r\n      // VFS doesn't track timestamps\r\n      return Promise.resolve();\r\n    },\r\n    lchown(_target: unknown, _uid: number, _gid: number): Promise<void> {\r\n      // VFS doesn't track symlink ownership\r\n      return Promise.resolve();\r\n    },\r\n    lutimes(_target: unknown, _atime: unknown, _mtime: unknown): Promise<void> {\r\n      // VFS doesn't track timestamps\r\n      return Promise.resolve();\r\n    },\r\n    opendir(target: unknown, _opts?: unknown): Promise<Dir> {\r\n      try {\r\n        const p = abs(target);\r\n        const names = volume.readdirSync(p);\r\n        const entries = toDirents(p, names);\r\n        return Promise.resolve(new Dir(p, entries));\r\n      } catch (e) {\r\n        return Promise.reject(e);\r\n      }\r\n    },\r\n    readdir(\r\n      target: unknown,\r\n      opts?: { withFileTypes?: boolean; encoding?: string } | string,\r\n    ): Promise<string[] | Dirent[]> {\r\n      try {\r\n        const p = abs(target);\r\n        const names = volume.readdirSync(p);\r\n        const o = typeof opts === \"string\" ? { encoding: opts } : opts;\r\n        if (o?.withFileTypes) {\r\n          return Promise.resolve(toDirents(p, names));\r\n        }\r\n        return Promise.resolve(names);\r\n      } catch (e) {\r\n        return Promise.reject(e);\r\n      }\r\n    },\r\n    glob(\r\n      pattern: string | string[],\r\n      opts?: { cwd?: string; exclude?: string[] | ((p: string) => boolean) },\r\n    ): AsyncIterable<string> {\r\n      const patterns = Array.isArray(pattern) ? pattern : [pattern];\r\n      const cwd = opts?.cwd ? abs(opts.cwd) : (getCwd ? getCwd() : \"/\");\r\n      const exclude = opts?.exclude;\r\n\r\n      // Expand brace patterns like {tsx,ts,jsx,js} → individual alternatives\r\n      function expandBraces(pat: string): string[] {\r\n        const m = pat.match(/^([^{]*)\\{([^}]+)\\}(.*)$/);\r\n        if (!m) return [pat];\r\n        const prefix = m[1], alts = m[2].split(\",\"), suffix = m[3];\r\n        const result: string[] = [];\r\n        for (const alt of alts) {\r\n          result.push(...expandBraces(prefix + alt + suffix));\r\n        }\r\n        return result;\r\n      }\r\n\r\n      // Convert a glob pattern to a RegExp\r\n      function globToRegex(pat: string): RegExp {\r\n        let re = \"\";\r\n        let i = 0;\r\n        while (i < pat.length) {\r\n          const ch = pat[i];\r\n          if (ch === \"*\" && pat[i + 1] === \"*\") {\r\n            // ** matches any number of path segments\r\n            if (pat[i + 2] === \"/\") {\r\n              re += \"(?:.+/)?\";\r\n              i += 3;\r\n            } else {\r\n              re += \".*\";\r\n              i += 2;\r\n            }\r\n          } else if (ch === \"*\") {\r\n            re += \"[^/]*\";\r\n            i++;\r\n          } else if (ch === \"?\") {\r\n            re += \"[^/]\";\r\n            i++;\r\n          } else if (ch === \".\" || ch === \"(\" || ch === \")\" || ch === \"+\" || ch === \"^\" || ch === \"$\" || ch === \"|\" || ch === \"\\\\\") {\r\n            re += \"\\\\\" + ch;\r\n            i++;\r\n          } else {\r\n            re += ch;\r\n            i++;\r\n          }\r\n        }\r\n        return new RegExp(\"^\" + re + \"$\");\r\n      }\r\n\r\n      // Recursively collect all file paths under a directory (relative to base)\r\n      function walk(dir: string, base: string): string[] {\r\n        const results: string[] = [];\r\n        let entries: string[];\r\n        try {\r\n          entries = volume.readdirSync(dir);\r\n        } catch {\r\n          return results;\r\n        }\r\n        for (const name of entries) {\r\n          const full = dir.endsWith(\"/\") ? dir + name : dir + \"/\" + name;\r\n          const rel = base ? base + \"/\" + name : name;\r\n          let isDir = false;\r\n          try {\r\n            isDir = volume.statSync(full).isDirectory();\r\n          } catch {\r\n            // skip broken entries\r\n          }\r\n          if (isDir) {\r\n            results.push(...walk(full, rel));\r\n          } else {\r\n            results.push(rel);\r\n          }\r\n        }\r\n        return results;\r\n      }\r\n\r\n      // Build all expanded patterns → regexes\r\n      const regexes: RegExp[] = [];\r\n      for (const p of patterns) {\r\n        for (const expanded of expandBraces(p)) {\r\n          regexes.push(globToRegex(expanded));\r\n        }\r\n      }\r\n\r\n      // Build exclude matchers\r\n      let excludeFn: ((p: string) => boolean) | null = null;\r\n      if (typeof exclude === \"function\") {\r\n        excludeFn = exclude;\r\n      } else if (Array.isArray(exclude) && exclude.length > 0) {\r\n        const exRegexes: RegExp[] = [];\r\n        for (const ep of exclude) {\r\n          for (const expanded of expandBraces(ep)) {\r\n            exRegexes.push(globToRegex(expanded));\r\n          }\r\n        }\r\n        excludeFn = (p: string) => exRegexes.some((r) => r.test(p));\r\n      }\r\n\r\n      const allFiles = walk(cwd, \"\");\r\n      const matched = allFiles.filter((f) => {\r\n        if (excludeFn && excludeFn(f)) return false;\r\n        return regexes.some((r) => r.test(f));\r\n      });\r\n\r\n      // Return an async iterable\r\n      return {\r\n        [Symbol.asyncIterator]() {\r\n          let i = 0;\r\n          return {\r\n            next() {\r\n              if (i < matched.length) {\r\n                return Promise.resolve({ value: matched[i++], done: false });\r\n              }\r\n              return Promise.resolve({ value: undefined as any, done: true });\r\n            },\r\n          };\r\n        },\r\n      };\r\n    },\r\n    open(target: unknown, flags?: string | number, _mode?: number): Promise<FileHandle> {\r\n      try {\r\n        const f = flags ?? \"r\";\r\n        const fd = bridge.openSync(abs(target), f, _mode);\r\n        return Promise.resolve(new FileHandle(fd));\r\n      } catch (e) {\r\n        return Promise.reject(e);\r\n      }\r\n    },\r\n    mkdtemp(prefix: string): Promise<string> {\r\n      try {\r\n        return Promise.resolve(bridge.mkdtempSync(prefix));\r\n      } catch (e) {\r\n        return Promise.reject(e);\r\n      }\r\n    },\r\n    watch(\r\n      filename: unknown,\r\n      opts?: { persistent?: boolean; recursive?: boolean; signal?: AbortSignal },\r\n    ): AsyncIterable<{ eventType: string; filename: string | null }> {\r\n      const p = abs(filename);\r\n      const events: { eventType: string; filename: string | null }[] = [];\r\n      let resolve: (() => void) | null = null;\r\n      let closed = false;\r\n\r\n      const handle = volume.watch(p, { persistent: opts?.persistent, recursive: opts?.recursive }, (event, name) => {\r\n        events.push({ eventType: event, filename: name });\r\n        if (resolve) { resolve(); resolve = null; }\r\n      });\r\n\r\n      if (opts?.signal) {\r\n        opts.signal.addEventListener(\"abort\", () => { closed = true; handle.close(); if (resolve) { resolve(); resolve = null; } }, { once: true });\r\n      }\r\n\r\n      return {\r\n        [Symbol.asyncIterator]() {\r\n          return {\r\n            next(): Promise<IteratorResult<{ eventType: string; filename: string | null }>> {\r\n              if (events.length > 0) {\r\n                return Promise.resolve({ value: events.shift()!, done: false });\r\n              }\r\n              if (closed) return Promise.resolve({ value: undefined as any, done: true });\r\n              return new Promise<IteratorResult<{ eventType: string; filename: string | null }>>((res) => {\r\n                resolve = () => {\r\n                  if (events.length > 0) res({ value: events.shift()!, done: false });\r\n                  else res({ value: undefined as any, done: true });\r\n                };\r\n              });\r\n            },\r\n            return(): Promise<IteratorResult<{ eventType: string; filename: string | null }>> {\r\n              closed = true;\r\n              handle.close();\r\n              return Promise.resolve({ value: undefined as any, done: true });\r\n            },\r\n          };\r\n        },\r\n      };\r\n    },\r\n    statfs(_target: unknown): Promise<StatFs> {\r\n      return Promise.resolve(new StatFs());\r\n    },\r\n    cp(\r\n      src: unknown,\r\n      dest: unknown,\r\n      opts?: { recursive?: boolean; force?: boolean; errorOnExist?: boolean },\r\n    ): Promise<void> {\r\n      try {\r\n        bridge.cpSync(src, dest, opts);\r\n        return Promise.resolve();\r\n      } catch (e) {\r\n        return Promise.reject(e);\r\n      }\r\n    },\r\n    FileHandle: FileHandle as any,\r\n  } as FsPromisesShape;\r\n  const realpathSyncFn = function realpathSync(target: unknown): string {\r\n    return volume.realpathSync(abs(target));\r\n  };\r\n  (realpathSyncFn as any).native = function native(target: unknown): string {\r\n    return volume.realpathSync(abs(target));\r\n  };\r\n\r\n  const bridge: FsBridge = {\r\n    readFileSync(\r\n      target: unknown,\r\n      encOrOpts?: string | { encoding?: string | null },\r\n    ): Buffer | string {\r\n      const p = abs(target);\r\n      let enc: string | undefined;\r\n      if (typeof encOrOpts === \"string\") enc = encOrOpts;\r\n      else if (encOrOpts?.encoding) enc = encOrOpts.encoding;\r\n\r\n      if (enc === \"utf8\" || enc === \"utf-8\") {\r\n        return volume.readFileSync(p, \"utf8\");\r\n      }\r\n      const raw = volume.readFileSync(p);\r\n      if (p.endsWith(\".wasm\")) precompileWasm(raw);\r\n      return wrapAsBuffer(raw);\r\n    },\r\n\r\n    writeFileSync(target: unknown, data: string | Uint8Array): void {\r\n      if (typeof target === \"number\") {\r\n        const entry = openFiles.get(target);\r\n        if (!entry) {\r\n          const err = new Error(\r\n            \"EBADF: bad file descriptor, write\",\r\n          ) as Error & { code: string; errno: number };\r\n          err.code = \"EBADF\";\r\n          err.errno = -9;\r\n          throw err;\r\n        }\r\n        const bytes = typeof data === \"string\" ? encoder.encode(data) : data;\r\n        entry.data = new Uint8Array(bytes);\r\n        entry.cursor = bytes.length;\r\n        return;\r\n      }\r\n      const wp = abs(target);\r\n      volume.writeFileSync(wp, data);\r\n      if (wp.endsWith(\".wasm\") && typeof data !== \"string\") {\r\n        precompileWasm(data);\r\n      }\r\n    },\r\n\r\n    existsSync(target: unknown): boolean {\r\n      return volume.existsSync(abs(target));\r\n    },\r\n\r\n    mkdirSync(target: unknown, opts?: { recursive?: boolean }): void {\r\n      volume.mkdirSync(abs(target), opts);\r\n    },\r\n\r\n    readdirSync(\r\n      target: unknown,\r\n      opts?: { withFileTypes?: boolean; encoding?: string } | string,\r\n    ): string[] | Dirent[] {\r\n      const p = abs(target);\r\n      const names = volume.readdirSync(p);\r\n      const o = typeof opts === \"string\" ? { encoding: opts } : opts;\r\n      if (o?.withFileTypes) {\r\n        return toDirents(p, names);\r\n      }\r\n      return names;\r\n    },\r\n\r\n    statSync(target: unknown): FileStat {\r\n      return volume.statSync(abs(target));\r\n    },\r\n\r\n    lstatSync(target: unknown): FileStat {\r\n      return volume.lstatSync(abs(target));\r\n    },\r\n\r\n    fstatSync(fd: number): FileStat {\r\n      const entry = openFiles.get(fd);\r\n      if (!entry) {\r\n        const err = new Error(\"EBADF: bad file descriptor, fstat\") as Error & {\r\n          code: string;\r\n          errno: number;\r\n        };\r\n        err.code = \"EBADF\";\r\n        err.errno = -9;\r\n        throw err;\r\n      }\r\n      return volume.statSync(entry.filePath);\r\n    },\r\n\r\n    unlinkSync(target: unknown): void {\r\n      volume.unlinkSync(abs(target));\r\n    },\r\n\r\n    rmdirSync(target: unknown): void {\r\n      volume.rmdirSync(abs(target));\r\n    },\r\n\r\n    renameSync(src: unknown, dest: unknown): void {\r\n      volume.renameSync(abs(src), abs(dest));\r\n    },\r\n\r\n    realpathSync: realpathSyncFn as FsBridge[\"realpathSync\"],\r\n\r\n    accessSync(target: unknown, _mode?: number): void {\r\n      volume.accessSync(abs(target));\r\n    },\r\n\r\n    copyFileSync(src: unknown, dest: unknown): void {\r\n      const bytes = volume.readFileSync(abs(src));\r\n      volume.writeFileSync(abs(dest), bytes);\r\n    },\r\n\r\n    symlinkSync(target: unknown, path: unknown, _type?: string): void {\r\n      volume.symlinkSync(abs(target), abs(path), _type);\r\n    },\r\n\r\n    readlinkSync(target: unknown): string {\r\n      return volume.readlinkSync(abs(target));\r\n    },\r\n\r\n    linkSync(existingPath: unknown, newPath: unknown): void {\r\n      volume.linkSync(abs(existingPath), abs(newPath));\r\n    },\r\n\r\n    chmodSync(target: unknown, mode: number): void {\r\n      volume.chmodSync(abs(target), mode);\r\n    },\r\n\r\n    chownSync(target: unknown, uid: number, gid: number): void {\r\n      volume.chownSync(abs(target), uid, gid);\r\n    },\r\n\r\n    lchownSync(_target: unknown, _uid: number, _gid: number): void {\r\n      // VFS doesn't track symlink ownership — no-op\r\n    },\r\n\r\n    utimesSync(_target: unknown, _atime: unknown, _mtime: unknown): void {\r\n      // VFS doesn't track timestamps — no-op\r\n    },\r\n\r\n    lutimesSync(_target: unknown, _atime: unknown, _mtime: unknown): void {\r\n      // VFS doesn't track timestamps — no-op\r\n    },\r\n\r\n    futimesSync(_fd: number, _atime: unknown, _mtime: unknown): void {\r\n      // VFS doesn't track timestamps — no-op\r\n    },\r\n\r\n    fchownSync(_fd: number, _uid: number, _gid: number): void {\r\n      // VFS doesn't track fd ownership — no-op\r\n    },\r\n\r\n    fchmodSync(_fd: number, _mode: number): void {\r\n      // VFS doesn't track fd permissions — no-op\r\n    },\r\n\r\n    appendFileSync(target: unknown, data: string | Uint8Array): void {\r\n      volume.appendFileSync(abs(target), data);\r\n    },\r\n\r\n    truncateSync(target: unknown, len?: number): void {\r\n      volume.truncateSync(abs(target), len);\r\n    },\r\n    openSync(target: unknown, flags: string | number, _mode?: number): number {\r\n      const p = abs(target);\r\n      const flagStr = typeof flags === \"number\" ? \"r\" : flags;\r\n      const exists = volume.existsSync(p);\r\n      const isWrite = flagStr.includes(\"w\") || flagStr.includes(\"a\");\r\n      const isReadOnly = flagStr.includes(\"r\") && !flagStr.includes(\"+\");\r\n\r\n      if (!exists && isReadOnly) {\r\n        const err = new Error(\r\n          `ENOENT: no such file or directory, open '${p}'`,\r\n        ) as Error & { code: string; errno: number; path: string };\r\n        err.code = \"ENOENT\";\r\n        err.errno = -2;\r\n        err.path = p;\r\n        throw err;\r\n      }\r\n\r\n      let content: Uint8Array;\r\n      if (exists && !flagStr.includes(\"w\")) {\r\n        content = volume.readFileSync(p);\r\n      } else {\r\n        content = new Uint8Array(0);\r\n        if (isWrite) {\r\n          const parent = p.substring(0, p.lastIndexOf(\"/\")) || \"/\";\r\n          if (!volume.existsSync(parent)) {\r\n            volume.mkdirSync(parent, { recursive: true });\r\n          }\r\n        }\r\n      }\r\n\r\n      const fd = fdCounter++;\r\n      openFiles.set(fd, {\r\n        filePath: p,\r\n        cursor: flagStr.includes(\"a\") ? content.length : 0,\r\n        mode: flagStr,\r\n        data: new Uint8Array(content),\r\n      });\r\n      return fd;\r\n    },\r\n\r\n    closeSync(fd: number): void {\r\n      const entry = openFiles.get(fd);\r\n      if (!entry) return;\r\n      if (\r\n        entry.mode.includes(\"w\") ||\r\n        entry.mode.includes(\"a\") ||\r\n        entry.mode.includes(\"+\")\r\n      ) {\r\n        volume.writeFileSync(entry.filePath, entry.data);\r\n      }\r\n      openFiles.delete(fd);\r\n    },\r\n\r\n    readSync(\r\n      fd: number,\r\n      buf: Buffer | Uint8Array,\r\n      off: number,\r\n      len: number,\r\n      pos: number | null,\r\n    ): number {\r\n      const entry = openFiles.get(fd);\r\n      if (!entry) {\r\n        const err = new Error(\"EBADF: bad file descriptor, read\") as Error & {\r\n          code: string;\r\n          errno: number;\r\n        };\r\n        err.code = \"EBADF\";\r\n        err.errno = -9;\r\n        throw err;\r\n      }\r\n      const readAt = pos !== null ? pos : entry.cursor;\r\n      const count = Math.min(len, entry.data.length - readAt);\r\n      if (count <= 0) return 0;\r\n      for (let i = 0; i < count; i++) {\r\n        buf[off + i] = entry.data[readAt + i];\r\n      }\r\n      if (pos === null) entry.cursor += count;\r\n      return count;\r\n    },\r\n\r\n    writeSync(\r\n      fd: number,\r\n      buf: Buffer | Uint8Array | string,\r\n      off?: number,\r\n      len?: number,\r\n      pos?: number | null,\r\n    ): number {\r\n      const entry = openFiles.get(fd);\r\n      if (!entry) {\r\n        const err = new Error(\"EBADF: bad file descriptor, write\") as Error & {\r\n          code: string;\r\n          errno: number;\r\n        };\r\n        err.code = \"EBADF\";\r\n        err.errno = -9;\r\n        throw err;\r\n      }\r\n\r\n      let bytes: Uint8Array;\r\n      if (typeof buf === \"string\") {\r\n        bytes = encoder.encode(buf);\r\n        off = 0;\r\n        len = bytes.length;\r\n      } else {\r\n        bytes = buf;\r\n        off = off ?? 0;\r\n        len = len ?? bytes.length - off;\r\n      }\r\n\r\n      const writeAt = pos !== null && pos !== undefined ? pos : entry.cursor;\r\n      const endAt = writeAt + len;\r\n\r\n      if (endAt > entry.data.length) {\r\n        const expanded = new Uint8Array(endAt);\r\n        expanded.set(entry.data);\r\n        entry.data = expanded;\r\n      }\r\n\r\n      for (let i = 0; i < len; i++) {\r\n        entry.data[writeAt + i] = bytes[off + i];\r\n      }\r\n\r\n      if (pos === null || pos === undefined) entry.cursor = endAt;\r\n      return len;\r\n    },\r\n\r\n    writevSync(fd: number, buffers: ArrayBufferView[], pos?: number | null): number {\r\n      let totalWritten = 0;\r\n      for (const buf of buffers) {\r\n        const u8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\r\n        const n = bridge.writeSync(fd, u8 as unknown as Buffer, 0, u8.length, pos != null ? pos + totalWritten : undefined);\r\n        totalWritten += n;\r\n      }\r\n      return totalWritten;\r\n    },\r\n\r\n    ftruncateSync(fd: number, len: number = 0): void {\r\n      const entry = openFiles.get(fd);\r\n      if (!entry) {\r\n        const err = new Error(\r\n          \"EBADF: bad file descriptor, ftruncate\",\r\n        ) as Error & { code: string; errno: number };\r\n        err.code = \"EBADF\";\r\n        err.errno = -9;\r\n        throw err;\r\n      }\r\n      if (len < entry.data.length) {\r\n        entry.data = entry.data.slice(0, len);\r\n      } else if (len > entry.data.length) {\r\n        const bigger = new Uint8Array(len);\r\n        bigger.set(entry.data);\r\n        entry.data = bigger;\r\n      }\r\n    },\r\n\r\n    fsyncSync(_fd: number): void {\r\n      /* no-op */\r\n    },\r\n    fdatasyncSync(_fd: number): void {\r\n      /* no-op */\r\n    },\r\n\r\n    mkdtempSync(prefix: string): string {\r\n      const rand = Math.random().toString(36).substring(2, 8);\r\n      const dirPath = abs(`${prefix}${rand}`);\r\n      volume.mkdirSync(dirPath, { recursive: true });\r\n      return dirPath;\r\n    },\r\n\r\n    rmSync(\r\n      target: unknown,\r\n      opts?: { recursive?: boolean; force?: boolean },\r\n    ): void {\r\n      const p = abs(target);\r\n      if (!volume.existsSync(p)) {\r\n        if (opts?.force) return;\r\n        throw makeSystemError(\"ENOENT\", \"rm\", p);\r\n      }\r\n      const st = volume.statSync(p);\r\n      if (st.isDirectory()) {\r\n        if (opts?.recursive) {\r\n          const children = volume.readdirSync(p);\r\n          for (const child of children) {\r\n            const childPath = p.endsWith(\"/\") ? p + child : p + \"/\" + child;\r\n            bridge.rmSync(childPath, opts);\r\n          }\r\n          volume.rmdirSync(p);\r\n        } else {\r\n          throw makeSystemError(\"EISDIR\", \"rm\", p);\r\n        }\r\n      } else {\r\n        volume.unlinkSync(p);\r\n      }\r\n    },\r\n    watch(\r\n      filename: unknown,\r\n      optsOrCb?: { persistent?: boolean; recursive?: boolean } | WatchCallback,\r\n      cb?: WatchCallback,\r\n    ): FileWatchHandle {\r\n      const p = abs(filename);\r\n      return volume.watch(\r\n        p,\r\n        optsOrCb as { persistent?: boolean; recursive?: boolean },\r\n        cb,\r\n      );\r\n    },\r\n\r\n    watchFile(\r\n      _filename: unknown,\r\n      _optsOrListener?: unknown,\r\n      _listener?: unknown,\r\n    ): { unref(): void; ref(): void } {\r\n      // Stub — polling-based file watch not implemented in VFS\r\n      return { unref() {}, ref() {} };\r\n    },\r\n\r\n    unwatchFile(_filename: unknown, _listener?: unknown): void {\r\n      // Stub — polling-based file unwatch not implemented in VFS\r\n    },\r\n    readFile(\r\n      target: unknown,\r\n      optsOrCb?:\r\n        | string\r\n        | { encoding?: string | null }\r\n        | ((err: Error | null, data?: Buffer | string) => void),\r\n      cb?: (err: Error | null, data?: Buffer | string) => void,\r\n    ): void {\r\n      const p = abs(target);\r\n      let actualCb: ((err: Error | null, data?: Buffer | string) => void) | undefined;\r\n      let enc: string | undefined;\r\n      if (typeof optsOrCb === \"function\") {\r\n        actualCb = optsOrCb as (err: Error | null, data?: Buffer | string) => void;\r\n      } else {\r\n        actualCb = cb;\r\n        if (typeof optsOrCb === \"string\") {\r\n          enc = optsOrCb;\r\n        } else if (optsOrCb && typeof optsOrCb === \"object\") {\r\n          enc = (optsOrCb as { encoding?: string | null }).encoding ?? undefined;\r\n        }\r\n      }\r\n      try {\r\n        if (enc && enc !== \"buffer\" && (enc === \"utf8\" || enc === \"utf-8\")) {\r\n          const data = volume.readFileSync(p, \"utf8\");\r\n          if (actualCb) setTimeout(() => actualCb(null, data), 0);\r\n        } else {\r\n          const raw = volume.readFileSync(p);\r\n          if (actualCb) setTimeout(() => actualCb(null, wrapAsBuffer(raw)), 0);\r\n        }\r\n      } catch (e) {\r\n        if (actualCb) setTimeout(() => actualCb(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    writeFile(\r\n      target: unknown,\r\n      data: unknown,\r\n      optsOrCb?: unknown,\r\n      maybeCb?: (err: Error | null) => void,\r\n    ): void {\r\n      const cb = typeof optsOrCb === \"function\"\r\n        ? optsOrCb as (err: Error | null) => void\r\n        : maybeCb;\r\n      try {\r\n        const wp = abs(target);\r\n        const writeData = typeof data === \"string\" ? data : data as Uint8Array;\r\n        volume.writeFileSync(wp, writeData);\r\n        if (wp.endsWith(\".wasm\") && typeof data !== \"string\") {\r\n          precompileWasm(data as Uint8Array);\r\n        }\r\n        if (cb) setTimeout(() => cb(null), 0);\r\n      } catch (e) {\r\n        if (cb) setTimeout(() => cb(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    stat(\r\n      target: unknown,\r\n      optsOrCb?: unknown,\r\n      maybeCb?: (err: Error | null, stats?: FileStat) => void,\r\n    ): void {\r\n      // Support both stat(path, cb) and stat(path, opts, cb)\r\n      const cb = typeof optsOrCb === \"function\"\r\n        ? optsOrCb as (err: Error | null, stats?: FileStat) => void\r\n        : maybeCb as (err: Error | null, stats?: FileStat) => void;\r\n      const p = abs(target);\r\n      volume.stat(p, cb);\r\n    },\r\n\r\n    lstat(\r\n      target: unknown,\r\n      optsOrCb?: unknown,\r\n      maybeCb?: (err: Error | null, stats?: FileStat) => void,\r\n    ): void {\r\n      // Support both lstat(path, cb) and lstat(path, opts, cb)\r\n      const cb = typeof optsOrCb === \"function\"\r\n        ? optsOrCb as (err: Error | null, stats?: FileStat) => void\r\n        : maybeCb as (err: Error | null, stats?: FileStat) => void;\r\n      const p = abs(target);\r\n      volume.lstat(p, cb);\r\n    },\r\n\r\n    readdir(\r\n      target: unknown,\r\n      optsOrCb?:\r\n        | { withFileTypes?: boolean }\r\n        | ((err: Error | null, files?: string[] | Dirent[]) => void),\r\n      cb?: (err: Error | null, files?: string[] | Dirent[]) => void,\r\n    ): void {\r\n      const actualCb = typeof optsOrCb === \"function\" ? optsOrCb : cb;\r\n      const opts = typeof optsOrCb === \"function\" ? undefined : optsOrCb;\r\n      const p = abs(target);\r\n      try {\r\n        const names = volume.readdirSync(p);\r\n        if (opts?.withFileTypes) {\r\n          actualCb?.(null, toDirents(p, names));\r\n        } else {\r\n          actualCb?.(null, names);\r\n        }\r\n      } catch (e) {\r\n        actualCb?.(e as Error);\r\n      }\r\n    },\r\n\r\n    mkdir(\r\n      target: unknown,\r\n      optsOrCb?: { recursive?: boolean } | ((err: Error | null) => void),\r\n      cb?: (err: Error | null) => void,\r\n    ): void {\r\n      const actualCb = typeof optsOrCb === \"function\" ? optsOrCb : cb;\r\n      const opts = typeof optsOrCb === \"object\" ? optsOrCb : undefined;\r\n      try {\r\n        volume.mkdirSync(abs(target), opts);\r\n        if (actualCb) setTimeout(() => actualCb(null), 0);\r\n      } catch (e) {\r\n        if (actualCb) setTimeout(() => actualCb(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    unlink(target: unknown, cb?: (err: Error | null) => void): void {\r\n      try {\r\n        volume.unlinkSync(abs(target));\r\n        if (cb) setTimeout(() => cb(null), 0);\r\n      } catch (e) {\r\n        if (cb) setTimeout(() => cb(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    rmdir(target: unknown, optsOrCb?: unknown, maybeCb?: (err: Error | null) => void): void {\r\n      const cb = typeof optsOrCb === \"function\"\r\n        ? optsOrCb as (err: Error | null) => void\r\n        : maybeCb;\r\n      try {\r\n        volume.rmdirSync(abs(target));\r\n        if (cb) setTimeout(() => cb(null), 0);\r\n      } catch (e) {\r\n        if (cb) setTimeout(() => cb(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    rename(oldPath: unknown, newPath: unknown, cb?: (err: Error | null) => void): void {\r\n      try {\r\n        volume.renameSync(abs(oldPath), abs(newPath));\r\n        if (cb) setTimeout(() => cb(null), 0);\r\n      } catch (e) {\r\n        if (cb) setTimeout(() => cb(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    realpath(\r\n      target: unknown,\r\n      optsOrCb?: unknown,\r\n      maybeCb?: (err: Error | null, resolved?: string) => void,\r\n    ): void {\r\n      const cb = typeof optsOrCb === \"function\"\r\n        ? optsOrCb as (err: Error | null, resolved?: string) => void\r\n        : maybeCb;\r\n      volume.realpath(abs(target), cb);\r\n    },\r\n\r\n    access(\r\n      target: unknown,\r\n      modeOrCb?: number | ((err: Error | null) => void),\r\n      cb?: (err: Error | null) => void,\r\n    ): void {\r\n      volume.access(abs(target), modeOrCb, cb);\r\n    },\r\n\r\n    appendFile(\r\n      target: unknown,\r\n      data: string | Uint8Array,\r\n      optsOrCb?: unknown,\r\n      maybeCb?: (err: Error | null) => void,\r\n    ): void {\r\n      const cb = typeof optsOrCb === \"function\"\r\n        ? optsOrCb as (err: Error | null) => void\r\n        : maybeCb;\r\n      try {\r\n        volume.appendFileSync(abs(target), data);\r\n        if (cb) setTimeout(() => cb(null), 0);\r\n      } catch (e) {\r\n        if (cb) setTimeout(() => cb(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    symlink(\r\n      target: unknown,\r\n      path: unknown,\r\n      typeOrCb?: string | ((err: Error | null) => void),\r\n      cb?: (err: Error | null) => void,\r\n    ): void {\r\n      const actualCb = typeof typeOrCb === \"function\" ? typeOrCb : cb;\r\n      try {\r\n        volume.symlinkSync(abs(target), abs(path));\r\n        if (actualCb) setTimeout(() => actualCb(null), 0);\r\n      } catch (e) {\r\n        if (actualCb) setTimeout(() => actualCb(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    readlink(\r\n      target: unknown,\r\n      optsOrCb?: unknown,\r\n      maybeCb?: (err: Error | null, linkTarget?: string) => void,\r\n    ): void {\r\n      const cb = typeof optsOrCb === \"function\"\r\n        ? optsOrCb as (err: Error | null, linkTarget?: string) => void\r\n        : maybeCb;\r\n      try {\r\n        const result = volume.readlinkSync(abs(target));\r\n        if (cb) setTimeout(() => cb(null, result), 0);\r\n      } catch (e) {\r\n        if (cb) setTimeout(() => cb(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    link(\r\n      existingPath: unknown,\r\n      newPath: unknown,\r\n      cb?: (err: Error | null) => void,\r\n    ): void {\r\n      try {\r\n        volume.linkSync(abs(existingPath), abs(newPath));\r\n        if (cb) setTimeout(() => cb(null), 0);\r\n      } catch (e) {\r\n        if (cb) setTimeout(() => cb(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    chmod(\r\n      target: unknown,\r\n      mode: unknown,\r\n      cb?: (err: Error | null) => void,\r\n    ): void {\r\n      try {\r\n        volume.chmodSync(abs(target), mode as number);\r\n        if (cb) setTimeout(() => cb(null), 0);\r\n      } catch (e) {\r\n        if (cb) setTimeout(() => cb(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    chown(\r\n      target: unknown,\r\n      uid: number,\r\n      gid: number,\r\n      cb?: (err: Error | null) => void,\r\n    ): void {\r\n      try {\r\n        volume.chownSync(abs(target), uid, gid);\r\n        if (cb) setTimeout(() => cb(null), 0);\r\n      } catch (e) {\r\n        if (cb) setTimeout(() => cb(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    lchown(\r\n      target: unknown,\r\n      _uid: number,\r\n      _gid: number,\r\n      cb: (err: Error | null) => void,\r\n    ): void {\r\n      // VFS doesn't track symlink ownership — succeed silently\r\n      if (cb) setTimeout(() => cb(null), 0);\r\n    },\r\n\r\n    utimes(\r\n      target: unknown,\r\n      _atime: number | string | Date,\r\n      _mtime: number | string | Date,\r\n      cb: (err: Error | null) => void,\r\n    ): void {\r\n      // VFS doesn't track timestamps — succeed silently\r\n      if (cb) setTimeout(() => cb(null), 0);\r\n    },\r\n\r\n    lutimes(\r\n      target: unknown,\r\n      _atime: number | string | Date,\r\n      _mtime: number | string | Date,\r\n      cb: (err: Error | null) => void,\r\n    ): void {\r\n      // VFS doesn't track timestamps — succeed silently\r\n      if (cb) setTimeout(() => cb(null), 0);\r\n    },\r\n    open(\r\n      target: unknown,\r\n      flagsOrCb: string | number | ((err: Error | null, fd?: number) => void),\r\n      modeOrCb?: number | ((err: Error | null, fd?: number) => void),\r\n      cb?: (err: Error | null, fd?: number) => void,\r\n    ): void {\r\n      let flags: string | number = \"r\";\r\n      let mode: number | undefined;\r\n      let callback: (err: Error | null, fd?: number) => void;\r\n      if (typeof flagsOrCb === \"function\") {\r\n        callback = flagsOrCb;\r\n      } else {\r\n        flags = flagsOrCb;\r\n        if (typeof modeOrCb === \"function\") {\r\n          callback = modeOrCb;\r\n        } else {\r\n          mode = modeOrCb;\r\n          callback = cb!;\r\n        }\r\n      }\r\n      try {\r\n        const fd = bridge.openSync(abs(target), flags, mode);\r\n        if (callback) setTimeout(() => callback(null, fd), 0);\r\n      } catch (e) {\r\n        if (callback) setTimeout(() => callback(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    close(fd: number, cb?: (err: Error | null) => void): void {\r\n      try {\r\n        bridge.closeSync(fd);\r\n        if (cb) setTimeout(() => cb(null), 0);\r\n      } catch (e) {\r\n        if (cb) setTimeout(() => cb(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    read(\r\n      fd: number,\r\n      bufOrOpts:\r\n        | Buffer\r\n        | Uint8Array\r\n        | {\r\n            buffer: Buffer | Uint8Array;\r\n            offset?: number;\r\n            length?: number;\r\n            position?: number | null;\r\n          },\r\n      offsetOrCb?:\r\n        | number\r\n        | ((\r\n            err: Error | null,\r\n            bytesRead?: number,\r\n            buffer?: Buffer | Uint8Array,\r\n          ) => void),\r\n      length?: number,\r\n      position?: number | null,\r\n      cb?: (\r\n        err: Error | null,\r\n        bytesRead?: number,\r\n        buffer?: Buffer | Uint8Array,\r\n      ) => void,\r\n    ): void {\r\n      let buf: Buffer | Uint8Array;\r\n      let off: number;\r\n      let len: number;\r\n      let pos: number | null;\r\n      let callback: (\r\n        err: Error | null,\r\n        bytesRead?: number,\r\n        buffer?: Buffer | Uint8Array,\r\n      ) => void;\r\n\r\n      if (typeof offsetOrCb === \"function\") {\r\n        // read(fd, opts, cb) form\r\n        const opts = bufOrOpts as {\r\n          buffer: Buffer | Uint8Array;\r\n          offset?: number;\r\n          length?: number;\r\n          position?: number | null;\r\n        };\r\n        buf = opts.buffer;\r\n        off = opts.offset ?? 0;\r\n        len = opts.length ?? buf.length;\r\n        pos = opts.position ?? null;\r\n        callback = offsetOrCb;\r\n      } else {\r\n        buf = bufOrOpts as Buffer | Uint8Array;\r\n        off = (offsetOrCb as number) ?? 0;\r\n        len = length ?? buf.length;\r\n        pos = position ?? null;\r\n        callback = cb!;\r\n      }\r\n\r\n      try {\r\n        const n = bridge.readSync(fd, buf, off, len, pos);\r\n        if (callback) setTimeout(() => callback(null, n, buf), 0);\r\n      } catch (e) {\r\n        if (callback) setTimeout(() => callback(e as Error, 0, buf), 0);\r\n      }\r\n    },\r\n\r\n    write(\r\n      fd: number,\r\n      buf: Buffer | Uint8Array | string,\r\n      offsetOrCb?:\r\n        | number\r\n        | ((\r\n            err: Error | null,\r\n            written?: number,\r\n            buffer?: Buffer | Uint8Array | string,\r\n          ) => void),\r\n      lengthOrEnc?: number | string,\r\n      positionOrCb?:\r\n        | number\r\n        | null\r\n        | ((\r\n            err: Error | null,\r\n            written?: number,\r\n            buffer?: Buffer | Uint8Array | string,\r\n          ) => void),\r\n      cb?: (\r\n        err: Error | null,\r\n        written?: number,\r\n        buffer?: Buffer | Uint8Array | string,\r\n      ) => void,\r\n    ): void {\r\n      let callback: (\r\n        err: Error | null,\r\n        written?: number,\r\n        buffer?: Buffer | Uint8Array | string,\r\n      ) => void;\r\n      if (typeof offsetOrCb === \"function\") {\r\n        callback = offsetOrCb;\r\n        try {\r\n          const n = bridge.writeSync(fd, buf);\r\n          setTimeout(() => callback(null, n, buf), 0);\r\n        } catch (e) {\r\n          setTimeout(() => callback(e as Error, 0, buf), 0);\r\n        }\r\n        return;\r\n      }\r\n      if (typeof positionOrCb === \"function\") {\r\n        callback = positionOrCb;\r\n      } else {\r\n        callback = cb!;\r\n      }\r\n      try {\r\n        const off = typeof offsetOrCb === \"number\" ? offsetOrCb : undefined;\r\n        const len = typeof lengthOrEnc === \"number\" ? lengthOrEnc : undefined;\r\n        const pos = typeof positionOrCb === \"number\" ? positionOrCb : undefined;\r\n        const n = bridge.writeSync(fd, buf, off, len, pos);\r\n        if (callback) setTimeout(() => callback(null, n, buf), 0);\r\n      } catch (e) {\r\n        if (callback) setTimeout(() => callback(e as Error, 0, buf), 0);\r\n      }\r\n    },\r\n\r\n    writev(\r\n      fd: number,\r\n      buffers: ArrayBufferView[],\r\n      positionOrCb?:\r\n        | number\r\n        | null\r\n        | ((err: Error | null, bytesWritten?: number, buffers?: ArrayBufferView[]) => void),\r\n      cb?: (err: Error | null, bytesWritten?: number, buffers?: ArrayBufferView[]) => void,\r\n    ): void {\r\n      const callback = typeof positionOrCb === \"function\" ? positionOrCb : cb;\r\n      const pos = typeof positionOrCb === \"number\" ? positionOrCb : null;\r\n      try {\r\n        let totalWritten = 0;\r\n        for (const buf of buffers) {\r\n          const u8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\r\n          const n = bridge.writeSync(fd, u8 as unknown as Buffer, 0, u8.length, pos !== null ? pos + totalWritten : undefined);\r\n          totalWritten += n;\r\n        }\r\n        if (callback) setTimeout(() => callback(null, totalWritten, buffers), 0);\r\n      } catch (e) {\r\n        if (callback) setTimeout(() => callback(e as Error, 0, buffers), 0);\r\n      }\r\n    },\r\n\r\n    fstat(fd: number, optsOrCb?: unknown, maybeCb?: (err: Error | null, stats?: FileStat) => void): void {\r\n      const cb = typeof optsOrCb === \"function\"\r\n        ? optsOrCb as (err: Error | null, stats?: FileStat) => void\r\n        : maybeCb;\r\n      const entry = openFiles.get(fd);\r\n      if (!entry) {\r\n        const err = new Error(`EBADF: bad file descriptor, fstat`) as Error & {\r\n          code: string;\r\n        };\r\n        err.code = \"EBADF\";\r\n        if (cb) setTimeout(() => cb(err), 0);\r\n        return;\r\n      }\r\n      volume.stat(entry.filePath, cb);\r\n    },\r\n\r\n    futimes(\r\n      fd: number,\r\n      _atime: number | string | Date,\r\n      _mtime: number | string | Date,\r\n      cb: (err: Error | null) => void,\r\n    ): void {\r\n      // VFS doesn't track timestamps — succeed silently\r\n      if (cb) setTimeout(() => cb(null), 0);\r\n    },\r\n\r\n    fchown(\r\n      fd: number,\r\n      _uid: number,\r\n      _gid: number,\r\n      cb: (err: Error | null) => void,\r\n    ): void {\r\n      // VFS doesn't track ownership — succeed silently\r\n      if (cb) setTimeout(() => cb(null), 0);\r\n    },\r\n\r\n    fchmod(\r\n      fd: number,\r\n      _mode: number,\r\n      cb: (err: Error | null) => void,\r\n    ): void {\r\n      // VFS doesn't track permissions — succeed silently\r\n      if (cb) setTimeout(() => cb(null), 0);\r\n    },\r\n    // function constructor, not class -- graceful-fs calls fs$ReadStream.apply(this, args)\r\n    ReadStream: (() => {\r\n      function FsReadStream(this: FsReadStreamInstance, pathArg: unknown, opts?: Record<string, unknown>) {\r\n        if (!(this instanceof FsReadStream)) return new (FsReadStream as unknown as new (p: unknown, o?: Record<string, unknown>) => FsReadStreamInstance)(pathArg, opts);\r\n        const self: FsReadStreamInstance = this;\r\n        self._queue = [];\r\n        self._active = false;\r\n        self._terminated = false;\r\n        self._endFired = false;\r\n        self._endEmitted = false;\r\n        self._objectMode = false;\r\n        self._reading = false;\r\n        self._highWaterMark = 16384;\r\n        self._autoDestroy = true;\r\n        self._encoding = null;\r\n        self._readableByteLength = 0;\r\n        self._draining = false;\r\n        self.readable = true;\r\n        self.readableEnded = false;\r\n        self.readableFlowing = null;\r\n        self.destroyed = false;\r\n        self.closed = false;\r\n        self.errored = null;\r\n        self.readableObjectMode = false;\r\n        self.readableHighWaterMark = 16384;\r\n        self.readableDidRead = false;\r\n        self.readableAborted = false;\r\n        self._readableState = {\r\n          get objectMode() { return self._objectMode; },\r\n          get highWaterMark() { return self._highWaterMark; },\r\n          get ended() { return self._terminated; },\r\n          get endEmitted() { return self._endEmitted; },\r\n          set endEmitted(v: boolean) { self._endEmitted = v; },\r\n          get flowing() { return self.readableFlowing; },\r\n          set flowing(v: boolean | null) { self.readableFlowing = v; },\r\n          get reading() { return self._reading; },\r\n          get length() { return self._queue ? self._queue.length : 0; },\r\n          get destroyed() { return self.destroyed; },\r\n          get errored() { return self.errored; },\r\n          get closed() { return self.closed; },\r\n          pipes: [],\r\n          awaitDrainWriters: null,\r\n          multiAwaitDrain: false,\r\n          readableListening: false,\r\n          resumeScheduled: false,\r\n          paused: true,\r\n          emitClose: true,\r\n          get autoDestroy() { return self._autoDestroy; },\r\n          defaultEncoding: \"utf8\",\r\n          needReadable: false,\r\n          emittedReadable: false,\r\n          readingMore: false,\r\n          dataEmitted: false,\r\n        };\r\n        self.path = abs(pathArg);\r\n        self.fd = (opts?.fd as number | null) ?? null;\r\n        self.flags = (opts?.flags as string) ?? \"r\";\r\n        self.mode = (opts?.mode as number) ?? 0o666;\r\n        self.autoClose = opts?.autoClose !== false;\r\n        queueMicrotask(() => self.open());\r\n      }\r\n      FsReadStream.prototype = Object.create(Readable.prototype);\r\n      FsReadStream.prototype.constructor = FsReadStream;\r\n\r\n      FsReadStream.prototype.open = function () {\r\n        try {\r\n          this.fd = bridge.openSync(this.path, this.flags, this.mode);\r\n          this.emit(\"open\", this.fd);\r\n          this.emit(\"ready\");\r\n          this._read();\r\n        } catch (err) {\r\n          this.destroy(err);\r\n        }\r\n      };\r\n\r\n      FsReadStream.prototype._read = function () {\r\n        if (this.fd === null) return;\r\n        try {\r\n          const data = volume.readFileSync(this.path);\r\n          this.push(Buffer.from(data));\r\n          this.push(null);\r\n        } catch (err) {\r\n          this.destroy(err);\r\n        }\r\n      };\r\n\r\n      FsReadStream.prototype.close = function (cb?: (err?: Error | null) => void) {\r\n        if (this.fd !== null) {\r\n          try {\r\n            bridge.closeSync(this.fd);\r\n          } catch {}\r\n          this.fd = null;\r\n        }\r\n        this.destroy();\r\n        if (cb) cb(null);\r\n      };\r\n\r\n      return FsReadStream as any;\r\n    })(),\r\n\r\n    // function constructor, not class -- graceful-fs calls fs$WriteStream.apply(this, args)\r\n    WriteStream: (() => {\r\n      function FsWriteStream(this: FsWriteStreamInstance, pathArg: unknown, opts?: Record<string, unknown>) {\r\n        if (!(this instanceof FsWriteStream)) return new (FsWriteStream as unknown as new (p: unknown, o?: Record<string, unknown>) => FsWriteStreamInstance)(pathArg, opts);\r\n        const self: FsWriteStreamInstance = this;\r\n        self._parts = [];\r\n        self._closed = false;\r\n        self._objectMode = false;\r\n        self._highWaterMark = 16384;\r\n        self._autoDestroy = true;\r\n        self._corked = 0;\r\n        self._corkedWrites = [];\r\n        self._writableByteLength = 0;\r\n        self.writable = true;\r\n        self.writableEnded = false;\r\n        self.writableFinished = false;\r\n        self.writableNeedDrain = false;\r\n        self.destroyed = false;\r\n        self.closed = false;\r\n        self.errored = null;\r\n        self.writableObjectMode = false;\r\n        self.writableHighWaterMark = 16384;\r\n        self.writableCorked = 0;\r\n        self._writableState = {\r\n          get objectMode() { return self._objectMode; },\r\n          get highWaterMark() { return self._highWaterMark; },\r\n          get finished() { return self.writableFinished; },\r\n          set finished(v: boolean) { self.writableFinished = v; },\r\n          get ended() { return self.writableEnded; },\r\n          set ended(v: boolean) { self.writableEnded = v; },\r\n          get destroyed() { return self.destroyed; },\r\n          get errored() { return self.errored; },\r\n          get closed() { return self.closed; },\r\n          get corked() { return self._corked; },\r\n          get length() { return self._writableByteLength; },\r\n          get needDrain() { return self.writableNeedDrain; },\r\n          writing: false,\r\n          errorEmitted: false,\r\n          emitClose: true,\r\n          get autoDestroy() { return self._autoDestroy; },\r\n          defaultEncoding: \"utf8\",\r\n          finalCalled: false,\r\n          ending: false,\r\n          bufferedIndex: 0,\r\n        };\r\n        self.path = abs(pathArg);\r\n        self.fd = (opts?.fd as number | null) ?? null;\r\n        self.flags = (opts?.flags as string) ?? \"w\";\r\n        self.mode = (opts?.mode as number) ?? 0o666;\r\n        self.autoClose = opts?.autoClose !== false;\r\n        self.bytesWritten = 0;\r\n        self._chunks = [] as Uint8Array[];\r\n        self._enc = new TextEncoder();\r\n        queueMicrotask(() => self.open());\r\n      }\r\n      FsWriteStream.prototype = Object.create(Writable.prototype);\r\n      FsWriteStream.prototype.constructor = FsWriteStream;\r\n\r\n      FsWriteStream.prototype.open = function () {\r\n        try {\r\n          this.fd = bridge.openSync(this.path, this.flags, this.mode);\r\n          this.emit(\"open\", this.fd);\r\n          this.emit(\"ready\");\r\n        } catch (err) {\r\n          this.destroy(err);\r\n        }\r\n      };\r\n\r\n      FsWriteStream.prototype._write = function (\r\n        chunk: Uint8Array | string,\r\n        _encoding: string,\r\n        callback: (err?: Error | null) => void,\r\n      ) {\r\n        const bytes =\r\n          typeof chunk === \"string\" ? this._enc.encode(chunk) : chunk;\r\n        this._chunks.push(bytes);\r\n        this.bytesWritten += bytes.length;\r\n        callback(null);\r\n      };\r\n\r\n      FsWriteStream.prototype.close = function (cb?: (err?: Error | null) => void) {\r\n        this._flushChunks();\r\n        if (this.fd !== null) {\r\n          try {\r\n            bridge.closeSync(this.fd);\r\n          } catch {}\r\n          this.fd = null;\r\n        }\r\n        this.emit(\"finish\");\r\n        this.emit(\"close\");\r\n        if (cb) cb(null);\r\n      };\r\n\r\n      FsWriteStream.prototype._flushChunks = function () {\r\n        if (!this._chunks || this._chunks.length === 0) return;\r\n        const totalLen = this._chunks.reduce((sum: number, c: Uint8Array) => sum + c.length, 0);\r\n        const merged = new Uint8Array(totalLen);\r\n        let pos = 0;\r\n        for (const c of this._chunks) {\r\n          merged.set(c, pos);\r\n          pos += c.length;\r\n        }\r\n        const isAppend = this.flags === \"a\";\r\n        if (isAppend) {\r\n          volume.appendFileSync(this.path, merged);\r\n        } else {\r\n          volume.writeFileSync(this.path, merged);\r\n        }\r\n        this._chunks = [];\r\n      };\r\n\r\n      FsWriteStream.prototype.end = function (chunkOrCb?: any, encOrCb?: any, cb?: any) {\r\n        if (typeof chunkOrCb === \"function\") {\r\n          cb = chunkOrCb;\r\n          chunkOrCb = undefined;\r\n        } else if (typeof encOrCb === \"function\") {\r\n          cb = encOrCb;\r\n          encOrCb = undefined;\r\n        }\r\n        if (chunkOrCb !== undefined) {\r\n          const bytes =\r\n            typeof chunkOrCb === \"string\"\r\n              ? this._enc.encode(chunkOrCb)\r\n              : chunkOrCb;\r\n          this._chunks.push(bytes);\r\n          this.bytesWritten += bytes.length;\r\n        }\r\n        this._flushChunks();\r\n        if (this.fd !== null && this.autoClose) {\r\n          try {\r\n            bridge.closeSync(this.fd);\r\n          } catch {}\r\n          this.fd = null;\r\n        }\r\n        this.emit(\"finish\");\r\n        this.emit(\"close\");\r\n        if (cb) cb();\r\n        return this;\r\n      };\r\n\r\n      return FsWriteStream as any;\r\n    })(),\r\n\r\n    createReadStream(\r\n      target: unknown,\r\n      opts?: { encoding?: string; start?: number; end?: number },\r\n    ): Readable {\r\n      const p = abs(target);\r\n      const stream: any = new Readable();\r\n      stream.path = p;\r\n      stream.fd = null;\r\n      stream.close = function (cb?: (err?: Error | null) => void) {\r\n        stream.destroy();\r\n        if (cb) cb(null);\r\n      };\r\n      stream.open = function () {\r\n        stream.fd = 42;\r\n        stream.emit(\"open\", stream.fd);\r\n      };\r\n      setTimeout(() => {\r\n        try {\r\n          stream.open();\r\n          const data = volume.readFileSync(p);\r\n          const start = opts?.start ?? 0;\r\n          const end = opts?.end !== undefined ? opts.end + 1 : data.length;\r\n          const chunk = data.slice(start, end);\r\n          stream.push(Buffer.from(chunk));\r\n          stream.push(null);\r\n        } catch (err) {\r\n          stream.destroy(err as Error);\r\n        }\r\n      }, 0);\r\n      return stream;\r\n    },\r\n\r\n    createWriteStream(\r\n      target: unknown,\r\n      opts?: { encoding?: string; flags?: string },\r\n    ): Writable {\r\n      const p = abs(target);\r\n      const isAppend = opts?.flags === \"a\";\r\n      const chunks: Uint8Array[] = [];\r\n      const enc = new TextEncoder();\r\n      let bytesWritten = 0;\r\n      let closed = false;\r\n\r\n      const stream: any = new Writable();\r\n      stream.path = p;\r\n      stream.fd = null;\r\n      stream.open = function () {\r\n        stream.fd = 43;\r\n        stream.emit(\"open\", stream.fd);\r\n      };\r\n      Object.defineProperty(stream, \"bytesWritten\", {\r\n        get: () => bytesWritten,\r\n        enumerable: true,\r\n      });\r\n      queueMicrotask(() => stream.open());\r\n\r\n      const flushAndClose = function (cb?: (err?: Error | null) => void) {\r\n        if (closed) {\r\n          if (cb) cb(null);\r\n          return;\r\n        }\r\n        closed = true;\r\n        const totalLen = chunks.reduce((sum, c) => sum + c.length, 0);\r\n        const merged = new Uint8Array(totalLen);\r\n        let pos = 0;\r\n        for (const c of chunks) {\r\n          merged.set(c, pos);\r\n          pos += c.length;\r\n        }\r\n\r\n        try {\r\n          if (isAppend) {\r\n            volume.appendFileSync(p, merged);\r\n          } else {\r\n            volume.writeFileSync(p, merged);\r\n          }\r\n        } catch (e) {\r\n          if (cb) cb(e as Error);\r\n          return;\r\n        }\r\n\r\n        stream.emit(\"finish\");\r\n        stream.emit(\"close\");\r\n        if (cb) cb(null);\r\n      };\r\n\r\n      stream.write = function (\r\n        chunk: Uint8Array | string,\r\n        encOrCb?: string | ((err?: Error | null) => void),\r\n        cb?: (err?: Error | null) => void,\r\n      ): boolean {\r\n        const bytes = typeof chunk === \"string\" ? enc.encode(chunk) : chunk;\r\n        chunks.push(bytes);\r\n        bytesWritten += bytes.length;\r\n        const callback = typeof encOrCb === \"function\" ? encOrCb : cb;\r\n        if (callback) queueMicrotask(() => callback(null));\r\n        return true;\r\n      };\r\n\r\n      stream.end = function (\r\n        chunkOrCb?: Uint8Array | string | (() => void),\r\n        encOrCb?: string | (() => void),\r\n        cb?: () => void,\r\n      ): Writable {\r\n        if (typeof chunkOrCb === \"function\") {\r\n          cb = chunkOrCb;\r\n        } else if (chunkOrCb !== undefined) {\r\n          const bytes =\r\n            typeof chunkOrCb === \"string\" ? enc.encode(chunkOrCb) : chunkOrCb;\r\n          chunks.push(bytes);\r\n          bytesWritten += bytes.length;\r\n        }\r\n        if (typeof encOrCb === \"function\") cb = encOrCb;\r\n\r\n        flushAndClose(cb as any);\r\n        return stream;\r\n      };\r\n\r\n      stream.close = function (cb?: (err?: Error | null) => void) {\r\n        flushAndClose(cb);\r\n      };\r\n\r\n      return stream;\r\n    },\r\n    opendirSync(target: unknown, _opts?: unknown): Dir {\r\n      const p = abs(target);\r\n      const names = volume.readdirSync(p);\r\n      const entries = toDirents(p, names);\r\n      return new Dir(p, entries);\r\n    },\r\n\r\n    opendir(\r\n      target: unknown,\r\n      optsOrCb?: unknown | ((err: Error | null, dir?: Dir) => void),\r\n      cb?: (err: Error | null, dir?: Dir) => void,\r\n    ): void | Promise<Dir> {\r\n      const callback = typeof optsOrCb === \"function\" ? optsOrCb as (err: Error | null, dir?: Dir) => void : cb;\r\n      try {\r\n        const dir = bridge.opendirSync(target);\r\n        if (callback) {\r\n          queueMicrotask(() => callback(null, dir));\r\n          return;\r\n        }\r\n        return Promise.resolve(dir);\r\n      } catch (e) {\r\n        if (callback) {\r\n          queueMicrotask(() => callback(e as Error));\r\n          return;\r\n        }\r\n        return Promise.reject(e);\r\n      }\r\n    },\r\n    exists(target: unknown, cb: (exists: boolean) => void): void {\r\n      const result = volume.existsSync(abs(target));\r\n      setTimeout(() => cb(result), 0);\r\n    },\r\n    lchmodSync(_target: unknown, _mode: number): void {\r\n      // VFS doesn't track symlink permissions — no-op\r\n    },\r\n\r\n    lchmod(\r\n      _target: unknown,\r\n      _mode: number,\r\n      cb: (err: Error | null) => void,\r\n    ): void {\r\n      // VFS doesn't track symlink permissions — succeed silently\r\n      if (cb) setTimeout(() => cb(null), 0);\r\n    },\r\n    fdatasync(fd: number, cb: (err: Error | null) => void): void {\r\n      // VFS is always sync — no-op\r\n      if (cb) setTimeout(() => cb(null), 0);\r\n    },\r\n\r\n    fsync(fd: number, cb: (err: Error | null) => void): void {\r\n      // VFS is always sync — no-op\r\n      if (cb) setTimeout(() => cb(null), 0);\r\n    },\r\n\r\n    ftruncate(\r\n      fd: number,\r\n      lenOrCb?: number | ((err: Error | null) => void),\r\n      cb?: (err: Error | null) => void,\r\n    ): void {\r\n      const callback = typeof lenOrCb === \"function\" ? lenOrCb : cb;\r\n      const len = typeof lenOrCb === \"number\" ? lenOrCb : 0;\r\n      try {\r\n        bridge.ftruncateSync(fd, len);\r\n        if (callback) setTimeout(() => callback(null), 0);\r\n      } catch (e) {\r\n        if (callback) setTimeout(() => callback(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    truncate(\r\n      target: unknown,\r\n      lenOrCb?: number | ((err: Error | null) => void),\r\n      cb?: (err: Error | null) => void,\r\n    ): void {\r\n      const callback = typeof lenOrCb === \"function\" ? lenOrCb : cb;\r\n      const len = typeof lenOrCb === \"number\" ? lenOrCb : 0;\r\n      try {\r\n        volume.truncateSync(abs(target), len);\r\n        if (callback) setTimeout(() => callback(null), 0);\r\n      } catch (e) {\r\n        if (callback) setTimeout(() => callback(e as Error), 0);\r\n      }\r\n    },\r\n\r\n    mkdtemp(\r\n      prefix: string,\r\n      optsOrCb?: unknown | ((err: Error | null, folder?: string) => void),\r\n      cb?: (err: Error | null, folder?: string) => void,\r\n    ): void {\r\n      const callback = typeof optsOrCb === \"function\"\r\n        ? optsOrCb as (err: Error | null, folder?: string) => void\r\n        : cb;\r\n      try {\r\n        const result = bridge.mkdtempSync(prefix);\r\n        if (callback) setTimeout(() => callback(null, result), 0);\r\n      } catch (e) {\r\n        if (callback) setTimeout(() => callback(e as Error), 0);\r\n      }\r\n    },\r\n    readvSync(fd: number, buffers: ArrayBufferView[], pos?: number | null): number {\r\n      let totalRead = 0;\r\n      for (const buf of buffers) {\r\n        const u8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\r\n        const n = bridge.readSync(\r\n          fd,\r\n          u8 as unknown as Buffer,\r\n          0,\r\n          u8.length,\r\n          pos != null ? pos + totalRead : null,\r\n        );\r\n        totalRead += n;\r\n        if (n < u8.length) break; // short read — EOF\r\n      }\r\n      return totalRead;\r\n    },\r\n\r\n    readv(\r\n      fd: number,\r\n      buffers: ArrayBufferView[],\r\n      positionOrCb?:\r\n        | number\r\n        | null\r\n        | ((err: Error | null, bytesRead?: number, buffers?: ArrayBufferView[]) => void),\r\n      cb?: (err: Error | null, bytesRead?: number, buffers?: ArrayBufferView[]) => void,\r\n    ): void {\r\n      const callback = typeof positionOrCb === \"function\" ? positionOrCb : cb;\r\n      const pos = typeof positionOrCb === \"number\" ? positionOrCb : null;\r\n      try {\r\n        const n = bridge.readvSync(fd, buffers, pos);\r\n        if (callback) setTimeout(() => callback(null, n, buffers), 0);\r\n      } catch (e) {\r\n        if (callback) setTimeout(() => callback(e as Error, 0, buffers), 0);\r\n      }\r\n    },\r\n    cpSync(\r\n      src: unknown,\r\n      dest: unknown,\r\n      opts?: { recursive?: boolean; force?: boolean; errorOnExist?: boolean },\r\n    ): void {\r\n      const srcPath = abs(src);\r\n      const destPath = abs(dest);\r\n      const st = volume.statSync(srcPath);\r\n      if (st.isDirectory()) {\r\n        if (!opts?.recursive) {\r\n          const err = new Error(\r\n            `EISDIR: illegal operation on a directory, cp '${srcPath}' -> '${destPath}'`,\r\n          ) as Error & { code: string };\r\n          err.code = \"EISDIR\";\r\n          throw err;\r\n        }\r\n        if (!volume.existsSync(destPath)) {\r\n          volume.mkdirSync(destPath, { recursive: true });\r\n        }\r\n        const children = volume.readdirSync(srcPath);\r\n        for (const child of children) {\r\n          const childSrc = srcPath.endsWith(\"/\") ? srcPath + child : srcPath + \"/\" + child;\r\n          const childDest = destPath.endsWith(\"/\") ? destPath + child : destPath + \"/\" + child;\r\n          bridge.cpSync(childSrc, childDest, opts);\r\n        }\r\n      } else {\r\n        if (opts?.errorOnExist && volume.existsSync(destPath)) {\r\n          const err = new Error(\r\n            `EEXIST: file already exists, cp '${srcPath}' -> '${destPath}'`,\r\n          ) as Error & { code: string };\r\n          err.code = \"EEXIST\";\r\n          throw err;\r\n        }\r\n        if (!opts?.force && volume.existsSync(destPath)) return;\r\n        const data = volume.readFileSync(srcPath);\r\n        const parent = destPath.substring(0, destPath.lastIndexOf(\"/\")) || \"/\";\r\n        if (!volume.existsSync(parent)) {\r\n          volume.mkdirSync(parent, { recursive: true });\r\n        }\r\n        volume.writeFileSync(destPath, data);\r\n      }\r\n    },\r\n\r\n    cp(\r\n      src: unknown,\r\n      dest: unknown,\r\n      optsOrCb?:\r\n        | { recursive?: boolean; force?: boolean; errorOnExist?: boolean }\r\n        | ((err: Error | null) => void),\r\n      cb?: (err: Error | null) => void,\r\n    ): void {\r\n      const callback = typeof optsOrCb === \"function\" ? optsOrCb : cb;\r\n      const opts = typeof optsOrCb === \"object\" ? optsOrCb : undefined;\r\n      try {\r\n        bridge.cpSync(src, dest, opts);\r\n        if (callback) setTimeout(() => callback(null), 0);\r\n      } catch (e) {\r\n        if (callback) setTimeout(() => callback(e as Error), 0);\r\n      }\r\n    },\r\n    statfsSync(_target: unknown, _opts?: unknown): StatFs {\r\n      return new StatFs();\r\n    },\r\n\r\n    statfs(\r\n      target: unknown,\r\n      optsOrCb?: unknown | ((err: Error | null, stats?: StatFs) => void),\r\n      cb?: (err: Error | null, stats?: StatFs) => void,\r\n    ): void {\r\n      const callback = typeof optsOrCb === \"function\"\r\n        ? optsOrCb as (err: Error | null, stats?: StatFs) => void\r\n        : cb;\r\n      const result = new StatFs();\r\n      if (callback) setTimeout(() => callback(null, result), 0);\r\n    },\r\n    globSync(\r\n      pattern: string | string[],\r\n      opts?: { cwd?: string; exclude?: string[] | ((p: string) => boolean) },\r\n    ): string[] {\r\n      // Reuse the glob logic from promises\r\n      const patterns = Array.isArray(pattern) ? pattern : [pattern];\r\n      const cwd = opts?.cwd ? abs(opts.cwd) : (getCwd ? getCwd() : \"/\");\r\n      const exclude = opts?.exclude;\r\n\r\n      function expandBraces(pat: string): string[] {\r\n        const m = pat.match(/^([^{]*)\\{([^}]+)\\}(.*)$/);\r\n        if (!m) return [pat];\r\n        const prefix = m[1], alts = m[2].split(\",\"), suffix = m[3];\r\n        const result: string[] = [];\r\n        for (const alt of alts) result.push(...expandBraces(prefix + alt + suffix));\r\n        return result;\r\n      }\r\n      function globToRegex(pat: string): RegExp {\r\n        let re = \"\";\r\n        let i = 0;\r\n        while (i < pat.length) {\r\n          const ch = pat[i];\r\n          if (ch === \"*\" && pat[i + 1] === \"*\") {\r\n            if (pat[i + 2] === \"/\") { re += \"(?:.+/)?\"; i += 3; }\r\n            else { re += \".*\"; i += 2; }\r\n          } else if (ch === \"*\") { re += \"[^/]*\"; i++; }\r\n          else if (ch === \"?\") { re += \"[^/]\"; i++; }\r\n          else if (\".()^$|\\\\+\".includes(ch)) { re += \"\\\\\" + ch; i++; }\r\n          else { re += ch; i++; }\r\n        }\r\n        return new RegExp(\"^\" + re + \"$\");\r\n      }\r\n      function walk(dir: string, base: string): string[] {\r\n        const results: string[] = [];\r\n        let entries: string[];\r\n        try { entries = volume.readdirSync(dir); } catch { return results; }\r\n        for (const name of entries) {\r\n          const full = dir.endsWith(\"/\") ? dir + name : dir + \"/\" + name;\r\n          const rel = base ? base + \"/\" + name : name;\r\n          let isDir = false;\r\n          try { isDir = volume.statSync(full).isDirectory(); } catch {}\r\n          if (isDir) results.push(...walk(full, rel));\r\n          else results.push(rel);\r\n        }\r\n        return results;\r\n      }\r\n\r\n      const regexes: RegExp[] = [];\r\n      for (const p of patterns) {\r\n        for (const expanded of expandBraces(p)) regexes.push(globToRegex(expanded));\r\n      }\r\n      let excludeFn: ((p: string) => boolean) | null = null;\r\n      if (typeof exclude === \"function\") excludeFn = exclude;\r\n      else if (Array.isArray(exclude) && exclude.length > 0) {\r\n        const exRegexes: RegExp[] = [];\r\n        for (const ep of exclude) {\r\n          for (const expanded of expandBraces(ep)) exRegexes.push(globToRegex(expanded));\r\n        }\r\n        excludeFn = (p: string) => exRegexes.some((r) => r.test(p));\r\n      }\r\n      const allFiles = walk(cwd, \"\");\r\n      return allFiles.filter((f) => {\r\n        if (excludeFn && excludeFn(f)) return false;\r\n        return regexes.some((r) => r.test(f));\r\n      });\r\n    },\r\n\r\n    glob(\r\n      pattern: string | string[],\r\n      optsOrCb?:\r\n        | { cwd?: string; exclude?: string[] | ((p: string) => boolean) }\r\n        | ((err: Error | null, matches?: string[]) => void),\r\n      cb?: (err: Error | null, matches?: string[]) => void,\r\n    ): void {\r\n      const callback = typeof optsOrCb === \"function\" ? optsOrCb : cb;\r\n      const opts = typeof optsOrCb === \"object\" ? optsOrCb : undefined;\r\n      try {\r\n        const result = bridge.globSync(pattern, opts);\r\n        if (callback) setTimeout(() => callback(null, result), 0);\r\n      } catch (e) {\r\n        if (callback) setTimeout(() => callback(e as Error), 0);\r\n      }\r\n    },\r\n    openAsBlob(target: unknown, _opts?: { type?: string }): Promise<Blob> {\r\n      try {\r\n        const p = abs(target);\r\n        const data = volume.readFileSync(p);\r\n        const type = _opts?.type || \"\";\r\n        const copy = new Uint8Array(data).buffer;\r\n        return Promise.resolve(new Blob([copy], { type }));\r\n      } catch (e) {\r\n        return Promise.reject(e);\r\n      }\r\n    },\r\n    StatFs: StatFs as any,\r\n    StatWatcher: StatWatcher as any,\r\n\r\n    promises: promisesApi,\r\n    constants: fsConst,\r\n  } as FsBridge;\r\n\r\n  return bridge;\r\n}\r\n\r\nexport default buildFileSystemBridge;\r\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// 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 segment = segments[idx];\r\n    if (!segment) continue;\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  return targetPath.charAt(0) === '/';\r\n}\r\n\r\nexport function dirname(targetPath: string): string {\r\n  if (!targetPath) return '.';\r\n  const clean = normalize(targetPath);\r\n  const slashPos = clean.lastIndexOf('/');\r\n  if (slashPos < 0) return '.';\r\n  if (slashPos === 0) return '/';\r\n  return clean.substring(0, slashPos);\r\n}\r\n\r\nexport function basename(targetPath: string, suffix?: string): string {\r\n  if (!targetPath) return '';\r\n  const clean = normalize(targetPath);\r\n  let name = clean.substring(clean.lastIndexOf('/') + 1);\r\n  if (suffix && name.endsWith(suffix)) {\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\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  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  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  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      return stream;\r\n    },\r\n    once(evt, fn) {\r\n      bus.once(evt, fn);\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      return bus.emit(evt, ...args);\r\n    },\r\n    addListener(evt, fn) {\r\n      bus.addListener(evt, fn);\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      return stream;\r\n    },\r\n    prependOnceListener(evt, fn) {\r\n      bus.prependOnceListener(evt, fn);\r\n      return stream;\r\n    },\r\n    eventNames() {\r\n      return bus.eventNames();\r\n    },\r\n    pause() {\r\n      return stream;\r\n    },\r\n    resume() {\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      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  return stream;\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      return [secs - prev[0], nanos - prev[1]];\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    exit(code = 0) {\r\n      bus.emit(\"exit\", code);\r\n      if (config?.onExit) config.onExit(code);\r\n      throw new Error(`Process exited with code ${code}`);\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    _getActiveRequests(): unknown[] {\r\n      return [];\r\n    },\r\n    _getActiveHandles(): unknown[] {\r\n      return [];\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\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  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  return this;\r\n};\r\n\r\nTcpSocket.prototype.unref = function unref(): any {\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  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  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  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  return this;\r\n};\r\n\r\nTcpServer.prototype.unref = function unref(): any {\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","// Crypto polyfill using Web Crypto API with synchronous fallbacks\r\n\r\nimport { Buffer } from \"./buffer\";\r\nimport { EventEmitter } from \"./events\";\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 mixHash(input: Uint8Array, alg: string): Uint8Array {\r\n  const size = hashOutputSize(alg);\r\n  const out = new Uint8Array(size);\r\n\r\n  let a = 0xdeadbeef | 0;\r\n  let b = 0x41c6ce57 | 0;\r\n\r\n  for (let i = 0; i < input.length; i++) {\r\n    a = Math.imul(a ^ input[i], 2654435761);\r\n    b = Math.imul(b ^ input[i], 1597334677);\r\n  }\r\n\r\n  a =\r\n    Math.imul(a ^ (a >>> 16), 2246822507) ^\r\n    Math.imul(b ^ (b >>> 13), 3266489909);\r\n  b =\r\n    Math.imul(b ^ (b >>> 16), 2246822507) ^\r\n    Math.imul(a ^ (a >>> 13), 3266489909);\r\n\r\n  for (let i = 0; i < size; i++) {\r\n    const source = i < size >>> 1 ? a : b;\r\n    out[i] = (source >>> ((i & 3) * 8)) & 0xff;\r\n    a = (Math.imul(a, 1103515245) + 12345) | 0;\r\n    b = (Math.imul(b, 1103515245) + 12345) | 0;\r\n  }\r\n  return out;\r\n}\r\n\r\nfunction mixHmac(data: Uint8Array, key: Uint8Array, alg: string): Uint8Array {\r\n  const merged = new Uint8Array(key.length + data.length);\r\n  merged.set(key, 0);\r\n  merged.set(data, key.length);\r\n  return mixHash(merged, alg);\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 = mixHash(merged, this._alg);\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 result = mixHmac(merged, this._key, this._alg);\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    let u = mixHmac(saltPlusIdx, pwBuf, alg);\r\n    const accum = new Uint8Array(u);\r\n\r\n    for (let r = 1; r < rounds; r++) {\r\n      u = mixHmac(u, pwBuf, alg);\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  const keyBytes =\r\n    keyInfo.raw instanceof Uint8Array ? keyInfo.raw : new Uint8Array(0);\r\n  const merged = new Uint8Array(keyBytes.length + data.length);\r\n  merged.set(keyBytes, 0);\r\n  merged.set(data, keyBytes.length);\r\n  return Buffer.from(mixHash(merged, alg));\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  const expected = syncSign(alg, data, keyInfo);\r\n  return timingSafeEqual(Buffer.from(sig), expected);\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","// HTTP polyfill -- IncomingMessage, ServerResponse, Server, ClientRequest (fetch-backed),\r\n// createServer, request, get, Agent, STATUS_CODES, WebSocket upgrade bridging.\r\n// Uses function constructors (not classes) for pre-ES6 inheritance compat.\r\n\r\nimport { EventEmitter, type EventHandler } from \"./events\";\r\nimport { Readable, Writable } from \"./stream\";\r\nimport { Buffer } from \"./buffer\";\r\nimport { TcpSocket, TcpServer, type NetAddress } from \"./net\";\r\nimport { createHash } from \"./crypto\";\r\nimport { ref as _elRef, unref as _elUnref } from \"../helpers/event-loop\";\r\nimport { TIMEOUTS } from \"../constants/config\";\r\n\r\n// capture real browser WebSocket before any bundled lib can overwrite it\r\nconst _runningInBrowser =\r\n  typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\r\nconst _NativeWebSocket: typeof globalThis.WebSocket | null =\r\n  _runningInBrowser && typeof globalThis.WebSocket === \"function\"\r\n    ? globalThis.WebSocket\r\n    : null;\r\n\r\n// Types\r\n\r\nexport type HttpHandler = (\r\n  incoming: IncomingMessage,\r\n  outgoing: ServerResponse,\r\n) => void | Promise<void>;\r\n\r\nexport interface ConnectionOptions {\r\n  method?: string;\r\n  path?: string;\r\n  headers?: Record<string, string | string[]>;\r\n  hostname?: string;\r\n  host?: string;\r\n  port?: number;\r\n}\r\n\r\nexport interface CompletedResponse {\r\n  statusCode: number;\r\n  statusMessage: string;\r\n  headers: Record<string, string>;\r\n  body: Buffer;\r\n}\r\n\r\n// IncomingMessage\r\n\r\nexport interface IncomingMessage extends Readable {\r\n  httpVersion: string;\r\n  httpVersionMajor: number;\r\n  httpVersionMinor: number;\r\n  complete: boolean;\r\n  headers: Record<string, string | string[] | undefined>;\r\n  rawHeaders: string[];\r\n  trailers: Record<string, string | undefined>;\r\n  rawTrailers: string[];\r\n  method?: string;\r\n  url?: string;\r\n  statusCode?: number;\r\n  statusMessage?: string;\r\n  aborted: boolean;\r\n  socket: TcpSocket;\r\n  connection: TcpSocket;\r\n  setTimeout(ms: number, handler?: () => void): this;\r\n  destroy(err?: Error): this;\r\n  _injectBody(raw: Buffer | string | null): void;\r\n}\r\n\r\nexport interface IncomingMessageConstructor {\r\n  new (sock?: TcpSocket): IncomingMessage;\r\n  (this: any, sock?: TcpSocket): void;\r\n  prototype: any;\r\n  build(\r\n    verb: string,\r\n    target: string,\r\n    hdrs: Record<string, string>,\r\n    payload?: Buffer | string,\r\n  ): IncomingMessage;\r\n}\r\n\r\nexport const IncomingMessage = function IncomingMessage(this: any, sock?: TcpSocket) {\r\n  if (!this) return;\r\n  Readable.call(this);\r\n\r\n  this.httpVersion = \"1.1\";\r\n  this.httpVersionMajor = 1;\r\n  this.httpVersionMinor = 1;\r\n  this.complete = false;\r\n  this.headers = {};\r\n  this.rawHeaders = [];\r\n  this.trailers = {};\r\n  this.rawTrailers = [];\r\n  this.method = undefined;\r\n  this.url = undefined;\r\n  this.statusCode = undefined;\r\n  this.statusMessage = undefined;\r\n  this.aborted = false;\r\n  this._payload = null;\r\n  this.socket = sock ?? new TcpSocket();\r\n  this.connection = this.socket;\r\n} as unknown as IncomingMessageConstructor;\r\n\r\nObject.setPrototypeOf(IncomingMessage.prototype, Readable.prototype);\r\n\r\nIncomingMessage.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\nIncomingMessage.prototype.destroy = function destroy(err?: Error): any {\r\n  Readable.prototype.destroy.call(this, err);\r\n  return this;\r\n};\r\n\r\nIncomingMessage.prototype._injectBody = function _injectBody(raw: Buffer | string | null): void {\r\n  if (raw === null) {\r\n    this._payload = null;\r\n  } else {\r\n    this._payload = typeof raw === \"string\" ? Buffer.from(raw) : raw;\r\n  }\r\n  // Defer push to next microtask so that stream consumers (body-parser, raw-body)\r\n  // can attach 'data'/'end' listeners before the stream is marked as ended.\r\n  // Without this, push(null) sets readable=false immediately and raw-body\r\n  // bails out with \"stream is not readable\".\r\n  const self = this;\r\n  queueMicrotask(() => {\r\n    if (self._payload) self.push(self._payload);\r\n    self.push(null);\r\n    self.complete = true;\r\n  });\r\n};\r\n\r\nIncomingMessage.build = function build(\r\n  verb: string,\r\n  target: string,\r\n  hdrs: Record<string, string>,\r\n  payload?: Buffer | string,\r\n): IncomingMessage {\r\n  const sock = new TcpSocket();\r\n  sock.remoteAddress = \"127.0.0.1\";\r\n  sock.remotePort = 0;\r\n  sock.remoteFamily = \"IPv4\";\r\n  const msg = new IncomingMessage(sock);\r\n  msg.method = verb;\r\n  msg.url = target;\r\n  // Node.js always lowercases header keys in req.headers\r\n  const lowerHdrs: Record<string, string> = {};\r\n  for (const [k, v] of Object.entries(hdrs)) {\r\n    lowerHdrs[k.toLowerCase()] = v;\r\n    msg.rawHeaders.push(k, v);\r\n  }\r\n  msg.headers = lowerHdrs;\r\n  if (payload) {\r\n    msg._injectBody(payload);\r\n  } else {\r\n    // Defer end signal for bodyless requests too, for consistent behavior\r\n    queueMicrotask(() => {\r\n      msg.push(null);\r\n      msg.complete = true;\r\n    });\r\n  }\r\n  return msg;\r\n};\r\n\r\n// ServerResponse\r\n\r\nexport interface ServerResponse extends Writable {\r\n  statusCode: number;\r\n  statusMessage: string;\r\n  headersSent: boolean;\r\n  finished: boolean;\r\n  sendDate: boolean;\r\n  socket: TcpSocket | null;\r\n  req: IncomingMessage;\r\n  connection: TcpSocket | null;\r\n  _onComplete(fn: (r: CompletedResponse) => void): void;\r\n  assignSocket(socket: TcpSocket): void;\r\n  detachSocket(socket: TcpSocket): void;\r\n  setHeader(key: string, val: string | string[] | number): this;\r\n  getHeader(key: string): string | string[] | undefined;\r\n  getHeaders(): Record<string, string | string[]>;\r\n  getHeaderNames(): string[];\r\n  hasHeader(key: string): boolean;\r\n  appendHeader(key: string, val: string | string[]): this;\r\n  removeHeader(key: string): void;\r\n  flushHeaders(): void;\r\n  writeContinue(): void;\r\n  writeProcessing(): void;\r\n  writeEarlyHints(hints: Record<string, string | string[]>, cb?: () => void): void;\r\n  writeHead(code: number, msgOrHdrs?: any, extraHdrs?: any): this;\r\n  write(data: any, encOrCb?: any, cb?: any): boolean;\r\n  end(dataOrCb?: any, encOrCb?: any, cb?: any): this;\r\n  send(payload: string | Buffer | object): this;\r\n  setTimeout(ms: number, handler?: () => void): this;\r\n  json(obj: unknown): this;\r\n  status(c: number): this;\r\n  redirect(target: string | number, loc?: string): void;\r\n  addTrailers(headers: Record<string, string>): void;\r\n  _collectedBody(): Buffer;\r\n  _collectedBodyText(): string;\r\n}\r\n\r\nexport interface ServerResponseConstructor {\r\n  new (incoming: IncomingMessage): ServerResponse;\r\n  (this: any, incoming: IncomingMessage): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const ServerResponse = function ServerResponse(this: any, incoming: any) {\r\n  if (!this) return;\r\n  Writable.call(this);\r\n\r\n  this.statusCode = 200;\r\n  this.statusMessage = \"OK\";\r\n  this.headersSent = false;\r\n  this.finished = false;\r\n  this.sendDate = true;\r\n  this.socket = incoming.socket;\r\n  this.connection = incoming.socket;\r\n  this.req = incoming;\r\n  this._hdrs = new Map();\r\n  this._chunks = [];\r\n  this._completionCallback = undefined;\r\n} as unknown as ServerResponseConstructor;\r\n\r\nObject.setPrototypeOf(ServerResponse.prototype, Writable.prototype);\r\n\r\nServerResponse.prototype._onComplete = function _onComplete(fn: (r: CompletedResponse) => void): void {\r\n  this._completionCallback = fn;\r\n};\r\n\r\nServerResponse.prototype.assignSocket = function assignSocket(socket: TcpSocket): void {\r\n  this.socket = socket;\r\n  this.connection = socket;\r\n};\r\n\r\nServerResponse.prototype.detachSocket = function detachSocket(_socket: TcpSocket): void {\r\n  this.socket = null;\r\n  this.connection = null;\r\n};\r\n\r\nServerResponse.prototype.setHeader = function setHeader(key: string, val: string | string[] | number): any {\r\n  if (this.headersSent) throw new Error(\"Headers already dispatched\");\r\n  this._hdrs.set(key.toLowerCase(), String(val));\r\n  return this;\r\n};\r\n\r\nServerResponse.prototype.getHeader = function getHeader(key: string): string | string[] | undefined {\r\n  return this._hdrs.get(key.toLowerCase());\r\n};\r\n\r\nServerResponse.prototype.getHeaders = function getHeaders(): Record<string, string | string[]> {\r\n  const out: Record<string, string | string[]> = {};\r\n  this._hdrs.forEach((v: string | string[], k: string) => {\r\n    out[k] = v;\r\n  });\r\n  return out;\r\n};\r\n\r\nServerResponse.prototype.getHeaderNames = function getHeaderNames(): string[] {\r\n  return [...this._hdrs.keys()];\r\n};\r\n\r\nServerResponse.prototype.hasHeader = function hasHeader(key: string): boolean {\r\n  return this._hdrs.has(key.toLowerCase());\r\n};\r\n\r\nServerResponse.prototype.appendHeader = function appendHeader(key: string, val: string | string[]): any {\r\n  const lk = key.toLowerCase();\r\n  const existing = this._hdrs.get(lk);\r\n  if (existing === undefined) {\r\n    this._hdrs.set(lk, Array.isArray(val) ? val.join(\", \") : val);\r\n  } else {\r\n    const append = Array.isArray(val) ? val.join(\", \") : val;\r\n    const cur = Array.isArray(existing) ? existing.join(\", \") : existing;\r\n    this._hdrs.set(lk, cur + \", \" + append);\r\n  }\r\n  return this;\r\n};\r\n\r\nServerResponse.prototype.removeHeader = function removeHeader(key: string): void {\r\n  if (this.headersSent) throw new Error(\"Headers already dispatched\");\r\n  this._hdrs.delete(key.toLowerCase());\r\n};\r\n\r\nServerResponse.prototype.flushHeaders = function flushHeaders(): void {\r\n  this.headersSent = true;\r\n};\r\n\r\nServerResponse.prototype.writeContinue = function writeContinue(): void {\r\n  // No-op in polyfill\r\n};\r\n\r\nServerResponse.prototype.writeProcessing = function writeProcessing(): void {\r\n  // No-op in polyfill\r\n};\r\n\r\nServerResponse.prototype.writeEarlyHints = function writeEarlyHints(\r\n  _hints: Record<string, string | string[]>,\r\n  _cb?: () => void,\r\n): void {\r\n  if (_cb) queueMicrotask(_cb);\r\n};\r\n\r\nServerResponse.prototype.writeHead = function writeHead(\r\n  code: number,\r\n  msgOrHdrs?: string | Record<string, string | string[] | number> | string[],\r\n  extraHdrs?: Record<string, string | string[] | number> | string[],\r\n): any {\r\n  this.statusCode = code;\r\n  if (typeof msgOrHdrs === \"string\") {\r\n    this.statusMessage = msgOrHdrs;\r\n    if (extraHdrs) {\r\n      if (Array.isArray(extraHdrs)) {\r\n        for (let i = 0; i < extraHdrs.length; i += 2) {\r\n          this.setHeader(extraHdrs[i] as string, extraHdrs[i + 1] as string);\r\n        }\r\n      } else {\r\n        for (const [k, v] of Object.entries(extraHdrs)) this.setHeader(k, v);\r\n      }\r\n    }\r\n  } else if (Array.isArray(msgOrHdrs)) {\r\n    for (let i = 0; i < msgOrHdrs.length; i += 2) {\r\n      this.setHeader(msgOrHdrs[i] as string, msgOrHdrs[i + 1] as string);\r\n    }\r\n  } else if (msgOrHdrs) {\r\n    for (const [k, v] of Object.entries(msgOrHdrs)) this.setHeader(k, v);\r\n  }\r\n  return this;\r\n};\r\n\r\nServerResponse.prototype.write = function write(\r\n  data: Uint8Array | string,\r\n  encOrCb?: BufferEncoding | ((err?: Error | null) => void),\r\n  cb?: (err?: Error | null) => void,\r\n): boolean {\r\n  this.headersSent = true;\r\n  const buf = typeof data === \"string\" ? Buffer.from(data) : data;\r\n  this._chunks.push(buf);\r\n  const fn = typeof encOrCb === \"function\" ? encOrCb : cb;\r\n  if (fn) queueMicrotask(() => fn(null));\r\n  return true;\r\n};\r\n\r\nServerResponse.prototype.end = function end(\r\n  dataOrCb?: Uint8Array | string | (() => void),\r\n  encOrCb?: BufferEncoding | (() => void),\r\n  cb?: () => void,\r\n): any {\r\n  if (typeof dataOrCb === \"function\") {\r\n    cb = dataOrCb;\r\n  } else if (dataOrCb !== undefined) {\r\n    this.write(dataOrCb as Uint8Array | string);\r\n  }\r\n  if (typeof encOrCb === \"function\") cb = encOrCb;\r\n\r\n  this.headersSent = true;\r\n  this.finished = true;\r\n  this.writableEnded = true;\r\n  this.writableFinished = true;\r\n\r\n  if (this._completionCallback) {\r\n    const flatHdrs: Record<string, string> = {};\r\n    this._hdrs.forEach((v: string | string[], k: string) => {\r\n      flatHdrs[k] = Array.isArray(v) ? v.join(\", \") : v;\r\n    });\r\n    const finalBody = Buffer.concat(this._chunks);\r\n    this._completionCallback({\r\n      statusCode: this.statusCode,\r\n      statusMessage: this.statusMessage,\r\n      headers: flatHdrs,\r\n      body: finalBody,\r\n    });\r\n  }\r\n\r\n  const self = this;\r\n  queueMicrotask(() => {\r\n    self.emit(\"finish\");\r\n    if (cb) cb();\r\n  });\r\n  return this;\r\n};\r\n\r\nServerResponse.prototype.send = function send(payload: string | Buffer | object): any {\r\n  if (typeof payload === \"object\" && !Buffer.isBuffer(payload)) {\r\n    this.setHeader(\"Content-Type\", \"application/json\");\r\n    payload = JSON.stringify(payload);\r\n  }\r\n  if (!this.hasHeader(\"Content-Type\")) {\r\n    this.setHeader(\"Content-Type\", \"text/html\");\r\n  }\r\n  this.write(typeof payload === \"string\" ? payload : payload);\r\n  return this.end();\r\n};\r\n\r\nServerResponse.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\nServerResponse.prototype.json = function json(obj: unknown): any {\r\n  this.setHeader(\"Content-Type\", \"application/json\");\r\n  return this.end(JSON.stringify(obj));\r\n};\r\n\r\nServerResponse.prototype.status = function status(c: number): any {\r\n  this.statusCode = c;\r\n  return this;\r\n};\r\n\r\nServerResponse.prototype.redirect = function redirect(target: string | number, loc?: string): void {\r\n  if (typeof target === \"number\") {\r\n    this.statusCode = target;\r\n    this.setHeader(\"Location\", loc!);\r\n  } else {\r\n    this.statusCode = 302;\r\n    this.setHeader(\"Location\", target);\r\n  }\r\n  this.end();\r\n};\r\n\r\nServerResponse.prototype.addTrailers = function addTrailers(_headers: Record<string, string>): void {\r\n  // No-op\r\n};\r\n\r\nServerResponse.prototype._collectedBody = function _collectedBody(): Buffer {\r\n  return Buffer.concat(this._chunks);\r\n};\r\n\r\nServerResponse.prototype._collectedBodyText = function _collectedBodyText(): string {\r\n  return this._collectedBody().toString(\"utf8\");\r\n};\r\n\r\n// Server\r\n\r\nexport interface Server extends EventEmitter {\r\n  listening: boolean;\r\n  maxHeadersCount: number | null;\r\n  timeout: number;\r\n  keepAliveTimeout: number;\r\n  headersTimeout: number;\r\n  requestTimeout: number;\r\n  maxRequestsPerSocket: number | null;\r\n  listen(portOrOpts?: any, hostOrCb?: any, cb?: any): this;\r\n  close(cb?: (err?: Error) => void): this;\r\n  address(): NetAddress | null;\r\n  setTimeout(ms?: number, handler?: () => void): this;\r\n  ref(): this;\r\n  unref(): this;\r\n  closeAllConnections(): void;\r\n  closeIdleConnections(): void;\r\n  dispatchUpgrade(target: string, hdrs: Record<string, string>): { req: IncomingMessage; socket: TcpSocket };\r\n  dispatchRequest(verb: string, target: string, hdrs: Record<string, string>, payload?: Buffer | string): Promise<CompletedResponse>;\r\n}\r\n\r\nexport interface ServerConstructor {\r\n  new (optsOrHandler?: Record<string, unknown> | HttpHandler, handler?: HttpHandler): Server;\r\n  (this: any, optsOrHandler?: Record<string, unknown> | HttpHandler, handler?: HttpHandler): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Server = function Server(\r\n  this: any,\r\n  optsOrHandler?: Record<string, unknown> | HttpHandler,\r\n  handler?: HttpHandler,\r\n) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n\r\n  if (typeof optsOrHandler === \"function\") {\r\n    this._handler = optsOrHandler;\r\n  } else {\r\n    this._handler = handler;\r\n  }\r\n  this._tcp = new TcpServer();\r\n\r\n  this.listening = false;\r\n  this.maxHeadersCount = null;\r\n  this.timeout = 0;\r\n  this.keepAliveTimeout = TIMEOUTS.HTTP_KEEP_ALIVE;\r\n  this.headersTimeout = TIMEOUTS.HTTP_HEADERS;\r\n  this.requestTimeout = 0;\r\n  this.maxRequestsPerSocket = null;\r\n\r\n  const self = this;\r\n  this._tcp.on(\"listening\", function onListening() {\r\n    self.listening = true;\r\n    self.emit(\"listening\");\r\n  });\r\n  this._tcp.on(\"close\", function onClose() {\r\n    self.listening = false;\r\n    self.emit(\"close\");\r\n  });\r\n  this._tcp.on(\"error\", function onError(e: unknown) { self.emit(\"error\", e); });\r\n} as unknown as ServerConstructor;\r\n\r\nObject.setPrototypeOf(Server.prototype, EventEmitter.prototype);\r\n\r\nServer.prototype.listen = function listen(\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 | undefined;\r\n  let host: string | undefined;\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 if (portOrOpts) {\r\n    port = portOrOpts.port;\r\n    host = portOrOpts.host;\r\n    done = typeof hostOrCb === \"function\" ? hostOrCb : cb;\r\n  }\r\n\r\n  const self = this;\r\n  const origDone = done;\r\n  done = function onBound() {\r\n    const addr = self._tcp.address();\r\n    if (addr) _addServer(addr.port, self);\r\n    if (origDone) origDone();\r\n  };\r\n\r\n  this._tcp.listen(port, host, done);\r\n  return this;\r\n};\r\n\r\nServer.prototype.close = function close(cb?: (err?: Error) => void): any {\r\n  const addr = this._tcp.address();\r\n  if (addr) _removeServer(addr.port);\r\n  this._tcp.close(cb);\r\n  return this;\r\n};\r\n\r\nServer.prototype.address = function address(): NetAddress | null {\r\n  return this._tcp.address();\r\n};\r\n\r\nServer.prototype.setTimeout = function setTimeout(ms?: number, handler?: () => void): any {\r\n  this.timeout = ms || 0;\r\n  if (handler) this.on(\"timeout\", handler);\r\n  return this;\r\n};\r\n\r\nServer.prototype.ref = function ref(): any {\r\n  this._tcp.ref();\r\n  return this;\r\n};\r\n\r\nServer.prototype.unref = function unref(): any {\r\n  this._tcp.unref();\r\n  return this;\r\n};\r\n\r\nServer.prototype.closeAllConnections = function closeAllConnections(): void {\r\n  // No-op\r\n};\r\n\r\nServer.prototype.closeIdleConnections = function closeIdleConnections(): void {\r\n  // No-op\r\n};\r\n\r\nServer.prototype.dispatchUpgrade = function dispatchUpgrade(\r\n  target: string,\r\n  hdrs: Record<string, string>,\r\n): { req: IncomingMessage; socket: TcpSocket } {\r\n  const socket = new TcpSocket();\r\n  (socket as any).cork = () => {};\r\n  (socket as any).uncork = () => {};\r\n  (socket as any)._readableState = { endEmitted: false };\r\n  (socket as any)._writableState = { finished: false, errorEmitted: false };\r\n\r\n  const req = new IncomingMessage(socket);\r\n  req.method = \"GET\";\r\n  req.url = target;\r\n  req.headers = {\r\n    ...hdrs,\r\n    upgrade: \"websocket\",\r\n    connection: \"Upgrade\",\r\n  };\r\n  for (const [k, v] of Object.entries(req.headers)) {\r\n    if (typeof v === \"string\") req.rawHeaders.push(k, v);\r\n  }\r\n  req.push(null);\r\n  req.complete = true;\r\n\r\n  const self = this;\r\n  queueMicrotask(() => {\r\n    self.emit(\"upgrade\", req, socket, Buffer.alloc(0));\r\n  });\r\n\r\n  return { req, socket };\r\n};\r\n\r\nServer.prototype.dispatchRequest = async function dispatchRequest(\r\n  verb: string,\r\n  target: string,\r\n  hdrs: Record<string, string>,\r\n  payload?: Buffer | string,\r\n): Promise<CompletedResponse> {\r\n  const self = this;\r\n  return new Promise((resolve, reject) => {\r\n    const req = IncomingMessage.build(verb, target, hdrs, payload);\r\n    const res = new ServerResponse(req);\r\n    res._onComplete(resolve);\r\n\r\n    const timeoutMs = self.timeout || TIMEOUTS.HTTP_DISPATCH_SAFETY;\r\n    const timer = setTimeout(() => {\r\n      reject(\r\n        new Error(\r\n          `dispatchRequest timed out after ${timeoutMs}ms for ${verb} ${target}`,\r\n        ),\r\n      );\r\n    }, timeoutMs);\r\n\r\n    res.on(\"finish\", () => {\r\n      clearTimeout(timer);\r\n    });\r\n\r\n    try {\r\n      self.emit(\"request\", req, res);\r\n      if (typeof self._handler === \"function\") {\r\n        const result = self._handler(req, res);\r\n        if (result && typeof (result as any).then === \"function\") {\r\n          (result as Promise<unknown>).catch((err) => {\r\n            clearTimeout(timer);\r\n            console.error(\"[DEBUG] dispatchRequest async error:\", (err as Error)?.message || err, (err as Error)?.stack?.split(\"\\n\").slice(0, 5).join(\"\\n\"));\r\n            if (!res.headersSent) {\r\n              try {\r\n                res.statusCode = 500;\r\n                res.end(\"Internal Server Error\");\r\n              } catch { /* ignore */ }\r\n            } else {\r\n              try { res.end(); } catch { /* ignore */ }\r\n            }\r\n          });\r\n        }\r\n      }\r\n    } catch (err) {\r\n      clearTimeout(timer);\r\n      console.error(\"[DEBUG] dispatchRequest sync error:\", (err as Error)?.message || err, (err as Error)?.stack?.split(\"\\n\").slice(0, 5).join(\"\\n\"));\r\n      if (!res.headersSent) {\r\n        try {\r\n          res.statusCode = 500;\r\n          res.end(\"Internal Server Error\");\r\n        } catch { /* ignore */ }\r\n      }\r\n      reject(err);\r\n    }\r\n  });\r\n};\r\n\r\n// createServer\r\n\r\nexport function createServer(\r\n  optsOrHandler?: Record<string, unknown> | HttpHandler,\r\n  handler?: HttpHandler,\r\n): Server {\r\n  return new Server(optsOrHandler, handler);\r\n}\r\n\r\n// STATUS_CODES & METHODS\r\n\r\nexport const STATUS_CODES: Record<number, string> = {\r\n  100: \"Continue\",\r\n  101: \"Switching Protocols\",\r\n  200: \"OK\",\r\n  201: \"Created\",\r\n  202: \"Accepted\",\r\n  204: \"No Content\",\r\n  301: \"Moved Permanently\",\r\n  302: \"Found\",\r\n  304: \"Not Modified\",\r\n  400: \"Bad Request\",\r\n  401: \"Unauthorized\",\r\n  403: \"Forbidden\",\r\n  404: \"Not Found\",\r\n  405: \"Method Not Allowed\",\r\n  408: \"Request Timeout\",\r\n  409: \"Conflict\",\r\n  410: \"Gone\",\r\n  413: \"Payload Too Large\",\r\n  415: \"Unsupported Media Type\",\r\n  422: \"Unprocessable Entity\",\r\n  429: \"Too Many Requests\",\r\n  500: \"Internal Server Error\",\r\n  501: \"Not Implemented\",\r\n  502: \"Bad Gateway\",\r\n  503: \"Service Unavailable\",\r\n  504: \"Gateway Timeout\",\r\n};\r\n\r\nexport const METHODS = [\r\n  \"GET\",\r\n  \"POST\",\r\n  \"PUT\",\r\n  \"DELETE\",\r\n  \"PATCH\",\r\n  \"HEAD\",\r\n  \"OPTIONS\",\r\n  \"CONNECT\",\r\n  \"TRACE\",\r\n];\r\n\r\n// CORS proxy helper\r\n\r\nfunction fetchProxy(): string | null {\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\n// ClientRequest  (fetch-backed)\r\n\r\nexport interface ClientRequest extends Writable {\r\n  method: string;\r\n  path: string;\r\n  headers: Record<string, string>;\r\n  finished: boolean;\r\n  aborted: boolean;\r\n  reusedSocket: boolean;\r\n  maxHeadersCount: number | null;\r\n  readonly socket: TcpSocket;\r\n  readonly connection: TcpSocket;\r\n  setHeader(k: string, v: string): void;\r\n  getHeader(k: string): string | undefined;\r\n  removeHeader(k: string): void;\r\n  write(chunk: any, encOrCb?: any, cb?: any): boolean;\r\n  end(dataOrCb?: any, encOrCb?: any, cb?: any): this;\r\n  abort(): void;\r\n  setTimeout(ms: number, handler?: () => void): this;\r\n  flushHeaders(): void;\r\n  setNoDelay(noDelay?: boolean): void;\r\n  setSocketKeepAlive(enable?: boolean, initialDelay?: number): void;\r\n}\r\n\r\nexport interface ClientRequestConstructor {\r\n  new (opts: ConnectionOptions, proto?: \"http\" | \"https\"): ClientRequest;\r\n  (this: any, opts: ConnectionOptions, proto?: \"http\" | \"https\"): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const ClientRequest = function ClientRequest(\r\n  this: any,\r\n  opts: ConnectionOptions,\r\n  proto?: \"http\" | \"https\",\r\n) {\r\n  if (!this) return;\r\n  Writable.call(this);\r\n\r\n  this._opts = opts;\r\n  this._proto = proto || \"http\";\r\n  this.method = opts.method ?? \"GET\";\r\n  this.path = opts.path ?? \"/\";\r\n  this.headers = {};\r\n  this._pending = [];\r\n  this._cancelled = false;\r\n  this._waitMs = null;\r\n  this._waitTimer = null;\r\n  this._sealed = false;\r\n  this._socket = new TcpSocket();\r\n  this.finished = false;\r\n  this.aborted = false;\r\n  this.reusedSocket = false;\r\n  this.maxHeadersCount = null;\r\n\r\n  if (opts.headers) {\r\n    for (const [k, v] of Object.entries(opts.headers)) {\r\n      this.headers[k.toLowerCase()] = Array.isArray(v) ? v.join(\", \") : v;\r\n    }\r\n  }\r\n  // Emit socket event async\r\n  const self = this;\r\n  queueMicrotask(() => self.emit(\"socket\", self._socket));\r\n} as unknown as ClientRequestConstructor;\r\n\r\nObject.setPrototypeOf(ClientRequest.prototype, Writable.prototype);\r\n\r\n// Getters for socket/connection\r\nObject.defineProperty(ClientRequest.prototype, \"socket\", {\r\n  get: function (this: any) { return this._socket; },\r\n  configurable: true,\r\n});\r\n\r\nObject.defineProperty(ClientRequest.prototype, \"connection\", {\r\n  get: function (this: any) { return this._socket; },\r\n  configurable: true,\r\n});\r\n\r\nClientRequest.prototype.setHeader = function setHeader(k: string, v: string): void {\r\n  this.headers[k.toLowerCase()] = v;\r\n};\r\n\r\nClientRequest.prototype.getHeader = function getHeader(k: string): string | undefined {\r\n  return this.headers[k.toLowerCase()];\r\n};\r\n\r\nClientRequest.prototype.removeHeader = function removeHeader(k: string): void {\r\n  delete this.headers[k.toLowerCase()];\r\n};\r\n\r\nClientRequest.prototype.write = function write(\r\n  chunk: Uint8Array | string,\r\n  encOrCb?: BufferEncoding | ((err?: Error | null) => void),\r\n  cb?: (err?: Error | null) => void,\r\n): boolean {\r\n  const buf = typeof chunk === \"string\" ? Buffer.from(chunk) : chunk;\r\n  this._pending.push(buf);\r\n  const fn = typeof encOrCb === \"function\" ? encOrCb : cb;\r\n  if (fn) queueMicrotask(() => fn(null));\r\n  return true;\r\n};\r\n\r\nClientRequest.prototype.end = function end(\r\n  dataOrCb?: Uint8Array | string | (() => void),\r\n  encOrCb?: BufferEncoding | (() => void),\r\n  cb?: () => void,\r\n): any {\r\n  if (this._sealed) return this;\r\n  this._sealed = true;\r\n  this.finished = true;\r\n\r\n  let finalCb = cb;\r\n  if (typeof dataOrCb === \"function\") {\r\n    finalCb = dataOrCb;\r\n  } else if (dataOrCb !== undefined) {\r\n    this.write(dataOrCb as Uint8Array | string);\r\n  }\r\n  if (typeof encOrCb === \"function\") finalCb = encOrCb;\r\n\r\n  const self = this;\r\n  self._dispatch()\r\n    .then(() => {\r\n      if (finalCb) finalCb();\r\n    })\r\n    .catch((err: Error) => self.emit(\"error\", err));\r\n\r\n  return this;\r\n};\r\n\r\nClientRequest.prototype.abort = function abort(): void {\r\n  this._cancelled = true;\r\n  this.aborted = true;\r\n  if (this._waitTimer) clearTimeout(this._waitTimer);\r\n  this.emit(\"abort\");\r\n};\r\n\r\nClientRequest.prototype.setTimeout = function setTimeout(ms: number, handler?: () => void): any {\r\n  this._waitMs = ms;\r\n  if (handler) this.once(\"timeout\", handler);\r\n  return this;\r\n};\r\n\r\nClientRequest.prototype.flushHeaders = function flushHeaders(): void {\r\n  // No-op\r\n};\r\n\r\nClientRequest.prototype.setNoDelay = function setNoDelay(_noDelay?: boolean): void {\r\n  // No-op\r\n};\r\n\r\nClientRequest.prototype.setSocketKeepAlive = function setSocketKeepAlive(\r\n  _enable?: boolean,\r\n  _initialDelay?: number,\r\n): void {\r\n  // No-op\r\n};\r\n\r\n/* ---------- ClientRequest internal dispatch ---------- */\r\n\r\nClientRequest.prototype._dispatch = async function _dispatch(): Promise<void> {\r\n  if (this._cancelled) return;\r\n\r\n  try {\r\n    const scheme = this._proto === \"https\" ? \"https:\" : \"http:\";\r\n    let hostname = this._opts.hostname ?? \"\";\r\n    let portSuffix = this._opts.port ? `:${this._opts.port}` : \"\";\r\n    if (!hostname && this._opts.host) {\r\n      const parts = this._opts.host.split(\":\");\r\n      hostname = parts[0];\r\n      if (!portSuffix && parts[1]) portSuffix = `:${parts[1]}`;\r\n    }\r\n    if (!hostname) hostname = \"localhost\";\r\n    const endpoint = `${scheme}//${hostname}${portSuffix}${this._opts.path ?? \"/\"}`;\r\n\r\n    // WebSocket upgrade -- delegate to native browser WS\r\n    if (this.headers[\"upgrade\"]?.toLowerCase() === \"websocket\") {\r\n      this._bridgeWebSocket(endpoint);\r\n      return;\r\n    }\r\n\r\n    // Route requests to virtual servers through the registry instead of fetch\r\n    const isLocal = hostname === \"localhost\" || hostname === \"127.0.0.1\" || hostname === \"0.0.0.0\";\r\n    const port = Number(this._opts.port) || (this._proto === \"https\" ? 443 : 80);\r\n    if (isLocal) {\r\n      const vServer = _registry.get(port);\r\n      if (vServer) {\r\n        const body = this._pending.length > 0 ? Buffer.concat(this._pending) : undefined;\r\n        try {\r\n          const result = await vServer.dispatchRequest(\r\n            this.method,\r\n            this._opts.path ?? \"/\",\r\n            this.headers,\r\n            body,\r\n          );\r\n          if (this._cancelled) return;\r\n          const incoming = new IncomingMessage();\r\n          incoming.statusCode = result.statusCode;\r\n          incoming.statusMessage = result.statusMessage;\r\n          for (const [k, v] of Object.entries(result.headers)) {\r\n            incoming.headers[k.toLowerCase()] = v;\r\n            incoming.rawHeaders.push(k, v);\r\n          }\r\n          incoming._injectBody(result.body);\r\n          this.emit(\"response\", incoming);\r\n        } catch (err) {\r\n          this.emit(\"error\", err);\r\n        }\r\n        return;\r\n      }\r\n      // No virtual server on this port — emit ECONNREFUSED\r\n      const err = new Error(`connect ECONNREFUSED ${hostname}:${port}`) as NodeJS.ErrnoException;\r\n      err.code = \"ECONNREFUSED\";\r\n      err.errno = -111;\r\n      (err as any).syscall = \"connect\";\r\n      (err as any).address = hostname;\r\n      (err as any).port = port;\r\n      this.emit(\"error\", err);\r\n      return;\r\n    }\r\n\r\n    const proxy = fetchProxy();\r\n    const targetUrl = proxy ? proxy + encodeURIComponent(endpoint) : endpoint;\r\n\r\n    const init: RequestInit = { method: this.method, headers: this.headers };\r\n    if (\r\n      this._pending.length > 0 &&\r\n      this.method !== \"GET\" &&\r\n      this.method !== \"HEAD\"\r\n    ) {\r\n      init.body = Buffer.concat(this._pending);\r\n    }\r\n\r\n    const ac = new AbortController();\r\n    init.signal = ac.signal;\r\n\r\n    if (this._waitMs) {\r\n      this._waitTimer = setTimeout(() => {\r\n        ac.abort();\r\n        this.emit(\"timeout\");\r\n      }, this._waitMs);\r\n    }\r\n\r\n    const resp = await fetch(targetUrl, init);\r\n    if (this._waitTimer) {\r\n      clearTimeout(this._waitTimer);\r\n      this._waitTimer = null;\r\n    }\r\n    if (this._cancelled) return;\r\n\r\n    const incoming = await this._mapResponse(resp);\r\n    this.emit(\"response\", incoming);\r\n  } catch (err) {\r\n    if (this._waitTimer) clearTimeout(this._waitTimer);\r\n    if (this._cancelled) return;\r\n    if (err instanceof Error && err.name === \"AbortError\") return;\r\n    this.emit(\"error\", err);\r\n  }\r\n};\r\n\r\nClientRequest.prototype._mapResponse = async function _mapResponse(resp: Response): Promise<IncomingMessage> {\r\n  const msg = new IncomingMessage();\r\n  msg.statusCode = resp.status;\r\n  msg.statusMessage = resp.statusText || STATUS_CODES[resp.status] || \"\";\r\n  resp.headers.forEach((v: string, k: string) => {\r\n    msg.headers[k.toLowerCase()] = v;\r\n    msg.rawHeaders.push(k, v);\r\n  });\r\n  const raw = await resp.arrayBuffer();\r\n  msg._injectBody(Buffer.from(raw));\r\n  return msg;\r\n};\r\n\r\n/* ---------- WebSocket upgrade bridge ---------- */\r\n\r\nClientRequest.prototype._bridgeWebSocket = function _bridgeWebSocket(url: string): void {\r\n  const wsUrl = url.replace(/^https:/, \"wss:\").replace(/^http:/, \"ws:\");\r\n  const wsKey = this.headers[\"sec-websocket-key\"] ?? \"\";\r\n  const WS = _NativeWebSocket;\r\n\r\n  if (!WS) {\r\n    const self = this;\r\n    setTimeout(\r\n      () => self.emit(\"error\", new TypeError(\"No WebSocket available\")),\r\n      0,\r\n    );\r\n    return;\r\n  }\r\n\r\n  const WS_GUID = \"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\";\r\n  const acceptDigest = createHash(\"sha1\")\r\n    .update(wsKey + WS_GUID)\r\n    .digest(\"base64\") as string;\r\n\r\n  let ws: globalThis.WebSocket;\r\n  try {\r\n    ws = new WS(wsUrl);\r\n    ws.binaryType = \"arraybuffer\";\r\n  } catch (e) {\r\n    const self = this;\r\n    setTimeout(\r\n      () => self.emit(\"error\", e instanceof Error ? e : new Error(String(e))),\r\n      0,\r\n    );\r\n    return;\r\n  }\r\n\r\n  const pipe = new TcpSocket();\r\n  (pipe as any).cork = () => {};\r\n  (pipe as any).uncork = () => {};\r\n  (pipe as any)._readableState = { endEmitted: false };\r\n  (pipe as any)._writableState = { finished: false, errorEmitted: false };\r\n\r\n  let outboundBuf = new Uint8Array(0);\r\n\r\n  pipe.write = ((\r\n    chunk: Uint8Array | string,\r\n    encOrCb?: BufferEncoding | ((err?: Error | null) => void),\r\n    cb?: (err?: Error | null) => void,\r\n  ): boolean => {\r\n    const raw =\r\n      typeof chunk === \"string\" ? Buffer.from(chunk) : new Uint8Array(chunk);\r\n    const fn = typeof encOrCb === \"function\" ? encOrCb : cb;\r\n\r\n    const merged = new Uint8Array(outboundBuf.length + raw.length);\r\n    merged.set(outboundBuf, 0);\r\n    merged.set(raw, outboundBuf.length);\r\n    outboundBuf = merged;\r\n\r\n    while (outboundBuf.length >= 2) {\r\n      const frame = decodeFrame(outboundBuf);\r\n      if (!frame) break;\r\n      outboundBuf = outboundBuf.slice(frame.consumed);\r\n\r\n      if (ws.readyState !== WS.OPEN) continue;\r\n\r\n      switch (frame.op) {\r\n        case 0x08:\r\n          ws.close();\r\n          break;\r\n        case 0x09:\r\n          ws.send(frame.data);\r\n          break;\r\n        case 0x0a:\r\n          break; // pong -- ignore\r\n        case 0x01:\r\n          ws.send(new TextDecoder().decode(frame.data));\r\n          break;\r\n        case 0x02:\r\n          ws.send(frame.data);\r\n          break;\r\n      }\r\n    }\r\n\r\n    if (fn) queueMicrotask(() => fn(null));\r\n    return true;\r\n  }) as any;\r\n\r\n  const self = this;\r\n\r\n  ws.onopen = () => {\r\n    const fakeResp = new IncomingMessage(pipe);\r\n    fakeResp.statusCode = 101;\r\n    fakeResp.statusMessage = \"Switching Protocols\";\r\n    fakeResp.headers = {\r\n      upgrade: \"websocket\",\r\n      connection: \"Upgrade\",\r\n      \"sec-websocket-accept\": acceptDigest,\r\n    };\r\n    fakeResp.complete = true;\r\n    fakeResp.push(null);\r\n    self.emit(\"upgrade\", fakeResp, pipe, Buffer.alloc(0));\r\n  };\r\n\r\n  ws.onmessage = (ev: MessageEvent) => {\r\n    let payload: Uint8Array;\r\n    let op: number;\r\n    if (typeof ev.data === \"string\") {\r\n      payload = new TextEncoder().encode(ev.data);\r\n      op = 0x01;\r\n    } else if (ev.data instanceof ArrayBuffer) {\r\n      payload = new Uint8Array(ev.data);\r\n      op = 0x02;\r\n    } else {\r\n      return;\r\n    }\r\n    const frame = encodeFrame(op, payload, false);\r\n    pipe._feedData(Buffer.from(frame));\r\n  };\r\n\r\n  ws.onclose = (ev: CloseEvent) => {\r\n    const code = ev.code || 1000;\r\n    const closeBuf = new Uint8Array(2);\r\n    closeBuf[0] = (code >> 8) & 0xff;\r\n    closeBuf[1] = code & 0xff;\r\n    const frame = encodeFrame(0x08, closeBuf, false);\r\n    pipe._feedData(Buffer.from(frame));\r\n    setTimeout(() => {\r\n      (pipe as any)._readableState.endEmitted = true;\r\n      pipe._feedEnd();\r\n      pipe.emit(\"close\", false);\r\n    }, 10);\r\n  };\r\n\r\n  ws.onerror = () => {\r\n    pipe.emit(\"error\", new Error(\"WebSocket transport error\"));\r\n    pipe.destroy();\r\n  };\r\n\r\n  const origDestroy = pipe.destroy.bind(pipe);\r\n  pipe.destroy = ((e?: Error): TcpSocket => {\r\n    if (ws.readyState === WS.OPEN || ws.readyState === WS.CONNECTING)\r\n      ws.close();\r\n    return origDestroy(e);\r\n  }) as any;\r\n};\r\n\r\n// Argument parsing helper\r\n\r\nfunction dissectArgs(\r\n  first: string | URL | ConnectionOptions,\r\n  second?: ConnectionOptions | ((r: IncomingMessage) => void),\r\n  third?: (r: IncomingMessage) => void,\r\n): { opts: ConnectionOptions; cb?: (r: IncomingMessage) => void } {\r\n  let opts: ConnectionOptions;\r\n  let cb = third;\r\n\r\n  if (typeof first === \"string\" || first instanceof URL) {\r\n    const parsed = new URL(first.toString());\r\n    opts = {\r\n      hostname: parsed.hostname,\r\n      port: parsed.port ? parseInt(parsed.port, 10) : undefined,\r\n      path: parsed.pathname + parsed.search,\r\n      method: \"GET\",\r\n    };\r\n    if (typeof second === \"function\") cb = second;\r\n    else if (second) opts = { ...opts, ...second };\r\n  } else {\r\n    opts = first;\r\n    if (typeof second === \"function\") cb = second;\r\n  }\r\n\r\n  return { opts, cb };\r\n}\r\n\r\n// request / get\r\n\r\nexport function request(\r\n  first: string | URL | ConnectionOptions,\r\n  second?: ConnectionOptions | ((r: IncomingMessage) => void),\r\n  third?: (r: IncomingMessage) => void,\r\n): ClientRequest {\r\n  const { opts, cb } = dissectArgs(first, second, third);\r\n  const cr = new ClientRequest(opts, \"http\");\r\n  if (cb) cr.once(\"response\", cb as unknown as EventHandler);\r\n  return cr;\r\n}\r\n\r\nexport function get(\r\n  first: string | URL | ConnectionOptions,\r\n  second?: ConnectionOptions | ((r: IncomingMessage) => void),\r\n  third?: (r: IncomingMessage) => void,\r\n): ClientRequest {\r\n  const { opts, cb } = dissectArgs(first, second, third);\r\n  const cr = new ClientRequest({ ...opts, method: \"GET\" }, \"http\");\r\n  if (cb) cr.once(\"response\", cb as unknown as EventHandler);\r\n  cr.end();\r\n  return cr;\r\n}\r\n\r\nexport function _buildClientRequest(\r\n  first: string | URL | ConnectionOptions,\r\n  second: ConnectionOptions | ((r: IncomingMessage) => void) | undefined,\r\n  third: ((r: IncomingMessage) => void) | undefined,\r\n  proto: \"http\" | \"https\",\r\n): ClientRequest {\r\n  const { opts, cb } = dissectArgs(first, second, third);\r\n  const cr = new ClientRequest(opts, proto);\r\n  if (cb) cr.once(\"response\", cb as unknown as EventHandler);\r\n  return cr;\r\n}\r\n\r\n// Server registry (global, for server bridge routing)\r\n\r\nexport type RegistryHook = (port: number, srv: Server) => void;\r\n\r\nconst _registry = new Map<number, Server>();\r\nconst _serverOwnership = new Map<number, number>(); // port → pid\r\nlet _onBind: RegistryHook | null = null;\r\nlet _onUnbind: ((port: number) => void) | null = null;\r\n\r\nfunction _addServer(port: number, srv: Server, ownerPid?: number): void {\r\n  _registry.set(port, srv);\r\n  if (ownerPid !== undefined) _serverOwnership.set(port, ownerPid);\r\n  _elRef(); // server keeps the process alive\r\n  if (_onBind) _onBind(port, srv);\r\n}\r\n\r\nfunction _removeServer(port: number): void {\r\n  if (_registry.has(port)) _elUnref(); // server no longer keeps process alive\r\n  _registry.delete(port);\r\n  _serverOwnership.delete(port);\r\n  if (_onUnbind) _onUnbind(port);\r\n}\r\n\r\nexport function getServer(port: number): Server | undefined {\r\n  return _registry.get(port);\r\n}\r\n\r\nexport function getAllServers(): Map<number, Server> {\r\n  return new Map(_registry);\r\n}\r\n\r\nexport function closeAllServers(): void {\r\n  for (const [, srv] of _registry) {\r\n    try { srv.close(); } catch { /* best effort */ }\r\n  }\r\n  _registry.clear();\r\n  _serverOwnership.clear();\r\n}\r\n\r\nexport function closeServersByPid(pid: number): void {\r\n  for (const [port, ownerPid] of _serverOwnership) {\r\n    if (ownerPid === pid) {\r\n      const srv = _registry.get(port);\r\n      if (srv) {\r\n        try { srv.close(); } catch { /* best effort */ }\r\n      }\r\n      _registry.delete(port);\r\n      _serverOwnership.delete(port);\r\n    }\r\n  }\r\n}\r\n\r\nexport function getServerOwner(port: number): number | undefined {\r\n  return _serverOwnership.get(port);\r\n}\r\n\r\nexport function setServerListenCallback(fn: RegistryHook | null): void {\r\n  _onBind = fn;\r\n}\r\n\r\nexport function setServerCloseCallback(\r\n  fn: ((port: number) => void) | null,\r\n): void {\r\n  _onUnbind = fn;\r\n}\r\n\r\n// Agent\r\n\r\nexport interface AgentConfig {\r\n  keepAlive?: boolean;\r\n  keepAliveMsecs?: number;\r\n  maxSockets?: number;\r\n  maxTotalSockets?: number;\r\n  maxFreeSockets?: number;\r\n  scheduling?: \"fifo\" | \"lifo\";\r\n  timeout?: number;\r\n}\r\n\r\nexport interface Agent extends EventEmitter {\r\n  maxSockets: number;\r\n  maxFreeSockets: number;\r\n  maxTotalSockets: number;\r\n  sockets: Record<string, TcpSocket[]>;\r\n  freeSockets: Record<string, TcpSocket[]>;\r\n  requests: Record<string, IncomingMessage[]>;\r\n  options: AgentConfig;\r\n  createConnection(cfg: Record<string, unknown>, done?: (err: Error | null, sock: TcpSocket) => void): TcpSocket;\r\n  getName(o: { host?: string; port?: number; localAddress?: string }): string;\r\n  addRequest(r: ClientRequest, o: Record<string, unknown>): void;\r\n  destroy(): void;\r\n}\r\n\r\nexport interface AgentConstructor {\r\n  new (cfg?: AgentConfig): Agent;\r\n  (this: any, cfg?: AgentConfig): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const Agent = function Agent(this: any, cfg?: AgentConfig) {\r\n  if (!this) return;\r\n  EventEmitter.call(this);\r\n\r\n  this.options = cfg ?? {};\r\n  this.maxSockets = cfg?.maxSockets ?? Infinity;\r\n  this.maxFreeSockets = cfg?.maxFreeSockets ?? 256;\r\n  this.maxTotalSockets = cfg?.maxTotalSockets ?? Infinity;\r\n  this.sockets = {};\r\n  this.freeSockets = {};\r\n  this.requests = {};\r\n} as unknown as AgentConstructor;\r\n\r\nObject.setPrototypeOf(Agent.prototype, EventEmitter.prototype);\r\n\r\nAgent.prototype.createConnection = function createConnection(\r\n  _cfg: Record<string, unknown>,\r\n  done?: (err: Error | null, sock: TcpSocket) => void,\r\n): TcpSocket {\r\n  const sock = new TcpSocket();\r\n  if (done) done(null, sock);\r\n  return sock;\r\n};\r\n\r\nAgent.prototype.getName = function getName(\r\n  o: { host?: string; port?: number; localAddress?: string },\r\n): string {\r\n  return `${o.host ?? \"localhost\"}:${o.port ?? 80}:${o.localAddress ?? \"\"}`;\r\n};\r\n\r\nAgent.prototype.addRequest = function addRequest(\r\n  _r: ClientRequest,\r\n  _o: Record<string, unknown>,\r\n): void {};\r\n\r\nAgent.prototype.destroy = function destroy(): void {\r\n  this.sockets = {};\r\n  this.freeSockets = {};\r\n  this.requests = {};\r\n};\r\n\r\nexport const globalAgent = new Agent();\r\n\r\n// WebSocket frame codec\r\n\r\nexport function decodeFrame(raw: Uint8Array): {\r\n  op: number;\r\n  data: Uint8Array;\r\n  consumed: number;\r\n} | null {\r\n  if (raw.length < 2) return null;\r\n\r\n  const op = raw[0] & 0x0f;\r\n  const isMasked = (raw[1] & 0x80) !== 0;\r\n  let len = raw[1] & 0x7f;\r\n  let cursor = 2;\r\n\r\n  if (len === 126) {\r\n    if (raw.length < 4) return null;\r\n    len = (raw[2] << 8) | raw[3];\r\n    cursor = 4;\r\n  } else if (len === 127) {\r\n    if (raw.length < 10) return null;\r\n    len = (raw[6] << 24) | (raw[7] << 16) | (raw[8] << 8) | raw[9];\r\n    cursor = 10;\r\n  }\r\n\r\n  if (isMasked) {\r\n    if (raw.length < cursor + 4 + len) return null;\r\n    const mask = raw.slice(cursor, cursor + 4);\r\n    cursor += 4;\r\n    const payload = new Uint8Array(len);\r\n    for (let i = 0; i < len; i++) payload[i] = raw[cursor + i] ^ mask[i & 3];\r\n    return { op, data: payload, consumed: cursor + len };\r\n  }\r\n\r\n  if (raw.length < cursor + len) return null;\r\n  return { op, data: raw.slice(cursor, cursor + len), consumed: cursor + len };\r\n}\r\n\r\nexport function encodeFrame(\r\n  op: number,\r\n  payload: Uint8Array,\r\n  masked: boolean,\r\n): Uint8Array {\r\n  const pLen = payload.length;\r\n  let headerLen = 2;\r\n  if (pLen > 125 && pLen <= 0xffff) headerLen += 2;\r\n  else if (pLen > 0xffff) headerLen += 8;\r\n  if (masked) headerLen += 4;\r\n\r\n  const frame = new Uint8Array(headerLen + pLen);\r\n  frame[0] = 0x80 | op;\r\n\r\n  let pos = 2;\r\n  if (pLen <= 125) {\r\n    frame[1] = (masked ? 0x80 : 0) | pLen;\r\n  } else if (pLen <= 0xffff) {\r\n    frame[1] = (masked ? 0x80 : 0) | 126;\r\n    frame[2] = (pLen >> 8) & 0xff;\r\n    frame[3] = pLen & 0xff;\r\n    pos = 4;\r\n  } else {\r\n    frame[1] = (masked ? 0x80 : 0) | 127;\r\n    frame[2] = 0;\r\n    frame[3] = 0;\r\n    frame[4] = 0;\r\n    frame[5] = 0;\r\n    frame[6] = (pLen >> 24) & 0xff;\r\n    frame[7] = (pLen >> 16) & 0xff;\r\n    frame[8] = (pLen >> 8) & 0xff;\r\n    frame[9] = pLen & 0xff;\r\n    pos = 10;\r\n  }\r\n\r\n  if (masked) {\r\n    const maskKey = new Uint8Array(4);\r\n    if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\r\n      crypto.getRandomValues(maskKey);\r\n    } else {\r\n      for (let i = 0; i < 4; i++) maskKey[i] = Math.floor(Math.random() * 256);\r\n    }\r\n    frame.set(maskKey, pos);\r\n    pos += 4;\r\n    for (let i = 0; i < pLen; i++) frame[pos + i] = payload[i] ^ maskKey[i & 3];\r\n  } else {\r\n    frame.set(payload, pos);\r\n  }\r\n\r\n  return frame;\r\n}\r\n\r\n// Default export\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  _buildClientRequest,\r\n  Agent,\r\n  globalAgent,\r\n  decodeFrame,\r\n  encodeFrame,\r\n};\r\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  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.9.0';\r\nexport const PINNED_BROTLI_WASM = '3.0.1';\r\nexport const PINNED_LIGHTNINGCSS_WASM = '1.31.1';\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_ESBUILD_BROWSER = `https://esm.sh/esbuild-wasm@${PINNED_ESBUILD_WASM}/esm/browser.min.js`;\r\nexport const CDN_ROLLUP_BROWSER = `https://esm.sh/@rollup/browser@${PINNED_ROLLUP_BROWSER}`;\r\nexport const CDN_BROTLI_WASM = `https://esm.sh/brotli-wasm@${PINNED_BROTLI_WASM}`;\r\nexport const CDN_LIGHTNINGCSS_WASM = `https://esm.sh/lightningcss-wasm@${PINNED_LIGHTNINGCSS_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","\n/*! pako 2.1.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$1,\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_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n// This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n// But breaks binary compatibility\n//let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\nlet HASH = HASH_ZLIB;\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.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        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n        s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n        s.prev[str & s.w_mask] = s.head[s.ins_h];\n        s.head[s.ins_h] = 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      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\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          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\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        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    } 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      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\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          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\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.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) => {\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.hash_bits = memLevel + 7;\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$1 : 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$1);\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$1);\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      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n      s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n      s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n      s.head[s.ins_h] = 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[254] = 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\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 * 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({\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  }, 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  );\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, 72, 78\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,\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.wsize = 1 << state.wbits;\n    state.wnext = 0;\n    state.whave = 0;\n\n    state.window = new Uint8Array(state.wsize);\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;\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\n} = constants$2;\n\n/* ===========================================================================*/\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({\n    chunkSize: 1024 * 64,\n    windowBits: 15,\n    to: ''\n  }, 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    // Skip snyc markers if more data follows and not raw mode\n    while (strm.avail_in > 0 &&\n           status === Z_STREAM_END &&\n           strm.state.wrap > 0 &&\n           data[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      if (strm.avail_out === 0 || status === Z_STREAM_END) {\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      }\n    }\n\n    // Must repeat iteration if out buffer is full\n    if (status === Z_OK && 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) break;\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);\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\nimport pako from \"pako\";\r\n\r\n\r\ntype 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 ensureBrotli(): Promise<BrotliEngine | null> {\r\n  if (brotliInstance) return brotliInstance;\r\n  if (!brotliLoading) {\r\n    brotliLoading = (async () => {\r\n      try {\r\n        const mod = await cdnImport(CDN_BROTLI_WASM);\r\n        brotliInstance = await mod.default;\r\n        return brotliInstance;\r\n      } catch {\r\n        return null;\r\n      }\r\n    })();\r\n  }\r\n  return brotliLoading;\r\n}\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  ensureBrotli()\r\n    .then((engine) => {\r\n      if (!engine) {\r\n        callback(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        callback(null, Buffer.from(out));\r\n      } catch (e) {\r\n        callback(e as Error, Buffer.alloc(0));\r\n      }\r\n    })\r\n    .catch((e) => callback(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  ensureBrotli()\r\n    .then((engine) => {\r\n      if (!engine) {\r\n        callback(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        callback(null, Buffer.from(out));\r\n      } catch (e) {\r\n        callback(e as Error, Buffer.alloc(0));\r\n      }\r\n    })\r\n    .catch((e) => callback(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 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    throw new Error(\r\n      \"Brotli WASM not loaded yet. Use async brotliDecompress first.\",\r\n    );\r\n  }\r\n  return Buffer.from(brotliInstance.decompress(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  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\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  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  _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  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      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  };\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  if (this._native) { this._native.close(code, reason); 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    }, 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  }, 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  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._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?: () => 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)\r\n\r\nexport const builtinModules: string[] = [\r\n  \"assert\",\r\n  \"assert/strict\",\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  \"diagnostics_channel\",\r\n  \"dns\",\r\n  \"dns/promises\",\r\n  \"domain\",\r\n  \"events\",\r\n  \"fs\",\r\n  \"fs/promises\",\r\n  \"http\",\r\n  \"http2\",\r\n  \"https\",\r\n  \"inspector\",\r\n  \"inspector/promises\",\r\n  \"module\",\r\n  \"net\",\r\n  \"os\",\r\n  \"path\",\r\n  \"path/posix\",\r\n  \"path/win32\",\r\n  \"perf_hooks\",\r\n  \"process\",\r\n  \"punycode\",\r\n  \"querystring\",\r\n  \"quic\",\r\n  \"readline\",\r\n  \"readline/promises\",\r\n  \"repl\",\r\n  \"sea\",\r\n  \"sqlite\",\r\n  \"stream\",\r\n  \"stream/consumers\",\r\n  \"stream/promises\",\r\n  \"stream/web\",\r\n  \"string_decoder\",\r\n  \"sys\",\r\n  \"test\",\r\n  \"timers\",\r\n  \"timers/promises\",\r\n  \"tls\",\r\n  \"trace_events\",\r\n  \"tty\",\r\n  \"url\",\r\n  \"util\",\r\n  \"util/types\",\r\n  \"v8\",\r\n  \"vm\",\r\n  \"wasi\",\r\n  \"worker_threads\",\r\n  \"zlib\",\r\n];\r\n\r\nexport function isBuiltin(id: string): boolean {\r\n  const stripped = id.startsWith(\"node:\") ? id.slice(5) : id;\r\n  if (builtinModules.includes(stripped)) return true;\r\n  const slash = stripped.indexOf(\"/\");\r\n  if (slash !== -1) {\r\n    return builtinModules.includes(stripped.slice(0, slash));\r\n  }\r\n  return false;\r\n}\r\n\r\nexport function createRequire(origin: string): (specifier: string) => unknown {\r\n  return function requireFrom(specifier: string): unknown {\r\n    throw new Error(`Cannot resolve module '${specifier}' from '${origin}'`);\r\n  };\r\n}\r\n\r\nexport const _cache: Record<string, unknown> = {};\r\n\r\nexport const _extensions: Record<string, unknown> = {\r\n  \".js\": () => {},\r\n  \".json\": () => {},\r\n  \".node\": () => {},\r\n};\r\n\r\nexport const _pathCache: Record<string, string> = {};\r\n\r\nexport function _resolveFilename(\r\n  request: string,\r\n  _parent?: unknown,\r\n  _isMain?: boolean,\r\n  _options?: unknown,\r\n): string {\r\n  return request;\r\n}\r\n\r\nexport function _nodeModulePaths(from: string): string[] {\r\n  const parts = from.split(\"/\").filter(Boolean);\r\n  const paths: string[] = [];\r\n  for (let i = parts.length; i > 0; i--) {\r\n    const dir = \"/\" + parts.slice(0, i).join(\"/\");\r\n    if (parts[i - 1] !== \"node_modules\") {\r\n      paths.push(dir + \"/node_modules\");\r\n    }\r\n  }\r\n  paths.push(\"/node_modules\");\r\n  return paths;\r\n}\r\n\r\nexport function _load(\r\n  request: string,\r\n  _parent?: unknown,\r\n  _isMain?: boolean,\r\n): unknown {\r\n  // wired up by ScriptEngine.buildResolver at runtime\r\n  throw new Error(`Cannot load module '${request}'`);\r\n}\r\n\r\nexport function _findPath(\r\n  request: string,\r\n  _paths?: string[],\r\n  _isMain?: boolean,\r\n): string | false {\r\n  return request;\r\n}\r\n\r\nexport function wrap(script: string): string {\r\n  return (\r\n    \"(function (exports, require, module, __filename, __dirname) { \" +\r\n    script +\r\n    \"\\n});\"\r\n  );\r\n}\r\n\r\nexport const wrapper = [\r\n  \"(function (exports, require, module, __filename, __dirname) { \",\r\n  \"\\n});\",\r\n];\r\n\r\nexport function syncBuiltinESMExports(): void {\r\n}\r\n\r\nexport function Module(this: any, id?: string, parent?: any) {\r\n  this.id = id || \"\";\r\n  this.filename = id || \"\";\r\n  this.loaded = false;\r\n  this.parent = parent || null;\r\n  this.children = [];\r\n  this.exports = {};\r\n  this.paths = [];\r\n}\r\n\r\n// Next.js accesses Module.prototype.require\r\nModule.prototype.require = function (specifier: string): unknown {\r\n  throw new Error(\r\n    `Cannot resolve module '${specifier}' from '${this.filename}'`,\r\n  );\r\n};\r\n\r\nModule.prototype.load = function (_filename: string): void {\r\n  this.loaded = true;\r\n};\r\n\r\nModule.prototype._compile = function (\r\n  _content: string,\r\n  _filename: string,\r\n): void {\r\n};\r\n\r\nModule.createRequire = createRequire;\r\nModule.builtinModules = builtinModules;\r\nModule.isBuiltin = isBuiltin;\r\nModule._cache = _cache;\r\nModule._extensions = _extensions;\r\nModule._pathCache = _pathCache;\r\nModule._resolveFilename = _resolveFilename;\r\nModule._nodeModulePaths = _nodeModulePaths;\r\nModule._load = _load;\r\nModule._findPath = _findPath;\r\nModule.syncBuiltinESMExports = syncBuiltinESMExports;\r\nModule.wrap = wrap;\r\nModule.wrapper = wrapper;\r\nModule.Module = Module; \r\nModule.runMain = function () {}; \r\nModule._preloadModules = function (_requests?: string[]) {}; \r\nModule._initPaths = function () {}; \r\nModule.globalPaths = [\"/node_modules\"];\r\n\r\nexport default Module;\r\n","// perf_hooks polyfill wrapping browser Performance API\r\n\r\n\r\n\r\nexport const performance: Performance = globalThis.performance ?? ({\r\n  now: () => Date.now(),\r\n  timeOrigin: Date.now(),\r\n  mark: () => {},\r\n  measure: () => {},\r\n  getEntries: () => [],\r\n  getEntriesByName: () => [],\r\n  getEntriesByType: () => [],\r\n  clearMarks: () => {},\r\n  clearMeasures: () => {},\r\n  clearResourceTimings: () => {},\r\n} as unknown as Performance);\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\r\n\r\nimport { EventEmitter } from \"./events\";\r\nimport { ref as eventLoopRef, unref as eventLoopUnref } 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\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} 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(): void {};\r\nMessagePort.prototype.close = function close(): void {};\r\nMessagePort.prototype.ref = function ref(): void {};\r\nMessagePort.prototype.unref = function unref(): void {};\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  _isReffed: boolean;\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._isReffed = false;\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      if (self._isReffed) {\r\n        self._isReffed = false;\r\n        eventLoopUnref();\r\n      }\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  // keep parent alive while worker runs (Node.js default)\r\n  this._isReffed = true;\r\n  eventLoopRef();\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    if (this._isReffed) {\r\n      this._isReffed = false;\r\n      eventLoopUnref();\r\n    }\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._isReffed && !this._terminated) {\r\n    this._isReffed = true;\r\n    eventLoopRef();\r\n  }\r\n  return this;\r\n};\r\n\r\nWorker.prototype.unref = function unref(this: any): any {\r\n  if (this._isReffed) {\r\n    this._isReffed = false;\r\n    eventLoopUnref();\r\n  }\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\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} 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(): void {};\r\nBroadcastChannel.prototype.ref = function ref(): void {};\r\nBroadcastChannel.prototype.unref = function unref(): void {};\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};\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, 80, 3, 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, 343, 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, 330, 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, 726, 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, 71, 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, 2, 60, 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, 328, 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, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 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, 496, 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, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191];\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-\\u1ace\\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-\\u088e\\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\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\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-\\ua7cd\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7dc\\ua7f2-\\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\"` or `\"module\"`. This influences global\n  // strict mode and parsing of `import` and `export` declarations.\n  sourceType: \"script\",\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  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_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 || 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(SCOPE_TOP);\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 },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } };\n\nParser.prototype.parse = function parse () {\n  var node = this.options.program || this.startNode();\n  this.nextToken();\n  return this.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.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.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\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 = Object.create(null);\n  if (!node.body) { node.body = []; }\n  while (this.type !== types$1.eof) {\n    var stmt = this.parseStatement(null, true, exports);\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;\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.input.charCodeAt(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 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral\n  if (isIdentifierStart(nextCh, true)) {\n    var pos = next + 1;\n    while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; }\n    if (nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true }\n    var ident = this.input.slice(next, pos);\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.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00))\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 awaitEndPos = next + 5 /* await */, after;\n    if (this.input.slice(next, awaitEndPos) !== \"using\" ||\n      awaitEndPos === this.input.length ||\n      isIdentifierChar(after = this.input.charCodeAt(awaitEndPos)) ||\n      (after > 0xd7ff && after < 0xdc00)\n    ) { return false }\n\n    skipWhiteSpace.lastIndex = awaitEndPos;\n    var skipAfterUsing = skipWhiteSpace.exec(this.input);\n    if (skipAfterUsing && lineBreak.test(this.input.slice(awaitEndPos, awaitEndPos + skipAfterUsing[0].length))) { return false }\n  }\n\n  if (isFor) {\n    var ofEndPos = next + 2 /* of */, after$1;\n    if (this.input.slice(next, ofEndPos) === \"of\") {\n      if (ofEndPos === this.input.length ||\n        (!isIdentifierChar(after$1 = this.input.charCodeAt(ofEndPos)) && !(after$1 > 0xd7ff && after$1 < 0xdc00))) { return false }\n    }\n  }\n\n  var ch = this.input.charCodeAt(next);\n  return isIdentifierStart(ch, true) || ch === 92 // '\\'\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) {\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)\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 (topLevel && this.options.sourceType === \"script\") {\n        this.raise(this.start, \"Using declaration cannot appear in the top level when source type is `script`\");\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\") { this.next(); }\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.options.ecmaVersion >= 9) {\n      if (this.type === types$1._in) {\n        if (awaitAt > -1) { this.unexpected(awaitAt); }\n      } else { node.await = awaitAt > -1; }\n    }\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.inFunction && !this.options.allowReturnOutsideFunction)\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(0);\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) {\n  if (this.options.ecmaVersion >= 11) {\n    if (this.eatContextual(\"as\")) {\n      node.exported = this.parseModuleExportName();\n      this.checkExport(exports, 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) {\n  this.next();\n  // export * from '...'\n  if (this.eat(types$1.star)) {\n    return this.parseExportAllDeclaration(node, exports)\n  }\n  if (this.eat(types$1._default)) { // export default ...\n    this.checkExport(exports, \"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, node.declaration.declarations); }\n    else\n      { this.checkExport(exports, 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);\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, name, pos) {\n  if (!exports) { return }\n  if (typeof name !== \"string\")\n    { name = name.type === \"Identifier\" ? name.name : name.value; }\n  if (hasOwn(exports, name))\n    { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n  exports[name] = true;\n};\n\npp$8.checkPatternExport = function(exports, pat) {\n  var type = pat.type;\n  if (type === \"Identifier\")\n    { this.checkExport(exports, 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, 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, elt); }\n    } }\n  else if (type === \"Property\")\n    { this.checkPatternExport(exports, pat.value); }\n  else if (type === \"AssignmentPattern\")\n    { this.checkPatternExport(exports, pat.left); }\n  else if (type === \"RestElement\")\n    { this.checkPatternExport(exports, pat.argument); }\n};\n\npp$8.checkVariableExport = function(exports, decls) {\n  if (!exports) { return }\n  for (var i = 0, list = decls; i < list.length; i += 1)\n    {\n    var decl = list[i];\n\n    this.checkPatternExport(exports, 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) {\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,\n    node.exported,\n    node.exported.start\n  );\n\n  return this.finishNode(node, \"ExportSpecifier\")\n};\n\npp$8.parseExportSpecifiers = function(exports) {\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));\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 startPos = this.start, startLoc = this.startLoc;\n  var expr = this.parseMaybeAssign(forInit, refDestructuringErrors);\n  if (this.type === types$1.comma) {\n    var node = this.startNodeAt(startPos, startLoc);\n    node.expressions = [expr];\n    while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); }\n    return this.finishNode(node, \"SequenceExpression\")\n  }\n  return expr\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 (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 (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 = \"Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr 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.fullCharCodeAtPos = function() {\n  var code = this.input.charCodeAt(this.pos);\n  if (code <= 0xd7ff || code >= 0xdc00) { return code }\n  var next = this.input.charCodeAt(this.pos + 1);\n  return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\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.15.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 = /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  const hasNamedExport = ast.body.some(\r\n    (n: any) => n.type === \"ExportNamedDeclaration\",\r\n  );\r\n  const mixedExports = hasDefaultExport && hasNamedExport;\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 (\r\n          decl.type === \"FunctionDeclaration\" ||\r\n          decl.type === \"ClassDeclaration\"\r\n        ) {\r\n          const name = decl.id.name;\r\n          // Non-overlapping patches: remove \"export \" prefix, append binding\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      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\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, '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, CDN_ESBUILD_BROWSER, cdnImport } from \"../constants/cdn-urls\";\r\nimport { stripTopLevelAwait } from \"../syntax-transforms\";\r\nimport { ESBUILD_LOADER_MAP, RESOLVE_EXTENSIONS } from \"../constants/config\";\r\nimport { ref, unref } 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 bootPromise: Promise<void> | 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\nexport async function initialize(opts?: { wasmURL?: string }): Promise<void> {\r\n  if (engine) return;\r\n\r\n  if (\r\n    typeof window !== \"undefined\" &&\r\n    (window as unknown as Record<string, unknown>).__esbuild\r\n  ) {\r\n    engine = (window as unknown as Record<string, unknown>)\r\n      .__esbuild as typeof import(\"esbuild-wasm\");\r\n    return;\r\n  }\r\n\r\n  if (\r\n    typeof window !== \"undefined\" &&\r\n    (window as unknown as Record<string, unknown>).__esbuildInitPromise\r\n  ) {\r\n    await (window as unknown as Record<string, unknown>).__esbuildInitPromise;\r\n    if ((window as unknown as Record<string, unknown>).__esbuild) {\r\n      engine = (window as unknown as Record<string, unknown>)\r\n        .__esbuild as typeof import(\"esbuild-wasm\");\r\n      return;\r\n    }\r\n  }\r\n\r\n  if (bootPromise) return bootPromise;\r\n\r\n  bootPromise = (async () => {\r\n    try {\r\n      const mod = await cdnImport(CDN_ESBUILD_BROWSER);\r\n      await mod.initialize({ wasmURL: opts?.wasmURL || wasmBinaryUrl });\r\n      engine = mod;\r\n    } catch (err) {\r\n      bootPromise = null;\r\n      throw new Error(`esbuild: initialization failed -- ${err}`);\r\n    }\r\n  })();\r\n\r\n  return bootPromise;\r\n}\r\n\r\nexport async function transform(\r\n  source: string,\r\n  cfg?: TransformConfig,\r\n): Promise<TransformOutput> {\r\n  ref();\r\n  try {\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    unref();\r\n  }\r\n}\r\n\r\nexport async function build(cfg: BundleConfig): Promise<BundleOutput> {\r\n  if (!engine) await initialize();\r\n  if (!engine) throw new Error(\"esbuild: engine not ready\");\r\n\r\n  // keep event loop alive while building (Vite's dep optimizer is async)\r\n  ref();\r\n  try {\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    unref();\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) 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\nexport const version = \"0.21.5\";\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  ref();\r\n  try {\r\n    if (!engine) await initialize();\r\n  } finally {\r\n    unref();\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  searchRoots.push(\"/project/node_modules/\" + pkgName);\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            candidates.push(\"/project/node_modules/\" + pkgName);\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","'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\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// .write() is a no-op in browser\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  return r.rollup(inputOptions);\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 { ref as _elRef, unref as _elUnref } 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  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  this.terminal = cfg?.terminal ?? false;\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    _elRef();\r\n    const inputStream = this.input as EventEmitter;\r\n    const self = this;\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      inputStream.on(\"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      inputStream.on(\"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    inputStream.on(\"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\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    _elUnref();\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\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} 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  if (done) setTimeout(done, 0);\r\n};\r\nHttp2Session.prototype.destroy = function destroy(_err?: Error, _code?: number): void {};\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 {};\r\nHttp2Session.prototype.unref = function unref(): void {};\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\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} 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 (_cb) setTimeout(_cb, 0);\r\n  return this;\r\n};\r\n\r\nSocket.prototype.close = function close(_cb?: () => void): void {\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() { return this; };\r\nSocket.prototype.unref = function 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\r\n\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Script                                                             */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Script {\r\n  runInThisContext(_opts?: object): unknown;\r\n  runInNewContext(ctx?: object, _opts?: object): unknown;\r\n  runInContext(ctx: object, _opts?: object): unknown;\r\n  createCachedData(): Uint8Array;\r\n}\r\n\r\nexport const Script = function Script(this: any, src: string, _opts?: object) {\r\n  if (!this) return;\r\n  this._src = src;\r\n} as unknown as { new(src: string, _opts?: object): Script; prototype: any };\r\n\r\nScript.prototype.runInThisContext = function runInThisContext(_opts?: object): unknown {\r\n  return (0, eval)(this._src);\r\n};\r\n\r\nScript.prototype.runInNewContext = function runInNewContext(ctx?: object, _opts?: object): unknown {\r\n  const names = ctx ? Object.keys(ctx) : [];\r\n  const vals = ctx ? Object.values(ctx) : [];\r\n  const wrapper = new Function(...names, `return eval(${JSON.stringify(this._src)})`);\r\n  return wrapper(...vals);\r\n};\r\n\r\nScript.prototype.runInContext = function runInContext(ctx: object, _opts?: object): unknown {\r\n  return this.runInNewContext(ctx, _opts);\r\n};\r\n\r\nScript.prototype.createCachedData = function createCachedData(): Uint8Array {\r\n  return new Uint8Array(0);\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Standalone helpers                                                 */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport function createContext(sandbox?: object, _opts?: object): object {\r\n  return sandbox ?? {};\r\n}\r\n\r\nexport function isContext(_box: object): boolean {\r\n  return true;\r\n}\r\n\r\nexport function runInThisContext(code: string, _opts?: object): unknown {\r\n  return (0, eval)(code);\r\n}\r\n\r\nexport function runInNewContext(code: string, ctx?: object, _opts?: object): unknown {\r\n  return new Script(code).runInNewContext(ctx);\r\n}\r\n\r\nexport function runInContext(code: string, ctx: object, _opts?: object): unknown {\r\n  return runInNewContext(code, ctx);\r\n}\r\n\r\nexport function compileFunction(\r\n  body: string,\r\n  params?: string[],\r\n  _opts?: object\r\n): Function {\r\n  return new Function(...(params ?? []), body);\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  ESM Module stubs                                                   */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface Module {\r\n  link(_linker: unknown): Promise<void>;\r\n  evaluate(_opts?: object): Promise<unknown>;\r\n  readonly status: string;\r\n  readonly identifier: string;\r\n  readonly context: object;\r\n  readonly namespace: object;\r\n}\r\n\r\nexport const Module = function Module(this: any, _code: string, _opts?: object) {\r\n  if (!this) return;\r\n} as unknown as { new(_code: string, _opts?: object): Module; prototype: any };\r\n\r\nModule.prototype.link = function link(_linker: unknown): Promise<void> { return Promise.resolve(); };\r\nModule.prototype.evaluate = function evaluate(_opts?: object): Promise<unknown> { return Promise.resolve(); };\r\nObject.defineProperty(Module.prototype, 'status', { get() { return 'unlinked'; }, configurable: true });\r\nObject.defineProperty(Module.prototype, 'identifier', { get() { return ''; }, configurable: true });\r\nObject.defineProperty(Module.prototype, 'context', { get() { return {}; }, configurable: true });\r\nObject.defineProperty(Module.prototype, 'namespace', { get() { return {}; }, configurable: true });\r\n\r\nexport interface SourceTextModule extends Module {}\r\n\r\nexport const SourceTextModule = function SourceTextModule(this: any, _code: string, _opts?: object) {\r\n  if (!this) return;\r\n  (Module as any).call(this, _code, _opts);\r\n} as unknown as { new(_code: string, _opts?: object): SourceTextModule; prototype: any };\r\n\r\nObject.setPrototypeOf(SourceTextModule.prototype, Module.prototype);\r\n\r\nexport interface SyntheticModule extends Module {\r\n  setExport(_name: string, _value: unknown): void;\r\n}\r\n\r\nexport const SyntheticModule = function SyntheticModule(this: any, _code: string, _opts?: object) {\r\n  if (!this) return;\r\n  (Module as any).call(this, _code, _opts);\r\n} as unknown as { new(_code: string, _opts?: object): SyntheticModule; prototype: any };\r\n\r\nObject.setPrototypeOf(SyntheticModule.prototype, Module.prototype);\r\n\r\nSyntheticModule.prototype.setExport = function setExport(_name: string, _value: unknown): void {};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Default export                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport default {\r\n  Script,\r\n  createContext,\r\n  isContext,\r\n  runInThisContext,\r\n  runInNewContext,\r\n  runInContext,\r\n  compileFunction,\r\n  Module,\r\n  SourceTextModule,\r\n  SyntheticModule,\r\n};\r\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","// stub - AsyncLocalStorage uses a simple stack, rest is no-op\r\n\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  AsyncResource                                                      */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface AsyncResource {\r\n  runInAsyncScope<R>(fn: (...a: any[]) => R, thisArg?: unknown, ...args: any[]): R;\r\n  emitDestroy(): this;\r\n  asyncId(): number;\r\n  triggerAsyncId(): number;\r\n}\r\n\r\nexport const AsyncResource = function AsyncResource(this: any, _kind: string, _opts?: object) {\r\n  if (!this) return;\r\n} as unknown as { new(_kind: string, _opts?: object): AsyncResource; prototype: any; bind<F extends (...a: any[]) => any>(fn: F, _kind?: string): F };\r\n\r\nAsyncResource.prototype.runInAsyncScope = function runInAsyncScope<R>(\r\n  fn: (...a: any[]) => R,\r\n  thisArg?: unknown,\r\n  ...args: any[]\r\n): R {\r\n  return fn.apply(thisArg, args);\r\n};\r\nAsyncResource.prototype.emitDestroy = function emitDestroy() { return this; };\r\nAsyncResource.prototype.asyncId = function asyncId(): number { return 0; };\r\nAsyncResource.prototype.triggerAsyncId = function triggerAsyncId(): number { return 0; };\r\n\r\nAsyncResource.bind = function bind<F extends (...a: any[]) => any>(fn: F, _kind?: string): F {\r\n  return fn;\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  AsyncLocalStorage                                                  */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface AsyncLocalStorage<T> {\r\n  disable(): void;\r\n  getStore(): T | undefined;\r\n  run<R>(store: T, fn: (...args: any[]) => R, ...args: any[]): R;\r\n  exit<R>(fn: (...args: any[]) => R, ...args: any[]): R;\r\n  enterWith(store: T): void;\r\n}\r\n\r\nexport const AsyncLocalStorage = function AsyncLocalStorage(this: any) {\r\n  if (!this) return;\r\n  this._store = undefined;\r\n} as unknown as { new<T>(): AsyncLocalStorage<T>; prototype: any };\r\n\r\nAsyncLocalStorage.prototype.disable = function disable(): void {};\r\n\r\nAsyncLocalStorage.prototype.getStore = function getStore() {\r\n  return this._store;\r\n};\r\n\r\nAsyncLocalStorage.prototype.run = function run(store: any, fn: (...args: any[]) => any, ...args: any[]) {\r\n  const prev = this._store;\r\n  this._store = store;\r\n  try {\r\n    const result = fn(...args);\r\n    // For async functions, keep the store active until the promise settles\r\n    if (result && typeof (result as any).then === \"function\") {\r\n      (result as any).then(\r\n        () => { this._store = prev; },\r\n        () => { this._store = prev; },\r\n      );\r\n      return result;\r\n    }\r\n    this._store = prev;\r\n    return result;\r\n  } catch (e) {\r\n    this._store = prev;\r\n    throw e;\r\n  }\r\n};\r\n\r\nAsyncLocalStorage.prototype.exit = function exit(fn: (...args: any[]) => any, ...args: any[]) {\r\n  const prev = this._store;\r\n  this._store = undefined;\r\n  try {\r\n    const result = fn(...args);\r\n    if (result && typeof (result as any).then === \"function\") {\r\n      (result as any).then(\r\n        () => { this._store = prev; },\r\n        () => { this._store = prev; },\r\n      );\r\n      return result;\r\n    }\r\n    this._store = prev;\r\n    return result;\r\n  } catch (e) {\r\n    this._store = prev;\r\n    throw e;\r\n  }\r\n};\r\n\r\nAsyncLocalStorage.prototype.enterWith = function enterWith(store: any): void {\r\n  this._store = store;\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Hook API                                                           */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface AsyncHook {\r\n  enable(): AsyncHook;\r\n  disable(): AsyncHook;\r\n}\r\n\r\nexport function createHook(_callbacks: object): AsyncHook {\r\n  const hook: AsyncHook = {\r\n    enable() {\r\n      return hook;\r\n    },\r\n    disable() {\r\n      return hook;\r\n    },\r\n  };\r\n  return hook;\r\n}\r\n\r\nexport function executionAsyncId(): number {\r\n  return 0;\r\n}\r\nexport function executionAsyncResource(): object {\r\n  return {};\r\n}\r\nexport function triggerAsyncId(): number {\r\n  return 0;\r\n}\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Default export                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport default {\r\n  AsyncResource,\r\n  AsyncLocalStorage,\r\n  createHook,\r\n  executionAsyncId,\r\n  executionAsyncResource,\r\n  triggerAsyncId,\r\n};\r\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\nexport default {\r\n  channel,\r\n  hasSubscribers,\r\n  subscribe,\r\n  unsubscribe,\r\n  Channel: DiagChannel,\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\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      // 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      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/*  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.exports.memory as WebAssembly.Memory;\r\n      if (memory) return memory;\r\n    }\r\n    throw new Error(\"WASI: WebAssembly.Memory not available\");\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 decoder.decode(new Uint8Array(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      }\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        let idx = 0;\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          const direntSize = 24 + nameBytes.length;\r\n          if (offset + 24 > end) break; // not enough space for header\r\n\r\n          dv.setBigUint64(offset, BigInt(i + 1), true); // d_next\r\n          dv.setBigUint64(offset + 8, BigInt(i + 1), true); // d_ino (fake)\r\n\r\n          dv.setUint32(offset + 16, nameBytes.length, true); // d_namlen\r\n\r\n          // determine type\r\n          let dtype = FILETYPE_REGULAR_FILE;\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          } catch {\r\n            /* default to regular */\r\n          }\r\n          dv.setUint8(offset + 20, dtype); // d_type\r\n\r\n          // write name (may be partial if buf too small)\r\n          const nameCopy = Math.min(nameBytes.length, end - (offset + 24));\r\n          if (nameCopy > 0)\r\n            mem.set(nameBytes.subarray(0, nameCopy), offset + 24);\r\n\r\n          offset += 24 + nameCopy;\r\n          idx++;\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 data = new Uint8Array(getMemory().buffer, bufPtr, bufLen);\r\n            const text = decoder.decode(data);\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\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 slice = new Uint8Array(getMemory().buffer, buf_ptr, buf_len);\r\n      crypto.getRandomValues(slice);\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 = wasmInstance.exports.memory as WebAssembly.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 = wasmInstance.exports.memory as WebAssembly.Memory;\r\n\r\n    const _initialize = wasmInstance.exports._initialize;\r\n    if (typeof _initialize === \"function\") {\r\n      _initialize();\r\n    }\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","// stub - not available in browser (would need sql.js WASM)\r\n\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  StatementSync                                                      */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface StatementSync {\r\n  run(..._params: unknown[]): object;\r\n  get(..._params: unknown[]): unknown;\r\n  all(..._params: unknown[]): unknown[];\r\n  expandedSQL(): string;\r\n  sourceSQL(): string;\r\n}\r\n\r\ninterface StatementSyncConstructor {\r\n  new (): StatementSync;\r\n  (this: any): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const StatementSync = function StatementSync(this: any) {\r\n  if (!this) return;\r\n} as unknown as StatementSyncConstructor;\r\n\r\nStatementSync.prototype.run = function run(..._params: unknown[]): object {\r\n  throw new Error(\"node:sqlite is not supported in the browser environment\");\r\n};\r\nStatementSync.prototype.get = function get(..._params: unknown[]): unknown {\r\n  throw new Error(\"node:sqlite is not supported in the browser environment\");\r\n};\r\nStatementSync.prototype.all = function all(..._params: unknown[]): unknown[] {\r\n  throw new Error(\"node:sqlite is not supported in the browser environment\");\r\n};\r\nStatementSync.prototype.expandedSQL = function expandedSQL(): string {\r\n  return \"\";\r\n};\r\nStatementSync.prototype.sourceSQL = function sourceSQL(): string {\r\n  return \"\";\r\n};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  DatabaseSync                                                       */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport interface DatabaseSync {\r\n  close(): void;\r\n  exec(_sql: string): void;\r\n  prepare(_sql: string): StatementSync;\r\n  open(): void;\r\n}\r\n\r\ninterface DatabaseSyncConstructor {\r\n  new (_location: string, _options?: object): DatabaseSync;\r\n  (this: any, _location: string, _options?: object): void;\r\n  prototype: any;\r\n}\r\n\r\nexport const DatabaseSync = function DatabaseSync(this: any, _location: string, _options?: object) {\r\n  if (!this) return;\r\n  throw new Error(\"node:sqlite is not supported in the browser environment\");\r\n} as unknown as DatabaseSyncConstructor;\r\n\r\nDatabaseSync.prototype.close = function close(): void {};\r\nDatabaseSync.prototype.exec = function exec(_sql: string): void {};\r\nDatabaseSync.prototype.prepare = function prepare(_sql: string): StatementSync {\r\n  throw new Error(\"node:sqlite is not supported in the browser environment\");\r\n};\r\nDatabaseSync.prototype.open = function open(): void {};\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Default export                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport default {\r\n  DatabaseSync,\r\n  StatementSync,\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","// 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  const bytes = buf instanceof Uint8Array ? buf : new Uint8Array(buf);\r\n  return new TextDecoder(this.encoding).decode(bytes);\r\n};\r\n\r\nStringDecoder.prototype.end = function end(buf?: Uint8Array | Buffer): string {\r\n  return buf ? this.write(buf) : \"\";\r\n};\r\n\r\nexport default { StringDecoder };\r\n","// Timer functions mapped to browser equivalents, includes setImmediate polyfill\r\n\r\n\r\nexport const setTimeout = globalThis.setTimeout;\r\nexport const setInterval = globalThis.setInterval;\r\nexport const setImmediate = (fn: (...args: unknown[]) => void, ...args: unknown[]) =>\r\n  globalThis.setTimeout(fn, 0, ...args);\r\nexport const clearTimeout = globalThis.clearTimeout;\r\nexport const clearInterval = globalThis.clearInterval;\r\nexport const clearImmediate = globalThis.clearTimeout;\r\n\r\n// timers/promises API\r\nexport const promises = {\r\n  setTimeout: (ms: number, value?: unknown) =>\r\n    new Promise((resolve) => globalThis.setTimeout(() => resolve(value), ms)),\r\n  setInterval: globalThis.setInterval,\r\n  setImmediate: (value?: unknown) =>\r\n    new Promise((resolve) => globalThis.setTimeout(() => resolve(value), 0)),\r\n  scheduler: {\r\n    wait: (ms: number) =>\r\n      new Promise((resolve) => globalThis.setTimeout(resolve, ms)),\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};\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,\r\n// ESM-to-CJS conversion, and Node.js polyfills. Runs in the browser.\r\n\r\nimport { MemoryVolume } from \"./memory-volume\";\r\nimport type {\r\n  IScriptEngine,\r\n  ExecutionOutcome,\r\n  EngineConfig,\r\n  LoadedModule,\r\n} from \"./engine-types\";\r\nimport type { PackageManifest } from \"./types/manifest\";\r\nimport { quickDigest } from \"./helpers/digest\";\r\nimport { LRUCache as _LRUCache } from \"./memory-handler\";\r\nimport { bytesToBase64, bytesToHex } from \"./helpers/byte-encoding\";\r\nimport { buildFileSystemBridge, FsBridge } from \"./polyfills/fs\";\r\nimport * as pathPolyfill from \"./polyfills/path\";\r\nimport {\r\n  RESOLVE_EXTENSIONS,\r\n  MAIN_FIELD_EXTENSIONS,\r\n  INDEX_FILES,\r\n  IMPORTS_FIELD_EXTENSIONS,\r\n  LIMITS,\r\n} from \"./constants/config\";\r\nimport { buildProcessEnv, ProcessObject } from \"./polyfills/process\";\r\nimport * as httpPolyfill from \"./polyfills/http\";\r\nimport * as httpsPolyfill from \"./polyfills/https\";\r\nimport * as tcpPolyfill from \"./polyfills/net\";\r\nimport eventBusPolyfill from \"./polyfills/events\";\r\nimport streamPolyfill from \"./polyfills/stream\";\r\nimport * as urlPolyfill from \"./polyfills/url\";\r\nimport * as qsPolyfill from \"./polyfills/querystring\";\r\nimport * as helpersPolyfill from \"./polyfills/util\";\r\nimport * as ttyPolyfill from \"./polyfills/tty\";\r\nimport * as osPolyfill from \"./polyfills/os\";\r\nimport * as hashingPolyfill from \"./polyfills/crypto\";\r\nimport * as compressionPolyfill from \"./polyfills/zlib\";\r\nimport * as dnsPolyfill from \"./polyfills/dns\";\r\nimport bufferPolyfill from \"./polyfills/buffer\";\r\n// child_process is lazy-loaded to avoid pulling in the shell at import time\r\nlet _shellExecPolyfill: any = null;\r\nlet _initShellExec: ((vol: any) => void) | null = null;\r\nconst shellExecProxy = new Proxy({} as any, {\r\n  get(_target, prop) {\r\n    if (!_shellExecPolyfill) return undefined;\r\n    return _shellExecPolyfill[prop];\r\n  },\r\n  ownKeys() {\r\n    if (!_shellExecPolyfill) return [];\r\n    return Reflect.ownKeys(_shellExecPolyfill);\r\n  },\r\n  getOwnPropertyDescriptor(_target, prop) {\r\n    if (!_shellExecPolyfill) return undefined;\r\n    return Object.getOwnPropertyDescriptor(_shellExecPolyfill, prop);\r\n  },\r\n  has(_target, prop) {\r\n    if (!_shellExecPolyfill) return false;\r\n    return prop in _shellExecPolyfill;\r\n  },\r\n});\r\n\r\n// Set eagerly so require('child_process') works sync in workers.\r\n// The async .then() in the constructor fires too late for top-level require() calls.\r\nexport function setChildProcessPolyfill(mod: any): void {\r\n  _shellExecPolyfill = mod;\r\n  _initShellExec = mod.initShellExec;\r\n}\r\nimport { getProxyInstance } from \"./request-proxy\";\r\nimport * as watcherPolyfill from \"./polyfills/chokidar\";\r\nimport * as wsPolyfill from \"./polyfills/ws\";\r\nimport * as macEventsPolyfill from \"./polyfills/fsevents\";\r\nimport * as scannerPolyfill from \"./polyfills/readdirp\";\r\nimport * as moduleSysPolyfill from \"./polyfills/module\";\r\nimport * as perfPolyfill from \"./polyfills/perf_hooks\";\r\nimport * as threadPoolPolyfill from \"./polyfills/worker_threads\";\r\nimport * as esbuildPolyfill from \"./polyfills/esbuild\";\r\nimport * as rollupPolyfill from \"./polyfills/rollup\";\r\nimport * as v8Polyfill from \"./polyfills/v8\";\r\nimport * as lineReaderPolyfill from \"./polyfills/readline\";\r\nimport * as tlsPolyfill from \"./polyfills/tls\";\r\nimport * as http2Polyfill from \"./polyfills/http2\";\r\nimport * as clusterPolyfill from \"./polyfills/cluster\";\r\nimport * as udpPolyfill from \"./polyfills/dgram\";\r\nimport * as vmPolyfill from \"./polyfills/vm\";\r\nimport * as debugPolyfill from \"./polyfills/inspector\";\r\nimport * as asyncCtxPolyfill from \"./polyfills/async_hooks\";\r\nimport * as domainPolyfill from \"./polyfills/domain\";\r\nimport * as tracePolyfill from \"./polyfills/diagnostics_channel\";\r\nimport * as consolePolyfill from \"./polyfills/console\";\r\nimport * as replPolyfill from \"./polyfills/repl\";\r\nimport * as testPolyfill from \"./polyfills/test\";\r\nimport * as traceEventsPolyfill from \"./polyfills/trace_events\";\r\nimport * as wasiPolyfill from \"./polyfills/wasi\";\r\nimport * as seaPolyfill from \"./polyfills/sea\";\r\nimport * as sqlitePolyfill from \"./polyfills/sqlite\";\r\nimport * as quicPolyfill from \"./polyfills/quic\";\r\nimport * as lightningcssPolyfill from \"./polyfills/lightningcss\";\r\nimport * as tailwindOxidePolyfill from \"./polyfills/tailwindcss-oxide\";\r\nimport {\r\n  promises as streamPromises,\r\n  Readable,\r\n  Writable,\r\n  Duplex,\r\n  Transform,\r\n  PassThrough,\r\n} from \"./polyfills/stream\";\r\nimport { promises as dnsPromises } from \"./polyfills/dns\";\r\nimport { promises as readlinePromises } from \"./polyfills/readline\";\r\n\r\nimport assertPolyfill from \"./polyfills/assert\";\r\nimport stringDecoderPolyfill from \"./polyfills/string_decoder\";\r\nimport timersPolyfill from \"./polyfills/timers\";\r\nimport { promises as timersPromises } from \"./polyfills/timers\";\r\nimport * as punycodePolyfill from \"./polyfills/punycode\";\r\nimport constantsPolyfill from \"./polyfills/constants\";\r\nimport {\r\n  resolve as resolveExports,\r\n  imports as resolveImports,\r\n} from \"resolve.exports\";\r\nimport {\r\n  esmToCjs,\r\n  collectEsmCjsPatches,\r\n  hasTopLevelAwait,\r\n  stripTopLevelAwait,\r\n} from \"./syntax-transforms\";\r\nimport {\r\n  getCachedModule,\r\n  precompileWasm,\r\n  compileWasmInWorker,\r\n} from \"./helpers/wasm-cache\";\r\nimport * as acorn from \"acorn\";\r\nimport acornJsx from \"acorn-jsx\";\r\n\r\n// acorn parser extended with JSX support for synchronous JSX transformation\r\nconst acornWithJsx = (acorn.Parser as any).extend(acornJsx());\r\n\r\n// ── TypeScript type stripper ──\r\n// Regex-based stripping of TS syntax so acorn/eval can handle it at runtime.\r\n\r\nfunction stripTypeScript(source: string): string {\r\n  let s = source;\r\n\r\n  s = s.replace(\r\n    /^\\s*declare\\s+(module|namespace|global)\\s+[^{]*\\{[^}]*(?:\\{[^}]*\\}[^}]*)*\\}/gm,\r\n    \"\",\r\n  );\r\n  s = s.replace(\r\n    /^\\s*declare\\s+(?:const|let|var|function|class|enum|type|interface)\\s+[^;\\n]+[;\\n]/gm,\r\n    \"\",\r\n  );\r\n\r\n  s = s.replace(\r\n    /^\\s*(?:export\\s+)?interface\\s+\\w+(?:\\s+extends\\s+[^{]+)?\\s*\\{[^}]*(?:\\{[^}]*\\}[^}]*)*\\}/gm,\r\n    \"\",\r\n  );\r\n\r\n  s = s.replace(/^\\s*(?:export\\s+)?type\\s+\\w+(?:<[^>]*>)?\\s*=\\s*[^;]+;/gm, \"\");\r\n\r\n  s = s.replace(\r\n    /^\\s*export\\s+type\\s*\\{[^}]*\\}\\s*(?:from\\s*['\"][^'\"]*['\"])?\\s*;?/gm,\r\n    \"\",\r\n  );\r\n  s = s.replace(\r\n    /^\\s*import\\s+type\\s+(?:\\{[^}]*\\}|\\w+)\\s*(?:from\\s*['\"][^'\"]*['\"])?\\s*;?/gm,\r\n    \"\",\r\n  );\r\n\r\n  s = s.replace(/\\bas\\s+const\\b/g, \"\");\r\n  s = s.replace(/\\s+as\\s+(?:[A-Z][\\w.<>,\\s|&\\[\\]]*)/g, \"\");\r\n\r\n  s = s.replace(\r\n    /(function\\s+\\w+|(?:const|let|var)\\s+\\w+\\s*=\\s*(?:async\\s+)?(?:function\\s*)?)\\s*<[^(]*?>\\s*\\(/g,\r\n    \"$1(\",\r\n  );\r\n\r\n  // Strip type annotations from params and return types\r\n  s = s.replace(\r\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,\r\n    (match, offset) => {\r\n      // Heuristic: only strip if we're in a signature context, not object literals\r\n      const before = s.slice(Math.max(0, offset - 40), offset);\r\n      if (/[,(?]\\s*\\w+\\s*\\??$/.test(before)) return \"\";\r\n      if (/\\)\\s*$/.test(before)) return \"\";\r\n      if (/\\(\\s*\\w+\\s*\\??$/.test(before)) return \"\";\r\n      if (/\\b(?:const|let|var)\\s+\\w+$/.test(before)) return \"\";\r\n      return match;\r\n    },\r\n  );\r\n\r\n  s = s.replace(/(\\w)!\\./g, \"$1.\");\r\n  s = s.replace(/(\\w)!\\)/g, \"$1)\");\r\n  s = s.replace(/(\\w)!\\,/g, \"$1,\");\r\n\r\n  s = s.replace(\r\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,\r\n    \"\",\r\n  );\r\n\r\n  // Convert enums to plain objects\r\n  s = s.replace(\r\n    /^\\s*(?:export\\s+)?(?:const\\s+)?enum\\s+(\\w+)\\s*\\{([^}]*)\\}/gm,\r\n    (_, name, body) => {\r\n      const entries = body\r\n        .split(\",\")\r\n        .map((e: string) => e.trim())\r\n        .filter(Boolean);\r\n      const obj: string[] = [];\r\n      let autoVal = 0;\r\n      for (const entry of entries) {\r\n        const eqIdx = entry.indexOf(\"=\");\r\n        if (eqIdx !== -1) {\r\n          const key = entry.slice(0, eqIdx).trim();\r\n          const val = entry.slice(eqIdx + 1).trim();\r\n          obj.push(`${JSON.stringify(key)}: ${val}`);\r\n          const numVal = Number(val);\r\n          if (!isNaN(numVal)) autoVal = numVal + 1;\r\n        } else {\r\n          obj.push(`${JSON.stringify(entry)}: ${autoVal}`);\r\n          autoVal++;\r\n        }\r\n      }\r\n      return `var ${name} = {${obj.join(\", \")}};`;\r\n    },\r\n  );\r\n\r\n  s = s.replace(/^\\s*(public|private|protected)?\\s*readonly\\s+/gm, \"$1 \");\r\n  s = s.replace(/\\b(public|private|protected)\\s+(?=\\w+[\\s,):])/g, \"\");\r\n  s = s.replace(/\\babstract\\s+(class|extends)/g, \"$1\");\r\n  s = s.replace(/\\bimplements\\s+[\\w.,\\s<>]+(?=\\s*\\{)/g, \"\");\r\n  s = s.replace(/\\boverride\\s+(?=\\w)/g, \"\");\r\n\r\n  return s;\r\n}\r\n\r\nfunction isTypeScriptFile(filename: string): boolean {\r\n  const clean = filename.split(\"?\")[0];\r\n  if (clean.endsWith(\".ts\") || clean.endsWith(\".tsx\") || clean.endsWith(\".mts\"))\r\n    return true;\r\n  // Vite SFC query params like ?type=script&lang.ts\r\n  if (filename.includes(\"lang.ts\") || filename.includes(\"lang=ts\")) return true;\r\n  return false;\r\n}\r\n\r\n// CSS files must never go through stripTypeScript\r\nfunction isCSSFile(filename: string): boolean {\r\n  const clean = filename.split(\"?\")[0];\r\n  if (\r\n    clean.endsWith(\".css\") ||\r\n    clean.endsWith(\".scss\") ||\r\n    clean.endsWith(\".sass\") ||\r\n    clean.endsWith(\".less\") ||\r\n    clean.endsWith(\".styl\") ||\r\n    clean.endsWith(\".stylus\") ||\r\n    clean.endsWith(\".postcss\")\r\n  )\r\n    return true;\r\n  if (filename.includes(\"type=style\")) return true;\r\n  if (/lang[.=](?:css|scss|sass|less|styl|stylus|postcss)/.test(filename))\r\n    return true;\r\n  return false;\r\n}\r\n\r\n// Fallback heuristic when filename doesn't indicate TS\r\nfunction looksLikeTypeScript(source: string): boolean {\r\n  return (\r\n    /\\b(?:interface|type)\\s+\\w+/.test(source) ||\r\n    /:\\s*(?:string|number|boolean|void|any|never|unknown|Record|Array|Promise)\\b/.test(\r\n      source,\r\n    ) ||\r\n    /(?:as\\s+(?:string|number|boolean|any|const)\\b)/.test(source)\r\n  );\r\n}\r\n\r\n// ── AST walk helper ──\r\nfunction traverseAst(node: any, visitor: (n: any) => void): void {\r\n  if (!node || typeof node !== \"object\") return;\r\n  if (typeof node.type === \"string\") visitor(node);\r\n  for (const key in node) {\r\n    if (\r\n      key === \"type\" ||\r\n      key === \"start\" ||\r\n      key === \"end\" ||\r\n      key === \"loc\" ||\r\n      key === \"range\"\r\n    )\r\n      continue;\r\n    const val = node[key];\r\n    if (val && typeof val === \"object\") {\r\n      if (Array.isArray(val)) {\r\n        for (let i = 0; i < val.length; i++) {\r\n          const item = val[i];\r\n          if (item && typeof item === \"object\" && typeof item.type === \"string\")\r\n            traverseAst(item, visitor);\r\n        }\r\n      } else if (typeof val.type === \"string\") {\r\n        traverseAst(val, visitor);\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\n// ── Dynamic import regex fallback ──\r\nfunction rewriteDynamicImportsRegex(source: string): string {\r\n  return source.replace(/(?<![.$\\w])import\\s*\\(/g, \"__asyncLoad(\");\r\n}\r\n\r\n// ── JSX detection ──\r\nfunction containsJsxSyntax(source: string): boolean {\r\n  // Quick heuristic: look for JSX-like patterns\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  return false;\r\n}\r\n\r\nfunction needsJsxTransform(filePath: string, source: string): boolean {\r\n  if (filePath.endsWith(\".jsx\") || filePath.endsWith(\".tsx\")) return true;\r\n  // Also detect JSX in plain .js files\r\n  return containsJsxSyntax(source);\r\n}\r\n\r\n// ── Synchronous JSX → React.createElement transformer ──\r\n// Uses acorn-jsx to parse JSX and converts it to createElement calls.\r\n// This runs synchronously in the require() pipeline.\r\nfunction transformJsxSync(source: string, filePath: string): string {\r\n  let ast: any;\r\n  try {\r\n    ast = acornWithJsx.parse(source, {\r\n      ecmaVersion: \"latest\",\r\n      sourceType: \"module\",\r\n      allowImportExportEverywhere: true,\r\n    });\r\n  } catch {\r\n    // If parsing fails, return source unchanged\r\n    return source;\r\n  }\r\n\r\n  // Collect JSX patches (reverse order for safe splicing)\r\n  const patches: Array<[number, number, string]> = [];\r\n\r\n  function jsxNodeToCode(node: any): string {\r\n    if (!node) return \"null\";\r\n\r\n    switch (node.type) {\r\n      case \"JSXElement\":\r\n        return jsxElementToCode(node);\r\n      case \"JSXFragment\":\r\n        return jsxFragmentToCode(node);\r\n      case \"JSXText\":\r\n        return jsxTextToCode(node);\r\n      case \"JSXExpressionContainer\":\r\n        if (node.expression.type === \"JSXEmptyExpression\") return \"\";\r\n        return source.slice(node.expression.start, node.expression.end);\r\n      case \"JSXSpreadChild\":\r\n        return source.slice(node.expression.start, node.expression.end);\r\n      default:\r\n        return source.slice(node.start, node.end);\r\n    }\r\n  }\r\n\r\n  function jsxTextToCode(node: any): string {\r\n    const raw = node.value as string;\r\n    // Collapse whitespace like React does\r\n    const trimmed = raw\r\n      .replace(/\\n\\s*/g, \" \")\r\n      .replace(/\\s+/g, \" \");\r\n    if (!trimmed.trim()) return \"\";\r\n    return JSON.stringify(trimmed);\r\n  }\r\n\r\n  function jsxNameToCode(nameNode: any): string {\r\n    if (nameNode.type === \"JSXIdentifier\") {\r\n      const name = nameNode.name;\r\n      // Lowercase = HTML element (string), uppercase = component (identifier)\r\n      if (/^[a-z]/.test(name)) return JSON.stringify(name);\r\n      return name;\r\n    }\r\n    if (nameNode.type === \"JSXMemberExpression\") {\r\n      return jsxMemberToCode(nameNode);\r\n    }\r\n    if (nameNode.type === \"JSXNamespacedName\") {\r\n      return JSON.stringify(nameNode.namespace.name + \":\" + nameNode.name.name);\r\n    }\r\n    return source.slice(nameNode.start, nameNode.end);\r\n  }\r\n\r\n  function jsxMemberToCode(node: any): string {\r\n    if (node.type === \"JSXMemberExpression\") {\r\n      return jsxMemberToCode(node.object) + \".\" + node.property.name;\r\n    }\r\n    if (node.type === \"JSXIdentifier\") {\r\n      return node.name;\r\n    }\r\n    return source.slice(node.start, node.end);\r\n  }\r\n\r\n  function jsxAttrValueToCode(attr: any): string {\r\n    if (!attr.value) return \"true\";\r\n    if (attr.value.type === \"Literal\" || attr.value.type === \"StringLiteral\") {\r\n      return JSON.stringify(attr.value.value);\r\n    }\r\n    if (attr.value.type === \"JSXExpressionContainer\") {\r\n      return source.slice(\r\n        attr.value.expression.start,\r\n        attr.value.expression.end,\r\n      );\r\n    }\r\n    if (attr.value.type === \"JSXElement\") {\r\n      return jsxElementToCode(attr.value);\r\n    }\r\n    if (attr.value.type === \"JSXFragment\") {\r\n      return jsxFragmentToCode(attr.value);\r\n    }\r\n    return source.slice(attr.value.start, attr.value.end);\r\n  }\r\n\r\n  function jsxPropsToCode(attrs: any[]): string {\r\n    if (!attrs || attrs.length === 0) return \"null\";\r\n\r\n    const hasSpread = attrs.some(\r\n      (a: any) => a.type === \"JSXSpreadAttribute\",\r\n    );\r\n\r\n    if (hasSpread) {\r\n      // Use Object.assign for spread attributes\r\n      const parts: string[] = [\"{}\"];\r\n      let currentObj: string[] = [];\r\n\r\n      const flushCurrentObj = () => {\r\n        if (currentObj.length > 0) {\r\n          parts.push(\"{\" + currentObj.join(\", \") + \"}\");\r\n          currentObj = [];\r\n        }\r\n      };\r\n\r\n      for (const attr of attrs) {\r\n        if (attr.type === \"JSXSpreadAttribute\") {\r\n          flushCurrentObj();\r\n          parts.push(\r\n            source.slice(attr.argument.start, attr.argument.end),\r\n          );\r\n        } else {\r\n          const key = attr.name.type === \"JSXNamespacedName\"\r\n            ? JSON.stringify(attr.name.namespace.name + \":\" + attr.name.name.name)\r\n            : /^[a-zA-Z_$][\\w$]*$/.test(attr.name.name)\r\n              ? attr.name.name\r\n              : JSON.stringify(attr.name.name);\r\n          currentObj.push(`${key}: ${jsxAttrValueToCode(attr)}`);\r\n        }\r\n      }\r\n      flushCurrentObj();\r\n      return `Object.assign(${parts.join(\", \")})`;\r\n    }\r\n\r\n    const props = attrs.map((attr: any) => {\r\n      const key = attr.name.type === \"JSXNamespacedName\"\r\n        ? JSON.stringify(attr.name.namespace.name + \":\" + attr.name.name.name)\r\n        : /^[a-zA-Z_$][\\w$]*$/.test(attr.name.name)\r\n          ? attr.name.name\r\n          : JSON.stringify(attr.name.name);\r\n      return `${key}: ${jsxAttrValueToCode(attr)}`;\r\n    });\r\n    return \"{\" + props.join(\", \") + \"}\";\r\n  }\r\n\r\n  function jsxChildrenToArgs(children: any[]): string[] {\r\n    const args: string[] = [];\r\n    for (const child of children) {\r\n      const code = jsxNodeToCode(child);\r\n      if (code) args.push(code);\r\n    }\r\n    return args;\r\n  }\r\n\r\n  function jsxElementToCode(node: any): string {\r\n    const tag = jsxNameToCode(node.openingElement.name);\r\n    const props = jsxPropsToCode(node.openingElement.attributes);\r\n    const childArgs = jsxChildrenToArgs(node.children);\r\n    const allArgs = [tag, props, ...childArgs];\r\n    return `React.createElement(${allArgs.join(\", \")})`;\r\n  }\r\n\r\n  function jsxFragmentToCode(node: any): string {\r\n    const childArgs = jsxChildrenToArgs(node.children);\r\n    const allArgs = [\"React.Fragment\", \"null\", ...childArgs];\r\n    return `React.createElement(${allArgs.join(\", \")})`;\r\n  }\r\n\r\n  // Walk AST and collect top-level JSX patches\r\n  function walkAndPatch(node: any): void {\r\n    if (!node || typeof node !== \"object\") return;\r\n    if (Array.isArray(node)) {\r\n      for (const child of node) walkAndPatch(child);\r\n      return;\r\n    }\r\n\r\n    if (node.type === \"JSXElement\" || node.type === \"JSXFragment\") {\r\n      patches.push([node.start, node.end, jsxNodeToCode(node)]);\r\n      return; // Don't recurse into children — they're handled by jsxNodeToCode\r\n    }\r\n\r\n    for (const key of Object.keys(node)) {\r\n      if (\r\n        key === \"type\" ||\r\n        key === \"start\" ||\r\n        key === \"end\" ||\r\n        key === \"loc\" ||\r\n        key === \"range\"\r\n      )\r\n        continue;\r\n      const val = node[key];\r\n      if (val && typeof val === \"object\") walkAndPatch(val);\r\n    }\r\n  }\r\n\r\n  walkAndPatch(ast);\r\n\r\n  if (patches.length === 0) return source;\r\n\r\n  // Apply patches in reverse order\r\n  let output = source;\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  }\r\n\r\n  return output;\r\n}\r\n\r\n// ── ESM → CJS conversion ──\r\nfunction convertModuleSyntax(source: string, filePath: string): string {\r\n  if (!/\\bimport\\b|\\bexport\\b/.test(source)) return source;\r\n  try {\r\n    return convertViaAst(source, filePath);\r\n  } catch (astErr) {\r\n    _nativeConsole.warn(\r\n      \"[convertModuleSyntax] AST parse failed for\",\r\n      filePath,\r\n      \"falling back to regex:\",\r\n      astErr instanceof Error ? astErr.message : String(astErr),\r\n    );\r\n    return convertViaRegex(source, filePath);\r\n  }\r\n}\r\n\r\nfunction convertViaAst(source: string, filePath: string): string {\r\n  const ast = acorn.parse(source, {\r\n    ecmaVersion: \"latest\",\r\n    sourceType: \"module\",\r\n  }) as any;\r\n  const patches: Array<[number, number, string]> = [];\r\n\r\n  // collect import.meta and import() patches\r\n  traverseAst(ast, (node: any) => {\r\n    if (\r\n      node.type === \"MetaProperty\" &&\r\n      node.meta?.name === \"import\" &&\r\n      node.property?.name === \"meta\"\r\n    ) {\r\n      patches.push([node.start, node.end, \"import_meta\"]);\r\n    }\r\n    if (node.type === \"ImportExpression\") {\r\n      patches.push([node.start, node.start + 6, \"__asyncLoad\"]);\r\n    }\r\n  });\r\n\r\n  const hasImportDecl = ast.body.some(\r\n    (n: any) => n.type === \"ImportDeclaration\",\r\n  );\r\n  const hasExportDecl = ast.body.some((n: any) => n.type?.startsWith(\"Export\"));\r\n\r\n  // collect ESM→CJS patches from the same AST (no second parse)\r\n  if (hasImportDecl || hasExportDecl) {\r\n    collectEsmCjsPatches(ast, source, patches);\r\n  }\r\n\r\n  // apply all patches in one pass\r\n  let output = source;\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\r\n  if (hasExportDecl) {\r\n    output =\r\n      'Object.defineProperty(exports, \"__esModule\", { value: true });\\n' +\r\n      output;\r\n  }\r\n\r\n  // .mjs files with `const require = createRequire(...)` hit TDZ after esmToCjs\r\n  output = demoteLexicalRequire(output);\r\n\r\n  return output;\r\n}\r\n\r\n// Demote `const/let require =` to plain assignment to avoid TDZ with esmToCjs-generated require() calls\r\nfunction demoteLexicalRequire(code: string): string {\r\n  if (!/\\b(?:const|let)\\s+require\\s*=/.test(code)) return code;\r\n  return code.replace(/\\b(const|let)\\s+(require)\\s*=/g, \"require =\");\r\n}\r\n\r\n// Builds the IIFE wrapper that sandboxes user code with shimmed globals\r\nfunction buildModuleWrapper(\r\n  code: string,\r\n  opts: {\r\n    async?: boolean;\r\n    useNativePromise?: boolean;\r\n    includeViteVars?: boolean;\r\n    hideBrowserGlobals?: boolean;\r\n    wasmHelpers?: boolean;\r\n  } = {},\r\n): string {\r\n  const {\r\n    async: isAsync = false,\r\n    useNativePromise = false,\r\n    includeViteVars = true,\r\n    hideBrowserGlobals = true,\r\n    wasmHelpers = false,\r\n  } = opts;\r\n\r\n  const promiseVar = useNativePromise ? \"globalThis.Promise\" : \"$SyncPromise\";\r\n  const fnKeyword = isAsync ? \"async function\" : \"function\";\r\n\r\n  let vars = `var exports = $exports;\r\nvar require = $require;\r\nvar module = $module;\r\nvar __filename = $filename;\r\nvar __dirname = $dirname;\r\n`;\r\n  if (includeViteVars) {\r\n    vars += `var __vite_injected_original_filename = $filename;\r\nvar __vite_injected_original_dirname = $dirname;\r\nvar __vite_injected_original_import_meta_url = \"file://\" + $filename;\r\n`;\r\n  }\r\n  vars += `var process = $process;\r\nvar console = $console;\r\nvar import_meta = $importMeta;\r\nvar __asyncLoad = $asyncLoad;\r\nvar __syncAwait = $syncAwait;\r\nvar Promise = ${promiseVar};\r\nvar global = globalThis;\r\n`;\r\n  if (hideBrowserGlobals) {\r\n    vars += `var document = undefined;\r\nvar window = undefined;\r\nvar HTMLElement = undefined;\r\n`;\r\n  }\r\n  vars += `globalThis.process = $process;\r\nglobalThis.console = $console;\r\nglobalThis.require = $require;\r\nglobal.process = $process;\r\nglobal.console = $console;\r\nglobal.require = $require;\r\n`;\r\n  if (wasmHelpers) {\r\n    vars += `async function __wasmCompile(bytes) { return WebAssembly.compile(bytes); }\r\nasync function __wasmInstantiate(moduleOrBytes, imports) {\r\n  var mod = moduleOrBytes;\r\n  if (moduleOrBytes instanceof ArrayBuffer || ArrayBuffer.isView(moduleOrBytes)) {\r\n    mod = await WebAssembly.compile(moduleOrBytes);\r\n  }\r\n  var result = await WebAssembly.instantiate(mod, imports);\r\n  return result.instance || result;\r\n}\r\n`;\r\n  }\r\n\r\n  return `(function($exports, $require, $module, $filename, $dirname, $process, $console, $importMeta, $asyncLoad, $syncAwait, $SyncPromise) {\r\n${vars}return (${fnKeyword}() {\r\n${code}\r\n}).call(this);\r\n})`;\r\n}\r\n\r\nfunction convertViaRegex(source: string, filePath: string): string {\r\n  let output = source;\r\n  output = output.replace(/\\bimport\\.meta\\.url\\b/g, `\"file://${filePath}\"`);\r\n  output = output.replace(\r\n    /\\bimport\\.meta\\.dirname\\b/g,\r\n    `\"${pathPolyfill.dirname(filePath)}\"`,\r\n  );\r\n  output = output.replace(/\\bimport\\.meta\\.filename\\b/g, `\"${filePath}\"`);\r\n  output = output.replace(\r\n    /\\bimport\\.meta\\b/g,\r\n    `({ url: \"file://${filePath}\", dirname: \"${pathPolyfill.dirname(filePath)}\", filename: \"${filePath}\" })`,\r\n  );\r\n  output = rewriteDynamicImportsRegex(output);\r\n\r\n  const hasImport = /\\bimport\\s+[\\w{*'\"]/m.test(source);\r\n  const hasExport =\r\n    /\\bexport\\s+(?:default|const|let|var|function|class|{|\\*)/m.test(source);\r\n  if (hasImport || hasExport) {\r\n    output = esmToCjs(output);\r\n    if (hasExport) {\r\n      output =\r\n        'Object.defineProperty(exports, \"__esModule\", { value: true });\\n' +\r\n        output;\r\n    }\r\n  }\r\n\r\n  output = demoteLexicalRequire(output);\r\n\r\n  return output;\r\n}\r\n\r\n// ── Sync promise infrastructure ──\r\n// SyncThenable and SyncPromise let __syncAwait unwrap values without hitting\r\n// the microtask queue. This is how require() can work synchronously even when\r\n// modules use async patterns internally.\r\n\r\n// .then() fires synchronously when value is already resolved\r\nclass SyncThenable<T> {\r\n  private _value: T;\r\n  constructor(value: T) {\r\n    this._value = value;\r\n  }\r\n  then<R>(\r\n    onFulfilled?: ((v: T) => R) | null,\r\n    _onRejected?: ((e: any) => R) | null,\r\n  ): SyncThenable<R> | this {\r\n    if (onFulfilled) return new SyncThenable(onFulfilled(this._value));\r\n    return this;\r\n  }\r\n  catch(_onRejected?: ((e: any) => unknown) | null): this {\r\n    return this;\r\n  }\r\n  finally(onFinally?: (() => void) | null): this {\r\n    if (onFinally) onFinally();\r\n    return this;\r\n  }\r\n}\r\n\r\n// Try to synchronously unwrap a thenable. Returns the value if .then() fires sync,\r\n// otherwise returns the original value (possibly a native Promise).\r\nfunction syncAwait(val: unknown): unknown {\r\n  if (val && typeof (val as any).then === \"function\") {\r\n    let resolved: unknown;\r\n    let gotSync = false;\r\n    (val as any).then((v: unknown) => {\r\n      resolved = v;\r\n      gotSync = true;\r\n    });\r\n    if (gotSync) return resolved;\r\n  }\r\n  return val;\r\n}\r\n\r\n// Promise subclass that resolves .then() synchronously when the executor resolves sync.\r\n// Needed because async functions always return native Promises, but when their body\r\n// resolves synchronously we want __syncAwait to unwrap the result.\r\n// Injected as `Promise` inside module wrappers.\r\nfunction createSyncPromise(): typeof Promise {\r\n  const NativePromise = Promise;\r\n\r\n  class SyncPromise<T> extends NativePromise<T> {\r\n    private _syncValue: T | undefined;\r\n    private _syncResolved = false;\r\n    private _syncRejected = false;\r\n    private _syncError: any;\r\n\r\n    constructor(\r\n      executor: (\r\n        resolve: (value: T | PromiseLike<T>) => void,\r\n        reject: (reason?: any) => void,\r\n      ) => void,\r\n    ) {\r\n      let syncVal: T | undefined;\r\n      let syncResolved = false;\r\n      let syncRejected = false;\r\n      let syncErr: any;\r\n\r\n      super((resolve, reject) => {\r\n        executor(\r\n          (value) => {\r\n            // Try sync unwrap. If it can't resolve sync, let native handle it.\r\n            // Without this, p-limit's resolve(asyncPromise) gets treated as\r\n            // sync-resolved with the Promise object as the value.\r\n            if (\r\n              value &&\r\n              typeof value === \"object\" &&\r\n              typeof (value as any).then === \"function\"\r\n            ) {\r\n              let innerResolved = false;\r\n              let innerVal: T | undefined;\r\n              let innerRejected = false;\r\n              let innerErr: any;\r\n              (value as any).then(\r\n                (v: T) => {\r\n                  innerVal = v;\r\n                  innerResolved = true;\r\n                },\r\n                (e: any) => {\r\n                  innerErr = e;\r\n                  innerRejected = true;\r\n                },\r\n              );\r\n              if (innerResolved) {\r\n                syncVal = innerVal;\r\n                syncResolved = true;\r\n                resolve(innerVal!);\r\n                return;\r\n              }\r\n              if (innerRejected) {\r\n                syncRejected = true;\r\n                syncErr = innerErr;\r\n                reject(innerErr);\r\n                return;\r\n              }\r\n              resolve(value);\r\n              return;\r\n            }\r\n            syncVal = value as T;\r\n            syncResolved = true;\r\n            resolve(value);\r\n          },\r\n          (reason) => {\r\n            syncRejected = true;\r\n            syncErr = reason;\r\n            reject(reason);\r\n          },\r\n        );\r\n      });\r\n\r\n      this._syncValue = syncVal;\r\n      this._syncResolved = syncResolved;\r\n      this._syncRejected = syncRejected;\r\n      this._syncError = syncErr;\r\n\r\n      // Suppress native unhandledrejection — our .then() handles these sync\r\n      if (syncRejected) {\r\n        NativePromise.prototype.catch.call(this, () => {});\r\n      }\r\n    }\r\n\r\n    then<TResult1 = T, TResult2 = never>(\r\n      onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\r\n      onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\r\n    ): Promise<TResult1 | TResult2> {\r\n      if (this._syncResolved && onFulfilled) {\r\n        try {\r\n          const result = onFulfilled(this._syncValue as T);\r\n          if (\r\n            result &&\r\n            typeof result === \"object\" &&\r\n            typeof (result as any).then === \"function\"\r\n          ) {\r\n            let innerVal: any;\r\n            let innerResolved = false;\r\n            let innerRejected = false;\r\n            let innerErr: any;\r\n            (result as any).then(\r\n              (v: any) => {\r\n                innerVal = v;\r\n                innerResolved = true;\r\n              },\r\n              (e: any) => {\r\n                innerErr = e;\r\n                innerRejected = true;\r\n              },\r\n            );\r\n            if (innerResolved) {\r\n              return new SyncPromise<TResult1>((res) => res(innerVal)) as any;\r\n            }\r\n            if (innerRejected) {\r\n              if (onRejected) {\r\n                return new SyncPromise<TResult2>((res) =>\r\n                  res(onRejected(innerErr) as TResult2),\r\n                ) as any;\r\n              }\r\n              return new SyncPromise<TResult2>((_, rej) =>\r\n                rej(innerErr),\r\n              ) as any;\r\n            }\r\n            return NativePromise.resolve(result).then(null, onRejected) as any;\r\n          }\r\n          return new SyncPromise<TResult1>((res) =>\r\n            res(result as TResult1),\r\n          ) as any;\r\n        } catch (e) {\r\n          if (onRejected) {\r\n            return new SyncPromise<TResult2>((res) =>\r\n              res(onRejected(e) as TResult2),\r\n            ) as any;\r\n          }\r\n          // Must be SyncPromise so downstream .catch() fires sync (p-locate depends on this)\r\n          return new SyncPromise<TResult2>((_, rej) => rej(e)) as any;\r\n        }\r\n      }\r\n      if (this._syncRejected && onRejected) {\r\n        try {\r\n          const result = onRejected(this._syncError);\r\n          return new SyncPromise<TResult2>((res) =>\r\n            res(result as TResult2),\r\n          ) as any;\r\n        } catch (e) {\r\n          return new SyncPromise<TResult2>((_, rej) => rej(e)) as any;\r\n        }\r\n      }\r\n      if (this._syncRejected && !onRejected) {\r\n        return new SyncPromise<TResult2>((_, rej) =>\r\n          rej(this._syncError),\r\n        ) as any;\r\n      }\r\n      return super.then(onFulfilled, onRejected);\r\n    }\r\n  }\r\n\r\n  // instanceof must work for native Promises too since we inject SyncPromise as `Promise`\r\n  Object.defineProperty(SyncPromise, Symbol.hasInstance, {\r\n    value: (instance: any) => instance instanceof NativePromise,\r\n    configurable: true,\r\n  });\r\n\r\n  (SyncPromise as any).resolve = (value: any) => {\r\n    if (\r\n      value &&\r\n      typeof value === \"object\" &&\r\n      typeof (value as any).then === \"function\"\r\n    ) {\r\n      return new SyncPromise((res) => res(value));\r\n    }\r\n    return new SyncPromise((res) => res(value));\r\n  };\r\n  (SyncPromise as any).reject = (reason: any) =>\r\n    new SyncPromise((_, rej) => rej(reason));\r\n\r\n  // all/race/allSettled/any return SyncPromise so __syncAwait can unwrap them\r\n  (SyncPromise as any).all = (iterable: Iterable<any>) => {\r\n    const arr = Array.from(iterable);\r\n    const results: any[] = new Array(arr.length);\r\n    let allSync = true;\r\n    for (let i = 0; i < arr.length; i++) {\r\n      const v = arr[i];\r\n      if (v instanceof SyncPromise) {\r\n        if ((v as any)._syncResolved) {\r\n          results[i] = (v as any)._syncValue;\r\n        } else if ((v as any)._syncRejected) {\r\n          return new SyncPromise((_, rej) => rej((v as any)._syncError));\r\n        } else {\r\n          allSync = false;\r\n          break;\r\n        }\r\n      } else if (v && typeof v === \"object\" && typeof v.then === \"function\") {\r\n        let probed = false,\r\n          pVal: any;\r\n        v.then((x: any) => {\r\n          pVal = x;\r\n          probed = true;\r\n        });\r\n        if (probed) {\r\n          results[i] = pVal;\r\n        } else {\r\n          allSync = false;\r\n          break;\r\n        }\r\n      } else {\r\n        results[i] = v;\r\n      }\r\n    }\r\n    if (allSync) {\r\n      return new SyncPromise((res: any) => res(results));\r\n    }\r\n    return new SyncPromise((res: any, rej: any) => {\r\n      NativePromise.all(arr).then(res, rej);\r\n    });\r\n  };\r\n\r\n  (SyncPromise as any).allSettled = (iterable: Iterable<any>) => {\r\n    const arr = Array.from(iterable);\r\n    const results: any[] = new Array(arr.length);\r\n    let allSync = true;\r\n    for (let i = 0; i < arr.length; i++) {\r\n      const v = arr[i];\r\n      if (v instanceof SyncPromise) {\r\n        if ((v as any)._syncResolved) {\r\n          results[i] = { status: \"fulfilled\", value: (v as any)._syncValue };\r\n        } else if ((v as any)._syncRejected) {\r\n          results[i] = { status: \"rejected\", reason: (v as any)._syncError };\r\n        } else {\r\n          allSync = false;\r\n          break;\r\n        }\r\n      } else if (v && typeof v === \"object\" && typeof v.then === \"function\") {\r\n        allSync = false;\r\n        break;\r\n      } else {\r\n        results[i] = { status: \"fulfilled\", value: v };\r\n      }\r\n    }\r\n    if (allSync) {\r\n      return new SyncPromise((res: any) => res(results));\r\n    }\r\n    return new SyncPromise((res: any, rej: any) => {\r\n      NativePromise.allSettled(arr).then(res, rej);\r\n    });\r\n  };\r\n\r\n  (SyncPromise as any).race = (iterable: Iterable<any>) => {\r\n    const arr = Array.from(iterable);\r\n    for (const v of arr) {\r\n      if (v instanceof SyncPromise) {\r\n        if ((v as any)._syncResolved) {\r\n          return new SyncPromise((res: any) => res((v as any)._syncValue));\r\n        }\r\n        if ((v as any)._syncRejected) {\r\n          return new SyncPromise((_, rej: any) => rej((v as any)._syncError));\r\n        }\r\n      } else if (\r\n        !(v && typeof v === \"object\" && typeof v.then === \"function\")\r\n      ) {\r\n        return new SyncPromise((res: any) => res(v));\r\n      }\r\n    }\r\n    return new SyncPromise((res: any, rej: any) => {\r\n      NativePromise.race(arr).then(res, rej);\r\n    });\r\n  };\r\n\r\n  (SyncPromise as any).any = (iterable: Iterable<any>) => {\r\n    const arr = Array.from(iterable);\r\n    for (const v of arr) {\r\n      if (v instanceof SyncPromise && (v as any)._syncResolved) {\r\n        return new SyncPromise((res: any) => res((v as any)._syncValue));\r\n      }\r\n      if (!(v && typeof v === \"object\" && typeof v.then === \"function\")) {\r\n        return new SyncPromise((res: any) => res(v));\r\n      }\r\n    }\r\n    let allSyncRejected = true;\r\n    const errors: any[] = [];\r\n    for (const v of arr) {\r\n      if (v instanceof SyncPromise && (v as any)._syncRejected) {\r\n        errors.push((v as any)._syncError);\r\n      } else {\r\n        allSyncRejected = false;\r\n        break;\r\n      }\r\n    }\r\n    if (allSyncRejected && arr.length > 0) {\r\n      return new SyncPromise((_, rej: any) =>\r\n        rej(new AggregateError(errors, \"All promises were rejected\")),\r\n      );\r\n    }\r\n    return new SyncPromise((res: any, rej: any) => {\r\n      NativePromise.any(arr).then(res, rej);\r\n    });\r\n  };\r\n\r\n  return SyncPromise as any;\r\n}\r\n\r\nconst SyncPromiseClass = createSyncPromise();\r\n\r\nfunction makeDynamicLoader(\r\n  resolver: ResolverFn,\r\n): (specifier: string) => SyncThenable<unknown> {\r\n  return (specifier: string): SyncThenable<unknown> => {\r\n    const loaded = resolver(specifier);\r\n    // Functions can have named exports as properties (e.g. Module.createRequire)\r\n    if (\r\n      loaded &&\r\n      (typeof loaded === \"object\" || typeof loaded === \"function\") &&\r\n      (\"default\" in (loaded as object) || \"__esModule\" in (loaded as object))\r\n    ) {\r\n      return new SyncThenable(loaded);\r\n    }\r\n    const spread =\r\n      loaded && (typeof loaded === \"object\" || typeof loaded === \"function\")\r\n        ? Object.getOwnPropertyNames(loaded as object).reduce(\r\n            (acc, key) => {\r\n              acc[key] = (loaded as any)[key];\r\n              return acc;\r\n            },\r\n            {} as Record<string, unknown>,\r\n          )\r\n        : {};\r\n    return new SyncThenable({\r\n      default: loaded,\r\n      ...spread,\r\n    });\r\n  };\r\n}\r\n\r\n// ── Types ──\r\nexport interface ModuleRecord {\r\n  id: string;\r\n  filename: string;\r\n  exports: unknown;\r\n  loaded: boolean;\r\n  children: ModuleRecord[];\r\n  paths: string[];\r\n  parent: ModuleRecord | null;\r\n}\r\n\r\nexport interface EngineOptions {\r\n  cwd?: string;\r\n  env?: Record<string, string>;\r\n  onConsole?: (method: string, args: unknown[]) => void;\r\n  onStdout?: (data: string) => void;\r\n  onStderr?: (data: string) => void;\r\n  workerThreadsOverride?: {\r\n    isMainThread: boolean;\r\n    parentPort: unknown;\r\n    workerData: unknown;\r\n    threadId: number;\r\n  };\r\n  handler?: import('./memory-handler').MemoryHandler;\r\n}\r\n\r\nexport interface ResolverFn {\r\n  (id: string): unknown;\r\n  resolve: (id: string, options?: { paths?: string[] }) => string;\r\n  cache: Record<string, ModuleRecord>;\r\n  extensions: Record<string, unknown>;\r\n  main: ModuleRecord | null;\r\n  _ownerRecord?: ModuleRecord;\r\n}\r\n\r\n// Mutable copy so packages can monkey-patch frozen polyfill namespaces\r\nfunction shallowCopy(source: Record<string, unknown>): Record<string, unknown> {\r\n  const copy: Record<string, unknown> = {};\r\n  for (const k of Object.keys(source)) copy[k] = source[k];\r\n  return copy;\r\n}\r\n\r\n// ── Core module registry ──\r\nconst CORE_MODULES: Record<string, unknown> = {\r\n  path: pathPolyfill,\r\n  http: shallowCopy(httpPolyfill as unknown as Record<string, unknown>),\r\n  https: shallowCopy(httpsPolyfill as unknown as Record<string, unknown>),\r\n  net: tcpPolyfill,\r\n  events: eventBusPolyfill,\r\n  stream: streamPolyfill,\r\n  buffer: bufferPolyfill,\r\n  url: urlPolyfill,\r\n  querystring: qsPolyfill,\r\n  util: helpersPolyfill,\r\n  tty: ttyPolyfill,\r\n  os: osPolyfill,\r\n  crypto: shallowCopy(hashingPolyfill as unknown as Record<string, unknown>),\r\n  zlib: compressionPolyfill,\r\n  dns: dnsPolyfill,\r\n  child_process: shellExecProxy,\r\n  assert: assertPolyfill,\r\n  string_decoder: stringDecoderPolyfill,\r\n  timers: timersPolyfill,\r\n  constants: constantsPolyfill,\r\n  punycode: punycodePolyfill,\r\n  _http_common: {},\r\n  _http_incoming: {},\r\n  _http_outgoing: {},\r\n  chokidar: watcherPolyfill,\r\n  ws: wsPolyfill,\r\n  fsevents: macEventsPolyfill,\r\n  readdirp: scannerPolyfill,\r\n  module: moduleSysPolyfill.Module,\r\n  perf_hooks: perfPolyfill,\r\n  worker_threads: threadPoolPolyfill,\r\n  esbuild: esbuildPolyfill,\r\n  rollup: rollupPolyfill,\r\n  v8: v8Polyfill,\r\n  readline: lineReaderPolyfill,\r\n  tls: tlsPolyfill,\r\n  http2: http2Polyfill,\r\n  cluster: clusterPolyfill,\r\n  dgram: udpPolyfill,\r\n  vm: vmPolyfill,\r\n  inspector: debugPolyfill,\r\n  \"inspector/promises\": debugPolyfill,\r\n  async_hooks: asyncCtxPolyfill,\r\n  domain: domainPolyfill,\r\n  diagnostics_channel: tracePolyfill,\r\n  console: { ...console, Console: consolePolyfill.Console },\r\n  repl: replPolyfill,\r\n  test: testPolyfill,\r\n  trace_events: traceEventsPolyfill,\r\n  wasi: wasiPolyfill,\r\n  sea: seaPolyfill,\r\n  sqlite: sqlitePolyfill,\r\n  quic: quicPolyfill,\r\n  // lightningcss: lightningcssPolyfill,\r\n  // \"@tailwindcss/oxide\": tailwindOxidePolyfill,\r\n  sys: helpersPolyfill,\r\n  \"util/types\": helpersPolyfill.types,\r\n  \"path/posix\": pathPolyfill,\r\n  \"path/win32\": pathPolyfill.win32,\r\n  \"timers/promises\": timersPromises,\r\n  \"stream/promises\": streamPromises,\r\n  \"stream/web\": {\r\n    ReadableStream: globalThis.ReadableStream,\r\n    WritableStream: globalThis.WritableStream,\r\n    TransformStream: globalThis.TransformStream,\r\n    ByteLengthQueuingStrategy: globalThis.ByteLengthQueuingStrategy,\r\n    CountQueuingStrategy: globalThis.CountQueuingStrategy,\r\n  },\r\n  \"stream/consumers\": {\r\n    async arrayBuffer(stream: any): Promise<ArrayBuffer> {\r\n      const chunks: Uint8Array[] = [];\r\n      for await (const chunk of stream) {\r\n        chunks.push(\r\n          typeof chunk === \"string\" ? new TextEncoder().encode(chunk) : chunk,\r\n        );\r\n      }\r\n      let len = 0;\r\n      for (const c of chunks) len += c.byteLength;\r\n      const buf = new Uint8Array(len);\r\n      let off = 0;\r\n      for (const c of chunks) {\r\n        buf.set(c, off);\r\n        off += c.byteLength;\r\n      }\r\n      return buf.buffer;\r\n    },\r\n    async blob(stream: any): Promise<Blob> {\r\n      const chunks: Uint8Array[] = [];\r\n      for await (const chunk of stream) {\r\n        chunks.push(\r\n          typeof chunk === \"string\" ? new TextEncoder().encode(chunk) : chunk,\r\n        );\r\n      }\r\n      return new Blob(chunks as unknown as BlobPart[]);\r\n    },\r\n    async buffer(stream: any): Promise<Uint8Array> {\r\n      const chunks: Uint8Array[] = [];\r\n      for await (const chunk of stream) {\r\n        chunks.push(\r\n          typeof chunk === \"string\" ? new TextEncoder().encode(chunk) : chunk,\r\n        );\r\n      }\r\n      let len = 0;\r\n      for (const c of chunks) len += c.byteLength;\r\n      const buf = new Uint8Array(len);\r\n      let off = 0;\r\n      for (const c of chunks) {\r\n        buf.set(c, off);\r\n        off += c.byteLength;\r\n      }\r\n      return buf;\r\n    },\r\n    async json(stream: any): Promise<unknown> {\r\n      const chunks: string[] = [];\r\n      for await (const chunk of stream) {\r\n        chunks.push(\r\n          typeof chunk === \"string\" ? chunk : new TextDecoder().decode(chunk),\r\n        );\r\n      }\r\n      return JSON.parse(chunks.join(\"\"));\r\n    },\r\n    async text(stream: any): Promise<string> {\r\n      const chunks: string[] = [];\r\n      for await (const chunk of stream) {\r\n        chunks.push(\r\n          typeof chunk === \"string\" ? chunk : new TextDecoder().decode(chunk),\r\n        );\r\n      }\r\n      return chunks.join(\"\");\r\n    },\r\n  },\r\n  \"dns/promises\": dnsPromises,\r\n  \"assert/strict\": assertPolyfill,\r\n  \"readline/promises\": readlinePromises,\r\n  _stream_readable: Readable,\r\n  _stream_writable: Writable,\r\n  _stream_duplex: Duplex,\r\n  _stream_transform: Transform,\r\n  _stream_passthrough: PassThrough,\r\n  // Vite imports rollup/parseAst which normally uses native bindings\r\n  \"rollup/parseAst\": {\r\n    parseAst: rollupPolyfill.parseAst,\r\n    parseAstAsync: rollupPolyfill.parseAstAsync,\r\n  },\r\n};\r\n\r\n// ── Console wrapper ──\r\n// Captured at module load time to avoid infinite recursion when globalThis.console is overridden\r\nconst _nativeConsole = console;\r\n\r\nfunction wrapConsole(\r\n  onConsole?: (method: string, args: unknown[]) => void,\r\n): Console {\r\n  // Route through onConsole callback exclusively when provided, else fall back to browser console\r\n  const nc = _nativeConsole;\r\n  const wrapped = {\r\n    log: (...args: unknown[]) => {\r\n      if (onConsole) onConsole(\"log\", args);\r\n      else nc.log(...args);\r\n    },\r\n    error: (...args: unknown[]) => {\r\n      if (onConsole) onConsole(\"error\", args);\r\n      else nc.error(...args);\r\n    },\r\n    warn: (...args: unknown[]) => {\r\n      if (onConsole) onConsole(\"warn\", args);\r\n      else nc.warn(...args);\r\n    },\r\n    info: (...args: unknown[]) => {\r\n      if (onConsole) onConsole(\"info\", args);\r\n      else nc.info(...args);\r\n    },\r\n    debug: (...args: unknown[]) => {\r\n      if (onConsole) onConsole(\"debug\", args);\r\n      else nc.debug(...args);\r\n    },\r\n    trace: (...args: unknown[]) => {\r\n      if (onConsole) onConsole(\"trace\", args);\r\n      else nc.trace(...args);\r\n    },\r\n    dir: (obj: unknown) => {\r\n      if (onConsole) onConsole(\"dir\", [obj]);\r\n      else nc.dir(obj);\r\n    },\r\n    time: nc.time.bind(nc),\r\n    timeEnd: nc.timeEnd.bind(nc),\r\n    timeLog: nc.timeLog.bind(nc),\r\n    assert: (...args: unknown[]) => {\r\n      const [v, ...rest] = args;\r\n      if (!v) {\r\n        if (onConsole) onConsole(\"error\", [\"Assertion failed:\", ...rest]);\r\n        else nc.assert(v as boolean, ...rest);\r\n      }\r\n    },\r\n    clear: nc.clear.bind(nc),\r\n    count: nc.count.bind(nc),\r\n    countReset: nc.countReset.bind(nc),\r\n    group: nc.group.bind(nc),\r\n    groupCollapsed: nc.groupCollapsed.bind(nc),\r\n    groupEnd: nc.groupEnd.bind(nc),\r\n    table: (...args: unknown[]) => {\r\n      if (onConsole) onConsole(\"log\", args);\r\n      else nc.table(...args);\r\n    },\r\n    timeStamp: nc.timeStamp ? nc.timeStamp.bind(nc) : () => {},\r\n    profile: nc.profile ? nc.profile.bind(nc) : () => {},\r\n    profileEnd: nc.profileEnd ? nc.profileEnd.bind(nc) : () => {},\r\n  };\r\n  return wrapped as unknown as Console;\r\n}\r\n\r\n// ── Module resolver & loader ──\r\nfunction buildResolver(\r\n  vol: MemoryVolume,\r\n  fsBridge: FsBridge,\r\n  proc: ProcessObject,\r\n  baseDir: string,\r\n  cache: Record<string, ModuleRecord>,\r\n  opts: EngineOptions,\r\n  codeCache?: Map<string, string>,\r\n  deAsyncImports = false,\r\n): ResolverFn {\r\n  // Shared across all resolvers — avoids re-resolving the same paths/manifests per module\r\n  // Use bounded LRU when a memory handler is available, else plain Map\r\n  const resolveCache: Map<string, string | null> =\r\n    (cache as any).__resolveCache ??\r\n    ((cache as any).__resolveCache = opts.handler\r\n      ? new _LRUCache<string, string | null>(opts.handler.options.resolveCacheSize)\r\n      : new Map());\r\n  const manifestCache: Map<string, PackageManifest | null> =\r\n    (cache as any).__manifestCache ??\r\n    ((cache as any).__manifestCache = opts.handler\r\n      ? new _LRUCache<string, PackageManifest | null>(opts.handler.options.manifestCacheSize)\r\n      : new Map());\r\n  // Shared across all resolvers — deduplicates same-version packages from nested node_modules\r\n  const _pkgIdentityMap: Record<string, string> =\r\n    (cache as any).__pkgIdentityMap ?? ((cache as any).__pkgIdentityMap = {});\r\n\r\n  const readManifest = (manifestPath: string): PackageManifest | null => {\r\n    if (manifestCache.has(manifestPath))\r\n      return manifestCache.get(manifestPath)!;\r\n    try {\r\n      const raw = vol.readFileSync(manifestPath, \"utf8\");\r\n      const parsed = JSON.parse(raw) as PackageManifest;\r\n      manifestCache.set(manifestPath, parsed);\r\n      return parsed;\r\n    } catch {\r\n      manifestCache.set(manifestPath, null);\r\n      return null;\r\n    }\r\n  };\r\n\r\n  const resolveId = (\r\n    id: string,\r\n    fromDir: string,\r\n    preferEsm: boolean = false,\r\n  ): string => {\r\n    if (typeof id !== \"string\") {\r\n      throw new TypeError(\r\n        `The \"id\" argument must be of type string. Received ${typeof id}`,\r\n      );\r\n    }\r\n    if (id.startsWith(\"node:\")) id = id.slice(5);\r\n\r\n    if (id.startsWith(\"file:///\")) {\r\n      id = decodeURIComponent(id.slice(7));\r\n      if (/^[A-Za-z]:[\\\\/]/.test(id)) {\r\n        id = \"/\" + id.slice(2).replace(/\\\\/g, \"/\");\r\n      }\r\n    } else if (id.startsWith(\"file://\")) {\r\n      id = decodeURIComponent(id.slice(7));\r\n      if (/^[A-Za-z]:[\\\\/]/.test(id)) {\r\n        id = \"/\" + id.slice(2).replace(/\\\\/g, \"/\");\r\n      }\r\n    }\r\n\r\n    const qIdx = id.indexOf(\"?\");\r\n    if (qIdx !== -1) id = id.slice(0, qIdx);\r\n\r\n    const hashIdx = id.indexOf(\"#\");\r\n    if (hashIdx !== -1 && !id.startsWith(\"#\")) id = id.slice(0, hashIdx);\r\n\r\n    if (id.includes(\"\\\\\")) id = id.replace(/\\\\/g, \"/\");\r\n\r\n    if (\r\n      CORE_MODULES[id] ||\r\n      id === \"fs\" ||\r\n      id === \"process\" ||\r\n      id === \"url\" ||\r\n      id === \"querystring\" ||\r\n      id === \"util\"\r\n    ) {\r\n      return id;\r\n    }\r\n\r\n    // Native Rust bindings can't run in browser — provide JS stubs\r\n    if (id.startsWith(\"@rollup/rollup-\")) {\r\n      if (!CORE_MODULES[id]) {\r\n        CORE_MODULES[id] = {\r\n          parse: rollupPolyfill.parseAst,\r\n          parseAsync: rollupPolyfill.parseAstAsync,\r\n        };\r\n      }\r\n      return id;\r\n    }\r\n\r\n    if (id.startsWith(\"@rolldown/binding-\")) {\r\n      if (!CORE_MODULES[id]) {\r\n        const makeParseResult = (source: string, opts?: any) => {\r\n          const lang = opts?.lang || \"js\";\r\n          const useJsx = lang === \"jsx\" || lang === \"tsx\";\r\n          const ast = rollupPolyfill.parseAst(source, { jsx: useJsx });\r\n          return {\r\n            program: JSON.stringify({ node: ast, fixes: [] }),\r\n            module: {\r\n              hasModuleSyntax: false,\r\n              staticImports: [],\r\n              staticExports: [],\r\n              dynamicImports: [],\r\n              importMetas: [],\r\n            },\r\n            comments: [],\r\n            errors: [],\r\n          };\r\n        };\r\n        const applyDefineReplacements = (\r\n          code: string,\r\n          define?: Record<string, string>,\r\n        ): string => {\r\n          if (!define || typeof define !== \"object\") return code;\r\n          for (const [key, value] of Object.entries(define)) {\r\n            if (!key) continue;\r\n            const escaped = key.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n            const re = new RegExp(`\\\\b${escaped}\\\\b`, \"g\");\r\n            code = code.replace(re, value);\r\n          }\r\n          return code;\r\n        };\r\n        const noop = () => {};\r\n        const noopAsync = async () => {};\r\n        CORE_MODULES[id] = {\r\n          // Parser\r\n          parseSync: (_filename: string, source: string, opts?: any) =>\r\n            makeParseResult(source, opts),\r\n          parse: async (_filename: string, source: string, opts?: any) =>\r\n            makeParseResult(source, opts),\r\n          initTraceSubscriber: noop,\r\n          shutdownAsyncRuntime: noop,\r\n          startAsyncRuntime: noop,\r\n          createTokioRuntime: noop,\r\n          registerPlugins: noop,\r\n          rawTransferSupported: () => false,\r\n          sync: noop,\r\n          transform: async (filename: string, code: string, opts?: any) => {\r\n            code = applyDefineReplacements(code, opts?.define);\r\n            if (\r\n              !isCSSFile(filename) &&\r\n              (isTypeScriptFile(filename) || looksLikeTypeScript(code))\r\n            )\r\n              code = stripTypeScript(code);\r\n            if (!isCSSFile(filename) && needsJsxTransform(filename, code))\r\n              code = transformJsxSync(code, filename);\r\n            return { code, map: null, errors: [], warnings: [] };\r\n          },\r\n          transformSync: (filename: string, code: string, opts?: any) => {\r\n            code = applyDefineReplacements(code, opts?.define);\r\n            if (\r\n              !isCSSFile(filename) &&\r\n              (isTypeScriptFile(filename) || looksLikeTypeScript(code))\r\n            )\r\n              code = stripTypeScript(code);\r\n            if (!isCSSFile(filename) && needsJsxTransform(filename, code))\r\n              code = transformJsxSync(code, filename);\r\n            return { code, map: null, errors: [], warnings: [] };\r\n          },\r\n          enhancedTransform: async (\r\n            filename: string,\r\n            code: string,\r\n            opts?: any,\r\n          ) => {\r\n            code = applyDefineReplacements(code, opts?.define);\r\n            if (\r\n              !isCSSFile(filename) &&\r\n              (isTypeScriptFile(filename) || looksLikeTypeScript(code))\r\n            )\r\n              code = stripTypeScript(code);\r\n            if (!isCSSFile(filename) && needsJsxTransform(filename, code))\r\n              code = transformJsxSync(code, filename);\r\n            return {\r\n              code,\r\n              map: null,\r\n              errors: [],\r\n              warnings: [],\r\n              helpersUsed: {},\r\n              tsconfigFilePaths: [],\r\n            };\r\n          },\r\n          enhancedTransformSync: (\r\n            filename: string,\r\n            code: string,\r\n            opts?: any,\r\n          ) => {\r\n            code = applyDefineReplacements(code, opts?.define);\r\n            if (\r\n              !isCSSFile(filename) &&\r\n              (isTypeScriptFile(filename) || looksLikeTypeScript(code))\r\n            )\r\n              code = stripTypeScript(code);\r\n            if (!isCSSFile(filename) && needsJsxTransform(filename, code))\r\n              code = transformJsxSync(code, filename);\r\n            return {\r\n              code,\r\n              map: null,\r\n              errors: [],\r\n              warnings: [],\r\n              helpersUsed: {},\r\n              tsconfigFilePaths: [],\r\n            };\r\n          },\r\n          minify: async (_filename: string, code: string) => ({\r\n            code,\r\n            map: null,\r\n            errors: [],\r\n            warnings: [],\r\n          }),\r\n          minifySync: (_filename: string, code: string) => ({\r\n            code,\r\n            map: null,\r\n            errors: [],\r\n            warnings: [],\r\n          }),\r\n          isolatedDeclaration: async (_filename: string, code: string) => ({\r\n            code,\r\n            map: null,\r\n            errors: [],\r\n            warnings: [],\r\n          }),\r\n          isolatedDeclarationSync: (_filename: string, code: string) => ({\r\n            code,\r\n            map: null,\r\n            errors: [],\r\n            warnings: [],\r\n          }),\r\n          moduleRunnerTransform: async (filename: string, code: string) => {\r\n            if (\r\n              !isCSSFile(filename) &&\r\n              (isTypeScriptFile(filename) || looksLikeTypeScript(code))\r\n            )\r\n              code = stripTypeScript(code);\r\n            if (!isCSSFile(filename) && needsJsxTransform(filename, code))\r\n              code = transformJsxSync(code, filename);\r\n            return { code, map: null, deps: [], dynamicDeps: [], errors: [] };\r\n          },\r\n          moduleRunnerTransformSync: (filename: string, code: string) => {\r\n            if (\r\n              !isCSSFile(filename) &&\r\n              (isTypeScriptFile(filename) || looksLikeTypeScript(code))\r\n            )\r\n              code = stripTypeScript(code);\r\n            if (!isCSSFile(filename) && needsJsxTransform(filename, code))\r\n              code = transformJsxSync(code, filename);\r\n            return { code, map: null, deps: [], dynamicDeps: [], errors: [] };\r\n          },\r\n          Severity: { Error: \"Error\", Warning: \"Warning\", Advice: \"Advice\" },\r\n          ParseResult: class {},\r\n          ResolverFactory: class {},\r\n          EnforceExtension: { Auto: 0, Enabled: 1, Disabled: 2 },\r\n          ModuleType: {},\r\n          HelperMode: {},\r\n          TraceSubscriberGuard: class {},\r\n          BindingBundler: class {\r\n            closed = false;\r\n            #watchFiles: string[] = [];\r\n            async generate(opts: any) {\r\n              return this.#bundle(opts);\r\n            }\r\n            async write(opts: any) {\r\n              const result = await this.#bundle(opts);\r\n              const outputOpts = opts?.outputOptions ?? {};\r\n              const dir = outputOpts.dir || \"/dist\";\r\n              try {\r\n                if (!vol.existsSync(dir)) {\r\n                  vol.mkdirSync(dir, { recursive: true });\r\n                }\r\n              } catch {\r\n                /* best effort */\r\n              }\r\n              for (const chunk of result.chunks) {\r\n                const outPath = pathPolyfill.join(dir, chunk.getFileName());\r\n                try {\r\n                  const outDir = pathPolyfill.dirname(outPath);\r\n                  if (!vol.existsSync(outDir)) {\r\n                    vol.mkdirSync(outDir, { recursive: true });\r\n                  }\r\n                  const code = chunk.getCode();\r\n                  vol.writeFileSync(outPath, code);\r\n                } catch {\r\n                  /* best effort */\r\n                }\r\n              }\r\n              return result;\r\n            }\r\n            // Dependency scanning for Vite's dep optimizer — invokes plugin resolveId hooks\r\n            // so Vite's scan plugin discovers bare imports to pre-bundle\r\n            async scan(opts?: any) {\r\n              try {\r\n                const inputOpts = opts?.inputOptions ?? {};\r\n                const plugins: any[] = (inputOpts.plugins ?? []).filter(\r\n                  Boolean,\r\n                );\r\n                const entries: { name?: string; import: string }[] =\r\n                  Array.isArray(inputOpts.input) ? inputOpts.input : [];\r\n                const cwd = inputOpts.cwd || \"/\";\r\n                if (!entries.length || !plugins.length) return;\r\n\r\n                const mockCtx = {\r\n                  resolve: async () => null,\r\n                  load: async () => ({}),\r\n                  emitFile: () => \"\",\r\n                  getFileName: () => \"\",\r\n                  getModuleInfo: () => null,\r\n                  getModuleIds: () => [],\r\n                  addWatchFile: () => {},\r\n                  parse: (code: string) =>\r\n                    acorn.parse(code, {\r\n                      ecmaVersion: \"latest\" as any,\r\n                      sourceType: \"module\",\r\n                    }),\r\n                };\r\n\r\n                const extractImports = (code: string): string[] => {\r\n                  const specs: string[] = [];\r\n                  try {\r\n                    const ast: any = acorn.parse(code, {\r\n                      ecmaVersion: \"latest\" as any,\r\n                      sourceType: \"module\",\r\n                      allowImportExportEverywhere: true,\r\n                    });\r\n                    for (const node of ast.body) {\r\n                      if (\r\n                        node.type === \"ImportDeclaration\" &&\r\n                        node.source?.value\r\n                      )\r\n                        specs.push(node.source.value);\r\n                      if (\r\n                        node.type === \"ExportNamedDeclaration\" &&\r\n                        node.source?.value\r\n                      )\r\n                        specs.push(node.source.value);\r\n                      if (\r\n                        node.type === \"ExportAllDeclaration\" &&\r\n                        node.source?.value\r\n                      )\r\n                        specs.push(node.source.value);\r\n                    }\r\n                  } catch {\r\n                    /* fallback to regex */\r\n                  }\r\n                  const dynRe = /\\bimport\\s*\\(\\s*['\"]([^'\"]+)['\"]\\s*\\)/g;\r\n                  let m;\r\n                  while ((m = dynRe.exec(code)) !== null) specs.push(m[1]);\r\n                  return [...new Set(specs)];\r\n                };\r\n\r\n                for (const p of plugins) {\r\n                  if (p.buildStart) {\r\n                    try {\r\n                      await p.buildStart(mockCtx, {});\r\n                    } catch (hookErr) {\r\n                      const msg =\r\n                        hookErr instanceof Error\r\n                          ? hookErr.message\r\n                          : String(hookErr);\r\n                      _nativeConsole.warn(\r\n                        \"[rolldown scan] buildStart hook error:\",\r\n                        msg,\r\n                      );\r\n                    }\r\n                  }\r\n                }\r\n\r\n                // BFS: load files, extract imports, call resolveId, follow local files\r\n                const visitedSpecs = new Set<string>();\r\n                const visitedFiles = new Set<string>();\r\n                const queue: string[] = [];\r\n\r\n                for (const entry of entries) {\r\n                  const ep = entry.import?.startsWith(\"/\")\r\n                    ? entry.import\r\n                    : pathPolyfill.resolve(cwd, entry.import);\r\n                  queue.push(ep);\r\n                }\r\n\r\n                const loadFile = async (\r\n                  filePath: string,\r\n                  usePlugins: boolean,\r\n                ): Promise<string> => {\r\n                  if (usePlugins) {\r\n                    for (const p of plugins) {\r\n                      if (p.load) {\r\n                        try {\r\n                          const r = await p.load(mockCtx, filePath);\r\n                          if (r && typeof r === \"object\" && r.code)\r\n                            return r.code;\r\n                        } catch (loadErr) {\r\n                          const msg =\r\n                            loadErr instanceof Error\r\n                              ? loadErr.message\r\n                              : String(loadErr);\r\n                          _nativeConsole.warn(\r\n                            \"[rolldown scan] load hook error:\",\r\n                            filePath,\r\n                            msg,\r\n                          );\r\n                        }\r\n                      }\r\n                    }\r\n                  }\r\n                  return vol.readFileSync(filePath, \"utf8\");\r\n                };\r\n\r\n                const MAX_DEPTH = LIMITS.MAX_RESOLVE_DEPTH;\r\n                let processed = 0;\r\n                const entryPaths = new Set(queue);\r\n                while (queue.length > 0 && processed < MAX_DEPTH) {\r\n                  const filePath = queue.shift()!;\r\n                  if (visitedFiles.has(filePath)) continue;\r\n                  visitedFiles.add(filePath);\r\n                  processed++;\r\n\r\n                  let code: string;\r\n                  try {\r\n                    code = await loadFile(filePath, entryPaths.has(filePath));\r\n                  } catch {\r\n                    continue;\r\n                  }\r\n\r\n                  const specifiers = extractImports(code);\r\n\r\n                  for (const spec of specifiers) {\r\n                    const key = `${spec}\\0${filePath}`;\r\n                    if (visitedSpecs.has(key)) continue;\r\n                    visitedSpecs.add(key);\r\n\r\n                    for (const p of plugins) {\r\n                      if (p.resolveId) {\r\n                        try {\r\n                          await p.resolveId(mockCtx, spec, filePath, {\r\n                            isEntry: false,\r\n                            kind: \"import-statement\",\r\n                            custom: undefined,\r\n                          });\r\n                        } catch (resolveErr) {\r\n                          const msg =\r\n                            resolveErr instanceof Error\r\n                              ? resolveErr.message\r\n                              : String(resolveErr);\r\n                          _nativeConsole.warn(\r\n                            \"[rolldown scan] resolveId hook error:\",\r\n                            spec,\r\n                            msg,\r\n                          );\r\n                        }\r\n                      }\r\n                    }\r\n\r\n                    // Follow local files to discover deeper imports\r\n                    if (spec.startsWith(\".\") || spec.startsWith(\"/\")) {\r\n                      const dir = pathPolyfill.dirname(filePath);\r\n                      let resolved = \"\";\r\n                      try {\r\n                        resolved = resolveId(spec, dir, true);\r\n                      } catch {\r\n                        /* not found */\r\n                      }\r\n                      // Vite treats absolute paths as project-root-relative\r\n                      if (!resolved && spec.startsWith(\"/\")) {\r\n                        try {\r\n                          const cwdSpec = pathPolyfill.join(cwd, spec);\r\n                          resolved = resolveId(cwdSpec, cwd, true);\r\n                        } catch {\r\n                          /* not found */\r\n                        }\r\n                      }\r\n                      if (\r\n                        resolved &&\r\n                        !resolved.includes(\"/node_modules/\") &&\r\n                        !visitedFiles.has(resolved)\r\n                      ) {\r\n                        queue.push(resolved);\r\n                      }\r\n                    }\r\n                  }\r\n                }\r\n\r\n                for (const p of plugins) {\r\n                  if (p.buildEnd) {\r\n                    try {\r\n                      await p.buildEnd(mockCtx);\r\n                    } catch (endErr) {\r\n                      const msg =\r\n                        endErr instanceof Error\r\n                          ? endErr.message\r\n                          : String(endErr);\r\n                      _nativeConsole.warn(\r\n                        \"[rolldown scan] buildEnd hook error:\",\r\n                        msg,\r\n                      );\r\n                    }\r\n                  }\r\n                }\r\n              } catch (scanErr) {\r\n                const msg =\r\n                  scanErr instanceof Error ? scanErr.message : String(scanErr);\r\n                const detail =\r\n                  scanErr instanceof Error && scanErr.stack\r\n                    ? `\\n${scanErr.stack}`\r\n                    : \"\";\r\n                _nativeConsole.warn(\"[rolldown scan]\", msg);\r\n              }\r\n            }\r\n            async close() {\r\n              this.closed = true;\r\n            }\r\n            getWatchFiles() {\r\n              return this.#watchFiles;\r\n            }\r\n            async #bundle(opts: any) {\r\n              const inputOpts = opts?.inputOptions ?? {};\r\n              const entries: { name: string; import: string }[] = Array.isArray(\r\n                inputOpts.input,\r\n              )\r\n                ? inputOpts.input\r\n                : [];\r\n              const cwd = inputOpts.cwd || \"/\";\r\n              const outputOpts = opts?.outputOptions ?? {};\r\n              const format = outputOpts.format ?? \"esm\";\r\n              const entryFileNames = outputOpts.entryFileNames || \"[name].js\";\r\n\r\n              const extractExports = (src: string): string[] => {\r\n                try {\r\n                  const ast = acorn.parse(src, {\r\n                    ecmaVersion: \"latest\",\r\n                    sourceType: \"module\",\r\n                    allowImportExportEverywhere: true,\r\n                  }) as any;\r\n                  const names: string[] = [];\r\n                  for (const node of ast.body) {\r\n                    if (\r\n                      node.type === \"ExportNamedDeclaration\" &&\r\n                      node.specifiers\r\n                    ) {\r\n                      for (const s of node.specifiers) {\r\n                        if (s.exported?.name) names.push(s.exported.name);\r\n                      }\r\n                      if (node.declaration) {\r\n                        if (node.declaration.id?.name) {\r\n                          names.push(node.declaration.id.name);\r\n                        } else if (node.declaration.declarations) {\r\n                          for (const d of node.declaration.declarations) {\r\n                            if (d.id?.name) names.push(d.id.name);\r\n                          }\r\n                        }\r\n                      }\r\n                    } else if (node.type === \"ExportDefaultDeclaration\") {\r\n                      names.push(\"default\");\r\n                    } else if (node.type === \"ExportAllDeclaration\") {\r\n                      // Can't statically enumerate re-exports\r\n                    }\r\n                  }\r\n                  return names;\r\n                } catch {\r\n                  return [];\r\n                }\r\n              };\r\n\r\n              // Re-resolve using browser ESM conditions when esbuild produces empty output\r\n              // (happens with thin ESM re-exports pointing at CJS like vue/index.mjs)\r\n              const reResolveEntry = (origPath: string): string | null => {\r\n                // Only applicable inside node_modules\r\n                const nmIdx = origPath.lastIndexOf(\"/node_modules/\");\r\n                if (nmIdx === -1) return null;\r\n                const afterNm = origPath.slice(nmIdx + \"/node_modules/\".length);\r\n                const parts = afterNm.split(\"/\");\r\n                const scoped = parts[0].startsWith(\"@\");\r\n                const pkgName = scoped ? parts.slice(0, 2).join(\"/\") : parts[0];\r\n                const pkgRoot =\r\n                  origPath.slice(0, nmIdx) + \"/node_modules/\" + pkgName;\r\n                const pkgJsonPath = pkgRoot + \"/package.json\";\r\n                try {\r\n                  if (!vol.existsSync(pkgJsonPath)) return null;\r\n                  const manifest = JSON.parse(\r\n                    vol.readFileSync(pkgJsonPath, \"utf8\"),\r\n                  );\r\n                  for (const conds of [\r\n                    { browser: true, import: true },\r\n                    { import: true },\r\n                  ] as const) {\r\n                    try {\r\n                      const resolved = resolveExports(manifest, \".\", conds);\r\n                      if (resolved?.length) {\r\n                        const full = pathPolyfill.join(pkgRoot, resolved[0]);\r\n                        if (vol.existsSync(full) && full !== origPath)\r\n                          return full;\r\n                      }\r\n                    } catch {\r\n                      /* try next */\r\n                    }\r\n                  }\r\n                } catch {\r\n                  /* can't re-resolve */\r\n                }\r\n                return null;\r\n              };\r\n\r\n              const esbuildMod = CORE_MODULES[\"esbuild\"] as any;\r\n              const chunks: any[] = [];\r\n              for (const entry of entries) {\r\n                let entryPath = entry.import.startsWith(\"/\")\r\n                  ? entry.import\r\n                  : pathPolyfill.resolve(cwd, entry.import);\r\n                let code: string;\r\n                const esbuildPlatform =\r\n                  inputOpts.platform === \"browser\" ? \"browser\" : \"node\";\r\n                const esbuildFormat = format === \"cjs\" ? \"cjs\" : \"esm\";\r\n\r\n                const doBuild = async (ep: string) => {\r\n                  const result = await esbuildMod.build({\r\n                    entryPoints: [ep],\r\n                    bundle: true,\r\n                    write: false,\r\n                    format: esbuildFormat,\r\n                    platform: esbuildPlatform,\r\n                    sourcemap: outputOpts.sourcemap ? \"inline\" : false,\r\n                    target: \"esnext\",\r\n                    logLevel: \"warning\",\r\n                  });\r\n                  return (\r\n                    result.outputFiles?.[0]?.text ??\r\n                    vol.readFileSync(ep, \"utf8\")\r\n                  );\r\n                };\r\n\r\n                try {\r\n                  code = await doBuild(entryPath);\r\n\r\n                  // Empty output = thin ESM re-export of CJS; try browser-ESM re-resolve\r\n                  if (\r\n                    esbuildFormat === \"esm\" &&\r\n                    esbuildPlatform === \"browser\" &&\r\n                    code.length < 300 &&\r\n                    extractExports(code).length === 0\r\n                  ) {\r\n                    const alt = reResolveEntry(entryPath);\r\n                    if (alt) {\r\n                      const altCode = await doBuild(alt);\r\n                      if (altCode.length > code.length) {\r\n                        code = altCode;\r\n                        entryPath = alt;\r\n                      }\r\n                    }\r\n                  }\r\n                } catch (buildErr) {\r\n                  const buildMsg =\r\n                    buildErr instanceof Error\r\n                      ? buildErr.message\r\n                      : String(buildErr);\r\n                  _nativeConsole.warn(\r\n                    \"[rolldown bundle] esbuild failed for\",\r\n                    entryPath,\r\n                    buildMsg,\r\n                  );\r\n                  try {\r\n                    code = vol.readFileSync(entryPath, \"utf8\");\r\n                  } catch {\r\n                    code = \"\";\r\n                  }\r\n                }\r\n                const name =\r\n                  entry.name ||\r\n                  pathPolyfill.basename(\r\n                    entryPath,\r\n                    pathPolyfill.extname(entryPath),\r\n                  );\r\n                const fileName =\r\n                  typeof entryFileNames === \"string\"\r\n                    ? entryFileNames.replace(\"[name]\", name)\r\n                    : name + \".js\";\r\n                const exports = extractExports(code);\r\n                this.#watchFiles.push(entryPath);\r\n                chunks.push({\r\n                  dropInner: () => ({ freed: true }),\r\n                  getFileName: () => fileName,\r\n                  getName: () => name,\r\n                  getCode: () => code,\r\n                  getExports: () => exports,\r\n                  getIsEntry: () => true,\r\n                  getIsDynamicEntry: () => false,\r\n                  getFacadeModuleId: () => entryPath,\r\n                  getSourcemapFileName: () => null,\r\n                  getPreliminaryFileName: () => fileName,\r\n                  getModules: () => ({ values: [], keys: [] }),\r\n                  getImports: () => [],\r\n                  getDynamicImports: () => [],\r\n                  getModuleIds: () => [entryPath],\r\n                  getMap: () => null,\r\n                });\r\n              }\r\n              return { chunks, assets: [] };\r\n            }\r\n          },\r\n          // Constructor (not class) so methods are own-enumerable — Vite iterates with for...in\r\n          BindingCallableBuiltinPlugin: function (this: any, _opts: any) {\r\n            this.resolveId = async function (\r\n              specifier: string,\r\n              importer?: string | null,\r\n            ) {\r\n              if (!specifier || typeof specifier !== \"string\") return null;\r\n              if (specifier.startsWith(\"\\0\")) return null;\r\n              if (\r\n                specifier.includes(\":\") &&\r\n                !specifier.startsWith(\"/\") &&\r\n                !specifier.startsWith(\".\")\r\n              )\r\n                return null;\r\n\r\n              // Preserve query/hash (Vue SFC virtual modules need them)\r\n              let cleanSpec = specifier;\r\n              let querySuffix = \"\";\r\n              const qIdx = cleanSpec.indexOf(\"?\");\r\n              if (qIdx !== -1) {\r\n                querySuffix = cleanSpec.slice(qIdx);\r\n                cleanSpec = cleanSpec.slice(0, qIdx);\r\n              }\r\n              const hIdx = cleanSpec.indexOf(\"#\");\r\n              if (hIdx !== -1) {\r\n                querySuffix = cleanSpec.slice(hIdx) + querySuffix;\r\n                cleanSpec = cleanSpec.slice(0, hIdx);\r\n              }\r\n\r\n              // Strip Vite dev server prefixes like /@fs/ and /@id/\r\n              let stripped = cleanSpec;\r\n              if (\r\n                stripped.startsWith(\"/@\") &&\r\n                stripped.length > 2 &&\r\n                stripped[2] !== \"/\"\r\n              ) {\r\n                const secondSlash = stripped.indexOf(\"/\", 2);\r\n                if (secondSlash !== -1) {\r\n                  stripped = stripped.slice(secondSlash);\r\n                }\r\n              }\r\n\r\n              const fromDir = importer\r\n                ? pathPolyfill.dirname(\r\n                    importer.startsWith(\"/@\")\r\n                      ? importer.slice(importer.indexOf(\"/\", 2))\r\n                      : importer,\r\n                  )\r\n                : (typeof globalThis !== \"undefined\" &&\r\n                    (globalThis as any).process?.cwd?.()) ||\r\n                  \"/\";\r\n\r\n              for (const candidate of stripped !== cleanSpec\r\n                ? [stripped, cleanSpec]\r\n                : [cleanSpec]) {\r\n                try {\r\n                  const resolved = resolveId(candidate, fromDir, true);\r\n                  if (resolved) {\r\n                    return { id: resolved + querySuffix };\r\n                  }\r\n                } catch (_e) {\r\n                  /* not found */\r\n                }\r\n\r\n                if (candidate.startsWith(\"/\")) {\r\n                  if (vol.existsSync(candidate))\r\n                    return { id: candidate + querySuffix };\r\n                  const cwd =\r\n                    (typeof globalThis !== \"undefined\" &&\r\n                      (globalThis as any).process?.cwd?.()) ||\r\n                    \"/\";\r\n                  if (cwd !== \"/\") {\r\n                    const abs = cwd + candidate;\r\n                    if (vol.existsSync(abs)) return { id: abs + querySuffix };\r\n                    for (const ext of RESOLVE_EXTENSIONS) {\r\n                      if (vol.existsSync(abs + ext))\r\n                        return { id: abs + ext + querySuffix };\r\n                    }\r\n                  }\r\n                }\r\n              }\r\n              return null;\r\n            };\r\n            this.load = async function () {\r\n              return null;\r\n            };\r\n            this.transform = async function () {\r\n              return null;\r\n            };\r\n            this.watchChange = async function () {};\r\n            this.buildStart = function () {};\r\n            this.buildEnd = function () {};\r\n            this.renderChunk = function () {\r\n              return null;\r\n            };\r\n            this.generateBundle = function () {};\r\n            this.moduleParsed = function () {};\r\n          },\r\n          resolveTsconfig: () => ({\r\n            tsconfig: {\r\n              compilerOptions: {},\r\n            },\r\n            tsconfigFilePaths: [],\r\n          }),\r\n          collapseSourcemaps: () => null,\r\n          freeExternalMemory: noop,\r\n          scan: noopAsync,\r\n          BindingWatcher: class {\r\n            constructor(_options?: any, _notifyOption?: any) {}\r\n            async close() {}\r\n            async start(_listener: any) {}\r\n          },\r\n          BindingWatcherBundler: class {\r\n            async close() {}\r\n          },\r\n          BindingDevEngine: class {\r\n            constructor(_options?: any, _devOptions?: any) {}\r\n            async run() {}\r\n            async ensureCurrentBuildFinish() {}\r\n            async getBundleState() {\r\n              return { lastFullBuildFailed: false, hasStaleOutput: false };\r\n            }\r\n            async ensureLatestBuildOutput() {}\r\n            async invalidate() {\r\n              return [];\r\n            }\r\n            async registerModules() {}\r\n            async removeClient() {}\r\n            async close() {}\r\n            async compileEntry() {\r\n              return \"\";\r\n            }\r\n          },\r\n          BindingPluginContext: class {},\r\n          BindingTransformPluginContext: class {},\r\n          BindingLoadPluginContext: class {},\r\n          BindingChunkingContext: class {},\r\n          BindingOutputChunk: class {},\r\n          BindingOutputAsset: class {},\r\n          BindingRenderedChunk: class {},\r\n          BindingRenderedChunkMeta: class {},\r\n          BindingRenderedModule: class {},\r\n          BindingModuleInfo: class {},\r\n          BindingNormalizedOptions: class {},\r\n          BindingSourceMap: class {},\r\n          BindingDecodedMap: class {},\r\n          BindingBundleEndEventData: class {},\r\n          BindingBundleErrorEventData: class {},\r\n          BindingWatcherChangeData: class {},\r\n          BindingWatcherEvent: class {},\r\n          TsconfigCache: class {},\r\n          ParallelJsPluginRegistry: class {},\r\n          ScheduledBuild: class {},\r\n          ExportExportNameKind: {},\r\n          ExportImportNameKind: {},\r\n          ExportLocalNameKind: {},\r\n          ImportNameKind: {},\r\n          FilterTokenKind: {},\r\n          BindingChunkModuleOrderBy: { ModuleId: 0, ExecOrder: 1 },\r\n          BindingPluginOrder: { Pre: 0, Post: 1 },\r\n          BindingAttachDebugInfo: { None: 0, Simple: 1, Full: 2 },\r\n          BindingLogLevel: { Silent: 0, Debug: 1, Warn: 2, Info: 3 },\r\n          BindingPropertyReadSideEffects: { Always: 0, False: 1 },\r\n          BindingPropertyWriteSideEffects: { Always: 0, False: 1 },\r\n          BindingBuiltinPluginName: {},\r\n          BindingRebuildStrategy: { Always: 0, Auto: 1, Never: 2 },\r\n          BindingMagicString: class {\r\n            _str: string;\r\n            _original: string;\r\n            _changed: boolean;\r\n            _filename: string | null;\r\n            constructor(source?: string, opts?: any) {\r\n              this._str = source ?? \"\";\r\n              this._original = this._str;\r\n              this._changed = false;\r\n              this._filename = opts?.filename ?? null;\r\n            }\r\n            get filename() {\r\n              return this._filename;\r\n            }\r\n            replace(from: string, to: string) {\r\n              this._str = this._str.replace(from, to);\r\n              if (this._str !== this._original) this._changed = true;\r\n              return this;\r\n            }\r\n            replaceAll(from: string, to: string) {\r\n              this._str = this._str.split(from).join(to);\r\n              if (this._str !== this._original) this._changed = true;\r\n              return this;\r\n            }\r\n            prepend(content: string) {\r\n              this._str = content + this._str;\r\n              this._changed = true;\r\n              return this;\r\n            }\r\n            append(content: string) {\r\n              this._str += content;\r\n              this._changed = true;\r\n              return this;\r\n            }\r\n            prependLeft(idx: number, content: string) {\r\n              this._str =\r\n                this._str.slice(0, idx) + content + this._str.slice(idx);\r\n              this._changed = true;\r\n              return this;\r\n            }\r\n            prependRight(idx: number, content: string) {\r\n              this._str =\r\n                this._str.slice(0, idx) + content + this._str.slice(idx);\r\n              this._changed = true;\r\n              return this;\r\n            }\r\n            appendLeft(idx: number, content: string) {\r\n              this._str =\r\n                this._str.slice(0, idx) + content + this._str.slice(idx);\r\n              this._changed = true;\r\n              return this;\r\n            }\r\n            appendRight(idx: number, content: string) {\r\n              this._str =\r\n                this._str.slice(0, idx) + content + this._str.slice(idx);\r\n              this._changed = true;\r\n              return this;\r\n            }\r\n            overwrite(start: number, end: number, content: string) {\r\n              this._str =\r\n                this._str.slice(0, start) + content + this._str.slice(end);\r\n              this._changed = true;\r\n              return this;\r\n            }\r\n            update(start: number, end: number, content: string) {\r\n              return this.overwrite(start, end, content);\r\n            }\r\n            remove(start: number, end: number) {\r\n              return this.overwrite(start, end, \"\");\r\n            }\r\n            toString() {\r\n              return this._str;\r\n            }\r\n            hasChanged() {\r\n              return this._changed;\r\n            }\r\n            length() {\r\n              return this._str.length;\r\n            }\r\n            isEmpty() {\r\n              return this._str.length === 0;\r\n            }\r\n            insert(_index: number, _content: string): never {\r\n              throw new Error(\r\n                \"magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...) instead\",\r\n              );\r\n            }\r\n            indent(indentor?: string) {\r\n              const ind = indentor ?? \"\\t\";\r\n              this._str = this._str.replace(/^/gm, ind);\r\n              this._changed = true;\r\n              return this;\r\n            }\r\n            trim(_charType?: string) {\r\n              this._str = this._str.trim();\r\n              if (this._str !== this._original) this._changed = true;\r\n              return this;\r\n            }\r\n            trimStart(_charType?: string) {\r\n              this._str = this._str.trimStart();\r\n              if (this._str !== this._original) this._changed = true;\r\n              return this;\r\n            }\r\n            trimEnd(_charType?: string) {\r\n              this._str = this._str.trimEnd();\r\n              if (this._str !== this._original) this._changed = true;\r\n              return this;\r\n            }\r\n            trimLines() {\r\n              this._str = this._str.replace(/^\\n+/, \"\").replace(/\\n+$/, \"\");\r\n              if (this._str !== this._original) this._changed = true;\r\n              return this;\r\n            }\r\n            clone() {\r\n              const c = new (this.constructor as any)(this._str);\r\n              c._original = this._original;\r\n              c._changed = this._changed;\r\n              return c;\r\n            }\r\n            lastChar() {\r\n              return this._str[this._str.length - 1] || \"\";\r\n            }\r\n            lastLine() {\r\n              const idx = this._str.lastIndexOf(\"\\n\");\r\n              return idx === -1 ? this._str : this._str.slice(idx + 1);\r\n            }\r\n            snip(start: number, end: number) {\r\n              return new (this.constructor as any)(this._str.slice(start, end));\r\n            }\r\n            reset(start: number, end: number) {\r\n              const s = start < 0 ? this._original.length + start : start;\r\n              const e = end < 0 ? this._original.length + end : end;\r\n              const original = this._original.slice(s, e);\r\n              this._str = this._str.slice(0, s) + original + this._str.slice(e);\r\n              return this;\r\n            }\r\n            slice(start?: number, end?: number) {\r\n              return this._str.slice(start, end);\r\n            }\r\n            relocate(start: number, end: number, to: number) {\r\n              const chunk = this._str.slice(start, end);\r\n              const without = this._str.slice(0, start) + this._str.slice(end);\r\n              const adjustedTo = to > end ? to - (end - start) : to;\r\n              this._str =\r\n                without.slice(0, adjustedTo) +\r\n                chunk +\r\n                without.slice(adjustedTo);\r\n              this._changed = true;\r\n              return this;\r\n            }\r\n            move(start: number, end: number, index: number) {\r\n              return this.relocate(start, end, index);\r\n            }\r\n            generateMap(_opts?: any) {\r\n              return { version: 3, sources: [], mappings: \"\", names: [] };\r\n            }\r\n            generateDecodedMap(_opts?: any) {\r\n              return { version: 3, sources: [], mappings: [], names: [] };\r\n            }\r\n          },\r\n        };\r\n      }\r\n      return id;\r\n    }\r\n\r\n    if (id.startsWith(\"#\")) {\r\n      let dir = fromDir;\r\n      while (dir !== \"/\" && dir) {\r\n        const mf = readManifest(pathPolyfill.join(dir, \"package.json\"));\r\n        if (mf?.imports) {\r\n          for (const conds of [\r\n            { browser: true, require: true },\r\n            { require: true },\r\n            { browser: true, import: true },\r\n            {},\r\n          ] as const) {\r\n            try {\r\n              const resolved = resolveImports(mf, id, conds);\r\n              if (resolved?.length) {\r\n                const full = pathPolyfill.join(dir, resolved[0]);\r\n                if (vol.existsSync(full)) return full;\r\n                for (const ext of IMPORTS_FIELD_EXTENSIONS) {\r\n                  if (vol.existsSync(full + ext)) return full + ext;\r\n                }\r\n              }\r\n            } catch {\r\n              /* try next condition set */\r\n            }\r\n          }\r\n        }\r\n        const parent = pathPolyfill.dirname(dir);\r\n        if (parent === dir) break;\r\n        dir = parent;\r\n      }\r\n      // Unresolvable # imports get a stub (many are just feature-detection flags)\r\n      const stubPath = `/node_modules/.nodepod-stubs/${id.slice(1)}.js`;\r\n      if (!vol.existsSync(stubPath)) {\r\n        vol.mkdirSync(pathPolyfill.dirname(stubPath), { recursive: true });\r\n        vol.writeFileSync(stubPath, \"module.exports = {};\");\r\n      }\r\n      return stubPath;\r\n    }\r\n\r\n    const cacheKey = `${fromDir}|${id}`;\r\n    const cached = resolveCache.get(cacheKey);\r\n    if (cached !== undefined) {\r\n      if (cached === null) {\r\n        const e = new Error(`Cannot find module '${id}'`) as Error & {\r\n          code: string;\r\n        };\r\n        e.code = \"MODULE_NOT_FOUND\";\r\n        throw e;\r\n      }\r\n      return cached;\r\n    }\r\n\r\n    const tryFile = (base: string): string | null => {\r\n      if (vol.existsSync(base)) {\r\n        const s = vol.statSync(base);\r\n        if (s.isFile()) return base;\r\n        const localMf = readManifest(pathPolyfill.join(base, \"package.json\"));\r\n        if (localMf?.main) {\r\n          const mainPath = pathPolyfill.join(base, localMf.main);\r\n          if (vol.existsSync(mainPath)) {\r\n            const ms = vol.statSync(mainPath);\r\n            if (ms.isFile()) return mainPath;\r\n          }\r\n          for (const ext of MAIN_FIELD_EXTENSIONS) {\r\n            const withExt = mainPath + ext;\r\n            if (vol.existsSync(withExt)) return withExt;\r\n          }\r\n        }\r\n        for (const idx of INDEX_FILES) {\r\n          const idxPath = pathPolyfill.join(base, idx);\r\n          if (vol.existsSync(idxPath)) return idxPath;\r\n        }\r\n      }\r\n      for (const ext of [...MAIN_FIELD_EXTENSIONS, \".node\"]) {\r\n        const withExt = base + ext;\r\n        if (vol.existsSync(withExt)) return withExt;\r\n      }\r\n      return null;\r\n    };\r\n\r\n    if (id === \".\" || id === \"..\") id = id + \"/\";\r\n    if (id.startsWith(\"./\") || id.startsWith(\"../\") || id.startsWith(\"/\")) {\r\n      const abs = id.startsWith(\"/\") ? id : pathPolyfill.resolve(fromDir, id);\r\n      const found = tryFile(abs);\r\n      if (found) {\r\n        resolveCache.set(cacheKey, found);\r\n        return found;\r\n      }\r\n\r\n      resolveCache.set(cacheKey, null);\r\n      const e = new Error(\r\n        `Cannot find module '${id}' from '${fromDir}'`,\r\n      ) as Error & { code: string };\r\n      e.code = \"MODULE_NOT_FOUND\";\r\n      throw e;\r\n    }\r\n\r\n    const applyBrowserRemap = (\r\n      resolved: string,\r\n      manifest: PackageManifest,\r\n      pkgRoot: string,\r\n    ): string | null => {\r\n      if (!manifest.browser || typeof manifest.browser !== \"object\")\r\n        return resolved;\r\n      const map = manifest.browser as Record<string, string | false>;\r\n      const rel = \"./\" + pathPolyfill.relative(pkgRoot, resolved);\r\n      const relNoExt = rel.replace(/\\.(js|json|cjs|mjs)$/, \"\");\r\n      for (const k of [rel, relNoExt]) {\r\n        if (k in map) {\r\n          if (map[k] === false) return null;\r\n          return tryFile(pathPolyfill.join(pkgRoot, map[k] as string));\r\n        }\r\n      }\r\n      return resolved;\r\n    };\r\n\r\n    const tryNodeModules = (nmDir: string, moduleId: string): string | null => {\r\n      const parts = moduleId.split(\"/\");\r\n      const pkgName =\r\n        parts[0].startsWith(\"@\") && parts.length > 1\r\n          ? `${parts[0]}/${parts[1]}`\r\n          : parts[0];\r\n\r\n      const pkgRoot = pathPolyfill.join(nmDir, pkgName);\r\n      const mfPath = pathPolyfill.join(pkgRoot, \"package.json\");\r\n      const manifest = readManifest(mfPath);\r\n\r\n      if (manifest) {\r\n        let exportsResolved = false;\r\n        if (manifest.exports) {\r\n          const subpath =\r\n            moduleId === pkgName\r\n              ? \".\"\r\n              : \"./\" + moduleId.slice(pkgName.length + 1);\r\n\r\n          // Custom export conditions from --conditions flag / NODE_OPTIONS\r\n          const extraConditions: string[] = [];\r\n          const execArgv: string[] = proc.execArgv || [];\r\n          for (let ai = 0; ai < execArgv.length; ai++) {\r\n            const arg = execArgv[ai];\r\n            if (arg === \"--conditions\" || arg === \"-C\") {\r\n              if (ai + 1 < execArgv.length)\r\n                extraConditions.push(execArgv[++ai]);\r\n            } else if (arg.startsWith(\"--conditions=\")) {\r\n              extraConditions.push(arg.slice(\"--conditions=\".length));\r\n            }\r\n          }\r\n          const nodeOpts = proc.env?.NODE_OPTIONS || \"\";\r\n          const condMatch = nodeOpts.matchAll(/(?:--conditions[= ]|-C )(\\S+)/g);\r\n          for (const m of condMatch) extraConditions.push(m[1]);\r\n          const condExtra =\r\n            extraConditions.length > 0 ? { conditions: extraConditions } : {};\r\n\r\n          const baseSets: Record<string, unknown>[] = preferEsm\r\n            ? [\r\n                { node: true, import: true, ...condExtra },\r\n                { browser: true, import: true, ...condExtra },\r\n                { import: true, ...condExtra },\r\n                { node: true, require: true, ...condExtra },\r\n                { browser: true, require: true, ...condExtra },\r\n                { require: true, ...condExtra },\r\n              ]\r\n            : [\r\n                { node: true, require: true, ...condExtra },\r\n                { browser: true, require: true, ...condExtra },\r\n                { require: true, ...condExtra },\r\n                { node: true, import: true, ...condExtra },\r\n                { browser: true, import: true, ...condExtra },\r\n                { import: true, ...condExtra },\r\n              ];\r\n\r\n          for (const conds of baseSets) {\r\n            try {\r\n              const resolved = resolveExports(manifest, subpath, conds);\r\n              if (resolved?.length) {\r\n                const full = pathPolyfill.join(pkgRoot, resolved[0]);\r\n                const found = tryFile(full);\r\n                if (found) {\r\n                  if (found.endsWith(\".cjs\")) {\r\n                    try {\r\n                      const content = vol.readFileSync(found, \"utf8\");\r\n                      if (content.trimStart().startsWith(\"throw \")) continue;\r\n                    } catch {\r\n                      /* proceed */\r\n                    }\r\n                  }\r\n                  exportsResolved = true;\r\n                  return found;\r\n                }\r\n              }\r\n            } catch {\r\n              /* try next */\r\n            }\r\n          }\r\n        }\r\n\r\n        if (!exportsResolved && pkgName === moduleId) {\r\n          let entry: string | undefined;\r\n          if (typeof manifest.browser === \"string\") entry = manifest.browser;\r\n          if (!entry && manifest.module) entry = manifest.module as string;\r\n          if (!entry) entry = manifest.main || \"index.js\";\r\n          const found = tryFile(pathPolyfill.join(pkgRoot, entry));\r\n          if (found) return found;\r\n        }\r\n      }\r\n\r\n      const directPath = pathPolyfill.join(nmDir, moduleId);\r\n      return tryFile(directPath);\r\n    };\r\n\r\n    let searchDir = fromDir;\r\n    while (searchDir !== \"/\") {\r\n      const nmDir = pathPolyfill.join(searchDir, \"node_modules\");\r\n      const found = tryNodeModules(nmDir, id);\r\n      if (found) {\r\n        resolveCache.set(cacheKey, found);\r\n        return found;\r\n      }\r\n      searchDir = pathPolyfill.dirname(searchDir);\r\n    }\r\n\r\n    const rootFound = tryNodeModules(\"/node_modules\", id);\r\n    if (rootFound) {\r\n      resolveCache.set(cacheKey, rootFound);\r\n      return rootFound;\r\n    }\r\n\r\n    // Fallback: resolve from cwd (handles modules loaded from temp/bundled locations)\r\n    const cwd = proc.cwd();\r\n    if (cwd !== fromDir && cwd !== \"/\") {\r\n      let fallbackDir = cwd;\r\n      while (fallbackDir !== \"/\" && fallbackDir !== fromDir) {\r\n        const nmDir = pathPolyfill.join(fallbackDir, \"node_modules\");\r\n        const found = tryNodeModules(nmDir, id);\r\n        if (found) {\r\n          resolveCache.set(cacheKey, found);\r\n          return found;\r\n        }\r\n        fallbackDir = pathPolyfill.dirname(fallbackDir);\r\n      }\r\n    }\r\n\r\n    resolveCache.set(cacheKey, null);\r\n    const e = new Error(\r\n      `Cannot find module '${id}' from '${fromDir}'`,\r\n    ) as Error & { code: string };\r\n    e.code = \"MODULE_NOT_FOUND\";\r\n    throw e;\r\n  };\r\n\r\n  const loadModule = (\r\n    resolved: string,\r\n    parentRecord?: ModuleRecord,\r\n  ): ModuleRecord => {\r\n    if (cache[resolved]) return cache[resolved];\r\n\r\n    // Package dedup: reuse first instance of name@version:path to prevent\r\n    // \"Cannot use X from another module or realm\" errors\r\n    const nmIdx = resolved.lastIndexOf(\"/node_modules/\");\r\n    if (nmIdx !== -1) {\r\n      const afterNm = resolved.slice(nmIdx + \"/node_modules/\".length);\r\n      const parts = afterNm.split(\"/\");\r\n      const pkgName = parts[0].startsWith(\"@\")\r\n        ? parts[0] + \"/\" + parts[1]\r\n        : parts[0];\r\n      const pkgDir = resolved.slice(0, nmIdx) + \"/node_modules/\" + pkgName;\r\n      try {\r\n        const pkgJson = JSON.parse(\r\n          vol.readFileSync(pkgDir + \"/package.json\", \"utf8\"),\r\n        );\r\n        // Include file path so different subpath exports (svelte vs svelte/compiler) aren't deduped\r\n        const identity =\r\n          pkgName + \"@\" + (pkgJson.version || \"0.0.0\") + \":\" + afterNm;\r\n        if (!_pkgIdentityMap[identity]) {\r\n          _pkgIdentityMap[identity] = resolved;\r\n        } else if (_pkgIdentityMap[identity] !== resolved) {\r\n          // Only reuse fully-loaded modules — returning mid-execution ones causes \"X is not a function\"\r\n          const canonical = _pkgIdentityMap[identity];\r\n          if (cache[canonical] && cache[canonical].loaded) {\r\n            cache[resolved] = cache[canonical];\r\n            return cache[canonical];\r\n          }\r\n        }\r\n      } catch {\r\n        /* no package.json */\r\n      }\r\n    }\r\n\r\n    const _loadDepth = ((globalThis as any).__loadModuleDepth ?? 0) + 1;\r\n    (globalThis as any).__loadModuleDepth = _loadDepth;\r\n\r\n    const record: ModuleRecord = {\r\n      id: resolved,\r\n      filename: resolved,\r\n      exports: {},\r\n      loaded: false,\r\n      children: [],\r\n      paths: [],\r\n      parent: parentRecord ?? null,\r\n    };\r\n    if (parentRecord) parentRecord.children.push(record);\r\n\r\n    cache[resolved] = record;\r\n\r\n    const keys = Object.keys(cache);\r\n    if (keys.length > LIMITS.MODULE_CACHE_MAX) delete cache[keys[0]];\r\n\r\n    if (resolved.endsWith(\".json\")) {\r\n      const raw = vol.readFileSync(resolved, \"utf8\");\r\n      record.exports = JSON.parse(raw);\r\n      record.loaded = true;\r\n      return record;\r\n    }\r\n\r\n    // Native .node addons cannot run in the browser — throw so that\r\n    // callers (e.g. napi-rs packages) fall back to their WASM build.\r\n    if (resolved.endsWith(\".node\")) {\r\n      delete cache[resolved];\r\n      const e = new Error(\r\n        `Cannot load native addon '${resolved}' — native .node binaries are not supported in the browser`,\r\n      ) as Error & { code: string };\r\n      e.code = \"ERR_DLOPEN_FAILED\";\r\n      throw e;\r\n    }\r\n\r\n    const rawSource = vol.readFileSync(resolved, \"utf8\");\r\n    const dir = pathPolyfill.dirname(resolved);\r\n\r\n    const codeCacheKey = `${resolved}|${quickDigest(rawSource)}`;\r\n    let processedCode = codeCache?.get(codeCacheKey);\r\n\r\n    if (!processedCode) {\r\n      processedCode = rawSource;\r\n      if (processedCode.startsWith(\"#!\")) {\r\n        processedCode = processedCode.slice(processedCode.indexOf(\"\\n\") + 1);\r\n      }\r\n      if (isTypeScriptFile(resolved)) {\r\n        processedCode = stripTypeScript(processedCode);\r\n      }\r\n      // Transform JSX/TSX syntax to React.createElement calls\r\n      if (needsJsxTransform(resolved, processedCode)) {\r\n        processedCode = transformJsxSync(processedCode, resolved);\r\n      }\r\n      if (resolved.endsWith(\".cjs\")) {\r\n        // CJS: only rewrite import()/import.meta via AST, skip full ESM conversion\r\n        try {\r\n          const cjsAst = acorn.parse(processedCode, {\r\n            ecmaVersion: \"latest\",\r\n            sourceType: \"script\",\r\n            allowImportExportEverywhere: true,\r\n          });\r\n          const cjsPatches: Array<[number, number, string]> = [];\r\n          const walkCjs = (node: any) => {\r\n            if (!node || typeof node !== \"object\") return;\r\n            if (Array.isArray(node)) {\r\n              for (const c of node) walkCjs(c);\r\n              return;\r\n            }\r\n            if (typeof node.type !== \"string\") return;\r\n            if (node.type === \"ImportExpression\") {\r\n              cjsPatches.push([node.start, node.start + 6, \"__asyncLoad\"]);\r\n            }\r\n            if (\r\n              node.type === \"MetaProperty\" &&\r\n              node.meta?.name === \"import\" &&\r\n              node.property?.name === \"meta\"\r\n            ) {\r\n              cjsPatches.push([\r\n                node.start,\r\n                node.end,\r\n                `({ url: \"file://${resolved}\", dirname: \"${pathPolyfill.dirname(resolved)}\", filename: \"${resolved}\" })`,\r\n              ]);\r\n            }\r\n            for (const key of Object.keys(node)) {\r\n              if (key === \"type\" || key === \"start\" || key === \"end\") continue;\r\n              const val = node[key];\r\n              if (val && typeof val === \"object\") walkCjs(val);\r\n            }\r\n          };\r\n          walkCjs(cjsAst);\r\n          if (cjsPatches.length > 0) {\r\n            cjsPatches.sort((a, b) => b[0] - a[0] || b[1] - a[1]);\r\n            for (const [start, end, replacement] of cjsPatches) {\r\n              processedCode =\r\n                processedCode.slice(0, start) +\r\n                replacement +\r\n                processedCode.slice(end);\r\n            }\r\n          }\r\n        } catch {\r\n          /* can't parse — leave untransformed */\r\n        }\r\n      } else {\r\n        processedCode = convertModuleSyntax(processedCode, resolved);\r\n      }\r\n      codeCache?.set(codeCacheKey, processedCode);\r\n    }\r\n\r\n    const isCjs = resolved.endsWith(\".cjs\");\r\n    const moduleHasTLA = !isCjs && hasTopLevelAwait(processedCode);\r\n    const useFullDeAsync = deAsyncImports || moduleHasTLA;\r\n    if (!isCjs)\r\n      processedCode = stripTopLevelAwait(\r\n        processedCode,\r\n        deAsyncImports ? \"full\" : \"topLevelOnly\",\r\n      );\r\n\r\n    const childResolver = buildResolver(\r\n      vol,\r\n      fsBridge,\r\n      proc,\r\n      dir,\r\n      cache,\r\n      opts,\r\n      codeCache,\r\n      useFullDeAsync,\r\n    );\r\n    childResolver.cache = cache;\r\n    childResolver._ownerRecord = record;\r\n\r\n    const wrappedConsole = wrapConsole(opts.onConsole);\r\n\r\n    try {\r\n      const metaUrl = \"file://\" + resolved;\r\n      const wrapper = buildModuleWrapper(processedCode);\r\n\r\n      let fn;\r\n      try {\r\n        fn = (0, eval)(wrapper);\r\n      } catch (syntaxErr) {\r\n        const msg =\r\n          syntaxErr instanceof Error ? syntaxErr.message : String(syntaxErr);\r\n        throw new SyntaxError(`${msg} (in ${resolved})`);\r\n      }\r\n\r\n      {\r\n        const srcMap =\r\n          (globalThis as any).__dbgSrcMap ||\r\n          ((globalThis as any).__dbgSrcMap = new Map());\r\n        srcMap.set(resolved, wrapper);\r\n      }\r\n\r\n      const asyncLoader = makeDynamicLoader(childResolver);\r\n      fn(\r\n        record.exports,\r\n        childResolver,\r\n        record,\r\n        resolved,\r\n        dir,\r\n        proc,\r\n        wrappedConsole,\r\n        { url: metaUrl, dirname: dir, filename: resolved },\r\n        asyncLoader,\r\n        syncAwait,\r\n        SyncPromiseClass,\r\n      );\r\n\r\n      record.loaded = true;\r\n      (globalThis as any).__loadModuleDepth = _loadDepth - 1;\r\n    } catch (err) {\r\n      (globalThis as any).__loadModuleDepth = _loadDepth - 1;\r\n      delete cache[resolved];\r\n      // >8MB WASM: retry with async compilation APIs\r\n      const errMsg = err instanceof Error ? err.message : String(err);\r\n      if (\r\n        errMsg.includes(\"disallowed on the main thread\") ||\r\n        errMsg.includes(\"buffer size is larger than\") ||\r\n        errMsg.includes(\"__WASM_COMPILE_PENDING__\")\r\n      ) {\r\n        let asyncCode = processedCode!;\r\n        asyncCode = asyncCode.replace(\r\n          /new\\s+WebAssembly\\.Module\\b/g,\r\n          \"await __wasmCompile\",\r\n        );\r\n        asyncCode = asyncCode.replace(\r\n          /new\\s+WebAssembly\\.Instance\\b/g,\r\n          \"await __wasmInstantiate\",\r\n        );\r\n\r\n        const asyncWrapper = buildModuleWrapper(asyncCode, {\r\n          async: true,\r\n          useNativePromise: true,\r\n          includeViteVars: false,\r\n          hideBrowserGlobals: false,\r\n          wasmHelpers: true,\r\n        });\r\n        try {\r\n          const asyncFn = (0, eval)(asyncWrapper);\r\n          const asyncLoader = makeDynamicLoader(childResolver);\r\n          const wasmReady = asyncFn(\r\n            record.exports,\r\n            childResolver,\r\n            record,\r\n            resolved,\r\n            dir,\r\n            proc,\r\n            wrappedConsole,\r\n            { url: \"file://\" + resolved, dirname: dir, filename: resolved },\r\n            asyncLoader,\r\n            syncAwait,\r\n            SyncPromiseClass,\r\n          );\r\n          record.loaded = true;\r\n          (record as any).__wasmReady = wasmReady;\r\n          cache[resolved] = record;\r\n        } catch (retryErr) {\r\n          if (err instanceof Error && !err.message.includes(\"(in /\")) {\r\n            err.message = `${err.message} (in ${resolved})`;\r\n          }\r\n          throw err;\r\n        }\r\n        return record;\r\n      }\r\n\r\n      if (err instanceof Error && !err.message.includes(\"(in /\")) {\r\n        err.message = `${err.message} (in ${resolved})`;\r\n      }\r\n      throw err;\r\n    }\r\n\r\n    return record;\r\n  };\r\n\r\n  const resolver: ResolverFn = (id: string): unknown => {\r\n    if (typeof id !== \"string\") {\r\n      // Match real Node.js error: TypeError with ERR_INVALID_ARG_TYPE code\r\n      const err: any = new TypeError(\r\n        `The \"id\" argument must be of type string. Received ${id === null ? \"null\" : typeof id}`,\r\n      );\r\n      err.code = \"ERR_INVALID_ARG_TYPE\";\r\n      throw err;\r\n    }\r\n    if (id.startsWith(\"node:\")) id = id.slice(5);\r\n\r\n    if (id === \"fs\") return fsBridge;\r\n    if (id === \"fs/promises\") return fsBridge.promises;\r\n    if (id === \"process\") return proc;\r\n    if (id === \"console\") return wrapConsole(opts.onConsole);\r\n    if (id === \"worker_threads\") {\r\n      if (opts.workerThreadsOverride) {\r\n        const base = CORE_MODULES[\"worker_threads\"];\r\n        const override = Object.assign(\r\n          Object.create(null),\r\n          base,\r\n          opts.workerThreadsOverride,\r\n        );\r\n        override.default = override;\r\n        return override;\r\n      }\r\n      return CORE_MODULES[\"worker_threads\"];\r\n    }\r\n    if (id === \"module\") {\r\n      // Per-engine Module so fork() doesn't clobber parent's _resolveFilename\r\n      const OrigModule = moduleSysPolyfill.Module;\r\n\r\n      function PerEngineModule(this: any, mid?: string, parent?: any) {\r\n        OrigModule.call(this, mid, parent);\r\n      }\r\n      PerEngineModule.prototype = OrigModule.prototype;\r\n\r\n      const liveCreateRequire = (from: string) => {\r\n        let fromPath = from;\r\n        if (from.startsWith(\"file://\")) {\r\n          fromPath = decodeURIComponent(from.slice(7));\r\n          if (fromPath.startsWith(\"/\") && fromPath[2] === \":\")\r\n            fromPath = fromPath.slice(1);\r\n        }\r\n        const childDir = pathPolyfill.dirname(fromPath);\r\n        const child = buildResolver(\r\n          vol,\r\n          fsBridge,\r\n          proc,\r\n          childDir,\r\n          cache,\r\n          opts,\r\n          codeCache,\r\n          deAsyncImports,\r\n        );\r\n        child.cache = cache;\r\n        return child;\r\n      };\r\n\r\n      PerEngineModule.createRequire = liveCreateRequire;\r\n      PerEngineModule._cache = cache;\r\n      PerEngineModule._resolveFilename = (\r\n        request: string,\r\n        parent?: any,\r\n        isMain?: boolean,\r\n        options?: any,\r\n      ) => {\r\n        if (typeof request !== \"string\") {\r\n          const err: any = new Error(`Cannot find module '${request}'`);\r\n          err.code = \"MODULE_NOT_FOUND\";\r\n          throw err;\r\n        }\r\n        if (options?.paths && Array.isArray(options.paths)) {\r\n          for (const p of options.paths) {\r\n            try {\r\n              return resolveId(request, p);\r\n            } catch {\r\n              /* try next */\r\n            }\r\n          }\r\n        }\r\n        if (parent?.paths && Array.isArray(parent.paths)) {\r\n          for (const p of parent.paths) {\r\n            try {\r\n              const dir = p.endsWith(\"/node_modules\")\r\n                ? pathPolyfill.dirname(p)\r\n                : p;\r\n              return resolveId(request, dir);\r\n            } catch {\r\n              /* try next */\r\n            }\r\n          }\r\n        }\r\n        const fromDir = parent?.filename\r\n          ? pathPolyfill.dirname(parent.filename)\r\n          : baseDir;\r\n        try {\r\n          return resolveId(request, fromDir);\r\n        } catch {\r\n          const err: any = new Error(`Cannot find module '${request}'`);\r\n          err.code = \"MODULE_NOT_FOUND\";\r\n          throw err;\r\n        }\r\n      };\r\n      PerEngineModule._load = (\r\n        request: string,\r\n        parent?: any,\r\n        isMain?: boolean,\r\n      ) => {\r\n        try {\r\n          return resolver(request);\r\n        } catch {\r\n          return moduleSysPolyfill._load(request, parent, isMain);\r\n        }\r\n      };\r\n\r\n      PerEngineModule.builtinModules = moduleSysPolyfill.builtinModules;\r\n      PerEngineModule.isBuiltin = moduleSysPolyfill.isBuiltin;\r\n      PerEngineModule._extensions = moduleSysPolyfill._extensions;\r\n      PerEngineModule._pathCache = moduleSysPolyfill._pathCache;\r\n      PerEngineModule._nodeModulePaths = moduleSysPolyfill._nodeModulePaths;\r\n      PerEngineModule._findPath = moduleSysPolyfill._findPath;\r\n      PerEngineModule.syncBuiltinESMExports =\r\n        moduleSysPolyfill.syncBuiltinESMExports;\r\n      PerEngineModule.wrap = moduleSysPolyfill.wrap;\r\n      PerEngineModule.wrapper = moduleSysPolyfill.wrapper;\r\n      PerEngineModule.Module = PerEngineModule;\r\n      PerEngineModule.runMain = OrigModule.runMain;\r\n      PerEngineModule._preloadModules = OrigModule._preloadModules;\r\n      PerEngineModule._initPaths = OrigModule._initPaths;\r\n      PerEngineModule.globalPaths = OrigModule.globalPaths;\r\n      (PerEngineModule as any).default = PerEngineModule;\r\n      return PerEngineModule;\r\n    }\r\n    if (CORE_MODULES[id]) return CORE_MODULES[id];\r\n\r\n    let resolved: string;\r\n    try {\r\n      resolved = resolveId(id, baseDir);\r\n    } catch (resolveErr: any) {\r\n      if (\r\n        resolveErr?.code === \"MODULE_NOT_FOUND\" &&\r\n        !id.startsWith(\"./\") &&\r\n        !id.startsWith(\"../\")\r\n      ) {\r\n        // --- Determine WASM alternative package name(s) to try ---\r\n        const wasmAlts: string[] = [];\r\n\r\n        if (id.includes(\"wasm32-wasi\")) {\r\n          // Explicit wasm32-wasi package — auto-install as-is\r\n          wasmAlts.push(id);\r\n        } else {\r\n          // Platform-specific native package pattern:\r\n          //   {name}-{platform}-{arch}[-{abi}]\r\n          // e.g. lightningcss-linux-x64-gnu, @pkg/core-darwin-arm64\r\n          const platformRe =\r\n            /^(.+)-(darwin|linux|win32|freebsd|android|sunos)-(x64|x86|arm64|arm|ia32|s390x|ppc64|mips64el|riscv64)(-[a-z]+)?$/;\r\n          const m = id.match(platformRe);\r\n          if (m) {\r\n            const baseName = m[1]; // e.g. \"lightningcss\" or \"@scope/pkg\"\r\n            wasmAlts.push(baseName + \"-wasm32-wasi\");\r\n            wasmAlts.push(baseName + \"-wasm\");\r\n          }\r\n        }\r\n\r\n        // Try resolving any of the WASM alternatives (already installed)\r\n        for (const alt of wasmAlts) {\r\n          resolveCache.delete(`${baseDir}|${alt}`);\r\n          try {\r\n            const altResolved = resolveId(alt, baseDir);\r\n            const altRec = loadModule(altResolved, resolver._ownerRecord);\r\n            return altRec.exports;\r\n          } catch {\r\n            // not installed yet\r\n          }\r\n        }\r\n\r\n      }\r\n      throw resolveErr;\r\n    }\r\n    if (CORE_MODULES[resolved]) return CORE_MODULES[resolved];\r\n\r\n    let rec: ModuleRecord;\r\n    try {\r\n      rec = loadModule(resolved, resolver._ownerRecord);\r\n    } catch (loadErr: any) {\r\n      // When a bare module fails to load (e.g. native binding not found inside\r\n      // the module), try a WASM drop-in replacement: {name}-wasm or {name}-wasm32-wasi\r\n      if (\r\n        !id.startsWith(\"./\") &&\r\n        !id.startsWith(\"../\") &&\r\n        !id.startsWith(\"/\") &&\r\n        (loadErr?.code === \"MODULE_NOT_FOUND\" ||\r\n          loadErr?.code === \"ERR_DLOPEN_FAILED\" ||\r\n          (loadErr?.message &&\r\n            /cannot\\s+(find|load)\\s+(module|native)/i.test(loadErr.message)))\r\n      ) {\r\n        const wasmAlts = [id + \"-wasm32-wasi\", id + \"-wasm\"];\r\n        for (const alt of wasmAlts) {\r\n          try {\r\n            resolveCache.delete(`${baseDir}|${alt}`);\r\n            const altResolved = resolveId(alt, baseDir);\r\n            const altRec = loadModule(altResolved, resolver._ownerRecord);\r\n            return altRec.exports;\r\n          } catch {\r\n            // not available\r\n          }\r\n        }\r\n      }\r\n      throw loadErr;\r\n    }\r\n    // Proxy for async WASM — reads from rec.exports at access time so\r\n    // reassigned module.exports is picked up after compilation finishes\r\n    if ((rec as any).__wasmReady) {\r\n      return new Proxy(Object.create(null), {\r\n        get(_t, prop) {\r\n          const ex = rec.exports as any;\r\n          if (ex && prop in ex) return ex[prop];\r\n          return undefined;\r\n        },\r\n        set(_t, prop, val) {\r\n          (rec.exports as any)[prop] = val;\r\n          return true;\r\n        },\r\n        has(_t, prop) {\r\n          return rec.exports ? prop in (rec.exports as any) : false;\r\n        },\r\n        ownKeys() {\r\n          return rec.exports ? Reflect.ownKeys(rec.exports as any) : [];\r\n        },\r\n        getOwnPropertyDescriptor(_t, prop) {\r\n          if (!rec.exports) return undefined;\r\n          return Object.getOwnPropertyDescriptor(rec.exports as any, prop);\r\n        },\r\n      });\r\n    }\r\n    return rec.exports;\r\n  };\r\n\r\n  resolver.resolve = (id: string, options?: { paths?: string[] }): string => {\r\n    if (id === \"fs\" || id === \"process\" || CORE_MODULES[id]) return id;\r\n    if (options?.paths && Array.isArray(options.paths)) {\r\n      for (const p of options.paths) {\r\n        try {\r\n          return resolveId(id, p);\r\n        } catch {\r\n          /* try next */\r\n        }\r\n      }\r\n    }\r\n    return resolveId(id, baseDir);\r\n  };\r\n\r\n  resolver.cache = cache;\r\n  resolver.extensions = {\r\n    \".js\": () => {},\r\n    \".json\": () => {},\r\n    \".node\": () => {},\r\n    \".ts\": () => {},\r\n    \".tsx\": () => {},\r\n    \".mjs\": () => {},\r\n    \".cjs\": () => {},\r\n  };\r\n  resolver.main = null;\r\n  return resolver;\r\n}\r\n\r\n// ── ScriptEngine class ──\r\nexport class ScriptEngine {\r\n  private vol: MemoryVolume;\r\n  private fsBridge: FsBridge;\r\n  private proc: ProcessObject;\r\n  private moduleRegistry: Record<string, ModuleRecord> = {};\r\n  private opts: EngineOptions;\r\n  private transformCache: Map<string, string>;\r\n\r\n  constructor(vol: MemoryVolume, opts: EngineOptions = {}) {\r\n    // Use handler's LRU transform cache if available, else a plain Map\r\n    if (opts.handler) {\r\n      this.transformCache = opts.handler.transformCache as unknown as Map<string, string>;\r\n    } else {\r\n      this.transformCache = new Map();\r\n    }\r\n    this.vol = vol;\r\n    this.proc = buildProcessEnv({\r\n      cwd: opts.cwd || \"/\",\r\n      env: opts.env,\r\n      onStdout: opts.onStdout,\r\n      onStderr: opts.onStderr,\r\n    });\r\n    this.fsBridge = buildFileSystemBridge(vol, () => this.proc.cwd());\r\n    this.opts = opts;\r\n\r\n    // Don't call initShellExec here — Nodepod.boot() sets up the shell with correct cwd\r\n    import(\"./polyfills/child_process\")\r\n      .then((mod) => {\r\n        _shellExecPolyfill = mod;\r\n        _initShellExec = mod.initShellExec;\r\n      })\r\n      .catch(() => {\r\n        /* shell unavailable in this environment */\r\n      });\r\n    watcherPolyfill.setVolume(vol);\r\n    scannerPolyfill.setVolume(vol);\r\n    esbuildPolyfill.setVolume(vol);\r\n\r\n    (globalThis as any).__nodepodVolume = vol;\r\n\r\n    // Intercept fetch() for file:// URLs — serve from VFS instead of network.\r\n    // napi-rs wasm32-wasi packages use fetch(new URL('file.wasm', import.meta.url))\r\n    // which browsers block. This patches fetch to read from the in-memory filesystem.\r\n    if (!(globalThis.fetch as any).__nodepodPatched) {\r\n      const origFetch = globalThis.fetch.bind(globalThis);\r\n      const patchedFetch = (\r\n        input: RequestInfo | URL,\r\n        init?: RequestInit,\r\n      ): Promise<Response> => {\r\n        let url: string | undefined;\r\n        if (typeof input === \"string\") url = input;\r\n        else if (input instanceof URL) url = input.href;\r\n        else if (input instanceof Request) url = input.url;\r\n\r\n        if (url?.startsWith(\"file://\")) {\r\n          // Convert file:// URL to VFS path\r\n          let vfsPath: string;\r\n          try {\r\n            vfsPath = decodeURIComponent(new URL(url).pathname);\r\n          } catch {\r\n            vfsPath = decodeURIComponent(url.slice(7));\r\n          }\r\n          const v = (globalThis as any).__nodepodVolume as MemoryVolume | undefined;\r\n          if (v) {\r\n            try {\r\n              const data = v.readFileSync(vfsPath);\r\n              const bytes =\r\n                data instanceof Uint8Array\r\n                  ? data\r\n                  : new TextEncoder().encode(String(data));\r\n              const contentType = vfsPath.endsWith(\".wasm\")\r\n                ? \"application/wasm\"\r\n                : \"application/octet-stream\";\r\n              return Promise.resolve(\r\n                new Response(bytes.buffer.slice(\r\n                  bytes.byteOffset,\r\n                  bytes.byteOffset + bytes.byteLength,\r\n                ) as ArrayBuffer, {\r\n                  status: 200,\r\n                  headers: { \"Content-Type\": contentType },\r\n                }),\r\n              );\r\n            } catch {\r\n              return Promise.resolve(\r\n                new Response(\"Not found\", { status: 404 }),\r\n              );\r\n            }\r\n          }\r\n        }\r\n        return origFetch(input, init);\r\n      };\r\n      (globalThis as any).fetch = Object.assign(patchedFetch, {\r\n        __nodepodPatched: true,\r\n      });\r\n    }\r\n\r\n    if (typeof globalThis.setImmediate === \"undefined\") {\r\n      (globalThis as any).setImmediate = (\r\n        fn: (...a: unknown[]) => void,\r\n        ...a: unknown[]\r\n      ) => setTimeout(fn, 0, ...a);\r\n      (globalThis as any).clearImmediate = (id: number) => clearTimeout(id);\r\n    }\r\n\r\n    // Browsers disallow sync WebAssembly.Module() for >8MB buffers — serve from cache\r\n    if (\r\n      typeof WebAssembly !== \"undefined\" &&\r\n      !(WebAssembly.Module as any).__nodepodPatched\r\n    ) {\r\n      const OrigModule = WebAssembly.Module;\r\n      const PatchedModule = function WebAssemblyModule(\r\n        this: any,\r\n        bytes: BufferSource,\r\n      ) {\r\n        const cached = getCachedModule(bytes);\r\n        if (cached) return cached;\r\n        try {\r\n          return new OrigModule(bytes);\r\n        } catch (e: any) {\r\n          if (\r\n            e &&\r\n            (e.message?.includes(\"disallowed on the main thread\") ||\r\n              e.message?.includes(\"buffer size is larger than\"))\r\n          ) {\r\n            const cached2 = getCachedModule(bytes);\r\n            if (cached2) return cached2;\r\n            const compilePromise = compileWasmInWorker(\r\n              bytes instanceof ArrayBuffer\r\n                ? new Uint8Array(bytes)\r\n                : (bytes as Uint8Array),\r\n            );\r\n            (globalThis as any).__wasmCompilePromise = compilePromise;\r\n          }\r\n          throw e;\r\n        }\r\n      } as any;\r\n      PatchedModule.prototype = OrigModule.prototype;\r\n      PatchedModule.__nodepodPatched = true;\r\n      PatchedModule.imports = OrigModule.imports?.bind(OrigModule);\r\n      PatchedModule.exports = OrigModule.exports?.bind(OrigModule);\r\n      PatchedModule.customSections =\r\n        OrigModule.customSections?.bind(OrigModule);\r\n      (globalThis as any).WebAssembly.Module = PatchedModule;\r\n    }\r\n\r\n    // Timers need .ref()/.unref() to match Node.js API\r\n    if (!(globalThis.setTimeout as any).__nodepodPatched) {\r\n      const origST = globalThis.setTimeout.bind(globalThis);\r\n      const origSI = globalThis.setInterval.bind(globalThis);\r\n      const origCT = globalThis.clearTimeout.bind(globalThis);\r\n      const origCI = globalThis.clearInterval.bind(globalThis);\r\n\r\n      const wrapTimeout = (id: ReturnType<typeof origST>) => {\r\n        const obj = {\r\n          _id: id,\r\n          _ref: true,\r\n          ref() {\r\n            obj._ref = true;\r\n            return obj;\r\n          },\r\n          unref() {\r\n            obj._ref = false;\r\n            return obj;\r\n          },\r\n          hasRef() {\r\n            return obj._ref;\r\n          },\r\n          refresh() {\r\n            return obj;\r\n          },\r\n          [Symbol.toPrimitive]() {\r\n            return id;\r\n          },\r\n        };\r\n        return obj;\r\n      };\r\n\r\n      const wrapInterval = (id: ReturnType<typeof origSI>) => {\r\n        const obj = {\r\n          _id: id,\r\n          _ref: true,\r\n          ref() {\r\n            obj._ref = true;\r\n            return obj;\r\n          },\r\n          unref() {\r\n            obj._ref = false;\r\n            return obj;\r\n          },\r\n          hasRef() {\r\n            return obj._ref;\r\n          },\r\n          refresh() {\r\n            return obj;\r\n          },\r\n          [Symbol.toPrimitive]() {\r\n            return id;\r\n          },\r\n        };\r\n        return obj;\r\n      };\r\n\r\n      (globalThis as any).setTimeout = Object.assign(\r\n        (...a: Parameters<typeof origST>) => wrapTimeout(origST(...a)),\r\n        { __nodepodPatched: true },\r\n      );\r\n      (globalThis as any).setInterval = Object.assign(\r\n        (...a: Parameters<typeof origSI>) => wrapInterval(origSI(...a)),\r\n        { __nodepodPatched: true },\r\n      );\r\n      (globalThis as any).clearTimeout = (t: any) => origCT(t?._id ?? t);\r\n      (globalThis as any).clearInterval = (t: any) => origCI(t?._id ?? t);\r\n    }\r\n\r\n    this.patchStackTraceApi();\r\n    this.patchTextDecoder();\r\n  }\r\n\r\n  private patchTextDecoder(): void {\r\n    const Original = globalThis.TextDecoder;\r\n\r\n    class ExtendedDecoder {\r\n      private enc: string;\r\n      private inner: TextDecoder | null = null;\r\n\r\n      constructor(encoding: string = \"utf-8\", options?: TextDecoderOptions) {\r\n        this.enc = encoding.toLowerCase();\r\n        const textEncodings = [\r\n          \"utf-8\",\r\n          \"utf8\",\r\n          \"utf-16le\",\r\n          \"utf-16be\",\r\n          \"utf-16\",\r\n          \"ascii\",\r\n          \"iso-8859-1\",\r\n          \"latin1\",\r\n          \"windows-1252\",\r\n        ];\r\n        if (textEncodings.includes(this.enc)) {\r\n          try {\r\n            this.inner = new Original(encoding, options);\r\n          } catch {\r\n            this.inner = new Original(\"utf-8\", options);\r\n          }\r\n        }\r\n      }\r\n\r\n      decode(input?: BufferSource, options?: TextDecodeOptions): string {\r\n        if (this.inner) return this.inner.decode(input, options);\r\n        if (!input) return \"\";\r\n        const bytes =\r\n          input instanceof ArrayBuffer\r\n            ? new Uint8Array(input)\r\n            : new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\r\n\r\n        if (this.enc === \"base64\") return bytesToBase64(bytes);\r\n        if (this.enc === \"base64url\")\r\n          return bytesToBase64(bytes)\r\n            .replace(/\\+/g, \"-\")\r\n            .replace(/\\//g, \"_\")\r\n            .replace(/=/g, \"\");\r\n        if (this.enc === \"hex\") return bytesToHex(bytes);\r\n        return new Original(\"utf-8\").decode(input, options);\r\n      }\r\n\r\n      get fatal(): boolean {\r\n        return this.inner?.fatal ?? false;\r\n      }\r\n      get ignoreBOM(): boolean {\r\n        return this.inner?.ignoreBOM ?? false;\r\n      }\r\n    }\r\n\r\n    globalThis.TextDecoder = ExtendedDecoder as unknown as typeof TextDecoder;\r\n  }\r\n\r\n  // Override even in Chrome — eval produces stack frames the native V8 API can't map to VFS paths\r\n  private patchStackTraceApi(): void {\r\n    if ((Error as any).stackTraceLimit === undefined)\r\n      (Error as any).stackTraceLimit = 10;\r\n\r\n    function parseFrames(stack: string) {\r\n      if (!stack) return [];\r\n      const frames: Array<{\r\n        fn: string;\r\n        file: string;\r\n        line: number;\r\n        col: number;\r\n      }> = [];\r\n      for (const raw of stack.split(\"\\n\")) {\r\n        const trimmed = raw.trim();\r\n        if (!trimmed) continue;\r\n        if (/^\\w*Error\\b/.test(trimmed) && !trimmed.startsWith(\"at \")) continue;\r\n\r\n        const safari = trimmed.match(/^(.*)@(.*?):(\\d+):(\\d+)$/);\r\n        if (safari) {\r\n          frames.push({\r\n            fn: safari[1] || \"\",\r\n            file: safari[2],\r\n            line: +safari[3],\r\n            col: +safari[4],\r\n          });\r\n          continue;\r\n        }\r\n\r\n        const chrome = trimmed.match(\r\n          /^at\\s+(?:(.+?)\\s+\\()?(.*?):(\\d+):(\\d+)\\)?$/,\r\n        );\r\n        if (chrome) {\r\n          frames.push({\r\n            fn: chrome[1] || \"\",\r\n            file: chrome[2],\r\n            line: +chrome[3],\r\n            col: +chrome[4],\r\n          });\r\n          continue;\r\n        }\r\n\r\n        const chromePlain = trimmed.match(/^at\\s+(?:(.+?)\\s+\\()?(.*?)\\)?$/);\r\n        if (chromePlain) {\r\n          frames.push({\r\n            fn: chromePlain[1] || \"\",\r\n            file: chromePlain[2] || \"<anonymous>\",\r\n            line: 0,\r\n            col: 0,\r\n          });\r\n        }\r\n      }\r\n      return frames;\r\n    }\r\n\r\n    function makeCallSite(f: {\r\n      fn: string;\r\n      file: string;\r\n      line: number;\r\n      col: number;\r\n    }) {\r\n      return {\r\n        getFileName: () => f.file || null,\r\n        getLineNumber: () => f.line || null,\r\n        getColumnNumber: () => f.col || null,\r\n        getFunctionName: () => f.fn || null,\r\n        getMethodName: () => f.fn || null,\r\n        getTypeName: () => null,\r\n        getThis: () => undefined,\r\n        getFunction: () => undefined,\r\n        getEvalOrigin: () => undefined,\r\n        isNative: () => false,\r\n        isConstructor: () => false,\r\n        isToplevel: () => !f.fn,\r\n        isEval: () => false,\r\n        toString: () =>\r\n          f.fn\r\n            ? `${f.fn} (${f.file}:${f.line}:${f.col})`\r\n            : `${f.file}:${f.line}:${f.col}`,\r\n      };\r\n    }\r\n\r\n    function buildSites(stack: string, ctorOpt?: Function) {\r\n      const frames = parseFrames(stack);\r\n      let start = 0;\r\n      if (ctorOpt?.name) {\r\n        for (let i = 0; i < frames.length; i++) {\r\n          if (frames[i].fn === ctorOpt.name) {\r\n            start = i + 1;\r\n            break;\r\n          }\r\n        }\r\n      }\r\n      return frames.slice(start).map(makeCallSite);\r\n    }\r\n\r\n    const sym = Symbol(\"rawStack\");\r\n    const symProcessed = Symbol(\"stackProcessed\");\r\n\r\n    const nativeCapture = (Error as any).captureStackTrace;\r\n\r\n    Object.defineProperty(Error.prototype, \"stack\", {\r\n      get() {\r\n        if ((this as any)[symProcessed]) return (this as any)[sym];\r\n        const raw = (this as any)[sym];\r\n        if (\r\n          typeof raw === \"string\" &&\r\n          typeof (Error as any).prepareStackTrace === \"function\"\r\n        ) {\r\n          try {\r\n            const sites = buildSites(raw);\r\n            if (sites.length > 0) {\r\n              return (Error as any).prepareStackTrace(this, sites);\r\n            }\r\n          } catch {\r\n            return raw;\r\n          }\r\n        }\r\n        return raw;\r\n      },\r\n      set(val: any) {\r\n        (this as any)[sym] = val;\r\n      },\r\n      configurable: true,\r\n      enumerable: false,\r\n    });\r\n\r\n    (Error as any).captureStackTrace = function (\r\n      target: any,\r\n      ctorOpt?: Function,\r\n    ) {\r\n      const saved = (Error as any).prepareStackTrace;\r\n      (Error as any).prepareStackTrace = undefined;\r\n\r\n      let raw: string;\r\n      if (nativeCapture) {\r\n        const tmp = {} as any;\r\n        nativeCapture(tmp);\r\n        raw = tmp.stack || \"\";\r\n      } else {\r\n        raw = new Error().stack || \"\";\r\n      }\r\n      (Error as any).prepareStackTrace = saved;\r\n\r\n      if (typeof saved === \"function\") {\r\n        try {\r\n          const result = saved(target, buildSites(raw, ctorOpt));\r\n          (target as any)[symProcessed] = true;\r\n          target.stack = result;\r\n        } catch {\r\n          target.stack = raw;\r\n        }\r\n      } else {\r\n        target.stack = raw;\r\n      }\r\n    };\r\n  }\r\n\r\n  execute(\r\n    code: string,\r\n    filename: string = \"/index.js\",\r\n  ): { exports: unknown; module: ModuleRecord } {\r\n    this._trimModuleCache();\r\n    const dir = pathPolyfill.dirname(filename);\r\n    // Only write when the content differs to avoid triggering file watchers\r\n    // (e.g. nodemon/chokidar) with a no-op write that causes restart loops.\r\n    try {\r\n      const existing = this.vol.readFileSync(filename, \"utf8\");\r\n      if (existing !== code) this.vol.writeFileSync(filename, code);\r\n    } catch {\r\n      this.vol.writeFileSync(filename, code);\r\n    }\r\n\r\n    const mod: ModuleRecord = {\r\n      id: filename,\r\n      filename,\r\n      exports: {},\r\n      loaded: false,\r\n      children: [],\r\n      paths: [],\r\n      parent: null,\r\n    };\r\n    this.moduleRegistry[filename] = mod;\r\n\r\n    const consoleProxy = wrapConsole(this.opts.onConsole);\r\n\r\n    let processed = code;\r\n    if (processed.startsWith(\"#!\"))\r\n      processed = processed.slice(processed.indexOf(\"\\n\") + 1);\r\n    if (isTypeScriptFile(filename)) {\r\n      processed = stripTypeScript(processed);\r\n    }\r\n    // Transform JSX/TSX syntax to React.createElement calls\r\n    if (needsJsxTransform(filename, processed)) {\r\n      processed = transformJsxSync(processed, filename);\r\n    }\r\n    if (filename.endsWith(\".cjs\")) {\r\n      try {\r\n        const cjsAst = acorn.parse(processed, {\r\n          ecmaVersion: \"latest\",\r\n          sourceType: \"script\",\r\n          allowImportExportEverywhere: true,\r\n        });\r\n        const cjsPatches: Array<[number, number, string]> = [];\r\n        const walkCjs = (node: any) => {\r\n          if (!node || typeof node !== \"object\") return;\r\n          if (Array.isArray(node)) {\r\n            for (const c of node) walkCjs(c);\r\n            return;\r\n          }\r\n          if (typeof node.type !== \"string\") return;\r\n          if (node.type === \"ImportExpression\") {\r\n            cjsPatches.push([node.start, node.start + 6, \"__asyncLoad\"]);\r\n          }\r\n          if (\r\n            node.type === \"MetaProperty\" &&\r\n            node.meta?.name === \"import\" &&\r\n            node.property?.name === \"meta\"\r\n          ) {\r\n            cjsPatches.push([\r\n              node.start,\r\n              node.end,\r\n              `({ url: \"file://${filename}\", dirname: \"${pathPolyfill.dirname(filename)}\", filename: \"${filename}\" })`,\r\n            ]);\r\n          }\r\n          for (const key of Object.keys(node)) {\r\n            if (key === \"type\" || key === \"start\" || key === \"end\") continue;\r\n            const val = node[key];\r\n            if (val && typeof val === \"object\") walkCjs(val);\r\n          }\r\n        };\r\n        walkCjs(cjsAst);\r\n        if (cjsPatches.length > 0) {\r\n          cjsPatches.sort((a, b) => b[0] - a[0]);\r\n          for (const [start, end, replacement] of cjsPatches) {\r\n            processed =\r\n              processed.slice(0, start) + replacement + processed.slice(end);\r\n          }\r\n        }\r\n      } catch {\r\n        /* can't parse */\r\n      }\r\n    } else {\r\n      processed = convertModuleSyntax(processed, filename);\r\n    }\r\n\r\n    const isCjs = filename.endsWith(\".cjs\");\r\n    const fileHasTLA = !isCjs && hasTopLevelAwait(processed);\r\n    if (!isCjs) processed = stripTopLevelAwait(processed);\r\n\r\n    const resolver = buildResolver(\r\n      this.vol,\r\n      this.fsBridge,\r\n      this.proc,\r\n      dir,\r\n      this.moduleRegistry,\r\n      this.opts,\r\n      this.transformCache,\r\n      fileHasTLA,\r\n    );\r\n    resolver._ownerRecord = mod;\r\n\r\n    try {\r\n      const metaUrl = \"file://\" + filename;\r\n      const wrapper = buildModuleWrapper(processed);\r\n\r\n      const asyncLoader = makeDynamicLoader(resolver);\r\n      let fn;\r\n      try {\r\n        fn = (0, eval)(wrapper);\r\n      } catch (syntaxErr) {\r\n        throw syntaxErr;\r\n      }\r\n\r\n      fn(\r\n        mod.exports,\r\n        resolver,\r\n        mod,\r\n        filename,\r\n        dir,\r\n        this.proc,\r\n        consoleProxy,\r\n        { url: metaUrl, dirname: dir, filename },\r\n        asyncLoader,\r\n        syncAwait,\r\n        SyncPromiseClass,\r\n      );\r\n\r\n      mod.loaded = true;\r\n    } catch (err) {\r\n      delete this.moduleRegistry[filename];\r\n      throw err;\r\n    }\r\n\r\n    return { exports: mod.exports, module: mod };\r\n  }\r\n\r\n  executeSync = this.execute;\r\n\r\n  async executeAsync(\r\n    code: string,\r\n    filename: string = \"/index.js\",\r\n  ): Promise<ExecutionOutcome> {\r\n    return Promise.resolve(this.execute(code, filename));\r\n  }\r\n\r\n  runFile(filename: string): { exports: unknown; module: ModuleRecord } {\r\n    const source = this.vol.readFileSync(filename, \"utf8\");\r\n    return this.execute(source, filename);\r\n  }\r\n\r\n  runFileSync = this.runFile;\r\n\r\n  // Wraps in async IIFE when TLA is detected, falls back to sync otherwise\r\n  async runFileTLA(\r\n    filename: string,\r\n  ): Promise<{ exports: unknown; module: ModuleRecord }> {\r\n    const source = this.vol.readFileSync(filename, \"utf8\");\r\n    const dir = pathPolyfill.dirname(filename);\r\n    // No need to write — source was just read from the same volume.\r\n    // Writing it back triggers file watchers (nodemon restart loops).\r\n\r\n    const mod: ModuleRecord = {\r\n      id: filename,\r\n      filename,\r\n      exports: {},\r\n      loaded: false,\r\n      children: [],\r\n      paths: [],\r\n      parent: null,\r\n    };\r\n    this.moduleRegistry[filename] = mod;\r\n\r\n    const consoleProxy = wrapConsole(this.opts.onConsole);\r\n\r\n    let processed = source as string;\r\n    if (processed.startsWith(\"#!\"))\r\n      processed = processed.slice(processed.indexOf(\"\\n\") + 1);\r\n    if (isTypeScriptFile(filename)) {\r\n      processed = stripTypeScript(processed);\r\n    }\r\n    // Transform JSX/TSX syntax to React.createElement calls\r\n    if (needsJsxTransform(filename, processed)) {\r\n      processed = transformJsxSync(processed, filename);\r\n    }\r\n    if (filename.endsWith(\".cjs\")) {\r\n      processed = rewriteDynamicImportsRegex(processed);\r\n      processed = processed.replace(\r\n        /\\bimport\\.meta\\.url\\b/g,\r\n        `\"file://${filename}\"`,\r\n      );\r\n      processed = processed.replace(\r\n        /\\bimport\\.meta\\b/g,\r\n        `({ url: \"file://${filename}\" })`,\r\n      );\r\n    } else {\r\n      processed = convertModuleSyntax(processed, filename);\r\n    }\r\n    const tla = hasTopLevelAwait(processed);\r\n    const tlaStripped = stripTopLevelAwait(processed);\r\n\r\n    // Don't propagate deAsyncImports from entry — it uses native await (async IIFE),\r\n    // so deps don't need de-async. loadModule handles individual TLA modules.\r\n    const resolver = buildResolver(\r\n      this.vol,\r\n      this.fsBridge,\r\n      this.proc,\r\n      dir,\r\n      this.moduleRegistry,\r\n      this.opts,\r\n      this.transformCache,\r\n      false,\r\n    );\r\n    resolver._ownerRecord = mod;\r\n\r\n    if (!tla) {\r\n      try {\r\n        processed = tlaStripped;\r\n        const wrapper = buildModuleWrapper(processed);\r\n        const asyncLoader = makeDynamicLoader(resolver);\r\n        const fn = (0, eval)(wrapper);\r\n\r\n        fn(\r\n          mod.exports,\r\n          resolver,\r\n          mod,\r\n          filename,\r\n          dir,\r\n          this.proc,\r\n          consoleProxy,\r\n          { url: \"file://\" + filename, dirname: dir, filename },\r\n          asyncLoader,\r\n          syncAwait,\r\n          SyncPromiseClass,\r\n        );\r\n        mod.loaded = true;\r\n      } catch (err) {\r\n        delete this.moduleRegistry[filename];\r\n        throw err;\r\n      }\r\n      return { exports: mod.exports, module: mod };\r\n    }\r\n\r\n    try {\r\n      const metaUrl = \"file://\" + filename;\r\n      const wrapper = buildModuleWrapper(processed, { async: true });\r\n      const asyncLoader = makeDynamicLoader(resolver);\r\n      const fn = (0, eval)(wrapper);\r\n      await fn(\r\n        mod.exports,\r\n        resolver,\r\n        mod,\r\n        filename,\r\n        dir,\r\n        this.proc,\r\n        consoleProxy,\r\n        { url: metaUrl, dirname: dir, filename },\r\n        asyncLoader,\r\n        syncAwait,\r\n        SyncPromiseClass,\r\n      );\r\n      mod.loaded = true;\r\n    } catch (err) {\r\n      delete this.moduleRegistry[filename];\r\n      throw err;\r\n    }\r\n    return { exports: mod.exports, module: mod };\r\n  }\r\n\r\n  async runFileAsync(filename: string): Promise<ExecutionOutcome> {\r\n    return Promise.resolve(this.runFile(filename));\r\n  }\r\n\r\n  clearCache(): void {\r\n    for (const k of Object.keys(this.moduleRegistry))\r\n      delete this.moduleRegistry[k];\r\n    // Also clear shared resolver/manifest caches\r\n    (this.moduleRegistry as any).__resolveCache?.clear();\r\n    (this.moduleRegistry as any).__manifestCache?.clear();\r\n    delete (this.moduleRegistry as any).__pkgIdentityMap;\r\n    this.transformCache.clear();\r\n  }\r\n\r\n  /** Evict one node_modules entry when module cache exceeds soft limit. */\r\n  private _trimModuleCache(): void {\r\n    const limit = this.opts.handler?.options.moduleSoftCacheSize ?? 512;\r\n    const keys = Object.keys(this.moduleRegistry);\r\n    if (keys.length < limit) return;\r\n    for (const k of keys) {\r\n      if (k.includes('/node_modules/')) {\r\n        delete this.moduleRegistry[k];\r\n        return; // One eviction per call — amortized O(1)\r\n      }\r\n    }\r\n  }\r\n\r\n  getVolume(): MemoryVolume {\r\n    return this.vol;\r\n  }\r\n  getProcess(): ProcessObject {\r\n    return this.proc;\r\n  }\r\n\r\n  createREPL(): { eval: (code: string) => unknown } {\r\n    const resolver = buildResolver(\r\n      this.vol,\r\n      this.fsBridge,\r\n      this.proc,\r\n      \"/\",\r\n      this.moduleRegistry,\r\n      this.opts,\r\n      this.transformCache,\r\n    );\r\n    const consoleProxy = wrapConsole(this.opts.onConsole);\r\n    const proc = this.proc;\r\n    const buf = bufferPolyfill.Buffer;\r\n\r\n    const GenFn = Object.getPrototypeOf(function* () {}).constructor;\r\n    const gen = new GenFn(\r\n      \"require\",\r\n      \"console\",\r\n      \"process\",\r\n      \"Buffer\",\r\n      `var __code, __result;\r\nwhile (true) {\r\n  __code = yield;\r\n  try {\r\n    __result = eval(__code);\r\n    yield { value: __result, error: null };\r\n  } catch (e) {\r\n    yield { value: undefined, error: e };\r\n  }\r\n}`,\r\n    )(resolver, consoleProxy, proc, buf);\r\n    gen.next();\r\n\r\n    return {\r\n      eval(code: string): unknown {\r\n        const normalized = code.replace(/^\\s*(const|let)\\s+/gm, \"var \");\r\n        const exprResult = gen.next(\"(\" + normalized + \")\").value as {\r\n          value: unknown;\r\n          error: unknown;\r\n        };\r\n        if (!exprResult.error) {\r\n          gen.next();\r\n          return exprResult.value;\r\n        }\r\n        gen.next();\r\n        const stmtResult = gen.next(normalized).value as {\r\n          value: unknown;\r\n          error: unknown;\r\n        };\r\n        if (stmtResult.error) {\r\n          gen.next();\r\n          throw stmtResult.error;\r\n        }\r\n        gen.next();\r\n        return stmtResult.value;\r\n      },\r\n    };\r\n  }\r\n}\r\n\r\nexport function executeCode(\r\n  code: string,\r\n  vol: MemoryVolume,\r\n  opts?: EngineOptions,\r\n): { exports: unknown; module: ModuleRecord } {\r\n  const engine = new ScriptEngine(vol, opts);\r\n  return engine.execute(code);\r\n}\r\n\r\nexport type {\r\n  IScriptEngine,\r\n  ExecutionOutcome,\r\n  EngineConfig,\r\n} from \"./engine-types\";\r\nexport default ScriptEngine;\r\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.\r\n// Tracks lifecycle, routes I/O, emits events for each spawned worker.\r\n\r\nimport { EventEmitter } from \"../polyfills/events\";\r\nimport type {\r\n  MainToWorkerMessage,\r\n  WorkerToMainMessage,\r\n  SpawnConfig,\r\n  MainToWorker_Init,\r\n  MainToWorker_Exec,\r\n} from \"./worker-protocol\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  ProcessHandle                                                      */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport type ProcessState = \"starting\" | \"running\" | \"exited\";\r\n\r\nexport class ProcessHandle extends EventEmitter {\r\n  readonly pid: number;\r\n  readonly worker: Worker;\r\n  readonly command: string;\r\n  readonly args: string[];\r\n  readonly parentPid?: number;\r\n\r\n  private _state: ProcessState = \"starting\";\r\n  private _exitCode: number | undefined;\r\n  private _stdout = \"\";\r\n  private _stderr = \"\";\r\n\r\n  // When > 0, \"exit\" is deferred — children still running, output keeps flowing\r\n  private _exitHoldCount = 0;\r\n  private _deferredExit: { exitCode: number; stdout: string; stderr: string } | null = null;\r\n\r\n  // Same deferral for \"shell-done\" in persistent mode\r\n  private _shellDoneHoldCount = 0;\r\n  private _deferredShellDone: { exitCode: number; stdout: string; stderr: string } | null = null;\r\n\r\n  // When > 0, worker is blocked on Atomics.wait() — stdin can't be delivered via postMessage\r\n  private _syncBlockedCount = 0;\r\n\r\n  get workerExited(): boolean { return this._deferredExit !== null || this._state === \"exited\"; }\r\n  get shellCommandDone(): boolean { return this._deferredShellDone !== null; }\r\n  get syncBlocked(): boolean { return this._syncBlockedCount > 0; }\r\n  holdSync(): void { this._syncBlockedCount++; }\r\n  releaseSync(): void { this._syncBlockedCount = Math.max(0, this._syncBlockedCount - 1); }\r\n\r\n  get stdout(): string { return this._stdout; }\r\n  get stderr(): string { return this._stderr; }\r\n\r\n  get state(): ProcessState { return this._state; }\r\n  get exitCode(): number | undefined { return this._exitCode; }\r\n\r\n  constructor(worker: Worker, config: SpawnConfig) {\r\n    super();\r\n    this.pid = config.snapshot ? Math.floor(Math.random() * 90000) + 10000 : 0; // will be set properly\r\n    this.worker = worker;\r\n    this.command = config.command;\r\n    this.args = config.args;\r\n    this.parentPid = config.parentPid;\r\n\r\n    this._setupWorkerListeners();\r\n  }\r\n\r\n  _setPid(pid: number): void {\r\n    (this as any).pid = pid;\r\n  }\r\n\r\n  postMessage(msg: MainToWorkerMessage, transfer?: Transferable[]): void {\r\n    this.worker.postMessage(msg, transfer ?? []);\r\n  }\r\n\r\n  init(initMsg: MainToWorker_Init): void {\r\n    const transfer: Transferable[] = [];\r\n    if (initMsg.snapshot.data.byteLength > 0) {\r\n      transfer.push(initMsg.snapshot.data);\r\n    }\r\n    this.postMessage(initMsg, transfer);\r\n  }\r\n\r\n  exec(execMsg: MainToWorker_Exec): void {\r\n    this.postMessage(execMsg);\r\n  }\r\n\r\n  sendStdin(data: string): void {\r\n    // Forward to children via ProcessManager\r\n    this.emit(\"stdin-forward\", data);\r\n\r\n    // Skip postMessage if blocked on Atomics.wait() or already exited\r\n    if (!this.workerExited && !this.syncBlocked) {\r\n      this.postMessage({ type: \"stdin\", data });\r\n    }\r\n  }\r\n\r\n  kill(signal: string = \"SIGTERM\"): void {\r\n    this.postMessage({ type: \"signal\", signal });\r\n    this.emit(\"signal\", signal);\r\n    if (signal === \"SIGKILL\") {\r\n      this._terminate(137);\r\n    }\r\n  }\r\n\r\n  resize(cols: number, rows: number): void {\r\n    this.postMessage({ type: \"resize\", cols, rows });\r\n  }\r\n\r\n  holdExit(): void {\r\n    this._exitHoldCount++;\r\n  }\r\n\r\n  releaseExit(): void {\r\n    this._exitHoldCount = Math.max(0, this._exitHoldCount - 1);\r\n    if (this._exitHoldCount === 0 && this._deferredExit) {\r\n      const { exitCode, stdout, stderr } = this._deferredExit;\r\n      this._deferredExit = null;\r\n      this._state = \"exited\";\r\n      this._exitCode = exitCode;\r\n      this.emit(\"exit\", exitCode, stdout, stderr);\r\n    }\r\n  }\r\n\r\n  holdShellDone(): void {\r\n    this._shellDoneHoldCount++;\r\n  }\r\n\r\n  releaseShellDone(): void {\r\n    this._shellDoneHoldCount = Math.max(0, this._shellDoneHoldCount - 1);\r\n    if (this._shellDoneHoldCount === 0 && this._deferredShellDone) {\r\n      const { exitCode, stdout, stderr } = this._deferredShellDone;\r\n      this._deferredShellDone = null;\r\n      this.emit(\"shell-done\", exitCode, stdout, stderr);\r\n    }\r\n  }\r\n\r\n  private _terminate(exitCode: number = 1): void {\r\n    if (this._state === \"exited\") return;\r\n    this._state = \"exited\";\r\n    this._exitCode = exitCode;\r\n    this._deferredExit = null;\r\n    this._exitHoldCount = 0;\r\n    try { this.worker.terminate(); } catch {\r\n      /* ignore */\r\n    }\r\n    this.emit(\"exit\", exitCode, this._stdout, this._stderr);\r\n  }\r\n\r\n  private _setupWorkerListeners(): void {\r\n    this.worker.addEventListener(\"message\", (ev: MessageEvent) => {\r\n      const msg = ev.data as WorkerToMainMessage;\r\n      if (!msg || !msg.type) return;\r\n\r\n      switch (msg.type) {\r\n        case \"ready\":\r\n          this._state = \"running\";\r\n          this.emit(\"ready\");\r\n          break;\r\n\r\n        case \"stdout\":\r\n          this._stdout += msg.data;\r\n          this.emit(\"stdout\", msg.data);\r\n          break;\r\n\r\n        case \"stderr\":\r\n          this._stderr += msg.data;\r\n          this.emit(\"stderr\", msg.data);\r\n          break;\r\n\r\n        case \"exit\": {\r\n          const stdout = msg.stdout || this._stdout;\r\n          const stderr = msg.stderr || this._stderr;\r\n          this._stdout = stdout;\r\n          this._stderr = stderr;\r\n          if (this._exitHoldCount > 0) {\r\n            // Children still running — defer exit, keep output flowing\r\n            this._deferredExit = { exitCode: msg.exitCode, stdout, stderr };\r\n            this.emit(\"worker-done\", msg.exitCode);\r\n          } else {\r\n            this._state = \"exited\";\r\n            this._exitCode = msg.exitCode;\r\n            this.emit(\"exit\", msg.exitCode, stdout, stderr);\r\n          }\r\n          break;\r\n        }\r\n\r\n        case \"console\":\r\n          this.emit(\"console\", msg.method, msg.args);\r\n          break;\r\n\r\n        case \"vfs-write\":\r\n          this.emit(\"vfs-write\", msg.path, msg.content, msg.isDirectory);\r\n          break;\r\n\r\n        case \"vfs-delete\":\r\n          this.emit(\"vfs-delete\", msg.path);\r\n          break;\r\n\r\n        case \"vfs-read\":\r\n          this.emit(\"vfs-read\", msg.requestId, msg.path);\r\n          break;\r\n\r\n        case \"spawn-request\":\r\n          this.emit(\"spawn-request\", msg);\r\n          break;\r\n\r\n        case \"fork-request\":\r\n          this.emit(\"fork-request\", msg);\r\n          break;\r\n\r\n        case \"workerthread-request\":\r\n          this.emit(\"workerthread-request\", msg);\r\n          break;\r\n\r\n        case \"ipc-message\":\r\n          this.emit(\"ipc-message\", msg);\r\n          break;\r\n\r\n        case \"spawn-sync\":\r\n          this.emit(\"spawn-sync\", msg);\r\n          break;\r\n\r\n        case \"server-listen\":\r\n          this.emit(\"server-listen\", msg.port, msg.hostname);\r\n          break;\r\n\r\n        case \"server-close\":\r\n          this.emit(\"server-close\", msg.port);\r\n          break;\r\n\r\n        case \"http-request\":\r\n          this.emit(\"http-request\", msg);\r\n          break;\r\n\r\n        case \"http-response\":\r\n          this.emit(\"http-response\", msg);\r\n          break;\r\n\r\n        case \"shell-done\": {\r\n          const sd = msg as any;\r\n          if (this._shellDoneHoldCount > 0) {\r\n            this._deferredShellDone = { exitCode: sd.exitCode, stdout: sd.stdout, stderr: sd.stderr };\r\n          } else {\r\n            this.emit(\"shell-done\", sd.exitCode, sd.stdout, sd.stderr);\r\n          }\r\n          break;\r\n        }\r\n\r\n        case \"cwd-change\":\r\n          this.emit(\"cwd-change\", msg.cwd);\r\n          break;\r\n\r\n        case \"stdin-raw-status\":\r\n          this.emit(\"stdin-raw-status\", msg.isRaw);\r\n          break;\r\n\r\n        case \"ws-frame\":\r\n          this.emit(\"ws-frame\", msg);\r\n          break;\r\n\r\n        case \"error\":\r\n          this.emit(\"worker-error\", msg.message, msg.stack);\r\n          break;\r\n\r\n        default:\r\n          break;\r\n      }\r\n    });\r\n\r\n    this.worker.addEventListener(\"error\", (ev: ErrorEvent) => {\r\n      this.emit(\"worker-error\", ev.message, undefined);\r\n      if (this._state !== \"exited\") {\r\n        this._terminate(1);\r\n      }\r\n    });\r\n  }\r\n}\r\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, 264 bytes:\r\n//   [0..3] flags  [4..7] contentOffset  [8..11] contentLength\r\n//   [12..15] modified  [16..263] null-terminated path\r\nconst ENTRY_SIZE = 264;\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_PATH_OFFSET = 16;\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: [0] version, [1] entry count, [2] data used, [3] lock\r\nconst HEADER_SIZE = 16;\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\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  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  }\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      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      const pathBytes = this._pathEncoder.encode(path);\r\n      const pathLen = Math.min(pathBytes.byteLength, ENTRY_PATH_MAX - 1);\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      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    } finally {\r\n      this._unlock();\r\n    }\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 (entryCount >= MAX_ENTRIES) return false;\r\n      if (this._findEntry(path) !== -1) return true;\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      const pathBytes = this._pathEncoder.encode(path);\r\n      const pathLen = Math.min(pathBytes.byteLength, ENTRY_PATH_MAX - 1);\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      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      this._view.setUint32(entryOffset + ENTRY_FLAGS_OFFSET, 0);\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  /* ---- Internal ---- */\r\n\r\n  private _findEntry(path: string): number {\r\n    const entryCount = Atomics.load(this._int32, 1);\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\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    // 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  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 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\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","// SyncChannel — true 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//\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//\r\n// Last Int32 at MAX_SLOTS * SLOT_SIZE is the atomic allocation counter.\r\nexport const SLOT_SIZE = 4096; // 4096 Int32 values = 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// --- SyncChannelController (main thread) ---\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    // Must be last — 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// --- SyncChannelWorker (worker thread) ---\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 prevents 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 thread 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    const decoder = new TextDecoder();\r\n    const dataOffset = (base + 3) * 4;\r\n    const stdoutBytes = this._uint8.slice(dataOffset, dataOffset + stdoutLen);\r\n    const stdout = decoder.decode(stdoutBytes);\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","// ProcessManager — main-thread process lifecycle manager.\r\n// Spawns Web Worker processes, routes I/O, handles VFS sync, tracks process tree.\r\n\r\nimport { EventEmitter } from \"../polyfills/events\";\r\nimport type { MemoryVolume } from \"../memory-volume\";\r\nimport { ProcessHandle } from \"./process-handle\";\r\nimport type {\r\n  SpawnConfig,\r\n  ProcessInfo,\r\n  MainToWorker_Init,\r\n  VFSBinarySnapshot,\r\n  WorkerToMain_SpawnRequest,\r\n  WorkerToMain_ForkRequest,\r\n  WorkerToMain_WorkerThreadRequest,\r\n  WorkerToMain_SpawnSync,\r\n  WorkerToMain_HttpResponse,\r\n} from \"./worker-protocol\";\r\nimport type { VFSBridge } from \"./vfs-bridge\";\r\nimport { PROCESS_WORKER_BUNDLE } from \"virtual:process-worker-bundle\";\r\nimport { SLOT_SIZE } from \"./sync-channel\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Constants                                                          */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst MAX_PROCESS_DEPTH = 10;\r\nconst MAX_PROCESSES = 50;\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  ProcessManager                                                     */\r\n/* ------------------------------------------------------------------ */\r\n\r\nexport class ProcessManager extends EventEmitter {\r\n  private _processes = new Map<number, ProcessHandle>();\r\n  private _nextPid = 100;\r\n  private _volume: MemoryVolume;\r\n  private _vfsBridge: VFSBridge | null = null;\r\n  private _sharedBuffer: SharedArrayBuffer | null = null;\r\n  private _syncBuffer: SharedArrayBuffer | null = null;\r\n\r\n  // port → owning PID\r\n  private _serverPorts = new Map<number, number>();\r\n  // parent PID → child PIDs (for exit deferral)\r\n  private _childPids = new Map<number, Set<number>>();\r\n  // pending HTTP request callbacks\r\n  private _httpCallbacks = new Map<number, (resp: WorkerToMain_HttpResponse) => void>();\r\n  private _nextHttpRequestId = 1;\r\n\r\n  constructor(volume: MemoryVolume) {\r\n    super();\r\n    this._volume = volume;\r\n  }\r\n\r\n  setVFSBridge(bridge: VFSBridge): void {\r\n    this._vfsBridge = bridge;\r\n  }\r\n\r\n  setSharedBuffer(buf: SharedArrayBuffer): void {\r\n    this._sharedBuffer = buf;\r\n  }\r\n\r\n  setSyncBuffer(buf: SharedArrayBuffer): void {\r\n    this._syncBuffer = buf;\r\n  }\r\n\r\n  spawn(config: {\r\n    command: string;\r\n    args?: string[];\r\n    cwd?: string;\r\n    env?: Record<string, string>;\r\n    parentPid?: number;\r\n  }): ProcessHandle {\r\n    if (this._processes.size >= MAX_PROCESSES) {\r\n      throw new Error(`Process limit exceeded (max ${MAX_PROCESSES})`);\r\n    }\r\n\r\n    if (config.parentPid !== undefined) {\r\n      let depth = 0;\r\n      let pid: number | undefined = config.parentPid;\r\n      while (pid !== undefined && depth < MAX_PROCESS_DEPTH) {\r\n        const parent = this._processes.get(pid);\r\n        pid = parent?.parentPid;\r\n        depth++;\r\n      }\r\n      if (depth >= MAX_PROCESS_DEPTH) {\r\n        throw new Error(`Process tree depth limit exceeded (max ${MAX_PROCESS_DEPTH})`);\r\n      }\r\n    }\r\n\r\n    const pid = this._nextPid++;\r\n\r\n    const snapshot = this._vfsBridge\r\n      ? this._vfsBridge.createSnapshot()\r\n      : this._createEmptySnapshot();\r\n\r\n    const spawnConfig: SpawnConfig = {\r\n      command: config.command,\r\n      args: config.args ?? [],\r\n      cwd: config.cwd ?? \"/\",\r\n      env: config.env ?? {},\r\n      snapshot,\r\n      sharedBuffer: this._sharedBuffer ?? undefined,\r\n      syncBuffer: this._syncBuffer ?? undefined,\r\n      parentPid: config.parentPid,\r\n    };\r\n\r\n    const worker = this._createWorker();\r\n    const handle = new ProcessHandle(worker, spawnConfig);\r\n    handle._setPid(pid);\r\n\r\n    this._processes.set(pid, handle);\r\n    this._wireHandleEvents(handle);\r\n\r\n    const initMsg: MainToWorker_Init = {\r\n      type: \"init\",\r\n      pid,\r\n      cwd: spawnConfig.cwd,\r\n      env: spawnConfig.env,\r\n      snapshot: spawnConfig.snapshot,\r\n      sharedBuffer: spawnConfig.sharedBuffer,\r\n      syncBuffer: spawnConfig.syncBuffer,\r\n    };\r\n    handle.init(initMsg);\r\n\r\n    this.emit(\"spawn\", pid, config.command, config.args);\r\n    return handle;\r\n  }\r\n\r\n  getProcess(pid: number): ProcessHandle | undefined {\r\n    return this._processes.get(pid);\r\n  }\r\n\r\n  listProcesses(): ProcessInfo[] {\r\n    const result: ProcessInfo[] = [];\r\n    for (const [pid, handle] of this._processes) {\r\n      result.push({\r\n        pid,\r\n        command: handle.command,\r\n        args: handle.args,\r\n        state: handle.state,\r\n        exitCode: handle.exitCode,\r\n        parentPid: handle.parentPid,\r\n      });\r\n    }\r\n    return result;\r\n  }\r\n\r\n  // Kills process and ALL descendants recursively, cleans up server ports\r\n  kill(pid: number, signal: string = \"SIGTERM\"): boolean {\r\n    const handle = this._processes.get(pid);\r\n    if (!handle) return false;\r\n    handle.kill(signal);\r\n    this._killDescendants(pid, signal);\r\n    this._cleanupServerPorts(pid);\r\n    return true;\r\n  }\r\n\r\n  private _cleanupServerPorts(pid: number): void {\r\n    for (const [port, ownerPid] of this._serverPorts) {\r\n      if (ownerPid === pid) {\r\n        this._serverPorts.delete(port);\r\n        this.emit(\"server-close\", pid, port);\r\n      }\r\n    }\r\n    const children = this._childPids.get(pid);\r\n    if (children) {\r\n      for (const childPid of children) {\r\n        this._cleanupServerPorts(childPid);\r\n      }\r\n    }\r\n  }\r\n\r\n  private _killDescendants(pid: number, signal: string): void {\r\n    const children = this._childPids.get(pid);\r\n    if (!children) return;\r\n    for (const childPid of children) {\r\n      const childHandle = this._processes.get(childPid);\r\n      if (childHandle && childHandle.state !== \"exited\") {\r\n        childHandle.kill(signal);\r\n        // Prevent stale output from dying workers leaking into the terminal\r\n        childHandle.removeAllListeners(\"stdout\");\r\n        childHandle.removeAllListeners(\"stderr\");\r\n      }\r\n      this._killDescendants(childPid, signal);\r\n    }\r\n  }\r\n\r\n  teardown(): void {\r\n    for (const [pid, handle] of this._processes) {\r\n      try { handle.kill(\"SIGKILL\"); } catch {\r\n        /* ignore */\r\n      }\r\n    }\r\n    this._processes.clear();\r\n  }\r\n\r\n  get processCount(): number {\r\n    return this._processes.size;\r\n  }\r\n\r\n  registerServerPort(port: number, pid: number): void {\r\n    this._serverPorts.set(port, pid);\r\n  }\r\n\r\n  unregisterServerPort(port: number): void {\r\n    this._serverPorts.delete(port);\r\n  }\r\n\r\n  getServerPorts(): number[] {\r\n    return [...this._serverPorts.keys()];\r\n  }\r\n\r\n  // Dispatch HTTP request to the worker owning the port\r\n  dispatchHttpRequest(\r\n    port: number,\r\n    method: string,\r\n    path: string,\r\n    headers: Record<string, string>,\r\n    body?: string | null,\r\n  ): Promise<{ statusCode: number; statusMessage: string; headers: Record<string, string>; body: string | ArrayBuffer }> {\r\n    const pid = this._serverPorts.get(port);\r\n    if (pid === undefined) {\r\n      return Promise.resolve({\r\n        statusCode: 503,\r\n        statusMessage: \"Service Unavailable\",\r\n        headers: { \"Content-Type\": \"text/plain\" },\r\n        body: `No server on port ${port}`,\r\n      });\r\n    }\r\n\r\n    const handle = this._processes.get(pid);\r\n    if (!handle || handle.state === \"exited\") {\r\n      this._serverPorts.delete(port);\r\n      return Promise.resolve({\r\n        statusCode: 503,\r\n        statusMessage: \"Service Unavailable\",\r\n        headers: { \"Content-Type\": \"text/plain\" },\r\n        body: `Server process exited (pid ${pid})`,\r\n      });\r\n    }\r\n\r\n    const requestId = this._nextHttpRequestId++;\r\n    // console.log(`[PM] dispatchHttpRequest #${requestId} ${method} ${path} → pid ${pid}`);\r\n    return new Promise((resolve) => {\r\n      this._httpCallbacks.set(requestId, (resp) => {\r\n        this._httpCallbacks.delete(requestId);\r\n        // console.log(`[PM] http-response #${requestId} status=${resp.statusCode}`);\r\n        resolve({\r\n          statusCode: resp.statusCode,\r\n          statusMessage: resp.statusMessage,\r\n          headers: resp.headers,\r\n          body: resp.body,\r\n        });\r\n      });\r\n\r\n      handle.postMessage({\r\n        type: \"http-request\",\r\n        requestId,\r\n        port,\r\n        method,\r\n        path,\r\n        headers,\r\n        body: body ?? null,\r\n      });\r\n    });\r\n  }\r\n\r\n  // Returns owning PID, or -1 if no server found\r\n  dispatchWsUpgrade(\r\n    port: number,\r\n    uid: string,\r\n    path: string,\r\n    headers: Record<string, string>,\r\n  ): number {\r\n    const pid = this._serverPorts.get(port);\r\n    if (pid === undefined) return -1;\r\n\r\n    const handle = this._processes.get(pid);\r\n    if (!handle || handle.state === \"exited\") {\r\n      this._serverPorts.delete(port);\r\n      return -1;\r\n    }\r\n\r\n    handle.postMessage({ type: \"ws-upgrade\", uid, port, path, headers });\r\n    return pid;\r\n  }\r\n\r\n  dispatchWsData(pid: number, uid: string, frame: number[]): void {\r\n    const handle = this._processes.get(pid);\r\n    if (!handle || handle.state === \"exited\") return;\r\n    handle.postMessage({ type: \"ws-data\", uid, frame });\r\n  }\r\n\r\n  dispatchWsClose(pid: number, uid: string, code: number): void {\r\n    const handle = this._processes.get(pid);\r\n    if (!handle || handle.state === \"exited\") return;\r\n    handle.postMessage({ type: \"ws-close\", uid, code });\r\n  }\r\n\r\n  /* ---- Internal ---- */\r\n\r\n  private static _workerBlobUrl: string | null = null;\r\n\r\n  private _createWorker(): Worker {\r\n    // Blob URL from pre-bundled source — works in any environment\r\n    if (!ProcessManager._workerBlobUrl) {\r\n      const blob = new Blob([PROCESS_WORKER_BUNDLE], { type: \"application/javascript\" });\r\n      ProcessManager._workerBlobUrl = URL.createObjectURL(blob);\r\n    }\r\n    return new Worker(ProcessManager._workerBlobUrl);\r\n  }\r\n\r\n  private _wireHandleEvents(handle: ProcessHandle): void {\r\n    // Forward signals to all descendants (handles both running and exited parent)\r\n    handle.on(\"signal\", (signal: string) => {\r\n      this._killDescendants(handle.pid, signal);\r\n    });\r\n\r\n    // Forward stdin to children (even if parent is blocked on Atomics.wait)\r\n    handle.on(\"stdin-forward\", (data: string) => {\r\n      const children = this._childPids.get(handle.pid);\r\n      if (children) {\r\n        for (const childPid of children) {\r\n          const childHandle = this._processes.get(childPid);\r\n          if (childHandle && childHandle.state !== \"exited\") {\r\n            childHandle.sendStdin(data);\r\n          }\r\n        }\r\n      }\r\n    });\r\n\r\n    handle.on(\"exit\", (exitCode: number) => {\r\n      for (const [port, pid] of this._serverPorts) {\r\n        if (pid === handle.pid) {\r\n          this._serverPorts.delete(port);\r\n          this.emit(\"server-close\", handle.pid, port);\r\n        }\r\n      }\r\n      // Clean up any pending HTTP callbacks for this worker to prevent leaks\r\n      for (const [reqId, cb] of this._httpCallbacks) {\r\n        cb({\r\n          type: \"http-response\",\r\n          requestId: reqId,\r\n          statusCode: 503,\r\n          statusMessage: \"Worker Exited\",\r\n          headers: {},\r\n          body: \"Worker process exited before completing the request\",\r\n        } as WorkerToMain_HttpResponse);\r\n      }\r\n      this.emit(\"exit\", handle.pid, exitCode);\r\n      // Delay removal so event handlers finish\r\n      setTimeout(() => {\r\n        this._processes.delete(handle.pid);\r\n      }, 100);\r\n    });\r\n\r\n    handle.on(\"vfs-write\", (path: string, content: ArrayBuffer, isDirectory: boolean) => {\r\n      if (this._vfsBridge) {\r\n        if (isDirectory) {\r\n          this._vfsBridge.handleWorkerMkdir(path);\r\n        } else {\r\n          this._vfsBridge.handleWorkerWrite(path, new Uint8Array(content));\r\n        }\r\n        this._vfsBridge.broadcastChange(path, content, handle.pid);\r\n      }\r\n    });\r\n\r\n    handle.on(\"vfs-delete\", (path: string) => {\r\n      if (this._vfsBridge) {\r\n        this._vfsBridge.handleWorkerDelete(path);\r\n        this._vfsBridge.broadcastChange(path, null, handle.pid);\r\n      }\r\n    });\r\n\r\n    handle.on(\"vfs-read\", (requestId: number, path: string) => {\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            handle.postMessage({\r\n              type: \"vfs-sync\",\r\n              path,\r\n              content: null,\r\n              isDirectory: true,\r\n            });\r\n          } else {\r\n            const data = this._volume.readFileSync(path);\r\n            const buffer = (data.buffer as ArrayBuffer).slice(\r\n              data.byteOffset,\r\n              data.byteOffset + data.byteLength,\r\n            );\r\n            handle.postMessage({\r\n              type: \"vfs-sync\",\r\n              path,\r\n              content: buffer,\r\n              isDirectory: false,\r\n            }, [buffer]);\r\n          }\r\n        } else {\r\n          handle.postMessage({\r\n            type: \"vfs-sync\",\r\n            path,\r\n            content: null,\r\n            isDirectory: false,\r\n          });\r\n        }\r\n      } catch {\r\n        // Send null so worker doesn't hang\r\n        try {\r\n          handle.postMessage({\r\n            type: \"vfs-sync\",\r\n            path,\r\n            content: null,\r\n            isDirectory: false,\r\n          });\r\n        } catch { /* worker may have died */ }\r\n      }\r\n    });\r\n\r\n    handle.on(\"spawn-request\", (msg: WorkerToMain_SpawnRequest) => {\r\n      const fullCmd = msg.args.length ? `${msg.command} ${msg.args.join(\" \")}` : msg.command;\r\n      try {\r\n        const childHandle = this.spawn({\r\n          command: msg.command,\r\n          args: msg.args,\r\n          cwd: msg.cwd,\r\n          env: msg.env,\r\n          parentPid: handle.pid,\r\n        });\r\n\r\n        if (!this._childPids.has(handle.pid)) {\r\n          this._childPids.set(handle.pid, new Set());\r\n        }\r\n        this._childPids.get(handle.pid)!.add(childHandle.pid);\r\n\r\n        // Defer parent exit/done until child finishes (e.g. create-vite -> vite dev)\r\n        handle.holdExit();\r\n        handle.holdShellDone();\r\n\r\n        handle.postMessage({\r\n          type: \"spawn-result\",\r\n          requestId: msg.requestId,\r\n          pid: childHandle.pid,\r\n        });\r\n\r\n        // Detect bare node commands and send as direct execution\r\n        const isNodeBin = /(?:^|\\/)node$/.test(msg.command);\r\n        const sendExec = () => {\r\n          if (isNodeBin && msg.args.length > 0) {\r\n            childHandle.exec({\r\n              type: \"exec\",\r\n              filePath: msg.args[0],\r\n              args: msg.args.slice(1),\r\n              cwd: msg.cwd,\r\n              env: msg.env,\r\n              isShell: false,\r\n            });\r\n          } else {\r\n            childHandle.exec({\r\n              type: \"exec\",\r\n              filePath: \"\",\r\n              args: msg.args,\r\n              cwd: msg.cwd,\r\n              env: msg.env,\r\n              isShell: true,\r\n              shellCommand: fullCmd,\r\n            });\r\n          }\r\n        };\r\n\r\n        if (childHandle.state === \"running\") {\r\n          sendExec();\r\n        } else {\r\n          childHandle.on(\"ready\", sendExec);\r\n        }\r\n\r\n        // Relay child output: direct emit if parent done, postMessage if still running\r\n        childHandle.on(\"stdout\", (data: string) => {\r\n          if (handle.workerExited || handle.shellCommandDone) {\r\n            handle.emit(\"stdout\", data);\r\n          } else {\r\n            handle.postMessage({\r\n              type: \"child-output\",\r\n              requestId: msg.requestId,\r\n              stream: \"stdout\",\r\n              data,\r\n            });\r\n          }\r\n        });\r\n        childHandle.on(\"stderr\", (data: string) => {\r\n          if (handle.workerExited || handle.shellCommandDone) {\r\n            handle.emit(\"stderr\", data);\r\n          } else {\r\n            handle.postMessage({\r\n              type: \"child-output\",\r\n              requestId: msg.requestId,\r\n              stream: \"stderr\",\r\n              data,\r\n            });\r\n          }\r\n        });\r\n\r\n        childHandle.on(\"stdin-raw-status\", (isRaw: boolean) => {\r\n          handle.emit(\"stdin-raw-status\", isRaw);\r\n        });\r\n\r\n        childHandle.on(\"exit\", (exitCode: number) => {\r\n          if (!handle.workerExited) {\r\n            handle.postMessage({\r\n              type: \"child-exit\",\r\n              requestId: msg.requestId,\r\n              exitCode,\r\n              stdout: childHandle.stdout,\r\n              stderr: childHandle.stderr,\r\n            });\r\n          }\r\n          const children = this._childPids.get(handle.pid);\r\n          if (children) {\r\n            children.delete(childHandle.pid);\r\n            if (children.size === 0) this._childPids.delete(handle.pid);\r\n          }\r\n          handle.releaseExit();\r\n          handle.releaseShellDone();\r\n        });\r\n      } catch (e) {\r\n        handle.postMessage({\r\n          type: \"spawn-result\",\r\n          requestId: msg.requestId,\r\n          pid: -1,\r\n          error: e instanceof Error ? e.message : String(e),\r\n        });\r\n      }\r\n    });\r\n\r\n    handle.on(\"fork-request\", (msg: WorkerToMain_ForkRequest) => {\r\n      try {\r\n        const childHandle = this.spawn({\r\n          command: \"node\",\r\n          args: [msg.modulePath, ...msg.args],\r\n          cwd: msg.cwd,\r\n          env: msg.env,\r\n          parentPid: handle.pid,\r\n        });\r\n\r\n        if (!this._childPids.has(handle.pid)) {\r\n          this._childPids.set(handle.pid, new Set());\r\n        }\r\n        this._childPids.get(handle.pid)!.add(childHandle.pid);\r\n        handle.holdExit();\r\n        handle.holdShellDone();\r\n\r\n        handle.postMessage({\r\n          type: \"spawn-result\",\r\n          requestId: msg.requestId,\r\n          pid: childHandle.pid,\r\n        });\r\n\r\n        const sendExec = () => {\r\n          childHandle.exec({\r\n            type: \"exec\",\r\n            filePath: msg.modulePath,\r\n            args: msg.args,\r\n            cwd: msg.cwd,\r\n            env: msg.env,\r\n            isShell: false,\r\n            isFork: true,\r\n          });\r\n        };\r\n\r\n        if (childHandle.state === \"running\") {\r\n          sendExec();\r\n        } else {\r\n          childHandle.on(\"ready\", sendExec);\r\n        }\r\n\r\n        childHandle.on(\"stdout\", (data: string) => {\r\n          if (handle.workerExited || handle.shellCommandDone) {\r\n            handle.emit(\"stdout\", data);\r\n          } else {\r\n            handle.postMessage({\r\n              type: \"child-output\",\r\n              requestId: msg.requestId,\r\n              stream: \"stdout\",\r\n              data,\r\n            });\r\n          }\r\n        });\r\n        childHandle.on(\"stderr\", (data: string) => {\r\n          if (handle.workerExited || handle.shellCommandDone) {\r\n            handle.emit(\"stderr\", data);\r\n          } else {\r\n            handle.postMessage({\r\n              type: \"child-output\",\r\n              requestId: msg.requestId,\r\n              stream: \"stderr\",\r\n              data,\r\n            });\r\n          }\r\n        });\r\n\r\n        // IPC: child -> parent\r\n        childHandle.on(\"ipc-message\", (ipcMsg: any) => {\r\n          const payload = ipcMsg?.data ?? ipcMsg;\r\n          if (!handle.workerExited) {\r\n            handle.postMessage({\r\n              type: \"ipc-message\",\r\n              targetRequestId: msg.requestId,\r\n              data: payload,\r\n            } as any);\r\n          }\r\n        });\r\n\r\n        // IPC: parent -> child\r\n        handle.on(\"ipc-message\", (ipcMsg: any) => {\r\n          if (ipcMsg.targetRequestId === msg.requestId) {\r\n            childHandle.postMessage({\r\n              type: \"ipc-message\",\r\n              data: ipcMsg.data,\r\n            });\r\n          }\r\n        });\r\n\r\n        childHandle.on(\"exit\", (exitCode: number) => {\r\n          if (!handle.workerExited) {\r\n            handle.postMessage({\r\n              type: \"child-exit\",\r\n              requestId: msg.requestId,\r\n              exitCode,\r\n              stdout: childHandle.stdout,\r\n              stderr: childHandle.stderr,\r\n            });\r\n          }\r\n          const children = this._childPids.get(handle.pid);\r\n          if (children) {\r\n            children.delete(childHandle.pid);\r\n            if (children.size === 0) this._childPids.delete(handle.pid);\r\n          }\r\n          handle.releaseExit();\r\n          handle.releaseShellDone();\r\n        });\r\n      } catch (e) {\r\n        handle.postMessage({\r\n          type: \"spawn-result\",\r\n          requestId: msg.requestId,\r\n          pid: -1,\r\n          error: e instanceof Error ? e.message : String(e),\r\n        });\r\n      }\r\n    });\r\n\r\n    handle.on(\"workerthread-request\", (msg: WorkerToMain_WorkerThreadRequest) => {\r\n      try {\r\n        let modulePath = msg.modulePath;\r\n        // eval mode: write code to temp VFS file\r\n        if (msg.isEval) {\r\n          const evalPath = `/__wt_eval_${msg.threadId}__.js`;\r\n          this._volume.writeFileSync(evalPath, msg.modulePath);\r\n          modulePath = evalPath;\r\n          if (this._vfsBridge) {\r\n            const encoder = new TextEncoder();\r\n            const content = encoder.encode(msg.modulePath).buffer as ArrayBuffer;\r\n            this._vfsBridge.handleWorkerWrite(evalPath, new Uint8Array(content));\r\n            this._vfsBridge.broadcastChange(evalPath, content, handle.pid);\r\n          }\r\n        }\r\n\r\n        const childHandle = this.spawn({\r\n          command: \"node\",\r\n          args: [modulePath],\r\n          cwd: msg.cwd,\r\n          env: msg.env,\r\n          parentPid: handle.pid,\r\n        });\r\n\r\n        if (!this._childPids.has(handle.pid)) {\r\n          this._childPids.set(handle.pid, new Set());\r\n        }\r\n        this._childPids.get(handle.pid)!.add(childHandle.pid);\r\n        handle.holdExit();\r\n        handle.holdShellDone();\r\n\r\n        handle.postMessage({\r\n          type: \"spawn-result\",\r\n          requestId: msg.requestId,\r\n          pid: childHandle.pid,\r\n        });\r\n\r\n        const sendExec = () => {\r\n          childHandle.exec({\r\n            type: \"exec\",\r\n            filePath: modulePath,\r\n            args: msg.args || [],\r\n            cwd: msg.cwd,\r\n            env: msg.env,\r\n            isShell: false,\r\n            isFork: true,\r\n            isWorkerThread: true,\r\n            workerData: msg.workerData,\r\n            threadId: msg.threadId,\r\n          });\r\n        };\r\n\r\n        if (childHandle.state === \"running\") {\r\n          sendExec();\r\n        } else {\r\n          childHandle.on(\"ready\", sendExec);\r\n        }\r\n\r\n        childHandle.on(\"stdout\", (data: string) => {\r\n          if (handle.workerExited || handle.shellCommandDone) {\r\n            handle.emit(\"stdout\", data);\r\n          } else {\r\n            handle.postMessage({\r\n              type: \"child-output\",\r\n              requestId: msg.requestId,\r\n              stream: \"stdout\",\r\n              data,\r\n            });\r\n          }\r\n        });\r\n        childHandle.on(\"stderr\", (data: string) => {\r\n          if (handle.workerExited || handle.shellCommandDone) {\r\n            handle.emit(\"stderr\", data);\r\n          } else {\r\n            handle.postMessage({\r\n              type: \"child-output\",\r\n              requestId: msg.requestId,\r\n              stream: \"stderr\",\r\n              data,\r\n            });\r\n          }\r\n        });\r\n\r\n        childHandle.on(\"ipc-message\", (ipcMsg: any) => {\r\n          const payload = ipcMsg?.data ?? ipcMsg;\r\n          if (!handle.workerExited) {\r\n            handle.postMessage({\r\n              type: \"ipc-message\",\r\n              targetRequestId: msg.requestId,\r\n              data: payload,\r\n            } as any);\r\n          }\r\n        });\r\n\r\n        handle.on(\"ipc-message\", (ipcMsg: any) => {\r\n          if (ipcMsg.targetRequestId === msg.requestId) {\r\n            childHandle.postMessage({\r\n              type: \"ipc-message\",\r\n              data: ipcMsg.data,\r\n            });\r\n          }\r\n        });\r\n\r\n        childHandle.on(\"exit\", (exitCode: number) => {\r\n          if (msg.isEval) {\r\n            try {\r\n              this._volume.unlinkSync(`/__wt_eval_${msg.threadId}__.js`);\r\n            } catch {\r\n              /* ignore */\r\n            }\r\n          }\r\n\r\n          if (!handle.workerExited) {\r\n            handle.postMessage({\r\n              type: \"child-exit\",\r\n              requestId: msg.requestId,\r\n              exitCode,\r\n              stdout: childHandle.stdout,\r\n              stderr: childHandle.stderr,\r\n            });\r\n          }\r\n          const children = this._childPids.get(handle.pid);\r\n          if (children) {\r\n            children.delete(childHandle.pid);\r\n            if (children.size === 0) this._childPids.delete(handle.pid);\r\n          }\r\n          handle.releaseExit();\r\n          handle.releaseShellDone();\r\n        });\r\n      } catch (e) {\r\n        handle.postMessage({\r\n          type: \"spawn-result\",\r\n          requestId: msg.requestId,\r\n          pid: -1,\r\n          error: e instanceof Error ? e.message : String(e),\r\n        });\r\n      }\r\n    });\r\n\r\n    handle.on(\"spawn-sync\", (msg: WorkerToMain_SpawnSync) => {\r\n      if (!this._syncBuffer) {\r\n        return;\r\n      }\r\n\r\n      const fullCmd = msg.shellCommand ??\r\n        (msg.args.length ? `${msg.command} ${msg.args.join(\" \")}` : msg.command);\r\n      const maxStdoutLen = (SLOT_SIZE - 3) * 4;\r\n\r\n      const signalError = (exitCode: number) => {\r\n        try {\r\n          const int32 = new Int32Array(this._syncBuffer!);\r\n          const slotBase = msg.syncSlot * SLOT_SIZE;\r\n          Atomics.store(int32, slotBase + 1, exitCode);\r\n          Atomics.store(int32, slotBase + 2, 0);\r\n          Atomics.store(int32, slotBase, 2); // STATUS_ERROR\r\n          Atomics.notify(int32, slotBase);\r\n        } catch {\r\n          // Buffer unusable — worker will time out\r\n        }\r\n      };\r\n\r\n      try {\r\n        const childHandle = this.spawn({\r\n          command: msg.command,\r\n          args: msg.args,\r\n          cwd: msg.cwd,\r\n          env: msg.env,\r\n          parentPid: handle.pid,\r\n        });\r\n\r\n        // Must track for Ctrl+C signal propagation via _killDescendants\r\n        if (!this._childPids.has(handle.pid)) {\r\n          this._childPids.set(handle.pid, new Set());\r\n        }\r\n        this._childPids.get(handle.pid)!.add(childHandle.pid);\r\n\r\n        handle.holdExit();\r\n        handle.holdShellDone();\r\n        handle.holdSync(); // parent is blocked on Atomics.wait — stdin must bypass\r\n\r\n        const sendExec = () => {\r\n          childHandle.exec({\r\n            type: \"exec\",\r\n            filePath: \"\",\r\n            args: msg.args,\r\n            cwd: msg.cwd,\r\n            env: msg.env,\r\n            isShell: true,\r\n            shellCommand: fullCmd,\r\n          });\r\n        };\r\n\r\n        if (childHandle.state === \"running\") {\r\n          sendExec();\r\n        } else {\r\n          childHandle.on(\"ready\", sendExec);\r\n        }\r\n\r\n        // Parent is blocked on Atomics.wait — can't process postMessage, emit directly\r\n        childHandle.on(\"stdout\", (data: string) => {\r\n          handle.emit(\"stdout\", data);\r\n        });\r\n        childHandle.on(\"stderr\", (data: string) => {\r\n          handle.emit(\"stderr\", data);\r\n        });\r\n\r\n        childHandle.on(\"stdin-raw-status\", (isRaw: boolean) => {\r\n          handle.emit(\"stdin-raw-status\", isRaw);\r\n        });\r\n\r\n        childHandle.on(\"exit\", (exitCode: number) => {\r\n          try {\r\n            const int32 = new Int32Array(this._syncBuffer!);\r\n            const encoder = new TextEncoder();\r\n            const slotBase = msg.syncSlot * SLOT_SIZE;\r\n            const stdoutBytes = encoder.encode(childHandle.stdout);\r\n            const truncatedLen = Math.min(stdoutBytes.byteLength, maxStdoutLen);\r\n\r\n            Atomics.store(int32, slotBase + 1, exitCode);\r\n            Atomics.store(int32, slotBase + 2, truncatedLen);\r\n\r\n            const uint8 = new Uint8Array(this._syncBuffer!);\r\n            const dataOffset = (slotBase + 3) * 4;\r\n            uint8.set(stdoutBytes.subarray(0, truncatedLen), dataOffset);\r\n\r\n            // Must be last — wakes the waiting worker\r\n            Atomics.store(int32, slotBase, 1);\r\n            Atomics.notify(int32, slotBase);\r\n          } catch {\r\n            signalError(1);\r\n          }\r\n\r\n          const children = this._childPids.get(handle.pid);\r\n          if (children) {\r\n            children.delete(childHandle.pid);\r\n            if (children.size === 0) this._childPids.delete(handle.pid);\r\n          }\r\n\r\n          handle.releaseSync();\r\n          handle.releaseExit();\r\n          handle.releaseShellDone();\r\n        });\r\n\r\n        childHandle.on(\"worker-error\", () => {\r\n          signalError(1);\r\n          const children = this._childPids.get(handle.pid);\r\n          if (children) {\r\n            children.delete(childHandle.pid);\r\n            if (children.size === 0) this._childPids.delete(handle.pid);\r\n          }\r\n          handle.releaseSync();\r\n          handle.releaseExit();\r\n          handle.releaseShellDone();\r\n        });\r\n      } catch {\r\n        signalError(1);\r\n      }\r\n    });\r\n\r\n    handle.on(\"server-listen\", (port: number, hostname: string) => {\r\n      this.registerServerPort(port, handle.pid);\r\n      this.emit(\"server-listen\", handle.pid, port, hostname);\r\n    });\r\n\r\n    handle.on(\"server-close\", (port: number) => {\r\n      this.unregisterServerPort(port);\r\n      this.emit(\"server-close\", handle.pid, port);\r\n    });\r\n\r\n    handle.on(\"http-response\", (msg: WorkerToMain_HttpResponse) => {\r\n      const cb = this._httpCallbacks.get(msg.requestId);\r\n      if (cb) cb(msg);\r\n    });\r\n\r\n    handle.on(\"ws-frame\", (msg: any) => {\r\n      this.emit(\"ws-frame\", msg);\r\n    });\r\n\r\n    handle.on(\"cwd-change\", (cwd: string) => {\r\n      this.emit(\"cwd-change\", handle.pid, cwd);\r\n    });\r\n\r\n    handle.on(\"stdin-raw-status\", (isRaw: boolean) => {\r\n      this.emit(\"stdin-raw-status\", handle.pid, isRaw);\r\n    });\r\n\r\n    handle.on(\"worker-error\", (message: string, stack?: string) => {\r\n      this.emit(\"error\", handle.pid, message, stack);\r\n    });\r\n  }\r\n\r\n  private _createEmptySnapshot(): VFSBinarySnapshot {\r\n    return {\r\n      manifest: [],\r\n      data: new ArrayBuffer(0),\r\n    };\r\n  }\r\n\r\n  broadcastVFSChange(path: string, content: ArrayBuffer | null, isDirectory: boolean, excludePid: number): void {\r\n    for (const [pid, handle] of this._processes) {\r\n      if (pid === excludePid || handle.state === \"exited\") continue;\r\n      try {\r\n        // ArrayBuffer can only be transferred once, clone for each recipient\r\n        const clonedContent = content ? content.slice(0) : null;\r\n        handle.postMessage({\r\n          type: \"vfs-sync\",\r\n          path,\r\n          content: clonedContent,\r\n          isDirectory,\r\n        }, clonedContent ? [clonedContent] : []);\r\n      } catch {\r\n        /* ignore */\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\n","// VFSBridge — syncs the canonical MemoryVolume with worker VFS clones.\r\n// Creates snapshots for initialization, applies worker writes, broadcasts changes.\r\n\r\nimport type { MemoryVolume } from \"../memory-volume\";\r\nimport type { VFSBinarySnapshot, VFSSnapshotEntry } from \"./worker-protocol\";\r\nimport type { SharedVFSController } from \"./shared-vfs\";\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  Constants                                                          */\r\n/* ------------------------------------------------------------------ */\r\n\r\nconst VFS_CHUNK_SIZE = 4 * 1024 * 1024; // 4MB\r\n\r\n/* ------------------------------------------------------------------ */\r\n/*  VFSBridge                                                          */\r\n/* ------------------------------------------------------------------ */\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\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 a single ArrayBuffer with a manifest\r\n  createSnapshot(): VFSBinarySnapshot {\r\n    const manifest: VFSSnapshotEntry[] = [];\r\n    const chunks: Uint8Array[] = [];\r\n    let totalSize = 0;\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    });\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  // 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      chunks.push({\r\n        chunkIndex: i,\r\n        totalChunks,\r\n        data: chunkData.buffer.slice(chunkData.byteOffset, chunkData.byteOffset + chunkData.byteLength),\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      this._volume.writeFileSync(path, content);\r\n      if (this._sharedVFS) {\r\n        this._sharedVFS.writeFile(path, content);\r\n      }\r\n    } finally {\r\n      this._suppressWatch = false;\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            this._volume.rmdirSync(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  broadcastChange(path: string, content: ArrayBuffer | null, excludePid: number): void {\r\n    if (this._broadcaster) {\r\n      this._broadcaster(path, content, excludePid);\r\n    }\r\n  }\r\n\r\n  // Watches canonical volume for changes and pushes 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      try {\r\n        if (this._volume.existsSync(filename)) {\r\n          const stat = this._volume.statSync(filename);\r\n          if (stat.isDirectory()) {\r\n            this.broadcastChange(filename, new ArrayBuffer(0), -1);\r\n            if (this._sharedVFS) this._sharedVFS.writeDirectory(filename);\r\n          } else {\r\n            const data = this._volume.readFileSync(filename);\r\n            const buffer = (data.buffer as ArrayBuffer).slice(data.byteOffset, data.byteOffset + data.byteLength);\r\n            this.broadcastChange(filename, buffer, -1);\r\n            if (this._sharedVFS) this._sharedVFS.writeFile(filename, data);\r\n          }\r\n        } else {\r\n          this.broadcastChange(filename, null, -1);\r\n          if (this._sharedVFS) this._sharedVFS.deleteFile(filename);\r\n        }\r\n      } catch (e) {\r\n        console.warn(`[VFSBridge] Watch error for \"${filename}\":`, 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  ): 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        try {\r\n          const stat = this._volume.statSync(fullPath);\r\n          if (stat.isDirectory()) {\r\n            visitor(fullPath, true, null);\r\n            this._walkVolume(fullPath, visitor);\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 one\r\n  if (sv.prerelease && !range.includes(\"-\")) return false;\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\ninterface TreeWalkState {\r\n  registry: RegistryClient;\r\n  completed: Map<string, ResolvedDependency>;\r\n  inFlight: Set<string>;\r\n  config: ResolutionConfig;\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: TreeWalkState = {\r\n    registry: client,\r\n    completed: new Map(),\r\n    inFlight: new Set(),\r\n    config,\r\n  };\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: TreeWalkState = {\r\n    registry: client,\r\n    completed: new Map(),\r\n    inFlight: new Set(),\r\n    config,\r\n  };\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  for (const [depName, depRange] of Object.entries(allDeps)) {\r\n    await walkDependency(depName, depRange, state);\r\n  }\r\n\r\n  return state.completed;\r\n}\r\n\r\n// Recursively resolve a package and its transitive deps. Uses `inFlight` to break cycles.\r\nasync function walkDependency(\r\n  pkgName: string,\r\n  versionConstraint: string,\r\n  state: TreeWalkState,\r\n): Promise<void> {\r\n  const { registry, completed, inFlight, config } = 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  const trackingKey = `${installName}@${versionConstraint}`;\r\n\r\n  if (inFlight.has(trackingKey)) return;\r\n\r\n  if (completed.has(installName)) {\r\n    const existing = completed.get(installName)!;\r\n    if (satisfiesRange(existing.version, versionConstraint)) return;\r\n    // flat node_modules — accept what we have even if not perfect\r\n    return;\r\n  }\r\n\r\n  inFlight.add(trackingKey);\r\n\r\n  try {\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    completed.set(installName, {\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\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      if (config.optionalDependencies) {\r\n        Object.assign(edges, versionInfo.optionalDependencies);\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        for (const [optName, optRange] of Object.entries(versionInfo.optionalDependencies)) {\r\n          if (optName.includes(\"wasm32-wasi\")) {\r\n            edges[optName] = optRange as string;\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),\r\n        ),\r\n      );\r\n    }\r\n  } finally {\r\n    inFlight.delete(trackingKey);\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","// Inline Worker Factory — creates offload workers from embedded source.\r\n// Worker source is inlined as a string and spawned via Blob URL, so it works\r\n// in any environment (no separate file to serve). Implements Comlink's wire\r\n// protocol directly so the message listener is synchronous on boot — no race\r\n// with the first init() call. 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\n\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\r\n// that comlink.wrap() speaks on the main thread.\r\n\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\n// --- Base64 helper ---\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\n// --- Tar parser ---\r\n\r\nfunction readNullTerminated(buf, start, len) {\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, 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\n// --- JSX detection ---\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\n// --- Default define map ---\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// --- Worker endpoint ---\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    const esbuildMod = await cdnImport(ESBUILD_ESM_URL);\r\n    esbuildEngine = esbuildMod.default || esbuildMod;\r\n\r\n    try {\r\n      await esbuildEngine.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\r\n    _initialized = true;\r\n  },\r\n\r\n  async transform(task) {\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    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\r\n    const compressed = new Uint8Array(await response.arrayBuffer());\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          data = new TextDecoder(\"utf-8\", { fatal: true }).decode(entry.payload);\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    return { type: \"extract\", id: task.id, files: files };\r\n  },\r\n\r\n  async build(task) {\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          return { path: f.path, text: f.text || new TextDecoder().decode(f.contents) };\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\n// --- Factory ---\r\n\r\nlet cachedBlobUrl: string | null = null;\r\n\r\n// Creates a Worker from the inline source. Blob URL is cached and reused.\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// Clean up the cached blob URL 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 esbuild-wasm + pako. 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","// Type definitions for the worker offloading system.\r\n// All types must be structured-clone compatible (postMessage-safe).\r\n\r\n// --- Task priority ---\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\n// --- Transform task ---\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\n// --- Extract task ---\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}\r\n\r\nexport interface ExtractedFile {\r\n  path: string;\r\n  // UTF-8 text, or base64-encoded binary\r\n  data: string;\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}\r\n\r\n// --- Build task ---\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\n// --- Union types ---\r\n\r\nexport type OffloadTask = TransformTask | ExtractTask | BuildTask;\r\nexport type OffloadResult = TransformResult | ExtractResult | BuildResult;\r\n\r\n// --- Worker endpoint (exposed via Comlink) ---\r\n\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\n// --- Pool config ---\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  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\r\n  const compressed = new Uint8Array(await response.arrayBuffer());\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  return { type: \"extract\", id: task.id, files };\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","// 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\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 = path.join(destDir, relative);\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  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  });\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 = path.join(destDir, file.path);\r\n    const parentDir = path.dirname(absolute);\r\n    vol.mkdirSync(parentDir, { recursive: true });\r\n\r\n    if (file.isBinary) {\r\n      vol.writeFileSync(absolute, base64ToBytes(file.data));\r\n    } else {\r\n      vol.writeFileSync(absolute, file.data);\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  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  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 { CDN_ESBUILD_ESM, CDN_ESBUILD_BINARY, cdnImport } from \"./constants/cdn-urls\";\r\nimport { offload, taskId, TaskPriority } from \"./threading/offload\";\r\nimport type { TransformResult } from \"./threading/offload-types\";\r\n\r\nconst inBrowser = typeof window !== \"undefined\";\r\n\r\n// load and init esbuild-wasm from CDN (reuses existing instance)\r\nexport async function prepareTransformer(): Promise<void> {\r\n  if (!inBrowser) {\r\n    return;\r\n  }\r\n\r\n  if (window.__esbuildEngine) {\r\n    return;\r\n  }\r\n\r\n  if (window.__esbuildReady) {\r\n    return window.__esbuildReady;\r\n  }\r\n\r\n  window.__esbuildReady = (async () => {\r\n    try {\r\n      const loaded = await cdnImport(CDN_ESBUILD_ESM);\r\n      const engine = loaded.default || loaded;\r\n\r\n      try {\r\n        await engine.initialize({ wasmURL: CDN_ESBUILD_BINARY });\r\n      } catch (initErr) {\r\n        if (\r\n          initErr instanceof Error &&\r\n          initErr.message.includes('Cannot call \"initialize\" more than once')\r\n        ) {\r\n          /* already initialized, ignore */\r\n        } else {\r\n          throw initErr;\r\n        }\r\n      }\r\n\r\n      window.__esbuildEngine = engine;\r\n    } catch (err) {\r\n      window.__esbuildReady = undefined;\r\n      throw err;\r\n    }\r\n  })();\r\n\r\n  return window.__esbuildReady;\r\n}\r\n\r\nexport function isTransformerLoaded(): boolean {\r\n  if (!inBrowser) return true;\r\n  return window.__esbuildEngine !== undefined;\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  if (!window.__esbuildEngine) await prepareTransformer();\r\n  const engine = window.__esbuildEngine;\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","// 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 { base64ToBytes } from \"../helpers/byte-encoding\";\r\nimport type { PrebundleStore } from \"./prebundle/store\";\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  // default: true\r\n  transformModules?: boolean;\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// 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  private _prebundleStore: PrebundleStore | null;\r\n\r\n  constructor(vol: MemoryVolume, opts: { cwd?: string; snapshotCache?: IDBSnapshotCache | null; prebundleStore?: PrebundleStore | 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    this._prebundleStore = opts.prebundleStore ?? null;\r\n  }\r\n\r\n  /** Set or replace the prebundle store after construction. */\r\n  setPrebundleStore(store: PrebundleStore | null): void {\r\n    this._prebundleStore = store;\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: 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    const newPkgs = await this.materializePackages(tree, flags);\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    console.log('[nodepod:installer] installFromManifest — snapshotCache:', !!this._snapshotCache, 'cacheKey:', cacheKey ? cacheKey.substring(0, 12) + '...' : 'null');\r\n\r\n    if (this._snapshotCache && cacheKey) {\r\n      try {\r\n        console.log('[nodepod:installer] Checking IDB cache for package.json hash...');\r\n        const tCache = performance.now();\r\n        const cached = await this._snapshotCache.get(cacheKey);\r\n        if (cached) {\r\n          onProgress?.(\"Restoring cached node_modules...\");\r\n          console.log('[nodepod:installer] CACHE HIT — restoring', cached.entries.length, 'entries from IndexedDB');\r\n          const { entries } = cached;\r\n          let dirs = 0, files = 0;\r\n          // Restore only node_modules entries from the snapshot\r\n          for (const entry of entries) {\r\n            if (!entry.path.includes('/node_modules/')) continue;\r\n            if (entry.kind === 'directory') {\r\n              if (!this.vol.existsSync(entry.path)) {\r\n                this.vol.mkdirSync(entry.path, { recursive: true });\r\n              }\r\n              dirs++;\r\n            } else if (entry.kind === 'file' && entry.data) {\r\n              const parentDir = entry.path.substring(0, entry.path.lastIndexOf('/')) || '/';\r\n              if (parentDir !== '/' && !this.vol.existsSync(parentDir)) {\r\n                this.vol.mkdirSync(parentDir, { recursive: true });\r\n              }\r\n              this.vol.writeFileSync(entry.path, base64ToBytes(entry.data));\r\n              files++;\r\n            }\r\n          }\r\n          const elapsed = (performance.now() - tCache).toFixed(0);\r\n          console.log(`[nodepod:installer] CACHE RESTORE complete in ${elapsed}ms — ${dirs} dirs, ${files} files`);\r\n          onProgress?.(`Restored ${entries.length} cached entries in ${elapsed}ms`);\r\n          return { resolved: new Map(), newPackages: [] };\r\n        } else {\r\n          console.log('[nodepod:installer] CACHE MISS — no cached snapshot, will install from registry');\r\n        }\r\n      } catch (err) {\r\n        console.warn('[nodepod:installer] Cache lookup failed, proceeding with install:', err);\r\n      }\r\n    }\r\n\r\n    onProgress?.(\"Resolving dependency tree...\");\r\n    console.log('[nodepod:installer] Resolving dependency tree from registry...');\r\n\r\n    const resolutionOpts: ResolutionConfig = {\r\n      registry: 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    console.log('[nodepod:installer] Resolved', tree.size, 'packages, materializing...');\r\n\r\n    const newPkgs = await this.materializePackages(tree, flags);\r\n    console.log('[nodepod:installer] Materialized', newPkgs.length, 'new packages');\r\n\r\n    // Cache the installed node_modules snapshot for future reuse\r\n    if (this._snapshotCache && cacheKey && newPkgs.length > 0) {\r\n      try {\r\n        console.log('[nodepod:installer] Caching node_modules snapshot to IndexedDB...');\r\n        const tSnapshot = performance.now();\r\n        const snapshot = this.vol.toSnapshot();\r\n        // Filter to only node_modules entries to keep cache lean\r\n        const nmSnapshot = {\r\n          entries: snapshot.entries.filter(e => e.path.includes('/node_modules/')),\r\n        };\r\n        console.log('[nodepod:installer] Snapshot has', nmSnapshot.entries.length, 'node_modules entries (from', snapshot.entries.length, 'total)');\r\n        await this._snapshotCache.set(cacheKey, nmSnapshot);\r\n        console.log(`[nodepod:installer] Snapshot cached in ${(performance.now() - tSnapshot).toFixed(0)}ms`);\r\n      } catch (err) {\r\n        console.warn('[nodepod:installer] Cache write failed:', err);\r\n      }\r\n    } else if (!this._snapshotCache) {\r\n      console.log('[nodepod:installer] No snapshot cache available — skipping cache write');\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    // Phase 1: Satisfy as many packages as possible from the prebundle store\r\n    const prebundled: string[] = [];\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      // Check prebundle store before queueing for download\r\n      if (this._prebundleStore?.has(depName, dep.version)) {\r\n        onProgress?.(`  Loading ${depName}@${dep.version} (prebundled)`);\r\n        const count = this._prebundleStore.materialize(depName, this.vol, nmRoot);\r\n        if (count > 0) {\r\n          this.createBinStubs(nmRoot, depName, targetDir);\r\n          prebundled.push(depName);\r\n          additions.push(depName);\r\n          continue;\r\n        }\r\n      }\r\n\r\n      pending.push({ depName, dep, targetDir });\r\n    }\r\n\r\n    if (prebundled.length > 0) {\r\n      onProgress?.(`Loaded ${prebundled.length} prebundled package(s)`);\r\n    }\r\n\r\n    // Only need main-thread transformer as fallback when workers aren't available\r\n    const shouldTransform = flags.transformModules !== false;\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    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      const binDir = path.join(nmRoot, \".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","/**\n * PrebundleStore — runtime store for pre-bundled packages.\n *\n * Provides a fast lookup layer that the DependencyInstaller checks\n * before hitting the npm registry. Pre-bundled packages are written\n * directly to the VFS, skipping download + transform entirely.\n */\n\nimport type { MemoryVolume } from \"../../memory-volume\";\nimport type { PrebundleData, PrebundledPackage } from \"./types\";\nimport { base64ToBytes } from \"../../helpers/byte-encoding\";\nimport * as path from \"../../polyfills/path\";\n\n/**\n * Checks whether `actual` satisfies `range`.\n * Supports: exact match, \"*\", \"latest\", \"^major.minor.patch\", \"~major.minor.patch\".\n * This is intentionally minimal — covers 95%+ of real-world ranges without\n * pulling in a full semver library.\n */\nexport function satisfiesRange(actual: string, range: string): boolean {\n  if (range === \"*\" || range === \"latest\" || range === actual) return true;\n\n  const parseVersion = (v: string): [number, number, number] | null => {\n    const cleaned = v.replace(/^[~^>=<]+/, \"\");\n    const parts = cleaned.split(\".\").map(Number);\n    if (parts.length < 3 || parts.some(isNaN)) return null;\n    return [parts[0], parts[1], parts[2]];\n  };\n\n  const actualParts = parseVersion(actual);\n  const rangeParts = parseVersion(range);\n  if (!actualParts || !rangeParts) return false;\n\n  const [aMaj, aMin, aPatch] = actualParts;\n  const [rMaj, rMin, rPatch] = rangeParts;\n\n  if (range.startsWith(\"^\")) {\n    // ^1.2.3 allows >=1.2.3 <2.0.0 (same major)\n    if (rMaj > 0) {\n      return aMaj === rMaj && (aMin > rMin || (aMin === rMin && aPatch >= rPatch));\n    }\n    // ^0.x — minor is the \"major\" for 0.x versions\n    if (rMin > 0) {\n      return aMaj === 0 && aMin === rMin && aPatch >= rPatch;\n    }\n    // ^0.0.x — exact match\n    return aMaj === 0 && aMin === 0 && aPatch === rPatch;\n  }\n\n  if (range.startsWith(\"~\")) {\n    // ~1.2.3 allows >=1.2.3 <1.3.0 (same major.minor)\n    return aMaj === rMaj && aMin === rMin && aPatch >= rPatch;\n  }\n\n  // No prefix — exact match\n  return aMaj === rMaj && aMin === rMin && aPatch === rPatch;\n}\n\nexport class PrebundleStore {\n  private _bundles: PrebundleData[] = [];\n  /** Flattened index: packageName -> PrebundledPackage (last-registered wins) */\n  private _index = new Map<string, PrebundledPackage>();\n\n  /**\n   * Load prebundle data from a URL (static JSON asset).\n   * Returns a PrebundleStore with the data already registered.\n   */\n  static async loadFromUrl(url: string): Promise<PrebundleStore> {\n    const resp = await fetch(url);\n    if (!resp.ok) throw new Error(`Failed to load prebundle from ${url}: ${resp.status}`);\n    const data: PrebundleData = await resp.json();\n    const store = new PrebundleStore();\n    store.addBundle(data);\n    return store;\n  }\n\n  /**\n   * Create a PrebundleStore from inline PrebundleData (for bundled usage).\n   */\n  static fromData(...bundles: PrebundleData[]): PrebundleStore {\n    const store = new PrebundleStore();\n    for (const b of bundles) store.addBundle(b);\n    return store;\n  }\n\n  /**\n   * Register one or more pre-bundle data sets.\n   * Call this before the first `install()` / `installFromManifest()`.\n   */\n  addBundle(bundle: PrebundleData): void {\n    this._bundles.push(bundle);\n    for (const [name, pkg] of Object.entries(bundle.packages)) {\n      this._index.set(name, pkg);\n    }\n  }\n\n  /** Check if a package is available in the prebundle store. */\n  has(name: string, versionRange?: string): boolean {\n    const pkg = this._index.get(name);\n    if (!pkg) return false;\n    if (!versionRange) return true;\n    return satisfiesRange(pkg.version, versionRange);\n  }\n\n  /** Get a pre-bundled package by name. */\n  get(name: string): PrebundledPackage | null {\n    return this._index.get(name) ?? null;\n  }\n\n  /** List all available pre-bundled package names. */\n  list(): string[] {\n    return [...this._index.keys()];\n  }\n\n  /** Number of pre-bundled packages available. */\n  get size(): number {\n    return this._index.size;\n  }\n\n  /**\n   * Write a pre-bundled package directly to the VFS.\n   * Creates the node_modules/<name>/ directory and writes all files.\n   *\n   * @returns Number of files written\n   */\n  materialize(name: string, vol: MemoryVolume, nmRoot: string = \"/node_modules\"): number {\n    const pkg = this._index.get(name);\n    if (!pkg) return 0;\n\n    const targetDir = path.join(nmRoot, name);\n    vol.mkdirSync(targetDir, { recursive: true });\n\n    let written = 0;\n    for (const file of pkg.files) {\n      const filePath = path.join(targetDir, file.path);\n      const dir = filePath.substring(0, filePath.lastIndexOf(\"/\")) || \"/\";\n      if (dir !== targetDir && !vol.existsSync(dir)) {\n        vol.mkdirSync(dir, { recursive: true });\n      }\n      vol.writeFileSync(filePath, base64ToBytes(file.content));\n      written++;\n    }\n\n    return written;\n  }\n\n  /**\n   * Materialize a package and all its transitive dependencies that are\n   * also in the prebundle store. Returns list of materialized package names.\n   */\n  materializeWithDeps(\n    name: string,\n    vol: MemoryVolume,\n    nmRoot: string = \"/node_modules\",\n  ): string[] {\n    const materialized: string[] = [];\n    const visited = new Set<string>();\n\n    const walk = (pkgName: string): void => {\n      if (visited.has(pkgName)) return;\n      visited.add(pkgName);\n\n      const pkg = this._index.get(pkgName);\n      if (!pkg) return;\n\n      // Check if already installed at correct version\n      let alreadyInstalled = false;\n      const existingManifest = path.join(nmRoot, pkgName, \"package.json\");\n      if (vol.existsSync(existingManifest)) {\n        try {\n          const current = JSON.parse(vol.readFileSync(existingManifest, \"utf8\"));\n          if (current.version === pkg.version) alreadyInstalled = true;\n        } catch { /* corrupt, reinstall */ }\n      }\n\n      if (!alreadyInstalled) {\n        const count = this.materialize(pkgName, vol, nmRoot);\n        if (count > 0) materialized.push(pkgName);\n      }\n\n      // Always recurse into dependencies (even if this pkg was already installed)\n      for (const depName of Object.keys(pkg.dependencies)) {\n        walk(depName);\n      }\n    };\n\n    walk(name);\n    return materialized;\n  }\n}\n","// bridges Service Worker HTTP requests to virtual servers.\r\n// intercepts browser fetches via SW and routes them to the http polyfill's server registry.\r\n\r\nimport type { CompletedResponse } from \"./polyfills/http\";\r\nimport {\r\n  Server,\r\n  setServerListenCallback,\r\n  setServerCloseCallback,\r\n  getServer,\r\n  encodeFrame,\r\n  decodeFrame,\r\n} from \"./polyfills/http\";\r\nimport { EventEmitter } from \"./polyfills/events\";\r\nimport { Buffer } from \"./polyfills/buffer\";\r\nimport { bytesToBase64 } from \"./helpers/byte-encoding\";\r\nimport { TIMEOUTS, WS_OPCODE } from \"./constants/config\";\r\nimport { createHash } from \"./polyfills/crypto\";\r\n\r\nconst _enc = new TextEncoder();\r\n\r\nexport interface IVirtualServer {\r\n  listening: boolean;\r\n  address(): { port: number; address: string; family: string } | null;\r\n  dispatchRequest(\r\n    method: string,\r\n    url: string,\r\n    headers: Record<string, string>,\r\n    body?: Buffer | string,\r\n  ): Promise<CompletedResponse>;\r\n}\r\n\r\nexport interface RegisteredServer {\r\n  server: Server | IVirtualServer;\r\n  port: number;\r\n  hostname: string;\r\n}\r\n\r\nexport interface ProxyOptions {\r\n  baseUrl?: string;\r\n  onServerReady?: (port: number, url: string) => void;\r\n}\r\n\r\nexport interface ServiceWorkerConfig {\r\n  swUrl?: string;\r\n}\r\n\r\nexport { CompletedResponse };\r\n\r\nexport class RequestProxy extends EventEmitter {\r\n  static DEBUG = false;\r\n  private registry = new Map<number, RegisteredServer>();\r\n  private baseUrl: string;\r\n  private opts: ProxyOptions;\r\n  private channel: MessageChannel | null = null;\r\n  private swReady = false;\r\n  private heartbeat: ReturnType<typeof setInterval> | null = null;\r\n  private _processManager: any | null = null;\r\n  private _workerWsConns = new Map<string, { pid: number }>();\r\n  private _previewScript: string | null = null;\r\n  private _swAuthToken: string | null = null;\r\n  private _wsBridgeToken: string | null = null;\r\n\r\n  constructor(opts: ProxyOptions = {}) {\r\n    super();\r\n    this.opts = opts;\r\n    this.baseUrl =\r\n      typeof location !== \"undefined\"\r\n        ? opts.baseUrl || `${location.protocol}//${location.host}`\r\n        : opts.baseUrl || \"http://localhost\";\r\n\r\n    setServerListenCallback((port, srv) => this.register(srv, port));\r\n    setServerCloseCallback((port) => this.unregister(port));\r\n  }\r\n\r\n  setProcessManager(pm: any): void {\r\n    this._processManager = pm;\r\n    pm.on(\"ws-frame\", (msg: any) => {\r\n      this._handleWorkerWsFrame(msg);\r\n    });\r\n  }\r\n\r\n  register(\r\n    server: Server | IVirtualServer,\r\n    port: number,\r\n    hostname = \"0.0.0.0\",\r\n  ): void {\r\n    this.registry.set(port, { server, port, hostname });\r\n    const url = this.serverUrl(port);\r\n    this.emit(\"server-ready\", port, url);\r\n    this.opts.onServerReady?.(port, url);\r\n    this.notifySW(\"server-registered\", { port, hostname });\r\n  }\r\n\r\n  unregister(port: number): void {\r\n    this.registry.delete(port);\r\n    this.notifySW(\"server-unregistered\", { port });\r\n  }\r\n\r\n  // Sends a script to the Service Worker that gets injected into every HTML\r\n  // response served to preview iframes. Runs before any page content.\r\n  setPreviewScript(script: string | null): void {\r\n    this._previewScript = script;\r\n    this._sendPreviewScriptToSW();\r\n  }\r\n\r\n  setWatermark(enabled: boolean): void {\r\n    if (\r\n      typeof navigator !== \"undefined\" &&\r\n      navigator.serviceWorker?.controller\r\n    ) {\r\n      navigator.serviceWorker.controller.postMessage({\r\n        type: \"set-watermark\",\r\n        enabled,\r\n        token: this._swAuthToken,\r\n      });\r\n    }\r\n  }\r\n\r\n  private _sendPreviewScriptToSW(): void {\r\n    if (\r\n      typeof navigator !== \"undefined\" &&\r\n      navigator.serviceWorker?.controller\r\n    ) {\r\n      navigator.serviceWorker.controller.postMessage({\r\n        type: \"set-preview-script\",\r\n        script: this._previewScript,\r\n        token: this._swAuthToken,\r\n      });\r\n    }\r\n  }\r\n\r\n  private _sendWsTokenToSW(): void {\r\n    if (\r\n      typeof navigator !== \"undefined\" &&\r\n      navigator.serviceWorker?.controller\r\n    ) {\r\n      navigator.serviceWorker.controller.postMessage({\r\n        type: \"set-ws-token\",\r\n        wsToken: this._wsBridgeToken,\r\n        token: this._swAuthToken,\r\n      });\r\n    }\r\n  }\r\n\r\n  serverUrl(port: number): string {\r\n    return `${this.baseUrl}/__virtual__/${port}`;\r\n  }\r\n\r\n  activePorts(): number[] {\r\n    return [...this.registry.keys()];\r\n  }\r\n\r\n  async handleRequest(\r\n    port: number,\r\n    method: string,\r\n    url: string,\r\n    headers: Record<string, string>,\r\n    body?: ArrayBuffer,\r\n  ): Promise<CompletedResponse> {\r\n    const entry = this.registry.get(port);\r\n    if (!entry) {\r\n      return {\r\n        statusCode: 503,\r\n        statusMessage: \"Service Unavailable\",\r\n        headers: { \"Content-Type\": \"text/plain\" },\r\n        body: Buffer.from(`No server on port ${port}`),\r\n      };\r\n    }\r\n    try {\r\n      const buf = body ? Buffer.from(new Uint8Array(body)) : undefined;\r\n      return await entry.server.dispatchRequest(method, url, headers, buf);\r\n    } catch (err) {\r\n      return {\r\n        statusCode: 500,\r\n        statusMessage: \"Internal Server Error\",\r\n        headers: { \"Content-Type\": \"text/plain\" },\r\n        body: Buffer.from(\r\n          err instanceof Error ? err.message : \"Internal Server Error\",\r\n        ),\r\n      };\r\n    }\r\n  }\r\n\r\n  async initServiceWorker(config?: ServiceWorkerConfig): Promise<void> {\r\n    if (!(\"serviceWorker\" in navigator))\r\n      throw new Error(\"Service Workers not supported\");\r\n\r\n    const swPath = config?.swUrl ?? \"/__sw__.js\";\r\n    // unregister old SWs and re-register with cache-busting to ensure latest __sw__.js\r\n    const existingRegs = await navigator.serviceWorker.getRegistrations();\r\n    for (const r of existingRegs) {\r\n      await r.unregister();\r\n    }\r\n    await new Promise(r => setTimeout(r, 100));\r\n\r\n    const controllerReady = new Promise<void>((res) => {\r\n      navigator.serviceWorker.addEventListener(\r\n        \"controllerchange\",\r\n        () => res(),\r\n        { once: true },\r\n      );\r\n    });\r\n\r\n    const swUrl = `${swPath}?v=${Date.now()}`;\r\n    const reg = await navigator.serviceWorker.register(swUrl, { scope: \"/\", updateViaCache: \"none\" });\r\n\r\n    const sw = reg.installing || reg.waiting || reg.active;\r\n    if (!sw) throw new Error(\"Service Worker registration failed\");\r\n\r\n    await new Promise<void>((resolve) => {\r\n      if (sw.state === \"activated\") return resolve();\r\n      const check = () => {\r\n        if (sw.state === \"activated\") {\r\n          sw.removeEventListener(\"statechange\", check);\r\n          resolve();\r\n        }\r\n      };\r\n      sw.addEventListener(\"statechange\", check);\r\n    });\r\n\r\n    this._swAuthToken = crypto.randomUUID();\r\n\r\n    this.channel = new MessageChannel();\r\n    this.channel.port1.onmessage = this.onSWMessage.bind(this);\r\n    sw.postMessage({ type: \"init\", port: this.channel.port2, token: this._swAuthToken }, [\r\n      this.channel.port2,\r\n    ]);\r\n\r\n    await controllerReady;\r\n\r\n    const reinit = () => {\r\n      if (navigator.serviceWorker.controller) {\r\n        this.channel = new MessageChannel();\r\n        this.channel.port1.onmessage = this.onSWMessage.bind(this);\r\n        navigator.serviceWorker.controller.postMessage(\r\n          { type: \"init\", port: this.channel.port2, token: this._swAuthToken },\r\n          [this.channel.port2],\r\n        );\r\n        // Resend preview script to the new SW controller\r\n        if (this._previewScript !== null) {\r\n          this._sendPreviewScriptToSW();\r\n        }\r\n        // re-send ws bridge token too\r\n        if (this._wsBridgeToken) {\r\n          this._sendWsTokenToSW();\r\n        }\r\n      }\r\n    };\r\n    navigator.serviceWorker.addEventListener(\"controllerchange\", reinit);\r\n    navigator.serviceWorker.addEventListener(\"message\", (ev) => {\r\n      if (ev.data?.type === \"sw-needs-init\") reinit();\r\n    });\r\n\r\n    this.heartbeat = setInterval(() => {\r\n      this.channel?.port1.postMessage({ type: \"keepalive\" });\r\n    }, TIMEOUTS.SW_HEARTBEAT);\r\n\r\n    this.swReady = true;\r\n    this.emit(\"sw-ready\");\r\n\r\n    this._startWsBridge();\r\n  }\r\n\r\n  // strip /__preview__/{port} prefix from SW URLs if present\r\n  private _normalizeSwUrl(url: string, headers: Record<string, string>): string | null {\r\n    // Strip /__preview__/{port} prefix (fixes RSC HMR .rsc requests etc.)\r\n    const ppMatch = url.match(/^\\/__preview__\\/\\d+(.*)?$/);\r\n    if (ppMatch) {\r\n      let stripped = ppMatch[1] || \"/\";\r\n      if (stripped[0] !== \"/\") stripped = \"/\" + stripped;\r\n      const qIdx = url.indexOf(\"?\");\r\n      if (qIdx >= 0 && !stripped.includes(\"?\")) {\r\n        stripped += url.slice(qIdx);\r\n      }\r\n      return stripped;\r\n    }\r\n    return url;\r\n  }\r\n\r\n  private async onSWMessage(event: MessageEvent): Promise<void> {\r\n    const { type, id, data } = event.data;\r\n    RequestProxy.DEBUG &&\r\n      console.log(\"[RequestProxy] SW:\", type, id, data?.url);\r\n\r\n    if (type === \"request\") {\r\n      const { port, method, headers, body, streaming, originalUrl } = data;\r\n      let url: string = data.url;\r\n\r\n      const normalized = this._normalizeSwUrl(url, headers);\r\n      if (normalized !== null && normalized !== url) {\r\n        url = normalized;\r\n      }\r\n\r\n      try {\r\n        if (streaming) {\r\n          await this.handleStreaming(id, port, method, url, headers, body);\r\n        } else {\r\n          const resp = await this.handleRequest(\r\n            port,\r\n            method,\r\n            url,\r\n            headers,\r\n            body,\r\n          );\r\n          // 404 + original URL = try fetching from the real network as fallback\r\n          // (handles cross-origin resources like Google Fonts, CDN assets, etc.)\r\n          if (resp.statusCode === 404 && originalUrl) {\r\n            try {\r\n              const origUrl = new URL(originalUrl);\r\n              const isLocalhost = origUrl.hostname === \"localhost\" ||\r\n                origUrl.hostname === \"127.0.0.1\" ||\r\n                origUrl.hostname === \"0.0.0.0\";\r\n              if (!isLocalhost) {\r\n                const fallbackResp = await fetch(originalUrl);\r\n                const fallbackBody = await fallbackResp.arrayBuffer();\r\n                const fallbackHeaders: Record<string, string> = {};\r\n                fallbackResp.headers.forEach((v, k) => {\r\n                  fallbackHeaders[k] = v;\r\n                });\r\n                const fallbackB64 = fallbackBody.byteLength > 0\r\n                  ? bytesToBase64(new Uint8Array(fallbackBody))\r\n                  : \"\";\r\n                this.channel?.port1.postMessage({\r\n                  type: \"response\",\r\n                  id,\r\n                  data: {\r\n                    statusCode: fallbackResp.status,\r\n                    statusMessage: fallbackResp.statusText || \"OK\",\r\n                    headers: fallbackHeaders,\r\n                    bodyBase64: fallbackB64,\r\n                  },\r\n                });\r\n                return;\r\n              }\r\n            } catch (fallbackErr) {\r\n            }\r\n          }\r\n\r\n          let bodyB64 = \"\";\r\n          if (resp.body?.length) {\r\n            const bytes =\r\n              resp.body instanceof Uint8Array ? resp.body : new Uint8Array(0);\r\n            bodyB64 = bytesToBase64(bytes);\r\n          }\r\n          this.channel?.port1.postMessage({\r\n            type: \"response\",\r\n            id,\r\n            data: {\r\n              statusCode: resp.statusCode,\r\n              statusMessage: resp.statusMessage,\r\n              headers: resp.headers,\r\n              bodyBase64: bodyB64,\r\n            },\r\n          });\r\n        }\r\n      } catch (err) {\r\n        this.channel?.port1.postMessage({\r\n          type: \"response\",\r\n          id,\r\n          error: err instanceof Error ? err.message : \"Unknown error\",\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  private async handleStreaming(\r\n    id: number,\r\n    port: number,\r\n    method: string,\r\n    url: string,\r\n    headers: Record<string, string>,\r\n    body?: ArrayBuffer,\r\n  ): Promise<void> {\r\n    const entry = this.registry.get(port);\r\n    if (!entry) {\r\n      this.channel?.port1.postMessage({\r\n        type: \"stream-start\",\r\n        id,\r\n        data: {\r\n          statusCode: 503,\r\n          statusMessage: \"Service Unavailable\",\r\n          headers: {},\r\n        },\r\n      });\r\n      this.channel?.port1.postMessage({ type: \"stream-end\", id });\r\n      return;\r\n    }\r\n\r\n    const srv = entry.server as any;\r\n    if (typeof srv.handleStreamingRequest === \"function\") {\r\n      const buf = body ? Buffer.from(new Uint8Array(body)) : undefined;\r\n      await srv.handleStreamingRequest(\r\n        method,\r\n        url,\r\n        headers,\r\n        buf,\r\n        (\r\n          statusCode: number,\r\n          statusMessage: string,\r\n          h: Record<string, string>,\r\n        ) => {\r\n          this.channel?.port1.postMessage({\r\n            type: \"stream-start\",\r\n            id,\r\n            data: { statusCode, statusMessage, headers: h },\r\n          });\r\n        },\r\n        (chunk: string | Uint8Array) => {\r\n          const bytes = typeof chunk === \"string\" ? _enc.encode(chunk) : chunk;\r\n          this.channel?.port1.postMessage({\r\n            type: \"stream-chunk\",\r\n            id,\r\n            data: { chunkBase64: bytesToBase64(bytes) },\r\n          });\r\n        },\r\n        () => {\r\n          this.channel?.port1.postMessage({ type: \"stream-end\", id });\r\n        },\r\n      );\r\n    } else {\r\n      const buf = body ? Buffer.from(new Uint8Array(body)) : undefined;\r\n      const resp = await entry.server.dispatchRequest(\r\n        method,\r\n        url,\r\n        headers,\r\n        buf,\r\n      );\r\n      this.channel?.port1.postMessage({\r\n        type: \"stream-start\",\r\n        id,\r\n        data: {\r\n          statusCode: resp.statusCode,\r\n          statusMessage: resp.statusMessage,\r\n          headers: resp.headers,\r\n        },\r\n      });\r\n      if (resp.body?.length) {\r\n        const bytes =\r\n          resp.body instanceof Uint8Array ? resp.body : new Uint8Array(0);\r\n        this.channel?.port1.postMessage({\r\n          type: \"stream-chunk\",\r\n          id,\r\n          data: { chunkBase64: bytesToBase64(bytes) },\r\n        });\r\n      }\r\n      this.channel?.port1.postMessage({ type: \"stream-end\", id });\r\n    }\r\n  }\r\n\r\n  // ---- WebSocket bridge ----\r\n\r\n  private _wsBridge: BroadcastChannel | null = null;\r\n  private _wsConns = new Map<\r\n    string,\r\n    { socket: import(\"./polyfills/net\").TcpSocket; cleanup: () => void }\r\n  >();\r\n\r\n  // listens on BroadcastChannel \"nodepod-ws\" for connect/send/close from preview\r\n  // iframes, dispatches WS upgrade events on the virtual server, relays frames.\r\n  private _startWsBridge(): void {\r\n    if (typeof BroadcastChannel === \"undefined\") return;\r\n    if (this._wsBridge) return;\r\n\r\n    this._wsBridgeToken = crypto.randomUUID();\r\n\r\n    this._wsBridge = new BroadcastChannel(\"nodepod-ws\");\r\n    this._wsBridge.onmessage = (ev: MessageEvent) => {\r\n      const d = ev.data;\r\n      if (!d || !d.kind) return;\r\n\r\n      // check token\r\n      if (this._wsBridgeToken && d.token !== this._wsBridgeToken) return;\r\n\r\n      if (d.kind === \"ws-connect\") {\r\n        this._handleWsConnect(d.uid, d.port, d.path, d.protocols);\r\n      } else if (d.kind === \"ws-send\") {\r\n        this._handleWsSend(d.uid, d.data, d.type);\r\n      } else if (d.kind === \"ws-close\") {\r\n        this._handleWsClose(d.uid, d.code, d.reason);\r\n      }\r\n    };\r\n\r\n    // Send the WS bridge token to the Service Worker so it can embed it in the WS shim\r\n    this._sendWsTokenToSW();\r\n  }\r\n\r\n  private _handleWsConnect(\r\n    uid: string,\r\n    port: number,\r\n    path: string,\r\n    protocols?: string,\r\n  ): void {\r\n    const server = getServer(port);\r\n\r\n    const wsKey = btoa(\r\n      String.fromCharCode(...crypto.getRandomValues(new Uint8Array(16))),\r\n    );\r\n\r\n    const headers: Record<string, string> = {\r\n      upgrade: \"websocket\",\r\n      connection: \"Upgrade\",\r\n      \"sec-websocket-key\": wsKey,\r\n      \"sec-websocket-version\": \"13\",\r\n      host: `localhost:${port}`,\r\n    };\r\n    if (protocols) headers[\"sec-websocket-protocol\"] = protocols;\r\n\r\n    // no local server -- try routing through ProcessManager (worker mode)\r\n    if (!server) {\r\n      if (this._processManager) {\r\n        const pid = this._processManager.dispatchWsUpgrade(port, uid, path || \"/\", headers);\r\n        if (pid >= 0) {\r\n          this._workerWsConns.set(uid, { pid });\r\n          return;\r\n        }\r\n      }\r\n      this._wsBridge?.postMessage({\r\n        kind: \"ws-error\",\r\n        uid,\r\n        message: `No server on port ${port}`,\r\n        token: this._wsBridgeToken,\r\n      });\r\n      return;\r\n    }\r\n\r\n    const { socket } = server.dispatchUpgrade(path || \"/\", headers);\r\n    const bridge = this._wsBridge!;\r\n\r\n    let outboundBuf = new Uint8Array(0);\r\n    let handshakeDone = false;\r\n\r\n    // intercept socket.write to decode WS frames from server and relay to iframe\r\n    socket.write = ((\r\n      chunk: Uint8Array | string,\r\n      encOrCb?: BufferEncoding | ((err?: Error | null) => void),\r\n      cb?: (err?: Error | null) => void,\r\n    ): boolean => {\r\n      const raw =\r\n        typeof chunk === \"string\" ? Buffer.from(chunk) : new Uint8Array(chunk);\r\n      const fn = typeof encOrCb === \"function\" ? encOrCb : cb;\r\n\r\n      if (!handshakeDone) {\r\n        const text = new TextDecoder().decode(raw);\r\n        if (text.startsWith(\"HTTP/1.1 101\")) {\r\n          handshakeDone = true;\r\n          bridge.postMessage({ kind: \"ws-open\", uid, token: this._wsBridgeToken });\r\n          if (fn) queueMicrotask(() => fn(null));\r\n          return true;\r\n        }\r\n      }\r\n\r\n      const merged = new Uint8Array(outboundBuf.length + raw.length);\r\n      merged.set(outboundBuf, 0);\r\n      merged.set(raw, outboundBuf.length);\r\n      outboundBuf = merged;\r\n\r\n      while (outboundBuf.length >= 2) {\r\n        const frame = decodeFrame(outboundBuf);\r\n        if (!frame) break;\r\n        outboundBuf = outboundBuf.slice(frame.consumed);\r\n\r\n        switch (frame.op) {\r\n          case WS_OPCODE.TEXT: {\r\n            const text = new TextDecoder().decode(frame.data);\r\n            bridge.postMessage({\r\n              kind: \"ws-message\",\r\n              uid,\r\n              data: text,\r\n              type: \"text\",\r\n              token: this._wsBridgeToken,\r\n            });\r\n            break;\r\n          }\r\n          case WS_OPCODE.BINARY:\r\n            bridge.postMessage({\r\n              kind: \"ws-message\",\r\n              uid,\r\n              data: Array.from(frame.data),\r\n              type: \"binary\",\r\n              token: this._wsBridgeToken,\r\n            });\r\n            break;\r\n          case WS_OPCODE.CLOSE: {\r\n            const code =\r\n              frame.data.length >= 2\r\n                ? (frame.data[0] << 8) | frame.data[1]\r\n                : 1000;\r\n            bridge.postMessage({ kind: \"ws-closed\", uid, code, token: this._wsBridgeToken });\r\n            break;\r\n          }\r\n          case WS_OPCODE.PING:\r\n            socket._feedData(\r\n              Buffer.from(encodeFrame(WS_OPCODE.PONG, frame.data, true)),\r\n            );\r\n            break;\r\n        }\r\n      }\r\n\r\n      if (fn) queueMicrotask(() => fn(null));\r\n      return true;\r\n    }) as any;\r\n\r\n    const cleanup = () => {\r\n      outboundBuf = new Uint8Array(0);\r\n      try { socket.destroy(); } catch { /* */ }\r\n    };\r\n    this._wsConns.set(uid, { socket, cleanup });\r\n  }\r\n\r\n  private _handleWorkerWsFrame(msg: any): void {\r\n    const bridge = this._wsBridge;\r\n    if (!bridge) return;\r\n    const uid = msg.uid;\r\n\r\n    switch (msg.kind) {\r\n      case \"open\":\r\n        bridge.postMessage({ kind: \"ws-open\", uid, token: this._wsBridgeToken });\r\n        break;\r\n      case \"text\":\r\n        bridge.postMessage({ kind: \"ws-message\", uid, data: msg.data, type: \"text\", token: this._wsBridgeToken });\r\n        break;\r\n      case \"binary\":\r\n        bridge.postMessage({ kind: \"ws-message\", uid, data: msg.bytes, type: \"binary\", token: this._wsBridgeToken });\r\n        break;\r\n      case \"close\":\r\n        bridge.postMessage({ kind: \"ws-closed\", uid, code: msg.code || 1000, token: this._wsBridgeToken });\r\n        this._workerWsConns.delete(uid);\r\n        break;\r\n      case \"error\":\r\n        bridge.postMessage({ kind: \"ws-error\", uid, message: msg.message, token: this._wsBridgeToken });\r\n        this._workerWsConns.delete(uid);\r\n        break;\r\n    }\r\n  }\r\n\r\n  private _handleWsSend(\r\n    uid: string,\r\n    data: unknown,\r\n    type?: string,\r\n  ): void {\r\n    const workerConn = this._workerWsConns.get(uid);\r\n    if (workerConn && this._processManager) {\r\n      let payload: Uint8Array;\r\n      let op: number;\r\n      if (type === \"binary\" && Array.isArray(data)) {\r\n        payload = new Uint8Array(data);\r\n        op = WS_OPCODE.BINARY;\r\n      } else {\r\n        payload = new TextEncoder().encode(String(data));\r\n        op = WS_OPCODE.TEXT;\r\n      }\r\n      const frame = encodeFrame(op, payload, true);\r\n      this._processManager.dispatchWsData(workerConn.pid, uid, Array.from(new Uint8Array(frame)));\r\n      return;\r\n    }\r\n\r\n    const conn = this._wsConns.get(uid);\r\n    if (!conn) return;\r\n\r\n    let payload: Uint8Array;\r\n    let op: number;\r\n    if (type === \"binary\" && Array.isArray(data)) {\r\n      payload = new Uint8Array(data);\r\n      op = WS_OPCODE.BINARY;\r\n    } else {\r\n      payload = new TextEncoder().encode(String(data));\r\n      op = WS_OPCODE.TEXT;\r\n    }\r\n    const frame = encodeFrame(op, payload, true);\r\n    conn.socket._feedData(Buffer.from(frame));\r\n  }\r\n\r\n  private _handleWsClose(uid: string, code?: number, reason?: string): void {\r\n    const workerConn = this._workerWsConns.get(uid);\r\n    if (workerConn && this._processManager) {\r\n      this._processManager.dispatchWsClose(workerConn.pid, uid, code ?? 1000);\r\n      this._workerWsConns.delete(uid);\r\n      return;\r\n    }\r\n\r\n    const conn = this._wsConns.get(uid);\r\n    if (!conn) return;\r\n\r\n    const codeBuf = new Uint8Array(2);\r\n    codeBuf[0] = ((code ?? 1000) >> 8) & 0xff;\r\n    codeBuf[1] = (code ?? 1000) & 0xff;\r\n    const frame = encodeFrame(WS_OPCODE.CLOSE, codeBuf, true);\r\n    try { conn.socket._feedData(Buffer.from(frame)); } catch { /* */ }\r\n\r\n    conn.cleanup();\r\n    this._wsConns.delete(uid);\r\n  }\r\n\r\n  private notifySW(type: string, data: unknown): void {\r\n    if (this.swReady && this.channel)\r\n      this.channel.port1.postMessage({ type, data });\r\n  }\r\n\r\n  createFetchHandler(): (req: Request) => Promise<Response> {\r\n    return async (req: Request): Promise<Response> => {\r\n      const parsed = new URL(req.url);\r\n      const match = parsed.pathname.match(/^\\/__virtual__\\/(\\d+)(\\/.*)?$/);\r\n      if (!match) throw new Error(\"Not a virtual server request\");\r\n\r\n      const port = parseInt(match[1], 10);\r\n      const path = match[2] || \"/\";\r\n      const hdrs: Record<string, string> = {};\r\n      req.headers.forEach((v, k) => {\r\n        hdrs[k] = v;\r\n      });\r\n      let reqBody: ArrayBuffer | undefined;\r\n      if (req.method !== \"GET\" && req.method !== \"HEAD\")\r\n        reqBody = await req.arrayBuffer();\r\n\r\n      const resp = await this.handleRequest(\r\n        port,\r\n        req.method,\r\n        path + parsed.search,\r\n        hdrs,\r\n        reqBody,\r\n      );\r\n      let body: BodyInit | null = null;\r\n      if (resp.body instanceof Uint8Array) {\r\n        body = new Uint8Array(resp.body.buffer as ArrayBuffer, resp.body.byteOffset, resp.body.byteLength) as Uint8Array<ArrayBuffer>;\r\n      } else if (typeof resp.body === \"string\") {\r\n        body = resp.body;\r\n      }\r\n      return new Response(body, {\r\n        status: resp.statusCode,\r\n        statusText: resp.statusMessage,\r\n        headers: resp.headers,\r\n      });\r\n    };\r\n  }\r\n}\r\n\r\n// ── Singleton ──\r\n\r\nlet instance: RequestProxy | null = null;\r\n\r\nexport function getProxyInstance(opts?: ProxyOptions): RequestProxy {\r\n  if (!instance) instance = new RequestProxy(opts);\r\n  return instance;\r\n}\r\n\r\nexport function resetProxy(): void {\r\n  instance = null;\r\n}\r\n\r\nexport default RequestProxy;\r\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 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  // 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\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}\r\n\r\nexport class NodepodTerminal {\r\n  private _term: any = null;\r\n  private _fitAddon: any = null;\r\n  private _dataDisposable: any = null;\r\n  private _resizeHandler: (() => void) | null = null;\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    this._term.open(container);\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        setTimeout(() => addon.fit(), 100);\r\n      });\r\n      this._resizeHandler = () => this._fitAddon?.fit();\r\n      window.addEventListener(\"resize\", this._resizeHandler);\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  detach(): void {\r\n    if (this._dataDisposable) {\r\n      this._dataDisposable.dispose();\r\n      this._dataDisposable = 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._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  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 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 >= 32) {\r\n        this._lineBuffer += ch;\r\n        this._term.write(ch);\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  /* ---- 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","// 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\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\nexport function setProxy(url: string | null): void {\r\n  activeProxy = url;\r\n}\r\n\r\nexport function getProxy(): string | null {\r\n  return activeProxy;\r\n}\r\n\r\nexport function isProxyActive(): boolean {\r\n  return activeProxy !== 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    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\nfunction 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      if (hostname === allowed || hostname.endsWith('.' + allowed)) {\r\n        return true;\r\n      }\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  if (activeProxy) {\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(activeProxy + encodeURIComponent(url), init);\r\n  }\r\n  return fetch(url, init);\r\n}\r\n\r\nexport function resolveProxyUrl(url: string): string {\r\n  if (activeProxy && !isDomainAllowed(url)) {\r\n    throw new Error(`Fetch blocked: \"${new URL(url).hostname}\" is not in the allowedFetchDomains whitelist`);\r\n  }\r\n  return activeProxy ? activeProxy + encodeURIComponent(url) : url;\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\nimport type { VolumeSnapshot } from '../engine-types';\r\n\r\nconst DB_NAME = 'nodepod-snapshots';\r\nconst STORE_NAME = 'snapshots';\r\nconst DB_VERSION = 1;\r\nconst MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\r\n\r\nexport interface IDBSnapshotCache {\r\n  get(packageJsonHash: string): Promise<VolumeSnapshot | null>;\r\n  set(packageJsonHash: string, snapshot: VolumeSnapshot): 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      if (entry?.createdAt && (now - entry.createdAt) > MAX_AGE_MS) {\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) {\r\n    console.warn('[nodepod:idb-cache] IndexedDB not available — snapshot cache disabled');\r\n    return null;\r\n  }\r\n\r\n  console.log('[nodepod:idb-cache] IndexedDB snapshot cache opened (db:', DB_NAME, ')');\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<VolumeSnapshot | null> {\r\n      try {\r\n        console.log('[nodepod:idb-cache] GET snapshot for hash:', packageJsonHash.substring(0, 12) + '...');\r\n        const entry = await idbGet(db, packageJsonHash);\r\n        if (!entry?.snapshot) {\r\n          console.log('[nodepod:idb-cache] CACHE MISS — no snapshot found for this package.json hash');\r\n          return null;\r\n        }\r\n        // Check expiry\r\n        if (entry.createdAt && (Date.now() - entry.createdAt) > MAX_AGE_MS) {\r\n          console.log('[nodepod:idb-cache] CACHE EXPIRED — snapshot is older than 7 days');\r\n          return null;\r\n        }\r\n        const age = entry.createdAt ? ((Date.now() - entry.createdAt) / 1000).toFixed(0) + 's ago' : 'unknown age';\r\n        console.log('[nodepod:idb-cache] CACHE HIT — restoring snapshot (' + entry.snapshot.entries.length + ' entries, cached ' + age + ')');\r\n        return entry.snapshot as VolumeSnapshot;\r\n      } catch (err) {\r\n        console.warn('[nodepod:idb-cache] GET failed:', err);\r\n        return null;\r\n      }\r\n    },\r\n\r\n    async set(packageJsonHash: string, snapshot: VolumeSnapshot): Promise<void> {\r\n      try {\r\n        console.log('[nodepod:idb-cache] SET snapshot for hash:', packageJsonHash.substring(0, 12) + '...', '(' + snapshot.entries.length + ' entries)');\r\n        await idbPut(db, packageJsonHash, {\r\n          snapshot,\r\n          createdAt: Date.now(),\r\n        });\r\n        console.log('[nodepod:idb-cache] SET complete — snapshot cached to IndexedDB');\r\n      } catch (err) {\r\n        console.warn('[nodepod:idb-cache] SET failed:', err);\r\n      }\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  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 { 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} from \"../threading/shared-vfs\";\r\nimport { SyncChannelController } from \"../threading/sync-channel\";\r\nimport { MemoryHandler } from \"../memory-handler\";\r\nimport { openSnapshotCache } from \"../persistence/idb-cache\";\r\nimport { PrebundleStore } from \"../packages/prebundle/store\";\r\n\r\nexport class Nodepod {\r\n  readonly fs: NodepodFS;\r\n\r\n  private _volume: MemoryVolume;\r\n  private _packages: DependencyInstaller;\r\n  private _proxy: RequestProxy;\r\n  private _cwd: 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\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  ) {\r\n    this._volume = volume;\r\n    this._packages = packages;\r\n    this._proxy = proxy;\r\n    this._cwd = cwd;\r\n    this._handler = handler;\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 (isSharedArrayBufferAvailable()) {\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\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(proxyServer, port);\r\n      },\r\n    );\r\n\r\n    this._processManager.on(\"server-close\", (_pid: number, port: number) => {\r\n      this._proxy.unregister(port);\r\n    });\r\n\r\n    this._proxy.setProcessManager(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    if (typeof SharedArrayBuffer === \"undefined\") {\r\n      throw new Error(\r\n        \"[Nodepod] SharedArrayBuffer is required. Ensure Cross-Origin-Isolation headers are set (Cross-Origin-Opener-Policy: same-origin, Cross-Origin-Embedder-Policy: credentialless).\",\r\n      );\r\n    }\r\n\r\n    const cwd = opts.workdir ?? \"/\";\r\n    const handler = new MemoryHandler(opts.memory);\r\n    handler.startMonitoring();\r\n    const volume = new MemoryVolume(handler);\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    // Wire up prebundle store if bundles were provided\r\n    let prebundleStore: PrebundleStore | null = null;\r\n    if (opts.prebundles && opts.prebundles.length > 0) {\r\n      prebundleStore = new PrebundleStore();\r\n      for (const bundle of opts.prebundles) {\r\n        prebundleStore.addBundle(bundle);\r\n      }\r\n    }\r\n\r\n    const packages = new DependencyInstaller(volume, { snapshotCache, prebundleStore });\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(volume, packages, proxy, cwd, handler);\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    if (\r\n      opts.swUrl &&\r\n      typeof navigator !== \"undefined\" &&\r\n      \"serviceWorker\" in navigator\r\n    ) {\r\n      try {\r\n        await proxy.initServiceWorker({ swUrl: opts.swUrl });\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        // SW registration failed, non-fatal\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\r\n    const handle = this._processManager.spawn({\r\n      command: cmd,\r\n      args: args ?? [],\r\n      cwd: execCwd,\r\n      env: opts?.env ?? {},\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) => {\r\n      if (!proc.exited) proc._finish(exitCode);\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 isNodeCmd = cmd === \"node\" && args?.length;\r\n    if (isNodeCmd) {\r\n      const filePath = this._resolveCommand(cmd, args);\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: false,\r\n      });\r\n    } else {\r\n      const fullCmd = args?.length ? `${cmd} ${args.join(\" \")}` : 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\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: this._cwd,\r\n        env: {},\r\n      });\r\n      shellReady = new Promise<void>((resolve) => {\r\n        if (shellHandle!.state === \"running\") {\r\n          resolve();\r\n        } else {\r\n          shellHandle!.on(\"ready\", () => resolve());\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    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        // 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: this._cwd,\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    });\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(script);\r\n  }\r\n\r\n  async clearPreviewScript(): Promise<void> {\r\n    this._proxy.setPreviewScript(null);\r\n  }\r\n\r\n  /* ---- port() ---- */\r\n\r\n  // Returns the preview URL for a server on this port, or null\r\n  port(num: number): string | null {\r\n    if (this._proxy.activePorts().includes(num)) {\r\n      return this._proxy.serverUrl(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    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  /* ---- 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}\r\n","// WorkerVFS — worker-side filesystem proxy.\r\n// Reads are instant (local Map). Writes go to both local store + 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      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\r\n\r\nexport { MemoryVolume } from \"./memory-volume\";\r\nexport type {\r\n  VolumeNode,\r\n  FileStat,\r\n  FileWatchHandle,\r\n  WatchCallback,\r\n  WatchEventKind,\r\n  SystemError,\r\n} from \"./memory-volume\";\r\nexport { ScriptEngine, executeCode } from \"./script-engine\";\r\nexport type { ModuleRecord, EngineOptions, ResolverFn } from \"./script-engine\";\r\nexport { spawnEngine, WorkerSandbox, IframeSandbox, spawnProcessWorkerEngine, ProcessWorkerAdapter } from \"./engine-factory\";\r\nexport type {\r\n  IScriptEngine,\r\n  ExecutionOutcome,\r\n  SpawnEngineConfig,\r\n  EngineConfig,\r\n  VolumeSnapshot,\r\n} from \"./engine-types\";\r\nexport {\r\n  generateSandboxDeployment,\r\n  getSandboxPageHtml,\r\n  getSandboxHostingConfig,\r\n  SANDBOX_DEPLOYMENT_GUIDE,\r\n} from \"./isolation-helpers\";\r\nexport { buildFileSystemBridge } from \"./polyfills/fs\";\r\nexport type { FsBridge } from \"./polyfills/fs\";\r\nexport { buildProcessEnv } from \"./polyfills/process\";\r\nexport type { ProcessObject, ProcessEnvVars } from \"./polyfills/process\";\r\nexport * as path from \"./polyfills/path\";\r\nexport * as http from \"./polyfills/http\";\r\nexport * as net from \"./polyfills/net\";\r\nexport * as events from \"./polyfills/events\";\r\nexport * as stream from \"./polyfills/stream\";\r\nexport * as url from \"./polyfills/url\";\r\nexport * as querystring from \"./polyfills/querystring\";\r\nexport * as util from \"./polyfills/util\";\r\nexport * as npm from \"./packages/installer\";\r\nexport { DependencyInstaller, install } from \"./packages/installer\";\r\nexport { PrebundleStore, satisfiesRange } from \"./packages/prebundle\";\r\nexport type {\r\n  PrebundleData,\r\n  PrebundledPackage,\r\n  PrebundleFile,\r\n  PrebundleManifest,\r\n  PrebundleManifestEntry,\r\n} from \"./packages/prebundle\";\r\nexport { RequestProxy, getProxyInstance, resetProxy } from \"./request-proxy\";\r\nexport type { ProxyOptions, ServiceWorkerConfig } from \"./request-proxy\";\r\nexport * as chokidar from \"./polyfills/chokidar\";\r\nexport * as ws from \"./polyfills/ws\";\r\nexport * as fsevents from \"./polyfills/fsevents\";\r\nexport * as readdirp from \"./polyfills/readdirp\";\r\nexport * as module from \"./polyfills/module\";\r\nexport * as perf_hooks from \"./polyfills/perf_hooks\";\r\nexport * as worker_threads from \"./polyfills/worker_threads\";\r\nexport * as esbuild from \"./polyfills/esbuild\";\r\nexport * as rollup from \"./polyfills/rollup\";\r\nexport * as assert from \"./polyfills/assert\";\r\n\r\nimport { MemoryVolume } from \"./memory-volume\";\r\nimport { ScriptEngine, EngineOptions } from \"./script-engine\";\r\nimport { DependencyInstaller } from \"./packages/installer\";\r\nimport { RequestProxy, getProxyInstance } from \"./request-proxy\";\r\n// lazy-load child_process to avoid pulling in the shell at module load time\r\nlet _shellMod: typeof import(\"./polyfills/child_process\") | null = null;\r\nasync function getShellMod() {\r\n  if (!_shellMod) _shellMod = await import(\"./polyfills/child_process\");\r\n  return _shellMod;\r\n}\r\n\r\nexport interface CommandResult {\r\n  stdout: string;\r\n  stderr: string;\r\n  exitCode: number;\r\n}\r\n\r\nexport interface CommandOptions {\r\n  cwd?: string;\r\n  onStdout?: (data: string) => void;\r\n  onStderr?: (data: string) => void;\r\n  signal?: AbortSignal;\r\n}\r\n\r\nexport interface WorkspaceConfig extends EngineOptions {\r\n  baseUrl?: string;\r\n  onServerReady?: (port: number, url: string) => void;\r\n}\r\n\r\n// create a fully-wired workspace (volume + engine + packages + proxy)\r\nexport function createWorkspace(config?: WorkspaceConfig): {\r\n  volume: MemoryVolume;\r\n  engine: ScriptEngine;\r\n  packages: DependencyInstaller;\r\n  proxy: RequestProxy;\r\n  execute: (code: string, filename?: string) => { exports: unknown };\r\n  runFile: (filename: string) => { exports: unknown };\r\n  run: (command: string, options?: CommandOptions) => Promise<CommandResult>;\r\n  sendInput: (data: string) => Promise<void>;\r\n  createREPL: () => { eval: (code: string) => unknown };\r\n  on: (event: string, listener: (...args: unknown[]) => void) => void;\r\n} {\r\n  const volume = new MemoryVolume();\r\n  const engine = new ScriptEngine(volume, config);\r\n  const packages = new DependencyInstaller(volume);\r\n  const proxy = getProxyInstance({\r\n    baseUrl: config?.baseUrl,\r\n    onServerReady: config?.onServerReady,\r\n  });\r\n\r\n  // init shell lazily (SDK path uses Nodepod.boot() instead)\r\n  getShellMod().then((mod) => mod.initShellExec(volume, { cwd: config?.cwd }));\r\n\r\n  return {\r\n    volume,\r\n    engine,\r\n    packages,\r\n    proxy,\r\n    execute: (code: string, filename?: string) =>\r\n      engine.execute(code, filename),\r\n    runFile: (filename: string) => engine.runFile(filename),\r\n    run: async (\r\n      command: string,\r\n      runOpts?: CommandOptions,\r\n    ): Promise<CommandResult> => {\r\n      if (runOpts?.signal?.aborted) {\r\n        return { stdout: \"\", stderr: \"\", exitCode: 130 };\r\n      }\r\n\r\n      const shell = await getShellMod();\r\n      const hasStreaming =\r\n        runOpts?.onStdout || runOpts?.onStderr || runOpts?.signal;\r\n      if (hasStreaming) {\r\n        shell.setStreamingCallbacks({\r\n          onStdout: runOpts?.onStdout,\r\n          onStderr: runOpts?.onStderr,\r\n          signal: runOpts?.signal,\r\n        });\r\n      }\r\n\r\n      return new Promise((resolve) => {\r\n        shell.exec(command, { cwd: runOpts?.cwd }, (error, stdout, stderr) => {\r\n          if (hasStreaming) shell.clearStreamingCallbacks();\r\n          resolve({\r\n            stdout: String(stdout),\r\n            stderr: String(stderr),\r\n            exitCode: error ? ((error as any).code ?? 1) : 0,\r\n          });\r\n        });\r\n      });\r\n    },\r\n    sendInput: async (data: string) => {\r\n      const shell = await getShellMod();\r\n      shell.sendStdin(data);\r\n    },\r\n    createREPL: () => engine.createREPL(),\r\n    on: (event: string, listener: (...args: unknown[]) => void) => {\r\n      proxy.on(event, listener);\r\n    },\r\n  };\r\n}\r\n\r\nexport default createWorkspace;\r\n\r\n/* ---- SDK (clean public API) ---- */\r\n\r\nexport { Nodepod } from \"./sdk/nodepod\";\r\nexport { NodepodTerminal } from \"./sdk/nodepod-terminal\";\r\nexport { NodepodProcess } from \"./sdk/nodepod-process\";\r\nexport { NodepodFS } from \"./sdk/nodepod-fs\";\r\nexport type {\r\n  NodepodOptions,\r\n  TerminalOptions,\r\n  TerminalTheme,\r\n  StatResult,\r\n  Snapshot,\r\n  SpawnOptions,\r\n} from \"./sdk/types\";\r\nexport { MemoryHandler, LRUCache } from \"./memory-handler\";\r\nexport type { MemoryHandlerOptions } from \"./memory-handler\";\r\n\r\n/* ---- Threading / Worker Infrastructure ---- */\r\n\r\nexport { ProcessManager } from \"./threading/process-manager\";\r\nexport { ProcessHandle } from \"./threading/process-handle\";\r\nexport type { ProcessState } from \"./threading/process-handle\";\r\nexport { VFSBridge } from \"./threading/vfs-bridge\";\r\nexport { WorkerVFS } from \"./threading/worker-vfs\";\r\nexport { SyncChannelController, SyncChannelWorker } from \"./threading/sync-channel\";\r\nexport { SharedVFSController, SharedVFSReader, isSharedArrayBufferAvailable } from \"./threading/shared-vfs\";\r\nexport { createProcessContext, getActiveContext, setActiveContext } from \"./threading/process-context\";\r\nexport type { ProcessContext, ProcessWriter, ProcessReader, OpenFileEntry } from \"./threading/process-context\";\r\nexport type {\r\n  VFSBinarySnapshot,\r\n  VFSSnapshotEntry,\r\n  SpawnConfig,\r\n  ProcessInfo,\r\n  MainToWorkerMessage,\r\n  WorkerToMainMessage,\r\n} from \"./threading/worker-protocol\";\r\n"],"names":["ref","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","resolve","parse","format","_nativeConsole","TcpSocket","connect","TcpServer","address","unref","createServer","Hash","Hmac","update","digestAsync","digest","SignStream","sign","VerifyStream","verify","KeyObject","getCiphers","IncomingMessage","setTimeout","ServerResponse","Server","ClientRequest","setHeader","getHeader","removeHeader","flushHeaders","incoming","err","self","request","get","_elRef","_elUnref","Agent","URL","encode","decode","isArray","isObject","types","TextEncoder","TextDecoder","ReadStream","WriteStream","version","constants$2","toString","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","wrap","Module","performance","PerformanceObserver","TimingHistogram","MessagePort","MessageChannel","Worker","eventLoopUnref","eventLoopRef","postMessage","BroadcastChannel","exports","acorn.parse","importerDir","require$$0","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","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","WASI","totalWritten","newFd","StatementSync","DatabaseSync","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","opts","pathPolyfill.join","cwd","pathPolyfill.resolve","resolveExports","pathPolyfill.basename","pathPolyfill.extname","qIdx","fromDir","e","resolveImports","moduleSysPolyfill._load","moduleSysPolyfill.builtinModules","moduleSysPolyfill.isBuiltin","moduleSysPolyfill._extensions","moduleSysPolyfill._pathCache","moduleSysPolyfill._nodeModulePaths","moduleSysPolyfill._findPath","moduleSysPolyfill.syncBuiltinESMExports","moduleSysPolyfill.wrap","moduleSysPolyfill.wrapper","watcherPolyfill.setVolume","scannerPolyfill.setVolume","esbuildPolyfill.setVolume","pid","satisfiesRange","TaskPriority","path.join","path.dirname","atIdx","payload","op","frame","MemoryVolume","ScriptEngine","DependencyInstaller","getProxyInstance"],"mappings":"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C;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,QAAQ,GAAG;AACpB;AACA,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,MAAM,OAAO,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,KAAK,QAAQ,IAAI;AACxB;AACA,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE;AACtB;AACA;AACA;AACA,EAAE,IAAI,CAAC,OAAO,MAAM,EAAE;AACtB;AACA;AACA;AACA,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC;AACrB;AACA,EAAE,IAAI,CAAC,IAAI,SAAS,KAAK;AACzB;;AAEA,IAAI,QAAQ,GAAG,QAAQ;;AAEvB,MAAMC,UAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ;;AAE1C;AACA;;AAEA,MAAM;AACN,EAAE,UAAU,EAAE,QAAQ;AACtB,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE;AACjE,CAAC,GAAGD,aAAW;;AAEf;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,OAAO,EAAE;AAC5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AAE,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,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,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,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC;;AAE1oC;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,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,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,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,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,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,E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","x_google_ignoreList":[24,35,38,39,65,67]}