mtranserver 4.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +155 -0
  3. package/dist/bergamot-translator-41rtjv31.wasm +0 -0
  4. package/dist/cld2-8mh0n580.wasm +0 -0
  5. package/dist/config/index.d.ts +23 -0
  6. package/dist/config/index.d.ts.map +1 -0
  7. package/dist/core/engine.d.ts +51 -0
  8. package/dist/core/engine.d.ts.map +1 -0
  9. package/dist/core/factory.d.ts +16 -0
  10. package/dist/core/factory.d.ts.map +1 -0
  11. package/dist/core/interfaces.d.ts +19 -0
  12. package/dist/core/interfaces.d.ts.map +1 -0
  13. package/dist/core/loader.d.ts +22 -0
  14. package/dist/core/loader.d.ts.map +1 -0
  15. package/dist/favicon-16x16-xwsy16sv.png +0 -0
  16. package/dist/favicon-32x32-zstv2hmc.png +0 -0
  17. package/dist/icon-tjp1feba.png +0 -0
  18. package/dist/index-B7vzjIqN-ma6ncj8z.css +1 -0
  19. package/dist/index-D6lVFqDO-3a1nn40g.js +53 -0
  20. package/dist/index-g3cdpfvc.html +15 -0
  21. package/dist/index.d.ts +5 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +7282 -0
  24. package/dist/index.js.map +31 -0
  25. package/dist/lib/bergamot/bergamot-translator.d.ts +3 -0
  26. package/dist/lib/bergamot/bergamot-translator.d.ts.map +1 -0
  27. package/dist/lib/cld2/cld2.d.ts +6 -0
  28. package/dist/lib/cld2/cld2.d.ts.map +1 -0
  29. package/dist/logger/index.d.ts +21 -0
  30. package/dist/logger/index.d.ts.map +1 -0
  31. package/dist/main.js +216629 -0
  32. package/dist/main.js.map +391 -0
  33. package/dist/models/index.d.ts +2 -0
  34. package/dist/models/index.d.ts.map +1 -0
  35. package/dist/models/records.d.ts +33 -0
  36. package/dist/models/records.d.ts.map +1 -0
  37. package/dist/mtran.d.ts +38 -0
  38. package/dist/mtran.d.ts.map +1 -0
  39. package/dist/oauth2-redirect-bqxabm9x.js +1 -0
  40. package/dist/services/detector.d.ts +15 -0
  41. package/dist/services/detector.d.ts.map +1 -0
  42. package/dist/services/engine.d.ts +3 -0
  43. package/dist/services/engine.d.ts.map +1 -0
  44. package/dist/services/index.d.ts +3 -0
  45. package/dist/services/index.d.ts.map +1 -0
  46. package/dist/swagger-initializer-55m7yyx2.js +20 -0
  47. package/dist/swagger-ui-bfxfcsxh.css +3 -0
  48. package/dist/swagger-ui-bundle-a3dgbj09.js +2 -0
  49. package/dist/swagger-ui-bycaq9jd.js +2 -0
  50. package/dist/swagger-ui-standalone-preset-9dtac9s6.js +2 -0
  51. package/dist/utils/cache.d.ts +3 -0
  52. package/dist/utils/cache.d.ts.map +1 -0
  53. package/dist/utils/index.d.ts +5 -0
  54. package/dist/utils/index.d.ts.map +1 -0
  55. package/dist/utils/lang-alias.d.ts +2 -0
  56. package/dist/utils/lang-alias.d.ts.map +1 -0
  57. package/dist/utils/memory.d.ts +2 -0
  58. package/dist/utils/memory.d.ts.map +1 -0
  59. package/dist/utils/port.d.ts +2 -0
  60. package/dist/utils/port.d.ts.map +1 -0
  61. package/dist/utils/version.d.ts +2 -0
  62. package/dist/utils/version.d.ts.map +1 -0
  63. package/package.json +60 -0
