@mercuryworkshop/proxy-bootstrap 0.0.1

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 (102) hide show
  1. package/dist/.downloads/controller/package/dist/controller.api.js +44 -0
  2. package/dist/.downloads/controller/package/dist/controller.api.js.map +1 -0
  3. package/dist/.downloads/controller/package/dist/controller.inject.js +2 -0
  4. package/dist/.downloads/controller/package/dist/controller.inject.js.map +1 -0
  5. package/dist/.downloads/controller/package/dist/controller.sw.js +2 -0
  6. package/dist/.downloads/controller/package/dist/controller.sw.js.map +1 -0
  7. package/dist/.downloads/controller/package/dist/types/cache.d.ts +39 -0
  8. package/dist/.downloads/controller/package/dist/types/index.d.ts +74 -0
  9. package/dist/.downloads/controller/package/dist/types/inject.d.ts +16 -0
  10. package/dist/.downloads/controller/package/dist/types/sw.d.ts +2 -0
  11. package/dist/.downloads/controller/package/dist/types/symbols.d.ts +1 -0
  12. package/dist/.downloads/controller/package/dist/types/typesEntry.d.ts +5 -0
  13. package/dist/.downloads/controller/package/package.json +16 -0
  14. package/dist/.downloads/controller/package/src/cache.ts +473 -0
  15. package/dist/.downloads/controller/package/src/index.ts +809 -0
  16. package/dist/.downloads/controller/package/src/inject.ts +370 -0
  17. package/dist/.downloads/controller/package/src/sw.ts +231 -0
  18. package/dist/.downloads/controller/package/src/symbols.ts +1 -0
  19. package/dist/.downloads/controller/package/src/types.d.ts +139 -0
  20. package/dist/.downloads/controller/package/src/typesEntry.ts +6 -0
  21. package/dist/.downloads/controller/package/tsconfig.json +24 -0
  22. package/dist/.downloads/controller/package/tsconfig.types.json +16 -0
  23. package/dist/.downloads/libcurl-transport/package/LICENSE +661 -0
  24. package/dist/.downloads/libcurl-transport/package/README.md +52 -0
  25. package/dist/.downloads/libcurl-transport/package/dist/index.d.ts +25 -0
  26. package/dist/.downloads/libcurl-transport/package/dist/index.js +6500 -0
  27. package/dist/.downloads/libcurl-transport/package/dist/index.mjs +6481 -0
  28. package/dist/.downloads/libcurl-transport/package/package.json +37 -0
  29. package/dist/.downloads/scramjet/package/dist/167400cb144aab22.wasm +0 -0
  30. package/dist/.downloads/scramjet/package/dist/2919e49b986edf8c.wasm +0 -0
  31. package/dist/.downloads/scramjet/package/dist/5aed1d5e48aab205.wasm +0 -0
  32. package/dist/.downloads/scramjet/package/dist/882d77912a3c8e3a.wasm +0 -0
  33. package/dist/.downloads/scramjet/package/dist/ac6aa30297a80464.wasm +0 -0
  34. package/dist/.downloads/scramjet/package/dist/c10a57758af882c8.wasm +0 -0
  35. package/dist/.downloads/scramjet/package/dist/cfd04aaae6955b67.wasm +0 -0
  36. package/dist/.downloads/scramjet/package/dist/d06a90fd413b36cf.wasm +0 -0
  37. package/dist/.downloads/scramjet/package/dist/dda06914899a6c28.wasm +0 -0
  38. package/dist/.downloads/scramjet/package/dist/scramjet.js +34 -0
  39. package/dist/.downloads/scramjet/package/dist/scramjet.js.map +1 -0
  40. package/dist/.downloads/scramjet/package/dist/scramjet.mjs +34 -0
  41. package/dist/.downloads/scramjet/package/dist/scramjet.mjs.map +1 -0
  42. package/dist/.downloads/scramjet/package/dist/scramjet.wasm +0 -0
  43. package/dist/.downloads/scramjet/package/dist/scramjet_bundled.js +34 -0
  44. package/dist/.downloads/scramjet/package/dist/scramjet_bundled.js.map +1 -0
  45. package/dist/.downloads/scramjet/package/dist/scramjet_bundled.mjs +34 -0
  46. package/dist/.downloads/scramjet/package/dist/scramjet_bundled.mjs.map +1 -0
  47. package/dist/.downloads/scramjet/package/dist/types/Tap.d.ts +32 -0
  48. package/dist/.downloads/scramjet/package/dist/types/client/client.d.ts +115 -0
  49. package/dist/.downloads/scramjet/package/dist/types/client/entry.d.ts +5 -0
  50. package/dist/.downloads/scramjet/package/dist/types/client/events.d.ts +10 -0
  51. package/dist/.downloads/scramjet/package/dist/types/client/global.d.ts +4 -0
  52. package/dist/.downloads/scramjet/package/dist/types/client/helpers.d.ts +1 -0
  53. package/dist/.downloads/scramjet/package/dist/types/client/index.d.ts +7 -0
  54. package/dist/.downloads/scramjet/package/dist/types/client/location.d.ts +2 -0
  55. package/dist/.downloads/scramjet/package/dist/types/client/shared/eval.d.ts +3 -0
  56. package/dist/.downloads/scramjet/package/dist/types/client/shared/sourcemaps.d.ts +19 -0
  57. package/dist/.downloads/scramjet/package/dist/types/client/shared/unproxy.d.ts +19 -0
  58. package/dist/.downloads/scramjet/package/dist/types/client/shared/wrap.d.ts +4 -0
  59. package/dist/.downloads/scramjet/package/dist/types/client/singletonbox.d.ts +16 -0
  60. package/dist/.downloads/scramjet/package/dist/types/client/unproxy.generated.d.ts +50 -0
  61. package/dist/.downloads/scramjet/package/dist/types/fetch/body.d.ts +3 -0
  62. package/dist/.downloads/scramjet/package/dist/types/fetch/fetch.d.ts +7 -0
  63. package/dist/.downloads/scramjet/package/dist/types/fetch/headers.d.ts +19 -0
  64. package/dist/.downloads/scramjet/package/dist/types/fetch/index.d.ts +128 -0
  65. package/dist/.downloads/scramjet/package/dist/types/fetch/parse.d.ts +22 -0
  66. package/dist/.downloads/scramjet/package/dist/types/fetch/util.d.ts +7 -0
  67. package/dist/.downloads/scramjet/package/dist/types/index.d.ts +11 -0
  68. package/dist/.downloads/scramjet/package/dist/types/shared/cookie.d.ts +26 -0
  69. package/dist/.downloads/scramjet/package/dist/types/shared/headers.d.ts +13 -0
  70. package/dist/.downloads/scramjet/package/dist/types/shared/htmlRules.d.ts +6 -0
  71. package/dist/.downloads/scramjet/package/dist/types/shared/index.d.ts +51 -0
  72. package/dist/.downloads/scramjet/package/dist/types/shared/mime.d.ts +39 -0
  73. package/dist/.downloads/scramjet/package/dist/types/shared/refresh.d.ts +7 -0
  74. package/dist/.downloads/scramjet/package/dist/types/shared/rewriters/css.d.ts +4 -0
  75. package/dist/.downloads/scramjet/package/dist/types/shared/rewriters/html.d.ts +33 -0
  76. package/dist/.downloads/scramjet/package/dist/types/shared/rewriters/index.d.ts +6 -0
  77. package/dist/.downloads/scramjet/package/dist/types/shared/rewriters/js.d.ts +11 -0
  78. package/dist/.downloads/scramjet/package/dist/types/shared/rewriters/url.d.ts +25 -0
  79. package/dist/.downloads/scramjet/package/dist/types/shared/rewriters/wasm.d.ts +7 -0
  80. package/dist/.downloads/scramjet/package/dist/types/shared/rewriters/worker.d.ts +3 -0
  81. package/dist/.downloads/scramjet/package/dist/types/shared/set-cookie-parser.d.ts +20 -0
  82. package/dist/.downloads/scramjet/package/dist/types/shared/snapshot.d.ts +236 -0
  83. package/dist/.downloads/scramjet/package/dist/types/shared/sniffEncoding.d.ts +65 -0
  84. package/dist/.downloads/scramjet/package/dist/types/shared/util.d.ts +2 -0
  85. package/dist/.downloads/scramjet/package/dist/types/symbols.d.ts +6 -0
  86. package/dist/.downloads/scramjet/package/dist/types/types.d.ts +68 -0
  87. package/dist/.downloads/scramjet/package/lib/index.cjs +7 -0
  88. package/dist/.downloads/scramjet/package/lib/index.d.ts +8 -0
  89. package/dist/.downloads/scramjet/package/lib/types.d.ts +20 -0
  90. package/dist/.downloads/scramjet/package/package.json +93 -0
  91. package/dist/bootstrap-client.js +169 -0
  92. package/dist/bootstrap-client.js.map +1 -0
  93. package/dist/bootstrap-server.js +406 -0
  94. package/dist/bootstrap-server.js.map +1 -0
  95. package/dist/bootstrap-static.js +476 -0
  96. package/dist/bootstrap-static.js.map +1 -0
  97. package/dist/types/client.d.ts +4 -0
  98. package/dist/types/clientcommon.d.ts +2 -0
  99. package/dist/types/common.d.ts +30 -0
  100. package/dist/types/server.d.ts +24 -0
  101. package/dist/types/static.d.ts +1 -0
  102. package/package.json +30 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scramjet.mjs","sources":["webpack://scramjet-root/./packages/core/src/index.ts","webpack://scramjet-root/./packages/core/src/client|sync|/^\\.\\/.*$/","webpack://scramjet-root/./packages/core/src/Tap.ts","webpack://scramjet-root/./packages/core/src/client/client.ts","webpack://scramjet-root/./packages/core/src/client/dom/attr.ts","webpack://scramjet-root/./packages/core/src/client/dom/beacon.ts","webpack://scramjet-root/./packages/core/src/client/dom/cookie.ts","webpack://scramjet-root/./packages/core/src/client/dom/css.ts","webpack://scramjet-root/./packages/core/src/client/dom/document.ts","webpack://scramjet-root/./packages/core/src/client/dom/element.ts","webpack://scramjet-root/./packages/core/src/client/dom/fontface.ts","webpack://scramjet-root/./packages/core/src/client/dom/fragments.ts","webpack://scramjet-root/./packages/core/src/client/dom/history.ts","webpack://scramjet-root/./packages/core/src/client/dom/open.ts","webpack://scramjet-root/./packages/core/src/client/dom/origin.ts","webpack://scramjet-root/./packages/core/src/client/dom/performance.ts","webpack://scramjet-root/./packages/core/src/client/dom/protocol.ts","webpack://scramjet-root/./packages/core/src/client/dom/storage.ts","webpack://scramjet-root/./packages/core/src/client/entry.ts","webpack://scramjet-root/./packages/core/src/client/helpers.ts","webpack://scramjet-root/./packages/core/src/client/location.ts","webpack://scramjet-root/./packages/core/src/client/shared/antiantidebugger.ts","webpack://scramjet-root/./packages/core/src/client/shared/blob.ts","webpack://scramjet-root/./packages/core/src/client/shared/caches.ts","webpack://scramjet-root/./packages/core/src/client/shared/chrome.ts","webpack://scramjet-root/./packages/core/src/client/shared/err.ts","webpack://scramjet-root/./packages/core/src/client/shared/error.ts","webpack://scramjet-root/./packages/core/src/client/shared/eval.ts","webpack://scramjet-root/./packages/core/src/client/shared/event.ts","webpack://scramjet-root/./packages/core/src/client/shared/function.ts","webpack://scramjet-root/./packages/core/src/client/shared/import.ts","webpack://scramjet-root/./packages/core/src/client/shared/indexeddb.ts","webpack://scramjet-root/./packages/core/src/client/shared/opfs.ts","webpack://scramjet-root/./packages/core/src/client/shared/postmessage.ts","webpack://scramjet-root/./packages/core/src/client/shared/realm.ts","webpack://scramjet-root/./packages/core/src/client/shared/requests/eventsource.ts","webpack://scramjet-root/./packages/core/src/client/shared/requests/fetch.ts","webpack://scramjet-root/./packages/core/src/client/shared/requests/websocket.ts","webpack://scramjet-root/./packages/core/src/client/shared/requests/xmlhttprequest.ts","webpack://scramjet-root/./packages/core/src/client/shared/settimeout.ts","webpack://scramjet-root/./packages/core/src/client/shared/sourcemaps.ts","webpack://scramjet-root/./packages/core/src/client/shared/worker.ts","webpack://scramjet-root/./packages/core/src/client/shared/wrap.ts","webpack://scramjet-root/./packages/core/src/client/singletonbox.ts","webpack://scramjet-root/./packages/core/src/client/worker/importScripts.ts","webpack://scramjet-root/./packages/core/src/fetch/body.ts","webpack://scramjet-root/./packages/core/src/fetch/fetch.ts","webpack://scramjet-root/./packages/core/src/fetch/headers.ts","webpack://scramjet-root/./packages/core/src/fetch/index.ts","webpack://scramjet-root/./packages/core/src/fetch/parse.ts","webpack://scramjet-root/./packages/core/src/fetch/util.ts","webpack://scramjet-root/./packages/core/src/log.ts","webpack://scramjet-root/./packages/core/src/shared/cookie.ts","webpack://scramjet-root/./packages/core/src/shared/headers.ts","webpack://scramjet-root/./packages/core/src/shared/htmlRules.ts","webpack://scramjet-root/./packages/core/src/shared/index.ts","webpack://scramjet-root/./packages/core/src/shared/mime.ts","webpack://scramjet-root/./packages/core/src/shared/refresh.ts","webpack://scramjet-root/./packages/core/src/shared/rewriters/css.ts","webpack://scramjet-root/./packages/core/src/shared/rewriters/html.ts","webpack://scramjet-root/./packages/core/src/shared/rewriters/js.ts","webpack://scramjet-root/./packages/core/src/shared/rewriters/url.ts","webpack://scramjet-root/./packages/core/src/shared/rewriters/wasm.ts","webpack://scramjet-root/./packages/core/src/shared/rewriters/worker.ts","webpack://scramjet-root/./packages/core/src/shared/set-cookie-parser.ts","webpack://scramjet-root/./packages/core/src/shared/snapshot.ts","webpack://scramjet-root/./packages/core/src/shared/sniffEncoding.ts","webpack://scramjet-root/./packages/core/src/shared/util.ts","webpack://scramjet-root/./packages/core/src/symbols.ts","webpack://scramjet-root/./node_modules/.pnpm/@mercuryworkshop+proxy-transports@1.0.2/node_modules/@mercuryworkshop/proxy-transports/dist/index.mjs","webpack://scramjet-root/./node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/foreignNames.js","webpack://scramjet-root/./node_modules/.pnpm/dom-serializer@2.0.0/node_modules/dom-serializer/lib/esm/index.js","webpack://scramjet-root/./node_modules/.pnpm/domelementtype@2.3.0/node_modules/domelementtype/lib/esm/index.js","webpack://scramjet-root/./node_modules/.pnpm/domelementtype@3.0.0/node_modules/domelementtype/dist/index.js","webpack://scramjet-root/./node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/index.js","webpack://scramjet-root/./node_modules/.pnpm/domhandler@5.0.3/node_modules/domhandler/lib/esm/node.js","webpack://scramjet-root/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode.js","webpack://scramjet-root/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/decode_codepoint.js","webpack://scramjet-root/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/escape.js","webpack://scramjet-root/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-html.js","webpack://scramjet-root/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/generated/decode-data-xml.js","webpack://scramjet-root/./node_modules/.pnpm/entities@4.5.0/node_modules/entities/lib/esm/index.js","webpack://scramjet-root/./node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode-codepoint.js","webpack://scramjet-root/./node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode.js","webpack://scramjet-root/./node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/generated/decode-data-html.js","webpack://scramjet-root/./node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/generated/decode-data-xml.js","webpack://scramjet-root/./node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/bin-trie-flags.js","webpack://scramjet-root/./node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/decode-shared.js","webpack://scramjet-root/./node_modules/.pnpm/htmlparser2@12.0.0_patch_hash=741b06dbf8a09e52a2116a4a219a8625dbebe8d75d37e1210314f06aa952ce9b/node_modules/htmlparser2/dist/Parser.js","webpack://scramjet-root/./node_modules/.pnpm/htmlparser2@12.0.0_patch_hash=741b06dbf8a09e52a2116a4a219a8625dbebe8d75d37e1210314f06aa952ce9b/node_modules/htmlparser2/dist/Tokenizer.js","webpack://scramjet-root/./packages/core/rewriter/wasm/out/snippets/wasm-4b0f351a8e6eeb46/inline0.js","webpack://scramjet-root/./packages/core/rewriter/wasm/out/wasm.js","webpack://scramjet-root/webpack/runtime/define_property_getters","webpack://scramjet-root/webpack/runtime/has_own_property","webpack://scramjet-root/webpack/runtime/make_namespace_object"],"sourcesContent":["// NOTE: this is the entrypoint for scramjet.bundle.js\n// as such it exports everything in scramjet\n// the entry point for scramjet.all.js (what most sites wil use) is entry.ts\n\nimport { setWasm } from \"@rewriters/wasm\";\nimport \"./global.d\";\nimport { ScramjetConfig } from \"./types\";\nexport * from \"./client\";\nexport * from \"./shared\";\nexport * from \"./symbols\";\nexport * from \"./types\";\nexport * from \"./fetch\";\nexport * from \"./Tap\";\nexport { BareResponse } from \"@mercuryworkshop/proxy-transports\";\nimport { atob } from \"@/shared/snapshot\";\n\ndeclare const REWRITERWASM: string | undefined;\n\nexport const defaultConfig: ScramjetConfig = {\n\tglobals: {\n\t\twrapfn: \"$scramjet$wrap\",\n\t\twrappropertybase: \"$scramjet__\",\n\t\twrappropertyfn: \"$scramjet$prop\",\n\t\tcleanrestfn: \"$scramjet$clean\",\n\t\timportfn: \"$scramjet$import\",\n\t\trewritefn: \"$scramjet$rewrite\",\n\t\tmetafn: \"$scramjet$meta\",\n\t\twrappostmessagefn: \"$scramjet$wrappostmessage\",\n\t\tpushsourcemapfn: \"$scramjet$pushsourcemap\",\n\t\ttrysetfn: \"$scramjet$tryset\",\n\t\ttemplocid: \"$scramjet$temploc\",\n\t\ttempunusedid: \"$scramjet$tempunused\",\n\t},\n\tflags: {\n\t\tsyncxhr: false,\n\t\tdisableComputedWrap: false,\n\t\trewriterLogs: false,\n\t\tcaptureErrors: false,\n\t\tcleanErrors: false,\n\t\tscramitize: false,\n\t\tsourcemaps: true,\n\t\tdestructureRewrites: false,\n\t\tallowInvalidJs: false,\n\t\tdebugTrampolines: false,\n\t\tallowFailedIntercepts: false,\n\t\tencapsulateWorkers: true,\n\t\tdebugSourceURL: false,\n\t},\n\tsiteFlags: {},\n\tmaskedfiles: [],\n};\n\nexport const defaultConfigDev: ScramjetConfig = {\n\t...defaultConfig,\n\tflags: {\n\t\t...defaultConfig.flags,\n\t\trewriterLogs: false,\n\t\tcaptureErrors: true,\n\t\tcleanErrors: false,\n\t\tdebugTrampolines: true,\n\t\tdebugSourceURL: true,\n\t},\n};\n\n// bundled build will have the wasm binary inlined as a base64 string\nif (REWRITERWASM) {\n\tsetWasm(Uint8Array.from(atob(REWRITERWASM), (c) => c.charCodeAt(0)));\n}\n","var map = {\n \"./\": \"6418\",\n \"./client\": \"6039\",\n \"./client.ts\": \"6039\",\n \"./dom/attr\": \"8806\",\n \"./dom/attr.ts\": \"8806\",\n \"./dom/beacon\": \"7265\",\n \"./dom/beacon.ts\": \"7265\",\n \"./dom/cookie\": \"8227\",\n \"./dom/cookie.ts\": \"8227\",\n \"./dom/css\": \"8114\",\n \"./dom/css.ts\": \"8114\",\n \"./dom/document\": \"6820\",\n \"./dom/document.ts\": \"6820\",\n \"./dom/element\": \"1733\",\n \"./dom/element.ts\": \"1733\",\n \"./dom/fontface\": \"737\",\n \"./dom/fontface.ts\": \"737\",\n \"./dom/fragments\": \"2452\",\n \"./dom/fragments.ts\": \"2452\",\n \"./dom/history\": \"4397\",\n \"./dom/history.ts\": \"4397\",\n \"./dom/open\": \"5421\",\n \"./dom/open.ts\": \"5421\",\n \"./dom/origin\": \"8703\",\n \"./dom/origin.ts\": \"8703\",\n \"./dom/performance\": \"7539\",\n \"./dom/performance.ts\": \"7539\",\n \"./dom/protocol\": \"8345\",\n \"./dom/protocol.ts\": \"8345\",\n \"./dom/storage\": \"5724\",\n \"./dom/storage.ts\": \"5724\",\n \"./entry\": \"7530\",\n \"./entry.ts\": \"7530\",\n \"./events\": \"2037\",\n \"./events.ts\": \"2037\",\n \"./helpers\": \"1171\",\n \"./helpers.ts\": \"1171\",\n \"./index\": \"6418\",\n \"./index.ts\": \"6418\",\n \"./location\": \"4239\",\n \"./location.ts\": \"4239\",\n \"./shared/antiantidebugger\": \"2115\",\n \"./shared/antiantidebugger.ts\": \"2115\",\n \"./shared/blob\": \"6495\",\n \"./shared/blob.ts\": \"6495\",\n \"./shared/caches\": \"735\",\n \"./shared/caches.ts\": \"735\",\n \"./shared/chrome\": \"7198\",\n \"./shared/chrome.ts\": \"7198\",\n \"./shared/err\": \"5241\",\n \"./shared/err.ts\": \"5241\",\n \"./shared/error\": \"6380\",\n \"./shared/error.ts\": \"6380\",\n \"./shared/eval\": \"2490\",\n \"./shared/eval.ts\": \"2490\",\n \"./shared/event\": \"1762\",\n \"./shared/event.ts\": \"1762\",\n \"./shared/function\": \"2284\",\n \"./shared/function.ts\": \"2284\",\n \"./shared/import\": \"8201\",\n \"./shared/import.ts\": \"8201\",\n \"./shared/indexeddb\": \"7309\",\n \"./shared/indexeddb.ts\": \"7309\",\n \"./shared/opfs\": \"1544\",\n \"./shared/opfs.ts\": \"1544\",\n \"./shared/postmessage\": \"6771\",\n \"./shared/postmessage.ts\": \"6771\",\n \"./shared/realm\": \"6237\",\n \"./shared/realm.ts\": \"6237\",\n \"./shared/requests/eventsource\": \"7396\",\n \"./shared/requests/eventsource.ts\": \"7396\",\n \"./shared/requests/fetch\": \"7705\",\n \"./shared/requests/fetch.ts\": \"7705\",\n \"./shared/requests/websocket\": \"3342\",\n \"./shared/requests/websocket.ts\": \"3342\",\n \"./shared/requests/xmlhttprequest\": \"5639\",\n \"./shared/requests/xmlhttprequest.ts\": \"5639\",\n \"./shared/settimeout\": \"4355\",\n \"./shared/settimeout.ts\": \"4355\",\n \"./shared/sourcemaps\": \"6666\",\n \"./shared/sourcemaps.ts\": \"6666\",\n \"./shared/worker\": \"4034\",\n \"./shared/worker.ts\": \"4034\",\n \"./shared/wrap\": \"3680\",\n \"./shared/wrap.ts\": \"3680\",\n \"./singletonbox\": \"4470\",\n \"./singletonbox.ts\": \"4470\",\n \"./worker/importScripts\": \"6722\",\n \"./worker/importScripts.ts\": \"6722\"\n};\n\n\nfunction __rspack_context(req) {\n var id = __rspack_context_resolve(req);\n return __webpack_require__(id);\n}\nfunction __rspack_context_resolve(req) {\n if(!__webpack_require__.o(map, req)) {\n var e = new Error(\"Cannot find module '\" + req + \"'\");\n e.code = 'MODULE_NOT_FOUND';\n throw e;\n }\n return map[req];\n}\n__rspack_context.keys = function webpackContextKeys() {\n return Object.keys(map);\n};\n__rspack_context.resolve = __rspack_context_resolve;\nmodule.exports = __rspack_context;\n__rspack_context.id = 8770;\n","import { Promise_all } from \"@/shared/snapshot\";\n\ntype Description = {\n\tcontext?: object;\n\tprops?: object;\n};\n\ntype Callback<T extends Description> = (\n\tcontext: T[\"context\"],\n\tprops: T[\"props\"]\n) => void | Promise<void>;\n\ntype Sorter = (other: Plugin) => number;\n\ntype CallbackInfo<T extends Description> = {\n\tcallback: Callback<T>;\n\tplugin: Plugin;\n\tsorter: Sorter;\n};\n\ntype InternalHookDescription = {\n\ttap: TapInternal;\n\tkey: string;\n};\n\ntype TapInternal = {\n\tcallbacks: Record<string, CallbackInfo<Description>[]>;\n};\n\nexport type TapInstance<T extends Record<string, Description>> = {\n\t[K in keyof T]: T[K] & InternalHookDescription;\n};\n\nexport class Plugin {\n\tconstructor(public name: string) {}\n\n\ttap<T extends Description>(\n\t\thook: T,\n\t\tcallback: Callback<T>,\n\t\tsorter?: Sorter\n\t): void {\n\t\tsorter ??= () => 0;\n\t\tTap.tap(hook, callback, this, sorter);\n\t}\n}\n\nexport class Tap {\n\tstatic dispatch<T extends Description>(\n\t\thook: T,\n\t\tcontext: T[\"context\"],\n\t\tprops: T[\"props\"]\n\t): Promise<void[]> {\n\t\tconst internal = hook as unknown as InternalHookDescription;\n\t\tlet callbacks = internal.tap.callbacks[internal.key];\n\t\tif (!callbacks || callbacks.length === 0) return;\n\n\t\tcallbacks = [...callbacks];\n\t\tcallbacks.sort((a, b) => a.sorter(b.plugin));\n\n\t\tconst results = callbacks.map((cb) => cb.callback(context, props));\n\t\treturn Promise_all(results);\n\t}\n\n\tstatic tap<T extends Description>(\n\t\thook: T,\n\t\tcallback: Callback<T>,\n\t\tplugin: Plugin,\n\t\tsorter: Sorter\n\t) {\n\t\tconst internal = hook as unknown as InternalHookDescription;\n\t\tconst callbacks = internal.tap.callbacks;\n\t\tif (!callbacks[internal.key]) callbacks[internal.key] = [];\n\t\tcallbacks[internal.key]!.push({\n\t\t\tcallback,\n\t\t\tplugin,\n\t\t\tsorter,\n\t\t});\n\t}\n\n\tstatic create<T extends Record<string, Description>>(): TapInstance<T> {\n\t\tconst internal: TapInternal = {\n\t\t\tcallbacks: {},\n\t\t};\n\t\tconst hooks: Record<string, InternalHookDescription> = {};\n\n\t\treturn new Proxy(internal as unknown as TapInstance<T>, {\n\t\t\tget(target, key: string) {\n\t\t\t\tif (key === \"callbacks\") return internal.callbacks;\n\t\t\t\tif (!hooks[key]) {\n\t\t\t\t\thooks[key] = { tap: internal, key };\n\t\t\t\t}\n\t\t\t\treturn hooks[key];\n\t\t\t},\n\t\t});\n\t}\n}\n","import {\n\tBareCompatibleClient,\n\tProxyTransport,\n\tRawHeaders,\n} from \"@mercuryworkshop/proxy-transports\";\nimport { SCRAMJETCLIENT } from \"@/symbols\";\nimport { getOwnPropertyDescriptorHandler } from \"@client/helpers\";\nimport { createLocationProxy } from \"@client/location\";\nimport { createWrapFn } from \"@client/shared/wrap\";\nimport { LifecycleHooks } from \"@client/events\";\nimport {\n\trewriteUrl,\n\tRewriteUrlOptions,\n\tunrewriteUrl,\n\ttype URLMeta,\n} from \"@rewriters/url\";\nimport {\n\tflagEnabled,\n\tHtmlRewriterHooks,\n\tScramjetContext,\n\tScramjetHeaders,\n} from \"@/shared\";\nimport { iswindow } from \"./entry\";\nimport { SingletonBox } from \"./singletonbox\";\nimport { ScramjetConfig } from \"@/types\";\nimport { Tap } from \"@/Tap\";\nimport {\n\ttype CookieSyncEntry,\n\ttype CookieSyncOptions,\n\tTrackedHistoryState,\n} from \"@/fetch\";\nimport { AnyFunction } from \"@/types\";\nimport {\n\t_URL,\n\tError,\n\tString,\n\tReflect_get,\n\tArray_isArray,\n\tReflect_has,\n\tReflect_apply,\n\tReflect_construct,\n\tObject_getOwnPropertyDescriptor,\n\tObject_defineProperty,\n\tObject_defineProperties,\n\t_Map,\n} from \"@/shared/snapshot\";\n\nexport type ScramjetClientInit = {\n\tcontext: ScramjetContext;\n\ttransport: ProxyTransport;\n\tsendSetCookie: (\n\t\tcookies: CookieSyncEntry[],\n\t\toptions?: CookieSyncOptions\n\t) => Promise<void>;\n\tshouldPassthroughWebsocket?: (url: string | URL) => boolean;\n\tshouldBlockMessageEvent?: (ev: MessageEvent) => boolean;\n\thookSubcontext: (self: Self, frame?: HTMLIFrameElement) => ScramjetClient;\n\tinitHeaders: RawHeaders;\n\thistory: TrackedHistoryState[];\n};\n\ntype NativeStore = {\n\tstore: Record<string, any>;\n\tcall: (target: string, that: any, ...args) => any;\n\tconstruct: (target: string, ...args) => any;\n};\ntype DescriptorStore = {\n\tstore: Record<string, PropertyDescriptor>;\n\tget: (target: string, that: any) => any;\n\tset: (target: string, that: any, value: any) => void;\n};\n// thank you psm (https://github.com/psmpm) <3\ntype Traverse<\n\tO extends Record<any, any>,\n\tP extends string,\n> = P extends `${infer K}.${infer R}` ? Traverse<O[K], R> : O[P];\ntype GlobalTraverse<P extends string> = Traverse<\n\tGlobalThis & Record<string, any>,\n\tP\n>;\n// https://github.com/Microsoft/TypeScript/issues/27024#issuecomment-421529650\ntype IfEquals<T, U, Y = unknown, N = never> =\n\t(<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? Y : N;\n\ntype ProxyApplyThis<T extends string> =\n\tunknown extends ThisParameterType<Extract<GlobalTraverse<T>, AnyFunction>>\n\t\t? T extends `${infer ClassName}.prototype.${string}`\n\t\t\t? GlobalTraverse<ClassName> extends { prototype: infer Proto }\n\t\t\t\t? Proto\n\t\t\t\t: unknown\n\t\t\t: unknown\n\t\t: ThisParameterType<Extract<GlobalTraverse<T>, AnyFunction>>;\n\nexport type ScramjetModule = {\n\tenabled: (client: ScramjetClient) => boolean | undefined;\n\tdisabled: (client: ScramjetClient, self: GlobalThis) => void | undefined;\n\torder: number | undefined;\n\tdefault: (client: ScramjetClient, self: GlobalThis) => void;\n};\n\nexport type ProxyCtx<\n\tT extends string = string,\n\tU extends \"construct\" | \"apply\" = \"apply\",\n> = {\n\tfn: GlobalTraverse<T>;\n\tthis: IfEquals<U, \"construct\", null, ProxyApplyThis<T>>;\n\targs: IfEquals<\n\t\tU,\n\t\t\"construct\",\n\t\tConstructorParameters<GlobalTraverse<T>>,\n\t\tParameters<GlobalTraverse<T>>\n\t>;\n\tnewTarget: IfEquals<U, \"construct\", GlobalTraverse<T>, null>;\n\treturn: (\n\t\tr: IfEquals<\n\t\t\tU,\n\t\t\t\"construct\",\n\t\t\tInstanceType<GlobalTraverse<T>>,\n\t\t\tReturnType<GlobalTraverse<T>>\n\t\t>\n\t) => void;\n\tcall: () => IfEquals<\n\t\tU,\n\t\t\"construct\",\n\t\tInstanceType<GlobalTraverse<T>>,\n\t\tReturnType<GlobalTraverse<T>>\n\t>;\n};\nexport type Proxy<T extends string = string> = {\n\tconstruct?(ctx: ProxyCtx<T, \"construct\">): any;\n\tapply?(ctx: ProxyCtx<T, \"apply\">): any;\n};\n\nexport type TrapCtx<T extends string> = {\n\tthis: any;\n\tget: () => GlobalTraverse<T>;\n\tset: (v: GlobalTraverse<T>) => void;\n};\nexport type Trap<T extends string> = {\n\twritable?: boolean;\n\tvalue?: any;\n\tenumerable?: boolean;\n\tconfigurable?: boolean;\n\tget?: (ctx: TrapCtx<T>) => GlobalTraverse<T>;\n\tset?: (ctx: TrapCtx<T>, v: GlobalTraverse<T>) => void;\n};\n\nfunction findBox(global: Window, seen: Window[]): SingletonBox | null {\n\tif (seen.includes(global)) return null;\n\tseen.push(global);\n\n\ttry {\n\t\tif ((SCRAMJETCLIENT in global) as any) {\n\t\t\treturn global[SCRAMJETCLIENT].box;\n\t\t}\n\t} catch {}\n\n\ttry {\n\t\tconst b = findBox(global.parent, seen);\n\t\tif (b) return b;\n\t} catch {}\n\n\ttry {\n\t\tconst b = findBox(global.top, seen);\n\t\tif (b) return b;\n\t} catch {}\n\n\ttry {\n\t\tif (global.opener) {\n\t\t\tconst b = findBox(global.opener, seen);\n\t\t\tif (b) return b;\n\t\t}\n\t} catch {}\n\n\tfor (let i = 0; i < global.length; i++) {\n\t\ttry {\n\t\t\tconst b = findBox(global[i], seen);\n\t\t\tif (b) return b;\n\t\t} catch {}\n\t}\n\n\treturn null;\n}\n\nexport class ScramjetClient {\n\tlocationProxy: any;\n\tserviceWorker: ServiceWorkerContainer;\n\tbare: BareCompatibleClient;\n\n\tnatives: NativeStore;\n\tdescriptors: DescriptorStore;\n\twrapfn: (i: any, ...args: any) => any;\n\n\teventcallbacks: Map<\n\t\tany,\n\t\t[\n\t\t\t{\n\t\t\t\tevent: string;\n\t\t\t\toriginalCallback: AnyFunction;\n\t\t\t\tproxiedCallback: AnyFunction;\n\t\t\t},\n\t\t]\n\t> = new Map();\n\n\tmeta: URLMeta;\n\n\tbox: SingletonBox;\n\n\tcontext: ScramjetContext;\n\n\tinitHeaders: ScramjetHeaders;\n\n\thistory: TrackedHistoryState[];\n\n\thooks = {\n\t\trewriter: {\n\t\t\thtml: Tap.create<HtmlRewriterHooks>(),\n\t\t},\n\t\tlifecycle: Tap.create<LifecycleHooks>(),\n\t};\n\n\tconstructor(\n\t\tpublic global: GlobalThis,\n\t\tpublic init: ScramjetClientInit\n\t) {\n\t\tif (SCRAMJETCLIENT in global) {\n\t\t\tdbg.error(\n\t\t\t\t\"attempted to initialize a scramjet client, but one is already loaded - this is very bad\"\n\t\t\t);\n\t\t\tthrow new Error();\n\t\t}\n\n\t\tif (iswindow) {\n\t\t\tconst b = findBox(global as unknown as Window, []);\n\t\t\tif (b) {\n\t\t\t\tthis.box = b;\n\t\t\t}\n\t\t}\n\n\t\tif (!this.box) {\n\t\t\tthis.box = new SingletonBox(this);\n\t\t}\n\n\t\tthis.box.registerClient(this, global as Self);\n\n\t\tthis.context = init.context;\n\t\tif (init.initHeaders)\n\t\t\tthis.initHeaders = ScramjetHeaders.fromRawHeaders(init.initHeaders);\n\t\tthis.history = init.history;\n\t\tthis.context.hooks = {\n\t\t\trewriter: this.hooks.rewriter,\n\t\t};\n\n\t\tthis.bare = new BareCompatibleClient(init.transport);\n\n\t\tthis.serviceWorker = this.global.navigator.serviceWorker;\n\n\t\tif (iswindow) {\n\t\t\tglobal.document[SCRAMJETCLIENT] = this;\n\t\t}\n\n\t\tthis.wrapfn = createWrapFn(this, global);\n\t\tthis.natives = {\n\t\t\tstore: new Proxy(\n\t\t\t\t{},\n\t\t\t\t{\n\t\t\t\t\tget: (target, prop: string) => {\n\t\t\t\t\t\tif (prop in target) {\n\t\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst split = prop.split(\".\");\n\t\t\t\t\t\tconst realProp = split.pop();\n\t\t\t\t\t\tconst realTarget = split.reduce((a, b) => a?.[b], this.global);\n\n\t\t\t\t\t\tif (!realTarget) return;\n\n\t\t\t\t\t\tconst original = Reflect_get(realTarget, realProp);\n\t\t\t\t\t\ttarget[prop] = original;\n\n\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t),\n\t\t\tconstruct(target: string, ...args) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\treturn new original(...args);\n\t\t\t},\n\t\t\tcall(target: string, that: any, ...args) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\treturn original.call(that, ...args);\n\t\t\t},\n\t\t};\n\t\tthis.descriptors = {\n\t\t\tstore: new Proxy(\n\t\t\t\t{},\n\t\t\t\t{\n\t\t\t\t\tget: (target, prop: string) => {\n\t\t\t\t\t\tif (prop in target) {\n\t\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst split = prop.split(\".\");\n\t\t\t\t\t\tconst realProp = split.pop();\n\t\t\t\t\t\tconst realTarget = split.reduce((a, b) => a?.[b], this.global);\n\n\t\t\t\t\t\tif (!realTarget) return;\n\n\t\t\t\t\t\tconst original = client.natives.call(\n\t\t\t\t\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\trealTarget,\n\t\t\t\t\t\t\trealProp\n\t\t\t\t\t\t);\n\t\t\t\t\t\ttarget[prop] = original;\n\n\t\t\t\t\t\treturn target[prop];\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t),\n\t\t\tget(target: string, that: any) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\treturn original.get.call(that);\n\t\t\t},\n\t\t\tset(target: string, that: any, value: any) {\n\t\t\t\tconst original = this.store[target];\n\t\t\t\tif (!original) return null;\n\n\t\t\t\toriginal.set.call(that, value);\n\t\t\t},\n\t\t};\n\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\tconst client = this;\n\t\tthis.meta = {\n\t\t\tget origin() {\n\t\t\t\treturn client.url;\n\t\t\t},\n\t\t\tget base() {\n\t\t\t\tif (iswindow) {\n\t\t\t\t\tconst base = client.natives.call(\n\t\t\t\t\t\t\"Document.prototype.querySelector\",\n\t\t\t\t\t\tclient.global.document,\n\t\t\t\t\t\t\"base\"\n\t\t\t\t\t);\n\t\t\t\t\tif (base) {\n\t\t\t\t\t\tlet url = base.getAttribute(\"href\");\n\t\t\t\t\t\tif (!url) return client.url;\n\t\t\t\t\t\tconst frag = url.indexOf(\"#\");\n\t\t\t\t\t\turl = url.substring(0, frag === -1 ? undefined : frag);\n\t\t\t\t\t\tif (!url) return client.url;\n\n\t\t\t\t\t\treturn new _URL(url, client.url.origin);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn client.url;\n\t\t\t},\n\t\t\t// TODO: very bad assumptions made here, window.parent never throws\n\t\t\tget topFrameName() {\n\t\t\t\tif (!iswindow)\n\t\t\t\t\tthrow new Error(\"topFrameName was called from a worker?\");\n\n\t\t\t\tlet currentWin = client.global;\n\n\t\t\t\ttry {\n\t\t\t\t\tif (currentWin.parent.window == currentWin.window) {\n\t\t\t\t\t\t// we're top level & we don't have a frame name\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// accessing parent was blocked by CORS, we're in a frame but the parent is cross origin\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\t// find the topmost frame that's controlled by scramjet, stopping before the real top frame\n\t\t\t\t\twhile (currentWin.parent.window !== currentWin.window) {\n\t\t\t\t\t\tif (!currentWin.parent.window[SCRAMJETCLIENT]) break;\n\t\t\t\t\t\tcurrentWin = currentWin.parent.window;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// doesn't matter if it throws here just means we found the topmost one\n\t\t\t\t}\n\n\t\t\t\tconst curclient = currentWin[SCRAMJETCLIENT];\n\t\t\t\tconst frame = curclient.descriptors.get(\n\t\t\t\t\t\"window.frameElement\",\n\t\t\t\t\tcurrentWin\n\t\t\t\t);\n\t\t\t\tif (!frame) {\n\t\t\t\t\t// we're inside an iframe, but the top frame is scramjet-controlled and top level, so we can't get a top frame name\n\t\t\t\t\t// or we're cross-origin and frameElement doesn't exist. that's a TODO because this won't work\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (!frame.name) {\n\t\t\t\t\t// the top frame is scramjet-controlled, but it has no name. this is user error\n\t\t\t\t\tdbg.error(\n\t\t\t\t\t\t\"YOU NEED TO USE `new ScramjetFrame()`! DIRECT IFRAMES WILL NOT WORK\"\n\t\t\t\t\t);\n\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn frame.name;\n\t\t\t},\n\t\t\tget parentFrameName() {\n\t\t\t\tif (!iswindow)\n\t\t\t\t\tthrow new Error(\"parentFrameName was called from a worker?\");\n\n\t\t\t\ttry {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (client.global.parent.window == client.global.window) {\n\t\t\t\t\t\t\t// we're top level & we don't have a frame name\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// accessing parent was blocked by CORS, we're in a frame but the parent is cross origin\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst parentWin = client.global.parent.window;\n\t\t\t\t\tif (parentWin[SCRAMJETCLIENT]) {\n\t\t\t\t\t\t// we're inside an iframe, and the parent is scramjet-controlled\n\t\t\t\t\t\tconst parentClient = parentWin[SCRAMJETCLIENT];\n\t\t\t\t\t\tconst frame = parentClient.descriptors.get(\n\t\t\t\t\t\t\t\"window.frameElement\",\n\t\t\t\t\t\t\tparentWin\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (!frame) {\n\t\t\t\t\t\t\t// parent is scramjet controlled and top-level. there is no parent frame name\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!frame.name) {\n\t\t\t\t\t\t\t// the parent frame is scramjet-controlled, but it has no name. this is user error\n\t\t\t\t\t\t\tdbg.error(\n\t\t\t\t\t\t\t\t\"YOU NEED TO USE `new ScramjetFrame()`! DIRECT IFRAMES WILL NOT WORK\"\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn frame.name;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// we're inside an iframe, and the parent is not scramjet-controlled\n\t\t\t\t\t\t// return our own frame name\n\t\t\t\t\t\tconst frame = client.descriptors.get(\n\t\t\t\t\t\t\t\"window.frameElement\",\n\t\t\t\t\t\t\tclient.global\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!frame.name) {\n\t\t\t\t\t\t\t// the parent frame is not scramjet-controlled, so we can't get a parent frame name\n\t\t\t\t\t\t\tdbg.error(\n\t\t\t\t\t\t\t\t\"YOU NEED TO USE `new ScramjetFrame()`! DIRECT IFRAMES WILL NOT WORK\"\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn frame.name;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\t\t\tget referrerPolicy(): string | undefined {\n\t\t\t\tif (client.initHeaders && client.initHeaders.has(\"referrer-policy\")) {\n\t\t\t\t\treturn client.initHeaders.get(\"referrer-policy\");\n\t\t\t\t}\n\t\t\t\tif (!iswindow) return \"\";\n\n\t\t\t\t// TODO: need to nullify the actual meta tag so it still sends unsafe-url\n\t\t\t\tconst meta = [\n\t\t\t\t\t...client.natives.call(\n\t\t\t\t\t\t\"Document.prototype.querySelectorAll\",\n\t\t\t\t\t\tclient.global.document,\n\t\t\t\t\t\t\"meta[name='referrer']\"\n\t\t\t\t\t),\n\t\t\t\t\t...client.natives.call(\n\t\t\t\t\t\t\"Document.prototype.querySelectorAll\",\n\t\t\t\t\t\tclient.global.document,\n\t\t\t\t\t\t\"meta[name='referrer-policy']\"\n\t\t\t\t\t),\n\t\t\t\t\t...client.natives.call(\n\t\t\t\t\t\t\"Document.prototype.querySelectorAll\",\n\t\t\t\t\t\tclient.global.document,\n\t\t\t\t\t\t\"meta[http-equiv='referrer-policy']\"\n\t\t\t\t\t),\n\t\t\t\t];\n\t\t\t\tconst last = meta[meta.length - 1];\n\t\t\t\tif (last) {\n\t\t\t\t\treturn last.getAttribute(\"content\");\n\t\t\t\t}\n\n\t\t\t\treturn \"\";\n\t\t\t},\n\t\t};\n\t\tthis.locationProxy = createLocationProxy(this, global);\n\n\t\tglobal[SCRAMJETCLIENT] = this;\n\t}\n\n\t/** Apply document injection init when a client was already installed (e.g. early contentWindow). */\n\tsyncDocumentInit(init: {\n\t\tinitHeaders: RawHeaders;\n\t\thistory: TrackedHistoryState[];\n\t\tcookies?: string;\n\t}) {\n\t\tthis.initHeaders = ScramjetHeaders.fromRawHeaders(init.initHeaders);\n\t\tthis.history = init.history;\n\t\tif (init.cookies !== undefined) {\n\t\t\tthis.context.cookieJar.load(init.cookies);\n\t\t}\n\t}\n\n\thook() {\n\t\tconst context = import.meta.webpackContext(\".\", {\n\t\t\trecursive: true,\n\t\t});\n\n\t\tconst modules: ScramjetModule[] = [];\n\n\t\tfor (const key of context.keys()) {\n\t\t\tconst module = context(key) as ScramjetModule;\n\t\t\tif (!key.endsWith(\".ts\")) continue;\n\t\t\tif (\n\t\t\t\t(key.startsWith(\"./dom/\") && \"window\" in this.global) ||\n\t\t\t\t(key.startsWith(\"./worker/\") && \"WorkerGlobalScope\" in this.global) ||\n\t\t\t\tkey.startsWith(\"./shared/\")\n\t\t\t) {\n\t\t\t\tmodules.push(module);\n\t\t\t}\n\t\t}\n\n\t\tmodules.sort((a, b) => {\n\t\t\tconst aorder = a.order || 0;\n\t\t\tconst border = b.order || 0;\n\n\t\t\treturn aorder - border;\n\t\t});\n\n\t\tfor (const module of modules) {\n\t\t\tif (!module.enabled || module.enabled(this))\n\t\t\t\tmodule.default(this, this.global);\n\t\t\telse if (module.disabled) module.disabled(this, this.global);\n\t\t}\n\t}\n\n\tget url(): _URL {\n\t\treturn new _URL(this.unrewriteUrl(this.global.location.href));\n\t}\n\n\tset url(url: _URL | string) {\n\t\turl = String(url);\n\n\t\tTap.dispatch(\n\t\t\tthis.hooks.lifecycle.navigate,\n\t\t\t{\n\t\t\t\ttype: \"location\",\n\t\t\t},\n\t\t\t{\n\t\t\t\turl,\n\t\t\t}\n\t\t);\n\n\t\tthis.global.location.href = this.rewriteUrl(url, {\n\t\t\tnavigateType: \"location\",\n\t\t});\n\t}\n\n\t// below are the utilities for proxying and trapping dom APIs\n\t// you don't have to understand this it just makes the rest easier\n\t// i'll document it eventually\n\tProxy<T extends string>(name: T, handler: Proxy<T>): void;\n\tProxy<const T extends readonly string[]>(\n\t\tname: T,\n\t\thandler: Proxy<T[number]>\n\t): void;\n\tProxy(name: string | string[], handler: Proxy<any>): void {\n\t\tif (Array_isArray(name)) {\n\t\t\tfor (const n of name) {\n\t\t\t\tthis.Proxy(n, handler);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst split = name.split(\".\");\n\t\tconst prop = split.pop();\n\t\tconst target = split.reduce((a, b) => a?.[b], this.global);\n\t\tif (!target) return;\n\t\tif (!prop) return;\n\n\t\tif (!(name in this.natives.store)) {\n\t\t\tconst original = Reflect_get(target, prop);\n\t\t\tthis.natives.store[name] = original;\n\t\t}\n\n\t\tthis.RawProxy(target, prop, handler, name);\n\t}\n\tRawProxy(target: any, prop: string, handler: Proxy<any>, debugname?: string) {\n\t\tif (!target) return;\n\t\tif (!prop) return;\n\t\tif (!Reflect_has(target, prop)) return;\n\n\t\tconst value = Reflect_get(target, prop);\n\t\tconst originalDescriptor = Object_getOwnPropertyDescriptor(target, prop);\n\t\tdelete target[prop];\n\n\t\tconst h: ProxyHandler<any> = {};\n\n\t\tlet applyFn: typeof Reflect_apply;\n\t\tlet constructFn: typeof Reflect_construct;\n\t\tif (this.flagEnabled(\"debugTrampolines\")) {\n\t\t\tlet fnName: string;\n\t\t\tif (debugname) {\n\t\t\t\tfnName = debugname;\n\t\t\t} else if (typeof value === \"function\" && value.name) {\n\t\t\t\tfnName = `Function ${value.name} -> ${prop}`;\n\t\t\t} else if (typeof value === \"object\" && value.constructor) {\n\t\t\t\tfnName = `Object ${value.constructor.name} -> ${prop}`;\n\t\t\t} else {\n\t\t\t\tfnName = `${typeof value} -> ${prop}`;\n\t\t\t}\n\t\t\tlet windowName = this.descriptors.get(\"window.name\", this.global);\n\t\t\tif (!windowName) windowName = \"<unnamed window>\";\n\t\t\tlet location = this.url.href;\n\n\t\t\t// sanitize newlines just in case somehow\n\t\t\tlocation = location.replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n\t\t\twindowName = windowName.replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n\t\t\tfnName = fnName.replace(/\\n/g, \"\\\\n\").replace(/\\r/g, \"\\\\r\");\n\t\t\tconst sourceURL = debugname ? `${debugname}.sj` : \"rawproxy.sj\";\n\n\t\t\tconst { construct, apply } = this.natives.call(\n\t\t\t\t\"Function\",\n\t\t\t\tnull,\n\t\t\t\t`\"use strict\";\n\n// SCRAMJET FUNCTION INTERCEPT\n// target: ${fnName}\n// frame: ${windowName}\n// location: ${location}\n\nfunction apply(fn, that, args) {\n\treturn Reflect.apply(fn, that, args);\n}\n\nfunction construct(fn, args, newTarget) {\n\treturn Reflect.construct(fn, args, newTarget);\n}\n\nreturn { apply, construct };\n\n//# sourceURL=${sourceURL}`\n\t\t\t)();\n\n\t\t\tapplyFn = apply;\n\t\t\tconstructFn = construct;\n\t\t} else {\n\t\t\tapplyFn = Reflect_apply;\n\t\t\tconstructFn = Reflect_construct;\n\t\t}\n\n\t\tif (handler.construct) {\n\t\t\th.construct = function (\n\t\t\t\tconstructor: any,\n\t\t\t\targs: any[],\n\t\t\t\tnewTarget: AnyFunction\n\t\t\t) {\n\t\t\t\tlet returnValue: any = undefined;\n\t\t\t\tlet earlyreturn = false;\n\n\t\t\t\tconst ctx: ProxyCtx<any, \"construct\"> = {\n\t\t\t\t\tfn: constructor,\n\t\t\t\t\tthis: null,\n\t\t\t\t\targs,\n\t\t\t\t\tnewTarget: newTarget,\n\t\t\t\t\treturn: (r: any) => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = r;\n\t\t\t\t\t},\n\t\t\t\t\tcall: () => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = constructFn(ctx.fn, ctx.args, ctx.newTarget);\n\n\t\t\t\t\t\treturn returnValue;\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\thandler.construct(ctx);\n\n\t\t\t\tif (earlyreturn) {\n\t\t\t\t\treturn returnValue;\n\t\t\t\t}\n\n\t\t\t\treturn constructFn(ctx.fn, ctx.args, ctx.newTarget);\n\t\t\t};\n\t\t}\n\n\t\tif (handler.apply) {\n\t\t\th.apply = (fn: any, that: any, args: any[]) => {\n\t\t\t\tlet returnValue: any = undefined;\n\t\t\t\tlet earlyreturn = false;\n\n\t\t\t\tconst ctx: ProxyCtx<any, \"apply\"> = {\n\t\t\t\t\tfn,\n\t\t\t\t\tthis: that,\n\t\t\t\t\targs,\n\t\t\t\t\tnewTarget: null,\n\t\t\t\t\treturn: (r: any) => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = r;\n\t\t\t\t\t},\n\t\t\t\t\tcall: () => {\n\t\t\t\t\t\tearlyreturn = true;\n\t\t\t\t\t\treturnValue = applyFn(ctx.fn, ctx.this, ctx.args);\n\n\t\t\t\t\t\treturn returnValue;\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tif (\n\t\t\t\t\t!this.flagEnabled(\"debugTrampolines\") &&\n\t\t\t\t\tthis.flagEnabled(\"allowFailedIntercepts\")\n\t\t\t\t) {\n\t\t\t\t\t// fast path, no error detection\n\t\t\t\t\thandler.apply(ctx);\n\n\t\t\t\t\tif (earlyreturn) {\n\t\t\t\t\t\treturn returnValue;\n\t\t\t\t\t}\n\t\t\t\t\treturn applyFn(ctx.fn, ctx.this, ctx.args);\n\t\t\t\t}\n\n\t\t\t\tconst pst = Error.prepareStackTrace;\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-this-alias\n\t\t\t\tconst client = this;\n\t\t\t\tError.prepareStackTrace = function (err, s) {\n\t\t\t\t\tif (\n\t\t\t\t\t\ts[0].getFileName() &&\n\t\t\t\t\t\t!s[0].getFileName().startsWith(client.context.prefix.href)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn { stack: err.stack };\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\ttry {\n\t\t\t\t\thandler.apply(ctx);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (this.box.instanceof(err, \"Error\")) {\n\t\t\t\t\t\tif (this.box.instanceof(err.stack, \"Object\")) {\n\t\t\t\t\t\t\t//i'm not going to explain this\n\t\t\t\t\t\t\terr.stack = err.stack.stack;\n\t\t\t\t\t\t\t// eslint-disable-next-line scramjet-core/no-globals\n\t\t\t\t\t\t\tconsole.error(\"ERROR FROM SCRAMJET INTERNALS\", err);\n\t\t\t\t\t\t\tif (!this.flagEnabled(\"allowFailedIntercepts\")) {\n\t\t\t\t\t\t\t\tError.prepareStackTrace = pst;\n\t\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tError.prepareStackTrace = pst;\n\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tError.prepareStackTrace = pst;\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tError.prepareStackTrace = pst;\n\n\t\t\t\tif (earlyreturn) {\n\t\t\t\t\treturn returnValue;\n\t\t\t\t}\n\n\t\t\t\treturn applyFn(ctx.fn, ctx.this, ctx.args);\n\t\t\t};\n\t\t}\n\n\t\th.getOwnPropertyDescriptor = getOwnPropertyDescriptorHandler;\n\t\t// Preserve original property descriptor (enumerable, configurable, etc.)\n\t\tObject_defineProperty(target, prop, {\n\t\t\tvalue: new Proxy(value, h),\n\t\t\twritable: originalDescriptor?.writable ?? true,\n\t\t\tenumerable: originalDescriptor?.enumerable ?? false,\n\t\t\tconfigurable: originalDescriptor?.configurable ?? true,\n\t\t});\n\t}\n\tTrap<T extends string>(name: T, handler: Trap<T>): void;\n\tTrap<const T extends readonly string[]>(\n\t\tname: T,\n\t\thandler: Trap<T[number]>\n\t): void;\n\tTrap(name: string | string[], descriptor: Trap<any>): void {\n\t\tif (Array_isArray(name)) {\n\t\t\tfor (const n of name) {\n\t\t\t\tthis.Trap(n, descriptor);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst split = name.split(\".\");\n\t\tconst prop = split.pop();\n\t\tconst target = split.reduce((a, b) => a?.[b], this.global);\n\t\tif (!target) return;\n\t\tif (!prop) return;\n\n\t\tconst original = this.natives.call(\n\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\tnull,\n\t\t\ttarget,\n\t\t\tprop\n\t\t);\n\t\tthis.descriptors.store[name] = original;\n\n\t\tthis.RawTrap(target, prop, descriptor);\n\t}\n\tRawTrap(target: any, prop: string, descriptor: Trap<any>) {\n\t\tif (!target) return;\n\t\tif (!prop) return;\n\t\tif (!Reflect_has(target, prop)) return;\n\n\t\tconst oldDescriptor = this.natives.call(\n\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\tnull,\n\t\t\ttarget,\n\t\t\tprop\n\t\t);\n\n\t\tconst ctx: TrapCtx<any> = {\n\t\t\tthis: null,\n\t\t\tget: function () {\n\t\t\t\treturn oldDescriptor && oldDescriptor.get.call(this.this);\n\t\t\t},\n\t\t\tset: function (v: any) {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-expressions\n\t\t\t\toldDescriptor && oldDescriptor.set.call(this.this, v);\n\t\t\t},\n\t\t};\n\n\t\tdelete target[prop];\n\n\t\tconst desc: PropertyDescriptor = {};\n\n\t\tif (descriptor.get) {\n\t\t\tdesc.get = function () {\n\t\t\t\tctx.this = this;\n\n\t\t\t\treturn descriptor.get(ctx);\n\t\t\t};\n\t\t} else if (oldDescriptor?.get) {\n\t\t\tdesc.get = oldDescriptor.get;\n\t\t}\n\n\t\tif (descriptor.set) {\n\t\t\tdesc.set = function (v: any) {\n\t\t\t\tctx.this = this;\n\n\t\t\t\tdescriptor.set(ctx, v);\n\t\t\t};\n\t\t} else if (oldDescriptor?.set) {\n\t\t\tdesc.set = oldDescriptor.set;\n\t\t}\n\n\t\tif (descriptor.enumerable) desc.enumerable = descriptor.enumerable;\n\t\telse if (oldDescriptor?.enumerable)\n\t\t\tdesc.enumerable = oldDescriptor.enumerable;\n\t\tif (descriptor.configurable) desc.configurable = descriptor.configurable;\n\t\telse if (oldDescriptor?.configurable)\n\t\t\tdesc.configurable = oldDescriptor.configurable;\n\n\t\tObject_defineProperty(target, prop, desc);\n\t}\n\n\trewriteUrl(url: string | URL, options?: RewriteUrlOptions): string {\n\t\treturn rewriteUrl(url, this.context, this.meta, options);\n\t}\n\n\tunrewriteUrl(url: string | URL): string {\n\t\treturn unrewriteUrl(url, this.context);\n\t}\n\n\tflagEnabled(flag: keyof ScramjetConfig[\"flags\"]): boolean {\n\t\treturn flagEnabled(flag, this.context, this.url);\n\t}\n\n\tget config(): ScramjetConfig {\n\t\treturn this.context.config;\n\t}\n}\n","import { ScramjetClient } from \"@client/index\";\nimport {\n\tNumber,\n\tObject_keys,\n\tReflect_apply,\n\tReflect_get,\n\tReflect_has,\n\tReflect_ownKeys,\n} from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Trap(\"Element.prototype.attributes\", {\n\t\tget(ctx) {\n\t\t\tconst map = ctx.get() as NamedNodeMap;\n\t\t\tconst proxy = new Proxy(map, {\n\t\t\t\tget(target, prop, _receiver) {\n\t\t\t\t\tconst value = Reflect_get(target, prop);\n\n\t\t\t\t\tif (prop === \"length\") {\n\t\t\t\t\t\treturn Object_keys(proxy).length;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (prop === \"getNamedItem\") {\n\t\t\t\t\t\treturn (name: string) => proxy[name];\n\t\t\t\t\t}\n\t\t\t\t\tif (prop === \"getNamedItemNS\") {\n\t\t\t\t\t\treturn (namespace: string, name: string) =>\n\t\t\t\t\t\t\tproxy[`${namespace}:${name}`];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (prop in NamedNodeMap.prototype && typeof value === \"function\") {\n\t\t\t\t\t\treturn new Proxy(value, {\n\t\t\t\t\t\t\tapply(target, that, args) {\n\t\t\t\t\t\t\t\tif (that === proxy) {\n\t\t\t\t\t\t\t\t\treturn Reflect_apply(target, map, args);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn Reflect_apply(target, that, args);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t(typeof prop === \"string\" || typeof prop === \"number\") &&\n\t\t\t\t\t\t!isNaN(Number(prop))\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst position = Object_keys(proxy)[prop];\n\n\t\t\t\t\t\treturn map[position];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!this.has(target, prop)) return undefined;\n\n\t\t\t\t\treturn value;\n\t\t\t\t},\n\t\t\t\townKeys(target) {\n\t\t\t\t\tconst keys = Reflect_ownKeys(target);\n\n\t\t\t\t\treturn keys.filter((key) => this.has(target, key));\n\t\t\t\t},\n\t\t\t\thas(target, prop) {\n\t\t\t\t\tif (typeof prop === \"symbol\") return Reflect_has(target, prop);\n\t\t\t\t\tif (prop.startsWith(\"scramjet-attr-\")) return false;\n\t\t\t\t\tif (map[prop]?.name?.startsWith(\"scramjet-attr-\")) return false;\n\n\t\t\t\t\treturn Reflect_has(target, prop);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn proxy;\n\t\t},\n\t});\n\n\tclient.Trap([\"Attr.prototype.value\", \"Attr.prototype.nodeValue\"], {\n\t\tget(ctx) {\n\t\t\tif (ctx.this?.ownerElement) {\n\t\t\t\treturn ctx.this.ownerElement.getAttribute(ctx.this.name);\n\t\t\t}\n\n\t\t\treturn ctx.get();\n\t\t},\n\t\tset(ctx, value) {\n\t\t\tif (ctx.this?.ownerElement) {\n\t\t\t\treturn ctx.this.ownerElement.setAttribute(ctx.this.name, value);\n\t\t\t}\n\n\t\t\treturn ctx.set(value);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { String } from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"Navigator.prototype.sendBeacon\", {\n\t\tapply(ctx) {\n\t\t\tconst url = String(ctx.args[0]);\n\t\t\tctx.args[0] = client.rewriteUrl(url);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tclient.Trap(\"Document.prototype.cookie\", {\n\t\tget() {\n\t\t\treturn client.context.cookieJar.getCookies(client.url, true);\n\t\t},\n\t\tset(ctx, value: string) {\n\t\t\tclient.context.cookieJar.setCookies(value, client.url);\n\t\t\tclient.init.sendSetCookie([\n\t\t\t\t{\n\t\t\t\t\turl: client.url,\n\t\t\t\t\tcookie: value,\n\t\t\t\t},\n\t\t\t]);\n\t\t},\n\t});\n\n\t// @ts-ignore\n\tdelete self.cookieStore;\n}\n","import { rewriteCss, unrewriteCss } from \"@rewriters/css\";\nimport { ScramjetClient } from \"@client/index\";\nimport { Reflect_apply, Reflect_get, Reflect_set } from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"CSSStyleDeclaration.prototype.setProperty\", {\n\t\tapply(ctx) {\n\t\t\tif (!ctx.args[1]) return;\n\t\t\tctx.args[1] = rewriteCss(ctx.args[1], client.context, client.meta);\n\t\t},\n\t});\n\n\tclient.Proxy(\"CSSStyleDeclaration.prototype.getPropertyValue\", {\n\t\tapply(ctx) {\n\t\t\tconst v = ctx.call();\n\t\t\tif (!v) return v;\n\t\t\tctx.return(unrewriteCss(v, client.context));\n\t\t},\n\t});\n\n\tclient.Trap(\"CSSStyleDeclaration.prototype.cssText\", {\n\t\tset(ctx, value: string) {\n\t\t\tctx.set(rewriteCss(value, client.context, client.meta));\n\t\t},\n\t\tget(ctx) {\n\t\t\treturn unrewriteCss(ctx.get(), client.context);\n\t\t},\n\t});\n\n\tclient.Proxy(\"CSSStyleSheet.prototype.insertRule\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = rewriteCss(ctx.args[0], client.context, client.meta);\n\t\t},\n\t});\n\n\tclient.Proxy(\"CSSStyleSheet.prototype.replace\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = rewriteCss(ctx.args[0], client.context, client.meta);\n\t\t},\n\t});\n\n\tclient.Proxy(\"CSSStyleSheet.prototype.replaceSync\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = rewriteCss(ctx.args[0], client.context, client.meta);\n\t\t},\n\t});\n\n\tclient.Trap(\"CSSRule.prototype.cssText\", {\n\t\tset(ctx, value: string) {\n\t\t\tctx.set(rewriteCss(value, client.context, client.meta));\n\t\t},\n\t\tget(ctx) {\n\t\t\treturn unrewriteCss(ctx.get(), client.context);\n\t\t},\n\t});\n\n\tclient.Proxy(\"CSSStyleValue.parse\", {\n\t\tapply(ctx) {\n\t\t\tif (!ctx.args[1]) return;\n\t\t\tctx.args[1] = rewriteCss(ctx.args[1], client.context, client.meta);\n\t\t},\n\t});\n\n\tclient.Trap(\"HTMLElement.prototype.style\", {\n\t\tget(ctx) {\n\t\t\t// unfortunate and dumb hack. we have to trap every property of this\n\t\t\t// since the prototype chain is fucked\n\n\t\t\tconst style = ctx.get() as CSSStyleDeclaration;\n\n\t\t\treturn new Proxy(style, {\n\t\t\t\tget(target, prop) {\n\t\t\t\t\tconst value = Reflect_get(target, prop);\n\n\t\t\t\t\tif (typeof value === \"function\") {\n\t\t\t\t\t\treturn new Proxy(value, {\n\t\t\t\t\t\t\tapply(target, that, args) {\n\t\t\t\t\t\t\t\treturn Reflect_apply(target, style, args);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (prop in CSSStyleDeclaration.prototype) return value;\n\t\t\t\t\tif (!value) return value;\n\n\t\t\t\t\treturn unrewriteCss(value, client.context);\n\t\t\t\t},\n\t\t\t\tset(target, prop, value) {\n\t\t\t\t\tif (prop == \"cssText\" || value == \"\" || typeof value !== \"string\") {\n\t\t\t\t\t\treturn Reflect_set(target, prop, value);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Reflect_set(\n\t\t\t\t\t\ttarget,\n\t\t\t\t\t\tprop,\n\t\t\t\t\t\trewriteCss(value, client.context, client.meta)\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tset(ctx, value: string) {\n\t\t\t// this will actually run the trap for cssText. don't rewrite it here\n\t\t\tctx.set(value);\n\t\t},\n\t});\n}\n","import { IncrementalHtmlRewriter, rewriteHtml } from \"@rewriters/html\";\nimport { ScramjetClient } from \"@client/index\";\nimport { String, _URL } from \"@/shared/snapshot\";\nimport { createReferrerString } from \"@/fetch/util\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tconst tostring = String;\n\n\tfunction resetDocumentWriter(document: Document) {\n\t\tclient.box.writeRewriters.delete(document);\n\t}\n\n\tfunction getDocumentWriter(document: Document) {\n\t\tlet writer = client.box.writeRewriters.get(document);\n\t\tif (!writer) {\n\t\t\twriter = new IncrementalHtmlRewriter(client.context, client.meta, {\n\t\t\t\tloadScripts: false,\n\t\t\t\tinline: true,\n\t\t\t\tsource: client.url.href,\n\t\t\t\tapisource: \"Document.prototype.write\",\n\t\t\t});\n\t\t\tclient.box.writeRewriters.set(document, writer);\n\t\t}\n\n\t\treturn writer;\n\t}\n\n\tclient.Proxy(\n\t\t[\"Document.prototype.querySelector\", \"Document.prototype.querySelectorAll\"],\n\t\t{\n\t\t\tapply(ctx) {\n\t\t\t\tctx.args[0] = String(ctx.args[0]).replace(\n\t\t\t\t\t/((?:^|\\s)\\b\\w+\\[(?:src|href|data-href))[\\^]?(=['\"]?(?:https?[:])?\\/\\/)/,\n\t\t\t\t\t\"$1*$2\"\n\t\t\t\t);\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Proxy(\"Document.prototype.write\", {\n\t\tapply(ctx) {\n\t\t\tconst writer = getDocumentWriter(ctx.this);\n\t\t\tctx.return(\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Document.prototype.write\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\twriter.write(ctx.args.join(\"\"))\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Document.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tresetDocumentWriter(ctx.this);\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.referrer\", {\n\t\tget() {\n\t\t\tif (!client.history) return \"\";\n\t\t\tif (client.history.length < 2) return \"\";\n\t\t\tconst lastState = client.history[client.history.length - 2];\n\t\t\tconst referrerURL = new _URL(lastState.url);\n\t\t\treturn createReferrerString(\n\t\t\t\treferrerURL,\n\t\t\t\tclient.url,\n\t\t\t\tlastState.refererPolicy\n\t\t\t);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Document.prototype.writeln\", {\n\t\tapply(ctx) {\n\t\t\tconst writer = getDocumentWriter(ctx.this);\n\t\t\tctx.return(\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Document.prototype.write\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\twriter.write(ctx.args.join(\"\") + \"\\n\")\n\t\t\t\t)\n\t\t\t);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Document.prototype.close\", {\n\t\tapply(ctx) {\n\t\t\tconst writer = client.box.writeRewriters.get(ctx.this);\n\t\t\tif (!writer) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst remaining = writer.end();\n\t\t\t\tif (remaining) {\n\t\t\t\t\tclient.natives.call(\"Document.prototype.write\", ctx.this, remaining);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tresetDocumentWriter(ctx.this);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Document.prototype.parseHTMLUnsafe\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = rewriteHtml(ctx.args[0], client.context, client.meta, {\n\t\t\t\tloadScripts: false,\n\t\t\t\tinline: true,\n\t\t\t\tsource: client.url.href,\n\t\t\t\tapisource: \"Document.prototype.parseHTMLUnsafe\",\n\t\t\t});\n\t\t},\n\t});\n}\n","import { htmlRules } from \"@/shared/htmlRules\";\nimport {\n\tString,\n\tTextEncoder_encode,\n\tObject_keys,\n\tObject_defineProperty,\n\tatob,\n} from \"@/shared/snapshot\";\nimport { bytesToBase64 } from \"@/shared/util\";\nimport { rewriteCss, unrewriteCss } from \"@rewriters/css\";\nimport { rewriteHtml, unrewriteHtml } from \"@rewriters/html\";\nimport { rewriteJs } from \"@rewriters/js\";\nimport { unrewriteUrl } from \"@rewriters/url\";\nimport { SCRAMJETCLIENT } from \"@/symbols\";\nimport { ScramjetClient } from \"@client/index\";\nimport { isHtmlMimeType } from \"@/shared/mime\";\nimport { ForeignContext } from \"@/shared/rewriters/html\";\n\nfunction bytesToBase64(bytes: Uint8Array) {\n\tconst binString = Array_from(bytes, (byte) =>\n\t\tString.fromCodePoint(byte)\n\t).join(\"\");\n\n\treturn btoa(binString);\n}\n\nexport function foreignContextForElement(\n\tclient: ScramjetClient,\n\telement: Element\n): ForeignContext {\n\tif (client.box.instanceof(element, \"SVGElement\")) return \"svg\";\n\tif (client.box.instanceof(element, \"MathMLElement\")) return \"math\";\n\treturn \"html\";\n}\n\n// NOTE: NOT INCLUSIVE OF THE CURRENT ELEMENT\nexport function insideForeignContext(\n\tclient: ScramjetClient,\n\telement: Element | null\n): ForeignContext {\n\tlet current: Element | null = element.parentElement;\n\n\twhile (current) {\n\t\tconst context = foreignContextForElement(client, current);\n\t\tif (context !== \"html\") return context;\n\t\t// EXPLICITLY an html context, don't go up further\n\t\tif (client.box.instanceof(current, \"SVGForeignObjectElement\"))\n\t\t\treturn \"html\";\n\t\tcurrent = current.parentElement;\n\t}\n\n\treturn \"html\";\n}\n\nexport default function (client: ScramjetClient, self: typeof window) {\n\tconst attrObject = {\n\t\tnonce: [self.HTMLElement],\n\t\tintegrity: [self.HTMLScriptElement, self.HTMLLinkElement],\n\t\tcsp: [self.HTMLIFrameElement],\n\t\tcredentialless: [self.HTMLIFrameElement],\n\t\tsrc: [\n\t\t\tself.HTMLImageElement,\n\t\t\tself.HTMLMediaElement,\n\t\t\tself.HTMLIFrameElement,\n\t\t\tself.HTMLFrameElement,\n\t\t\tself.HTMLEmbedElement,\n\t\t\tself.HTMLScriptElement,\n\t\t\tself.HTMLSourceElement,\n\t\t],\n\t\thref: [self.HTMLAnchorElement, self.HTMLLinkElement],\n\t\tdata: [self.HTMLObjectElement],\n\t\taction: [self.HTMLFormElement],\n\t\tformaction: [self.HTMLButtonElement, self.HTMLInputElement],\n\t\tsrcdoc: [self.HTMLIFrameElement],\n\t\tposter: [self.HTMLVideoElement],\n\t\timagesrcset: [self.HTMLLinkElement],\n\t};\n\n\tconst urlinterfaces = [\n\t\tself.HTMLAnchorElement.prototype,\n\t\tself.HTMLAreaElement.prototype,\n\t];\n\tconst originalhrefs = [\n\t\tclient.natives.call(\n\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\tnull,\n\t\t\tself.HTMLAnchorElement.prototype,\n\t\t\t\"href\"\n\t\t),\n\t\tclient.natives.call(\n\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\tnull,\n\t\t\tself.HTMLAreaElement.prototype,\n\t\t\t\"href\"\n\t\t),\n\t];\n\n\tconst attrs = Object_keys(attrObject);\n\n\tfor (const attr of attrs) {\n\t\tfor (const element of attrObject[attr]) {\n\t\t\tconst descriptor = client.natives.call(\n\t\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\t\tnull,\n\t\t\t\telement.prototype,\n\t\t\t\tattr\n\t\t\t);\n\t\t\tObject_defineProperty(element.prototype, attr, {\n\t\t\t\tget() {\n\t\t\t\t\tif ([\"src\", \"data\", \"href\", \"action\", \"formaction\"].includes(attr)) {\n\t\t\t\t\t\treturn unrewriteUrl(descriptor.get.call(this), client.context);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn descriptor.get.call(this);\n\t\t\t\t},\n\n\t\t\t\tset(value) {\n\t\t\t\t\t// if (\n\t\t\t\t\t// \tthis.tagName === \"IFRAME\" &&\n\t\t\t\t\t// \tattr === \"src\" &&\n\t\t\t\t\t// \tvalue === \"about:blank\"\n\t\t\t\t\t// ) {\n\t\t\t\t\t// \tthis.setAttribute(\"srcdoc\", \"\");\n\t\t\t\t\t// \treturn;\n\t\t\t\t\t// }\n\t\t\t\t\treturn this.setAttribute(attr, value);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\t// note that href is not here\n\tconst urlprops = [\n\t\t\"protocol\",\n\t\t\"hash\",\n\t\t\"host\",\n\t\t\"hostname\",\n\t\t\"origin\",\n\t\t\"pathname\",\n\t\t\"port\",\n\t\t\"search\",\n\t];\n\tfor (const prop of urlprops) {\n\t\tfor (const i in urlinterfaces) {\n\t\t\tconst target = urlinterfaces[i];\n\t\t\tconst desc = originalhrefs[i];\n\t\t\tclient.RawTrap(target, prop, {\n\t\t\t\tget(ctx) {\n\t\t\t\t\tconst href = desc.get.call(ctx.this);\n\t\t\t\t\tif (!href) return href;\n\n\t\t\t\t\tconst url = new URL(unrewriteUrl(href, client.context));\n\n\t\t\t\t\treturn url[prop];\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\tclient.Trap(\"Node.prototype.baseURI\", {\n\t\tget(ctx) {\n\t\t\tconst node = ctx.this as Node;\n\t\t\tconst doc = client.box.instanceof(node, \"Document\")\n\t\t\t\t? (node as Document)\n\t\t\t\t: node.ownerDocument;\n\t\t\tconst base = doc?.querySelector(\"base[href]\") as HTMLBaseElement | null;\n\n\t\t\tif (base) {\n\t\t\t\tconst href = base.getAttribute(\"href\") || base.href;\n\t\t\t\tif (href) return new URL(href, client.url.href).href;\n\t\t\t}\n\n\t\t\treturn client.url.href;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getAttribute\", {\n\t\tapply(ctx) {\n\t\t\tconst [name] = ctx.args;\n\n\t\t\tif (name.startsWith(\"scramjet-attr\")) {\n\t\t\t\treturn ctx.return(null);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.hasAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t`scramjet-attr-${name}`\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tconst attrib = ctx.fn.call(ctx.this, `scramjet-attr-${name}`);\n\t\t\t\tif (attrib === null) return ctx.return(\"\");\n\n\t\t\t\treturn ctx.return(attrib);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getAttributeNames\", {\n\t\tapply(ctx) {\n\t\t\tconst attrNames = ctx.call() as string[];\n\t\t\tconst cleaned = attrNames.filter(\n\t\t\t\t(attr) => !attr.startsWith(\"scramjet-attr\")\n\t\t\t);\n\n\t\t\tctx.return(cleaned);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getAttributeNode\", {\n\t\tapply(ctx) {\n\t\t\tif (String(ctx.args[0]).startsWith(\"scramjet-attr\"))\n\t\t\t\treturn ctx.return(null);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.hasAttribute\", {\n\t\tapply(ctx) {\n\t\t\tif (String(ctx.args[0]).startsWith(\"scramjet-attr\"))\n\t\t\t\treturn ctx.return(false);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.setAttribute\", {\n\t\tapply(ctx) {\n\t\t\tconst [name, value] = ctx.args;\n\t\t\tconst tagName = ctx.this.tagName.toLowerCase();\n\n\t\t\tconst ruleList = htmlRules.find((rule) => {\n\t\t\t\tconst r = rule[name.toLowerCase()];\n\t\t\t\tif (!r) return false;\n\t\t\t\tif (r === \"*\") return true;\n\t\t\t\tif (typeof r === \"function\") return false; // this can't happen but ts\n\n\t\t\t\treturn r.includes(tagName);\n\t\t\t});\n\n\t\t\tif (ruleList) {\n\t\t\t\tconst ret = ruleList.fn(value, client.context, client.meta);\n\t\t\t\tif (ret == null) {\n\t\t\t\t\tclient.natives.call(\n\t\t\t\t\t\t\"Element.prototype.removeAttribute\",\n\t\t\t\t\t\tctx.this,\n\t\t\t\t\t\tname\n\t\t\t\t\t);\n\t\t\t\t\tctx.return(undefined);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tctx.args[1] = ret;\n\t\t\t\tctx.fn.call(ctx.this, `scramjet-attr-${ctx.args[0]}`, value);\n\t\t\t}\n\t\t},\n\t});\n\n\t// i actually need to do something with this\n\tclient.Proxy(\"Element.prototype.setAttributeNode\", {\n\t\tapply(_ctx) {},\n\t});\n\n\tclient.Proxy(\"Element.prototype.setAttributeNS\", {\n\t\tapply(ctx) {\n\t\t\tconst [_namespace, name, value] = ctx.args;\n\n\t\t\tconst ruleList = htmlRules.find((rule) => {\n\t\t\t\tconst r = rule[name.toLowerCase()];\n\t\t\t\tif (!r) return false;\n\t\t\t\tif (r === \"*\") return true;\n\t\t\t\tif (typeof r === \"function\") return false; // this can't happen but ts\n\n\t\t\t\treturn r.includes(ctx.this.tagName.toLowerCase());\n\t\t\t});\n\n\t\t\tif (ruleList) {\n\t\t\t\tctx.args[2] = ruleList.fn(value, client.context, client.meta);\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.setAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t`scramjet-attr-${ctx.args[1]}`,\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t});\n\n\t// this is separate from the regular href handlers because it returns an SVGAnimatedString\n\tclient.Trap(\"SVGAnimatedString.prototype.baseVal\", {\n\t\tget(ctx) {\n\t\t\tconst href = ctx.get() as string;\n\t\t\tif (!href) return href;\n\n\t\t\treturn unrewriteUrl(href, client.context);\n\t\t},\n\t\tset(ctx, val: string) {\n\t\t\tctx.set(client.rewriteUrl(val));\n\t\t},\n\t});\n\tclient.Trap(\"SVGAnimatedString.prototype.animVal\", {\n\t\tget(ctx) {\n\t\t\tconst href = ctx.get() as string;\n\t\t\tif (!href) return href;\n\n\t\t\treturn unrewriteUrl(href, client.context);\n\t\t},\n\t\t// it has no setter\n\t});\n\n\tclient.Proxy(\"Element.prototype.removeAttribute\", {\n\t\tapply(ctx) {\n\t\t\tif (String(ctx.args[0]).startsWith(\"scramjet-attr\"))\n\t\t\t\treturn ctx.return(undefined);\n\t\t\tif (\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.hasAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\tctx.args[0]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tctx.fn.call(ctx.this, `scramjet-attr-${ctx.args[0]}`);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.toggleAttribute\", {\n\t\tapply(ctx) {\n\t\t\tif (String(ctx.args[0]).startsWith(\"scramjet-attr\"))\n\t\t\t\treturn ctx.return(false);\n\t\t\tif (\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.hasAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\tctx.args[0]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tctx.fn.call(ctx.this, `scramjet-attr-${ctx.args[0]}`);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Trap(\"Element.prototype.innerHTML\", {\n\t\tset(ctx, value: string) {\n\t\t\tlet newval;\n\t\t\tif (\n\t\t\t\tclient.box.instanceof(ctx.this, \"HTMLScriptElement\") &&\n\t\t\t\t/(application|text)\\/javascript|module|undefined/.test(ctx.this.type)\n\t\t\t) {\n\t\t\t\tnewval = rewriteJs(\n\t\t\t\t\tvalue,\n\t\t\t\t\t\"(anonymous script element)\",\n\t\t\t\t\tclient.context,\n\t\t\t\t\tclient.meta\n\t\t\t\t);\n\t\t\t\tclient.natives.call(\n\t\t\t\t\t\"Element.prototype.setAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t\"scramjet-attr-script-source-src\",\n\t\t\t\t\tbytesToBase64(TextEncoder_encode(newval))\n\t\t\t\t);\n\t\t\t} else if (client.box.instanceof(ctx.this, \"HTMLStyleElement\")) {\n\t\t\t\tnewval = rewriteCss(value, client.context, client.meta);\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tnewval = rewriteHtml(value, client.context, client.meta, {\n\t\t\t\t\t\tloadScripts: false,\n\t\t\t\t\t\tinline: true,\n\t\t\t\t\t\tsource: client.url.href,\n\t\t\t\t\t\tapisource: \"set Element.prototype.innerHTML\",\n\t\t\t\t\t\tforeignContext: foreignContextForElement(client, ctx.this),\n\t\t\t\t\t});\n\t\t\t\t} catch {\n\t\t\t\t\tnewval = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tctx.set(newval);\n\t\t},\n\t\tget(ctx) {\n\t\t\tif (client.box.instanceof(ctx.this, \"HTMLScriptElement\")) {\n\t\t\t\tconst scriptSource = client.natives.call(\n\t\t\t\t\t\"Element.prototype.getAttribute\",\n\t\t\t\t\tctx.this,\n\t\t\t\t\t\"scramjet-attr-script-source-src\"\n\t\t\t\t);\n\n\t\t\t\tif (scriptSource) {\n\t\t\t\t\treturn atob(scriptSource);\n\t\t\t\t}\n\n\t\t\t\treturn ctx.get();\n\t\t\t}\n\t\t\tif (client.box.instanceof(ctx.this, \"HTMLStyleElement\")) {\n\t\t\t\treturn ctx.get();\n\t\t\t}\n\n\t\t\treturn unrewriteHtml(\n\t\t\t\tctx.get(),\n\t\t\t\tforeignContextForElement(client, ctx.this)\n\t\t\t);\n\t\t},\n\t});\n\n\tconst rewriteTextForElement = (element: Element, value: string) => {\n\t\tif (\n\t\t\tclient.box.instanceof(element, \"HTMLScriptElement\") &&\n\t\t\t/(application|text)\\/javascript|module|undefined/.test(element.type)\n\t\t) {\n\t\t\tconst newval: string = rewriteJs(\n\t\t\t\tvalue,\n\t\t\t\t\"(anonymous script element)\",\n\t\t\t\tclient.context,\n\t\t\t\tclient.meta\n\t\t\t) as string;\n\t\t\tclient.natives.call(\n\t\t\t\t\"Element.prototype.setAttribute\",\n\t\t\t\telement,\n\t\t\t\t\"scramjet-attr-script-source-src\",\n\t\t\t\tbytesToBase64(TextEncoder_encode(newval))\n\t\t\t);\n\n\t\t\treturn newval;\n\t\t} else if (client.box.instanceof(element, \"HTMLStyleElement\")) {\n\t\t\treturn rewriteCss(value, client.context, client.meta);\n\t\t} else {\n\t\t\treturn value;\n\t\t}\n\t};\n\tconst getTextForElement = (element: Element, text: string) => {\n\t\tif (client.box.instanceof(element, \"HTMLScriptElement\")) {\n\t\t\tconst scriptSource = client.natives.call(\n\t\t\t\t\"Element.prototype.getAttribute\",\n\t\t\t\telement,\n\t\t\t\t\"scramjet-attr-script-source-src\"\n\t\t\t);\n\t\t}\n\t\tif (client.box.instanceof(element, \"HTMLStyleElement\")) {\n\t\t\treturn unrewriteCss(text, client.context);\n\t\t}\n\t\treturn text;\n\t};\n\n\tclient.Trap(\"Node.prototype.textContent\", {\n\t\tset(ctx, value: string) {\n\t\t\treturn ctx.set(rewriteTextForElement(ctx.this, value));\n\t\t},\n\t\tget(ctx) {\n\t\t\treturn getTextForElement(ctx.this, ctx.get());\n\t\t},\n\t});\n\tclient.Trap(\"HTMLElement.prototype.innerText\", {\n\t\tset(ctx, value: string) {\n\t\t\treturn ctx.set(rewriteTextForElement(ctx.this, value));\n\t\t},\n\t\tget(ctx) {\n\t\t\treturn getTextForElement(ctx.this, ctx.get());\n\t\t},\n\t});\n\n\tclient.Trap(\"Element.prototype.outerHTML\", {\n\t\tset(ctx, value: string) {\n\t\t\tctx.set(\n\t\t\t\trewriteHtml(value, client.context, client.meta, {\n\t\t\t\t\tloadScripts: false,\n\t\t\t\t\tinline: true,\n\t\t\t\t\tsource: client.url.href,\n\t\t\t\t\tapisource: \"set Element.prototype.outerHTML\",\n\t\t\t\t\tforeignContext: insideForeignContext(client, ctx.this),\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\t\tget(ctx) {\n\t\t\treturn unrewriteHtml(ctx.get(), insideForeignContext(client, ctx.this));\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.setHTMLUnsafe\", {\n\t\tapply(ctx) {\n\t\t\ttry {\n\t\t\t\tctx.args[0] = rewriteHtml(ctx.args[0], client.context, client.meta, {\n\t\t\t\t\tloadScripts: false,\n\t\t\t\t\tinline: true,\n\t\t\t\t\tsource: client.url.href,\n\t\t\t\t\tapisource: \"set Element.prototype.setHTMLUnsafe\",\n\t\t\t\t\tforeignContext: foreignContextForElement(client, ctx.this),\n\t\t\t\t});\n\t\t\t} catch {}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.getHTML\", {\n\t\tapply(ctx) {\n\t\t\tctx.return(unrewriteHtml(ctx.call()));\n\t\t},\n\t});\n\n\tclient.Proxy(\"Element.prototype.insertAdjacentHTML\", {\n\t\tapply(ctx) {\n\t\t\tconst html = String(ctx.args[1]);\n\t\t\tctx.args[1] = rewriteHtml(html, client.context, client.meta, {\n\t\t\t\tloadScripts: false,\n\t\t\t\tinline: true,\n\t\t\t\tsource: client.url.href,\n\t\t\t\tapisource: \"set Element.prototype.insertAdjacentHTML\",\n\t\t\t\tforeignContext: foreignContextForElement(client, ctx.this),\n\t\t\t});\n\t\t},\n\t});\n\n\t// TODO: this needs to be done for all insert methods\n\t// client.Proxy([\"Element.prototype.appendChild\", \"Element.prototype.append\"], {\n\t// \tapply(ctx) {\n\t// \t\tif (ctx.this instanceof self.HTMLStyleElement) {\n\t// \t\t\tfor (const node of ctx.args) {\n\t// \t\t\t\tif (node instanceof self.Text) {\n\t// \t\t\t\t\tnode.data = rewriteCss(\n\t// \t\t\t\t\t\tctx.args[0].data,\n\t// \t\t\t\t\t\tclient.context,\n\t// \t\t\t\t\t\tclient.meta\n\t// \t\t\t\t\t);\n\t// \t\t\t\t}\n\t// \t\t\t}\n\t// \t\t} else if (ctx.this instanceof self.HTMLScriptElement) {\n\t// \t\t\tfor (const node of ctx.args) {\n\t// \t\t\t\tif (node instanceof self.Text) {\n\t// \t\t\t\t\tconst newval: string = rewriteJs(\n\t// \t\t\t\t\t\tnode.data,\n\t// \t\t\t\t\t\t\"(anonymous script element)\",\n\t// \t\t\t\t\t\tclient.context,\n\t// \t\t\t\t\t\tclient.meta\n\t// \t\t\t\t\t) as string;\n\t// \t\t\t\t\tclient.natives.call(\n\t// \t\t\t\t\t\t\"Element.prototype.setAttribute\",\n\t// \t\t\t\t\t\tctx.this,\n\t// \t\t\t\t\t\t\"scramjet-attr-script-source-src\",\n\t// \t\t\t\t\t\tbytesToBase64(encoder.encode(newval))\n\t// \t\t\t\t\t);\n\t// \t\t\t\t\tnode.data = newval;\n\t// \t\t\t\t}\n\t// \t\t\t}\n\t// \t\t}\n\t// \t},\n\t// });\n\n\tclient.Proxy(\"Audio\", {\n\t\tconstruct(ctx) {\n\t\t\tif (ctx.args[0]) ctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t},\n\t});\n\tclient.Proxy(\"Text.prototype.appendData\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.this.parentElement?.tagName === \"STYLE\") {\n\t\t\t\tctx.args[0] = rewriteCss(ctx.args[0], client.context, client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Text.prototype.insertData\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.this.parentElement?.tagName === \"STYLE\") {\n\t\t\t\tctx.args[1] = rewriteCss(ctx.args[1], client.context, client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"Text.prototype.replaceData\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.this.parentElement?.tagName === \"STYLE\") {\n\t\t\t\tctx.args[2] = rewriteCss(ctx.args[2], client.context, client.meta);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Trap(\"Text.prototype.wholeText\", {\n\t\tget(ctx) {\n\t\t\tif (ctx.this.parentElement?.tagName === \"STYLE\") {\n\t\t\t\treturn unrewriteCss(ctx.get() as string, client.context);\n\t\t\t}\n\n\t\t\treturn ctx.get();\n\t\t},\n\t\tset(ctx, v) {\n\t\t\tif (ctx.this.parentElement?.tagName === \"STYLE\") {\n\t\t\t\treturn ctx.set(rewriteCss(v as string, client.context, client.meta));\n\t\t\t}\n\n\t\t\treturn ctx.set(v);\n\t\t},\n\t});\n\n\tclient.Trap(\n\t\t[\n\t\t\t\"HTMLIFrameElement.prototype.contentWindow\",\n\t\t\t\"HTMLFrameElement.prototype.contentWindow\",\n\t\t\t\"HTMLObjectElement.prototype.contentWindow\",\n\t\t\t\"HTMLEmbedElement.prototype.contentWindow\",\n\t\t],\n\t\t{\n\t\t\tget(ctx) {\n\t\t\t\tif (client.meta.base.origin === \"https://accounts.google.com\") {\n\t\t\t\t\t// botguard bullshittery\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst realwin = ctx.get() as Window;\n\t\t\t\tif (!realwin) return realwin;\n\n\t\t\t\ttry {\n\t\t\t\t\tif (!(SCRAMJETCLIENT in realwin)) {\n\t\t\t\t\t\t// hook the iframe before the client can start to steal globals out of it\n\t\t\t\t\t\tclient.init.hookSubcontext(realwin, ctx.this);\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// cross-origin iframe, can't do anything here\n\t\t\t\t\treturn realwin;\n\t\t\t\t}\n\n\t\t\t\treturn realwin;\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Trap(\n\t\t[\n\t\t\t\"HTMLIFrameElement.prototype.contentDocument\",\n\t\t\t\"HTMLFrameElement.prototype.contentDocument\",\n\t\t\t\"HTMLObjectElement.prototype.contentDocument\",\n\t\t\t\"HTMLEmbedElement.prototype.contentDocument\",\n\t\t],\n\t\t{\n\t\t\tget(ctx) {\n\t\t\t\tconst realwin = client.descriptors.get(\n\t\t\t\t\t`${ctx.this.constructor.name}.prototype.contentWindow`,\n\t\t\t\t\tctx.this\n\t\t\t\t);\n\t\t\t\tif (!realwin) return realwin;\n\n\t\t\t\tif (!(SCRAMJETCLIENT in realwin)) {\n\t\t\t\t\tclient.init.hookSubcontext(realwin, ctx.this);\n\t\t\t\t}\n\n\t\t\t\treturn realwin.document;\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Proxy(\n\t\t[\n\t\t\t\"HTMLIFrameElement.prototype.getSVGDocument\",\n\t\t\t\"HTMLObjectElement.prototype.getSVGDocument\",\n\t\t\t\"HTMLEmbedElement.prototype.getSVGDocument\",\n\t\t],\n\t\t{\n\t\t\tapply(ctx) {\n\t\t\t\tconst doc = ctx.call();\n\t\t\t\tif (doc) {\n\t\t\t\t\t// we trap the contentDocument, this is really the scramjet version\n\t\t\t\t\treturn ctx.return(ctx.this.contentDocument);\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n\n\tclient.Proxy(\"DOMParser.prototype.parseFromString\", {\n\t\tapply(ctx) {\n\t\t\tconst html = String(ctx.args[0]);\n\t\t\tconst mime = String(ctx.args[1]);\n\t\t\t// TODO: what do we do if it's xml/svg?\n\t\t\tif (!isHtmlMimeType(mime)) return;\n\t\t\tctx.args[0] = rewriteHtml(html, client.context, client.meta, {\n\t\t\t\tloadScripts: false,\n\t\t\t\tinline: true,\n\t\t\t\tsource: client.url.href,\n\t\t\t\tapisource: \"DOMParser.prototype.parseFromString\",\n\t\t\t});\n\t\t},\n\t});\n}\n","import { rewriteCss } from \"@rewriters/css\";\nimport { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"FontFace\", {\n\t\tconstruct(ctx) {\n\t\t\tif (typeof ctx.args[1] !== \"string\") return;\n\t\t\tctx.args[1] = rewriteCss(ctx.args[1], client.context, client.meta);\n\t\t},\n\t});\n}\n","import { rewriteHtml } from \"@rewriters/html\";\nimport { ScramjetClient } from \"@client/index\";\nimport { ForeignContext } from \"@/shared/rewriters/html\";\n\n// TODO: this function is untested / llm slop\nfunction foreignContextForRange(\n\tclient: ScramjetClient,\n\trange: Range\n): ForeignContext {\n\tconst node = range.startContainer;\n\tconst element = node.nodeType === 1 ? node : node.parentElement;\n\tif (!element) return \"html\";\n\tif (client.box.instanceof(element, \"SVGElement\")) return \"svg\";\n\tif (client.box.instanceof(element, \"MathMLElement\")) return \"math\";\n\treturn \"html\";\n}\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"Range.prototype.createContextualFragment\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = rewriteHtml(ctx.args[0], client.context, client.meta, {\n\t\t\t\tloadScripts: false,\n\t\t\t\tinline: true,\n\t\t\t\tsource: client.url.href,\n\t\t\t\tapisource: \"Range.prototype.createContextualFragment\",\n\t\t\t\tforeignContext: foreignContextForRange(client, ctx.this),\n\t\t\t});\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { Tap } from \"@/Tap\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\n\t\t[\"History.prototype.pushState\", \"History.prototype.replaceState\"],\n\t\t{\n\t\t\tapply(ctx) {\n\t\t\t\tif (ctx.args[2] || ctx.args[2] === \"\")\n\t\t\t\t\tctx.args[2] = client.rewriteUrl(ctx.args[2]);\n\t\t\t\tctx.call();\n\t\t\t\tTap.dispatch(\n\t\t\t\t\tclient.hooks.lifecycle.navigate,\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"history\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\turl: client.url.href,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t},\n\t\t}\n\t);\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { SCRAMJETCLIENT } from \"@/symbols\";\nimport { String } from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"window.open\", {\n\t\tapply(ctx) {\n\t\t\t// undefined opens an about:blank window, pass through\n\t\t\tif (typeof ctx.args[0] !== \"undefined\") {\n\t\t\t\tconst url = String(ctx.args[0]);\n\t\t\t\t// blank also opens an about:blank window\n\t\t\t\tif (url !== \"\") {\n\t\t\t\t\t// note that null or anything else will *not* open an about:blank window\n\t\t\t\t\tctx.args[0] = client.rewriteUrl(url);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof ctx.args[1] !== \"undefined\" && ctx.args[1] !== null) {\n\t\t\t\tlet target = String(ctx.args[1]);\n\n\t\t\t\tif (target === \"_top\" || target === \"_unfencedTop\") {\n\t\t\t\t\ttarget = client.meta.topFrameName;\n\t\t\t\t}\n\t\t\t\tif (target === \"_parent\") {\n\t\t\t\t\ttarget = client.meta.parentFrameName;\n\t\t\t\t}\n\n\t\t\t\tctx.args[1] = target;\n\t\t\t}\n\n\t\t\tconst realwin = ctx.call();\n\n\t\t\tif (!realwin) return ctx.return(realwin);\n\n\t\t\tif (!(SCRAMJETCLIENT in realwin)) {\n\t\t\t\t// i don't believe it's possible for a just-opened window to already have scramjet loaded but just in case\n\t\t\t\tclient.init.hookSubcontext(realwin);\n\t\t\t}\n\n\t\t\treturn realwin;\n\t\t},\n\t});\n\n\tclient.Trap(\"window.frameElement\", {\n\t\tget(ctx) {\n\t\t\tconst f = ctx.get() as HTMLIFrameElement | null;\n\t\t\tif (!f) return f;\n\n\t\t\tconst win = f.ownerDocument.defaultView;\n\t\t\tif (win[SCRAMJETCLIENT]) {\n\t\t\t\t// then this is a subframe in a scramjet context, and it's safe to pass back the real iframe\n\t\t\t\treturn f;\n\t\t\t} else {\n\t\t\t\t// no, the top frame is outside the sandbox\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Trap(\"origin\", {\n\t\tget() {\n\t\t\t// TODO: this isn't right!!\n\t\t\treturn client.url.origin;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.URL\", {\n\t\tget() {\n\t\t\treturn client.url.href;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.documentURI\", {\n\t\tget() {\n\t\t\treturn client.url.href;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n\n\tclient.Trap(\"Document.prototype.domain\", {\n\t\tget() {\n\t\t\treturn client.url.hostname;\n\t\t},\n\t\tset() {\n\t\t\treturn false;\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { String } from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Trap(\"PerformanceEntry.prototype.name\", {\n\t\tget(ctx) {\n\t\t\t// name is going to be a url typically\n\t\t\tconst name = String(ctx.get());\n\n\t\t\tif (name && name.startsWith(client.context.prefix.href)) {\n\t\t\t\treturn client.unrewriteUrl(name);\n\t\t\t}\n\n\t\t\treturn name;\n\t\t},\n\t});\n\n\tconst filterEntries = (entries: PerformanceEntry[]) => {\n\t\treturn entries.filter((entry) => {\n\t\t\tfor (const file of client.config.maskedfiles) {\n\t\t\t\tif (String(entry.name).endsWith(file)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\t};\n\n\tclient.Proxy(\n\t\t[\n\t\t\t\"Performance.prototype.getEntries\",\n\t\t\t\"Performance.prototype.getEntriesByType\",\n\t\t\t\"Performance.prototype.getEntriesByName\",\n\t\t\t\"PerformanceObserverEntryList.prototype.getEntries\",\n\t\t\t\"PerformanceObserverEntryList.prototype.getEntriesByType\",\n\t\t\t\"PerformanceObserverEntryList.prototype.getEntriesByName\",\n\t\t],\n\t\t{\n\t\t\tapply(ctx) {\n\t\t\t\tconst entries = ctx.call() as PerformanceEntry[];\n\n\t\t\t\treturn ctx.return(filterEntries(entries));\n\t\t\t},\n\t\t}\n\t);\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient) {\n\t// protocol handlers will not work out of the box since there's no guarantee the service worker will be set up\n\t// or any other expectations that the user agent might need\n\t// sites can set this up themselves if they want to\n\tclient.Proxy(\"Navigator.prototype.registerProtocolHandler\", {\n\t\tapply(ctx) {\n\t\t\tctx.return();\n\t\t},\n\t});\n\tclient.Proxy(\"Navigator.prototype.unregisterProtocolHandler\", {\n\t\tapply(ctx) {\n\t\t\tctx.return(undefined);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { Object_keys, Reflect_get, Reflect_ownKeys } from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tconst handler: ProxyHandler<Storage> = {\n\t\tget(target, prop) {\n\t\t\tswitch (prop) {\n\t\t\t\tcase \"getItem\":\n\t\t\t\t\treturn (key: string) => {\n\t\t\t\t\t\treturn target.getItem(client.url.host + \"@\" + key);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"setItem\":\n\t\t\t\t\treturn (key: string, value: string) => {\n\t\t\t\t\t\treturn target.setItem(client.url.host + \"@\" + key, value);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"removeItem\":\n\t\t\t\t\treturn (key: string) => {\n\t\t\t\t\t\treturn target.removeItem(client.url.host + \"@\" + key);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"clear\":\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tfor (const key in Object_keys(target)) {\n\t\t\t\t\t\t\tif (key.startsWith(client.url.host)) {\n\t\t\t\t\t\t\t\ttarget.removeItem(key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\tcase \"key\":\n\t\t\t\t\treturn (index: number) => {\n\t\t\t\t\t\tconst keys = Object_keys(target).filter((key) =>\n\t\t\t\t\t\t\tkey.startsWith(client.url.host)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn target.getItem(keys[index]);\n\t\t\t\t\t};\n\n\t\t\t\tcase \"length\":\n\t\t\t\t\treturn Object_keys(target).filter((key) =>\n\t\t\t\t\t\tkey.startsWith(client.url.host)\n\t\t\t\t\t).length;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif (prop in Object.prototype || typeof prop === \"symbol\") {\n\t\t\t\t\t\treturn Reflect_get(target, prop);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn target.getItem(client.url.host + \"@\" + (prop as string));\n\t\t\t}\n\t\t},\n\n\t\tset(target, prop, value) {\n\t\t\ttarget.setItem(client.url.host + \"@\" + (prop as string), value);\n\n\t\t\treturn true;\n\t\t},\n\n\t\thas(target, prop) {\n\t\t\treturn target.getItem(client.url.host + \"@\" + (prop as string)) !== null;\n\t\t},\n\n\t\townKeys(target) {\n\t\t\treturn Reflect_ownKeys(target)\n\t\t\t\t.filter((f) => typeof f === \"string\" && f.startsWith(client.url.host))\n\t\t\t\t.map((f) =>\n\t\t\t\t\ttypeof f === \"string\" ? f.substring(client.url.host.length + 1) : f\n\t\t\t\t);\n\t\t},\n\n\t\tgetOwnPropertyDescriptor(target, property) {\n\t\t\t// TODO: probably not right\n\t\t\tif (\n\t\t\t\ttarget.getItem(client.url.host + \"@\" + (property as string)) === null\n\t\t\t) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tvalue: target.getItem(client.url.host + \"@\" + (property as string)),\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t};\n\t\t},\n\n\t\tdefineProperty(target, property, attributes) {\n\t\t\ttarget.setItem(\n\t\t\t\tclient.url.host + \"@\" + (property as string),\n\t\t\t\tattributes.value\n\t\t\t);\n\n\t\t\treturn true;\n\t\t},\n\t};\n\n\tconst localStorageProxy = new Proxy(self.localStorage, handler);\n\tconst sessionStorageProxy = new Proxy(self.sessionStorage, handler);\n\n\tdelete self.localStorage;\n\tdelete self.sessionStorage;\n\n\tself.localStorage = localStorageProxy;\n\tself.sessionStorage = sessionStorageProxy;\n}\n","// entrypoint for scramjet.client.js\n\nimport { ScramjetContext, ScramjetInterface } from \"@/shared/index\";\nimport { SCRAMJETCLIENT } from \"@/symbols\";\nimport { ScramjetClient } from \"@client/index\";\nimport { ScramjetConfig } from \"@/types\";\n\nexport const iswindow = \"window\" in globalThis && window instanceof Window;\nexport const isworker = \"WorkerGlobalScope\" in globalThis;\nexport const issw = \"ServiceWorkerGlobalScope\" in globalThis;\nexport const isdedicated = \"DedicatedWorkerGlobalScope\" in globalThis;\nexport const isshared = \"SharedWorkerGlobalScope\" in globalThis;\n","import { Object_getOwnPropertyDescriptor } from \"@/shared/snapshot\";\n\nexport function getOwnPropertyDescriptorHandler(target, prop) {\n\tconst realDescriptor = Object_getOwnPropertyDescriptor(target, prop);\n\n\treturn realDescriptor;\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { Tap } from \"@/Tap\";\nimport { iswindow } from \"@client/entry\";\nimport {\n\tReflect_apply,\n\tObject_setPrototypeOf,\n\t_URL,\n\tObject_defineProperty,\n} from \"@/shared/snapshot\";\n\nexport function createLocationProxy(client: ScramjetClient, self: GlobalThis) {\n\tconst Location = iswindow ? self.Location : self.WorkerLocation;\n\t// location cannot be Proxy()d\n\tconst fakeLocation: any = {};\n\tObject_setPrototypeOf(fakeLocation, Location.prototype);\n\tfakeLocation.constructor = Location;\n\n\t// for some reason it's on the object for Location and on the prototype for WorkerLocation??\n\tconst descriptorSource = iswindow ? self.location : Location.prototype;\n\tconst urlprops = [\n\t\t\"protocol\",\n\t\t\"hash\",\n\t\t\"host\",\n\t\t\"hostname\",\n\t\t\"href\",\n\t\t\"origin\",\n\t\t\"pathname\",\n\t\t\"port\",\n\t\t\"search\",\n\t];\n\tfor (const prop of urlprops) {\n\t\tconst native = client.natives.call(\n\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\tnull,\n\t\t\tdescriptorSource,\n\t\t\tprop\n\t\t);\n\t\tif (!native) continue;\n\n\t\tconst desc: Partial<PropertyDescriptor> = {\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t};\n\t\tif (native.get) {\n\t\t\tdesc.get = new Proxy(native.get, {\n\t\t\t\tapply() {\n\t\t\t\t\treturn client.url[prop];\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tif (native.set) {\n\t\t\tdesc.set = new Proxy(native.set, {\n\t\t\t\tapply(target, that, args) {\n\t\t\t\t\tif (prop === \"href\") {\n\t\t\t\t\t\t// special case\n\t\t\t\t\t\tclient.url = args[0];\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (prop === \"hash\") {\n\t\t\t\t\t\tself.location.hash = args[0];\n\t\t\t\t\t\tTap.dispatch(\n\t\t\t\t\t\t\tclient.hooks.lifecycle.navigate,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"hashchange\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\turl: client.url.href,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst url = new _URL(client.url.href);\n\t\t\t\t\turl[prop] = args[0];\n\t\t\t\t\tclient.url = url;\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tObject_defineProperty(fakeLocation, prop, desc);\n\t}\n\n\t// functions\n\tfakeLocation.toString = new Proxy(self.location.toString, {\n\t\tapply() {\n\t\t\treturn client.url.href;\n\t\t},\n\t});\n\n\tif (self.location.valueOf)\n\t\tfakeLocation.valueOf = new Proxy(self.location.valueOf, {\n\t\t\tapply() {\n\t\t\t\treturn fakeLocation;\n\t\t\t},\n\t\t});\n\tif (self.location.assign)\n\t\tfakeLocation.assign = new Proxy(self.location.assign, {\n\t\t\tapply(target, that, args) {\n\t\t\t\targs[0] = client.rewriteUrl(args[0]);\n\t\t\t\tReflect_apply(target, self.location, args);\n\t\t\t\tTap.dispatch(\n\t\t\t\t\tclient.hooks.lifecycle.navigate,\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"location\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\turl: client.url.href,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t},\n\t\t});\n\tif (self.location.reload)\n\t\tfakeLocation.reload = new Proxy(self.location.reload, {\n\t\t\tapply(target, that, args) {\n\t\t\t\tReflect_apply(target, self.location, args);\n\t\t\t},\n\t\t});\n\tif (self.location.replace)\n\t\tfakeLocation.replace = new Proxy(self.location.replace, {\n\t\t\tapply(target, that, args) {\n\t\t\t\targs[0] = client.rewriteUrl(args[0]);\n\t\t\t\tReflect_apply(target, self.location, args);\n\n\t\t\t\tTap.dispatch(\n\t\t\t\t\tclient.hooks.lifecycle.navigate,\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"location\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\turl: client.url.href,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t},\n\t\t});\n\n\t// TODO: ancestorOrigins\n\n\treturn fakeLocation;\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"console.clear\", {\n\t\tapply(ctx) {\n\t\t\t// fuck you\n\t\t\tctx.return(undefined);\n\t\t},\n\t});\n\n\tconst log = console.log;\n\tclient.Trap(\"console.log\", {\n\t\tset(_ctx, _v) {\n\t\t\t// is there a legitimate reason to let sites do this?\n\t\t},\n\t\tget(_ctx) {\n\t\t\treturn log;\n\t\t},\n\t});\n}\n","import { rewriteBlob, unrewriteBlob } from \"@rewriters/url\";\nimport { ScramjetClient } from \"@client/index\";\nimport { String } from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient) {\n\t// hide the origin from object urls from the page\n\tclient.Proxy(\"URL.createObjectURL\", {\n\t\tapply(ctx) {\n\t\t\tconst url = ctx.call();\n\t\t\tif (url.startsWith(\"blob:\")) {\n\t\t\t\tctx.return(rewriteBlob(url, client.context, client.meta));\n\t\t\t} else {\n\t\t\t\tctx.return(url);\n\t\t\t}\n\t\t},\n\t});\n\n\tclient.Proxy(\"URL.revokeObjectURL\", {\n\t\tapply(ctx) {\n\t\t\tsetTimeout(() => {\n\t\t\t\t// scramjet rewrites blob urls to pass through the service worker first\n\t\t\t\t// this is neccesary if rewrites need to be applied to the blob\n\t\t\t\t// the issue is that if you call revokeObjectURL immediately after using the blob\n\t\t\t\t// the service worker will not have had time to download the blob\n\t\t\t\t// for some reason this is not an issue natively\n\t\t\t\t// simple delay is enough\n\t\t\t\t// TODO: find a way to make this not necessary\n\t\t\t\tconst url = String(ctx.args[0]);\n\t\t\t\tctx.args[0] = unrewriteBlob(url, client.context, client.meta);\n\t\t\t\tctx.call();\n\t\t\t}, 1000);\n\t\t\tctx.return(undefined);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { String } from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tclient.Proxy(\"CacheStorage.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Proxy(\"CacheStorage.prototype.has\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Proxy(\"CacheStorage.prototype.match\", {\n\t\tapply(ctx) {\n\t\t\tconst url = String(ctx.args[0]);\n\t\t\tctx.args[0] = client.rewriteUrl(url);\n\t\t},\n\t});\n\n\tclient.Proxy(\"CacheStorage.prototype.delete\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\t// TODO - check if this might leak things if Response from fetch is passed in and the url isn't properly being unrewritten\n}\n","// delete all chrome specific apis, or apis that are not supported by any browser other than chrome\n// these are not worth emulating and typically cause issues\n\nimport { iswindow } from \"@client/entry\";\nimport { ScramjetClient } from \"@client/index\";\n\n// type self as any here, most of these are not defined in the types\nexport default function (client: ScramjetClient, self: any) {\n\tconst del = (name: string) => {\n\t\tconst split = name.split(\".\");\n\t\tconst prop = split.pop();\n\t\tconst target = split.reduce((a, b) => a?.[b], self);\n\t\tif (!target) return;\n\t\tif (prop && prop in target) {\n\t\t\tdelete target[prop];\n\t\t} else {\n\t\t}\n\t};\n\n\t// obviously\n\t// del(\"chrome\");\n\n\t// ShapeDetector https://developer.chrome.com/docs/capabilities/shape-detection\n\tdel(\"BarcodeDetector\");\n\tdel(\"FaceDetector\");\n\tdel(\"TextDetector\");\n\n\t// background synchronization api\n\tif (iswindow) {\n\t\tdel(\"ServiceWorkerRegistration.prototype.sync\");\n\t}\n\n\t// trustedtypes\n\tdel(\"TrustedHTML\");\n\tdel(\"TrustedScript\");\n\tdel(\"TrustedScriptURL\");\n\tdel(\"TrustedTypePolicy\");\n\tdel(\"TrustedTypePolicyFactory\");\n\tself.__defineGetter__(\"trustedTypes\", () => undefined);\n\n\t// whatever this is\n\tdel(\"Navigator.prototype.joinAdInterestGroup\");\n\n\tif (!iswindow) return;\n\t// DOM specific ones below here\n\n\tReflect.deleteProperty(Navigator.prototype, \"serviceWorker\");\n\tdel(\"MediaDevices.prototype.setCaptureHandleConfig\");\n\n\t// web bluetooth api\n\tdel(\"Navigator.prototype.bluetooth\");\n\tdel(\"Bluetooth\");\n\tdel(\"BluetoothDevice\");\n\tdel(\"BluetoothRemoteGATTServer\");\n\tdel(\"BluetoothRemoteGATTCharacteristic\");\n\tdel(\"BluetoothRemoteGATTDescriptor\");\n\tdel(\"BluetoothUUID\");\n\n\t// contact picker api\n\tdel(\"Navigator.prototype.contacts\");\n\tdel(\"ContactAddress\");\n\tdel(\"ContactManager\");\n\n\t// Idle Detection API\n\tdel(\"IdleDetector\");\n\n\t// Presentation API\n\tdel(\"Navigator.prototype.presentation\");\n\tdel(\"Presentation\");\n\tdel(\"PresentationConnection\");\n\tdel(\"PresentationReceiver\");\n\tdel(\"PresentationRequest\");\n\tdel(\"PresentationAvailability\");\n\tdel(\"PresentationConnectionAvailableEvent\");\n\tdel(\"PresentationConnectionCloseEvent\");\n\tdel(\"PresentationConnectionList\");\n\n\t// Window Controls Overlay API\n\tdel(\"WindowControlsOverlay\");\n\tdel(\"WindowControlsOverlayGeometryChangeEvent\");\n\tdel(\"Navigator.prototype.windowControlsOverlay\");\n\n\t// WebHID API\n\tdel(\"Navigator.prototype.hid\");\n\tdel(\"HID\");\n\tdel(\"HIDDevice\");\n\tdel(\"HIDConnectionEvent\");\n\tdel(\"HIDInputReportEvent\");\n\n\t// Navigation API (not chrome only but it's really annoying to implement)\n\tdel(\"navigation\");\n\tdel(\"NavigateEvent\");\n\tdel(\"NavigationActivation\");\n\tdel(\"NavigationCurrentEntryChangeEvent\");\n\tdel(\"NavigationDestination\");\n\tdel(\"NavigationHistoryEntry\");\n\tdel(\"NavigationTransition\");\n}\n","import { flagEnabled } from \"@/shared\";\nimport { ScramjetClient } from \"@client/index\";\nimport { Reflect_apply } from \"@/shared/snapshot\";\n\nexport const enabled = (client: ScramjetClient) =>\n\tclient.flagEnabled(\"captureErrors\");\nexport function argdbg(arg, recurse = []) {\n\tswitch (typeof arg) {\n\t\tcase \"string\":\n\t\t\tbreak;\n\t\tcase \"object\":\n\t\t\tif (\n\t\t\t\targ &&\n\t\t\t\targ[Symbol.iterator] &&\n\t\t\t\ttypeof arg[Symbol.iterator] === \"function\"\n\t\t\t)\n\t\t\t\tfor (const prop in arg) {\n\t\t\t\t\t// make sure it's not a getter\n\t\t\t\t\tconst desc = Object.getOwnPropertyDescriptor(arg, prop);\n\t\t\t\t\tif (desc && desc.get) continue;\n\n\t\t\t\t\tconst ar = arg[prop];\n\t\t\t\t\tif (recurse.includes(ar)) continue;\n\t\t\t\t\trecurse.push(ar);\n\t\t\t\t\targdbg(ar, recurse);\n\t\t\t\t}\n\t\t\tbreak;\n\t}\n}\n\nexport default function (client: ScramjetClient, self: GlobalThis) {\n\tconst warn = console.warn;\n\tself.$scramerr = function scramerr(e) {\n\t\twarn(\"CAUGHT ERROR\", e);\n\t};\n\n\tself.$scramdbg = function scramdbg(args, t) {\n\t\tif (args && typeof args === \"object\" && args.length > 0) argdbg(args);\n\t\targdbg(t);\n\n\t\treturn t;\n\t};\n\n\tclient.Proxy(\"Promise.prototype.catch\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0])\n\t\t\t\tctx.args[0] = new Proxy(ctx.args[0], {\n\t\t\t\t\tapply(target, that, args) {\n\t\t\t\t\t\t// console.warn(\"CAUGHT PROMISE REJECTION\", args);\n\t\t\t\t\t\treturn Reflect_apply(target, that, args);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t},\n\t});\n}\n","import { unrewriteUrl } from \"@rewriters/url\";\nimport { ScramjetClient } from \"@client/index\";\n\nexport const enabled = (client: ScramjetClient) =>\n\tclient.flagEnabled(\"cleanErrors\");\n\nexport default function (client: ScramjetClient, _self: Self) {\n\t// v8 only. all we need to do is clean the scramjet urls from stack traces\n\tconst closure = (error, stack) => {\n\t\tlet newstack = error.stack;\n\n\t\tfor (let i = 0; i < stack.length; i++) {\n\t\t\tconst url = stack[i].getFileName();\n\n\t\t\ttry {\n\t\t\t\tif (client.config.maskedfiles.some((f) => url.endsWith(f))) {\n\t\t\t\t\t// strip stack frames including scramjet handlers from the trace\n\t\t\t\t\tconst lines = newstack.split(\"\\n\");\n\t\t\t\t\tconst line = lines.find((l) => l.includes(url));\n\t\t\t\t\tlines.splice(line, 1);\n\t\t\t\t\tnewstack = lines.join(\"\\n\");\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t} catch {}\n\n\t\t\ttry {\n\t\t\t\tnewstack = newstack.replaceAll(url, unrewriteUrl(url, client.context));\n\t\t\t} catch {}\n\t\t}\n\n\t\treturn newstack;\n\t};\n\tclient.Trap(\"Error.prepareStackTrace\", {\n\t\tget(_ctx) {\n\t\t\t// this is a funny js quirk. the getter is ran every time you type something in console\n\t\t\treturn closure;\n\t\t},\n\t\tset(_value) {\n\t\t\t// just ignore it if a site tries setting their own. not much we can really do\n\t\t},\n\t});\n}\n","import { rewriteJs } from \"@rewriters/js\";\nimport { ScramjetClient } from \"@client/index\";\nimport { Object_defineProperty } from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\t// used for proxying *direct eval*\n\t// eval(\"...\") -> eval($scramjet$rewrite(\"...\"))\n\tObject_defineProperty(self, client.config.globals.rewritefn, {\n\t\tvalue: function (js: any) {\n\t\t\tif (typeof js !== \"string\") return js;\n\n\t\t\tconst rewritten = rewriteJs(\n\t\t\t\tjs,\n\t\t\t\t\"(direct eval proxy)\",\n\t\t\t\tclient.context,\n\t\t\t\tclient.meta\n\t\t\t);\n\n\t\t\treturn rewritten;\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n}\n\nexport function indirectEval(this: ScramjetClient, strict: boolean, js: any) {\n\t// > If the argument of eval() is not a string, eval() returns the argument unchanged\n\tif (typeof js !== \"string\") return js;\n\n\tlet indirection: typeof eval;\n\tif (this.url.hostname === \"accounts.google.com\") {\n\t\tconsole.log(\"USING STRICT EVAL - BOTGUARD\");\n\t\tindirection = new Function(`\n\t\t\t\"use strict\";\n\t\t\treturn eval;\n\t\t`) as typeof eval;\n\t} else {\n\t\tindirection = this.global.eval;\n\t}\n\n\treturn indirection(\n\t\trewriteJs(js, \"(indirect eval proxy)\", this.context, this.meta) as string\n\t);\n}\n","import { iswindow } from \"@client/entry\";\nimport { ScramjetClient } from \"@client/index\";\nimport { getOwnPropertyDescriptorHandler } from \"@client/helpers\";\nimport {\n\tObject_defineProperty,\n\tReflect_apply,\n\tReflect_get,\n\tReflect_ownKeys,\n\tSymbol_for,\n} from \"@/shared/snapshot\";\n\nconst realOnEvent = Symbol_for(\"scramjet original onevent function\");\n\nexport default function (client: ScramjetClient, self: Self) {\n\tconst handlers = {\n\t\tmessage: {\n\t\t\t_init() {\n\t\t\t\tif (client.init.shouldBlockMessageEvent?.(this)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tports() {\n\t\t\t\t// don't know why i have to do this?\n\t\t\t\treturn this.ports;\n\t\t\t},\n\t\t\tsource() {\n\t\t\t\tif (this.source === null) return null;\n\n\t\t\t\t// const scram: ScramjetClient = this.source[SCRAMJETCLIENT];\n\n\t\t\t\t// if (scram) return scram.globalProxy;\n\n\t\t\t\treturn this.source;\n\t\t\t},\n\t\t\torigin() {\n\t\t\t\tif (!iswindow) return \"\";\n\t\t\t\tif (typeof this.data === \"object\" && \"$scramjet$origin\" in this.data)\n\t\t\t\t\treturn this.data.$scramjet$origin;\n\n\t\t\t\treturn client.url.origin;\n\t\t\t},\n\t\t\tdata() {\n\t\t\t\tif (typeof this.data === \"object\" && \"$scramjet$data\" in this.data)\n\t\t\t\t\treturn this.data.$scramjet$data;\n\n\t\t\t\treturn this.data;\n\t\t\t},\n\t\t},\n\t\thashchange: {\n\t\t\toldURL() {\n\t\t\t\treturn client.unrewriteUrl(this.oldURL);\n\t\t\t},\n\t\t\tnewURL() {\n\t\t\t\treturn client.unrewriteUrl(this.newURL);\n\t\t\t},\n\t\t},\n\t\tstorage: {\n\t\t\t_init() {\n\t\t\t\treturn this.key.startsWith(client.url.host + \"@\");\n\t\t\t},\n\t\t\tkey() {\n\t\t\t\treturn this.key.substring(this.key.indexOf(\"@\") + 1);\n\t\t\t},\n\t\t\turl() {\n\t\t\t\treturn client.unrewriteUrl(this.url);\n\t\t\t},\n\t\t},\n\t};\n\n\tfunction wraplistener(listener: (...args: any) => any) {\n\t\treturn new Proxy(listener, {\n\t\t\tapply(target, that, args) {\n\t\t\t\tconst realEvent: Event = args[0];\n\n\t\t\t\t// we only need to handle events dispatched from the browser\n\t\t\t\tif (realEvent.isTrusted) {\n\t\t\t\t\tconst type = realEvent.type;\n\n\t\t\t\t\tif (type in handlers) {\n\t\t\t\t\t\tconst handler = handlers[type];\n\n\t\t\t\t\t\tif (handler._init) {\n\t\t\t\t\t\t\t// if _init returns false, we skip the event, and it never dispatches to listeners\n\t\t\t\t\t\t\tif (handler._init.call(realEvent) === false) return;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\targs[0] = new Proxy(realEvent, {\n\t\t\t\t\t\t\tget(target, prop, reciever) {\n\t\t\t\t\t\t\t\tconst value = Reflect_get(target, prop);\n\t\t\t\t\t\t\t\tif (prop in handler) {\n\t\t\t\t\t\t\t\t\treturn handler[prop].call(target);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (typeof value === \"function\") {\n\t\t\t\t\t\t\t\t\treturn new Proxy(value, {\n\t\t\t\t\t\t\t\t\t\tapply(target, that, args) {\n\t\t\t\t\t\t\t\t\t\t\tif (that === reciever) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn Reflect_apply(target, realEvent, args);\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\treturn Reflect_apply(target, that, args);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!self.event) {\n\t\t\t\t\tObject_defineProperty(self, \"event\", {\n\t\t\t\t\t\tget() {\n\t\t\t\t\t\t\treturn args[0];\n\t\t\t\t\t\t},\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst rv = Reflect_apply(target, that, args);\n\n\t\t\t\treturn rv;\n\t\t\t},\n\t\t\tgetOwnPropertyDescriptor: getOwnPropertyDescriptorHandler,\n\t\t});\n\t}\n\n\tclient.Proxy(\"EventTarget.prototype.addEventListener\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[1] !== \"function\") return;\n\n\t\t\tconst origlistener = ctx.args[1];\n\t\t\tconst proxylistener = wraplistener(origlistener);\n\n\t\t\tctx.args[1] = proxylistener;\n\n\t\t\tlet arr = client.eventcallbacks.get(ctx.this);\n\t\t\tarr ||= [] as any;\n\t\t\tarr.push({\n\t\t\t\tevent: ctx.args[0] as string,\n\t\t\t\toriginalCallback: origlistener,\n\t\t\t\tproxiedCallback: proxylistener,\n\t\t\t});\n\t\t\tclient.eventcallbacks.set(ctx.this, arr);\n\t\t},\n\t});\n\n\tclient.Proxy(\"EventTarget.prototype.removeEventListener\", {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[1] !== \"function\") return;\n\n\t\t\tconst arr = client.eventcallbacks.get(ctx.this);\n\t\t\tif (!arr) return;\n\n\t\t\tconst i = arr.findIndex(\n\t\t\t\t(e) => e.event === ctx.args[0] && e.originalCallback === ctx.args[1]\n\t\t\t);\n\t\t\tif (i === -1) return;\n\n\t\t\tconst r = arr.splice(i, 1);\n\t\t\tclient.eventcallbacks.set(ctx.this, arr);\n\n\t\t\tctx.args[1] = r[0].proxiedCallback;\n\t\t},\n\t});\n\n\tconst targets = [\n\t\tself.self,\n\t\tself.MessagePort.prototype,\n\t\tself.BroadcastChannel.prototype,\n\t] as Array<any>;\n\tif (iswindow) targets.push(self.HTMLElement.prototype);\n\tif (self.Worker) targets.push(self.Worker.prototype);\n\n\tfor (const target of targets) {\n\t\tconst keys = Reflect_ownKeys(target);\n\n\t\tfor (const key of keys) {\n\t\t\tif (\n\t\t\t\ttypeof key === \"string\" &&\n\t\t\t\tkey.startsWith(\"on\") &&\n\t\t\t\thandlers[key.slice(2)]\n\t\t\t) {\n\t\t\t\tconst descriptor = client.natives.call(\n\t\t\t\t\t\"Object.getOwnPropertyDescriptor\",\n\t\t\t\t\tnull,\n\t\t\t\t\ttarget,\n\t\t\t\t\tkey\n\t\t\t\t);\n\t\t\t\tif (!descriptor.get || !descriptor.set || !descriptor.configurable)\n\t\t\t\t\tcontinue;\n\n\t\t\t\t// these are the `onmessage`, `onclick`, etc. properties\n\t\t\t\tclient.RawTrap(target, key, {\n\t\t\t\t\tget(ctx) {\n\t\t\t\t\t\tif (this[realOnEvent]) return this[realOnEvent];\n\n\t\t\t\t\t\treturn ctx.get();\n\t\t\t\t\t},\n\t\t\t\t\tset(ctx, value: any) {\n\t\t\t\t\t\tthis[realOnEvent] = value;\n\n\t\t\t\t\t\tif (typeof value !== \"function\") return ctx.set(value);\n\n\t\t\t\t\t\tctx.set(wraplistener(value));\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n","import { rewriteJs } from \"@rewriters/js\";\nimport { ScramjetClient, ProxyCtx, Proxy } from \"@client/index\";\n\nfunction rewriteFunction<T extends string, U extends \"construct\" | \"apply\">(\n\tctx: ProxyCtx<T, U>,\n\tclient: ScramjetClient\n) {\n\tconst stringifiedFunction = ctx.call().toString();\n\n\t// TODO: also check if the function comes from a weird realm. if so we need to completely block it or do something else weird\n\t// not much point rewriting the javascript if it's executing in the top level\n\n\tconst content = rewriteJs(\n\t\t`return ${stringifiedFunction}`,\n\t\t\"(function proxy)\",\n\t\tclient.context,\n\t\tclient.meta\n\t);\n\tctx.return(ctx.fn(content)());\n}\n\nexport default function (client: ScramjetClient, _self: Self) {\n\tconst handler: Proxy = {\n\t\tapply(ctx: ProxyCtx) {\n\t\t\trewriteFunction(ctx, client);\n\t\t},\n\t\tconstruct(ctx) {\n\t\t\trewriteFunction(ctx, client);\n\t\t},\n\t};\n\n\tclient.Proxy(\"Function\", handler);\n\n\tconst RawFunction = client.natives.call(\n\t\t\"eval\",\n\t\tnull,\n\t\t\"(function () {})\"\n\t).constructor;\n\tconst RawAsyncFunction = client.natives.call(\n\t\t\"eval\",\n\t\tnull,\n\t\t\"(async function () {})\"\n\t).constructor;\n\tconst RawGeneratorFunction = client.natives.call(\n\t\t\"eval\",\n\t\tnull,\n\t\t\"(function* () {})\"\n\t).constructor;\n\tconst RawAsyncGeneratorFunction = client.natives.call(\n\t\t\"eval\",\n\t\tnull,\n\t\t\"(async function* () {})\"\n\t).constructor;\n\n\tclient.RawProxy(RawFunction.prototype, \"constructor\", handler);\n\tclient.RawProxy(RawAsyncFunction.prototype, \"constructor\", handler);\n\tclient.RawProxy(RawGeneratorFunction.prototype, \"constructor\", handler);\n\tclient.RawProxy(RawAsyncGeneratorFunction.prototype, \"constructor\", handler);\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { Object_defineProperty, _URL } from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tconst boundimport = client.natives.call(\n\t\t\"Function\",\n\t\tnull,\n\t\t\"url\",\n\t\t\"return import(url)\"\n\t);\n\n\tObject_defineProperty(self, client.config.globals.importfn, {\n\t\tvalue: function (base: string, url: string) {\n\t\t\tconst resolved = new _URL(url, base).href;\n\n\t\t\tif (\n\t\t\t\turl.includes(\":\") ||\n\t\t\t\turl.startsWith(\"/\") ||\n\t\t\t\turl.startsWith(\".\") ||\n\t\t\t\turl.startsWith(\"..\")\n\t\t\t) {\n\t\t\t\t// this is a url\n\t\t\t\treturn boundimport(client.rewriteUrl(resolved, { isModule: true }));\n\t\t\t} else {\n\t\t\t\t// this is a specifier handled by importmaps\n\t\t\t\treturn boundimport(url);\n\t\t\t}\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t});\n\tObject_defineProperty(self, client.config.globals.metafn, {\n\t\tvalue: function (metaobj: any, base: string) {\n\t\t\tmetaobj.url = base;\n\t\t\tmetaobj.resolve = function (url: string) {\n\t\t\t\treturn new _URL(url, base).href;\n\t\t\t};\n\n\t\t\treturn metaobj;\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { String } from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"IDBFactory.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = `${client.url.origin}@${ctx.args[0]}`;\n\t\t},\n\t});\n\n\tclient.Trap(\"IDBDatabase.prototype.name\", {\n\t\tget(ctx) {\n\t\t\tconst name = String(ctx.get());\n\n\t\t\treturn name.substring(name.indexOf(\"@\") + 1);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { Object_defineProperty } from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"StorageManager.prototype.getDirectory\", {\n\t\tapply(ctx) {\n\t\t\tconst rootPromise = ctx.call();\n\t\t\tctx.return(\n\t\t\t\t(async () => {\n\t\t\t\t\tconst root = await rootPromise;\n\t\t\t\t\tconst directory = await root.getDirectoryHandle(\n\t\t\t\t\t\t`${client.url.origin.replace(/\\/|\\s|\\./g, \"-\")}`,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcreate: true,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\tObject_defineProperty(directory, \"name\", {\n\t\t\t\t\t\tvalue: \"\",\n\t\t\t\t\t\twritable: false,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn directory;\n\t\t\t\t})()\n\t\t\t);\n\t\t},\n\t});\n}\n","import { iswindow } from \"@client/entry\";\nimport { SCRAMJETCLIENT } from \"@/symbols\";\nimport { ScramjetClient } from \"@client/index\";\nimport { Object_defineProperty } from \"@/shared/snapshot\";\nimport { POLLUTANT } from \"./realm\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tif (iswindow)\n\t\tclient.Proxy(\"window.postMessage\", {\n\t\t\tapply(ctx) {\n\t\t\t\t// so we need to send the real origin here, since the recieving window can't possibly know.\n\t\t\t\t// except, remember that this code is being ran in a different realm than the invoker, so if we ask our `client` it may give us the wrong origin\n\t\t\t\t// if we were given any object that came from the real realm we can use that to get the real origin\n\t\t\t\t// and this works in every case EXCEPT for the fact that all three arguments can be strings which are copied instead of cloned\n\t\t\t\t// so we have to use `$setrealm` which will pollute this with an object from the real realm\n\n\t\t\t\tlet pollutant;\n\n\t\t\t\tif (typeof ctx.args[0] === \"object\" && ctx.args[0] !== null) {\n\t\t\t\t\tpollutant = ctx.args[0]; // try to use the first object we can find because it's more reliable\n\t\t\t\t} else if (typeof ctx.args[2] === \"object\" && ctx.args[2] !== null) {\n\t\t\t\t\tpollutant = ctx.args[2]; // next try to use transfer\n\t\t\t\t} else if (\n\t\t\t\t\tctx.this &&\n\t\t\t\t\tPOLLUTANT in ctx.this &&\n\t\t\t\t\ttypeof ctx.this[POLLUTANT] === \"object\" &&\n\t\t\t\t\tctx.this[POLLUTANT] !== null\n\t\t\t\t) {\n\t\t\t\t\tpollutant = ctx.this[POLLUTANT]; // lastly try to use the object from $setrealm\n\t\t\t\t} else {\n\t\t\t\t\tpollutant = {}; // give up\n\t\t\t\t}\n\n\t\t\t\t// and now we can steal Function from the caller's realm\n\t\t\t\tconst {\n\t\t\t\t\tconstructor: { constructor: Function },\n\t\t\t\t} = pollutant;\n\n\t\t\t\t// invoking stolen function will give us the caller's globalThis, remember scramjet has already proxied it!!!\n\t\t\t\tconst callerGlobalThisProxied: Self = Function(\"return globalThis\")();\n\t\t\t\tconst callerClient = callerGlobalThisProxied[SCRAMJETCLIENT];\n\n\t\t\t\t// this WOULD be enough but the source argument of MessageEvent has to return the caller's window\n\t\t\t\t// and if we just call it normally it would be coming from here, which WILL NOT BE THE CALLER'S because the accessor is from the parent\n\t\t\t\t// so with the stolen function we wrap postmessage so the source will truly be the caller's window (remember that function is scramjet's!!!)\n\t\t\t\tconst wrappedPostMessage = Function(\"...args\", \"this(...args)\");\n\n\t\t\t\t// console.log(\n\t\t\t\t// \tcallerClient,\n\t\t\t\t// \tclient,\n\t\t\t\t// \tcallerGlobalThisProxied.document,\n\t\t\t\t// \tself.document,\n\t\t\t\t// \tcallerClient === client\n\t\t\t\t// );\n\t\t\t\tctx.args[0] = {\n\t\t\t\t\t$scramjet$messagetype: \"window\",\n\t\t\t\t\t$scramjet$origin: callerClient.url.origin,\n\t\t\t\t\t$scramjet$data: ctx.args[0],\n\t\t\t\t};\n\t\t\t\t// console.error(\"?\", ctx.args);\n\t\t\t\t// eval(\"debugger\");\n\n\t\t\t\t// * origin because obviously\n\t\t\t\tif (typeof ctx.args[1] === \"string\") ctx.args[1] = \"*\";\n\t\t\t\tif (typeof ctx.args[1] === \"object\") ctx.args[1].targetOrigin = \"*\";\n\n\t\t\t\tctx.return(wrappedPostMessage.call(ctx.fn, ...ctx.args));\n\t\t\t},\n\t\t});\n\n\tclient.Proxy(\"BroadcastChannel.prototype.postMessage\", {\n\t\tapply(ctx) {\n\t\t\tctx.args[0] = {\n\t\t\t\t$scramjet$messagetype: \"window\",\n\t\t\t\t// TODO: need to actually look up the broadcastchannel itself in box i think\n\t\t\t\t$scramjet$origin: client.url.origin,\n\t\t\t\t$scramjet$data: ctx.args[0],\n\t\t\t};\n\t\t},\n\t});\n\n\tconst toproxy = [\"MessagePort.prototype.postMessage\"];\n\n\tif (self.Worker) toproxy.push(\"Worker.prototype.postMessage\");\n\tif (!iswindow) toproxy.push(\"self.postMessage\"); // only do the generic version if we're in a worker\n\n\tclient.Proxy(toproxy, {\n\t\tapply(ctx) {\n\t\t\t// origin/source doesn't need to be preserved - it's null in the message event\n\n\t\t\tctx.args[0] = {\n\t\t\t\t$scramjet$messagetype: \"worker\",\n\t\t\t\t$scramjet$data: ctx.args[0],\n\t\t\t};\n\t\t},\n\t});\n\tObject_defineProperty(self, client.config.globals.wrappostmessagefn, {\n\t\tvalue: function (obj: any) {\n\t\t\tif (!obj || typeof obj.postMessage !== \"function\") return obj;\n\t\t\treturn {\n\t\t\t\tpostMessage: obj.postMessage.bind(obj),\n\t\t\t};\n\t\t},\n\t\tconfigurable: false,\n\t\twritable: false,\n\t\tenumerable: false,\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { Object_defineProperty, Symbol_for } from \"@/shared/snapshot\";\n\nexport const POLLUTANT = Symbol_for(\"scramjet realm pollutant\");\n\nexport default function (client: ScramjetClient, self: GlobalThis) {\n\t// object.$setrealm({}).postMessage(...)\n\t// the empty object is the \"pollutant\" which can reconstruct the real realm\n\t// i explain more in postmessage.ts\n\tObject_defineProperty(self.Object.prototype, \"$scramjet$setrealmfn\", {\n\t\tvalue(pollution: object) {\n\t\t\t// this is bad!! sites could detect this\n\t\t\tObject_defineProperty(this, POLLUTANT, {\n\t\t\t\tvalue: pollution,\n\t\t\t\twritable: false,\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t});\n\n\t\t\treturn this;\n\t\t},\n\t\twritable: true,\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"EventSource\", {\n\t\tconstruct(ctx) {\n\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t},\n\t});\n\n\tclient.Trap(\"EventSource.prototype.url\", {\n\t\tget(ctx) {\n\t\t\treturn client.unrewriteUrl(ctx.get());\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { unrewriteLinkHeader } from \"./xmlhttprequest\";\nimport { String } from \"@/shared/snapshot\";\n\n/**\n * Capture the page's intended `init.mode` / `init.credentials` and forward\n * them to `rewriteUrl` so they get stamped onto the proxy URL as `sj$mode` /\n * `sj$cred`. The service-side handler reads those back when computing\n * Sec-Fetch-Mode / Sec-Fetch-Storage-Access, since `event.request.mode` and\n * `event.request.credentials` from the SW are derived against the rewritten\n * same-origin URL and don't reflect the page's actual intent.\n */\nfunction rewriteUrlOptionsForFetch(init: RequestInit | undefined) {\n\treturn {\n\t\t// `fetch()` and `new Request()` both default mode to \"cors\" per spec.\n\t\tmode: init?.mode ?? \"cors\",\n\t\tcredentials: init?.credentials === \"include\" ? \"include\" : undefined,\n\t};\n}\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"fetch\", {\n\t\tapply(ctx) {\n\t\t\tif (client.box.instanceof(ctx.args[0], \"Request\")) return;\n\t\t\tconst url = String(ctx.args[0]);\n\t\t\tctx.args[0] = client.rewriteUrl(\n\t\t\t\turl,\n\t\t\t\trewriteUrlOptionsForFetch(ctx.args[1] as RequestInit | undefined)\n\t\t\t);\n\t\t},\n\t});\n\n\tclient.Proxy(\"Request\", {\n\t\tconstruct(ctx) {\n\t\t\tif (client.box.instanceof(ctx.args[0], \"Request\")) return;\n\t\t\tconst url = String(ctx.args[0]);\n\t\t\tctx.args[0] = client.rewriteUrl(\n\t\t\t\turl,\n\t\t\t\trewriteUrlOptionsForFetch(ctx.args[1] as RequestInit | undefined)\n\t\t\t);\n\t\t},\n\t});\n\n\tclient.Trap([\"Request.prototype.url\", \"Response.prototype.url\"], {\n\t\tget(ctx) {\n\t\t\treturn client.unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n\n\t// TODO: this needs to be only for response objects created from a fetch\n\tclient.Trap(\"Response.prototype.headers\", {\n\t\tget(ctx) {\n\t\t\tconst headers = ctx.get() as Headers;\n\t\t\tconst newHeaders = new Headers();\n\n\t\t\tfor (const [key, value] of headers.entries()) {\n\t\t\t\tif (key.toLowerCase() === \"link\") {\n\t\t\t\t\tnewHeaders.append(key, unrewriteLinkHeader(value, client.context));\n\t\t\t\t} else {\n\t\t\t\t\tnewHeaders.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn newHeaders;\n\t\t},\n\t});\n}\n","import { type BareCompatibleWebSocket } from \"@mercuryworkshop/proxy-transports\";\nimport { ScramjetClient } from \"@client/index\";\nimport {\n\tObject_setPrototypeOf,\n\tReflect_get,\n\t_URL,\n\t_WeakMap,\n} from \"@/shared/snapshot\";\n\ntype FakeWebSocketState = {\n\tprotocol: string;\n\textensions: string;\n\turl: string;\n\tbinaryType: string;\n\tbarews: BareCompatibleWebSocket;\n\n\tonopen: (ev: Event) => any | null;\n\tonmessage: (ev: MessageEvent) => any | null;\n\tonclose: (ev: CloseEvent) => any | null;\n\tonerror: (ev: Event) => any | null;\n};\ntype FakeWebSocketStreamState = {\n\tprotocol: string;\n\textensions: string;\n\turl: string;\n\tbarews: BareCompatibleWebSocket;\n\n\topened: any;\n\tclosed: any;\n\treadable: ReadableStream;\n\twritable: WritableStream;\n};\nexport default function (client: ScramjetClient, self: GlobalThis) {\n\tconst socketmap: WeakMap<WebSocket, FakeWebSocketState> =\n\t\tnew _WeakMap() as WeakMap<WebSocket, FakeWebSocketState>;\n\tconst socketstreammap: WeakMap<WebSocketStream, FakeWebSocketStreamState> =\n\t\tnew _WeakMap() as WeakMap<WebSocketStream, FakeWebSocketStreamState>;\n\tclient.Proxy(\"WebSocket\", {\n\t\tconstruct(ctx) {\n\t\t\tif (client.init.shouldPassthroughWebsocket?.(ctx.args[0])) {\n\t\t\t\treturn ctx.return(client.natives.construct(\"WebSocket\", ...ctx.args));\n\t\t\t}\n\t\t\tconst fakeWebSocket = new EventTarget() as WebSocket;\n\t\t\tObject_setPrototypeOf(fakeWebSocket, ctx.fn.prototype);\n\t\t\tfakeWebSocket.constructor = ctx.fn;\n\n\t\t\t// websockets can take relative URLs\n\t\t\tlet rawurl = new _URL(ctx.args[0], client.url.href);\n\t\t\tif (rawurl.protocol === \"http:\") {\n\t\t\t\trawurl = new _URL(\n\t\t\t\t\t\"ws:\" + rawurl.href.substring(rawurl.protocol.length)\n\t\t\t\t);\n\t\t\t} else if (rawurl.protocol === \"https:\") {\n\t\t\t\trawurl = new _URL(\n\t\t\t\t\t\"wss:\" + rawurl.href.substring(rawurl.protocol.length)\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst url = rawurl.href;\n\n\t\t\tconst trustEvent = (ev: Event) =>\n\t\t\t\tnew Proxy(ev, {\n\t\t\t\t\tget(target, prop) {\n\t\t\t\t\t\tif (prop === \"isTrusted\") return true;\n\n\t\t\t\t\t\treturn Reflect_get(target, prop);\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\tconst barews = client.bare.createWebSocket(url, ctx.args[1], [\n\t\t\t\t[\"User-Agent\", self.navigator.userAgent],\n\t\t\t\t[\"Origin\", client.url.origin],\n\t\t\t\t[\"Cookie\", client.context.cookieJar.getCookies(client.url, false)],\n\t\t\t]);\n\n\t\t\tconst state: FakeWebSocketState = {\n\t\t\t\tprotocol: \"\",\n\t\t\t\textensions: \"\",\n\t\t\t\turl,\n\t\t\t\tbinaryType: \"blob\",\n\t\t\t\tbarews,\n\n\t\t\t\tonopen: null,\n\t\t\t\tonmessage: null,\n\t\t\t\tonclose: null,\n\t\t\t\tonerror: null,\n\t\t\t};\n\n\t\t\tfunction fakeEventSend(fakeev: Event) {\n\t\t\t\tstate[\"on\" + fakeev.type]?.(trustEvent(fakeev));\n\t\t\t\tfakeWebSocket.dispatchEvent(fakeev);\n\t\t\t}\n\n\t\t\tbarews.addEventListener(\"open\", () => {\n\t\t\t\tfakeEventSend(new Event(\"open\"));\n\t\t\t});\n\t\t\tbarews.addEventListener(\"close\", (ev) => {\n\t\t\t\tfakeEventSend(new CloseEvent(\"close\", ev));\n\t\t\t});\n\t\t\tbarews.addEventListener(\"message\", async (ev) => {\n\t\t\t\tlet payload = ev.data;\n\t\t\t\tif (typeof payload === \"string\") {\n\t\t\t\t\t// DO NOTHING\n\t\t\t\t} else if (\"byteLength\" in payload) {\n\t\t\t\t\t// arraybuffer, convert to blob if needed or set the proper prototype\n\t\t\t\t\tif (state.binaryType === \"blob\") {\n\t\t\t\t\t\tpayload = new Blob([payload]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tObject_setPrototypeOf(payload, ArrayBuffer.prototype);\n\t\t\t\t\t}\n\t\t\t\t} else if (\"arrayBuffer\" in payload) {\n\t\t\t\t\t// blob, convert to arraybuffer if neccesary.\n\t\t\t\t\tif (state.binaryType === \"arraybuffer\") {\n\t\t\t\t\t\tpayload = await payload.arrayBuffer();\n\t\t\t\t\t\tObject_setPrototypeOf(payload, ArrayBuffer.prototype);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst fakeev = new MessageEvent(\"message\", {\n\t\t\t\t\tdata: payload,\n\t\t\t\t\torigin: ev.origin,\n\t\t\t\t\tlastEventId: ev.lastEventId,\n\t\t\t\t\tsource: ev.source,\n\t\t\t\t\tports: ev.ports,\n\t\t\t\t});\n\n\t\t\t\tfakeEventSend(fakeev);\n\t\t\t});\n\t\t\tbarews.addEventListener(\"error\", () => {\n\t\t\t\tfakeEventSend(new Event(\"error\"));\n\t\t\t});\n\n\t\t\tsocketmap.set(fakeWebSocket, state);\n\t\t\tctx.return(fakeWebSocket);\n\t\t},\n\t});\n\tclient.Trap(\"WebSocket.prototype.binaryType\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.binaryType;\n\t\t},\n\t\tset(ctx, v: string) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.set(v);\n\t\t\tif (v === \"blob\" || v === \"arraybuffer\") ws.binaryType = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.bufferedAmount\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn 0;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.extensions\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.extensions;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onopen\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.onopen;\n\t\t},\n\t\tset(ctx, v: (ev: Event) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.set(v);\n\n\t\t\tws.onopen = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onmessage\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.onmessage;\n\t\t},\n\t\tset(ctx, v: (ev: MessageEvent) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.set(v);\n\n\t\t\tws.onmessage = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onclose\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.onclose;\n\t\t},\n\t\tset(ctx, v: (ev: CloseEvent) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.set(v);\n\n\t\t\tws.onclose = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.onerror\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.onerror;\n\t\t},\n\t\tset(ctx, v: (ev: Event) => any) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.set(v);\n\n\t\t\tws.onerror = v;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.url\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.url;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.protocol\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.protocol;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocket.prototype.readyState\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return ctx.get();\n\n\t\t\treturn ws.barews.readyState;\n\t\t},\n\t});\n\n\tclient.Proxy(\"WebSocket.prototype.send\", {\n\t\tapply(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return;\n\n\t\t\tctx.return(ws.barews.send(ctx.args[0]));\n\t\t},\n\t});\n\n\tclient.Proxy(\"WebSocket.prototype.close\", {\n\t\tapply(ctx) {\n\t\t\tconst ws = socketmap.get(ctx.this);\n\t\t\tif (!ws) return;\n\n\t\t\tif (ctx.args[0] === undefined) ctx.args[0] = 1000;\n\t\t\tif (ctx.args[1] === undefined) ctx.args[1] = \"\";\n\t\t\tctx.return(ws.barews.close(ctx.args[0], ctx.args[1]));\n\t\t},\n\t});\n\n\tclient.Proxy(\"WebSocketStream\", {\n\t\tconstruct(ctx) {\n\t\t\tconst fakeWebSocket = {};\n\t\t\tObject_setPrototypeOf(fakeWebSocket, ctx.fn.prototype);\n\t\t\tfakeWebSocket.constructor = ctx.fn;\n\n\t\t\tconst barews = client.bare.createWebSocket(ctx.args[0], ctx.args[1], [\n\t\t\t\t[\"User-Agent\", self.navigator.userAgent],\n\t\t\t\t[\"Origin\", client.url.origin],\n\t\t\t]);\n\t\t\tctx.args[1]?.signal.addEventListener(\"abort\", () => {\n\t\t\t\tbarews.close(1000, \"\");\n\t\t\t});\n\t\t\tconst state: FakeWebSocketStreamState = {\n\t\t\t\tprotocol: \"\",\n\t\t\t\textensions: \"\",\n\t\t\t\turl: ctx.args[0],\n\t\t\t\tbarews,\n\n\t\t\t\topened: new Promise((resolve, reject) => {\n\t\t\t\t\tbarews.addEventListener(\"open\", () => {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\treadable: state.readable,\n\t\t\t\t\t\t\twritable: state.writable,\n\t\t\t\t\t\t\tprotocol: state.protocol,\n\t\t\t\t\t\t\textensions: state.extensions,\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\tbarews.addEventListener(\"error\", (ev: Event) => {\n\t\t\t\t\t\treject(ev);\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tclosed: new Promise((resolve) => {\n\t\t\t\t\tbarews.addEventListener(\"close\", (ev: CloseEvent) => {\n\t\t\t\t\t\tresolve({ closeCode: ev.code, reason: ev.reason });\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\treadable: new ReadableStream({\n\t\t\t\t\tstart(controller) {\n\t\t\t\t\t\tbarews.addEventListener(\"message\", async (ev: MessageEvent) => {\n\t\t\t\t\t\t\tlet payload = ev.data;\n\t\t\t\t\t\t\t// TODO: this needs to be changed to uint8array later\n\t\t\t\t\t\t\t// chrome isnt following spec though so we are just going to do this\n\t\t\t\t\t\t\tif (typeof payload === \"string\") {\n\t\t\t\t\t\t\t\t// DO NOTHING\n\t\t\t\t\t\t\t} else if (\"byteLength\" in payload) {\n\t\t\t\t\t\t\t\t// arraybuffer, set the realms prototype so its recognized\n\t\t\t\t\t\t\t\tObject.setPrototypeOf(payload, ArrayBuffer.prototype);\n\t\t\t\t\t\t\t} else if (\"arrayBuffer\" in payload) {\n\t\t\t\t\t\t\t\t// blob, convert to arraybuffer\n\t\t\t\t\t\t\t\tpayload = await payload.arrayBuffer();\n\t\t\t\t\t\t\t\tObject.setPrototypeOf(payload, ArrayBuffer.prototype);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcontroller.enqueue(payload);\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tcancel(info) {\n\t\t\t\t\t\tbarews.close(info?.closeCode ?? 1000, info?.reason ?? \"\");\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\twritable: new WritableStream({\n\t\t\t\t\twrite(chunk) {\n\t\t\t\t\t\tbarews.send(chunk);\n\t\t\t\t\t},\n\t\t\t\t\tabort() {\n\t\t\t\t\t\tbarews.close(1000, \"\");\n\t\t\t\t\t},\n\t\t\t\t\tclose(info) {\n\t\t\t\t\t\tbarews.close(info?.closeCode ?? 1000, info?.reason ?? \"\");\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t};\n\n\t\t\tsocketstreammap.set(fakeWebSocket, state);\n\t\t\tctx.return(fakeWebSocket);\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocketStream.prototype.opened\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketstreammap.get(ctx.this);\n\n\t\t\treturn ws.opened;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocketStream.prototype.closed\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketstreammap.get(ctx.this);\n\n\t\t\treturn ws.closed;\n\t\t},\n\t});\n\n\tclient.Trap(\"WebSocketStream.prototype.url\", {\n\t\tget(ctx) {\n\t\t\tconst ws = socketstreammap.get(ctx.this);\n\n\t\t\treturn ws.url;\n\t\t},\n\t});\n\n\tclient.Proxy(\"WebSocketStream.prototype.close\", {\n\t\tapply(ctx) {\n\t\t\tconst ws = socketstreammap.get(ctx.this);\n\t\t\tif (ctx.args[0]) {\n\t\t\t\tif (ctx.args[0].closeCode === undefined) ctx.args[0].closeCode = 1000;\n\t\t\t\tif (ctx.args[0].reason === undefined) ctx.args[0].reason = \"\";\n\n\t\t\t\treturn ctx.return(\n\t\t\t\t\tws.barews.close(ctx.args[0].closeCode, ctx.args[0].reason)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn ctx.return(ws.barews.close(1000, \"\"));\n\t\t},\n\t});\n}\n","import { getFlag, ScramjetContext } from \"@/shared\";\nimport { rewriteUrl, unrewriteUrl, URLMeta } from \"@rewriters/url\";\nimport { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tlet worker;\n\t// if (self.Worker && flagEnabled(\"syncxhr\", client.url)) {\n\t// \tworker = client.natives.construct(\"Worker\", config.files.sync);\n\t// }\n\tconst ARGS = Symbol(\"xhr original args\");\n\tconst HEADERS = Symbol(\"xhr headers\");\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.open\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[1]) ctx.args[1] = client.rewriteUrl(ctx.args[1]);\n\t\t\tif (ctx.args[2] === undefined) ctx.args[2] = true;\n\t\t\tctx.this[ARGS] = ctx.args;\n\t\t},\n\t});\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.setRequestHeader\", {\n\t\tapply(ctx) {\n\t\t\tconst headers = ctx.this[HEADERS] || (ctx.this[HEADERS] = {});\n\t\t\theaders[ctx.args[0]] = ctx.args[1];\n\t\t},\n\t});\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.send\", {\n\t\tapply(ctx) {\n\t\t\tconst args = ctx.this[ARGS];\n\t\t\tif (!args || args[2]) return;\n\n\t\t\tif (!client.getFlag(\"syncxhr\")) {\n\t\t\t\tconsole.warn(\"ignoring request - sync xhr disabled in flags\");\n\n\t\t\t\treturn ctx.return(undefined);\n\t\t\t}\n\n\t\t\t// it's a sync request\n\t\t\t// sync xhr to service worker is not supported\n\t\t\t// there's a nice way of polyfilling this though, we can spin on an atomic using sharedarraybuffer. this will maintain the sync behavior\n\n\t\t\t//@ts-ignore\n\t\t\tconst sab = new SharedArrayBuffer(1024, { maxByteLength: 2147483647 });\n\t\t\tconst view = new DataView(sab);\n\n\t\t\tclient.natives.call(\"Worker.prototype.postMessage\", worker, {\n\t\t\t\tsab,\n\t\t\t\targs,\n\t\t\t\theaders: ctx.this[HEADERS],\n\t\t\t\tbody: ctx.args[0],\n\t\t\t});\n\n\t\t\tconst now = performance.now();\n\t\t\twhile (view.getUint8(0) === 0) {\n\t\t\t\tif (performance.now() - now > 1000) {\n\t\t\t\t\tthrow new Error(\"xhr timeout\");\n\t\t\t\t}\n\t\t\t\t/* spin */\n\t\t\t}\n\n\t\t\tconst status = view.getUint16(1);\n\t\t\tconst headersLength = view.getUint32(3);\n\n\t\t\tconst headersab = new Uint8Array(headersLength);\n\t\t\theadersab.set(new Uint8Array(sab.slice(7, 7 + headersLength)));\n\t\t\tconst headers = new TextDecoder().decode(headersab);\n\n\t\t\tconst bodyLength = view.getUint32(7 + headersLength);\n\t\t\tconst bodyab = new Uint8Array(bodyLength);\n\t\t\tbodyab.set(\n\t\t\t\tnew Uint8Array(\n\t\t\t\t\tsab.slice(11 + headersLength, 11 + headersLength + bodyLength)\n\t\t\t\t)\n\t\t\t);\n\t\t\tconst body = new TextDecoder().decode(bodyab);\n\n\t\t\t// these should be using proxies to not leak scram strings but who cares\n\t\t\tclient.RawTrap(ctx.this, \"status\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn status;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"responseText\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn body;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"response\", {\n\t\t\t\tget() {\n\t\t\t\t\tif (ctx.this.responseType === \"arraybuffer\") return bodyab.buffer;\n\n\t\t\t\t\treturn body;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"responseXML\", {\n\t\t\t\tget() {\n\t\t\t\t\tconst parser = new DOMParser();\n\n\t\t\t\t\treturn parser.parseFromString(body, \"text/xml\");\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"getAllResponseHeaders\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn () => headers;\n\t\t\t\t},\n\t\t\t});\n\t\t\tclient.RawTrap(ctx.this, \"getResponseHeader\", {\n\t\t\t\tget() {\n\t\t\t\t\treturn (header: string) => {\n\t\t\t\t\t\tconst re = new RegExp(`^${header}: (.*)$`, \"m\");\n\t\t\t\t\t\tconst match = re.exec(headers);\n\n\t\t\t\t\t\treturn match ? match[1] : null;\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tctx.return(undefined);\n\t\t},\n\t});\n\n\tclient.Trap(\"XMLHttpRequest.prototype.responseURL\", {\n\t\tget(ctx) {\n\t\t\treturn client.unrewriteUrl(ctx.get() as string);\n\t\t},\n\t});\n\n\tclient.Proxy(\"XMLHttpRequest.prototype.getAllResponseHeaders\", {\n\t\tapply(ctx) {\n\t\t\tconst headerstring = ctx.fn.call(ctx.this) as string;\n\t\t\tif (!headerstring) return headerstring;\n\t\t\tconst headers = headerstring.split(\"\\r\\n\");\n\n\t\t\tfor (const [i, header] of headers.entries()) {\n\t\t\t\tif (header.toLowerCase().startsWith(\"link:\")) {\n\t\t\t\t\theaders[i] = `Link: ${unrewriteLinkHeader(\n\t\t\t\t\t\theader.slice(5).trim(),\n\t\t\t\t\t\tclient.context\n\t\t\t\t\t)}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tctx.return(headers.join(\"\\r\\n\"));\n\t\t},\n\t});\n\tclient.Proxy(\"XMLHttpRequest.prototype.getResponseHeader\", {\n\t\tapply(ctx) {\n\t\t\tconst header = ctx.fn.call(ctx.this, ctx.args[0]) as string | null;\n\t\t\tif (!header) return header;\n\t\t\tif (ctx.args[0].toLowerCase() === \"link\") {\n\t\t\t\tctx.return(unrewriteLinkHeader(header, client.context));\n\t\t\t}\n\t\t},\n\t});\n}\n\nexport function unrewriteLinkHeader(header: string, context: ScramjetContext) {\n\treturn header.replace(\n\t\t/<([^>]+)>/gi,\n\t\t(_match, p1) => `<${unrewriteUrl(p1, context)}>`\n\t);\n}\n","import { rewriteJs } from \"@rewriters/js\";\nimport { ScramjetClient } from \"@client/index\";\nimport { String } from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient, self: Self) {\n\tclient.Proxy([\"setTimeout\", \"setInterval\"], {\n\t\tapply(ctx) {\n\t\t\tif (typeof ctx.args[0] !== \"function\") {\n\t\t\t\tconst code = String(ctx.args[0]);\n\t\t\t\t// @ts-expect-error - for some reason it doesn't recognize setTimeout(string, number)\n\t\t\t\tctx.args[0] = rewriteJs(\n\t\t\t\t\tcode,\n\t\t\t\t\t\"(setTimeout string eval)\",\n\t\t\t\t\tclient.context,\n\t\t\t\t\tclient.meta\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t});\n}\n","import { SCRAMJETCLIENT, SCRAMJETCLIENTNAME } from \"@/symbols\";\nimport { ProxyCtx, ScramjetClient } from \"@client/index\";\n\nenum RewriteType {\n\tInsert = 0,\n\tReplace = 1,\n}\n\ntype Rewrite = {\n\tstart: number;\n} & (\n\t| {\n\t\t\ttype: RewriteType.Insert;\n\t\t\tsize: number;\n\t }\n\t| {\n\t\t\ttype: RewriteType.Replace;\n\t\t\tend: number;\n\t\t\tstr: string;\n\t }\n);\n\nexport type SourceMaps = Record<string, Rewrite[]>;\n\nfunction getEnd(rewrite: Rewrite): number {\n\tif (rewrite.type === RewriteType.Insert) {\n\t\treturn rewrite.start + rewrite.size;\n\t} else if (rewrite.type === RewriteType.Replace) {\n\t\treturn rewrite.end;\n\t}\n\tthrow \"unreachable\";\n}\n\nfunction registerRewrites(\n\tclient: ScramjetClient,\n\tbuf: Array<number>,\n\ttag: string\n) {\n\tconst sourcemap = Uint8Array.from(buf);\n\tconst view = new DataView(sourcemap.buffer);\n\tconst decoder = new TextDecoder(\"utf-8\");\n\n\tconst rewrites: Rewrite[] = [];\n\n\tconst rewritelen = view.getUint32(0, true);\n\tlet cursor = 4;\n\tfor (let i = 0; i < rewritelen; i++) {\n\t\tconst start = view.getUint32(cursor, true);\n\t\tcursor += 4;\n\t\tconst size = view.getUint32(cursor, true);\n\t\tcursor += 4;\n\n\t\tconst type = view.getUint8(cursor) as RewriteType;\n\t\tcursor += 1;\n\n\t\tif (type == RewriteType.Insert) {\n\t\t\trewrites.push({ type, start, size });\n\t\t} else if (type == RewriteType.Replace) {\n\t\t\tconst end = start + size;\n\n\t\t\tconst oldLen = view.getUint32(cursor, true);\n\t\t\tcursor += 4;\n\n\t\t\tconst oldStr = decoder.decode(\n\t\t\t\tsourcemap.subarray(cursor, cursor + oldLen)\n\t\t\t);\n\n\t\t\trewrites.push({ type, start, end, str: oldStr });\n\t\t\tcursor += oldLen;\n\t\t}\n\t}\n\n\tclient.box.sourcemaps[tag] = rewrites;\n}\n\nconst SCRAMTAG = \"/*scramtag \";\n\nfunction extractTag(fn: string): [string, number, number] | null {\n\t// every function rewritten will have a scramtag comment\n\t// it will look like this:\n\t// function name()[possible whitespace]/*scramtag [index] [tag]*/[possible whitespace]{ ... }\n\n\tconst start = fn.indexOf(SCRAMTAG);\n\t// no scramtag, probably native function or stolen from scramjet\n\tif (start === -1) return null;\n\n\tconst end = fn.indexOf(\"*/\", start);\n\tif (end === -1) {\n\t\tconsole.log(fn, start, end);\n\t\tthrow new Error(\"unreachable\");\n\t}\n\n\tconst tag = fn.substring(start + 2, end).split(\" \");\n\n\tif (\n\t\ttag.length !== 3 ||\n\t\ttag[0] !== \"scramtag\" ||\n\t\t!Number.isSafeInteger(+tag[1])\n\t) {\n\t\tconsole.log(fn, start, end, tag);\n\t\tthrow new Error(\"invalid tag\");\n\t}\n\n\treturn [tag[2], start, +tag[1]];\n}\n\nfunction doUnrewrite(\n\tclient: ScramjetClient,\n\tctx: ProxyCtx<\"Function.prototype.toString\", \"apply\">\n) {\n\tconst stringified: string = ctx.fn.call(ctx.this);\n\n\tconst extracted = extractTag(stringified);\n\tif (!extracted) return ctx.return(stringified);\n\tconst [tag, tagOffset, tagStart] = extracted;\n\n\tconst fnStart = tagStart - tagOffset;\n\tconst fnEnd = fnStart + stringified.length;\n\tconst rewrites = client.box.sourcemaps[tag];\n\n\tif (!rewrites) {\n\t\tconsole.warn(\"failed to get rewrites for tag\", tag);\n\n\t\treturn ctx.return(stringified);\n\t}\n\n\tlet i = 0;\n\t// skip all rewrites in the file before the fn\n\twhile (i < rewrites.length) {\n\t\tif (rewrites[i].start < fnStart) i++;\n\t\telse break;\n\t}\n\n\tlet end = i;\n\twhile (end < rewrites.length) {\n\t\tif (getEnd(rewrites[end]) < fnEnd) end++;\n\t\telse break;\n\t}\n\tconst fnrewrites = rewrites.slice(i, end);\n\n\tlet newString = \"\";\n\tlet lastpos = 0;\n\n\tfor (const rewrite of fnrewrites) {\n\t\tnewString += stringified.slice(lastpos, rewrite.start - fnStart);\n\n\t\tif (rewrite.type === RewriteType.Insert) {\n\t\t\tlastpos = rewrite.start + rewrite.size - fnStart;\n\t\t} else if (rewrite.type === RewriteType.Replace) {\n\t\t\tnewString += rewrite.str;\n\t\t\tlastpos = rewrite.end - fnStart;\n\t\t} else {\n\t\t\tthrow \"unreachable\";\n\t\t}\n\t}\n\n\tnewString += stringified.slice(lastpos);\n\tnewString = newString.replace(`${SCRAMTAG}${tagStart} ${tag}*/`, \"\");\n\n\treturn ctx.return(newString);\n}\n\nexport const enabled = (client: ScramjetClient) =>\n\tclient.flagEnabled(\"sourcemaps\");\n\nexport default function (client: ScramjetClient, self: Self) {\n\t// every script will push a sourcemap\n\tObject.defineProperty(self, client.config.globals.pushsourcemapfn, {\n\t\tvalue: (buf: Array<number>, tag: string) => {\n\t\t\tconst before = performance.now();\n\t\t\tregisterRewrites(client, buf, tag);\n\t\t\tif (client.flagEnabled(\"rewriterLogs\")) {\n\t\t\t\tdbg.time(client.meta, before, `scramtag parse for ${tag}`);\n\t\t\t}\n\t\t},\n\t\tenumerable: false,\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n\n\t// when we rewrite javascript it will make function.toString leak internals\n\t// this can lead to double rewrites which is bad\n\tclient.Proxy(\"Function.prototype.toString\", {\n\t\tapply(ctx) {\n\t\t\tconst before = performance.now();\n\t\t\tdoUnrewrite(client, ctx);\n\t\t\t// dbg.time(client.meta, before, `scramtag unrewrite for ${ctx.fn.name}`);\n\t\t},\n\t});\n}\n","import { ScramjetClient } from \"@client/index\";\n\nexport default function (client: ScramjetClient, _self: GlobalThis) {\n\tclient.Proxy(\"Worker\", {\n\t\tconstruct(ctx) {\n\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0], {\n\t\t\t\tdestination: \"worker\",\n\t\t\t\tisModule: ctx.args[1]?.type === \"module\",\n\t\t\t});\n\n\t\t\tconst worker = ctx.call();\n\t\t\t// const conn = new BareMuxConnection();\n\n\t\t\t// (async () => {\n\t\t\t// \tconst port = await conn.getInnerPort();\n\t\t\t// \tclient.natives.call(\n\t\t\t// \t\t\"Worker.prototype.postMessage\",\n\t\t\t// \t\tworker,\n\t\t\t// \t\t{\n\t\t\t// \t\t\t$scramjet$type: \"baremuxinit\",\n\t\t\t// \t\t\tport,\n\t\t\t// \t\t},\n\t\t\t// \t\t[port]\n\t\t\t// \t);\n\t\t\t// })();\n\t\t},\n\t});\n\n\t// sharedworkers can only be constructed from window\n\tclient.Proxy(\"SharedWorker\", {\n\t\tconstruct(ctx) {\n\t\t\tconst isModule =\n\t\t\t\ttypeof ctx.args[1] === \"object\" && ctx.args[1]?.type === \"module\";\n\n\t\t\tctx.args[0] = client.rewriteUrl(ctx.args[0], {\n\t\t\t\tdestination: \"sharedworker\",\n\t\t\t\tisModule,\n\t\t\t});\n\n\t\t\tif (ctx.args[1] && typeof ctx.args[1] === \"string\")\n\t\t\t\tctx.args[1] = `${client.url.origin}@${ctx.args[1]}`;\n\n\t\t\tif (ctx.args[1] && typeof ctx.args[1] === \"object\") {\n\t\t\t\tif (ctx.args[1].name) {\n\t\t\t\t\tctx.args[1].name = `${client.url.origin}@${ctx.args[1].name}`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst worker = ctx.call();\n\t\t\t// const conn = new BareMuxConnection();\n\n\t\t\t// (async () => {\n\t\t\t// \tconst port = await conn.getInnerPort();\n\t\t\t// \tclient.natives.call(\n\t\t\t// \t\t\"MessagePort.prototype.postMessage\",\n\t\t\t// \t\tworker.port,\n\t\t\t// \t\t{\n\t\t\t// \t\t\t$scramjet$type: \"baremuxinit\",\n\t\t\t// \t\t\tport,\n\t\t\t// \t\t},\n\t\t\t// \t\t[port]\n\t\t\t// \t);\n\t\t\t// })();\n\t\t},\n\t});\n\n\tclient.Proxy(\"Worklet.prototype.addModule\", {\n\t\tapply(ctx) {\n\t\t\tif (ctx.args[0]) ctx.args[0] = client.rewriteUrl(ctx.args[0]);\n\t\t},\n\t});\n}\n","import { iswindow } from \"@client/entry\";\nimport { SCRAMJETCLIENT } from \"@/symbols\";\nimport { ScramjetClient } from \"@client/index\";\n// import { argdbg } from \"@client/shared/err\";\nimport { indirectEval } from \"@client/shared/eval\";\nimport { Object_defineProperty } from \"@/shared/snapshot\";\n\nexport function createWrapFn(client: ScramjetClient, self: GlobalThis) {\n\tlet wrappedParent: GlobalThis | null = null;\n\tlet wrappedTop: GlobalThis | null = null;\n\tif (iswindow) {\n\t\ttry {\n\t\t\tif (SCRAMJETCLIENT in self.parent) {\n\t\t\t\t// ... then we're in a subframe, and the parent frame is also in a proxy context, so we should return its proxy\n\t\t\t\twrappedParent = self.parent;\n\t\t\t} else {\n\t\t\t\t// ... then we should pretend we aren't nested and return the current window\n\t\t\t\twrappedParent = self;\n\t\t\t}\n\t\t} catch {\n\t\t\t// accessing self.parent can throw if it's cross-origin, in which case we should also pretend we aren't nested\n\t\t\twrappedParent = self;\n\t\t}\n\t\t// instead of returning top, we need to return the uppermost parent that's inside a scramjet context\n\t\tlet current = self;\n\t\tfor (;;) {\n\t\t\tconst test = current.parent.self;\n\t\t\tif (test === current) break; // there is no parent, actual or emulated.\n\n\t\t\ttry {\n\t\t\t\t// ... then `test` represents a window outside of the proxy context, and therefore `current` is the topmost window in the proxy context\n\t\t\t\tif (!(SCRAMJETCLIENT in test)) break;\n\t\t\t} catch {\n\t\t\t\t// accessing test can throw if it's cross-origin, in which case we should also break\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// test is also insde a proxy, so we should continue up the chain\n\t\t\tcurrent = test;\n\t\t}\n\t\twrappedTop = current;\n\t}\n\n\treturn function (identifier: any, strict: boolean) {\n\t\tif (identifier === self.location) return client.locationProxy;\n\t\tif (identifier === self.eval) return indirectEval.bind(client, strict);\n\t\tif (iswindow) {\n\t\t\tif (identifier === self.parent) {\n\t\t\t\treturn wrappedParent;\n\t\t\t} else if (identifier === self.top) {\n\t\t\t\treturn wrappedTop;\n\t\t\t}\n\t\t}\n\t\treturn identifier;\n\t};\n}\n\nexport const order = 4;\nexport default function (client: ScramjetClient, self: GlobalThis) {\n\tObject_defineProperty(self, client.config.globals.wrapfn, {\n\t\tvalue: client.wrapfn,\n\t\twritable: false,\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t});\n\tObject_defineProperty(self, client.config.globals.wrappropertyfn, {\n\t\tvalue: function (str) {\n\t\t\tif (\n\t\t\t\tstr === \"location\" ||\n\t\t\t\tstr === \"parent\" ||\n\t\t\t\tstr === \"top\" ||\n\t\t\t\tstr === \"eval\"\n\t\t\t)\n\t\t\t\treturn client.config.globals.wrappropertybase + str;\n\n\t\t\treturn str;\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t});\n\tObject_defineProperty(self, client.config.globals.cleanrestfn, {\n\t\tvalue: function (obj) {\n\t\t\t// TODO\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t});\n\n\tObject_defineProperty(\n\t\tself.Object.prototype,\n\t\tclient.config.globals.wrappropertybase + \"location\",\n\t\t{\n\t\t\tget: function () {\n\t\t\t\t// if (this.location.constructor.toString().includes(\"Location\")) {\n\n\t\t\t\tif (this === self || this === self.document) {\n\t\t\t\t\treturn client.locationProxy;\n\t\t\t\t}\n\n\t\t\t\treturn this.location;\n\t\t\t},\n\t\t\tset(value: any) {\n\t\t\t\tif (this === self || this === self.document) {\n\t\t\t\t\tclient.url = value;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.location = value;\n\t\t\t},\n\t\t\tconfigurable: false,\n\t\t\tenumerable: false,\n\t\t}\n\t);\n\tObject_defineProperty(\n\t\tself.Object.prototype,\n\t\tclient.config.globals.wrappropertybase + \"parent\",\n\t\t{\n\t\t\tget: function () {\n\t\t\t\treturn client.wrapfn(this.parent, false);\n\t\t\t},\n\t\t\tset(value: any) {\n\t\t\t\t// i guess??\n\t\t\t\tthis.parent = value;\n\t\t\t},\n\t\t\tconfigurable: false,\n\t\t\tenumerable: false,\n\t\t}\n\t);\n\tObject_defineProperty(\n\t\tself.Object.prototype,\n\t\tclient.config.globals.wrappropertybase + \"top\",\n\t\t{\n\t\t\tget: function () {\n\t\t\t\treturn client.wrapfn(this.top, false);\n\t\t\t},\n\t\t\tset(value: any) {\n\t\t\t\tthis.top = value;\n\t\t\t},\n\t\t\tconfigurable: false,\n\t\t\tenumerable: false,\n\t\t}\n\t);\n\tObject_defineProperty(\n\t\tself.Object.prototype,\n\t\tclient.config.globals.wrappropertybase + \"eval\",\n\t\t{\n\t\t\tget: function () {\n\t\t\t\treturn client.wrapfn(this.eval, true);\n\t\t\t},\n\t\t\tset(value: any) {\n\t\t\t\tthis.eval = value;\n\t\t\t},\n\t\t\tconfigurable: false,\n\t\t\tenumerable: false,\n\t\t}\n\t);\n\n\tself.$scramitize = function (v) {\n\t\tconst t = typeof v;\n\t\tif (t === \"object\" && v !== null) {\n\t\t\tif (v === location) debugger;\n\t\t\tif (iswindow) {\n\t\t\t\t// if (v === self.parent) debugger;\n\t\t\t\tif (v === self.top) debugger;\n\t\t\t}\n\t\t} else if (t === \"string\") {\n\t\t\tif (v.includes(\"scramjet\")) debugger;\n\t\t\tif (v.includes(\"~/sj\")) debugger;\n\t\t\tif (v.includes(location.origin)) debugger;\n\t\t}\n\n\t\treturn v;\n\t};\n\n\t// location = \"...\" can't be rewritten as wrapfn(location) = ..., so instead it will actually be rewritten as\n\t// ((t)=>$scramjet$tryset(location,\"+=\",t)||location+=t)(...);\n\t// it has to be a discrete function because there's always the possibility that \"location\" is a local variable\n\t// we have to use an IIFE to avoid duplicating side-effects in the getter\n\tObject_defineProperty(self, client.config.globals.trysetfn, {\n\t\tvalue: function (lhs: any, op: string, rhs: any) {\n\t\t\t// TODO: not cross frame safe\n\t\t\tif (lhs instanceof self.Location) {\n\t\t\t\t// @ts-ignore\n\t\t\t\tclient.locationProxy.href = rhs;\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\twritable: false,\n\t\tconfigurable: false,\n\t});\n}\n","import { IncrementalHtmlRewriter } from \"@/shared\";\nimport { ScramjetClient } from \"./client\";\nimport { SourceMaps } from \"./shared/sourcemaps\";\n\nexport class SingletonBox {\n\tclients: ScramjetClient[] = [];\n\tglobals: Map<Self, ScramjetClient> = new Map();\n\tdocuments: Map<Document, ScramjetClient> = new Map();\n\tlocations: Map<Location, ScramjetClient> = new Map();\n\twriteRewriters = new WeakMap<Document, IncrementalHtmlRewriter>();\n\n\tctors: Record<string, Function[]> = {};\n\n\tsourcemaps: SourceMaps = {};\n\n\tconstructor(public ownerclient: ScramjetClient) {}\n\n\tregisterClient(client: ScramjetClient, global: Self) {\n\t\tthis.clients.push(client);\n\t\tthis.globals.set(global, client);\n\t\tthis.documents.set(global.document, client);\n\t\tthis.locations.set(global.location, client);\n\n\t\tObject.getOwnPropertyNames(global).forEach((prop) => {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(global, prop);\n\t\t\tif (desc && typeof desc.value === \"function\") {\n\t\t\t\tif (!this.ctors[prop]) this.ctors[prop] = [];\n\t\t\t\tthis.ctors[prop].push(desc.value);\n\t\t\t}\n\t\t});\n\t}\n\n\tinstanceof(obj: any, name: string) {\n\t\tconst ctors = this.ctors[name];\n\t\tif (!ctors) throw new Error(`No constructors for ${name} found`);\n\t\tfor (const ctor of ctors) {\n\t\t\tif (obj instanceof ctor) return true;\n\t\t}\n\t\treturn false;\n\t}\n}\n","import { ScramjetClient } from \"@client/index\";\nimport { String } from \"@/shared/snapshot\";\n\nexport default function (client: ScramjetClient) {\n\tclient.Proxy(\"importScripts\", {\n\t\tapply(ctx) {\n\t\t\tfor (const i in ctx.args) {\n\t\t\t\tconst url = String(ctx.args[i]);\n\t\t\t\tctx.args[i] = client.rewriteUrl(url);\n\t\t\t}\n\t\t},\n\t});\n}\n","import { BareResponse } from \"@mercuryworkshop/proxy-transports\";\nimport {\n\tBodyType,\n\tScramjetFetchHandler,\n\tScramjetFetchParsed,\n\tScramjetFetchRequest,\n} from \".\";\nimport {\n\tflagEnabled,\n\tisHtmlMimeType,\n\tisJavascriptMimeType,\n\trewriteCss,\n\trewriteHtml,\n\trewriteJs,\n\trewriteWorkers,\n} from \"@/shared\";\nimport { sniffEncoding } from \"@/shared/sniffEncoding\";\nimport { _TextDecoder } from \"@/shared/snapshot\";\n\nexport async function rewriteBody(\n\thandler: ScramjetFetchHandler,\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed,\n\tresponse: BareResponse\n): Promise<BodyType> {\n\tswitch (parsed.destination) {\n\t\tcase \"iframe\":\n\t\tcase \"document\":\n\t\t\tif (isHtmlMimeType(response.headers.get(\"content-type\") ?? \"\")) {\n\t\t\t\tconst buf = await response.arrayBuffer();\n\t\t\t\tconst bytes = new Uint8Array(buf);\n\t\t\t\tconst encoding = sniffEncoding(\n\t\t\t\t\tbytes,\n\t\t\t\t\tresponse.headers.get(\"content-type\")\n\t\t\t\t);\n\t\t\t\tconst htmlContent = new _TextDecoder(encoding).decode(bytes);\n\n\t\t\t\treturn rewriteHtml(htmlContent, handler.context, parsed.meta, {\n\t\t\t\t\tloadScripts: true,\n\t\t\t\t\tinline: true,\n\t\t\t\t\tsource: parsed.url.href,\n\t\t\t\t\theaders: response.rawHeaders,\n\t\t\t\t\t// reasonably confident that a document fetch is impossible without a client\n\t\t\t\t\thistory: parsed.trackedClient!.history,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn response.body;\n\t\t\t}\n\t\tcase \"script\": {\n\t\t\t// do not attempt to rewrite a 404 response\n\t\t\tif (response.ok) {\n\t\t\t\tconst ct = response.headers.get(\"content-type\");\n\t\t\t\t// don't rewrite invalid module scripts when the server declares a non-JS type\n\t\t\t\tif (parsed.isModule && ct && !isJavascriptMimeType(ct)) {\n\t\t\t\t\treturn response.body;\n\t\t\t\t}\n\n\t\t\t\tlet rewritten = rewriteJs(\n\t\t\t\t\tnew Uint8Array(await response.arrayBuffer()),\n\t\t\t\t\tresponse.url,\n\t\t\t\t\thandler.context,\n\t\t\t\t\tparsed.meta,\n\t\t\t\t\tparsed.isModule\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\tflagEnabled(\"debugSourceURL\", handler.context, parsed.meta.origin)\n\t\t\t\t) {\n\t\t\t\t\tif (rewritten instanceof Uint8Array) {\n\t\t\t\t\t\trewritten = new TextDecoder().decode(rewritten);\n\t\t\t\t\t}\n\t\t\t\t\trewritten += `\\n//# sourceURL=${parsed.url.href}`;\n\t\t\t\t}\n\n\t\t\t\treturn rewritten as unknown as ArrayBuffer;\n\t\t\t}\n\t\t\treturn response.body;\n\t\t}\n\t\tcase \"style\":\n\t\t\treturn rewriteCss(await response.text(), handler.context, parsed.meta);\n\t\tcase \"sharedworker\":\n\t\tcase \"worker\":\n\t\t\treturn rewriteWorkers(\n\t\t\t\thandler.context,\n\t\t\t\tnew Uint8Array(await response.arrayBuffer()),\n\t\t\t\tparsed.isModule,\n\t\t\t\tresponse.url,\n\t\t\t\tparsed.meta\n\t\t\t);\n\t\tdefault:\n\t\t\treturn response.body;\n\t}\n}\n","import {\n\tBareRequestInit,\n\tBareResponse,\n\tRawHeaders,\n} from \"@mercuryworkshop/proxy-transports\";\nimport {\n\tBodyType,\n\tScramjetFetchHandler,\n\tScramjetFetchParsed,\n\tScramjetFetchRequest,\n\tScramjetFetchResponse,\n} from \".\";\nimport { rewriteUrl, unrewriteBlob, unrewriteUrl } from \"@rewriters/url\";\nimport { QP, parseRequest } from \"./parse\";\nimport { ScramjetHeaders } from \"@/shared\";\nimport { isDocument, isRedirect, normalizeContentType } from \"./util\";\nimport { rewriteBody } from \"./body\";\nimport { Tap } from \"@/Tap\";\nimport {\n\tcomputeFetchSite,\n\trewriteRequestHeaders,\n\trewriteResponseHeaders,\n\tworstFetchSite,\n} from \"./headers\";\nimport { _URL } from \"@/shared/snapshot\";\n\nexport async function doHandleFetch(\n\thandler: ScramjetFetchHandler,\n\trequest: ScramjetFetchRequest\n): Promise<ScramjetFetchResponse> {\n\tconst parsed = parseRequest(request, handler);\n\n\tif (isBlobOrDataUrl(parsed.url)) {\n\t\treturn handleBlobOrDataUrlFetch(handler, request, parsed);\n\t}\n\n\tconst interceptCtx: typeof handler.hooks.fetch.intercept.context = {\n\t\trequest,\n\t\tparsed,\n\t};\n\tconst interceptProps: typeof handler.hooks.fetch.intercept.props = {};\n\tawait Tap.dispatch(\n\t\thandler.hooks.fetch.intercept,\n\t\tinterceptCtx,\n\t\tinterceptProps\n\t);\n\tif (interceptProps.response) {\n\t\treturn interceptProps.response;\n\t}\n\n\tif (parsed.hadExtraParams && isDocument(parsed)) {\n\t\tconst location = rewriteUrl(parsed.url, handler.context, parsed.meta);\n\t\tif (location !== request.rawUrl.href) {\n\t\t\tconst responseHeaders = new ScramjetHeaders();\n\t\t\tresponseHeaders.set(\"location\", location);\n\t\t\treturn {\n\t\t\t\tbody: \"\",\n\t\t\t\theaders: responseHeaders,\n\t\t\t\tstatus: 307,\n\t\t\t\tstatusText: \"Temporary Redirect\",\n\t\t\t};\n\t\t}\n\t}\n\n\tconst newheaders = rewriteRequestHeaders(request, handler, parsed);\n\n\tlet responseBody: BodyType;\n\tconst response = await doNetworkFetch(handler, request, parsed, newheaders);\n\n\t// set-cookie needs to take the raw headers. after this, we can flatten the headers into a ScramjetHeaders object\n\tawait handleCookies(handler, request, parsed, response.rawHeaders);\n\n\tif (isDocument(parsed)) {\n\t\t// for document.referer\n\t\tparsed.trackedClient?.history.push({\n\t\t\turl: parsed.url.href,\n\t\t\trefererPolicy: ScramjetHeaders.fromRawHeaders(response.rawHeaders).get(\n\t\t\t\t\"referrer-policy\"\n\t\t\t),\n\t\t});\n\t}\n\n\tconst responseHeaders = await rewriteResponseHeaders(\n\t\thandler,\n\t\trequest,\n\t\tparsed,\n\t\tresponse.rawHeaders\n\t);\n\n\tif (isRedirect(response)) {\n\t\tconst location = new _URL(responseHeaders.get(\"location\"));\n\t\tconst referer = newheaders.get(\"Referer\");\n\n\t\t// Compute the page (initiator) URL once. The initiator never changes\n\t\t// through a redirect chain, so prefer the propagated `sj$io` value if\n\t\t// the chain has already started; otherwise fall back to rawClientUrl\n\t\t// or rawReferrer (which point at the page for the *first* hop).\n\t\tlet initiatorOriginUrl: URL | undefined;\n\t\tif (parsed.fetchInitiatorOrigin) {\n\t\t\ttry {\n\t\t\t\tinitiatorOriginUrl = new URL(parsed.fetchInitiatorOrigin);\n\t\t\t} catch {\n\t\t\t\tinitiatorOriginUrl = undefined;\n\t\t\t}\n\t\t}\n\t\tif (!initiatorOriginUrl) {\n\t\t\tconst rawClient =\n\t\t\t\trequest.rawClientUrl ||\n\t\t\t\t(request.rawReferrer ? new URL(request.rawReferrer) : undefined);\n\t\t\tinitiatorOriginUrl =\n\t\t\t\trawClient &&\n\t\t\t\trawClient.pathname.startsWith(handler.context.prefix.pathname)\n\t\t\t\t\t? new URL(unrewriteUrl(rawClient, handler.context))\n\t\t\t\t\t: undefined;\n\t\t}\n\n\t\t// Cross-site redirect poisoning (SameSite): if this hop was cross-site, or a\n\t\t// previous hop already was, propagate the flag so the final destination\n\t\t// enforces cross-site SameSite restrictions.\n\t\tconst crossSiteRedirect =\n\t\t\tparsed.crossSiteRedirect ||\n\t\t\t(!!initiatorOriginUrl &&\n\t\t\t\tregistrableDomainForRedirect(initiatorOriginUrl.hostname) !==\n\t\t\t\t\tregistrableDomainForRedirect(parsed.url.hostname));\n\n\t\t// Sec-Fetch-Site chain state: combine the worst classification seen so\n\t\t// far with the relation between the initiator and *this* hop's URL.\n\t\t// Once \"cross-site\" appears, it sticks for the rest of the chain.\n\t\tlet propagatedFetchSite: \"same-site\" | \"cross-site\" | undefined;\n\t\tif (initiatorOriginUrl) {\n\t\t\tconst hopSite = computeFetchSite(initiatorOriginUrl, parsed.url);\n\t\t\tconst propagated = parsed.fetchSiteState\n\t\t\t\t? worstFetchSite(parsed.fetchSiteState, hopSite)\n\t\t\t\t: hopSite;\n\t\t\tif (propagated !== \"same-origin\" && propagated !== \"none\") {\n\t\t\t\tpropagatedFetchSite = propagated;\n\t\t\t}\n\t\t}\n\n\t\tlocation.searchParams.set(QP.referrerSource, referer ?? \"\");\n\t\tif (crossSiteRedirect) location.searchParams.set(QP.crossSiteRedirect, \"1\");\n\t\tif (propagatedFetchSite)\n\t\t\tlocation.searchParams.set(QP.fetchSite, propagatedFetchSite);\n\t\tif (initiatorOriginUrl)\n\t\t\tlocation.searchParams.set(QP.initiatorOrigin, initiatorOriginUrl.origin);\n\t\tif (parsed.isModule) location.searchParams.set(QP.isModule, \"module\");\n\n\t\tresponseHeaders.set(\"location\", location.href);\n\t}\n\n\tif (response.body && !isRedirect(response)) {\n\t\tresponseBody = await rewriteBody(handler, request, parsed, response);\n\n\t\t// After rewriting HTML, the body is a JS string which will be encoded as\n\t\t// UTF-8 by the Response constructor. Normalize the Content-Type charset so\n\t\t// the browser doesn't try to decode UTF-8 bytes with the original encoding.\n\t\tnormalizeContentType(parsed, responseHeaders);\n\t}\n\n\tconst respcontext: typeof handler.hooks.fetch.response.context = {\n\t\trequest,\n\t\tparsed,\n\t};\n\tconst respprops: typeof handler.hooks.fetch.response.props = {\n\t\tresponse: {\n\t\t\tbody: responseBody,\n\t\t\theaders: responseHeaders,\n\t\t\tstatus: response.status,\n\t\t\tstatusText: response.statusText,\n\t\t},\n\t};\n\n\tawait Tap.dispatch(handler.hooks.fetch.response, respcontext, respprops);\n\n\treturn respprops.response;\n}\n\nexport async function doNetworkFetch(\n\thandler: ScramjetFetchHandler,\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed,\n\tnewheaders: ScramjetHeaders\n): Promise<BareResponse> {\n\tconst init = {\n\t\tbody: request.body,\n\t\theaders: newheaders.toRawHeaders(),\n\t\tmethod: request.method,\n\t\tredirect: \"manual\",\n\t} as BareRequestInit;\n\n\tconst reqcontext: typeof handler.hooks.fetch.request.context = {\n\t\tclient: handler.client,\n\t\trequest,\n\t\tparsed,\n\t};\n\tconst reqprops: typeof handler.hooks.fetch.request.props = {\n\t\tinit,\n\t\turl: parsed.url,\n\t};\n\tawait Tap.dispatch(handler.hooks.fetch.request, reqcontext, reqprops);\n\tlet earlyResponse: BareResponse;\n\n\tif (reqprops.earlyResponse) {\n\t\tconst resp = reqprops.earlyResponse;\n\t\tif (\"rawHeaders\" in resp) {\n\t\t\t// it's a bare response\n\t\t\tearlyResponse = resp;\n\t\t} else {\n\t\t\t// it's a native response, convert it\n\t\t\tearlyResponse = BareResponse.fromNativeResponse(resp);\n\t\t}\n\t} else {\n\t\tearlyResponse = await handler.client.fetch(reqprops.url, reqprops.init);\n\t}\n\n\tconst prerespcontext: typeof handler.hooks.fetch.preresponse.context = {\n\t\trequest,\n\t\tparsed,\n\t};\n\n\tconst prerespprops: typeof handler.hooks.fetch.preresponse.props = {\n\t\tresponse: earlyResponse,\n\t};\n\n\tawait Tap.dispatch(\n\t\thandler.hooks.fetch.preresponse,\n\t\tprerespcontext,\n\t\tprerespprops\n\t);\n\n\treturn prerespprops.response;\n}\n\nfunction isBlobOrDataUrl(url: _URL): boolean {\n\treturn url.protocol === \"blob:\" || url.protocol === \"data:\";\n}\n\nasync function handleBlobOrDataUrlFetch(\n\thandler: ScramjetFetchHandler,\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed\n): Promise<ScramjetFetchResponse> {\n\tlet dataUrl = request.rawUrl.pathname.substring(\n\t\thandler.context.prefix.pathname.length\n\t);\n\tlet response: BareResponse;\n\n\tif (dataUrl.startsWith(\"blob:\")) {\n\t\tdataUrl = unrewriteBlob(dataUrl, handler.context, parsed.meta);\n\t\tresponse = BareResponse.fromNativeResponse(\n\t\t\tawait handler.fetchBlobUrl(dataUrl)\n\t\t);\n\t} else {\n\t\tresponse = BareResponse.fromNativeResponse(\n\t\t\tawait handler.fetchDataUrl(dataUrl)\n\t\t);\n\t}\n\n\tlet body: BodyType;\n\tif (response.body) {\n\t\tbody = await rewriteBody(\n\t\t\thandler,\n\t\t\trequest,\n\t\t\tparsed,\n\t\t\tresponse as BareResponse\n\t\t);\n\t}\n\tconst headers = ScramjetHeaders.fromRawHeaders(response.rawHeaders);\n\n\t// blob urls actually *can* set charsets, so we need to normalize them if it goes down the html path\n\tnormalizeContentType(parsed, headers);\n\n\tif (handler.crossOriginIsolated) {\n\t\theaders.set(\"Cross-Origin-Opener-Policy\", \"same-origin\");\n\t\theaders.set(\"Cross-Origin-Embedder-Policy\", \"require-corp\");\n\t}\n\n\treturn {\n\t\tbody,\n\t\tstatus: response.status,\n\t\tstatusText: response.statusText,\n\t\theaders: headers,\n\t};\n}\n\n/** Simplified registrable-domain check used for cross-site redirect detection. */\nexport function registrableDomainForRedirect(hostname: string): string {\n\tif (/^[\\d.]+$/.test(hostname) || hostname.includes(\":\")) return hostname;\n\tconst labels = hostname.split(\".\");\n\tif (labels.length <= 1) return hostname;\n\tif (labels[0] === \"www\") return labels.slice(1).join(\".\");\n\tif (labels.length === 2) return hostname;\n\treturn labels.slice(-2).join(\".\");\n}\n\nasync function handleCookies(\n\thandler: ScramjetFetchHandler,\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed,\n\trawHeaders: RawHeaders\n) {\n\tconst cookies = [];\n\n\tfor (const [key, value] of rawHeaders) {\n\t\tif (key.toLowerCase() !== \"set-cookie\") continue;\n\n\t\thandler.context.cookieJar.setCookies(value, parsed.url);\n\t\tcookies.push({\n\t\t\turl: parsed.url,\n\t\t\tcookie: value,\n\t\t});\n\t}\n\n\tif (cookies.length === 0) {\n\t\treturn;\n\t}\n\n\tawait handler.sendSetCookie(cookies, {\n\t\tdestination: parsed.destination,\n\t});\n}\n","import {\n\trewriteUrl,\n\tScramjetContext,\n\tScramjetHeaders,\n\tunrewriteUrl,\n\tURLMeta,\n} from \"@/shared\";\nimport {\n\tScramjetFetchHandler,\n\tScramjetFetchParsed,\n\tScramjetFetchRequest,\n} from \".\";\nimport { RawHeaders } from \"@mercuryworkshop/proxy-transports\";\nimport { _URL, _Set } from \"@/shared/snapshot\";\nimport { createReferrerString } from \"./util\";\n\n/**\n * Headers for security policy features that haven't been emulated yet\n */\nconst SEC_HEADERS = new _Set([\n\t\"cross-origin-embedder-policy\",\n\t\"cross-origin-opener-policy\",\n\t\"cross-origin-resource-policy\",\n\t\"content-security-policy\",\n\t\"content-security-policy-report-only\",\n\t\"expect-ct\",\n\t\"feature-policy\",\n\t\"origin-isolation\",\n\t\"strict-transport-security\",\n\t\"upgrade-insecure-requests\",\n\t\"x-content-type-options\",\n\t\"x-download-options\",\n\t\"x-frame-options\",\n\t\"x-permitted-cross-domain-policies\",\n\t\"x-powered-by\",\n\t\"x-xss-protection\",\n\t// This needs to be emulated, but for right now it isn't that important of a feature to be worried about\n\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Clear-Site-Data\n\t\"clear-site-data\",\n]) as _Set<string>;\n\n/**\n * Headers that are actually URLs that need to be rewritten\n */\nconst URL_HEADERS = new _Set([\n\t\"location\",\n\t\"content-location\",\n\t\"referer\",\n]) as _Set<string>;\n\nfunction rewriteLinkHeader(\n\tlink: string,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n) {\n\treturn link.replace(/<([^>]+)>/gi, (_match, p1) => {\n\t\treturn `<${rewriteUrl(p1, context, meta)}>`;\n\t});\n}\n\nexport async function rewriteResponseHeaders(\n\thandler: ScramjetFetchHandler,\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed,\n\trawHeaders: RawHeaders\n): Promise<ScramjetHeaders> {\n\tconst headers = ScramjetHeaders.fromRawHeaders(rawHeaders);\n\n\tfor (const cspHeader of SEC_HEADERS) {\n\t\theaders.delete(cspHeader);\n\t}\n\n\tfor (const urlHeader of URL_HEADERS) {\n\t\tif (headers.has(urlHeader)) {\n\t\t\tconst url = headers.get(urlHeader)!;\n\t\t\tconst rewrittenUrl = rewriteUrl(url, handler.context, parsed.meta);\n\t\t\theaders.set(urlHeader, rewrittenUrl);\n\t\t}\n\t}\n\n\tif (headers.has(\"link\")) {\n\t\tconst link = headers.get(\"link\")!;\n\t\tconst rewritten = rewriteLinkHeader(link, handler.context, parsed.meta);\n\t\theaders.set(\"link\", rewritten);\n\t}\n\n\tif (headers.get(\"accept\") === \"text/event-stream\") {\n\t\theaders.set(\"content-type\", \"text/event-stream\");\n\t}\n\n\t// scramjet runtime can use features that permissions-policy blocks\n\theaders.delete(\"permissions-policy\");\n\n\t// we handle this ourselves\n\theaders.delete(\"set-cookie\");\n\n\tif (\n\t\thandler.crossOriginIsolated &&\n\t\t[\n\t\t\t\"document\",\n\t\t\t\"iframe\",\n\t\t\t\"worker\",\n\t\t\t\"sharedworker\",\n\t\t\t\"style\",\n\t\t\t\"script\",\n\t\t].includes(parsed.destination)\n\t) {\n\t\theaders.set(\"Cross-Origin-Embedder-Policy\", \"require-corp\");\n\t\theaders.set(\"Cross-Origin-Opener-Policy\", \"same-origin\");\n\t}\n\n\tif (parsed.destination === \"document\" || parsed.destination === \"iframe\") {\n\t\theaders.set(\"Referrer-Policy\", \"unsafe-url\");\n\t}\n\n\treturn headers;\n}\n\nexport function rewriteRequestHeaders(\n\trequest: ScramjetFetchRequest,\n\thandler: ScramjetFetchHandler,\n\tparsed: ScramjetFetchParsed\n): ScramjetHeaders {\n\tconst headers = request.initialHeaders.clone();\n\n\t// avoid leaking the scramjet referer\n\theaders.delete(\"Referer\");\n\n\tconst rawOriginUrl =\n\t\tparsed.referrerSourceUrl !== undefined\n\t\t\t? parsed.referrerSourceUrl\n\t\t\t: request.rawClientUrl ||\n\t\t\t\t(request.rawReferrer ? new _URL(request.rawReferrer) : undefined);\n\tconst originUrl =\n\t\trawOriginUrl &&\n\t\trawOriginUrl.pathname.startsWith(handler.context.prefix.pathname)\n\t\t\t? new _URL(unrewriteUrl(rawOriginUrl, handler.context))\n\t\t\t: rawOriginUrl;\n\n\tif (\n\t\trawOriginUrl &&\n\t\trawOriginUrl.pathname.startsWith(handler.context.prefix.pathname)\n\t) {\n\t\theaders.set(\"Origin\", originUrl.origin);\n\n\t\tconst referer = createReferrerString(\n\t\t\toriginUrl,\n\t\t\tparsed.url,\n\t\t\tparsed.referrerPolicy ?? null\n\t\t);\n\t\tif (referer) headers.set(\"Referer\", referer);\n\t}\n\n\tconst sameSiteContext = computeSameSiteContext(request, parsed, originUrl);\n\tconst cookies = handler.context.cookieJar.getCookies(\n\t\tparsed.url,\n\t\tfalse,\n\t\tsameSiteContext\n\t);\n\n\tif (cookies.length) {\n\t\theaders.set(\"Cookie\", cookies);\n\t}\n\n\tapplyFetchMetadataHeaders(headers, request, parsed, handler);\n\n\treturn headers;\n}\n\n/**\n * Compute and attach the Sec-Fetch-* request metadata headers, per\n * https://w3c.github.io/webappsec-fetch-metadata/.\n *\n * Browsers compute these based on the proxy URL space (page → service worker),\n * which is meaningless to the destination. We strip those values and recompute\n * based on the logical (unrewritten) URLs so that the destination sees\n * realistic Sec-Fetch-Site / -Mode / -Dest / -User values.\n *\n * These headers are only attached when the destination URL is a \"potentially\n * trustworthy\" URL — matching Chrome's behaviour of omitting them when sending\n * to plain http:// non-loopback destinations.\n */\nfunction applyFetchMetadataHeaders(\n\theaders: ScramjetHeaders,\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed,\n\thandler: ScramjetFetchHandler\n) {\n\t// Strip browser-attached Sec-Fetch-* (computed from the proxy URL space).\n\theaders.delete(\"sec-fetch-site\");\n\theaders.delete(\"sec-fetch-mode\");\n\theaders.delete(\"sec-fetch-dest\");\n\theaders.delete(\"sec-fetch-user\");\n\theaders.delete(\"sec-fetch-storage-access\");\n\n\tif (!isPotentiallyTrustworthy(parsed.url)) {\n\t\treturn;\n\t}\n\n\t// Determine the request initiator's origin. Unlike the Referer header,\n\t// this never gets stripped by referrer policy: it's the page that actually\n\t// initiated the chain. Prefer the propagated initiator origin for\n\t// post-redirect requests; otherwise fall back to rawClientUrl/rawReferrer.\n\tconst initiatorUrl = resolveFetchInitiatorUrl(request, parsed, handler);\n\n\t// Sec-Fetch-Site: relationship between request initiator's origin and the URL.\n\tlet site: \"none\" | \"same-origin\" | \"same-site\" | \"cross-site\";\n\tif (!initiatorUrl) {\n\t\t// No initiator (e.g., user typed URL, or browser-initiated request).\n\t\tsite = \"none\";\n\t} else {\n\t\tconst immediate = computeFetchSite(initiatorUrl, parsed.url);\n\t\tsite = parsed.fetchSiteState\n\t\t\t? worstFetchSite(parsed.fetchSiteState, immediate)\n\t\t\t: immediate;\n\t}\n\theaders.set(\"Sec-Fetch-Site\", site);\n\n\t// Sec-Fetch-Mode: the request's mode. `event.request.mode` from the SW is\n\t// computed against the proxy URL space (always same-origin to the page) so\n\t// it's not safe to trust for fetch / Request API calls; we prefer the\n\t// `sj$mode` value the client-side proxy stamped onto the URL when present\n\t// and fall back to a destination-based default for everything else.\n\theaders.set(\"Sec-Fetch-Mode\", computeFetchMode(request, parsed));\n\n\tif (parsed.destination === \"iframe\") {\n\t\tif (!parsed.isIframe) {\n\t\t\t// emulate a top-level navigation\n\t\t\theaders.set(\"Sec-Fetch-Dest\", \"document\");\n\t\t} else {\n\t\t\theaders.set(\"Sec-Fetch-Dest\", \"iframe\");\n\t\t}\n\t} else {\n\t\theaders.set(\"Sec-Fetch-Dest\", parsed.destination || \"empty\");\n\t}\n\n\t// Sec-Fetch-User: sent as \"?1\" only on user-activated navigation requests\n\t// (top-level documents, iframes, frames, and embedded objects). The browser\n\t// already attaches this header to the page→SW request when the navigation\n\t// originates from a user gesture, so we forward that signal for any\n\t// navigation destination.\n\tconst isNavigationDestination =\n\t\tparsed.destination === \"document\" ||\n\t\tparsed.destination === \"iframe\" ||\n\t\tparsed.destination === \"frame\" ||\n\t\tparsed.destination === \"embed\" ||\n\t\tparsed.destination === \"object\";\n\tif (\n\t\tisNavigationDestination &&\n\t\trequest.initialHeaders.get(\"sec-fetch-user\") === \"?1\"\n\t) {\n\t\theaders.set(\"Sec-Fetch-User\", \"?1\");\n\t}\n\n\t// Sec-Fetch-Storage-Access: per https://privacycg.github.io/storage-access-headers/.\n\t// Sent on cross-site credentialed requests so the destination knows whether\n\t// unpartitioned storage access has been granted. We never grant storage\n\t// access through the proxy, so the value is always \"none\" when sent.\n\t//\n\t// `event.request.credentials` inside a service worker isn't reliable, so we\n\t// rely on signals propagated from the page (the `sj$cred` URL param set by\n\t// the client-side fetch proxy) plus destination-based defaults for request\n\t// types that always include credentials.\n\tif (site === \"cross-site\" && requestIncludesCredentials(request, parsed)) {\n\t\theaders.set(\"Sec-Fetch-Storage-Access\", \"none\");\n\t}\n}\n\n/**\n * Whether this request will carry credentials to the destination. Used by\n * Sec-Fetch-Storage-Access. The browser's `event.request.credentials` value\n * can't be trusted in a service worker context, so we reconstruct the answer\n * from:\n *\n * - the `sj$cred` URL parameter, set by the client-side fetch proxy when the\n * page used `fetch(url, { credentials: \"include\" })`; and\n * - destination-based defaults: most resource fetches (img, script, style,\n * link, video, audio, track, document/iframe navigations, etc.) default to\n * credentials mode \"include\" unless the page explicitly opts out via a\n * `crossorigin` attribute we can't observe from here. fetch() / XHR\n * default to \"same-origin\", so we treat them as non-credentialed unless\n * `sj$cred` says otherwise.\n */\nfunction requestIncludesCredentials(\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed\n): boolean {\n\tif (parsed.fetchCredentialsInclude) return true;\n\tconst dest = parsed.destination;\n\t// fetch(): destination is \"\" (empty). XHR / report: destination is\n\t// \"report\". Both default to credentials=\"same-origin\", so cross-site\n\t// requests don't include credentials unless the page explicitly opts in.\n\tif (dest === \"\" || dest === \"report\") return false;\n\t// ES modules (including module scripts and module-typed workers) default\n\t// to credentials=\"same-origin\", so cross-site fetches do not carry\n\t// credentials.\n\tif (parsed.isModule) return false;\n\t// Other destinations (image, classic-script, style, audio, video, track,\n\t// font, iframe, frame, document, embed, object, manifest, classic worker,\n\t// sharedworker, serviceworker, ...) default to credentials=\"include\".\n\treturn true;\n}\n\n/**\n * Determine the Sec-Fetch-Mode value for a request.\n *\n * The browser's `event.request.mode` reported in the SW is unsafe to trust\n * for `fetch()` / `new Request()` calls — those compute mode against the\n * request URL's relationship to the page, and scramjet has rewritten the URL\n * to be same-origin to the page, so the SW always sees \"same-origin\"\n * regardless of the page's actual `init.mode`. For HTML resource fetches\n * (`<script crossorigin>`, `<img crossorigin>`, …) the mode is derived from\n * the element's CORS attribute rather than URL origin, so the SW's reported\n * mode IS reliable there.\n *\n * Resolution order:\n * 1. `parsed.fetchMode` — set by the client-side fetch / Request proxy from\n * `init.mode` (or fetch's \"cors\" default). Authoritative for\n * page-initiated fetch / Request / XHR-style calls.\n * 2. Top-level navigations: always \"navigate\".\n * 3. Workers: classic → \"same-origin\", module → \"cors\".\n * 4. Everything else: trust the SW's `request.mode` (it reflects the\n * element's CORS attribute), falling back to \"no-cors\" if it's missing\n * or implausible (e.g. \"same-origin\" / \"navigate\" leaking in from a\n * proxy-URL computation).\n */\nfunction computeFetchMode(\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed\n): string {\n\tif (parsed.fetchMode) return parsed.fetchMode;\n\tconst dest = parsed.destination;\n\tif (\n\t\tdest === \"document\" ||\n\t\tdest === \"iframe\" ||\n\t\tdest === \"frame\" ||\n\t\tdest === \"embed\" ||\n\t\tdest === \"object\"\n\t) {\n\t\treturn \"navigate\";\n\t}\n\tif (dest === \"worker\" || dest === \"sharedworker\") {\n\t\t// Classic workers default to same-origin; module workers default to cors.\n\t\treturn parsed.isModule ? \"cors\" : \"same-origin\";\n\t}\n\t// HTML element fetches: the browser's `request.mode` here reflects the\n\t// element's CORS attribute (`<script crossorigin>` ⇒ \"cors\", plain\n\t// `<script>` ⇒ \"no-cors\"), so trust it. Reject \"same-origin\"/\"navigate\"\n\t// since those indicate the value came from URL-origin matching against\n\t// scramjet's proxy origin and is meaningless to the destination.\n\tif (request.mode === \"cors\" || request.mode === \"no-cors\") {\n\t\treturn request.mode;\n\t}\n\treturn \"no-cors\";\n}\n\n/**\n * Resolve the unrewritten URL of the page (or worker) that initiated this\n * request. Used by Sec-Fetch-Site, which always compares against the original\n * initiator regardless of Referer policy.\n */\nfunction resolveFetchInitiatorUrl(\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed,\n\thandler: ScramjetFetchHandler\n): URL | undefined {\n\t// On any hop after the first, the propagated initiator origin is the\n\t// authoritative source. rawReferrer may have been replaced with the\n\t// previous hop's URL, and rawClientUrl is unset for top-level navigations.\n\tif (parsed.fetchInitiatorOrigin) {\n\t\ttry {\n\t\t\treturn new _URL(parsed.fetchInitiatorOrigin);\n\t\t} catch {\n\t\t\t// fall through to the fallbacks below\n\t\t}\n\t}\n\tconst candidate =\n\t\trequest.rawClientUrl ||\n\t\t(request.rawReferrer ? new _URL(request.rawReferrer) : undefined);\n\tif (!candidate) return undefined;\n\tif (candidate.pathname.startsWith(handler.context.prefix.pathname)) {\n\t\treturn new _URL(unrewriteUrl(candidate, handler.context));\n\t}\n\t// The candidate URL is outside scramjet's logical space (e.g. the runway\n\t// harness wrapper page, or a chrome:// page kicking off a navigation).\n\t// There's no meaningful \"initiator\" in the proxied site's frame of\n\t// reference, so treat it as a browser-initiated request — Sec-Fetch-Site\n\t// will be \"none\".\n\treturn undefined;\n}\n\n/**\n * Whether a URL is \"potentially trustworthy\" per\n * https://w3c.github.io/webappsec-secure-contexts/#is-url-trustworthy.\n *\n * This is a slimmed-down implementation: HTTPS / WSS, file:, and the common\n * loopback hostnames (localhost, *.localhost, 127.0.0.0/8, ::1) are treated as\n * trustworthy. Everything else (including plain http:// to a real hostname) is\n * not.\n */\nfunction isPotentiallyTrustworthy(url: URL): boolean {\n\tconst protocol = url.protocol;\n\tif (protocol === \"https:\" || protocol === \"wss:\" || protocol === \"file:\") {\n\t\treturn true;\n\t}\n\tif (protocol !== \"http:\" && protocol !== \"ws:\") {\n\t\t// data:, blob:, etc. – defer to the caller; treated as not trustworthy\n\t\t// for the purpose of attaching Sec-Fetch-* network headers.\n\t\treturn false;\n\t}\n\treturn isLoopbackHost(url.hostname);\n}\n\nfunction isLoopbackHost(hostname: string): boolean {\n\tif (hostname === \"localhost\" || hostname === \"localhost.\") return true;\n\tif (hostname.endsWith(\".localhost\") || hostname.endsWith(\".localhost.\")) {\n\t\treturn true;\n\t}\n\tif (hostname === \"[::1]\" || hostname === \"::1\") return true;\n\t// Match 127.0.0.0/8 (any 127.x.y.z address).\n\tif (/^127\\.(?:\\d{1,3})\\.(?:\\d{1,3})\\.(?:\\d{1,3})$/.test(hostname)) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Compute the immediate Sec-Fetch-Site relation between an initiator origin and\n * a destination URL.\n *\n * - \"same-origin\" if scheme + host + port match exactly.\n * - \"same-site\" if scheme matches and the registrable domains match.\n * - \"cross-site\" otherwise.\n */\nexport function computeFetchSite(\n\toriginUrl: URL,\n\tdestUrl: URL\n): \"same-origin\" | \"same-site\" | \"cross-site\" {\n\tif (\n\t\toriginUrl.protocol === destUrl.protocol &&\n\t\toriginUrl.host === destUrl.host\n\t) {\n\t\treturn \"same-origin\";\n\t}\n\tif (\n\t\toriginUrl.protocol === destUrl.protocol &&\n\t\tregistrableDomain(originUrl.hostname) ===\n\t\t\tregistrableDomain(destUrl.hostname)\n\t) {\n\t\treturn \"same-site\";\n\t}\n\treturn \"cross-site\";\n}\n\n/**\n * Combine two Sec-Fetch-Site classifications, returning the \"worst\" (least\n * trusted) of the two. Used when propagating state through redirect chains.\n */\nexport function worstFetchSite(\n\ta: \"none\" | \"same-origin\" | \"same-site\" | \"cross-site\",\n\tb: \"none\" | \"same-origin\" | \"same-site\" | \"cross-site\"\n): \"none\" | \"same-origin\" | \"same-site\" | \"cross-site\" {\n\tconst order = { \"cross-site\": 0, \"same-site\": 1, \"same-origin\": 2, none: 3 };\n\treturn order[a] <= order[b] ? a : b;\n}\n\n/**\n * Compute the SameSite enforcement context for a request.\n *\n * \"strict\" – same-site or no known origin (allow all cookies)\n * \"lax\" – cross-site top-level GET/HEAD navigation (block Strict)\n * \"cross-site\" – cross-site subresource or non-safe-method navigation (block Strict+Lax)\n */\nfunction computeSameSiteContext(\n\trequest: ScramjetFetchRequest,\n\tparsed: ScramjetFetchParsed,\n\trawOriginUrl: URL | undefined\n): \"strict\" | \"lax\" | \"cross-site\" {\n\t// If a redirect chain previously passed through a cross-site origin, the\n\t// final request is always treated as cross-site regardless of its destination.\n\tif (parsed.crossSiteRedirect) {\n\t\tconst isNavigation =\n\t\t\tparsed.destination === \"document\" || parsed.destination === \"iframe\";\n\t\tconst isSafeMethod = request.method === \"GET\" || request.method === \"HEAD\";\n\t\treturn isNavigation && isSafeMethod ? \"lax\" : \"cross-site\";\n\t}\n\n\tif (!rawOriginUrl) return \"strict\";\n\n\tconst originSite = registrableDomain(rawOriginUrl.hostname);\n\tconst targetSite = registrableDomain(parsed.url.hostname);\n\n\t// Same site → no SameSite restrictions\n\tif (originSite === targetSite) return \"strict\";\n\n\t// Cross-site request: check if it's a navigational GET/HEAD (lax) or subresource/POST (cross-site)\n\tconst isNavigation =\n\t\tparsed.destination === \"document\" || parsed.destination === \"iframe\";\n\tconst isSafeMethod = request.method === \"GET\" || request.method === \"HEAD\";\n\n\tif (isNavigation && isSafeMethod) return \"lax\";\n\treturn \"cross-site\";\n}\n\n/**\n * Compute the \"registrable domain\" (eTLD+1) of a hostname for same-site comparison.\n * This is a simplified implementation that handles common test cases\n * (localhost, IPs, and typical domain structures) without a full PSL lookup.\n */\nfunction registrableDomain(hostname: string): string {\n\t// IPv4 / IPv6: site = exact IP\n\tif (/^[\\d.]+$/.test(hostname) || hostname.includes(\":\")) return hostname;\n\n\tconst labels = hostname.split(\".\");\n\tif (labels.length <= 1) return hostname; // bare hostname like \"localhost\"\n\n\t// Strip a leading \"www.\" for same-site comparison so that\n\t// www.example.com and example.com are treated as the same site.\n\t// More complex cases (e.g. s1.s2.example.co.uk) are not handled here\n\t// but are uncommon in test environments.\n\tif (labels[0] === \"www\") return labels.slice(1).join(\".\");\n\n\t// For two-label hostnames like \"example.com\", use as-is\n\tif (labels.length === 2) return hostname;\n\n\t// For longer hostnames, use the last two labels as a rough eTLD+1\n\treturn labels.slice(-2).join(\".\");\n}\n","import {\n\tBareCompatibleClient,\n\tBareResponse,\n\tProxyTransport,\n\tBareRequestInit,\n} from \"@mercuryworkshop/proxy-transports\";\n\nimport { type URLMeta } from \"@rewriters/url\";\nimport { type ScramjetRequestMode } from \"./parse\";\nimport { ScramjetHeaders } from \"@/shared/headers\";\nimport { HtmlRewriterHooks, ScramjetContext } from \"@/shared\";\nimport { Tap, TapInstance } from \"@/Tap\";\nimport { doHandleFetch } from \"./fetch\";\nimport { _URL, _Map } from \"@/shared/snapshot\";\n\nexport interface ScramjetFetchRequest {\n\trawUrl: URL;\n\trawReferrer: string | null;\n\t// use parsed.destination instead\n\trawDestination: RequestDestination;\n\tmode: RequestMode;\n\treferrer: string;\n\tmethod: string;\n\tbody: BodyType | null;\n\tcache: RequestCache;\n\n\tinitialHeaders: ScramjetHeaders;\n\n\trawClientUrl?: URL;\n\n\t/** The service worker FetchEvent.clientId that originated this request. */\n\tclientId: string;\n}\n\nexport interface ScramjetFetchParsed {\n\turl: _URL;\n\tclientUrl?: _URL;\n\treferrerSourceUrl?: _URL | null;\n\thadExtraParams: boolean;\n\tcrossSiteRedirect: boolean;\n\n\t// track the worst case Sec-Fetch-Site classification through redirects\n\tfetchSiteState?: \"same-origin\" | \"same-site\" | \"cross-site\";\n\n\t// origin of the page that initialized the request\n\t// specifically for tracking Sec-Fetch-Site, don't use for anything else, it will diverge from clientUrl in some cases\n\tfetchInitiatorOrigin?: string;\n\n\t// was the request made with credentials=include?\n\tfetchCredentialsInclude?: boolean;\n\n\t// tracks RequestInit.mode if set\n\tfetchMode?: ScramjetRequestMode;\n\n\t// was this request made by an iframe? (scramjet's definition of an iframe, not the browser's)\n\tisIframe?: boolean;\n\n\t// request.destination, but is overridden by $dest\n\tdestination: RequestDestination;\n\n\tmeta: URLMeta;\n\tisModule: boolean;\n\treferrerPolicy?: string;\n\ttrackedClient?: ScramjetFetchTrackedClient;\n}\n\nexport interface ScramjetFetchResponse {\n\tbody: BodyType;\n\theaders: ScramjetHeaders;\n\tstatus: number;\n\tstatusText: string;\n}\n\nexport type CookieSyncEntry = {\n\turl: URL;\n\tcookie: string;\n};\n\nexport type CookieSyncOptions = {\n\tclear?: boolean;\n\tdestination?: RequestDestination;\n};\n\nexport type FetchHandlerInit = {\n\ttransport: ProxyTransport;\n\tcontext: ScramjetContext;\n\tcrossOriginIsolated?: boolean;\n\n\tsendSetCookie: (\n\t\tcookies: CookieSyncEntry[],\n\t\toptions?: CookieSyncOptions\n\t) => Promise<void>;\n\tfetchDataUrl(dataUrl: string): Promise<BareResponse>;\n\tfetchBlobUrl(blobUrl: string): Promise<BareResponse>;\n};\n\nexport type TrackedHistoryState = {\n\turl: string;\n\trefererPolicy?: string;\n};\nexport class ScramjetFetchTrackedClient {\n\thistory: TrackedHistoryState[] = [];\n\tconstructor(public clientId: string) {}\n}\n\n// eslint-disable-next-line scramjet-core/no-globals\nexport class ScramjetFetchHandler extends EventTarget {\n\tpublic client: BareCompatibleClient;\n\tpublic crossOriginIsolated: boolean = false;\n\tpublic context: ScramjetContext;\n\n\tpublic trackedClients = new _Map() as _Map<\n\t\tstring,\n\t\tScramjetFetchTrackedClient\n\t>;\n\n\tpublic hooks: {\n\t\trewriter: {\n\t\t\thtml: TapInstance<HtmlRewriterHooks>;\n\t\t};\n\t\tfetch: TapInstance<FetchHooks>;\n\t};\n\n\tpublic fetchDataUrl: (dataUrl: string) => Promise<Response>;\n\tpublic fetchBlobUrl: (blobUrl: string) => Promise<Response>;\n\tpublic sendSetCookie: (\n\t\tcookies: CookieSyncEntry[],\n\t\toptions?: CookieSyncOptions\n\t) => Promise<void>;\n\n\tconstructor(init: FetchHandlerInit) {\n\t\tsuper();\n\t\tthis.client = new BareCompatibleClient(init.transport);\n\t\tthis.context = init.context;\n\t\tthis.crossOriginIsolated = init.crossOriginIsolated || false;\n\t\tthis.sendSetCookie = init.sendSetCookie;\n\t\tthis.fetchDataUrl = init.fetchDataUrl;\n\t\tthis.fetchBlobUrl = init.fetchBlobUrl;\n\t\tthis.hooks = {\n\t\t\trewriter: {\n\t\t\t\thtml: Tap.create<HtmlRewriterHooks>(),\n\t\t\t},\n\t\t\tfetch: Tap.create<FetchHooks>(),\n\t\t};\n\t\tthis.context.hooks = {\n\t\t\trewriter: this.hooks.rewriter,\n\t\t};\n\t}\n\n\tasync handleFetch(\n\t\trequest: ScramjetFetchRequest\n\t): Promise<ScramjetFetchResponse> {\n\t\treturn doHandleFetch(this, request);\n\t}\n}\nexport type FetchHooks = {\n\tintercept: {\n\t\tcontext: {\n\t\t\trequest: ScramjetFetchRequest;\n\t\t\tparsed: ScramjetFetchParsed;\n\t\t};\n\t\tprops: {\n\t\t\tresponse?: ScramjetFetchResponse;\n\t\t};\n\t};\n\trequest: {\n\t\tcontext: {\n\t\t\trequest: ScramjetFetchRequest;\n\t\t\tparsed: ScramjetFetchParsed;\n\t\t\tclient: BareCompatibleClient;\n\t\t};\n\t\tprops: {\n\t\t\tinit: BareRequestInit;\n\t\t\turl: URL;\n\t\t\tearlyResponse?: BareResponse;\n\t\t};\n\t};\n\tpreresponse: {\n\t\tcontext: {\n\t\t\trequest: ScramjetFetchRequest;\n\t\t\tparsed: ScramjetFetchParsed;\n\t\t};\n\t\tprops: {\n\t\t\tresponse: BareResponse;\n\t\t};\n\t};\n\tresponse: {\n\t\tcontext: {\n\t\t\trequest: ScramjetFetchRequest;\n\t\t\tparsed: ScramjetFetchParsed;\n\t\t};\n\t\tprops: {\n\t\t\tresponse: ScramjetFetchResponse;\n\t\t};\n\t};\n};\n\nexport type BodyType = string | ArrayBuffer | Blob | ReadableStream<any>;\n","import { Object_entries, Object_keys, _URL, Error } from \"@/shared/snapshot\";\nimport { unrewriteUrl, URLMeta } from \"@rewriters/url\";\nimport {\n\tScramjetFetchHandler,\n\tScramjetFetchParsed,\n\tScramjetFetchRequest,\n\tScramjetFetchTrackedClient,\n} from \".\";\n\nexport const QP = {\n\treferrerPolicy: \"$rfp\",\n\treferrerSource: \"$rfs\",\n\tisModule: \"$module\",\n\ttopFrame: \"$tf\",\n\tparentFrame: \"$pf\",\n\tisIframe: \"$iframe\",\n\tmode: \"$mode\",\n\tcredentials: \"$cred\",\n\tdestination: \"$dest\",\n\tinitiatorOrigin: \"$io\",\n\tfetchSite: \"$fs\",\n\tcrossSiteRedirect: \"$csr\",\n} as const;\n\nexport type QueryParamKey = keyof typeof QP;\n\nexport type QueryParams = Partial<Record<QueryParamKey, string>>;\n\nconst QP_INVERSE: Record<string, QueryParamKey> = (() => {\n\tconst inv: Record<string, QueryParamKey> = {};\n\tfor (const key of Object_keys(QP) as QueryParamKey[]) {\n\t\tinv[QP[key]] = key;\n\t}\n\treturn inv;\n})();\n\nexport function parseQueryParams(searchParams: URLSearchParams): {\n\tparams: QueryParams;\n\textras: Record<string, string>;\n} {\n\tconst params: QueryParams = {};\n\tconst extras: Record<string, string> = {};\n\tfor (const [key, value] of [...searchParams.entries()]) {\n\t\tconst logical = QP_INVERSE[key];\n\t\tif (logical) {\n\t\t\tparams[logical] = value;\n\t\t} else {\n\t\t\tdbg.warn(\n\t\t\t\t`extraneous query parameter ${key}=${value}. Assuming <form> element`\n\t\t\t);\n\t\t\textras[key] = value;\n\t\t}\n\t}\n\treturn { params, extras };\n}\n\nexport function parseRequest(\n\trequest: ScramjetFetchRequest,\n\thandler: ScramjetFetchHandler\n): ScramjetFetchParsed {\n\tconst strippedUrl = new _URL(request.rawUrl.href);\n\tconst { params, extras } = parseQueryParams(request.rawUrl.searchParams);\n\tstrippedUrl.search = \"\";\n\n\tconst hadExtraParams = Object_keys(extras).length > 0;\n\n\tif (!_URL.canParse(unrewriteUrl(strippedUrl, handler.context))) {\n\t\tthrow new Error(`unable to parse rewritten url: ${strippedUrl.href}`);\n\t}\n\tconst url = new _URL(unrewriteUrl(strippedUrl, handler.context));\n\n\tif (url.origin === new _URL(request.rawUrl).origin) {\n\t\t// uh oh!\n\t\tthrow new Error(\n\t\t\t\"attempted to fetch from same origin - this means the site has obtained a reference to the real origin, aborting\"\n\t\t);\n\t}\n\n\tfor (const [key, value] of Object_entries(extras)) {\n\t\turl.searchParams.set(key, value);\n\t}\n\n\tconst clientId = request.clientId;\n\tlet trackedClient: ScramjetFetchTrackedClient | undefined;\n\tif (clientId) {\n\t\ttrackedClient = handler.trackedClients.get(clientId);\n\t\tif (!trackedClient) {\n\t\t\ttrackedClient = new ScramjetFetchTrackedClient(clientId);\n\t\t\thandler.trackedClients.set(clientId, trackedClient);\n\t\t}\n\t}\n\n\tconst referrerSourceUrl =\n\t\tparams.referrerSource === undefined\n\t\t\t? undefined\n\t\t\t: params.referrerSource\n\t\t\t\t? new _URL(params.referrerSource)\n\t\t\t\t: null;\n\n\tconst fetchSiteState =\n\t\tparams.fetchSite === \"same-origin\" ||\n\t\tparams.fetchSite === \"same-site\" ||\n\t\tparams.fetchSite === \"cross-site\"\n\t\t\t? params.fetchSite\n\t\t\t: undefined;\n\n\tconst fetchMode = [\"cors\", \"no-cors\", \"same-origin\", \"navigate\"].includes(\n\t\tparams.mode\n\t)\n\t\t? params.mode\n\t\t: undefined;\n\tconst destination =\n\t\t(params.destination as RequestDestination | undefined) ||\n\t\trequest.rawDestination;\n\n\tconst meta: URLMeta = {\n\t\torigin: url,\n\t\tbase: url,\n\t\ttopFrameName: params.topFrame,\n\t\tparentFrameName: params.parentFrame,\n\t\treferrerPolicy: params.referrerPolicy,\n\t};\n\n\tconst parsed: ScramjetFetchParsed = {\n\t\tmeta,\n\t\turl,\n\t\tisModule: params.isModule === \"module\",\n\t\treferrerPolicy: params.referrerPolicy,\n\t\treferrerSourceUrl,\n\t\ttrackedClient,\n\t\thadExtraParams,\n\t\tcrossSiteRedirect: params.crossSiteRedirect === \"1\",\n\t\tfetchSiteState,\n\t\tfetchInitiatorOrigin: params.initiatorOrigin || undefined,\n\t\t// TODO: should really just be a boolean\n\t\tfetchCredentialsInclude: params.credentials === \"include\",\n\t\tfetchMode,\n\t\tdestination,\n\t\tisIframe: params.isIframe === \"1\",\n\t};\n\n\tif (request.rawClientUrl) {\n\t\tparsed.clientUrl = new _URL(\n\t\t\tunrewriteUrl(request.rawClientUrl, handler.context)\n\t\t);\n\t}\n\n\treturn parsed;\n}\n","import { isHtmlMimeType, ScramjetHeaders } from \"@/shared\";\nimport { BareResponse } from \"@mercuryworkshop/proxy-transports\";\nimport { ScramjetFetchParsed } from \".\";\n\nexport function normalizeContentType(\n\tparsed: ScramjetFetchParsed,\n\theaders: ScramjetHeaders\n) {\n\tif (!isDocument(parsed)) return;\n\n\tconst ct = headers.get(\"content-type\");\n\tif (!ct) return;\n\tif (!isHtmlMimeType(ct)) return;\n\n\theaders.set(\"content-type\", \"text/html; charset=utf-8\");\n}\n\nexport function isRedirect(response: BareResponse) {\n\treturn response.status >= 300 && response.status < 400;\n}\n\nexport function isDocument(parsed: ScramjetFetchParsed) {\n\treturn parsed.destination === \"document\" || parsed.destination === \"iframe\";\n}\n\nexport function createReferrerString(\n\tclientUrl: URL,\n\tresource: URL,\n\tpolicy: string | null\n): string {\n\tpolicy ||= \"strict-origin-when-cross-origin\";\n\tconst originIsHttps = clientUrl.protocol === \"https:\";\n\tconst destIsHttps = resource.protocol === \"https:\";\n\n\tconst isPotentialDowngrade = originIsHttps && !destIsHttps;\n\n\tconst isSameOrigin =\n\t\tclientUrl.protocol === resource.protocol &&\n\t\tclientUrl.host === resource.host;\n\n\tconst referrerOrigin = clientUrl.origin;\n\n\tconst referrerUrl = new URL(clientUrl.href);\n\treferrerUrl.hash = \"\";\n\tconst referrerUrlString = referrerUrl.href;\n\n\tswitch (policy) {\n\t\tcase \"no-referrer\":\n\t\t\treturn \"\";\n\n\t\tcase \"no-referrer-when-downgrade\":\n\t\t\tif (isPotentialDowngrade) return \"\";\n\t\t\treturn referrerUrlString;\n\n\t\tcase \"same-origin\":\n\t\t\tif (isSameOrigin) return referrerUrlString;\n\t\t\treturn \"\";\n\n\t\tcase \"origin\":\n\t\t\treturn referrerOrigin === \"null\" ? \"\" : referrerOrigin + \"/\";\n\n\t\tcase \"strict-origin\":\n\t\t\tif (isPotentialDowngrade) return \"\";\n\t\t\treturn referrerOrigin === \"null\" ? \"\" : referrerOrigin + \"/\";\n\n\t\tcase \"origin-when-cross-origin\":\n\t\t\tif (isSameOrigin) return referrerUrlString;\n\t\t\treturn referrerOrigin === \"null\" ? \"\" : referrerOrigin + \"/\";\n\n\t\tcase \"strict-origin-when-cross-origin\":\n\t\t\tif (isSameOrigin) return referrerUrlString;\n\t\t\tif (isPotentialDowngrade) return \"\";\n\t\t\treturn referrerOrigin === \"null\" ? \"\" : referrerOrigin + \"/\";\n\n\t\tcase \"unsafe-url\":\n\t\t\treturn referrerUrlString;\n\n\t\tdefault:\n\t\t\treturn \"\";\n\t}\n}\n","// import { flagEnabled } from \"@/shared\";\nimport type { URLMeta } from \"@rewriters/url\";\nimport { Error, Math_min, Performance_now } from \"@/shared/snapshot\";\n\nconst logfuncs = {\n\t// eslint-disable-next-line scramjet-core/no-globals\n\tlog: console.log,\n\t// eslint-disable-next-line scramjet-core/no-globals\n\twarn: console.warn,\n\t// eslint-disable-next-line scramjet-core/no-globals\n\terror: console.error,\n\t// eslint-disable-next-line scramjet-core/no-globals\n\tdebug: console.debug,\n\t// eslint-disable-next-line scramjet-core/no-globals\n\tinfo: console.info,\n};\n\nexport default {\n\tfmt: function (severity: string, message: string, ...args: any[]) {\n\t\tconst old = Error.prepareStackTrace;\n\n\t\tError.prepareStackTrace = (_, stack) => {\n\t\t\tstack.shift(); // stack();\n\t\t\tstack.shift(); // fmt();\n\t\t\tstack.shift();\n\n\t\t\tlet fmt = \"\";\n\t\t\tfor (let i = 1; i < Math_min(2, stack.length); i++) {\n\t\t\t\tif (stack[i].getFunctionName()) {\n\t\t\t\t\t// const f = stack[i].getThis()?.constructor?.name;\n\t\t\t\t\t// if (f) fmt += `${f}.`\n\t\t\t\t\tfmt += `${stack[i].getFunctionName()} -> ` + fmt;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfmt += stack[0].getFunctionName() || \"Anonymous\";\n\n\t\t\treturn fmt;\n\t\t};\n\n\t\tconst fmt = (function stack() {\n\t\t\ttry {\n\t\t\t\tthrow new Error();\n\t\t\t} catch (e) {\n\t\t\t\treturn e.stack;\n\t\t\t}\n\t\t})();\n\n\t\tError.prepareStackTrace = old;\n\n\t\tthis.print(severity, fmt, message, ...args);\n\t},\n\tprint(severity: string, tag: string, message: string, ...args: any[]) {\n\t\tconst fn = logfuncs[severity] || logfuncs.log;\n\t\tconst bg = {\n\t\t\tlog: \"#000\",\n\t\t\twarn: \"#f80\",\n\t\t\terror: \"#f00\",\n\t\t\tdebug: \"transparent\",\n\t\t}[severity];\n\t\tconst fg = {\n\t\t\tlog: \"#fff\",\n\t\t\twarn: \"#fff\",\n\t\t\terror: \"#fff\",\n\t\t\tdebug: \"gray\",\n\t\t}[severity];\n\t\tconst padding = {\n\t\t\tlog: 2,\n\t\t\twarn: 4,\n\t\t\terror: 4,\n\t\t\tdebug: 0,\n\t\t}[severity];\n\n\t\tfn(\n\t\t\t`%c${tag}%c ${message}`,\n\t\t\t`\n \tbackground-color: ${bg};\n \tcolor: ${fg};\n \tpadding: ${padding}px;\n \tfont-weight: bold;\n \tfont-family: monospace;\n \tfont-size: 0.9em;\n `,\n\t\t\t`${severity === \"debug\" ? \"color: gray\" : \"\"}`,\n\t\t\t...args\n\t\t);\n\t},\n\tlog: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"log\", message, ...args);\n\t},\n\twarn: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"warn\", message, ...args);\n\t},\n\terror: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"error\", message, ...args);\n\t},\n\tdebug: function (message: string, ...args: any[]) {\n\t\tthis.fmt(\"debug\", message, ...args);\n\t},\n\ttime(meta: URLMeta, before: number, type: string) {\n\t\tconst after = Performance_now();\n\t\tconst duration = after - before;\n\n\t\tlet timespan: string;\n\t\tif (duration < 1) {\n\t\t\ttimespan = \"BLAZINGLY FAST\";\n\t\t} else if (duration < 500) {\n\t\t\ttimespan = \"decent speed\";\n\t\t} else {\n\t\t\ttimespan = \"really slow\";\n\t\t}\n\t\tthis.print(\n\t\t\t\"debug\",\n\t\t\t\"[time]\",\n\t\t\t`${type} was ${timespan} (${duration.toFixed(2)}ms)`\n\t\t);\n\t},\n};\n","// thnank you node unblocker guy\nimport { JSON_parse, JSON_stringify } from \"@/shared/snapshot\";\nimport { _Date } from \"./snapshot\";\nimport parse from \"./set-cookie-parser\";\n\nexport type Cookie = {\n\tname: string;\n\tvalue: string;\n\tpath?: string;\n\texpires?: number;\n\tmaxAge?: number;\n\tdomain?: string;\n\thostOnly?: boolean;\n\tsecure?: boolean;\n\thttpOnly?: boolean;\n\tsameSite?: string; // \"strict\"|\"lax\"|\"none\" or titlecase variants from parsers\n};\n\nexport class CookieJar {\n\tprivate cookies: Record<string, Cookie> = {};\n\t// Index by domain (without leading dot)\n\tprivate byDomain: Map<string, Cookie[]> = new Map();\n\n\tprivate defaultPath(url: URL): string {\n\t\tconst pathname = url.pathname;\n\t\tif (!pathname || !pathname.startsWith(\"/\")) return \"/\";\n\t\tconst lastSlash = pathname.lastIndexOf(\"/\");\n\t\tif (lastSlash <= 0) return \"/\";\n\t\treturn pathname.slice(0, lastSlash);\n\t}\n\n\tprivate pathMatches(requestPath: string, cookiePath: string): boolean {\n\t\tif (requestPath === cookiePath) return true;\n\t\tif (!requestPath.startsWith(cookiePath)) return false;\n\t\tif (cookiePath.endsWith(\"/\")) return true;\n\t\treturn requestPath.charAt(cookiePath.length) === \"/\";\n\t}\n\n\tprivate indexCookie(c: Cookie) {\n\t\tconst key = c.domain!.slice(1);\n\t\tlet bucket = this.byDomain.get(key);\n\t\tif (!bucket) {\n\t\t\tbucket = [];\n\t\t\tthis.byDomain.set(key, bucket);\n\t\t}\n\t\tbucket.push(c);\n\t}\n\n\tprivate unindexCookie(c: Cookie) {\n\t\tconst key = c.domain!.slice(1);\n\t\tconst bucket = this.byDomain.get(key);\n\t\tif (!bucket) return;\n\t\tconst i = bucket.indexOf(c);\n\t\tif (i >= 0) bucket.splice(i, 1);\n\t\tif (bucket.length === 0) this.byDomain.delete(key);\n\t}\n\n\tprivate removeById(id: string) {\n\t\tconst prev = this.cookies[id];\n\t\tif (prev) this.unindexCookie(prev);\n\t\tdelete this.cookies[id];\n\t}\n\n\tsetCookies(cookieString: string, url: URL) {\n\t\tconst parsedCookies = parse(cookieString);\n\n\t\tfor (const parsedCookie of parsedCookies) {\n\t\t\tconst lowerName = parsedCookie.name.toLowerCase();\n\n\t\t\tif (lowerName.startsWith(\"__secure-\")) {\n\t\t\t\tif (!parsedCookie.secure) continue;\n\t\t\t} else if (lowerName.startsWith(\"__host-\")) {\n\t\t\t\tif (!parsedCookie.secure) continue;\n\t\t\t\tif (parsedCookie.domain) continue;\n\t\t\t\tif (parsedCookie.path !== \"/\") continue;\n\t\t\t}\n\n\t\t\tconst hostOnly = !parsedCookie.domain;\n\t\t\tconst expiresTime = parsedCookie.expires?.getTime();\n\t\t\tconst expires = Number.isFinite(expiresTime) ? expiresTime : undefined;\n\t\t\tconst cookie: Cookie = {\n\t\t\t\t...parsedCookie,\n\t\t\t\thostOnly,\n\t\t\t\texpires,\n\t\t\t};\n\n\t\t\tif (!cookie.domain) cookie.domain = url.hostname;\n\t\t\tif (!cookie.domain.startsWith(\".\")) cookie.domain = \".\" + cookie.domain;\n\t\t\tif (!cookie.path || !cookie.path.startsWith(\"/\")) {\n\t\t\t\tcookie.path = this.defaultPath(url);\n\t\t\t}\n\t\t\tif (!cookie.sameSite) cookie.sameSite = \"lax\";\n\n\t\t\tconst id = `${cookie.domain}@${cookie.path}@${cookie.name}`;\n\n\t\t\tif (typeof cookie.maxAge === \"number\") {\n\t\t\t\tif (!Number.isFinite(cookie.maxAge)) {\n\t\t\t\t\tdelete cookie.maxAge;\n\t\t\t\t} else if (cookie.maxAge <= 0) {\n\t\t\t\t\tthis.removeById(id);\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tcookie.expires = _Date.now() + cookie.maxAge * 1000;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst prev = this.cookies[id];\n\t\t\tif (prev) this.unindexCookie(prev);\n\t\t\tthis.cookies[id] = cookie;\n\t\t\tthis.indexCookie(cookie);\n\t\t}\n\t}\n\n\t// SameSite enforcement context passed to getCookies.\n\t// \"strict\" – same-site request; all cookies allowed\n\t// \"lax\" – cross-site top-level GET/HEAD navigation; Strict blocked, Lax+None allowed\n\t// \"cross-site\" – cross-site subresource or non-GET navigation; only None allowed\n\tgetCookies(\n\t\turl: URL,\n\t\tfromJs: boolean,\n\t\tsameSiteContext: \"strict\" | \"lax\" | \"cross-site\" = \"strict\"\n\t): string {\n\t\tconst now = _Date.now();\n\t\tconst hostname = url.hostname;\n\t\tconst pathname = url.pathname;\n\t\tconst validCookies: Cookie[] = [];\n\n\t\t// Walk the hostname's domain suffix chain\n\t\tlet key: string | undefined = hostname;\n\t\twhile (key !== undefined) {\n\t\t\tconst bucket = this.byDomain.get(key);\n\t\t\tif (bucket) {\n\t\t\t\tfor (const cookie of bucket) {\n\t\t\t\t\tif (cookie.expires !== undefined && cookie.expires < now) continue;\n\n\t\t\t\t\tif (cookie.hostOnly && key !== hostname) continue;\n\n\t\t\t\t\t// Scramjet proxies all origins as HTTPS (including those served over HTTP),\n\t\t\t\t\t// so we don't enforce the Secure attribute based on protocol here.\n\t\t\t\t\t// if (cookie.secure && url.protocol !== \"https:\") continue;\n\t\t\t\t\tif (cookie.httpOnly && fromJs) continue;\n\t\t\t\t\tif (!this.pathMatches(pathname, cookie.path!)) continue;\n\n\t\t\t\t\t// SameSite enforcement — compare case-insensitively since parsers may\n\t\t\t\t\t// return \"Strict\"/\"Lax\"/\"None\" (titlecase) or \"strict\"/\"lax\"/\"none\".\n\t\t\t\t\tconst cs = (cookie.sameSite ?? \"lax\").toLowerCase();\n\t\t\t\t\tif (sameSiteContext === \"cross-site\") {\n\t\t\t\t\t\t// Only SameSite=None cookies are sent cross-site\n\t\t\t\t\t\tif (cs !== \"none\") continue;\n\t\t\t\t\t} else if (sameSiteContext === \"lax\") {\n\t\t\t\t\t\t// Lax top-level navigation: block Strict, allow Lax and None\n\t\t\t\t\t\tif (cs === \"strict\") continue;\n\t\t\t\t\t}\n\t\t\t\t\t// \"strict\" context: all cookies allowed (no filtering)\n\n\t\t\t\t\tvalidCookies.push(cookie);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst dot = key.indexOf(\".\");\n\t\t\tkey = dot === -1 ? undefined : key.slice(dot + 1);\n\t\t}\n\n\t\treturn validCookies\n\t\t\t.map((cookie) =>\n\t\t\t\tcookie.name ? `${cookie.name}=${cookie.value}` : cookie.value\n\t\t\t)\n\t\t\t.join(\"; \");\n\t}\n\n\tload(cookies: string | Record<string, Cookie>) {\n\t\tif (typeof cookies === \"object\") {\n\t\t\tconsole.error(\"??\");\n\t\t\treturn;\n\t\t}\n\t\tconst parsed: Record<string, Cookie> = JSON_parse(cookies);\n\t\tthis.cookies = {};\n\t\tthis.byDomain.clear();\n\t\tconst ids = Object.keys(parsed);\n\t\tfor (let i = 0; i < ids.length; i++) {\n\t\t\tconst id = ids[i];\n\t\t\tconst c = parsed[id];\n\t\t\tif (typeof c.expires === \"string\") {\n\t\t\t\tconst t = Date.parse(c.expires as unknown as string);\n\t\t\t\tc.expires = Number.isFinite(t) ? t : undefined;\n\t\t\t}\n\t\t\tthis.cookies[id] = c;\n\t\t\tthis.indexCookie(c);\n\t\t}\n\t}\n\n\tclear() {\n\t\tthis.cookies = {};\n\t\tthis.byDomain.clear();\n\t}\n\n\tdump(): string {\n\t\treturn JSON_stringify(this.cookies);\n\t}\n}\n","import { RawHeaders } from \"@mercuryworkshop/proxy-transports\";\n\nexport class ScramjetHeaders {\n\theaders = {};\n\n\tset(key: string, v: string) {\n\t\tthis.headers[key.toLowerCase()] = v;\n\t}\n\n\tget(key: string): string | null {\n\t\tconst lk = key.toLowerCase();\n\t\tif (lk in this.headers) {\n\t\t\treturn this.headers[lk];\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tdelete(key: string) {\n\t\tdelete this.headers[key.toLowerCase()];\n\t}\n\n\thas(key: string): boolean {\n\t\treturn key.toLowerCase() in this.headers;\n\t}\n\n\ttoRawHeaders(): RawHeaders {\n\t\tconst raw: RawHeaders = [];\n\t\tfor (const k in this.headers) {\n\t\t\traw.push([k, this.headers[k]]);\n\t\t}\n\n\t\treturn raw;\n\t}\n\n\ttoNativeHeaders(): Headers {\n\t\tconst native = new Headers();\n\t\tfor (const k in this.headers) {\n\t\t\tnative.set(k, this.headers[k]);\n\t\t}\n\n\t\treturn native;\n\t}\n\n\tstatic fromRawHeaders(raw: RawHeaders): ScramjetHeaders {\n\t\tconst h = new ScramjetHeaders();\n\t\tfor (const [k, v] of raw) {\n\t\t\tif (h.has(k)) {\n\t\t\t\t// console.debug(\n\t\t\t\t// \t`Duplicate header \"${k}\" found in raw headers, overwriting previous value.`\n\t\t\t\t// );\n\t\t\t}\n\t\t\th.set(k, v);\n\t\t}\n\n\t\treturn h;\n\t}\n\n\tstatic fromNativeHeaders(native: Headers): ScramjetHeaders {\n\t\tconst h = new ScramjetHeaders();\n\t\tfor (const [k, v] of native.entries()) {\n\t\t\th.set(k, v);\n\t\t}\n\n\t\treturn h;\n\t}\n\n\tclone(): ScramjetHeaders {\n\t\tconst newh = new ScramjetHeaders();\n\t\tfor (const k in this.headers) {\n\t\t\tnewh.set(k, this.headers[k]);\n\t\t}\n\n\t\treturn newh;\n\t}\n}\n","import { rewriteCss } from \"@rewriters/css\";\nimport { rewriteHtml, rewriteSrcset } from \"@rewriters/html\";\nimport { rewriteUrl, unrewriteBlob, URLMeta } from \"@rewriters/url\";\nimport { ScramjetContext } from \"@/shared\";\nimport { _URL } from \"./snapshot\";\n\nexport const htmlRules: {\n\t[key: string]: \"*\" | string[] | ((...any: any[]) => string | null);\n\tfn: (value: string, context: ScramjetContext, meta: URLMeta) => string | null;\n}[] = [\n\t{\n\t\tfn: (value, context, meta) =>\n\t\t\trewriteUrl(value, context, meta, { navigateType: \"location\" }),\n\n\t\t// url rewrites\n\t\tsrc: [\"embed\", \"script\", \"img\", \"frame\", \"input\", \"track\"],\n\t\thref: [\"a\", \"link\", \"area\", \"image\"],\n\t\tdata: [\"object\"],\n\t\taction: [\"form\"],\n\t\tformaction: [\"button\", \"input\", \"textarea\", \"submit\"],\n\t\tposter: [\"video\"],\n\t\t\"xlink:href\": [\"image\"],\n\t},\n\t{\n\t\tfn: (value, context, meta) => {\n\t\t\tconst url = rewriteUrl(value, context, meta, {\n\t\t\t\ttopFrame: meta.topFrameName,\n\t\t\t\tparentFrame: meta.parentFrameName,\n\t\t\t\tisIframe: \"1\",\n\t\t\t});\n\n\t\t\treturn url;\n\t\t},\n\t\tsrc: [\"iframe\"],\n\t},\n\t{\n\t\t// is this a good idea?\n\t\tfn: (_value, _context, _meta) => {\n\t\t\treturn null;\n\t\t},\n\t\tsandbox: [\"iframe\"],\n\t},\n\t{\n\t\tfn: (value, context, meta) => {\n\t\t\tif (value.startsWith(\"blob:\")) {\n\t\t\t\t// for media elements specifically they must take the original blob\n\t\t\t\t// because they can't be fetch'd\n\t\t\t\treturn unrewriteBlob(value, context, meta);\n\t\t\t}\n\n\t\t\treturn rewriteUrl(value, context, meta);\n\t\t},\n\t\tsrc: [\"video\", \"audio\", \"source\"],\n\t},\n\t{\n\t\tfn: () => \"\",\n\n\t\tintegrity: [\"script\", \"link\"],\n\t},\n\t{\n\t\tfn: () => null,\n\n\t\t// csp stuff that must be deleted\n\t\tnonce: \"*\",\n\t\tcsp: [\"iframe\"],\n\t\tcredentialless: [\"iframe\"],\n\t},\n\t{\n\t\tfn: (value, context, meta) => rewriteSrcset(value, context, meta),\n\n\t\t// srcset\n\t\tsrcset: [\"img\", \"source\"],\n\t\timagesrcset: [\"link\"],\n\t},\n\t{\n\t\tfn: (value, context, meta) =>\n\t\t\trewriteHtml(\n\t\t\t\tvalue,\n\t\t\t\tcontext,\n\t\t\t\t{\n\t\t\t\t\t// for srcdoc origin is the origin of the page that the iframe is on. base and path get dropped\n\t\t\t\t\torigin: new _URL(meta.origin.origin),\n\t\t\t\t\tbase: new _URL(meta.origin.origin),\n\t\t\t\t\ttopFrameName: meta.topFrameName,\n\t\t\t\t\tparentFrameName: meta.parentFrameName,\n\t\t\t\t\treferrerPolicy: meta.referrerPolicy,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tloadScripts: true,\n\t\t\t\t\tinline: true,\n\t\t\t\t\tsource: meta.origin.href,\n\t\t\t\t\tapisource: \"set HTMLIFrameElement.prototype.srcdoc\",\n\t\t\t\t}\n\t\t\t),\n\n\t\t// srcdoc\n\t\tsrcdoc: [\"iframe\"],\n\t},\n\t{\n\t\tfn: (value, context, meta) => rewriteCss(value, context, meta),\n\t\tstyle: \"*\",\n\t},\n\t{\n\t\tfn: (value, context, meta) => {\n\t\t\tif (value === \"_top\" || value === \"_unfencedTop\")\n\t\t\t\treturn meta.topFrameName;\n\t\t\telse if (value === \"_parent\") return meta.parentFrameName;\n\t\t\telse return value;\n\t\t},\n\t\ttarget: [\"a\", \"base\"],\n\t},\n\t{\n\t\t// svg elements with an href property\n\t\tfn: (value, context, meta) => {\n\t\t\t// #id values are not rewritten\n\t\t\tif (value.startsWith(\"#\")) return value;\n\t\t\treturn rewriteUrl(value, context, meta);\n\t\t},\n\t\thref: [\n\t\t\t\"use\",\n\t\t\t\"textPath\",\n\t\t\t\"mpath\",\n\t\t\t\"feImage\",\n\t\t\t\"animate\",\n\t\t\t\"animateMotion\",\n\t\t\t\"animateTransform\",\n\t\t\t\"set\",\n\t\t\t\"discard\",\n\t\t\t\"linearGradient\",\n\t\t\t\"radialGradient\",\n\t\t\t\"pattern\",\n\t\t\t\"filter\",\n\t\t],\n\t},\n];\n","import { ScramjetConfig, ScramjetFlags, ScramjetVersionInfo } from \"@/types\";\nimport DomHandler, { Element } from \"domhandler\";\nimport { URLMeta } from \"@rewriters/url\";\nimport { CookieJar } from \"./cookie\";\nimport { TapInstance } from \"@/Tap\";\nimport { HtmlContext } from \"@/shared/rewriters/html\";\nimport { _RegExp } from \"./snapshot\";\n\nexport * from \"./cookie\";\nexport * from \"./headers\";\nexport * from \"./htmlRules\";\nexport * from \"./mime\";\nexport * from \"./rewriters\";\n\nexport function flagEnabled(\n\tflag: keyof ScramjetFlags,\n\tcontext: ScramjetContext,\n\turl: URL\n): boolean {\n\tconst value = context.config.flags[flag];\n\tfor (const regex in context.config.siteFlags) {\n\t\tconst partialflags = context.config.siteFlags[regex];\n\t\tif (new _RegExp(regex).test(url.href) && flag in partialflags) {\n\t\t\treturn partialflags[flag];\n\t\t}\n\t}\n\n\treturn value;\n}\nexport type ScramjetInterface = {\n\tcodecEncode: (input: string) => string;\n\tcodecDecode: (input: string) => string;\n\n\tgetInjectScripts(\n\t\tmeta: URLMeta,\n\t\thandler: DomHandler,\n\t\thtmlcontext: HtmlContext,\n\t\tscript: (src: string) => Element\n\t): Element[];\n\tgetWorkerInjectScripts?(\n\t\tmeta: URLMeta,\n\t\tisModule: boolean,\n\t\tscript: (src: string) => string\n\t): string;\n};\n\nexport type ScramjetContext = {\n\tconfig: ScramjetConfig;\n\tprefix: URL;\n\tinterface: ScramjetInterface;\n\tcookieJar: CookieJar;\n\thooks?: {\n\t\trewriter: {\n\t\t\thtml: TapInstance<HtmlRewriterHooks>;\n\t\t};\n\t};\n};\n\nexport const versionInfo: ScramjetVersionInfo = {\n\tversion: VERSION,\n\tbuild: COMMITHASH,\n\tdate: BUILDDATE,\n};\n\nexport type HtmlRewriterHooks = {\n\tpre: {\n\t\tcontext: {\n\t\t\thandler: DomHandler;\n\t\t\tmeta: URLMeta;\n\t\t\torigHtml: string;\n\t\t\thtmlcontext: HtmlContext;\n\t\t};\n\t};\n\tpost: {\n\t\tcontext: {\n\t\t\thandler: DomHandler;\n\t\t\tmeta: URLMeta;\n\t\t\torigHtml: string;\n\t\t\thtmlcontext: HtmlContext;\n\t\t};\n\t\tprops: {\n\t\t\tsetRawHtml?: string;\n\t\t};\n\t};\n};\n","// WARNING: SLOP FILE\n// DO NOT TRUST THIS CODE\n\nimport { _Set } from \"./snapshot\";\n\n/**\n * MIME type groups (WHATWG-style), for classifying MIME types.\n * @see https://mimesniff.spec.whatwg.org/#mime-type-groups\n */\n\nconst HTTP_WHITESPACE = /^[\\t\\n\\f\\r ]+|[\\t\\n\\f\\r ]+$/g;\n\nfunction trimHttpWhitespace(s: string): string {\n\treturn s.replace(HTTP_WHITESPACE, \"\");\n}\n\nfunction asciiLower(s: string): string {\n\treturn s.toLowerCase();\n}\n\nexport interface ParsedMimeType {\n\ttype: string;\n\tsubtype: string;\n\t/** `type`/`subtype` in ASCII lowercase; excludes parameters. */\n\tessence: string;\n}\n\n/**\n * Parses a MIME type string (e.g. a Content-Type value) into type, subtype, and essence.\n * Returns null if the input is not a valid MIME type.\n */\nexport function parseMimeType(input: string): ParsedMimeType | null {\n\tconst trimmed = trimHttpWhitespace(input);\n\tif (!trimmed) return null;\n\n\tconst semicolon = trimmed.indexOf(\";\");\n\tconst typeAndSubtype =\n\t\tsemicolon === -1 ? trimmed : trimmed.slice(0, semicolon);\n\tconst main = trimHttpWhitespace(typeAndSubtype);\n\tif (!main) return null;\n\n\tconst slash = main.indexOf(\"/\");\n\tif (slash <= 0 || slash === main.length - 1) return null;\n\n\tconst type = trimHttpWhitespace(main.slice(0, slash));\n\tconst subtype = trimHttpWhitespace(main.slice(slash + 1));\n\tif (!type || !subtype) return null;\n\n\treturn {\n\t\ttype,\n\t\tsubtype,\n\t\tessence: `${asciiLower(type)}/${asciiLower(subtype)}`,\n\t};\n}\n\nfunction asParsed(mime: string | ParsedMimeType): ParsedMimeType | null {\n\treturn typeof mime === \"string\" ? parseMimeType(mime) : mime;\n}\n\nconst FONT_ESSENCES = new _Set([\n\t\"application/font-cff\",\n\t\"application/font-otf\",\n\t\"application/font-sfnt\",\n\t\"application/font-ttf\",\n\t\"application/font-woff\",\n\t\"application/vnd.ms-fontobject\",\n\t\"application/vnd.ms-opentype\",\n]);\n\nconst ARCHIVE_ESSENCES = new _Set([\n\t\"application/x-rar-compressed\",\n\t\"application/zip\",\n\t\"application/x-gzip\",\n]);\n\nconst JAVASCRIPT_ESSENCES = new _Set([\n\t\"application/ecmascript\",\n\t\"application/javascript\",\n\t\"application/x-ecmascript\",\n\t\"application/x-javascript\",\n\t\"text/ecmascript\",\n\t\"text/javascript\",\n\t\"text/javascript1.0\",\n\t\"text/javascript1.1\",\n\t\"text/javascript1.2\",\n\t\"text/javascript1.3\",\n\t\"text/javascript1.4\",\n\t\"text/javascript1.5\",\n\t\"text/jscript\",\n\t\"text/livescript\",\n\t\"text/x-ecmascript\",\n\t\"text/x-javascript\",\n]);\n\n/** A MIME type whose type is \"image\". */\nexport function isImageMimeType(mime: string | ParsedMimeType): boolean {\n\tconst p = asParsed(mime);\n\treturn p !== null && asciiLower(p.type) === \"image\";\n}\n\n/** Audio, video, or essence `application/ogg`. */\nexport function isAudioOrVideoMimeType(mime: string | ParsedMimeType): boolean {\n\tconst p = asParsed(mime);\n\tif (!p) return false;\n\tconst t = asciiLower(p.type);\n\tif (t === \"audio\" || t === \"video\") return true;\n\treturn p.essence === \"application/ogg\";\n}\n\n/** Type `font` or a registered font essence. */\nexport function isFontMimeType(mime: string | ParsedMimeType): boolean {\n\tconst p = asParsed(mime);\n\tif (!p) return false;\n\tif (asciiLower(p.type) === \"font\") return true;\n\treturn FONT_ESSENCES.has(p.essence);\n}\n\n/** Subtype ends with `+zip` or essence `application/zip`. */\nexport function isZipBasedMimeType(mime: string | ParsedMimeType): boolean {\n\tconst p = asParsed(mime);\n\tif (!p) return false;\n\tif (p.essence === \"application/zip\") return true;\n\treturn asciiLower(p.subtype).endsWith(\"+zip\");\n}\n\n/** One of the archive essences. */\nexport function isArchiveMimeType(mime: string | ParsedMimeType): boolean {\n\tconst p = asParsed(mime);\n\treturn p !== null && ARCHIVE_ESSENCES.has(p.essence);\n}\n\n/** Subtype ends with `+xml` or essence `text/xml` / `application/xml`. */\nexport function isXmlMimeType(mime: string | ParsedMimeType): boolean {\n\tconst p = asParsed(mime);\n\tif (!p) return false;\n\tif (asciiLower(p.subtype).endsWith(\"+xml\")) return true;\n\treturn p.essence === \"text/xml\" || p.essence === \"application/xml\";\n}\n\n/** Essence `text/html`. */\nexport function isHtmlMimeType(mime: string | ParsedMimeType): boolean {\n\tconst p = asParsed(mime);\n\treturn p !== null && p.essence === \"text/html\";\n}\n\n/** XML, HTML, or `application/pdf`. */\nexport function isScriptableMimeType(mime: string | ParsedMimeType): boolean {\n\tconst p = asParsed(mime);\n\tif (!p) return false;\n\tif (isXmlMimeType(p)) return true;\n\tif (isHtmlMimeType(p)) return true;\n\treturn p.essence === \"application/pdf\";\n}\n\n/** Essence is one of the JavaScript MIME type essences. */\nexport function isJavascriptMimeType(mime: string | ParsedMimeType): boolean {\n\tconst p = asParsed(mime);\n\treturn p !== null && JAVASCRIPT_ESSENCES.has(p.essence);\n}\n\n/**\n * True if the string is an ASCII case-insensitive match for one of the\n * JavaScript MIME type essence strings (not necessarily a full parsed MIME type).\n */\nexport function isJavascriptMimeTypeEssenceMatch(s: string): boolean {\n\tconst t = trimHttpWhitespace(s);\n\tif (!t) return false;\n\treturn JAVASCRIPT_ESSENCES.has(asciiLower(t));\n}\n\n/**\n * MIME types typically shown inline in a browsing context (navigation / iframe),\n * as opposed to triggering a download when Content-Disposition is absent.\n */\nexport function isInlineDisplayableMimeType(\n\tmime: string | ParsedMimeType\n): boolean {\n\tconst p = asParsed(mime);\n\tif (!p) return false;\n\tif (asciiLower(p.type) === \"text\") return true;\n\tif (isImageMimeType(p) || isFontMimeType(p)) return true;\n\tif (isAudioOrVideoMimeType(p)) return true;\n\tif (isHtmlMimeType(p) || isJavascriptMimeType(p) || isXmlMimeType(p))\n\t\treturn true;\n\tif (p.essence === \"application/pdf\" || p.essence === \"application/json\")\n\t\treturn true;\n\treturn false;\n}\n","/**\n * this is vibe slop for parsing the content of a meta refresh element, which is a bit of a mess\n * @see https://html.spec.whatwg.org/multipage/semantics.html#the-meta-element:the-declarative-refresh-syntax\n */\nimport { Number_parseInt } from \"./snapshot\";\nexport type ParsedDeclarativeRefresh = {\n\ttime: number;\n\turlStart: number;\n\turlEnd: number;\n\turl: string | null;\n};\n\nfunction isAsciiWhitespace(codePoint: number): boolean {\n\treturn (\n\t\tcodePoint === 0x09 ||\n\t\tcodePoint === 0x0a ||\n\t\tcodePoint === 0x0c ||\n\t\tcodePoint === 0x0d ||\n\t\tcodePoint === 0x20\n\t);\n}\n\nfunction skipAsciiWhitespace(input: string, position: number): number {\n\twhile (position < input.length) {\n\t\tif (!isAsciiWhitespace(input.charCodeAt(position))) {\n\t\t\tbreak;\n\t\t}\n\t\tposition += 1;\n\t}\n\n\treturn position;\n}\n\nfunction isAsciiDigit(codePoint: number): boolean {\n\treturn codePoint >= 0x30 && codePoint <= 0x39;\n}\n\nfunction isAsciiAlpha(codePoint: number): boolean {\n\treturn (\n\t\t(codePoint >= 0x41 && codePoint <= 0x5a) ||\n\t\t(codePoint >= 0x61 && codePoint <= 0x7a)\n\t);\n}\n\nexport function parseDeclarativeRefresh(\n\tinput: string\n): ParsedDeclarativeRefresh | null {\n\tif (input.length === 0) {\n\t\treturn null;\n\t}\n\n\tlet position = 0;\n\tposition = skipAsciiWhitespace(input, position);\n\n\tconst timeStart = position;\n\twhile (position < input.length && isAsciiDigit(input.charCodeAt(position))) {\n\t\tposition += 1;\n\t}\n\tconst timeString = input.slice(timeStart, position);\n\n\tif (timeString.length === 0) {\n\t\tif (input.charCodeAt(position) !== 0x2e) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tconst time = timeString.length > 0 ? Number_parseInt(timeString, 10) : 0;\n\n\twhile (position < input.length) {\n\t\tconst codePoint = input.charCodeAt(position);\n\t\tif (isAsciiDigit(codePoint) || codePoint === 0x2e) {\n\t\t\tposition += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tbreak;\n\t}\n\n\tif (position >= input.length) {\n\t\treturn {\n\t\t\ttime,\n\t\t\turlStart: -1,\n\t\t\turlEnd: -1,\n\t\t\turl: null,\n\t\t};\n\t}\n\n\tconst separator = input.charCodeAt(position);\n\tif (\n\t\tseparator !== 0x3b &&\n\t\tseparator !== 0x2c &&\n\t\t!isAsciiWhitespace(separator)\n\t) {\n\t\treturn null;\n\t}\n\n\tposition = skipAsciiWhitespace(input, position);\n\tif (position < input.length) {\n\t\tconst maybeSeparator = input.charCodeAt(position);\n\t\tif (maybeSeparator === 0x3b || maybeSeparator === 0x2c) {\n\t\t\tposition += 1;\n\t\t}\n\t}\n\tposition = skipAsciiWhitespace(input, position);\n\n\tif (position >= input.length) {\n\t\treturn {\n\t\t\ttime,\n\t\t\turlStart: -1,\n\t\t\turlEnd: -1,\n\t\t\turl: null,\n\t\t};\n\t}\n\n\tlet urlPosition = position;\n\tconst urlLabel = input.slice(position, position + 3);\n\tif (urlLabel.length === 3) {\n\t\tconst first = input.charCodeAt(position);\n\t\tconst second = input.charCodeAt(position + 1);\n\t\tconst third = input.charCodeAt(position + 2);\n\t\tconst hasUrlLabel =\n\t\t\tisAsciiAlpha(first) &&\n\t\t\tisAsciiAlpha(second) &&\n\t\t\tisAsciiAlpha(third) &&\n\t\t\t(urlLabel[0] === \"U\" || urlLabel[0] === \"u\") &&\n\t\t\t(urlLabel[1] === \"R\" || urlLabel[1] === \"r\") &&\n\t\t\t(urlLabel[2] === \"L\" || urlLabel[2] === \"l\");\n\n\t\tif (hasUrlLabel) {\n\t\t\tlet next = position + 3;\n\t\t\tnext = skipAsciiWhitespace(input, next);\n\t\t\tif (input.charCodeAt(next) === 0x3d) {\n\t\t\t\tnext += 1;\n\t\t\t\tnext = skipAsciiWhitespace(input, next);\n\t\t\t\turlPosition = next;\n\t\t\t}\n\t\t}\n\t}\n\n\tlet quote = \"\";\n\tif (urlPosition < input.length) {\n\t\tconst quoteCode = input.charCodeAt(urlPosition);\n\t\tif (quoteCode === 0x22 || quoteCode === 0x27) {\n\t\t\tquote = input[urlPosition];\n\t\t\turlPosition += 1;\n\t\t}\n\t}\n\n\tlet urlEnd = input.length;\n\tif (quote !== \"\") {\n\t\tconst closingQuote = input.indexOf(quote, urlPosition);\n\t\tif (closingQuote !== -1) {\n\t\t\turlEnd = closingQuote;\n\t\t}\n\t}\n\n\tconst url = input.slice(urlPosition, urlEnd);\n\n\treturn {\n\t\ttime,\n\t\turlStart: urlPosition,\n\t\turlEnd,\n\t\turl,\n\t};\n}\n","import { URLMeta, rewriteUrl, unrewriteUrl } from \"@rewriters/url\";\nimport { ScramjetContext } from \"@/shared\";\nimport { String } from \"@/shared/snapshot\";\n\nexport function rewriteCss(\n\tcss: string,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n) {\n\treturn handleCss(\"rewrite\", css, context, meta);\n}\n\nexport function unrewriteCss(css: string, context: ScramjetContext) {\n\treturn handleCss(\"unrewrite\", css, context);\n}\n\nfunction handleCss(\n\ttype: \"rewrite\" | \"unrewrite\",\n\tcss: string,\n\tcontext: ScramjetContext,\n\tmeta?: URLMeta\n) {\n\t// regex from vk6 (https://github.com/ading2210)\n\tconst urlRegex = /(?i:url)\\(['\"]?(.+?)['\"]?\\)/gm;\n\tconst Atruleregex =\n\t\t/@import\\s+((?i:url)\\s*?\\(.{0,9999}?\\)|['\"].{0,9999}?['\"]|.{0,9999}?)($|\\s|;)/gm;\n\tcss = String(css);\n\tcss = css.replace(urlRegex, (match, url: string) => {\n\t\tconst encodedUrl =\n\t\t\ttype === \"rewrite\"\n\t\t\t\t? rewriteUrl(url.trim(), context, meta!)\n\t\t\t\t: unrewriteUrl(url.trim(), context);\n\n\t\treturn match.replace(url, encodedUrl);\n\t});\n\tcss = css.replace(Atruleregex, (match, importStatement: string) => {\n\t\treturn match.replace(\n\t\t\timportStatement,\n\t\t\timportStatement.replace(\n\t\t\t\t/^(url\\(['\"]?|['\"]|)(.+?)(['\"]|['\"]?\\)|)$/gm,\n\t\t\t\t(match: string, firstQuote: string, url: string, endQuote: string) => {\n\t\t\t\t\tif (firstQuote.startsWith(\"url\")) {\n\t\t\t\t\t\treturn match;\n\t\t\t\t\t}\n\t\t\t\t\tconst encodedUrl =\n\t\t\t\t\t\ttype === \"rewrite\"\n\t\t\t\t\t\t\t? rewriteUrl(url.trim(), context, meta!)\n\t\t\t\t\t\t\t: unrewriteUrl(url.trim(), context);\n\n\t\t\t\t\treturn `${firstQuote}${encodedUrl}${endQuote}`;\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t});\n\n\treturn css;\n}\n","import { ElementType, Parser } from \"htmlparser2\";\nimport { ChildNode, DomHandler, Element, Comment } from \"domhandler\";\nimport render from \"dom-serializer\";\nimport { URLMeta, rewriteUrl } from \"@rewriters/url\";\nimport { rewriteCss } from \"@rewriters/css\";\nimport { rewriteJs } from \"@rewriters/js\";\nimport { ScramjetContext } from \"@/shared\";\nimport { htmlRules } from \"@/shared/htmlRules\";\nimport { parseDeclarativeRefresh } from \"@/shared/refresh\";\nimport { bytesToBase64 } from \"@/shared/util\";\nimport { Tap } from \"@/Tap\";\nimport { RawHeaders } from \"@mercuryworkshop/proxy-transports\";\nimport { TrackedHistoryState } from \"@/fetch\";\nimport {\n\tPerformance_now,\n\tatob,\n\tObject_entries,\n\tJSON_parse,\n\tJSON_stringify,\n\tTextEncoder_encode,\n\tArray_from,\n\tString_fromCodePoint,\n\tbtoa,\n\t_URL,\n} from \"@/shared/snapshot\";\nimport { flagEnabled } from \"..\";\n\nexport type ForeignContext = \"svg\" | \"math\" | \"html\";\n\nexport type HtmlContext = {\n\t// should we inject scramjet scripts at the top of the document?\n\tloadScripts: boolean;\n\t// did the document come from the service worker, or from document.write/innerHTML?\n\tinline: boolean;\n\t// for worker originating documents, the source URL, otherwise the url of the page that triggered the rewrite\n\tsource: string;\n\t// for api originating documents, the name of the api that triggered the rewrite\n\tapisource?: string;\n\t// response headers for worker originating documents\n\theaders?: RawHeaders;\n\tforeignContext?: ForeignContext;\n\thistory?: TrackedHistoryState[];\n};\n\nconst renderOptions = {\n\tencodeEntities: \"utf8\" as const,\n\tdecodeEntities: false,\n};\nfunction serializeHtmlNode(node: ChildNode) {\n\treturn render(node, renderOptions);\n}\n\nfunction isElementNode(node: ChildNode): node is Element {\n\treturn (\n\t\tnode.type === ElementType.Tag ||\n\t\tnode.type === ElementType.Script ||\n\t\tnode.type === ElementType.Style\n\t);\n}\n\nexport class IncrementalHtmlRewriter {\n\tprivate readonly handler: DomHandler;\n\tprivate readonly parser: Parser;\n\tprivate readonly completedElements = new WeakSet<Element>();\n\tprivate readonly emittedLengths = new WeakMap<ChildNode, number>();\n\tprivate readonly rewrittenNodes = new WeakMap<ChildNode, string>();\n\tprivate ended = false;\n\n\tconstructor(\n\t\tprivate readonly context: ScramjetContext,\n\t\tprivate readonly meta: URLMeta,\n\t\tprivate readonly htmlcontext: HtmlContext\n\t) {\n\t\tthis.handler = new DomHandler(undefined, undefined, (element) => {\n\t\t\tthis.completedElements.add(element);\n\t\t});\n\t\tthis.parser = new Parser(this.handler, {\n\t\t\tstartingForeignContext: htmlcontext.foreignContext,\n\t\t});\n\t}\n\n\twrite(html: string) {\n\t\tif (this.ended) {\n\t\t\tthrow new Error(\"IncrementalHtmlRewriter stream already ended\");\n\t\t}\n\n\t\tthis.parser.write(html);\n\n\t\treturn this.flush();\n\t}\n\n\tend(html = \"\") {\n\t\tif (this.ended) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tif (html) {\n\t\t\tthis.parser.write(html);\n\t\t}\n\n\t\tthis.parser.end();\n\t\tthis.ended = true;\n\n\t\treturn this.flush();\n\t}\n\n\tprivate flush() {\n\t\tlet output = \"\";\n\n\t\tfor (const node of this.handler.root.childNodes) {\n\t\t\tconst rewritten = this.getAvailableOutput(node);\n\t\t\tif (rewritten === null) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst emittedLength = this.emittedLengths.get(node) ?? 0;\n\t\t\tif (rewritten.length > emittedLength) {\n\t\t\t\toutput += rewritten.slice(emittedLength);\n\t\t\t\tthis.emittedLengths.set(node, rewritten.length);\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t}\n\n\tprivate getAvailableOutput(node: ChildNode) {\n\t\tif (!isElementNode(node)) {\n\t\t\treturn serializeHtmlNode(node);\n\t\t}\n\n\t\tif (!this.completedElements.has(node)) {\n\t\t\treturn null;\n\t\t}\n\n\t\tlet rewritten = this.rewrittenNodes.get(node);\n\t\tif (rewritten === undefined) {\n\t\t\trewritten = rewriteHtmlInner(\n\t\t\t\tnode,\n\t\t\t\tthis.context,\n\t\t\t\tthis.meta,\n\t\t\t\tthis.htmlcontext\n\t\t\t);\n\t\t\tthis.rewrittenNodes.set(node, rewritten);\n\t\t}\n\n\t\treturn rewritten;\n\t}\n}\n\nfunction rewriteHtmlInner(\n\thtml: string | ChildNode,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta,\n\thtmlcontext: HtmlContext\n) {\n\tif (typeof html !== \"string\") {\n\t\thtml = serializeHtmlNode(html);\n\t}\n\n\tconst handler = new DomHandler((err, dom) => dom);\n\tconst parser = new Parser(handler, {\n\t\tstartingForeignContext: htmlcontext.foreignContext,\n\t});\n\n\tparser.write(html);\n\tparser.end();\n\tTap.dispatch(\n\t\tcontext.hooks!.rewriter.html.pre,\n\t\t{\n\t\t\thandler,\n\t\t\tmeta,\n\t\t\thtmlcontext,\n\t\t\torigHtml: html,\n\t\t},\n\t\tundefined\n\t);\n\ttraverseParsedHtml(handler.root, context, meta);\n\n\tlet htmlRoot: Element | undefined;\n\tlet headElement: Element | undefined;\n\tlet bodyElement: Element | undefined;\n\n\tfunction detectQuirks() {\n\t\tfor (const child of handler.root.childNodes) {\n\t\t\tif (\n\t\t\t\tchild.type === ElementType.Directive ||\n\t\t\t\tchild.type === ElementType.Comment ||\n\t\t\t\tchild.type === ElementType.Text\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (child.type === ElementType.Tag && child.name === \"html\") {\n\t\t\t\thtmlRoot = child as Element;\n\t\t\t} else {\n\t\t\t\t// there's a child of the root that isn't an html element or a doctype/comment/text\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tif (!htmlRoot) return true; // no html tag or it's somewhere else other than first child\n\n\t\tfor (const child of htmlRoot.childNodes) {\n\t\t\tif (\n\t\t\t\tchild.type === ElementType.Directive ||\n\t\t\t\tchild.type === ElementType.Comment ||\n\t\t\t\tchild.type === ElementType.Text\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (child.type === ElementType.Tag && child.name === \"head\") {\n\t\t\t\tif (bodyElement) {\n\t\t\t\t\t// head comes after body\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\theadElement = child as Element;\n\t\t\t} else if (child.type === ElementType.Tag && child.name === \"body\") {\n\t\t\t\tbodyElement = child as Element;\n\t\t\t} else {\n\t\t\t\t// there's a child of html that isn't head or body\n\t\t\t\t// fine if head already exists, bad if it doesn't\n\t\t\t\tif (!headElement) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tconst isQuirky = detectQuirks();\n\n\tif (htmlcontext.loadScripts) {\n\t\tconst script = (src: string) =>\n\t\t\tnew Element(\"script\", { src, \"scramjet-injected\": \"true\" });\n\t\tconst injectScripts = context.interface.getInjectScripts(\n\t\t\tmeta,\n\t\t\thandler,\n\t\t\thtmlcontext,\n\t\t\tscript\n\t\t);\n\n\t\tif (isQuirky) {\n\t\t\tdbg.warn(\n\t\t\t\t`detected quirky document structure parsing @ ${meta.origin.href}!`\n\t\t\t);\n\t\t\t// there's weird stuff going on with the document that could result in page scripts being loaded before our inject scripts\n\t\t\t// so inject them at position 0\n\t\t\thandler.root.children.unshift(...injectScripts);\n\t\t} else {\n\t\t\tif (!headElement) {\n\t\t\t\theadElement = new Element(\"head\", {}, []);\n\t\t\t\thtmlRoot.children.unshift(headElement);\n\t\t\t}\n\n\t\t\theadElement.children.unshift(...injectScripts);\n\t\t}\n\t}\n\n\tconst props: typeof context.hooks.rewriter.html.post.props = {};\n\tTap.dispatch(\n\t\tcontext.hooks!.rewriter.html.post,\n\t\t{\n\t\t\thandler,\n\t\t\tmeta,\n\t\t\thtmlcontext,\n\t\t\torigHtml: html,\n\t\t},\n\t\tprops\n\t);\n\n\tif (props.setRawHtml !== undefined) {\n\t\treturn props.setRawHtml;\n\t}\n\n\treturn render(handler.root, renderOptions);\n}\n\nexport function rewriteHtml(\n\thtml: string,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta,\n\thtmlcontext: HtmlContext\n) {\n\tconst before = Performance_now();\n\tconst ret = rewriteHtmlInner(html, context, meta, htmlcontext);\n\tif (flagEnabled(\"rewriterLogs\", context, meta.base)) {\n\t\tdbg.time(meta, before, \"html rewrite\");\n\t}\n\n\treturn ret;\n}\n\n// type ParseState = {\n// \tbase: string;\n// \torigin?: URL;\n// };\n\nexport function unrewriteHtml(html: string, foreignContext?: ForeignContext) {\n\tconst handler = new DomHandler((err, dom) => dom);\n\tconst parser = new Parser(handler, {\n\t\tstartingForeignContext: foreignContext,\n\t});\n\n\tparser.write(html);\n\tparser.end();\n\n\tfunction traverse(node: ChildNode) {\n\t\tif (\"attribs\" in node) {\n\t\t\tfor (const key in node.attribs) {\n\t\t\t\tif (key == \"scramjet-attr-script-source-src\") {\n\t\t\t\t\tif (node.children[0] && \"data\" in node.children[0])\n\t\t\t\t\t\tnode.children[0].data = atob(node.attribs[key]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (key.startsWith(\"scramjet-attr-\")) {\n\t\t\t\t\tnode.attribs[key.slice(\"scramjet-attr-\".length)] = node.attribs[key];\n\t\t\t\t\tdelete node.attribs[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (\"childNodes\" in node) {\n\t\t\tfor (const child of node.childNodes) {\n\t\t\t\ttraverse(child);\n\t\t\t}\n\t\t}\n\t}\n\n\ttraverse(handler.root);\n\n\treturn render(handler.root, {\n\t\t...renderOptions,\n\t});\n}\n\n// i need to add the attributes in during rewriting\n\nfunction traverseParsedHtml(\n\tnode: any,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n) {\n\tif (node.name === \"base\" && node.attribs.href !== undefined) {\n\t\tmeta.base = new _URL(node.attribs.href, meta.origin);\n\t}\n\n\tif (node.attribs) {\n\t\tfor (const rule of htmlRules) {\n\t\t\tfor (const attr in rule) {\n\t\t\t\tconst sel = rule[attr.toLowerCase()];\n\t\t\t\tif (typeof sel === \"function\") continue;\n\n\t\t\t\tif (sel === \"*\" || sel.includes(node.name)) {\n\t\t\t\t\tif (node.attribs[attr] !== undefined) {\n\t\t\t\t\t\tconst value = node.attribs[attr];\n\t\t\t\t\t\tconst v = rule.fn(value, context, meta);\n\n\t\t\t\t\t\tif (v === null) delete node.attribs[attr];\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tnode.attribs[attr] = v;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode.attribs[`scramjet-attr-${attr}`] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (const [attr, value] of Object_entries(node.attribs)) {\n\t\t\tif (eventAttributes.includes(attr)) {\n\t\t\t\tnode.attribs[`scramjet-attr-${attr}`] = value;\n\t\t\t\tnode.attribs[attr] = rewriteJs(\n\t\t\t\t\tvalue as string,\n\t\t\t\t\t`(inline ${attr} on element)`,\n\t\t\t\t\tcontext,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (node.name === \"style\" && node.children[0] !== undefined)\n\t\tnode.children[0].data = rewriteCss(node.children[0].data, context, meta);\n\n\tif (\n\t\tnode.name === \"script\" &&\n\t\tnode.attribs.type === \"module\" &&\n\t\tnode.attribs.src\n\t)\n\t\tnode.attribs.src = node.attribs.src + \"?type=module\";\n\n\tif (\n\t\tnode.name === \"script\" &&\n\t\tnode.attribs.type === \"importmap\" &&\n\t\tnode.children[0] !== undefined\n\t) {\n\t\tconst json = node.children[0].data;\n\t\ttry {\n\t\t\tconst map = JSON_parse(json);\n\t\t\tif (map.imports) {\n\t\t\t\tfor (const key in map.imports) {\n\t\t\t\t\tlet url = map.imports[key];\n\t\t\t\t\tif (typeof url === \"string\") {\n\t\t\t\t\t\turl = rewriteUrl(url, context, meta);\n\t\t\t\t\t\tmap.imports[key] = url;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnode.children[0].data = JSON_stringify(map);\n\t\t} catch (e) {\n\t\t\tdbg.error(\"Failed to parse importmap JSON:\", e);\n\t\t}\n\t}\n\tif (\n\t\tnode.name === \"script\" &&\n\t\t/(application|text)\\/javascript|module|undefined/.test(node.attribs.type) &&\n\t\tnode.children[0] !== undefined\n\t) {\n\t\tlet js = node.children[0].data;\n\t\tconst module = node.attribs.type === \"module\" ? true : false;\n\t\tnode.attribs[\"scramjet-attr-script-source-src\"] = bytesToBase64(\n\t\t\tTextEncoder_encode(js)\n\t\t);\n\t\tconst htmlcomment = /<!--[\\s\\S]*?-->/g;\n\t\tjs = js.replace(htmlcomment, \"\");\n\t\tnode.children[0].data = rewriteJs(\n\t\t\tjs,\n\t\t\t\"(inline script element)\",\n\t\t\tcontext,\n\t\t\tmeta,\n\t\t\tmodule\n\t\t);\n\t}\n\n\tif (node.name === \"meta\" && node.attribs[\"http-equiv\"] !== undefined) {\n\t\tif (\n\t\t\tnode.attribs[\"http-equiv\"].toLowerCase() === \"content-security-policy\"\n\t\t) {\n\t\t\t// just delete it. this needs to be emulated eventually but like\n\t\t\tnode = new Comment(node.attribs.content);\n\t\t} else if (node.attribs[\"http-equiv\"].toLowerCase() === \"refresh\") {\n\t\t\tconst refresh = parseDeclarativeRefresh(node.attribs.content || \"\");\n\t\t\tif (refresh && refresh.url !== null && refresh.url.length > 0) {\n\t\t\t\tconst rewritten = rewriteUrl(refresh.url.trim(), context, meta);\n\t\t\t\tnode.attribs.content =\n\t\t\t\t\tnode.attribs.content.slice(0, refresh.urlStart) +\n\t\t\t\t\trewritten +\n\t\t\t\t\tnode.attribs.content.slice(refresh.urlEnd);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (node.childNodes) {\n\t\tfor (const childNode in node.childNodes) {\n\t\t\tnode.childNodes[childNode] = traverseParsedHtml(\n\t\t\t\tnode.childNodes[childNode],\n\t\t\t\tcontext,\n\t\t\t\tmeta\n\t\t\t);\n\t\t}\n\t}\n\n\treturn node;\n}\n\nexport function rewriteSrcset(\n\tsrcset: string,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n) {\n\tconst sources = srcset.split(/ .*,/).map((src) => src.trim());\n\tconst rewrittenSources = sources.map((source) => {\n\t\t// Split into URLs and descriptors (if any)\n\t\t// e.g. url0, url1 1.5x, url2 2x\n\t\tconst [url, ...descriptors] = source.split(/\\s+/);\n\n\t\t// Rewrite the URLs and keep the descriptors (if any)\n\t\tconst rewrittenUrl = rewriteUrl(url.trim(), context, meta);\n\n\t\treturn descriptors.length > 0\n\t\t\t? `${rewrittenUrl} ${descriptors.join(\" \")}`\n\t\t\t: rewrittenUrl;\n\t});\n\n\treturn rewrittenSources.join(\", \");\n}\n\n// function base64ToBytes(base64) {\n// \tconst binString = atob(base64);\n\n// \treturn Uint8Array.from(binString, (m) => m.codePointAt(0));\n// }\n\nconst eventAttributes = [\n\t\"onbeforexrselect\",\n\t\"onabort\",\n\t\"onbeforeinput\",\n\t\"onbeforematch\",\n\t\"onbeforetoggle\",\n\t\"onblur\",\n\t\"oncancel\",\n\t\"oncanplay\",\n\t\"oncanplaythrough\",\n\t\"onchange\",\n\t\"onclick\",\n\t\"onclose\",\n\t\"oncontentvisibilityautostatechange\",\n\t\"oncontextlost\",\n\t\"oncontextmenu\",\n\t\"oncontextrestored\",\n\t\"oncuechange\",\n\t\"ondblclick\",\n\t\"ondrag\",\n\t\"ondragend\",\n\t\"ondragenter\",\n\t\"ondragleave\",\n\t\"ondragover\",\n\t\"ondragstart\",\n\t\"ondrop\",\n\t\"ondurationchange\",\n\t\"onemptied\",\n\t\"onended\",\n\t\"onerror\",\n\t\"onfocus\",\n\t\"onformdata\",\n\t\"oninput\",\n\t\"oninvalid\",\n\t\"onkeydown\",\n\t\"onkeypress\",\n\t\"onkeyup\",\n\t\"onload\",\n\t\"onloadeddata\",\n\t\"onloadedmetadata\",\n\t\"onloadstart\",\n\t\"onmousedown\",\n\t\"onmouseenter\",\n\t\"onmouseleave\",\n\t\"onmousemove\",\n\t\"onmouseout\",\n\t\"onmouseover\",\n\t\"onmouseup\",\n\t\"onmousewheel\",\n\t\"onpause\",\n\t\"onplay\",\n\t\"onplaying\",\n\t\"onprogress\",\n\t\"onratechange\",\n\t\"onreset\",\n\t\"onresize\",\n\t\"onscroll\",\n\t\"onsecuritypolicyviolation\",\n\t\"onseeked\",\n\t\"onseeking\",\n\t\"onselect\",\n\t\"onslotchange\",\n\t\"onstalled\",\n\t\"onsubmit\",\n\t\"onsuspend\",\n\t\"ontimeupdate\",\n\t\"ontoggle\",\n\t\"onvolumechange\",\n\t\"onwaiting\",\n\t\"onwebkitanimationend\",\n\t\"onwebkitanimationiteration\",\n\t\"onwebkitanimationstart\",\n\t\"onwebkittransitionend\",\n\t\"onwheel\",\n\t\"onauxclick\",\n\t\"ongotpointercapture\",\n\t\"onlostpointercapture\",\n\t\"onpointerdown\",\n\t\"onpointermove\",\n\t\"onpointerrawupdate\",\n\t\"onpointerup\",\n\t\"onpointercancel\",\n\t\"onpointerover\",\n\t\"onpointerout\",\n\t\"onpointerenter\",\n\t\"onpointerleave\",\n\t\"onselectstart\",\n\t\"onselectionchange\",\n\t\"onanimationend\",\n\t\"onanimationiteration\",\n\t\"onanimationstart\",\n\t\"ontransitionrun\",\n\t\"ontransitionstart\",\n\t\"ontransitionend\",\n\t\"ontransitioncancel\",\n\t\"oncopy\",\n\t\"oncut\",\n\t\"onpaste\",\n\t\"onscrollend\",\n\t\"onscrollsnapchange\",\n\t\"onscrollsnapchanging\",\n];\n","import { flagEnabled, ScramjetContext } from \"@/shared\";\nimport { URLMeta } from \"@rewriters/url\";\n\nimport { getRewriter, JsRewriterOutput } from \"@rewriters/wasm\";\nimport {\n\tArray_from,\n\tTextDecoder_decode,\n\t_RegExp,\n\t_Uint8Array,\n\tObject_keys,\n\tPerformance_now,\n} from \"../snapshot\";\n\n// eslint-disable-next-line scramjet-core/no-globals\nError.stackTraceLimit = 50;\n\ntype RewriterResult = {\n\tjs: string | Uint8Array;\n\tmap: Uint8Array | null;\n\ttag: string;\n\terrors: string[];\n};\nfunction rewriteJsWasm(\n\tinput: string | Uint8Array,\n\tsource: string | null,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta,\n\tisModule: boolean\n): RewriterResult {\n\tconst [rewriter, ret] = getRewriter(context, meta);\n\n\tconst flagsobj = {};\n\tfor (const flag of Object_keys(context.config.flags)) {\n\t\tflagsobj[flag] = flagEnabled(flag as any, context, meta.base);\n\t}\n\n\ttry {\n\t\tlet out: JsRewriterOutput;\n\t\tconst before = Performance_now();\n\t\t// try {\n\t\tif (typeof input === \"string\") {\n\t\t\tout = rewriter.rewrite_js(\n\t\t\t\t{\n\t\t\t\t\t...context.config.globals,\n\t\t\t\t\tprefix: context.prefix.pathname,\n\t\t\t\t},\n\t\t\t\tflagsobj,\n\t\t\t\tcontext.interface.codecEncode,\n\t\t\t\tinput,\n\t\t\t\tmeta.base.href,\n\t\t\t\tsource || \"(unknown)\",\n\t\t\t\tisModule\n\t\t\t);\n\t\t} else {\n\t\t\tout = rewriter.rewrite_js_bytes(\n\t\t\t\t{\n\t\t\t\t\t...context.config.globals,\n\t\t\t\t\tprefix: context.prefix.pathname,\n\t\t\t\t},\n\t\t\t\tflagsobj,\n\t\t\t\tcontext.interface.codecEncode,\n\t\t\t\tinput,\n\t\t\t\tmeta.base.href,\n\t\t\t\tsource || \"(unknown)\",\n\t\t\t\tisModule\n\t\t\t);\n\t\t}\n\t\t// } catch (err) {\n\t\t// \tconst err1 = err as Error;\n\t\t// \tconsole.warn(\n\t\t// \t\t\"failed rewriting js for\",\n\t\t// \t\tsource,\n\t\t// \t\terr1.message,\n\t\t// \t\tinput instanceof Uint8Array ? textDecoder.decode(input) : input\n\t\t// \t);\n\n\t\t// \treturn { js: input, tag: \"\", map: null };\n\t\t// }\n\t\tif (flagEnabled(\"rewriterLogs\", context, meta.base)) {\n\t\t\tdbg.time(meta, before, `oxc rewrite for \"${source || \"(unknown)\"}\"`);\n\t\t}\n\n\t\tconst { js, map, scramtag, errors } = out;\n\n\t\treturn {\n\t\t\tjs: typeof input === \"string\" ? TextDecoder_decode(js) : js,\n\t\t\ttag: scramtag,\n\t\t\tmap,\n\t\t\terrors,\n\t\t};\n\t} finally {\n\t\tret();\n\t}\n}\n\nexport function rewriteJsInner(\n\tjs: string | Uint8Array,\n\turl: string | null,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta,\n\tisModule = false\n) {\n\treturn rewriteJsWasm(js, url, context, meta, isModule);\n}\n\nexport function rewriteJs(\n\tjs: string | Uint8Array,\n\turl: string | null,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta,\n\tisModule = false\n): string | Uint8Array {\n\ttry {\n\t\tconst res = rewriteJsInner(js, url, context, meta, isModule);\n\t\tlet newjs = res.js;\n\n\t\tif (flagEnabled(\"sourcemaps\", context, meta.base)) {\n\t\t\tconst pushmap = globalThis[context.config.globals.pushsourcemapfn];\n\t\t\tif (pushmap) {\n\t\t\t\tpushmap(Array_from(res.map), res.tag);\n\t\t\t} else {\n\t\t\t\t// TODO: how do we check instanceof here?\n\t\t\t\tif (typeof newjs !== \"string\") {\n\t\t\t\t\tnewjs = TextDecoder_decode(newjs);\n\t\t\t\t}\n\t\t\t\tconst sourcemapfn = `${context.config.globals.pushsourcemapfn}([${res.map.join(\",\")}], \"${res.tag}\");`;\n\n\t\t\t\t// don't put the sourcemap call before \"use strict\"\n\t\t\t\tconst strictMode = new _RegExp(/^\\s*(['\"])use strict\\1;?/);\n\t\t\t\tif (strictMode.test(newjs)) {\n\t\t\t\t\tnewjs = newjs.replace(strictMode, `$&\\n${sourcemapfn}`);\n\t\t\t\t} else {\n\t\t\t\t\tnewjs = `${sourcemapfn}\\n${newjs}`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (flagEnabled(\"rewriterLogs\", context, meta.base)) {\n\t\t\tfor (const error of res.errors) {\n\t\t\t\tdbg.error(\"oxc parse error\", error);\n\t\t\t}\n\t\t}\n\n\t\treturn newjs;\n\t} catch (err) {\n\t\tdbg.warn(\n\t\t\t\"failed rewriting js for\",\n\t\t\turl || \"(unknown)\",\n\t\t\terr.message,\n\t\t\ttypeof js !== \"string\" ? TextDecoder_decode(js) : js\n\t\t);\n\t\tif (flagEnabled(\"allowInvalidJs\", context, meta.base)) {\n\t\t\treturn js;\n\t\t} else {\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n","import { ScramjetContext } from \"@/shared\";\nimport { rewriteJs } from \"@rewriters/js\";\nimport { QP } from \"@/fetch/parse\";\n\nimport {\n\tTextEncoder_encode,\n\t_URL,\n\t_URLSearchParams,\n\tatob,\n\tString,\n\tURL_createObjectURL,\n} from \"../snapshot\";\n\n// user: manually triggered navigation\n// link: link clicked by the user. still user initiated, but doesn't wipe\n// location: location = ...\nexport type NavigationType = \"user\" | \"link\" | \"location\";\n\nexport type RewriteUrlOptions = {\n\treferrerPolicy?: string;\n\tisModule?: boolean;\n\tnavigateType?: NavigationType;\n\ttopFrame?: string;\n\tparentFrame?: string;\n\tisIframe?: string;\n\tmode?: string;\n\tcredentials?: string;\n\tdestination?: RequestDestination;\n};\n\nexport type URLMeta = {\n\torigin: _URL;\n\tbase: _URL;\n\ttopFrameName?: string;\n\tparentFrameName?: string;\n\treferrerPolicy?: string;\n};\n\nfunction tryCanParseURL(url: string, origin?: string | URL): _URL | null {\n\ttry {\n\t\treturn new _URL(url, origin);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport function rewriteBlob(\n\turl: string,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n) {\n\tconst blob = new _URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + meta.origin.origin + blob.pathname;\n}\n\nexport function unrewriteBlob(\n\turl: string,\n\tcontext: ScramjetContext,\n\t_meta: URLMeta\n) {\n\tconst blob = new _URL(url.substring(\"blob:\".length));\n\n\treturn \"blob:\" + context.prefix.origin + blob.pathname;\n}\n\nfunction dataToBlob(url: string) {\n\tconst commaIndex = url.indexOf(\",\");\n\tif (commaIndex === -1) return null;\n\n\tconst meta = url.slice(\"data:\".length, commaIndex);\n\tconst data = url.slice(commaIndex + 1);\n\n\tconst metaParts = meta.split(\";\");\n\tconst mediaType = metaParts.shift() || \"\";\n\tconst isBase64 = metaParts.some((part) => part.toLowerCase() === \"base64\");\n\tconst params = metaParts.filter(\n\t\t(part) => part && part.toLowerCase() !== \"base64\"\n\t);\n\n\tlet type = mediaType || \"text/plain\";\n\tif (!mediaType) {\n\t\tconst hasCharset = params.some((part) =>\n\t\t\tpart.toLowerCase().startsWith(\"charset=\")\n\t\t);\n\t\tif (!hasCharset) {\n\t\t\tparams.push(\"charset=US-ASCII\");\n\t\t}\n\t}\n\tif (params.length) type += \";\" + params.join(\";\");\n\n\tlet bytes: Uint8Array;\n\tif (isBase64) {\n\t\tlet base64 = data.replace(/\\s/g, \"\");\n\t\tbase64 = base64.replace(/-/g, \"+\").replace(/_/g, \"/\");\n\t\tconst binString = atob(base64);\n\t\tbytes = new Uint8Array(binString.length);\n\t\tfor (let i = 0; i < binString.length; i++) {\n\t\t\tbytes[i] = binString.charCodeAt(i);\n\t\t}\n\t} else {\n\t\tlet decoded = data;\n\t\ttry {\n\t\t\tdecoded = decodeURIComponent(data);\n\t\t} catch {\n\t\t\t// If decode fails, fall back to raw data.\n\t\t}\n\t\tbytes = TextEncoder_encode(decoded);\n\t}\n\n\tconst blob = new Blob([bytes], { type });\n\tconst objectUrl = URL_createObjectURL(blob);\n\treturn { blob, objectUrl };\n}\n\nexport function rewriteUrl(\n\turl: string | URL,\n\tcontext: ScramjetContext,\n\tmeta: URLMeta,\n\toptions?: RewriteUrlOptions\n) {\n\turl = String(url);\n\n\tif (url.startsWith(\"javascript:\")) {\n\t\treturn (\n\t\t\t\"javascript:\" +\n\t\t\trewriteJs(\n\t\t\t\turl.slice(\"javascript:\".length),\n\t\t\t\t\"(javascript: url)\",\n\t\t\t\tcontext,\n\t\t\t\tmeta\n\t\t\t)\n\t\t);\n\t} else if (url.startsWith(\"blob:\")) {\n\t\treturn context.prefix.href + url;\n\t} else if (url.startsWith(\"data:\")) {\n\t\tconst URL_MAX_LENGTH = 1024 * 1024 * 2;\n\t\tconst BUFFER = 1024;\n\t\t// chrome will explode if you make a request to a service worker with a 2MB+ URL\n\t\t// there's an okayish workaround which is just Pretending It's a Blob\n\t\t// TODO: this leaks memory\n\t\tif (url.length + context.prefix.href.length + BUFFER > URL_MAX_LENGTH) {\n\t\t\tconst { objectUrl } = dataToBlob(url);\n\t\t\treturn context.prefix.href + rewriteBlob(objectUrl, context, meta);\n\t\t}\n\n\t\treturn context.prefix.href + url;\n\t} else if (url.startsWith(\"mailto:\") || url.startsWith(\"about:\")) {\n\t\treturn url;\n\t} else {\n\t\tlet base = meta.base.href;\n\n\t\tif (base.startsWith(\"about:\"))\n\t\t\tbase = unrewriteUrl(self.location.href, context); // jank!!!!! weird jank!!!\n\t\tconst realUrl = tryCanParseURL(url, base);\n\t\tif (!realUrl) return url;\n\n\t\tif (realUrl.protocol != \"http:\" && realUrl.protocol != \"https:\") {\n\t\t\t// custom protocol. best thing to do is pass it through so it can open an app etc\n\t\t\t// there's also extension:// pages we might need to worry about later\n\t\t\treturn url;\n\t\t}\n\n\t\tconst encodedHash = context.interface.codecEncode(realUrl.hash.slice(1));\n\t\tconst realHash = encodedHash ? \"#\" + encodedHash : \"\";\n\t\trealUrl.hash = \"\";\n\n\t\tconst paramsInit = new _URLSearchParams();\n\n\t\tconst referrerPolicy = options?.referrerPolicy ?? meta.referrerPolicy;\n\t\tif (referrerPolicy) paramsInit.set(QP.referrerPolicy, referrerPolicy);\n\t\tif (options?.isModule) paramsInit.set(QP.isModule, \"module\");\n\t\tif (options?.topFrame) paramsInit.set(QP.topFrame, options.topFrame);\n\t\tif (options?.parentFrame)\n\t\t\tparamsInit.set(QP.parentFrame, options.parentFrame);\n\t\tif (options?.isIframe) paramsInit.set(QP.isIframe, options.isIframe);\n\t\tif (options?.mode) paramsInit.set(QP.mode, options.mode);\n\t\tif (options?.credentials)\n\t\t\tparamsInit.set(QP.credentials, options.credentials);\n\t\tif (options?.destination)\n\t\t\tparamsInit.set(QP.destination, options.destination);\n\n\t\t// specific tracking for sec-fetch-site\n\t\t// don't send for the top level controller calling it in go()\n\t\tif (meta.origin.origin !== context.prefix.origin) {\n\t\t\tparamsInit.set(QP.initiatorOrigin, meta.origin.origin);\n\t\t}\n\n\t\tlet paramstring = \"\";\n\t\tif (paramsInit.toString()) paramstring = \"?\" + paramsInit.toString();\n\n\t\treturn (\n\t\t\tcontext.prefix.href +\n\t\t\tcontext.interface.codecEncode(realUrl.href) +\n\t\t\tparamstring +\n\t\t\trealHash\n\t\t);\n\t}\n}\n\nexport function unrewriteUrl(url: string | URL, context: ScramjetContext) {\n\turl = String(url);\n\tif (url.startsWith(\"javascript:\")) {\n\t\t//TODO\n\t\treturn url;\n\t} else if (url.startsWith(\"blob:\")) {\n\t\t// realistically this shouldn't happen\n\t\treturn url;\n\t} else if (url.startsWith(context.prefix.href + \"blob:\")) {\n\t\treturn url.substring(context.prefix.href.length);\n\t} else if (url.startsWith(context.prefix.href + \"data:\")) {\n\t\treturn url.substring(context.prefix.href.length);\n\t} else if (url.startsWith(\"mailto:\") || url.startsWith(\"about:\")) {\n\t\treturn url;\n\t} else if (url.startsWith(\"http:\") || url.startsWith(\"https:\")) {\n\t\tconst realUrl = tryCanParseURL(url);\n\t\tif (!realUrl) return url;\n\t\tif (realUrl.protocol != \"http:\" && realUrl.protocol != \"https:\") {\n\t\t\t// custom protocol\n\t\t\treturn url;\n\t\t}\n\t\tif (!realUrl.href.startsWith(context.prefix.href)) {\n\t\t\tdbg.error(\"unrewriteurl: unexpected url\", url);\n\t\t\treturn url;\n\t\t}\n\t\tconst decodedHash = context.interface.codecDecode(realUrl.hash.slice(1));\n\t\tconst realHash = decodedHash ? \"#\" + decodedHash : \"\";\n\t\trealUrl.hash = \"\";\n\t\trealUrl.search = \"\";\n\n\t\treturn (\n\t\t\tcontext.interface.codecDecode(\n\t\t\t\trealUrl.href.slice(context.prefix.href.length)\n\t\t\t) + realHash\n\t\t);\n\t} else if (url == \"\") {\n\t\treturn url;\n\t} else {\n\t\tdbg.error(\"unrewriteurl: unexpected url\", url);\n\t\treturn url;\n\t}\n}\n","// i am a cat. i like to be petted. i like to be fed. i like to be\nimport { initSync, Rewriter } from \"../../../rewriter/wasm/out/wasm.js\";\nimport type { JsRewriterOutput } from \"../../../rewriter/wasm/out/wasm.js\";\nimport { flagEnabled, ScramjetContext } from \"@/shared\";\n\nexport type { JsRewriterOutput, Rewriter };\n\nimport { URLMeta } from \"@rewriters/url\";\nimport { Error, TextDecoder_decode } from \"@/shared/snapshot\";\n\nlet wasm_u8: Uint8Array;\nexport function setWasm(u8: Uint8Array | ArrayBuffer) {\n\twasm_u8 = u8 instanceof Uint8Array ? u8 : new Uint8Array(u8);\n}\n\nconst MAGIC = \"\\0asm\".split(\"\").map((x) => x.charCodeAt(0));\n\nfunction initWasm() {\n\tif (!(wasm_u8 instanceof Uint8Array))\n\t\tthrow new Error(\"rewriter wasm not found (was setWasm called?)\");\n\n\tif (![...wasm_u8.slice(0, 4)].every((x, i) => x === MAGIC[i]))\n\t\tthrow new Error(\n\t\t\t\"rewriter wasm does not have wasm magic (was it fetched correctly?)\\nrewriter wasm contents: \" +\n\t\t\t\tTextDecoder_decode(wasm_u8)\n\t\t);\n\n\tinitSync({\n\t\tmodule: new WebAssembly.Module(wasm_u8 as unknown as BufferSource),\n\t});\n}\n\ntype RewriterBox = { rewriter: Rewriter; inUse: boolean };\nconst rewriters: RewriterBox[] = [];\nexport function getRewriter(\n\tcontext: ScramjetContext,\n\tmeta: URLMeta\n): [Rewriter, () => void] {\n\tinitWasm();\n\n\tlet obj: RewriterBox;\n\tconst index = rewriters.findIndex((x) => !x.inUse);\n\tconst len = rewriters.length;\n\n\tif (index === -1) {\n\t\tif (flagEnabled(\"rewriterLogs\", context, meta.base))\n\t\t\tdbg.log(`creating new rewriter, ${len} rewriters made already`);\n\n\t\tconst rewriter = new Rewriter();\n\t\tobj = { rewriter, inUse: false };\n\t\trewriters.push(obj);\n\t} else {\n\t\tobj = rewriters[index];\n\t}\n\tobj.inUse = true;\n\n\treturn [obj.rewriter, () => (obj.inUse = false)];\n}\n","import { flagEnabled, ScramjetContext } from \"@/shared\";\nimport { rewriteJs } from \"@rewriters/js\";\nimport { URLMeta } from \"@rewriters/url\";\nimport { TextDecoder_decode } from \"@/shared/snapshot\";\nimport { base64Encode } from \"@/shared/util\";\n\nexport function rewriteWorkers(\n\tcontext: ScramjetContext,\n\tjs: string | Uint8Array,\n\ttype: \"module\" | \"regular\",\n\turl: string,\n\tmeta: URLMeta\n) {\n\tconst module = type === \"module\";\n\tconst script = (script: string) => {\n\t\tif (module) {\n\t\t\treturn `import \"${script}\"\\n`;\n\t\t}\n\t\treturn `importScripts(\"${script}\");\\n`;\n\t};\n\tconst b64 = (script: string) =>\n\t\t`data:text/javascript;charset=utf-8;base64,${base64Encode(script)}`;\n\tlet str = context.interface.getWorkerInjectScripts(meta, type, script);\n\n\tlet rewritten = rewriteJs(js, url, context, meta, module);\n\tif (typeof rewritten !== \"string\") {\n\t\trewritten = TextDecoder_decode(rewritten);\n\t}\n\n\tif (flagEnabled(\"encapsulateWorkers\", context, meta.origin)) {\n\t\t// TODO: check if there's already a sourceURL/sourcemap before appending another?\n\t\trewritten += `//# sourceURL=${url}`;\n\t\tstr += script(b64(rewritten));\n\t} else {\n\t\tstr += rewritten;\n\t}\n\treturn str;\n}\n","// adapted from https://www.npmjs.com/package/set-cookie-parser, licensed MIT\n// we'll be forever in the shadow of node-unblocker or something\n\ntype ParsedCookie = {\n\tname: string;\n\tvalue: string;\n\texpires?: Date;\n\tmaxAge?: number;\n\tsecure?: boolean;\n\thttpOnly?: boolean;\n\tsameSite?: string;\n\tpartitioned?: boolean;\n\t[key: string]: unknown;\n};\n\nconst MAX_COOKIE_PAIR_BYTES = 4096;\nconst textEncoder = new TextEncoder();\n\nfunction isNonEmptyString(str: unknown): str is string {\n\treturn typeof str === \"string\" && !!str.trim();\n}\n\nfunction hasCtlCharacters(value: string): boolean {\n\tfor (let i = 0; i < value.length; i++) {\n\t\tconst code = value.charCodeAt(i);\n\t\tif (((code >= 0x00 && code <= 0x1f) || code === 0x7f) && code !== 0x09) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction cookiePairByteLength(name: string, value: string): number {\n\t// RFC length checks ignore the '=' separator.\n\treturn textEncoder.encode(`${name}${value}`).length;\n}\n\nfunction parseString(setCookieValue: string): ParsedCookie | null {\n\tconst parts = setCookieValue.split(\";\");\n\n\tconst nameValuePairStr = parts.shift();\n\tif (!nameValuePairStr) return null;\n\tif (!nameValuePairStr.trim()) return null;\n\n\tconst parsed = parseNameValuePair(nameValuePairStr);\n\tif (!parsed) return null;\n\n\tconst { name } = parsed;\n\tconst { value } = parsed;\n\n\tconst cookie: ParsedCookie = {\n\t\tname,\n\t\tvalue,\n\t};\n\n\tfor (const part of parts.filter(isNonEmptyString)) {\n\t\tconst sides = part.split(\"=\");\n\t\tconst key = (sides.shift() || \"\").trimStart().toLowerCase();\n\t\tconst sideValue = sides.join(\"=\");\n\n\t\tif (key === \"expires\") {\n\t\t\tcookie.expires = new Date(sideValue);\n\t\t} else if (key === \"max-age\") {\n\t\t\tcookie.maxAge = parseInt(sideValue, 10);\n\t\t} else if (key === \"secure\") {\n\t\t\tcookie.secure = true;\n\t\t} else if (key === \"httponly\") {\n\t\t\tcookie.httpOnly = true;\n\t\t} else if (key === \"samesite\") {\n\t\t\tcookie.sameSite = sideValue;\n\t\t} else if (key === \"partitioned\") {\n\t\t\tcookie.partitioned = true;\n\t\t} else {\n\t\t\tcookie[key] = sideValue;\n\t\t}\n\t}\n\n\treturn cookie;\n}\n\nfunction parseNameValuePair(\n\tnameValuePairStr: string\n): { name: string; value: string } | null {\n\tlet name = \"\";\n\tlet value = \"\";\n\tconst nameValueArr = nameValuePairStr.split(\"=\");\n\n\tif (nameValueArr.length > 1) {\n\t\tname = (nameValueArr.shift() || \"\").trim();\n\t\tvalue = nameValueArr.join(\"=\").trim();\n\t} else {\n\t\tvalue = nameValuePairStr.trim();\n\t}\n\n\tif (!name && !value) {\n\t\treturn null;\n\t}\n\n\tif (!name && /^__secure-|^__host-/i.test(value)) {\n\t\treturn null;\n\t}\n\n\tif (hasCtlCharacters(name) || hasCtlCharacters(value)) {\n\t\treturn null;\n\t}\n\n\tif (cookiePairByteLength(name, value) > MAX_COOKIE_PAIR_BYTES) {\n\t\treturn null;\n\t}\n\n\treturn { name, value };\n}\n\nfunction parse(input: string | undefined): ParsedCookie[] {\n\tif (!isNonEmptyString(input)) {\n\t\treturn [];\n\t}\n\n\treturn [input]\n\t\t.map((str) => parseString(str))\n\t\t.filter((cookie): cookie is ParsedCookie => cookie !== null);\n}\n\nfunction splitCookiesString(cookiesString: unknown): string[] {\n\tif (Array.isArray(cookiesString)) {\n\t\treturn cookiesString;\n\t}\n\tif (typeof cookiesString !== \"string\") {\n\t\treturn [];\n\t}\n\n\tconst source = cookiesString;\n\n\tconst cookiesStrings: string[] = [];\n\tlet pos = 0;\n\tlet start = 0;\n\tlet ch = \"\";\n\tlet lastComma = 0;\n\tlet nextStart = 0;\n\tlet cookiesSeparatorFound = false;\n\n\tfunction skipWhitespace() {\n\t\twhile (pos < source.length && /\\s/.test(source.charAt(pos))) {\n\t\t\tpos += 1;\n\t\t}\n\n\t\treturn pos < source.length;\n\t}\n\n\tfunction notSpecialChar() {\n\t\tch = source.charAt(pos);\n\t\treturn ch !== \"=\" && ch !== \";\" && ch !== \",\";\n\t}\n\n\twhile (pos < source.length) {\n\t\tstart = pos;\n\t\tcookiesSeparatorFound = false;\n\n\t\twhile (skipWhitespace()) {\n\t\t\tch = source.charAt(pos);\n\t\t\tif (ch === \",\") {\n\t\t\t\tlastComma = pos;\n\t\t\t\tpos += 1;\n\n\t\t\t\tskipWhitespace();\n\t\t\t\tnextStart = pos;\n\n\t\t\t\twhile (pos < source.length && notSpecialChar()) {\n\t\t\t\t\tpos += 1;\n\t\t\t\t}\n\n\t\t\t\tif (pos < source.length && source.charAt(pos) === \"=\") {\n\t\t\t\t\tcookiesSeparatorFound = true;\n\t\t\t\t\tpos = nextStart;\n\t\t\t\t\tcookiesStrings.push(source.substring(start, lastComma));\n\t\t\t\t\tstart = pos;\n\t\t\t\t} else {\n\t\t\t\t\tpos = lastComma + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpos += 1;\n\t\t\t}\n\t\t}\n\n\t\tif (!cookiesSeparatorFound || pos >= source.length) {\n\t\t\tcookiesStrings.push(source.substring(start, source.length));\n\t\t}\n\t}\n\n\treturn cookiesStrings;\n}\n\nexport default parse;\nexport { parse, parseNameValuePair, parseString, splitCookiesString };\n","// this is a place for storing stateless globals that will be used by shared/\n// this is NOT a place for putting dom apis\n\nexport const String = globalThis.String;\nexport const String_fromCodePoint = globalThis.String.fromCodePoint;\nexport const String_fromCharCode = globalThis.String.fromCharCode;\nexport const Number = globalThis.Number;\nexport const Number_parseInt = globalThis.Number.parseInt;\n\nexport const Object_keys = globalThis.Object.keys;\nexport const Object_values = globalThis.Object.values;\nexport const Object_entries = globalThis.Object.entries;\nexport const Object_hasOwn = globalThis.Object.hasOwn;\nexport const Object_getOwnPropertyNames = globalThis.Object.getOwnPropertyNames;\nexport const Object_getOwnPropertyDescriptor =\n\tglobalThis.Object.getOwnPropertyDescriptor;\nexport const Object_getOwnPropertyDescriptors =\n\tglobalThis.Object.getOwnPropertyDescriptors;\nexport const Object_getOwnPropertySymbols =\n\tglobalThis.Object.getOwnPropertySymbols;\nexport const Object_defineProperty = globalThis.Object.defineProperty;\nexport const Object_defineProperties = globalThis.Object.defineProperties;\nexport const Object_setPrototypeOf = globalThis.Object.setPrototypeOf;\n\nexport const Reflect_get = globalThis.Reflect.get;\nexport const Reflect_set = globalThis.Reflect.set;\nexport const Reflect_has = globalThis.Reflect.has;\nexport const Reflect_ownKeys = globalThis.Reflect.ownKeys;\nexport const Reflect_construct = globalThis.Reflect.construct;\nexport const Reflect_apply = globalThis.Reflect.apply;\n\nexport const Array_from = globalThis.Array.from;\nexport const Array_isArray = globalThis.Array.isArray;\nexport const Array_of = globalThis.Array.of;\n\nexport const JSON_parse = globalThis.JSON.parse;\nexport const JSON_stringify = globalThis.JSON.stringify;\n\nconst textEncoder = new TextEncoder();\nexport const TextEncoder_encode = textEncoder.encode.bind(textEncoder);\n\nconst textDecoder = new TextDecoder();\nexport const TextDecoder_decode = textDecoder.decode.bind(textDecoder);\n\nconst performance = globalThis.performance;\nexport const Performance_now = performance.now.bind(performance);\n\nexport const btoa = globalThis.btoa;\nexport const atob = globalThis.atob;\nexport const URL_createObjectURL = globalThis.URL.createObjectURL.bind(\n\tglobalThis.URL\n);\nexport const URL_revokeObjectURL = globalThis.URL.revokeObjectURL.bind(\n\tglobalThis.URL\n);\n\nexport const Error = globalThis.Error;\nexport const Math_random = globalThis.Math.random;\nexport const Math_min = globalThis.Math.min;\n\nexport const Promise_all = globalThis.Promise.all.bind(globalThis.Promise);\nexport const Promise_race = globalThis.Promise.race.bind(globalThis.Promise);\nexport const Promise_resolve = globalThis.Promise.resolve.bind(\n\tglobalThis.Promise\n);\nexport const Promise_reject = globalThis.Promise.reject.bind(\n\tglobalThis.Promise\n);\nexport const Promise_allSettled = globalThis.Promise.allSettled.bind(\n\tglobalThis.Promise\n);\nexport const Promise_any = globalThis.Promise.any.bind(globalThis.Promise);\n\nexport const Symbol_for = globalThis.Symbol.for;\n\ndeclare const WrappedBrand: unique symbol;\n\ntype WrappedInstance<T> = T extends object ? Wrapped<T> : T;\n\nexport type Wrapped<T> = T extends abstract new (\n\t...args: infer Args\n) => infer Instance\n\t? Omit<T, \"prototype\"> & {\n\t\t\tnew (...args: Args): WrappedInstance<Instance>;\n\t\t\tprototype: WrappedInstance<Instance>;\n\t\t\treadonly [WrappedBrand]: T;\n\t\t}\n\t: T & {\n\t\t\treadonly [WrappedBrand]: T;\n\t\t};\n\nexport const _URL = makeWrap(globalThis.URL);\nexport type _URL = Wrapped<URL>;\nexport const _Headers = makeWrap(globalThis.Headers);\nexport type _Headers = Wrapped<Headers>;\nexport const _Date = makeWrap(globalThis.Date);\nexport type _Date = Wrapped<Date>;\nexport const _URLSearchParams = makeWrap(globalThis.URLSearchParams);\nexport type _URLSearchParams = Wrapped<URLSearchParams>;\nexport const _RegExp = makeWrap(globalThis.RegExp);\nexport type _RegExp = Wrapped<RegExp>;\nexport const _Set = makeWrap(globalThis.Set);\nexport type _Set<T> = Wrapped<Set<T>>;\nexport const _Map = makeWrap(globalThis.Map);\nexport type _Map<K, V> = Wrapped<Map<K, V>>;\nexport const _WeakSet = makeWrap(globalThis.WeakSet);\nexport type _WeakSet<T extends object> = Wrapped<WeakSet<T>>;\nexport const _WeakMap = makeWrap(globalThis.WeakMap);\nexport type _WeakMap<K extends object, V extends object> = Wrapped<\n\tWeakMap<K, V>\n>;\nexport const _Uint8Array = makeWrap(globalThis.Uint8Array);\nexport type _Uint8Array = Wrapped<Uint8Array>;\nexport const _TextDecoder = makeWrap(globalThis.TextDecoder);\nexport type _TextDecoder = Wrapped<TextDecoder>;\nexport const _TextEncoder = makeWrap(globalThis.TextEncoder);\nexport type _TextEncoder = Wrapped<TextEncoder>;\n\nexport function makeWrap<T extends object>(source: T): Wrapped<T> {\n\t// Constructable builtins like Set/Map/URL need to retain their [[Construct]]\n\t// behavior; cloning them into plain objects breaks `new _Set(...)`.\n\tif (typeof source === \"function\") {\n\t\treturn new Proxy(source, {}) as Wrapped<T>;\n\t}\n\n\tfunction getAllPropertyDescriptors(obj: object) {\n\t\tconst descriptors: PropertyDescriptorMap = {};\n\n\t\tfor (const key of Object.getOwnPropertyNames(obj)) {\n\t\t\tdescriptors[key] = Object.getOwnPropertyDescriptor(obj, key)!;\n\t\t}\n\t\tfor (const sym of Object.getOwnPropertySymbols(obj)) {\n\t\t\tdescriptors[sym as any] = Object.getOwnPropertyDescriptor(obj, sym)!;\n\t\t}\n\t\treturn descriptors;\n\t}\n\n\t// Recursively clone prototype chain\n\tfunction clonePrototypeChain(obj: object | null): object | null {\n\t\tif (obj === null) return null;\n\t\tconst proto = Object.getPrototypeOf(obj);\n\t\t// The chain ends at null (root), otherwise recursively clone up the chain\n\t\tconst clonedProto = clonePrototypeChain(proto);\n\t\t// Clone current object's own props and set prototype to cloned parent\n\t\tconst clone = Object.create(clonedProto, getAllPropertyDescriptors(obj));\n\t\treturn clone;\n\t}\n\n\t// Actually clone the source itself (including own properties)\n\tconst wrapped = Object.create(\n\t\tclonePrototypeChain(Object.getPrototypeOf(source)),\n\t\tgetAllPropertyDescriptors(source)\n\t);\n\n\treturn wrapped as Wrapped<T>;\n}\n","/**\n * WHATWG Encoding Sniffing Algorithm\n *\n * Implements the encoding sniffing algorithm from the HTML spec:\n * https://html.spec.whatwg.org/multipage/parsing.html#determining-the-character-encoding\n *\n * And the \"algorithm for extracting a character encoding from a meta element\":\n * https://html.spec.whatwg.org/multipage/urls-and-fetching.html#algorithm-for-extracting-a-character-encoding-from-a-meta-element\n *\n * And \"get an encoding\" from the Encoding spec:\n * https://encoding.spec.whatwg.org/#concept-encoding-get\n */\n\nimport { Math_min, String_fromCharCode } from \"./snapshot\";\n\n// https://encoding.spec.whatwg.org/#concept-encoding-get\n// Maps all labels (lowercased, stripped of leading/trailing ASCII whitespace) to their encoding name.\n// This is the full table from the Encoding spec §4.2.\nconst ENCODING_LABELS: Record<string, string> = {\n\t// UTF-8\n\t\"unicode-1-1-utf-8\": \"UTF-8\",\n\tunicode11utf8: \"UTF-8\",\n\tunicode20utf8: \"UTF-8\",\n\t\"utf-8\": \"UTF-8\",\n\tutf8: \"UTF-8\",\n\t\"x-unicode20utf8\": \"UTF-8\",\n\n\t// IBM866\n\t\"866\": \"IBM866\",\n\tcp866: \"IBM866\",\n\tcsibm866: \"IBM866\",\n\tibm866: \"IBM866\",\n\n\t// ISO-8859-2\n\tcsisolatin2: \"ISO-8859-2\",\n\t\"iso-8859-2\": \"ISO-8859-2\",\n\t\"iso-ir-101\": \"ISO-8859-2\",\n\t\"iso8859-2\": \"ISO-8859-2\",\n\tiso88592: \"ISO-8859-2\",\n\t\"iso_8859-2\": \"ISO-8859-2\",\n\t\"iso_8859-2:1987\": \"ISO-8859-2\",\n\tl2: \"ISO-8859-2\",\n\tlatin2: \"ISO-8859-2\",\n\n\t// ISO-8859-3\n\tcsisolatin3: \"ISO-8859-3\",\n\t\"iso-8859-3\": \"ISO-8859-3\",\n\t\"iso-ir-109\": \"ISO-8859-3\",\n\t\"iso8859-3\": \"ISO-8859-3\",\n\tiso88593: \"ISO-8859-3\",\n\t\"iso_8859-3\": \"ISO-8859-3\",\n\t\"iso_8859-3:1988\": \"ISO-8859-3\",\n\tl3: \"ISO-8859-3\",\n\tlatin3: \"ISO-8859-3\",\n\n\t// ISO-8859-4\n\tcsisolatin4: \"ISO-8859-4\",\n\t\"iso-8859-4\": \"ISO-8859-4\",\n\t\"iso-ir-110\": \"ISO-8859-4\",\n\t\"iso8859-4\": \"ISO-8859-4\",\n\tiso88594: \"ISO-8859-4\",\n\t\"iso_8859-4\": \"ISO-8859-4\",\n\t\"iso_8859-4:1988\": \"ISO-8859-4\",\n\tl4: \"ISO-8859-4\",\n\tlatin4: \"ISO-8859-4\",\n\n\t// ISO-8859-5\n\tcsisolatincyrillic: \"ISO-8859-5\",\n\tcyrillic: \"ISO-8859-5\",\n\t\"iso-8859-5\": \"ISO-8859-5\",\n\t\"iso-ir-144\": \"ISO-8859-5\",\n\t\"iso8859-5\": \"ISO-8859-5\",\n\tiso88595: \"ISO-8859-5\",\n\t\"iso_8859-5\": \"ISO-8859-5\",\n\t\"iso_8859-5:1988\": \"ISO-8859-5\",\n\n\t// ISO-8859-6\n\tarabic: \"ISO-8859-6\",\n\t\"asmo-708\": \"ISO-8859-6\",\n\tcsiso88596e: \"ISO-8859-6\",\n\tcsiso88596i: \"ISO-8859-6\",\n\tcsisolatinarabic: \"ISO-8859-6\",\n\t\"ecma-114\": \"ISO-8859-6\",\n\t\"iso-8859-6\": \"ISO-8859-6\",\n\t\"iso-8859-6-e\": \"ISO-8859-6\",\n\t\"iso-8859-6-i\": \"ISO-8859-6\",\n\t\"iso-ir-127\": \"ISO-8859-6\",\n\t\"iso8859-6\": \"ISO-8859-6\",\n\tiso88596: \"ISO-8859-6\",\n\t\"iso_8859-6\": \"ISO-8859-6\",\n\t\"iso_8859-6:1987\": \"ISO-8859-6\",\n\n\t// ISO-8859-7\n\tcsisolatingreek: \"ISO-8859-7\",\n\t\"ecma-118\": \"ISO-8859-7\",\n\telot_928: \"ISO-8859-7\",\n\tgreek: \"ISO-8859-7\",\n\tgreek8: \"ISO-8859-7\",\n\t\"iso-8859-7\": \"ISO-8859-7\",\n\t\"iso-ir-126\": \"ISO-8859-7\",\n\t\"iso8859-7\": \"ISO-8859-7\",\n\tiso88597: \"ISO-8859-7\",\n\t\"iso_8859-7\": \"ISO-8859-7\",\n\t\"iso_8859-7:1987\": \"ISO-8859-7\",\n\tsun_eu_greek: \"ISO-8859-7\",\n\n\t// ISO-8859-8\n\tcsiso88598e: \"ISO-8859-8\",\n\tcsisolatinhebrew: \"ISO-8859-8\",\n\thebrew: \"ISO-8859-8\",\n\t\"iso-8859-8\": \"ISO-8859-8\",\n\t\"iso-8859-8-e\": \"ISO-8859-8\",\n\t\"iso-ir-138\": \"ISO-8859-8\",\n\t\"iso8859-8\": \"ISO-8859-8\",\n\tiso88598: \"ISO-8859-8\",\n\t\"iso_8859-8\": \"ISO-8859-8\",\n\t\"iso_8859-8:1988\": \"ISO-8859-8\",\n\tvisual: \"ISO-8859-8\",\n\n\t// ISO-8859-8-I\n\tcsiso88598i: \"ISO-8859-8-I\",\n\t\"iso-8859-8-i\": \"ISO-8859-8-I\",\n\tlogical: \"ISO-8859-8-I\",\n\n\t// ISO-8859-10\n\tcsisolatin6: \"ISO-8859-10\",\n\t\"iso-8859-10\": \"ISO-8859-10\",\n\t\"iso-ir-157\": \"ISO-8859-10\",\n\t\"iso8859-10\": \"ISO-8859-10\",\n\tiso885910: \"ISO-8859-10\",\n\tl6: \"ISO-8859-10\",\n\tlatin6: \"ISO-8859-10\",\n\n\t// ISO-8859-13\n\t\"iso-8859-13\": \"ISO-8859-13\",\n\t\"iso8859-13\": \"ISO-8859-13\",\n\tiso885913: \"ISO-8859-13\",\n\n\t// ISO-8859-14\n\t\"iso-8859-14\": \"ISO-8859-14\",\n\t\"iso8859-14\": \"ISO-8859-14\",\n\tiso885914: \"ISO-8859-14\",\n\n\t// ISO-8859-15\n\tcsisolatin9: \"ISO-8859-15\",\n\t\"iso-8859-15\": \"ISO-8859-15\",\n\t\"iso8859-15\": \"ISO-8859-15\",\n\tiso885915: \"ISO-8859-15\",\n\t\"iso_8859-15\": \"ISO-8859-15\",\n\tl9: \"ISO-8859-15\",\n\n\t// ISO-8859-16\n\t\"iso-8859-16\": \"ISO-8859-16\",\n\n\t// KOI8-R\n\tcskoi8r: \"KOI8-R\",\n\tkoi: \"KOI8-R\",\n\tkoi8: \"KOI8-R\",\n\t\"koi8-r\": \"KOI8-R\",\n\tkoi8_r: \"KOI8-R\",\n\n\t// KOI8-U\n\t\"koi8-ru\": \"KOI8-U\",\n\t\"koi8-u\": \"KOI8-U\",\n\n\t// macintosh\n\tcsmacintosh: \"macintosh\",\n\tmac: \"macintosh\",\n\tmacintosh: \"macintosh\",\n\t\"x-mac-roman\": \"macintosh\",\n\n\t// windows-874\n\t\"dos-874\": \"windows-874\",\n\t\"iso-8859-11\": \"windows-874\",\n\t\"iso8859-11\": \"windows-874\",\n\tiso885911: \"windows-874\",\n\t\"tis-620\": \"windows-874\",\n\t\"windows-874\": \"windows-874\",\n\n\t// windows-1250\n\tcp1250: \"windows-1250\",\n\t\"windows-1250\": \"windows-1250\",\n\t\"x-cp1250\": \"windows-1250\",\n\n\t// windows-1251\n\tcp1251: \"windows-1251\",\n\t\"windows-1251\": \"windows-1251\",\n\t\"x-cp1251\": \"windows-1251\",\n\n\t// windows-1252\n\t\"ansi_x3.4-1968\": \"windows-1252\",\n\tascii: \"windows-1252\",\n\tcp1252: \"windows-1252\",\n\tcp819: \"windows-1252\",\n\tcsisolatin1: \"windows-1252\",\n\tibm819: \"windows-1252\",\n\t\"iso-8859-1\": \"windows-1252\",\n\t\"iso-ir-100\": \"windows-1252\",\n\t\"iso8859-1\": \"windows-1252\",\n\tiso88591: \"windows-1252\",\n\t\"iso_8859-1\": \"windows-1252\",\n\t\"iso_8859-1:1987\": \"windows-1252\",\n\tl1: \"windows-1252\",\n\tlatin1: \"windows-1252\",\n\t\"us-ascii\": \"windows-1252\",\n\t\"windows-1252\": \"windows-1252\",\n\t\"x-cp1252\": \"windows-1252\",\n\n\t// windows-1253\n\tcp1253: \"windows-1253\",\n\t\"windows-1253\": \"windows-1253\",\n\t\"x-cp1253\": \"windows-1253\",\n\n\t// windows-1254\n\tcp1254: \"windows-1254\",\n\tcsisolatin5: \"windows-1254\",\n\t\"iso-8859-9\": \"windows-1254\",\n\t\"iso-ir-148\": \"windows-1254\",\n\t\"iso8859-9\": \"windows-1254\",\n\tiso88599: \"windows-1254\",\n\t\"iso_8859-9\": \"windows-1254\",\n\t\"iso_8859-9:1989\": \"windows-1254\",\n\tl5: \"windows-1254\",\n\tlatin5: \"windows-1254\",\n\t\"windows-1254\": \"windows-1254\",\n\t\"x-cp1254\": \"windows-1254\",\n\n\t// windows-1255\n\tcp1255: \"windows-1255\",\n\t\"windows-1255\": \"windows-1255\",\n\t\"x-cp1255\": \"windows-1255\",\n\n\t// windows-1256\n\tcp1256: \"windows-1256\",\n\t\"windows-1256\": \"windows-1256\",\n\t\"x-cp1256\": \"windows-1256\",\n\n\t// windows-1257\n\tcp1257: \"windows-1257\",\n\t\"windows-1257\": \"windows-1257\",\n\t\"x-cp1257\": \"windows-1257\",\n\n\t// windows-1258\n\tcp1258: \"windows-1258\",\n\t\"windows-1258\": \"windows-1258\",\n\t\"x-cp1258\": \"windows-1258\",\n\n\t// x-mac-cyrillic\n\t\"x-mac-cyrillic\": \"x-mac-cyrillic\",\n\t\"x-mac-ukrainian\": \"x-mac-cyrillic\",\n\n\t// GBK\n\tchinese: \"GBK\",\n\tcsgb2312: \"GBK\",\n\tcsiso58gb231280: \"GBK\",\n\tgb2312: \"GBK\",\n\tgb_2312: \"GBK\",\n\t\"gb_2312-80\": \"GBK\",\n\tgbk: \"GBK\",\n\t\"iso-ir-58\": \"GBK\",\n\t\"x-gbk\": \"GBK\",\n\n\t// gb18030\n\tgb18030: \"gb18030\",\n\n\t// Big5\n\tbig5: \"Big5\",\n\t\"big5-hkscs\": \"Big5\",\n\t\"cn-big5\": \"Big5\",\n\tcsbig5: \"Big5\",\n\t\"x-x-big5\": \"Big5\",\n\n\t// EUC-JP\n\tcseucpkdfmtjapanese: \"EUC-JP\",\n\t\"euc-jp\": \"EUC-JP\",\n\t\"x-euc-jp\": \"EUC-JP\",\n\n\t// ISO-2022-JP\n\tcsiso2022jp: \"ISO-2022-JP\",\n\t\"iso-2022-jp\": \"ISO-2022-JP\",\n\n\t// Shift_JIS\n\tcsshiftjis: \"Shift_JIS\",\n\tms932: \"Shift_JIS\",\n\tms_kanji: \"Shift_JIS\",\n\t\"shift-jis\": \"Shift_JIS\",\n\tshift_jis: \"Shift_JIS\",\n\tsjis: \"Shift_JIS\",\n\t\"windows-31j\": \"Shift_JIS\",\n\t\"x-sjis\": \"Shift_JIS\",\n\n\t// EUC-KR\n\tcseuckr: \"EUC-KR\",\n\tcsksc56011987: \"EUC-KR\",\n\t\"euc-kr\": \"EUC-KR\",\n\t\"iso-ir-149\": \"EUC-KR\",\n\tkorean: \"EUC-KR\",\n\t\"ks_c_5601-1987\": \"EUC-KR\",\n\t\"ks_c_5601-1989\": \"EUC-KR\",\n\tksc5601: \"EUC-KR\",\n\tksc_5601: \"EUC-KR\",\n\t\"windows-949\": \"EUC-KR\",\n\n\t// replacement\n\tcsiso2022kr: \"replacement\",\n\t\"hz-gb-2312\": \"replacement\",\n\t\"iso-2022-cn\": \"replacement\",\n\t\"iso-2022-cn-ext\": \"replacement\",\n\t\"iso-2022-kr\": \"replacement\",\n\treplacement: \"replacement\",\n\n\t// UTF-16BE\n\tunicodefffe: \"UTF-16BE\",\n\t\"utf-16be\": \"UTF-16BE\",\n\n\t// UTF-16LE\n\tcsunicode: \"UTF-16LE\",\n\t\"iso-10646-ucs-2\": \"UTF-16LE\",\n\t\"ucs-2\": \"UTF-16LE\",\n\tunicode: \"UTF-16LE\",\n\tunicodefeff: \"UTF-16LE\",\n\t\"utf-16\": \"UTF-16LE\",\n\t\"utf-16le\": \"UTF-16LE\",\n\n\t// x-user-defined\n\t\"x-user-defined\": \"x-user-defined\",\n};\n\n/**\n * https://encoding.spec.whatwg.org/#concept-encoding-get\n *\n * \"To get an encoding from a string label\":\n * 1. Remove any leading and trailing ASCII whitespace from label.\n * 2. If label is an ASCII case-insensitive match for any of the labels listed\n * in the table, return the corresponding encoding; otherwise return failure.\n */\nexport function getEncoding(label: string): string | null {\n\tconst trimmed = label.replace(/^[\\t\\n\\f\\r ]+|[\\t\\n\\f\\r ]+$/g, \"\");\n\treturn ENCODING_LABELS[trimmed.toLowerCase()] ?? null;\n}\n\n/**\n * https://html.spec.whatwg.org/multipage/urls-and-fetching.html#algorithm-for-extracting-a-character-encoding-from-a-meta-element\n *\n * The algorithm for extracting a character encoding from a `meta` element,\n * given a string s.\n */\nexport function extractCharsetFromMeta(s: string): string | null {\n\tlet position = 0;\n\n\t// Step 2: Loop — find \"charset\" (case-insensitive) after position\n\twhile (true) {\n\t\tconst idx = s.toLowerCase().indexOf(\"charset\", position);\n\t\tif (idx === -1) return null;\n\n\t\tposition = idx + \"charset\".length;\n\n\t\t// Step 3: Skip ASCII whitespace\n\t\twhile (\n\t\t\tposition < s.length &&\n\t\t\t(s[position] === \"\\t\" ||\n\t\t\t\ts[position] === \"\\n\" ||\n\t\t\t\ts[position] === \"\\f\" ||\n\t\t\t\ts[position] === \"\\r\" ||\n\t\t\t\ts[position] === \" \")\n\t\t) {\n\t\t\tposition++;\n\t\t}\n\n\t\t// Step 4: If next char is not '=', go back to loop\n\t\tif (position >= s.length || s[position] !== \"=\") {\n\t\t\t// Move position to just before the next character and re-loop\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Skip the '='\n\t\tposition++;\n\n\t\t// Step 5: Skip ASCII whitespace\n\t\twhile (\n\t\t\tposition < s.length &&\n\t\t\t(s[position] === \"\\t\" ||\n\t\t\t\ts[position] === \"\\n\" ||\n\t\t\t\ts[position] === \"\\f\" ||\n\t\t\t\ts[position] === \"\\r\" ||\n\t\t\t\ts[position] === \" \")\n\t\t) {\n\t\t\tposition++;\n\t\t}\n\n\t\t// Step 6: Process the next character\n\t\tif (position >= s.length) return null;\n\n\t\tconst ch = s[position];\n\n\t\t// eslint-disable-next-line quotes\n\t\tif (ch === '\"' || ch === \"'\") {\n\t\t\t// Find matching close quote\n\t\t\tconst closeIdx = s.indexOf(ch, position + 1);\n\t\t\tif (closeIdx === -1) {\n\t\t\t\t// Unmatched quote\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tconst value = s.substring(position + 1, closeIdx);\n\t\t\treturn getEncoding(value);\n\t\t}\n\n\t\t// Otherwise: collect until ASCII whitespace or semicolon or end\n\t\tlet end = position;\n\t\twhile (\n\t\t\tend < s.length &&\n\t\t\ts[end] !== \"\\t\" &&\n\t\t\ts[end] !== \"\\n\" &&\n\t\t\ts[end] !== \"\\f\" &&\n\t\t\ts[end] !== \"\\r\" &&\n\t\t\ts[end] !== \" \" &&\n\t\t\ts[end] !== \";\"\n\t\t) {\n\t\t\tend++;\n\t\t}\n\n\t\tif (end === position) return null;\n\n\t\tconst value = s.substring(position, end);\n\t\treturn getEncoding(value);\n\t}\n}\n\n// Check if a byte is ASCII whitespace or slash (used in prescan)\nfunction isSpaceOrSlash(byte: number): boolean {\n\treturn (\n\t\tbyte === 0x09 || // HT\n\t\tbyte === 0x0a || // LF\n\t\tbyte === 0x0c || // FF\n\t\tbyte === 0x0d || // CR\n\t\tbyte === 0x20 || // SP\n\t\tbyte === 0x2f // /\n\t);\n}\n\nfunction isSpace(byte: number): boolean {\n\treturn (\n\t\tbyte === 0x09 || // HT\n\t\tbyte === 0x0a || // LF\n\t\tbyte === 0x0c || // FF\n\t\tbyte === 0x0d || // CR\n\t\tbyte === 0x20 // SP\n\t);\n}\n\ninterface Attribute {\n\tname: string;\n\tvalue: string;\n}\n\n/**\n * https://html.spec.whatwg.org/multipage/parsing.html#prescan-a-byte-stream-to-determine-its-encoding\n *\n * \"Get an attribute\" sub-algorithm used by the prescan algorithm.\n * Returns null if no attribute was found, or the attribute {name, value}.\n *\n * `pos` is an object with a `value` property so we can mutate it.\n */\nfunction getAttribute(\n\tbytes: Uint8Array,\n\tpos: { value: number }\n): Attribute | null {\n\t// Step 1: Skip spaces and slashes\n\twhile (pos.value < bytes.length && isSpaceOrSlash(bytes[pos.value])) {\n\t\tpos.value++;\n\t}\n\tif (pos.value >= bytes.length) return null;\n\n\t// Step 2: If '>', no attribute\n\tif (bytes[pos.value] === 0x3e) return null;\n\n\t// Step 3: Start of attribute name\n\tlet name = \"\";\n\tlet value = \"\";\n\n\t// Step 4: Process bytes for attribute name\n\twhile (pos.value < bytes.length) {\n\t\tconst b = bytes[pos.value];\n\n\t\tif (b === 0x3d && name.length > 0) {\n\t\t\t// '=' and name is non-empty — advance and go to value\n\t\t\tpos.value++;\n\t\t\tbreak;\n\t\t}\n\n\t\tif (isSpace(b)) {\n\t\t\t// Go to \"spaces\" step\n\t\t\tpos.value++;\n\t\t\tgoto_spaces();\n\t\t\treturn finishFromSpaces();\n\t\t}\n\n\t\tif (b === 0x2f || b === 0x3e) {\n\t\t\t// '/' or '>' — attribute name only, empty value\n\t\t\treturn { name, value: \"\" };\n\t\t}\n\n\t\t// A-Z -> lowercase\n\t\tif (b >= 0x41 && b <= 0x5a) {\n\t\t\tname += String_fromCharCode(b + 0x20);\n\t\t} else {\n\t\t\tname += String_fromCharCode(b);\n\t\t}\n\n\t\tpos.value++;\n\t}\n\n\tif (pos.value >= bytes.length) return null;\n\n\t// We got here because we found '=' — now parse value\n\treturn parseValue();\n\n\tfunction goto_spaces() {\n\t\t// Step 6: Skip spaces\n\t\twhile (pos.value < bytes.length && isSpace(bytes[pos.value])) {\n\t\t\tpos.value++;\n\t\t}\n\t}\n\n\tfunction finishFromSpaces(): Attribute | null {\n\t\tif (pos.value >= bytes.length) return null;\n\n\t\t// Step 7: If not '=', return name with empty value\n\t\tif (bytes[pos.value] !== 0x3d) {\n\t\t\treturn { name, value: \"\" };\n\t\t}\n\n\t\t// Step 8: Advance past '='\n\t\tpos.value++;\n\n\t\treturn parseValue();\n\t}\n\n\tfunction parseValue(): Attribute | null {\n\t\t// Step 9: Skip spaces before value\n\t\twhile (pos.value < bytes.length && isSpace(bytes[pos.value])) {\n\t\t\tpos.value++;\n\t\t}\n\t\tif (pos.value >= bytes.length) return null;\n\n\t\tconst b = bytes[pos.value];\n\n\t\t// Step 10: Check for quoted value\n\t\tif (b === 0x22 || b === 0x27) {\n\t\t\t// \" or '\n\t\t\tconst quoteChar = b;\n\t\t\tpos.value++;\n\n\t\t\twhile (pos.value < bytes.length) {\n\t\t\t\tconst qb = bytes[pos.value];\n\t\t\t\tif (qb === quoteChar) {\n\t\t\t\t\tpos.value++;\n\t\t\t\t\treturn { name, value };\n\t\t\t\t}\n\t\t\t\t// A-Z -> lowercase\n\t\t\t\tif (qb >= 0x41 && qb <= 0x5a) {\n\t\t\t\t\tvalue += String_fromCharCode(qb + 0x20);\n\t\t\t\t} else {\n\t\t\t\t\tvalue += String_fromCharCode(qb);\n\t\t\t\t}\n\t\t\t\tpos.value++;\n\t\t\t}\n\n\t\t\t// Ran out of bytes inside quoted value\n\t\t\treturn null;\n\t\t}\n\n\t\t// '>'\n\t\tif (b === 0x3e) {\n\t\t\treturn { name, value: \"\" };\n\t\t}\n\n\t\t// A-Z -> lowercase for first char\n\t\tif (b >= 0x41 && b <= 0x5a) {\n\t\t\tvalue += String_fromCharCode(b + 0x20);\n\t\t} else {\n\t\t\tvalue += String_fromCharCode(b);\n\t\t}\n\t\tpos.value++;\n\n\t\t// Step 11: Unquoted value — collect until space or '>'\n\t\twhile (pos.value < bytes.length) {\n\t\t\tconst ub = bytes[pos.value];\n\n\t\t\tif (isSpace(ub) || ub === 0x3e) {\n\t\t\t\treturn { name, value };\n\t\t\t}\n\n\t\t\t// A-Z -> lowercase\n\t\t\tif (ub >= 0x41 && ub <= 0x5a) {\n\t\t\t\tvalue += String_fromCharCode(ub + 0x20);\n\t\t\t} else {\n\t\t\t\tvalue += String_fromCharCode(ub);\n\t\t\t}\n\t\t\tpos.value++;\n\t\t}\n\n\t\treturn { name, value };\n\t}\n}\n\n/**\n * https://html.spec.whatwg.org/multipage/parsing.html#prescan-a-byte-stream-to-determine-its-encoding\n *\n * Prescan the first `limit` bytes of a byte stream to determine its encoding.\n * Returns an encoding name or null if none found.\n */\nexport function prescanByteStream(\n\tbytes: Uint8Array,\n\tlimit: number = 1024\n): string | null {\n\tconst end = Math_min(bytes.length, limit);\n\tconst pos = { value: 0 };\n\n\t// Step 2: Prescan for UTF-16 XML declarations\n\tif (\n\t\tend >= 6 &&\n\t\tbytes[0] === 0x3c &&\n\t\tbytes[1] === 0x00 &&\n\t\tbytes[2] === 0x3f &&\n\t\tbytes[3] === 0x00 &&\n\t\tbytes[4] === 0x78 &&\n\t\tbytes[5] === 0x00\n\t) {\n\t\treturn \"UTF-16LE\";\n\t}\n\tif (\n\t\tend >= 6 &&\n\t\tbytes[0] === 0x00 &&\n\t\tbytes[1] === 0x3c &&\n\t\tbytes[2] === 0x00 &&\n\t\tbytes[3] === 0x3f &&\n\t\tbytes[4] === 0x00 &&\n\t\tbytes[5] === 0x78\n\t) {\n\t\treturn \"UTF-16BE\";\n\t}\n\n\t// Step 3: Loop\n\twhile (pos.value < end) {\n\t\tconst b = bytes[pos.value];\n\n\t\t// Check for <!--\n\t\tif (\n\t\t\tb === 0x3c &&\n\t\t\tpos.value + 3 < end &&\n\t\t\tbytes[pos.value + 1] === 0x21 &&\n\t\t\tbytes[pos.value + 2] === 0x2d &&\n\t\t\tbytes[pos.value + 3] === 0x2d\n\t\t) {\n\t\t\t// Advance to first '>' preceded by '--'\n\t\t\tpos.value += 4;\n\t\t\twhile (pos.value < end) {\n\t\t\t\tif (\n\t\t\t\t\tbytes[pos.value] === 0x3e &&\n\t\t\t\t\tpos.value >= 2 &&\n\t\t\t\t\tbytes[pos.value - 1] === 0x2d &&\n\t\t\t\t\tbytes[pos.value - 2] === 0x2d\n\t\t\t\t) {\n\t\t\t\t\tpos.value++;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tpos.value++;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Check for <meta (case-insensitive)\n\t\tif (\n\t\t\tb === 0x3c &&\n\t\t\tpos.value + 5 < end &&\n\t\t\t(bytes[pos.value + 1] === 0x4d || bytes[pos.value + 1] === 0x6d) && // M or m\n\t\t\t(bytes[pos.value + 2] === 0x45 || bytes[pos.value + 2] === 0x65) && // E or e\n\t\t\t(bytes[pos.value + 3] === 0x54 || bytes[pos.value + 3] === 0x74) && // T or t\n\t\t\t(bytes[pos.value + 4] === 0x41 || bytes[pos.value + 4] === 0x61) && // A or a\n\t\t\tisSpaceOrSlash(bytes[pos.value + 5])\n\t\t) {\n\t\t\t// Step: Advance position to the space/slash\n\t\t\tpos.value += 5;\n\n\t\t\tconst attributeList: string[] = [];\n\t\t\tlet gotPragma = false;\n\t\t\tlet needPragma: boolean | null = null;\n\t\t\tlet charset: string | null = null;\n\n\t\t\t// Attributes loop\n\t\t\twhile (true) {\n\t\t\t\tconst attr = getAttribute(bytes, pos);\n\t\t\t\tif (!attr) break;\n\n\t\t\t\t// Step 7: If already in list, skip\n\t\t\t\tif (attributeList.includes(attr.name)) continue;\n\n\t\t\t\t// Step 8: Add to list\n\t\t\t\tattributeList.push(attr.name);\n\n\t\t\t\t// Step 9: Process\n\t\t\t\tif (attr.name === \"http-equiv\") {\n\t\t\t\t\tif (attr.value === \"content-type\") {\n\t\t\t\t\t\tgotPragma = true;\n\t\t\t\t\t}\n\t\t\t\t} else if (attr.name === \"content\") {\n\t\t\t\t\tif (charset === null) {\n\t\t\t\t\t\tconst extracted = extractCharsetFromMeta(attr.value);\n\t\t\t\t\t\tif (extracted !== null) {\n\t\t\t\t\t\t\tcharset = extracted;\n\t\t\t\t\t\t\tneedPragma = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (attr.name === \"charset\") {\n\t\t\t\t\tcharset = getEncoding(attr.value);\n\t\t\t\t\tneedPragma = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Processing steps\n\t\t\t// Step 11: If needPragma is null, skip\n\t\t\tif (needPragma === null) {\n\t\t\t\tpos.value++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Step 12: If needPragma is true but gotPragma is false, skip\n\t\t\tif (needPragma === true && !gotPragma) {\n\t\t\t\tpos.value++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Step 13: If charset is failure (null), skip\n\t\t\tif (charset === null) {\n\t\t\t\tpos.value++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Step 14: If charset is UTF-16BE/LE, set to UTF-8\n\t\t\tif (charset === \"UTF-16BE\" || charset === \"UTF-16LE\") {\n\t\t\t\tcharset = \"UTF-8\";\n\t\t\t}\n\n\t\t\t// Step 15: If charset is x-user-defined, set to windows-1252\n\t\t\tif (charset === \"x-user-defined\") {\n\t\t\t\tcharset = \"windows-1252\";\n\t\t\t}\n\n\t\t\t// Step 16: Return charset\n\t\t\treturn charset;\n\t\t}\n\n\t\t// Check for tag: < optionally /, then A-Z or a-z\n\t\tif (\n\t\t\tb === 0x3c &&\n\t\t\tpos.value + 1 < end &&\n\t\t\t(isAsciiAlpha(bytes[pos.value + 1]) ||\n\t\t\t\t(bytes[pos.value + 1] === 0x2f &&\n\t\t\t\t\tpos.value + 2 < end &&\n\t\t\t\t\tisAsciiAlpha(bytes[pos.value + 2])))\n\t\t) {\n\t\t\t// Advance to next space/tab/LF/FF/CR or >\n\t\t\tpos.value++;\n\t\t\twhile (\n\t\t\t\tpos.value < end &&\n\t\t\t\t!isSpace(bytes[pos.value]) &&\n\t\t\t\tbytes[pos.value] !== 0x3e\n\t\t\t) {\n\t\t\t\tpos.value++;\n\t\t\t}\n\t\t\t// Get attributes until none\n\t\t\twhile (pos.value < end) {\n\t\t\t\tconst attr = getAttribute(bytes, pos);\n\t\t\t\tif (!attr) break;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Check for <!, </, <?\n\t\tif (\n\t\t\tb === 0x3c &&\n\t\t\tpos.value + 1 < end &&\n\t\t\t(bytes[pos.value + 1] === 0x21 ||\n\t\t\t\tbytes[pos.value + 1] === 0x2f ||\n\t\t\t\tbytes[pos.value + 1] === 0x3f)\n\t\t) {\n\t\t\t// Advance to first '>'\n\t\t\tpos.value += 2;\n\t\t\twhile (pos.value < end && bytes[pos.value] !== 0x3e) {\n\t\t\t\tpos.value++;\n\t\t\t}\n\t\t\tif (pos.value < end) pos.value++; // skip the >\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Any other byte — do nothing, next byte\n\t\tpos.value++;\n\t}\n\n\t// If prescan didn't find anything, try get an XML encoding\n\treturn getXmlEncoding(bytes, end);\n}\n\nfunction isAsciiAlpha(byte: number): boolean {\n\treturn (byte >= 0x41 && byte <= 0x5a) || (byte >= 0x61 && byte <= 0x7a);\n}\n\n/**\n * https://html.spec.whatwg.org/multipage/parsing.html#prescan-a-byte-stream-to-determine-its-encoding\n *\n * \"get an XML encoding\" — invoked when the prescan algorithm aborts without\n * returning an encoding.\n */\nfunction getXmlEncoding(bytes: Uint8Array, end: number): string | null {\n\t// Step 2: Check for <?xml\n\tif (\n\t\tend < 5 ||\n\t\tbytes[0] !== 0x3c || // <\n\t\tbytes[1] !== 0x3f || // ?\n\t\tbytes[2] !== 0x78 || // x\n\t\tbytes[3] !== 0x6d || // m\n\t\tbytes[4] !== 0x6c // l\n\t) {\n\t\treturn null;\n\t}\n\n\t// Step 3: Find '>' for the xml declaration end\n\tlet xmlEnd = -1;\n\tfor (let i = 5; i < end; i++) {\n\t\tif (bytes[i] === 0x3e) {\n\t\t\txmlEnd = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (xmlEnd === -1) return null;\n\n\t// Step 4: Find \"encoding\" in the xml declaration\n\tconst declBytes = bytes.subarray(0, xmlEnd);\n\tlet encPos = -1;\n\tconst target = [0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67]; // \"encoding\"\n\tfor (let i = 5; i <= declBytes.length - target.length; i++) {\n\t\tlet match = true;\n\t\tfor (let j = 0; j < target.length; j++) {\n\t\t\tif (declBytes[i + j] !== target[j]) {\n\t\t\t\tmatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (match) {\n\t\t\tencPos = i + target.length;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (encPos === -1) return null;\n\n\t// Step 6: Skip spaces/control chars (bytes <= 0x20)\n\twhile (encPos < xmlEnd && declBytes[encPos] <= 0x20) {\n\t\tencPos++;\n\t}\n\n\t// Step 7: Must be '='\n\tif (encPos >= xmlEnd || declBytes[encPos] !== 0x3d) return null;\n\tencPos++;\n\n\t// Step 9: Skip spaces/control chars\n\twhile (encPos < xmlEnd && declBytes[encPos] <= 0x20) {\n\t\tencPos++;\n\t}\n\n\t// Step 10-11: quoteMark must be \" or '\n\tif (encPos >= xmlEnd) return null;\n\tconst quoteMark = declBytes[encPos];\n\tif (quoteMark !== 0x22 && quoteMark !== 0x27) return null;\n\tencPos++;\n\n\t// Step 13: Find closing quote\n\tlet encEnd = -1;\n\tfor (let i = encPos; i < xmlEnd; i++) {\n\t\tif (declBytes[i] === quoteMark) {\n\t\t\tencEnd = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (encEnd === -1) return null;\n\n\t// Step 14: potentialEncoding\n\tconst potentialEncoding = declBytes.subarray(encPos, encEnd);\n\n\t// Step 15: If it contains bytes <= 0x20, return failure\n\tfor (let i = 0; i < potentialEncoding.length; i++) {\n\t\tif (potentialEncoding[i] <= 0x20) return null;\n\t}\n\n\t// Step 16: Get encoding\n\tconst encodingName = String_fromCharCode(...potentialEncoding);\n\tlet encoding = getEncoding(encodingName);\n\n\t// Step 17: If UTF-16BE/LE, change to UTF-8\n\tif (encoding === \"UTF-16BE\" || encoding === \"UTF-16LE\") {\n\t\tencoding = \"UTF-8\";\n\t}\n\n\treturn encoding;\n}\n\n/**\n * https://encoding.spec.whatwg.org/#bom-sniff\n *\n * BOM sniff: check the first 2-3 bytes for a byte order mark.\n */\nexport function bomSniff(bytes: Uint8Array): string | null {\n\tif (\n\t\tbytes.length >= 3 &&\n\t\tbytes[0] === 0xef &&\n\t\tbytes[1] === 0xbb &&\n\t\tbytes[2] === 0xbf\n\t) {\n\t\treturn \"UTF-8\";\n\t}\n\tif (bytes.length >= 2 && bytes[0] === 0xfe && bytes[1] === 0xff) {\n\t\treturn \"UTF-16BE\";\n\t}\n\tif (bytes.length >= 2 && bytes[0] === 0xff && bytes[1] === 0xfe) {\n\t\treturn \"UTF-16LE\";\n\t}\n\treturn null;\n}\n\n/**\n * Extract the charset parameter from a Content-Type header value.\n *\n * This parses the Content-Type more carefully than a naive split — it handles\n * quoted values and multiple parameters.\n *\n * This follows what MIME Sniffing / HTTP specs say: find `charset=` parameter.\n */\nexport function extractCharsetFromContentType(\n\tcontentType: string\n): string | null {\n\t// Find the parameters section (after the first semicolon)\n\tconst semicolonIdx = contentType.indexOf(\";\");\n\tif (semicolonIdx === -1) return null;\n\n\tlet params = contentType.substring(semicolonIdx + 1);\n\n\t// We may have multiple parameters; iterate through them\n\twhile (params.length > 0) {\n\t\t// Trim leading whitespace\n\t\tparams = params.replace(/^[\\t\\n\\f\\r ]+/, \"\");\n\n\t\t// Try to find charset=\n\t\tconst lower = params.toLowerCase();\n\t\tif (lower.startsWith(\"charset\")) {\n\t\t\tlet pos = \"charset\".length;\n\n\t\t\t// Skip whitespace\n\t\t\twhile (\n\t\t\t\tpos < params.length &&\n\t\t\t\t(params[pos] === \" \" ||\n\t\t\t\t\tparams[pos] === \"\\t\" ||\n\t\t\t\t\tparams[pos] === \"\\n\" ||\n\t\t\t\t\tparams[pos] === \"\\f\" ||\n\t\t\t\t\tparams[pos] === \"\\r\")\n\t\t\t) {\n\t\t\t\tpos++;\n\t\t\t}\n\n\t\t\tif (pos < params.length && params[pos] === \"=\") {\n\t\t\t\tpos++;\n\n\t\t\t\t// Skip whitespace\n\t\t\t\twhile (\n\t\t\t\t\tpos < params.length &&\n\t\t\t\t\t(params[pos] === \" \" ||\n\t\t\t\t\t\tparams[pos] === \"\\t\" ||\n\t\t\t\t\t\tparams[pos] === \"\\n\" ||\n\t\t\t\t\t\tparams[pos] === \"\\f\" ||\n\t\t\t\t\t\tparams[pos] === \"\\r\")\n\t\t\t\t) {\n\t\t\t\t\tpos++;\n\t\t\t\t}\n\n\t\t\t\tif (pos >= params.length) return null;\n\n\t\t\t\t// Quoted value\n\t\t\t\t// eslint-disable-next-line quotes\n\t\t\t\tif (params[pos] === '\"') {\n\t\t\t\t\tpos++;\n\t\t\t\t\tlet value = \"\";\n\t\t\t\t\t// eslint-disable-next-line quotes\n\t\t\t\t\twhile (pos < params.length && params[pos] !== '\"') {\n\t\t\t\t\t\t// Handle backslash escape in quoted string per HTTP spec\n\t\t\t\t\t\tif (params[pos] === \"\\\\\" && pos + 1 < params.length) {\n\t\t\t\t\t\t\tpos++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue += params[pos];\n\t\t\t\t\t\tpos++;\n\t\t\t\t\t}\n\t\t\t\t\treturn getEncoding(value);\n\t\t\t\t}\n\n\t\t\t\t// Unquoted value — collect until ; or end\n\t\t\t\tlet value = \"\";\n\t\t\t\twhile (\n\t\t\t\t\tpos < params.length &&\n\t\t\t\t\tparams[pos] !== \";\" &&\n\t\t\t\t\tparams[pos] !== \" \" &&\n\t\t\t\t\tparams[pos] !== \"\\t\"\n\t\t\t\t) {\n\t\t\t\t\tvalue += params[pos];\n\t\t\t\t\tpos++;\n\t\t\t\t}\n\t\t\t\treturn getEncoding(value);\n\t\t\t}\n\t\t}\n\n\t\t// Skip to next parameter\n\t\tconst nextSemicolon = params.indexOf(\";\");\n\t\tif (nextSemicolon === -1) break;\n\t\tparams = params.substring(nextSemicolon + 1);\n\t}\n\n\treturn null;\n}\n\n/**\n * Determine the character encoding of an HTML document's byte stream.\n *\n * Implements a simplified version of the WHATWG encoding sniffing algorithm\n * for use in a service worker / proxy context:\n *\n * 1. BOM sniffing (certain)\n * 2. Transport layer: Content-Type header charset parameter (certain)\n * 3. Prescan byte stream: look for <meta charset> or\n * <meta http-equiv=\"content-type\" content=\"...charset=...\"> in first 1024 bytes (tentative)\n * 4. Default to UTF-8\n *\n * Returns an encoding name suitable for use with TextDecoder.\n */\nexport function sniffEncoding(\n\tbytes: Uint8Array,\n\tcontentTypeHeader: string | null\n): string {\n\t// Step 1: BOM sniff\n\tconst bom = bomSniff(bytes);\n\tif (bom) return bom;\n\n\t// Step 4: Transport layer (Content-Type header charset)\n\tif (contentTypeHeader) {\n\t\tconst transportCharset = extractCharsetFromContentType(contentTypeHeader);\n\t\tif (transportCharset) return transportCharset;\n\t}\n\n\t// Step 5: Prescan\n\tconst prescanResult = prescanByteStream(bytes, 1024);\n\tif (prescanResult) return prescanResult;\n\n\t// Step 9: Default\n\treturn \"UTF-8\";\n}\n","import {\n\tArray_from,\n\tbtoa,\n\tTextEncoder_encode,\n\tString_fromCharCode,\n\tString_fromCodePoint,\n} from \"@/shared/snapshot\";\n\nfunction bytesToBase64Fallback(bytes: Uint8Array): string {\n\tconst binString = Array_from(bytes, (byte) =>\n\t\tString_fromCodePoint(byte)\n\t).join(\"\");\n\n\treturn btoa(binString);\n}\n\nconst bytesToBase64Native: ((this: Uint8Array) => string) | undefined = (\n\tUint8Array.prototype as any\n).toBase64;\n\nexport const bytesToBase64: (bytes: Uint8Array) => string =\n\ttypeof bytesToBase64Native === \"function\"\n\t\t? (bytes) => bytesToBase64Native.call(bytes)\n\t\t: bytesToBase64Fallback;\n\nexport function base64Encode(text: string) {\n\treturn btoa(\n\t\tTextEncoder_encode(text)\n\t\t\t.reduce(\n\t\t\t\t(data, byte) => (data.push(String_fromCharCode(byte)), data),\n\t\t\t\t[] as any\n\t\t\t)\n\t\t\t.join(\"\")\n\t);\n}\n","/**\n * @fileoverview\n * See `types.ts` for context on these symbols.\n */\n\nimport { Symbol_for } from \"@/shared/snapshot\";\n\nexport const SCRAMJETCLIENTNAME = \"scramjet client global\";\nexport const SCRAMJETCLIENT = Symbol_for(SCRAMJETCLIENTNAME);\n","const WebSocketFields = {\n CLOSED: WebSocket.CLOSED,\n CONNECTING: WebSocket.CONNECTING,\n OPEN: WebSocket.OPEN,\n};\nclass BareCompatibleWebSocket extends EventTarget {\n transport;\n url;\n readyState = WebSocketFields.CONNECTING;\n extensions = \"\";\n protocol = \"\";\n _data;\n _close;\n constructor(remote, protocols, transport, requestHeaders) {\n super();\n this.transport = transport;\n this.url = remote.toString();\n if (!requestHeaders) {\n requestHeaders = [];\n }\n if (!protocols) {\n protocols = [];\n }\n if (typeof protocols === \"string\") {\n protocols = [protocols];\n }\n const onopen = (protocol, extensions) => {\n this.protocol = protocol;\n this.extensions = extensions;\n this.readyState = WebSocketFields.OPEN;\n const event = new Event(\"open\");\n this.dispatchEvent(event);\n };\n const onmessage = async (payload) => {\n const event = new MessageEvent(\"message\", { data: payload });\n this.dispatchEvent(event);\n };\n const onclose = (code, reason) => {\n this.readyState = WebSocketFields.CLOSED;\n const event = new CloseEvent(\"close\", { code, reason });\n this.dispatchEvent(event);\n };\n const onerror = () => {\n this.readyState = WebSocketFields.CLOSED;\n const event = new Event(\"error\");\n this.dispatchEvent(event);\n };\n (async () => {\n if (!transport.ready) {\n await transport.init();\n }\n const [_data, _close] = transport.connect(new URL(remote), protocols, requestHeaders, onopen, onmessage, onclose, onerror);\n this._data = _data;\n this._close = _close;\n })();\n }\n async send(data) {\n if (!this.transport.ready) {\n await this.transport.init();\n }\n if (this.readyState === WebSocketFields.CONNECTING) {\n throw new DOMException(\"Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.\");\n }\n // we can't check typeof Uint8Array here directly as it may come from another realm\n if (typeof data === \"object\" && \"buffer\" in data && data.buffer) {\n let _data = data;\n // this is neccesary in case the buffer is a slice of a larger array\n // in which case you risk edge cases such as sending an entire wasm memory buffer over the websocket\n data = _data.buffer.slice(_data.byteOffset, _data.byteOffset + _data.byteLength);\n }\n this._data(data);\n }\n close(code, reason) {\n this._close(code, reason);\n }\n}\n\nconst validChars = \"!#$%&'*+-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`abcdefghijklmnopqrstuvwxyz|~\";\nfunction validProtocol(protocol) {\n for (let i = 0; i < protocol.length; i++) {\n const char = protocol[i];\n if (!validChars.includes(char)) {\n return false;\n }\n }\n return true;\n}\nconst wsProtocols = [\"ws:\", \"wss:\"];\nconst statusEmpty = [101, 204, 205, 304];\nconst statusRedirect = [301, 302, 303, 307, 308];\nconst nativeFetch = fetch;\nfunction headersObjectToEntries(headers) {\n return [...headers];\n}\n/**\n * A Response with additional properties.\n */\nclass BareResponse extends Response {\n url;\n rawHeaders;\n redirected = false;\n static fromTransferrableResponse(resp, url) {\n const nativeHeaders = new Headers();\n for (const [key, value] of resp.headers) {\n try {\n nativeHeaders.append(key, value);\n }\n catch {\n }\n }\n const response = new BareResponse(statusEmpty.includes(resp.status) ? undefined : resp.body, {\n status: resp.status,\n statusText: resp.statusText,\n });\n for (const [key, value] of nativeHeaders.entries()) {\n response.headers.append(key, value);\n }\n response.url = url;\n response.redirected =\n resp.status >= 300 &&\n resp.status < 400 &&\n resp.headers[\"location\"] !== undefined;\n response.rawHeaders = resp.headers;\n return response;\n }\n static fromNativeResponse(resp) {\n let body = statusEmpty.includes(resp.status) ? undefined : resp.body;\n const response = new BareResponse(body, {\n headers: resp.headers,\n status: resp.status,\n statusText: resp.statusText,\n });\n response.url = resp.url;\n response.rawHeaders = headersObjectToEntries(resp.headers);\n response.redirected = resp.redirected;\n return response;\n }\n}\nconst defaultMaxRedirects = 20;\nclass BareCompatibleClient {\n transport;\n /**\n * Create a BareCompatibleClient using the provided transport. Calls to fetch and connect will wait for an implementation to be ready.\n */\n constructor(transport) {\n this.transport = transport;\n }\n createWebSocket(remote, protocols = [], requestHeaders) {\n try {\n remote = new URL(remote);\n }\n catch (err) {\n throw new DOMException(`Faiiled to construct 'WebSocket': The URL '${remote}' is invalid.`);\n }\n if (!wsProtocols.includes(remote.protocol))\n throw new DOMException(`Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or 'wss'. '${remote.protocol}' is not allowed.`);\n if (!Array.isArray(protocols))\n protocols = [protocols];\n protocols = protocols.map(String);\n for (const proto of protocols)\n if (!validProtocol(proto))\n throw new DOMException(`Failed to construct 'WebSocket': The subprotocol '${proto}' is invalid.`);\n requestHeaders = requestHeaders || [];\n const socket = new BareCompatibleWebSocket(remote, protocols, this.transport, requestHeaders);\n return socket;\n }\n async fetch(url, init) {\n if (!this.transport.ready) {\n await this.transport.init();\n }\n let maxRedirects = init?.maxRedirects || defaultMaxRedirects;\n const body = init?.body;\n const headers = init?.headers || [];\n const method = init?.method || \"GET\";\n const redirect = init?.redirect || \"follow\";\n let urlO = new URL(url);\n if (urlO.protocol.startsWith(\"blob:\")) {\n const response = await nativeFetch(urlO);\n return BareResponse.fromNativeResponse(response);\n }\n for (let i = 0;; i++) {\n const resp = await this.transport.request(urlO, method, body, headers, undefined);\n const bareresponse = BareResponse.fromTransferrableResponse(resp, urlO.toString());\n if (statusRedirect.includes(bareresponse.status)) {\n switch (redirect) {\n case \"follow\": {\n const location = bareresponse.headers.get(\"location\");\n if (maxRedirects > i && location !== null) {\n urlO = new URL(location, urlO);\n continue;\n }\n else\n throw new TypeError(\"Failed to fetch\");\n }\n case \"error\":\n throw new TypeError(\"Failed to fetch\");\n case \"manual\":\n return bareresponse;\n }\n }\n else {\n return bareresponse;\n }\n }\n }\n}\n\nexport { BareCompatibleClient, BareCompatibleWebSocket, BareResponse };\n//# sourceMappingURL=index.mjs.map\n","export const elementNames = new Map([\n \"altGlyph\",\n \"altGlyphDef\",\n \"altGlyphItem\",\n \"animateColor\",\n \"animateMotion\",\n \"animateTransform\",\n \"clipPath\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"foreignObject\",\n \"glyphRef\",\n \"linearGradient\",\n \"radialGradient\",\n \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n \"definitionURL\",\n \"attributeName\",\n \"attributeType\",\n \"baseFrequency\",\n \"baseProfile\",\n \"calcMode\",\n \"clipPathUnits\",\n \"diffuseConstant\",\n \"edgeMode\",\n \"filterUnits\",\n \"glyphRef\",\n \"gradientTransform\",\n \"gradientUnits\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keyPoints\",\n \"keySplines\",\n \"keyTimes\",\n \"lengthAdjust\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerUnits\",\n \"markerWidth\",\n \"maskContentUnits\",\n \"maskUnits\",\n \"numOctaves\",\n \"pathLength\",\n \"patternContentUnits\",\n \"patternTransform\",\n \"patternUnits\",\n \"pointsAtX\",\n \"pointsAtY\",\n \"pointsAtZ\",\n \"preserveAlpha\",\n \"preserveAspectRatio\",\n \"primitiveUnits\",\n \"refX\",\n \"refY\",\n \"repeatCount\",\n \"repeatDur\",\n \"requiredExtensions\",\n \"requiredFeatures\",\n \"specularConstant\",\n \"specularExponent\",\n \"spreadMethod\",\n \"startOffset\",\n \"stdDeviation\",\n \"stitchTiles\",\n \"surfaceScale\",\n \"systemLanguage\",\n \"tableValues\",\n \"targetX\",\n \"targetY\",\n \"textLength\",\n \"viewBox\",\n \"viewTarget\",\n \"xChannelSelector\",\n \"yChannelSelector\",\n \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n","/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n \"style\",\n \"script\",\n \"xmp\",\n \"iframe\",\n \"noembed\",\n \"noframes\",\n \"plaintext\",\n \"noscript\",\n]);\nfunction replaceQuotes(value) {\n return value.replace(/\"/g, \"&quot;\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n var _a;\n if (!attributes)\n return;\n const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n ? replaceQuotes\n : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML\n : escapeAttribute;\n return Object.keys(attributes)\n .map((key) => {\n var _a, _b;\n const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case attribute names */\n key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n }\n if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n return key;\n }\n return `${key}=\"${encode(value)}\"`;\n })\n .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n const nodes = \"length\" in node ? node : [node];\n let output = \"\";\n for (let i = 0; i < nodes.length; i++) {\n output += renderNode(nodes[i], options);\n }\n return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n switch (node.type) {\n case ElementType.Root:\n return render(node.children, options);\n // @ts-expect-error We don't use `Doctype` yet\n case ElementType.Doctype:\n case ElementType.Directive:\n return renderDirective(node);\n case ElementType.Comment:\n return renderComment(node);\n case ElementType.CDATA:\n return renderCdata(node);\n case ElementType.Script:\n case ElementType.Style:\n case ElementType.Tag:\n return renderTag(node, options);\n case ElementType.Text:\n return renderText(node, options);\n }\n}\nconst foreignModeIntegrationPoints = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n var _a;\n // Handle SVG / MathML in HTML\n if (opts.xmlMode === \"foreign\") {\n /* Fix up mixed-case element names */\n elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n /* Exit foreign mode at integration points */\n if (elem.parent &&\n foreignModeIntegrationPoints.has(elem.parent.name)) {\n opts = { ...opts, xmlMode: false };\n }\n }\n if (!opts.xmlMode && foreignElements.has(elem.name)) {\n opts = { ...opts, xmlMode: \"foreign\" };\n }\n let tag = `<${elem.name}`;\n const attribs = formatAttributes(elem.attribs, opts);\n if (attribs) {\n tag += ` ${attribs}`;\n }\n if (elem.children.length === 0 &&\n (opts.xmlMode\n ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n opts.selfClosingTags !== false\n : // User explicitly asked for self-closing tags, even in HTML mode\n opts.selfClosingTags && singleTag.has(elem.name))) {\n if (!opts.xmlMode)\n tag += \" \";\n tag += \"/>\";\n }\n else {\n tag += \">\";\n if (elem.children.length > 0) {\n tag += render(elem.children, opts);\n }\n if (opts.xmlMode || !singleTag.has(elem.name)) {\n tag += `</${elem.name}>`;\n }\n }\n return tag;\n}\nfunction renderDirective(elem) {\n return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n var _a;\n let data = elem.data || \"\";\n // If entities weren't decoded, no need to encode them back\n if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n !(!opts.xmlMode &&\n elem.parent &&\n unencodedElements.has(elem.parent.name))) {\n data =\n opts.xmlMode || opts.encodeEntities !== \"utf8\"\n ? encodeXML(data)\n : escapeText(data);\n }\n return data;\n}\nfunction renderCdata(elem) {\n return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n return `<!--${elem.data}-->`;\n}\n","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n return (elem.type === ElementType.Tag ||\n elem.type === ElementType.Script ||\n elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n","/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n /** Type for the root element of a document */\n ElementType[\"Root\"] = \"root\";\n /** Type for Text */\n ElementType[\"Text\"] = \"text\";\n /** Type for <? ... ?> */\n ElementType[\"Directive\"] = \"directive\";\n /** Type for <!-- ... --> */\n ElementType[\"Comment\"] = \"comment\";\n /** Type for <script> tags */\n ElementType[\"Script\"] = \"script\";\n /** Type for <style> tags */\n ElementType[\"Style\"] = \"style\";\n /** Type for Any tag */\n ElementType[\"Tag\"] = \"tag\";\n /** Type for <![CDATA[ ... ]]> */\n ElementType[\"CDATA\"] = \"cdata\";\n /** Type for <!doctype ...> */\n ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n * @param element Element to test\n * @param element.type Node type discriminator to check.\n */\nexport function isTag(element) {\n return (element.type === ElementType.Tag ||\n element.type === ElementType.Script ||\n element.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\n// eslint-disable-next-line prefer-destructuring\nexport const Root = ElementType.Root;\n/** Type for Text */\n// eslint-disable-next-line prefer-destructuring\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\n// eslint-disable-next-line prefer-destructuring\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\n// eslint-disable-next-line prefer-destructuring\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\n// eslint-disable-next-line prefer-destructuring\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\n// eslint-disable-next-line prefer-destructuring\nexport const Style = ElementType.Style;\n/** Type for Any tag */\n// eslint-disable-next-line prefer-destructuring\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\n// eslint-disable-next-line prefer-destructuring\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\n// eslint-disable-next-line prefer-destructuring\nexport const Doctype = ElementType.Doctype;\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \"&quot;\"],\n [38, \"&amp;\"],\n [39, \"&apos;\"],\n [60, \"&lt;\"],\n [62, \"&gt;\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `&#xfc;`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `&#xfc;`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \"&quot;\"],\n [38, \"&amp;\"],\n [160, \"&nbsp;\"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&amp;\"],\n [60, \"&lt;\"],\n [62, \"&gt;\"],\n [160, \"&nbsp;\"],\n]));\n//# sourceMappingURL=escape.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n */\nexport function decode(data, options = EntityLevel.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return decodeHTML(data, mode);\n }\n return decodeXML(data);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(data, options = EntityLevel.XML) {\n var _a;\n const opts = typeof options === \"number\" ? { level: options } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = DecodingMode.Strict);\n return decode(data, opts);\n}\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param options Encoding options.\n */\nexport function encode(data, options = EntityLevel.XML) {\n const opts = typeof options === \"number\" ? { level: options } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === EncodingMode.UTF8)\n return escapeUTF8(data);\n if (opts.mode === EncodingMode.Attribute)\n return escapeAttribute(data);\n if (opts.mode === EncodingMode.Text)\n return escapeText(data);\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === EncodingMode.ASCII) {\n return encodeNonAsciiHTML(data);\n }\n return encodeHTML(data);\n }\n // ASCII and Extensive are equivalent\n return encodeXML(data);\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nconst decodeMap = new Map([\n [0, 65_533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n * @param codePoint Unicode code point to convert.\n */\nexport function replaceCodePoint(codePoint) {\n if ((codePoint >= 0xd8_00 && codePoint <= 0xdf_ff) ||\n codePoint > 0x10_ff_ff) {\n return 0xff_fd;\n }\n return decodeMap.get(codePoint) ?? codePoint;\n}\n//# sourceMappingURL=decode-codepoint.js.map","import { replaceCodePoint } from \"./decode-codepoint.js\";\nimport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { BinTrieFlags } from \"./internal/bin-trie-flags.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b10_0000;\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n * @param code Code point to decode.\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\n/**\n * Decoding mode for named entities.\n */\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n decodeTree;\n emitCodePoint;\n errors;\n constructor(\n /** The tree used to decode entities. */\n // biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n }\n /** The current state of the decoder. */\n state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n result = 0;\n /** The current index in the decode tree. */\n treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n excess = 1;\n /** The mode in which the decoder is operating. */\n decodeMode = DecodingMode.Strict;\n /** The number of characters that have been consumed in the current run. */\n runConsumed = 0;\n /**\n * Resets the instance to make it reusable.\n * @param decodeMode Entity decoding mode to use.\n */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n this.runConsumed = 0;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(input, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (input.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(input, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(input, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(input, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(input, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(input, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(input, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(input, offset) {\n if (offset >= input.length) {\n return -1;\n }\n if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(input, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(input, offset);\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(input, offset) {\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n // Convert hex digit to value (0-15); 'a'/'A' -> 10.\n const digit = char <= CharCodes.NINE\n ? char - CharCodes.ZERO\n : (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10;\n this.result = this.result * 16 + digit;\n this.consumed++;\n offset++;\n }\n else {\n return this.emitNumericEntity(char, 3);\n }\n }\n return -1; // Incomplete entity\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(input, offset) {\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char)) {\n this.result = this.result * 10 + (char - CharCodes.ZERO);\n this.consumed++;\n offset++;\n }\n else {\n return this.emitNumericEntity(char, 2);\n }\n }\n return -1; // Incomplete entity\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(input, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The length is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n while (offset < input.length) {\n // Handle compact runs (possibly inline): valueLength == 0 and SEMI_REQUIRED bit set.\n if (valueLength === 0 && (current & BinTrieFlags.FLAG13) !== 0) {\n const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; /* 2..63 */\n // If we are starting a run, check the first char.\n if (this.runConsumed === 0) {\n const firstChar = current & BinTrieFlags.JUMP_TABLE;\n if (input.charCodeAt(offset) !== firstChar) {\n return this.result === 0\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n offset++;\n this.excess++;\n this.runConsumed++;\n }\n // Check remaining characters in the run.\n while (this.runConsumed < runLength) {\n if (offset >= input.length) {\n return -1;\n }\n const charIndexInPacked = this.runConsumed - 1;\n const packedWord = decodeTree[this.treeIndex + 1 + (charIndexInPacked >> 1)];\n const expectedChar = charIndexInPacked % 2 === 0\n ? packedWord & 0xff\n : (packedWord >> 8) & 0xff;\n if (input.charCodeAt(offset) !== expectedChar) {\n this.runConsumed = 0;\n return this.result === 0\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n offset++;\n this.excess++;\n this.runConsumed++;\n }\n this.runConsumed = 0;\n this.treeIndex += 1 + (runLength >> 1);\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n }\n if (offset >= input.length)\n break;\n const char = input.charCodeAt(offset);\n /*\n * Implicit semicolon handling for nodes that require a semicolon but\n * don't have an explicit ';' branch stored in the trie. If we have\n * a value on the current node, it requires a semicolon, and the\n * current input character is a semicolon, emit the entity using the\n * current node (without descending further).\n */\n if (char === CharCodes.SEMI &&\n valueLength !== 0 &&\n (current & BinTrieFlags.FLAG13) !== 0) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict &&\n (current & BinTrieFlags.FLAG13) === 0) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n // Increment offset & excess for next iteration\n offset++;\n this.excess++;\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n this.errors?.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] &\n ~(BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n * @returns The number of characters consumed.\n */\n end() {\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let returnValue = \"\";\n const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += String.fromCodePoint(data)));\n return function decodeWithTrie(input, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n returnValue += input.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const length = decoder.write(input, \n // Skip the \"&\"\n offset + 1);\n if (length < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + length;\n // If `length` is 0, skip the current `&` and continue.\n offset = length === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = returnValue + input.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n returnValue = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIndex Index immediately after the current node header.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIndex + value] - 1;\n }\n // Case 3: Multiple branches encoded in packed dictionary (two keys per uint16)\n const packedKeySlots = (branchCount + 1) >> 1;\n /*\n * Treat packed keys as a virtual sorted array of length `branchCount`.\n * Key(i) = low byte for even i, high byte for odd i in slot i>>1.\n */\n let lo = 0;\n let hi = branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const slot = mid >> 1;\n const packed = decodeTree[nodeIndex + slot];\n const midKey = (packed >> ((mid & 1) * 8)) & 0xff;\n if (midKey < char) {\n lo = mid + 1;\n }\n else if (midKey > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[nodeIndex + packedKeySlots + mid];\n }\n }\n return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n return xmlDecoder(xmlString, DecodingMode.Strict);\n}\nexport { replaceCodePoint } from \"./decode-codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\n//# sourceMappingURL=decode.js.map","// Generated using scripts/write-decode-map.ts\nimport { decodeBase64 } from \"../internal/decode-shared.js\";\n/** Packed HTML decode trie data. */\nexport const htmlDecodeTree = /* #__PURE__ */ decodeBase64(\"QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg\");\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nimport { decodeBase64 } from \"../internal/decode-shared.js\";\n/** Packed XML decode trie data. */\nexport const xmlDecodeTree = /* #__PURE__ */ decodeBase64(\"AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg\");\n//# sourceMappingURL=decode-data-xml.js.map","/**\n * Bit flags & masks for the binary trie encoding used for entity decoding.\n *\n * Bit layout (16 bits total):\n * 15..14 VALUE_LENGTH (+1 encoding; 0 => no value)\n * 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';').\n * If valueLength==0: compact run flag.\n * 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run)\n * 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char\n */\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"FLAG13\"] = 8192] = \"FLAG13\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 8064] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\n//# sourceMappingURL=bin-trie-flags.js.map","/**\n * Shared base64 decode helper for generated decode data.\n * Assumes global atob is available.\n * @param input Input string to encode or decode.\n */\nexport function decodeBase64(input) {\n const binary = atob(input);\n const evenLength = binary.length & ~1; // Round down to even length\n const out = new Uint16Array(evenLength / 2);\n for (let index = 0, outIndex = 0; index < evenLength; index += 2) {\n const lo = binary.charCodeAt(index);\n const hi = binary.charCodeAt(index + 1);\n out[outIndex++] = lo | (hi << 8);\n }\n return out;\n}\n//# sourceMappingURL=decode-shared.js.map","const { fromCodePoint } = String;\nimport Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst headingTags = new Set([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"a\", new Set([\"a\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", headingTags],\n [\"h2\", headingTags],\n [\"h3\", headingTags],\n [\"h4\", headingTags],\n [\"h5\", headingTags],\n [\"h6\", headingTags],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nconst DOCUMENT_TYPE = \"doctype\";\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"basefont\",\n \"br\",\n \"col\",\n \"command\",\n \"embed\",\n \"frame\",\n \"hr\",\n \"img\",\n \"input\",\n \"isindex\",\n \"keygen\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\n/**\n * Elements that can be used to integrate HTML content within foreign namespaces (e.g., SVG or MathML).\n *\n * Entries must use the SVG-adjusted casing (e.g. \"foreignObject\" not\n * \"foreignobject\") since they are compared against adjusted tag names.\n */\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignObject\",\n \"desc\",\n \"title\",\n]);\nconst svgTagNameAdjustments = new Map([\n [\"altglyph\", \"altGlyph\"],\n [\"altglyphdef\", \"altGlyphDef\"],\n [\"altglyphitem\", \"altGlyphItem\"],\n [\"animatecolor\", \"animateColor\"],\n [\"animatemotion\", \"animateMotion\"],\n [\"animatetransform\", \"animateTransform\"],\n [\"clippath\", \"clipPath\"],\n [\"feblend\", \"feBlend\"],\n [\"fecolormatrix\", \"feColorMatrix\"],\n [\"fecomponenttransfer\", \"feComponentTransfer\"],\n [\"fecomposite\", \"feComposite\"],\n [\"feconvolvematrix\", \"feConvolveMatrix\"],\n [\"fediffuselighting\", \"feDiffuseLighting\"],\n [\"fedisplacementmap\", \"feDisplacementMap\"],\n [\"fedistantlight\", \"feDistantLight\"],\n [\"fedropshadow\", \"feDropShadow\"],\n [\"feflood\", \"feFlood\"],\n [\"fefunca\", \"feFuncA\"],\n [\"fefuncb\", \"feFuncB\"],\n [\"fefuncg\", \"feFuncG\"],\n [\"fefuncr\", \"feFuncR\"],\n [\"fegaussianblur\", \"feGaussianBlur\"],\n [\"feimage\", \"feImage\"],\n [\"femerge\", \"feMerge\"],\n [\"femergenode\", \"feMergeNode\"],\n [\"femorphology\", \"feMorphology\"],\n [\"feoffset\", \"feOffset\"],\n [\"fepointlight\", \"fePointLight\"],\n [\"fespecularlighting\", \"feSpecularLighting\"],\n [\"fespotlight\", \"feSpotLight\"],\n [\"fetile\", \"feTile\"],\n [\"feturbulence\", \"feTurbulence\"],\n [\"foreignobject\", \"foreignObject\"],\n [\"glyphref\", \"glyphRef\"],\n [\"lineargradient\", \"linearGradient\"],\n [\"radialgradient\", \"radialGradient\"],\n [\"textpath\", \"textPath\"],\n]);\nvar ForeignContext;\n(function (ForeignContext) {\n ForeignContext[ForeignContext[\"None\"] = 0] = \"None\";\n ForeignContext[ForeignContext[\"Svg\"] = 1] = \"Svg\";\n ForeignContext[ForeignContext[\"MathML\"] = 2] = \"MathML\";\n})(ForeignContext || (ForeignContext = {}));\nfunction getInitialForeignContext(startingForeignContext) {\n switch (startingForeignContext) {\n case \"svg\":\n return ForeignContext.Svg;\n case \"math\":\n return ForeignContext.MathML;\n default:\n return ForeignContext.None;\n }\n}\nconst reNameEnd = /\\s|\\//;\n/**\n * Incremental parser implementation.\n */\nexport class Parser {\n options;\n /** The start index of the last event. */\n startIndex = 0;\n /** The end index of the last event. */\n endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n openTagStart = 0;\n tagname = \"\";\n attribname = \"\";\n attribvalue = \"\";\n attribs = null;\n stack = [];\n foreignContext;\n cbs;\n lowerCaseTagNames;\n lowerCaseAttributeNames;\n recognizeSelfClosing;\n /** We are parsing HTML. Inverse of the `xmlMode` option. */\n htmlMode;\n tokenizer;\n buffers = [];\n bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n ended = false;\n constructor(cbs, options = {}) {\n this.options = options;\n this.cbs = cbs ?? {};\n this.htmlMode = !this.options.xmlMode;\n this.lowerCaseTagNames = options.lowerCaseTags ?? this.htmlMode;\n this.lowerCaseAttributeNames =\n options.lowerCaseAttributeNames ?? this.htmlMode;\n this.recognizeSelfClosing =\n options.recognizeSelfClosing ?? !this.htmlMode;\n this.tokenizer = new (options.Tokenizer ?? Tokenizer)(this.options, this);\n this.foreignContext = [getInitialForeignContext(options.startingForeignContext)];\n this.cbs.onparserinit?.(this);\n }\n // Tokenizer event handlers\n /**\n * @param start Start index for the current parser event.\n * @param endIndex End index for the current parser event.\n * @internal\n */\n ontext(start, endIndex) {\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n this.cbs.ontext?.(data);\n this.startIndex = endIndex;\n }\n /**\n * @param cp Current Unicode code point.\n * @param endIndex End index for the current parser event.\n * @internal\n */\n ontextentity(cp, endIndex) {\n this.endIndex = endIndex - 1;\n this.cbs.ontext?.(fromCodePoint(cp));\n this.startIndex = endIndex;\n }\n /** @internal */\n isInForeignContext() {\n return this.foreignContext[0] !== ForeignContext.None;\n }\n /**\n * Checks if the current tag is a void element. Override this if you want\n * to specify your own additional void elements.\n * @param name Name of the pseudo selector.\n */\n isVoidElement(name) {\n return this.htmlMode && voidElements.has(name);\n }\n /**\n * Read a tag name from the buffer.\n *\n * When `lowerCaseTagNames` is enabled (the default in HTML mode), the name\n * is lowercased and may be adjusted for SVG casing or the `image` → `img`\n * alias.\n * @param start Start index of the tag name in the buffer.\n * @param endIndex End index of the tag name in the buffer.\n */\n readTagName(start, endIndex) {\n const name = this.lowerCaseTagNames\n ? this.getSlice(start, endIndex).toLowerCase()\n : this.getSlice(start, endIndex);\n if (!(this.lowerCaseTagNames && this.htmlMode)) {\n return name;\n }\n if (this.foreignContext[0] === ForeignContext.Svg) {\n return svgTagNameAdjustments.get(name) ?? name;\n }\n /*\n * Closing tags for SVG elements inside HTML integration points\n * (e.g. </foreignObject> while inside its own content) need case\n * adjustment so the name matches what was pushed to the stack.\n * `foreignContext.length > 1` means a foreign ancestor exists —\n * the base [None] entry plus at least one pushed context.\n */\n if (this.foreignContext.length > 1) {\n const adjusted = svgTagNameAdjustments.get(name);\n if (adjusted !== undefined && this.stack.includes(adjusted)) {\n return adjusted;\n }\n }\n if (!this.isInForeignContext()) {\n return name === \"image\" ? \"img\" : name;\n }\n return name;\n }\n /**\n * @param start Start index for the current parser event.\n * @param endIndex End index for the current parser event.\n * @internal\n */\n onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n this.emitOpenTag(this.readTagName(start, endIndex));\n }\n emitOpenTag(name) {\n this.openTagStart = this.startIndex;\n this.tagname = name;\n /*\n * The spec ignores a second <form> when one is already open.\n * Setting tagname to \"\" suppresses all downstream effects: attribs\n * stays null so endOpenTag is a no-op, and closeCurrentTag can't\n * match \"\" on the stack.\n */\n if (this.htmlMode && name === \"form\" && this.stack.includes(\"form\")) {\n this.tagname = \"\";\n return;\n }\n const impliesClose = this.htmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {\n this.popElement(true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.unshift(name);\n if (this.htmlMode) {\n if (name === \"svg\") {\n this.foreignContext.unshift(ForeignContext.Svg);\n }\n else if (name === \"math\") {\n this.foreignContext.unshift(ForeignContext.MathML);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.unshift(ForeignContext.None);\n }\n }\n }\n this.cbs.onopentagname?.(name);\n if (this.cbs.onopentag)\n this.attribs = {};\n }\n endOpenTag(isImplied) {\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n this.cbs.onopentag?.(this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n }\n /**\n * @param endIndex End index for the current parser event.\n * @internal\n */\n onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /**\n * @param start Start index for the current parser event.\n * @param endIndex End index for the current parser event.\n * @internal\n */\n onclosetag(start, endIndex) {\n this.endIndex = endIndex;\n const name = this.readTagName(start, endIndex);\n if (!this.isVoidElement(name)) {\n const pos = this.stack.indexOf(name);\n if (pos !== -1) {\n for (let index = 0; index < pos; index++) {\n this.popElement(true);\n }\n this.popElement(false);\n }\n else if (this.htmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (this.htmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n this.cbs.onopentagname?.(\"br\");\n this.cbs.onopentag?.(\"br\", {}, true);\n this.cbs.onclosetag?.(\"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /**\n * @param endIndex End index for the current parser event.\n * @internal\n */\n onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.recognizeSelfClosing || this.isInForeignContext()) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n /**\n * Pop the top element off the stack, emit a close event, and maintain\n * the foreign context stack.\n * @param implied Whether this close is implied (not from an explicit end tag).\n */\n popElement(implied) {\n // biome-ignore lint/style/noNonNullAssertion: The element is guaranteed to exist.\n const element = this.stack.shift();\n if (this.htmlMode &&\n (foreignContextElements.has(element) ||\n htmlIntegrationElements.has(element))) {\n this.foreignContext.shift();\n }\n this.cbs.onclosetag?.(element, implied);\n }\n closeCurrentTag(isOpenImplied) {\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[0] === name) {\n this.popElement(!isOpenImplied);\n }\n }\n /**\n * @param start Start index for the current parser event.\n * @param endIndex End index for the current parser event.\n * @internal\n */\n onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n /**\n * @param start Start index for the current parser event.\n * @param endIndex End index for the current parser event.\n * @internal\n */\n onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /**\n * @param cp Current Unicode code point.\n * @internal\n */\n onattribentity(cp) {\n this.attribvalue += fromCodePoint(cp);\n }\n /**\n * @param quote Quote type used for the current attribute.\n * @param endIndex End index for the current parser event.\n * @internal\n */\n onattribend(quote, endIndex) {\n this.endIndex = endIndex;\n this.cbs.onattribute?.(this.attribname, this.attribvalue, quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs && !Object.hasOwn(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const index = value.search(reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n }\n /**\n * @param start Start index for the current parser event.\n * @param endIndex End index for the current parser event.\n * @internal\n */\n ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n /*\n * In HTML mode, ondeclaration is only reached for DOCTYPE\n * (the tokenizer routes everything else to bogus comments).\n */\n const name = this.htmlMode\n ? this.lowerCaseTagNames\n ? DOCUMENT_TYPE\n : value.slice(0, DOCUMENT_TYPE.length)\n : this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /**\n * @param start Start index for the current parser event.\n * @param endIndex End index for the current parser event.\n * @internal\n */\n onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /**\n * @param start Start index for the current parser event.\n * @param endIndex End index for the current parser event.\n * @param offset Offset applied when computing parser indices.\n * @internal\n */\n oncomment(start, endIndex, offset) {\n this.endIndex = endIndex;\n this.cbs.oncomment?.(this.getSlice(start, endIndex - offset));\n this.cbs.oncommentend?.();\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /**\n * @param start Start index for the current parser event.\n * @param endIndex End index for the current parser event.\n * @param offset Offset applied when computing parser indices.\n * @internal\n */\n oncdata(start, endIndex, offset) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (!this.htmlMode || this.options.recognizeCDATA) {\n this.cbs.oncdatastart?.();\n this.cbs.ontext?.(value);\n this.cbs.oncdataend?.();\n }\n else if (this.isInForeignContext()) {\n this.cbs.ontext?.(value);\n }\n else {\n this.cbs.oncomment?.(`[CDATA[${value}]]`);\n this.cbs.oncommentend?.();\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onend() {\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let index = 0; index < this.stack.length; index++) {\n this.cbs.onclosetag(this.stack[index], true);\n }\n }\n this.cbs.onend?.();\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n reset() {\n this.cbs.onreset?.();\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n this.cbs.onparserinit?.(this);\n this.buffers.length = 0;\n this.foreignContext.length = 0;\n this.foreignContext.unshift(getInitialForeignContext(this.options.startingForeignContext));\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n * @param data Document to parse.\n */\n parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n if (start === end) {\n return \"\";\n }\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n * @param chunk Chunk to parse.\n */\n write(chunk) {\n if (this.ended) {\n this.cbs.onerror?.(new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n * @param chunk Optional final chunk to parse.\n */\n end(chunk) {\n if (this.ended) {\n this.cbs.onerror?.(new Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */\n resume() {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n }\n}\n//# sourceMappingURL=Parser.js.map","import { DecodingMode, EntityDecoder, htmlDecodeTree, xmlDecodeTree, } from \"entities/decode\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n State[State[\"Text\"] = 1] = \"Text\";\n State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n State[State[\"InTagName\"] = 3] = \"InTagName\";\n State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n // Attributes\n State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n // Declarations\n State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n // Processing instructions\n State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n // Comments & CDATA\n State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n State[State[\"DeclarationSequence\"] = 20] = \"DeclarationSequence\";\n State[State[\"InSpecialComment\"] = 21] = \"InSpecialComment\";\n State[State[\"InCommentLike\"] = 22] = \"InCommentLike\";\n // Special tags\n State[State[\"SpecialStartSequence\"] = 23] = \"SpecialStartSequence\";\n State[State[\"InSpecialTag\"] = 24] = \"InSpecialTag\";\n State[State[\"InPlainText\"] = 25] = \"InPlainText\";\n State[State[\"InEntity\"] = 26] = \"InEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n return (c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isASCIIAlpha(c) {\n return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\n/**\n * Quote style used for parsed attributes.\n */\nexport var QuoteType;\n(function (QuoteType) {\n QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType || (QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n Empty: new Uint8Array(0),\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), // CDATA[\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), // ]]>\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x21, 0x3e]), // `--!>`\n Doctype: new Uint8Array([0x64, 0x6f, 0x63, 0x74, 0x79, 0x70, 0x65]), // `doctype`\n IframeEnd: new Uint8Array([0x3c, 0x2f, 0x69, 0x66, 0x72, 0x61, 0x6d, 0x65]), // `</iframe`\n NoembedEnd: new Uint8Array([\n 0x3c, 0x2f, 0x6e, 0x6f, 0x65, 0x6d, 0x62, 0x65, 0x64,\n ]), // `</noembed`\n NoframesEnd: new Uint8Array([\n 0x3c, 0x2f, 0x6e, 0x6f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73,\n ]), // `</noframes`\n Plaintext: new Uint8Array([\n 0x3c, 0x2f, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x78, 0x74,\n ]), // `</plaintext`\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // `</script`\n StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]), // `</style`\n TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`\n TextareaEnd: new Uint8Array([\n 0x3c, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61,\n ]), // `</textarea`\n XmpEnd: new Uint8Array([0x3c, 0x2f, 0x78, 0x6d, 0x70]), // `</xmp`\n};\n/**\n * Maps the first lowercase character of an HTML tag name to the sequence\n * used for special-tag detection. All sequences share a common layout\n * where index 2 is the first tag-name character, so matching always\n * continues from offset 3.\n */\nconst specialStartSequences = new Map([\n [Sequences.IframeEnd[2], Sequences.IframeEnd],\n [Sequences.NoembedEnd[2], Sequences.NoembedEnd],\n [Sequences.Plaintext[2], Sequences.Plaintext],\n [Sequences.ScriptEnd[2], Sequences.ScriptEnd],\n [Sequences.TitleEnd[2], Sequences.TitleEnd],\n [Sequences.XmpEnd[2], Sequences.XmpEnd],\n]);\n/**\n * Tokenizer implementation used by `Parser`.\n */\nexport default class Tokenizer {\n cbs;\n /** The current state the tokenizer is in. */\n state = State.Text;\n /** The read buffer. */\n buffer = \"\";\n /** The beginning of the section that is currently being read. */\n sectionStart = 0;\n /** The index within the buffer that we are currently looking at. */\n index = 0;\n /** The start of the last entity. */\n entityStart = 0;\n /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n baseState = State.Text;\n /** For special parsing behavior inside of script and style tags. */\n isSpecial = false;\n /** Indicates whether the tokenizer has been paused. */\n running = true;\n /** The offset of the current buffer. */\n offset = 0;\n xmlMode;\n decodeEntities;\n recognizeSelfClosing;\n entityDecoder;\n constructor({ xmlMode = false, decodeEntities = true, recognizeSelfClosing = xmlMode, }, cbs) {\n this.cbs = cbs;\n this.xmlMode = xmlMode;\n this.decodeEntities = decodeEntities;\n this.recognizeSelfClosing = recognizeSelfClosing;\n this.entityDecoder = new EntityDecoder(xmlMode ? xmlDecodeTree : htmlDecodeTree, (cp, consumed) => this.emitCodePoint(cp, consumed));\n }\n reset() {\n this.state = State.Text;\n this.buffer = \"\";\n this.sectionStart = 0;\n this.index = 0;\n this.baseState = State.Text;\n this.isSpecial = false;\n this.currentSequence = Sequences.Empty;\n this.sequenceIndex = 0;\n this.running = true;\n this.offset = 0;\n }\n write(chunk) {\n this.offset += this.buffer.length;\n this.buffer = chunk;\n this.parse();\n }\n end() {\n if (this.running)\n this.finish();\n }\n pause() {\n this.running = false;\n }\n resume() {\n this.running = true;\n if (this.index < this.buffer.length + this.offset) {\n this.parse();\n }\n }\n stateText(c) {\n if (c === CharCodes.Lt ||\n (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {\n if (this.index > this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n currentSequence = Sequences.Empty;\n sequenceIndex = 0;\n enterTagBody() {\n if (this.currentSequence === Sequences.Plaintext) {\n this.currentSequence = Sequences.Empty;\n this.state = State.InPlainText;\n }\n else if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n }\n /**\n * Match the opening tag name against an HTML text-only tag sequence.\n *\n * Some tags share an initial prefix (`script`/`style`, `title`/`textarea`,\n * `noembed`/`noframes`), so we may switch to an alternate sequence at the\n * first distinguishing byte. On a successful full match we fall back to\n * the normal tag-name state; a later `>` will enter raw-text, RCDATA, or\n * plaintext mode based on `currentSequence` / `isSpecial`.\n * @param c Current character code point.\n */\n stateSpecialStartSequence(c) {\n const lower = c | 0x20;\n // Still matching — check for an alternate sequence at branch points.\n if (this.sequenceIndex < this.currentSequence.length) {\n if (lower === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex++;\n return;\n }\n if (this.sequenceIndex === 3) {\n if (this.currentSequence === Sequences.ScriptEnd &&\n lower === Sequences.StyleEnd[3]) {\n this.currentSequence = Sequences.StyleEnd;\n this.sequenceIndex = 4;\n return;\n }\n if (this.currentSequence === Sequences.TitleEnd &&\n lower === Sequences.TextareaEnd[3]) {\n this.currentSequence = Sequences.TextareaEnd;\n this.sequenceIndex = 4;\n return;\n }\n }\n else if (this.sequenceIndex === 4 &&\n this.currentSequence === Sequences.NoembedEnd &&\n lower === Sequences.NoframesEnd[4]) {\n this.currentSequence = Sequences.NoframesEnd;\n this.sequenceIndex = 5;\n return;\n }\n }\n else if (isEndOfTagSection(c)) {\n // Full match on a valid tag boundary — keep the sequence.\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n return;\n }\n // No match — abandon special-tag detection.\n this.isSpecial = false;\n this.currentSequence = Sequences.Empty;\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n if (this.xmlMode) {\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n else {\n this.state = State.InSpecialComment;\n this.stateInSpecialComment(c); // Reconsume the character\n }\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n * @param c Current character code point.\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Emit a comment token and return to the text state.\n * @param offset Number of characters in the end sequence that have already been matched.\n */\n emitComment(offset) {\n this.cbs.oncomment(this.sectionStart, this.index, offset);\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n * @param c Current character code point.\n */\n stateInCommentLike(c) {\n if (!this.xmlMode &&\n this.currentSequence === Sequences.CommentEnd &&\n this.sequenceIndex <= 1 &&\n /*\n * We're still at the very start of the comment: the only\n * characters consumed since `<!--` are the dashes that\n * advanced sequenceIndex (0 for `<!-->`, 1 for `<!--->`).\n */\n this.index === this.sectionStart + this.sequenceIndex &&\n c === CharCodes.Gt) {\n // Abruptly closed empty HTML comment.\n this.emitComment(this.sequenceIndex);\n }\n else if (this.currentSequence === Sequences.CommentEnd &&\n this.sequenceIndex === 2 &&\n c === CharCodes.Gt) {\n // `!` is optional here, so the same sequence also accepts `-->`.\n this.emitComment(2);\n }\n else if (this.currentSequence === Sequences.CommentEnd &&\n this.sequenceIndex === this.currentSequence.length - 1 &&\n c !== CharCodes.Gt) {\n this.sequenceIndex = Number(c === CharCodes.Dash);\n }\n else if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 3);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n * @param c Current character code point.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n /**\n * Scan raw-text / RCDATA content for the matching end tag.\n *\n * For RCDATA tags (`<title>`, `<textarea>`) entities are decoded inline.\n * For raw-text tags (`<script>`, `<style>`, etc.) we fast-forward to `<`.\n * @param c Current character code point.\n */\n stateInSpecialTag(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (isEndOfTagSection(c)) {\n const endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n this.sequenceIndex = 0;\n }\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd ||\n this.currentSequence === Sequences.TextareaEnd) {\n // RCDATA tags have to parse entities while still looking for their end tag.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of RCDATA tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n }\n else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n if (this.xmlMode) {\n this.state = State.InProcessingInstruction;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n else if (this.isTagStartChar(c)) {\n this.sectionStart = this.index;\n const special = this.xmlMode || this.cbs.isInForeignContext?.()\n ? undefined\n : specialStartSequences.get(c | 0x20);\n if (special === undefined) {\n this.state = State.InTagName;\n }\n else {\n this.isSpecial = true;\n this.currentSequence = special;\n this.sequenceIndex = 3;\n this.state = State.SpecialStartSequence;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n if (this.xmlMode) {\n // Ignore\n }\n else {\n this.state = State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n if (!this.xmlMode) {\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n this.enterTagBody();\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n /**\n * Handle `/` before `>` in an opening tag.\n *\n * In HTML mode, text-only tags ignore the self-closing flag and still enter\n * their raw-text/RCDATA/plaintext state unless self-closing tags are being\n * recognized. In XML mode, or for ordinary tags, the tokenizer returns to\n * regular text parsing after emitting the self-closing callback.\n * @param c Current character code point.\n */\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.sectionStart = this.index + 1;\n if (!this.recognizeSelfClosing) {\n this.enterTagBody();\n return;\n }\n this.state = State.Text;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n this.currentSequence = Sequences.Empty;\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = this.index;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index + 1);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.startEntity();\n }\n }\n /**\n * Distinguish between CDATA, declarations, HTML comments, and HTML bogus\n * comments after `<!`.\n *\n * In HTML mode, only real comments and doctypes stay on declaration paths;\n * everything else becomes a bogus comment terminated by the next `>`.\n * @param c Current character code point.\n */\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else if (this.xmlMode) {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n else if ((c | 0x20) === Sequences.Doctype[0]) {\n this.state = State.DeclarationSequence;\n this.currentSequence = Sequences.Doctype;\n this.sequenceIndex = 1;\n }\n else if (c === CharCodes.Gt) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Dash) {\n this.state = State.BeforeComment;\n }\n else {\n this.state = State.InSpecialComment;\n }\n }\n /**\n * Continue matching `doctype` after `<!d`.\n *\n * A full `doctype` match stays on the declaration path; any other name falls\n * back to an HTML bogus comment, which matches browser behavior for\n * non-doctype `<!...>` constructs.\n * @param c Current character code point.\n */\n stateDeclarationSequence(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n this.state = State.InDeclaration;\n this.stateInDeclaration(c);\n }\n else if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (c === CharCodes.Gt) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InSpecialComment;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n /**\n * XML processing instructions (`<?...?>`).\n *\n * In HTML mode `<?` is routed to `InSpecialComment` instead, so this\n * state is only reachable in XML mode.\n * @param c Current character code point.\n */\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Questionmark) {\n // Remember that we just consumed `?`, so the next `>` closes the PI.\n this.sequenceIndex = 1;\n }\n else if (c === CharCodes.Gt && this.sequenceIndex === 1) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index - 1);\n this.sequenceIndex = 0;\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n else {\n // Keep scanning for the next `?`, which can start a closing `?>`.\n this.sequenceIndex = Number(this.fastForwardTo(CharCodes.Questionmark));\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n else if (this.xmlMode) {\n this.state = State.InDeclaration;\n }\n else if (c === CharCodes.Gt) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InSpecialComment;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n startEntity() {\n this.baseState = this.state;\n this.state = State.InEntity;\n this.entityStart = this.index;\n this.entityDecoder.startEntity(this.xmlMode\n ? DecodingMode.Strict\n : this.baseState === State.Text ||\n this.baseState === State.InSpecialTag\n ? DecodingMode.Legacy\n : DecodingMode.Attribute);\n }\n stateInEntity() {\n const indexInBuffer = this.index - this.offset;\n const length = this.entityDecoder.write(this.buffer, indexInBuffer);\n // If `length` is positive, we are done with the entity.\n if (length >= 0) {\n this.state = this.baseState;\n if (length === 0) {\n this.index -= 1;\n }\n }\n else {\n if (indexInBuffer < this.buffer.length &&\n this.buffer.charCodeAt(indexInBuffer) === CharCodes.Amp) {\n this.state = this.baseState;\n this.index -= 1;\n return;\n }\n // Mark buffer as consumed.\n this.index = this.offset + this.buffer.length - 1;\n }\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n this.state === State.InPlainText ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.InPlainText: {\n // Skip to end of buffer; cleanup() emits the text.\n this.index = this.buffer.length + this.offset - 1;\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.DeclarationSequence: {\n this.stateDeclarationSequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InEntity: {\n this.stateInEntity();\n break;\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InEntity) {\n this.entityDecoder.end();\n this.state = this.baseState;\n }\n this.handleTrailingData();\n this.cbs.onend();\n }\n handleTrailingCommentLikeData(endIndex) {\n if (this.state !== State.InCommentLike) {\n return false;\n }\n if (this.currentSequence === Sequences.CdataEnd) {\n if (this.xmlMode) {\n if (this.sectionStart < endIndex) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n }\n else {\n /* In HTML mode, unclosed CDATA is a bogus comment. */\n const cdataStart = this.sectionStart - Sequences.Cdata.length - 1;\n this.cbs.oncomment(cdataStart, endIndex, 0);\n }\n }\n else {\n const offset = this.xmlMode\n ? 0\n : Math.min(this.sequenceIndex, Sequences.CommentEnd.length - 1);\n this.cbs.oncomment(this.sectionStart, endIndex, offset);\n }\n return true;\n }\n handleTrailingMarkupDeclaration(endIndex) {\n if (this.xmlMode) {\n switch (this.state) {\n case State.InSpecialComment:\n case State.BeforeComment:\n case State.CDATASequence:\n case State.DeclarationSequence:\n case State.InDeclaration: {\n this.cbs.ontext(this.sectionStart, endIndex);\n return true;\n }\n default: {\n return false;\n }\n }\n }\n switch (this.state) {\n case State.BeforeDeclaration:\n case State.InSpecialComment:\n case State.BeforeComment:\n case State.CDATASequence: {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n return true;\n }\n case State.DeclarationSequence: {\n if (this.sequenceIndex !== Sequences.Doctype.length) {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n return true;\n }\n case State.InDeclaration: {\n return true;\n }\n default: {\n return false;\n }\n }\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n if (this.handleTrailingCommentLikeData(endIndex) ||\n this.handleTrailingMarkupDeclaration(endIndex)) {\n return;\n }\n // If there is no remaining data, we are done.\n if (this.sectionStart >= endIndex) {\n return;\n }\n switch (this.state) {\n case State.InTagName:\n case State.BeforeAttributeName:\n case State.BeforeAttributeValue:\n case State.AfterAttributeName:\n case State.InAttributeName:\n case State.InAttributeValueSq:\n case State.InAttributeValueDq:\n case State.InAttributeValueNq:\n case State.InClosingTagName: {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n break;\n }\n default: {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n }\n emitCodePoint(cp, consumed) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n if (this.sectionStart < this.entityStart) {\n this.cbs.onattribdata(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.onattribentity(cp);\n }\n else {\n if (this.sectionStart < this.entityStart) {\n this.cbs.ontext(this.sectionStart, this.entityStart);\n }\n this.sectionStart = this.entityStart + consumed;\n this.index = this.sectionStart - 1;\n this.cbs.ontextentity(cp, this.sectionStart);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map","\nexport function scramtag() {\n return (\"\"+1e10).replace(/[018]/g,\n c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n );\n}\n","import { scramtag } from './snippets/wasm-4b0f351a8e6eeb46/inline0.js';\n\nlet wasm;\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n }\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction addToExternrefTable0(obj) {\n const idx = wasm.__externref_table_alloc();\n wasm.__wbindgen_externrefs.set(idx, obj);\n return idx;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n const idx = addToExternrefTable0(e);\n wasm.__wbindgen_exn_store(idx);\n }\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_externrefs.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nconst RewriterFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_rewriter_free(ptr >>> 0, 1));\n\nexport class Rewriter {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n RewriterFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_rewriter_free(ptr, 0);\n }\n /**\n * @param {object} jsconfig\n * @param {object} jsflags\n * @param {object} encode_url\n * @param {string} js\n * @param {string} base\n * @param {string} url\n * @param {boolean} module\n * @returns {JsRewriterOutput}\n */\n rewrite_js(jsconfig, jsflags, encode_url, js, base, url, module) {\n const ptr0 = passStringToWasm0(js, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(base, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewriter_rewrite_js(this.__wbg_ptr, jsconfig, jsflags, encode_url, ptr0, len0, ptr1, len1, ptr2, len2, module);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n /**\n * @param {object} jsconfig\n * @param {object} jsflags\n * @param {object} encode_url\n * @param {Uint8Array} js\n * @param {string} base\n * @param {string} url\n * @param {boolean} module\n * @returns {JsRewriterOutput}\n */\n rewrite_js_bytes(jsconfig, jsflags, encode_url, js, base, url, module) {\n const ptr0 = passArray8ToWasm0(js, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(base, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len2 = WASM_VECTOR_LEN;\n const ret = wasm.rewriter_rewrite_js_bytes(this.__wbg_ptr, jsconfig, jsflags, encode_url, ptr0, len0, ptr1, len1, ptr2, len2, module);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n return takeFromExternrefTable0(ret[0]);\n }\n constructor() {\n const ret = wasm.rewriter_new();\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0] >>> 0;\n RewriterFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n}\nif (Symbol.dispose) Rewriter.prototype[Symbol.dispose] = Rewriter.prototype.free;\n\nconst EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']);\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n const validResponse = module.ok && EXPECTED_RESPONSE_TYPES.has(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg_Error_e83987f665cf5504 = function(arg0, arg1) {\n const ret = Error(getStringFromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg___wbindgen_boolean_get_6d5a1ee65bab5f68 = function(arg0) {\n const v = arg0;\n const ret = typeof(v) === 'boolean' ? v : undefined;\n return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0;\n };\n imports.wbg.__wbg___wbindgen_is_function_ee8a6c5833c90377 = function(arg0) {\n const ret = typeof(arg0) === 'function';\n return ret;\n };\n imports.wbg.__wbg___wbindgen_string_get_e4f06c90489ad01b = function(arg0, arg1) {\n const obj = arg1;\n const ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg___wbindgen_throw_b855445ff6a94295 = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg_call_525440f72fbfc0ea = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = arg0.call(arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_get_efcb449f58ec27c2 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(arg0, arg1);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_new_1acc0b6eea89d040 = function() {\n const ret = new Object();\n return ret;\n };\n imports.wbg.__wbg_new_e17d9f43105b08be = function() {\n const ret = new Array();\n return ret;\n };\n imports.wbg.__wbg_new_from_slice_92f4d78ca282a2d2 = function(arg0, arg1) {\n const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1));\n return ret;\n };\n imports.wbg.__wbg_new_with_base_058e1f248f19b984 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = new URL(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_scramtag_3a255d78b157986d = function(arg0) {\n const ret = scramtag();\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_set_c2abbebe8b9ebee1 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(arg0, arg1, arg2);\n return ret;\n }, arguments) };\n imports.wbg.__wbg_toString_7da7c8dbec78fcb8 = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbg_toString_8eec07f6f4c057e4 = function(arg0) {\n const ret = arg0.toString();\n return ret;\n };\n imports.wbg.__wbindgen_cast_2241b6af4c4b2941 = function(arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n\n return imports;\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('wasm_bg.wasm', \"\");\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"names":["defaultConfig","defaultConfigDev","Error","Object","Plugin","name","hook","callback","sorter","Tap","context","props","callbacks","internal","a","b","results","cb","Promise_all","plugin","hooks","Proxy","target","key","ScramjetClient","Map","global","init","SCRAMJETCLIENT","dbg","iswindow","findBox","seen","i","SingletonBox","ScramjetHeaders","BareCompatibleClient","createWrapFn","prop","split","realProp","realTarget","original","Reflect_get","args","that","client","value","base","url","frag","undefined","_URL","currentWin","frame","curclient","parentWin","parentClient","meta","last","createLocationProxy","modules","module","aorder","String","handler","Array_isArray","n","debugname","applyFn","constructFn","Reflect_has","originalDescriptor","Object_getOwnPropertyDescriptor","h","fnName","windowName","location","sourceURL","construct","apply","Reflect_apply","Reflect_construct","constructor","newTarget","returnValue","earlyreturn","ctx","r","fn","pst","err","s","console","getOwnPropertyDescriptorHandler","Object_defineProperty","descriptor","oldDescriptor","v","desc","options","rewriteUrl","unrewriteUrl","flag","flagEnabled","map","proxy","_receiver","Object_keys","namespace","NamedNodeMap","isNaN","Number","keys","Reflect_ownKeys","_self","self","rewriteCss","unrewriteCss","style","CSSStyleDeclaration","Reflect_set","resetDocumentWriter","document","getDocumentWriter","writer","IncrementalHtmlRewriter","lastState","referrerURL","createReferrerString","remaining","rewriteHtml","bytesToBase64","bytes","btoa","Array_from","byte","foreignContextForElement","element","insideForeignContext","current","attrObject","urlinterfaces","originalhrefs","attr","href","URL","node","doc","attrib","cleaned","attrNames","tagName","ruleList","htmlRules","rule","ret","_ctx","_namespace","val","newval","rewriteJs","TextEncoder_encode","scriptSource","atob","unrewriteHtml","rewriteTextForElement","getTextForElement","text","html","realwin","mime","isHtmlMimeType","range","f","win","entries","entry","file","index","property","attributes","localStorageProxy","sessionStorageProxy","globalThis","window","Window","isworker","issw","isdedicated","isshared","Location","fakeLocation","Object_setPrototypeOf","descriptorSource","native","log","_v","rewriteBlob","setTimeout","unrewriteBlob","del","Reflect","Navigator","enabled","argdbg","arg","recurse","Symbol","ar","warn","e","t","closure","error","stack","newstack","lines","line","l","_value","js","indirectEval","strict","indirection","Function","realOnEvent","Symbol_for","handlers","wraplistener","listener","realEvent","type","reciever","origlistener","proxylistener","arr","targets","rewriteFunction","stringifiedFunction","content","RawFunction","RawAsyncFunction","RawGeneratorFunction","RawAsyncGeneratorFunction","boundimport","resolved","metaobj","rootPromise","root","directory","POLLUTANT","callerClient","callerGlobalThisProxied","wrappedPostMessage","toproxy","obj","pollution","rewriteUrlOptionsForFetch","headers","newHeaders","Headers","unrewriteLinkHeader","socketmap","_WeakMap","socketstreammap","fakeWebSocket","EventTarget","rawurl","barews","state","fakeEventSend","fakeev","Event","ev","CloseEvent","payload","Blob","ArrayBuffer","MessageEvent","ws","Promise","resolve","reject","ReadableStream","controller","info","WritableStream","chunk","worker","ARGS","HEADERS","sab","SharedArrayBuffer","view","DataView","now","performance","status","headersLength","headersab","Uint8Array","TextDecoder","bodyLength","bodyab","body","parser","DOMParser","header","match","re","RegExp","headerstring","_match","p1","code","SCRAMTAG","buf","tag","before","registerRewrites","sourcemap","decoder","rewrites","rewritelen","cursor","start","size","end","oldLen","oldStr","doUnrewrite","stringified","extracted","extractTag","tagOffset","tagStart","fnStart","fnEnd","getEnd","rewrite","fnrewrites","newString","lastpos","isModule","wrappedParent","wrappedTop","test","identifier","order","str","lhs","op","rhs","WeakMap","ownerclient","ctors","ctor","rewriteBody","request","parsed","response","encoding","sniffEncoding","htmlContent","_TextDecoder","ct","isJavascriptMimeType","rewritten","rewriteWorkers","doHandleFetch","responseBody","parseRequest","handleBlobOrDataUrlFetch","interceptProps","isDocument","responseHeaders","newheaders","rewriteRequestHeaders","doNetworkFetch","handleCookies","rewriteResponseHeaders","isRedirect","initiatorOriginUrl","propagatedFetchSite","referer","rawClient","crossSiteRedirect","registrableDomainForRedirect","hopSite","computeFetchSite","propagated","worstFetchSite","QP","normalizeContentType","respprops","earlyResponse","reqcontext","reqprops","resp","BareResponse","prerespprops","dataUrl","hostname","labels","rawHeaders","cookies","SEC_HEADERS","_Set","URL_HEADERS","cspHeader","urlHeader","rewrittenUrl","link","rawOriginUrl","originUrl","sameSiteContext","computeSameSiteContext","isNavigation","isSafeMethod","originSite","registrableDomain","applyFetchMetadataHeaders","site","protocol","initiatorUrl","resolveFetchInitiatorUrl","candidate","immediate","computeFetchMode","dest","isNavigationDestination","requestIncludesCredentials","destUrl","ScramjetFetchTrackedClient","clientId","ScramjetFetchHandler","_Map","QP_INVERSE","inv","trackedClient","strippedUrl","params","extras","parseQueryParams","searchParams","logical","hadExtraParams","Object_entries","referrerSourceUrl","fetchSiteState","fetchMode","destination","clientUrl","resource","policy","originIsHttps","destIsHttps","isPotentialDowngrade","isSameOrigin","referrerOrigin","referrerUrl","referrerUrlString","logfuncs","severity","message","old","_","fmt","Math_min","timespan","duration","after","Performance_now","CookieJar","pathname","lastSlash","requestPath","cookiePath","c","bucket","id","prev","cookieString","parsedCookie","parse","lowerName","hostOnly","expiresTime","expires","cookie","_Date","fromJs","validCookies","cs","dot","JSON_parse","ids","Date","JSON_stringify","lk","raw","k","newh","_context","_meta","rewriteSrcset","regex","partialflags","_RegExp","versionInfo","VERSION","COMMITHASH","BUILDDATE","HTTP_WHITESPACE","trimHttpWhitespace","asciiLower","parseMimeType","input","trimmed","semicolon","main","slash","subtype","asParsed","FONT_ESSENCES","ARCHIVE_ESSENCES","JAVASCRIPT_ESSENCES","isImageMimeType","p","isAudioOrVideoMimeType","isFontMimeType","isZipBasedMimeType","isArchiveMimeType","isXmlMimeType","isScriptableMimeType","isJavascriptMimeTypeEssenceMatch","isInlineDisplayableMimeType","isAsciiWhitespace","codePoint","skipAsciiWhitespace","position","isAsciiDigit","isAsciiAlpha","parseDeclarativeRefresh","timeStart","timeString","time","Number_parseInt","separator","maybeSeparator","urlPosition","urlLabel","first","second","third","next","quote","quoteCode","urlEnd","closingQuote","css","handleCss","encodedUrl","importStatement","firstQuote","endQuote","renderOptions","WeakSet","htmlcontext","DomHandler","Parser","output","emittedLength","ElementType","render","rewriteHtmlInner","htmlRoot","headElement","bodyElement","dom","traverseParsedHtml","sel","eventAttributes","json","Comment","refresh","childNode","isQuirky","detectQuirks","child","injectScripts","src","Element","foreignContext","traverse","srcset","rewrittenSources","sources","source","descriptors","rewriteJsInner","rewriteJsWasm","rewriter","getRewriter","flagsobj","out","scramtag","errors","TextDecoder_decode","res","newjs","pushmap","sourcemapfn","strictMode","tryCanParseURL","origin","blob","objectUrl","dataToBlob","commaIndex","data","metaParts","mediaType","isBase64","part","base64","binString","decoded","decodeURIComponent","URL_createObjectURL","realUrl","encodedHash","paramsInit","_URLSearchParams","referrerPolicy","paramstring","decodedHash","wasm_u8","setWasm","u8","MAGIC","x","rewriters","initSync","WebAssembly","len","Rewriter","script","base64Encode","textEncoder","TextEncoder","isNonEmptyString","hasCtlCharacters","parseString","setCookieValue","nameValuePairStr","nameValueArr","parts","cookiePairByteLength","sides","sideValue","parseInt","String_fromCodePoint","String_fromCharCode","textDecoder","makeWrap","getAllPropertyDescriptors","sym","clonePrototypeChain","ENCODING_LABELS","getEncoding","label","isSpaceOrSlash","isSpace","getAttribute","pos","goto_spaces","parseValue","qb","ub","contentTypeHeader","bom","transportCharset","extractCharsetFromContentType","contentType","semicolonIdx","lower","nextSemicolon","prescanResult","prescanByteStream","limit","attributeList","gotPragma","needPragma","charset","extractCharsetFromMeta","idx","ch","closeIdx","getXmlEncoding","xmlEnd","declBytes","encPos","j","quoteMark","encEnd","potentialEncoding","bytesToBase64Native","SCRAMJETCLIENTNAME","WebSocket","o","DOMException","fetch","Response","Array","TypeError","Set","arguments","Math","Uint16Array","crypto","FinalizationRegistry","Request"],"mappings":"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A,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,WACH,CAAC,GAAG,CAAC,AAAC,GAAQ,CAAC,EAAI,WAAW,GAAI,EAAI,GAC1B,EAAiB,IAAIA,IAAI,CAClC,gBACA,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,aACH,CAAC,GAAG,CAAC,AAAC,GAAQ,CAAC,EAAI,WAAW,GAAI,EAAI,E,iECvFvC,IAAM,EAAoB,IAAIorB,IAAI,CAC9B,QACA,SACA,MACA,SACA,UACA,WACA,YACA,WACH,EACD,SAAS,EAAc,CAAK,EACxB,OAAO,EAAM,OAAO,CAAC,KAAM,SAC/B,CA+BA,IAAM,EAAY,IAAIA,IAAI,CACtB,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,OACA,OACA,QACA,SACA,QACA,MACH,EAiBD,EARO,SAAS,EAAO,CAAI,CAAE,EAAU,CAAC,CAAC,EACrC,IAAM,EAAQ,WAAY,EAAO,EAAO,CAAC,EAAK,CAC1C,EAAS,GACb,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,MAAM,CAAE,IAC9B,GAAU,AAKlB,SAAoB,CAAI,CAAE,CAAO,MAyER,EAqBF,EAHF,EA1FjB,OAAQ,EAAK,IAAI,EACb,KAAK,IAAgB,CACjB,OAAO,EAAO,EAAK,QAAQ,CAAE,EAEjC,MAAK,IAAmB,CACxB,KAA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"}