├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── src ├── lyra.js └── wasm │ ├── webassembly_codec_wrapper.js │ ├── webassembly_codec_wrapper.wasm │ └── webassembly_codec_wrapper.worker.js └── webpack.config.js /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Neuvideo 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # lyra-js 2 | A Webassembly/Javascript port of [Lyra](https://github.com/google/lyra), a neural audio codec from Google. It enables audio encoding and decoding with Lyra on web browsers. 3 | 4 | ## Installation. 5 | 6 | ### NPM 7 | ```shell 8 | npm install lyra-codec --save 9 | ``` 10 | 11 | ```javascript 12 | import {encodeWithLyra, decodeWithLyra, isLyraReady} from 'lyra-codec' 13 | ``` 14 | 15 | ### UNPKG 16 | ```javascript 17 | import {encodeWithLyra, decodeWithLyra, isLyraReady} from 'https://unpkg.com/lyra-codec/dist/lyra_bundle.js' 18 | ``` 19 | 20 | ## Usage 21 | 22 | ```javascript 23 | if (isLyraReady()) { 24 | // Encode with Lyra codec. 25 | const rawAudio = new Float32Array(...); 26 | const encodedAudio = encodeWithLyra(audioArray, kSampleRate); 27 | 28 | const decoded = decodeWithLyra(encodedAudio, kSampleRate, rawAudio.length); 29 | } else { 30 | ... 31 | } 32 | ``` 33 | ## Example 34 | See [Lyra on webassembly](https://lyra-69165.web.app) for a demo of lyra-js in action, and [Playing with Lyra](https://www.meetecho.com/blog/playing-with-lyra) on how to use it for webrtc. 35 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lyra-codec", 3 | "version": "1.1.1", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "lyra-codec", 9 | "version": "1.1.1", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "webpack": "^5.75.0", 13 | "webpack-cli": "^5.0.0" 14 | } 15 | }, 16 | "node_modules/@discoveryjs/json-ext": { 17 | "version": "0.5.7", 18 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", 19 | "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", 20 | "dev": true, 21 | "engines": { 22 | "node": ">=10.0.0" 23 | } 24 | }, 25 | "node_modules/@jridgewell/gen-mapping": { 26 | "version": "0.3.2", 27 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 28 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 29 | "dev": true, 30 | "dependencies": { 31 | "@jridgewell/set-array": "^1.0.1", 32 | "@jridgewell/sourcemap-codec": "^1.4.10", 33 | "@jridgewell/trace-mapping": "^0.3.9" 34 | }, 35 | "engines": { 36 | "node": ">=6.0.0" 37 | } 38 | }, 39 | "node_modules/@jridgewell/resolve-uri": { 40 | "version": "3.1.0", 41 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 42 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 43 | "dev": true, 44 | "engines": { 45 | "node": ">=6.0.0" 46 | } 47 | }, 48 | "node_modules/@jridgewell/set-array": { 49 | "version": "1.1.2", 50 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 51 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 52 | "dev": true, 53 | "engines": { 54 | "node": ">=6.0.0" 55 | } 56 | }, 57 | "node_modules/@jridgewell/source-map": { 58 | "version": "0.3.2", 59 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", 60 | "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", 61 | "dev": true, 62 | "dependencies": { 63 | "@jridgewell/gen-mapping": "^0.3.0", 64 | "@jridgewell/trace-mapping": "^0.3.9" 65 | } 66 | }, 67 | "node_modules/@jridgewell/sourcemap-codec": { 68 | "version": "1.4.14", 69 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 70 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 71 | "dev": true 72 | }, 73 | "node_modules/@jridgewell/trace-mapping": { 74 | "version": "0.3.17", 75 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 76 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 77 | "dev": true, 78 | "dependencies": { 79 | "@jridgewell/resolve-uri": "3.1.0", 80 | "@jridgewell/sourcemap-codec": "1.4.14" 81 | } 82 | }, 83 | "node_modules/@types/eslint": { 84 | "version": "8.4.10", 85 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", 86 | "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", 87 | "dev": true, 88 | "dependencies": { 89 | "@types/estree": "*", 90 | "@types/json-schema": "*" 91 | } 92 | }, 93 | "node_modules/@types/eslint-scope": { 94 | "version": "3.7.4", 95 | "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", 96 | "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", 97 | "dev": true, 98 | "dependencies": { 99 | "@types/eslint": "*", 100 | "@types/estree": "*" 101 | } 102 | }, 103 | "node_modules/@types/estree": { 104 | "version": "0.0.51", 105 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", 106 | "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", 107 | "dev": true 108 | }, 109 | "node_modules/@types/json-schema": { 110 | "version": "7.0.11", 111 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", 112 | "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", 113 | "dev": true 114 | }, 115 | "node_modules/@types/node": { 116 | "version": "18.11.9", 117 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", 118 | "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", 119 | "dev": true 120 | }, 121 | "node_modules/@webassemblyjs/ast": { 122 | "version": "1.11.1", 123 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", 124 | "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", 125 | "dev": true, 126 | "dependencies": { 127 | "@webassemblyjs/helper-numbers": "1.11.1", 128 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1" 129 | } 130 | }, 131 | "node_modules/@webassemblyjs/floating-point-hex-parser": { 132 | "version": "1.11.1", 133 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", 134 | "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", 135 | "dev": true 136 | }, 137 | "node_modules/@webassemblyjs/helper-api-error": { 138 | "version": "1.11.1", 139 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", 140 | "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", 141 | "dev": true 142 | }, 143 | "node_modules/@webassemblyjs/helper-buffer": { 144 | "version": "1.11.1", 145 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", 146 | "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", 147 | "dev": true 148 | }, 149 | "node_modules/@webassemblyjs/helper-numbers": { 150 | "version": "1.11.1", 151 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", 152 | "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", 153 | "dev": true, 154 | "dependencies": { 155 | "@webassemblyjs/floating-point-hex-parser": "1.11.1", 156 | "@webassemblyjs/helper-api-error": "1.11.1", 157 | "@xtuc/long": "4.2.2" 158 | } 159 | }, 160 | "node_modules/@webassemblyjs/helper-wasm-bytecode": { 161 | "version": "1.11.1", 162 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", 163 | "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", 164 | "dev": true 165 | }, 166 | "node_modules/@webassemblyjs/helper-wasm-section": { 167 | "version": "1.11.1", 168 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", 169 | "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", 170 | "dev": true, 171 | "dependencies": { 172 | "@webassemblyjs/ast": "1.11.1", 173 | "@webassemblyjs/helper-buffer": "1.11.1", 174 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 175 | "@webassemblyjs/wasm-gen": "1.11.1" 176 | } 177 | }, 178 | "node_modules/@webassemblyjs/ieee754": { 179 | "version": "1.11.1", 180 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", 181 | "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", 182 | "dev": true, 183 | "dependencies": { 184 | "@xtuc/ieee754": "^1.2.0" 185 | } 186 | }, 187 | "node_modules/@webassemblyjs/leb128": { 188 | "version": "1.11.1", 189 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", 190 | "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", 191 | "dev": true, 192 | "dependencies": { 193 | "@xtuc/long": "4.2.2" 194 | } 195 | }, 196 | "node_modules/@webassemblyjs/utf8": { 197 | "version": "1.11.1", 198 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", 199 | "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", 200 | "dev": true 201 | }, 202 | "node_modules/@webassemblyjs/wasm-edit": { 203 | "version": "1.11.1", 204 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", 205 | "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", 206 | "dev": true, 207 | "dependencies": { 208 | "@webassemblyjs/ast": "1.11.1", 209 | "@webassemblyjs/helper-buffer": "1.11.1", 210 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 211 | "@webassemblyjs/helper-wasm-section": "1.11.1", 212 | "@webassemblyjs/wasm-gen": "1.11.1", 213 | "@webassemblyjs/wasm-opt": "1.11.1", 214 | "@webassemblyjs/wasm-parser": "1.11.1", 215 | "@webassemblyjs/wast-printer": "1.11.1" 216 | } 217 | }, 218 | "node_modules/@webassemblyjs/wasm-gen": { 219 | "version": "1.11.1", 220 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", 221 | "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", 222 | "dev": true, 223 | "dependencies": { 224 | "@webassemblyjs/ast": "1.11.1", 225 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 226 | "@webassemblyjs/ieee754": "1.11.1", 227 | "@webassemblyjs/leb128": "1.11.1", 228 | "@webassemblyjs/utf8": "1.11.1" 229 | } 230 | }, 231 | "node_modules/@webassemblyjs/wasm-opt": { 232 | "version": "1.11.1", 233 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", 234 | "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", 235 | "dev": true, 236 | "dependencies": { 237 | "@webassemblyjs/ast": "1.11.1", 238 | "@webassemblyjs/helper-buffer": "1.11.1", 239 | "@webassemblyjs/wasm-gen": "1.11.1", 240 | "@webassemblyjs/wasm-parser": "1.11.1" 241 | } 242 | }, 243 | "node_modules/@webassemblyjs/wasm-parser": { 244 | "version": "1.11.1", 245 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", 246 | "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", 247 | "dev": true, 248 | "dependencies": { 249 | "@webassemblyjs/ast": "1.11.1", 250 | "@webassemblyjs/helper-api-error": "1.11.1", 251 | "@webassemblyjs/helper-wasm-bytecode": "1.11.1", 252 | "@webassemblyjs/ieee754": "1.11.1", 253 | "@webassemblyjs/leb128": "1.11.1", 254 | "@webassemblyjs/utf8": "1.11.1" 255 | } 256 | }, 257 | "node_modules/@webassemblyjs/wast-printer": { 258 | "version": "1.11.1", 259 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", 260 | "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", 261 | "dev": true, 262 | "dependencies": { 263 | "@webassemblyjs/ast": "1.11.1", 264 | "@xtuc/long": "4.2.2" 265 | } 266 | }, 267 | "node_modules/@webpack-cli/configtest": { 268 | "version": "2.0.0", 269 | "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.0.tgz", 270 | "integrity": "sha512-war4OU8NGjBqU3DP3bx6ciODXIh7dSXcpQq+P4K2Tqyd8L5OjZ7COx9QXx/QdCIwL2qoX09Wr4Cwf7uS4qdEng==", 271 | "dev": true, 272 | "engines": { 273 | "node": ">=14.15.0" 274 | }, 275 | "peerDependencies": { 276 | "webpack": "5.x.x", 277 | "webpack-cli": "5.x.x" 278 | } 279 | }, 280 | "node_modules/@webpack-cli/info": { 281 | "version": "2.0.0", 282 | "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.0.tgz", 283 | "integrity": "sha512-NNxDgbo4VOkNhOlTgY0Elhz3vKpOJq4/PKeKg7r8cmYM+GQA9vDofLYyup8jS6EpUvhNmR30cHTCEIyvXpskwA==", 284 | "dev": true, 285 | "engines": { 286 | "node": ">=14.15.0" 287 | }, 288 | "peerDependencies": { 289 | "webpack": "5.x.x", 290 | "webpack-cli": "5.x.x" 291 | } 292 | }, 293 | "node_modules/@webpack-cli/serve": { 294 | "version": "2.0.0", 295 | "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.0.tgz", 296 | "integrity": "sha512-Rumq5mHvGXamnOh3O8yLk1sjx8dB30qF1OeR6VC00DIR6SLJ4bwwUGKC4pE7qBFoQyyh0H9sAg3fikYgAqVR0w==", 297 | "dev": true, 298 | "engines": { 299 | "node": ">=14.15.0" 300 | }, 301 | "peerDependencies": { 302 | "webpack": "5.x.x", 303 | "webpack-cli": "5.x.x" 304 | }, 305 | "peerDependenciesMeta": { 306 | "webpack-dev-server": { 307 | "optional": true 308 | } 309 | } 310 | }, 311 | "node_modules/@xtuc/ieee754": { 312 | "version": "1.2.0", 313 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", 314 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", 315 | "dev": true 316 | }, 317 | "node_modules/@xtuc/long": { 318 | "version": "4.2.2", 319 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", 320 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", 321 | "dev": true 322 | }, 323 | "node_modules/acorn": { 324 | "version": "8.8.1", 325 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", 326 | "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", 327 | "dev": true, 328 | "bin": { 329 | "acorn": "bin/acorn" 330 | }, 331 | "engines": { 332 | "node": ">=0.4.0" 333 | } 334 | }, 335 | "node_modules/acorn-import-assertions": { 336 | "version": "1.8.0", 337 | "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", 338 | "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", 339 | "dev": true, 340 | "peerDependencies": { 341 | "acorn": "^8" 342 | } 343 | }, 344 | "node_modules/ajv": { 345 | "version": "6.12.6", 346 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 347 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 348 | "dev": true, 349 | "dependencies": { 350 | "fast-deep-equal": "^3.1.1", 351 | "fast-json-stable-stringify": "^2.0.0", 352 | "json-schema-traverse": "^0.4.1", 353 | "uri-js": "^4.2.2" 354 | }, 355 | "funding": { 356 | "type": "github", 357 | "url": "https://github.com/sponsors/epoberezkin" 358 | } 359 | }, 360 | "node_modules/ajv-keywords": { 361 | "version": "3.5.2", 362 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", 363 | "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", 364 | "dev": true, 365 | "peerDependencies": { 366 | "ajv": "^6.9.1" 367 | } 368 | }, 369 | "node_modules/browserslist": { 370 | "version": "4.21.4", 371 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", 372 | "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", 373 | "dev": true, 374 | "funding": [ 375 | { 376 | "type": "opencollective", 377 | "url": "https://opencollective.com/browserslist" 378 | }, 379 | { 380 | "type": "tidelift", 381 | "url": "https://tidelift.com/funding/github/npm/browserslist" 382 | } 383 | ], 384 | "dependencies": { 385 | "caniuse-lite": "^1.0.30001400", 386 | "electron-to-chromium": "^1.4.251", 387 | "node-releases": "^2.0.6", 388 | "update-browserslist-db": "^1.0.9" 389 | }, 390 | "bin": { 391 | "browserslist": "cli.js" 392 | }, 393 | "engines": { 394 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 395 | } 396 | }, 397 | "node_modules/buffer-from": { 398 | "version": "1.1.2", 399 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 400 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 401 | "dev": true 402 | }, 403 | "node_modules/caniuse-lite": { 404 | "version": "1.0.30001431", 405 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", 406 | "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", 407 | "dev": true, 408 | "funding": [ 409 | { 410 | "type": "opencollective", 411 | "url": "https://opencollective.com/browserslist" 412 | }, 413 | { 414 | "type": "tidelift", 415 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 416 | } 417 | ] 418 | }, 419 | "node_modules/chrome-trace-event": { 420 | "version": "1.0.3", 421 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", 422 | "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", 423 | "dev": true, 424 | "engines": { 425 | "node": ">=6.0" 426 | } 427 | }, 428 | "node_modules/clone-deep": { 429 | "version": "4.0.1", 430 | "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", 431 | "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", 432 | "dev": true, 433 | "dependencies": { 434 | "is-plain-object": "^2.0.4", 435 | "kind-of": "^6.0.2", 436 | "shallow-clone": "^3.0.0" 437 | }, 438 | "engines": { 439 | "node": ">=6" 440 | } 441 | }, 442 | "node_modules/colorette": { 443 | "version": "2.0.19", 444 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", 445 | "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", 446 | "dev": true 447 | }, 448 | "node_modules/commander": { 449 | "version": "2.20.3", 450 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 451 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 452 | "dev": true 453 | }, 454 | "node_modules/cross-spawn": { 455 | "version": "7.0.3", 456 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 457 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 458 | "dev": true, 459 | "dependencies": { 460 | "path-key": "^3.1.0", 461 | "shebang-command": "^2.0.0", 462 | "which": "^2.0.1" 463 | }, 464 | "engines": { 465 | "node": ">= 8" 466 | } 467 | }, 468 | "node_modules/electron-to-chromium": { 469 | "version": "1.4.284", 470 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", 471 | "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", 472 | "dev": true 473 | }, 474 | "node_modules/enhanced-resolve": { 475 | "version": "5.10.0", 476 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", 477 | "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", 478 | "dev": true, 479 | "dependencies": { 480 | "graceful-fs": "^4.2.4", 481 | "tapable": "^2.2.0" 482 | }, 483 | "engines": { 484 | "node": ">=10.13.0" 485 | } 486 | }, 487 | "node_modules/envinfo": { 488 | "version": "7.8.1", 489 | "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", 490 | "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", 491 | "dev": true, 492 | "bin": { 493 | "envinfo": "dist/cli.js" 494 | }, 495 | "engines": { 496 | "node": ">=4" 497 | } 498 | }, 499 | "node_modules/es-module-lexer": { 500 | "version": "0.9.3", 501 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", 502 | "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", 503 | "dev": true 504 | }, 505 | "node_modules/escalade": { 506 | "version": "3.1.1", 507 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 508 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 509 | "dev": true, 510 | "engines": { 511 | "node": ">=6" 512 | } 513 | }, 514 | "node_modules/eslint-scope": { 515 | "version": "5.1.1", 516 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 517 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 518 | "dev": true, 519 | "dependencies": { 520 | "esrecurse": "^4.3.0", 521 | "estraverse": "^4.1.1" 522 | }, 523 | "engines": { 524 | "node": ">=8.0.0" 525 | } 526 | }, 527 | "node_modules/esrecurse": { 528 | "version": "4.3.0", 529 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 530 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 531 | "dev": true, 532 | "dependencies": { 533 | "estraverse": "^5.2.0" 534 | }, 535 | "engines": { 536 | "node": ">=4.0" 537 | } 538 | }, 539 | "node_modules/esrecurse/node_modules/estraverse": { 540 | "version": "5.3.0", 541 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 542 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 543 | "dev": true, 544 | "engines": { 545 | "node": ">=4.0" 546 | } 547 | }, 548 | "node_modules/estraverse": { 549 | "version": "4.3.0", 550 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 551 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 552 | "dev": true, 553 | "engines": { 554 | "node": ">=4.0" 555 | } 556 | }, 557 | "node_modules/events": { 558 | "version": "3.3.0", 559 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 560 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 561 | "dev": true, 562 | "engines": { 563 | "node": ">=0.8.x" 564 | } 565 | }, 566 | "node_modules/fast-deep-equal": { 567 | "version": "3.1.3", 568 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 569 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 570 | "dev": true 571 | }, 572 | "node_modules/fast-json-stable-stringify": { 573 | "version": "2.1.0", 574 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 575 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 576 | "dev": true 577 | }, 578 | "node_modules/fastest-levenshtein": { 579 | "version": "1.0.16", 580 | "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", 581 | "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", 582 | "dev": true, 583 | "engines": { 584 | "node": ">= 4.9.1" 585 | } 586 | }, 587 | "node_modules/find-up": { 588 | "version": "4.1.0", 589 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 590 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 591 | "dev": true, 592 | "dependencies": { 593 | "locate-path": "^5.0.0", 594 | "path-exists": "^4.0.0" 595 | }, 596 | "engines": { 597 | "node": ">=8" 598 | } 599 | }, 600 | "node_modules/function-bind": { 601 | "version": "1.1.1", 602 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 603 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 604 | "dev": true 605 | }, 606 | "node_modules/glob-to-regexp": { 607 | "version": "0.4.1", 608 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 609 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 610 | "dev": true 611 | }, 612 | "node_modules/graceful-fs": { 613 | "version": "4.2.10", 614 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 615 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", 616 | "dev": true 617 | }, 618 | "node_modules/has": { 619 | "version": "1.0.3", 620 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 621 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 622 | "dev": true, 623 | "dependencies": { 624 | "function-bind": "^1.1.1" 625 | }, 626 | "engines": { 627 | "node": ">= 0.4.0" 628 | } 629 | }, 630 | "node_modules/has-flag": { 631 | "version": "4.0.0", 632 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 633 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 634 | "dev": true, 635 | "engines": { 636 | "node": ">=8" 637 | } 638 | }, 639 | "node_modules/import-local": { 640 | "version": "3.1.0", 641 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", 642 | "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", 643 | "dev": true, 644 | "dependencies": { 645 | "pkg-dir": "^4.2.0", 646 | "resolve-cwd": "^3.0.0" 647 | }, 648 | "bin": { 649 | "import-local-fixture": "fixtures/cli.js" 650 | }, 651 | "engines": { 652 | "node": ">=8" 653 | }, 654 | "funding": { 655 | "url": "https://github.com/sponsors/sindresorhus" 656 | } 657 | }, 658 | "node_modules/interpret": { 659 | "version": "3.1.1", 660 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", 661 | "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", 662 | "dev": true, 663 | "engines": { 664 | "node": ">=10.13.0" 665 | } 666 | }, 667 | "node_modules/is-core-module": { 668 | "version": "2.11.0", 669 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 670 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 671 | "dev": true, 672 | "dependencies": { 673 | "has": "^1.0.3" 674 | }, 675 | "funding": { 676 | "url": "https://github.com/sponsors/ljharb" 677 | } 678 | }, 679 | "node_modules/is-plain-object": { 680 | "version": "2.0.4", 681 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 682 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 683 | "dev": true, 684 | "dependencies": { 685 | "isobject": "^3.0.1" 686 | }, 687 | "engines": { 688 | "node": ">=0.10.0" 689 | } 690 | }, 691 | "node_modules/isexe": { 692 | "version": "2.0.0", 693 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 694 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 695 | "dev": true 696 | }, 697 | "node_modules/isobject": { 698 | "version": "3.0.1", 699 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 700 | "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", 701 | "dev": true, 702 | "engines": { 703 | "node": ">=0.10.0" 704 | } 705 | }, 706 | "node_modules/jest-worker": { 707 | "version": "27.5.1", 708 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", 709 | "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", 710 | "dev": true, 711 | "dependencies": { 712 | "@types/node": "*", 713 | "merge-stream": "^2.0.0", 714 | "supports-color": "^8.0.0" 715 | }, 716 | "engines": { 717 | "node": ">= 10.13.0" 718 | } 719 | }, 720 | "node_modules/json-parse-even-better-errors": { 721 | "version": "2.3.1", 722 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 723 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 724 | "dev": true 725 | }, 726 | "node_modules/json-schema-traverse": { 727 | "version": "0.4.1", 728 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 729 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 730 | "dev": true 731 | }, 732 | "node_modules/kind-of": { 733 | "version": "6.0.3", 734 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 735 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 736 | "dev": true, 737 | "engines": { 738 | "node": ">=0.10.0" 739 | } 740 | }, 741 | "node_modules/loader-runner": { 742 | "version": "4.3.0", 743 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", 744 | "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", 745 | "dev": true, 746 | "engines": { 747 | "node": ">=6.11.5" 748 | } 749 | }, 750 | "node_modules/locate-path": { 751 | "version": "5.0.0", 752 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 753 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 754 | "dev": true, 755 | "dependencies": { 756 | "p-locate": "^4.1.0" 757 | }, 758 | "engines": { 759 | "node": ">=8" 760 | } 761 | }, 762 | "node_modules/merge-stream": { 763 | "version": "2.0.0", 764 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 765 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 766 | "dev": true 767 | }, 768 | "node_modules/mime-db": { 769 | "version": "1.52.0", 770 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 771 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 772 | "dev": true, 773 | "engines": { 774 | "node": ">= 0.6" 775 | } 776 | }, 777 | "node_modules/mime-types": { 778 | "version": "2.1.35", 779 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 780 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 781 | "dev": true, 782 | "dependencies": { 783 | "mime-db": "1.52.0" 784 | }, 785 | "engines": { 786 | "node": ">= 0.6" 787 | } 788 | }, 789 | "node_modules/neo-async": { 790 | "version": "2.6.2", 791 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", 792 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", 793 | "dev": true 794 | }, 795 | "node_modules/node-releases": { 796 | "version": "2.0.6", 797 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", 798 | "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", 799 | "dev": true 800 | }, 801 | "node_modules/p-limit": { 802 | "version": "2.3.0", 803 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 804 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 805 | "dev": true, 806 | "dependencies": { 807 | "p-try": "^2.0.0" 808 | }, 809 | "engines": { 810 | "node": ">=6" 811 | }, 812 | "funding": { 813 | "url": "https://github.com/sponsors/sindresorhus" 814 | } 815 | }, 816 | "node_modules/p-locate": { 817 | "version": "4.1.0", 818 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 819 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 820 | "dev": true, 821 | "dependencies": { 822 | "p-limit": "^2.2.0" 823 | }, 824 | "engines": { 825 | "node": ">=8" 826 | } 827 | }, 828 | "node_modules/p-try": { 829 | "version": "2.2.0", 830 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 831 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 832 | "dev": true, 833 | "engines": { 834 | "node": ">=6" 835 | } 836 | }, 837 | "node_modules/path-exists": { 838 | "version": "4.0.0", 839 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 840 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 841 | "dev": true, 842 | "engines": { 843 | "node": ">=8" 844 | } 845 | }, 846 | "node_modules/path-key": { 847 | "version": "3.1.1", 848 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 849 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 850 | "dev": true, 851 | "engines": { 852 | "node": ">=8" 853 | } 854 | }, 855 | "node_modules/path-parse": { 856 | "version": "1.0.7", 857 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 858 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 859 | "dev": true 860 | }, 861 | "node_modules/picocolors": { 862 | "version": "1.0.0", 863 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 864 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 865 | "dev": true 866 | }, 867 | "node_modules/pkg-dir": { 868 | "version": "4.2.0", 869 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 870 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 871 | "dev": true, 872 | "dependencies": { 873 | "find-up": "^4.0.0" 874 | }, 875 | "engines": { 876 | "node": ">=8" 877 | } 878 | }, 879 | "node_modules/punycode": { 880 | "version": "2.1.1", 881 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 882 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 883 | "dev": true, 884 | "engines": { 885 | "node": ">=6" 886 | } 887 | }, 888 | "node_modules/randombytes": { 889 | "version": "2.1.0", 890 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 891 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 892 | "dev": true, 893 | "dependencies": { 894 | "safe-buffer": "^5.1.0" 895 | } 896 | }, 897 | "node_modules/rechoir": { 898 | "version": "0.8.0", 899 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", 900 | "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", 901 | "dev": true, 902 | "dependencies": { 903 | "resolve": "^1.20.0" 904 | }, 905 | "engines": { 906 | "node": ">= 10.13.0" 907 | } 908 | }, 909 | "node_modules/resolve": { 910 | "version": "1.22.1", 911 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 912 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 913 | "dev": true, 914 | "dependencies": { 915 | "is-core-module": "^2.9.0", 916 | "path-parse": "^1.0.7", 917 | "supports-preserve-symlinks-flag": "^1.0.0" 918 | }, 919 | "bin": { 920 | "resolve": "bin/resolve" 921 | }, 922 | "funding": { 923 | "url": "https://github.com/sponsors/ljharb" 924 | } 925 | }, 926 | "node_modules/resolve-cwd": { 927 | "version": "3.0.0", 928 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", 929 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", 930 | "dev": true, 931 | "dependencies": { 932 | "resolve-from": "^5.0.0" 933 | }, 934 | "engines": { 935 | "node": ">=8" 936 | } 937 | }, 938 | "node_modules/resolve-from": { 939 | "version": "5.0.0", 940 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 941 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 942 | "dev": true, 943 | "engines": { 944 | "node": ">=8" 945 | } 946 | }, 947 | "node_modules/safe-buffer": { 948 | "version": "5.2.1", 949 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 950 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 951 | "dev": true, 952 | "funding": [ 953 | { 954 | "type": "github", 955 | "url": "https://github.com/sponsors/feross" 956 | }, 957 | { 958 | "type": "patreon", 959 | "url": "https://www.patreon.com/feross" 960 | }, 961 | { 962 | "type": "consulting", 963 | "url": "https://feross.org/support" 964 | } 965 | ] 966 | }, 967 | "node_modules/schema-utils": { 968 | "version": "3.1.1", 969 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", 970 | "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", 971 | "dev": true, 972 | "dependencies": { 973 | "@types/json-schema": "^7.0.8", 974 | "ajv": "^6.12.5", 975 | "ajv-keywords": "^3.5.2" 976 | }, 977 | "engines": { 978 | "node": ">= 10.13.0" 979 | }, 980 | "funding": { 981 | "type": "opencollective", 982 | "url": "https://opencollective.com/webpack" 983 | } 984 | }, 985 | "node_modules/serialize-javascript": { 986 | "version": "6.0.0", 987 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 988 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 989 | "dev": true, 990 | "dependencies": { 991 | "randombytes": "^2.1.0" 992 | } 993 | }, 994 | "node_modules/shallow-clone": { 995 | "version": "3.0.1", 996 | "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", 997 | "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", 998 | "dev": true, 999 | "dependencies": { 1000 | "kind-of": "^6.0.2" 1001 | }, 1002 | "engines": { 1003 | "node": ">=8" 1004 | } 1005 | }, 1006 | "node_modules/shebang-command": { 1007 | "version": "2.0.0", 1008 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1009 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1010 | "dev": true, 1011 | "dependencies": { 1012 | "shebang-regex": "^3.0.0" 1013 | }, 1014 | "engines": { 1015 | "node": ">=8" 1016 | } 1017 | }, 1018 | "node_modules/shebang-regex": { 1019 | "version": "3.0.0", 1020 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1021 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1022 | "dev": true, 1023 | "engines": { 1024 | "node": ">=8" 1025 | } 1026 | }, 1027 | "node_modules/source-map": { 1028 | "version": "0.6.1", 1029 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1030 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1031 | "dev": true, 1032 | "engines": { 1033 | "node": ">=0.10.0" 1034 | } 1035 | }, 1036 | "node_modules/source-map-support": { 1037 | "version": "0.5.21", 1038 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 1039 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 1040 | "dev": true, 1041 | "dependencies": { 1042 | "buffer-from": "^1.0.0", 1043 | "source-map": "^0.6.0" 1044 | } 1045 | }, 1046 | "node_modules/supports-color": { 1047 | "version": "8.1.1", 1048 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1049 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1050 | "dev": true, 1051 | "dependencies": { 1052 | "has-flag": "^4.0.0" 1053 | }, 1054 | "engines": { 1055 | "node": ">=10" 1056 | }, 1057 | "funding": { 1058 | "url": "https://github.com/chalk/supports-color?sponsor=1" 1059 | } 1060 | }, 1061 | "node_modules/supports-preserve-symlinks-flag": { 1062 | "version": "1.0.0", 1063 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1064 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1065 | "dev": true, 1066 | "engines": { 1067 | "node": ">= 0.4" 1068 | }, 1069 | "funding": { 1070 | "url": "https://github.com/sponsors/ljharb" 1071 | } 1072 | }, 1073 | "node_modules/tapable": { 1074 | "version": "2.2.1", 1075 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", 1076 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", 1077 | "dev": true, 1078 | "engines": { 1079 | "node": ">=6" 1080 | } 1081 | }, 1082 | "node_modules/terser": { 1083 | "version": "5.15.1", 1084 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", 1085 | "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", 1086 | "dev": true, 1087 | "dependencies": { 1088 | "@jridgewell/source-map": "^0.3.2", 1089 | "acorn": "^8.5.0", 1090 | "commander": "^2.20.0", 1091 | "source-map-support": "~0.5.20" 1092 | }, 1093 | "bin": { 1094 | "terser": "bin/terser" 1095 | }, 1096 | "engines": { 1097 | "node": ">=10" 1098 | } 1099 | }, 1100 | "node_modules/terser-webpack-plugin": { 1101 | "version": "5.3.6", 1102 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", 1103 | "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", 1104 | "dev": true, 1105 | "dependencies": { 1106 | "@jridgewell/trace-mapping": "^0.3.14", 1107 | "jest-worker": "^27.4.5", 1108 | "schema-utils": "^3.1.1", 1109 | "serialize-javascript": "^6.0.0", 1110 | "terser": "^5.14.1" 1111 | }, 1112 | "engines": { 1113 | "node": ">= 10.13.0" 1114 | }, 1115 | "funding": { 1116 | "type": "opencollective", 1117 | "url": "https://opencollective.com/webpack" 1118 | }, 1119 | "peerDependencies": { 1120 | "webpack": "^5.1.0" 1121 | }, 1122 | "peerDependenciesMeta": { 1123 | "@swc/core": { 1124 | "optional": true 1125 | }, 1126 | "esbuild": { 1127 | "optional": true 1128 | }, 1129 | "uglify-js": { 1130 | "optional": true 1131 | } 1132 | } 1133 | }, 1134 | "node_modules/update-browserslist-db": { 1135 | "version": "1.0.10", 1136 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", 1137 | "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", 1138 | "dev": true, 1139 | "funding": [ 1140 | { 1141 | "type": "opencollective", 1142 | "url": "https://opencollective.com/browserslist" 1143 | }, 1144 | { 1145 | "type": "tidelift", 1146 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1147 | } 1148 | ], 1149 | "dependencies": { 1150 | "escalade": "^3.1.1", 1151 | "picocolors": "^1.0.0" 1152 | }, 1153 | "bin": { 1154 | "browserslist-lint": "cli.js" 1155 | }, 1156 | "peerDependencies": { 1157 | "browserslist": ">= 4.21.0" 1158 | } 1159 | }, 1160 | "node_modules/uri-js": { 1161 | "version": "4.4.1", 1162 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1163 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1164 | "dev": true, 1165 | "dependencies": { 1166 | "punycode": "^2.1.0" 1167 | } 1168 | }, 1169 | "node_modules/watchpack": { 1170 | "version": "2.4.0", 1171 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", 1172 | "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", 1173 | "dev": true, 1174 | "dependencies": { 1175 | "glob-to-regexp": "^0.4.1", 1176 | "graceful-fs": "^4.1.2" 1177 | }, 1178 | "engines": { 1179 | "node": ">=10.13.0" 1180 | } 1181 | }, 1182 | "node_modules/webpack": { 1183 | "version": "5.75.0", 1184 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", 1185 | "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", 1186 | "dev": true, 1187 | "dependencies": { 1188 | "@types/eslint-scope": "^3.7.3", 1189 | "@types/estree": "^0.0.51", 1190 | "@webassemblyjs/ast": "1.11.1", 1191 | "@webassemblyjs/wasm-edit": "1.11.1", 1192 | "@webassemblyjs/wasm-parser": "1.11.1", 1193 | "acorn": "^8.7.1", 1194 | "acorn-import-assertions": "^1.7.6", 1195 | "browserslist": "^4.14.5", 1196 | "chrome-trace-event": "^1.0.2", 1197 | "enhanced-resolve": "^5.10.0", 1198 | "es-module-lexer": "^0.9.0", 1199 | "eslint-scope": "5.1.1", 1200 | "events": "^3.2.0", 1201 | "glob-to-regexp": "^0.4.1", 1202 | "graceful-fs": "^4.2.9", 1203 | "json-parse-even-better-errors": "^2.3.1", 1204 | "loader-runner": "^4.2.0", 1205 | "mime-types": "^2.1.27", 1206 | "neo-async": "^2.6.2", 1207 | "schema-utils": "^3.1.0", 1208 | "tapable": "^2.1.1", 1209 | "terser-webpack-plugin": "^5.1.3", 1210 | "watchpack": "^2.4.0", 1211 | "webpack-sources": "^3.2.3" 1212 | }, 1213 | "bin": { 1214 | "webpack": "bin/webpack.js" 1215 | }, 1216 | "engines": { 1217 | "node": ">=10.13.0" 1218 | }, 1219 | "funding": { 1220 | "type": "opencollective", 1221 | "url": "https://opencollective.com/webpack" 1222 | }, 1223 | "peerDependenciesMeta": { 1224 | "webpack-cli": { 1225 | "optional": true 1226 | } 1227 | } 1228 | }, 1229 | "node_modules/webpack-cli": { 1230 | "version": "5.0.0", 1231 | "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.0.tgz", 1232 | "integrity": "sha512-AACDTo20yG+xn6HPW5xjbn2Be4KUzQPebWXsDMHwPPyKh9OnTOJgZN2Nc+g/FZKV3ObRTYsGvibAvc+5jAUrVA==", 1233 | "dev": true, 1234 | "dependencies": { 1235 | "@discoveryjs/json-ext": "^0.5.0", 1236 | "@webpack-cli/configtest": "^2.0.0", 1237 | "@webpack-cli/info": "^2.0.0", 1238 | "@webpack-cli/serve": "^2.0.0", 1239 | "colorette": "^2.0.14", 1240 | "commander": "^9.4.1", 1241 | "cross-spawn": "^7.0.3", 1242 | "envinfo": "^7.7.3", 1243 | "fastest-levenshtein": "^1.0.12", 1244 | "import-local": "^3.0.2", 1245 | "interpret": "^3.1.1", 1246 | "rechoir": "^0.8.0", 1247 | "webpack-merge": "^5.7.3" 1248 | }, 1249 | "bin": { 1250 | "webpack-cli": "bin/cli.js" 1251 | }, 1252 | "engines": { 1253 | "node": ">=14.15.0" 1254 | }, 1255 | "funding": { 1256 | "type": "opencollective", 1257 | "url": "https://opencollective.com/webpack" 1258 | }, 1259 | "peerDependencies": { 1260 | "webpack": "5.x.x" 1261 | }, 1262 | "peerDependenciesMeta": { 1263 | "@webpack-cli/generators": { 1264 | "optional": true 1265 | }, 1266 | "webpack-bundle-analyzer": { 1267 | "optional": true 1268 | }, 1269 | "webpack-dev-server": { 1270 | "optional": true 1271 | } 1272 | } 1273 | }, 1274 | "node_modules/webpack-cli/node_modules/commander": { 1275 | "version": "9.4.1", 1276 | "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", 1277 | "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", 1278 | "dev": true, 1279 | "engines": { 1280 | "node": "^12.20.0 || >=14" 1281 | } 1282 | }, 1283 | "node_modules/webpack-merge": { 1284 | "version": "5.8.0", 1285 | "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", 1286 | "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", 1287 | "dev": true, 1288 | "dependencies": { 1289 | "clone-deep": "^4.0.1", 1290 | "wildcard": "^2.0.0" 1291 | }, 1292 | "engines": { 1293 | "node": ">=10.0.0" 1294 | } 1295 | }, 1296 | "node_modules/webpack-sources": { 1297 | "version": "3.2.3", 1298 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", 1299 | "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", 1300 | "dev": true, 1301 | "engines": { 1302 | "node": ">=10.13.0" 1303 | } 1304 | }, 1305 | "node_modules/which": { 1306 | "version": "2.0.2", 1307 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1308 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1309 | "dev": true, 1310 | "dependencies": { 1311 | "isexe": "^2.0.0" 1312 | }, 1313 | "bin": { 1314 | "node-which": "bin/node-which" 1315 | }, 1316 | "engines": { 1317 | "node": ">= 8" 1318 | } 1319 | }, 1320 | "node_modules/wildcard": { 1321 | "version": "2.0.0", 1322 | "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", 1323 | "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", 1324 | "dev": true 1325 | } 1326 | } 1327 | } 1328 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lyra-codec", 3 | "version": "1.1.1", 4 | "description": "A library that allows the Lyra neural codec to be used on web browsers.", 5 | "main": "src/lyra.js", 6 | "scripts": { 7 | "build": "webpack", 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "files": [ 11 | "dist", "src" 12 | ], 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/neuvideo/lyra-js.git" 16 | }, 17 | "keywords": [ 18 | "neural-codec" 19 | ], 20 | "author": "", 21 | "license": "ISC", 22 | "bugs": { 23 | "url": "https://github.com/neuvideo/lyra-js/issues" 24 | }, 25 | "homepage": "https://github.com/neuvideo/lyra-js#readme", 26 | "devDependencies": { 27 | "webpack": "^5.75.0", 28 | "webpack-cli": "^5.0.0" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/lyra.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import Module from './wasm/webassembly_codec_wrapper.js'; 4 | 5 | let lyraModule; 6 | Module().then((module) => { 7 | console.log("Initialized Lyra's wasmModule."); 8 | lyraModule = module; 9 | }).catch(e => { 10 | console.log(`Module() error: ${e.name} message: ${e.message}`); 11 | }); 12 | 13 | // Inputs: 14 | // inputArray: Float32Array containing input audio data. 15 | // sample_rate_hz: sample rate of the input audio data. 16 | // Requires at least 0.02 * sample_rate_hz samples in inputArray, which is 17 | // 20ms of audio. This is the internal frame rate of Lyra (v1.3). 18 | // Returns: 19 | // A Uint8Array containing the encoded audio data. 20 | function encodeWithLyra(inputArray, sample_rate_hz) { 21 | if (inputArray.length < sample_rate_hz * 0.02) { 22 | console.log("Not enough audio data to encode. Need at least " + sample_rate_hz * 0.02 + " samples."); 23 | return new Uint8Array(); 24 | } 25 | 26 | // Allocate memory for the input and output buffers. 27 | const num_samples = inputArray.length; 28 | const input_ptr = lyraModule._malloc(num_samples * Float32Array.BYTES_PER_ELEMENT); 29 | const output_ptr = lyraModule._malloc(num_samples * Uint8Array.BYTES_PER_ELEMENT); 30 | let outputArray = new Uint8Array(lyraModule.HEAPU8.buffer, output_ptr, num_samples); 31 | 32 | // Copy the input data to the input buffer. 33 | const start_offset = input_ptr / Float32Array.BYTES_PER_ELEMENT; 34 | lyraModule.HEAPF32.subarray(start_offset, start_offset + num_samples).set(inputArray); 35 | 36 | // Encode the audio data. 37 | const num_encoded_samples = lyraModule.encodeWithLyra(input_ptr, num_samples, sample_rate_hz, output_ptr); 38 | 39 | // Copy the encoded audio data to the output buffer. 40 | outputArray = outputArray.slice(0, num_encoded_samples); 41 | 42 | // Free the memory allocated for the input and output buffers. 43 | lyraModule._free(input_ptr); 44 | lyraModule._free(output_ptr); 45 | 46 | return outputArray; 47 | } 48 | 49 | // Inputs: 50 | // inputArray: Uint8Array containing encoded audio. This is audio data that has been encoded with Lyra. 51 | // sample_rate_hz: sample rate of the input audio data. 52 | // expected_num_decoded_samples: the expected number of samples in the decoded audio data. 53 | // Returns: 54 | // A Float32Array containing the decoded audio data. 55 | function decodeWithLyra(inputArray, sample_rate_hz, expected_num_decoded_samples) { 56 | // Allocate memory for the input and output buffers. 57 | const num_samples = inputArray.length; 58 | const input_ptr = lyraModule._malloc(num_samples * Uint8Array.BYTES_PER_ELEMENT); 59 | const output_ptr = lyraModule._malloc(expected_num_decoded_samples * Float32Array.BYTES_PER_ELEMENT); 60 | let outputArray = new Float32Array(lyraModule.HEAPF32.buffer, output_ptr, expected_num_decoded_samples); 61 | 62 | // Copy the input data to the input buffer. 63 | const start_offset = input_ptr / Uint8Array.BYTES_PER_ELEMENT; 64 | lyraModule.HEAPU8.subarray(start_offset, start_offset + num_samples).set(inputArray) 65 | 66 | // Decode the audio data. 67 | const num_decoded_samples = lyraModule.decodeWithLyra(input_ptr, num_samples, sample_rate_hz, output_ptr); 68 | 69 | // Copy the decoded audio data to the output buffer. 70 | outputArray = outputArray.slice(0, num_decoded_samples); 71 | 72 | // Free the memory allocated for the input and output buffers. 73 | lyraModule._free(input_ptr); 74 | lyraModule._free(output_ptr); 75 | 76 | return outputArray; 77 | } 78 | 79 | function isLyraReady() { 80 | return lyraModule !== undefined && lyraModule.isCodecReady(); 81 | } 82 | 83 | export {isLyraReady, encodeWithLyra, decodeWithLyra}; -------------------------------------------------------------------------------- /src/wasm/webassembly_codec_wrapper.js: -------------------------------------------------------------------------------- 1 | 2 | var Module = (function() { 3 | var _scriptDir = import.meta.url; 4 | 5 | return ( 6 | function(Module) { 7 | Module = Module || {}; 8 | 9 | function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU16}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof Module!=="undefined"?Module:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function TextDecoderWrapper(encoding){var textDecoder=new TextDecoder(encoding);this.decode=function(data){if(data.buffer instanceof SharedArrayBuffer){data=new Uint8Array(data)}return textDecoder.decode.call(textDecoder,data)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoderWrapper("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoderWrapper("utf-16le"):undefined;function UTF16ToString(ptr,maxBytesToRead){var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&GROWABLE_HEAP_U16()[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(GROWABLE_HEAP_U8().subarray(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=GROWABLE_HEAP_I16()[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}GROWABLE_HEAP_I16()[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=GROWABLE_HEAP_I32()[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}GROWABLE_HEAP_I32()[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}GROWABLE_HEAP_I32()[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,GROWABLE_HEAP_I8(),ret,size);return ret}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)GROWABLE_HEAP_I8()[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;if(ENVIRONMENT_IS_PTHREAD){buffer=Module["buffer"]}function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"];buffer=Module["buffer"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":2147483648/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)")}throw Error("bad memory")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){if(ENVIRONMENT_IS_PTHREAD)return;PThread.terminateAllThreads();runtimeExited=true}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(ENVIRONMENT_IS_PTHREAD){postMessage({"cmd":"onAbort","arg":what})}else{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="webassembly_codec_wrapper.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("webassembly_codec_wrapper.wasm",import.meta.url).toString()}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;registerTlsInit(Module["asm"]["ga"]);wasmTable=Module["asm"]["ba"];addOnInit(Module["asm"]["$"]);wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){removeRunDependency("wasm-instantiate")}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency("wasm-instantiate")}function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var ASM_CONSTS={};function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}Module["callRuntimeCallbacks"]=callRuntimeCallbacks;function demangle(func){return func}Module["demangle"]=demangle;function demangleAll(text){var regex=/\b_Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}Module["demangleAll"]=demangleAll;function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw"Atomics.notify returned an unexpected value "+ret}Module["_emscripten_futex_wake"]=_emscripten_futex_wake;function killThread(pthread_ptr){GROWABLE_HEAP_I32()[pthread_ptr+8>>2]=0;var pthread=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];pthread.worker.terminate();freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}Module["killThread"]=killThread;function cancelThread(pthread_ptr){var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({"cmd":"cancel"})}Module["cancelThread"]=cancelThread;function cleanupThread(pthread_ptr){var pthread=PThread.pthreads[pthread_ptr];if(pthread){GROWABLE_HEAP_I32()[pthread_ptr+8>>2]=0;var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}Module["cleanupThread"]=cleanupThread;function freeThreadData(pthread){if(!pthread)return;if(pthread.threadInfoStruct){_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null}Module["freeThreadData"]=freeThreadData;function _exit(status){exit(status)}Module["_exit"]=_exit;function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}Module["handleException"]=handleException;var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],initMainThreadBlock:function(){},initWorker:function(){},pthreads:{},threadExitHandlers:[],setExitStatus:function(status){EXITSTATUS=status},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}for(var i=0;i>2]=0;try{func()}finally{GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=1}},receiveObjectTransfer:function(data){},threadInit:function(){for(var i in PThread.tlsInitFunctions){PThread.tlsInitFunctions[i]()}},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e["data"];var cmd=d["cmd"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(d,d["transferList"])}else{err('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d["targetThread"]+", but that thread no longer exists!")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd==="processQueuedMainThreadWork"){_emscripten_main_thread_process_queued_calls()}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd==="print"){out("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="printErr"){err("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="alert"){alert("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="detachedExit"){PThread.returnWorkerToPool(worker)}else if(cmd==="cancelDone"){PThread.returnWorkerToPool(worker)}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="onAbort"){if(Module["onAbort"]){Module["onAbort"](d["arg"])}}else{err("worker sent an unknown command "+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message);throw e};worker.postMessage({"cmd":"load","urlOrBlob":Module["mainScriptUrlOrBlob"],"wasmMemory":wasmMemory,"wasmModule":wasmModule})},allocateUnusedWorker:function(){if(!Module["locateFile"]){PThread.unusedWorkers.push(new Worker(new URL("webassembly_codec_wrapper.worker.js",import.meta.url)));return}var pthreadMainJs=locateFile("webassembly_codec_wrapper.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;function establishStackSpace(stackTop,stackMax){_emscripten_stack_set_limits(stackTop,stackMax);stackRestore(stackTop)}Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,0,returnCode);try{_exit(returnCode)}catch(e){handleException(e)}}Module["exitOnMainThread"]=exitOnMainThread;function invokeEntryPoint(ptr,arg){return wasmTable.get(ptr)(arg)}Module["invokeEntryPoint"]=invokeEntryPoint;function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return"(no stack trace available)"}}return error.stack.toString()}Module["jsStackTrace"]=jsStackTrace;function registerTlsInit(tlsInitFunc,moduleExports,metadata){PThread.tlsInitFunctions.push(tlsInitFunc)}Module["registerTlsInit"]=registerTlsInit;function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}Module["stackTrace"]=stackTrace;function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}Module["___assert_fail"]=___assert_fail;var _emscripten_get_now;if(ENVIRONMENT_IS_PTHREAD){_emscripten_get_now=function(){return performance.now()-Module["__performance_now_clock_drift"]}}else _emscripten_get_now=function(){return performance.now()};Module["_emscripten_get_now"]=_emscripten_get_now;var _emscripten_get_now_is_monotonic=true;Module["_emscripten_get_now_is_monotonic"]=_emscripten_get_now_is_monotonic;function setErrNo(value){GROWABLE_HEAP_I32()[___errno_location()>>2]=value;return value}Module["setErrNo"]=setErrNo;function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}GROWABLE_HEAP_I32()[tp>>2]=now/1e3|0;GROWABLE_HEAP_I32()[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}Module["_clock_gettime"]=_clock_gettime;function ___clock_gettime(a0,a1){return _clock_gettime(a0,a1)}Module["___clock_gettime"]=___clock_gettime;function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,func,arg)}Module["_atexit"]=_atexit;function ___cxa_atexit(a0,a1){return _atexit(a0,a1)}Module["___cxa_atexit"]=___cxa_atexit;function ___cxa_thread_atexit(routine,arg){PThread.threadExitHandlers.push(function(){wasmTable.get(routine)(arg)})}Module["___cxa_thread_atexit"]=___cxa_thread_atexit;function ___emscripten_init_main_thread_js(tb){__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1);PThread.threadInit()}Module["___emscripten_init_main_thread_js"]=___emscripten_init_main_thread_js;function spawnThread(threadParams){var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(60>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(76>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(72>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(100>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(100+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(100+12>>2),threadParams.detached);worker.pthread=pthread;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"threadInfoStruct":threadParams.pthread_ptr,"stackBase":threadParams.stackBase,"stackSize":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}return 0}Module["spawnThread"]=spawnThread;function ___pthread_create_js(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer==="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;if(attr&&attr!=-1){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=2097152;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,detached:detached,startRoutine:start_routine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)}Module["___pthread_create_js"]=___pthread_create_js;function ___pthread_detached_exit(){postMessage({"cmd":"detachedExit"})}Module["___pthread_detached_exit"]=___pthread_detached_exit;function ___pthread_exit_run_handlers(status){while(PThread.threadExitHandlers.length>0){PThread.threadExitHandlers.pop()()}}Module["___pthread_exit_run_handlers"]=___pthread_exit_run_handlers;function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(!ENVIRONMENT_IS_WEB){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret==="timed-out")return-73;if(ret==="not-equal")return-6;if(ret==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ret}else{if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}var tNow=performance.now();var tEnd=tNow+timeout;var lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr);while(1){tNow=performance.now();if(tNow>tEnd){lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);return-73}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);if(lastAddr==0){break}_emscripten_main_thread_process_queued_calls();if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr)}return 0}}Module["_emscripten_futex_wait"]=_emscripten_futex_wait;function _emscripten_check_blocking_allowed(){if(ENVIRONMENT_IS_WORKER)return;warnOnce("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}Module["_emscripten_check_blocking_allowed"]=_emscripten_check_blocking_allowed;function __emscripten_do_pthread_join(thread,status,block){if(!thread){err("pthread_join attempted on a null thread pointer!");return 71}if(ENVIRONMENT_IS_PTHREAD&&_pthread_self()==thread){err("PThread "+thread+" is attempting to join to itself!");return 16}else if(!ENVIRONMENT_IS_PTHREAD&&_emscripten_main_browser_thread_id()==thread){err("Main thread "+thread+" is attempting to join to itself!");return 16}var self=GROWABLE_HEAP_I32()[thread+8>>2];if(self!==thread){err("pthread_join attempted on thread "+thread+", which does not point to a valid thread, or does not exist anymore!");return 71}var detached=Atomics.load(GROWABLE_HEAP_U32(),thread+60>>2);if(detached){err("Attempted to join thread "+thread+", which was already detached!");return 28}if(block){_emscripten_check_blocking_allowed()}for(;;){var threadStatus=Atomics.load(GROWABLE_HEAP_U32(),thread+0>>2);if(threadStatus==1){if(status){var result=Atomics.load(GROWABLE_HEAP_U32(),thread+88>>2);GROWABLE_HEAP_I32()[status>>2]=result}Atomics.store(GROWABLE_HEAP_U32(),thread+60>>2,1);if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread});return 0}if(!block){return 10}_pthread_testcancel();if(!ENVIRONMENT_IS_PTHREAD)_emscripten_main_thread_process_queued_calls();_emscripten_futex_wait(thread+0,threadStatus,ENVIRONMENT_IS_PTHREAD?100:1)}}Module["__emscripten_do_pthread_join"]=__emscripten_do_pthread_join;function ___pthread_join_js(thread,status){return __emscripten_do_pthread_join(thread,status,true)}Module["___pthread_join_js"]=___pthread_join_js;var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};Module["PATH"]=PATH;function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else return function(){abort("randomDevice")}}Module["getRandomDevice"]=getRandomDevice;var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};Module["TTY"]=TTY;function zeroMemory(address,size){GROWABLE_HEAP_U8().fill(0,address,address+size)}Module["zeroMemory"]=zeroMemory;function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}Module["alignMemory"]=alignMemory;function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}Module["mmapAlloc"]=mmapAlloc;var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;GROWABLE_HEAP_I32()[buf+4>>2]=0;GROWABLE_HEAP_I32()[buf+8>>2]=stat.ino;GROWABLE_HEAP_I32()[buf+12>>2]=stat.mode;GROWABLE_HEAP_I32()[buf+16>>2]=stat.nlink;GROWABLE_HEAP_I32()[buf+20>>2]=stat.uid;GROWABLE_HEAP_I32()[buf+24>>2]=stat.gid;GROWABLE_HEAP_I32()[buf+28>>2]=stat.rdev;GROWABLE_HEAP_I32()[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+40>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+44>>2]=tempI64[1];GROWABLE_HEAP_I32()[buf+48>>2]=4096;GROWABLE_HEAP_I32()[buf+52>>2]=stat.blocks;GROWABLE_HEAP_I32()[buf+56>>2]=stat.atime.getTime()/1e3|0;GROWABLE_HEAP_I32()[buf+60>>2]=0;GROWABLE_HEAP_I32()[buf+64>>2]=stat.mtime.getTime()/1e3|0;GROWABLE_HEAP_I32()[buf+68>>2]=0;GROWABLE_HEAP_I32()[buf+72>>2]=stat.ctime.getTime()/1e3|0;GROWABLE_HEAP_I32()[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[buf+80>>2]=tempI64[0],GROWABLE_HEAP_I32()[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=GROWABLE_HEAP_U8().slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=GROWABLE_HEAP_I8()[buf+len];stringToUTF8(ret,buf,bufsize+1);GROWABLE_HEAP_I8()[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];var curr=FS.read(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];var curr=FS.write(stream,GROWABLE_HEAP_I8(),ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};Module["SYSCALLS"]=SYSCALLS;function syscallMmap2(addr,len,prot,flags,fd,off){off<<=12;var ptr;var allocated=false;if((flags&16)!==0&&addr%65536!==0){return-28}if((flags&32)!==0){ptr=mmapAlloc(len);if(!ptr)return-48;allocated=true}else{var info=FS.getStream(fd);if(!info)return-8;var res=FS.mmap(info,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,prot:prot,flags:flags,offset:off};return ptr}Module["syscallMmap2"]=syscallMmap2;function ___sys_mmap2(addr,len,prot,flags,fd,off){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,addr,len,prot,flags,fd,off);try{return syscallMmap2(addr,len,prot,flags,fd,off)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module["___sys_mmap2"]=___sys_mmap2;function syscallMunmap(addr,len){var info=SYSCALLS.mappings[addr];if(len===0||!info){return-28}if(len===info.len){var stream=FS.getStream(info.fd);if(stream){if(info.prot&2){SYSCALLS.doMsync(addr,stream,len,info.flags,info.offset)}FS.munmap(stream)}SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}Module["syscallMunmap"]=syscallMunmap;function ___sys_munmap(addr,len){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,addr,len);try{return syscallMunmap(addr,len)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module["___sys_munmap"]=___sys_munmap;function ___sys_open(path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,path,flags,varargs);SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module["___sys_open"]=___sys_open;function __dlopen_js(filename,flag){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}Module["__dlopen_js"]=__dlopen_js;function __dlsym_js(handle,symbol){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}Module["__dlsym_js"]=__dlsym_js;function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}Module["__embind_register_bigint"]=__embind_register_bigint;function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}Module["getShiftFromSize"]=getShiftFromSize;function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}Module["embind_init_charCodes"]=embind_init_charCodes;var embind_charCodes=undefined;Module["embind_charCodes"]=embind_charCodes;function readLatin1String(ptr){var ret="";var c=ptr;while(GROWABLE_HEAP_U8()[c]){ret+=embind_charCodes[GROWABLE_HEAP_U8()[c++]]}return ret}Module["readLatin1String"]=readLatin1String;var awaitingDependencies={};Module["awaitingDependencies"]=awaitingDependencies;var registeredTypes={};Module["registeredTypes"]=registeredTypes;var typeDependencies={};Module["typeDependencies"]=typeDependencies;var char_0=48;Module["char_0"]=char_0;var char_9=57;Module["char_9"]=char_9;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}else{return name}}Module["makeLegalFunctionName"]=makeLegalFunctionName;function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}Module["createNamedFunction"]=createNamedFunction;function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}Module["extendError"]=extendError;var BindingError=undefined;Module["BindingError"]=BindingError;function throwBindingError(message){throw new BindingError(message)}Module["throwBindingError"]=throwBindingError;var InternalError=undefined;Module["InternalError"]=InternalError;function throwInternalError(message){throw new InternalError(message)}Module["throwInternalError"]=throwInternalError;function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i>shift])},destructorFunction:null})}Module["__embind_register_bool"]=__embind_register_bool;var emval_free_list=[];Module["emval_free_list"]=emval_free_list;var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];Module["emval_handle_array"]=emval_handle_array;function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}Module["__emval_decref"]=__emval_decref;function count_emval_handles(){var count=0;for(var i=5;i>2])}Module["simpleReadValueFromPointer"]=simpleReadValueFromPointer;function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=emval_handle_array[handle].value;__emval_decref(handle);return rv},"toWireType":function(destructors,value){return __emval_register(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}Module["__embind_register_emval"]=__embind_register_emval;function _embind_repr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}Module["_embind_repr"]=_embind_repr;function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F32()[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F64()[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}Module["floatReadValueFromPointer"]=floatReadValueFromPointer;function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}Module["__embind_register_float"]=__embind_register_float;function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}Module["new_"]=new_;function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}Module["runDestructors"]=runDestructors;function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i>2)+i])}return array}Module["heap32VectorToArray"]=heap32VectorToArray;function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}Module["replacePublicSymbol"]=replacePublicSymbol;function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}Module["dynCallLegacy"]=dynCallLegacy;function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}return wasmTable.get(ptr).apply(null,args)}Module["dynCall"]=dynCall;function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=arguments.length;for(var i=0;i>1]}:function readU16FromPointer(pointer){return GROWABLE_HEAP_U16()[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return GROWABLE_HEAP_I32()[pointer>>2]}:function readU32FromPointer(pointer){return GROWABLE_HEAP_U32()[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}Module["integerReadValueFromPointer"]=integerReadValueFromPointer;function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=function(value){return value};if(minRange===0){var bitshift=32-8*size;fromWireType=function(value){return value<>>bitshift}}var isUnsignedType=name.includes("unsigned");registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":function(destructors,value){if(typeof value!=="number"&&typeof value!=="boolean"){throw new TypeError('Cannot convert "'+_embind_repr(value)+'" to '+this.name)}if(valuemaxRange){throw new TypeError('Passing a number "'+_embind_repr(value)+'" from JS side to C/C++ side to an argument of type "'+name+'", which is outside the valid range ['+minRange+", "+maxRange+"]!")}return isUnsignedType?value>>>0:value|0},"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}Module["__embind_register_integer"]=__embind_register_integer;function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=GROWABLE_HEAP_U32();var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}Module["__embind_register_memory_view"]=__embind_register_memory_view;function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=GROWABLE_HEAP_U32()[value>>2];var str;if(stdStringIsUTF8){var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i;if(i==length||GROWABLE_HEAP_U8()[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr+4,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}GROWABLE_HEAP_U8()[ptr+4+i]=charCode}}else{for(var i=0;i>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value==="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);GROWABLE_HEAP_U32()[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}Module["__embind_register_std_wstring"]=__embind_register_std_wstring;function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}Module["__embind_register_void"]=__embind_register_void;function __emscripten_fetch_free(id){delete Fetch.xhrs[id-1]}Module["__emscripten_fetch_free"]=__emscripten_fetch_free;function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({"cmd":"processQueuedMainThreadWork"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"processThreadQueue"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({"cmd":"processThreadQueue"})}return 1}Module["__emscripten_notify_thread_queue"]=__emscripten_notify_thread_queue;function _abort(){abort("")}Module["_abort"]=_abort;function _emscripten_conditional_set_current_thread_status_js(expectedStatus,newStatus){}Module["_emscripten_conditional_set_current_thread_status_js"]=_emscripten_conditional_set_current_thread_status_js;function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){}Module["_emscripten_conditional_set_current_thread_status"]=_emscripten_conditional_set_current_thread_status;function _emscripten_get_heap_max(){return 2147483648}Module["_emscripten_get_heap_max"]=_emscripten_get_heap_max;function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}Module["_emscripten_memcpy_big"]=_emscripten_memcpy_big;function _emscripten_num_logical_cores(){return navigator["hardwareConcurrency"]}Module["_emscripten_num_logical_cores"]=_emscripten_num_logical_cores;function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}Module["emscripten_realloc_buffer"]=emscripten_realloc_buffer;function _emscripten_resize_heap(requestedSize){var oldSize=GROWABLE_HEAP_U8().length;requestedSize=requestedSize>>>0;if(requestedSize<=oldSize){return false}var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}Module["_emscripten_resize_heap"]=_emscripten_resize_heap;var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;__emscripten_call_on_thread(0,targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};Module["JSEvents"]=JSEvents;function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}Module["stringToNewUTF8"]=stringToNewUTF8;function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;__emscripten_call_on_thread(0,targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}Module["_emscripten_set_offscreencanvas_size_on_target_thread_js"]=_emscripten_set_offscreencanvas_size_on_target_thread_js;function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):"";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}Module["_emscripten_set_offscreencanvas_size_on_target_thread"]=_emscripten_set_offscreencanvas_size_on_target_thread;function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}Module["maybeCStringToJsString"]=maybeCStringToJsString;var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];Module["specialHTMLTargets"]=specialHTMLTargets;function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}Module["findEventTarget"]=findEventTarget;function findCanvasEventTarget(target){return findEventTarget(target)}Module["findCanvasEventTarget"]=findCanvasEventTarget;function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}Module["_emscripten_set_canvas_element_size_calling_thread"]=_emscripten_set_canvas_element_size_calling_thread;function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}Module["_emscripten_set_canvas_element_size_main_thread"]=_emscripten_set_canvas_element_size_main_thread;function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}Module["_emscripten_set_canvas_element_size"]=_emscripten_set_canvas_element_size;function _emscripten_set_current_thread_status_js(newStatus){}Module["_emscripten_set_current_thread_status_js"]=_emscripten_set_current_thread_status_js;function _emscripten_set_current_thread_status(newStatus){}Module["_emscripten_set_current_thread_status"]=_emscripten_set_current_thread_status;function maybeExit(){if(!keepRuntimeAlive()){try{if(ENVIRONMENT_IS_PTHREAD)__emscripten_thread_exit(EXITSTATUS);else _exit(EXITSTATUS)}catch(e){handleException(e)}}}Module["maybeExit"]=maybeExit;function callUserCallback(func,synchronous){if(ABORT){return}if(synchronous){func();return}try{func();if(ENVIRONMENT_IS_PTHREAD)maybeExit()}catch(e){handleException(e)}}Module["callUserCallback"]=callUserCallback;function runtimeKeepalivePush(){runtimeKeepaliveCounter+=1}Module["runtimeKeepalivePush"]=runtimeKeepalivePush;function runtimeKeepalivePop(){runtimeKeepaliveCounter-=1}Module["runtimeKeepalivePop"]=runtimeKeepalivePop;function _emscripten_set_timeout(cb,msecs,userData){runtimeKeepalivePush();return setTimeout(function(){runtimeKeepalivePop();callUserCallback(function(){wasmTable.get(cb)(userData)})},msecs)}Module["_emscripten_set_timeout"]=_emscripten_set_timeout;var Fetch={xhrs:[],setu64:function(addr,val){GROWABLE_HEAP_U32()[addr>>2]=val;GROWABLE_HEAP_U32()[addr+4>>2]=val/4294967296|0},openDatabase:function(dbname,dbversion,onsuccess,onerror){try{var openRequest=indexedDB.open(dbname,dbversion)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function(event){var db=event.target.result;if(db.objectStoreNames.contains("FILES")){db.deleteObjectStore("FILES")}db.createObjectStore("FILES")};openRequest.onsuccess=function(event){onsuccess(event.target.result)};openRequest.onerror=function(error){onerror(error)}},staticInit:function(){var isMainThread=true;var onsuccess=function(db){Fetch.dbInstance=db;if(isMainThread){removeRunDependency("library_fetch_init")}};var onerror=function(){Fetch.dbInstance=false;if(isMainThread){removeRunDependency("library_fetch_init")}};Fetch.openDatabase("emscripten_filesystem",1,onsuccess,onerror);if(typeof ENVIRONMENT_IS_FETCH_WORKER==="undefined"||!ENVIRONMENT_IS_FETCH_WORKER)addRunDependency("library_fetch_init")}};Module["Fetch"]=Fetch;function fetchXHR(fetch,onsuccess,onerror,onprogress,onreadystatechange){var url=GROWABLE_HEAP_U32()[fetch+8>>2];if(!url){onerror(fetch,0,"no url specified!");return}var url_=UTF8ToString(url);var fetch_attr=fetch+112;var requestMethod=UTF8ToString(fetch_attr);if(!requestMethod)requestMethod="GET";var userData=GROWABLE_HEAP_U32()[fetch+4>>2];var fetchAttributes=GROWABLE_HEAP_U32()[fetch_attr+52>>2];var timeoutMsecs=GROWABLE_HEAP_U32()[fetch_attr+56>>2];var withCredentials=!!GROWABLE_HEAP_U32()[fetch_attr+60>>2];var destinationPath=GROWABLE_HEAP_U32()[fetch_attr+64>>2];var userName=GROWABLE_HEAP_U32()[fetch_attr+68>>2];var password=GROWABLE_HEAP_U32()[fetch_attr+72>>2];var requestHeaders=GROWABLE_HEAP_U32()[fetch_attr+76>>2];var overriddenMimeType=GROWABLE_HEAP_U32()[fetch_attr+80>>2];var dataPtr=GROWABLE_HEAP_U32()[fetch_attr+84>>2];var dataLength=GROWABLE_HEAP_U32()[fetch_attr+88>>2];var fetchAttrLoadToMemory=!!(fetchAttributes&1);var fetchAttrStreamData=!!(fetchAttributes&2);var fetchAttrSynchronous=!!(fetchAttributes&64);var userNameStr=userName?UTF8ToString(userName):undefined;var passwordStr=password?UTF8ToString(password):undefined;var overriddenMimeTypeStr=overriddenMimeType?UTF8ToString(overriddenMimeType):undefined;var xhr=new XMLHttpRequest;xhr.withCredentials=withCredentials;xhr.open(requestMethod,url_,!fetchAttrSynchronous,userNameStr,passwordStr);if(!fetchAttrSynchronous)xhr.timeout=timeoutMsecs;xhr.url_=url_;xhr.responseType="arraybuffer";if(overriddenMimeType){xhr.overrideMimeType(overriddenMimeTypeStr)}if(requestHeaders){for(;;){var key=GROWABLE_HEAP_U32()[requestHeaders>>2];if(!key)break;var value=GROWABLE_HEAP_U32()[requestHeaders+4>>2];if(!value)break;requestHeaders+=8;var keyStr=UTF8ToString(key);var valueStr=UTF8ToString(value);xhr.setRequestHeader(keyStr,valueStr)}}Fetch.xhrs.push(xhr);var id=Fetch.xhrs.length;GROWABLE_HEAP_U32()[fetch+0>>2]=id;var data=dataPtr&&dataLength?GROWABLE_HEAP_U8().slice(dataPtr,dataPtr+dataLength):null;function saveResponse(condition){var ptr=0;var ptrLen=0;if(condition){ptrLen=xhr.response?xhr.response.byteLength:0;ptr=_malloc(ptrLen);GROWABLE_HEAP_U8().set(new Uint8Array(xhr.response),ptr)}GROWABLE_HEAP_U32()[fetch+12>>2]=ptr;Fetch.setu64(fetch+16,ptrLen)}xhr.onload=function(e){saveResponse(fetchAttrLoadToMemory&&!fetchAttrStreamData);var len=xhr.response?xhr.response.byteLength:0;Fetch.setu64(fetch+24,0);if(len){Fetch.setu64(fetch+32,len)}GROWABLE_HEAP_U16()[fetch+40>>1]=xhr.readyState;GROWABLE_HEAP_U16()[fetch+42>>1]=xhr.status;if(xhr.statusText)stringToUTF8(xhr.statusText,fetch+44,64);if(xhr.status>=200&&xhr.status<300){if(onsuccess)onsuccess(fetch,xhr,e)}else{if(onerror)onerror(fetch,xhr,e)}};xhr.onerror=function(e){saveResponse(fetchAttrLoadToMemory);var status=xhr.status;Fetch.setu64(fetch+24,0);Fetch.setu64(fetch+32,xhr.response?xhr.response.byteLength:0);GROWABLE_HEAP_U16()[fetch+40>>1]=xhr.readyState;GROWABLE_HEAP_U16()[fetch+42>>1]=status;if(onerror)onerror(fetch,xhr,e)};xhr.ontimeout=function(e){if(onerror)onerror(fetch,xhr,e)};xhr.onprogress=function(e){var ptrLen=fetchAttrLoadToMemory&&fetchAttrStreamData&&xhr.response?xhr.response.byteLength:0;var ptr=0;if(fetchAttrLoadToMemory&&fetchAttrStreamData){ptr=_malloc(ptrLen);GROWABLE_HEAP_U8().set(new Uint8Array(xhr.response),ptr)}GROWABLE_HEAP_U32()[fetch+12>>2]=ptr;Fetch.setu64(fetch+16,ptrLen);Fetch.setu64(fetch+24,e.loaded-ptrLen);Fetch.setu64(fetch+32,e.total);GROWABLE_HEAP_U16()[fetch+40>>1]=xhr.readyState;if(xhr.readyState>=3&&xhr.status===0&&e.loaded>0)xhr.status=200;GROWABLE_HEAP_U16()[fetch+42>>1]=xhr.status;if(xhr.statusText)stringToUTF8(xhr.statusText,fetch+44,64);if(onprogress)onprogress(fetch,xhr,e);if(ptr){_free(ptr)}};xhr.onreadystatechange=function(e){GROWABLE_HEAP_U16()[fetch+40>>1]=xhr.readyState;if(xhr.readyState>=2){GROWABLE_HEAP_U16()[fetch+42>>1]=xhr.status}if(onreadystatechange)onreadystatechange(fetch,xhr,e)};try{xhr.send(data)}catch(e){if(onerror)onerror(fetch,xhr,e)}}Module["fetchXHR"]=fetchXHR;function fetchCacheData(db,fetch,data,onsuccess,onerror){if(!db){onerror(fetch,0,"IndexedDB not available!");return}var fetch_attr=fetch+112;var destinationPath=GROWABLE_HEAP_U32()[fetch_attr+64>>2];if(!destinationPath)destinationPath=GROWABLE_HEAP_U32()[fetch+8>>2];var destinationPathStr=UTF8ToString(destinationPath);try{var transaction=db.transaction(["FILES"],"readwrite");var packages=transaction.objectStore("FILES");var putRequest=packages.put(data,destinationPathStr);putRequest.onsuccess=function(event){GROWABLE_HEAP_U16()[fetch+40>>1]=4;GROWABLE_HEAP_U16()[fetch+42>>1]=200;stringToUTF8("OK",fetch+44,64);onsuccess(fetch,0,destinationPathStr)};putRequest.onerror=function(error){GROWABLE_HEAP_U16()[fetch+40>>1]=4;GROWABLE_HEAP_U16()[fetch+42>>1]=413;stringToUTF8("Payload Too Large",fetch+44,64);onerror(fetch,0,error)}}catch(e){onerror(fetch,0,e)}}Module["fetchCacheData"]=fetchCacheData;function fetchLoadCachedData(db,fetch,onsuccess,onerror){if(!db){onerror(fetch,0,"IndexedDB not available!");return}var fetch_attr=fetch+112;var path=GROWABLE_HEAP_U32()[fetch_attr+64>>2];if(!path)path=GROWABLE_HEAP_U32()[fetch+8>>2];var pathStr=UTF8ToString(path);try{var transaction=db.transaction(["FILES"],"readonly");var packages=transaction.objectStore("FILES");var getRequest=packages.get(pathStr);getRequest.onsuccess=function(event){if(event.target.result){var value=event.target.result;var len=value.byteLength||value.length;var ptr=_malloc(len);GROWABLE_HEAP_U8().set(new Uint8Array(value),ptr);GROWABLE_HEAP_U32()[fetch+12>>2]=ptr;Fetch.setu64(fetch+16,len);Fetch.setu64(fetch+24,0);Fetch.setu64(fetch+32,len);GROWABLE_HEAP_U16()[fetch+40>>1]=4;GROWABLE_HEAP_U16()[fetch+42>>1]=200;stringToUTF8("OK",fetch+44,64);onsuccess(fetch,0,value)}else{GROWABLE_HEAP_U16()[fetch+40>>1]=4;GROWABLE_HEAP_U16()[fetch+42>>1]=404;stringToUTF8("Not Found",fetch+44,64);onerror(fetch,0,"no data")}};getRequest.onerror=function(error){GROWABLE_HEAP_U16()[fetch+40>>1]=4;GROWABLE_HEAP_U16()[fetch+42>>1]=404;stringToUTF8("Not Found",fetch+44,64);onerror(fetch,0,error)}}catch(e){onerror(fetch,0,e)}}Module["fetchLoadCachedData"]=fetchLoadCachedData;function fetchDeleteCachedData(db,fetch,onsuccess,onerror){if(!db){onerror(fetch,0,"IndexedDB not available!");return}var fetch_attr=fetch+112;var path=GROWABLE_HEAP_U32()[fetch_attr+64>>2];if(!path)path=GROWABLE_HEAP_U32()[fetch+8>>2];var pathStr=UTF8ToString(path);try{var transaction=db.transaction(["FILES"],"readwrite");var packages=transaction.objectStore("FILES");var request=packages.delete(pathStr);request.onsuccess=function(event){var value=event.target.result;GROWABLE_HEAP_U32()[fetch+12>>2]=0;Fetch.setu64(fetch+16,0);Fetch.setu64(fetch+24,0);Fetch.setu64(fetch+32,0);GROWABLE_HEAP_U16()[fetch+40>>1]=4;GROWABLE_HEAP_U16()[fetch+42>>1]=200;stringToUTF8("OK",fetch+44,64);onsuccess(fetch,0,value)};request.onerror=function(error){GROWABLE_HEAP_U16()[fetch+40>>1]=4;GROWABLE_HEAP_U16()[fetch+42>>1]=404;stringToUTF8("Not Found",fetch+44,64);onerror(fetch,0,error)}}catch(e){onerror(fetch,0,e)}}Module["fetchDeleteCachedData"]=fetchDeleteCachedData;function _emscripten_start_fetch(fetch,successcb,errorcb,progresscb,readystatechangecb){runtimeKeepalivePush();var fetch_attr=fetch+112;var requestMethod=UTF8ToString(fetch_attr);var onsuccess=GROWABLE_HEAP_U32()[fetch_attr+36>>2];var onerror=GROWABLE_HEAP_U32()[fetch_attr+40>>2];var onprogress=GROWABLE_HEAP_U32()[fetch_attr+44>>2];var onreadystatechange=GROWABLE_HEAP_U32()[fetch_attr+48>>2];var fetchAttributes=GROWABLE_HEAP_U32()[fetch_attr+52>>2];var fetchAttrPersistFile=!!(fetchAttributes&4);var fetchAttrNoDownload=!!(fetchAttributes&32);var fetchAttrReplace=!!(fetchAttributes&16);var fetchAttrSynchronous=!!(fetchAttributes&64);var reportSuccess=function(fetch,xhr,e){runtimeKeepalivePop();callUserCallback(function(){if(onsuccess)wasmTable.get(onsuccess)(fetch);else if(successcb)successcb(fetch)},fetchAttrSynchronous)};var reportProgress=function(fetch,xhr,e){callUserCallback(function(){if(onprogress)wasmTable.get(onprogress)(fetch);else if(progresscb)progresscb(fetch)},fetchAttrSynchronous)};var reportError=function(fetch,xhr,e){runtimeKeepalivePop();callUserCallback(function(){if(onerror)wasmTable.get(onerror)(fetch);else if(errorcb)errorcb(fetch)},fetchAttrSynchronous)};var reportReadyStateChange=function(fetch,xhr,e){callUserCallback(function(){if(onreadystatechange)wasmTable.get(onreadystatechange)(fetch);else if(readystatechangecb)readystatechangecb(fetch)},fetchAttrSynchronous)};var performUncachedXhr=function(fetch,xhr,e){fetchXHR(fetch,reportSuccess,reportError,reportProgress,reportReadyStateChange)};var cacheResultAndReportSuccess=function(fetch,xhr,e){var storeSuccess=function(fetch,xhr,e){runtimeKeepalivePop();callUserCallback(function(){if(onsuccess)wasmTable.get(onsuccess)(fetch);else if(successcb)successcb(fetch)},fetchAttrSynchronous)};var storeError=function(fetch,xhr,e){runtimeKeepalivePop();callUserCallback(function(){if(onsuccess)wasmTable.get(onsuccess)(fetch);else if(successcb)successcb(fetch)},fetchAttrSynchronous)};fetchCacheData(Fetch.dbInstance,fetch,xhr.response,storeSuccess,storeError)};var performCachedXhr=function(fetch,xhr,e){fetchXHR(fetch,cacheResultAndReportSuccess,reportError,reportProgress,reportReadyStateChange)};if(requestMethod==="EM_IDB_STORE"){var ptr=GROWABLE_HEAP_U32()[fetch_attr+84>>2];fetchCacheData(Fetch.dbInstance,fetch,GROWABLE_HEAP_U8().slice(ptr,ptr+GROWABLE_HEAP_U32()[fetch_attr+88>>2]),reportSuccess,reportError)}else if(requestMethod==="EM_IDB_DELETE"){fetchDeleteCachedData(Fetch.dbInstance,fetch,reportSuccess,reportError)}else if(!fetchAttrReplace){fetchLoadCachedData(Fetch.dbInstance,fetch,reportSuccess,fetchAttrNoDownload?reportError:fetchAttrPersistFile?performCachedXhr:performUncachedXhr)}else if(!fetchAttrNoDownload){fetchXHR(fetch,fetchAttrPersistFile?cacheResultAndReportSuccess:reportSuccess,reportError,reportProgress,reportReadyStateChange)}else{return 0}return fetch}Module["_emscripten_start_fetch"]=_emscripten_start_fetch;function _emscripten_unwind_to_js_event_loop(){throw"unwind"}Module["_emscripten_unwind_to_js_event_loop"]=_emscripten_unwind_to_js_event_loop;function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}Module["__webgl_enable_ANGLE_instanced_arrays"]=__webgl_enable_ANGLE_instanced_arrays;function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}Module["__webgl_enable_OES_vertex_array_object"]=__webgl_enable_OES_vertex_array_object;function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}Module["__webgl_enable_WEBGL_draw_buffers"]=__webgl_enable_WEBGL_draw_buffers;function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}Module["__webgl_enable_WEBGL_multi_draw"]=__webgl_enable_WEBGL_multi_draw;var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},queries:[],stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;canvas.getContext=function(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}}var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);{GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};Module["GL"]=GL;var __emscripten_webgl_power_preferences=["default","low-power","high-performance"];Module["__emscripten_webgl_power_preferences"]=__emscripten_webgl_power_preferences;function _emscripten_webgl_do_create_context(target,attributes){var a=attributes>>2;var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];var contextAttributes={"alpha":!!GROWABLE_HEAP_I32()[a+(0>>2)],"depth":!!GROWABLE_HEAP_I32()[a+(4>>2)],"stencil":!!GROWABLE_HEAP_I32()[a+(8>>2)],"antialias":!!GROWABLE_HEAP_I32()[a+(12>>2)],"premultipliedAlpha":!!GROWABLE_HEAP_I32()[a+(16>>2)],"preserveDrawingBuffer":!!GROWABLE_HEAP_I32()[a+(20>>2)],"powerPreference":__emscripten_webgl_power_preferences[powerPreference],"failIfMajorPerformanceCaveat":!!GROWABLE_HEAP_I32()[a+(28>>2)],majorVersion:GROWABLE_HEAP_I32()[a+(32>>2)],minorVersion:GROWABLE_HEAP_I32()[a+(36>>2)],enableExtensionsByDefault:GROWABLE_HEAP_I32()[a+(40>>2)],explicitSwapControl:GROWABLE_HEAP_I32()[a+(44>>2)],proxyContextToMainThread:GROWABLE_HEAP_I32()[a+(48>>2)],renderViaOffscreenBackBuffer:GROWABLE_HEAP_I32()[a+(52>>2)]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}Module["_emscripten_webgl_do_create_context"]=_emscripten_webgl_do_create_context;function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}Module["_emscripten_webgl_create_context"]=_emscripten_webgl_create_context;var ENV={};Module["ENV"]=ENV;function getExecutableName(){return thisProgram||"./this.program"}Module["getExecutableName"]=getExecutableName;function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator==="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}Module["getEnvStrings"]=getEnvStrings;function _environ_get(__environ,environ_buf){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(7,1,__environ,environ_buf);var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;GROWABLE_HEAP_I32()[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}Module["_environ_get"]=_environ_get;function _environ_sizes_get(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(8,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();GROWABLE_HEAP_I32()[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});GROWABLE_HEAP_I32()[penviron_buf_size>>2]=bufSize;return 0}Module["_environ_sizes_get"]=_environ_sizes_get;function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(9,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}Module["_fd_close"]=_fd_close;function _fd_read(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(10,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);GROWABLE_HEAP_I32()[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}Module["_fd_read"]=_fd_read;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(11,1,fd,offset_low,offset_high,whence,newOffset);try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],GROWABLE_HEAP_I32()[newOffset>>2]=tempI64[0],GROWABLE_HEAP_I32()[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}Module["_fd_seek"]=_fd_seek;function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(12,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);GROWABLE_HEAP_I32()[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}Module["_fd_write"]=_fd_write;function _getentropy(buffer,size){if(!_getentropy.randomDevice){_getentropy.randomDevice=getRandomDevice()}for(var i=0;i>0]=_getentropy.randomDevice()}return 0}Module["_getentropy"]=_getentropy;function _setTempRet0(val){setTempRet0(val)}Module["_setTempRet0"]=_setTempRet0;function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}Module["__isLeapYear"]=__isLeapYear;function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}Module["__arraySum"]=__arraySum;var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];Module["__MONTH_DAYS_LEAP"]=__MONTH_DAYS_LEAP;var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];Module["__MONTH_DAYS_REGULAR"]=__MONTH_DAYS_REGULAR;function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}Module["__addDays"]=__addDays;function _strftime(s,maxsize,format,tm){var tm_zone=GROWABLE_HEAP_I32()[tm+40>>2];var date={tm_sec:GROWABLE_HEAP_I32()[tm>>2],tm_min:GROWABLE_HEAP_I32()[tm+4>>2],tm_hour:GROWABLE_HEAP_I32()[tm+8>>2],tm_mday:GROWABLE_HEAP_I32()[tm+12>>2],tm_mon:GROWABLE_HEAP_I32()[tm+16>>2],tm_year:GROWABLE_HEAP_I32()[tm+20>>2],tm_wday:GROWABLE_HEAP_I32()[tm+24>>2],tm_yday:GROWABLE_HEAP_I32()[tm+28>>2],tm_isdst:GROWABLE_HEAP_I32()[tm+32>>2],tm_gmtoff:GROWABLE_HEAP_I32()[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}Module["_strftime"]=_strftime;function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}Module["_strftime_l"]=_strftime_l;if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_emval();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");if(!ENVIRONMENT_IS_PTHREAD)Fetch.staticInit();var GLctx;var proxiedFunctionTable=[null,exitOnMainThread,_atexit,___sys_mmap2,___sys_munmap,___sys_open,_emscripten_set_canvas_element_size_main_thread,_environ_get,_environ_sizes_get,_fd_close,_fd_read,_fd_seek,_fd_write];function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"g":___assert_fail,"Y":___cxa_thread_atexit,"R":___emscripten_init_main_thread_js,"t":___pthread_create_js,"Q":___pthread_detached_exit,"X":___pthread_exit_run_handlers,"O":___pthread_join_js,"K":___sys_mmap2,"J":___sys_munmap,"N":___sys_open,"G":__dlopen_js,"F":__dlsym_js,"A":__embind_register_bigint,"_":__embind_register_bool,"Z":__embind_register_emval,"u":__embind_register_float,"l":__embind_register_function,"h":__embind_register_integer,"e":__embind_register_memory_view,"v":__embind_register_std_string,"n":__embind_register_std_wstring,"w":__embind_register_void,"x":__emscripten_fetch_free,"W":__emscripten_notify_thread_queue,"b":_abort,"r":_clock_gettime,"L":_emscripten_check_blocking_allowed,"k":_emscripten_conditional_set_current_thread_status,"f":_emscripten_futex_wait,"d":_emscripten_futex_wake,"M":_emscripten_get_heap_max,"i":_emscripten_get_now,"B":_emscripten_memcpy_big,"o":_emscripten_num_logical_cores,"T":_emscripten_receive_on_main_thread_js,"C":_emscripten_resize_heap,"U":_emscripten_set_canvas_element_size,"s":_emscripten_set_current_thread_status,"S":_emscripten_set_timeout,"y":_emscripten_start_fetch,"P":_emscripten_unwind_to_js_event_loop,"V":_emscripten_webgl_create_context,"H":_environ_get,"I":_environ_sizes_get,"c":_exit,"q":_fd_close,"p":_fd_read,"z":_fd_seek,"m":_fd_write,"D":_getentropy,"a":wasmMemory||Module["wasmMemory"],"j":_setTempRet0,"E":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["$"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["aa"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ca"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["da"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ea"]).apply(null,arguments)};var _pthread_self=Module["_pthread_self"]=function(){return(_pthread_self=Module["_pthread_self"]=Module["asm"]["fa"]).apply(null,arguments)};var _emscripten_tls_init=Module["_emscripten_tls_init"]=function(){return(_emscripten_tls_init=Module["_emscripten_tls_init"]=Module["asm"]["ga"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["ha"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["ia"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module["_emscripten_current_thread_process_queued_calls"]=function(){return(_emscripten_current_thread_process_queued_calls=Module["_emscripten_current_thread_process_queued_calls"]=Module["asm"]["ja"]).apply(null,arguments)};var _emscripten_main_browser_thread_id=Module["_emscripten_main_browser_thread_id"]=function(){return(_emscripten_main_browser_thread_id=Module["_emscripten_main_browser_thread_id"]=Module["asm"]["ka"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_2=Module["_emscripten_sync_run_in_main_thread_2"]=function(){return(_emscripten_sync_run_in_main_thread_2=Module["_emscripten_sync_run_in_main_thread_2"]=Module["asm"]["la"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module["_emscripten_sync_run_in_main_thread_4"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module["_emscripten_sync_run_in_main_thread_4"]=Module["asm"]["ma"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module["_emscripten_main_thread_process_queued_calls"]=function(){return(_emscripten_main_thread_process_queued_calls=Module["_emscripten_main_thread_process_queued_calls"]=Module["asm"]["na"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=Module["asm"]["oa"]).apply(null,arguments)};var __emscripten_call_on_thread=Module["__emscripten_call_on_thread"]=function(){return(__emscripten_call_on_thread=Module["__emscripten_call_on_thread"]=Module["asm"]["pa"]).apply(null,arguments)};var ___emscripten_init_main_thread=Module["___emscripten_init_main_thread"]=function(){return(___emscripten_init_main_thread=Module["___emscripten_init_main_thread"]=Module["asm"]["qa"]).apply(null,arguments)};var __emscripten_thread_exit=Module["__emscripten_thread_exit"]=function(){return(__emscripten_thread_exit=Module["__emscripten_thread_exit"]=Module["asm"]["ra"]).apply(null,arguments)};var __emscripten_thread_init=Module["__emscripten_thread_init"]=function(){return(__emscripten_thread_init=Module["__emscripten_thread_init"]=Module["asm"]["sa"]).apply(null,arguments)};var _pthread_testcancel=Module["_pthread_testcancel"]=function(){return(_pthread_testcancel=Module["_pthread_testcancel"]=Module["asm"]["ta"]).apply(null,arguments)};var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=function(){return(_emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=Module["asm"]["ua"]).apply(null,arguments)};var ___dl_seterr=Module["___dl_seterr"]=function(){return(___dl_seterr=Module["___dl_seterr"]=Module["asm"]["va"]).apply(null,arguments)};var __get_tzname=Module["__get_tzname"]=function(){return(__get_tzname=Module["__get_tzname"]=Module["asm"]["wa"]).apply(null,arguments)};var __get_daylight=Module["__get_daylight"]=function(){return(__get_daylight=Module["__get_daylight"]=Module["asm"]["xa"]).apply(null,arguments)};var __get_timezone=Module["__get_timezone"]=function(){return(__get_timezone=Module["__get_timezone"]=Module["asm"]["ya"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["za"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["Aa"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["Ba"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=function(){return(_emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=Module["asm"]["Ca"]).apply(null,arguments)};var _memalign=Module["_memalign"]=function(){return(_memalign=Module["_memalign"]=Module["asm"]["Da"]).apply(null,arguments)};var dynCall_jii=Module["dynCall_jii"]=function(){return(dynCall_jii=Module["dynCall_jii"]=Module["asm"]["Ea"]).apply(null,arguments)};var dynCall_jjj=Module["dynCall_jjj"]=function(){return(dynCall_jjj=Module["dynCall_jjj"]=Module["asm"]["Fa"]).apply(null,arguments)};var dynCall_jiii=Module["dynCall_jiii"]=function(){return(dynCall_jiii=Module["dynCall_jiii"]=Module["asm"]["Ga"]).apply(null,arguments)};var dynCall_iiiijj=Module["dynCall_iiiijj"]=function(){return(dynCall_iiiijj=Module["dynCall_iiiijj"]=Module["asm"]["Ha"]).apply(null,arguments)};var dynCall_viijj=Module["dynCall_viijj"]=function(){return(dynCall_viijj=Module["dynCall_viijj"]=Module["asm"]["Ia"]).apply(null,arguments)};var dynCall_viiijjjj=Module["dynCall_viiijjjj"]=function(){return(dynCall_viiijjjj=Module["dynCall_viiijjjj"]=Module["asm"]["Ja"]).apply(null,arguments)};var dynCall_viji=Module["dynCall_viji"]=function(){return(dynCall_viji=Module["dynCall_viji"]=Module["asm"]["Ka"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["La"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["Ma"]).apply(null,arguments)};var dynCall_iijjiiii=Module["dynCall_iijjiiii"]=function(){return(dynCall_iijjiiii=Module["dynCall_iijjiiii"]=Module["asm"]["Na"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["Oa"]).apply(null,arguments)};var dynCall_iiiiij=Module["dynCall_iiiiij"]=function(){return(dynCall_iiiiij=Module["dynCall_iiiiij"]=Module["asm"]["Pa"]).apply(null,arguments)};var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=function(){return(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=Module["asm"]["Qa"]).apply(null,arguments)};var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=function(){return(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=Module["asm"]["Ra"]).apply(null,arguments)};var dynCall_viijii=Module["dynCall_viijii"]=function(){return(dynCall_viijii=Module["dynCall_viijii"]=Module["asm"]["Sa"]).apply(null,arguments)};var __emscripten_allow_main_runtime_queued_calls=Module["__emscripten_allow_main_runtime_queued_calls"]=196660;var __emscripten_main_thread_futex=Module["__emscripten_main_thread_futex"]=203284;Module["keepRuntimeAlive"]=keepRuntimeAlive;Module["PThread"]=PThread;Module["PThread"]=PThread;Module["wasmMemory"]=wasmMemory;Module["ExitStatus"]=ExitStatus;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];args=args||[];var argc=args.length+1;var argv=stackAlloc((argc+1)*4);GROWABLE_HEAP_I32()[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}GROWABLE_HEAP_I32()[(argv>>2)+argc]=0;try{var ret=entryFunction(argc,argv);exit(ret,true);return ret}catch(e){return handleException(e)}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();postMessage({"cmd":"loaded"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(!implicit){if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}else{}}if(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){PThread.terminateAllThreads();if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;if(ENVIRONMENT_IS_PTHREAD){noExitRuntime=false;PThread.initWorker()}run(); 10 | 11 | 12 | return Module.ready 13 | } 14 | ); 15 | })(); 16 | export default Module; -------------------------------------------------------------------------------- /src/wasm/webassembly_codec_wrapper.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/neuvideo/lyra-js/32295513f44a93f2e5d0495bcfd8f871f6d6b576/src/wasm/webassembly_codec_wrapper.wasm -------------------------------------------------------------------------------- /src/wasm/webassembly_codec_wrapper.worker.js: -------------------------------------------------------------------------------- 1 | "use strict";var Module={};var initializedJS=false;function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);receiveInstance(instance);Module["wasmModule"]=null;return instance.exports};self.onmessage=function(e){try{if(e.data.cmd==="load"){Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;(e.data.urlOrBlob?import(e.data.urlOrBlob):import("./webassembly_codec_wrapper")).then(function(exports){return exports.default(Module)}).then(function(instance){Module=instance})}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;Module["__emscripten_thread_init"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInit();if(!initializedJS){Module["___embind_register_native_and_builtin_types"]();initializedJS=true}try{var result=Module["invokeEntryPoint"](e.data.start_routine,e.data.arg);if(Module["keepRuntimeAlive"]()){Module["PThread"].setExitStatus(result)}else{Module["__emscripten_thread_exit"](result)}}catch(ex){if(ex!="unwind"){if(ex instanceof Module["ExitStatus"]){if(Module["keepRuntimeAlive"]()){}else{Module["__emscripten_thread_exit"](ex.status)}}else{throw ex}}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}postMessage({"cmd":"cancelDone"})}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(Module["_pthread_self"]()){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex&&ex.stack)err(ex.stack);throw ex}}; 2 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | // webpack.config.js 2 | const path = require('path'); 3 | 4 | module.exports = { 5 | entry: './src/lyra.js', 6 | experiments: { 7 | asyncWebAssembly: true, 8 | layers: true, 9 | outputModule: true, 10 | syncWebAssembly: true, 11 | topLevelAwait: true, 12 | }, 13 | output: { 14 | path: path.resolve(__dirname, "dist"), 15 | filename: "lyra_bundle.js", 16 | library: { 17 | type: 'module', 18 | }, 19 | }, 20 | mode: "production", 21 | }; --------------------------------------------------------------------------------