@@ -0,0 +1,31 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/config/index.ts", "../node_modules/fzstd/esm/index.mjs", "../src/logger/index.ts", "../src/core/loader.ts", "../src/core/factory.ts", "../src/utils/version.ts", "../src/models/records.ts", "../src/models/index.ts", "../src/core/engine.ts", "../src/lib/bergamot/bergamot-translator.js", "../src/lib/cld2/cld2.js", "../src/services/detector.ts", "../node_modules/lru-cache/dist/esm/index.js", "../src/utils/cache.ts", "../src/services/engine.ts", "../src/services/index.ts", "../src/utils/lang-alias.ts", "../src/utils/port.ts", "../src/utils/memory.ts", "../src/utils/index.ts", "../src/mtran.ts", "../src/index.ts"],
4
+ "sourcesContent": [
5
+ "import fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nexport interface Config {\n logLevel: string;\n homeDir: string;\n configDir: string;\n modelDir: string;\n host: string;\n port: string;\n enableWebUI: boolean;\n enableOfflineMode: boolean;\n workerIdleTimeout: number;\n workersPerLanguage: number;\n apiToken: string;\n logDir: string;\n logToFile: boolean;\n logConsole: boolean;\n logRequests: boolean;\n maxLengthBreak: number;\n checkUpdate: boolean;\n cacheSize: number;\n}\n\nlet globalConfig: Config | null = null;\n\n// --- Helper Functions for Parsing ---\n\nfunction getArgValue(flag: string): string | null {\n const index = process.argv.indexOf(flag);\n if (index > -1 && index + 1 < process.argv.length) {\n const nextArg = process.argv[index + 1];\n if (!nextArg.startsWith('-')) {\n return nextArg;\n }\n }\n // Handle case like --flag=value\n for (const arg of process.argv) {\n if (arg.startsWith(`${flag}=`)) {\n return arg.split('=')[1];\n }\n }\n return null;\n}\n\nfunction hasFlag(flag: string): boolean {\n return process.argv.includes(flag);\n}\n\nfunction getString(flag: string, envKey: string, defaultValue: string): string {\n const argVal = getArgValue(flag);\n if (argVal !== null) return argVal;\n return process.env[envKey] || defaultValue;\n}\n\nfunction getBool(flag: string, envKey: string, defaultValue: boolean): boolean {\n // Check for explicit true flags: --ui, --ui=true\n if (process.argv.includes(flag)) return true;\n const val = getArgValue(flag);\n if (val !== null) return val.toLowerCase() === 'true' || val === '1';\n\n // Check for explicit false flags (common convention): --no-ui\n const noFlag = `--no-${flag.replace(/^--/, '')}`;\n if (process.argv.includes(noFlag)) return false;\n\n // Fallback to Env\n const envVal = process.env[envKey];\n if (envVal !== undefined) {\n return envVal.toLowerCase() === 'true' || envVal === '1';\n }\n return defaultValue;\n}\n\nfunction getInt(flag: string, envKey: string, defaultValue: number): number {\n const argVal = getArgValue(flag);\n if (argVal !== null) {\n const parsed = parseInt(argVal, 10);\n if (!isNaN(parsed)) return parsed;\n }\n\n const envVal = process.env[envKey];\n if (envVal !== undefined) {\n const parsed = parseInt(envVal, 10);\n if (!isNaN(parsed)) return parsed;\n }\n\n return defaultValue;\n}\n\n// --- Main Config Logic ---\n\nexport function getConfig(): Config {\n if (globalConfig !== null) {\n return globalConfig;\n }\n\n const homeDir = path.join(os.homedir(), '.config', 'mtran');\n \n // Resolve directories first as they might depend on defaults or CLI\n const configDir = getString('--config-dir', 'MT_CONFIG_DIR', path.join(homeDir, 'server'));\n const localModelsDir = path.join(process.cwd(), 'models');\n const defaultModelDir = fs.existsSync(localModelsDir) ? localModelsDir : path.join(homeDir, 'models');\n const modelDir = getString('--model-dir', 'MT_MODEL_DIR', defaultModelDir);\n const logDir = getString('--log-dir', 'MT_LOG_DIR', path.join(homeDir, 'logs'));\n\n globalConfig = {\n homeDir,\n configDir,\n modelDir,\n logDir,\n\n logLevel: getString('--log-level', 'MT_LOG_LEVEL', 'warn'),\n host: getString('--host', 'MT_HOST', '0.0.0.0'),\n port: getString('--port', 'MT_PORT', '8989'),\n\n enableWebUI: getBool('--ui', 'MT_ENABLE_UI', true),\n enableOfflineMode: getBool('--offline', 'MT_OFFLINE', false),\n\n workerIdleTimeout: getInt('--worker-idle-timeout', 'MT_WORKER_IDLE_TIMEOUT', 60),\n workersPerLanguage: getInt('--workers-per-language', 'MT_WORKERS_PER_LANGUAGE', 1),\n maxLengthBreak: getInt('--max-length-break', 'MT_MAX_LENGTH_BREAK', 128),\n\n apiToken: getString('--api-token', 'MT_API_TOKEN', ''),\n\n logToFile: getBool('--log-to-file', 'MT_LOG_TO_FILE', false),\n logConsole: getBool('--log-console', 'MT_LOG_CONSOLE', true),\n logRequests: getBool('--log-requests', 'MT_LOG_REQUESTS', false),\n\n checkUpdate: getBool('--check-update', 'MT_CHECK_UPDATE', true),\n\n cacheSize: getInt('--cache-size', 'MT_CACHE_SIZE', 0),\n };\n\n return globalConfig;\n}\n\nexport function setConfig(config: Partial<Config>) {\n const current = getConfig();\n globalConfig = { ...current, ...config };\n}\n",
6
+ "// Some numerical data is initialized as -1 even when it doesn't need initialization to help the JIT infer types\n// aliases for shorter compressed code (most minifers don't do this)\nvar ab = ArrayBuffer, u8 = Uint8Array, u16 = Uint16Array, i16 = Int16Array, u32 = Uint32Array, i32 = Int32Array;\nvar slc = function (v, s, e) {\n if (u8.prototype.slice)\n return u8.prototype.slice.call(v, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n var n = new u8(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\nvar fill = function (v, n, s, e) {\n if (u8.prototype.fill)\n return u8.prototype.fill.call(v, n, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n for (; s < e; ++s)\n v[s] = n;\n return v;\n};\nvar cpw = function (v, t, s, e) {\n if (u8.prototype.copyWithin)\n return u8.prototype.copyWithin.call(v, t, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n while (s < e) {\n v[t++] = v[s++];\n }\n};\n/**\n * Codes for errors generated within this library\n */\nexport var ZstdErrorCode = {\n InvalidData: 0,\n WindowSizeTooLarge: 1,\n InvalidBlockType: 2,\n FSEAccuracyTooHigh: 3,\n DistanceTooFarBack: 4,\n UnexpectedEOF: 5\n};\n// error codes\nvar ec = [\n 'invalid zstd data',\n 'window size too large (>2046MB)',\n 'invalid block type',\n 'FSE accuracy too high',\n 'match distance too far back',\n 'unexpected EOF'\n];\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\nvar rb = function (d, b, n) {\n var i = 0, o = 0;\n for (; i < n; ++i)\n o |= d[b++] << (i << 3);\n return o;\n};\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\n// read Zstandard frame header\nvar rzfh = function (dat, w) {\n var n3 = dat[0] | (dat[1] << 8) | (dat[2] << 16);\n if (n3 == 0x2FB528 && dat[3] == 253) {\n // Zstandard\n var flg = dat[4];\n // single segment checksum dict flag frame content flag\n var ss = (flg >> 5) & 1, cc = (flg >> 2) & 1, df = flg & 3, fcf = flg >> 6;\n if (flg & 8)\n err(0);\n // byte\n var bt = 6 - ss;\n // dict bytes\n var db = df == 3 ? 4 : df;\n // dictionary id\n var di = rb(dat, bt, db);\n bt += db;\n // frame size bytes\n var fsb = fcf ? (1 << fcf) : ss;\n // frame source size\n var fss = rb(dat, bt, fsb) + ((fcf == 1) && 256);\n // window size\n var ws = fss;\n if (!ss) {\n // window descriptor\n var wb = 1 << (10 + (dat[5] >> 3));\n ws = wb + (wb >> 3) * (dat[5] & 7);\n }\n if (ws > 2145386496)\n err(1);\n var buf = new u8((w == 1 ? (fss || ws) : w ? 0 : ws) + 12);\n buf[0] = 1, buf[4] = 4, buf[8] = 8;\n return {\n b: bt + fsb,\n y: 0,\n l: 0,\n d: di,\n w: (w && w != 1) ? w : buf.subarray(12),\n e: ws,\n o: new i32(buf.buffer, 0, 3),\n u: fss,\n c: cc,\n m: Math.min(131072, ws)\n };\n }\n else if (((n3 >> 4) | (dat[3] << 20)) == 0x184D2A5) {\n // skippable\n return b4(dat, 4) + 8;\n }\n err(0);\n};\n// most significant bit for nonzero\nvar msb = function (val) {\n var bits = 0;\n for (; (1 << bits) <= val; ++bits)\n ;\n return bits - 1;\n};\n// read finite state entropy\nvar rfse = function (dat, bt, mal) {\n // table pos\n var tpos = (bt << 3) + 4;\n // accuracy log\n var al = (dat[bt] & 15) + 5;\n if (al > mal)\n err(3);\n // size\n var sz = 1 << al;\n // probabilities symbols repeat index high threshold\n var probs = sz, sym = -1, re = -1, i = -1, ht = sz;\n // optimization: single allocation is much faster\n var buf = new ab(512 + (sz << 2));\n var freq = new i16(buf, 0, 256);\n // same view as freq\n var dstate = new u16(buf, 0, 256);\n var nstate = new u16(buf, 512, sz);\n var bb1 = 512 + (sz << 1);\n var syms = new u8(buf, bb1, sz);\n var nbits = new u8(buf, bb1 + sz);\n while (sym < 255 && probs > 0) {\n var bits = msb(probs + 1);\n var cbt = tpos >> 3;\n // mask\n var msk = (1 << (bits + 1)) - 1;\n var val = ((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (tpos & 7)) & msk;\n // mask (1 fewer bit)\n var msk1fb = (1 << bits) - 1;\n // max small value\n var msv = msk - probs - 1;\n // small value\n var sval = val & msk1fb;\n if (sval < msv)\n tpos += bits, val = sval;\n else {\n tpos += bits + 1;\n if (val > msk1fb)\n val -= msv;\n }\n freq[++sym] = --val;\n if (val == -1) {\n probs += val;\n syms[--ht] = sym;\n }\n else\n probs -= val;\n if (!val) {\n do {\n // repeat byte\n var rbt = tpos >> 3;\n re = ((dat[rbt] | (dat[rbt + 1] << 8)) >> (tpos & 7)) & 3;\n tpos += 2;\n sym += re;\n } while (re == 3);\n }\n }\n if (sym > 255 || probs)\n err(0);\n var sympos = 0;\n // sym step (coprime with sz - formula from zstd source)\n var sstep = (sz >> 1) + (sz >> 3) + 3;\n // sym mask\n var smask = sz - 1;\n for (var s = 0; s <= sym; ++s) {\n var sf = freq[s];\n if (sf < 1) {\n dstate[s] = -sf;\n continue;\n }\n // This is split into two loops in zstd to avoid branching, but as JS is higher-level that is unnecessary\n for (i = 0; i < sf; ++i) {\n syms[sympos] = s;\n do {\n sympos = (sympos + sstep) & smask;\n } while (sympos >= ht);\n }\n }\n // After spreading symbols, should be zero again\n if (sympos)\n err(0);\n for (i = 0; i < sz; ++i) {\n // next state\n var ns = dstate[syms[i]]++;\n // num bits\n var nb = nbits[i] = al - msb(ns);\n nstate[i] = (ns << nb) - sz;\n }\n return [(tpos + 7) >> 3, {\n b: al,\n s: syms,\n n: nbits,\n t: nstate\n }];\n};\n// read huffman\nvar rhu = function (dat, bt) {\n // index weight count\n var i = 0, wc = -1;\n // buffer header byte\n var buf = new u8(292), hb = dat[bt];\n // huffman weights\n var hw = buf.subarray(0, 256);\n // rank count\n var rc = buf.subarray(256, 268);\n // rank index\n var ri = new u16(buf.buffer, 268);\n // NOTE: at this point bt is 1 less than expected\n if (hb < 128) {\n // end byte, fse decode table\n var _a = rfse(dat, bt + 1, 6), ebt = _a[0], fdt = _a[1];\n bt += hb;\n var epos = ebt << 3;\n // last byte\n var lb = dat[bt];\n if (!lb)\n err(0);\n // state1 state2 state1 bits state2 bits\n var st1 = 0, st2 = 0, btr1 = fdt.b, btr2 = btr1;\n // fse pos\n // pre-increment to account for original deficit of 1\n var fpos = (++bt << 3) - 8 + msb(lb);\n for (;;) {\n fpos -= btr1;\n if (fpos < epos)\n break;\n var cbt = fpos >> 3;\n st1 += ((dat[cbt] | (dat[cbt + 1] << 8)) >> (fpos & 7)) & ((1 << btr1) - 1);\n hw[++wc] = fdt.s[st1];\n fpos -= btr2;\n if (fpos < epos)\n break;\n cbt = fpos >> 3;\n st2 += ((dat[cbt] | (dat[cbt + 1] << 8)) >> (fpos & 7)) & ((1 << btr2) - 1);\n hw[++wc] = fdt.s[st2];\n btr1 = fdt.n[st1];\n st1 = fdt.t[st1];\n btr2 = fdt.n[st2];\n st2 = fdt.t[st2];\n }\n if (++wc > 255)\n err(0);\n }\n else {\n wc = hb - 127;\n for (; i < wc; i += 2) {\n var byte = dat[++bt];\n hw[i] = byte >> 4;\n hw[i + 1] = byte & 15;\n }\n ++bt;\n }\n // weight exponential sum\n var wes = 0;\n for (i = 0; i < wc; ++i) {\n var wt = hw[i];\n // bits must be at most 11, same as weight\n if (wt > 11)\n err(0);\n wes += wt && (1 << (wt - 1));\n }\n // max bits\n var mb = msb(wes) + 1;\n // table size\n var ts = 1 << mb;\n // remaining sum\n var rem = ts - wes;\n // must be power of 2\n if (rem & (rem - 1))\n err(0);\n hw[wc++] = msb(rem) + 1;\n for (i = 0; i < wc; ++i) {\n var wt = hw[i];\n ++rc[hw[i] = wt && (mb + 1 - wt)];\n }\n // huf buf\n var hbuf = new u8(ts << 1);\n // symbols num bits\n var syms = hbuf.subarray(0, ts), nb = hbuf.subarray(ts);\n ri[mb] = 0;\n for (i = mb; i > 0; --i) {\n var pv = ri[i];\n fill(nb, i, pv, ri[i - 1] = pv + rc[i] * (1 << (mb - i)));\n }\n if (ri[0] != ts)\n err(0);\n for (i = 0; i < wc; ++i) {\n var bits = hw[i];\n if (bits) {\n var code = ri[bits];\n fill(syms, i, code, ri[bits] = code + (1 << (mb - bits)));\n }\n }\n return [bt, {\n n: nb,\n b: mb,\n s: syms\n }];\n};\n// Tables generated using this:\n// https://gist.github.com/101arrowz/a979452d4355992cbf8f257cbffc9edd\n// default literal length table\nvar dllt = /*#__PURE__*/ rfse(/*#__PURE__*/ new u8([\n 81, 16, 99, 140, 49, 198, 24, 99, 12, 33, 196, 24, 99, 102, 102, 134, 70, 146, 4\n]), 0, 6)[1];\n// default match length table\nvar dmlt = /*#__PURE__*/ rfse(/*#__PURE__*/ new u8([\n 33, 20, 196, 24, 99, 140, 33, 132, 16, 66, 8, 33, 132, 16, 66, 8, 33, 68, 68, 68, 68, 68, 68, 68, 68, 36, 9\n]), 0, 6)[1];\n// default offset code table\nvar doct = /*#__PURE__ */ rfse(/*#__PURE__*/ new u8([\n 32, 132, 16, 66, 102, 70, 68, 68, 68, 68, 36, 73, 2\n]), 0, 5)[1];\n// bits to baseline\nvar b2bl = function (b, s) {\n var len = b.length, bl = new i32(len);\n for (var i = 0; i < len; ++i) {\n bl[i] = s;\n s += 1 << b[i];\n }\n return bl;\n};\n// literal length bits\nvar llb = /*#__PURE__ */ new u8(( /*#__PURE__ */new i32([\n 0, 0, 0, 0, 16843009, 50528770, 134678020, 202050057, 269422093\n])).buffer, 0, 36);\n// literal length baseline\nvar llbl = /*#__PURE__ */ b2bl(llb, 0);\n// match length bits\nvar mlb = /*#__PURE__ */ new u8(( /*#__PURE__ */new i32([\n 0, 0, 0, 0, 0, 0, 0, 0, 16843009, 50528770, 117769220, 185207048, 252579084, 16\n])).buffer, 0, 53);\n// match length baseline\nvar mlbl = /*#__PURE__ */ b2bl(mlb, 3);\n// decode huffman stream\nvar dhu = function (dat, out, hu) {\n var len = dat.length, ss = out.length, lb = dat[len - 1], msk = (1 << hu.b) - 1, eb = -hu.b;\n if (!lb)\n err(0);\n var st = 0, btr = hu.b, pos = (len << 3) - 8 + msb(lb) - btr, i = -1;\n for (; pos > eb && i < ss;) {\n var cbt = pos >> 3;\n var val = (dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (pos & 7);\n st = ((st << btr) | val) & msk;\n out[++i] = hu.s[st];\n pos -= (btr = hu.n[st]);\n }\n if (pos != eb || i + 1 != ss)\n err(0);\n};\n// decode huffman stream 4x\n// TODO: use workers to parallelize\nvar dhu4 = function (dat, out, hu) {\n var bt = 6;\n var ss = out.length, sz1 = (ss + 3) >> 2, sz2 = sz1 << 1, sz3 = sz1 + sz2;\n dhu(dat.subarray(bt, bt += dat[0] | (dat[1] << 8)), out.subarray(0, sz1), hu);\n dhu(dat.subarray(bt, bt += dat[2] | (dat[3] << 8)), out.subarray(sz1, sz2), hu);\n dhu(dat.subarray(bt, bt += dat[4] | (dat[5] << 8)), out.subarray(sz2, sz3), hu);\n dhu(dat.subarray(bt), out.subarray(sz3), hu);\n};\n// read Zstandard block\nvar rzb = function (dat, st, out) {\n var _a;\n var bt = st.b;\n // byte 0 block type\n var b0 = dat[bt], btype = (b0 >> 1) & 3;\n st.l = b0 & 1;\n var sz = (b0 >> 3) | (dat[bt + 1] << 5) | (dat[bt + 2] << 13);\n // end byte for block\n var ebt = (bt += 3) + sz;\n if (btype == 1) {\n if (bt >= dat.length)\n return;\n st.b = bt + 1;\n if (out) {\n fill(out, dat[bt], st.y, st.y += sz);\n return out;\n }\n return fill(new u8(sz), dat[bt]);\n }\n if (ebt > dat.length)\n return;\n if (btype == 0) {\n st.b = ebt;\n if (out) {\n out.set(dat.subarray(bt, ebt), st.y);\n st.y += sz;\n return out;\n }\n return slc(dat, bt, ebt);\n }\n if (btype == 2) {\n // byte 3 lit btype size format\n var b3 = dat[bt], lbt = b3 & 3, sf = (b3 >> 2) & 3;\n // lit src size lit cmp sz 4 streams\n var lss = b3 >> 4, lcs = 0, s4 = 0;\n if (lbt < 2) {\n if (sf & 1)\n lss |= (dat[++bt] << 4) | ((sf & 2) && (dat[++bt] << 12));\n else\n lss = b3 >> 3;\n }\n else {\n s4 = sf;\n if (sf < 2)\n lss |= ((dat[++bt] & 63) << 4), lcs = (dat[bt] >> 6) | (dat[++bt] << 2);\n else if (sf == 2)\n lss |= (dat[++bt] << 4) | ((dat[++bt] & 3) << 12), lcs = (dat[bt] >> 2) | (dat[++bt] << 6);\n else\n lss |= (dat[++bt] << 4) | ((dat[++bt] & 63) << 12), lcs = (dat[bt] >> 6) | (dat[++bt] << 2) | (dat[++bt] << 10);\n }\n ++bt;\n // add literals to end - can never overlap with backreferences because unused literals always appended\n var buf = out ? out.subarray(st.y, st.y + st.m) : new u8(st.m);\n // starting point for literals\n var spl = buf.length - lss;\n if (lbt == 0)\n buf.set(dat.subarray(bt, bt += lss), spl);\n else if (lbt == 1)\n fill(buf, dat[bt++], spl);\n else {\n // huffman table\n var hu = st.h;\n if (lbt == 2) {\n var hud = rhu(dat, bt);\n // subtract description length\n lcs += bt - (bt = hud[0]);\n st.h = hu = hud[1];\n }\n else if (!hu)\n err(0);\n (s4 ? dhu4 : dhu)(dat.subarray(bt, bt += lcs), buf.subarray(spl), hu);\n }\n // num sequences\n var ns = dat[bt++];\n if (ns) {\n if (ns == 255)\n ns = (dat[bt++] | (dat[bt++] << 8)) + 0x7F00;\n else if (ns > 127)\n ns = ((ns - 128) << 8) | dat[bt++];\n // symbol compression modes\n var scm = dat[bt++];\n if (scm & 3)\n err(0);\n var dts = [dmlt, doct, dllt];\n for (var i = 2; i > -1; --i) {\n var md = (scm >> ((i << 1) + 2)) & 3;\n if (md == 1) {\n // rle buf\n var rbuf = new u8([0, 0, dat[bt++]]);\n dts[i] = {\n s: rbuf.subarray(2, 3),\n n: rbuf.subarray(0, 1),\n t: new u16(rbuf.buffer, 0, 1),\n b: 0\n };\n }\n else if (md == 2) {\n // accuracy log 8 for offsets, 9 for others\n _a = rfse(dat, bt, 9 - (i & 1)), bt = _a[0], dts[i] = _a[1];\n }\n else if (md == 3) {\n if (!st.t)\n err(0);\n dts[i] = st.t[i];\n }\n }\n var _b = st.t = dts, mlt = _b[0], oct = _b[1], llt = _b[2];\n var lb = dat[ebt - 1];\n if (!lb)\n err(0);\n var spos = (ebt << 3) - 8 + msb(lb) - llt.b, cbt = spos >> 3, oubt = 0;\n var lst = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << llt.b) - 1);\n cbt = (spos -= oct.b) >> 3;\n var ost = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << oct.b) - 1);\n cbt = (spos -= mlt.b) >> 3;\n var mst = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << mlt.b) - 1);\n for (++ns; --ns;) {\n var llc = llt.s[lst];\n var lbtr = llt.n[lst];\n var mlc = mlt.s[mst];\n var mbtr = mlt.n[mst];\n var ofc = oct.s[ost];\n var obtr = oct.n[ost];\n cbt = (spos -= ofc) >> 3;\n var ofp = 1 << ofc;\n var off = ofp + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16) | (dat[cbt + 3] << 24)) >>> (spos & 7)) & (ofp - 1));\n cbt = (spos -= mlb[mlc]) >> 3;\n var ml = mlbl[mlc] + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (spos & 7)) & ((1 << mlb[mlc]) - 1));\n cbt = (spos -= llb[llc]) >> 3;\n var ll = llbl[llc] + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (spos & 7)) & ((1 << llb[llc]) - 1));\n cbt = (spos -= lbtr) >> 3;\n lst = llt.t[lst] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << lbtr) - 1));\n cbt = (spos -= mbtr) >> 3;\n mst = mlt.t[mst] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << mbtr) - 1));\n cbt = (spos -= obtr) >> 3;\n ost = oct.t[ost] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << obtr) - 1));\n if (off > 3) {\n st.o[2] = st.o[1];\n st.o[1] = st.o[0];\n st.o[0] = off -= 3;\n }\n else {\n var idx = off - (ll != 0);\n if (idx) {\n off = idx == 3 ? st.o[0] - 1 : st.o[idx];\n if (idx > 1)\n st.o[2] = st.o[1];\n st.o[1] = st.o[0];\n st.o[0] = off;\n }\n else\n off = st.o[0];\n }\n for (var i = 0; i < ll; ++i) {\n buf[oubt + i] = buf[spl + i];\n }\n oubt += ll, spl += ll;\n var stin = oubt - off;\n if (stin < 0) {\n var len = -stin;\n var bs = st.e + stin;\n if (len > ml)\n len = ml;\n for (var i = 0; i < len; ++i) {\n buf[oubt + i] = st.w[bs + i];\n }\n oubt += len, ml -= len, stin = 0;\n }\n for (var i = 0; i < ml; ++i) {\n buf[oubt + i] = buf[stin + i];\n }\n oubt += ml;\n }\n if (oubt != spl) {\n while (spl < buf.length) {\n buf[oubt++] = buf[spl++];\n }\n }\n else\n oubt = buf.length;\n if (out)\n st.y += oubt;\n else\n buf = slc(buf, 0, oubt);\n }\n else if (out) {\n st.y += lss;\n if (spl) {\n for (var i = 0; i < lss; ++i) {\n buf[i] = buf[spl + i];\n }\n }\n }\n else if (spl)\n buf = slc(buf, spl);\n st.b = ebt;\n return buf;\n }\n err(2);\n};\n// concat\nvar cct = function (bufs, ol) {\n if (bufs.length == 1)\n return bufs[0];\n var buf = new u8(ol);\n for (var i = 0, b = 0; i < bufs.length; ++i) {\n var chk = bufs[i];\n buf.set(chk, b);\n b += chk.length;\n }\n return buf;\n};\n/**\n * Decompresses Zstandard data\n * @param dat The input data\n * @param buf The output buffer. If unspecified, the function will allocate\n * exactly enough memory to fit the decompressed data. If your\n * data has multiple frames and you know the output size, specifying\n * it will yield better performance.\n * @returns The decompressed data\n */\nexport function decompress(dat, buf) {\n var bufs = [], nb = +!buf;\n var bt = 0, ol = 0;\n for (; dat.length;) {\n var st = rzfh(dat, nb || buf);\n if (typeof st == 'object') {\n if (nb) {\n buf = null;\n if (st.w.length == st.u) {\n bufs.push(buf = st.w);\n ol += st.u;\n }\n }\n else {\n bufs.push(buf);\n st.e = 0;\n }\n for (; !st.l;) {\n var blk = rzb(dat, st, buf);\n if (!blk)\n err(5);\n if (buf)\n st.e = st.y;\n else {\n bufs.push(blk);\n ol += blk.length;\n cpw(st.w, 0, blk.length);\n st.w.set(blk, st.w.length - blk.length);\n }\n }\n bt = st.b + (st.c * 4);\n }\n else\n bt = st;\n dat = dat.subarray(bt);\n }\n return cct(bufs, ol);\n}\n/**\n * Decompressor for Zstandard streamed data\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a Zstandard decompressor\n * @param ondata The handler for stream data\n */\n function Decompress(ondata) {\n this.ondata = ondata;\n this.c = [];\n this.l = 0;\n this.z = 0;\n }\n /**\n * Pushes data to be decompressed\n * @param chunk The chunk of data to push\n * @param final Whether or not this is the last chunk in the stream\n */\n Decompress.prototype.push = function (chunk, final) {\n if (typeof this.s == 'number') {\n var sub = Math.min(chunk.length, this.s);\n chunk = chunk.subarray(sub);\n this.s -= sub;\n }\n var sl = chunk.length;\n var ncs = sl + this.l;\n if (!this.s) {\n if (final) {\n if (!ncs) {\n this.ondata(new u8(0), true);\n return;\n }\n // min for frame + one block\n if (ncs < 5)\n err(5);\n }\n else if (ncs < 18) {\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n if (this.l) {\n this.c.push(chunk);\n chunk = cct(this.c, ncs);\n this.c = [];\n this.l = 0;\n }\n if (typeof (this.s = rzfh(chunk)) == 'number')\n return this.push(chunk, final);\n }\n if (typeof this.s != 'number') {\n if (ncs < (this.z || 3)) {\n if (final)\n err(5);\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n if (this.l) {\n this.c.push(chunk);\n chunk = cct(this.c, ncs);\n this.c = [];\n this.l = 0;\n }\n if (!this.z && ncs < (this.z = (chunk[this.s.b] & 2) ? 4 : 3 + ((chunk[this.s.b] >> 3) | (chunk[this.s.b + 1] << 5) | (chunk[this.s.b + 2] << 13)))) {\n if (final)\n err(5);\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n else\n this.z = 0;\n for (;;) {\n var blk = rzb(chunk, this.s);\n if (!blk) {\n if (final)\n err(5);\n var adc = chunk.subarray(this.s.b);\n this.s.b = 0;\n this.c.push(adc), this.l += adc.length;\n return;\n }\n else {\n this.ondata(blk, false);\n cpw(this.s.w, 0, blk.length);\n this.s.w.set(blk, this.s.w.length - blk.length);\n }\n if (this.s.l) {\n var rest = chunk.subarray(this.s.b);\n this.s = this.s.c * 4;\n this.push(rest, final);\n return;\n }\n }\n }\n else if (final)\n err(5);\n };\n return Decompress;\n}());\nexport { Decompress };\n",
7
+ "import fs from 'fs';\nimport path from 'path';\nimport util from 'util';\nimport { getConfig } from '@/config/index.js';\n\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\nconst logLevels: Record<LogLevel, number> = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n};\n\nconst colors = {\n reset: '\\x1b[0m',\n cyan: '\\x1b[36m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n red: '\\x1b[31m',\n};\n\nlet currentLogLevel: LogLevel | null = null;\n\n// File logging state\nlet logStream: fs.WriteStream | null = null;\nlet currentLogDate = '';\n\nexport function setLogLevel(level: LogLevel) {\n currentLogLevel = level;\n}\n\nexport function getLogLevel(): string {\n if (currentLogLevel === null) {\n const config = getConfig();\n currentLogLevel = (config.logLevel as LogLevel) || 'warn';\n }\n return currentLogLevel;\n}\n\nfunction shouldLog(level: LogLevel): boolean {\n const currentLevel = getLogLevel() as LogLevel;\n return logLevels[level] >= logLevels[currentLevel];\n}\n\nfunction getTimestamp(): string {\n return new Date().toISOString().replace('T', ' ').replace('Z', '');\n}\n\nfunction getLogStream() {\n const config = getConfig();\n if (!config.logToFile) return null;\n\n const today = new Date().toISOString().split('T')[0];\n if (currentLogDate !== today || !logStream) {\n if (logStream) {\n logStream.end();\n }\n if (!fs.existsSync(config.logDir)) {\n try {\n fs.mkdirSync(config.logDir, { recursive: true });\n } catch (err) {\n console.error(`Failed to create log directory: ${config.logDir}`, err);\n return null;\n }\n }\n const logPath = path.join(config.logDir, `mtran-${today}.log`);\n try {\n logStream = fs.createWriteStream(logPath, { flags: 'a' });\n currentLogDate = today;\n } catch (err) {\n console.error(`Failed to create log stream: ${logPath}`, err);\n return null;\n }\n }\n return logStream;\n}\n\nfunction logInternal(level: LogLevel, color: string, force: boolean, message: string, ...args: any[]) {\n if (!force && !shouldLog(level)) return;\n\n const timestamp = getTimestamp();\n const formattedMessage = util.format(message, ...args);\n \n const config = getConfig();\n\n // Console output (with colors)\n if (config.logConsole) {\n const consoleOutput = `${color}[${level.toUpperCase()}]${colors.reset} ${timestamp} ${formattedMessage}`;\n if (level === 'error' || level === 'warn') {\n console.error(consoleOutput);\n } else {\n console.log(consoleOutput);\n }\n }\n\n // File output (without colors)\n const stream = getLogStream();\n if (stream) {\n const fileOutput = `[${level.toUpperCase()}] ${timestamp} ${formattedMessage}\\n`;\n stream.write(fileOutput);\n }\n}\n\nfunction log(level: LogLevel, color: string, message: string, ...args: any[]) {\n logInternal(level, color, false, message, ...args);\n}\n\nexport function debug(message: string, ...args: any[]) {\n log('debug', colors.cyan, message, ...args);\n}\n\nexport function info(message: string, ...args: any[]) {\n log('info', colors.green, message, ...args);\n}\n\nexport function important(message: string, ...args: any[]) {\n logInternal('info', colors.green, true, message, ...args);\n}\n\nexport function warn(message: string, ...args: any[]) {\n log('warn', colors.yellow, message, ...args);\n}\n\nexport function error(message: string, ...args: any[]) {\n log('error', colors.red, message, ...args);\n}\n\nexport function fatal(message: string, ...args: any[]) {\n log('error', colors.red, message, ...args);\n process.exit(1);\n}\n\nexport default {\n setLogLevel,\n getLogLevel,\n debug,\n info,\n important,\n warn,\n error,\n fatal,\n};",
8
+ "import { FileSystem, BergamotModule } from '@/core/interfaces.js';\nimport logger from '@/logger/index.js';\n\nexport interface ModelFileNames {\n model?: string;\n lex?: string;\n srcvocab?: string;\n trgvocab?: string;\n}\n\nexport interface ModelBuffers {\n model: Buffer;\n lex: Buffer;\n srcvocab: Buffer;\n trgvocab: Buffer;\n qualityModel?: Buffer;\n}\n\nexport class ResourceLoader {\n constructor(private fileSystem: FileSystem) {}\n\n async loadBergamotModule(wasmBinary: ArrayBuffer | Buffer, loadBergamot: any): Promise<BergamotModule> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(new Error('WASM initialization timeout'));\n }, 30000);\n\n logger.info('[Bergamot] Loading WASM, binary size:', wasmBinary.byteLength);\n\n loadBergamot({\n wasmBinary: wasmBinary,\n print: (msg: string) => logger.debug(`[Bergamot]: ${msg}`),\n printErr: (msg: string) => logger.error(`[Bergamot Error]: ${msg}`),\n onRuntimeInitialized: function(this: BergamotModule) {\n logger.info('[Bergamot] Runtime initialized successfully');\n clearTimeout(timeout);\n resolve(this);\n },\n onAbort: (msg: string) => {\n logger.error('[Bergamot] Aborted:', msg);\n clearTimeout(timeout);\n reject(new Error(`WASM aborted: ${msg}`));\n }\n });\n });\n }\n\n async loadModelFiles(modelPath: string, fileNames: ModelFileNames | null = null): Promise<ModelBuffers> {\n const defaultFiles: Required<ModelFileNames> = {\n model: 'model.enzh.intgemm.alphas.bin',\n lex: 'lex.50.50.enzh.s2t.bin',\n srcvocab: 'srcvocab.enzh.spm',\n trgvocab: 'trgvocab.enzh.spm'\n };\n\n const files = { ...defaultFiles, ...fileNames };\n const buffers: Partial<ModelBuffers> = {};\n\n for (const [key, filename] of Object.entries(files)) {\n const filepath = this.fileSystem.joinPath(modelPath, filename);\n if (await this.fileSystem.fileExists(filepath)) {\n buffers[key as keyof ModelBuffers] = await this.fileSystem.readFile(filepath);\n } else {\n throw new Error(`Model file not found: ${filepath}`);\n }\n }\n\n return buffers as ModelBuffers;\n }\n\n async loadWasmBinary(wasmPath: string): Promise<Buffer> {\n return this.fileSystem.readFile(wasmPath);\n }\n}\n",
9
+ "import fs from 'fs/promises'\nimport path from 'path'\nimport { decompress } from 'fzstd'\nimport { ResourceLoader } from '@/core/loader.js'\nimport { FileSystem } from '@/core/interfaces.js'\n\nexport interface DownloadOptions {\n url: string\n outputPath: string\n hash?: string\n}\n\nexport class Downloader {\n private timeout: number\n\n constructor(timeout: number = 1800000) {\n this.timeout = timeout\n }\n\n async download(options: DownloadOptions): Promise<void> {\n const { url, outputPath, hash } = options\n\n if (hash) {\n try {\n await fs.access(outputPath)\n return\n } catch {\n }\n }\n\n const data = await this.downloadBinary(url)\n await fs.writeFile(outputPath, data)\n }\n\n async decompress(inputPath: string, outputPath: string): Promise<void> {\n const compressedData = await fs.readFile(inputPath)\n const decompressed = decompress(compressedData)\n await fs.writeFile(outputPath, decompressed)\n }\n\n private async downloadBinary(url: string): Promise<Buffer> {\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), this.timeout)\n\n try {\n const response = await fetch(url, {\n signal: controller.signal,\n headers: {\n 'User-Agent': 'MTranServer/4.0.0'\n }\n })\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`)\n }\n\n const arrayBuffer = await response.arrayBuffer()\n return Buffer.from(arrayBuffer)\n } finally {\n clearTimeout(timeoutId)\n }\n }\n}\n\nexport function createDownloader(): Downloader {\n return new Downloader()\n}\n\nclass NodeFileSystem implements FileSystem {\n async readFile(filePath: string): Promise<Buffer> {\n return fs.readFile(filePath)\n }\n\n async fileExists(filePath: string): Promise<boolean> {\n try {\n await fs.access(filePath)\n return true\n } catch {\n return false\n }\n }\n\n joinPath(...paths: string[]): string {\n return path.join(...paths)\n }\n}\n\nexport function createResourceLoader(): ResourceLoader {\n return new ResourceLoader(new NodeFileSystem())\n}\n\n",
10
+ "export function getLargestVersion(versions: string[]): string {\n if (versions.length === 0) return '';\n if (versions.length === 1) return versions[0];\n\n return versions.reduce((max, current) => {\n return compareVersions(current, max) > 0 ? current : max;\n });\n}\n\nfunction compareVersions(v1: string, v2: string): number {\n const parts1 = v1.split('.').map(p => parseInt(p, 10) || 0);\n const parts2 = v2.split('.').map(p => parseInt(p, 10) || 0);\n\n const maxLength = Math.max(parts1.length, parts2.length);\n\n for (let i = 0; i < maxLength; i++) {\n const p1 = parts1[i] || 0;\n const p2 = parts2[i] || 0;\n\n if (p1 > p2) return 1;\n if (p1 < p2) return -1;\n }\n\n return 0;\n}\n",
11
+ "import crypto from 'crypto';\nimport fs from 'fs/promises';\nimport path from 'path';\nimport { createDownloader } from '@/core/factory.js';\nimport { getConfig } from '@/config/index.js';\nimport * as logger from '@/logger/index.js';\nimport { getLargestVersion } from '@/utils/version.js';\n\nconst RECORDS_URL = 'https://firefox.settings.services.mozilla.com/v1/buckets/main-preview/collections/translations-models-v2/records';\nconst ATTACHMENTS_BASE_URL = 'https://firefox-settings-attachments.cdn.mozilla.net';\n\nexport interface Attachment {\n hash: string;\n size: number;\n filename: string;\n location: string;\n mimetype: string;\n}\n\nexport interface RecordItem {\n name: string;\n schema: number;\n version: string;\n fileType: string;\n attachment: Attachment;\n architecture?: string;\n sourceLanguage: string;\n targetLanguage: string;\n decompressedHash?: string;\n decompressedSize?: number;\n filter_expression?: string;\n id: string;\n last_modified: number;\n}\n\nexport interface RecordsData {\n data: RecordItem[];\n}\n\nexport let globalRecords: RecordsData | null = null;\n\nexport function hasLanguagePair(fromLang: string, toLang: string): boolean {\n if (!globalRecords) return false;\n return globalRecords.data.some(\n r => r.sourceLanguage === fromLang && r.targetLanguage === toLang\n );\n}\n\nexport function getLanguagePairs(): string[] {\n if (!globalRecords) return [];\n const pairs = new Set<string>();\n for (const record of globalRecords.data) {\n pairs.add(`${record.sourceLanguage}-${record.targetLanguage}`);\n }\n return Array.from(pairs);\n}\n\nexport function getSupportedLanguages(): string[] {\n if (!globalRecords) return [];\n const langs = new Set<string>();\n for (const record of globalRecords.data) {\n langs.add(record.sourceLanguage);\n langs.add(record.targetLanguage);\n }\n return Array.from(langs);\n}\n\nfunction computeHash(data: Buffer): string {\n return crypto.createHash('sha256').update(data).digest('hex');\n}\n\nasync function computeFileHash(filePath: string): Promise<string> {\n const data = await fs.readFile(filePath);\n return computeHash(data);\n}\n\nexport async function initRecords(): Promise<void> {\n const config = getConfig();\n const recordsPath = path.join(config.configDir, 'records.json');\n\n await fs.mkdir(config.configDir, { recursive: true });\n await fs.mkdir(config.modelDir, { recursive: true });\n\n if (config.enableOfflineMode) {\n logger.info('Offline mode enabled, records must be pre-downloaded');\n try {\n const data = await fs.readFile(recordsPath, 'utf-8');\n globalRecords = JSON.parse(data);\n if (globalRecords) {\n logger.debug(`Loaded ${globalRecords.data.length} model records`);\n }\n } catch (err) {\n throw new Error(`Failed to load records in offline mode: ${err}`);\n }\n return;\n }\n\n logger.info('Downloading latest records.json from remote...');\n try {\n const downloader = createDownloader();\n await downloader.download({\n url: RECORDS_URL,\n outputPath: recordsPath,\n });\n\n const data = await fs.readFile(recordsPath, 'utf-8');\n globalRecords = JSON.parse(data);\n if (globalRecords) {\n logger.debug(`Loaded ${globalRecords.data.length} model records`);\n }\n } catch (err) {\n logger.warn(`Failed to download records.json: ${err}`);\n throw err;\n }\n}\n\nexport async function downloadModel(\n toLang: string,\n fromLang: string,\n version?: string\n): Promise<void> {\n if (!globalRecords) {\n await initRecords();\n }\n\n if (!globalRecords) {\n throw new Error('Records not initialized');\n }\n\n const matchedRecords = globalRecords.data.filter(\n r =>\n r.targetLanguage === toLang &&\n r.sourceLanguage === fromLang &&\n (!version || r.version === version)\n );\n\n if (matchedRecords.length === 0) {\n throw new Error(`No model found for ${fromLang} -> ${toLang}`);\n }\n\n let targetRecords = matchedRecords;\n if (!version) {\n const fileTypeMap = new Map<string, RecordItem[]>();\n for (const record of matchedRecords) {\n const arr = fileTypeMap.get(record.fileType) || [];\n arr.push(record);\n fileTypeMap.set(record.fileType, arr);\n }\n\n targetRecords = [];\n for (const records of fileTypeMap.values()) {\n const versions = records.map(r => r.version);\n const latest = getLargestVersion(versions);\n const latestRecord = records.find(r => r.version === latest);\n if (latestRecord) targetRecords.push(latestRecord);\n }\n }\n\n const config = getConfig();\n const langPairDir = path.join(config.modelDir, `${fromLang}_${toLang}`);\n await fs.mkdir(langPairDir, { recursive: true });\n\n logger.info(`Downloading model files for ${fromLang} -> ${toLang}`);\n\n const downloader = createDownloader();\n\n for (const record of targetRecords) {\n const filename = record.attachment.filename;\n const fileUrl = `${ATTACHMENTS_BASE_URL}/${record.attachment.location}`;\n const compressedPath = path.join(langPairDir, filename);\n const decompressedFilename = filename.replace(/\\.zst$/, '');\n const decompressedPath = path.join(langPairDir, decompressedFilename);\n\n let needDownload = false;\n try {\n await fs.access(decompressedPath);\n if (record.decompressedHash) {\n const localHash = await computeFileHash(decompressedPath);\n if (localHash !== record.decompressedHash) {\n logger.info(`Model file ${decompressedFilename} hash mismatch, updating...`);\n needDownload = true;\n }\n }\n } catch {\n needDownload = true;\n }\n\n if (!needDownload) {\n logger.debug(`Model file up to date: ${decompressedFilename}`);\n continue;\n }\n\n logger.debug(`Downloading model file: ${filename} (type: ${record.fileType})`);\n await downloader.download({\n url: fileUrl,\n outputPath: compressedPath,\n });\n\n if (filename.endsWith('.zst')) {\n logger.debug(`Decompressing: ${filename} -> ${decompressedFilename}`);\n await downloader.decompress(compressedPath, decompressedPath);\n await fs.unlink(compressedPath);\n }\n }\n\n logger.info(`Model files downloaded successfully for ${fromLang} -> ${toLang}`);\n}\n\nexport async function getModelFiles(\n modelDir: string,\n fromLang: string,\n toLang: string\n): Promise<Record<string, string>> {\n if (!globalRecords) {\n await initRecords();\n }\n\n if (!globalRecords) {\n throw new Error('Records not initialized');\n }\n\n const langPairDir = path.join(modelDir, `${fromLang}_${toLang}`);\n const fileTypeMap = new Map<string, string>();\n\n for (const record of globalRecords.data) {\n if (record.sourceLanguage === fromLang && record.targetLanguage === toLang) {\n const filename = record.attachment.filename.replace(/\\.zst$/, '');\n const fullPath = path.join(langPairDir, filename);\n\n try {\n await fs.access(fullPath);\n fileTypeMap.set(record.fileType, fullPath);\n } catch {\n }\n }\n }\n\n const files: Record<string, string> = {};\n\n const modelPath = fileTypeMap.get('model');\n if (!modelPath) {\n throw new Error(`Model file not found for ${fromLang} -> ${toLang}`);\n }\n files.model = modelPath;\n\n const lexPath = fileTypeMap.get('lex');\n if (!lexPath) {\n throw new Error(`Lex file not found for ${fromLang} -> ${toLang}`);\n }\n files.lex = lexPath;\n\n const vocabPath = fileTypeMap.get('vocab');\n if (vocabPath) {\n files.vocab_src = vocabPath;\n files.vocab_trg = vocabPath;\n } else {\n const srcVocabPath = fileTypeMap.get('srcvocab');\n if (!srcVocabPath) {\n throw new Error(`Source vocab file not found for ${fromLang} -> ${toLang}`);\n }\n files.vocab_src = srcVocabPath;\n\n const trgVocabPath = fileTypeMap.get('trgvocab');\n if (!trgVocabPath) {\n throw new Error(`Target vocab file not found for ${fromLang} -> ${toLang}`);\n }\n files.vocab_trg = trgVocabPath;\n }\n\n return files;\n}\n",
12
+ "export * from './records.js';\n",
13
+ "import { BergamotModule } from '@/core/interfaces.js';\nimport { ModelBuffers } from '@/core/loader.js';\n\nexport interface TranslationOptions {\n sourceLang?: string;\n targetLang?: string;\n cacheSize?: number;\n}\n\nexport interface TranslateOptions {\n qualityScores?: boolean;\n alignment?: boolean;\n html?: boolean;\n}\n\nexport interface TranslationConfig {\n 'beam-size'?: number;\n 'normalize'?: number;\n 'word-penalty'?: number;\n 'max-length-break'?: number;\n 'mini-batch-words'?: number;\n 'workspace'?: number;\n 'max-length-factor'?: number;\n 'skip-cost'?: boolean;\n 'cpu-threads'?: number;\n 'quiet'?: boolean;\n 'quiet-translation'?: boolean;\n 'gemm-precision'?: string;\n 'alignment'?: string;\n}\n\ninterface QueueTask {\n text: string;\n options: TranslateOptions;\n resolve: (value: string) => void;\n reject: (reason: any) => void;\n}\n\nexport class TranslationEngine {\n private options: TranslationOptions;\n private bergamot: BergamotModule | null = null;\n private service: any = null;\n private model: any = null;\n private isReady = false;\n private translating = false;\n private pendingQueue: QueueTask[] = [];\n private maxLengthBreak = 128;\n\n constructor(options: TranslationOptions = {}) {\n this.options = options;\n }\n\n async init(bergamotModule: BergamotModule, modelBuffers: ModelBuffers, config: TranslationConfig = {}): Promise<void> {\n if (this.isReady) return;\n\n this.bergamot = bergamotModule;\n\n const defaultConfig: TranslationConfig = {\n 'beam-size': 1,\n 'normalize': 1.0,\n 'word-penalty': 0,\n 'max-length-break': 128,\n 'mini-batch-words': 1024,\n 'workspace': 128,\n 'max-length-factor': 2.0,\n 'skip-cost': true,\n 'cpu-threads': 0,\n 'quiet': true,\n 'quiet-translation': true,\n 'gemm-precision': 'int8shiftAlphaAll',\n 'alignment': 'soft'\n };\n\n const mergedConfig = { ...defaultConfig, ...config };\n this.maxLengthBreak = mergedConfig['max-length-break'] || 128;\n\n const MODEL_FILE_ALIGNMENTS: Record<string, number> = {\n model: 256,\n lex: 64,\n srcvocab: 64,\n trgvocab: 64,\n };\n\n const alignedMemories: Record<string, any> = {};\n for (const [key, buffer] of Object.entries(modelBuffers)) {\n const alignment = MODEL_FILE_ALIGNMENTS[key] || 64;\n const alignedMemory = new this.bergamot.AlignedMemory(buffer.byteLength || buffer.length, alignment);\n const view = alignedMemory.getByteArrayView();\n view.set(new Uint8Array(buffer));\n alignedMemories[key] = alignedMemory;\n }\n\n const vocabList = new this.bergamot.AlignedMemoryList();\n vocabList.push_back(alignedMemories.srcvocab);\n vocabList.push_back(alignedMemories.trgvocab);\n\n const configStr = Object.entries(mergedConfig)\n .map(([k, v]) => `${k}: ${v}`)\n .join('\\n');\n\n this.model = new this.bergamot.TranslationModel(\n this.options.sourceLang || \"en\",\n this.options.targetLang || \"zh-Hans\",\n configStr,\n alignedMemories.model,\n alignedMemories.lex,\n vocabList,\n alignedMemories.qualityModel || null\n );\n\n this.service = new this.bergamot.BlockingService({\n cacheSize: this.options.cacheSize || 0\n });\n\n this.isReady = true;\n }\n\n translate(text: string, options: TranslateOptions = {}): string {\n if (!this.isReady) throw new Error(\"Engine not initialized\");\n\n let processedText = text;\n if (options.html) {\n processedText = this._sanitizeHTML(text);\n }\n\n const { cleanText, replacements } = this._hideEmojis(processedText);\n\n let translation: string;\n try {\n if (cleanText.length > this.maxLengthBreak) {\n translation = this._translateLongText(cleanText, options);\n } else {\n translation = this._translateInternal(cleanText, options);\n }\n } catch (error: any) {\n if (this._isFatalWASMError(error)) {\n this.isReady = false;\n throw new Error(`Fatal WASM error: ${error.message}`);\n }\n throw error;\n }\n\n translation = this._restoreEmojis(translation, replacements);\n\n return translation;\n }\n\n private _sanitizeHTML(text: string): string {\n text = text.replace(/<(\\d+\\.\\d+)[^>]*>/g, '&lt;$1&gt;');\n text = text.replace(/<([^a-zA-Z/!?][^>]*)>/g, '&lt;$1&gt;');\n const unclosedTags = /<([a-zA-Z]+)(?:\\s[^>]*)?>(?![\\s\\S]*<\\/\\1>)/g;\n text = text.replace(unclosedTags, (match) => {\n return match.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n });\n\n return text;\n }\n\n async translateAsync(text: string, options: TranslateOptions = {}): Promise<string> {\n return new Promise((resolve, reject) => {\n this.pendingQueue.push({ text, options, resolve, reject });\n this._processQueue();\n });\n }\n\n private _processQueue(): void {\n if (this.translating || this.pendingQueue.length === 0) return;\n\n this.translating = true;\n const task = this.pendingQueue.shift()!;\n\n try {\n const result = this.translate(task.text, task.options);\n task.resolve(result);\n } catch (error) {\n task.reject(error);\n } finally {\n this.translating = false;\n setImmediate(() => this._processQueue());\n }\n }\n\n private _translateInternal(text: string, options: TranslateOptions = {}): string {\n if (!this.bergamot) throw new Error(\"Bergamot module not initialized\");\n\n if (!text || text.trim().length === 0) {\n return text;\n }\n\n let cleanedText = text;\n if (!options.html) {\n cleanedText = cleanedText.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]/g, '');\n cleanedText = cleanedText.replace(/\\uFFFD/g, '');\n }\n\n const messages = new this.bergamot.VectorString();\n const responseOptions = new this.bergamot.VectorResponseOptions();\n\n try {\n messages.push_back(cleanedText);\n responseOptions.push_back({\n qualityScores: options.qualityScores || false,\n alignment: options.alignment !== undefined ? options.alignment : true,\n html: options.html || false\n });\n\n const responses = this.service.translate(this.model, messages, responseOptions);\n try {\n const result = responses.get(0);\n return result.getTranslatedText();\n } finally {\n responses.delete();\n }\n } catch (error: any) {\n console.error(`WASM Error Context: TextLength=${cleanedText.length}, Options=${JSON.stringify(options)}`);\n throw error;\n } finally {\n messages.delete();\n responseOptions.delete();\n }\n }\n\n private _isFatalWASMError(error: Error): boolean {\n const fatalPatterns = [\n 'Out of bounds memory access',\n 'Invalid memory access',\n 'Invalid table access',\n ];\n const errorMsg = error.message.toLowerCase();\n return fatalPatterns.some(pattern => errorMsg.includes(pattern));\n }\n\n private _translateLongText(text: string, options: TranslateOptions = {}): string {\n const separators = [\n \"\\n\", \" - \", \". \", \"。\", \"!\", \"!\", \"?\", \"?\",\n \"; \", \";\", \":\", \": \", \",\", \", \"\n ];\n\n let bestSep = \"\";\n let bestParts: string[] = [];\n let minMaxLen = text.length;\n\n for (const sep of separators) {\n const parts = text.split(sep);\n if (parts.length > 1) {\n let maxLen = 0;\n for (const p of parts) {\n if (p.length > maxLen) maxLen = p.length;\n }\n\n if (maxLen < minMaxLen) {\n minMaxLen = maxLen;\n bestSep = sep;\n bestParts = parts;\n }\n\n if (maxLen <= this.maxLengthBreak) {\n break;\n }\n }\n }\n\n if (bestParts.length <= 1) {\n bestParts = this._chunkByLength(text, this.maxLengthBreak);\n bestSep = \"\";\n }\n\n const results = bestParts.map(part => {\n if (!part.trim()) return part;\n if (part.length > this.maxLengthBreak) {\n return this._translateLongText(part, options);\n }\n return this._translateInternal(part, options);\n });\n\n return results.join(bestSep);\n }\n\n private _chunkByLength(text: string, chunkSize: number): string[] {\n if (chunkSize <= 0) return [text];\n const chunks: string[] = [];\n const codePoints = Array.from(text);\n for (let i = 0; i < codePoints.length; i += chunkSize) {\n chunks.push(codePoints.slice(i, i + chunkSize).join(''));\n }\n return chunks;\n }\n\n private _hideEmojis(text: string): { cleanText: string; replacements: Array<{ original: string; placeholder: string }> } {\n const emojiRegex = /(\\p{Emoji_Presentation}|\\p{Extended_Pictographic})/gu;\n const replacements: Array<{ original: string; placeholder: string }> = [];\n const cleanText = text.replace(emojiRegex, (match) => {\n const placeholder = `[EE${replacements.length}]`;\n replacements.push({ original: match, placeholder });\n return placeholder;\n });\n return { cleanText, replacements };\n }\n\n private _restoreEmojis(text: string, replacements: Array<{ original: string; placeholder: string }>): string {\n let result = text;\n for (const { original, placeholder } of replacements) {\n result = result.split(placeholder).join(original);\n }\n return result;\n }\n\n destroy(): void {\n try {\n if (this.model) {\n this.model.delete();\n this.model = null;\n }\n if (this.service) {\n this.service.delete();\n this.service = null;\n }\n this.isReady = false;\n } catch (error) {\n console.error('Error during cleanup:', error);\n }\n }\n}\n",
14
+ "/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\nfunction loadBergamot(Module) {\n var BERGAMOT_VERSION_FULL = \"v0.6.0+1de4a085\";\n null;\n\n Module = typeof Module != \"undefined\" ? Module : {};\n\n var moduleOverrides = Object.assign({}, Module);\n\n var arguments_ = [];\n\n var thisProgram = \"./this.program\";\n\n var quit_ = (status, toThrow) => {\n throw toThrow;\n };\n\n var ENVIRONMENT_IS_WEB = typeof window == \"object\";\n\n var ENVIRONMENT_IS_WORKER = typeof importScripts == \"function\";\n\n var ENVIRONMENT_IS_NODE =\n typeof process == \"object\" &&\n typeof process.versions == \"object\" &&\n typeof process.versions.node == \"string\";\n\n var scriptDirectory = \"\";\n\n function locateFile(path) {\n if (Module.locateFile) {\n return Module.locateFile(path, scriptDirectory);\n }\n return scriptDirectory + path;\n }\n\n var read_, readAsync, readBinary, setWindowTitle;\n\n if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document != \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(\n 0,\n scriptDirectory.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1\n );\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = url => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = (url, onload, onerror) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = title => (document.title = title);\n } else {\n }\n\n var out = Module.print || console.log.bind(console);\n\n var err = Module.printErr || console.warn.bind(console);\n\n Object.assign(Module, moduleOverrides);\n\n moduleOverrides = null;\n\n if (Module.arguments) {\n arguments_ = Module.arguments;\n }\n\n if (Module.thisProgram) {\n thisProgram = Module.thisProgram;\n }\n\n if (Module.quit) {\n quit_ = Module.quit;\n }\n\n var tempRet0 = 0;\n\n var setTempRet0 = value => {\n tempRet0 = value;\n };\n\n var wasmBinary;\n\n if (Module.wasmBinary) {\n wasmBinary = Module.wasmBinary;\n }\n\n var noExitRuntime = Module.noExitRuntime || true;\n\n if (typeof WebAssembly != \"object\") {\n abort(\"no native wasm support detected\");\n }\n\n function setValue(ptr, value, type = \"i8\", noSafe) {\n if (type.charAt(type.length - 1) === \"*\") {\n type = \"i32\";\n }\n switch (type) {\n case \"i1\":\n HEAP8[ptr >> 0] = value;\n break;\n\n case \"i8\":\n HEAP8[ptr >> 0] = value;\n break;\n\n case \"i16\":\n HEAP16[ptr >> 1] = value;\n break;\n\n case \"i32\":\n HEAP32[ptr >> 2] = value;\n break;\n\n case \"i64\":\n ((tempI64 = [\n value >>> 0,\n ((tempDouble = value),\n +Math.abs(tempDouble) >= 1\n ? tempDouble > 0\n ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) |\n 0) >>>\n 0\n : ~~+Math.ceil(\n (tempDouble - +(~~tempDouble >>> 0)) / 4294967296\n ) >>> 0\n : 0),\n ]),\n (HEAP32[ptr >> 2] = tempI64[0]),\n (HEAP32[(ptr + 4) >> 2] = tempI64[1]));\n break;\n\n case \"float\":\n HEAPF32[ptr >> 2] = value;\n break;\n\n case \"double\":\n HEAPF64[ptr >> 3] = value;\n break;\n\n default:\n abort(\"invalid type for setValue: \" + type);\n }\n }\n\n var wasmMemory;\n\n var ABORT = false;\n\n var EXITSTATUS;\n\n function assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n }\n\n var UTF8Decoder =\n typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\n\n function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) {\n ++endPtr;\n }\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n }\n var str = \"\";\n while (idx < endPtr) {\n var u0 = heapOrArray[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = heapOrArray[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode(((u0 & 31) << 6) | u1);\n continue;\n }\n var u2 = heapOrArray[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;\n } else {\n u0 =\n ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63);\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023));\n }\n }\n\n return str;\n }\n\n function UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n }\n\n function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) {\n return 0;\n }\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = (65536 + ((u & 1023) << 10)) | (u1 & 1023);\n }\n if (u <= 127) {\n if (outIdx >= endIdx) {\n break;\n }\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) {\n break;\n }\n heap[outIdx++] = 192 | (u >> 6);\n heap[outIdx++] = 128 | (u & 63);\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) {\n break;\n }\n heap[outIdx++] = 224 | (u >> 12);\n heap[outIdx++] = 128 | ((u >> 6) & 63);\n heap[outIdx++] = 128 | (u & 63);\n } else {\n if (outIdx + 3 >= endIdx) {\n break;\n }\n heap[outIdx++] = 240 | (u >> 18);\n heap[outIdx++] = 128 | ((u >> 12) & 63);\n heap[outIdx++] = 128 | ((u >> 6) & 63);\n heap[outIdx++] = 128 | (u & 63);\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }\n\n function stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n }\n\n function lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n u = (65536 + ((u & 1023) << 10)) | (str.charCodeAt(++i) & 1023);\n }\n if (u <= 127) {\n ++len;\n } else if (u <= 2047) {\n len += 2;\n } else if (u <= 65535) {\n len += 3;\n } else {\n len += 4;\n }\n }\n return len;\n }\n\n var UTF16Decoder =\n typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\n\n function UTF16ToString(ptr, maxBytesToRead) {\n var endPtr = ptr;\n var idx = endPtr >> 1;\n var maxIdx = idx + maxBytesToRead / 2;\n while (!(idx >= maxIdx) && HEAPU16[idx]) {\n ++idx;\n }\n endPtr = idx << 1;\n if (endPtr - ptr > 32 && UTF16Decoder) {\n return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr));\n }\n var str = \"\";\n for (var i = 0; !(i >= maxBytesToRead / 2); ++i) {\n var codeUnit = HEAP16[(ptr + i * 2) >> 1];\n if (codeUnit == 0) {\n break;\n }\n str += String.fromCharCode(codeUnit);\n }\n return str;\n }\n\n function stringToUTF16(str, outPtr, maxBytesToWrite) {\n if (maxBytesToWrite === undefined) {\n maxBytesToWrite = 2147483647;\n }\n if (maxBytesToWrite < 2) {\n return 0;\n }\n maxBytesToWrite -= 2;\n var startPtr = outPtr;\n var numCharsToWrite =\n maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;\n for (var i = 0; i < numCharsToWrite; ++i) {\n var codeUnit = str.charCodeAt(i);\n HEAP16[outPtr >> 1] = codeUnit;\n outPtr += 2;\n }\n HEAP16[outPtr >> 1] = 0;\n return outPtr - startPtr;\n }\n\n function lengthBytesUTF16(str) {\n return str.length * 2;\n }\n\n function UTF32ToString(ptr, maxBytesToRead) {\n var i = 0;\n var str = \"\";\n while (!(i >= maxBytesToRead / 4)) {\n var utf32 = HEAP32[(ptr + i * 4) >> 2];\n if (utf32 == 0) {\n break;\n }\n ++i;\n if (utf32 >= 65536) {\n var ch = utf32 - 65536;\n str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023));\n } else {\n str += String.fromCharCode(utf32);\n }\n }\n return str;\n }\n\n function stringToUTF32(str, outPtr, maxBytesToWrite) {\n if (maxBytesToWrite === undefined) {\n maxBytesToWrite = 2147483647;\n }\n if (maxBytesToWrite < 4) {\n return 0;\n }\n var startPtr = outPtr;\n var endPtr = startPtr + maxBytesToWrite - 4;\n for (var i = 0; i < str.length; ++i) {\n var codeUnit = str.charCodeAt(i);\n if (codeUnit >= 55296 && codeUnit <= 57343) {\n var trailSurrogate = str.charCodeAt(++i);\n codeUnit =\n (65536 + ((codeUnit & 1023) << 10)) | (trailSurrogate & 1023);\n }\n HEAP32[outPtr >> 2] = codeUnit;\n outPtr += 4;\n if (outPtr + 4 > endPtr) {\n break;\n }\n }\n HEAP32[outPtr >> 2] = 0;\n return outPtr - startPtr;\n }\n\n function lengthBytesUTF32(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var codeUnit = str.charCodeAt(i);\n if (codeUnit >= 55296 && codeUnit <= 57343) {\n ++i;\n }\n len += 4;\n }\n return len;\n }\n\n function allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) {\n stringToUTF8Array(str, HEAP8, ret, size);\n }\n return ret;\n }\n\n function writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n }\n\n function writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }\n if (!dontAddNull) {\n HEAP8[buffer >> 0] = 0;\n }\n }\n\n var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\n function updateGlobalBufferAndViews(buf) {\n const mb = (buf.byteLength / 1_000_000).toFixed();\n Module.print(`Growing wasm buffer to ${mb}MB (${buf.byteLength} bytes).`);\n\n buffer = buf;\n Module.HEAP8 = HEAP8 = new Int8Array(buf);\n Module.HEAP16 = HEAP16 = new Int16Array(buf);\n Module.HEAP32 = HEAP32 = new Int32Array(buf);\n Module.HEAPU8 = HEAPU8 = new Uint8Array(buf);\n Module.HEAPU16 = HEAPU16 = new Uint16Array(buf);\n Module.HEAPU32 = HEAPU32 = new Uint32Array(buf);\n Module.HEAPF32 = HEAPF32 = new Float32Array(buf);\n Module.HEAPF64 = HEAPF64 = new Float64Array(buf);\n }\n\n var INITIAL_MEMORY = Module.INITIAL_MEMORY || 16777216;\n\n if (Module.wasmMemory) {\n wasmMemory = Module.wasmMemory;\n } else {\n wasmMemory = new WebAssembly.Memory({\n initial: INITIAL_MEMORY / 65536,\n maximum: 2147483648 / 65536,\n });\n }\n\n if (wasmMemory) {\n buffer = wasmMemory.buffer;\n }\n\n INITIAL_MEMORY = buffer.byteLength;\n\n updateGlobalBufferAndViews(buffer);\n\n var wasmTable;\n\n var __ATPRERUN__ = [];\n\n var __ATINIT__ = [];\n\n var __ATPOSTRUN__ = [];\n\n var runtimeInitialized = false;\n\n function keepRuntimeAlive() {\n return noExitRuntime;\n }\n\n function preRun() {\n if (Module.preRun) {\n if (typeof Module.preRun == \"function\") {\n Module.preRun = [Module.preRun];\n }\n while (Module.preRun.length) {\n addOnPreRun(Module.preRun.shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n }\n\n function initRuntime() {\n runtimeInitialized = true;\n callRuntimeCallbacks(__ATINIT__);\n }\n\n function postRun() {\n if (Module.postRun) {\n if (typeof Module.postRun == \"function\") {\n Module.postRun = [Module.postRun];\n }\n while (Module.postRun.length) {\n addOnPostRun(Module.postRun.shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n }\n\n function addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n }\n\n function addOnInit(cb) {\n __ATINIT__.unshift(cb);\n }\n\n function addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n }\n\n var runDependencies = 0;\n\n var runDependencyWatcher = null;\n\n var dependenciesFulfilled = null;\n\n function addRunDependency(id) {\n runDependencies++;\n if (Module.monitorRunDependencies) {\n Module.monitorRunDependencies(runDependencies);\n }\n }\n\n function removeRunDependency(id) {\n runDependencies--;\n if (Module.monitorRunDependencies) {\n Module.monitorRunDependencies(runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n\n Module.preloadedImages = {};\n\n Module.preloadedAudios = {};\n\n function abort(what) {\n {\n if (Module.onAbort) {\n Module.onAbort(what);\n }\n }\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what += \". Build with -s ASSERTIONS=1 for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n throw e;\n }\n\n var dataURIPrefix = \"data:application/octet-stream;base64,\";\n\n function isDataURI(filename) {\n return filename.startsWith(dataURIPrefix);\n }\n\n var wasmBinaryFile;\n\n wasmBinaryFile = \"bergamot-translator.wasm\";\n\n if (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n }\n\n function getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n } catch (err) {\n abort(err);\n }\n }\n\n function getBinaryPromise() {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch == \"function\") {\n return fetch(wasmBinaryFile, {\n credentials: \"same-origin\",\n })\n .then(function (response) {\n if (!response.ok) {\n throw (\n \"failed to load wasm binary file at '\" + wasmBinaryFile + \"'\"\n );\n }\n return response.arrayBuffer();\n })\n .catch(function () {\n return getBinary(wasmBinaryFile);\n });\n }\n }\n return Promise.resolve().then(function () {\n return getBinary(wasmBinaryFile);\n });\n }\n\n function createWasm() {\n var info = {\n env: asmLibraryArg,\n wasm_gemm: createWasmGemm(),\n wasi_snapshot_preview1: asmLibraryArg,\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n Module.asm = exports;\n wasmTable = Module.asm.__indirect_function_table;\n addOnInit(Module.asm.__wasm_call_ctors);\n exportAsmFunctions(exports);\n removeRunDependency(\"wasm-instantiate\");\n }\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result) {\n receiveInstance(result.instance);\n }\n function instantiateArrayBuffer(receiver) {\n // This function has been patched from the original version.\n // See Bug 1988289.\n return getBinaryPromise()\n .then(binary => {\n const module = new WebAssembly.Module(binary);\n const instance = new WebAssembly.Instance(module, info);\n return { module, instance };\n })\n .then(function (instance) {\n return instance;\n })\n .then(receiver, function (reason) {\n err(\"failed to asynchronously prepare wasm: \" + reason);\n abort(reason);\n });\n }\n function instantiateAsync() {\n if (\n !wasmBinary &&\n typeof WebAssembly.instantiateStreaming == \"function\" &&\n !isDataURI(wasmBinaryFile) &&\n typeof fetch == \"function\"\n ) {\n return fetch(wasmBinaryFile, {\n credentials: \"same-origin\",\n }).then(function (response) {\n var result = WebAssembly.instantiateStreaming(response, info);\n return result.then(receiveInstantiationResult, function (reason) {\n err(\"wasm streaming compile failed: \" + reason);\n err(\"falling back to ArrayBuffer instantiation\");\n return instantiateArrayBuffer(receiveInstantiationResult);\n });\n });\n }\n return instantiateArrayBuffer(receiveInstantiationResult);\n }\n if (Module.instantiateWasm) {\n try {\n var exports = Module.instantiateWasm(info, receiveInstance);\n return exports;\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n return false;\n }\n }\n instantiateAsync();\n return {};\n }\n\n var tempDouble;\n\n var tempI64;\n\n var ASM_CONSTS = {\n 1427332($0, $1, $2, $3, $4) {\n if (!Module.getOrCreateSentenceSegmenter) {\n Module.getOrCreateSentenceSegmenter = (function () {\n let segmenters = new Map();\n return function (lang) {\n let segmenter = segmenters.get(lang);\n if (!segmenter) {\n segmenter = new Intl.Segmenter(lang, {\n granularity: \"sentence\",\n });\n segmenters.set(lang, segmenter);\n }\n return segmenter;\n };\n })();\n }\n const inputUTF16 = UTF8ToString($0);\n const lang = UTF8ToString($1);\n const segmenter = Module.getOrCreateSentenceSegmenter(lang);\n const sentencesUTF16 = Array.from(segmenter.segment(inputUTF16));\n const sentenceCount = sentencesUTF16.length;\n const bytesPerInt = 4;\n const startsPtr = _malloc(sentenceCount * bytesPerInt);\n const endsPtr = _malloc(sentenceCount * bytesPerInt);\n if (!startsPtr || !endsPtr) {\n throw new Error(\"Failed to allocate WASM memory for segmentation.\");\n }\n let sentenceEndUTF8 = 0;\n sentencesUTF16.forEach(({ segment: sentenceUTF16 }, index) => {\n const sentenceStartUTF8 = sentenceEndUTF8;\n sentenceEndUTF8 += lengthBytesUTF8(sentenceUTF16);\n setValue(startsPtr + index * bytesPerInt, sentenceStartUTF8, \"i32\");\n setValue(endsPtr + index * bytesPerInt, sentenceEndUTF8, \"i32\");\n });\n setValue($2, sentenceCount, \"i32\");\n setValue($3, startsPtr, \"i32\");\n setValue($4, endsPtr, \"i32\");\n },\n };\n\n function callRuntimeCallbacks(callbacks) {\n while (callbacks.length) {\n var callback = callbacks.shift();\n if (typeof callback == \"function\") {\n callback(Module);\n continue;\n }\n var func = callback.func;\n if (typeof func == \"number\") {\n if (callback.arg === undefined) {\n getWasmTableEntry(func)();\n } else {\n getWasmTableEntry(func)(callback.arg);\n }\n } else {\n func(callback.arg === undefined ? null : callback.arg);\n }\n }\n }\n\n function asmjsMangle(x) {\n var unmangledSymbols = [\"stackAlloc\", \"stackSave\", \"stackRestore\"];\n return x.indexOf(\"dynCall_\") == 0 || unmangledSymbols.includes(x)\n ? x\n : \"_\" + x;\n }\n\n var _malloc, _free, stackSave, stackRestore, stackAlloc;\n\n function exportAsmFunctions(asm) {\n for (var __exportedFunc in asm) {\n var jsname = asmjsMangle(__exportedFunc);\n Module[jsname] = asm[__exportedFunc];\n\n if (jsname === '_malloc') _malloc = asm[__exportedFunc];\n else if (jsname === '_free') _free = asm[__exportedFunc];\n else if (jsname === 'stackSave') stackSave = asm[__exportedFunc];\n else if (jsname === 'stackRestore') stackRestore = asm[__exportedFunc];\n else if (jsname === 'stackAlloc') stackAlloc = asm[__exportedFunc];\n }\n }\n\n var wasmTableMirror = [];\n\n function getWasmTableEntry(funcPtr) {\n var func = wasmTableMirror[funcPtr];\n if (!func) {\n if (funcPtr >= wasmTableMirror.length) {\n wasmTableMirror.length = funcPtr + 1;\n }\n wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr);\n }\n return func;\n }\n\n function ___assert_fail(condition, filename, line, func) {\n abort(\n \"Assertion failed: \" +\n UTF8ToString(condition) +\n \", at: \" +\n [\n filename ? UTF8ToString(filename) : \"unknown filename\",\n line,\n func ? UTF8ToString(func) : \"unknown function\",\n ]\n );\n }\n\n function ___cxa_allocate_exception(size) {\n return _malloc(size + 16) + 16;\n }\n\n var exceptionCaught = [];\n\n var exceptionLast = 0;\n\n var uncaughtExceptionCount = 0;\n\n function ___cxa_rethrow() {\n var catchInfo = exceptionCaught.pop();\n if (!catchInfo) {\n abort(\"no exception to throw\");\n }\n var info = catchInfo.get_exception_info();\n var ptr = catchInfo.get_base_ptr();\n if (!info.get_rethrown()) {\n exceptionCaught.push(catchInfo);\n info.set_rethrown(true);\n info.set_caught(false);\n uncaughtExceptionCount++;\n } else {\n catchInfo.free();\n }\n exceptionLast = ptr;\n throw ptr;\n }\n\n function ExceptionInfo(excPtr) {\n this.excPtr = excPtr;\n this.ptr = excPtr - 16;\n this.set_type = function (type) {\n HEAP32[(this.ptr + 4) >> 2] = type;\n };\n this.get_type = function () {\n return HEAP32[(this.ptr + 4) >> 2];\n };\n this.set_destructor = function (destructor) {\n HEAP32[(this.ptr + 8) >> 2] = destructor;\n };\n this.get_destructor = function () {\n return HEAP32[(this.ptr + 8) >> 2];\n };\n this.set_refcount = function (refcount) {\n HEAP32[this.ptr >> 2] = refcount;\n };\n this.set_caught = function (caught) {\n caught = caught ? 1 : 0;\n HEAP8[(this.ptr + 12) >> 0] = caught;\n };\n this.get_caught = function () {\n return HEAP8[(this.ptr + 12) >> 0] != 0;\n };\n this.set_rethrown = function (rethrown) {\n rethrown = rethrown ? 1 : 0;\n HEAP8[(this.ptr + 13) >> 0] = rethrown;\n };\n this.get_rethrown = function () {\n return HEAP8[(this.ptr + 13) >> 0] != 0;\n };\n this.init = function (type, destructor) {\n this.set_type(type);\n this.set_destructor(destructor);\n this.set_refcount(0);\n this.set_caught(false);\n this.set_rethrown(false);\n };\n this.add_ref = function () {\n var value = HEAP32[this.ptr >> 2];\n HEAP32[this.ptr >> 2] = value + 1;\n };\n this.release_ref = function () {\n var prev = HEAP32[this.ptr >> 2];\n HEAP32[this.ptr >> 2] = prev - 1;\n return prev === 1;\n };\n }\n\n function ___cxa_throw(ptr, type, destructor) {\n var info = new ExceptionInfo(ptr);\n info.init(type, destructor);\n exceptionLast = ptr;\n uncaughtExceptionCount++;\n throw ptr;\n }\n\n var SYSCALLS = {\n buffers: [null, [], []],\n printChar(stream, curr) {\n var buffer = SYSCALLS.buffers[stream];\n if (curr === 0 || curr === 10) {\n (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));\n buffer.length = 0;\n } else {\n buffer.push(curr);\n }\n },\n varargs: undefined,\n get() {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[(SYSCALLS.varargs - 4) >> 2];\n return ret;\n },\n getStr(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n get64(low, high) {\n return low;\n },\n };\n\n function ___syscall_faccessat(dirfd, path, amode, flags) {\n path = SYSCALLS.getStr(path);\n path = SYSCALLS.calculateAt(dirfd, path);\n return SYSCALLS.doAccess(path, amode);\n }\n\n function ___syscall_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n return 0;\n }\n\n function ___syscall_fstat64(fd, buf) { }\n\n function ___syscall_getcwd(buf, size) { }\n\n function ___syscall_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n return 0;\n }\n\n function ___syscall_lstat64(path, buf) { }\n\n function ___syscall_newfstatat(dirfd, path, buf, flags) { }\n\n function ___syscall_openat(dirfd, path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n }\n\n function ___syscall_renameat(olddirfd, oldpath, newdirfd, newpath) { }\n\n function ___syscall_rmdir(path) { }\n\n function ___syscall_stat64(path, buf) { }\n\n function ___syscall_unlinkat(dirfd, path, flags) { }\n\n var structRegistrations = {};\n\n function runDestructors(destructors) {\n while (destructors.length) {\n var ptr = destructors.pop();\n var del = destructors.pop();\n del(ptr);\n }\n }\n\n function simpleReadValueFromPointer(pointer) {\n return this.fromWireType(HEAPU32[pointer >> 2]);\n }\n\n var awaitingDependencies = {};\n\n var registeredTypes = {};\n\n var typeDependencies = {};\n\n var char_0 = 48;\n\n var char_9 = 57;\n\n function makeLegalFunctionName(name) {\n if (undefined === name) {\n return \"_unknown\";\n }\n name = name.replace(/[^a-zA-Z0-9_]/g, \"$\");\n var f = name.charCodeAt(0);\n if (f >= char_0 && f <= char_9) {\n return \"_\" + name;\n }\n return name;\n }\n\n function createNamedFunction(name, body) {\n name = makeLegalFunctionName(name);\n return function () {\n null;\n return body.apply(this, arguments);\n };\n }\n\n function extendError(baseErrorType, errorName) {\n var errorClass = createNamedFunction(errorName, function (message) {\n this.name = errorName;\n this.message = message;\n var stack = new Error(message).stack;\n if (stack !== undefined) {\n this.stack =\n this.toString() + \"\\n\" + stack.replace(/^Error(:[^\\n]*)?\\n/, \"\");\n }\n });\n errorClass.prototype = Object.create(baseErrorType.prototype);\n errorClass.prototype.constructor = errorClass;\n errorClass.prototype.toString = function () {\n if (this.message === undefined) {\n return this.name;\n }\n return this.name + \": \" + this.message;\n };\n return errorClass;\n }\n\n var InternalError = undefined;\n\n function throwInternalError(message) {\n throw new InternalError(message);\n }\n\n function whenDependentTypesAreResolved(\n myTypes,\n dependentTypes,\n getTypeConverters\n ) {\n myTypes.forEach(function (type) {\n typeDependencies[type] = dependentTypes;\n });\n function onComplete(typeConverters) {\n var myTypeConverters = getTypeConverters(typeConverters);\n if (myTypeConverters.length !== myTypes.length) {\n throwInternalError(\"Mismatched type converter count\");\n }\n for (var i = 0; i < myTypes.length; ++i) {\n registerType(myTypes[i], myTypeConverters[i]);\n }\n }\n var typeConverters = new Array(dependentTypes.length);\n var unregisteredTypes = [];\n var registered = 0;\n dependentTypes.forEach((dt, i) => {\n if (registeredTypes.hasOwnProperty(dt)) {\n typeConverters[i] = registeredTypes[dt];\n } else {\n unregisteredTypes.push(dt);\n if (!awaitingDependencies.hasOwnProperty(dt)) {\n awaitingDependencies[dt] = [];\n }\n awaitingDependencies[dt].push(() => {\n typeConverters[i] = registeredTypes[dt];\n ++registered;\n if (registered === unregisteredTypes.length) {\n onComplete(typeConverters);\n }\n });\n }\n });\n if (0 === unregisteredTypes.length) {\n onComplete(typeConverters);\n }\n }\n\n function __embind_finalize_value_object(structType) {\n var reg = structRegistrations[structType];\n delete structRegistrations[structType];\n var rawConstructor = reg.rawConstructor;\n var rawDestructor = reg.rawDestructor;\n var fieldRecords = reg.fields;\n var fieldTypes = fieldRecords\n .map(field => field.getterReturnType)\n .concat(fieldRecords.map(field => field.setterArgumentType));\n whenDependentTypesAreResolved([structType], fieldTypes, fieldTypes => {\n var fields = {};\n fieldRecords.forEach((field, i) => {\n var fieldName = field.fieldName;\n var getterReturnType = fieldTypes[i];\n var getter = field.getter;\n var getterContext = field.getterContext;\n var setterArgumentType = fieldTypes[i + fieldRecords.length];\n var setter = field.setter;\n var setterContext = field.setterContext;\n fields[fieldName] = {\n read: ptr => {\n return getterReturnType.fromWireType(getter(getterContext, ptr));\n },\n write: (ptr, o) => {\n var destructors = [];\n setter(\n setterContext,\n ptr,\n setterArgumentType.toWireType(destructors, o)\n );\n runDestructors(destructors);\n },\n };\n });\n return [\n {\n name: reg.name,\n fromWireType: function (ptr) {\n var rv = {};\n for (var i in fields) {\n rv[i] = fields[i].read(ptr);\n }\n rawDestructor(ptr);\n return rv;\n },\n toWireType: function (destructors, o) {\n for (var fieldName in fields) {\n if (!(fieldName in o)) {\n throw new TypeError('Missing field: \"' + fieldName + '\"');\n }\n }\n var ptr = rawConstructor();\n for (fieldName in fields) {\n fields[fieldName].write(ptr, o[fieldName]);\n }\n if (destructors !== null) {\n destructors.push(rawDestructor, ptr);\n }\n return ptr;\n },\n argPackAdvance: 8,\n readValueFromPointer: simpleReadValueFromPointer,\n destructorFunction: rawDestructor,\n },\n ];\n });\n }\n\n function __embind_register_bigint(\n primitiveType,\n name,\n size,\n minRange,\n maxRange\n ) { }\n\n function getShiftFromSize(size) {\n switch (size) {\n case 1:\n return 0;\n\n case 2:\n return 1;\n\n case 4:\n return 2;\n\n case 8:\n return 3;\n\n default:\n throw new TypeError(\"Unknown type size: \" + size);\n }\n }\n\n function embind_init_charCodes() {\n var codes = new Array(256);\n for (var i = 0; i < 256; ++i) {\n codes[i] = String.fromCharCode(i);\n }\n embind_charCodes = codes;\n }\n\n var embind_charCodes = undefined;\n\n function readLatin1String(ptr) {\n var ret = \"\";\n var c = ptr;\n while (HEAPU8[c]) {\n ret += embind_charCodes[HEAPU8[c++]];\n }\n return ret;\n }\n\n var BindingError = undefined;\n\n function throwBindingError(message) {\n throw new BindingError(message);\n }\n\n function registerType(rawType, registeredInstance, options = {}) {\n if (!(\"argPackAdvance\" in registeredInstance)) {\n throw new TypeError(\n \"registerType registeredInstance requires argPackAdvance\"\n );\n }\n var name = registeredInstance.name;\n if (!rawType) {\n throwBindingError(\n 'type \"' + name + '\" must have a positive integer typeid pointer'\n );\n }\n if (registeredTypes.hasOwnProperty(rawType)) {\n if (options.ignoreDuplicateRegistrations) {\n return;\n }\n throwBindingError(\"Cannot register type '\" + name + \"' twice\");\n }\n registeredTypes[rawType] = registeredInstance;\n delete typeDependencies[rawType];\n if (awaitingDependencies.hasOwnProperty(rawType)) {\n var callbacks = awaitingDependencies[rawType];\n delete awaitingDependencies[rawType];\n callbacks.forEach(cb => cb());\n }\n }\n\n function __embind_register_bool(rawType, name, size, trueValue, falseValue) {\n var shift = getShiftFromSize(size);\n name = readLatin1String(name);\n registerType(rawType, {\n name,\n fromWireType: function (wt) {\n return !!wt;\n },\n toWireType: function (destructors, o) {\n return o ? trueValue : falseValue;\n },\n argPackAdvance: 8,\n readValueFromPointer: function (pointer) {\n var heap;\n if (size === 1) {\n heap = HEAP8;\n } else if (size === 2) {\n heap = HEAP16;\n } else if (size === 4) {\n heap = HEAP32;\n } else {\n throw new TypeError(\"Unknown boolean type size: \" + name);\n }\n return this.fromWireType(heap[pointer >> shift]);\n },\n destructorFunction: null,\n });\n }\n\n function ClassHandle_isAliasOf(other) {\n if (!(this instanceof ClassHandle)) {\n return false;\n }\n if (!(other instanceof ClassHandle)) {\n return false;\n }\n var leftClass = this.$$.ptrType.registeredClass;\n var left = this.$$.ptr;\n var rightClass = other.$$.ptrType.registeredClass;\n var right = other.$$.ptr;\n while (leftClass.baseClass) {\n left = leftClass.upcast(left);\n leftClass = leftClass.baseClass;\n }\n while (rightClass.baseClass) {\n right = rightClass.upcast(right);\n rightClass = rightClass.baseClass;\n }\n return leftClass === rightClass && left === right;\n }\n\n function shallowCopyInternalPointer(o) {\n return {\n count: o.count,\n deleteScheduled: o.deleteScheduled,\n preservePointerOnDelete: o.preservePointerOnDelete,\n ptr: o.ptr,\n ptrType: o.ptrType,\n smartPtr: o.smartPtr,\n smartPtrType: o.smartPtrType,\n };\n }\n\n function throwInstanceAlreadyDeleted(obj) {\n function getInstanceTypeName(handle) {\n return handle.$$.ptrType.registeredClass.name;\n }\n throwBindingError(getInstanceTypeName(obj) + \" instance already deleted\");\n }\n\n var finalizationRegistry = false;\n\n function detachFinalizer(handle) { }\n\n function runDestructor($$) {\n if ($$.smartPtr) {\n $$.smartPtrType.rawDestructor($$.smartPtr);\n } else {\n $$.ptrType.registeredClass.rawDestructor($$.ptr);\n }\n }\n\n function releaseClassHandle($$) {\n $$.count.value -= 1;\n var toDelete = 0 === $$.count.value;\n if (toDelete) {\n runDestructor($$);\n }\n }\n\n function downcastPointer(ptr, ptrClass, desiredClass) {\n if (ptrClass === desiredClass) {\n return ptr;\n }\n if (undefined === desiredClass.baseClass) {\n return null;\n }\n var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass);\n if (rv === null) {\n return null;\n }\n return desiredClass.downcast(rv);\n }\n\n var registeredPointers = {};\n\n function getInheritedInstanceCount() {\n return Object.keys(registeredInstances).length;\n }\n\n function getLiveInheritedInstances() {\n var rv = [];\n for (var k in registeredInstances) {\n if (registeredInstances.hasOwnProperty(k)) {\n rv.push(registeredInstances[k]);\n }\n }\n return rv;\n }\n\n var deletionQueue = [];\n\n function flushPendingDeletes() {\n while (deletionQueue.length) {\n var obj = deletionQueue.pop();\n obj.$$.deleteScheduled = false;\n obj.delete();\n }\n }\n\n var delayFunction = undefined;\n\n function setDelayFunction(fn) {\n delayFunction = fn;\n if (deletionQueue.length && delayFunction) {\n delayFunction(flushPendingDeletes);\n }\n }\n\n function init_embind() {\n Module.getInheritedInstanceCount = getInheritedInstanceCount;\n Module.getLiveInheritedInstances = getLiveInheritedInstances;\n Module.flushPendingDeletes = flushPendingDeletes;\n Module.setDelayFunction = setDelayFunction;\n }\n\n var registeredInstances = {};\n\n function getBasestPointer(class_, ptr) {\n if (ptr === undefined) {\n throwBindingError(\"ptr should not be undefined\");\n }\n while (class_.baseClass) {\n ptr = class_.upcast(ptr);\n class_ = class_.baseClass;\n }\n return ptr;\n }\n\n function getInheritedInstance(class_, ptr) {\n ptr = getBasestPointer(class_, ptr);\n return registeredInstances[ptr];\n }\n\n function makeClassHandle(prototype, record) {\n if (!record.ptrType || !record.ptr) {\n throwInternalError(\"makeClassHandle requires ptr and ptrType\");\n }\n var hasSmartPtrType = !!record.smartPtrType;\n var hasSmartPtr = !!record.smartPtr;\n if (hasSmartPtrType !== hasSmartPtr) {\n throwInternalError(\"Both smartPtrType and smartPtr must be specified\");\n }\n record.count = {\n value: 1,\n };\n return attachFinalizer(\n Object.create(prototype, {\n $$: {\n value: record,\n },\n })\n );\n }\n\n function RegisteredPointer_fromWireType(ptr) {\n var rawPointer = this.getPointee(ptr);\n if (!rawPointer) {\n this.destructor(ptr);\n return null;\n }\n var registeredInstance = getInheritedInstance(\n this.registeredClass,\n rawPointer\n );\n if (undefined !== registeredInstance) {\n if (0 === registeredInstance.$$.count.value) {\n registeredInstance.$$.ptr = rawPointer;\n registeredInstance.$$.smartPtr = ptr;\n return registeredInstance.clone();\n }\n var rv = registeredInstance.clone();\n this.destructor(ptr);\n return rv;\n }\n function makeDefaultHandle() {\n if (this.isSmartPointer) {\n return makeClassHandle(this.registeredClass.instancePrototype, {\n ptrType: this.pointeeType,\n ptr: rawPointer,\n smartPtrType: this,\n smartPtr: ptr,\n });\n }\n return makeClassHandle(this.registeredClass.instancePrototype, {\n ptrType: this,\n ptr,\n });\n }\n var actualType = this.registeredClass.getActualType(rawPointer);\n var registeredPointerRecord = registeredPointers[actualType];\n if (!registeredPointerRecord) {\n return makeDefaultHandle.call(this);\n }\n var toType;\n if (this.isConst) {\n toType = registeredPointerRecord.constPointerType;\n } else {\n toType = registeredPointerRecord.pointerType;\n }\n var dp = downcastPointer(\n rawPointer,\n this.registeredClass,\n toType.registeredClass\n );\n if (dp === null) {\n return makeDefaultHandle.call(this);\n }\n if (this.isSmartPointer) {\n return makeClassHandle(toType.registeredClass.instancePrototype, {\n ptrType: toType,\n ptr: dp,\n smartPtrType: this,\n smartPtr: ptr,\n });\n }\n return makeClassHandle(toType.registeredClass.instancePrototype, {\n ptrType: toType,\n ptr: dp,\n });\n }\n\n function attachFinalizer(handle) {\n if (\"undefined\" === typeof FinalizationRegistry) {\n attachFinalizer = handle => handle;\n return handle;\n }\n finalizationRegistry = new FinalizationRegistry(info => {\n releaseClassHandle(info.$$);\n });\n attachFinalizer = handle => {\n var $$ = handle.$$;\n var hasSmartPtr = !!$$.smartPtr;\n if (hasSmartPtr) {\n var info = {\n $$,\n };\n finalizationRegistry.register(handle, info, handle);\n }\n return handle;\n };\n detachFinalizer = handle => finalizationRegistry.unregister(handle);\n return attachFinalizer(handle);\n }\n\n function ClassHandle_clone() {\n if (!this.$$.ptr) {\n throwInstanceAlreadyDeleted(this);\n }\n if (this.$$.preservePointerOnDelete) {\n this.$$.count.value += 1;\n return this;\n }\n var clone = attachFinalizer(\n Object.create(Object.getPrototypeOf(this), {\n $$: {\n value: shallowCopyInternalPointer(this.$$),\n },\n })\n );\n clone.$$.count.value += 1;\n clone.$$.deleteScheduled = false;\n return clone;\n }\n\n function ClassHandle_delete() {\n if (!this.$$.ptr) {\n throwInstanceAlreadyDeleted(this);\n }\n if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {\n throwBindingError(\"Object already scheduled for deletion\");\n }\n detachFinalizer(this);\n releaseClassHandle(this.$$);\n if (!this.$$.preservePointerOnDelete) {\n this.$$.smartPtr = undefined;\n this.$$.ptr = undefined;\n }\n }\n\n function ClassHandle_isDeleted() {\n return !this.$$.ptr;\n }\n\n function ClassHandle_deleteLater() {\n if (!this.$$.ptr) {\n throwInstanceAlreadyDeleted(this);\n }\n if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {\n throwBindingError(\"Object already scheduled for deletion\");\n }\n deletionQueue.push(this);\n if (deletionQueue.length === 1 && delayFunction) {\n delayFunction(flushPendingDeletes);\n }\n this.$$.deleteScheduled = true;\n return this;\n }\n\n function init_ClassHandle() {\n ClassHandle.prototype.isAliasOf = ClassHandle_isAliasOf;\n ClassHandle.prototype.clone = ClassHandle_clone;\n ClassHandle.prototype.delete = ClassHandle_delete;\n ClassHandle.prototype.isDeleted = ClassHandle_isDeleted;\n ClassHandle.prototype.deleteLater = ClassHandle_deleteLater;\n }\n\n function ClassHandle() { }\n\n function ensureOverloadTable(proto, methodName, humanName) {\n if (undefined === proto[methodName].overloadTable) {\n var prevFunc = proto[methodName];\n proto[methodName] = function () {\n if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) {\n throwBindingError(\n \"Function '\" +\n humanName +\n \"' called with an invalid number of arguments (\" +\n arguments.length +\n \") - expects one of (\" +\n proto[methodName].overloadTable +\n \")!\"\n );\n }\n return proto[methodName].overloadTable[arguments.length].apply(\n this,\n arguments\n );\n };\n proto[methodName].overloadTable = [];\n proto[methodName].overloadTable[prevFunc.argCount] = prevFunc;\n }\n }\n\n function exposePublicSymbol(name, value, numArguments) {\n if (Module.hasOwnProperty(name)) {\n if (\n undefined === numArguments ||\n (undefined !== Module[name].overloadTable &&\n undefined !== Module[name].overloadTable[numArguments])\n ) {\n throwBindingError(\"Cannot register public name '\" + name + \"' twice\");\n }\n ensureOverloadTable(Module, name, name);\n if (Module.hasOwnProperty(numArguments)) {\n throwBindingError(\n \"Cannot register multiple overloads of a function with the same number of arguments (\" +\n numArguments +\n \")!\"\n );\n }\n Module[name].overloadTable[numArguments] = value;\n } else {\n Module[name] = value;\n if (undefined !== numArguments) {\n Module[name].numArguments = numArguments;\n }\n }\n }\n\n function RegisteredClass(\n name,\n constructor,\n instancePrototype,\n rawDestructor,\n baseClass,\n getActualType,\n upcast,\n downcast\n ) {\n this.name = name;\n this.constructor = constructor;\n this.instancePrototype = instancePrototype;\n this.rawDestructor = rawDestructor;\n this.baseClass = baseClass;\n this.getActualType = getActualType;\n this.upcast = upcast;\n this.downcast = downcast;\n this.pureVirtualFunctions = [];\n }\n\n function upcastPointer(ptr, ptrClass, desiredClass) {\n while (ptrClass !== desiredClass) {\n if (!ptrClass.upcast) {\n throwBindingError(\n \"Expected null or instance of \" +\n desiredClass.name +\n \", got an instance of \" +\n ptrClass.name\n );\n }\n ptr = ptrClass.upcast(ptr);\n ptrClass = ptrClass.baseClass;\n }\n return ptr;\n }\n\n function constNoSmartPtrRawPointerToWireType(destructors, handle) {\n if (handle === null) {\n if (this.isReference) {\n throwBindingError(\"null is not a valid \" + this.name);\n }\n return 0;\n }\n if (!handle.$$) {\n throwBindingError(\n 'Cannot pass \"' + _embind_repr(handle) + '\" as a ' + this.name\n );\n }\n if (!handle.$$.ptr) {\n throwBindingError(\n \"Cannot pass deleted object as a pointer of type \" + this.name\n );\n }\n var handleClass = handle.$$.ptrType.registeredClass;\n var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n return ptr;\n }\n\n function genericPointerToWireType(destructors, handle) {\n var ptr;\n if (handle === null) {\n if (this.isReference) {\n throwBindingError(\"null is not a valid \" + this.name);\n }\n if (this.isSmartPointer) {\n ptr = this.rawConstructor();\n if (destructors !== null) {\n destructors.push(this.rawDestructor, ptr);\n }\n return ptr;\n }\n return 0;\n }\n if (!handle.$$) {\n throwBindingError(\n 'Cannot pass \"' + _embind_repr(handle) + '\" as a ' + this.name\n );\n }\n if (!handle.$$.ptr) {\n throwBindingError(\n \"Cannot pass deleted object as a pointer of type \" + this.name\n );\n }\n if (!this.isConst && handle.$$.ptrType.isConst) {\n throwBindingError(\n \"Cannot convert argument of type \" +\n (handle.$$.smartPtrType\n ? handle.$$.smartPtrType.name\n : handle.$$.ptrType.name) +\n \" to parameter type \" +\n this.name\n );\n }\n var handleClass = handle.$$.ptrType.registeredClass;\n ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n if (this.isSmartPointer) {\n if (undefined === handle.$$.smartPtr) {\n throwBindingError(\"Passing raw pointer to smart pointer is illegal\");\n }\n switch (this.sharingPolicy) {\n case 0:\n if (handle.$$.smartPtrType === this) {\n ptr = handle.$$.smartPtr;\n } else {\n throwBindingError(\n \"Cannot convert argument of type \" +\n (handle.$$.smartPtrType\n ? handle.$$.smartPtrType.name\n : handle.$$.ptrType.name) +\n \" to parameter type \" +\n this.name\n );\n }\n break;\n\n case 1:\n ptr = handle.$$.smartPtr;\n break;\n\n case 2:\n if (handle.$$.smartPtrType === this) {\n ptr = handle.$$.smartPtr;\n } else {\n var clonedHandle = handle.clone();\n ptr = this.rawShare(\n ptr,\n Emval.toHandle(function () {\n clonedHandle.delete();\n })\n );\n if (destructors !== null) {\n destructors.push(this.rawDestructor, ptr);\n }\n }\n break;\n\n default:\n throwBindingError(\"Unsupporting sharing policy\");\n }\n }\n return ptr;\n }\n\n function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) {\n if (handle === null) {\n if (this.isReference) {\n throwBindingError(\"null is not a valid \" + this.name);\n }\n return 0;\n }\n if (!handle.$$) {\n throwBindingError(\n 'Cannot pass \"' + _embind_repr(handle) + '\" as a ' + this.name\n );\n }\n if (!handle.$$.ptr) {\n throwBindingError(\n \"Cannot pass deleted object as a pointer of type \" + this.name\n );\n }\n if (handle.$$.ptrType.isConst) {\n throwBindingError(\n \"Cannot convert argument of type \" +\n handle.$$.ptrType.name +\n \" to parameter type \" +\n this.name\n );\n }\n var handleClass = handle.$$.ptrType.registeredClass;\n var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);\n return ptr;\n }\n\n function RegisteredPointer_getPointee(ptr) {\n if (this.rawGetPointee) {\n ptr = this.rawGetPointee(ptr);\n }\n return ptr;\n }\n\n function RegisteredPointer_destructor(ptr) {\n if (this.rawDestructor) {\n this.rawDestructor(ptr);\n }\n }\n\n function RegisteredPointer_deleteObject(handle) {\n if (handle !== null) {\n handle.delete();\n }\n }\n\n function init_RegisteredPointer() {\n RegisteredPointer.prototype.getPointee = RegisteredPointer_getPointee;\n RegisteredPointer.prototype.destructor = RegisteredPointer_destructor;\n RegisteredPointer.prototype.argPackAdvance = 8;\n RegisteredPointer.prototype.readValueFromPointer =\n simpleReadValueFromPointer;\n RegisteredPointer.prototype.deleteObject = RegisteredPointer_deleteObject;\n RegisteredPointer.prototype.fromWireType = RegisteredPointer_fromWireType;\n }\n\n function RegisteredPointer(\n name,\n registeredClass,\n isReference,\n isConst,\n isSmartPointer,\n pointeeType,\n sharingPolicy,\n rawGetPointee,\n rawConstructor,\n rawShare,\n rawDestructor\n ) {\n this.name = name;\n this.registeredClass = registeredClass;\n this.isReference = isReference;\n this.isConst = isConst;\n this.isSmartPointer = isSmartPointer;\n this.pointeeType = pointeeType;\n this.sharingPolicy = sharingPolicy;\n this.rawGetPointee = rawGetPointee;\n this.rawConstructor = rawConstructor;\n this.rawShare = rawShare;\n this.rawDestructor = rawDestructor;\n if (!isSmartPointer && registeredClass.baseClass === undefined) {\n if (isConst) {\n this.toWireType = constNoSmartPtrRawPointerToWireType;\n this.destructorFunction = null;\n } else {\n this.toWireType = nonConstNoSmartPtrRawPointerToWireType;\n this.destructorFunction = null;\n }\n } else {\n this.toWireType = genericPointerToWireType;\n }\n }\n\n function replacePublicSymbol(name, value, numArguments) {\n if (!Module.hasOwnProperty(name)) {\n throwInternalError(\"Replacing nonexistant public symbol\");\n }\n if (\n undefined !== Module[name].overloadTable &&\n undefined !== numArguments\n ) {\n Module[name].overloadTable[numArguments] = value;\n } else {\n Module[name] = value;\n Module[name].argCount = numArguments;\n }\n }\n\n function dynCallLegacy(sig, ptr, args) {\n var f = Module[\"dynCall_\" + sig];\n return args && args.length\n ? f.apply(null, [ptr].concat(args))\n : f.call(null, ptr);\n }\n\n function dynCall(sig, ptr, args) {\n if (sig.includes(\"j\")) {\n return dynCallLegacy(sig, ptr, args);\n }\n return getWasmTableEntry(ptr).apply(null, args);\n }\n\n function getDynCaller(sig, ptr) {\n var argCache = [];\n return function () {\n argCache.length = 0;\n Object.assign(argCache, arguments);\n return dynCall(sig, ptr, argCache);\n };\n }\n\n function embind__requireFunction(signature, rawFunction) {\n signature = readLatin1String(signature);\n function makeDynCaller() {\n if (signature.includes(\"j\")) {\n return getDynCaller(signature, rawFunction);\n }\n return getWasmTableEntry(rawFunction);\n }\n var fp = makeDynCaller();\n if (typeof fp != \"function\") {\n throwBindingError(\n \"unknown function pointer with signature \" +\n signature +\n \": \" +\n rawFunction\n );\n }\n return fp;\n }\n\n var UnboundTypeError = undefined;\n\n function getTypeName(type) {\n var ptr = ___getTypeName(type);\n var rv = readLatin1String(ptr);\n _free(ptr);\n return rv;\n }\n\n function throwUnboundTypeError(message, types) {\n var unboundTypes = [];\n var seen = {};\n function visit(type) {\n if (seen[type]) {\n return;\n }\n if (registeredTypes[type]) {\n return;\n }\n if (typeDependencies[type]) {\n typeDependencies[type].forEach(visit);\n return;\n }\n unboundTypes.push(type);\n seen[type] = true;\n }\n types.forEach(visit);\n throw new UnboundTypeError(\n message + \": \" + unboundTypes.map(getTypeName).join([\", \"])\n );\n }\n\n function __embind_register_class(\n rawType,\n rawPointerType,\n rawConstPointerType,\n baseClassRawType,\n getActualTypeSignature,\n getActualType,\n upcastSignature,\n upcast,\n downcastSignature,\n downcast,\n name,\n destructorSignature,\n rawDestructor\n ) {\n name = readLatin1String(name);\n getActualType = embind__requireFunction(\n getActualTypeSignature,\n getActualType\n );\n if (upcast) {\n upcast = embind__requireFunction(upcastSignature, upcast);\n }\n if (downcast) {\n downcast = embind__requireFunction(downcastSignature, downcast);\n }\n rawDestructor = embind__requireFunction(destructorSignature, rawDestructor);\n var legalFunctionName = makeLegalFunctionName(name);\n exposePublicSymbol(legalFunctionName, function () {\n throwUnboundTypeError(\n \"Cannot construct \" + name + \" due to unbound types\",\n [baseClassRawType]\n );\n });\n whenDependentTypesAreResolved(\n [rawType, rawPointerType, rawConstPointerType],\n baseClassRawType ? [baseClassRawType] : [],\n function (base) {\n base = base[0];\n var baseClass;\n var basePrototype;\n if (baseClassRawType) {\n baseClass = base.registeredClass;\n basePrototype = baseClass.instancePrototype;\n } else {\n basePrototype = ClassHandle.prototype;\n }\n var constructor = createNamedFunction(legalFunctionName, function () {\n if (Object.getPrototypeOf(this) !== instancePrototype) {\n throw new BindingError(\"Use 'new' to construct \" + name);\n }\n if (undefined === registeredClass.constructor_body) {\n throw new BindingError(name + \" has no accessible constructor\");\n }\n var body = registeredClass.constructor_body[arguments.length];\n if (undefined === body) {\n throw new BindingError(\n \"Tried to invoke ctor of \" +\n name +\n \" with invalid number of parameters (\" +\n arguments.length +\n \") - expected (\" +\n Object.keys(registeredClass.constructor_body).toString() +\n \") parameters instead!\"\n );\n }\n return body.apply(this, arguments);\n });\n var instancePrototype = Object.create(basePrototype, {\n constructor: {\n value: constructor,\n },\n });\n constructor.prototype = instancePrototype;\n var registeredClass = new RegisteredClass(\n name,\n constructor,\n instancePrototype,\n rawDestructor,\n baseClass,\n getActualType,\n upcast,\n downcast\n );\n var referenceConverter = new RegisteredPointer(\n name,\n registeredClass,\n true,\n false,\n false\n );\n var pointerConverter = new RegisteredPointer(\n name + \"*\",\n registeredClass,\n false,\n false,\n false\n );\n var constPointerConverter = new RegisteredPointer(\n name + \" const*\",\n registeredClass,\n false,\n true,\n false\n );\n registeredPointers[rawType] = {\n pointerType: pointerConverter,\n constPointerType: constPointerConverter,\n };\n replacePublicSymbol(legalFunctionName, constructor);\n return [referenceConverter, pointerConverter, constPointerConverter];\n }\n );\n }\n\n function heap32VectorToArray(count, firstElement) {\n var array = [];\n for (var i = 0; i < count; i++) {\n array.push(HEAP32[(firstElement >> 2) + i]);\n }\n return array;\n }\n\n function __embind_register_class_constructor(\n rawClassType,\n argCount,\n rawArgTypesAddr,\n invokerSignature,\n invoker,\n rawConstructor\n ) {\n assert(argCount > 0);\n var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n invoker = embind__requireFunction(invokerSignature, invoker);\n whenDependentTypesAreResolved([], [rawClassType], function (classType) {\n classType = classType[0];\n var humanName = \"constructor \" + classType.name;\n if (undefined === classType.registeredClass.constructor_body) {\n classType.registeredClass.constructor_body = [];\n }\n if (\n undefined !== classType.registeredClass.constructor_body[argCount - 1]\n ) {\n throw new BindingError(\n \"Cannot register multiple constructors with identical number of parameters (\" +\n (argCount - 1) +\n \") for class '\" +\n classType.name +\n \"'! Overload resolution is currently only performed using the parameter count, not actual type info!\"\n );\n }\n classType.registeredClass.constructor_body[argCount - 1] = () => {\n throwUnboundTypeError(\n \"Cannot construct \" + classType.name + \" due to unbound types\",\n rawArgTypes\n );\n };\n whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) {\n argTypes.splice(1, 0, null);\n classType.registeredClass.constructor_body[argCount - 1] =\n craftInvokerFunction(\n humanName,\n argTypes,\n null,\n invoker,\n rawConstructor\n );\n return [];\n });\n return [];\n });\n }\n\n function craftInvokerFunction(\n humanName,\n argTypes,\n classType,\n cppInvokerFunc,\n cppTargetFunc\n ) {\n var argCount = argTypes.length;\n if (argCount < 2) {\n throwBindingError(\n \"argTypes array size mismatch! Must at least get return value and 'this' types!\"\n );\n }\n var isClassMethodFunc = argTypes[1] !== null && classType !== null;\n var needsDestructorStack = false;\n for (var i = 1; i < argTypes.length; ++i) {\n if (\n argTypes[i] !== null &&\n argTypes[i].destructorFunction === undefined\n ) {\n needsDestructorStack = true;\n break;\n }\n }\n var returns = argTypes[0].name !== \"void\";\n var expectedArgCount = argCount - 2;\n var argsWired = new Array(expectedArgCount);\n var invokerFuncArgs = [];\n var destructors = [];\n return function () {\n if (arguments.length !== expectedArgCount) {\n throwBindingError(\n \"function \" +\n humanName +\n \" called with \" +\n arguments.length +\n \" arguments, expected \" +\n expectedArgCount +\n \" args!\"\n );\n }\n destructors.length = 0;\n var thisWired;\n invokerFuncArgs.length = isClassMethodFunc ? 2 : 1;\n invokerFuncArgs[0] = cppTargetFunc;\n if (isClassMethodFunc) {\n thisWired = argTypes[1].toWireType(destructors, this);\n invokerFuncArgs[1] = thisWired;\n }\n for (var i = 0; i < expectedArgCount; ++i) {\n argsWired[i] = argTypes[i + 2].toWireType(destructors, arguments[i]);\n invokerFuncArgs.push(argsWired[i]);\n }\n var rv = cppInvokerFunc.apply(null, invokerFuncArgs);\n function onDone(rv) {\n if (needsDestructorStack) {\n runDestructors(destructors);\n } else {\n for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; i++) {\n var param = i === 1 ? thisWired : argsWired[i - 2];\n if (argTypes[i].destructorFunction !== null) {\n argTypes[i].destructorFunction(param);\n }\n }\n }\n if (returns) {\n return argTypes[0].fromWireType(rv);\n }\n }\n return onDone(rv);\n };\n }\n\n function __embind_register_class_function(\n rawClassType,\n methodName,\n argCount,\n rawArgTypesAddr,\n invokerSignature,\n rawInvoker,\n context,\n isPureVirtual\n ) {\n var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);\n methodName = readLatin1String(methodName);\n rawInvoker = embind__requireFunction(invokerSignature, rawInvoker);\n whenDependentTypesAreResolved([], [rawClassType], function (classType) {\n classType = classType[0];\n var humanName = classType.name + \".\" + methodName;\n if (methodName.startsWith(\"@@\")) {\n methodName = Symbol[methodName.substring(2)];\n }\n if (isPureVirtual) {\n classType.registeredClass.pureVirtualFunctions.push(methodName);\n }\n function unboundTypesHandler() {\n throwUnboundTypeError(\n \"Cannot call \" + humanName + \" due to unbound types\",\n rawArgTypes\n );\n }\n var proto = classType.registeredClass.instancePrototype;\n var method = proto[methodName];\n if (\n undefined === method ||\n (undefined === method.overloadTable &&\n method.className !== classType.name &&\n method.argCount === argCount - 2)\n ) {\n unboundTypesHandler.argCount = argCount - 2;\n unboundTypesHandler.className = classType.name;\n proto[methodName] = unboundTypesHandler;\n } else {\n ensureOverloadTable(proto, methodName, humanName);\n proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler;\n }\n whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) {\n var memberFunction = craftInvokerFunction(\n humanName,\n argTypes,\n classType,\n rawInvoker,\n context\n );\n if (undefined === proto[methodName].overloadTable) {\n memberFunction.argCount = argCount - 2;\n proto[methodName] = memberFunction;\n } else {\n proto[methodName].overloadTable[argCount - 2] = memberFunction;\n }\n return [];\n });\n return [];\n });\n }\n\n var emval_free_list = [];\n\n var emval_handle_array = [\n {},\n {\n value: undefined,\n },\n {\n value: null,\n },\n {\n value: true,\n },\n {\n value: false,\n },\n ];\n\n function __emval_decref(handle) {\n if (handle > 4 && 0 === --emval_handle_array[handle].refcount) {\n emval_handle_array[handle] = undefined;\n emval_free_list.push(handle);\n }\n }\n\n function count_emval_handles() {\n var count = 0;\n for (var i = 5; i < emval_handle_array.length; ++i) {\n if (emval_handle_array[i] !== undefined) {\n ++count;\n }\n }\n return count;\n }\n\n function get_first_emval() {\n for (var i = 5; i < emval_handle_array.length; ++i) {\n if (emval_handle_array[i] !== undefined) {\n return emval_handle_array[i];\n }\n }\n return null;\n }\n\n function init_emval() {\n Module.count_emval_handles = count_emval_handles;\n Module.get_first_emval = get_first_emval;\n }\n\n var Emval = {\n toValue: handle => {\n if (!handle) {\n throwBindingError(\"Cannot use deleted val. handle = \" + handle);\n }\n return emval_handle_array[handle].value;\n },\n toHandle: value => {\n switch (value) {\n case undefined:\n return 1;\n\n case null:\n return 2;\n\n case true:\n return 3;\n\n case false:\n return 4;\n\n default: {\n var handle = emval_free_list.length\n ? emval_free_list.pop()\n : emval_handle_array.length;\n emval_handle_array[handle] = {\n refcount: 1,\n value,\n };\n return handle;\n }\n }\n },\n };\n\n function __embind_register_emval(rawType, name) {\n name = readLatin1String(name);\n registerType(rawType, {\n name,\n fromWireType: function (handle) {\n var rv = Emval.toValue(handle);\n __emval_decref(handle);\n return rv;\n },\n toWireType: function (destructors, value) {\n return Emval.toHandle(value);\n },\n argPackAdvance: 8,\n readValueFromPointer: simpleReadValueFromPointer,\n destructorFunction: null,\n });\n }\n\n function _embind_repr(v) {\n if (v === null) {\n return \"null\";\n }\n var t = typeof v;\n if (t === \"object\" || t === \"array\" || t === \"function\") {\n return v.toString();\n }\n return \"\" + v;\n }\n\n function floatReadValueFromPointer(name, shift) {\n switch (shift) {\n case 2:\n return function (pointer) {\n return this.fromWireType(HEAPF32[pointer >> 2]);\n };\n\n case 3:\n return function (pointer) {\n return this.fromWireType(HEAPF64[pointer >> 3]);\n };\n\n default:\n throw new TypeError(\"Unknown float type: \" + name);\n }\n }\n\n function __embind_register_float(rawType, name, size) {\n var shift = getShiftFromSize(size);\n name = readLatin1String(name);\n registerType(rawType, {\n name,\n fromWireType: function (value) {\n return value;\n },\n toWireType: function (destructors, value) {\n return value;\n },\n argPackAdvance: 8,\n readValueFromPointer: floatReadValueFromPointer(name, shift),\n destructorFunction: null,\n });\n }\n\n function integerReadValueFromPointer(name, shift, signed) {\n switch (shift) {\n case 0:\n return signed\n ? function readS8FromPointer(pointer) {\n return HEAP8[pointer];\n }\n : function readU8FromPointer(pointer) {\n return HEAPU8[pointer];\n };\n\n case 1:\n return signed\n ? function readS16FromPointer(pointer) {\n return HEAP16[pointer >> 1];\n }\n : function readU16FromPointer(pointer) {\n return HEAPU16[pointer >> 1];\n };\n\n case 2:\n return signed\n ? function readS32FromPointer(pointer) {\n return HEAP32[pointer >> 2];\n }\n : function readU32FromPointer(pointer) {\n return HEAPU32[pointer >> 2];\n };\n\n default:\n throw new TypeError(\"Unknown integer type: \" + name);\n }\n }\n\n function __embind_register_integer(\n primitiveType,\n name,\n size,\n minRange,\n maxRange\n ) {\n name = readLatin1String(name);\n if (maxRange === -1) {\n maxRange = 4294967295;\n }\n var shift = getShiftFromSize(size);\n var fromWireType = value => value;\n if (minRange === 0) {\n var bitshift = 32 - 8 * size;\n fromWireType = value => (value << bitshift) >>> bitshift;\n }\n var isUnsignedType = name.includes(\"unsigned\");\n var checkAssertions = (value, toTypeName) => { };\n var toWireType;\n if (isUnsignedType) {\n toWireType = function (destructors, value) {\n checkAssertions(value, this.name);\n return value >>> 0;\n };\n } else {\n toWireType = function (destructors, value) {\n checkAssertions(value, this.name);\n return value;\n };\n }\n registerType(primitiveType, {\n name,\n fromWireType: fromWireType,\n toWireType: toWireType,\n argPackAdvance: 8,\n readValueFromPointer: integerReadValueFromPointer(\n name,\n shift,\n minRange !== 0\n ),\n destructorFunction: null,\n });\n }\n\n function __embind_register_memory_view(rawType, dataTypeIndex, name) {\n var typeMapping = [\n Int8Array,\n Uint8Array,\n Int16Array,\n Uint16Array,\n Int32Array,\n Uint32Array,\n Float32Array,\n Float64Array,\n ];\n var TA = typeMapping[dataTypeIndex];\n function decodeMemoryView(handle) {\n handle = handle >> 2;\n var heap = HEAPU32;\n var size = heap[handle];\n var data = heap[handle + 1];\n return new TA(buffer, data, size);\n }\n name = readLatin1String(name);\n registerType(\n rawType,\n {\n name,\n fromWireType: decodeMemoryView,\n argPackAdvance: 8,\n readValueFromPointer: decodeMemoryView,\n },\n {\n ignoreDuplicateRegistrations: true,\n }\n );\n }\n\n function __embind_register_smart_ptr(\n rawType,\n rawPointeeType,\n name,\n sharingPolicy,\n getPointeeSignature,\n rawGetPointee,\n constructorSignature,\n rawConstructor,\n shareSignature,\n rawShare,\n destructorSignature,\n rawDestructor\n ) {\n name = readLatin1String(name);\n rawGetPointee = embind__requireFunction(getPointeeSignature, rawGetPointee);\n rawConstructor = embind__requireFunction(\n constructorSignature,\n rawConstructor\n );\n rawShare = embind__requireFunction(shareSignature, rawShare);\n rawDestructor = embind__requireFunction(destructorSignature, rawDestructor);\n whenDependentTypesAreResolved(\n [rawType],\n [rawPointeeType],\n function (pointeeType) {\n pointeeType = pointeeType[0];\n var registeredPointer = new RegisteredPointer(\n name,\n pointeeType.registeredClass,\n false,\n false,\n true,\n pointeeType,\n sharingPolicy,\n rawGetPointee,\n rawConstructor,\n rawShare,\n rawDestructor\n );\n return [registeredPointer];\n }\n );\n }\n\n function __embind_register_std_string(rawType, name) {\n name = readLatin1String(name);\n var stdStringIsUTF8 = name === \"std::string\";\n registerType(rawType, {\n name,\n fromWireType: function (value) {\n var length = HEAPU32[value >> 2];\n var str;\n if (stdStringIsUTF8) {\n var decodeStartPtr = value + 4;\n for (var i = 0; i <= length; ++i) {\n var currentBytePtr = value + 4 + i;\n if (i == length || HEAPU8[currentBytePtr] == 0) {\n var maxRead = currentBytePtr - decodeStartPtr;\n var stringSegment = UTF8ToString(decodeStartPtr, maxRead);\n if (str === undefined) {\n str = stringSegment;\n } else {\n str += String.fromCharCode(0);\n str += stringSegment;\n }\n decodeStartPtr = currentBytePtr + 1;\n }\n }\n } else {\n var a = new Array(length);\n for (var i = 0; i < length; ++i) {\n a[i] = String.fromCharCode(HEAPU8[value + 4 + i]);\n }\n str = a.join(\"\");\n }\n _free(value);\n return str;\n },\n toWireType: function (destructors, value) {\n if (value instanceof ArrayBuffer) {\n value = new Uint8Array(value);\n }\n var getLength;\n var valueIsOfTypeString = typeof value == \"string\";\n if (\n !(\n valueIsOfTypeString ||\n value instanceof Uint8Array ||\n value instanceof Uint8ClampedArray ||\n value instanceof Int8Array\n )\n ) {\n throwBindingError(\"Cannot pass non-string to std::string\");\n }\n if (stdStringIsUTF8 && valueIsOfTypeString) {\n getLength = () => lengthBytesUTF8(value);\n } else {\n getLength = () => value.length;\n }\n var length = getLength();\n var ptr = _malloc(4 + length + 1);\n HEAPU32[ptr >> 2] = length;\n if (stdStringIsUTF8 && valueIsOfTypeString) {\n stringToUTF8(value, ptr + 4, length + 1);\n } else if (valueIsOfTypeString) {\n for (var i = 0; i < length; ++i) {\n var charCode = value.charCodeAt(i);\n if (charCode > 255) {\n _free(ptr);\n throwBindingError(\n \"String has UTF-16 code units that do not fit in 8 bits\"\n );\n }\n HEAPU8[ptr + 4 + i] = charCode;\n }\n } else {\n for (var i = 0; i < length; ++i) {\n HEAPU8[ptr + 4 + i] = value[i];\n }\n }\n if (destructors !== null) {\n destructors.push(_free, ptr);\n }\n return ptr;\n },\n argPackAdvance: 8,\n readValueFromPointer: simpleReadValueFromPointer,\n destructorFunction(ptr) {\n _free(ptr);\n },\n });\n }\n\n function __embind_register_std_wstring(rawType, charSize, name) {\n name = readLatin1String(name);\n var decodeString, encodeString, getHeap, lengthBytesUTF, shift;\n if (charSize === 2) {\n decodeString = UTF16ToString;\n encodeString = stringToUTF16;\n lengthBytesUTF = lengthBytesUTF16;\n getHeap = () => HEAPU16;\n shift = 1;\n } else if (charSize === 4) {\n decodeString = UTF32ToString;\n encodeString = stringToUTF32;\n lengthBytesUTF = lengthBytesUTF32;\n getHeap = () => HEAPU32;\n shift = 2;\n }\n registerType(rawType, {\n name,\n fromWireType: function (value) {\n var length = HEAPU32[value >> 2];\n var HEAP = getHeap();\n var str;\n var decodeStartPtr = value + 4;\n for (var i = 0; i <= length; ++i) {\n var currentBytePtr = value + 4 + i * charSize;\n if (i == length || HEAP[currentBytePtr >> shift] == 0) {\n var maxReadBytes = currentBytePtr - decodeStartPtr;\n var stringSegment = decodeString(decodeStartPtr, maxReadBytes);\n if (str === undefined) {\n str = stringSegment;\n } else {\n str += String.fromCharCode(0);\n str += stringSegment;\n }\n decodeStartPtr = currentBytePtr + charSize;\n }\n }\n _free(value);\n return str;\n },\n toWireType: function (destructors, value) {\n if (!(typeof value == \"string\")) {\n throwBindingError(\n \"Cannot pass non-string to C++ string type \" + name\n );\n }\n var length = lengthBytesUTF(value);\n var ptr = _malloc(4 + length + charSize);\n HEAPU32[ptr >> 2] = length >> shift;\n encodeString(value, ptr + 4, length + charSize);\n if (destructors !== null) {\n destructors.push(_free, ptr);\n }\n return ptr;\n },\n argPackAdvance: 8,\n readValueFromPointer: simpleReadValueFromPointer,\n destructorFunction(ptr) {\n _free(ptr);\n },\n });\n }\n\n function __embind_register_value_object(\n rawType,\n name,\n constructorSignature,\n rawConstructor,\n destructorSignature,\n rawDestructor\n ) {\n structRegistrations[rawType] = {\n name: readLatin1String(name),\n rawConstructor: embind__requireFunction(\n constructorSignature,\n rawConstructor\n ),\n rawDestructor: embind__requireFunction(\n destructorSignature,\n rawDestructor\n ),\n fields: [],\n };\n }\n\n function __embind_register_value_object_field(\n structType,\n fieldName,\n getterReturnType,\n getterSignature,\n getter,\n getterContext,\n setterArgumentType,\n setterSignature,\n setter,\n setterContext\n ) {\n structRegistrations[structType].fields.push({\n fieldName: readLatin1String(fieldName),\n getterReturnType,\n getter: embind__requireFunction(getterSignature, getter),\n getterContext,\n setterArgumentType,\n setter: embind__requireFunction(setterSignature, setter),\n setterContext,\n });\n }\n\n function __embind_register_void(rawType, name) {\n name = readLatin1String(name);\n registerType(rawType, {\n isVoid: true,\n name,\n argPackAdvance: 0,\n fromWireType: function () {\n return undefined;\n },\n toWireType: function (destructors, o) {\n return undefined;\n },\n });\n }\n\n function __emscripten_date_now() {\n return Date.now();\n }\n\n var nowIsMonotonic = true;\n\n function __emscripten_get_now_is_monotonic() {\n return nowIsMonotonic;\n }\n\n function requireRegisteredType(rawType, humanName) {\n var impl = registeredTypes[rawType];\n if (undefined === impl) {\n throwBindingError(\n humanName + \" has unknown type \" + getTypeName(rawType)\n );\n }\n return impl;\n }\n\n function __emval_lookupTypes(argCount, argTypes) {\n var a = new Array(argCount);\n for (var i = 0; i < argCount; ++i) {\n a[i] = requireRegisteredType(\n HEAP32[(argTypes >> 2) + i],\n \"parameter \" + i\n );\n }\n return a;\n }\n\n function __emval_call(handle, argCount, argTypes, argv) {\n handle = Emval.toValue(handle);\n var types = __emval_lookupTypes(argCount, argTypes);\n var args = new Array(argCount);\n for (var i = 0; i < argCount; ++i) {\n var type = types[i];\n args[i] = type.readValueFromPointer(argv);\n argv += type.argPackAdvance;\n }\n var rv = handle.apply(undefined, args);\n return Emval.toHandle(rv);\n }\n\n function __emval_incref(handle) {\n if (handle > 4) {\n emval_handle_array[handle].refcount += 1;\n }\n }\n\n function __emval_take_value(type, argv) {\n type = requireRegisteredType(type, \"_emval_take_value\");\n var v = type.readValueFromPointer(argv);\n return Emval.toHandle(v);\n }\n\n function __localtime_js(time, tmPtr) {\n var date = new Date(HEAP32[time >> 2] * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[(tmPtr + 4) >> 2] = date.getMinutes();\n HEAP32[(tmPtr + 8) >> 2] = date.getHours();\n HEAP32[(tmPtr + 12) >> 2] = date.getDate();\n HEAP32[(tmPtr + 16) >> 2] = date.getMonth();\n HEAP32[(tmPtr + 20) >> 2] = date.getFullYear() - 1900;\n HEAP32[(tmPtr + 24) >> 2] = date.getDay();\n var start = new Date(date.getFullYear(), 0, 1);\n var yday = ((date.getTime() - start.getTime()) / (1e3 * 60 * 60 * 24)) | 0;\n HEAP32[(tmPtr + 28) >> 2] = yday;\n HEAP32[(tmPtr + 36) >> 2] = -(date.getTimezoneOffset() * 60);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst =\n (summerOffset != winterOffset &&\n date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[(tmPtr + 32) >> 2] = dst;\n }\n\n function __mmap_js(addr, len, prot, flags, fd, off, allocated, builtin) {\n return -52;\n }\n\n function __munmap_js(addr, len, prot, flags, fd, offset) { }\n\n function _tzset_impl(timezone, daylight, tzname) {\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAP32[timezone >> 2] = stdTimezoneOffset * 60;\n HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAP32[tzname >> 2] = winterNamePtr;\n HEAP32[(tzname + 4) >> 2] = summerNamePtr;\n } else {\n HEAP32[tzname >> 2] = summerNamePtr;\n HEAP32[(tzname + 4) >> 2] = winterNamePtr;\n }\n }\n\n function __tzset_js(timezone, daylight, tzname) {\n if (__tzset_js.called) {\n return;\n }\n __tzset_js.called = true;\n _tzset_impl(timezone, daylight, tzname);\n }\n\n function _abort() {\n abort(\"\");\n }\n\n var readAsmConstArgsArray = [];\n\n function readAsmConstArgs(sigPtr, buf) {\n readAsmConstArgsArray.length = 0;\n var ch;\n buf >>= 2;\n while ((ch = HEAPU8[sigPtr++])) {\n var readAsmConstArgsDouble = ch < 105;\n if (readAsmConstArgsDouble && buf & 1) {\n buf++;\n }\n readAsmConstArgsArray.push(\n readAsmConstArgsDouble ? HEAPF64[buf++ >> 1] : HEAP32[buf]\n );\n ++buf;\n }\n return readAsmConstArgsArray;\n }\n\n function _emscripten_asm_const_int(code, sigPtr, argbuf) {\n var args = readAsmConstArgs(sigPtr, argbuf);\n return ASM_CONSTS[code].apply(null, args);\n }\n\n function _emscripten_get_heap_max() {\n return 2147483648;\n }\n\n var _emscripten_get_now;\n\n _emscripten_get_now = () => performance.now();\n\n function _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n }\n\n function emscripten_realloc_buffer(size) {\n try {\n wasmMemory.grow((size - buffer.byteLength + 65535) >>> 16);\n updateGlobalBufferAndViews(wasmMemory.buffer);\n return 1;\n } catch (e) { }\n }\n\n function _emscripten_resize_heap(requestedSize) {\n var oldSize = HEAPU8.length;\n requestedSize = requestedSize >>> 0;\n var maxHeapSize = _emscripten_get_heap_max();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n let alignUp = (x, multiple) => x + ((multiple - (x % multiple)) % multiple);\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);\n overGrownHeapSize = Math.min(\n overGrownHeapSize,\n requestedSize + 100663296\n );\n var newSize = Math.min(\n maxHeapSize,\n alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)\n );\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n }\n\n var ENV = {};\n\n function getExecutableName() {\n return thisProgram || \"./this.program\";\n }\n\n function getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang =\n (\n (typeof navigator == \"object\" &&\n navigator.languages &&\n navigator.languages[0]) ||\n \"C\"\n ).replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n USER: \"web_user\",\n LOGNAME: \"web_user\",\n PATH: \"/\",\n PWD: \"/\",\n HOME: \"/home/web_user\",\n LANG: lang,\n _: getExecutableName(),\n };\n for (var x in ENV) {\n if (ENV[x] === undefined) {\n delete env[x];\n } else {\n env[x] = ENV[x];\n }\n }\n var strings = [];\n for (var x in env) {\n strings.push(x + \"=\" + env[x]);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n }\n\n function _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function (string, i) {\n var ptr = environ_buf + bufSize;\n HEAP32[(__environ + i * 4) >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n }\n\n function _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAP32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function (string) {\n bufSize += string.length + 1;\n });\n HEAP32[penviron_buf_size >> 2] = bufSize;\n return 0;\n }\n\n function _exit(status) {\n exit(status);\n }\n\n function _fd_close(fd) {\n return 0;\n }\n\n function _fd_read(fd, iov, iovcnt, pnum) {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = SYSCALLS.doReadv(stream, iov, iovcnt);\n HEAP32[pnum >> 2] = num;\n return 0;\n }\n\n function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { }\n\n function _fd_write(fd, iov, iovcnt, pnum) {\n var num = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[iov >> 2];\n var len = HEAP32[(iov + 4) >> 2];\n iov += 8;\n for (var j = 0; j < len; j++) {\n SYSCALLS.printChar(fd, HEAPU8[ptr + j]);\n }\n num += len;\n }\n HEAP32[pnum >> 2] = num;\n return 0;\n }\n\n function getRandomDevice() {\n if (\n typeof crypto == \"object\" &&\n typeof crypto.getRandomValues == \"function\"\n ) {\n var randomBuffer = new Uint8Array(1);\n return function () {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n }\n return function () {\n abort(\"randomDevice\");\n };\n }\n\n function _getentropy(buffer, size) {\n if (!_getentropy.randomDevice) {\n _getentropy.randomDevice = getRandomDevice();\n }\n for (var i = 0; i < size; i++) {\n HEAP8[(buffer + i) >> 0] = _getentropy.randomDevice();\n }\n return 0;\n }\n\n function _pclose() {\n err(\"missing function: pclose\");\n abort(-1);\n }\n\n function _setTempRet0(val) {\n setTempRet0(val);\n }\n\n function __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n }\n\n function __arraySum(array, index) {\n var sum = 0;\n for (var i = 0; i <= index; sum += array[i++]) { }\n return sum;\n }\n\n var __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n var __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n function __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while (days > 0) {\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (\n leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR\n )[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) {\n newDate.setMonth(currentMonth + 1);\n } else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n }\n\n function _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[(tm + 40) >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[(tm + 4) >> 2],\n tm_hour: HEAP32[(tm + 8) >> 2],\n tm_mday: HEAP32[(tm + 12) >> 2],\n tm_mon: HEAP32[(tm + 16) >> 2],\n tm_year: HEAP32[(tm + 20) >> 2],\n tm_wday: HEAP32[(tm + 24) >> 2],\n tm_yday: HEAP32[(tm + 28) >> 2],\n tm_isdst: HEAP32[(tm + 32) >> 2],\n tm_gmtoff: HEAP32[(tm + 36) >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\",\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\",\n };\n for (var rule in EXPANSION_RULES_1) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n }\n var WEEKDAYS = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ];\n var MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ];\n function leadingSomething(value, digits, character) {\n var str = typeof value == \"number\" ? value.toString() : value || \"\";\n while (str.length < digits) {\n str = character[0] + str;\n }\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {\n compare = sgn(date1.getDate() - date2.getDate());\n }\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch (janFourth.getDay()) {\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n\n case 1:\n return janFourth;\n\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(\n new Date(date.tm_year + 1900, 0, 1),\n date.tm_yday\n );\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {\n return thisDate.getFullYear() + 1;\n }\n return thisDate.getFullYear();\n }\n return thisDate.getFullYear() - 1;\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function (date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function (date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function (date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function (date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function (date) {\n var year = date.tm_year + 1900;\n return leadingNulls((year / 100) | 0, 2);\n },\n \"%d\": function (date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function (date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function (date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function (date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function (date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function (date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) {\n twelveHour = 12;\n } else if (twelveHour > 12) {\n twelveHour -= 12;\n }\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function (date) {\n return leadingNulls(\n date.tm_mday +\n __arraySum(\n __isLeapYear(date.tm_year + 1900)\n ? __MONTH_DAYS_LEAP\n : __MONTH_DAYS_REGULAR,\n date.tm_mon - 1\n ),\n 3\n );\n },\n \"%m\": function (date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function (date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function () {\n return \"\\n\";\n },\n \"%p\": function (date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) {\n return \"AM\";\n }\n return \"PM\";\n },\n \"%S\": function (date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function () {\n return \"\\t\";\n },\n \"%u\": function (date) {\n return date.tm_wday || 7;\n },\n \"%U\": function (date) {\n var days = date.tm_yday + 7 - date.tm_wday;\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%V\": function (date) {\n var val = Math.floor((date.tm_yday + 7 - ((date.tm_wday + 6) % 7)) / 7);\n if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) {\n val++;\n }\n if (!val) {\n val = 52;\n var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;\n if (\n dec31 == 4 ||\n (dec31 == 5 && __isLeapYear((date.tm_year % 400) - 1))\n ) {\n val++;\n }\n } else if (val == 53) {\n var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;\n if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) {\n val = 1;\n }\n }\n return leadingNulls(val, 2);\n },\n \"%w\": function (date) {\n return date.tm_wday;\n },\n \"%W\": function (date) {\n var days = date.tm_yday + 7 - ((date.tm_wday + 6) % 7);\n return leadingNulls(Math.floor(days / 7), 2);\n },\n \"%y\": function (date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function (date) {\n return date.tm_year + 1900;\n },\n \"%z\": function (date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = (off / 60) * 100 + (off % 60);\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function (date) {\n return date.tm_zone;\n },\n \"%%\": function () {\n return \"%\";\n },\n };\n pattern = pattern.replace(/%%/g, \"\\0\\0\");\n for (var rule in EXPANSION_RULES_2) {\n if (pattern.includes(rule)) {\n pattern = pattern.replace(\n new RegExp(rule, \"g\"),\n EXPANSION_RULES_2[rule](date)\n );\n }\n }\n pattern = pattern.replace(/\\0\\0/g, \"%\");\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) {\n return 0;\n }\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n }\n\n function _strftime_l(s, maxsize, format, tm) {\n return _strftime(s, maxsize, format, tm);\n }\n\n InternalError = Module.InternalError = extendError(Error, \"InternalError\");\n\n embind_init_charCodes();\n\n BindingError = Module.BindingError = extendError(Error, \"BindingError\");\n\n init_ClassHandle();\n\n init_embind();\n\n init_RegisteredPointer();\n\n UnboundTypeError = Module.UnboundTypeError = extendError(\n Error,\n \"UnboundTypeError\"\n );\n\n init_emval();\n\n function intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(\n stringy,\n u8array,\n 0,\n u8array.length\n );\n if (dontAddNull) {\n u8array.length = numBytesWritten;\n }\n return u8array;\n }\n\n var asmLibraryArg = {\n __assert_fail: ___assert_fail,\n __cxa_allocate_exception: ___cxa_allocate_exception,\n __cxa_rethrow: ___cxa_rethrow,\n __cxa_throw: ___cxa_throw,\n __syscall_faccessat: ___syscall_faccessat,\n __syscall_fcntl64: ___syscall_fcntl64,\n __syscall_fstat64: ___syscall_fstat64,\n __syscall_getcwd: ___syscall_getcwd,\n __syscall_ioctl: ___syscall_ioctl,\n __syscall_lstat64: ___syscall_lstat64,\n __syscall_newfstatat: ___syscall_newfstatat,\n __syscall_openat: ___syscall_openat,\n __syscall_renameat: ___syscall_renameat,\n __syscall_rmdir: ___syscall_rmdir,\n __syscall_stat64: ___syscall_stat64,\n __syscall_unlinkat: ___syscall_unlinkat,\n _embind_finalize_value_object: __embind_finalize_value_object,\n _embind_register_bigint: __embind_register_bigint,\n _embind_register_bool: __embind_register_bool,\n _embind_register_class: __embind_register_class,\n _embind_register_class_constructor: __embind_register_class_constructor,\n _embind_register_class_function: __embind_register_class_function,\n _embind_register_emval: __embind_register_emval,\n _embind_register_float: __embind_register_float,\n _embind_register_integer: __embind_register_integer,\n _embind_register_memory_view: __embind_register_memory_view,\n _embind_register_smart_ptr: __embind_register_smart_ptr,\n _embind_register_std_string: __embind_register_std_string,\n _embind_register_std_wstring: __embind_register_std_wstring,\n _embind_register_value_object: __embind_register_value_object,\n _embind_register_value_object_field: __embind_register_value_object_field,\n _embind_register_void: __embind_register_void,\n _emscripten_date_now: __emscripten_date_now,\n _emscripten_get_now_is_monotonic: __emscripten_get_now_is_monotonic,\n _emval_call: __emval_call,\n _emval_decref: __emval_decref,\n _emval_incref: __emval_incref,\n _emval_take_value: __emval_take_value,\n _localtime_js: __localtime_js,\n _mmap_js: __mmap_js,\n _munmap_js: __munmap_js,\n _tzset_js: __tzset_js,\n abort: _abort,\n emscripten_asm_const_int: _emscripten_asm_const_int,\n emscripten_get_heap_max: _emscripten_get_heap_max,\n emscripten_get_now: _emscripten_get_now,\n emscripten_memcpy_big: _emscripten_memcpy_big,\n emscripten_resize_heap: _emscripten_resize_heap,\n environ_get: _environ_get,\n environ_sizes_get: _environ_sizes_get,\n exit: _exit,\n fd_close: _fd_close,\n fd_read: _fd_read,\n fd_seek: _fd_seek,\n fd_write: _fd_write,\n getentropy: _getentropy,\n memory: wasmMemory,\n pclose: _pclose,\n setTempRet0: _setTempRet0,\n strftime_l: _strftime_l,\n };\n\n var asm = createWasm();\n\n var calledRun;\n\n function ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n }\n\n dependenciesFulfilled = function runCaller() {\n if (!calledRun) {\n run();\n }\n if (!calledRun) {\n dependenciesFulfilled = runCaller;\n }\n };\n\n function run(args) {\n args = args || arguments_;\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) {\n return;\n }\n function doRun() {\n if (calledRun) {\n return;\n }\n calledRun = true;\n Module.calledRun = true;\n if (ABORT) {\n return;\n }\n initRuntime();\n if (Module.onRuntimeInitialized) {\n Module.onRuntimeInitialized();\n }\n postRun();\n }\n if (Module.setStatus) {\n Module.setStatus(\"Running...\");\n setTimeout(function () {\n setTimeout(function () {\n Module.setStatus(\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n\n Module.run = run;\n\n function exit(status, implicit) {\n EXITSTATUS = status;\n procExit(status);\n }\n\n function procExit(code) {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n if (Module.onExit) {\n Module.onExit(code);\n }\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n }\n\n if (Module.preInit) {\n if (typeof Module.preInit == \"function\") {\n Module.preInit = [Module.preInit];\n }\n while (Module.preInit.length) {\n Module.preInit.pop()();\n }\n }\n\n run();\n\n /* Use an optimized gemm implementation if available, otherwise use the fallback\n * implementation.\n */\n function createWasmGemm() {\n // A map of expected gemm function to the corresponding fallback gemm function names.\n const GEMM_TO_FALLBACK_FUNCTIONS_MAP = {\n int8_prepare_a: \"int8PrepareAFallback\",\n int8_prepare_b: \"int8PrepareBFallback\",\n int8_prepare_b_from_transposed: \"int8PrepareBFromTransposedFallback\",\n int8_prepare_b_from_quantized_transposed:\n \"int8PrepareBFromQuantizedTransposedFallback\",\n int8_prepare_bias: \"int8PrepareBiasFallback\",\n int8_multiply_and_add_bias: \"int8MultiplyAndAddBiasFallback\",\n int8_select_columns_of_b: \"int8SelectColumnsOfBFallback\",\n };\n\n // Name of the optimized gemm implementation.\n const OPTIMIZED_GEMM = \"mozIntGemm\";\n\n const optimizedGemmModule = WebAssembly[OPTIMIZED_GEMM];\n if (!optimizedGemmModule) {\n return fallbackGemm(GEMM_TO_FALLBACK_FUNCTIONS_MAP);\n }\n\n const optimizedGemmModuleExports = new WebAssembly.Instance(\n optimizedGemmModule(),\n { \"\": { memory: wasmMemory } }\n ).exports;\n for (let key in GEMM_TO_FALLBACK_FUNCTIONS_MAP) {\n if (!optimizedGemmModuleExports[key]) {\n return fallbackGemm(GEMM_TO_FALLBACK_FUNCTIONS_MAP);\n }\n }\n Module.print(`Using optimized gemm (${OPTIMIZED_GEMM}) implementation`);\n return optimizedGemmModuleExports;\n }\n\n // Return the fallback gemm implementation.\n function fallbackGemm(gemmToFallbackFunctionsMap) {\n // The fallback gemm implementation\n const FALLBACK_GEMM = \"asm\";\n\n let fallbackGemmModuleExports = {};\n for (let key in gemmToFallbackFunctionsMap) {\n fallbackGemmModuleExports[key] = (...a) =>\n Module[FALLBACK_GEMM][gemmToFallbackFunctionsMap[key]](...a);\n }\n Module.print(`Using fallback gemm implementation`);\n return fallbackGemmModuleExports;\n }\n\n return Module;\n}\n\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = loadBergamot;\n}\n",
15
+ "var loadCLD2=(()=>{var _scriptName=globalThis.document?.currentScript?.src;return async function(moduleArg={}){var moduleRtn;function aa(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}}function g(a){var b=\"undefined\"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];if(b)return b.call(a);if(\"number\"==typeof a.length)return{next:aa(a)};throw Error(String(a)+\" is not an iterable or ArrayLike\");}var l=\"function\"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};\nfunction ba(a){a=[\"object\"==typeof globalThis&&globalThis,a,\"object\"==typeof window&&window,\"object\"==typeof self&&self,\"object\"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error(\"Cannot find global object\");}var p=ba(this);function r(a,b){if(b)a:{var c=p;a=a.split(\".\");for(var d=0;d<a.length-1;d++){var f=a[d];if(!(f in c))break a;c=c[f]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&l(c,a,{configurable:!0,writable:!0,value:b})}}\nfunction t(){this.G=!1;this.B=null;this.C=void 0;this.v=1;this.J=this.F=0;this.D=null}function u(a){if(a.G)throw new TypeError(\"Generator is already running\");a.G=!0}t.prototype.H=function(a){this.C=a};function v(a,b){a.D={R:b,$:!0};a.v=a.F||a.J}t.prototype.return=function(a){this.D={return:a};this.v=this.J};function x(a,b,c){a.v=c;return{value:b}}function y(a){a.F=0;var b=a.D.R;a.D=null;return b}function ca(a){this.v=new t;this.B=a}\nfunction da(a,b){u(a.v);var c=a.v.B;if(c)return z(a,\"return\"in c?c[\"return\"]:function(d){return{value:d,done:!0}},b,a.v.return);a.v.return(b);return C(a)}function z(a,b,c,d){try{var f=b.call(a.v.B,c);if(!(f instanceof Object))throw new TypeError(\"Iterator result \"+f+\" is not an object\");if(!f.done)return a.v.G=!1,f;var h=f.value}catch(e){return a.v.B=null,v(a.v,e),C(a)}a.v.B=null;d.call(a.v,h);return C(a)}\nfunction C(a){for(;a.v.v;)try{var b=a.B(a.v);if(b)return a.v.G=!1,{value:b.value,done:!1}}catch(c){a.v.C=void 0,v(a.v,c)}a.v.G=!1;if(a.v.D){b=a.v.D;a.v.D=null;if(b.$)throw b.R;return{value:b.return,done:!0}}return{value:void 0,done:!0}}\nfunction ea(a){this.next=function(b){u(a.v);a.v.B?b=z(a,a.v.B.next,b,a.v.H):(a.v.H(b),b=C(a));return b};this.throw=function(b){u(a.v);a.v.B?b=z(a,a.v.B[\"throw\"],b,a.v.H):(v(a.v,b),b=C(a));return b};this.return=function(b){return da(a,b)};this[Symbol.iterator]=function(){return this}}function fa(a){function b(d){return a.next(d)}function c(d){return a.throw(d)}return new Promise(function(d,f){function h(e){e.done?d(e.value):Promise.resolve(e.value).then(b,c).then(h,f)}h(a.next())})}\nfunction D(a){return fa(new ea(new ca(a)))}r(\"Symbol\",function(a){function b(h){if(this instanceof b)throw new TypeError(\"Symbol is not a constructor\");return new c(d+(h||\"\")+\"_\"+f++,h)}function c(h,e){this.v=h;l(this,\"description\",{configurable:!0,writable:!0,value:e})}if(a)return a;c.prototype.toString=function(){return this.v};var d=\"jscomp_symbol_\"+(1E9*Math.random()>>>0)+\"_\",f=0;return b});\nr(\"Symbol.iterator\",function(a){if(a)return a;a=Symbol(\"Symbol.iterator\");for(var b=\"Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array\".split(\" \"),c=0;c<b.length;c++){var d=p[b[c]];\"function\"===typeof d&&\"function\"!=typeof d.prototype[a]&&l(d.prototype,a,{configurable:!0,writable:!0,value:function(){return ha(aa(this))}})}return a});function ha(a){a={next:a};a[Symbol.iterator]=function(){return this};return a}\nr(\"Promise\",function(a){function b(e){this.B=0;this.C=void 0;this.v=[];this.H=!1;var k=this.D();try{e(k.resolve,k.reject)}catch(m){k.reject(m)}}function c(){this.v=null}function d(e){return e instanceof b?e:new b(function(k){k(e)})}if(a)return a;c.prototype.B=function(e){if(null==this.v){this.v=[];var k=this;this.C(function(){k.F()})}this.v.push(e)};var f=p.setTimeout;c.prototype.C=function(e){f(e,0)};c.prototype.F=function(){for(;this.v&&this.v.length;){var e=this.v;this.v=[];for(var k=0;k<e.length;++k){var m=\ne[k];e[k]=null;try{m()}catch(n){this.D(n)}}}this.v=null};c.prototype.D=function(e){this.C(function(){throw e;})};b.prototype.D=function(){function e(n){return function(q){m||(m=!0,n.call(k,q))}}var k=this,m=!1;return{resolve:e(this.V),reject:e(this.F)}};b.prototype.V=function(e){if(e===this)this.F(new TypeError(\"A Promise cannot resolve to itself\"));else if(e instanceof b)this.X(e);else{a:switch(typeof e){case \"object\":var k=null!=e;break a;case \"function\":k=!0;break a;default:k=!1}k?this.U(e):this.G(e)}};\nb.prototype.U=function(e){var k=void 0;try{k=e.then}catch(m){this.F(m);return}\"function\"==typeof k?this.Y(k,e):this.G(e)};b.prototype.F=function(e){this.J(2,e)};b.prototype.G=function(e){this.J(1,e)};b.prototype.J=function(e,k){if(0!=this.B)throw Error(\"Cannot settle(\"+e+\", \"+k+\"): Promise already settled in state\"+this.B);this.B=e;this.C=k;2===this.B&&this.W();this.S()};b.prototype.W=function(){var e=this;f(function(){if(e.T()){var k=p.console;\"undefined\"!==typeof k&&k.error(e.C)}},1)};b.prototype.T=\nfunction(){if(this.H)return!1;var e=p.CustomEvent,k=p.Event,m=p.dispatchEvent;if(\"undefined\"===typeof m)return!0;\"function\"===typeof e?e=new e(\"unhandledrejection\",{cancelable:!0}):\"function\"===typeof k?e=new k(\"unhandledrejection\",{cancelable:!0}):(e=p.document.createEvent(\"CustomEvent\"),e.initCustomEvent(\"unhandledrejection\",!1,!0,e));e.promise=this;e.reason=this.C;return m(e)};b.prototype.S=function(){if(null!=this.v){for(var e=0;e<this.v.length;++e)h.B(this.v[e]);this.v=null}};var h=new c;b.prototype.X=\nfunction(e){var k=this.D();e.N(k.resolve,k.reject)};b.prototype.Y=function(e,k){var m=this.D();try{e.call(k,m.resolve,m.reject)}catch(n){m.reject(n)}};b.prototype.then=function(e,k){function m(w,A){return\"function\"==typeof w?function(Y){try{n(w(Y))}catch(Z){q(Z)}}:A}var n,q,B=new b(function(w,A){n=w;q=A});this.N(m(e,n),m(k,q));return B};b.prototype.catch=function(e){return this.then(void 0,e)};b.prototype.N=function(e,k){function m(){switch(n.B){case 1:e(n.C);break;case 2:k(n.C);break;default:throw Error(\"Unexpected state: \"+\nn.B);}}var n=this;null==this.v?h.B(m):this.v.push(m);this.H=!0};b.resolve=d;b.reject=function(e){return new b(function(k,m){m(e)})};b.race=function(e){return new b(function(k,m){for(var n=g(e),q=n.next();!q.done;q=n.next())d(q.value).N(k,m)})};b.all=function(e){var k=g(e),m=k.next();return m.done?d([]):new b(function(n,q){function B(Y){return function(Z){w[Y]=Z;A--;0==A&&n(w)}}var w=[],A=0;do w.push(void 0),A++,d(m.value).N(B(w.length-1),q),m=k.next();while(!m.done)})};return b});\nr(\"globalThis\",function(a){return a||p});function ia(a,b,c){if(null==a)throw new TypeError(\"The 'this' value for String.prototype.\"+c+\" must not be null or undefined\");if(b instanceof RegExp)throw new TypeError(\"First argument to String.prototype.\"+c+\" must not be a regular expression\");return a+\"\"}\nr(\"String.prototype.startsWith\",function(a){return a?a:function(b,c){var d=ia(this,b,\"startsWith\"),f=d.length,h=b.length;c=Math.max(0,Math.min(c|0,d.length));for(var e=0;e<h&&c<f;)if(d[c++]!=b[e++])return!1;return e>=h}});r(\"String.prototype.codePointAt\",function(a){return a?a:function(b){var c=ia(this,null,\"codePointAt\"),d=c.length;b=Number(b)||0;if(0<=b&&b<d){b|=0;var f=c.charCodeAt(b);if(55296>f||56319<f||b+1===d)return f;b=c.charCodeAt(b+1);return 56320>b||57343<b?f:1024*(f-55296)+b+9216}}});\nfunction ja(a,b){a instanceof String&&(a+=\"\");var c=0,d=!1,f={next:function(){if(!d&&c<a.length){var h=c++;return{value:b(h,a[h]),done:!1}}d=!0;return{done:!0,value:void 0}}};f[Symbol.iterator]=function(){return f};return f}r(\"Array.prototype.keys\",function(a){return a?a:function(){return ja(this,function(b){return b})}});\nvar E=moduleArg,ka=!!globalThis.window,la=!!globalThis.WorkerGlobalScope,ma,na,oa,pa=(null==(ma=globalThis.process)?void 0:null==(na=ma.versions)?void 0:na.node)&&\"renderer\"!=(null==(oa=globalThis.process)?void 0:oa.type);\"undefined\"!=typeof __filename?_scriptName=__filename:la&&(_scriptName=self.location.href);var F=\"\",qa,G;\nif(pa){var fs=require(\"fs\");F=__dirname+\"/\";G=function(a){a=H(a)?new URL(a):a;return fs.readFileSync(a)};qa=function(a){var b=void 0===b?!0:b;var c;return D(function(d){a=H(a)?new URL(a):a;c=fs.readFileSync(a,b?void 0:\"utf8\");return d.return(c)})};process.argv.slice(2)}else if(ka||la){try{F=(new URL(\".\",_scriptName)).href}catch(a){}la&&(G=function(a){var b=new XMLHttpRequest;b.open(\"GET\",a,!1);b.responseType=\"arraybuffer\";b.send(null);return new Uint8Array(b.response)});qa=function(a){var b;return D(function(c){if(1==\nc.v)return H(a)?c.return(new Promise(function(d,f){var h=new XMLHttpRequest;h.open(\"GET\",a,!0);h.responseType=\"arraybuffer\";h.onload=function(){200==h.status||0==h.status&&h.response?d(h.response):f(h.status)};h.onerror=f;h.send(null)})):x(c,fetch(a,{credentials:\"same-origin\"}),2);b=c.C;if(b.ok)return c.return(b.arrayBuffer());throw Error(b.status+\" : \"+b.url);})}}var ra=console.log.bind(console),I=console.error.bind(console),J,sa=!1;function H(a){return a.startsWith(\"file://\")}\nvar ta,ua,va,K,L,wa=!1;function xa(){var a=M.buffer;va=new Int8Array(a);new Int16Array(a);K=new Uint8Array(a);new Uint16Array(a);new Int32Array(a);L=new Uint32Array(a);new Float32Array(a);new Float64Array(a);new BigInt64Array(a);new BigUint64Array(a)}function N(a){var b;null==(b=E.onAbort)||b.call(E,a);a=\"Aborted(\"+a+\")\";I(a);sa=!0;a=new WebAssembly.RuntimeError(a+\". Build with -sASSERTIONS for more info.\");var c;null==(c=ua)||c(a);throw a;}var O;\nfunction ya(a){var b;return D(function(c){switch(c.v){case 1:if(J){c.v=2;break}c.F=3;return x(c,qa(a),5);case 5:return b=c.C,c.return(new Uint8Array(b));case 3:y(c);case 2:var d=c.return;if(a==O&&J)var f=new Uint8Array(J);else if(G)f=G(a);else throw\"both async and sync fetching of the wasm failed\";return d.call(c,f)}})}\nfunction za(a,b){var c,d,f;return D(function(h){switch(h.v){case 1:return h.F=2,x(h,ya(a),4);case 4:return c=h.C,x(h,WebAssembly.instantiate(c,b),5);case 5:return d=h.C,h.return(d);case 2:f=y(h),I(\"failed to asynchronously prepare wasm: \"+f),N(f),h.v=0}})}\nfunction Aa(a){var b=J,c=O,d,f,h;return D(function(e){switch(e.v){case 1:if(b||H(c)||pa){e.v=2;break}e.F=3;d=fetch(c,{credentials:\"same-origin\"});return x(e,WebAssembly.instantiateStreaming(d,a),5);case 5:return f=e.C,e.return(f);case 3:h=y(e),I(\"wasm streaming compile failed: \"+h),I(\"falling back to ArrayBuffer instantiation\");case 2:return e.return(za(c,a))}})}function Ba(a){for(;0<a.length;)a.shift()(E)}var Ca=[],Da=[];function Ea(){var a=E.preRun.shift();Da.push(a)}\nfunction Fa(a){this.A=a-24}var Ga=0,Ha=0,Ia=[null,[],[]],Ja=globalThis.TextDecoder&&new TextDecoder;\nfunction Ka(a,b){b=void 0===b?0:b;var c=b;for(var d=c+void 0;a[c]&&!(c>=d);)++c;if(16<c-b&&a.buffer&&Ja)return Ja.decode(a.subarray(b,c));for(d=\"\";b<c;){var f=a[b++];if(f&128){var h=a[b++]&63;if(192==(f&224))d+=String.fromCharCode((f&31)<<6|h);else{var e=a[b++]&63;f=224==(f&240)?(f&15)<<12|h<<6|e:(f&7)<<18|h<<12|e<<6|a[b++]&63;65536>f?d+=String.fromCharCode(f):(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else d+=String.fromCharCode(f)}return d}function La(a){return a?Ka(K,a):\"\"}\nvar Ma=[];E.print&&(ra=E.print);E.printErr&&(I=E.printErr);E.wasmBinary&&(J=E.wasmBinary);if(E.preInit)for(\"function\"==typeof E.preInit&&(E.preInit=[E.preInit]);0<E.preInit.length;)E.preInit.shift()();\nvar Na,Oa,Pa,Qa,Ra,Sa,Ta,Ua,Va,Wa,Xa,Ya,M,Za={a:function(a,b,c){var d=new Fa(a);L[d.A+16>>2]=0;L[d.A+4>>2]=b;L[d.A+8>>2]=c;Ga=a;Ha++;throw Ga;},c:function(){return N(\"\")},e:function(a,b){throw\"Array index \"+a+\" out of bounds: [0,\"+b+\")\";},d:function(a){var b=K.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);a:{d=(Math.min(2147483648,65536*Math.ceil(Math.max(a,d)/65536))-M.buffer.byteLength+65535)/65536|0;try{M.grow(d);xa();var f=1;break a}catch(h){}f=\nvoid 0}if(f)return!0}return!1},b:function(a,b,c,d){for(var f=0,h=0;h<c;h++){var e=L[b>>2],k=L[b+4>>2];b+=8;for(var m=0;m<k;m++){var n=a,q=K[e+m],B=Ia[n];0===q||10===q?((1===n?ra:I)(Ka(B)),B.length=0):B.push(q)}f+=k}L[d>>2]=f;return 0}},P;\nP=await (function(){function a(f){f=P=f.exports;E._webidl_free=f.h;E._webidl_malloc=f.i;Na=E._emscripten_bind_Language_getLanguageCode_0=f.j;Oa=E._emscripten_bind_Language___destroy___0=f.k;Pa=E._emscripten_bind_VoidPtr___destroy___0=f.l;Qa=E._emscripten_bind_LanguageGuess_getPercent_0=f.m;Ra=E._emscripten_bind_LanguageGuess_getLanguageCode_0=f.n;Sa=E._emscripten_bind_LanguageGuess___destroy___0=f.o;Ta=E._emscripten_bind_LanguageInfo_detectLanguage_2=f.p;Ua=E._emscripten_bind_LanguageInfo_detectLanguage_5=\nf.q;Va=E._emscripten_bind_LanguageInfo_getIsReliable_0=f.r;Wa=E._emscripten_bind_LanguageInfo_getLanguageCode_0=f.s;Xa=E._emscripten_bind_LanguageInfo_get_languages_1=f.t;Ya=E._emscripten_bind_LanguageInfo___destroy___0=f.u;M=f.f;xa();return P}var b,c,d;return D(function(f){if(1==f.v){b={a:Za};if(E.instantiateWasm)return f.return(new Promise(function(h){E.instantiateWasm(b,function(e,k){h(a(e,k))})}));null!=O||(O=E.locateFile?E.locateFile(\"cld2.wasm\",F):F+\"cld2.wasm\");return x(f,Aa(b),2)}c=f.C;d=\na(c.instance);return f.return(d)})}());\n(function(){function a(){E.calledRun=!0;if(!sa){wa=!0;Ba(Ma);P.g();var b;null==(b=ta)||b(E);var c;null==(c=E.onRuntimeInitialized)||c.call(E);if(E.postRun)for(\"function\"==typeof E.postRun&&(E.postRun=[E.postRun]);E.postRun.length;)b=E.postRun.shift(),Ca.push(b);Ba(Ca)}}if(E.preRun)for(\"function\"==typeof E.preRun&&(E.preRun=[E.preRun]);E.preRun.length;)Ea();Ba(Da);E.setStatus?(E.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){return E.setStatus(\"\")},1);a()},1)):a()})();\nfunction Q(){}Q.prototype=Object.create(Q.prototype);Q.prototype.constructor=Q;Q.prototype.I=Q;Q.K={};E.WrapperObject=Q;function $a(a){return(a||Q).K}E.getCache=$a;function R(a,b){var c=$a(b),d=c[a];if(d)return d;d=Object.create((b||Q).prototype);d.A=a;return c[a]=d}E.wrapPointer=R;E.castObject=function(a,b){return R(a.A,b)};E.NULL=R(0);E.destroy=function(a){if(!a.__destroy__)throw\"Error: Cannot destroy object. (Did you create it yourself?)\";a.__destroy__();delete $a(a.I)[a.A]};\nE.compare=function(a,b){return a.A===b.A};E.getPointer=function(a){return a.A};E.getClass=function(a){return a.I};\nvar S={buffer:0,size:0,M:0,O:[],L:0,P:function(){if(S.L){for(var a=0;a<S.O.length;a++)E._webidl_free(S.O[a]);S.O.length=0;E._webidl_free(S.buffer);S.buffer=0;S.size+=S.L;S.L=0}S.buffer||(S.size+=128,S.buffer=E._webidl_malloc(S.size),S.buffer||N());S.M=0},alloc:function(a,b){S.buffer||N();a=a.length*b.BYTES_PER_ELEMENT;a=8*Math.ceil(a/8);S.M+a>=S.size?(0<a||N(),S.L+=a,b=E._webidl_malloc(a),S.O.push(b)):(b=S.buffer+S.M,S.M+=a);return b}};\nfunction ab(a){if(\"string\"===typeof a){for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);127>=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}b=Array(b+1);d=b.length;c=0;if(0<d){d=c+d-1;for(var f=0;f<a.length;++f){var h=a.codePointAt(f);if(127>=h){if(c>=d)break;b[c++]=h}else if(2047>=h){if(c+1>=d)break;b[c++]=192|h>>6;b[c++]=128|h&63}else if(65535>=h){if(c+2>=d)break;b[c++]=224|h>>12;b[c++]=128|h>>6&63;b[c++]=128|h&63}else{if(c+3>=d)break;b[c++]=240|h>>18;b[c++]=128|h>>12&63;b[c++]=128|\nh>>6&63;b[c++]=128|h&63;f++}}b[c]=0}a=S.alloc(b,va);for(c=0;c<b.length;c++)va[a+c]=b[c];return a}return a}function T(){throw\"cannot construct a Language, no constructor in IDL\";}T.prototype=Object.create(Q.prototype);T.prototype.constructor=T;T.prototype.I=T;T.K={};E.Language=T;T.prototype.getLanguageCode=function(){return La(Na(this.A))};T.prototype.__destroy__=function(){Oa(this.A)};function U(){throw\"cannot construct a VoidPtr, no constructor in IDL\";}U.prototype=Object.create(Q.prototype);\nU.prototype.constructor=U;U.prototype.I=U;U.K={};E.VoidPtr=U;U.prototype.__destroy__=function(){Pa(this.A)};function V(){throw\"cannot construct a LanguageGuess, no constructor in IDL\";}V.prototype=Object.create(T.prototype);V.prototype.constructor=V;V.prototype.I=V;V.K={};E.LanguageGuess=V;V.prototype.getPercent=function(){return Qa(this.A)};V.prototype.getLanguageCode=function(){return La(Ra(this.A))};V.prototype.__destroy__=function(){Sa(this.A)};\nfunction W(){throw\"cannot construct a LanguageInfo, no constructor in IDL\";}W.prototype=Object.create(T.prototype);W.prototype.constructor=W;W.prototype.I=W;W.K={};E.LanguageInfo=W;\nW.prototype.detectLanguage=function(a,b,c,d,f){S.P();a=a&&\"object\"===typeof a?a.A:ab(a);b&&\"object\"===typeof b&&(b=b.A);c=c&&\"object\"===typeof c?c.A:ab(c);d&&\"object\"===typeof d&&(d=d.A);f=f&&\"object\"===typeof f?f.A:ab(f);return void 0===c?R(Ta(a,b),W):void 0===d?R(_emscripten_bind_LanguageInfo_detectLanguage_3(a,b,c),W):void 0===f?R(_emscripten_bind_LanguageInfo_detectLanguage_4(a,b,c,d),W):R(Ua(a,b,c,d,f),W)};W.prototype.getIsReliable=function(){return!!Va(this.A)};W.prototype.getLanguageCode=function(){return La(Wa(this.A))};\nW.prototype.get_languages=W.prototype.Z=function(a){var b=this.A;a&&\"object\"===typeof a&&(a=a.A);return R(Xa(b,a),V)};Object.defineProperty(W.prototype,\"languages\",{get:W.prototype.Z});W.prototype.__destroy__=function(){Ya(this.A)};S.alloc=S.alloc.bind(S);S.P=S.P.bind(S);\nfor(var X={ISO_8859_1:0,ISO_8859_2:1,ISO_8859_3:2,ISO_8859_4:3,ISO_8859_5:4,ISO_8859_6:5,ISO_8859_7:6,ISO_8859_8:7,ISO_8859_9:8,ISO_8859_10:9,JAPANESE_EUC_JP:10,EUC_JP:10,JAPANESE_SHIFT_JIS:11,SHIFT_JIS:11,JAPANESE_JIS:12,JIS:12,CHINESE_BIG5:13,BIG5:13,CHINESE_GB:14,CHINESE_EUC_CN:15,EUC_CN:15,KOREAN_EUC_KR:16,EUC_KR:16,UNICODE_UNUSED:17,CHINESE_EUC_DEC:18,EUC_DEC:18,CHINESE_CNS:19,CNS:19,CHINESE_BIG5_CP950:20,BIG5_CP950:20,JAPANESE_CP932:21,CP932:21,UTF8:22,UNKNOWN_ENCODING:23,ASCII_7BIT:24,RUSSIAN_KOI8_R:25,\nKOI8_R:25,RUSSIAN_CP1251:26,CP1251:26,MSFT_CP1252:27,CP1252:27,RUSSIAN_KOI8_RU:28,KOI8_RU:28,MSFT_CP1250:29,CP1250:29,ISO_8859_15:30,MSFT_CP1254:31,CP1254:31,MSFT_CP1257:32,CP1257:32,ISO_8859_11:33,MSFT_CP874:34,CP874:34,MSFT_CP1256:35,CP1256:35,MSFT_CP1255:36,CP1255:36,ISO_8859_8_I:37,HEBREW_VISUAL:38,CZECH_CP852:39,CP852:39,CZECH_CSN_369103:40,CSN_369103:40,MSFT_CP1253:41,CP1253:41,RUSSIAN_CP866:42,CP866:42,ISO_8859_13:43,ISO_2022_KR:44,GBK:45,GB18030:46,BIG5_HKSCS:47,ISO_2022_CN:48,TSCII:49,TAMIL_MONO:50,\nTAMIL_BI:51,JAGRAN:52,MACINTOSH_ROMAN:53,UTF7:54,BHASKAR:55,HTCHANAKYA:56,UTF16BE:57,UTF16LE:58,UTF32BE:59,UTF32LE:60,BINARYENC:61,HZ_GB_2312:62,UTF8UTF8:63,TAM_ELANGO:64,TAM_LTTMBARANI:65,TAM_SHREE:66,TAM_TBOOMIS:67,TAM_TMNEWS:68,TAM_WEBTAMIL:69,KDDI_SHIFT_JIS:70,DOCOMO_SHIFT_JIS:71,SOFTBANK_SHIFT_JIS:72,KDDI_ISO_2022_JP:73,ISO_2022_JP:73,SOFTBANK_ISO_2022_JP:74},bb=g(Object.keys(X)),cb=bb.next();!cb.done;cb=bb.next()){var db=cb.value;db.includes(\"_\")&&(X[db.replace(/_/g,\"\")]=X[db])}\nE.Encodings=X;wa?moduleRtn=E:moduleRtn=new Promise(function(a,b){ta=a;ua=b});\n;return moduleRtn}})();if(typeof exports===\"object\"&&typeof module===\"object\"){module.exports=loadCLD2;module.exports.default=loadCLD2}else if(typeof define===\"function\"&&define[\"amd\"])define([],()=>loadCLD2);\n",
16
+ "import path from 'path';\nimport { fileURLToPath } from 'url';\nimport loadCLD2 from '@/lib/cld2/cld2.js';\nimport wasmPath from '@/lib/cld2/cld2.wasm' with { type: 'file' };\nimport * as logger from '@/logger/index.js';\nimport { readFile } from 'fs/promises';\n\nexport interface TextSegment {\n text: string;\n language: string;\n start: number;\n end: number;\n confidence: number;\n}\n\nconst DEFAULT_CONFIDENCE_THRESHOLD = 0.5;\nconst MAXIMUM_LANGUAGES_IN_ONE_TEXT = 2;\n\nlet cldModule: any = null;\nlet initPromise: Promise<void> | null = null;\n\nasync function initCLD(): Promise<void> {\n if (cldModule) return;\n\n if (initPromise) {\n return initPromise;\n }\n\n initPromise = (async () => {\n try {\n logger.debug('Initializing CLD2 language detector');\n\n const currentDir = path.dirname(fileURLToPath(import.meta.url));\n const absoluteWasmPath = path.resolve(currentDir, wasmPath);\n\n const wasmBuffer = await readFile(absoluteWasmPath);\n\n const module: any = await loadCLD2({\n print: (msg: string) => logger.debug(`[CLD2]: ${msg}`),\n printErr: (msg: string) => logger.error(`[CLD2 Error]: ${msg}`),\n wasmBinary: wasmBuffer,\n });\n\n if (module.LanguageInfo && module.LanguageInfo.prototype && module.LanguageInfo.prototype.detectLanguage) {\n module.LanguageInfo.detectLanguage = module.LanguageInfo.prototype.detectLanguage;\n }\n\n cldModule = module;\n logger.debug('CLD2 language detector initialized');\n } catch (error) {\n logger.error(`Failed to initialize CLD2: ${error}`);\n throw error;\n }\n })();\n\n return initPromise;\n}\n\nfunction detectLanguageWithCLD(text: string, isHTML: boolean = false) {\n if (!cldModule) {\n throw new Error('CLD2 module not initialized');\n }\n\n const LanguageInfo = cldModule.LanguageInfo;\n if (!LanguageInfo || !LanguageInfo.detectLanguage) {\n throw new Error('CLD2 LanguageInfo or detectLanguage not available');\n }\n\n const result = LanguageInfo.detectLanguage(text, !isHTML);\n\n const languages = Array(3).fill(0).map((_, i) => {\n const lang = result.get_languages(i);\n return {\n languageCode: lang.getLanguageCode(),\n percent: lang.getPercent()\n };\n }).filter(l => l.languageCode !== 'un' || l.percent > 0);\n\n const output = {\n language: result.getLanguageCode(),\n confident: result.getIsReliable(),\n languages,\n percentScore: languages[0]?.percent || 0\n };\n\n cldModule.destroy(result);\n\n return output;\n}\n\nfunction bcp47Normalize(code: string): string {\n switch (code) {\n case 'zh':\n return 'zh-Hans';\n default:\n return code.toLowerCase();\n }\n}\n\nexport async function detectLanguage(text: string): Promise<string> {\n if (!text) {\n return '';\n }\n\n await initCLD();\n\n try {\n const result = detectLanguageWithCLD(text);\n return bcp47Normalize(result.language);\n } catch (error) {\n logger.warn(`Language detection failed: ${error}`);\n return 'en';\n }\n}\n\nexport async function detectLanguageWithConfidence(\n text: string,\n minConfidence: number = DEFAULT_CONFIDENCE_THRESHOLD\n): Promise<{ language: string; confidence: number }> {\n if (!text) {\n return { language: '', confidence: 0 };\n }\n\n await initCLD();\n\n try {\n const result = detectLanguageWithCLD(text);\n const confidence = result.percentScore / 100;\n\n if (confidence < minConfidence) {\n return { language: '', confidence };\n }\n\n return {\n language: bcp47Normalize(result.language),\n confidence\n };\n } catch (error) {\n logger.warn(`Language detection with confidence failed: ${error}`);\n return { language: 'en', confidence: 0 };\n }\n}\n\nfunction hasMixedScripts(text: string): boolean {\n let hasCJK = false;\n let hasLatin = false;\n\n for (const char of text) {\n const code = char.charCodeAt(0);\n\n if (\n (code >= 0x4e00 && code <= 0x9fff) ||\n (code >= 0x3040 && code <= 0x309f) ||\n (code >= 0x30a0 && code <= 0x30ff) ||\n (code >= 0xac00 && code <= 0xd7af)\n ) {\n hasCJK = true;\n } else if ((code >= 0x0041 && code <= 0x005a) || (code >= 0x0061 && code <= 0x007a)) {\n hasLatin = true;\n }\n\n if (hasCJK && hasLatin) {\n return true;\n }\n }\n\n return false;\n}\n\nexport async function detectMultipleLanguages(text: string): Promise<TextSegment[]> {\n return detectMultipleLanguagesWithThreshold(text, DEFAULT_CONFIDENCE_THRESHOLD);\n}\n\nexport async function detectMultipleLanguagesWithThreshold(\n text: string,\n threshold: number\n): Promise<TextSegment[]> {\n if (!text) {\n return [];\n }\n\n await initCLD();\n\n const fallbackLang = await detectLanguage(text);\n const effectiveFallback = fallbackLang || 'en';\n\n if (!hasMixedScripts(text)) {\n logger.debug(`DetectMultipleLanguages: no mixed scripts, using single language: ${effectiveFallback}`);\n return [{\n text,\n language: effectiveFallback,\n start: 0,\n end: text.length,\n confidence: 1.0\n }];\n }\n\n logger.debug(`DetectMultipleLanguages: mixed scripts detected, fallback=${effectiveFallback}, threshold=${threshold.toFixed(2)}`);\n\n const segments: TextSegment[] = [];\n\n const segmenterAny = new (Intl as any).Segmenter(undefined, { granularity: 'sentence' });\n const sentenceSegments = Array.from(segmenterAny.segment(text)) as Array<{segment: string, index: number}>;\n\n for (const { segment, index } of sentenceSegments) {\n try {\n const result = detectLanguageWithCLD(segment);\n const detectedLang = bcp47Normalize(result.language);\n const confidence = result.percentScore / 100;\n\n segments.push({\n text: segment,\n language: confidence >= threshold ? detectedLang : effectiveFallback,\n start: index,\n end: index + segment.length,\n confidence\n });\n } catch (error) {\n logger.warn(`Failed to detect language for segment: ${error}`);\n segments.push({\n text: segment,\n language: effectiveFallback,\n start: index,\n end: index + segment.length,\n confidence: 0\n });\n }\n }\n\n const mergedSegments = mergeAdjacentSegments(segments, text);\n const limitedSegments = limitLanguages(mergedSegments, text, MAXIMUM_LANGUAGES_IN_ONE_TEXT);\n\n logger.debug(`DetectMultipleLanguages: ${sentenceSegments.length} sentences -> ${mergedSegments.length} merged -> ${limitedSegments.length} final segments`);\n\n return limitedSegments;\n}\n\nfunction mergeAdjacentSegments(segments: TextSegment[], originalText: string): TextSegment[] {\n if (segments.length <= 1) {\n return segments;\n }\n\n const merged: TextSegment[] = [];\n let current = segments[0];\n\n for (let i = 1; i < segments.length; i++) {\n const next = segments[i];\n if (current.language === next.language) {\n current.text = originalText.substring(current.start, next.end);\n current.end = next.end;\n if (next.confidence > current.confidence) {\n current.confidence = next.confidence;\n }\n } else {\n merged.push(current);\n current = next;\n }\n }\n merged.push(current);\n\n return merged;\n}\n\nfunction limitLanguages(\n segments: TextSegment[],\n originalText: string,\n maxLangs: number\n): TextSegment[] {\n if (segments.length <= 1) {\n return segments;\n }\n\n const langBytes = new Map<string, number>();\n for (const seg of segments) {\n langBytes.set(seg.language, (langBytes.get(seg.language) || 0) + (seg.end - seg.start));\n }\n\n if (langBytes.size <= maxLangs) {\n return segments;\n }\n\n const sorted = Array.from(langBytes.entries())\n .sort((a, b) => b[1] - a[1]);\n\n const keepLangs = new Set(sorted.slice(0, maxLangs).map(([lang]) => lang));\n const primaryLang = sorted[0][0];\n\n for (const seg of segments) {\n if (!keepLangs.has(seg.language)) {\n seg.language = primaryLang;\n }\n }\n\n const result = mergeAdjacentSegments(segments, originalText);\n logger.debug(`limitLanguages: reduced to ${maxLangs} languages, ${result.length} segments`);\n\n return result;\n}\n",
17
+ "/**\n * @module LRUCache\n */\nconst perf = typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date;\nconst warned = new Set();\n/* c8 ignore start */\nconst PROCESS = (typeof process === 'object' && !!process ? process : {});\n/* c8 ignore start */\nconst emitWarning = (msg, type, code, fn) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`);\n};\nlet AC = globalThis.AbortController;\nlet AS = globalThis.AbortSignal;\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort;\n _onabort = [];\n reason;\n aborted = false;\n addEventListener(_, fn) {\n this._onabort.push(fn);\n }\n };\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill();\n }\n signal = new AS();\n abort(reason) {\n if (this.signal.aborted)\n return;\n //@ts-ignore\n this.signal.reason = reason;\n //@ts-ignore\n this.signal.aborted = true;\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason);\n }\n this.signal.onabort?.(reason);\n }\n };\n let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning)\n return;\n printACPolyfillWarning = false;\n emitWarning('AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);\n };\n}\n/* c8 ignore stop */\nconst shouldWarn = (code) => !warned.has(code);\nconst TYPE = Symbol('type');\nconst isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max) => !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null;\n/* c8 ignore stop */\nclass ZeroArray extends Array {\n constructor(size) {\n super(size);\n this.fill(0);\n }\n}\nclass Stack {\n heap;\n length;\n // private constructor\n static #constructing = false;\n static create(max) {\n const HeapCls = getUintArray(max);\n if (!HeapCls)\n return [];\n Stack.#constructing = true;\n const s = new Stack(max, HeapCls);\n Stack.#constructing = false;\n return s;\n }\n constructor(max, HeapCls) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)');\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max);\n this.length = 0;\n }\n push(n) {\n this.heap[this.length++] = n;\n }\n pop() {\n return this.heap[--this.length];\n }\n}\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache {\n // options that cannot be changed without disaster\n #max;\n #maxSize;\n #dispose;\n #disposeAfter;\n #fetchMethod;\n #memoMethod;\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl;\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution;\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas;\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale;\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet;\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL;\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize;\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort;\n // computed properties\n #size;\n #calculatedSize;\n #keyMap;\n #keyList;\n #valList;\n #next;\n #prev;\n #head;\n #tail;\n #free;\n #disposed;\n #sizes;\n #starts;\n #ttls;\n #hasDispose;\n #hasFetchMethod;\n #hasDisposeAfter;\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals(c) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head;\n },\n get tail() {\n return c.#tail;\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p) => c.#isBackgroundFetch(p),\n backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),\n moveToTail: (index) => c.#moveToTail(index),\n indexes: (options) => c.#indexes(options),\n rindexes: (options) => c.#rindexes(options),\n isStale: (index) => c.#isStale(index),\n };\n }\n // Protected read-only members\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max() {\n return this.#max;\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize() {\n return this.#maxSize;\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize() {\n return this.#calculatedSize;\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size() {\n return this.#size;\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod() {\n return this.#fetchMethod;\n }\n get memoMethod() {\n return this.#memoMethod;\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose;\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter;\n }\n constructor(options) {\n const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options;\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer');\n }\n const UintArray = max ? getUintArray(max) : Array;\n if (!UintArray) {\n throw new Error('invalid max value: ' + max);\n }\n this.#max = max;\n this.#maxSize = maxSize;\n this.maxEntrySize = maxEntrySize || this.#maxSize;\n this.sizeCalculation = sizeCalculation;\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function');\n }\n }\n if (memoMethod !== undefined &&\n typeof memoMethod !== 'function') {\n throw new TypeError('memoMethod must be a function if defined');\n }\n this.#memoMethod = memoMethod;\n if (fetchMethod !== undefined &&\n typeof fetchMethod !== 'function') {\n throw new TypeError('fetchMethod must be a function if specified');\n }\n this.#fetchMethod = fetchMethod;\n this.#hasFetchMethod = !!fetchMethod;\n this.#keyMap = new Map();\n this.#keyList = new Array(max).fill(undefined);\n this.#valList = new Array(max).fill(undefined);\n this.#next = new UintArray(max);\n this.#prev = new UintArray(max);\n this.#head = 0;\n this.#tail = 0;\n this.#free = Stack.create(max);\n this.#size = 0;\n this.#calculatedSize = 0;\n if (typeof dispose === 'function') {\n this.#dispose = dispose;\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter;\n this.#disposed = [];\n }\n else {\n this.#disposeAfter = undefined;\n this.#disposed = undefined;\n }\n this.#hasDispose = !!this.#dispose;\n this.#hasDisposeAfter = !!this.#disposeAfter;\n this.noDisposeOnSet = !!noDisposeOnSet;\n this.noUpdateTTL = !!noUpdateTTL;\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;\n this.ignoreFetchAbort = !!ignoreFetchAbort;\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError('maxSize must be a positive integer if specified');\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError('maxEntrySize must be a positive integer if specified');\n }\n this.#initializeSizeTracking();\n }\n this.allowStale = !!allowStale;\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;\n this.updateAgeOnGet = !!updateAgeOnGet;\n this.updateAgeOnHas = !!updateAgeOnHas;\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1;\n this.ttlAutopurge = !!ttlAutopurge;\n this.ttl = ttl || 0;\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError('ttl must be a positive integer if specified');\n }\n this.#initializeTTLTracking();\n }\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError('At least one of max, maxSize, or ttl is required');\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED';\n if (shouldWarn(code)) {\n warned.add(code);\n const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.';\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);\n }\n }\n }\n /**\n * Return the number of ms left in the item's TTL. If item is not in cache,\n * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n */\n getRemainingTTL(key) {\n return this.#keyMap.has(key) ? Infinity : 0;\n }\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max);\n const starts = new ZeroArray(this.#max);\n this.#ttls = ttls;\n this.#starts = starts;\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0;\n ttls[index] = ttl;\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.#delete(this.#keyList[index], 'expire');\n }\n }, ttl + 1);\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n };\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0;\n };\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index];\n const start = starts[index];\n /* c8 ignore next */\n if (!ttl || !start)\n return;\n status.ttl = ttl;\n status.start = start;\n status.now = cachedNow || getNow();\n const age = status.now - start;\n status.remainingTTL = ttl - age;\n }\n };\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0;\n const getNow = () => {\n const n = perf.now();\n if (this.ttlResolution > 0) {\n cachedNow = n;\n const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n return n;\n };\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key);\n if (index === undefined) {\n return 0;\n }\n const ttl = ttls[index];\n const start = starts[index];\n if (!ttl || !start) {\n return Infinity;\n }\n const age = (cachedNow || getNow()) - start;\n return ttl - age;\n };\n this.#isStale = index => {\n const s = starts[index];\n const t = ttls[index];\n return !!t && !!s && (cachedNow || getNow()) - s > t;\n };\n }\n // conditionally set private methods related to TTL\n #updateItemAge = () => { };\n #statusTTL = () => { };\n #setItemTTL = () => { };\n /* c8 ignore stop */\n #isStale = () => false;\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max);\n this.#calculatedSize = 0;\n this.#sizes = sizes;\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index];\n sizes[index] = 0;\n };\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0;\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function');\n }\n size = sizeCalculation(v, k);\n if (!isPosInt(size)) {\n throw new TypeError('sizeCalculation return invalid (expect positive integer)');\n }\n }\n else {\n throw new TypeError('invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.');\n }\n }\n return size;\n };\n this.#addItemSize = (index, size, status) => {\n sizes[index] = size;\n if (this.#maxSize) {\n const maxSize = this.#maxSize - sizes[index];\n while (this.#calculatedSize > maxSize) {\n this.#evict(true);\n }\n }\n this.#calculatedSize += sizes[index];\n if (status) {\n status.entrySize = size;\n status.totalCalculatedSize = this.#calculatedSize;\n }\n };\n }\n #removeItemSize = _i => { };\n #addItemSize = (_i, _s, _st) => { };\n #requireSize = (_k, _v, size, sizeCalculation) => {\n if (size || sizeCalculation) {\n throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');\n }\n return 0;\n };\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#head) {\n break;\n }\n else {\n i = this.#prev[i];\n }\n }\n }\n }\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#tail) {\n break;\n }\n else {\n i = this.#next[i];\n }\n }\n }\n }\n #isValidIndex(index) {\n return (index !== undefined &&\n this.#keyMap.get(this.#keyList[index]) === index);\n }\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * A String value that is used in the creation of the default string\n * description of an object. Called by the built-in method\n * `Object.prototype.toString`.\n */\n [Symbol.toStringTag] = 'LRUCache';\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n */\n find(fn, getOptions = {}) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n if (fn(value, this.#keyList[i], this)) {\n return this.get(this.#keyList[i], getOptions);\n }\n }\n }\n /**\n * Call the supplied function on each item in the cache, in order from most\n * recently used to least recently used.\n *\n * `fn` is called as `fn(value, key, cache)`.\n *\n * If `thisp` is provided, function will be called in the `this`-context of\n * the provided object, or the cache if no `thisp` object is provided.\n *\n * Does not update age or recenty of use, or iterate over stale values.\n */\n forEach(fn, thisp = this) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(fn, thisp = this) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false;\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.#delete(this.#keyList[i], 'expire');\n deleted = true;\n }\n }\n return deleted;\n }\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Returns `undefined` if the key is not present.\n *\n * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n * serialization, the `start` value is always the current timestamp, and the\n * `ttl` is a calculated remaining time to live (negative if expired).\n *\n * Always returns stale values, if their info is found in the cache, so be\n * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n * if relevant.\n */\n info(key) {\n const i = this.#keyMap.get(key);\n if (i === undefined)\n return undefined;\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n return undefined;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i];\n const start = this.#starts[i];\n if (ttl && start) {\n const remain = ttl - (perf.now() - start);\n entry.ttl = remain;\n entry.start = Date.now();\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n return entry;\n }\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to {@link LRLUCache#load}.\n *\n * The `start` fields are calculated relative to a portable `Date.now()`\n * timestamp, even if `performance.now()` is available.\n *\n * Stale entries are always included in the `dump`, even if\n * {@link LRUCache.OptionsBase.allowStale} is false.\n *\n * Note: this returns an actual array, not a generator, so it can be more\n * easily passed around.\n */\n dump() {\n const arr = [];\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i];\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined || key === undefined)\n continue;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i];\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - this.#starts[i];\n entry.start = Math.floor(Date.now() - age);\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n arr.unshift([key, entry]);\n }\n return arr;\n }\n /**\n * Reset the cache and load in the items in entries in the order listed.\n *\n * The shape of the resulting cache may be different if the same options are\n * not used in both caches.\n *\n * The `start` fields are assumed to be calculated relative to a portable\n * `Date.now()` timestamp, even if `performance.now()` is available.\n */\n load(arr) {\n this.clear();\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start;\n entry.start = perf.now() - age;\n }\n this.set(key, entry.value, entry);\n }\n }\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n *\n * Fields on the {@link LRUCache.SetOptions} options param will override\n * their corresponding values in the constructor options for the scope\n * of this single `set()` operation.\n *\n * If `start` is provided, then that will set the effective start\n * time for the TTL calculation. Note that this must be a previous\n * value of `performance.now()` if supported, or a previous value of\n * `Date.now()` if not.\n *\n * Options object may also include `size`, which will prevent\n * calling the `sizeCalculation` function and just use the specified\n * number if it is a positive integer, and `noDisposeOnSet` which\n * will prevent calling a `dispose` function in the case of\n * overwrites.\n *\n * If the `size` (or return value of `sizeCalculation`) for a given\n * entry is greater than `maxEntrySize`, then the item will not be\n * added to the cache.\n *\n * Will update the recency of the entry.\n *\n * If the value is `undefined`, then this is an alias for\n * `cache.delete(key)`. `undefined` is never stored in the cache.\n */\n set(k, v, setOptions = {}) {\n if (v === undefined) {\n this.delete(k);\n return this;\n }\n const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;\n let { noUpdateTTL = this.noUpdateTTL } = setOptions;\n const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss';\n status.maxEntrySizeExceeded = true;\n }\n // have to delete, in case something is there already.\n this.#delete(k, 'set');\n return this;\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k);\n if (index === undefined) {\n // addition\n index = (this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size);\n this.#keyList[index] = k;\n this.#valList[index] = v;\n this.#keyMap.set(k, index);\n this.#next[this.#tail] = index;\n this.#prev[index] = this.#tail;\n this.#tail = index;\n this.#size++;\n this.#addItemSize(index, size, status);\n if (status)\n status.set = 'add';\n noUpdateTTL = false;\n }\n else {\n // update\n this.#moveToTail(index);\n const oldVal = this.#valList[index];\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'));\n const { __staleWhileFetching: s } = oldVal;\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s, k, 'set']);\n }\n }\n }\n else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal, k, 'set']);\n }\n }\n this.#removeItemSize(index);\n this.#addItemSize(index, size, status);\n this.#valList[index] = v;\n if (status) {\n status.set = 'replace';\n const oldValue = oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal;\n if (oldValue !== undefined)\n status.oldValue = oldValue;\n }\n }\n else if (status) {\n status.set = 'update';\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking();\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start);\n }\n if (status)\n this.#statusTTL(status, index);\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return this;\n }\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop() {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head];\n this.#evict(true);\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching;\n }\n }\n else if (val !== undefined) {\n return val;\n }\n }\n }\n finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n }\n #evict(free) {\n const head = this.#head;\n const k = this.#keyList[head];\n const v = this.#valList[head];\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict']);\n }\n }\n this.#removeItemSize(head);\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined;\n this.#valList[head] = undefined;\n this.#free.push(head);\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0;\n this.#free.length = 0;\n }\n else {\n this.#head = this.#next[head];\n }\n this.#keyMap.delete(k);\n this.#size--;\n return head;\n }\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Check if a key is in the cache, without updating the recency of\n * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n * to `true` in either the options or the constructor.\n *\n * Will return `false` if the item is stale, even though it is technically in\n * the cache. The difference can be determined (if it matters) by using a\n * `status` argument, and inspecting the `has` field.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k, hasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined) {\n return false;\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index);\n }\n if (status) {\n status.has = 'hit';\n this.#statusTTL(status, index);\n }\n return true;\n }\n else if (status) {\n status.has = 'stale';\n this.#statusTTL(status, index);\n }\n }\n else if (status) {\n status.has = 'miss';\n }\n return false;\n }\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k, peekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions;\n const index = this.#keyMap.get(k);\n if (index === undefined ||\n (!allowStale && this.#isStale(index))) {\n return;\n }\n const v = this.#valList[index];\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n }\n #backgroundFetch(k, index, options, context) {\n const v = index === undefined ? undefined : this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n return v;\n }\n const ac = new AC();\n const { signal } = options;\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n });\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n };\n const cb = (v, updateCache = false) => {\n const { aborted } = ac.signal;\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined;\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true;\n options.status.fetchError = ac.signal.reason;\n if (ignoreAbort)\n options.status.fetchAbortIgnored = true;\n }\n else {\n options.status.fetchResolved = true;\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason);\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p;\n if (this.#valList[index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index] = bf.__staleWhileFetching;\n }\n else {\n this.#delete(k, 'fetch');\n }\n }\n else {\n if (options.status)\n options.status.fetchUpdated = true;\n this.set(k, v, fetchOpts.options);\n }\n }\n return v;\n };\n const eb = (er) => {\n if (options.status) {\n options.status.fetchRejected = true;\n options.status.fetchError = er;\n }\n return fetchFail(er);\n };\n const fetchFail = (er) => {\n const { aborted } = ac.signal;\n const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;\n const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;\n const noDelete = allowStale || options.noDeleteOnFetchRejection;\n const bf = p;\n if (this.#valList[index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined;\n if (del) {\n this.#delete(k, 'fetch');\n }\n else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index] = bf.__staleWhileFetching;\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true;\n }\n return bf.__staleWhileFetching;\n }\n else if (bf.__returned === bf) {\n throw er;\n }\n };\n const pcall = (res, rej) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts);\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej);\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (!options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort) {\n res(undefined);\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true);\n }\n }\n });\n };\n if (options.status)\n options.status.fetchDispatched = true;\n const p = new Promise(pcall).then(cb, eb);\n const bf = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n });\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined });\n index = this.#keyMap.get(k);\n }\n else {\n this.#valList[index] = bf;\n }\n return bf;\n }\n #isBackgroundFetch(p) {\n if (!this.#hasFetchMethod)\n return false;\n const b = p;\n return (!!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC);\n }\n async fetch(k, fetchOptions = {}) {\n const { \n // get options\n allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, \n // set options\n ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, \n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;\n if (!this.#hasFetchMethod) {\n if (status)\n status.fetch = 'get';\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n });\n }\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n };\n let index = this.#keyMap.get(k);\n if (index === undefined) {\n if (status)\n status.fetch = 'miss';\n const p = this.#backgroundFetch(k, index, options, context);\n return (p.__returned = p);\n }\n else {\n // in cache, maybe already fetching\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n const stale = allowStale && v.__staleWhileFetching !== undefined;\n if (status) {\n status.fetch = 'inflight';\n if (stale)\n status.returnedStale = true;\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v);\n }\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index);\n if (!forceRefresh && !isStale) {\n if (status)\n status.fetch = 'hit';\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n if (status)\n this.#statusTTL(status, index);\n return v;\n }\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context);\n const hasStale = p.__staleWhileFetching !== undefined;\n const staleVal = hasStale && allowStale;\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh';\n if (staleVal && isStale)\n status.returnedStale = true;\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p);\n }\n }\n async forceFetch(k, fetchOptions = {}) {\n const v = await this.fetch(k, fetchOptions);\n if (v === undefined)\n throw new Error('fetch() returned undefined');\n return v;\n }\n memo(k, memoOptions = {}) {\n const memoMethod = this.#memoMethod;\n if (!memoMethod) {\n throw new Error('no memoMethod provided to constructor');\n }\n const { context, forceRefresh, ...options } = memoOptions;\n const v = this.get(k, options);\n if (!forceRefresh && v !== undefined)\n return v;\n const vv = memoMethod(k, v, {\n options,\n context,\n });\n this.set(k, vv, options);\n return vv;\n }\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k, getOptions = {}) {\n const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const value = this.#valList[index];\n const fetching = this.#isBackgroundFetch(value);\n if (status)\n this.#statusTTL(status, index);\n if (this.#isStale(index)) {\n if (status)\n status.get = 'stale';\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.#delete(k, 'expire');\n }\n if (status && allowStale)\n status.returnedStale = true;\n return allowStale ? value : undefined;\n }\n else {\n if (status &&\n allowStale &&\n value.__staleWhileFetching !== undefined) {\n status.returnedStale = true;\n }\n return allowStale ? value.__staleWhileFetching : undefined;\n }\n }\n else {\n if (status)\n status.get = 'hit';\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching;\n }\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n return value;\n }\n }\n else if (status) {\n status.get = 'miss';\n }\n }\n #connect(p, n) {\n this.#prev[n] = p;\n this.#next[p] = n;\n }\n #moveToTail(index) {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n this.#connect(this.#prev[index], this.#next[index]);\n }\n this.#connect(this.#tail, index);\n this.#tail = index;\n }\n }\n /**\n * Deletes a key out of the cache.\n *\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k) {\n return this.#delete(k, 'delete');\n }\n #delete(k, reason) {\n let deleted = false;\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n deleted = true;\n if (this.#size === 1) {\n this.#clear(reason);\n }\n else {\n this.#removeItemSize(index);\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n this.#keyMap.delete(k);\n this.#keyList[index] = undefined;\n this.#valList[index] = undefined;\n if (index === this.#tail) {\n this.#tail = this.#prev[index];\n }\n else if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n const pi = this.#prev[index];\n this.#next[pi] = this.#next[index];\n const ni = this.#next[index];\n this.#prev[ni] = this.#prev[index];\n }\n this.#size--;\n this.#free.push(index);\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return deleted;\n }\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n return this.#clear('delete');\n }\n #clear(reason) {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else {\n const k = this.#keyList[index];\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n }\n this.#keyMap.clear();\n this.#valList.fill(undefined);\n this.#keyList.fill(undefined);\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0);\n this.#starts.fill(0);\n }\n if (this.#sizes) {\n this.#sizes.fill(0);\n }\n this.#head = 0;\n this.#tail = 0;\n this.#free.length = 0;\n this.#calculatedSize = 0;\n this.#size = 0;\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map",
18
+ "import crypto from 'crypto';\nimport { LRUCache } from 'lru-cache';\nimport { getConfig } from '@/config/index.js';\n\nconst config = getConfig();\n\n// Initialize cache with a safe fallback size if disabled.\n// Actual enabling/disabling is handled in the read/write functions.\nconst cache = new LRUCache<string, string>({\n max: config.cacheSize > 0 ? config.cacheSize : 1,\n});\n\n/**\n * Generates a collision-resistant cache key from arguments.\n * Uses a null character separator to distinguish boundaries.\n */\nfunction getCacheKey(args: any[]): string {\n const hash = crypto.createHash('sha1');\n for (const arg of args) {\n hash.update(String(arg));\n // Use a null character as a separator to prevent collisions\n // e.g. [\"ab\", \"c\"] vs [\"a\", \"bc\"]\n hash.update('\\0');\n }\n return hash.digest('hex');\n}\n\nexport function readCache(args: any[]): string | null {\n if (config.cacheSize <= 0) {\n return null;\n }\n\n const key = getCacheKey(args);\n return cache.get(key) || null;\n}\n\nexport function writeCache(result: string, args: any[]): void {\n if (config.cacheSize <= 0) {\n return;\n }\n\n const key = getCacheKey(args);\n cache.set(key, result);\n}",
19
+ "import path from 'path';\nimport { fileURLToPath } from 'url';\nimport { readFile } from 'fs/promises';\nimport { TranslationEngine } from '@/core/engine.js';\nimport { createResourceLoader } from '@/core/factory.js';\nimport { getConfig } from '@/config/index.js';\nimport loadBergamot from '@/lib/bergamot/bergamot-translator.js';\nimport wasmPath from '@/lib/bergamot/bergamot-translator.wasm' with { type: 'file' };\nimport * as logger from '@/logger/index.js';\nimport * as models from '@/models/index.js';\nimport { detectLanguage, detectMultipleLanguages } from './detector.js';\nimport { readCache, writeCache } from '@/utils/cache.js';\n\ninterface EngineInfo {\n engine: TranslationEngine;\n lastUsed: Date;\n fromLang: string;\n toLang: string;\n timer?: NodeJS.Timeout;\n}\n\nconst engines = new Map<string, EngineInfo>();\nconst loadingPromises = new Map<string, Promise<TranslationEngine>>();\n\nfunction needsPivotTranslation(fromLang: string, toLang: string): boolean {\n if (fromLang === 'en' || toLang === 'en') {\n return false;\n }\n\n if (models.hasLanguagePair(fromLang, toLang)) {\n return false;\n }\n\n return true;\n}\n\nasync function getOrCreateSingleEngine(\n fromLang: string,\n toLang: string\n): Promise<TranslationEngine> {\n const key = `${fromLang}-${toLang}`;\n\n const existing = engines.get(key);\n if (existing) {\n existing.lastUsed = new Date();\n resetIdleTimer(existing);\n return existing.engine;\n }\n\n // Check if initialization is already in progress\n if (loadingPromises.has(key)) {\n logger.debug(`Waiting for existing engine initialization for ${key}...`);\n return loadingPromises.get(key)!;\n }\n\n const initPromise = (async () => {\n try {\n const config = getConfig();\n\n logger.info(`Creating new engine for ${fromLang} -> ${toLang}`);\n\n if (!config.enableOfflineMode) {\n logger.info(`Downloading model for ${fromLang} -> ${toLang}`);\n await models.downloadModel(toLang, fromLang);\n }\n\n const modelFiles = await models.getModelFiles(config.modelDir, fromLang, toLang);\n const langPairDir = path.join(config.modelDir, `${fromLang}_${toLang}`);\n\n const engine = new TranslationEngine();\n const loader = createResourceLoader();\n\n const currentDir = path.dirname(fileURLToPath(import.meta.url));\n const absoluteWasmPath = path.resolve(currentDir, wasmPath);\n\n logger.debug(`Loading WASM from: ${absoluteWasmPath}`);\n const wasmBinary = await readFile(absoluteWasmPath);\n logger.debug(`WASM loaded, size: ${wasmBinary.byteLength} bytes`);\n\n const bergamotModule = await loader.loadBergamotModule(wasmBinary, loadBergamot);\n\n const modelBuffers = await loader.loadModelFiles(langPairDir, {\n model: path.basename(modelFiles.model),\n lex: path.basename(modelFiles.lex),\n srcvocab: path.basename(modelFiles.vocab_src),\n trgvocab: path.basename(modelFiles.vocab_trg),\n });\n\n await engine.init(bergamotModule, modelBuffers);\n\n const info: EngineInfo = {\n engine,\n lastUsed: new Date(),\n fromLang,\n toLang,\n };\n\n resetIdleTimer(info);\n engines.set(key, info);\n\n logger.info(`Engine created successfully for ${fromLang} -> ${toLang}`);\n\n return engine;\n } finally {\n loadingPromises.delete(key);\n }\n })();\n\n loadingPromises.set(key, initPromise);\n return initPromise;\n}\n\nfunction resetIdleTimer(info: EngineInfo) {\n if (info.timer) {\n clearTimeout(info.timer);\n }\n\n const config = getConfig();\n const timeout = config.workerIdleTimeout * 1000;\n\n info.timer = setTimeout(() => {\n const key = `${info.fromLang}-${info.toLang}`;\n logger.info(`Engine ${key} idle timeout, stopping...`);\n info.engine.destroy();\n engines.delete(key);\n logger.info(`Engine ${key} stopped due to idle timeout`);\n }, timeout);\n}\n\nasync function translateSingleLanguageText(\n fromLang: string,\n toLang: string,\n text: string,\n isHTML: boolean\n): Promise<string> {\n const cacheKey = [fromLang, toLang, text, isHTML];\n const cached = readCache(cacheKey);\n if (cached !== null) {\n logger.debug(`Cache hit: ${fromLang} -> ${toLang}, text length: ${text.length}`);\n return cached;\n }\n\n const MAX_RETRIES = 3;\n let lastError: any;\n\n for (let i = 0; i < MAX_RETRIES; i++) {\n try {\n const engine = await getOrCreateSingleEngine(fromLang, toLang);\n const result = await engine.translateAsync(text, { html: isHTML });\n writeCache(result, cacheKey);\n return result;\n } catch (error: any) {\n lastError = error;\n const isSIMDError = error.message && (\n error.message.includes('wasm-simd is not enabled') ||\n error.message.includes('SIMD') ||\n (error.message.includes('CompileError') && error.message.includes('WebAssembly'))\n );\n const isMemoryError = error.message && (\n error.message.includes('Out of bounds memory access') ||\n error.message.includes('memory access out of bounds') ||\n error.message.includes('unreachable') ||\n error.message.includes('abort')\n );\n\n if (isMemoryError) {\n logger.warn(`WASM memory error during translation (${fromLang}->${toLang}), retrying (${i + 1}/${MAX_RETRIES})...`);\n\n const key = `${fromLang}-${toLang}`;\n const info = engines.get(key);\n if (info) {\n logger.warn(`Destroying crashed engine: ${key}`);\n info.engine.destroy();\n engines.delete(key);\n }\n\n await new Promise(resolve => setTimeout(resolve, 100 * (i + 1)));\n continue;\n }\n\n if (isSIMDError) {\n logger.fatal('WebAssembly SIMD is not supported on this CPU.');\n logger.fatal('If you are using the standard build, please download and use the legacy build for non-AVX2 CPUs:');\n logger.fatal(' - Binary: mtranserver-*-legacy');\n logger.fatal(' - Docker: xxnuo/mtranserver:legacy');\n logger.fatal('If you are already using the legacy build, sorry your CPU is too old to run MTranServer.');\n process.exit(1);\n }\n throw error;\n }\n }\n\n logger.error(`Failed to translate after ${MAX_RETRIES} retries: ${lastError.message}`);\n throw lastError;\n}\n\nasync function translateSegment(\n fromLang: string,\n toLang: string,\n text: string,\n isHTML: boolean\n): Promise<string> {\n if (fromLang === toLang) {\n return text;\n }\n\n if (!needsPivotTranslation(fromLang, toLang)) {\n return translateSingleLanguageText(fromLang, toLang, text, isHTML);\n }\n\n const intermediateText = await translateSingleLanguageText(fromLang, 'en', text, isHTML);\n return translateSingleLanguageText('en', toLang, intermediateText, isHTML);\n}\n\nexport async function translateWithPivot(\n fromLang: string,\n toLang: string,\n text: string,\n isHTML: boolean = false\n): Promise<string> {\n logger.debug(\n `TranslateWithPivot: ${fromLang} -> ${toLang}, text length: ${text.length}, isHTML: ${isHTML}`\n );\n\n if (fromLang !== 'auto' && fromLang === toLang) {\n return text;\n }\n\n if (fromLang !== 'auto' && text.length <= 128) {\n return translateSegment(fromLang, toLang, text, isHTML);\n }\n\n const config = getConfig();\n const segments = await detectMultipleLanguages(text);\n\n if (segments.length <= 1) {\n let effectiveFromLang: string;\n if (segments.length === 1) {\n effectiveFromLang = segments[0].language;\n } else if (fromLang === 'auto') {\n const detected = await detectLanguage(text);\n if (!detected) {\n throw new Error('Failed to detect source language');\n }\n effectiveFromLang = detected;\n } else {\n effectiveFromLang = fromLang;\n }\n\n if (effectiveFromLang === toLang) {\n return text;\n }\n\n if (text.length > config.maxLengthBreak && !isHTML) {\n return translateLongText(effectiveFromLang, toLang, text);\n }\n\n return translateSegment(effectiveFromLang, toLang, text, isHTML);\n }\n\n logger.debug(`Detected ${segments.length} language segments`);\n let result = '';\n let lastEnd = 0;\n\n for (const seg of segments) {\n if (seg.start > lastEnd) {\n result += text.substring(lastEnd, seg.start);\n }\n\n if (seg.language === toLang) {\n result += seg.text;\n } else {\n try {\n const translated = await translateSegment(seg.language, toLang, seg.text, isHTML);\n result += translated;\n } catch (error) {\n logger.error(`Failed to translate segment: ${error}`);\n result += seg.text;\n }\n }\n lastEnd = seg.end;\n }\n\n if (lastEnd < text.length) {\n result += text.substring(lastEnd);\n }\n\n return result;\n}\n\nasync function translateLongText(\n fromLang: string,\n toLang: string,\n text: string\n): Promise<string> {\n logger.debug(`Splitting long text (${text.length} chars) into sentences`);\n\n const segmenterAny = new (Intl as any).Segmenter(undefined, { granularity: 'sentence' });\n const sentences = Array.from(segmenterAny.segment(text)) as Array<{ segment: string, index: number }>;\n\n logger.debug(`Split into ${sentences.length} sentences`);\n\n const results: string[] = [];\n\n for (let i = 0; i < sentences.length; i++) {\n const { segment } = sentences[i];\n try {\n const translated = await translateSegment(fromLang, toLang, segment, false);\n results.push(translated);\n\n if ((i + 1) % 10 === 0) {\n logger.debug(`Translated ${i + 1}/${sentences.length} sentences`);\n }\n } catch (error) {\n logger.error(`Failed to translate sentence ${i + 1}: ${error}`);\n results.push(segment);\n }\n }\n\n return results.join('');\n}\n\nexport function cleanupAllEngines() {\n logger.info(`Cleaning up ${engines.size} engine(s)...`);\n\n for (const [key, info] of engines.entries()) {\n if (info.timer) {\n clearTimeout(info.timer);\n }\n info.engine.destroy();\n logger.debug(`Stopped engine: ${key}`);\n }\n\n engines.clear();\n logger.info('All engines cleaned up successfully');\n}\n",
20
+ "export * from './engine.js';\nexport * from './detector.js';\n",
21
+ "const languageAliases: Record<string, string> = {\n 'zh': 'zh-Hans',\n 'zh-cn': 'zh-Hans',\n 'zh-sg': 'zh-Hans',\n 'zh-hans': 'zh-Hans',\n 'cmn': 'zh-Hans',\n 'chinese': 'zh-Hans',\n 'zh-tw': 'zh-Hant',\n 'zh-hk': 'zh-Hant',\n 'zh-mo': 'zh-Hant',\n 'zh-hant': 'zh-Hant',\n 'cht': 'zh-Hant',\n 'en-us': 'en',\n 'en-gb': 'en',\n 'en-au': 'en',\n 'en-ca': 'en',\n 'en-nz': 'en',\n 'en-ie': 'en',\n 'en-za': 'en',\n 'en-jm': 'en',\n 'en-bz': 'en',\n 'en-tt': 'en',\n 'fr-fr': 'fr',\n 'fr-ca': 'fr',\n 'fr-be': 'fr',\n 'fr-ch': 'fr',\n 'es-es': 'es',\n 'es-mx': 'es',\n 'es-ar': 'es',\n 'es-co': 'es',\n 'es-cl': 'es',\n 'es-pe': 'es',\n 'es-ve': 'es',\n 'pt-pt': 'pt',\n 'pt-br': 'pt',\n 'de-de': 'de',\n 'de-at': 'de',\n 'de-ch': 'de',\n 'it-it': 'it',\n 'it-ch': 'it',\n 'ja-jp': 'ja',\n 'jp': 'ja',\n 'ko-kr': 'ko',\n 'kr': 'ko',\n 'ru-ru': 'ru',\n 'nb': 'no',\n};\n\nexport function normalizeLanguageCode(code: string): string {\n if (!code) return '';\n\n const normalized = code.toLowerCase().replace(/_/g, '-');\n\n if (languageAliases[normalized]) {\n return languageAliases[normalized];\n }\n\n const mainCode = normalized.split('-')[0];\n if (languageAliases[mainCode]) {\n return languageAliases[mainCode];\n }\n\n return mainCode;\n}\n",
22
+ "import net from 'net';\n\nexport async function getFreePort(): Promise<number> {\n return new Promise((resolve, reject) => {\n const server = net.createServer();\n server.unref();\n server.on('error', reject);\n server.listen(0, () => {\n const address = server.address();\n if (address && typeof address !== 'string') {\n const port = address.port;\n server.close(() => resolve(port));\n } else {\n reject(new Error('Failed to get port'));\n }\n });\n });\n}\n",
23
+ "import os from 'os'\n\nexport function getAvailableMemoryMB(): number {\n try {\n const freeMemBytes = os.freemem()\n return Math.floor(freeMemBytes / 1024 / 1024)\n } catch (error) {\n return 0\n }\n}\n",
24
+ "export * from './lang-alias.js';\nexport * from './port.js';\nexport * from './version.js';\nexport * from './memory.js';\n",
25
+ "import { setConfig, getConfig, Config } from '@/config/index.js';\nimport { initRecords, downloadModel } from '@/models/index.js';\nimport { translateWithPivot, cleanupAllEngines } from '@/services/index.js';\nimport { detectLanguage } from '@/services/detector.js';\nimport { normalizeLanguageCode } from '@/utils/index.js';\n\nexport interface MTranConfig extends Partial<Config> {}\n\nexport class MTran {\n constructor(config?: MTranConfig) {\n if (config) {\n setConfig(config);\n }\n }\n\n /**\n * Initialize the translation engine (load records, etc.)\n */\n async init(): Promise<void> {\n await initRecords();\n }\n\n /**\n * Translate text\n * @param from Source language code (or 'auto')\n * @param to Target language code\n * @param text Text to translate\n * @param html Whether the text is HTML (default: false)\n */\n async translate(from: string, to: string, text: string, html: boolean = false): Promise<string> {\n const normalizedFrom = from === 'auto' ? 'auto' : normalizeLanguageCode(from);\n const normalizedTo = normalizeLanguageCode(to);\n return translateWithPivot(normalizedFrom, normalizedTo, text, html);\n }\n\n /**\n * Detect language of the text\n * @param text Text to analyze\n */\n async detect(text: string): Promise<string | null> {\n return detectLanguage(text);\n }\n\n /**\n * Ensure model is downloaded for a language pair\n * @param from Source language\n * @param to Target language\n */\n async downloadModel(from: string, to: string): Promise<void> {\n const normalizedFrom = normalizeLanguageCode(from);\n const normalizedTo = normalizeLanguageCode(to);\n await downloadModel(normalizedTo, normalizedFrom);\n }\n\n /**\n * Clean up all loaded engines and release memory\n */\n async close(): Promise<void> {\n cleanupAllEngines();\n }\n\n /**\n * Get current configuration\n */\n getConfig(): Config {\n return getConfig();\n }\n}\n",
26
+ "export * from '@/mtran.js';\nexport * from '@/config/index.js';\nexport * from '@/models/index.js';\nexport * from '@/utils/index.js';\n// Exclude server, middleware, and generated routes from library export to avoid asset dependency issues\n"
27
+ ],
28
+ "mappings": "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",
29
+ "debugId": "AE42296278362FEE64756E2164756E21",
30
+ "names": []
31
+ }