diff --git a/karma.conf.js b/karma.conf.js index 2cc12bdf8..2d6d7a58c 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1,5 +1,6 @@ /* eslint-disable global-require */ const path = require('path') +const os = require('os') const vtkRules = require('vtk.js/Utilities/config/dependency.js').webpack.core .rules @@ -30,6 +31,7 @@ const moduleConfigRules = [ { test: /\.js$/, loader: 'babel-loader', dependency: { not: ['url'] } }, { test: /\.worker.js$/, + exclude: /node_modules/, // Skip itk-wasm worker in node modules. Copy plugin pulls prebuild itk-wasm-pipeline.worker.js use: [{ loader: 'worker-loader', options: { inline: 'no-fallback' } }], }, { @@ -42,6 +44,13 @@ const moduleConfigRules = [ const entry = path.join(__dirname, './src/index.js') +// fixes 404 errors getting worker bundles https://github.com/ryanclark/karma-webpack/issues/498#issuecomment-790040818 +const output = { + path: + path.join(os.tmpdir(), '_karma_webpack_') + + Math.floor(Math.random() * 1000000), +} + module.exports = function init(config) { config.set({ plugins: [ @@ -52,17 +61,10 @@ module.exports = function init(config) { require('karma-tap-pretty-reporter'), require('karma-junit-reporter'), ], - basePath: '', frameworks: ['tap', 'webpack'], files: [ './test/tests.js', - { - pattern: './dist/itk/image-io/**', - watched: true, - served: true, - included: false, - }, { pattern: './dist/itk/mesh-io/**', watched: true, @@ -105,6 +107,12 @@ module.exports = function init(config) { served: true, included: false, }, + { + pattern: './dist/**', + watched: true, + served: true, + included: false, + }, { pattern: './src/UI/reference-ui/dist/referenceUIMachineOptions.js', watched: true, @@ -123,6 +131,11 @@ module.exports = function init(config) { served: true, included: false, }, + { + pattern: `${output.path}/**/*`, + watched: false, + included: false, + }, ], preprocessors: { @@ -130,6 +143,7 @@ module.exports = function init(config) { }, webpack: { + output, mode: 'development', devtool: 'eval-source-map', module: { diff --git a/package-lock.json b/package-lock.json index 6780f667c..333679430 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.0-semantically-release", "license": "BSD-3-Clause", "dependencies": { + "@itk-wasm/image-io": "^0.5.0", "@kitware/vtk.js": "^26.9.15", "@material/web": "^1.0.0-pre.4", "@thewtex/iconselect.js": "^2.1.2", @@ -20,12 +21,11 @@ "eventemitter3": "^4.0.7", "express": "^4.17.1", "gl-matrix": "^3.4.3", - "itk-image-io": "^1.0.0-b.84", - "itk-mesh-io": "^1.0.0-b.84", + "itk-mesh-io": "^1.0.0-b.158", "itk-viewer-color-maps": "^1.2.0", "itk-viewer-icons": "11.14.0", "itk-viewer-transfer-function-editor": "^1.2.5", - "itk-wasm": "^1.0.0-b.83", + "itk-wasm": "^1.0.0-b.158", "mobx": "^5.15.7", "mousetrap": "^1.6.5", "open": "^6.4.0", @@ -80,7 +80,7 @@ "postcss-loader": "^4.1.0", "prettier": "^1.19.1", "process": "^0.11.10", - "puppeteer": "^2.1.1", + "puppeteer": "^21.6.0", "raw-loader": "^4.0.2", "readable-stream": "^3.6.0", "request": "^2.88.2", @@ -2079,6 +2079,14 @@ "node": ">=8" } }, + "node_modules/@itk-wasm/image-io": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@itk-wasm/image-io/-/image-io-0.5.0.tgz", + "integrity": "sha512-h7SF9bb+DDLZsH+tpBFZyxCM7Dqf0bbvayhS8/bn3voyTZQy80bEMnPgmRCzUoGWGyDOygbSgqohqJ6IelvDvA==", + "dependencies": { + "itk-wasm": "^1.0.0-b.154" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", @@ -2537,6 +2545,141 @@ "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", "dev": true }, + "node_modules/@puppeteer/browsers": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.9.0.tgz", + "integrity": "sha512-QwguOLy44YBGC8vuPP2nmpX4MUN2FzWbsnvZJtiCzecU3lHmVZkaC1tq6rToi9a200m8RzlVtDyxCS0UIDrxUg==", + "dev": true, + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.3.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=16.3.0" + } + }, + "node_modules/@puppeteer/browsers/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@puppeteer/browsers/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@puppeteer/browsers/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@puppeteer/browsers/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@puppeteer/browsers/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@puppeteer/browsers/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@puppeteer/browsers/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@puppeteer/browsers/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@puppeteer/browsers/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/@rollup/plugin-babel": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", @@ -3096,6 +3239,11 @@ "resolved": "https://registry.npmjs.org/@thewtex/iconselect.js/-/iconselect.js-2.1.2.tgz", "integrity": "sha512-qbxAJ+5MfBZQGMBwsokNS2zi+ktPIj1YrMT3dQ4+Ed3MR+J7vd0qbQv02e+uPQRFfyTdGxTdH4rBSJjWf2YMuQ==" }, + "node_modules/@thewtex/zstddec": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@thewtex/zstddec/-/zstddec-0.2.0.tgz", + "integrity": "sha512-lIS+smrfa48WGlDVQSQSm0jBnwVp5XmfGJWU9q0J0fRFY9ohzK4s27Zg2SFMb1NWMp9RiANAdK+/q86EBGWR1Q==" + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -3105,6 +3253,12 @@ "node": ">= 10" } }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, "node_modules/@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -3256,12 +3410,6 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", "dev": true }, - "node_modules/@types/mime-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.0.tgz", - "integrity": "sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM=", - "dev": true - }, "node_modules/@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -3360,6 +3508,16 @@ "@types/node": "*" } }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@web-std/blob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@web-std/blob/-/blob-3.0.4.tgz", @@ -3698,14 +3856,40 @@ "dev": true }, "node_modules/agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -3975,6 +4159,18 @@ "node": ">=0.8" } }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -3993,12 +4189,6 @@ "lodash": "^4.17.14" } }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -4107,6 +4297,12 @@ "node": ">= 6" } }, + "node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "dev": true + }, "node_modules/babel-loader": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", @@ -4302,6 +4498,15 @@ "node": "^4.5.0 || >= 5.9" } }, + "node_modules/basic-ftp": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", + "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -4544,7 +4749,7 @@ "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "engines": { "node": "*" @@ -4781,6 +4986,19 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/chromium-bidi": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.1.tgz", + "integrity": "sha512-dcCqOgq9fHKExc2R4JZs/oKbOghWpUNFAJODS8WKRtLhp3avtIH5UDCBrutdqZdh3pARogH8y1ObXm87emwb3g==", + "dev": true, + "dependencies": { + "mitt": "3.0.1", + "urlpattern-polyfill": "9.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -4805,15 +5023,6 @@ "node": ">= 4.0" } }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -5017,6 +5226,11 @@ "node": ">= 0.8" } }, + "node_modules/comlink": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.1.tgz", + "integrity": "sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==" + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -5115,36 +5329,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "node_modules/concat-with-sourcemaps": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", @@ -5154,15 +5338,6 @@ "source-map": "^0.6.1" } }, - "node_modules/concat-with-sourcemaps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/conf": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/conf/-/conf-10.1.2.tgz", @@ -5560,6 +5735,15 @@ "node": ">=8" } }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.12" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -5733,15 +5917,6 @@ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/css-what": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", @@ -6195,6 +6370,20 @@ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", "dev": true }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/del": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", @@ -6265,6 +6454,12 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, + "node_modules/devtools-protocol": { + "version": "0.0.1203626", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1203626.tgz", + "integrity": "sha512-nEzHZteIUZfGCZtTiS1fRpC8UZmsfD1SiyPvaUNvS13dvKf666OAm8YTi0+Ca3n1nLEyu49Cy4+dPWpaHFJk9g==", + "dev": true + }, "node_modules/di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", @@ -6967,6 +7162,36 @@ "node": ">=0.8.0" } }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/eslint": { "version": "8.13.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", @@ -7549,20 +7774,48 @@ "dev": true }, "node_modules/extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, "dependencies": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", + "debug": "^4.1.1", + "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "bin": { "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, + "node_modules/extract-zip/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -7578,9 +7831,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-fifo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.1.0.tgz", - "integrity": "sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", "dev": true }, "node_modules/fast-glob": { @@ -7658,7 +7911,7 @@ "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "dependencies": { "pend": "~1.2.0" @@ -8144,6 +8397,85 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-uri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.2.tgz", + "integrity": "sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==", + "dev": true, + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.0", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz", + "integrity": "sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/get-uri/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/get-uri/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/get-uri/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/get-uri/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -8412,15 +8744,6 @@ "uglify-js": "^3.1.4" } }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -8829,22 +9152,22 @@ } }, "node_modules/https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", "dev": true, "dependencies": { - "agent-base": "5", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -9443,9 +9766,9 @@ "dev": true }, "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true }, "node_modules/ip-regex": { @@ -10518,20 +10841,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/itk-image-io": { - "version": "1.0.0-b.84", - "resolved": "https://registry.npmjs.org/itk-image-io/-/itk-image-io-1.0.0-b.84.tgz", - "integrity": "sha512-lqMlvvFT9y3XkmfQZWQ6WUN6Ci6Bu7eb1aV5xex8CsvXhFrEDmuInmlT9f67H2cluTYvuRV6UzEPBnyimUAGZQ==", - "dependencies": { - "itk-wasm": "1.0.0-b.84" - } - }, "node_modules/itk-mesh-io": { - "version": "1.0.0-b.84", - "resolved": "https://registry.npmjs.org/itk-mesh-io/-/itk-mesh-io-1.0.0-b.84.tgz", - "integrity": "sha512-fL3FjeztZB9+S1UqBH0mGCofATq+UYnTfx28wpm+COexfOmDeWgJYtftndZY0f7Ztpe6x2bMw+mm7MNd9crB/w==", + "version": "1.0.0-b.158", + "resolved": "https://registry.npmjs.org/itk-mesh-io/-/itk-mesh-io-1.0.0-b.158.tgz", + "integrity": "sha512-mYBqjMoy1HVas4mDl+ggKeOwTqdS7B7WVgPQnNHUSSOyt9Bz4OhYS1smBCoaZ2LpGsKOpCmvLX5mNQ2HIapf/Q==", "dependencies": { - "itk-wasm": "1.0.0-b.84" + "itk-wasm": "1.0.0-b.158" } }, "node_modules/itk-viewer-color-maps": { @@ -10550,33 +10865,26 @@ "integrity": "sha512-z5GpPMYMmtxmR+mwHGT5p5cUDcaUbAg1Zvohuh/jCZCMY9a3Mxfcw8gsxiwU2dqj76i0emJj7VVFPXcwO60tMw==" }, "node_modules/itk-wasm": { - "version": "1.0.0-b.84", - "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.84.tgz", - "integrity": "sha512-iM3ZMVqGv/3kjoe4UUTO0PlyGLMOrmOb0e1e6+5kHu4fnTg6PhNjxLGdanLH/OlX6VSv6LOP6o8rKiC7Xo0zRw==", + "version": "1.0.0-b.158", + "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.158.tgz", + "integrity": "sha512-IHRmwu1zxLmH9auF7kN3BREbom9NGorVhK1g4TRNsr4qRbuHZsZ3RsGRNVqWI2LZamo3Rw9sDYrM7NMA5x0dqQ==", "dependencies": { "@babel/runtime": "^7.15.4", + "@thewtex/zstddec": "^0.2.0", "@types/emscripten": "^1.39.6", - "axios": "^0.23.0", + "axios": "^1.4.0", + "comlink": "^4.4.1", "commander": "^9.4.0", "fs-extra": "^10.0.0", "glob": "^8.1.0", "markdown-table": "^3.0.3", "mime-types": "^2.1.35", - "promise-file-reader": "^1.0.3", - "webworker-promise": "^0.4.2" + "wasm-feature-detect": "^1.5.1" }, "bin": { "itk-wasm": "src/itk-wasm-cli.js" } }, - "node_modules/itk-wasm/node_modules/axios": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", - "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", - "dependencies": { - "follow-redirects": "^1.14.4" - } - }, "node_modules/itk-wasm/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -11141,15 +11449,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/karma/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -12367,6 +12666,12 @@ "node": ">= 6" } }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true + }, "node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -12379,6 +12684,12 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "node_modules/mobx": { "version": "5.15.7", "resolved": "https://registry.npmjs.org/mobx/-/mobx-5.15.7.tgz", @@ -12558,6 +12869,15 @@ "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", "dev": true }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -12584,9 +12904,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" @@ -12989,8 +13309,6 @@ }, "node_modules/npm/node_modules/@colors/colors": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, "inBundle": true, "license": "MIT", @@ -13001,16 +13319,12 @@ }, "node_modules/npm/node_modules/@gar/promisify": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", - "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "dev": true, "inBundle": true, "license": "ISC" @@ -13065,8 +13379,6 @@ }, "node_modules/npm/node_modules/@npmcli/ci-detect": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-2.0.0.tgz", - "integrity": "sha512-8yQtQ9ArHh/TzdUDKQwEvwCgpDuhSWTDAbiKMl3854PcT+Dk4UmWaiawuFTLy9n5twzXOBXVflWe+90/ffXQrA==", "dev": true, "inBundle": true, "license": "ISC", @@ -13095,8 +13407,6 @@ }, "node_modules/npm/node_modules/@npmcli/disparity-colors": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/disparity-colors/-/disparity-colors-2.0.0.tgz", - "integrity": "sha512-FFXGrIjhvd2qSZ8iS0yDvbI7nbjdyT2VNO7wotosjYZM2p2r8PN3B7Om3M5NO9KqW/OVzfzLB3L0V5Vo5QXC7A==", "dev": true, "inBundle": true, "license": "ISC", @@ -13142,8 +13452,6 @@ }, "node_modules/npm/node_modules/@npmcli/installed-package-contents": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", "dev": true, "inBundle": true, "license": "ISC", @@ -13203,16 +13511,12 @@ }, "node_modules/npm/node_modules/@npmcli/name-from-folder": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", - "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/@npmcli/node-gyp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", - "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", "dev": true, "inBundle": true, "license": "ISC", @@ -13222,8 +13526,6 @@ }, "node_modules/npm/node_modules/@npmcli/package-json": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-2.0.0.tgz", - "integrity": "sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA==", "dev": true, "inBundle": true, "license": "ISC", @@ -13236,8 +13538,6 @@ }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", - "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", "dev": true, "inBundle": true, "license": "ISC", @@ -13265,8 +13565,6 @@ }, "node_modules/npm/node_modules/@tootallnate/once": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, "inBundle": true, "license": "MIT", @@ -13276,16 +13574,12 @@ }, "node_modules/npm/node_modules/abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/agent-base": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "inBundle": true, "license": "MIT", @@ -13312,8 +13606,6 @@ }, "node_modules/npm/node_modules/aggregate-error": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "inBundle": true, "license": "MIT", @@ -13327,8 +13619,6 @@ }, "node_modules/npm/node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "inBundle": true, "license": "MIT", @@ -13338,8 +13628,6 @@ }, "node_modules/npm/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "inBundle": true, "license": "MIT", @@ -13355,16 +13643,12 @@ }, "node_modules/npm/node_modules/aproba": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true, "inBundle": true, "license": "MIT" @@ -13384,8 +13668,6 @@ }, "node_modules/npm/node_modules/asap": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true, "inBundle": true, "license": "MIT" @@ -13415,8 +13697,6 @@ }, "node_modules/npm/node_modules/binary-extensions": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "inBundle": true, "license": "MIT", @@ -13426,8 +13706,6 @@ }, "node_modules/npm/node_modules/brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "inBundle": true, "license": "MIT", @@ -13437,8 +13715,6 @@ }, "node_modules/npm/node_modules/builtins": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, "inBundle": true, "license": "MIT", @@ -13477,8 +13753,6 @@ }, "node_modules/npm/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "inBundle": true, "license": "MIT", @@ -13495,8 +13769,6 @@ }, "node_modules/npm/node_modules/chownr": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, "inBundle": true, "license": "ISC", @@ -13506,8 +13778,6 @@ }, "node_modules/npm/node_modules/cidr-regex": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/cidr-regex/-/cidr-regex-3.1.1.tgz", - "integrity": "sha512-RBqYd32aDwbCMFJRL6wHOlDNYJsPNTt8vC82ErHF5vKt8QQzxm1FrkW8s/R5pVrXMf17sba09Uoy91PKiddAsw==", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -13520,8 +13790,6 @@ }, "node_modules/npm/node_modules/clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, "inBundle": true, "license": "MIT", @@ -13531,8 +13799,6 @@ }, "node_modules/npm/node_modules/cli-columns": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-columns/-/cli-columns-4.0.0.tgz", - "integrity": "sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ==", "dev": true, "inBundle": true, "license": "MIT", @@ -13561,8 +13827,6 @@ }, "node_modules/npm/node_modules/clone": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", "dev": true, "inBundle": true, "license": "MIT", @@ -13572,8 +13836,6 @@ }, "node_modules/npm/node_modules/cmd-shim": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", - "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", "dev": true, "inBundle": true, "license": "ISC", @@ -13586,8 +13848,6 @@ }, "node_modules/npm/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "inBundle": true, "license": "MIT", @@ -13600,16 +13860,12 @@ }, "node_modules/npm/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/color-support": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, "inBundle": true, "license": "ISC", @@ -13619,8 +13875,6 @@ }, "node_modules/npm/node_modules/columnify": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", - "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "dev": true, "inBundle": true, "license": "MIT", @@ -13634,32 +13888,24 @@ }, "node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "inBundle": true, "license": "MIT", @@ -13677,16 +13923,12 @@ }, "node_modules/npm/node_modules/debug/node_modules/ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/debuglog": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", "dev": true, "inBundle": true, "license": "MIT", @@ -13696,8 +13938,6 @@ }, "node_modules/npm/node_modules/defaults": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, "inBundle": true, "license": "MIT", @@ -13707,8 +13947,6 @@ }, "node_modules/npm/node_modules/delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "dev": true, "inBundle": true, "license": "MIT" @@ -13724,8 +13962,6 @@ }, "node_modules/npm/node_modules/dezalgo": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, "inBundle": true, "license": "ISC", @@ -13745,16 +13981,12 @@ }, "node_modules/npm/node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/encoding": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, "inBundle": true, "license": "MIT", @@ -13765,8 +13997,6 @@ }, "node_modules/npm/node_modules/env-paths": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "inBundle": true, "license": "MIT", @@ -13776,24 +14006,18 @@ }, "node_modules/npm/node_modules/err-code": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/fastest-levenshtein": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/fs-minipass": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "inBundle": true, "license": "ISC", @@ -13806,24 +14030,18 @@ }, "node_modules/npm/node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/function-bind": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/gauge": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, "inBundle": true, "license": "ISC", @@ -13868,8 +14086,6 @@ }, "node_modules/npm/node_modules/has": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "inBundle": true, "license": "MIT", @@ -13882,8 +14098,6 @@ }, "node_modules/npm/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "inBundle": true, "license": "MIT", @@ -13893,8 +14107,6 @@ }, "node_modules/npm/node_modules/has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true, "inBundle": true, "license": "ISC" @@ -13919,8 +14131,6 @@ }, "node_modules/npm/node_modules/http-proxy-agent": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "inBundle": true, "license": "MIT", @@ -13935,8 +14145,6 @@ }, "node_modules/npm/node_modules/https-proxy-agent": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "inBundle": true, "license": "MIT", @@ -13950,8 +14158,6 @@ }, "node_modules/npm/node_modules/humanize-ms": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, "inBundle": true, "license": "MIT", @@ -13961,8 +14167,6 @@ }, "node_modules/npm/node_modules/iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "inBundle": true, "license": "MIT", @@ -13976,8 +14180,6 @@ }, "node_modules/npm/node_modules/ignore-walk": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "dev": true, "inBundle": true, "license": "ISC", @@ -13990,8 +14192,6 @@ }, "node_modules/npm/node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, "inBundle": true, "license": "MIT", @@ -14001,8 +14201,6 @@ }, "node_modules/npm/node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "inBundle": true, "license": "MIT", @@ -14012,16 +14210,12 @@ }, "node_modules/npm/node_modules/infer-owner": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "inBundle": true, "license": "ISC", @@ -14047,8 +14241,6 @@ }, "node_modules/npm/node_modules/init-package-json": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz", - "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==", "dev": true, "inBundle": true, "license": "ISC", @@ -14073,8 +14265,6 @@ }, "node_modules/npm/node_modules/ip-regex": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", "dev": true, "inBundle": true, "license": "MIT", @@ -14084,8 +14274,6 @@ }, "node_modules/npm/node_modules/is-cidr": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/is-cidr/-/is-cidr-4.0.2.tgz", - "integrity": "sha512-z4a1ENUajDbEl/Q6/pVBpTR1nBjjEE1X7qb7bmWYanNnPoKAvUCPFKeXV6Fe4mgTkWKBqiHIcwsI3SndiO5FeA==", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -14110,8 +14298,6 @@ }, "node_modules/npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "inBundle": true, "license": "MIT", @@ -14121,32 +14307,24 @@ }, "node_modules/npm/node_modules/is-lambda": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/json-stringify-nice": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", - "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", "dev": true, "inBundle": true, "license": "ISC", @@ -14156,8 +14334,6 @@ }, "node_modules/npm/node_modules/jsonparse": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, "engines": [ "node >= 0.2.0" @@ -14405,8 +14581,6 @@ }, "node_modules/npm/node_modules/minipass-collect": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, "inBundle": true, "license": "ISC", @@ -14436,8 +14610,6 @@ }, "node_modules/npm/node_modules/minipass-flush": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, "inBundle": true, "license": "ISC", @@ -14450,8 +14622,6 @@ }, "node_modules/npm/node_modules/minipass-json-stream": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, "inBundle": true, "license": "MIT", @@ -14462,8 +14632,6 @@ }, "node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "inBundle": true, "license": "ISC", @@ -14476,8 +14644,6 @@ }, "node_modules/npm/node_modules/minipass-sized": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, "inBundle": true, "license": "ISC", @@ -14490,8 +14656,6 @@ }, "node_modules/npm/node_modules/minizlib": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "inBundle": true, "license": "MIT", @@ -14505,8 +14669,6 @@ }, "node_modules/npm/node_modules/mkdirp": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, "inBundle": true, "license": "MIT", @@ -14519,8 +14681,6 @@ }, "node_modules/npm/node_modules/mkdirp-infer-owner": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", - "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", "dev": true, "inBundle": true, "license": "ISC", @@ -14535,24 +14695,18 @@ }, "node_modules/npm/node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/mute-stream": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/negotiator": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "inBundle": true, "license": "MIT", @@ -14586,8 +14740,6 @@ }, "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "inBundle": true, "license": "MIT", @@ -14618,8 +14770,6 @@ }, "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "inBundle": true, "license": "ISC", @@ -14632,8 +14782,6 @@ }, "node_modules/npm/node_modules/nopt": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, "inBundle": true, "license": "ISC", @@ -14664,8 +14812,6 @@ }, "node_modules/npm/node_modules/npm-audit-report": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-audit-report/-/npm-audit-report-3.0.0.tgz", - "integrity": "sha512-tWQzfbwz1sc4244Bx2BVELw0EmZlCsCF0X93RDcmmwhonCsPMoEviYsi+32R+mdRvOWXolPce9zo64n2xgPESw==", "dev": true, "inBundle": true, "license": "ISC", @@ -14678,8 +14824,6 @@ }, "node_modules/npm/node_modules/npm-bundled": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, "inBundle": true, "license": "ISC", @@ -14689,8 +14833,6 @@ }, "node_modules/npm/node_modules/npm-install-checks": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", - "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -14703,8 +14845,6 @@ }, "node_modules/npm/node_modules/npm-normalize-package-bin": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", "dev": true, "inBundle": true, "license": "ISC" @@ -14789,16 +14929,12 @@ }, "node_modules/npm/node_modules/npm-user-validate": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-user-validate/-/npm-user-validate-1.0.1.tgz", - "integrity": "sha512-uQwcd/tY+h1jnEaze6cdX/LrhWhoBxfSknxentoqmIuStxUExxjWd3ULMLFPiFUrZKbOVMowH6Jq2FRWfmhcEw==", "dev": true, "inBundle": true, "license": "BSD-2-Clause" }, "node_modules/npm/node_modules/npmlog": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "dev": true, "inBundle": true, "license": "ISC", @@ -14814,8 +14950,6 @@ }, "node_modules/npm/node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "inBundle": true, "license": "ISC", @@ -14825,8 +14959,6 @@ }, "node_modules/npm/node_modules/opener": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true, "inBundle": true, "license": "(WTFPL OR MIT)", @@ -14836,8 +14968,6 @@ }, "node_modules/npm/node_modules/p-map": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "inBundle": true, "license": "MIT", @@ -14888,8 +15018,6 @@ }, "node_modules/npm/node_modules/parse-conflict-json": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz", - "integrity": "sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==", "dev": true, "inBundle": true, "license": "ISC", @@ -14904,8 +15032,6 @@ }, "node_modules/npm/node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "inBundle": true, "license": "MIT", @@ -14915,8 +15041,6 @@ }, "node_modules/npm/node_modules/proc-log": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", - "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "dev": true, "inBundle": true, "license": "ISC", @@ -14926,8 +15050,6 @@ }, "node_modules/npm/node_modules/promise-all-reject-late": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", - "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", "dev": true, "inBundle": true, "license": "ISC", @@ -14946,16 +15068,12 @@ }, "node_modules/npm/node_modules/promise-inflight": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/promise-retry": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "inBundle": true, "license": "MIT", @@ -14969,8 +15087,6 @@ }, "node_modules/npm/node_modules/promzard": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", - "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", "dev": true, "inBundle": true, "license": "ISC", @@ -14980,8 +15096,6 @@ }, "node_modules/npm/node_modules/qrcode-terminal": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", - "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", "dev": true, "inBundle": true, "bin": { @@ -14990,8 +15104,6 @@ }, "node_modules/npm/node_modules/read": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "dev": true, "inBundle": true, "license": "ISC", @@ -15028,8 +15140,6 @@ }, "node_modules/npm/node_modules/read-package-json-fast": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, "inBundle": true, "license": "ISC", @@ -15043,8 +15153,6 @@ }, "node_modules/npm/node_modules/readable-stream": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "inBundle": true, "license": "MIT", @@ -15059,8 +15167,6 @@ }, "node_modules/npm/node_modules/readdir-scoped-modules": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", - "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", "dev": true, "inBundle": true, "license": "ISC", @@ -15073,8 +15179,6 @@ }, "node_modules/npm/node_modules/retry": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "inBundle": true, "license": "MIT", @@ -15084,8 +15188,6 @@ }, "node_modules/npm/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "inBundle": true, "license": "ISC", @@ -15101,8 +15203,6 @@ }, "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "inBundle": true, "license": "MIT", @@ -15133,8 +15233,6 @@ }, "node_modules/npm/node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "inBundle": true, "license": "ISC", @@ -15147,8 +15245,6 @@ }, "node_modules/npm/node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -15169,8 +15265,6 @@ }, "node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "inBundle": true, "license": "MIT", @@ -15178,8 +15272,6 @@ }, "node_modules/npm/node_modules/semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "inBundle": true, "license": "ISC", @@ -15195,8 +15287,6 @@ }, "node_modules/npm/node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "inBundle": true, "license": "ISC", @@ -15209,24 +15299,18 @@ }, "node_modules/npm/node_modules/set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/smart-buffer": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, "inBundle": true, "license": "MIT", @@ -15251,8 +15335,6 @@ }, "node_modules/npm/node_modules/socks-proxy-agent": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, "inBundle": true, "license": "MIT", @@ -15267,8 +15349,6 @@ }, "node_modules/npm/node_modules/spdx-correct": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -15279,16 +15359,12 @@ }, "node_modules/npm/node_modules/spdx-exceptions": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true, "inBundle": true, "license": "CC-BY-3.0" }, "node_modules/npm/node_modules/spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "inBundle": true, "license": "MIT", @@ -15305,8 +15381,6 @@ }, "node_modules/npm/node_modules/ssri": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, "inBundle": true, "license": "ISC", @@ -15328,8 +15402,6 @@ }, "node_modules/npm/node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "inBundle": true, "license": "MIT", @@ -15344,8 +15416,6 @@ }, "node_modules/npm/node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "inBundle": true, "license": "MIT", @@ -15358,8 +15428,6 @@ }, "node_modules/npm/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "inBundle": true, "license": "MIT", @@ -15389,24 +15457,18 @@ }, "node_modules/npm/node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/tiny-relative-date": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz", - "integrity": "sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A==", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/treeverse": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-2.0.0.tgz", - "integrity": "sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A==", "dev": true, "inBundle": true, "license": "ISC", @@ -15434,16 +15496,12 @@ }, "node_modules/npm/node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "inBundle": true, "license": "MIT" }, "node_modules/npm/node_modules/validate-npm-package-license": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "inBundle": true, "license": "Apache-2.0", @@ -15454,8 +15512,6 @@ }, "node_modules/npm/node_modules/validate-npm-package-name": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", "dev": true, "inBundle": true, "license": "ISC", @@ -15468,16 +15524,12 @@ }, "node_modules/npm/node_modules/walk-up-path": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", - "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", "dev": true, "inBundle": true, "license": "ISC" }, "node_modules/npm/node_modules/wcwidth": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "inBundle": true, "license": "MIT", @@ -15487,8 +15539,6 @@ }, "node_modules/npm/node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "inBundle": true, "license": "ISC", @@ -15504,8 +15554,6 @@ }, "node_modules/npm/node_modules/wide-align": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "inBundle": true, "license": "ISC", @@ -15515,8 +15563,6 @@ }, "node_modules/npm/node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true, "inBundle": true, "license": "ISC" @@ -15536,8 +15582,6 @@ }, "node_modules/npm/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, "inBundle": true, "license": "ISC" @@ -16019,6 +16063,75 @@ "node": ">=6" } }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dev": true, + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/pac-resolver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", + "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", + "dev": true, + "dependencies": { + "degenerator": "^5.0.0", + "ip": "^1.1.8", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -16171,7 +16284,7 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, "node_modules/performance-now": { @@ -17315,6 +17428,70 @@ "node": ">= 0.10" } }, + "node_modules/proxy-agent": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -17351,32 +17528,44 @@ } }, "node_modules/puppeteer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-2.1.1.tgz", - "integrity": "sha512-LWzaDVQkk1EPiuYeTOj+CZRIjda4k2s5w4MK4xoH2+kgWV/SDlkYHmxatDdtYrciHUKSXTsGgPgPP8ILVdBsxg==", - "deprecated": "Version no longer supported. Upgrade to @latest", + "version": "21.6.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.6.0.tgz", + "integrity": "sha512-u6JhSF7xaPYZ2gd3tvhYI8MwVAjLc3Cazj7UWvMV95A07/y7cIjBwYUiMU9/jm4z0FSUORriLX/RZRaiASNWPw==", "dev": true, "hasInstallScript": true, "dependencies": { - "@types/mime-types": "^2.1.0", - "debug": "^4.1.0", - "extract-zip": "^1.6.6", - "https-proxy-agent": "^4.0.0", - "mime": "^2.0.3", - "mime-types": "^2.1.25", - "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", - "rimraf": "^2.6.1", - "ws": "^6.1.0" + "@puppeteer/browsers": "1.9.0", + "cosmiconfig": "8.3.6", + "puppeteer-core": "21.6.0" + }, + "bin": { + "puppeteer": "lib/esm/puppeteer/node/cli.js" }, "engines": { - "node": ">=8.16.0" + "node": ">=16.13.2" } }, - "node_modules/puppeteer/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "node_modules/puppeteer-core": { + "version": "21.6.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.6.0.tgz", + "integrity": "sha512-1vrzbp2E1JpBwtIIrriWkN+A0afUxkqRuFTC3uASc5ql6iuK9ppOdIU/CPGKwOyB4YFIQ16mRbK0PK19mbXnaQ==", + "dev": true, + "dependencies": { + "@puppeteer/browsers": "1.9.0", + "chromium-bidi": "0.5.1", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1203626", + "ws": "8.14.2" + }, + "engines": { + "node": ">=16.13.2" + } + }, + "node_modules/puppeteer-core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -17390,31 +17579,99 @@ } } }, - "node_modules/puppeteer/node_modules/mime": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz", - "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==", + "node_modules/puppeteer-core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/puppeteer-core/node_modules/ws": { + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "dev": true, - "bin": { - "mime": "cli.js" - }, "engines": { - "node": ">=4.0.0" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/puppeteer/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/puppeteer/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/puppeteer/node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "node_modules/puppeteer/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/puppeteer/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "async-limiter": "~1.0.0" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/puppeteer/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/puppeteer/node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" } }, "node_modules/q": { @@ -17486,6 +17743,12 @@ } ] }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, "node_modules/quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -18112,18 +18375,6 @@ "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/rollup": { "version": "2.52.7", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.52.7.tgz", @@ -18887,6 +19138,16 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/socket.io": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", @@ -19079,6 +19340,63 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/socks/node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, "node_modules/sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -19097,6 +19415,14 @@ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", "dev": true }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-js": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", @@ -19114,14 +19440,6 @@ "source-map": "^0.6.0" } }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", @@ -19442,6 +19760,16 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/streamx": { + "version": "2.15.6", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", + "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", + "dev": true, + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "node_modules/strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -20118,6 +20446,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "dev": true, + "dependencies": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "node_modules/temp-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", @@ -20241,14 +20591,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/terser-webpack-plugin/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -20280,15 +20622,6 @@ "node": ">=10" } }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -20549,12 +20882,6 @@ "node": ">= 0.6" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, "node_modules/typescript": { "version": "4.6.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", @@ -20623,6 +20950,40 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unbzip2-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -20756,6 +21117,12 @@ "requires-port": "^1.0.0" } }, + "node_modules/urlpattern-polyfill": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-9.0.0.tgz", + "integrity": "sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==", + "dev": true + }, "node_modules/util": { "version": "0.12.4", "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", @@ -20922,6 +21289,11 @@ "integrity": "sha1-O+FF5YJxxzylUnndhR8SpoIRSws=", "dev": true }, + "node_modules/wasm-feature-detect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/wasm-feature-detect/-/wasm-feature-detect-1.6.1.tgz", + "integrity": "sha512-R1i9ED8UlLu/foILNB1ck9XS63vdtqU/tP1MCugVekETp/ySCrBZRk5I/zI67cI1wlQYeSonNm1PLjDHZDNg6g==" + }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", @@ -22089,15 +22461,6 @@ "webpack": "^4.4.0 || ^5.9.0" } }, - "node_modules/workbox-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", @@ -22374,7 +22737,7 @@ "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "dependencies": { "buffer-crc32": "~0.2.3", @@ -23772,6 +24135,14 @@ "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", "dev": true }, + "@itk-wasm/image-io": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@itk-wasm/image-io/-/image-io-0.5.0.tgz", + "integrity": "sha512-h7SF9bb+DDLZsH+tpBFZyxCM7Dqf0bbvayhS8/bn3voyTZQy80bEMnPgmRCzUoGWGyDOygbSgqohqJ6IelvDvA==", + "requires": { + "itk-wasm": "^1.0.0-b.154" + } + }, "@jridgewell/gen-mapping": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", @@ -24162,6 +24533,105 @@ "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", "dev": true }, + "@puppeteer/browsers": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.9.0.tgz", + "integrity": "sha512-QwguOLy44YBGC8vuPP2nmpX4MUN2FzWbsnvZJtiCzecU3lHmVZkaC1tq6rToi9a200m8RzlVtDyxCS0UIDrxUg==", + "dev": true, + "requires": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.3.1", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, "@rollup/plugin-babel": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", @@ -24556,12 +25026,23 @@ "resolved": "https://registry.npmjs.org/@thewtex/iconselect.js/-/iconselect.js-2.1.2.tgz", "integrity": "sha512-qbxAJ+5MfBZQGMBwsokNS2zi+ktPIj1YrMT3dQ4+Ed3MR+J7vd0qbQv02e+uPQRFfyTdGxTdH4rBSJjWf2YMuQ==" }, + "@thewtex/zstddec": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@thewtex/zstddec/-/zstddec-0.2.0.tgz", + "integrity": "sha512-lIS+smrfa48WGlDVQSQSm0jBnwVp5XmfGJWU9q0J0fRFY9ohzK4s27Zg2SFMb1NWMp9RiANAdK+/q86EBGWR1Q==" + }, "@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, + "@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, "@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -24710,12 +25191,6 @@ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", "dev": true }, - "@types/mime-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.0.tgz", - "integrity": "sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM=", - "dev": true - }, "@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -24814,6 +25289,16 @@ "@types/node": "*" } }, + "@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, "@web-std/blob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@web-std/blob/-/blob-3.0.4.tgz", @@ -25114,10 +25599,30 @@ "dev": true }, "agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", - "dev": true + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "requires": { + "debug": "^4.3.4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } }, "aggregate-error": { "version": "3.1.0", @@ -25327,6 +25832,15 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, + "ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + } + }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -25342,12 +25856,6 @@ "lodash": "^4.17.14" } }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -25421,6 +25929,12 @@ } } }, + "b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "dev": true + }, "babel-loader": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", @@ -25575,6 +26089,12 @@ "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true }, + "basic-ftp": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", + "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", + "dev": true + }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -25776,7 +26296,7 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, "buffer-from": { @@ -25953,6 +26473,16 @@ } } }, + "chromium-bidi": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.1.tgz", + "integrity": "sha512-dcCqOgq9fHKExc2R4JZs/oKbOghWpUNFAJODS8WKRtLhp3avtIH5UDCBrutdqZdh3pARogH8y1ObXm87emwb3g==", + "dev": true, + "requires": { + "mitt": "3.0.1", + "urlpattern-polyfill": "9.0.0" + } + }, "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -25972,14 +26502,6 @@ "dev": true, "requires": { "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "clean-stack": { @@ -26133,6 +26655,11 @@ "delayed-stream": "~1.0.0" } }, + "comlink": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.1.tgz", + "integrity": "sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==" + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -26221,35 +26748,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - } - } - }, "concat-with-sourcemaps": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", @@ -26257,14 +26755,6 @@ "dev": true, "requires": { "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "conf": { @@ -26566,6 +27056,15 @@ } } }, + "cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dev": true, + "requires": { + "node-fetch": "^2.6.12" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -26688,12 +27187,6 @@ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, @@ -27038,6 +27531,17 @@ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", "dev": true }, + "degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "requires": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + } + }, "del": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", @@ -27092,6 +27596,12 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, + "devtools-protocol": { + "version": "0.0.1203626", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1203626.tgz", + "integrity": "sha512-nEzHZteIUZfGCZtTiS1fRpC8UZmsfD1SiyPvaUNvS13dvKf666OAm8YTi0+Ca3n1nLEyu49Cy4+dPWpaHFJk9g==", + "dev": true + }, "di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", @@ -27666,6 +28176,26 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, "eslint": { "version": "8.13.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.13.0.tgz", @@ -28078,15 +28608,32 @@ "dev": true }, "extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, "requires": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "extsprintf": { @@ -28101,9 +28648,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-fifo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.1.0.tgz", - "integrity": "sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", "dev": true }, "fast-glob": { @@ -28174,7 +28721,7 @@ "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "requires": { "pend": "~1.2.0" @@ -28554,6 +29101,67 @@ "get-intrinsic": "^1.1.1" } }, + "get-uri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.2.tgz", + "integrity": "sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==", + "dev": true, + "requires": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.0", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "data-uri-to-buffer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz", + "integrity": "sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -28767,14 +29375,6 @@ "source-map": "^0.6.1", "uglify-js": "^3.1.4", "wordwrap": "^1.0.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "har-schema": { @@ -29086,19 +29686,19 @@ } }, "https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", "dev": true, "requires": { - "agent-base": "5", + "agent-base": "^7.0.2", "debug": "4" }, "dependencies": { "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -29549,9 +30149,9 @@ "dev": true }, "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true }, "ip-regex": { @@ -30372,20 +30972,12 @@ "iterate-iterator": "^1.0.1" } }, - "itk-image-io": { - "version": "1.0.0-b.84", - "resolved": "https://registry.npmjs.org/itk-image-io/-/itk-image-io-1.0.0-b.84.tgz", - "integrity": "sha512-lqMlvvFT9y3XkmfQZWQ6WUN6Ci6Bu7eb1aV5xex8CsvXhFrEDmuInmlT9f67H2cluTYvuRV6UzEPBnyimUAGZQ==", - "requires": { - "itk-wasm": "1.0.0-b.84" - } - }, "itk-mesh-io": { - "version": "1.0.0-b.84", - "resolved": "https://registry.npmjs.org/itk-mesh-io/-/itk-mesh-io-1.0.0-b.84.tgz", - "integrity": "sha512-fL3FjeztZB9+S1UqBH0mGCofATq+UYnTfx28wpm+COexfOmDeWgJYtftndZY0f7Ztpe6x2bMw+mm7MNd9crB/w==", + "version": "1.0.0-b.158", + "resolved": "https://registry.npmjs.org/itk-mesh-io/-/itk-mesh-io-1.0.0-b.158.tgz", + "integrity": "sha512-mYBqjMoy1HVas4mDl+ggKeOwTqdS7B7WVgPQnNHUSSOyt9Bz4OhYS1smBCoaZ2LpGsKOpCmvLX5mNQ2HIapf/Q==", "requires": { - "itk-wasm": "1.0.0-b.84" + "itk-wasm": "1.0.0-b.158" } }, "itk-viewer-color-maps": { @@ -30404,30 +30996,23 @@ "integrity": "sha512-z5GpPMYMmtxmR+mwHGT5p5cUDcaUbAg1Zvohuh/jCZCMY9a3Mxfcw8gsxiwU2dqj76i0emJj7VVFPXcwO60tMw==" }, "itk-wasm": { - "version": "1.0.0-b.84", - "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.84.tgz", - "integrity": "sha512-iM3ZMVqGv/3kjoe4UUTO0PlyGLMOrmOb0e1e6+5kHu4fnTg6PhNjxLGdanLH/OlX6VSv6LOP6o8rKiC7Xo0zRw==", + "version": "1.0.0-b.158", + "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.158.tgz", + "integrity": "sha512-IHRmwu1zxLmH9auF7kN3BREbom9NGorVhK1g4TRNsr4qRbuHZsZ3RsGRNVqWI2LZamo3Rw9sDYrM7NMA5x0dqQ==", "requires": { "@babel/runtime": "^7.15.4", + "@thewtex/zstddec": "^0.2.0", "@types/emscripten": "^1.39.6", - "axios": "^0.23.0", + "axios": "^1.4.0", + "comlink": "^4.4.1", "commander": "^9.4.0", "fs-extra": "^10.0.0", "glob": "^8.1.0", "markdown-table": "^3.0.3", "mime-types": "^2.1.35", - "promise-file-reader": "^1.0.3", - "webworker-promise": "^0.4.2" + "wasm-feature-detect": "^1.5.1" }, "dependencies": { - "axios": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", - "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", - "requires": { - "follow-redirects": "^1.14.4" - } - }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -30775,12 +31360,6 @@ "requires": { "glob": "^7.1.3" } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, @@ -31797,6 +32376,12 @@ "kind-of": "^6.0.3" } }, + "mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true + }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -31806,6 +32391,12 @@ "minimist": "^1.2.5" } }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "mobx": { "version": "5.15.7", "resolved": "https://registry.npmjs.org/mobx/-/mobx-5.15.7.tgz", @@ -31952,6 +32543,12 @@ "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", "dev": true }, + "netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -31978,9 +32575,9 @@ } }, "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "requires": { "whatwg-url": "^5.0.0" @@ -32158,23 +32755,17 @@ "dependencies": { "@colors/colors": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "bundled": true, "dev": true, "optional": true }, "@gar/promisify": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "bundled": true, "dev": true }, "@isaacs/string-locale-compare": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", - "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "bundled": true, "dev": true }, @@ -32221,8 +32812,6 @@ }, "@npmcli/ci-detect": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-2.0.0.tgz", - "integrity": "sha512-8yQtQ9ArHh/TzdUDKQwEvwCgpDuhSWTDAbiKMl3854PcT+Dk4UmWaiawuFTLy9n5twzXOBXVflWe+90/ffXQrA==", "bundled": true, "dev": true }, @@ -32243,8 +32832,6 @@ }, "@npmcli/disparity-colors": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/disparity-colors/-/disparity-colors-2.0.0.tgz", - "integrity": "sha512-FFXGrIjhvd2qSZ8iS0yDvbI7nbjdyT2VNO7wotosjYZM2p2r8PN3B7Om3M5NO9KqW/OVzfzLB3L0V5Vo5QXC7A==", "bundled": true, "dev": true, "requires": { @@ -32278,8 +32865,6 @@ }, "@npmcli/installed-package-contents": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", "bundled": true, "dev": true, "requires": { @@ -32320,22 +32905,16 @@ }, "@npmcli/name-from-folder": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", - "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", "bundled": true, "dev": true }, "@npmcli/node-gyp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", - "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", "bundled": true, "dev": true }, "@npmcli/package-json": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-2.0.0.tgz", - "integrity": "sha512-42jnZ6yl16GzjWSH7vtrmWyJDGVa/LXPdpN2rcUWolFjc9ON2N3uz0qdBbQACfmhuJZ2lbKYtmK5qx68ZPLHMA==", "bundled": true, "dev": true, "requires": { @@ -32344,8 +32923,6 @@ }, "@npmcli/promise-spawn": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", - "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", "bundled": true, "dev": true, "requires": { @@ -32365,22 +32942,16 @@ }, "@tootallnate/once": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "bundled": true, "dev": true }, "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "bundled": true, "dev": true }, "agent-base": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "bundled": true, "dev": true, "requires": { @@ -32399,8 +32970,6 @@ }, "aggregate-error": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "bundled": true, "dev": true, "requires": { @@ -32410,15 +32979,11 @@ }, "ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "bundled": true, "dev": true }, "ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "bundled": true, "dev": true, "requires": { @@ -32427,15 +32992,11 @@ }, "aproba": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "bundled": true, "dev": true }, "archy": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "bundled": true, "dev": true }, @@ -32450,8 +33011,6 @@ }, "asap": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "bundled": true, "dev": true }, @@ -32475,15 +33034,11 @@ }, "binary-extensions": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "bundled": true, "dev": true }, "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "bundled": true, "dev": true, "requires": { @@ -32492,8 +33047,6 @@ }, "builtins": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "bundled": true, "dev": true, "requires": { @@ -32527,8 +33080,6 @@ }, "chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "bundled": true, "dev": true, "requires": { @@ -32538,15 +33089,11 @@ }, "chownr": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "bundled": true, "dev": true }, "cidr-regex": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/cidr-regex/-/cidr-regex-3.1.1.tgz", - "integrity": "sha512-RBqYd32aDwbCMFJRL6wHOlDNYJsPNTt8vC82ErHF5vKt8QQzxm1FrkW8s/R5pVrXMf17sba09Uoy91PKiddAsw==", "bundled": true, "dev": true, "requires": { @@ -32555,15 +33102,11 @@ }, "clean-stack": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "bundled": true, "dev": true }, "cli-columns": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-columns/-/cli-columns-4.0.0.tgz", - "integrity": "sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ==", "bundled": true, "dev": true, "requires": { @@ -32582,15 +33125,11 @@ }, "clone": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", "bundled": true, "dev": true }, "cmd-shim": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-5.0.0.tgz", - "integrity": "sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==", "bundled": true, "dev": true, "requires": { @@ -32599,8 +33138,6 @@ }, "color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "bundled": true, "dev": true, "requires": { @@ -32609,22 +33146,16 @@ }, "color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "bundled": true, "dev": true }, "color-support": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "bundled": true, "dev": true }, "columnify": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", - "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "bundled": true, "dev": true, "requires": { @@ -32634,29 +33165,21 @@ }, "common-ancestor-path": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "bundled": true, "dev": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "bundled": true, "dev": true }, "debug": { "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "bundled": true, "dev": true, "requires": { @@ -32665,8 +33188,6 @@ "dependencies": { "ms": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "bundled": true, "dev": true } @@ -32674,15 +33195,11 @@ }, "debuglog": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", "bundled": true, "dev": true }, "defaults": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "bundled": true, "dev": true, "requires": { @@ -32691,8 +33208,6 @@ }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "bundled": true, "dev": true }, @@ -32703,8 +33218,6 @@ }, "dezalgo": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "bundled": true, "dev": true, "requires": { @@ -32719,15 +33232,11 @@ }, "emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "bundled": true, "dev": true }, "encoding": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "bundled": true, "dev": true, "optional": true, @@ -32737,29 +33246,21 @@ }, "env-paths": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "bundled": true, "dev": true }, "err-code": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "bundled": true, "dev": true }, "fastest-levenshtein": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", "bundled": true, "dev": true }, "fs-minipass": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "bundled": true, "dev": true, "requires": { @@ -32768,22 +33269,16 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "bundled": true, "dev": true }, "function-bind": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "bundled": true, "dev": true }, "gauge": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "bundled": true, "dev": true, "requires": { @@ -32816,8 +33311,6 @@ }, "has": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "bundled": true, "dev": true, "requires": { @@ -32826,15 +33319,11 @@ }, "has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "bundled": true, "dev": true }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "bundled": true, "dev": true }, @@ -32853,8 +33342,6 @@ }, "http-proxy-agent": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "bundled": true, "dev": true, "requires": { @@ -32865,8 +33352,6 @@ }, "https-proxy-agent": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "bundled": true, "dev": true, "requires": { @@ -32876,8 +33361,6 @@ }, "humanize-ms": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "bundled": true, "dev": true, "requires": { @@ -32886,8 +33369,6 @@ }, "iconv-lite": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "bundled": true, "dev": true, "optional": true, @@ -32897,8 +33378,6 @@ }, "ignore-walk": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "bundled": true, "dev": true, "requires": { @@ -32907,29 +33386,21 @@ }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "bundled": true, "dev": true }, "indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "bundled": true, "dev": true }, "infer-owner": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "bundled": true, "dev": true, "requires": { @@ -32949,8 +33420,6 @@ }, "init-package-json": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-3.0.2.tgz", - "integrity": "sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==", "bundled": true, "dev": true, "requires": { @@ -32970,15 +33439,11 @@ }, "ip-regex": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", "bundled": true, "dev": true }, "is-cidr": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/is-cidr/-/is-cidr-4.0.2.tgz", - "integrity": "sha512-z4a1ENUajDbEl/Q6/pVBpTR1nBjjEE1X7qb7bmWYanNnPoKAvUCPFKeXV6Fe4mgTkWKBqiHIcwsI3SndiO5FeA==", "bundled": true, "dev": true, "requires": { @@ -32995,43 +33460,31 @@ }, "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "bundled": true, "dev": true }, "is-lambda": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "bundled": true, "dev": true }, "json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "bundled": true, "dev": true }, "json-stringify-nice": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", - "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", "bundled": true, "dev": true }, "jsonparse": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "bundled": true, "dev": true }, @@ -33213,8 +33666,6 @@ }, "minipass-collect": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "bundled": true, "dev": true, "requires": { @@ -33234,8 +33685,6 @@ }, "minipass-flush": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "bundled": true, "dev": true, "requires": { @@ -33244,8 +33693,6 @@ }, "minipass-json-stream": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "bundled": true, "dev": true, "requires": { @@ -33255,8 +33702,6 @@ }, "minipass-pipeline": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "bundled": true, "dev": true, "requires": { @@ -33265,8 +33710,6 @@ }, "minipass-sized": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "bundled": true, "dev": true, "requires": { @@ -33275,8 +33718,6 @@ }, "minizlib": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "bundled": true, "dev": true, "requires": { @@ -33286,15 +33727,11 @@ }, "mkdirp": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "bundled": true, "dev": true }, "mkdirp-infer-owner": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", - "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", "bundled": true, "dev": true, "requires": { @@ -33305,22 +33742,16 @@ }, "ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "bundled": true, "dev": true }, "mute-stream": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "bundled": true, "dev": true }, "negotiator": { "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "bundled": true, "dev": true }, @@ -33343,8 +33774,6 @@ "dependencies": { "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "bundled": true, "dev": true, "requires": { @@ -33367,8 +33796,6 @@ }, "minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "bundled": true, "dev": true, "requires": { @@ -33379,8 +33806,6 @@ }, "nopt": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "bundled": true, "dev": true, "requires": { @@ -33400,8 +33825,6 @@ }, "npm-audit-report": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-audit-report/-/npm-audit-report-3.0.0.tgz", - "integrity": "sha512-tWQzfbwz1sc4244Bx2BVELw0EmZlCsCF0X93RDcmmwhonCsPMoEviYsi+32R+mdRvOWXolPce9zo64n2xgPESw==", "bundled": true, "dev": true, "requires": { @@ -33410,8 +33833,6 @@ }, "npm-bundled": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "bundled": true, "dev": true, "requires": { @@ -33420,8 +33841,6 @@ }, "npm-install-checks": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", - "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", "bundled": true, "dev": true, "requires": { @@ -33430,8 +33849,6 @@ }, "npm-normalize-package-bin": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", "bundled": true, "dev": true }, @@ -33492,15 +33909,11 @@ }, "npm-user-validate": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-user-validate/-/npm-user-validate-1.0.1.tgz", - "integrity": "sha512-uQwcd/tY+h1jnEaze6cdX/LrhWhoBxfSknxentoqmIuStxUExxjWd3ULMLFPiFUrZKbOVMowH6Jq2FRWfmhcEw==", "bundled": true, "dev": true }, "npmlog": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", "bundled": true, "dev": true, "requires": { @@ -33512,8 +33925,6 @@ }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "bundled": true, "dev": true, "requires": { @@ -33522,15 +33933,11 @@ }, "opener": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "bundled": true, "dev": true }, "p-map": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "bundled": true, "dev": true, "requires": { @@ -33567,8 +33974,6 @@ }, "parse-conflict-json": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-2.0.2.tgz", - "integrity": "sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==", "bundled": true, "dev": true, "requires": { @@ -33579,22 +33984,16 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "bundled": true, "dev": true }, "proc-log": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", - "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "bundled": true, "dev": true }, "promise-all-reject-late": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", - "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", "bundled": true, "dev": true }, @@ -33605,15 +34004,11 @@ }, "promise-inflight": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", "bundled": true, "dev": true }, "promise-retry": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "bundled": true, "dev": true, "requires": { @@ -33623,8 +34018,6 @@ }, "promzard": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", - "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==", "bundled": true, "dev": true, "requires": { @@ -33633,15 +34026,11 @@ }, "qrcode-terminal": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", - "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", "bundled": true, "dev": true }, "read": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", "bundled": true, "dev": true, "requires": { @@ -33666,8 +34055,6 @@ }, "read-package-json-fast": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "bundled": true, "dev": true, "requires": { @@ -33677,8 +34064,6 @@ }, "readable-stream": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "bundled": true, "dev": true, "requires": { @@ -33689,8 +34074,6 @@ }, "readdir-scoped-modules": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", - "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", "bundled": true, "dev": true, "requires": { @@ -33702,15 +34085,11 @@ }, "retry": { "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "bundled": true, "dev": true }, "rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "bundled": true, "dev": true, "requires": { @@ -33719,8 +34098,6 @@ "dependencies": { "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "bundled": true, "dev": true, "requires": { @@ -33743,8 +34120,6 @@ }, "minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "bundled": true, "dev": true, "requires": { @@ -33755,23 +34130,17 @@ }, "safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "bundled": true, "dev": true }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "bundled": true, "dev": true, "optional": true }, "semver": { "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "bundled": true, "dev": true, "requires": { @@ -33780,8 +34149,6 @@ "dependencies": { "lru-cache": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "bundled": true, "dev": true, "requires": { @@ -33792,22 +34159,16 @@ }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "bundled": true, "dev": true }, "smart-buffer": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "bundled": true, "dev": true }, @@ -33822,8 +34183,6 @@ }, "socks-proxy-agent": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "bundled": true, "dev": true, "requires": { @@ -33834,8 +34193,6 @@ }, "spdx-correct": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "bundled": true, "dev": true, "requires": { @@ -33845,15 +34202,11 @@ }, "spdx-exceptions": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "bundled": true, "dev": true }, "spdx-expression-parse": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "bundled": true, "dev": true, "requires": { @@ -33868,8 +34221,6 @@ }, "ssri": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "bundled": true, "dev": true, "requires": { @@ -33886,8 +34237,6 @@ }, "string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "bundled": true, "dev": true, "requires": { @@ -33898,8 +34247,6 @@ }, "strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "bundled": true, "dev": true, "requires": { @@ -33908,8 +34255,6 @@ }, "supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "bundled": true, "dev": true, "requires": { @@ -33931,22 +34276,16 @@ }, "text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "bundled": true, "dev": true }, "tiny-relative-date": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz", - "integrity": "sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A==", "bundled": true, "dev": true }, "treeverse": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-2.0.0.tgz", - "integrity": "sha512-N5gJCkLu1aXccpOTtqV6ddSEi6ZmGkh3hjmbu1IjcavJK4qyOVQmi0myQKM7z5jVGmD68SJoliaVrMmVObhj6A==", "bundled": true, "dev": true }, @@ -33968,15 +34307,11 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "bundled": true, "dev": true }, "validate-npm-package-license": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "bundled": true, "dev": true, "requires": { @@ -33986,8 +34321,6 @@ }, "validate-npm-package-name": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", - "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", "bundled": true, "dev": true, "requires": { @@ -33996,15 +34329,11 @@ }, "walk-up-path": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", - "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", "bundled": true, "dev": true }, "wcwidth": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "bundled": true, "dev": true, "requires": { @@ -34013,8 +34342,6 @@ }, "which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "bundled": true, "dev": true, "requires": { @@ -34023,8 +34350,6 @@ }, "wide-align": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "bundled": true, "dev": true, "requires": { @@ -34033,8 +34358,6 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "bundled": true, "dev": true }, @@ -34049,8 +34372,6 @@ }, "yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "bundled": true, "dev": true } @@ -34482,6 +34803,60 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dev": true, + "requires": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "pac-resolver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", + "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", + "dev": true, + "requires": { + "degenerator": "^5.0.0", + "ip": "^1.1.8", + "netmask": "^2.0.2" + } + }, "param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -34604,7 +34979,7 @@ "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, "performance-now": { @@ -35402,6 +35777,55 @@ "ipaddr.js": "1.9.1" } }, + "proxy-agent": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "dev": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -35435,38 +35859,82 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "puppeteer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-2.1.1.tgz", - "integrity": "sha512-LWzaDVQkk1EPiuYeTOj+CZRIjda4k2s5w4MK4xoH2+kgWV/SDlkYHmxatDdtYrciHUKSXTsGgPgPP8ILVdBsxg==", + "version": "21.6.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.6.0.tgz", + "integrity": "sha512-u6JhSF7xaPYZ2gd3tvhYI8MwVAjLc3Cazj7UWvMV95A07/y7cIjBwYUiMU9/jm4z0FSUORriLX/RZRaiASNWPw==", "dev": true, "requires": { - "@types/mime-types": "^2.1.0", - "debug": "^4.1.0", - "extract-zip": "^1.6.6", - "https-proxy-agent": "^4.0.0", - "mime": "^2.0.3", - "mime-types": "^2.1.25", - "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", - "rimraf": "^2.6.1", - "ws": "^6.1.0" + "@puppeteer/browsers": "1.9.0", + "cosmiconfig": "8.3.6", + "puppeteer-core": "21.6.0" }, "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "requires": { - "ms": "2.1.2" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" } }, - "mime": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz", - "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==", + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "optional": true, + "peer": true + } + } + }, + "puppeteer-core": { + "version": "21.6.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-21.6.0.tgz", + "integrity": "sha512-1vrzbp2E1JpBwtIIrriWkN+A0afUxkqRuFTC3uASc5ql6iuK9ppOdIU/CPGKwOyB4YFIQ16mRbK0PK19mbXnaQ==", + "dev": true, + "requires": { + "@puppeteer/browsers": "1.9.0", + "chromium-bidi": "0.5.1", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1203626", + "ws": "8.14.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -35474,13 +35942,11 @@ "dev": true }, "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } + "requires": {} } } }, @@ -35523,6 +35989,12 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, "quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -36018,15 +36490,6 @@ "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "rollup": { "version": "2.52.7", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.52.7.tgz", @@ -36622,6 +37085,12 @@ } } }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, "socket.io": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", @@ -36795,6 +37264,52 @@ } } }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "dependencies": { + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + } + } + }, + "socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dev": true, + "requires": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -36810,6 +37325,11 @@ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", "dev": true }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, "source-map-js": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", @@ -36822,13 +37342,6 @@ "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } } }, "sourcemap-codec": { @@ -37113,6 +37626,16 @@ } } }, + "streamx": { + "version": "2.15.6", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", + "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", + "dev": true, + "requires": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -37640,6 +38163,28 @@ "global": "~4.3.0" } }, + "tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", + "dev": true, + "requires": { + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dev": true, + "requires": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "temp-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", @@ -37676,14 +38221,6 @@ "commander": "^2.20.0", "source-map": "~0.6.1", "source-map-support": "~0.5.12" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "terser-webpack-plugin": { @@ -37730,11 +38267,6 @@ "randombytes": "^2.1.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -37969,12 +38501,6 @@ "mime-types": "~2.1.24" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, "typescript": { "version": "4.6.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", @@ -38014,6 +38540,28 @@ "which-boxed-primitive": "^1.0.2" } }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", @@ -38102,6 +38650,12 @@ "requires-port": "^1.0.0" } }, + "urlpattern-polyfill": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-9.0.0.tgz", + "integrity": "sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==", + "dev": true + }, "util": { "version": "0.12.4", "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", @@ -38237,6 +38791,11 @@ "integrity": "sha1-O+FF5YJxxzylUnndhR8SpoIRSws=", "dev": true }, + "wasm-feature-detect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/wasm-feature-detect/-/wasm-feature-detect-1.6.1.tgz", + "integrity": "sha512-R1i9ED8UlLu/foILNB1ck9XS63vdtqU/tP1MCugVekETp/ySCrBZRk5I/zI67cI1wlQYeSonNm1PLjDHZDNg6g==" + }, "watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", @@ -39132,12 +39691,6 @@ "workbox-build": "6.5.1" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "webpack-sources": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", @@ -39345,7 +39898,7 @@ "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "requires": { "buffer-crc32": "~0.2.3", diff --git a/package.json b/package.json index e890a80af..6ad8eef0d 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "main": "./dist/itkVtkViewer.js", "types": "./src/index.d.ts", "dependencies": { + "@itk-wasm/image-io": "^0.5.0", "@kitware/vtk.js": "^26.9.15", "@material/web": "^1.0.0-pre.4", "@thewtex/iconselect.js": "^2.1.2", @@ -41,12 +42,11 @@ "eventemitter3": "^4.0.7", "express": "^4.17.1", "gl-matrix": "^3.4.3", - "itk-image-io": "^1.0.0-b.84", - "itk-mesh-io": "^1.0.0-b.84", + "itk-mesh-io": "^1.0.0-b.158", "itk-viewer-color-maps": "^1.2.0", "itk-viewer-icons": "11.14.0", "itk-viewer-transfer-function-editor": "^1.2.5", - "itk-wasm": "^1.0.0-b.83", + "itk-wasm": "^1.0.0-b.158", "mobx": "^5.15.7", "mousetrap": "^1.6.5", "open": "^6.4.0", @@ -98,7 +98,7 @@ "postcss-loader": "^4.1.0", "prettier": "^1.19.1", "process": "^0.11.10", - "puppeteer": "^2.1.1", + "puppeteer": "^21.6.0", "raw-loader": "^4.0.2", "readable-stream": "^3.6.0", "request": "^2.88.2", @@ -132,6 +132,7 @@ "build:release": "webpack --progress --color --mode production", "build:ui": "node ./buildUI.js", "build:test-ui": "rollup -c ./test/test-ui-rollup.config.js", + "build:blosc": "itk-wasm -i itkwasm/emscripten:latest -s src/Compression/blosc-zarr -b emscripten-build build", "prepack": "npm run build", "bundle": "StandaloneHTML ./dist/index.html ./dist/ItkVtkViewer.html", "commit": "git cz", diff --git a/dist/favicon-32x32.png b/public/favicon-32x32.png similarity index 100% rename from dist/favicon-32x32.png rename to public/favicon-32x32.png diff --git a/dist/index.html b/public/index.html similarity index 100% rename from dist/index.html rename to public/index.html diff --git a/dist/manifest.json b/public/manifest.json similarity index 100% rename from dist/manifest.json rename to public/manifest.json diff --git a/src/Compression/blosc-zarr/.gitignore b/src/Compression/blosc-zarr/.gitignore new file mode 100644 index 000000000..9ea6666ac --- /dev/null +++ b/src/Compression/blosc-zarr/.gitignore @@ -0,0 +1,2 @@ +/emscripten-build/* +!emscripten-build/BloscZarr* \ No newline at end of file diff --git a/src/Compression/blosc-zarr/BloscZarr.cxx b/src/Compression/blosc-zarr/BloscZarr.cxx index 775ab16ba..f09be54d3 100644 --- a/src/Compression/blosc-zarr/BloscZarr.cxx +++ b/src/Compression/blosc-zarr/BloscZarr.cxx @@ -8,7 +8,7 @@ int main(int argc, char * argv[]){ - itk::wasm::Pipeline pipeline ("Compress or decompress binaries with Blosc", argc, argv); + itk::wasm::Pipeline pipeline ("BloscZarr", "Compress or decompress binaries with Blosc", argc, argv); itk::wasm::InputBinaryStream input_binary_stream; pipeline.add_option("input-binary-stream", input_binary_stream, "The input binary stream")->required(); diff --git a/src/Compression/blosc-zarr/CMakeLists.txt b/src/Compression/blosc-zarr/CMakeLists.txt index 8c522d526..bcfcd6d13 100644 --- a/src/Compression/blosc-zarr/CMakeLists.txt +++ b/src/Compression/blosc-zarr/CMakeLists.txt @@ -8,10 +8,6 @@ set(BUILD_BENCHMARKS OFF CACHE BOOL "Build benchmark programs form the blosc com if(EMSCRIPTEN OR WASI) set(HAVE_THREADS OFF CACHE BOOL "Whether we use threading") endif() -if(EMSCRIPTEN) - set(CMAKE_C_FLAGS "-s STRICT=1") - set(CMAKE_EXE_LINKER_FLAGS "-s STRICT=1") -endif() add_subdirectory(c-blosc) find_package(ITK REQUIRED diff --git a/src/Compression/blosc-zarr/c-blosc b/src/Compression/blosc-zarr/c-blosc index 396d473e3..b886c1191 160000 --- a/src/Compression/blosc-zarr/c-blosc +++ b/src/Compression/blosc-zarr/c-blosc @@ -1 +1 @@ -Subproject commit 396d473e3da47fa1dfacf0c6d163badf3bb4f8b1 +Subproject commit b886c1191e86a5a561e63fb7345ff6c2b283cdac diff --git a/src/IO/Compare/emscripten-build/Compare.umd.js b/src/Compression/blosc-zarr/emscripten-build/BloscZarr.js similarity index 89% rename from src/IO/Compare/emscripten-build/Compare.umd.js rename to src/Compression/blosc-zarr/emscripten-build/BloscZarr.js index 11936d189..e4a37a845 100644 --- a/src/IO/Compare/emscripten-build/Compare.umd.js +++ b/src/Compression/blosc-zarr/emscripten-build/BloscZarr.js @@ -1,13 +1,8 @@ -var Compare = (() => { - var _scriptDir = - typeof document !== 'undefined' && document.currentScript - ? document.currentScript.src - : undefined - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename - return function(Compare) { - Compare = Compare || {} +var BloscZarr = (() => { + var _scriptDir = import.meta.url - var Module = typeof Compare != 'undefined' ? Compare : {} + return async function(BloscZarr = {}) { + var Module = typeof BloscZarr != 'undefined' ? BloscZarr : {} var readyPromiseResolve, readyPromiseReject Module['ready'] = new Promise(function(resolve, reject) { readyPromiseResolve = resolve @@ -55,18 +50,17 @@ var Compare = (() => { return scriptDirectory + path } var read_, readAsync, readBinary, setWindowTitle - function logExceptionOnExit(e) { - if (e instanceof ExitStatus) return - let toLog = e - err('exiting due to exception: ' + toLog) - } if (ENVIRONMENT_IS_NODE) { + const { createRequire: createRequire } = await import('module') + var require = createRequire(import.meta.url) var fs = require('fs') var nodePath = require('path') if (ENVIRONMENT_IS_WORKER) { scriptDirectory = nodePath.dirname(scriptDirectory) + '/' } else { - scriptDirectory = __dirname + '/' + scriptDirectory = require('url').fileURLToPath( + new URL('./', import.meta.url) + ) } read_ = (filename, binary) => { filename = isFileURI(filename) @@ -90,25 +84,13 @@ var Compare = (() => { else onload(data.buffer) }) } - if (process['argv'].length > 1) { - thisProgram = process['argv'][1].replace(/\\/g, '/') + if (!Module['thisProgram'] && process.argv.length > 1) { + thisProgram = process.argv[1].replace(/\\/g, '/') } - arguments_ = process['argv'].slice(2) - process['on']('uncaughtException', function(ex) { - if (!(ex instanceof ExitStatus)) { - throw ex - } - }) - process['on']('unhandledRejection', function(reason) { - throw reason - }) + arguments_ = process.argv.slice(2) quit_ = (status, toThrow) => { - if (keepRuntimeAlive()) { - process['exitCode'] = status - throw toThrow - } - logExceptionOnExit(toThrow) - process['exit'](status) + process.exitCode = status + throw toThrow } Module['inspect'] = function() { return '[Emscripten Module object]' @@ -185,131 +167,27 @@ var Compare = (() => { abort(text) } } - var UTF8Decoder = - typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined - function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { - var endIdx = idx + maxBytesToRead - var endPtr = idx - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)) - } - var str = '' - while (idx < endPtr) { - var u0 = heapOrArray[idx++] - if (!(u0 & 128)) { - str += String.fromCharCode(u0) - continue - } - var u1 = heapOrArray[idx++] & 63 - if ((u0 & 224) == 192) { - str += String.fromCharCode(((u0 & 31) << 6) | u1) - continue - } - var u2 = heapOrArray[idx++] & 63 - if ((u0 & 240) == 224) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2 - } else { - u0 = - ((u0 & 7) << 18) | - (u1 << 12) | - (u2 << 6) | - (heapOrArray[idx++] & 63) - } - if (u0 < 65536) { - str += String.fromCharCode(u0) - } else { - var ch = u0 - 65536 - str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)) - } - } - return str - } - function UTF8ToString(ptr, maxBytesToRead) { - return ptr ? UTF8ArrayToString(HEAPU8, 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 < str.length; ++i) { - var u = str.charCodeAt(i) - if (u >= 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, HEAPU8, outPtr, maxBytesToWrite) + var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64 + function updateMemoryViews() { + var b = wasmMemory.buffer + Module['HEAP8'] = HEAP8 = new Int8Array(b) + Module['HEAP16'] = HEAP16 = new Int16Array(b) + Module['HEAP32'] = HEAP32 = new Int32Array(b) + Module['HEAPU8'] = HEAPU8 = new Uint8Array(b) + Module['HEAPU16'] = HEAPU16 = new Uint16Array(b) + Module['HEAPU32'] = HEAPU32 = new Uint32Array(b) + Module['HEAPF32'] = HEAPF32 = new Float32Array(b) + Module['HEAPF64'] = HEAPF64 = new Float64Array(b) } - function lengthBytesUTF8(str) { - var len = 0 - for (var i = 0; i < str.length; ++i) { - var c = str.charCodeAt(i) - if (c <= 127) { - len++ - } else if (c <= 2047) { - len += 2 - } else if (c >= 55296 && c <= 57343) { - len += 4 - ++i - } else { - len += 3 - } - } - return len - } - var buffer, - HEAP8, - HEAPU8, - HEAP16, - HEAPU16, - HEAP32, - HEAPU32, - HEAPF32, - HEAPF64 - 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 var wasmTable var __ATPRERUN__ = [] var __ATINIT__ = [] var __ATMAIN__ = [] var __ATPOSTRUN__ = [] var runtimeInitialized = false + var runtimeKeepaliveCounter = 0 function keepRuntimeAlive() { - return noExitRuntime + return noExitRuntime || runtimeKeepaliveCounter > 0 } function preRun() { if (Module['preRun']) { @@ -400,9 +278,13 @@ var Compare = (() => { return filename.startsWith('file://') } var wasmBinaryFile - wasmBinaryFile = 'Compare.umd.wasm' - if (!isDataURI(wasmBinaryFile)) { - wasmBinaryFile = locateFile(wasmBinaryFile) + if (Module['locateFile']) { + wasmBinaryFile = 'BloscZarr.wasm' + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile) + } + } else { + wasmBinaryFile = new URL('BloscZarr.wasm', import.meta.url).href } function getBinary(file) { try { @@ -417,26 +299,24 @@ var Compare = (() => { abort(err) } } - function getBinaryPromise() { + function getBinaryPromise(binaryFile) { if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { - if (typeof fetch == 'function' && !isFileURI(wasmBinaryFile)) { - return fetch(wasmBinaryFile, { credentials: 'same-origin' }) + if (typeof fetch == 'function' && !isFileURI(binaryFile)) { + return fetch(binaryFile, { credentials: 'same-origin' }) .then(function(response) { if (!response['ok']) { - throw "failed to load wasm binary file at '" + - wasmBinaryFile + - "'" + throw "failed to load wasm binary file at '" + binaryFile + "'" } return response['arrayBuffer']() }) .catch(function() { - return getBinary(wasmBinaryFile) + return getBinary(binaryFile) }) } else { if (readAsync) { return new Promise(function(resolve, reject) { readAsync( - wasmBinaryFile, + binaryFile, function(response) { resolve(new Uint8Array(response)) }, @@ -447,70 +327,75 @@ var Compare = (() => { } } return Promise.resolve().then(function() { - return getBinary(wasmBinaryFile) + return getBinary(binaryFile) }) } + function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile) + .then(function(binary) { + return WebAssembly.instantiate(binary, imports) + }) + .then(function(instance) { + return instance + }) + .then(receiver, function(reason) { + err('failed to asynchronously prepare wasm: ' + reason) + abort(reason) + }) + } + function instantiateAsync(binary, binaryFile, imports, callback) { + if ( + !binary && + typeof WebAssembly.instantiateStreaming == 'function' && + !isDataURI(binaryFile) && + !isFileURI(binaryFile) && + !ENVIRONMENT_IS_NODE && + typeof fetch == 'function' + ) { + return fetch(binaryFile, { credentials: 'same-origin' }).then(function( + response + ) { + var result = WebAssembly.instantiateStreaming(response, imports) + return result.then(callback, function(reason) { + err('wasm streaming compile failed: ' + reason) + err('falling back to ArrayBuffer instantiation') + return instantiateArrayBuffer(binaryFile, imports, callback) + }) + }) + } else { + return instantiateArrayBuffer(binaryFile, imports, callback) + } + } function createWasm() { - var info = { a: asmLibraryArg } + var info = { a: wasmImports } function receiveInstance(instance, module) { var exports = instance.exports Module['asm'] = exports wasmMemory = Module['asm']['s'] - updateGlobalBufferAndViews(wasmMemory.buffer) + updateMemoryViews() wasmTable = Module['asm']['D'] addOnInit(Module['asm']['t']) removeRunDependency('wasm-instantiate') + return exports } addRunDependency('wasm-instantiate') function receiveInstantiationResult(result) { receiveInstance(result['instance']) } - 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) && - !isFileURI(wasmBinaryFile) && - !ENVIRONMENT_IS_NODE && - 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 + return Module['instantiateWasm'](info, receiveInstance) } catch (e) { err('Module.instantiateWasm callback failed with error: ' + e) readyPromiseReject(e) } } - instantiateAsync().catch(readyPromiseReject) + instantiateAsync( + wasmBinary, + wasmBinaryFile, + info, + receiveInstantiationResult + ).catch(readyPromiseReject) return {} } var tempDouble @@ -529,33 +414,33 @@ var Compare = (() => { this.excPtr = excPtr this.ptr = excPtr - 24 this.set_type = function(type) { - HEAPU32[(this.ptr + 4) >> 2] = type + HEAPU32[(this.ptr + 4) >>> 2] = type } this.get_type = function() { - return HEAPU32[(this.ptr + 4) >> 2] + return HEAPU32[(this.ptr + 4) >>> 2] } this.set_destructor = function(destructor) { - HEAPU32[(this.ptr + 8) >> 2] = destructor + HEAPU32[(this.ptr + 8) >>> 2] = destructor } this.get_destructor = function() { - return HEAPU32[(this.ptr + 8) >> 2] + return HEAPU32[(this.ptr + 8) >>> 2] } this.set_refcount = function(refcount) { - HEAP32[this.ptr >> 2] = refcount + HEAP32[this.ptr >>> 2] = refcount } this.set_caught = function(caught) { caught = caught ? 1 : 0 - HEAP8[(this.ptr + 12) >> 0] = caught + HEAP8[(this.ptr + 12) >>> 0] = caught } this.get_caught = function() { - return HEAP8[(this.ptr + 12) >> 0] != 0 + return HEAP8[(this.ptr + 12) >>> 0] != 0 } this.set_rethrown = function(rethrown) { rethrown = rethrown ? 1 : 0 - HEAP8[(this.ptr + 13) >> 0] = rethrown + HEAP8[(this.ptr + 13) >>> 0] = rethrown } this.get_rethrown = function() { - return HEAP8[(this.ptr + 13) >> 0] != 0 + return HEAP8[(this.ptr + 13) >>> 0] != 0 } this.init = function(type, destructor) { this.set_adjusted_ptr(0) @@ -566,24 +451,24 @@ var Compare = (() => { this.set_rethrown(false) } this.add_ref = function() { - var value = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = value + 1 + var value = HEAP32[this.ptr >>> 2] + HEAP32[this.ptr >>> 2] = value + 1 } this.release_ref = function() { - var prev = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = prev - 1 + var prev = HEAP32[this.ptr >>> 2] + HEAP32[this.ptr >>> 2] = prev - 1 return prev === 1 } this.set_adjusted_ptr = function(adjustedPtr) { - HEAPU32[(this.ptr + 16) >> 2] = adjustedPtr + HEAPU32[(this.ptr + 16) >>> 2] = adjustedPtr } this.get_adjusted_ptr = function() { - return HEAPU32[(this.ptr + 16) >> 2] + return HEAPU32[(this.ptr + 16) >>> 2] } this.get_exception_ptr = function() { var isPointer = ___cxa_is_pointer_type(this.get_type()) if (isPointer) { - return HEAPU32[this.excPtr >> 2] + return HEAPU32[this.excPtr >>> 2] } var adjusted = this.get_adjusted_ptr() if (adjusted !== 0) return adjusted @@ -597,10 +482,10 @@ var Compare = (() => { info.init(type, destructor) exceptionLast = ptr uncaughtExceptionCount++ - throw ptr + throw exceptionLast } function setErrNo(value) { - HEAP32[___errno_location() >> 2] = value + HEAP32[___errno_location() >>> 2] = value return value } var PATH = { @@ -673,23 +558,27 @@ var Compare = (() => { return PATH.normalize(l + '/' + r) }, } - function getRandomDevice() { + function initRandomFill() { if ( typeof crypto == 'object' && typeof crypto['getRandomValues'] == 'function' ) { - var randomBuffer = new Uint8Array(1) - return () => { - crypto.getRandomValues(randomBuffer) - return randomBuffer[0] - } + return view => crypto.getRandomValues(view) } else if (ENVIRONMENT_IS_NODE) { try { var crypto_module = require('crypto') - return () => crypto_module['randomBytes'](1)[0] + var randomFillSync = crypto_module['randomFillSync'] + if (randomFillSync) { + return view => crypto_module['randomFillSync'](view) + } + var randomBytes = crypto_module['randomBytes'] + return view => (view.set(randomBytes(view.byteLength)), view) } catch (e) {} } - return () => abort('randomDevice') + abort('initRandomDevice') + } + function randomFill(view) { + return (randomFill = initRandomFill())(view) } var PATH_FS = { resolve: function() { @@ -744,6 +633,57 @@ var Compare = (() => { return outputParts.join('/') }, } + function lengthBytesUTF8(str) { + var len = 0 + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i) + if (c <= 127) { + len++ + } else if (c <= 2047) { + len += 2 + } else if (c >= 55296 && c <= 57343) { + len += 4 + ++i + } else { + len += 3 + } + } + return len + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + outIdx >>>= 0 + if (!(maxBytesToWrite > 0)) return 0 + var startIdx = outIdx + var endIdx = outIdx + maxBytesToWrite - 1 + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i) + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i) + u = (65536 + ((u & 1023) << 10)) | (u1 & 1023) + } + if (u <= 127) { + if (outIdx >= endIdx) break + heap[outIdx++ >>> 0] = u + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break + heap[outIdx++ >>> 0] = 192 | (u >> 6) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break + heap[outIdx++ >>> 0] = 224 | (u >> 12) + heap[outIdx++ >>> 0] = 128 | ((u >> 6) & 63) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } else { + if (outIdx + 3 >= endIdx) break + heap[outIdx++ >>> 0] = 240 | (u >> 18) + heap[outIdx++ >>> 0] = 128 | ((u >> 12) & 63) + heap[outIdx++ >>> 0] = 128 | ((u >> 6) & 63) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } + } + heap[outIdx >>> 0] = 0 + return outIdx - startIdx + } function intArrayFromString(stringy, dontAddNull, length) { var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1 var u8array = new Array(len) @@ -982,6 +922,7 @@ var Compare = (() => { return new Uint8Array(node.contents) }, expandFileStorage: function(node, newCapacity) { + newCapacity >>>= 0 var prevCapacity = node.contents ? node.contents.length : 0 if (prevCapacity >= newCapacity) return var CAPACITY_DOUBLING_MAX = 1024 * 1024 @@ -998,6 +939,7 @@ var Compare = (() => { node.contents.set(oldContents.subarray(0, node.usedBytes), 0) }, resizeFileStorage: function(node, newSize) { + newSize >>>= 0 if (node.usedBytes == newSize) return if (newSize == 0) { node.contents = null @@ -1188,7 +1130,7 @@ var Compare = (() => { var ptr var allocated var contents = stream.node.contents - if (!(flags & 2) && contents.buffer === buffer) { + if (!(flags & 2) && contents.buffer === HEAP8.buffer) { allocated = false ptr = contents.byteOffset } else { @@ -1208,7 +1150,8 @@ var Compare = (() => { if (!ptr) { throw new FS.ErrnoError(48) } - HEAP8.set(contents, ptr) + ptr >>>= 0 + HEAP8.set(contents, ptr >>> 0) } return { ptr: ptr, allocated: allocated } }, @@ -1245,7 +1188,7 @@ var Compare = (() => { isWindows: false, staticInit: () => { NODEFS.isWindows = !!process.platform.match(/^win/) - var flags = process['binding']('constants') + var flags = process.binding('constants') if (flags['fs']) { flags = flags['fs'] } @@ -2357,6 +2300,7 @@ var Compare = (() => { return stream.position }, read: (stream, buffer, offset, length, position) => { + offset >>>= 0 if (length < 0 || position < 0) { throw new FS.ErrnoError(28) } @@ -2389,6 +2333,7 @@ var Compare = (() => { return bytesRead }, write: (stream, buffer, offset, length, position, canOwn) => { + offset >>>= 0 if (length < 0 || position < 0) { throw new FS.ErrnoError(28) } @@ -2459,6 +2404,7 @@ var Compare = (() => { return stream.stream_ops.mmap(stream, length, position, prot, flags) }, msync: (stream, buffer, offset, length, mmapFlags) => { + offset >>>= 0 if (!stream.stream_ops.msync) { return 0 } @@ -2542,9 +2488,16 @@ var Compare = (() => { TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops) FS.mkdev('/dev/tty', FS.makedev(5, 0)) FS.mkdev('/dev/tty1', FS.makedev(6, 0)) - var random_device = getRandomDevice() - FS.createDevice('/dev', 'random', random_device) - FS.createDevice('/dev', 'urandom', random_device) + var randomBuffer = new Uint8Array(1024), + randomLeft = 0 + var randomByte = () => { + if (randomLeft === 0) { + randomLeft = randomFill(randomBuffer).byteLength + } + return randomBuffer[--randomLeft] + } + FS.createDevice('/dev', 'random', randomByte) + FS.createDevice('/dev', 'urandom', randomByte) FS.mkdir('/dev/shm') FS.mkdir('/dev/shm/tmp') }, @@ -2600,6 +2553,7 @@ var Compare = (() => { ensureErrnoError: () => { if (FS.ErrnoError) return FS.ErrnoError = function ErrnoError(errno, node) { + this.name = 'ErrnoError' this.node = node this.setErrno = function(errno) { this.errno = errno @@ -3022,114 +2976,51 @@ var Compare = (() => { processData(url) } }, - indexedDB: () => { - return ( - window.indexedDB || - window.mozIndexedDB || - window.webkitIndexedDB || - window.msIndexedDB - ) - }, - DB_NAME: () => { - return 'EM_FS_' + window.location.pathname - }, - DB_VERSION: 20, - DB_STORE_NAME: 'FILE_DATA', - saveFilesToDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) - } - openRequest.onupgradeneeded = () => { - out('creating db') - var db = openRequest.result - db.createObjectStore(FS.DB_STORE_NAME) - } - openRequest.onsuccess = () => { - var db = openRequest.result - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite') - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var putRequest = files.put( - FS.analyzePath(path).object.contents, - path - ) - putRequest.onsuccess = () => { - ok++ - if (ok + fail == total) finish() - } - putRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror + } + var UTF8Decoder = + typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined + function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + idx >>>= 0 + var endIdx = idx + maxBytesToRead + var endPtr = idx + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr + if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { + return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)) + } + var str = '' + while (idx < endPtr) { + var u0 = heapOrArray[idx++] + if (!(u0 & 128)) { + str += String.fromCharCode(u0) + continue } - openRequest.onerror = onerror - }, - loadFilesFromDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) + var u1 = heapOrArray[idx++] & 63 + if ((u0 & 224) == 192) { + str += String.fromCharCode(((u0 & 31) << 6) | u1) + continue } - openRequest.onupgradeneeded = onerror - openRequest.onsuccess = () => { - var db = openRequest.result - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly') - } catch (e) { - onerror(e) - return - } - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var getRequest = files.get(path) - getRequest.onsuccess = () => { - if (FS.analyzePath(path).exists) { - FS.unlink(path) - } - FS.createDataFile( - PATH.dirname(path), - PATH.basename(path), - getRequest.result, - true, - true, - true - ) - ok++ - if (ok + fail == total) finish() - } - getRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror + var u2 = heapOrArray[idx++] & 63 + if ((u0 & 240) == 224) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2 + } else { + u0 = + ((u0 & 7) << 18) | + (u1 << 12) | + (u2 << 6) | + (heapOrArray[idx++] & 63) } - openRequest.onerror = onerror - }, + if (u0 < 65536) { + str += String.fromCharCode(u0) + } else { + var ch = u0 - 65536 + str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)) + } + } + return str + } + function UTF8ToString(ptr, maxBytesToRead) { + ptr >>>= 0 + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : '' } var SYSCALLS = { DEFAULT_POLLMASK: 5, @@ -3165,13 +3056,13 @@ var Compare = (() => { } throw e } - HEAP32[buf >> 2] = stat.dev - HEAP32[(buf + 8) >> 2] = stat.ino - HEAP32[(buf + 12) >> 2] = stat.mode - HEAPU32[(buf + 16) >> 2] = stat.nlink - HEAP32[(buf + 20) >> 2] = stat.uid - HEAP32[(buf + 24) >> 2] = stat.gid - HEAP32[(buf + 28) >> 2] = stat.rdev + HEAP32[buf >>> 2] = stat.dev + HEAP32[(buf + 8) >>> 2] = stat.ino + HEAP32[(buf + 12) >>> 2] = stat.mode + HEAPU32[(buf + 16) >>> 2] = stat.nlink + HEAP32[(buf + 20) >>> 2] = stat.uid + HEAP32[(buf + 24) >>> 2] = stat.gid + HEAP32[(buf + 28) >>> 2] = stat.rdev ;(tempI64 = [ stat.size >>> 0, ((tempDouble = stat.size), @@ -3185,10 +3076,10 @@ var Compare = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 40) >> 2] = tempI64[0]), - (HEAP32[(buf + 44) >> 2] = tempI64[1]) - HEAP32[(buf + 48) >> 2] = 4096 - HEAP32[(buf + 52) >> 2] = stat.blocks + (HEAP32[(buf + 40) >>> 2] = tempI64[0]), + (HEAP32[(buf + 44) >>> 2] = tempI64[1]) + HEAP32[(buf + 48) >>> 2] = 4096 + HEAP32[(buf + 52) >>> 2] = stat.blocks var atime = stat.atime.getTime() var mtime = stat.mtime.getTime() var ctime = stat.ctime.getTime() @@ -3205,9 +3096,9 @@ var Compare = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 56) >> 2] = tempI64[0]), - (HEAP32[(buf + 60) >> 2] = tempI64[1]) - HEAPU32[(buf + 64) >> 2] = (atime % 1e3) * 1e3 + (HEAP32[(buf + 56) >>> 2] = tempI64[0]), + (HEAP32[(buf + 60) >>> 2] = tempI64[1]) + HEAPU32[(buf + 64) >>> 2] = (atime % 1e3) * 1e3 ;(tempI64 = [ Math.floor(mtime / 1e3) >>> 0, ((tempDouble = Math.floor(mtime / 1e3)), @@ -3221,9 +3112,9 @@ var Compare = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 72) >> 2] = tempI64[0]), - (HEAP32[(buf + 76) >> 2] = tempI64[1]) - HEAPU32[(buf + 80) >> 2] = (mtime % 1e3) * 1e3 + (HEAP32[(buf + 72) >>> 2] = tempI64[0]), + (HEAP32[(buf + 76) >>> 2] = tempI64[1]) + HEAPU32[(buf + 80) >>> 2] = (mtime % 1e3) * 1e3 ;(tempI64 = [ Math.floor(ctime / 1e3) >>> 0, ((tempDouble = Math.floor(ctime / 1e3)), @@ -3237,9 +3128,9 @@ var Compare = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 88) >> 2] = tempI64[0]), - (HEAP32[(buf + 92) >> 2] = tempI64[1]) - HEAPU32[(buf + 96) >> 2] = (ctime % 1e3) * 1e3 + (HEAP32[(buf + 88) >>> 2] = tempI64[0]), + (HEAP32[(buf + 92) >>> 2] = tempI64[1]) + HEAPU32[(buf + 96) >>> 2] = (ctime % 1e3) * 1e3 ;(tempI64 = [ stat.ino >>> 0, ((tempDouble = stat.ino), @@ -3253,8 +3144,8 @@ var Compare = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 104) >> 2] = tempI64[0]), - (HEAP32[(buf + 108) >> 2] = tempI64[1]) + (HEAP32[(buf + 104) >>> 2] = tempI64[0]), + (HEAP32[(buf + 108) >>> 2] = tempI64[1]) return 0 }, doMsync: function(addr, stream, len, flags, offset) { @@ -3264,13 +3155,14 @@ var Compare = (() => { if (flags & 2) { return 0 } + addr >>>= 0 var buffer = HEAPU8.slice(addr, addr + len) FS.msync(stream, buffer, offset, len, flags) }, varargs: undefined, get: function() { SYSCALLS.varargs += 4 - var ret = HEAP32[(SYSCALLS.varargs - 4) >> 2] + var ret = HEAP32[(SYSCALLS.varargs - 4) >>> 2] return ret }, getStr: function(ptr) { @@ -3310,7 +3202,7 @@ var Compare = (() => { case 5: { var arg = SYSCALLS.get() var offset = 0 - HEAP16[(arg + offset) >> 1] = 2 + HEAP16[(arg + offset) >>> 1] = 2 return 0 } case 6: @@ -3327,10 +3219,13 @@ var Compare = (() => { } } } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite) + } function ___syscall_getcwd(buf, size) { try { if (size === 0) return -28 @@ -3340,7 +3235,7 @@ var Compare = (() => { stringToUTF8(cwd, buf, size) return cwdLengthInBytes } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3366,7 +3261,7 @@ var Compare = (() => { case 21519: { if (!stream.tty) return -59 var argp = SYSCALLS.get() - HEAP32[argp >> 2] = 0 + HEAP32[argp >>> 2] = 0 return 0 } case 21520: { @@ -3389,7 +3284,7 @@ var Compare = (() => { return -28 } } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3401,7 +3296,7 @@ var Compare = (() => { var mode = varargs ? SYSCALLS.get() : 0 return FS.open(path, flags, mode).fd } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3412,12 +3307,12 @@ var Compare = (() => { if (bufsize <= 0) return -28 var ret = FS.readlink(path) var len = Math.min(bufsize, lengthBytesUTF8(ret)) - var endChar = HEAP8[buf + len] + var endChar = HEAP8[(buf + len) >>> 0] stringToUTF8(ret, buf, bufsize + 1) - HEAP8[buf + len] = endChar + HEAP8[(buf + len) >>> 0] = endChar return len } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3426,7 +3321,7 @@ var Compare = (() => { path = SYSCALLS.getStr(path) return SYSCALLS.doStat(FS.stat, path, buf) } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3434,15 +3329,16 @@ var Compare = (() => { abort('') } function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.copyWithin(dest, src, src + num) + HEAPU8.copyWithin(dest >>> 0, src >>> 0, (src + num) >>> 0) } function getHeapMax() { - return 2147483648 + return 4294901760 } function emscripten_realloc_buffer(size) { + var b = wasmMemory.buffer try { - wasmMemory.grow((size - buffer.byteLength + 65535) >>> 16) - updateGlobalBufferAndViews(wasmMemory.buffer) + wasmMemory.grow((size - b.byteLength + 65535) >>> 16) + updateMemoryViews() return 1 } catch (e) {} } @@ -3506,30 +3402,30 @@ var Compare = (() => { } return getEnvStrings.strings } - function writeAsciiToMemory(str, buffer, dontAddNull) { + function stringToAscii(str, buffer) { for (var i = 0; i < str.length; ++i) { - HEAP8[buffer++ >> 0] = str.charCodeAt(i) + HEAP8[buffer++ >>> 0] = str.charCodeAt(i) } - if (!dontAddNull) HEAP8[buffer >> 0] = 0 + HEAP8[buffer >>> 0] = 0 } function _environ_get(__environ, environ_buf) { var bufSize = 0 getEnvStrings().forEach(function(string, i) { var ptr = environ_buf + bufSize - HEAPU32[(__environ + i * 4) >> 2] = ptr - writeAsciiToMemory(string, ptr) + HEAPU32[(__environ + i * 4) >>> 2] = ptr + stringToAscii(string, ptr) bufSize += string.length + 1 }) return 0 } function _environ_sizes_get(penviron_count, penviron_buf_size) { var strings = getEnvStrings() - HEAPU32[penviron_count >> 2] = strings.length + HEAPU32[penviron_count >>> 2] = strings.length var bufSize = 0 strings.forEach(function(string) { bufSize += string.length + 1 }) - HEAPU32[penviron_buf_size >> 2] = bufSize + HEAPU32[penviron_buf_size >>> 2] = bufSize return 0 } function _proc_exit(code) { @@ -3551,20 +3447,23 @@ var Compare = (() => { FS.close(stream) return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } function doReadv(stream, iov, iovcnt, offset) { var ret = 0 for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] + var ptr = HEAPU32[iov >>> 2] + var len = HEAPU32[(iov + 4) >>> 2] iov += 8 var curr = FS.read(stream, HEAP8, ptr, len, offset) if (curr < 0) return -1 ret += curr if (curr < len) break + if (typeof offset !== 'undefined') { + offset += curr + } } return ret } @@ -3572,10 +3471,10 @@ var Compare = (() => { try { var stream = SYSCALLS.getStreamFromFD(fd) var num = doReadv(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num + HEAPU32[pnum >>> 2] = num return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } @@ -3603,25 +3502,28 @@ var Compare = (() => { ) >>> 0 : 0), ]), - (HEAP32[newOffset >> 2] = tempI64[0]), - (HEAP32[(newOffset + 4) >> 2] = tempI64[1]) + (HEAP32[newOffset >>> 2] = tempI64[0]), + (HEAP32[(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)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } function doWritev(stream, iov, iovcnt, offset) { var ret = 0 for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] + var ptr = HEAPU32[iov >>> 2] + var len = HEAPU32[(iov + 4) >>> 2] iov += 8 var curr = FS.write(stream, HEAP8, ptr, len, offset) if (curr < 0) return -1 ret += curr + if (typeof offset !== 'undefined') { + offset += curr + } } return ret } @@ -3629,31 +3531,31 @@ var Compare = (() => { try { var stream = SYSCALLS.getStreamFromFD(fd) var num = doWritev(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num + HEAPU32[pnum >>> 2] = num return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } - function __isLeapYear(year) { + function isLeapYear(year) { return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) } - function __arraySum(array, index) { + function arraySum(array, index) { var sum = 0 for (var i = 0; i <= index; sum += array[i++]) {} return sum } - var __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - var __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - function __addDays(date, days) { + var MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + var MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + function addDays(date, days) { var newDate = new Date(date.getTime()) while (days > 0) { - var leap = __isLeapYear(newDate.getFullYear()) + var leap = isLeapYear(newDate.getFullYear()) var currentMonth = newDate.getMonth() - var daysInCurrentMonth = (leap - ? __MONTH_DAYS_LEAP - : __MONTH_DAYS_REGULAR)[currentMonth] + var daysInCurrentMonth = (leap ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[ + currentMonth + ] if (days > daysInCurrentMonth - newDate.getDate()) { days -= daysInCurrentMonth - newDate.getDate() + 1 newDate.setDate(1) @@ -3671,21 +3573,21 @@ var Compare = (() => { return newDate } function writeArrayToMemory(array, buffer) { - HEAP8.set(array, buffer) + HEAP8.set(array, buffer >>> 0) } function _strftime(s, maxsize, format, tm) { - var tm_zone = HEAP32[(tm + 40) >> 2] + var tm_zone = HEAP32[(tm + 40) >>> 2] var date = { - tm_sec: HEAP32[tm >> 2], - tm_min: HEAP32[(tm + 4) >> 2], - tm_hour: HEAP32[(tm + 8) >> 2], - tm_mday: HEAP32[(tm + 12) >> 2], - tm_mon: HEAP32[(tm + 16) >> 2], - tm_year: HEAP32[(tm + 20) >> 2], - tm_wday: HEAP32[(tm + 24) >> 2], - tm_yday: HEAP32[(tm + 28) >> 2], - tm_isdst: HEAP32[(tm + 32) >> 2], - tm_gmtoff: HEAP32[(tm + 36) >> 2], + tm_sec: HEAP32[tm >>> 2], + tm_min: HEAP32[(tm + 4) >>> 2], + tm_hour: HEAP32[(tm + 8) >>> 2], + tm_mday: HEAP32[(tm + 12) >>> 2], + tm_mon: HEAP32[(tm + 16) >>> 2], + tm_year: HEAP32[(tm + 20) >>> 2], + tm_wday: HEAP32[(tm + 24) >>> 2], + tm_yday: HEAP32[(tm + 28) >>> 2], + tm_isdst: HEAP32[(tm + 32) >>> 2], + tm_gmtoff: HEAP32[(tm + 36) >>> 2], tm_zone: tm_zone ? UTF8ToString(tm_zone) : '', } var pattern = UTF8ToString(format) @@ -3789,7 +3691,7 @@ var Compare = (() => { } } function getWeekBasedYear(date) { - var thisDate = __addDays( + var thisDate = addDays( new Date(date.tm_year + 1900, 0, 1), date.tm_yday ) @@ -3848,10 +3750,10 @@ var Compare = (() => { '%j': function(date) { return leadingNulls( date.tm_mday + - __arraySum( - __isLeapYear(date.tm_year + 1900) - ? __MONTH_DAYS_LEAP - : __MONTH_DAYS_REGULAR, + arraySum( + isLeapYear(date.tm_year + 1900) + ? MONTH_DAYS_LEAP + : MONTH_DAYS_REGULAR, date.tm_mon - 1 ), 3 @@ -3897,13 +3799,13 @@ var Compare = (() => { var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7 if ( dec31 == 4 || - (dec31 == 5 && __isLeapYear((date.tm_year % 400) - 1)) + (dec31 == 5 && isLeapYear((date.tm_year % 400) - 1)) ) { val++ } } else if (val == 53) { var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7 - if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1 + if (jan1 != 4 && (jan1 != 3 || !isLeapYear(date.tm_year))) val = 1 } return leadingNulls(val, 2) }, @@ -3960,10 +3862,10 @@ var Compare = (() => { } quit_(1, e) } - function allocateUTF8OnStack(str) { + function stringToUTF8OnStack(str) { var size = lengthBytesUTF8(str) + 1 var ret = stackAlloc(size) - stringToUTF8Array(str, HEAP8, ret, size) + stringToUTF8(str, ret, size) return ret } function getCFunc(ident) { @@ -3975,9 +3877,7 @@ var Compare = (() => { string: str => { var ret = 0 if (str !== null && str !== undefined && str !== 0) { - var len = (str.length << 2) + 1 - ret = stackAlloc(len) - stringToUTF8(str, ret, len) + ret = stringToUTF8OnStack(str) } return ret }, @@ -4017,10 +3917,9 @@ var Compare = (() => { return ret } function cwrap(ident, returnType, argTypes, opts) { - argTypes = argTypes || [] - var numericArgs = argTypes.every( - type => type === 'number' || type === 'boolean' - ) + var numericArgs = + !argTypes || + argTypes.every(type => type === 'number' || type === 'boolean') var numericRet = returnType !== 'string' if (numericRet && numericArgs && !opts) { return getCFunc(ident) @@ -4029,10 +3928,17 @@ var Compare = (() => { return ccall(ident, returnType, argTypes, arguments, opts) } } + function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + HEAP8[buffer++ >>> 0] = str.charCodeAt(i) + } + if (!dontAddNull) HEAP8[buffer >>> 0] = 0 + } function AsciiToString(ptr) { + ptr >>>= 0 var str = '' while (1) { - var ch = HEAPU8[ptr++ >> 0] + var ch = HEAPU8[ptr++ >>> 0] if (!ch) return str str += String.fromCharCode(ch) } @@ -4215,20 +4121,20 @@ var Compare = (() => { EOWNERDEAD: 62, ESTRPIPE: 135, } - var asmLibraryArg = { - b: ___cxa_throw, + var wasmImports = { + a: ___cxa_throw, d: ___syscall_fcntl64, r: ___syscall_getcwd, i: ___syscall_ioctl, j: ___syscall_openat, n: ___syscall_readlinkat, o: ___syscall_stat64, - c: _abort, + b: _abort, f: _emscripten_memcpy_big, m: _emscripten_resize_heap, p: _environ_get, q: _environ_sizes_get, - a: _exit, + c: _exit, e: _fd_close, h: _fd_read, k: _fd_seek, @@ -4236,20 +4142,24 @@ var Compare = (() => { l: _strftime_l, } var asm = createWasm() - var ___wasm_call_ctors = (Module['___wasm_call_ctors'] = function() { - return (___wasm_call_ctors = Module['___wasm_call_ctors'] = - Module['asm']['t']).apply(null, arguments) - }) + var ___wasm_call_ctors = function() { + return (___wasm_call_ctors = Module['asm']['t']).apply(null, arguments) + } var _main = (Module['_main'] = function() { return (_main = Module['_main'] = Module['asm']['u']).apply( null, arguments ) }) - var ___errno_location = (Module['___errno_location'] = function() { - return (___errno_location = Module['___errno_location'] = - Module['asm']['v']).apply(null, arguments) - }) + var _malloc = function() { + return (_malloc = Module['asm']['malloc']).apply(null, arguments) + } + var _free = function() { + return (_free = Module['asm']['free']).apply(null, arguments) + } + var ___errno_location = function() { + return (___errno_location = Module['asm']['v']).apply(null, arguments) + } var _itk_wasm_input_array_alloc = (Module[ '_itk_wasm_input_array_alloc' ] = function() { @@ -4296,30 +4206,21 @@ var Compare = (() => { return (_itk_wasm_free_all = Module['_itk_wasm_free_all'] = Module['asm']['C']).apply(null, arguments) }) - var stackSave = (Module['stackSave'] = function() { - return (stackSave = Module['stackSave'] = Module['asm']['E']).apply( - null, - arguments - ) - }) - var stackRestore = (Module['stackRestore'] = function() { - return (stackRestore = Module['stackRestore'] = Module['asm']['F']).apply( - null, - arguments - ) - }) - var stackAlloc = (Module['stackAlloc'] = function() { - return (stackAlloc = Module['stackAlloc'] = Module['asm']['G']).apply( + var stackSave = function() { + return (stackSave = Module['asm']['E']).apply(null, arguments) + } + var stackRestore = function() { + return (stackRestore = Module['asm']['F']).apply(null, arguments) + } + var stackAlloc = function() { + return (stackAlloc = Module['asm']['G']).apply(null, arguments) + } + var ___cxa_is_pointer_type = function() { + return (___cxa_is_pointer_type = Module['asm']['H']).apply( null, arguments ) - }) - var ___cxa_is_pointer_type = (Module[ - '___cxa_is_pointer_type' - ] = function() { - return (___cxa_is_pointer_type = Module['___cxa_is_pointer_type'] = - Module['asm']['H']).apply(null, arguments) - }) + } Module['addRunDependency'] = addRunDependency Module['removeRunDependency'] = removeRunDependency Module['FS_createPath'] = FS.createPath @@ -4329,6 +4230,8 @@ var Compare = (() => { Module['FS_createDevice'] = FS.createDevice Module['FS_unlink'] = FS.unlink Module['callMain'] = callMain + Module['stackSave'] = stackSave + Module['stackRestore'] = stackRestore Module['ccall'] = ccall Module['cwrap'] = cwrap Module['AsciiToString'] = AsciiToString @@ -4339,17 +4242,16 @@ var Compare = (() => { if (!calledRun) run() if (!calledRun) dependenciesFulfilled = runCaller } - function callMain(args) { - var entryFunction = Module['_main'] - args = args || [] + function callMain(args = []) { + var entryFunction = _main args.unshift(thisProgram) var argc = args.length var argv = stackAlloc((argc + 1) * 4) var argv_ptr = argv >> 2 args.forEach(arg => { - HEAP32[argv_ptr++] = allocateUTF8OnStack(arg) + HEAP32[argv_ptr++ >>> 0] = stringToUTF8OnStack(arg) }) - HEAP32[argv_ptr] = 0 + HEAP32[argv_ptr >>> 0] = 0 try { var ret = entryFunction(argc, argv) exitJS(ret, true) @@ -4358,8 +4260,7 @@ var Compare = (() => { return handleException(e) } } - function run(args) { - args = args || arguments_ + function run(args = arguments_) { if (runDependencies > 0) { return } @@ -4407,8 +4308,8 @@ var Compare = (() => { } var path = require('path') var containingDir = path.dirname(filePath) - if (FS.isDir(containingDir) || containingDir === '/') { - return + if (containingDir === '/') { + throw new Error('Cannot mount root directory') } var currentDir = '/' var splitContainingDir = containingDir.split(path.sep) @@ -4430,6 +4331,32 @@ var Compare = (() => { var containingDir = path.dirname(filePath) FS.unmount(containingDir) } + Module.mountDir = function(dir) { + if (!ENVIRONMENT_IS_NODE) { + return + } + if (dir === '/') { + throw new Error('Cannot mount root directory') + } + var currentDir = '/' + var path = require('path') + var splitDir = dir.split(path.sep) + for (var ii = 1; ii < splitDir.length; ii++) { + currentDir += splitDir[ii] + if (!FS.analyzePath(currentDir).exists) { + FS.mkdir(currentDir) + } + currentDir += '/' + } + FS.mount(NODEFS, { root: dir }, currentDir) + return currentDir + } + Module.unmountDir = function(dir) { + if (!ENVIRONMENT_IS_NODE) { + return + } + FS.unmount(dir) + } Module.fs_mkdirs = function(dirs) { var currentDir = '/' var splitDirs = dirs.split('/') @@ -4463,13 +4390,7 @@ var Compare = (() => { return FS.close(stream) } - return Compare.ready + return BloscZarr.ready } })() -if (typeof exports === 'object' && typeof module === 'object') - module.exports = Compare -else if (typeof define === 'function' && define['amd']) - define([], function() { - return Compare - }) -else if (typeof exports === 'object') exports['Compare'] = Compare +export default BloscZarr diff --git a/src/Compression/blosc-zarr/emscripten-build/BloscZarr.wasm b/src/Compression/blosc-zarr/emscripten-build/BloscZarr.wasm new file mode 100755 index 000000000..b5f449e8f Binary files /dev/null and b/src/Compression/blosc-zarr/emscripten-build/BloscZarr.wasm differ diff --git a/src/Compression/blosc-zarr/emscripten-build/BloscZarr.wasm.zst b/src/Compression/blosc-zarr/emscripten-build/BloscZarr.wasm.zst new file mode 100755 index 000000000..66c943533 Binary files /dev/null and b/src/Compression/blosc-zarr/emscripten-build/BloscZarr.wasm.zst differ diff --git a/src/Compression/blosc-zarr/web-build/BloscZarr.js b/src/Compression/blosc-zarr/web-build/BloscZarr.js deleted file mode 100644 index b862cd9df..000000000 --- a/src/Compression/blosc-zarr/web-build/BloscZarr.js +++ /dev/null @@ -1,16 +0,0 @@ - -var BloscZarr = (() => { - var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; - return ( -function(BloscZarr) { - BloscZarr = BloscZarr || {}; - -null;var Module=typeof BloscZarr!="undefined"?BloscZarr:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var mStdout=null;var mStderr=null;Module["resetModuleStdout"]=function(){mStdout=""};Module["resetModuleStderr"]=function(){mStderr=""};Module["print"]=function(text){console.log(text);mStdout+=text+"\n"};Module["printErr"]=function(text){console.error(text);mStderr+=text+"\n"};Module["getModuleStdout"]=function(){return mStdout};Module["getModuleStderr"]=function(){return mStderr};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(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 scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=(filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret});readAsync=((filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[Emscripten Module object]"}}else 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_=(url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText});if(ENVIRONMENT_IS_WORKER){readBinary=(url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)})}readAsync=((url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=(()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()});xhr.onerror=onerror;xhr.send(null)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];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 ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}function getCFunc(ident){var func=Module["_"+ident];return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=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(HEAPU8,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,HEAPU8,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}function AsciiToString(ptr){var str="";while(1){var ch=HEAPU8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[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;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;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){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(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){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(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)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="BloscZarr.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}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"&&!isFileURI(wasmBinaryFile)){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)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}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;wasmMemory=Module["asm"]["u"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["y"];addOnInit(Module["asm"]["v"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}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)&&!isFileURI(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;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){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}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)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){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=[]}}}};function mmapAlloc(size){abort()}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+length{NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"]}NODEFS.flagsForNodeMap={1024:flags["O_APPEND"],64:flags["O_CREAT"],128:flags["O_EXCL"],256:flags["O_NOCTTY"],0:flags["O_RDONLY"],2:flags["O_RDWR"],4096:flags["O_SYNC"],512:flags["O_TRUNC"],1:flags["O_WRONLY"],131072:flags["O_NOFOLLOW"]}},convertNodeCode:e=>{var code=e.code;return ERRNO_CODES[code]},mount:mount=>{return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)},createNode:(parent,name,mode,dev)=>{if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(28)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node},getMode:path=>{var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}return stat.mode},realPath:node=>{var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)},flagsForNode:flags=>{flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;flags&=~65536;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k}}if(!flags){return newFlags}else{throw new FS.ErrnoError(28)}},node_ops:{getattr:node=>{var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}},setattr:(node,attr)=>{var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},lookup:(parent,name)=>{var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)},mknod:(parent,name,mode,dev)=>{var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}return node},rename:(oldNode,newDir,newName)=>{var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}oldNode.name=newName},unlink:(parent,name)=>{var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},rmdir:(parent,name)=>{var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},readdir:node=>{var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},symlink:(parent,newName,oldPath)=>{var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},readlink:node=>{var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=nodePath.relative(nodePath.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;if(e.code==="UNKNOWN")throw new FS.ErrnoError(28);throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}}},stream_ops:{open:stream=>{var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},close:stream=>{try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},read:(stream,buffer,offset,length,position)=>{if(length===0)return 0;try{return fs.readSync(stream.nfd,Buffer.from(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},write:(stream,buffer,offset,length,position)=>{try{return fs.writeSync(stream.nfd,Buffer.from(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},llseek:(stream,offset,whence)=>{var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap:(stream,address,length,position,prot,flags)=>{if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr=mmapAlloc(length);NODEFS.stream_ops.read(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=NODEFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!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: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:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode: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:(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:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(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:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(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:(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:(fd_start=0,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:fd=>FS.streams[fd],createStream:(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}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open: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:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts: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:(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(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(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: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(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:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(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:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"NODEFS":NODEFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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=(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);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(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(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});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{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[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)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[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)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.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=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var 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=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[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}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(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))throw e;return-e.errno}}function ___syscall_readlink(path,buf,bufsize){try{path=SYSCALLS.getStr(path);return SYSCALLS.doReadlink(path,buf,bufsize)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function _abort(){abort("")}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_max(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=_emscripten_get_heap_max();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}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}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}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(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)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[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))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getpwnam(){err("missing function: getpwnam");abort(-1)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];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}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[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"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;if(ENVIRONMENT_IS_NODE){requireNodeFS();NODEFS.staticInit()}ERRNO_CODES={"EPERM":63,"ENOENT":44,"ESRCH":71,"EINTR":27,"EIO":29,"ENXIO":60,"E2BIG":1,"ENOEXEC":45,"EBADF":8,"ECHILD":12,"EAGAIN":6,"EWOULDBLOCK":6,"ENOMEM":48,"EACCES":2,"EFAULT":21,"ENOTBLK":105,"EBUSY":10,"EEXIST":20,"EXDEV":75,"ENODEV":43,"ENOTDIR":54,"EISDIR":31,"EINVAL":28,"ENFILE":41,"EMFILE":33,"ENOTTY":59,"ETXTBSY":74,"EFBIG":22,"ENOSPC":51,"ESPIPE":70,"EROFS":69,"EMLINK":34,"EPIPE":64,"EDOM":18,"ERANGE":68,"ENOMSG":49,"EIDRM":24,"ECHRNG":106,"EL2NSYNC":156,"EL3HLT":107,"EL3RST":108,"ELNRNG":109,"EUNATCH":110,"ENOCSI":111,"EL2HLT":112,"EDEADLK":16,"ENOLCK":46,"EBADE":113,"EBADR":114,"EXFULL":115,"ENOANO":104,"EBADRQC":103,"EBADSLT":102,"EDEADLOCK":16,"EBFONT":101,"ENOSTR":100,"ENODATA":116,"ETIME":117,"ENOSR":118,"ENONET":119,"ENOPKG":120,"EREMOTE":121,"ENOLINK":47,"EADV":122,"ESRMNT":123,"ECOMM":124,"EPROTO":65,"EMULTIHOP":36,"EDOTDOT":125,"EBADMSG":9,"ENOTUNIQ":126,"EBADFD":127,"EREMCHG":128,"ELIBACC":129,"ELIBBAD":130,"ELIBSCN":131,"ELIBMAX":132,"ELIBEXEC":133,"ENOSYS":52,"ENOTEMPTY":55,"ENAMETOOLONG":37,"ELOOP":32,"EOPNOTSUPP":138,"EPFNOSUPPORT":139,"ECONNRESET":15,"ENOBUFS":42,"EAFNOSUPPORT":5,"EPROTOTYPE":67,"ENOTSOCK":57,"ENOPROTOOPT":50,"ESHUTDOWN":140,"ECONNREFUSED":14,"EADDRINUSE":3,"ECONNABORTED":13,"ENETUNREACH":40,"ENETDOWN":38,"ETIMEDOUT":73,"EHOSTDOWN":142,"EHOSTUNREACH":23,"EINPROGRESS":26,"EALREADY":7,"EDESTADDRREQ":17,"EMSGSIZE":35,"EPROTONOSUPPORT":66,"ESOCKTNOSUPPORT":137,"EADDRNOTAVAIL":4,"ENETRESET":39,"EISCONN":30,"ENOTCONN":53,"ETOOMANYREFS":141,"EUSERS":136,"EDQUOT":19,"ESTALE":72,"ENOTSUP":138,"ENOMEDIUM":148,"EILSEQ":25,"EOVERFLOW":61,"ECANCELED":11,"ENOTRECOVERABLE":56,"EOWNERDEAD":62,"ESTRPIPE":135};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={"a":___cxa_allocate_exception,"b":___cxa_throw,"e":___syscall_fcntl64,"t":___syscall_getcwd,"j":___syscall_ioctl,"k":___syscall_open,"o":___syscall_readlink,"p":___syscall_stat64,"c":_abort,"l":_emscripten_memcpy_big,"d":_emscripten_resize_heap,"r":_environ_get,"s":_environ_sizes_get,"f":_fd_close,"q":_fd_fdstat_get,"i":_fd_read,"m":_fd_seek,"h":_fd_write,"g":_getpwnam,"n":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["v"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["w"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["x"]).apply(null,arguments)};var _itk_wasm_input_array_alloc=Module["_itk_wasm_input_array_alloc"]=function(){return(_itk_wasm_input_array_alloc=Module["_itk_wasm_input_array_alloc"]=Module["asm"]["z"]).apply(null,arguments)};var _itk_wasm_input_json_alloc=Module["_itk_wasm_input_json_alloc"]=function(){return(_itk_wasm_input_json_alloc=Module["_itk_wasm_input_json_alloc"]=Module["asm"]["A"]).apply(null,arguments)};var _itk_wasm_output_json_address=Module["_itk_wasm_output_json_address"]=function(){return(_itk_wasm_output_json_address=Module["_itk_wasm_output_json_address"]=Module["asm"]["B"]).apply(null,arguments)};var _itk_wasm_output_json_size=Module["_itk_wasm_output_json_size"]=function(){return(_itk_wasm_output_json_size=Module["_itk_wasm_output_json_size"]=Module["asm"]["C"]).apply(null,arguments)};var _itk_wasm_output_array_address=Module["_itk_wasm_output_array_address"]=function(){return(_itk_wasm_output_array_address=Module["_itk_wasm_output_array_address"]=Module["asm"]["D"]).apply(null,arguments)};var _itk_wasm_output_array_size=Module["_itk_wasm_output_array_size"]=function(){return(_itk_wasm_output_array_size=Module["_itk_wasm_output_array_size"]=Module["asm"]["E"]).apply(null,arguments)};var _itk_wasm_free_all=Module["_itk_wasm_free_all"]=function(){return(_itk_wasm_free_all=Module["_itk_wasm_free_all"]=Module["asm"]["F"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["G"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["H"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["I"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["J"]).apply(null,arguments)};Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["writeArrayToMemory"]=writeArrayToMemory;Module["writeAsciiToMemory"]=writeAsciiToMemory;Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;Module["callMain"]=callMain;Module["AsciiToString"]=AsciiToString;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);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(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}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(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){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=false;if(Module["noInitialRun"])shouldRunNow=false;run();Module.mountContainingDir=function(filePath){if(!ENVIRONMENT_IS_NODE){return}var path=require("path");var containingDir=path.dirname(filePath);if(FS.isDir(containingDir)||containingDir==="/"){return}var currentDir="/";var splitContainingDir=containingDir.split(path.sep);for(var ii=1;ii { - var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; - return ( -function(BloscZarr) { - BloscZarr = BloscZarr || {}; - -null;var Module=typeof BloscZarr!="undefined"?BloscZarr:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var mStdout=null;var mStderr=null;Module["resetModuleStdout"]=function(){mStdout=""};Module["resetModuleStderr"]=function(){mStderr=""};Module["print"]=function(text){console.log(text);mStdout+=text+"\n"};Module["printErr"]=function(text){console.error(text);mStderr+=text+"\n"};Module["getModuleStdout"]=function(){return mStdout};Module["getModuleStderr"]=function(){return mStderr};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(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 scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=(()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}});read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=(filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret});readAsync=((filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})});if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=((status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)});Module["inspect"]=function(){return"[Emscripten Module object]"}}else 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_=(url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText});if(ENVIRONMENT_IS_WORKER){readBinary=(url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)})}readAsync=((url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=(()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()});xhr.onerror=onerror;xhr.send(null)})}setWindowTitle=(title=>document.title=title)}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];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 ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}function getCFunc(ident){var func=Module["_"+ident];return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=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(HEAPU8,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,HEAPU8,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}function AsciiToString(ptr){var str="";while(1){var ch=HEAPU8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[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;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;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){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(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){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(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)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="BloscZarr.umd.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}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"&&!isFileURI(wasmBinaryFile)){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)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}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;wasmMemory=Module["asm"]["u"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["y"];addOnInit(Module["asm"]["v"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}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)&&!isFileURI(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;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){getWasmTableEntry(func)()}else{getWasmTableEntry(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function ___cxa_allocate_exception(size){return _malloc(size+16)+16}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-16;this.set_type=function(type){HEAP32[this.ptr+4>>2]=type};this.get_type=function(){return HEAP32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}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)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}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){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){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=[]}}}};function mmapAlloc(size){abort()}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+length{NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"]}NODEFS.flagsForNodeMap={1024:flags["O_APPEND"],64:flags["O_CREAT"],128:flags["O_EXCL"],256:flags["O_NOCTTY"],0:flags["O_RDONLY"],2:flags["O_RDWR"],4096:flags["O_SYNC"],512:flags["O_TRUNC"],1:flags["O_WRONLY"],131072:flags["O_NOFOLLOW"]}},convertNodeCode:e=>{var code=e.code;return ERRNO_CODES[code]},mount:mount=>{return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)},createNode:(parent,name,mode,dev)=>{if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(28)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node},getMode:path=>{var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}return stat.mode},realPath:node=>{var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)},flagsForNode:flags=>{flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;flags&=~65536;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k}}if(!flags){return newFlags}else{throw new FS.ErrnoError(28)}},node_ops:{getattr:node=>{var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}},setattr:(node,attr)=>{var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},lookup:(parent,name)=>{var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)},mknod:(parent,name,mode,dev)=>{var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}return node},rename:(oldNode,newDir,newName)=>{var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}oldNode.name=newName},unlink:(parent,name)=>{var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},rmdir:(parent,name)=>{var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},readdir:node=>{var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},symlink:(parent,newName,oldPath)=>{var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},readlink:node=>{var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=nodePath.relative(nodePath.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;if(e.code==="UNKNOWN")throw new FS.ErrnoError(28);throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}}},stream_ops:{open:stream=>{var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},close:stream=>{try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},read:(stream,buffer,offset,length,position)=>{if(length===0)return 0;try{return fs.readSync(stream.nfd,Buffer.from(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},write:(stream,buffer,offset,length,position)=>{try{return fs.writeSync(stream.nfd,Buffer.from(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}},llseek:(stream,offset,whence)=>{var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(NODEFS.convertNodeCode(e))}}}if(position<0){throw new FS.ErrnoError(28)}return position},mmap:(stream,address,length,position,prot,flags)=>{if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr=mmapAlloc(length);NODEFS.stream_ops.read(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=NODEFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!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: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:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode: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:(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:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(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:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(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:(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:(fd_start=0,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:fd=>FS.streams[fd],createStream:(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}}}}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open: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:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts: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:(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(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(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: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(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:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(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:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode,fd_start,fd_end)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,address,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"NODEFS":NODEFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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=(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);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(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(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});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{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=(()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)});openRequest.onsuccess=(()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=(()=>{ok++;if(ok+fail==total)finish()});putRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=(()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=(()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()});getRequest.onerror=(()=>{fail++;if(ok+fail==total)finish()})});transaction.onerror=onerror});openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[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)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[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)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.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=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var 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=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[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}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_open(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))throw e;return-e.errno}}function ___syscall_readlink(path,buf,bufsize){try{path=SYSCALLS.getStr(path);return SYSCALLS.doReadlink(path,buf,bufsize)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function _abort(){abort("")}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_max(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=_emscripten_get_heap_max();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}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}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}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAP32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAP32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_seek(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)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[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))throw e;return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _getpwnam(){err("missing function: getpwnam");abort(-1)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];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}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[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"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm){return _strftime(s,maxsize,format,tm)}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();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;if(ENVIRONMENT_IS_NODE){requireNodeFS();NODEFS.staticInit()}ERRNO_CODES={"EPERM":63,"ENOENT":44,"ESRCH":71,"EINTR":27,"EIO":29,"ENXIO":60,"E2BIG":1,"ENOEXEC":45,"EBADF":8,"ECHILD":12,"EAGAIN":6,"EWOULDBLOCK":6,"ENOMEM":48,"EACCES":2,"EFAULT":21,"ENOTBLK":105,"EBUSY":10,"EEXIST":20,"EXDEV":75,"ENODEV":43,"ENOTDIR":54,"EISDIR":31,"EINVAL":28,"ENFILE":41,"EMFILE":33,"ENOTTY":59,"ETXTBSY":74,"EFBIG":22,"ENOSPC":51,"ESPIPE":70,"EROFS":69,"EMLINK":34,"EPIPE":64,"EDOM":18,"ERANGE":68,"ENOMSG":49,"EIDRM":24,"ECHRNG":106,"EL2NSYNC":156,"EL3HLT":107,"EL3RST":108,"ELNRNG":109,"EUNATCH":110,"ENOCSI":111,"EL2HLT":112,"EDEADLK":16,"ENOLCK":46,"EBADE":113,"EBADR":114,"EXFULL":115,"ENOANO":104,"EBADRQC":103,"EBADSLT":102,"EDEADLOCK":16,"EBFONT":101,"ENOSTR":100,"ENODATA":116,"ETIME":117,"ENOSR":118,"ENONET":119,"ENOPKG":120,"EREMOTE":121,"ENOLINK":47,"EADV":122,"ESRMNT":123,"ECOMM":124,"EPROTO":65,"EMULTIHOP":36,"EDOTDOT":125,"EBADMSG":9,"ENOTUNIQ":126,"EBADFD":127,"EREMCHG":128,"ELIBACC":129,"ELIBBAD":130,"ELIBSCN":131,"ELIBMAX":132,"ELIBEXEC":133,"ENOSYS":52,"ENOTEMPTY":55,"ENAMETOOLONG":37,"ELOOP":32,"EOPNOTSUPP":138,"EPFNOSUPPORT":139,"ECONNRESET":15,"ENOBUFS":42,"EAFNOSUPPORT":5,"EPROTOTYPE":67,"ENOTSOCK":57,"ENOPROTOOPT":50,"ESHUTDOWN":140,"ECONNREFUSED":14,"EADDRINUSE":3,"ECONNABORTED":13,"ENETUNREACH":40,"ENETDOWN":38,"ETIMEDOUT":73,"EHOSTDOWN":142,"EHOSTUNREACH":23,"EINPROGRESS":26,"EALREADY":7,"EDESTADDRREQ":17,"EMSGSIZE":35,"EPROTONOSUPPORT":66,"ESOCKTNOSUPPORT":137,"EADDRNOTAVAIL":4,"ENETRESET":39,"EISCONN":30,"ENOTCONN":53,"ETOOMANYREFS":141,"EUSERS":136,"EDQUOT":19,"ESTALE":72,"ENOTSUP":138,"ENOMEDIUM":148,"EILSEQ":25,"EOVERFLOW":61,"ECANCELED":11,"ENOTRECOVERABLE":56,"EOWNERDEAD":62,"ESTRPIPE":135};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={"a":___cxa_allocate_exception,"b":___cxa_throw,"e":___syscall_fcntl64,"t":___syscall_getcwd,"j":___syscall_ioctl,"k":___syscall_open,"o":___syscall_readlink,"p":___syscall_stat64,"c":_abort,"l":_emscripten_memcpy_big,"d":_emscripten_resize_heap,"r":_environ_get,"s":_environ_sizes_get,"f":_fd_close,"q":_fd_fdstat_get,"i":_fd_read,"m":_fd_seek,"h":_fd_write,"g":_getpwnam,"n":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["v"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["w"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["x"]).apply(null,arguments)};var _itk_wasm_input_array_alloc=Module["_itk_wasm_input_array_alloc"]=function(){return(_itk_wasm_input_array_alloc=Module["_itk_wasm_input_array_alloc"]=Module["asm"]["z"]).apply(null,arguments)};var _itk_wasm_input_json_alloc=Module["_itk_wasm_input_json_alloc"]=function(){return(_itk_wasm_input_json_alloc=Module["_itk_wasm_input_json_alloc"]=Module["asm"]["A"]).apply(null,arguments)};var _itk_wasm_output_json_address=Module["_itk_wasm_output_json_address"]=function(){return(_itk_wasm_output_json_address=Module["_itk_wasm_output_json_address"]=Module["asm"]["B"]).apply(null,arguments)};var _itk_wasm_output_json_size=Module["_itk_wasm_output_json_size"]=function(){return(_itk_wasm_output_json_size=Module["_itk_wasm_output_json_size"]=Module["asm"]["C"]).apply(null,arguments)};var _itk_wasm_output_array_address=Module["_itk_wasm_output_array_address"]=function(){return(_itk_wasm_output_array_address=Module["_itk_wasm_output_array_address"]=Module["asm"]["D"]).apply(null,arguments)};var _itk_wasm_output_array_size=Module["_itk_wasm_output_array_size"]=function(){return(_itk_wasm_output_array_size=Module["_itk_wasm_output_array_size"]=Module["asm"]["E"]).apply(null,arguments)};var _itk_wasm_free_all=Module["_itk_wasm_free_all"]=function(){return(_itk_wasm_free_all=Module["_itk_wasm_free_all"]=Module["asm"]["F"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["G"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["H"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["I"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["J"]).apply(null,arguments)};Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["writeArrayToMemory"]=writeArrayToMemory;Module["writeAsciiToMemory"]=writeAsciiToMemory;Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;Module["callMain"]=callMain;Module["AsciiToString"]=AsciiToString;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);HEAP32[argv>>2]=allocateUTF8OnStack(thisProgram);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(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}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(keepRuntimeAlive()){}else{exitRuntime()}procExit(status)}function procExit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){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=false;if(Module["noInitialRun"])shouldRunNow=false;run();Module.mountContainingDir=function(filePath){if(!ENVIRONMENT_IS_NODE){return}var path=require("path");var containingDir=path.dirname(filePath);if(FS.isDir(containingDir)||containingDir==="/"){return}var currentDir="/";var splitContainingDir=containingDir.split(path.sep);for(var ii=1;ii { var _scriptDir = import.meta.url - return async function(Compare) { - Compare = Compare || {} - + return async function(Compare = {}) { var Module = typeof Compare != 'undefined' ? Compare : {} var readyPromiseResolve, readyPromiseReject Module['ready'] = new Promise(function(resolve, reject) { @@ -52,11 +50,6 @@ var Compare = (() => { return scriptDirectory + path } var read_, readAsync, readBinary, setWindowTitle - function logExceptionOnExit(e) { - if (e instanceof ExitStatus) return - let toLog = e - err('exiting due to exception: ' + toLog) - } if (ENVIRONMENT_IS_NODE) { const { createRequire: createRequire } = await import('module') var require = createRequire(import.meta.url) @@ -91,25 +84,13 @@ var Compare = (() => { else onload(data.buffer) }) } - if (process['argv'].length > 1) { - thisProgram = process['argv'][1].replace(/\\/g, '/') + if (!Module['thisProgram'] && process.argv.length > 1) { + thisProgram = process.argv[1].replace(/\\/g, '/') } - arguments_ = process['argv'].slice(2) - process['on']('uncaughtException', function(ex) { - if (!(ex instanceof ExitStatus)) { - throw ex - } - }) - process['on']('unhandledRejection', function(reason) { - throw reason - }) + arguments_ = process.argv.slice(2) quit_ = (status, toThrow) => { - if (keepRuntimeAlive()) { - process['exitCode'] = status - throw toThrow - } - logExceptionOnExit(toThrow) - process['exit'](status) + process.exitCode = status + throw toThrow } Module['inspect'] = function() { return '[Emscripten Module object]' @@ -186,131 +167,27 @@ var Compare = (() => { abort(text) } } - var UTF8Decoder = - typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined - function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { - var endIdx = idx + maxBytesToRead - var endPtr = idx - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)) - } - var str = '' - while (idx < endPtr) { - var u0 = heapOrArray[idx++] - if (!(u0 & 128)) { - str += String.fromCharCode(u0) - continue - } - var u1 = heapOrArray[idx++] & 63 - if ((u0 & 224) == 192) { - str += String.fromCharCode(((u0 & 31) << 6) | u1) - continue - } - var u2 = heapOrArray[idx++] & 63 - if ((u0 & 240) == 224) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2 - } else { - u0 = - ((u0 & 7) << 18) | - (u1 << 12) | - (u2 << 6) | - (heapOrArray[idx++] & 63) - } - if (u0 < 65536) { - str += String.fromCharCode(u0) - } else { - var ch = u0 - 65536 - str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)) - } - } - return str - } - function UTF8ToString(ptr, maxBytesToRead) { - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : '' + var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64 + function updateMemoryViews() { + var b = wasmMemory.buffer + Module['HEAP8'] = HEAP8 = new Int8Array(b) + Module['HEAP16'] = HEAP16 = new Int16Array(b) + Module['HEAP32'] = HEAP32 = new Int32Array(b) + Module['HEAPU8'] = HEAPU8 = new Uint8Array(b) + Module['HEAPU16'] = HEAPU16 = new Uint16Array(b) + Module['HEAPU32'] = HEAPU32 = new Uint32Array(b) + Module['HEAPF32'] = HEAPF32 = new Float32Array(b) + Module['HEAPF64'] = HEAPF64 = new Float64Array(b) } - function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { - if (!(maxBytesToWrite > 0)) return 0 - var startIdx = outIdx - var endIdx = outIdx + maxBytesToWrite - 1 - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i) - if (u >= 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, HEAPU8, outPtr, maxBytesToWrite) - } - function lengthBytesUTF8(str) { - var len = 0 - for (var i = 0; i < str.length; ++i) { - var c = str.charCodeAt(i) - if (c <= 127) { - len++ - } else if (c <= 2047) { - len += 2 - } else if (c >= 55296 && c <= 57343) { - len += 4 - ++i - } else { - len += 3 - } - } - return len - } - var buffer, - HEAP8, - HEAPU8, - HEAP16, - HEAPU16, - HEAP32, - HEAPU32, - HEAPF32, - HEAPF64 - 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 var wasmTable var __ATPRERUN__ = [] var __ATINIT__ = [] var __ATMAIN__ = [] var __ATPOSTRUN__ = [] var runtimeInitialized = false + var runtimeKeepaliveCounter = 0 function keepRuntimeAlive() { - return noExitRuntime + return noExitRuntime || runtimeKeepaliveCounter > 0 } function preRun() { if (Module['preRun']) { @@ -422,26 +299,24 @@ var Compare = (() => { abort(err) } } - function getBinaryPromise() { + function getBinaryPromise(binaryFile) { if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { - if (typeof fetch == 'function' && !isFileURI(wasmBinaryFile)) { - return fetch(wasmBinaryFile, { credentials: 'same-origin' }) + if (typeof fetch == 'function' && !isFileURI(binaryFile)) { + return fetch(binaryFile, { credentials: 'same-origin' }) .then(function(response) { if (!response['ok']) { - throw "failed to load wasm binary file at '" + - wasmBinaryFile + - "'" + throw "failed to load wasm binary file at '" + binaryFile + "'" } return response['arrayBuffer']() }) .catch(function() { - return getBinary(wasmBinaryFile) + return getBinary(binaryFile) }) } else { if (readAsync) { return new Promise(function(resolve, reject) { readAsync( - wasmBinaryFile, + binaryFile, function(response) { resolve(new Uint8Array(response)) }, @@ -452,70 +327,75 @@ var Compare = (() => { } } return Promise.resolve().then(function() { - return getBinary(wasmBinaryFile) + return getBinary(binaryFile) }) } + function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile) + .then(function(binary) { + return WebAssembly.instantiate(binary, imports) + }) + .then(function(instance) { + return instance + }) + .then(receiver, function(reason) { + err('failed to asynchronously prepare wasm: ' + reason) + abort(reason) + }) + } + function instantiateAsync(binary, binaryFile, imports, callback) { + if ( + !binary && + typeof WebAssembly.instantiateStreaming == 'function' && + !isDataURI(binaryFile) && + !isFileURI(binaryFile) && + !ENVIRONMENT_IS_NODE && + typeof fetch == 'function' + ) { + return fetch(binaryFile, { credentials: 'same-origin' }).then(function( + response + ) { + var result = WebAssembly.instantiateStreaming(response, imports) + return result.then(callback, function(reason) { + err('wasm streaming compile failed: ' + reason) + err('falling back to ArrayBuffer instantiation') + return instantiateArrayBuffer(binaryFile, imports, callback) + }) + }) + } else { + return instantiateArrayBuffer(binaryFile, imports, callback) + } + } function createWasm() { - var info = { a: asmLibraryArg } + var info = { a: wasmImports } function receiveInstance(instance, module) { var exports = instance.exports Module['asm'] = exports wasmMemory = Module['asm']['s'] - updateGlobalBufferAndViews(wasmMemory.buffer) + updateMemoryViews() wasmTable = Module['asm']['D'] addOnInit(Module['asm']['t']) removeRunDependency('wasm-instantiate') + return exports } addRunDependency('wasm-instantiate') function receiveInstantiationResult(result) { receiveInstance(result['instance']) } - 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) && - !isFileURI(wasmBinaryFile) && - !ENVIRONMENT_IS_NODE && - 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 + return Module['instantiateWasm'](info, receiveInstance) } catch (e) { err('Module.instantiateWasm callback failed with error: ' + e) readyPromiseReject(e) } } - instantiateAsync().catch(readyPromiseReject) + instantiateAsync( + wasmBinary, + wasmBinaryFile, + info, + receiveInstantiationResult + ).catch(readyPromiseReject) return {} } var tempDouble @@ -534,33 +414,33 @@ var Compare = (() => { this.excPtr = excPtr this.ptr = excPtr - 24 this.set_type = function(type) { - HEAPU32[(this.ptr + 4) >> 2] = type + HEAPU32[(this.ptr + 4) >>> 2] = type } this.get_type = function() { - return HEAPU32[(this.ptr + 4) >> 2] + return HEAPU32[(this.ptr + 4) >>> 2] } this.set_destructor = function(destructor) { - HEAPU32[(this.ptr + 8) >> 2] = destructor + HEAPU32[(this.ptr + 8) >>> 2] = destructor } this.get_destructor = function() { - return HEAPU32[(this.ptr + 8) >> 2] + return HEAPU32[(this.ptr + 8) >>> 2] } this.set_refcount = function(refcount) { - HEAP32[this.ptr >> 2] = refcount + HEAP32[this.ptr >>> 2] = refcount } this.set_caught = function(caught) { caught = caught ? 1 : 0 - HEAP8[(this.ptr + 12) >> 0] = caught + HEAP8[(this.ptr + 12) >>> 0] = caught } this.get_caught = function() { - return HEAP8[(this.ptr + 12) >> 0] != 0 + return HEAP8[(this.ptr + 12) >>> 0] != 0 } this.set_rethrown = function(rethrown) { rethrown = rethrown ? 1 : 0 - HEAP8[(this.ptr + 13) >> 0] = rethrown + HEAP8[(this.ptr + 13) >>> 0] = rethrown } this.get_rethrown = function() { - return HEAP8[(this.ptr + 13) >> 0] != 0 + return HEAP8[(this.ptr + 13) >>> 0] != 0 } this.init = function(type, destructor) { this.set_adjusted_ptr(0) @@ -571,24 +451,24 @@ var Compare = (() => { this.set_rethrown(false) } this.add_ref = function() { - var value = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = value + 1 + var value = HEAP32[this.ptr >>> 2] + HEAP32[this.ptr >>> 2] = value + 1 } this.release_ref = function() { - var prev = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = prev - 1 + var prev = HEAP32[this.ptr >>> 2] + HEAP32[this.ptr >>> 2] = prev - 1 return prev === 1 } this.set_adjusted_ptr = function(adjustedPtr) { - HEAPU32[(this.ptr + 16) >> 2] = adjustedPtr + HEAPU32[(this.ptr + 16) >>> 2] = adjustedPtr } this.get_adjusted_ptr = function() { - return HEAPU32[(this.ptr + 16) >> 2] + return HEAPU32[(this.ptr + 16) >>> 2] } this.get_exception_ptr = function() { var isPointer = ___cxa_is_pointer_type(this.get_type()) if (isPointer) { - return HEAPU32[this.excPtr >> 2] + return HEAPU32[this.excPtr >>> 2] } var adjusted = this.get_adjusted_ptr() if (adjusted !== 0) return adjusted @@ -602,10 +482,10 @@ var Compare = (() => { info.init(type, destructor) exceptionLast = ptr uncaughtExceptionCount++ - throw ptr + throw exceptionLast } function setErrNo(value) { - HEAP32[___errno_location() >> 2] = value + HEAP32[___errno_location() >>> 2] = value return value } var PATH = { @@ -678,23 +558,27 @@ var Compare = (() => { return PATH.normalize(l + '/' + r) }, } - function getRandomDevice() { + function initRandomFill() { if ( typeof crypto == 'object' && typeof crypto['getRandomValues'] == 'function' ) { - var randomBuffer = new Uint8Array(1) - return () => { - crypto.getRandomValues(randomBuffer) - return randomBuffer[0] - } + return view => crypto.getRandomValues(view) } else if (ENVIRONMENT_IS_NODE) { try { var crypto_module = require('crypto') - return () => crypto_module['randomBytes'](1)[0] + var randomFillSync = crypto_module['randomFillSync'] + if (randomFillSync) { + return view => crypto_module['randomFillSync'](view) + } + var randomBytes = crypto_module['randomBytes'] + return view => (view.set(randomBytes(view.byteLength)), view) } catch (e) {} } - return () => abort('randomDevice') + abort('initRandomDevice') + } + function randomFill(view) { + return (randomFill = initRandomFill())(view) } var PATH_FS = { resolve: function() { @@ -749,6 +633,57 @@ var Compare = (() => { return outputParts.join('/') }, } + function lengthBytesUTF8(str) { + var len = 0 + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i) + if (c <= 127) { + len++ + } else if (c <= 2047) { + len += 2 + } else if (c >= 55296 && c <= 57343) { + len += 4 + ++i + } else { + len += 3 + } + } + return len + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + outIdx >>>= 0 + if (!(maxBytesToWrite > 0)) return 0 + var startIdx = outIdx + var endIdx = outIdx + maxBytesToWrite - 1 + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i) + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i) + u = (65536 + ((u & 1023) << 10)) | (u1 & 1023) + } + if (u <= 127) { + if (outIdx >= endIdx) break + heap[outIdx++ >>> 0] = u + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break + heap[outIdx++ >>> 0] = 192 | (u >> 6) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break + heap[outIdx++ >>> 0] = 224 | (u >> 12) + heap[outIdx++ >>> 0] = 128 | ((u >> 6) & 63) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } else { + if (outIdx + 3 >= endIdx) break + heap[outIdx++ >>> 0] = 240 | (u >> 18) + heap[outIdx++ >>> 0] = 128 | ((u >> 12) & 63) + heap[outIdx++ >>> 0] = 128 | ((u >> 6) & 63) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } + } + heap[outIdx >>> 0] = 0 + return outIdx - startIdx + } function intArrayFromString(stringy, dontAddNull, length) { var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1 var u8array = new Array(len) @@ -987,6 +922,7 @@ var Compare = (() => { return new Uint8Array(node.contents) }, expandFileStorage: function(node, newCapacity) { + newCapacity >>>= 0 var prevCapacity = node.contents ? node.contents.length : 0 if (prevCapacity >= newCapacity) return var CAPACITY_DOUBLING_MAX = 1024 * 1024 @@ -1003,6 +939,7 @@ var Compare = (() => { node.contents.set(oldContents.subarray(0, node.usedBytes), 0) }, resizeFileStorage: function(node, newSize) { + newSize >>>= 0 if (node.usedBytes == newSize) return if (newSize == 0) { node.contents = null @@ -1193,7 +1130,7 @@ var Compare = (() => { var ptr var allocated var contents = stream.node.contents - if (!(flags & 2) && contents.buffer === buffer) { + if (!(flags & 2) && contents.buffer === HEAP8.buffer) { allocated = false ptr = contents.byteOffset } else { @@ -1213,7 +1150,8 @@ var Compare = (() => { if (!ptr) { throw new FS.ErrnoError(48) } - HEAP8.set(contents, ptr) + ptr >>>= 0 + HEAP8.set(contents, ptr >>> 0) } return { ptr: ptr, allocated: allocated } }, @@ -1250,7 +1188,7 @@ var Compare = (() => { isWindows: false, staticInit: () => { NODEFS.isWindows = !!process.platform.match(/^win/) - var flags = process['binding']('constants') + var flags = process.binding('constants') if (flags['fs']) { flags = flags['fs'] } @@ -2362,6 +2300,7 @@ var Compare = (() => { return stream.position }, read: (stream, buffer, offset, length, position) => { + offset >>>= 0 if (length < 0 || position < 0) { throw new FS.ErrnoError(28) } @@ -2394,6 +2333,7 @@ var Compare = (() => { return bytesRead }, write: (stream, buffer, offset, length, position, canOwn) => { + offset >>>= 0 if (length < 0 || position < 0) { throw new FS.ErrnoError(28) } @@ -2464,6 +2404,7 @@ var Compare = (() => { return stream.stream_ops.mmap(stream, length, position, prot, flags) }, msync: (stream, buffer, offset, length, mmapFlags) => { + offset >>>= 0 if (!stream.stream_ops.msync) { return 0 } @@ -2547,9 +2488,16 @@ var Compare = (() => { TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops) FS.mkdev('/dev/tty', FS.makedev(5, 0)) FS.mkdev('/dev/tty1', FS.makedev(6, 0)) - var random_device = getRandomDevice() - FS.createDevice('/dev', 'random', random_device) - FS.createDevice('/dev', 'urandom', random_device) + var randomBuffer = new Uint8Array(1024), + randomLeft = 0 + var randomByte = () => { + if (randomLeft === 0) { + randomLeft = randomFill(randomBuffer).byteLength + } + return randomBuffer[--randomLeft] + } + FS.createDevice('/dev', 'random', randomByte) + FS.createDevice('/dev', 'urandom', randomByte) FS.mkdir('/dev/shm') FS.mkdir('/dev/shm/tmp') }, @@ -2605,6 +2553,7 @@ var Compare = (() => { ensureErrnoError: () => { if (FS.ErrnoError) return FS.ErrnoError = function ErrnoError(errno, node) { + this.name = 'ErrnoError' this.node = node this.setErrno = function(errno) { this.errno = errno @@ -3027,114 +2976,51 @@ var Compare = (() => { processData(url) } }, - indexedDB: () => { - return ( - window.indexedDB || - window.mozIndexedDB || - window.webkitIndexedDB || - window.msIndexedDB - ) - }, - DB_NAME: () => { - return 'EM_FS_' + window.location.pathname - }, - DB_VERSION: 20, - DB_STORE_NAME: 'FILE_DATA', - saveFilesToDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) - } - openRequest.onupgradeneeded = () => { - out('creating db') - var db = openRequest.result - db.createObjectStore(FS.DB_STORE_NAME) - } - openRequest.onsuccess = () => { - var db = openRequest.result - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite') - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var putRequest = files.put( - FS.analyzePath(path).object.contents, - path - ) - putRequest.onsuccess = () => { - ok++ - if (ok + fail == total) finish() - } - putRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror + } + var UTF8Decoder = + typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined + function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + idx >>>= 0 + var endIdx = idx + maxBytesToRead + var endPtr = idx + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr + if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { + return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)) + } + var str = '' + while (idx < endPtr) { + var u0 = heapOrArray[idx++] + if (!(u0 & 128)) { + str += String.fromCharCode(u0) + continue } - openRequest.onerror = onerror - }, - loadFilesFromDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) + var u1 = heapOrArray[idx++] & 63 + if ((u0 & 224) == 192) { + str += String.fromCharCode(((u0 & 31) << 6) | u1) + continue } - openRequest.onupgradeneeded = onerror - openRequest.onsuccess = () => { - var db = openRequest.result - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly') - } catch (e) { - onerror(e) - return - } - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var getRequest = files.get(path) - getRequest.onsuccess = () => { - if (FS.analyzePath(path).exists) { - FS.unlink(path) - } - FS.createDataFile( - PATH.dirname(path), - PATH.basename(path), - getRequest.result, - true, - true, - true - ) - ok++ - if (ok + fail == total) finish() - } - getRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror + var u2 = heapOrArray[idx++] & 63 + if ((u0 & 240) == 224) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2 + } else { + u0 = + ((u0 & 7) << 18) | + (u1 << 12) | + (u2 << 6) | + (heapOrArray[idx++] & 63) } - openRequest.onerror = onerror - }, + if (u0 < 65536) { + str += String.fromCharCode(u0) + } else { + var ch = u0 - 65536 + str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)) + } + } + return str + } + function UTF8ToString(ptr, maxBytesToRead) { + ptr >>>= 0 + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : '' } var SYSCALLS = { DEFAULT_POLLMASK: 5, @@ -3170,13 +3056,13 @@ var Compare = (() => { } throw e } - HEAP32[buf >> 2] = stat.dev - HEAP32[(buf + 8) >> 2] = stat.ino - HEAP32[(buf + 12) >> 2] = stat.mode - HEAPU32[(buf + 16) >> 2] = stat.nlink - HEAP32[(buf + 20) >> 2] = stat.uid - HEAP32[(buf + 24) >> 2] = stat.gid - HEAP32[(buf + 28) >> 2] = stat.rdev + HEAP32[buf >>> 2] = stat.dev + HEAP32[(buf + 8) >>> 2] = stat.ino + HEAP32[(buf + 12) >>> 2] = stat.mode + HEAPU32[(buf + 16) >>> 2] = stat.nlink + HEAP32[(buf + 20) >>> 2] = stat.uid + HEAP32[(buf + 24) >>> 2] = stat.gid + HEAP32[(buf + 28) >>> 2] = stat.rdev ;(tempI64 = [ stat.size >>> 0, ((tempDouble = stat.size), @@ -3190,10 +3076,10 @@ var Compare = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 40) >> 2] = tempI64[0]), - (HEAP32[(buf + 44) >> 2] = tempI64[1]) - HEAP32[(buf + 48) >> 2] = 4096 - HEAP32[(buf + 52) >> 2] = stat.blocks + (HEAP32[(buf + 40) >>> 2] = tempI64[0]), + (HEAP32[(buf + 44) >>> 2] = tempI64[1]) + HEAP32[(buf + 48) >>> 2] = 4096 + HEAP32[(buf + 52) >>> 2] = stat.blocks var atime = stat.atime.getTime() var mtime = stat.mtime.getTime() var ctime = stat.ctime.getTime() @@ -3210,9 +3096,9 @@ var Compare = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 56) >> 2] = tempI64[0]), - (HEAP32[(buf + 60) >> 2] = tempI64[1]) - HEAPU32[(buf + 64) >> 2] = (atime % 1e3) * 1e3 + (HEAP32[(buf + 56) >>> 2] = tempI64[0]), + (HEAP32[(buf + 60) >>> 2] = tempI64[1]) + HEAPU32[(buf + 64) >>> 2] = (atime % 1e3) * 1e3 ;(tempI64 = [ Math.floor(mtime / 1e3) >>> 0, ((tempDouble = Math.floor(mtime / 1e3)), @@ -3226,9 +3112,9 @@ var Compare = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 72) >> 2] = tempI64[0]), - (HEAP32[(buf + 76) >> 2] = tempI64[1]) - HEAPU32[(buf + 80) >> 2] = (mtime % 1e3) * 1e3 + (HEAP32[(buf + 72) >>> 2] = tempI64[0]), + (HEAP32[(buf + 76) >>> 2] = tempI64[1]) + HEAPU32[(buf + 80) >>> 2] = (mtime % 1e3) * 1e3 ;(tempI64 = [ Math.floor(ctime / 1e3) >>> 0, ((tempDouble = Math.floor(ctime / 1e3)), @@ -3242,9 +3128,9 @@ var Compare = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 88) >> 2] = tempI64[0]), - (HEAP32[(buf + 92) >> 2] = tempI64[1]) - HEAPU32[(buf + 96) >> 2] = (ctime % 1e3) * 1e3 + (HEAP32[(buf + 88) >>> 2] = tempI64[0]), + (HEAP32[(buf + 92) >>> 2] = tempI64[1]) + HEAPU32[(buf + 96) >>> 2] = (ctime % 1e3) * 1e3 ;(tempI64 = [ stat.ino >>> 0, ((tempDouble = stat.ino), @@ -3258,8 +3144,8 @@ var Compare = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 104) >> 2] = tempI64[0]), - (HEAP32[(buf + 108) >> 2] = tempI64[1]) + (HEAP32[(buf + 104) >>> 2] = tempI64[0]), + (HEAP32[(buf + 108) >>> 2] = tempI64[1]) return 0 }, doMsync: function(addr, stream, len, flags, offset) { @@ -3269,13 +3155,14 @@ var Compare = (() => { if (flags & 2) { return 0 } + addr >>>= 0 var buffer = HEAPU8.slice(addr, addr + len) FS.msync(stream, buffer, offset, len, flags) }, varargs: undefined, get: function() { SYSCALLS.varargs += 4 - var ret = HEAP32[(SYSCALLS.varargs - 4) >> 2] + var ret = HEAP32[(SYSCALLS.varargs - 4) >>> 2] return ret }, getStr: function(ptr) { @@ -3315,7 +3202,7 @@ var Compare = (() => { case 5: { var arg = SYSCALLS.get() var offset = 0 - HEAP16[(arg + offset) >> 1] = 2 + HEAP16[(arg + offset) >>> 1] = 2 return 0 } case 6: @@ -3332,10 +3219,13 @@ var Compare = (() => { } } } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite) + } function ___syscall_getcwd(buf, size) { try { if (size === 0) return -28 @@ -3345,7 +3235,7 @@ var Compare = (() => { stringToUTF8(cwd, buf, size) return cwdLengthInBytes } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3371,7 +3261,7 @@ var Compare = (() => { case 21519: { if (!stream.tty) return -59 var argp = SYSCALLS.get() - HEAP32[argp >> 2] = 0 + HEAP32[argp >>> 2] = 0 return 0 } case 21520: { @@ -3394,7 +3284,7 @@ var Compare = (() => { return -28 } } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3406,7 +3296,7 @@ var Compare = (() => { var mode = varargs ? SYSCALLS.get() : 0 return FS.open(path, flags, mode).fd } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3417,12 +3307,12 @@ var Compare = (() => { if (bufsize <= 0) return -28 var ret = FS.readlink(path) var len = Math.min(bufsize, lengthBytesUTF8(ret)) - var endChar = HEAP8[buf + len] + var endChar = HEAP8[(buf + len) >>> 0] stringToUTF8(ret, buf, bufsize + 1) - HEAP8[buf + len] = endChar + HEAP8[(buf + len) >>> 0] = endChar return len } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3431,7 +3321,7 @@ var Compare = (() => { path = SYSCALLS.getStr(path) return SYSCALLS.doStat(FS.stat, path, buf) } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3439,15 +3329,16 @@ var Compare = (() => { abort('') } function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.copyWithin(dest, src, src + num) + HEAPU8.copyWithin(dest >>> 0, src >>> 0, (src + num) >>> 0) } function getHeapMax() { - return 2147483648 + return 4294901760 } function emscripten_realloc_buffer(size) { + var b = wasmMemory.buffer try { - wasmMemory.grow((size - buffer.byteLength + 65535) >>> 16) - updateGlobalBufferAndViews(wasmMemory.buffer) + wasmMemory.grow((size - b.byteLength + 65535) >>> 16) + updateMemoryViews() return 1 } catch (e) {} } @@ -3511,30 +3402,30 @@ var Compare = (() => { } return getEnvStrings.strings } - function writeAsciiToMemory(str, buffer, dontAddNull) { + function stringToAscii(str, buffer) { for (var i = 0; i < str.length; ++i) { - HEAP8[buffer++ >> 0] = str.charCodeAt(i) + HEAP8[buffer++ >>> 0] = str.charCodeAt(i) } - if (!dontAddNull) HEAP8[buffer >> 0] = 0 + HEAP8[buffer >>> 0] = 0 } function _environ_get(__environ, environ_buf) { var bufSize = 0 getEnvStrings().forEach(function(string, i) { var ptr = environ_buf + bufSize - HEAPU32[(__environ + i * 4) >> 2] = ptr - writeAsciiToMemory(string, ptr) + HEAPU32[(__environ + i * 4) >>> 2] = ptr + stringToAscii(string, ptr) bufSize += string.length + 1 }) return 0 } function _environ_sizes_get(penviron_count, penviron_buf_size) { var strings = getEnvStrings() - HEAPU32[penviron_count >> 2] = strings.length + HEAPU32[penviron_count >>> 2] = strings.length var bufSize = 0 strings.forEach(function(string) { bufSize += string.length + 1 }) - HEAPU32[penviron_buf_size >> 2] = bufSize + HEAPU32[penviron_buf_size >>> 2] = bufSize return 0 } function _proc_exit(code) { @@ -3556,20 +3447,23 @@ var Compare = (() => { FS.close(stream) return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } function doReadv(stream, iov, iovcnt, offset) { var ret = 0 for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] + var ptr = HEAPU32[iov >>> 2] + var len = HEAPU32[(iov + 4) >>> 2] iov += 8 var curr = FS.read(stream, HEAP8, ptr, len, offset) if (curr < 0) return -1 ret += curr if (curr < len) break + if (typeof offset !== 'undefined') { + offset += curr + } } return ret } @@ -3577,10 +3471,10 @@ var Compare = (() => { try { var stream = SYSCALLS.getStreamFromFD(fd) var num = doReadv(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num + HEAPU32[pnum >>> 2] = num return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } @@ -3608,25 +3502,28 @@ var Compare = (() => { ) >>> 0 : 0), ]), - (HEAP32[newOffset >> 2] = tempI64[0]), - (HEAP32[(newOffset + 4) >> 2] = tempI64[1]) + (HEAP32[newOffset >>> 2] = tempI64[0]), + (HEAP32[(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)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } function doWritev(stream, iov, iovcnt, offset) { var ret = 0 for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] + var ptr = HEAPU32[iov >>> 2] + var len = HEAPU32[(iov + 4) >>> 2] iov += 8 var curr = FS.write(stream, HEAP8, ptr, len, offset) if (curr < 0) return -1 ret += curr + if (typeof offset !== 'undefined') { + offset += curr + } } return ret } @@ -3634,31 +3531,31 @@ var Compare = (() => { try { var stream = SYSCALLS.getStreamFromFD(fd) var num = doWritev(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num + HEAPU32[pnum >>> 2] = num return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } - function __isLeapYear(year) { + function isLeapYear(year) { return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) } - function __arraySum(array, index) { + function arraySum(array, index) { var sum = 0 for (var i = 0; i <= index; sum += array[i++]) {} return sum } - var __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - var __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - function __addDays(date, days) { + var MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + var MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + function addDays(date, days) { var newDate = new Date(date.getTime()) while (days > 0) { - var leap = __isLeapYear(newDate.getFullYear()) + var leap = isLeapYear(newDate.getFullYear()) var currentMonth = newDate.getMonth() - var daysInCurrentMonth = (leap - ? __MONTH_DAYS_LEAP - : __MONTH_DAYS_REGULAR)[currentMonth] + var daysInCurrentMonth = (leap ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[ + currentMonth + ] if (days > daysInCurrentMonth - newDate.getDate()) { days -= daysInCurrentMonth - newDate.getDate() + 1 newDate.setDate(1) @@ -3676,21 +3573,21 @@ var Compare = (() => { return newDate } function writeArrayToMemory(array, buffer) { - HEAP8.set(array, buffer) + HEAP8.set(array, buffer >>> 0) } function _strftime(s, maxsize, format, tm) { - var tm_zone = HEAP32[(tm + 40) >> 2] + var tm_zone = HEAP32[(tm + 40) >>> 2] var date = { - tm_sec: HEAP32[tm >> 2], - tm_min: HEAP32[(tm + 4) >> 2], - tm_hour: HEAP32[(tm + 8) >> 2], - tm_mday: HEAP32[(tm + 12) >> 2], - tm_mon: HEAP32[(tm + 16) >> 2], - tm_year: HEAP32[(tm + 20) >> 2], - tm_wday: HEAP32[(tm + 24) >> 2], - tm_yday: HEAP32[(tm + 28) >> 2], - tm_isdst: HEAP32[(tm + 32) >> 2], - tm_gmtoff: HEAP32[(tm + 36) >> 2], + tm_sec: HEAP32[tm >>> 2], + tm_min: HEAP32[(tm + 4) >>> 2], + tm_hour: HEAP32[(tm + 8) >>> 2], + tm_mday: HEAP32[(tm + 12) >>> 2], + tm_mon: HEAP32[(tm + 16) >>> 2], + tm_year: HEAP32[(tm + 20) >>> 2], + tm_wday: HEAP32[(tm + 24) >>> 2], + tm_yday: HEAP32[(tm + 28) >>> 2], + tm_isdst: HEAP32[(tm + 32) >>> 2], + tm_gmtoff: HEAP32[(tm + 36) >>> 2], tm_zone: tm_zone ? UTF8ToString(tm_zone) : '', } var pattern = UTF8ToString(format) @@ -3794,7 +3691,7 @@ var Compare = (() => { } } function getWeekBasedYear(date) { - var thisDate = __addDays( + var thisDate = addDays( new Date(date.tm_year + 1900, 0, 1), date.tm_yday ) @@ -3853,10 +3750,10 @@ var Compare = (() => { '%j': function(date) { return leadingNulls( date.tm_mday + - __arraySum( - __isLeapYear(date.tm_year + 1900) - ? __MONTH_DAYS_LEAP - : __MONTH_DAYS_REGULAR, + arraySum( + isLeapYear(date.tm_year + 1900) + ? MONTH_DAYS_LEAP + : MONTH_DAYS_REGULAR, date.tm_mon - 1 ), 3 @@ -3902,13 +3799,13 @@ var Compare = (() => { var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7 if ( dec31 == 4 || - (dec31 == 5 && __isLeapYear((date.tm_year % 400) - 1)) + (dec31 == 5 && isLeapYear((date.tm_year % 400) - 1)) ) { val++ } } else if (val == 53) { var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7 - if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1 + if (jan1 != 4 && (jan1 != 3 || !isLeapYear(date.tm_year))) val = 1 } return leadingNulls(val, 2) }, @@ -3965,10 +3862,10 @@ var Compare = (() => { } quit_(1, e) } - function allocateUTF8OnStack(str) { + function stringToUTF8OnStack(str) { var size = lengthBytesUTF8(str) + 1 var ret = stackAlloc(size) - stringToUTF8Array(str, HEAP8, ret, size) + stringToUTF8(str, ret, size) return ret } function getCFunc(ident) { @@ -3980,9 +3877,7 @@ var Compare = (() => { string: str => { var ret = 0 if (str !== null && str !== undefined && str !== 0) { - var len = (str.length << 2) + 1 - ret = stackAlloc(len) - stringToUTF8(str, ret, len) + ret = stringToUTF8OnStack(str) } return ret }, @@ -4022,10 +3917,9 @@ var Compare = (() => { return ret } function cwrap(ident, returnType, argTypes, opts) { - argTypes = argTypes || [] - var numericArgs = argTypes.every( - type => type === 'number' || type === 'boolean' - ) + var numericArgs = + !argTypes || + argTypes.every(type => type === 'number' || type === 'boolean') var numericRet = returnType !== 'string' if (numericRet && numericArgs && !opts) { return getCFunc(ident) @@ -4034,10 +3928,17 @@ var Compare = (() => { return ccall(ident, returnType, argTypes, arguments, opts) } } + function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + HEAP8[buffer++ >>> 0] = str.charCodeAt(i) + } + if (!dontAddNull) HEAP8[buffer >>> 0] = 0 + } function AsciiToString(ptr) { + ptr >>>= 0 var str = '' while (1) { - var ch = HEAPU8[ptr++ >> 0] + var ch = HEAPU8[ptr++ >>> 0] if (!ch) return str str += String.fromCharCode(ch) } @@ -4220,7 +4121,7 @@ var Compare = (() => { EOWNERDEAD: 62, ESTRPIPE: 135, } - var asmLibraryArg = { + var wasmImports = { b: ___cxa_throw, d: ___syscall_fcntl64, r: ___syscall_getcwd, @@ -4241,20 +4142,24 @@ var Compare = (() => { l: _strftime_l, } var asm = createWasm() - var ___wasm_call_ctors = (Module['___wasm_call_ctors'] = function() { - return (___wasm_call_ctors = Module['___wasm_call_ctors'] = - Module['asm']['t']).apply(null, arguments) - }) + var ___wasm_call_ctors = function() { + return (___wasm_call_ctors = Module['asm']['t']).apply(null, arguments) + } var _main = (Module['_main'] = function() { return (_main = Module['_main'] = Module['asm']['u']).apply( null, arguments ) }) - var ___errno_location = (Module['___errno_location'] = function() { - return (___errno_location = Module['___errno_location'] = - Module['asm']['v']).apply(null, arguments) - }) + var ___errno_location = function() { + return (___errno_location = Module['asm']['v']).apply(null, arguments) + } + var _malloc = function() { + return (_malloc = Module['asm']['malloc']).apply(null, arguments) + } + var _free = function() { + return (_free = Module['asm']['free']).apply(null, arguments) + } var _itk_wasm_input_array_alloc = (Module[ '_itk_wasm_input_array_alloc' ] = function() { @@ -4301,30 +4206,21 @@ var Compare = (() => { return (_itk_wasm_free_all = Module['_itk_wasm_free_all'] = Module['asm']['C']).apply(null, arguments) }) - var stackSave = (Module['stackSave'] = function() { - return (stackSave = Module['stackSave'] = Module['asm']['E']).apply( - null, - arguments - ) - }) - var stackRestore = (Module['stackRestore'] = function() { - return (stackRestore = Module['stackRestore'] = Module['asm']['F']).apply( - null, - arguments - ) - }) - var stackAlloc = (Module['stackAlloc'] = function() { - return (stackAlloc = Module['stackAlloc'] = Module['asm']['G']).apply( + var stackSave = function() { + return (stackSave = Module['asm']['E']).apply(null, arguments) + } + var stackRestore = function() { + return (stackRestore = Module['asm']['F']).apply(null, arguments) + } + var stackAlloc = function() { + return (stackAlloc = Module['asm']['G']).apply(null, arguments) + } + var ___cxa_is_pointer_type = function() { + return (___cxa_is_pointer_type = Module['asm']['H']).apply( null, arguments ) - }) - var ___cxa_is_pointer_type = (Module[ - '___cxa_is_pointer_type' - ] = function() { - return (___cxa_is_pointer_type = Module['___cxa_is_pointer_type'] = - Module['asm']['H']).apply(null, arguments) - }) + } Module['addRunDependency'] = addRunDependency Module['removeRunDependency'] = removeRunDependency Module['FS_createPath'] = FS.createPath @@ -4334,6 +4230,8 @@ var Compare = (() => { Module['FS_createDevice'] = FS.createDevice Module['FS_unlink'] = FS.unlink Module['callMain'] = callMain + Module['stackSave'] = stackSave + Module['stackRestore'] = stackRestore Module['ccall'] = ccall Module['cwrap'] = cwrap Module['AsciiToString'] = AsciiToString @@ -4344,17 +4242,16 @@ var Compare = (() => { if (!calledRun) run() if (!calledRun) dependenciesFulfilled = runCaller } - function callMain(args) { - var entryFunction = Module['_main'] - args = args || [] + function callMain(args = []) { + var entryFunction = _main args.unshift(thisProgram) var argc = args.length var argv = stackAlloc((argc + 1) * 4) var argv_ptr = argv >> 2 args.forEach(arg => { - HEAP32[argv_ptr++] = allocateUTF8OnStack(arg) + HEAP32[argv_ptr++ >>> 0] = stringToUTF8OnStack(arg) }) - HEAP32[argv_ptr] = 0 + HEAP32[argv_ptr >>> 0] = 0 try { var ret = entryFunction(argc, argv) exitJS(ret, true) @@ -4363,8 +4260,7 @@ var Compare = (() => { return handleException(e) } } - function run(args) { - args = args || arguments_ + function run(args = arguments_) { if (runDependencies > 0) { return } @@ -4412,8 +4308,8 @@ var Compare = (() => { } var path = require('path') var containingDir = path.dirname(filePath) - if (FS.isDir(containingDir) || containingDir === '/') { - return + if (containingDir === '/') { + throw new Error('Cannot mount root directory') } var currentDir = '/' var splitContainingDir = containingDir.split(path.sep) @@ -4435,6 +4331,32 @@ var Compare = (() => { var containingDir = path.dirname(filePath) FS.unmount(containingDir) } + Module.mountDir = function(dir) { + if (!ENVIRONMENT_IS_NODE) { + return + } + if (dir === '/') { + throw new Error('Cannot mount root directory') + } + var currentDir = '/' + var path = require('path') + var splitDir = dir.split(path.sep) + for (var ii = 1; ii < splitDir.length; ii++) { + currentDir += splitDir[ii] + if (!FS.analyzePath(currentDir).exists) { + FS.mkdir(currentDir) + } + currentDir += '/' + } + FS.mount(NODEFS, { root: dir }, currentDir) + return currentDir + } + Module.unmountDir = function(dir) { + if (!ENVIRONMENT_IS_NODE) { + return + } + FS.unmount(dir) + } Module.fs_mkdirs = function(dirs) { var currentDir = '/' var splitDirs = dirs.split('/') diff --git a/src/IO/Compare/emscripten-build/Compare.umd.wasm b/src/IO/Compare/emscripten-build/Compare.umd.wasm deleted file mode 100755 index f23c70a88..000000000 Binary files a/src/IO/Compare/emscripten-build/Compare.umd.wasm and /dev/null differ diff --git a/src/IO/Compare/emscripten-build/Compare.wasm b/src/IO/Compare/emscripten-build/Compare.wasm index f23c70a88..638201686 100755 Binary files a/src/IO/Compare/emscripten-build/Compare.wasm and b/src/IO/Compare/emscripten-build/Compare.wasm differ diff --git a/src/IO/Compare/emscripten-build/Compare.wasm.zst b/src/IO/Compare/emscripten-build/Compare.wasm.zst new file mode 100755 index 000000000..a90940206 Binary files /dev/null and b/src/IO/Compare/emscripten-build/Compare.wasm.zst differ diff --git a/src/IO/Compare/package-lock.json b/src/IO/Compare/package-lock.json index a92eca4d6..152276bcb 100644 --- a/src/IO/Compare/package-lock.json +++ b/src/IO/Compare/package-lock.json @@ -10,7 +10,7 @@ "license": "Apache-2.0", "dependencies": { "itk-image-io": "^1.0.0-b.84", - "itk-wasm": "^1.0.0-b.84" + "itk-wasm": "^1.0.0-b.158" } }, "node_modules/@babel/runtime": { @@ -24,17 +24,29 @@ "node": ">=6.9.0" } }, + "node_modules/@thewtex/zstddec": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@thewtex/zstddec/-/zstddec-0.2.0.tgz", + "integrity": "sha512-lIS+smrfa48WGlDVQSQSm0jBnwVp5XmfGJWU9q0J0fRFY9ohzK4s27Zg2SFMb1NWMp9RiANAdK+/q86EBGWR1Q==" + }, "node_modules/@types/emscripten": { "version": "1.39.6", "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.6.tgz", "integrity": "sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/axios": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", - "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dependencies": { - "follow-redirects": "^1.14.4" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/balanced-match": { @@ -50,6 +62,22 @@ "balanced-match": "^1.0.0" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comlink": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.1.tgz", + "integrity": "sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==" + }, "node_modules/commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", @@ -58,10 +86,18 @@ "node": "^12.20.0 || >=14" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "funding": [ { "type": "individual", @@ -77,6 +113,19 @@ } } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -140,7 +189,15 @@ "itk-wasm": "1.0.0-b.84" } }, - "node_modules/itk-wasm": { + "node_modules/itk-image-io/node_modules/axios": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", + "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", + "dependencies": { + "follow-redirects": "^1.14.4" + } + }, + "node_modules/itk-image-io/node_modules/itk-wasm": { "version": "1.0.0-b.84", "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.84.tgz", "integrity": "sha512-iM3ZMVqGv/3kjoe4UUTO0PlyGLMOrmOb0e1e6+5kHu4fnTg6PhNjxLGdanLH/OlX6VSv6LOP6o8rKiC7Xo0zRw==", @@ -160,6 +217,27 @@ "itk-wasm": "src/itk-wasm-cli.js" } }, + "node_modules/itk-wasm": { + "version": "1.0.0-b.158", + "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.158.tgz", + "integrity": "sha512-IHRmwu1zxLmH9auF7kN3BREbom9NGorVhK1g4TRNsr4qRbuHZsZ3RsGRNVqWI2LZamo3Rw9sDYrM7NMA5x0dqQ==", + "dependencies": { + "@babel/runtime": "^7.15.4", + "@thewtex/zstddec": "^0.2.0", + "@types/emscripten": "^1.39.6", + "axios": "^1.4.0", + "comlink": "^4.4.1", + "commander": "^9.4.0", + "fs-extra": "^10.0.0", + "glob": "^8.1.0", + "markdown-table": "^3.0.3", + "mime-types": "^2.1.35", + "wasm-feature-detect": "^1.5.1" + }, + "bin": { + "itk-wasm": "src/itk-wasm-cli.js" + } + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -223,6 +301,11 @@ "resolved": "https://registry.npmjs.org/promise-file-reader/-/promise-file-reader-1.0.3.tgz", "integrity": "sha512-/sumzg8xjurm6PchjhlXb592lv3tFFaO13DtsFqbglhdZjCzxhDgvmPv/vMcarpfGiCRPC4ZvZ+YsV0am0d4+g==" }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", @@ -236,6 +319,11 @@ "node": ">= 10.0.0" } }, + "node_modules/wasm-feature-detect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/wasm-feature-detect/-/wasm-feature-detect-1.6.1.tgz", + "integrity": "sha512-R1i9ED8UlLu/foILNB1ck9XS63vdtqU/tP1MCugVekETp/ySCrBZRk5I/zI67cI1wlQYeSonNm1PLjDHZDNg6g==" + }, "node_modules/webworker-promise": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/webworker-promise/-/webworker-promise-0.4.4.tgz", @@ -256,17 +344,29 @@ "regenerator-runtime": "^0.13.11" } }, + "@thewtex/zstddec": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@thewtex/zstddec/-/zstddec-0.2.0.tgz", + "integrity": "sha512-lIS+smrfa48WGlDVQSQSm0jBnwVp5XmfGJWU9q0J0fRFY9ohzK4s27Zg2SFMb1NWMp9RiANAdK+/q86EBGWR1Q==" + }, "@types/emscripten": { "version": "1.39.6", "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.6.tgz", "integrity": "sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==" }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "axios": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", - "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "requires": { - "follow-redirects": "^1.14.4" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "balanced-match": { @@ -282,15 +382,43 @@ "balanced-match": "^1.0.0" } }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "comlink": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.1.tgz", + "integrity": "sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==" + }, "commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } }, "fs-extra": { "version": "10.1.0", @@ -344,23 +472,51 @@ "integrity": "sha512-lqMlvvFT9y3XkmfQZWQ6WUN6Ci6Bu7eb1aV5xex8CsvXhFrEDmuInmlT9f67H2cluTYvuRV6UzEPBnyimUAGZQ==", "requires": { "itk-wasm": "1.0.0-b.84" + }, + "dependencies": { + "axios": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", + "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", + "requires": { + "follow-redirects": "^1.14.4" + } + }, + "itk-wasm": { + "version": "1.0.0-b.84", + "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.84.tgz", + "integrity": "sha512-iM3ZMVqGv/3kjoe4UUTO0PlyGLMOrmOb0e1e6+5kHu4fnTg6PhNjxLGdanLH/OlX6VSv6LOP6o8rKiC7Xo0zRw==", + "requires": { + "@babel/runtime": "^7.15.4", + "@types/emscripten": "^1.39.6", + "axios": "^0.23.0", + "commander": "^9.4.0", + "fs-extra": "^10.0.0", + "glob": "^8.1.0", + "markdown-table": "^3.0.3", + "mime-types": "^2.1.35", + "promise-file-reader": "^1.0.3", + "webworker-promise": "^0.4.2" + } + } } }, "itk-wasm": { - "version": "1.0.0-b.84", - "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.84.tgz", - "integrity": "sha512-iM3ZMVqGv/3kjoe4UUTO0PlyGLMOrmOb0e1e6+5kHu4fnTg6PhNjxLGdanLH/OlX6VSv6LOP6o8rKiC7Xo0zRw==", + "version": "1.0.0-b.158", + "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.158.tgz", + "integrity": "sha512-IHRmwu1zxLmH9auF7kN3BREbom9NGorVhK1g4TRNsr4qRbuHZsZ3RsGRNVqWI2LZamo3Rw9sDYrM7NMA5x0dqQ==", "requires": { "@babel/runtime": "^7.15.4", + "@thewtex/zstddec": "^0.2.0", "@types/emscripten": "^1.39.6", - "axios": "^0.23.0", + "axios": "^1.4.0", + "comlink": "^4.4.1", "commander": "^9.4.0", "fs-extra": "^10.0.0", "glob": "^8.1.0", "markdown-table": "^3.0.3", "mime-types": "^2.1.35", - "promise-file-reader": "^1.0.3", - "webworker-promise": "^0.4.2" + "wasm-feature-detect": "^1.5.1" } }, "jsonfile": { @@ -411,6 +567,11 @@ "resolved": "https://registry.npmjs.org/promise-file-reader/-/promise-file-reader-1.0.3.tgz", "integrity": "sha512-/sumzg8xjurm6PchjhlXb592lv3tFFaO13DtsFqbglhdZjCzxhDgvmPv/vMcarpfGiCRPC4ZvZ+YsV0am0d4+g==" }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", @@ -421,6 +582,11 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" }, + "wasm-feature-detect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/wasm-feature-detect/-/wasm-feature-detect-1.6.1.tgz", + "integrity": "sha512-R1i9ED8UlLu/foILNB1ck9XS63vdtqU/tP1MCugVekETp/ySCrBZRk5I/zI67cI1wlQYeSonNm1PLjDHZDNg6g==" + }, "webworker-promise": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/webworker-promise/-/webworker-promise-0.4.4.tgz", diff --git a/src/IO/Compare/package.json b/src/IO/Compare/package.json index 991bcf51f..9c293d66f 100644 --- a/src/IO/Compare/package.json +++ b/src/IO/Compare/package.json @@ -13,6 +13,6 @@ "license": "Apache-2.0", "dependencies": { "itk-image-io": "^1.0.0-b.84", - "itk-wasm": "^1.0.0-b.84" + "itk-wasm": "^1.0.0-b.158" } } diff --git a/src/IO/Downsample/emscripten-build/Downsample.js b/src/IO/Downsample/emscripten-build/Downsample.js index 628cae022..5f785bc11 100644 --- a/src/IO/Downsample/emscripten-build/Downsample.js +++ b/src/IO/Downsample/emscripten-build/Downsample.js @@ -1,9 +1,7 @@ var Downsample = (() => { var _scriptDir = import.meta.url - return async function(Downsample) { - Downsample = Downsample || {} - + return async function(Downsample = {}) { var Module = typeof Downsample != 'undefined' ? Downsample : {} var readyPromiseResolve, readyPromiseReject Module['ready'] = new Promise(function(resolve, reject) { @@ -52,11 +50,6 @@ var Downsample = (() => { return scriptDirectory + path } var read_, readAsync, readBinary, setWindowTitle - function logExceptionOnExit(e) { - if (e instanceof ExitStatus) return - let toLog = e - err('exiting due to exception: ' + toLog) - } if (ENVIRONMENT_IS_NODE) { const { createRequire: createRequire } = await import('module') var require = createRequire(import.meta.url) @@ -91,25 +84,13 @@ var Downsample = (() => { else onload(data.buffer) }) } - if (process['argv'].length > 1) { - thisProgram = process['argv'][1].replace(/\\/g, '/') + if (!Module['thisProgram'] && process.argv.length > 1) { + thisProgram = process.argv[1].replace(/\\/g, '/') } - arguments_ = process['argv'].slice(2) - process['on']('uncaughtException', function(ex) { - if (!(ex instanceof ExitStatus)) { - throw ex - } - }) - process['on']('unhandledRejection', function(reason) { - throw reason - }) + arguments_ = process.argv.slice(2) quit_ = (status, toThrow) => { - if (keepRuntimeAlive()) { - process['exitCode'] = status - throw toThrow - } - logExceptionOnExit(toThrow) - process['exit'](status) + process.exitCode = status + throw toThrow } Module['inspect'] = function() { return '[Emscripten Module object]' @@ -186,131 +167,27 @@ var Downsample = (() => { abort(text) } } - var UTF8Decoder = - typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined - function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { - var endIdx = idx + maxBytesToRead - var endPtr = idx - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)) - } - var str = '' - while (idx < endPtr) { - var u0 = heapOrArray[idx++] - if (!(u0 & 128)) { - str += String.fromCharCode(u0) - continue - } - var u1 = heapOrArray[idx++] & 63 - if ((u0 & 224) == 192) { - str += String.fromCharCode(((u0 & 31) << 6) | u1) - continue - } - var u2 = heapOrArray[idx++] & 63 - if ((u0 & 240) == 224) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2 - } else { - u0 = - ((u0 & 7) << 18) | - (u1 << 12) | - (u2 << 6) | - (heapOrArray[idx++] & 63) - } - if (u0 < 65536) { - str += String.fromCharCode(u0) - } else { - var ch = u0 - 65536 - str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)) - } - } - return str - } - function UTF8ToString(ptr, maxBytesToRead) { - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : '' + var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64 + function updateMemoryViews() { + var b = wasmMemory.buffer + Module['HEAP8'] = HEAP8 = new Int8Array(b) + Module['HEAP16'] = HEAP16 = new Int16Array(b) + Module['HEAP32'] = HEAP32 = new Int32Array(b) + Module['HEAPU8'] = HEAPU8 = new Uint8Array(b) + Module['HEAPU16'] = HEAPU16 = new Uint16Array(b) + Module['HEAPU32'] = HEAPU32 = new Uint32Array(b) + Module['HEAPF32'] = HEAPF32 = new Float32Array(b) + Module['HEAPF64'] = HEAPF64 = new Float64Array(b) } - function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { - if (!(maxBytesToWrite > 0)) return 0 - var startIdx = outIdx - var endIdx = outIdx + maxBytesToWrite - 1 - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i) - if (u >= 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, HEAPU8, outPtr, maxBytesToWrite) - } - function lengthBytesUTF8(str) { - var len = 0 - for (var i = 0; i < str.length; ++i) { - var c = str.charCodeAt(i) - if (c <= 127) { - len++ - } else if (c <= 2047) { - len += 2 - } else if (c >= 55296 && c <= 57343) { - len += 4 - ++i - } else { - len += 3 - } - } - return len - } - var buffer, - HEAP8, - HEAPU8, - HEAP16, - HEAPU16, - HEAP32, - HEAPU32, - HEAPF32, - HEAPF64 - 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 var wasmTable var __ATPRERUN__ = [] var __ATINIT__ = [] var __ATMAIN__ = [] var __ATPOSTRUN__ = [] var runtimeInitialized = false + var runtimeKeepaliveCounter = 0 function keepRuntimeAlive() { - return noExitRuntime + return noExitRuntime || runtimeKeepaliveCounter > 0 } function preRun() { if (Module['preRun']) { @@ -422,26 +299,24 @@ var Downsample = (() => { abort(err) } } - function getBinaryPromise() { + function getBinaryPromise(binaryFile) { if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { - if (typeof fetch == 'function' && !isFileURI(wasmBinaryFile)) { - return fetch(wasmBinaryFile, { credentials: 'same-origin' }) + if (typeof fetch == 'function' && !isFileURI(binaryFile)) { + return fetch(binaryFile, { credentials: 'same-origin' }) .then(function(response) { if (!response['ok']) { - throw "failed to load wasm binary file at '" + - wasmBinaryFile + - "'" + throw "failed to load wasm binary file at '" + binaryFile + "'" } return response['arrayBuffer']() }) .catch(function() { - return getBinary(wasmBinaryFile) + return getBinary(binaryFile) }) } else { if (readAsync) { return new Promise(function(resolve, reject) { readAsync( - wasmBinaryFile, + binaryFile, function(response) { resolve(new Uint8Array(response)) }, @@ -452,70 +327,75 @@ var Downsample = (() => { } } return Promise.resolve().then(function() { - return getBinary(wasmBinaryFile) + return getBinary(binaryFile) }) } + function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile) + .then(function(binary) { + return WebAssembly.instantiate(binary, imports) + }) + .then(function(instance) { + return instance + }) + .then(receiver, function(reason) { + err('failed to asynchronously prepare wasm: ' + reason) + abort(reason) + }) + } + function instantiateAsync(binary, binaryFile, imports, callback) { + if ( + !binary && + typeof WebAssembly.instantiateStreaming == 'function' && + !isDataURI(binaryFile) && + !isFileURI(binaryFile) && + !ENVIRONMENT_IS_NODE && + typeof fetch == 'function' + ) { + return fetch(binaryFile, { credentials: 'same-origin' }).then(function( + response + ) { + var result = WebAssembly.instantiateStreaming(response, imports) + return result.then(callback, function(reason) { + err('wasm streaming compile failed: ' + reason) + err('falling back to ArrayBuffer instantiation') + return instantiateArrayBuffer(binaryFile, imports, callback) + }) + }) + } else { + return instantiateArrayBuffer(binaryFile, imports, callback) + } + } function createWasm() { - var info = { a: asmLibraryArg } + var info = { a: wasmImports } function receiveInstance(instance, module) { var exports = instance.exports Module['asm'] = exports wasmMemory = Module['asm']['s'] - updateGlobalBufferAndViews(wasmMemory.buffer) + updateMemoryViews() wasmTable = Module['asm']['D'] addOnInit(Module['asm']['t']) removeRunDependency('wasm-instantiate') + return exports } addRunDependency('wasm-instantiate') function receiveInstantiationResult(result) { receiveInstance(result['instance']) } - 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) && - !isFileURI(wasmBinaryFile) && - !ENVIRONMENT_IS_NODE && - 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 + return Module['instantiateWasm'](info, receiveInstance) } catch (e) { err('Module.instantiateWasm callback failed with error: ' + e) readyPromiseReject(e) } } - instantiateAsync().catch(readyPromiseReject) + instantiateAsync( + wasmBinary, + wasmBinaryFile, + info, + receiveInstantiationResult + ).catch(readyPromiseReject) return {} } var tempDouble @@ -534,33 +414,33 @@ var Downsample = (() => { this.excPtr = excPtr this.ptr = excPtr - 24 this.set_type = function(type) { - HEAPU32[(this.ptr + 4) >> 2] = type + HEAPU32[(this.ptr + 4) >>> 2] = type } this.get_type = function() { - return HEAPU32[(this.ptr + 4) >> 2] + return HEAPU32[(this.ptr + 4) >>> 2] } this.set_destructor = function(destructor) { - HEAPU32[(this.ptr + 8) >> 2] = destructor + HEAPU32[(this.ptr + 8) >>> 2] = destructor } this.get_destructor = function() { - return HEAPU32[(this.ptr + 8) >> 2] + return HEAPU32[(this.ptr + 8) >>> 2] } this.set_refcount = function(refcount) { - HEAP32[this.ptr >> 2] = refcount + HEAP32[this.ptr >>> 2] = refcount } this.set_caught = function(caught) { caught = caught ? 1 : 0 - HEAP8[(this.ptr + 12) >> 0] = caught + HEAP8[(this.ptr + 12) >>> 0] = caught } this.get_caught = function() { - return HEAP8[(this.ptr + 12) >> 0] != 0 + return HEAP8[(this.ptr + 12) >>> 0] != 0 } this.set_rethrown = function(rethrown) { rethrown = rethrown ? 1 : 0 - HEAP8[(this.ptr + 13) >> 0] = rethrown + HEAP8[(this.ptr + 13) >>> 0] = rethrown } this.get_rethrown = function() { - return HEAP8[(this.ptr + 13) >> 0] != 0 + return HEAP8[(this.ptr + 13) >>> 0] != 0 } this.init = function(type, destructor) { this.set_adjusted_ptr(0) @@ -571,24 +451,24 @@ var Downsample = (() => { this.set_rethrown(false) } this.add_ref = function() { - var value = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = value + 1 + var value = HEAP32[this.ptr >>> 2] + HEAP32[this.ptr >>> 2] = value + 1 } this.release_ref = function() { - var prev = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = prev - 1 + var prev = HEAP32[this.ptr >>> 2] + HEAP32[this.ptr >>> 2] = prev - 1 return prev === 1 } this.set_adjusted_ptr = function(adjustedPtr) { - HEAPU32[(this.ptr + 16) >> 2] = adjustedPtr + HEAPU32[(this.ptr + 16) >>> 2] = adjustedPtr } this.get_adjusted_ptr = function() { - return HEAPU32[(this.ptr + 16) >> 2] + return HEAPU32[(this.ptr + 16) >>> 2] } this.get_exception_ptr = function() { var isPointer = ___cxa_is_pointer_type(this.get_type()) if (isPointer) { - return HEAPU32[this.excPtr >> 2] + return HEAPU32[this.excPtr >>> 2] } var adjusted = this.get_adjusted_ptr() if (adjusted !== 0) return adjusted @@ -602,10 +482,10 @@ var Downsample = (() => { info.init(type, destructor) exceptionLast = ptr uncaughtExceptionCount++ - throw ptr + throw exceptionLast } function setErrNo(value) { - HEAP32[___errno_location() >> 2] = value + HEAP32[___errno_location() >>> 2] = value return value } var PATH = { @@ -678,23 +558,27 @@ var Downsample = (() => { return PATH.normalize(l + '/' + r) }, } - function getRandomDevice() { + function initRandomFill() { if ( typeof crypto == 'object' && typeof crypto['getRandomValues'] == 'function' ) { - var randomBuffer = new Uint8Array(1) - return () => { - crypto.getRandomValues(randomBuffer) - return randomBuffer[0] - } + return view => crypto.getRandomValues(view) } else if (ENVIRONMENT_IS_NODE) { try { var crypto_module = require('crypto') - return () => crypto_module['randomBytes'](1)[0] + var randomFillSync = crypto_module['randomFillSync'] + if (randomFillSync) { + return view => crypto_module['randomFillSync'](view) + } + var randomBytes = crypto_module['randomBytes'] + return view => (view.set(randomBytes(view.byteLength)), view) } catch (e) {} } - return () => abort('randomDevice') + abort('initRandomDevice') + } + function randomFill(view) { + return (randomFill = initRandomFill())(view) } var PATH_FS = { resolve: function() { @@ -749,6 +633,57 @@ var Downsample = (() => { return outputParts.join('/') }, } + function lengthBytesUTF8(str) { + var len = 0 + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i) + if (c <= 127) { + len++ + } else if (c <= 2047) { + len += 2 + } else if (c >= 55296 && c <= 57343) { + len += 4 + ++i + } else { + len += 3 + } + } + return len + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + outIdx >>>= 0 + if (!(maxBytesToWrite > 0)) return 0 + var startIdx = outIdx + var endIdx = outIdx + maxBytesToWrite - 1 + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i) + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i) + u = (65536 + ((u & 1023) << 10)) | (u1 & 1023) + } + if (u <= 127) { + if (outIdx >= endIdx) break + heap[outIdx++ >>> 0] = u + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break + heap[outIdx++ >>> 0] = 192 | (u >> 6) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break + heap[outIdx++ >>> 0] = 224 | (u >> 12) + heap[outIdx++ >>> 0] = 128 | ((u >> 6) & 63) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } else { + if (outIdx + 3 >= endIdx) break + heap[outIdx++ >>> 0] = 240 | (u >> 18) + heap[outIdx++ >>> 0] = 128 | ((u >> 12) & 63) + heap[outIdx++ >>> 0] = 128 | ((u >> 6) & 63) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } + } + heap[outIdx >>> 0] = 0 + return outIdx - startIdx + } function intArrayFromString(stringy, dontAddNull, length) { var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1 var u8array = new Array(len) @@ -987,6 +922,7 @@ var Downsample = (() => { return new Uint8Array(node.contents) }, expandFileStorage: function(node, newCapacity) { + newCapacity >>>= 0 var prevCapacity = node.contents ? node.contents.length : 0 if (prevCapacity >= newCapacity) return var CAPACITY_DOUBLING_MAX = 1024 * 1024 @@ -1003,6 +939,7 @@ var Downsample = (() => { node.contents.set(oldContents.subarray(0, node.usedBytes), 0) }, resizeFileStorage: function(node, newSize) { + newSize >>>= 0 if (node.usedBytes == newSize) return if (newSize == 0) { node.contents = null @@ -1193,7 +1130,7 @@ var Downsample = (() => { var ptr var allocated var contents = stream.node.contents - if (!(flags & 2) && contents.buffer === buffer) { + if (!(flags & 2) && contents.buffer === HEAP8.buffer) { allocated = false ptr = contents.byteOffset } else { @@ -1213,7 +1150,8 @@ var Downsample = (() => { if (!ptr) { throw new FS.ErrnoError(48) } - HEAP8.set(contents, ptr) + ptr >>>= 0 + HEAP8.set(contents, ptr >>> 0) } return { ptr: ptr, allocated: allocated } }, @@ -1250,7 +1188,7 @@ var Downsample = (() => { isWindows: false, staticInit: () => { NODEFS.isWindows = !!process.platform.match(/^win/) - var flags = process['binding']('constants') + var flags = process.binding('constants') if (flags['fs']) { flags = flags['fs'] } @@ -2362,6 +2300,7 @@ var Downsample = (() => { return stream.position }, read: (stream, buffer, offset, length, position) => { + offset >>>= 0 if (length < 0 || position < 0) { throw new FS.ErrnoError(28) } @@ -2394,6 +2333,7 @@ var Downsample = (() => { return bytesRead }, write: (stream, buffer, offset, length, position, canOwn) => { + offset >>>= 0 if (length < 0 || position < 0) { throw new FS.ErrnoError(28) } @@ -2464,6 +2404,7 @@ var Downsample = (() => { return stream.stream_ops.mmap(stream, length, position, prot, flags) }, msync: (stream, buffer, offset, length, mmapFlags) => { + offset >>>= 0 if (!stream.stream_ops.msync) { return 0 } @@ -2547,9 +2488,16 @@ var Downsample = (() => { TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops) FS.mkdev('/dev/tty', FS.makedev(5, 0)) FS.mkdev('/dev/tty1', FS.makedev(6, 0)) - var random_device = getRandomDevice() - FS.createDevice('/dev', 'random', random_device) - FS.createDevice('/dev', 'urandom', random_device) + var randomBuffer = new Uint8Array(1024), + randomLeft = 0 + var randomByte = () => { + if (randomLeft === 0) { + randomLeft = randomFill(randomBuffer).byteLength + } + return randomBuffer[--randomLeft] + } + FS.createDevice('/dev', 'random', randomByte) + FS.createDevice('/dev', 'urandom', randomByte) FS.mkdir('/dev/shm') FS.mkdir('/dev/shm/tmp') }, @@ -2605,6 +2553,7 @@ var Downsample = (() => { ensureErrnoError: () => { if (FS.ErrnoError) return FS.ErrnoError = function ErrnoError(errno, node) { + this.name = 'ErrnoError' this.node = node this.setErrno = function(errno) { this.errno = errno @@ -3027,114 +2976,51 @@ var Downsample = (() => { processData(url) } }, - indexedDB: () => { - return ( - window.indexedDB || - window.mozIndexedDB || - window.webkitIndexedDB || - window.msIndexedDB - ) - }, - DB_NAME: () => { - return 'EM_FS_' + window.location.pathname - }, - DB_VERSION: 20, - DB_STORE_NAME: 'FILE_DATA', - saveFilesToDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) - } - openRequest.onupgradeneeded = () => { - out('creating db') - var db = openRequest.result - db.createObjectStore(FS.DB_STORE_NAME) - } - openRequest.onsuccess = () => { - var db = openRequest.result - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite') - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var putRequest = files.put( - FS.analyzePath(path).object.contents, - path - ) - putRequest.onsuccess = () => { - ok++ - if (ok + fail == total) finish() - } - putRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror + } + var UTF8Decoder = + typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined + function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + idx >>>= 0 + var endIdx = idx + maxBytesToRead + var endPtr = idx + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr + if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { + return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)) + } + var str = '' + while (idx < endPtr) { + var u0 = heapOrArray[idx++] + if (!(u0 & 128)) { + str += String.fromCharCode(u0) + continue } - openRequest.onerror = onerror - }, - loadFilesFromDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) + var u1 = heapOrArray[idx++] & 63 + if ((u0 & 224) == 192) { + str += String.fromCharCode(((u0 & 31) << 6) | u1) + continue } - openRequest.onupgradeneeded = onerror - openRequest.onsuccess = () => { - var db = openRequest.result - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly') - } catch (e) { - onerror(e) - return - } - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var getRequest = files.get(path) - getRequest.onsuccess = () => { - if (FS.analyzePath(path).exists) { - FS.unlink(path) - } - FS.createDataFile( - PATH.dirname(path), - PATH.basename(path), - getRequest.result, - true, - true, - true - ) - ok++ - if (ok + fail == total) finish() - } - getRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror + var u2 = heapOrArray[idx++] & 63 + if ((u0 & 240) == 224) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2 + } else { + u0 = + ((u0 & 7) << 18) | + (u1 << 12) | + (u2 << 6) | + (heapOrArray[idx++] & 63) } - openRequest.onerror = onerror - }, + if (u0 < 65536) { + str += String.fromCharCode(u0) + } else { + var ch = u0 - 65536 + str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)) + } + } + return str + } + function UTF8ToString(ptr, maxBytesToRead) { + ptr >>>= 0 + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : '' } var SYSCALLS = { DEFAULT_POLLMASK: 5, @@ -3170,13 +3056,13 @@ var Downsample = (() => { } throw e } - HEAP32[buf >> 2] = stat.dev - HEAP32[(buf + 8) >> 2] = stat.ino - HEAP32[(buf + 12) >> 2] = stat.mode - HEAPU32[(buf + 16) >> 2] = stat.nlink - HEAP32[(buf + 20) >> 2] = stat.uid - HEAP32[(buf + 24) >> 2] = stat.gid - HEAP32[(buf + 28) >> 2] = stat.rdev + HEAP32[buf >>> 2] = stat.dev + HEAP32[(buf + 8) >>> 2] = stat.ino + HEAP32[(buf + 12) >>> 2] = stat.mode + HEAPU32[(buf + 16) >>> 2] = stat.nlink + HEAP32[(buf + 20) >>> 2] = stat.uid + HEAP32[(buf + 24) >>> 2] = stat.gid + HEAP32[(buf + 28) >>> 2] = stat.rdev ;(tempI64 = [ stat.size >>> 0, ((tempDouble = stat.size), @@ -3190,10 +3076,10 @@ var Downsample = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 40) >> 2] = tempI64[0]), - (HEAP32[(buf + 44) >> 2] = tempI64[1]) - HEAP32[(buf + 48) >> 2] = 4096 - HEAP32[(buf + 52) >> 2] = stat.blocks + (HEAP32[(buf + 40) >>> 2] = tempI64[0]), + (HEAP32[(buf + 44) >>> 2] = tempI64[1]) + HEAP32[(buf + 48) >>> 2] = 4096 + HEAP32[(buf + 52) >>> 2] = stat.blocks var atime = stat.atime.getTime() var mtime = stat.mtime.getTime() var ctime = stat.ctime.getTime() @@ -3210,9 +3096,9 @@ var Downsample = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 56) >> 2] = tempI64[0]), - (HEAP32[(buf + 60) >> 2] = tempI64[1]) - HEAPU32[(buf + 64) >> 2] = (atime % 1e3) * 1e3 + (HEAP32[(buf + 56) >>> 2] = tempI64[0]), + (HEAP32[(buf + 60) >>> 2] = tempI64[1]) + HEAPU32[(buf + 64) >>> 2] = (atime % 1e3) * 1e3 ;(tempI64 = [ Math.floor(mtime / 1e3) >>> 0, ((tempDouble = Math.floor(mtime / 1e3)), @@ -3226,9 +3112,9 @@ var Downsample = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 72) >> 2] = tempI64[0]), - (HEAP32[(buf + 76) >> 2] = tempI64[1]) - HEAPU32[(buf + 80) >> 2] = (mtime % 1e3) * 1e3 + (HEAP32[(buf + 72) >>> 2] = tempI64[0]), + (HEAP32[(buf + 76) >>> 2] = tempI64[1]) + HEAPU32[(buf + 80) >>> 2] = (mtime % 1e3) * 1e3 ;(tempI64 = [ Math.floor(ctime / 1e3) >>> 0, ((tempDouble = Math.floor(ctime / 1e3)), @@ -3242,9 +3128,9 @@ var Downsample = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 88) >> 2] = tempI64[0]), - (HEAP32[(buf + 92) >> 2] = tempI64[1]) - HEAPU32[(buf + 96) >> 2] = (ctime % 1e3) * 1e3 + (HEAP32[(buf + 88) >>> 2] = tempI64[0]), + (HEAP32[(buf + 92) >>> 2] = tempI64[1]) + HEAPU32[(buf + 96) >>> 2] = (ctime % 1e3) * 1e3 ;(tempI64 = [ stat.ino >>> 0, ((tempDouble = stat.ino), @@ -3258,8 +3144,8 @@ var Downsample = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 104) >> 2] = tempI64[0]), - (HEAP32[(buf + 108) >> 2] = tempI64[1]) + (HEAP32[(buf + 104) >>> 2] = tempI64[0]), + (HEAP32[(buf + 108) >>> 2] = tempI64[1]) return 0 }, doMsync: function(addr, stream, len, flags, offset) { @@ -3269,13 +3155,14 @@ var Downsample = (() => { if (flags & 2) { return 0 } + addr >>>= 0 var buffer = HEAPU8.slice(addr, addr + len) FS.msync(stream, buffer, offset, len, flags) }, varargs: undefined, get: function() { SYSCALLS.varargs += 4 - var ret = HEAP32[(SYSCALLS.varargs - 4) >> 2] + var ret = HEAP32[(SYSCALLS.varargs - 4) >>> 2] return ret }, getStr: function(ptr) { @@ -3315,7 +3202,7 @@ var Downsample = (() => { case 5: { var arg = SYSCALLS.get() var offset = 0 - HEAP16[(arg + offset) >> 1] = 2 + HEAP16[(arg + offset) >>> 1] = 2 return 0 } case 6: @@ -3332,10 +3219,13 @@ var Downsample = (() => { } } } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite) + } function ___syscall_getcwd(buf, size) { try { if (size === 0) return -28 @@ -3345,7 +3235,7 @@ var Downsample = (() => { stringToUTF8(cwd, buf, size) return cwdLengthInBytes } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3371,7 +3261,7 @@ var Downsample = (() => { case 21519: { if (!stream.tty) return -59 var argp = SYSCALLS.get() - HEAP32[argp >> 2] = 0 + HEAP32[argp >>> 2] = 0 return 0 } case 21520: { @@ -3394,7 +3284,7 @@ var Downsample = (() => { return -28 } } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3406,7 +3296,7 @@ var Downsample = (() => { var mode = varargs ? SYSCALLS.get() : 0 return FS.open(path, flags, mode).fd } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3417,12 +3307,12 @@ var Downsample = (() => { if (bufsize <= 0) return -28 var ret = FS.readlink(path) var len = Math.min(bufsize, lengthBytesUTF8(ret)) - var endChar = HEAP8[buf + len] + var endChar = HEAP8[(buf + len) >>> 0] stringToUTF8(ret, buf, bufsize + 1) - HEAP8[buf + len] = endChar + HEAP8[(buf + len) >>> 0] = endChar return len } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3431,7 +3321,7 @@ var Downsample = (() => { path = SYSCALLS.getStr(path) return SYSCALLS.doStat(FS.stat, path, buf) } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3439,15 +3329,16 @@ var Downsample = (() => { abort('') } function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.copyWithin(dest, src, src + num) + HEAPU8.copyWithin(dest >>> 0, src >>> 0, (src + num) >>> 0) } function getHeapMax() { - return 2147483648 + return 4294901760 } function emscripten_realloc_buffer(size) { + var b = wasmMemory.buffer try { - wasmMemory.grow((size - buffer.byteLength + 65535) >>> 16) - updateGlobalBufferAndViews(wasmMemory.buffer) + wasmMemory.grow((size - b.byteLength + 65535) >>> 16) + updateMemoryViews() return 1 } catch (e) {} } @@ -3511,30 +3402,30 @@ var Downsample = (() => { } return getEnvStrings.strings } - function writeAsciiToMemory(str, buffer, dontAddNull) { + function stringToAscii(str, buffer) { for (var i = 0; i < str.length; ++i) { - HEAP8[buffer++ >> 0] = str.charCodeAt(i) + HEAP8[buffer++ >>> 0] = str.charCodeAt(i) } - if (!dontAddNull) HEAP8[buffer >> 0] = 0 + HEAP8[buffer >>> 0] = 0 } function _environ_get(__environ, environ_buf) { var bufSize = 0 getEnvStrings().forEach(function(string, i) { var ptr = environ_buf + bufSize - HEAPU32[(__environ + i * 4) >> 2] = ptr - writeAsciiToMemory(string, ptr) + HEAPU32[(__environ + i * 4) >>> 2] = ptr + stringToAscii(string, ptr) bufSize += string.length + 1 }) return 0 } function _environ_sizes_get(penviron_count, penviron_buf_size) { var strings = getEnvStrings() - HEAPU32[penviron_count >> 2] = strings.length + HEAPU32[penviron_count >>> 2] = strings.length var bufSize = 0 strings.forEach(function(string) { bufSize += string.length + 1 }) - HEAPU32[penviron_buf_size >> 2] = bufSize + HEAPU32[penviron_buf_size >>> 2] = bufSize return 0 } function _proc_exit(code) { @@ -3556,20 +3447,23 @@ var Downsample = (() => { FS.close(stream) return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } function doReadv(stream, iov, iovcnt, offset) { var ret = 0 for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] + var ptr = HEAPU32[iov >>> 2] + var len = HEAPU32[(iov + 4) >>> 2] iov += 8 var curr = FS.read(stream, HEAP8, ptr, len, offset) if (curr < 0) return -1 ret += curr if (curr < len) break + if (typeof offset !== 'undefined') { + offset += curr + } } return ret } @@ -3577,10 +3471,10 @@ var Downsample = (() => { try { var stream = SYSCALLS.getStreamFromFD(fd) var num = doReadv(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num + HEAPU32[pnum >>> 2] = num return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } @@ -3608,25 +3502,28 @@ var Downsample = (() => { ) >>> 0 : 0), ]), - (HEAP32[newOffset >> 2] = tempI64[0]), - (HEAP32[(newOffset + 4) >> 2] = tempI64[1]) + (HEAP32[newOffset >>> 2] = tempI64[0]), + (HEAP32[(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)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } function doWritev(stream, iov, iovcnt, offset) { var ret = 0 for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] + var ptr = HEAPU32[iov >>> 2] + var len = HEAPU32[(iov + 4) >>> 2] iov += 8 var curr = FS.write(stream, HEAP8, ptr, len, offset) if (curr < 0) return -1 ret += curr + if (typeof offset !== 'undefined') { + offset += curr + } } return ret } @@ -3634,31 +3531,31 @@ var Downsample = (() => { try { var stream = SYSCALLS.getStreamFromFD(fd) var num = doWritev(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num + HEAPU32[pnum >>> 2] = num return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } - function __isLeapYear(year) { + function isLeapYear(year) { return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) } - function __arraySum(array, index) { + function arraySum(array, index) { var sum = 0 for (var i = 0; i <= index; sum += array[i++]) {} return sum } - var __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - var __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - function __addDays(date, days) { + var MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + var MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + function addDays(date, days) { var newDate = new Date(date.getTime()) while (days > 0) { - var leap = __isLeapYear(newDate.getFullYear()) + var leap = isLeapYear(newDate.getFullYear()) var currentMonth = newDate.getMonth() - var daysInCurrentMonth = (leap - ? __MONTH_DAYS_LEAP - : __MONTH_DAYS_REGULAR)[currentMonth] + var daysInCurrentMonth = (leap ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[ + currentMonth + ] if (days > daysInCurrentMonth - newDate.getDate()) { days -= daysInCurrentMonth - newDate.getDate() + 1 newDate.setDate(1) @@ -3676,21 +3573,21 @@ var Downsample = (() => { return newDate } function writeArrayToMemory(array, buffer) { - HEAP8.set(array, buffer) + HEAP8.set(array, buffer >>> 0) } function _strftime(s, maxsize, format, tm) { - var tm_zone = HEAP32[(tm + 40) >> 2] + var tm_zone = HEAP32[(tm + 40) >>> 2] var date = { - tm_sec: HEAP32[tm >> 2], - tm_min: HEAP32[(tm + 4) >> 2], - tm_hour: HEAP32[(tm + 8) >> 2], - tm_mday: HEAP32[(tm + 12) >> 2], - tm_mon: HEAP32[(tm + 16) >> 2], - tm_year: HEAP32[(tm + 20) >> 2], - tm_wday: HEAP32[(tm + 24) >> 2], - tm_yday: HEAP32[(tm + 28) >> 2], - tm_isdst: HEAP32[(tm + 32) >> 2], - tm_gmtoff: HEAP32[(tm + 36) >> 2], + tm_sec: HEAP32[tm >>> 2], + tm_min: HEAP32[(tm + 4) >>> 2], + tm_hour: HEAP32[(tm + 8) >>> 2], + tm_mday: HEAP32[(tm + 12) >>> 2], + tm_mon: HEAP32[(tm + 16) >>> 2], + tm_year: HEAP32[(tm + 20) >>> 2], + tm_wday: HEAP32[(tm + 24) >>> 2], + tm_yday: HEAP32[(tm + 28) >>> 2], + tm_isdst: HEAP32[(tm + 32) >>> 2], + tm_gmtoff: HEAP32[(tm + 36) >>> 2], tm_zone: tm_zone ? UTF8ToString(tm_zone) : '', } var pattern = UTF8ToString(format) @@ -3794,7 +3691,7 @@ var Downsample = (() => { } } function getWeekBasedYear(date) { - var thisDate = __addDays( + var thisDate = addDays( new Date(date.tm_year + 1900, 0, 1), date.tm_yday ) @@ -3853,10 +3750,10 @@ var Downsample = (() => { '%j': function(date) { return leadingNulls( date.tm_mday + - __arraySum( - __isLeapYear(date.tm_year + 1900) - ? __MONTH_DAYS_LEAP - : __MONTH_DAYS_REGULAR, + arraySum( + isLeapYear(date.tm_year + 1900) + ? MONTH_DAYS_LEAP + : MONTH_DAYS_REGULAR, date.tm_mon - 1 ), 3 @@ -3902,13 +3799,13 @@ var Downsample = (() => { var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7 if ( dec31 == 4 || - (dec31 == 5 && __isLeapYear((date.tm_year % 400) - 1)) + (dec31 == 5 && isLeapYear((date.tm_year % 400) - 1)) ) { val++ } } else if (val == 53) { var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7 - if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1 + if (jan1 != 4 && (jan1 != 3 || !isLeapYear(date.tm_year))) val = 1 } return leadingNulls(val, 2) }, @@ -3965,10 +3862,10 @@ var Downsample = (() => { } quit_(1, e) } - function allocateUTF8OnStack(str) { + function stringToUTF8OnStack(str) { var size = lengthBytesUTF8(str) + 1 var ret = stackAlloc(size) - stringToUTF8Array(str, HEAP8, ret, size) + stringToUTF8(str, ret, size) return ret } function getCFunc(ident) { @@ -3980,9 +3877,7 @@ var Downsample = (() => { string: str => { var ret = 0 if (str !== null && str !== undefined && str !== 0) { - var len = (str.length << 2) + 1 - ret = stackAlloc(len) - stringToUTF8(str, ret, len) + ret = stringToUTF8OnStack(str) } return ret }, @@ -4022,10 +3917,9 @@ var Downsample = (() => { return ret } function cwrap(ident, returnType, argTypes, opts) { - argTypes = argTypes || [] - var numericArgs = argTypes.every( - type => type === 'number' || type === 'boolean' - ) + var numericArgs = + !argTypes || + argTypes.every(type => type === 'number' || type === 'boolean') var numericRet = returnType !== 'string' if (numericRet && numericArgs && !opts) { return getCFunc(ident) @@ -4034,10 +3928,17 @@ var Downsample = (() => { return ccall(ident, returnType, argTypes, arguments, opts) } } + function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + HEAP8[buffer++ >>> 0] = str.charCodeAt(i) + } + if (!dontAddNull) HEAP8[buffer >>> 0] = 0 + } function AsciiToString(ptr) { + ptr >>>= 0 var str = '' while (1) { - var ch = HEAPU8[ptr++ >> 0] + var ch = HEAPU8[ptr++ >>> 0] if (!ch) return str str += String.fromCharCode(ch) } @@ -4220,7 +4121,7 @@ var Downsample = (() => { EOWNERDEAD: 62, ESTRPIPE: 135, } - var asmLibraryArg = { + var wasmImports = { a: ___cxa_throw, d: ___syscall_fcntl64, r: ___syscall_getcwd, @@ -4241,20 +4142,24 @@ var Downsample = (() => { l: _strftime_l, } var asm = createWasm() - var ___wasm_call_ctors = (Module['___wasm_call_ctors'] = function() { - return (___wasm_call_ctors = Module['___wasm_call_ctors'] = - Module['asm']['t']).apply(null, arguments) - }) + var ___wasm_call_ctors = function() { + return (___wasm_call_ctors = Module['asm']['t']).apply(null, arguments) + } var _main = (Module['_main'] = function() { return (_main = Module['_main'] = Module['asm']['u']).apply( null, arguments ) }) - var ___errno_location = (Module['___errno_location'] = function() { - return (___errno_location = Module['___errno_location'] = - Module['asm']['v']).apply(null, arguments) - }) + var ___errno_location = function() { + return (___errno_location = Module['asm']['v']).apply(null, arguments) + } + var _malloc = function() { + return (_malloc = Module['asm']['malloc']).apply(null, arguments) + } + var _free = function() { + return (_free = Module['asm']['free']).apply(null, arguments) + } var _itk_wasm_input_array_alloc = (Module[ '_itk_wasm_input_array_alloc' ] = function() { @@ -4301,30 +4206,21 @@ var Downsample = (() => { return (_itk_wasm_free_all = Module['_itk_wasm_free_all'] = Module['asm']['C']).apply(null, arguments) }) - var stackSave = (Module['stackSave'] = function() { - return (stackSave = Module['stackSave'] = Module['asm']['E']).apply( - null, - arguments - ) - }) - var stackRestore = (Module['stackRestore'] = function() { - return (stackRestore = Module['stackRestore'] = Module['asm']['F']).apply( - null, - arguments - ) - }) - var stackAlloc = (Module['stackAlloc'] = function() { - return (stackAlloc = Module['stackAlloc'] = Module['asm']['G']).apply( + var stackSave = function() { + return (stackSave = Module['asm']['E']).apply(null, arguments) + } + var stackRestore = function() { + return (stackRestore = Module['asm']['F']).apply(null, arguments) + } + var stackAlloc = function() { + return (stackAlloc = Module['asm']['G']).apply(null, arguments) + } + var ___cxa_is_pointer_type = function() { + return (___cxa_is_pointer_type = Module['asm']['H']).apply( null, arguments ) - }) - var ___cxa_is_pointer_type = (Module[ - '___cxa_is_pointer_type' - ] = function() { - return (___cxa_is_pointer_type = Module['___cxa_is_pointer_type'] = - Module['asm']['H']).apply(null, arguments) - }) + } Module['addRunDependency'] = addRunDependency Module['removeRunDependency'] = removeRunDependency Module['FS_createPath'] = FS.createPath @@ -4334,6 +4230,8 @@ var Downsample = (() => { Module['FS_createDevice'] = FS.createDevice Module['FS_unlink'] = FS.unlink Module['callMain'] = callMain + Module['stackSave'] = stackSave + Module['stackRestore'] = stackRestore Module['ccall'] = ccall Module['cwrap'] = cwrap Module['AsciiToString'] = AsciiToString @@ -4344,17 +4242,16 @@ var Downsample = (() => { if (!calledRun) run() if (!calledRun) dependenciesFulfilled = runCaller } - function callMain(args) { - var entryFunction = Module['_main'] - args = args || [] + function callMain(args = []) { + var entryFunction = _main args.unshift(thisProgram) var argc = args.length var argv = stackAlloc((argc + 1) * 4) var argv_ptr = argv >> 2 args.forEach(arg => { - HEAP32[argv_ptr++] = allocateUTF8OnStack(arg) + HEAP32[argv_ptr++ >>> 0] = stringToUTF8OnStack(arg) }) - HEAP32[argv_ptr] = 0 + HEAP32[argv_ptr >>> 0] = 0 try { var ret = entryFunction(argc, argv) exitJS(ret, true) @@ -4363,8 +4260,7 @@ var Downsample = (() => { return handleException(e) } } - function run(args) { - args = args || arguments_ + function run(args = arguments_) { if (runDependencies > 0) { return } @@ -4412,8 +4308,8 @@ var Downsample = (() => { } var path = require('path') var containingDir = path.dirname(filePath) - if (FS.isDir(containingDir) || containingDir === '/') { - return + if (containingDir === '/') { + throw new Error('Cannot mount root directory') } var currentDir = '/' var splitContainingDir = containingDir.split(path.sep) @@ -4435,6 +4331,32 @@ var Downsample = (() => { var containingDir = path.dirname(filePath) FS.unmount(containingDir) } + Module.mountDir = function(dir) { + if (!ENVIRONMENT_IS_NODE) { + return + } + if (dir === '/') { + throw new Error('Cannot mount root directory') + } + var currentDir = '/' + var path = require('path') + var splitDir = dir.split(path.sep) + for (var ii = 1; ii < splitDir.length; ii++) { + currentDir += splitDir[ii] + if (!FS.analyzePath(currentDir).exists) { + FS.mkdir(currentDir) + } + currentDir += '/' + } + FS.mount(NODEFS, { root: dir }, currentDir) + return currentDir + } + Module.unmountDir = function(dir) { + if (!ENVIRONMENT_IS_NODE) { + return + } + FS.unmount(dir) + } Module.fs_mkdirs = function(dirs) { var currentDir = '/' var splitDirs = dirs.split('/') diff --git a/src/IO/Downsample/emscripten-build/Downsample.wasm b/src/IO/Downsample/emscripten-build/Downsample.wasm index 803d294f8..01c58da2a 100755 Binary files a/src/IO/Downsample/emscripten-build/Downsample.wasm and b/src/IO/Downsample/emscripten-build/Downsample.wasm differ diff --git a/src/IO/Downsample/emscripten-build/Downsample.wasm.zst b/src/IO/Downsample/emscripten-build/Downsample.wasm.zst new file mode 100755 index 000000000..bac63cbd7 Binary files /dev/null and b/src/IO/Downsample/emscripten-build/Downsample.wasm.zst differ diff --git a/src/IO/Downsample/emscripten-build/DownsampleLabelImage.js b/src/IO/Downsample/emscripten-build/DownsampleLabelImage.js index 9c45130fb..6c93af5f8 100644 --- a/src/IO/Downsample/emscripten-build/DownsampleLabelImage.js +++ b/src/IO/Downsample/emscripten-build/DownsampleLabelImage.js @@ -1,9 +1,7 @@ var DownsampleLabelImage = (() => { var _scriptDir = import.meta.url - return async function(DownsampleLabelImage) { - DownsampleLabelImage = DownsampleLabelImage || {} - + return async function(DownsampleLabelImage = {}) { var Module = typeof DownsampleLabelImage != 'undefined' ? DownsampleLabelImage : {} var readyPromiseResolve, readyPromiseReject @@ -53,11 +51,6 @@ var DownsampleLabelImage = (() => { return scriptDirectory + path } var read_, readAsync, readBinary, setWindowTitle - function logExceptionOnExit(e) { - if (e instanceof ExitStatus) return - let toLog = e - err('exiting due to exception: ' + toLog) - } if (ENVIRONMENT_IS_NODE) { const { createRequire: createRequire } = await import('module') var require = createRequire(import.meta.url) @@ -92,25 +85,13 @@ var DownsampleLabelImage = (() => { else onload(data.buffer) }) } - if (process['argv'].length > 1) { - thisProgram = process['argv'][1].replace(/\\/g, '/') + if (!Module['thisProgram'] && process.argv.length > 1) { + thisProgram = process.argv[1].replace(/\\/g, '/') } - arguments_ = process['argv'].slice(2) - process['on']('uncaughtException', function(ex) { - if (!(ex instanceof ExitStatus)) { - throw ex - } - }) - process['on']('unhandledRejection', function(reason) { - throw reason - }) + arguments_ = process.argv.slice(2) quit_ = (status, toThrow) => { - if (keepRuntimeAlive()) { - process['exitCode'] = status - throw toThrow - } - logExceptionOnExit(toThrow) - process['exit'](status) + process.exitCode = status + throw toThrow } Module['inspect'] = function() { return '[Emscripten Module object]' @@ -187,131 +168,27 @@ var DownsampleLabelImage = (() => { abort(text) } } - var UTF8Decoder = - typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined - function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { - var endIdx = idx + maxBytesToRead - var endPtr = idx - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)) - } - var str = '' - while (idx < endPtr) { - var u0 = heapOrArray[idx++] - if (!(u0 & 128)) { - str += String.fromCharCode(u0) - continue - } - var u1 = heapOrArray[idx++] & 63 - if ((u0 & 224) == 192) { - str += String.fromCharCode(((u0 & 31) << 6) | u1) - continue - } - var u2 = heapOrArray[idx++] & 63 - if ((u0 & 240) == 224) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2 - } else { - u0 = - ((u0 & 7) << 18) | - (u1 << 12) | - (u2 << 6) | - (heapOrArray[idx++] & 63) - } - if (u0 < 65536) { - str += String.fromCharCode(u0) - } else { - var ch = u0 - 65536 - str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)) - } - } - return str - } - function UTF8ToString(ptr, maxBytesToRead) { - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : '' + var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64 + function updateMemoryViews() { + var b = wasmMemory.buffer + Module['HEAP8'] = HEAP8 = new Int8Array(b) + Module['HEAP16'] = HEAP16 = new Int16Array(b) + Module['HEAP32'] = HEAP32 = new Int32Array(b) + Module['HEAPU8'] = HEAPU8 = new Uint8Array(b) + Module['HEAPU16'] = HEAPU16 = new Uint16Array(b) + Module['HEAPU32'] = HEAPU32 = new Uint32Array(b) + Module['HEAPF32'] = HEAPF32 = new Float32Array(b) + Module['HEAPF64'] = HEAPF64 = new Float64Array(b) } - function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { - if (!(maxBytesToWrite > 0)) return 0 - var startIdx = outIdx - var endIdx = outIdx + maxBytesToWrite - 1 - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i) - if (u >= 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, HEAPU8, outPtr, maxBytesToWrite) - } - function lengthBytesUTF8(str) { - var len = 0 - for (var i = 0; i < str.length; ++i) { - var c = str.charCodeAt(i) - if (c <= 127) { - len++ - } else if (c <= 2047) { - len += 2 - } else if (c >= 55296 && c <= 57343) { - len += 4 - ++i - } else { - len += 3 - } - } - return len - } - var buffer, - HEAP8, - HEAPU8, - HEAP16, - HEAPU16, - HEAP32, - HEAPU32, - HEAPF32, - HEAPF64 - 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 var wasmTable var __ATPRERUN__ = [] var __ATINIT__ = [] var __ATMAIN__ = [] var __ATPOSTRUN__ = [] var runtimeInitialized = false + var runtimeKeepaliveCounter = 0 function keepRuntimeAlive() { - return noExitRuntime + return noExitRuntime || runtimeKeepaliveCounter > 0 } function preRun() { if (Module['preRun']) { @@ -424,26 +301,24 @@ var DownsampleLabelImage = (() => { abort(err) } } - function getBinaryPromise() { + function getBinaryPromise(binaryFile) { if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { - if (typeof fetch == 'function' && !isFileURI(wasmBinaryFile)) { - return fetch(wasmBinaryFile, { credentials: 'same-origin' }) + if (typeof fetch == 'function' && !isFileURI(binaryFile)) { + return fetch(binaryFile, { credentials: 'same-origin' }) .then(function(response) { if (!response['ok']) { - throw "failed to load wasm binary file at '" + - wasmBinaryFile + - "'" + throw "failed to load wasm binary file at '" + binaryFile + "'" } return response['arrayBuffer']() }) .catch(function() { - return getBinary(wasmBinaryFile) + return getBinary(binaryFile) }) } else { if (readAsync) { return new Promise(function(resolve, reject) { readAsync( - wasmBinaryFile, + binaryFile, function(response) { resolve(new Uint8Array(response)) }, @@ -454,70 +329,75 @@ var DownsampleLabelImage = (() => { } } return Promise.resolve().then(function() { - return getBinary(wasmBinaryFile) + return getBinary(binaryFile) }) } + function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile) + .then(function(binary) { + return WebAssembly.instantiate(binary, imports) + }) + .then(function(instance) { + return instance + }) + .then(receiver, function(reason) { + err('failed to asynchronously prepare wasm: ' + reason) + abort(reason) + }) + } + function instantiateAsync(binary, binaryFile, imports, callback) { + if ( + !binary && + typeof WebAssembly.instantiateStreaming == 'function' && + !isDataURI(binaryFile) && + !isFileURI(binaryFile) && + !ENVIRONMENT_IS_NODE && + typeof fetch == 'function' + ) { + return fetch(binaryFile, { credentials: 'same-origin' }).then(function( + response + ) { + var result = WebAssembly.instantiateStreaming(response, imports) + return result.then(callback, function(reason) { + err('wasm streaming compile failed: ' + reason) + err('falling back to ArrayBuffer instantiation') + return instantiateArrayBuffer(binaryFile, imports, callback) + }) + }) + } else { + return instantiateArrayBuffer(binaryFile, imports, callback) + } + } function createWasm() { - var info = { a: asmLibraryArg } + var info = { a: wasmImports } function receiveInstance(instance, module) { var exports = instance.exports Module['asm'] = exports wasmMemory = Module['asm']['s'] - updateGlobalBufferAndViews(wasmMemory.buffer) + updateMemoryViews() wasmTable = Module['asm']['D'] addOnInit(Module['asm']['t']) removeRunDependency('wasm-instantiate') + return exports } addRunDependency('wasm-instantiate') function receiveInstantiationResult(result) { receiveInstance(result['instance']) } - 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) && - !isFileURI(wasmBinaryFile) && - !ENVIRONMENT_IS_NODE && - 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 + return Module['instantiateWasm'](info, receiveInstance) } catch (e) { err('Module.instantiateWasm callback failed with error: ' + e) readyPromiseReject(e) } } - instantiateAsync().catch(readyPromiseReject) + instantiateAsync( + wasmBinary, + wasmBinaryFile, + info, + receiveInstantiationResult + ).catch(readyPromiseReject) return {} } var tempDouble @@ -536,33 +416,33 @@ var DownsampleLabelImage = (() => { this.excPtr = excPtr this.ptr = excPtr - 24 this.set_type = function(type) { - HEAPU32[(this.ptr + 4) >> 2] = type + HEAPU32[(this.ptr + 4) >>> 2] = type } this.get_type = function() { - return HEAPU32[(this.ptr + 4) >> 2] + return HEAPU32[(this.ptr + 4) >>> 2] } this.set_destructor = function(destructor) { - HEAPU32[(this.ptr + 8) >> 2] = destructor + HEAPU32[(this.ptr + 8) >>> 2] = destructor } this.get_destructor = function() { - return HEAPU32[(this.ptr + 8) >> 2] + return HEAPU32[(this.ptr + 8) >>> 2] } this.set_refcount = function(refcount) { - HEAP32[this.ptr >> 2] = refcount + HEAP32[this.ptr >>> 2] = refcount } this.set_caught = function(caught) { caught = caught ? 1 : 0 - HEAP8[(this.ptr + 12) >> 0] = caught + HEAP8[(this.ptr + 12) >>> 0] = caught } this.get_caught = function() { - return HEAP8[(this.ptr + 12) >> 0] != 0 + return HEAP8[(this.ptr + 12) >>> 0] != 0 } this.set_rethrown = function(rethrown) { rethrown = rethrown ? 1 : 0 - HEAP8[(this.ptr + 13) >> 0] = rethrown + HEAP8[(this.ptr + 13) >>> 0] = rethrown } this.get_rethrown = function() { - return HEAP8[(this.ptr + 13) >> 0] != 0 + return HEAP8[(this.ptr + 13) >>> 0] != 0 } this.init = function(type, destructor) { this.set_adjusted_ptr(0) @@ -573,24 +453,24 @@ var DownsampleLabelImage = (() => { this.set_rethrown(false) } this.add_ref = function() { - var value = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = value + 1 + var value = HEAP32[this.ptr >>> 2] + HEAP32[this.ptr >>> 2] = value + 1 } this.release_ref = function() { - var prev = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = prev - 1 + var prev = HEAP32[this.ptr >>> 2] + HEAP32[this.ptr >>> 2] = prev - 1 return prev === 1 } this.set_adjusted_ptr = function(adjustedPtr) { - HEAPU32[(this.ptr + 16) >> 2] = adjustedPtr + HEAPU32[(this.ptr + 16) >>> 2] = adjustedPtr } this.get_adjusted_ptr = function() { - return HEAPU32[(this.ptr + 16) >> 2] + return HEAPU32[(this.ptr + 16) >>> 2] } this.get_exception_ptr = function() { var isPointer = ___cxa_is_pointer_type(this.get_type()) if (isPointer) { - return HEAPU32[this.excPtr >> 2] + return HEAPU32[this.excPtr >>> 2] } var adjusted = this.get_adjusted_ptr() if (adjusted !== 0) return adjusted @@ -604,10 +484,10 @@ var DownsampleLabelImage = (() => { info.init(type, destructor) exceptionLast = ptr uncaughtExceptionCount++ - throw ptr + throw exceptionLast } function setErrNo(value) { - HEAP32[___errno_location() >> 2] = value + HEAP32[___errno_location() >>> 2] = value return value } var PATH = { @@ -680,23 +560,27 @@ var DownsampleLabelImage = (() => { return PATH.normalize(l + '/' + r) }, } - function getRandomDevice() { + function initRandomFill() { if ( typeof crypto == 'object' && typeof crypto['getRandomValues'] == 'function' ) { - var randomBuffer = new Uint8Array(1) - return () => { - crypto.getRandomValues(randomBuffer) - return randomBuffer[0] - } + return view => crypto.getRandomValues(view) } else if (ENVIRONMENT_IS_NODE) { try { var crypto_module = require('crypto') - return () => crypto_module['randomBytes'](1)[0] + var randomFillSync = crypto_module['randomFillSync'] + if (randomFillSync) { + return view => crypto_module['randomFillSync'](view) + } + var randomBytes = crypto_module['randomBytes'] + return view => (view.set(randomBytes(view.byteLength)), view) } catch (e) {} } - return () => abort('randomDevice') + abort('initRandomDevice') + } + function randomFill(view) { + return (randomFill = initRandomFill())(view) } var PATH_FS = { resolve: function() { @@ -751,6 +635,57 @@ var DownsampleLabelImage = (() => { return outputParts.join('/') }, } + function lengthBytesUTF8(str) { + var len = 0 + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i) + if (c <= 127) { + len++ + } else if (c <= 2047) { + len += 2 + } else if (c >= 55296 && c <= 57343) { + len += 4 + ++i + } else { + len += 3 + } + } + return len + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + outIdx >>>= 0 + if (!(maxBytesToWrite > 0)) return 0 + var startIdx = outIdx + var endIdx = outIdx + maxBytesToWrite - 1 + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i) + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i) + u = (65536 + ((u & 1023) << 10)) | (u1 & 1023) + } + if (u <= 127) { + if (outIdx >= endIdx) break + heap[outIdx++ >>> 0] = u + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break + heap[outIdx++ >>> 0] = 192 | (u >> 6) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break + heap[outIdx++ >>> 0] = 224 | (u >> 12) + heap[outIdx++ >>> 0] = 128 | ((u >> 6) & 63) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } else { + if (outIdx + 3 >= endIdx) break + heap[outIdx++ >>> 0] = 240 | (u >> 18) + heap[outIdx++ >>> 0] = 128 | ((u >> 12) & 63) + heap[outIdx++ >>> 0] = 128 | ((u >> 6) & 63) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } + } + heap[outIdx >>> 0] = 0 + return outIdx - startIdx + } function intArrayFromString(stringy, dontAddNull, length) { var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1 var u8array = new Array(len) @@ -989,6 +924,7 @@ var DownsampleLabelImage = (() => { return new Uint8Array(node.contents) }, expandFileStorage: function(node, newCapacity) { + newCapacity >>>= 0 var prevCapacity = node.contents ? node.contents.length : 0 if (prevCapacity >= newCapacity) return var CAPACITY_DOUBLING_MAX = 1024 * 1024 @@ -1005,6 +941,7 @@ var DownsampleLabelImage = (() => { node.contents.set(oldContents.subarray(0, node.usedBytes), 0) }, resizeFileStorage: function(node, newSize) { + newSize >>>= 0 if (node.usedBytes == newSize) return if (newSize == 0) { node.contents = null @@ -1195,7 +1132,7 @@ var DownsampleLabelImage = (() => { var ptr var allocated var contents = stream.node.contents - if (!(flags & 2) && contents.buffer === buffer) { + if (!(flags & 2) && contents.buffer === HEAP8.buffer) { allocated = false ptr = contents.byteOffset } else { @@ -1215,7 +1152,8 @@ var DownsampleLabelImage = (() => { if (!ptr) { throw new FS.ErrnoError(48) } - HEAP8.set(contents, ptr) + ptr >>>= 0 + HEAP8.set(contents, ptr >>> 0) } return { ptr: ptr, allocated: allocated } }, @@ -1252,7 +1190,7 @@ var DownsampleLabelImage = (() => { isWindows: false, staticInit: () => { NODEFS.isWindows = !!process.platform.match(/^win/) - var flags = process['binding']('constants') + var flags = process.binding('constants') if (flags['fs']) { flags = flags['fs'] } @@ -2364,6 +2302,7 @@ var DownsampleLabelImage = (() => { return stream.position }, read: (stream, buffer, offset, length, position) => { + offset >>>= 0 if (length < 0 || position < 0) { throw new FS.ErrnoError(28) } @@ -2396,6 +2335,7 @@ var DownsampleLabelImage = (() => { return bytesRead }, write: (stream, buffer, offset, length, position, canOwn) => { + offset >>>= 0 if (length < 0 || position < 0) { throw new FS.ErrnoError(28) } @@ -2466,6 +2406,7 @@ var DownsampleLabelImage = (() => { return stream.stream_ops.mmap(stream, length, position, prot, flags) }, msync: (stream, buffer, offset, length, mmapFlags) => { + offset >>>= 0 if (!stream.stream_ops.msync) { return 0 } @@ -2549,9 +2490,16 @@ var DownsampleLabelImage = (() => { TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops) FS.mkdev('/dev/tty', FS.makedev(5, 0)) FS.mkdev('/dev/tty1', FS.makedev(6, 0)) - var random_device = getRandomDevice() - FS.createDevice('/dev', 'random', random_device) - FS.createDevice('/dev', 'urandom', random_device) + var randomBuffer = new Uint8Array(1024), + randomLeft = 0 + var randomByte = () => { + if (randomLeft === 0) { + randomLeft = randomFill(randomBuffer).byteLength + } + return randomBuffer[--randomLeft] + } + FS.createDevice('/dev', 'random', randomByte) + FS.createDevice('/dev', 'urandom', randomByte) FS.mkdir('/dev/shm') FS.mkdir('/dev/shm/tmp') }, @@ -2607,6 +2555,7 @@ var DownsampleLabelImage = (() => { ensureErrnoError: () => { if (FS.ErrnoError) return FS.ErrnoError = function ErrnoError(errno, node) { + this.name = 'ErrnoError' this.node = node this.setErrno = function(errno) { this.errno = errno @@ -3029,114 +2978,51 @@ var DownsampleLabelImage = (() => { processData(url) } }, - indexedDB: () => { - return ( - window.indexedDB || - window.mozIndexedDB || - window.webkitIndexedDB || - window.msIndexedDB - ) - }, - DB_NAME: () => { - return 'EM_FS_' + window.location.pathname - }, - DB_VERSION: 20, - DB_STORE_NAME: 'FILE_DATA', - saveFilesToDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) - } - openRequest.onupgradeneeded = () => { - out('creating db') - var db = openRequest.result - db.createObjectStore(FS.DB_STORE_NAME) - } - openRequest.onsuccess = () => { - var db = openRequest.result - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite') - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var putRequest = files.put( - FS.analyzePath(path).object.contents, - path - ) - putRequest.onsuccess = () => { - ok++ - if (ok + fail == total) finish() - } - putRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror + } + var UTF8Decoder = + typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined + function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + idx >>>= 0 + var endIdx = idx + maxBytesToRead + var endPtr = idx + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr + if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { + return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)) + } + var str = '' + while (idx < endPtr) { + var u0 = heapOrArray[idx++] + if (!(u0 & 128)) { + str += String.fromCharCode(u0) + continue } - openRequest.onerror = onerror - }, - loadFilesFromDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) + var u1 = heapOrArray[idx++] & 63 + if ((u0 & 224) == 192) { + str += String.fromCharCode(((u0 & 31) << 6) | u1) + continue } - openRequest.onupgradeneeded = onerror - openRequest.onsuccess = () => { - var db = openRequest.result - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly') - } catch (e) { - onerror(e) - return - } - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var getRequest = files.get(path) - getRequest.onsuccess = () => { - if (FS.analyzePath(path).exists) { - FS.unlink(path) - } - FS.createDataFile( - PATH.dirname(path), - PATH.basename(path), - getRequest.result, - true, - true, - true - ) - ok++ - if (ok + fail == total) finish() - } - getRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror + var u2 = heapOrArray[idx++] & 63 + if ((u0 & 240) == 224) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2 + } else { + u0 = + ((u0 & 7) << 18) | + (u1 << 12) | + (u2 << 6) | + (heapOrArray[idx++] & 63) } - openRequest.onerror = onerror - }, + if (u0 < 65536) { + str += String.fromCharCode(u0) + } else { + var ch = u0 - 65536 + str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)) + } + } + return str + } + function UTF8ToString(ptr, maxBytesToRead) { + ptr >>>= 0 + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : '' } var SYSCALLS = { DEFAULT_POLLMASK: 5, @@ -3172,13 +3058,13 @@ var DownsampleLabelImage = (() => { } throw e } - HEAP32[buf >> 2] = stat.dev - HEAP32[(buf + 8) >> 2] = stat.ino - HEAP32[(buf + 12) >> 2] = stat.mode - HEAPU32[(buf + 16) >> 2] = stat.nlink - HEAP32[(buf + 20) >> 2] = stat.uid - HEAP32[(buf + 24) >> 2] = stat.gid - HEAP32[(buf + 28) >> 2] = stat.rdev + HEAP32[buf >>> 2] = stat.dev + HEAP32[(buf + 8) >>> 2] = stat.ino + HEAP32[(buf + 12) >>> 2] = stat.mode + HEAPU32[(buf + 16) >>> 2] = stat.nlink + HEAP32[(buf + 20) >>> 2] = stat.uid + HEAP32[(buf + 24) >>> 2] = stat.gid + HEAP32[(buf + 28) >>> 2] = stat.rdev ;(tempI64 = [ stat.size >>> 0, ((tempDouble = stat.size), @@ -3192,10 +3078,10 @@ var DownsampleLabelImage = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 40) >> 2] = tempI64[0]), - (HEAP32[(buf + 44) >> 2] = tempI64[1]) - HEAP32[(buf + 48) >> 2] = 4096 - HEAP32[(buf + 52) >> 2] = stat.blocks + (HEAP32[(buf + 40) >>> 2] = tempI64[0]), + (HEAP32[(buf + 44) >>> 2] = tempI64[1]) + HEAP32[(buf + 48) >>> 2] = 4096 + HEAP32[(buf + 52) >>> 2] = stat.blocks var atime = stat.atime.getTime() var mtime = stat.mtime.getTime() var ctime = stat.ctime.getTime() @@ -3212,9 +3098,9 @@ var DownsampleLabelImage = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 56) >> 2] = tempI64[0]), - (HEAP32[(buf + 60) >> 2] = tempI64[1]) - HEAPU32[(buf + 64) >> 2] = (atime % 1e3) * 1e3 + (HEAP32[(buf + 56) >>> 2] = tempI64[0]), + (HEAP32[(buf + 60) >>> 2] = tempI64[1]) + HEAPU32[(buf + 64) >>> 2] = (atime % 1e3) * 1e3 ;(tempI64 = [ Math.floor(mtime / 1e3) >>> 0, ((tempDouble = Math.floor(mtime / 1e3)), @@ -3228,9 +3114,9 @@ var DownsampleLabelImage = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 72) >> 2] = tempI64[0]), - (HEAP32[(buf + 76) >> 2] = tempI64[1]) - HEAPU32[(buf + 80) >> 2] = (mtime % 1e3) * 1e3 + (HEAP32[(buf + 72) >>> 2] = tempI64[0]), + (HEAP32[(buf + 76) >>> 2] = tempI64[1]) + HEAPU32[(buf + 80) >>> 2] = (mtime % 1e3) * 1e3 ;(tempI64 = [ Math.floor(ctime / 1e3) >>> 0, ((tempDouble = Math.floor(ctime / 1e3)), @@ -3244,9 +3130,9 @@ var DownsampleLabelImage = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 88) >> 2] = tempI64[0]), - (HEAP32[(buf + 92) >> 2] = tempI64[1]) - HEAPU32[(buf + 96) >> 2] = (ctime % 1e3) * 1e3 + (HEAP32[(buf + 88) >>> 2] = tempI64[0]), + (HEAP32[(buf + 92) >>> 2] = tempI64[1]) + HEAPU32[(buf + 96) >>> 2] = (ctime % 1e3) * 1e3 ;(tempI64 = [ stat.ino >>> 0, ((tempDouble = stat.ino), @@ -3260,8 +3146,8 @@ var DownsampleLabelImage = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 104) >> 2] = tempI64[0]), - (HEAP32[(buf + 108) >> 2] = tempI64[1]) + (HEAP32[(buf + 104) >>> 2] = tempI64[0]), + (HEAP32[(buf + 108) >>> 2] = tempI64[1]) return 0 }, doMsync: function(addr, stream, len, flags, offset) { @@ -3271,13 +3157,14 @@ var DownsampleLabelImage = (() => { if (flags & 2) { return 0 } + addr >>>= 0 var buffer = HEAPU8.slice(addr, addr + len) FS.msync(stream, buffer, offset, len, flags) }, varargs: undefined, get: function() { SYSCALLS.varargs += 4 - var ret = HEAP32[(SYSCALLS.varargs - 4) >> 2] + var ret = HEAP32[(SYSCALLS.varargs - 4) >>> 2] return ret }, getStr: function(ptr) { @@ -3317,7 +3204,7 @@ var DownsampleLabelImage = (() => { case 5: { var arg = SYSCALLS.get() var offset = 0 - HEAP16[(arg + offset) >> 1] = 2 + HEAP16[(arg + offset) >>> 1] = 2 return 0 } case 6: @@ -3334,10 +3221,13 @@ var DownsampleLabelImage = (() => { } } } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite) + } function ___syscall_getcwd(buf, size) { try { if (size === 0) return -28 @@ -3347,7 +3237,7 @@ var DownsampleLabelImage = (() => { stringToUTF8(cwd, buf, size) return cwdLengthInBytes } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3373,7 +3263,7 @@ var DownsampleLabelImage = (() => { case 21519: { if (!stream.tty) return -59 var argp = SYSCALLS.get() - HEAP32[argp >> 2] = 0 + HEAP32[argp >>> 2] = 0 return 0 } case 21520: { @@ -3396,7 +3286,7 @@ var DownsampleLabelImage = (() => { return -28 } } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3408,7 +3298,7 @@ var DownsampleLabelImage = (() => { var mode = varargs ? SYSCALLS.get() : 0 return FS.open(path, flags, mode).fd } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3419,12 +3309,12 @@ var DownsampleLabelImage = (() => { if (bufsize <= 0) return -28 var ret = FS.readlink(path) var len = Math.min(bufsize, lengthBytesUTF8(ret)) - var endChar = HEAP8[buf + len] + var endChar = HEAP8[(buf + len) >>> 0] stringToUTF8(ret, buf, bufsize + 1) - HEAP8[buf + len] = endChar + HEAP8[(buf + len) >>> 0] = endChar return len } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3433,7 +3323,7 @@ var DownsampleLabelImage = (() => { path = SYSCALLS.getStr(path) return SYSCALLS.doStat(FS.stat, path, buf) } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3441,15 +3331,16 @@ var DownsampleLabelImage = (() => { abort('') } function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.copyWithin(dest, src, src + num) + HEAPU8.copyWithin(dest >>> 0, src >>> 0, (src + num) >>> 0) } function getHeapMax() { - return 2147483648 + return 4294901760 } function emscripten_realloc_buffer(size) { + var b = wasmMemory.buffer try { - wasmMemory.grow((size - buffer.byteLength + 65535) >>> 16) - updateGlobalBufferAndViews(wasmMemory.buffer) + wasmMemory.grow((size - b.byteLength + 65535) >>> 16) + updateMemoryViews() return 1 } catch (e) {} } @@ -3513,30 +3404,30 @@ var DownsampleLabelImage = (() => { } return getEnvStrings.strings } - function writeAsciiToMemory(str, buffer, dontAddNull) { + function stringToAscii(str, buffer) { for (var i = 0; i < str.length; ++i) { - HEAP8[buffer++ >> 0] = str.charCodeAt(i) + HEAP8[buffer++ >>> 0] = str.charCodeAt(i) } - if (!dontAddNull) HEAP8[buffer >> 0] = 0 + HEAP8[buffer >>> 0] = 0 } function _environ_get(__environ, environ_buf) { var bufSize = 0 getEnvStrings().forEach(function(string, i) { var ptr = environ_buf + bufSize - HEAPU32[(__environ + i * 4) >> 2] = ptr - writeAsciiToMemory(string, ptr) + HEAPU32[(__environ + i * 4) >>> 2] = ptr + stringToAscii(string, ptr) bufSize += string.length + 1 }) return 0 } function _environ_sizes_get(penviron_count, penviron_buf_size) { var strings = getEnvStrings() - HEAPU32[penviron_count >> 2] = strings.length + HEAPU32[penviron_count >>> 2] = strings.length var bufSize = 0 strings.forEach(function(string) { bufSize += string.length + 1 }) - HEAPU32[penviron_buf_size >> 2] = bufSize + HEAPU32[penviron_buf_size >>> 2] = bufSize return 0 } function _proc_exit(code) { @@ -3558,20 +3449,23 @@ var DownsampleLabelImage = (() => { FS.close(stream) return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } function doReadv(stream, iov, iovcnt, offset) { var ret = 0 for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] + var ptr = HEAPU32[iov >>> 2] + var len = HEAPU32[(iov + 4) >>> 2] iov += 8 var curr = FS.read(stream, HEAP8, ptr, len, offset) if (curr < 0) return -1 ret += curr if (curr < len) break + if (typeof offset !== 'undefined') { + offset += curr + } } return ret } @@ -3579,10 +3473,10 @@ var DownsampleLabelImage = (() => { try { var stream = SYSCALLS.getStreamFromFD(fd) var num = doReadv(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num + HEAPU32[pnum >>> 2] = num return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } @@ -3610,25 +3504,28 @@ var DownsampleLabelImage = (() => { ) >>> 0 : 0), ]), - (HEAP32[newOffset >> 2] = tempI64[0]), - (HEAP32[(newOffset + 4) >> 2] = tempI64[1]) + (HEAP32[newOffset >>> 2] = tempI64[0]), + (HEAP32[(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)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } function doWritev(stream, iov, iovcnt, offset) { var ret = 0 for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] + var ptr = HEAPU32[iov >>> 2] + var len = HEAPU32[(iov + 4) >>> 2] iov += 8 var curr = FS.write(stream, HEAP8, ptr, len, offset) if (curr < 0) return -1 ret += curr + if (typeof offset !== 'undefined') { + offset += curr + } } return ret } @@ -3636,31 +3533,31 @@ var DownsampleLabelImage = (() => { try { var stream = SYSCALLS.getStreamFromFD(fd) var num = doWritev(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num + HEAPU32[pnum >>> 2] = num return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } - function __isLeapYear(year) { + function isLeapYear(year) { return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) } - function __arraySum(array, index) { + function arraySum(array, index) { var sum = 0 for (var i = 0; i <= index; sum += array[i++]) {} return sum } - var __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - var __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - function __addDays(date, days) { + var MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + var MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + function addDays(date, days) { var newDate = new Date(date.getTime()) while (days > 0) { - var leap = __isLeapYear(newDate.getFullYear()) + var leap = isLeapYear(newDate.getFullYear()) var currentMonth = newDate.getMonth() - var daysInCurrentMonth = (leap - ? __MONTH_DAYS_LEAP - : __MONTH_DAYS_REGULAR)[currentMonth] + var daysInCurrentMonth = (leap ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[ + currentMonth + ] if (days > daysInCurrentMonth - newDate.getDate()) { days -= daysInCurrentMonth - newDate.getDate() + 1 newDate.setDate(1) @@ -3678,21 +3575,21 @@ var DownsampleLabelImage = (() => { return newDate } function writeArrayToMemory(array, buffer) { - HEAP8.set(array, buffer) + HEAP8.set(array, buffer >>> 0) } function _strftime(s, maxsize, format, tm) { - var tm_zone = HEAP32[(tm + 40) >> 2] + var tm_zone = HEAP32[(tm + 40) >>> 2] var date = { - tm_sec: HEAP32[tm >> 2], - tm_min: HEAP32[(tm + 4) >> 2], - tm_hour: HEAP32[(tm + 8) >> 2], - tm_mday: HEAP32[(tm + 12) >> 2], - tm_mon: HEAP32[(tm + 16) >> 2], - tm_year: HEAP32[(tm + 20) >> 2], - tm_wday: HEAP32[(tm + 24) >> 2], - tm_yday: HEAP32[(tm + 28) >> 2], - tm_isdst: HEAP32[(tm + 32) >> 2], - tm_gmtoff: HEAP32[(tm + 36) >> 2], + tm_sec: HEAP32[tm >>> 2], + tm_min: HEAP32[(tm + 4) >>> 2], + tm_hour: HEAP32[(tm + 8) >>> 2], + tm_mday: HEAP32[(tm + 12) >>> 2], + tm_mon: HEAP32[(tm + 16) >>> 2], + tm_year: HEAP32[(tm + 20) >>> 2], + tm_wday: HEAP32[(tm + 24) >>> 2], + tm_yday: HEAP32[(tm + 28) >>> 2], + tm_isdst: HEAP32[(tm + 32) >>> 2], + tm_gmtoff: HEAP32[(tm + 36) >>> 2], tm_zone: tm_zone ? UTF8ToString(tm_zone) : '', } var pattern = UTF8ToString(format) @@ -3796,7 +3693,7 @@ var DownsampleLabelImage = (() => { } } function getWeekBasedYear(date) { - var thisDate = __addDays( + var thisDate = addDays( new Date(date.tm_year + 1900, 0, 1), date.tm_yday ) @@ -3855,10 +3752,10 @@ var DownsampleLabelImage = (() => { '%j': function(date) { return leadingNulls( date.tm_mday + - __arraySum( - __isLeapYear(date.tm_year + 1900) - ? __MONTH_DAYS_LEAP - : __MONTH_DAYS_REGULAR, + arraySum( + isLeapYear(date.tm_year + 1900) + ? MONTH_DAYS_LEAP + : MONTH_DAYS_REGULAR, date.tm_mon - 1 ), 3 @@ -3904,13 +3801,13 @@ var DownsampleLabelImage = (() => { var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7 if ( dec31 == 4 || - (dec31 == 5 && __isLeapYear((date.tm_year % 400) - 1)) + (dec31 == 5 && isLeapYear((date.tm_year % 400) - 1)) ) { val++ } } else if (val == 53) { var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7 - if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1 + if (jan1 != 4 && (jan1 != 3 || !isLeapYear(date.tm_year))) val = 1 } return leadingNulls(val, 2) }, @@ -3967,10 +3864,10 @@ var DownsampleLabelImage = (() => { } quit_(1, e) } - function allocateUTF8OnStack(str) { + function stringToUTF8OnStack(str) { var size = lengthBytesUTF8(str) + 1 var ret = stackAlloc(size) - stringToUTF8Array(str, HEAP8, ret, size) + stringToUTF8(str, ret, size) return ret } function getCFunc(ident) { @@ -3982,9 +3879,7 @@ var DownsampleLabelImage = (() => { string: str => { var ret = 0 if (str !== null && str !== undefined && str !== 0) { - var len = (str.length << 2) + 1 - ret = stackAlloc(len) - stringToUTF8(str, ret, len) + ret = stringToUTF8OnStack(str) } return ret }, @@ -4024,10 +3919,9 @@ var DownsampleLabelImage = (() => { return ret } function cwrap(ident, returnType, argTypes, opts) { - argTypes = argTypes || [] - var numericArgs = argTypes.every( - type => type === 'number' || type === 'boolean' - ) + var numericArgs = + !argTypes || + argTypes.every(type => type === 'number' || type === 'boolean') var numericRet = returnType !== 'string' if (numericRet && numericArgs && !opts) { return getCFunc(ident) @@ -4036,10 +3930,17 @@ var DownsampleLabelImage = (() => { return ccall(ident, returnType, argTypes, arguments, opts) } } + function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + HEAP8[buffer++ >>> 0] = str.charCodeAt(i) + } + if (!dontAddNull) HEAP8[buffer >>> 0] = 0 + } function AsciiToString(ptr) { + ptr >>>= 0 var str = '' while (1) { - var ch = HEAPU8[ptr++ >> 0] + var ch = HEAPU8[ptr++ >>> 0] if (!ch) return str str += String.fromCharCode(ch) } @@ -4222,7 +4123,7 @@ var DownsampleLabelImage = (() => { EOWNERDEAD: 62, ESTRPIPE: 135, } - var asmLibraryArg = { + var wasmImports = { a: ___cxa_throw, d: ___syscall_fcntl64, r: ___syscall_getcwd, @@ -4243,20 +4144,24 @@ var DownsampleLabelImage = (() => { l: _strftime_l, } var asm = createWasm() - var ___wasm_call_ctors = (Module['___wasm_call_ctors'] = function() { - return (___wasm_call_ctors = Module['___wasm_call_ctors'] = - Module['asm']['t']).apply(null, arguments) - }) + var ___wasm_call_ctors = function() { + return (___wasm_call_ctors = Module['asm']['t']).apply(null, arguments) + } var _main = (Module['_main'] = function() { return (_main = Module['_main'] = Module['asm']['u']).apply( null, arguments ) }) - var ___errno_location = (Module['___errno_location'] = function() { - return (___errno_location = Module['___errno_location'] = - Module['asm']['v']).apply(null, arguments) - }) + var ___errno_location = function() { + return (___errno_location = Module['asm']['v']).apply(null, arguments) + } + var _malloc = function() { + return (_malloc = Module['asm']['malloc']).apply(null, arguments) + } + var _free = function() { + return (_free = Module['asm']['free']).apply(null, arguments) + } var _itk_wasm_input_array_alloc = (Module[ '_itk_wasm_input_array_alloc' ] = function() { @@ -4303,30 +4208,21 @@ var DownsampleLabelImage = (() => { return (_itk_wasm_free_all = Module['_itk_wasm_free_all'] = Module['asm']['C']).apply(null, arguments) }) - var stackSave = (Module['stackSave'] = function() { - return (stackSave = Module['stackSave'] = Module['asm']['E']).apply( - null, - arguments - ) - }) - var stackRestore = (Module['stackRestore'] = function() { - return (stackRestore = Module['stackRestore'] = Module['asm']['F']).apply( - null, - arguments - ) - }) - var stackAlloc = (Module['stackAlloc'] = function() { - return (stackAlloc = Module['stackAlloc'] = Module['asm']['G']).apply( + var stackSave = function() { + return (stackSave = Module['asm']['E']).apply(null, arguments) + } + var stackRestore = function() { + return (stackRestore = Module['asm']['F']).apply(null, arguments) + } + var stackAlloc = function() { + return (stackAlloc = Module['asm']['G']).apply(null, arguments) + } + var ___cxa_is_pointer_type = function() { + return (___cxa_is_pointer_type = Module['asm']['H']).apply( null, arguments ) - }) - var ___cxa_is_pointer_type = (Module[ - '___cxa_is_pointer_type' - ] = function() { - return (___cxa_is_pointer_type = Module['___cxa_is_pointer_type'] = - Module['asm']['H']).apply(null, arguments) - }) + } Module['addRunDependency'] = addRunDependency Module['removeRunDependency'] = removeRunDependency Module['FS_createPath'] = FS.createPath @@ -4336,6 +4232,8 @@ var DownsampleLabelImage = (() => { Module['FS_createDevice'] = FS.createDevice Module['FS_unlink'] = FS.unlink Module['callMain'] = callMain + Module['stackSave'] = stackSave + Module['stackRestore'] = stackRestore Module['ccall'] = ccall Module['cwrap'] = cwrap Module['AsciiToString'] = AsciiToString @@ -4346,17 +4244,16 @@ var DownsampleLabelImage = (() => { if (!calledRun) run() if (!calledRun) dependenciesFulfilled = runCaller } - function callMain(args) { - var entryFunction = Module['_main'] - args = args || [] + function callMain(args = []) { + var entryFunction = _main args.unshift(thisProgram) var argc = args.length var argv = stackAlloc((argc + 1) * 4) var argv_ptr = argv >> 2 args.forEach(arg => { - HEAP32[argv_ptr++] = allocateUTF8OnStack(arg) + HEAP32[argv_ptr++ >>> 0] = stringToUTF8OnStack(arg) }) - HEAP32[argv_ptr] = 0 + HEAP32[argv_ptr >>> 0] = 0 try { var ret = entryFunction(argc, argv) exitJS(ret, true) @@ -4365,8 +4262,7 @@ var DownsampleLabelImage = (() => { return handleException(e) } } - function run(args) { - args = args || arguments_ + function run(args = arguments_) { if (runDependencies > 0) { return } @@ -4414,8 +4310,8 @@ var DownsampleLabelImage = (() => { } var path = require('path') var containingDir = path.dirname(filePath) - if (FS.isDir(containingDir) || containingDir === '/') { - return + if (containingDir === '/') { + throw new Error('Cannot mount root directory') } var currentDir = '/' var splitContainingDir = containingDir.split(path.sep) @@ -4437,6 +4333,32 @@ var DownsampleLabelImage = (() => { var containingDir = path.dirname(filePath) FS.unmount(containingDir) } + Module.mountDir = function(dir) { + if (!ENVIRONMENT_IS_NODE) { + return + } + if (dir === '/') { + throw new Error('Cannot mount root directory') + } + var currentDir = '/' + var path = require('path') + var splitDir = dir.split(path.sep) + for (var ii = 1; ii < splitDir.length; ii++) { + currentDir += splitDir[ii] + if (!FS.analyzePath(currentDir).exists) { + FS.mkdir(currentDir) + } + currentDir += '/' + } + FS.mount(NODEFS, { root: dir }, currentDir) + return currentDir + } + Module.unmountDir = function(dir) { + if (!ENVIRONMENT_IS_NODE) { + return + } + FS.unmount(dir) + } Module.fs_mkdirs = function(dirs) { var currentDir = '/' var splitDirs = dirs.split('/') diff --git a/src/IO/Downsample/emscripten-build/DownsampleLabelImage.umd.js b/src/IO/Downsample/emscripten-build/DownsampleLabelImage.umd.js deleted file mode 100644 index 1e290a93b..000000000 --- a/src/IO/Downsample/emscripten-build/DownsampleLabelImage.umd.js +++ /dev/null @@ -1,4477 +0,0 @@ -var DownsampleLabelImage = (() => { - var _scriptDir = - typeof document !== 'undefined' && document.currentScript - ? document.currentScript.src - : undefined - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename - return function(DownsampleLabelImage) { - DownsampleLabelImage = DownsampleLabelImage || {} - - var Module = - typeof DownsampleLabelImage != 'undefined' ? DownsampleLabelImage : {} - var readyPromiseResolve, readyPromiseReject - Module['ready'] = new Promise(function(resolve, reject) { - readyPromiseResolve = resolve - readyPromiseReject = reject - }) - var mStdout = null - var mStderr = null - Module['resetModuleStdout'] = function() { - mStdout = '' - } - Module['resetModuleStderr'] = function() { - mStderr = '' - } - Module['print'] = function(text) { - console.log(text) - mStdout += text + '\n' - } - Module['printErr'] = function(text) { - console.error(text) - mStderr += text + '\n' - } - Module['getModuleStdout'] = function() { - return mStdout - } - Module['getModuleStderr'] = function() { - return mStderr - } - var moduleOverrides = Object.assign({}, Module) - var arguments_ = [] - var thisProgram = './this.program' - var quit_ = (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 scriptDirectory = '' - function locateFile(path) { - if (Module['locateFile']) { - return Module['locateFile'](path, scriptDirectory) - } - return scriptDirectory + path - } - var read_, readAsync, readBinary, setWindowTitle - function logExceptionOnExit(e) { - if (e instanceof ExitStatus) return - let toLog = e - err('exiting due to exception: ' + toLog) - } - if (ENVIRONMENT_IS_NODE) { - var fs = require('fs') - var nodePath = require('path') - if (ENVIRONMENT_IS_WORKER) { - scriptDirectory = nodePath.dirname(scriptDirectory) + '/' - } else { - scriptDirectory = __dirname + '/' - } - read_ = (filename, binary) => { - filename = isFileURI(filename) - ? new URL(filename) - : nodePath.normalize(filename) - return fs.readFileSync(filename, binary ? undefined : 'utf8') - } - readBinary = filename => { - var ret = read_(filename, true) - if (!ret.buffer) { - ret = new Uint8Array(ret) - } - return ret - } - readAsync = (filename, onload, onerror) => { - filename = isFileURI(filename) - ? new URL(filename) - : nodePath.normalize(filename) - fs.readFile(filename, function(err, data) { - if (err) onerror(err) - else onload(data.buffer) - }) - } - if (process['argv'].length > 1) { - thisProgram = process['argv'][1].replace(/\\/g, '/') - } - arguments_ = process['argv'].slice(2) - process['on']('uncaughtException', function(ex) { - if (!(ex instanceof ExitStatus)) { - throw ex - } - }) - process['on']('unhandledRejection', function(reason) { - throw reason - }) - quit_ = (status, toThrow) => { - if (keepRuntimeAlive()) { - process['exitCode'] = status - throw toThrow - } - logExceptionOnExit(toThrow) - process['exit'](status) - } - Module['inspect'] = function() { - return '[Emscripten Module object]' - } - } else 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_ = url => { - var xhr = new XMLHttpRequest() - xhr.open('GET', url, false) - xhr.send(null) - return xhr.responseText - } - if (ENVIRONMENT_IS_WORKER) { - readBinary = url => { - var xhr = new XMLHttpRequest() - xhr.open('GET', url, false) - xhr.responseType = 'arraybuffer' - xhr.send(null) - return new Uint8Array(xhr.response) - } - } - readAsync = (url, onload, onerror) => { - var xhr = new XMLHttpRequest() - xhr.open('GET', url, true) - xhr.responseType = 'arraybuffer' - xhr.onload = () => { - if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { - onload(xhr.response) - return - } - onerror() - } - xhr.onerror = onerror - xhr.send(null) - } - } - setWindowTitle = title => (document.title = title) - } else { - } - var out = Module['print'] || console.log.bind(console) - var err = Module['printErr'] || console.warn.bind(console) - Object.assign(Module, moduleOverrides) - moduleOverrides = null - if (Module['arguments']) arguments_ = Module['arguments'] - if (Module['thisProgram']) thisProgram = Module['thisProgram'] - if (Module['quit']) quit_ = Module['quit'] - 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 ABORT = false - var EXITSTATUS - function assert(condition, text) { - if (!condition) { - abort(text) - } - } - var UTF8Decoder = - typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined - function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { - var endIdx = idx + maxBytesToRead - var endPtr = idx - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)) - } - var str = '' - while (idx < endPtr) { - var u0 = heapOrArray[idx++] - if (!(u0 & 128)) { - str += String.fromCharCode(u0) - continue - } - var u1 = heapOrArray[idx++] & 63 - if ((u0 & 224) == 192) { - str += String.fromCharCode(((u0 & 31) << 6) | u1) - continue - } - var u2 = heapOrArray[idx++] & 63 - if ((u0 & 240) == 224) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2 - } else { - u0 = - ((u0 & 7) << 18) | - (u1 << 12) | - (u2 << 6) | - (heapOrArray[idx++] & 63) - } - if (u0 < 65536) { - str += String.fromCharCode(u0) - } else { - var ch = u0 - 65536 - str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)) - } - } - return str - } - function UTF8ToString(ptr, maxBytesToRead) { - return ptr ? UTF8ArrayToString(HEAPU8, 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 < str.length; ++i) { - var u = str.charCodeAt(i) - if (u >= 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, HEAPU8, outPtr, maxBytesToWrite) - } - function lengthBytesUTF8(str) { - var len = 0 - for (var i = 0; i < str.length; ++i) { - var c = str.charCodeAt(i) - if (c <= 127) { - len++ - } else if (c <= 2047) { - len += 2 - } else if (c >= 55296 && c <= 57343) { - len += 4 - ++i - } else { - len += 3 - } - } - return len - } - var buffer, - HEAP8, - HEAPU8, - HEAP16, - HEAPU16, - HEAP32, - HEAPU32, - HEAPF32, - HEAPF64 - 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 - var wasmTable - var __ATPRERUN__ = [] - var __ATINIT__ = [] - var __ATMAIN__ = [] - var __ATPOSTRUN__ = [] - var runtimeInitialized = false - function keepRuntimeAlive() { - return noExitRuntime - } - function preRun() { - 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 (!Module['noFSInit'] && !FS.init.initialized) FS.init() - FS.ignorePermissions = false - TTY.init() - callRuntimeCallbacks(__ATINIT__) - } - function preMain() { - callRuntimeCallbacks(__ATMAIN__) - } - function postRun() { - 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() - } - } - } - function abort(what) { - if (Module['onAbort']) { - Module['onAbort'](what) - } - what = 'Aborted(' + what + ')' - err(what) - ABORT = true - EXITSTATUS = 1 - what += '. Build with -sASSERTIONS 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) - } - function isFileURI(filename) { - return filename.startsWith('file://') - } - var wasmBinaryFile - wasmBinaryFile = 'DownsampleLabelImage.umd.wasm' - if (!isDataURI(wasmBinaryFile)) { - wasmBinaryFile = locateFile(wasmBinaryFile) - } - function getBinary(file) { - try { - if (file == wasmBinaryFile && wasmBinary) { - return new Uint8Array(wasmBinary) - } - if (readBinary) { - return readBinary(file) - } - 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' && !isFileURI(wasmBinaryFile)) { - 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) - }) - } else { - if (readAsync) { - return new Promise(function(resolve, reject) { - readAsync( - wasmBinaryFile, - function(response) { - resolve(new Uint8Array(response)) - }, - reject - ) - }) - } - } - } - 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 - wasmMemory = Module['asm']['s'] - updateGlobalBufferAndViews(wasmMemory.buffer) - wasmTable = Module['asm']['D'] - addOnInit(Module['asm']['t']) - removeRunDependency('wasm-instantiate') - } - addRunDependency('wasm-instantiate') - function receiveInstantiationResult(result) { - receiveInstance(result['instance']) - } - 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) && - !isFileURI(wasmBinaryFile) && - !ENVIRONMENT_IS_NODE && - 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) - readyPromiseReject(e) - } - } - instantiateAsync().catch(readyPromiseReject) - return {} - } - var tempDouble - var tempI64 - function ExitStatus(status) { - this.name = 'ExitStatus' - this.message = 'Program terminated with exit(' + status + ')' - this.status = status - } - function callRuntimeCallbacks(callbacks) { - while (callbacks.length > 0) { - callbacks.shift()(Module) - } - } - function ExceptionInfo(excPtr) { - this.excPtr = excPtr - this.ptr = excPtr - 24 - this.set_type = function(type) { - HEAPU32[(this.ptr + 4) >> 2] = type - } - this.get_type = function() { - return HEAPU32[(this.ptr + 4) >> 2] - } - this.set_destructor = function(destructor) { - HEAPU32[(this.ptr + 8) >> 2] = destructor - } - this.get_destructor = function() { - return HEAPU32[(this.ptr + 8) >> 2] - } - this.set_refcount = function(refcount) { - HEAP32[this.ptr >> 2] = refcount - } - this.set_caught = function(caught) { - caught = caught ? 1 : 0 - HEAP8[(this.ptr + 12) >> 0] = caught - } - this.get_caught = function() { - return HEAP8[(this.ptr + 12) >> 0] != 0 - } - this.set_rethrown = function(rethrown) { - rethrown = rethrown ? 1 : 0 - HEAP8[(this.ptr + 13) >> 0] = rethrown - } - this.get_rethrown = function() { - return HEAP8[(this.ptr + 13) >> 0] != 0 - } - this.init = function(type, destructor) { - this.set_adjusted_ptr(0) - this.set_type(type) - this.set_destructor(destructor) - this.set_refcount(0) - this.set_caught(false) - this.set_rethrown(false) - } - this.add_ref = function() { - var value = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = value + 1 - } - this.release_ref = function() { - var prev = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = prev - 1 - return prev === 1 - } - this.set_adjusted_ptr = function(adjustedPtr) { - HEAPU32[(this.ptr + 16) >> 2] = adjustedPtr - } - this.get_adjusted_ptr = function() { - return HEAPU32[(this.ptr + 16) >> 2] - } - this.get_exception_ptr = function() { - var isPointer = ___cxa_is_pointer_type(this.get_type()) - if (isPointer) { - return HEAPU32[this.excPtr >> 2] - } - var adjusted = this.get_adjusted_ptr() - if (adjusted !== 0) return adjusted - return this.excPtr - } - } - var exceptionLast = 0 - var uncaughtExceptionCount = 0 - function ___cxa_throw(ptr, type, destructor) { - var info = new ExceptionInfo(ptr) - info.init(type, destructor) - exceptionLast = ptr - uncaughtExceptionCount++ - throw ptr - } - function setErrNo(value) { - HEAP32[___errno_location() >> 2] = value - return value - } - var PATH = { - isAbs: path => path.charAt(0) === '/', - splitPath: filename => { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/ - return splitPathRe.exec(filename).slice(1) - }, - normalizeArray: (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: path => { - var isAbsolute = PATH.isAbs(path), - trailingSlash = path.substr(-1) === '/' - path = PATH.normalizeArray( - path.split('/').filter(p => !!p), - !isAbsolute - ).join('/') - if (!path && !isAbsolute) { - path = '.' - } - if (path && trailingSlash) { - path += '/' - } - return (isAbsolute ? '/' : '') + path - }, - dirname: 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: 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) - }, - join: function() { - var paths = Array.prototype.slice.call(arguments) - return PATH.normalize(paths.join('/')) - }, - join2: (l, r) => { - return PATH.normalize(l + '/' + r) - }, - } - function getRandomDevice() { - if ( - typeof crypto == 'object' && - typeof crypto['getRandomValues'] == 'function' - ) { - var randomBuffer = new Uint8Array(1) - return () => { - crypto.getRandomValues(randomBuffer) - return randomBuffer[0] - } - } else if (ENVIRONMENT_IS_NODE) { - try { - var crypto_module = require('crypto') - return () => crypto_module['randomBytes'](1)[0] - } catch (e) {} - } - return () => abort('randomDevice') - } - 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.isAbs(path) - } - resolvedPath = PATH.normalizeArray( - resolvedPath.split('/').filter(p => !!p), - !resolvedAbsolute - ).join('/') - return (resolvedAbsolute ? '/' : '') + resolvedPath || '.' - }, - relative: (from, to) => { - from = PATH_FS.resolve(from).substr(1) - to = PATH_FS.resolve(to).substr(1) - function trim(arr) { - var start = 0 - for (; start < arr.length; start++) { - if (arr[start] !== '') break - } - var end = arr.length - 1 - for (; end >= 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; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i - break - } - } - var outputParts = [] - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..') - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)) - return outputParts.join('/') - }, - } - 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 TTY = { - ttys: [], - init: function() {}, - shutdown: function() {}, - register: function(dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops } - FS.registerDevice(dev, TTY.stream_ops) - }, - stream_ops: { - open: function(stream) { - var tty = TTY.ttys[stream.node.rdev] - if (!tty) { - throw new FS.ErrnoError(43) - } - stream.tty = tty - stream.seekable = false - }, - close: function(stream) { - stream.tty.ops.fsync(stream.tty) - }, - fsync: function(stream) { - stream.tty.ops.fsync(stream.tty) - }, - read: function(stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(60) - } - var bytesRead = 0 - for (var i = 0; i < length; i++) { - var result - try { - result = stream.tty.ops.get_char(stream.tty) - } catch (e) { - throw new FS.ErrnoError(29) - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6) - } - if (result === null || result === undefined) break - bytesRead++ - buffer[offset + i] = result - } - if (bytesRead) { - stream.node.timestamp = Date.now() - } - return bytesRead - }, - write: function(stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(60) - } - try { - for (var i = 0; i < length; i++) { - stream.tty.ops.put_char(stream.tty, buffer[offset + i]) - } - } catch (e) { - throw new FS.ErrnoError(29) - } - if (length) { - stream.node.timestamp = Date.now() - } - return i - }, - }, - default_tty_ops: { - get_char: function(tty) { - if (!tty.input.length) { - var result = null - if (ENVIRONMENT_IS_NODE) { - var BUFSIZE = 256 - var buf = Buffer.alloc(BUFSIZE) - var bytesRead = 0 - try { - bytesRead = fs.readSync(process.stdin.fd, buf, 0, BUFSIZE, -1) - } catch (e) { - if (e.toString().includes('EOF')) bytesRead = 0 - else throw e - } - if (bytesRead > 0) { - result = buf.slice(0, bytesRead).toString('utf-8') - } else { - result = null - } - } else if ( - typeof window != 'undefined' && - typeof window.prompt == 'function' - ) { - result = window.prompt('Input: ') - if (result !== null) { - result += '\n' - } - } else if (typeof readline == 'function') { - result = readline() - if (result !== null) { - result += '\n' - } - } - if (!result) { - return null - } - tty.input = intArrayFromString(result, true) - } - return tty.input.shift() - }, - put_char: function(tty, val) { - if (val === null || val === 10) { - out(UTF8ArrayToString(tty.output, 0)) - tty.output = [] - } else { - if (val != 0) tty.output.push(val) - } - }, - fsync: function(tty) { - if (tty.output && tty.output.length > 0) { - 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) - } - }, - fsync: function(tty) { - if (tty.output && tty.output.length > 0) { - err(UTF8ArrayToString(tty.output, 0)) - tty.output = [] - } - }, - }, - } - function mmapAlloc(size) { - abort() - } - 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 < CAPACITY_DOUBLING_MAX ? 2 : 1.125)) >>> - 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; i < size; i++) - buffer[offset + i] = contents[position + i] - } - return size - }, - write: function(stream, buffer, offset, length, position, canOwn) { - if (buffer.buffer === HEAP8.buffer) { - canOwn = false - } - if (!length) return 0 - var node = stream.node - node.timestamp = Date.now() - if (buffer.subarray && (!node.contents || node.contents.subarray)) { - if (canOwn) { - node.contents = buffer.subarray(offset, offset + length) - node.usedBytes = length - return length - } else if (node.usedBytes === 0 && position === 0) { - node.contents = buffer.slice(offset, offset + length) - node.usedBytes = length - return length - } else if (position + length <= node.usedBytes) { - node.contents.set( - buffer.subarray(offset, offset + length), - position - ) - return length - } - } - MEMFS.expandFileStorage(node, position + length) - if (node.contents.subarray && buffer.subarray) { - node.contents.set( - buffer.subarray(offset, offset + length), - position - ) - } else { - for (var i = 0; i < length; i++) { - node.contents[position + i] = buffer[offset + i] - } - } - node.usedBytes = Math.max(node.usedBytes, position + length) - return length - }, - llseek: function(stream, offset, whence) { - var position = offset - if (whence === 1) { - position += stream.position - } else if (whence === 2) { - if (FS.isFile(stream.node.mode)) { - position += stream.node.usedBytes - } - } - if (position < 0) { - throw new FS.ErrnoError(28) - } - return position - }, - allocate: function(stream, offset, length) { - MEMFS.expandFileStorage(stream.node, offset + length) - stream.node.usedBytes = Math.max( - stream.node.usedBytes, - offset + length - ) - }, - mmap: function(stream, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43) - } - var ptr - var allocated - var contents = stream.node.contents - if (!(flags & 2) && contents.buffer === buffer) { - allocated = false - ptr = contents.byteOffset - } else { - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length) - } else { - contents = Array.prototype.slice.call( - contents, - position, - position + length - ) - } - } - allocated = true - ptr = mmapAlloc(length) - if (!ptr) { - throw new FS.ErrnoError(48) - } - HEAP8.set(contents, ptr) - } - return { ptr: ptr, allocated: allocated } - }, - msync: function(stream, buffer, offset, length, mmapFlags) { - MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false) - return 0 - }, - }, - } - function asyncLoad(url, onload, onerror, noRunDep) { - var dep = !noRunDep ? getUniqueRunDependency('al ' + url) : '' - readAsync( - url, - arrayBuffer => { - assert( - arrayBuffer, - 'Loading data file "' + url + '" failed (no arrayBuffer).' - ) - onload(new Uint8Array(arrayBuffer)) - if (dep) removeRunDependency(dep) - }, - event => { - if (onerror) { - onerror() - } else { - throw 'Loading data file "' + url + '" failed.' - } - } - ) - if (dep) addRunDependency(dep) - } - var ERRNO_CODES = {} - var NODEFS = { - isWindows: false, - staticInit: () => { - NODEFS.isWindows = !!process.platform.match(/^win/) - var flags = process['binding']('constants') - if (flags['fs']) { - flags = flags['fs'] - } - NODEFS.flagsForNodeMap = { - 1024: flags['O_APPEND'], - 64: flags['O_CREAT'], - 128: flags['O_EXCL'], - 256: flags['O_NOCTTY'], - 0: flags['O_RDONLY'], - 2: flags['O_RDWR'], - 4096: flags['O_SYNC'], - 512: flags['O_TRUNC'], - 1: flags['O_WRONLY'], - 131072: flags['O_NOFOLLOW'], - } - }, - convertNodeCode: e => { - var code = e.code - return ERRNO_CODES[code] - }, - mount: mount => { - return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0) - }, - createNode: (parent, name, mode, dev) => { - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { - throw new FS.ErrnoError(28) - } - var node = FS.createNode(parent, name, mode) - node.node_ops = NODEFS.node_ops - node.stream_ops = NODEFS.stream_ops - return node - }, - getMode: path => { - var stat - try { - stat = fs.lstatSync(path) - if (NODEFS.isWindows) { - stat.mode = stat.mode | ((stat.mode & 292) >> 2) - } - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - return stat.mode - }, - realPath: node => { - var parts = [] - while (node.parent !== node) { - parts.push(node.name) - node = node.parent - } - parts.push(node.mount.opts.root) - parts.reverse() - return PATH.join.apply(null, parts) - }, - flagsForNode: flags => { - flags &= ~2097152 - flags &= ~2048 - flags &= ~32768 - flags &= ~524288 - flags &= ~65536 - var newFlags = 0 - for (var k in NODEFS.flagsForNodeMap) { - if (flags & k) { - newFlags |= NODEFS.flagsForNodeMap[k] - flags ^= k - } - } - if (flags) { - throw new FS.ErrnoError(28) - } - return newFlags - }, - node_ops: { - getattr: node => { - var path = NODEFS.realPath(node) - var stat - try { - stat = fs.lstatSync(path) - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - if (NODEFS.isWindows && !stat.blksize) { - stat.blksize = 4096 - } - if (NODEFS.isWindows && !stat.blocks) { - stat.blocks = ((stat.size + stat.blksize - 1) / stat.blksize) | 0 - } - return { - dev: stat.dev, - ino: stat.ino, - mode: stat.mode, - nlink: stat.nlink, - uid: stat.uid, - gid: stat.gid, - rdev: stat.rdev, - size: stat.size, - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime, - blksize: stat.blksize, - blocks: stat.blocks, - } - }, - setattr: (node, attr) => { - var path = NODEFS.realPath(node) - try { - if (attr.mode !== undefined) { - fs.chmodSync(path, attr.mode) - node.mode = attr.mode - } - if (attr.timestamp !== undefined) { - var date = new Date(attr.timestamp) - fs.utimesSync(path, date, date) - } - if (attr.size !== undefined) { - fs.truncateSync(path, attr.size) - } - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - lookup: (parent, name) => { - var path = PATH.join2(NODEFS.realPath(parent), name) - var mode = NODEFS.getMode(path) - return NODEFS.createNode(parent, name, mode) - }, - mknod: (parent, name, mode, dev) => { - var node = NODEFS.createNode(parent, name, mode, dev) - var path = NODEFS.realPath(node) - try { - if (FS.isDir(node.mode)) { - fs.mkdirSync(path, node.mode) - } else { - fs.writeFileSync(path, '', { mode: node.mode }) - } - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - return node - }, - rename: (oldNode, newDir, newName) => { - var oldPath = NODEFS.realPath(oldNode) - var newPath = PATH.join2(NODEFS.realPath(newDir), newName) - try { - fs.renameSync(oldPath, newPath) - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - oldNode.name = newName - }, - unlink: (parent, name) => { - var path = PATH.join2(NODEFS.realPath(parent), name) - try { - fs.unlinkSync(path) - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - rmdir: (parent, name) => { - var path = PATH.join2(NODEFS.realPath(parent), name) - try { - fs.rmdirSync(path) - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - readdir: node => { - var path = NODEFS.realPath(node) - try { - return fs.readdirSync(path) - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - symlink: (parent, newName, oldPath) => { - var newPath = PATH.join2(NODEFS.realPath(parent), newName) - try { - fs.symlinkSync(oldPath, newPath) - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - readlink: node => { - var path = NODEFS.realPath(node) - try { - path = fs.readlinkSync(path) - path = nodePath.relative( - nodePath.resolve(node.mount.opts.root), - path - ) - return path - } catch (e) { - if (!e.code) throw e - if (e.code === 'UNKNOWN') throw new FS.ErrnoError(28) - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - }, - stream_ops: { - open: stream => { - var path = NODEFS.realPath(stream.node) - try { - if (FS.isFile(stream.node.mode)) { - stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags)) - } - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - close: stream => { - try { - if (FS.isFile(stream.node.mode) && stream.nfd) { - fs.closeSync(stream.nfd) - } - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - read: (stream, buffer, offset, length, position) => { - if (length === 0) return 0 - try { - return fs.readSync( - stream.nfd, - Buffer.from(buffer.buffer), - offset, - length, - position - ) - } catch (e) { - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - write: (stream, buffer, offset, length, position) => { - try { - return fs.writeSync( - stream.nfd, - Buffer.from(buffer.buffer), - offset, - length, - position - ) - } catch (e) { - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - llseek: (stream, offset, whence) => { - var position = offset - if (whence === 1) { - position += stream.position - } else if (whence === 2) { - if (FS.isFile(stream.node.mode)) { - try { - var stat = fs.fstatSync(stream.nfd) - position += stat.size - } catch (e) { - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - } - } - if (position < 0) { - throw new FS.ErrnoError(28) - } - return position - }, - mmap: (stream, length, position, prot, flags) => { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43) - } - var ptr = mmapAlloc(length) - NODEFS.stream_ops.read(stream, HEAP8, ptr, length, position) - return { ptr: ptr, allocated: true } - }, - msync: (stream, buffer, offset, length, mmapFlags) => { - NODEFS.stream_ops.write(stream, buffer, 0, length, offset, false) - return 0 - }, - }, - } - var FS = { - root: null, - mounts: [], - devices: {}, - streams: [], - nextInode: 1, - nameTable: null, - currentPath: '/', - initialized: false, - ignorePermissions: true, - ErrnoError: null, - genericErrors: {}, - filesystems: null, - syncFSRequests: 0, - lookupPath: (path, opts = {}) => { - path = PATH_FS.resolve(path) - if (!path) return { path: '', node: null } - var defaults = { follow_mount: true, recurse_count: 0 } - opts = Object.assign(defaults, opts) - if (opts.recurse_count > 8) { - throw new FS.ErrnoError(32) - } - var parts = path.split('/').filter(p => !!p) - var current = FS.root - var current_path = '/' - for (var i = 0; i < parts.length; i++) { - var islast = i === parts.length - 1 - if (islast && opts.parent) { - break - } - current = FS.lookupNode(current, parts[i]) - current_path = PATH.join2(current_path, parts[i]) - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root - } - } - if (!islast || opts.follow) { - var count = 0 - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path) - current_path = PATH_FS.resolve(PATH.dirname(current_path), link) - var lookup = FS.lookupPath(current_path, { - recurse_count: opts.recurse_count + 1, - }) - current = lookup.node - if (count++ > 40) { - throw new FS.ErrnoError(32) - } - } - } - } - return { path: current_path, node: current } - }, - getPath: 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: (parentid, name) => { - var hash = 0 - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0 - } - return ((parentid + hash) >>> 0) % FS.nameTable.length - }, - hashAddNode: node => { - var hash = FS.hashName(node.parent.id, node.name) - node.name_next = FS.nameTable[hash] - FS.nameTable[hash] = node - }, - hashRemoveNode: 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: (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: (parent, name, mode, rdev) => { - var node = new FS.FSNode(parent, name, mode, rdev) - FS.hashAddNode(node) - return node - }, - destroyNode: node => { - FS.hashRemoveNode(node) - }, - isRoot: node => { - return node === node.parent - }, - isMountpoint: node => { - return !!node.mounted - }, - isFile: mode => { - return (mode & 61440) === 32768 - }, - isDir: mode => { - return (mode & 61440) === 16384 - }, - isLink: mode => { - return (mode & 61440) === 40960 - }, - isChrdev: mode => { - return (mode & 61440) === 8192 - }, - isBlkdev: mode => { - return (mode & 61440) === 24576 - }, - isFIFO: mode => { - return (mode & 61440) === 4096 - }, - isSocket: mode => { - return (mode & 49152) === 49152 - }, - flagModes: { r: 0, 'r+': 2, w: 577, 'w+': 578, a: 1089, 'a+': 1090 }, - modeStringToFlags: str => { - var flags = FS.flagModes[str] - if (typeof flags == 'undefined') { - throw new Error('Unknown file open mode: ' + str) - } - return flags - }, - flagsToPermissionString: flag => { - var perms = ['r', 'w', 'rw'][flag & 3] - if (flag & 512) { - perms += 'w' - } - return perms - }, - nodePermissions: (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: dir => { - var errCode = FS.nodePermissions(dir, 'x') - if (errCode) return errCode - if (!dir.node_ops.lookup) return 2 - return 0 - }, - mayCreate: (dir, name) => { - try { - var node = FS.lookupNode(dir, name) - return 20 - } catch (e) {} - return FS.nodePermissions(dir, 'wx') - }, - mayDelete: (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: (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: (fd_start = 0, 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: fd => FS.streams[fd], - createStream: (stream, fd_start, fd_end) => { - if (!FS.FSStream) { - FS.FSStream = function() { - this.shared = {} - } - FS.FSStream.prototype = {} - Object.defineProperties(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 - }, - }, - flags: { - get: function() { - return this.shared.flags - }, - set: function(val) { - this.shared.flags = val - }, - }, - position: { - get: function() { - return this.shared.position - }, - set: function(val) { - this.shared.position = val - }, - }, - }) - } - stream = Object.assign(new FS.FSStream(), stream) - var fd = FS.nextfd(fd_start, fd_end) - stream.fd = fd - FS.streams[fd] = stream - return stream - }, - closeStream: fd => { - FS.streams[fd] = null - }, - chrdev_stream_ops: { - open: 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: () => { - throw new FS.ErrnoError(70) - }, - }, - major: dev => dev >> 8, - minor: dev => dev & 255, - makedev: (ma, mi) => (ma << 8) | mi, - registerDevice: (dev, ops) => { - FS.devices[dev] = { stream_ops: ops } - }, - getDevice: dev => FS.devices[dev], - getMounts: 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: (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(mount => { - if (!mount.type.syncfs) { - return done(null) - } - mount.type.syncfs(mount, populate, done) - }) - }, - mount: (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: 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(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: (parent, name) => { - return parent.node_ops.lookup(parent, name) - }, - mknod: (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: (path, mode) => { - mode = mode !== undefined ? mode : 438 - mode &= 4095 - mode |= 32768 - return FS.mknod(path, mode, 0) - }, - mkdir: (path, mode) => { - mode = mode !== undefined ? mode : 511 - mode &= 511 | 512 - mode |= 16384 - return FS.mknod(path, mode, 0) - }, - mkdirTree: (path, mode) => { - var dirs = path.split('/') - var d = '' - for (var i = 0; i < dirs.length; ++i) { - if (!dirs[i]) continue - d += '/' + dirs[i] - try { - FS.mkdir(d, mode) - } catch (e) { - if (e.errno != 20) throw e - } - } - }, - mkdev: (path, mode, dev) => { - if (typeof dev == 'undefined') { - dev = mode - mode = 438 - } - mode |= 8192 - return FS.mknod(path, mode, dev) - }, - symlink: (oldpath, newpath) => { - if (!PATH_FS.resolve(oldpath)) { - throw new FS.ErrnoError(44) - } - var lookup = FS.lookupPath(newpath, { parent: true }) - var parent = lookup.node - if (!parent) { - throw new FS.ErrnoError(44) - } - var newname = PATH.basename(newpath) - var errCode = FS.mayCreate(parent, newname) - if (errCode) { - throw new FS.ErrnoError(errCode) - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(63) - } - return parent.node_ops.symlink(parent, newname, oldpath) - }, - rename: (old_path, new_path) => { - var old_dirname = PATH.dirname(old_path) - var new_dirname = PATH.dirname(new_path) - var old_name = PATH.basename(old_path) - var new_name = PATH.basename(new_path) - var lookup, old_dir, new_dir - lookup = FS.lookupPath(old_path, { parent: true }) - old_dir = lookup.node - lookup = FS.lookupPath(new_path, { parent: true }) - new_dir = lookup.node - if (!old_dir || !new_dir) throw new FS.ErrnoError(44) - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(75) - } - var old_node = FS.lookupNode(old_dir, old_name) - var relative = PATH_FS.relative(old_path, new_dirname) - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(28) - } - relative = PATH_FS.relative(new_path, old_dirname) - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(55) - } - var new_node - try { - new_node = FS.lookupNode(new_dir, new_name) - } catch (e) {} - if (old_node === new_node) { - return - } - var isdir = FS.isDir(old_node.mode) - var errCode = FS.mayDelete(old_dir, old_name, isdir) - if (errCode) { - throw new FS.ErrnoError(errCode) - } - errCode = new_node - ? FS.mayDelete(new_dir, new_name, isdir) - : FS.mayCreate(new_dir, new_name) - if (errCode) { - throw new FS.ErrnoError(errCode) - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(63) - } - if ( - FS.isMountpoint(old_node) || - (new_node && FS.isMountpoint(new_node)) - ) { - throw new FS.ErrnoError(10) - } - if (new_dir !== old_dir) { - errCode = FS.nodePermissions(old_dir, 'w') - if (errCode) { - throw new FS.ErrnoError(errCode) - } - } - FS.hashRemoveNode(old_node) - try { - old_dir.node_ops.rename(old_node, new_dir, new_name) - } catch (e) { - throw e - } finally { - FS.hashAddNode(old_node) - } - }, - rmdir: path => { - var lookup = FS.lookupPath(path, { parent: true }) - var parent = lookup.node - var name = PATH.basename(path) - var node = FS.lookupNode(parent, name) - var errCode = FS.mayDelete(parent, name, true) - if (errCode) { - throw new FS.ErrnoError(errCode) - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(63) - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10) - } - parent.node_ops.rmdir(parent, name) - FS.destroyNode(node) - }, - readdir: path => { - var lookup = FS.lookupPath(path, { follow: true }) - var node = lookup.node - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(54) - } - return node.node_ops.readdir(node) - }, - unlink: path => { - var lookup = FS.lookupPath(path, { parent: true }) - var parent = lookup.node - if (!parent) { - throw new FS.ErrnoError(44) - } - var name = PATH.basename(path) - var node = FS.lookupNode(parent, name) - var errCode = FS.mayDelete(parent, name, false) - if (errCode) { - throw new FS.ErrnoError(errCode) - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(63) - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10) - } - parent.node_ops.unlink(parent, name) - FS.destroyNode(node) - }, - readlink: path => { - var lookup = FS.lookupPath(path) - var link = lookup.node - if (!link) { - throw new FS.ErrnoError(44) - } - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(28) - } - return PATH_FS.resolve( - FS.getPath(link.parent), - link.node_ops.readlink(link) - ) - }, - stat: (path, dontFollow) => { - var lookup = FS.lookupPath(path, { follow: !dontFollow }) - var node = lookup.node - if (!node) { - throw new FS.ErrnoError(44) - } - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(63) - } - return node.node_ops.getattr(node) - }, - lstat: path => { - return FS.stat(path, true) - }, - chmod: (path, mode, dontFollow) => { - var node - if (typeof path == 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }) - node = lookup.node - } else { - node = path - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63) - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now(), - }) - }, - lchmod: (path, mode) => { - FS.chmod(path, mode, true) - }, - fchmod: (fd, mode) => { - var stream = FS.getStream(fd) - if (!stream) { - throw new FS.ErrnoError(8) - } - FS.chmod(stream.node, mode) - }, - chown: (path, uid, gid, dontFollow) => { - var node - if (typeof path == 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }) - node = lookup.node - } else { - node = path - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63) - } - node.node_ops.setattr(node, { timestamp: Date.now() }) - }, - lchown: (path, uid, gid) => { - FS.chown(path, uid, gid, true) - }, - fchown: (fd, uid, gid) => { - var stream = FS.getStream(fd) - if (!stream) { - throw new FS.ErrnoError(8) - } - FS.chown(stream.node, uid, gid) - }, - truncate: (path, len) => { - if (len < 0) { - throw new FS.ErrnoError(28) - } - var node - if (typeof path == 'string') { - var lookup = FS.lookupPath(path, { follow: true }) - node = lookup.node - } else { - node = path - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63) - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(31) - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(28) - } - var errCode = FS.nodePermissions(node, 'w') - if (errCode) { - throw new FS.ErrnoError(errCode) - } - node.node_ops.setattr(node, { size: len, timestamp: Date.now() }) - }, - ftruncate: (fd, len) => { - var stream = FS.getStream(fd) - if (!stream) { - throw new FS.ErrnoError(8) - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(28) - } - FS.truncate(stream.node, len) - }, - utime: (path, atime, mtime) => { - var lookup = FS.lookupPath(path, { follow: true }) - var node = lookup.node - node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) }) - }, - open: (path, flags, mode) => { - if (path === '') { - throw new FS.ErrnoError(44) - } - flags = typeof flags == 'string' ? FS.modeStringToFlags(flags) : flags - mode = typeof mode == 'undefined' ? 438 : mode - if (flags & 64) { - mode = (mode & 4095) | 32768 - } else { - mode = 0 - } - var node - if (typeof path == 'object') { - node = path - } else { - path = PATH.normalize(path) - try { - var lookup = FS.lookupPath(path, { follow: !(flags & 131072) }) - node = lookup.node - } catch (e) {} - } - var created = false - if (flags & 64) { - if (node) { - if (flags & 128) { - throw new FS.ErrnoError(20) - } - } else { - node = FS.mknod(path, mode, 0) - created = true - } - } - if (!node) { - throw new FS.ErrnoError(44) - } - if (FS.isChrdev(node.mode)) { - flags &= ~512 - } - if (flags & 65536 && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(54) - } - if (!created) { - var errCode = FS.mayOpen(node, flags) - if (errCode) { - throw new FS.ErrnoError(errCode) - } - } - if (flags & 512 && !created) { - FS.truncate(node, 0) - } - flags &= ~(128 | 512 | 131072) - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - ungotten: [], - error: false, - }) - if (stream.stream_ops.open) { - stream.stream_ops.open(stream) - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {} - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1 - } - } - return stream - }, - close: stream => { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8) - } - if (stream.getdents) stream.getdents = null - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream) - } - } catch (e) { - throw e - } finally { - FS.closeStream(stream.fd) - } - stream.fd = null - }, - isClosed: stream => { - return stream.fd === null - }, - llseek: (stream, offset, whence) => { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8) - } - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(70) - } - if (whence != 0 && whence != 1 && whence != 2) { - throw new FS.ErrnoError(28) - } - stream.position = stream.stream_ops.llseek(stream, offset, whence) - stream.ungotten = [] - return stream.position - }, - read: (stream, buffer, offset, length, position) => { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28) - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8) - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(8) - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31) - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(28) - } - var seeking = typeof position != 'undefined' - if (!seeking) { - position = stream.position - } else if (!stream.seekable) { - throw new FS.ErrnoError(70) - } - var bytesRead = stream.stream_ops.read( - stream, - buffer, - offset, - length, - position - ) - if (!seeking) stream.position += bytesRead - return bytesRead - }, - write: (stream, buffer, offset, length, position, canOwn) => { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28) - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8) - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8) - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31) - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(28) - } - if (stream.seekable && stream.flags & 1024) { - FS.llseek(stream, 0, 2) - } - var seeking = typeof position != 'undefined' - if (!seeking) { - position = stream.position - } else if (!stream.seekable) { - throw new FS.ErrnoError(70) - } - var bytesWritten = stream.stream_ops.write( - stream, - buffer, - offset, - length, - position, - canOwn - ) - if (!seeking) stream.position += bytesWritten - return bytesWritten - }, - allocate: (stream, offset, length) => { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8) - } - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(28) - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8) - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(43) - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(138) - } - stream.stream_ops.allocate(stream, offset, length) - }, - mmap: (stream, length, position, prot, flags) => { - if ( - (prot & 2) !== 0 && - (flags & 2) === 0 && - (stream.flags & 2097155) !== 2 - ) { - throw new FS.ErrnoError(2) - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(2) - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(43) - } - return stream.stream_ops.mmap(stream, length, position, prot, flags) - }, - msync: (stream, buffer, offset, length, mmapFlags) => { - if (!stream.stream_ops.msync) { - return 0 - } - return stream.stream_ops.msync( - stream, - buffer, - offset, - length, - mmapFlags - ) - }, - munmap: stream => 0, - ioctl: (stream, cmd, arg) => { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(59) - } - return stream.stream_ops.ioctl(stream, cmd, arg) - }, - readFile: (path, opts = {}) => { - opts.flags = opts.flags || 0 - opts.encoding = opts.encoding || 'binary' - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"') - } - var ret - var stream = FS.open(path, opts.flags) - var stat = FS.stat(path) - var length = stat.size - var buf = new Uint8Array(length) - FS.read(stream, buf, 0, length, 0) - if (opts.encoding === 'utf8') { - ret = UTF8ArrayToString(buf, 0) - } else if (opts.encoding === 'binary') { - ret = buf - } - FS.close(stream) - return ret - }, - writeFile: (path, data, opts = {}) => { - opts.flags = opts.flags || 577 - var stream = FS.open(path, opts.flags, opts.mode) - if (typeof data == 'string') { - var buf = new Uint8Array(lengthBytesUTF8(data) + 1) - var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length) - FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn) - } else if (ArrayBuffer.isView(data)) { - FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn) - } else { - throw new Error('Unsupported data type') - } - FS.close(stream) - }, - cwd: () => FS.currentPath, - chdir: path => { - var lookup = FS.lookupPath(path, { follow: true }) - if (lookup.node === null) { - throw new FS.ErrnoError(44) - } - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(54) - } - var errCode = FS.nodePermissions(lookup.node, 'x') - if (errCode) { - throw new FS.ErrnoError(errCode) - } - FS.currentPath = lookup.path - }, - createDefaultDirectories: () => { - FS.mkdir('/tmp') - FS.mkdir('/home') - FS.mkdir('/home/web_user') - }, - createDefaultDevices: () => { - FS.mkdir('/dev') - FS.registerDevice(FS.makedev(1, 3), { - read: () => 0, - write: (stream, buffer, offset, length, pos) => length, - }) - FS.mkdev('/dev/null', FS.makedev(1, 3)) - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops) - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops) - FS.mkdev('/dev/tty', FS.makedev(5, 0)) - FS.mkdev('/dev/tty1', FS.makedev(6, 0)) - var random_device = getRandomDevice() - FS.createDevice('/dev', 'random', random_device) - FS.createDevice('/dev', 'urandom', random_device) - FS.mkdir('/dev/shm') - FS.mkdir('/dev/shm/tmp') - }, - createSpecialDirectories: () => { - FS.mkdir('/proc') - var proc_self = FS.mkdir('/proc/self') - FS.mkdir('/proc/self/fd') - FS.mount( - { - mount: () => { - var node = FS.createNode(proc_self, 'fd', 16384 | 511, 73) - node.node_ops = { - lookup: (parent, name) => { - var fd = +name - var stream = FS.getStream(fd) - if (!stream) throw new FS.ErrnoError(8) - var ret = { - parent: null, - mount: { mountpoint: 'fake' }, - node_ops: { readlink: () => stream.path }, - } - ret.parent = ret - return ret - }, - } - return node - }, - }, - {}, - '/proc/self/fd' - ) - }, - createStandardStreams: () => { - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']) - } else { - FS.symlink('/dev/tty', '/dev/stdin') - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']) - } else { - FS.symlink('/dev/tty', '/dev/stdout') - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']) - } else { - FS.symlink('/dev/tty1', '/dev/stderr') - } - var stdin = FS.open('/dev/stdin', 0) - var stdout = FS.open('/dev/stdout', 1) - var stderr = FS.open('/dev/stderr', 1) - }, - ensureErrnoError: () => { - if (FS.ErrnoError) return - FS.ErrnoError = function ErrnoError(errno, node) { - this.node = node - this.setErrno = function(errno) { - this.errno = errno - } - this.setErrno(errno) - this.message = 'FS error' - } - FS.ErrnoError.prototype = new Error() - FS.ErrnoError.prototype.constructor = FS.ErrnoError - ;[44].forEach(code => { - FS.genericErrors[code] = new FS.ErrnoError(code) - FS.genericErrors[code].stack = '' - }) - }, - staticInit: () => { - FS.ensureErrnoError() - FS.nameTable = new Array(4096) - FS.mount(MEMFS, {}, '/') - FS.createDefaultDirectories() - FS.createDefaultDevices() - FS.createSpecialDirectories() - FS.filesystems = { MEMFS: MEMFS, NODEFS: NODEFS } - }, - init: (input, output, error) => { - FS.init.initialized = true - FS.ensureErrnoError() - Module['stdin'] = input || Module['stdin'] - Module['stdout'] = output || Module['stdout'] - Module['stderr'] = error || Module['stderr'] - FS.createStandardStreams() - }, - quit: () => { - FS.init.initialized = false - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i] - if (!stream) { - continue - } - FS.close(stream) - } - }, - getMode: (canRead, canWrite) => { - var mode = 0 - if (canRead) mode |= 292 | 73 - if (canWrite) mode |= 146 - return mode - }, - findObject: (path, dontResolveLastLink) => { - var ret = FS.analyzePath(path, dontResolveLastLink) - if (!ret.exists) { - return null - } - return ret.object - }, - analyzePath: (path, dontResolveLastLink) => { - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }) - path = lookup.path - } catch (e) {} - var ret = { - isRoot: false, - exists: false, - error: 0, - name: null, - path: null, - object: null, - parentExists: false, - parentPath: null, - parentObject: null, - } - try { - var lookup = FS.lookupPath(path, { parent: true }) - ret.parentExists = true - ret.parentPath = lookup.path - ret.parentObject = lookup.node - ret.name = PATH.basename(path) - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }) - ret.exists = true - ret.path = lookup.path - ret.object = lookup.node - ret.name = lookup.node.name - ret.isRoot = lookup.path === '/' - } catch (e) { - ret.error = e.errno - } - return ret - }, - createPath: (parent, path, canRead, canWrite) => { - parent = typeof parent == 'string' ? parent : FS.getPath(parent) - var parts = path.split('/').reverse() - while (parts.length) { - var part = parts.pop() - if (!part) continue - var current = PATH.join2(parent, part) - try { - FS.mkdir(current) - } catch (e) {} - parent = current - } - return current - }, - createFile: (parent, name, properties, canRead, canWrite) => { - var path = PATH.join2( - typeof parent == 'string' ? parent : FS.getPath(parent), - name - ) - var mode = FS.getMode(canRead, canWrite) - return FS.create(path, mode) - }, - createDataFile: (parent, name, data, canRead, canWrite, canOwn) => { - var path = name - if (parent) { - parent = typeof parent == 'string' ? parent : FS.getPath(parent) - path = name ? PATH.join2(parent, name) : parent - } - var mode = FS.getMode(canRead, canWrite) - var node = FS.create(path, mode) - if (data) { - if (typeof data == 'string') { - var arr = new Array(data.length) - for (var i = 0, len = data.length; i < len; ++i) - arr[i] = data.charCodeAt(i) - data = arr - } - FS.chmod(node, mode | 146) - var stream = FS.open(node, 577) - FS.write(stream, data, 0, data.length, 0, canOwn) - FS.close(stream) - FS.chmod(node, mode) - } - return node - }, - createDevice: (parent, name, input, output) => { - var path = PATH.join2( - typeof parent == 'string' ? parent : FS.getPath(parent), - name - ) - var mode = FS.getMode(!!input, !!output) - if (!FS.createDevice.major) FS.createDevice.major = 64 - var dev = FS.makedev(FS.createDevice.major++, 0) - FS.registerDevice(dev, { - open: stream => { - stream.seekable = false - }, - close: stream => { - if (output && output.buffer && output.buffer.length) { - output(10) - } - }, - read: (stream, buffer, offset, length, pos) => { - var bytesRead = 0 - for (var i = 0; i < length; i++) { - var result - try { - result = input() - } catch (e) { - throw new FS.ErrnoError(29) - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6) - } - if (result === null || result === undefined) break - bytesRead++ - buffer[offset + i] = result - } - if (bytesRead) { - stream.node.timestamp = Date.now() - } - return bytesRead - }, - write: (stream, buffer, offset, length, pos) => { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset + i]) - } catch (e) { - throw new FS.ErrnoError(29) - } - } - if (length) { - stream.node.timestamp = Date.now() - } - return i - }, - }) - return FS.mkdev(path, mode, dev) - }, - forceLoadFile: obj => { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) - return true - if (typeof XMLHttpRequest != 'undefined') { - throw new Error( - 'Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.' - ) - } else if (read_) { - try { - obj.contents = intArrayFromString(read_(obj.url), true) - obj.usedBytes = obj.contents.length - } catch (e) { - throw new FS.ErrnoError(29) - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.') - } - }, - createLazyFile: (parent, name, url, canRead, canWrite) => { - function LazyUint8Array() { - this.lengthKnown = false - this.chunks = [] - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.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 = (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) - 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 || []) - } - return intArrayFromString(xhr.responseText || '', true) - } - var lazyArray = this - lazyArray.setDataGetter(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(key => { - var fn = node.stream_ops[key] - stream_ops[key] = function forceLoadLazyFile() { - FS.forceLoadFile(node) - return fn.apply(null, arguments) - } - }) - function writeChunks(stream, buffer, offset, length, position) { - 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 < size; i++) { - buffer[offset + i] = contents[position + i] - } - } else { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents.get(position + i) - } - } - return size - } - stream_ops.read = (stream, buffer, offset, length, position) => { - FS.forceLoadFile(node) - return writeChunks(stream, buffer, offset, length, position) - } - stream_ops.mmap = (stream, length, position, prot, flags) => { - FS.forceLoadFile(node) - var ptr = mmapAlloc(length) - if (!ptr) { - throw new FS.ErrnoError(48) - } - writeChunks(stream, HEAP8, ptr, length, position) - return { ptr: ptr, allocated: true } - } - node.stream_ops = stream_ops - return node - }, - createPreloadedFile: ( - parent, - name, - url, - canRead, - canWrite, - onload, - onerror, - dontCreateFile, - canOwn, - preFinish - ) => { - var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent - var dep = getUniqueRunDependency('cp ' + fullname) - function processData(byteArray) { - function finish(byteArray) { - if (preFinish) preFinish() - if (!dontCreateFile) { - FS.createDataFile( - parent, - name, - byteArray, - canRead, - canWrite, - canOwn - ) - } - if (onload) onload() - removeRunDependency(dep) - } - if ( - Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => { - if (onerror) onerror() - removeRunDependency(dep) - }) - ) { - return - } - finish(byteArray) - } - addRunDependency(dep) - if (typeof url == 'string') { - asyncLoad(url, byteArray => processData(byteArray), onerror) - } else { - processData(url) - } - }, - indexedDB: () => { - return ( - window.indexedDB || - window.mozIndexedDB || - window.webkitIndexedDB || - window.msIndexedDB - ) - }, - DB_NAME: () => { - return 'EM_FS_' + window.location.pathname - }, - DB_VERSION: 20, - DB_STORE_NAME: 'FILE_DATA', - saveFilesToDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) - } - openRequest.onupgradeneeded = () => { - out('creating db') - var db = openRequest.result - db.createObjectStore(FS.DB_STORE_NAME) - } - openRequest.onsuccess = () => { - var db = openRequest.result - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite') - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var putRequest = files.put( - FS.analyzePath(path).object.contents, - path - ) - putRequest.onsuccess = () => { - ok++ - if (ok + fail == total) finish() - } - putRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror - } - openRequest.onerror = onerror - }, - loadFilesFromDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) - } - openRequest.onupgradeneeded = onerror - openRequest.onsuccess = () => { - var db = openRequest.result - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly') - } catch (e) { - onerror(e) - return - } - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var getRequest = files.get(path) - getRequest.onsuccess = () => { - if (FS.analyzePath(path).exists) { - FS.unlink(path) - } - FS.createDataFile( - PATH.dirname(path), - PATH.basename(path), - getRequest.result, - true, - true, - true - ) - ok++ - if (ok + fail == total) finish() - } - getRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror - } - openRequest.onerror = onerror - }, - } - var SYSCALLS = { - DEFAULT_POLLMASK: 5, - calculateAt: function(dirfd, path, allowEmpty) { - if (PATH.isAbs(path)) { - return path - } - var dir - if (dirfd === -100) { - dir = FS.cwd() - } else { - var dirstream = SYSCALLS.getStreamFromFD(dirfd) - dir = dirstream.path - } - if (path.length == 0) { - if (!allowEmpty) { - throw new FS.ErrnoError(44) - } - return dir - } - return PATH.join2(dir, path) - }, - doStat: function(func, path, buf) { - try { - var stat = func(path) - } catch (e) { - if ( - e && - e.node && - PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node)) - ) { - return -54 - } - throw e - } - HEAP32[buf >> 2] = stat.dev - HEAP32[(buf + 8) >> 2] = stat.ino - HEAP32[(buf + 12) >> 2] = stat.mode - HEAPU32[(buf + 16) >> 2] = stat.nlink - HEAP32[(buf + 20) >> 2] = stat.uid - HEAP32[(buf + 24) >> 2] = stat.gid - HEAP32[(buf + 28) >> 2] = stat.rdev - ;(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), - ]), - (HEAP32[(buf + 40) >> 2] = tempI64[0]), - (HEAP32[(buf + 44) >> 2] = tempI64[1]) - HEAP32[(buf + 48) >> 2] = 4096 - HEAP32[(buf + 52) >> 2] = stat.blocks - var atime = stat.atime.getTime() - var mtime = stat.mtime.getTime() - var ctime = stat.ctime.getTime() - ;(tempI64 = [ - Math.floor(atime / 1e3) >>> 0, - ((tempDouble = Math.floor(atime / 1e3)), - +Math.abs(tempDouble) >= 1 - ? tempDouble > 0 - ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | - 0) >>> - 0 - : ~~+Math.ceil( - (tempDouble - +(~~tempDouble >>> 0)) / 4294967296 - ) >>> 0 - : 0), - ]), - (HEAP32[(buf + 56) >> 2] = tempI64[0]), - (HEAP32[(buf + 60) >> 2] = tempI64[1]) - HEAPU32[(buf + 64) >> 2] = (atime % 1e3) * 1e3 - ;(tempI64 = [ - Math.floor(mtime / 1e3) >>> 0, - ((tempDouble = Math.floor(mtime / 1e3)), - +Math.abs(tempDouble) >= 1 - ? tempDouble > 0 - ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | - 0) >>> - 0 - : ~~+Math.ceil( - (tempDouble - +(~~tempDouble >>> 0)) / 4294967296 - ) >>> 0 - : 0), - ]), - (HEAP32[(buf + 72) >> 2] = tempI64[0]), - (HEAP32[(buf + 76) >> 2] = tempI64[1]) - HEAPU32[(buf + 80) >> 2] = (mtime % 1e3) * 1e3 - ;(tempI64 = [ - Math.floor(ctime / 1e3) >>> 0, - ((tempDouble = Math.floor(ctime / 1e3)), - +Math.abs(tempDouble) >= 1 - ? tempDouble > 0 - ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | - 0) >>> - 0 - : ~~+Math.ceil( - (tempDouble - +(~~tempDouble >>> 0)) / 4294967296 - ) >>> 0 - : 0), - ]), - (HEAP32[(buf + 88) >> 2] = tempI64[0]), - (HEAP32[(buf + 92) >> 2] = tempI64[1]) - HEAPU32[(buf + 96) >> 2] = (ctime % 1e3) * 1e3 - ;(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), - ]), - (HEAP32[(buf + 104) >> 2] = tempI64[0]), - (HEAP32[(buf + 108) >> 2] = tempI64[1]) - return 0 - }, - doMsync: function(addr, stream, len, flags, offset) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43) - } - if (flags & 2) { - return 0 - } - var buffer = HEAPU8.slice(addr, addr + len) - FS.msync(stream, buffer, offset, len, flags) - }, - varargs: undefined, - get: function() { - SYSCALLS.varargs += 4 - var ret = HEAP32[(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 - }, - } - function ___syscall_fcntl64(fd, cmd, varargs) { - SYSCALLS.varargs = varargs - try { - var stream = SYSCALLS.getStreamFromFD(fd) - switch (cmd) { - case 0: { - var arg = SYSCALLS.get() - if (arg < 0) { - return -28 - } - var newStream - newStream = FS.createStream(stream, arg) - return newStream.fd - } - case 1: - case 2: - return 0 - case 3: - return stream.flags - case 4: { - var arg = SYSCALLS.get() - stream.flags |= arg - return 0 - } - case 5: { - var arg = SYSCALLS.get() - var offset = 0 - HEAP16[(arg + offset) >> 1] = 2 - return 0 - } - case 6: - case 7: - return 0 - case 16: - case 8: - return -28 - case 9: - setErrNo(28) - return -1 - default: { - return -28 - } - } - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return -e.errno - } - } - function ___syscall_getcwd(buf, size) { - try { - if (size === 0) return -28 - var cwd = FS.cwd() - var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1 - if (size < cwdLengthInBytes) return -68 - stringToUTF8(cwd, buf, size) - return cwdLengthInBytes - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return -e.errno - } - } - function ___syscall_ioctl(fd, op, varargs) { - SYSCALLS.varargs = varargs - try { - var stream = SYSCALLS.getStreamFromFD(fd) - switch (op) { - case 21509: - case 21505: { - if (!stream.tty) return -59 - return 0 - } - case 21510: - case 21511: - case 21512: - case 21506: - case 21507: - case 21508: { - if (!stream.tty) return -59 - return 0 - } - case 21519: { - if (!stream.tty) return -59 - var argp = SYSCALLS.get() - HEAP32[argp >> 2] = 0 - return 0 - } - case 21520: { - if (!stream.tty) return -59 - return -28 - } - case 21531: { - var argp = SYSCALLS.get() - return FS.ioctl(stream, op, argp) - } - case 21523: { - if (!stream.tty) return -59 - return 0 - } - case 21524: { - if (!stream.tty) return -59 - return 0 - } - default: - return -28 - } - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return -e.errno - } - } - function ___syscall_openat(dirfd, path, flags, varargs) { - SYSCALLS.varargs = varargs - try { - path = SYSCALLS.getStr(path) - path = SYSCALLS.calculateAt(dirfd, path) - var mode = varargs ? SYSCALLS.get() : 0 - return FS.open(path, flags, mode).fd - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return -e.errno - } - } - function ___syscall_readlinkat(dirfd, path, buf, bufsize) { - try { - path = SYSCALLS.getStr(path) - path = SYSCALLS.calculateAt(dirfd, path) - if (bufsize <= 0) return -28 - var ret = FS.readlink(path) - var len = Math.min(bufsize, lengthBytesUTF8(ret)) - var endChar = HEAP8[buf + len] - stringToUTF8(ret, buf, bufsize + 1) - HEAP8[buf + len] = endChar - return len - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return -e.errno - } - } - function ___syscall_stat64(path, buf) { - try { - path = SYSCALLS.getStr(path) - return SYSCALLS.doStat(FS.stat, path, buf) - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return -e.errno - } - } - function _abort() { - abort('') - } - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.copyWithin(dest, src, src + num) - } - function getHeapMax() { - return 2147483648 - } - function emscripten_realloc_buffer(size) { - try { - wasmMemory.grow((size - buffer.byteLength + 65535) >>> 16) - updateGlobalBufferAndViews(wasmMemory.buffer) - return 1 - } catch (e) {} - } - function _emscripten_resize_heap(requestedSize) { - var oldSize = HEAPU8.length - requestedSize = requestedSize >>> 0 - var maxHeapSize = getHeapMax() - if (requestedSize > maxHeapSize) { - return false - } - let alignUp = (x, multiple) => - x + ((multiple - (x % multiple)) % multiple) - for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { - var overGrownHeapSize = oldSize * (1 + 0.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 - } - var ENV = {} - function getExecutableName() { - return thisProgram || './this.program' - } - 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 - } - function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; ++i) { - HEAP8[buffer++ >> 0] = str.charCodeAt(i) - } - if (!dontAddNull) HEAP8[buffer >> 0] = 0 - } - function _environ_get(__environ, environ_buf) { - var bufSize = 0 - getEnvStrings().forEach(function(string, i) { - var ptr = environ_buf + bufSize - HEAPU32[(__environ + i * 4) >> 2] = ptr - writeAsciiToMemory(string, ptr) - bufSize += string.length + 1 - }) - return 0 - } - function _environ_sizes_get(penviron_count, penviron_buf_size) { - var strings = getEnvStrings() - HEAPU32[penviron_count >> 2] = strings.length - var bufSize = 0 - strings.forEach(function(string) { - bufSize += string.length + 1 - }) - HEAPU32[penviron_buf_size >> 2] = bufSize - return 0 - } - function _proc_exit(code) { - EXITSTATUS = code - if (!keepRuntimeAlive()) { - if (Module['onExit']) Module['onExit'](code) - ABORT = true - } - quit_(code, new ExitStatus(code)) - } - function exitJS(status, implicit) { - EXITSTATUS = status - _proc_exit(status) - } - var _exit = exitJS - function _fd_close(fd) { - try { - var stream = SYSCALLS.getStreamFromFD(fd) - FS.close(stream) - return 0 - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return e.errno - } - } - function doReadv(stream, iov, iovcnt, offset) { - var ret = 0 - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] - iov += 8 - var curr = FS.read(stream, HEAP8, ptr, len, offset) - if (curr < 0) return -1 - ret += curr - if (curr < len) break - } - return ret - } - function _fd_read(fd, iov, iovcnt, pnum) { - try { - var stream = SYSCALLS.getStreamFromFD(fd) - var num = doReadv(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num - return 0 - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return e.errno - } - } - function convertI32PairToI53Checked(lo, hi) { - return (hi + 2097152) >>> 0 < 4194305 - !!lo - ? (lo >>> 0) + hi * 4294967296 - : NaN - } - function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { - try { - var offset = convertI32PairToI53Checked(offset_low, offset_high) - if (isNaN(offset)) return 61 - var stream = SYSCALLS.getStreamFromFD(fd) - 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), - ]), - (HEAP32[newOffset >> 2] = tempI64[0]), - (HEAP32[(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)) throw e - return e.errno - } - } - function doWritev(stream, iov, iovcnt, offset) { - var ret = 0 - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] - iov += 8 - var curr = FS.write(stream, HEAP8, ptr, len, offset) - if (curr < 0) return -1 - ret += curr - } - return ret - } - function _fd_write(fd, iov, iovcnt, pnum) { - try { - var stream = SYSCALLS.getStreamFromFD(fd) - var num = doWritev(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num - return 0 - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return e.errno - } - } - function __isLeapYear(year) { - return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) - } - function __arraySum(array, index) { - var sum = 0 - for (var i = 0; i <= index; sum += array[i++]) {} - return sum - } - var __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - var __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - 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 - } - function writeArrayToMemory(array, buffer) { - HEAP8.set(array, buffer) - } - function _strftime(s, maxsize, format, tm) { - var tm_zone = HEAP32[(tm + 40) >> 2] - var date = { - tm_sec: HEAP32[tm >> 2], - tm_min: HEAP32[(tm + 4) >> 2], - tm_hour: HEAP32[(tm + 8) >> 2], - tm_mday: HEAP32[(tm + 12) >> 2], - tm_mon: HEAP32[(tm + 16) >> 2], - tm_year: HEAP32[(tm + 20) >> 2], - tm_wday: HEAP32[(tm + 24) >> 2], - tm_yday: HEAP32[(tm + 28) >> 2], - tm_isdst: HEAP32[(tm + 32) >> 2], - tm_gmtoff: HEAP32[(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.length < digits) { - str = character[0] + str - } - return str - } - function leadingNulls(value, digits) { - return leadingSomething(value, digits, '0') - } - function compareByDay(date1, date2) { - function sgn(value) { - return value < 0 ? -1 : value > 0 ? 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 - } - return thisDate.getFullYear() - } - 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' - } - 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 days = date.tm_yday + 7 - date.tm_wday - return leadingNulls(Math.floor(days / 7), 2) - }, - '%V': function(date) { - var val = Math.floor( - (date.tm_yday + 7 - ((date.tm_wday + 6) % 7)) / 7 - ) - if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) { - val++ - } - if (!val) { - val = 52 - var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7 - if ( - dec31 == 4 || - (dec31 == 5 && __isLeapYear((date.tm_year % 400) - 1)) - ) { - val++ - } - } else if (val == 53) { - var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7 - if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1 - } - return leadingNulls(val, 2) - }, - '%w': function(date) { - return date.tm_wday - }, - '%W': function(date) { - var days = date.tm_yday + 7 - ((date.tm_wday + 6) % 7) - return leadingNulls(Math.floor(days / 7), 2) - }, - '%y': function(date) { - return (date.tm_year + 1900).toString().substring(2) - }, - '%Y': function(date) { - return date.tm_year + 1900 - }, - '%z': function(date) { - var off = date.tm_gmtoff - var ahead = off >= 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 '%' - }, - } - pattern = pattern.replace(/%%/g, '\0\0') - for (var rule in EXPANSION_RULES_2) { - if (pattern.includes(rule)) { - pattern = pattern.replace( - new RegExp(rule, 'g'), - EXPANSION_RULES_2[rule](date) - ) - } - } - pattern = pattern.replace(/\0\0/g, '%') - var bytes = intArrayFromString(pattern, false) - if (bytes.length > maxsize) { - return 0 - } - writeArrayToMemory(bytes, s) - return bytes.length - 1 - } - function _strftime_l(s, maxsize, format, tm, loc) { - return _strftime(s, maxsize, format, tm) - } - function handleException(e) { - if (e instanceof ExitStatus || e == 'unwind') { - return EXITSTATUS - } - quit_(1, e) - } - function allocateUTF8OnStack(str) { - var size = lengthBytesUTF8(str) + 1 - var ret = stackAlloc(size) - stringToUTF8Array(str, HEAP8, ret, size) - return ret - } - function getCFunc(ident) { - var func = Module['_' + ident] - return func - } - function ccall(ident, returnType, argTypes, args, opts) { - var toC = { - string: str => { - var ret = 0 - if (str !== null && str !== undefined && str !== 0) { - var len = (str.length << 2) + 1 - ret = stackAlloc(len) - stringToUTF8(str, ret, len) - } - return ret - }, - array: arr => { - var ret = stackAlloc(arr.length) - writeArrayToMemory(arr, ret) - return ret - }, - } - function convertReturnValue(ret) { - if (returnType === 'string') { - return UTF8ToString(ret) - } - if (returnType === 'boolean') return Boolean(ret) - return ret - } - var func = getCFunc(ident) - var cArgs = [] - var stack = 0 - if (args) { - for (var i = 0; i < args.length; i++) { - var converter = toC[argTypes[i]] - if (converter) { - if (stack === 0) stack = stackSave() - cArgs[i] = converter(args[i]) - } else { - cArgs[i] = args[i] - } - } - } - var ret = func.apply(null, cArgs) - function onDone(ret) { - if (stack !== 0) stackRestore(stack) - return convertReturnValue(ret) - } - ret = onDone(ret) - return ret - } - function cwrap(ident, returnType, argTypes, opts) { - argTypes = argTypes || [] - var numericArgs = argTypes.every( - type => type === 'number' || type === 'boolean' - ) - var numericRet = returnType !== 'string' - if (numericRet && numericArgs && !opts) { - return getCFunc(ident) - } - return function() { - return ccall(ident, returnType, argTypes, arguments, opts) - } - } - function AsciiToString(ptr) { - var str = '' - while (1) { - var ch = HEAPU8[ptr++ >> 0] - if (!ch) return str - str += String.fromCharCode(ch) - } - } - 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() - Module['FS_createPath'] = FS.createPath - Module['FS_createDataFile'] = FS.createDataFile - Module['FS_createPreloadedFile'] = FS.createPreloadedFile - Module['FS_unlink'] = FS.unlink - Module['FS_createLazyFile'] = FS.createLazyFile - Module['FS_createDevice'] = FS.createDevice - if (ENVIRONMENT_IS_NODE) { - NODEFS.staticInit() - } - ERRNO_CODES = { - EPERM: 63, - ENOENT: 44, - ESRCH: 71, - EINTR: 27, - EIO: 29, - ENXIO: 60, - E2BIG: 1, - ENOEXEC: 45, - EBADF: 8, - ECHILD: 12, - EAGAIN: 6, - EWOULDBLOCK: 6, - ENOMEM: 48, - EACCES: 2, - EFAULT: 21, - ENOTBLK: 105, - EBUSY: 10, - EEXIST: 20, - EXDEV: 75, - ENODEV: 43, - ENOTDIR: 54, - EISDIR: 31, - EINVAL: 28, - ENFILE: 41, - EMFILE: 33, - ENOTTY: 59, - ETXTBSY: 74, - EFBIG: 22, - ENOSPC: 51, - ESPIPE: 70, - EROFS: 69, - EMLINK: 34, - EPIPE: 64, - EDOM: 18, - ERANGE: 68, - ENOMSG: 49, - EIDRM: 24, - ECHRNG: 106, - EL2NSYNC: 156, - EL3HLT: 107, - EL3RST: 108, - ELNRNG: 109, - EUNATCH: 110, - ENOCSI: 111, - EL2HLT: 112, - EDEADLK: 16, - ENOLCK: 46, - EBADE: 113, - EBADR: 114, - EXFULL: 115, - ENOANO: 104, - EBADRQC: 103, - EBADSLT: 102, - EDEADLOCK: 16, - EBFONT: 101, - ENOSTR: 100, - ENODATA: 116, - ETIME: 117, - ENOSR: 118, - ENONET: 119, - ENOPKG: 120, - EREMOTE: 121, - ENOLINK: 47, - EADV: 122, - ESRMNT: 123, - ECOMM: 124, - EPROTO: 65, - EMULTIHOP: 36, - EDOTDOT: 125, - EBADMSG: 9, - ENOTUNIQ: 126, - EBADFD: 127, - EREMCHG: 128, - ELIBACC: 129, - ELIBBAD: 130, - ELIBSCN: 131, - ELIBMAX: 132, - ELIBEXEC: 133, - ENOSYS: 52, - ENOTEMPTY: 55, - ENAMETOOLONG: 37, - ELOOP: 32, - EOPNOTSUPP: 138, - EPFNOSUPPORT: 139, - ECONNRESET: 15, - ENOBUFS: 42, - EAFNOSUPPORT: 5, - EPROTOTYPE: 67, - ENOTSOCK: 57, - ENOPROTOOPT: 50, - ESHUTDOWN: 140, - ECONNREFUSED: 14, - EADDRINUSE: 3, - ECONNABORTED: 13, - ENETUNREACH: 40, - ENETDOWN: 38, - ETIMEDOUT: 73, - EHOSTDOWN: 142, - EHOSTUNREACH: 23, - EINPROGRESS: 26, - EALREADY: 7, - EDESTADDRREQ: 17, - EMSGSIZE: 35, - EPROTONOSUPPORT: 66, - ESOCKTNOSUPPORT: 137, - EADDRNOTAVAIL: 4, - ENETRESET: 39, - EISCONN: 30, - ENOTCONN: 53, - ETOOMANYREFS: 141, - EUSERS: 136, - EDQUOT: 19, - ESTALE: 72, - ENOTSUP: 138, - ENOMEDIUM: 148, - EILSEQ: 25, - EOVERFLOW: 61, - ECANCELED: 11, - ENOTRECOVERABLE: 56, - EOWNERDEAD: 62, - ESTRPIPE: 135, - } - var asmLibraryArg = { - a: ___cxa_throw, - d: ___syscall_fcntl64, - r: ___syscall_getcwd, - i: ___syscall_ioctl, - j: ___syscall_openat, - n: ___syscall_readlinkat, - o: ___syscall_stat64, - b: _abort, - f: _emscripten_memcpy_big, - m: _emscripten_resize_heap, - p: _environ_get, - q: _environ_sizes_get, - c: _exit, - e: _fd_close, - h: _fd_read, - k: _fd_seek, - g: _fd_write, - l: _strftime_l, - } - var asm = createWasm() - var ___wasm_call_ctors = (Module['___wasm_call_ctors'] = function() { - return (___wasm_call_ctors = Module['___wasm_call_ctors'] = - Module['asm']['t']).apply(null, arguments) - }) - var _main = (Module['_main'] = function() { - return (_main = Module['_main'] = Module['asm']['u']).apply( - null, - arguments - ) - }) - var ___errno_location = (Module['___errno_location'] = function() { - return (___errno_location = Module['___errno_location'] = - Module['asm']['v']).apply(null, arguments) - }) - var _itk_wasm_input_array_alloc = (Module[ - '_itk_wasm_input_array_alloc' - ] = function() { - return (_itk_wasm_input_array_alloc = Module[ - '_itk_wasm_input_array_alloc' - ] = Module['asm']['w']).apply(null, arguments) - }) - var _itk_wasm_input_json_alloc = (Module[ - '_itk_wasm_input_json_alloc' - ] = function() { - return (_itk_wasm_input_json_alloc = Module[ - '_itk_wasm_input_json_alloc' - ] = Module['asm']['x']).apply(null, arguments) - }) - var _itk_wasm_output_json_address = (Module[ - '_itk_wasm_output_json_address' - ] = function() { - return (_itk_wasm_output_json_address = Module[ - '_itk_wasm_output_json_address' - ] = Module['asm']['y']).apply(null, arguments) - }) - var _itk_wasm_output_json_size = (Module[ - '_itk_wasm_output_json_size' - ] = function() { - return (_itk_wasm_output_json_size = Module[ - '_itk_wasm_output_json_size' - ] = Module['asm']['z']).apply(null, arguments) - }) - var _itk_wasm_output_array_address = (Module[ - '_itk_wasm_output_array_address' - ] = function() { - return (_itk_wasm_output_array_address = Module[ - '_itk_wasm_output_array_address' - ] = Module['asm']['A']).apply(null, arguments) - }) - var _itk_wasm_output_array_size = (Module[ - '_itk_wasm_output_array_size' - ] = function() { - return (_itk_wasm_output_array_size = Module[ - '_itk_wasm_output_array_size' - ] = Module['asm']['B']).apply(null, arguments) - }) - var _itk_wasm_free_all = (Module['_itk_wasm_free_all'] = function() { - return (_itk_wasm_free_all = Module['_itk_wasm_free_all'] = - Module['asm']['C']).apply(null, arguments) - }) - var stackSave = (Module['stackSave'] = function() { - return (stackSave = Module['stackSave'] = Module['asm']['E']).apply( - null, - arguments - ) - }) - var stackRestore = (Module['stackRestore'] = function() { - return (stackRestore = Module['stackRestore'] = Module['asm']['F']).apply( - null, - arguments - ) - }) - var stackAlloc = (Module['stackAlloc'] = function() { - return (stackAlloc = Module['stackAlloc'] = Module['asm']['G']).apply( - null, - arguments - ) - }) - var ___cxa_is_pointer_type = (Module[ - '___cxa_is_pointer_type' - ] = function() { - return (___cxa_is_pointer_type = Module['___cxa_is_pointer_type'] = - Module['asm']['H']).apply(null, arguments) - }) - Module['addRunDependency'] = addRunDependency - Module['removeRunDependency'] = removeRunDependency - Module['FS_createPath'] = FS.createPath - Module['FS_createDataFile'] = FS.createDataFile - Module['FS_createPreloadedFile'] = FS.createPreloadedFile - Module['FS_createLazyFile'] = FS.createLazyFile - Module['FS_createDevice'] = FS.createDevice - Module['FS_unlink'] = FS.unlink - Module['callMain'] = callMain - Module['ccall'] = ccall - Module['cwrap'] = cwrap - Module['AsciiToString'] = AsciiToString - Module['writeArrayToMemory'] = writeArrayToMemory - Module['writeAsciiToMemory'] = writeAsciiToMemory - var calledRun - dependenciesFulfilled = function runCaller() { - if (!calledRun) run() - if (!calledRun) dependenciesFulfilled = runCaller - } - function callMain(args) { - var entryFunction = Module['_main'] - args = args || [] - args.unshift(thisProgram) - var argc = args.length - var argv = stackAlloc((argc + 1) * 4) - var argv_ptr = argv >> 2 - args.forEach(arg => { - HEAP32[argv_ptr++] = allocateUTF8OnStack(arg) - }) - HEAP32[argv_ptr] = 0 - try { - var ret = entryFunction(argc, argv) - exitJS(ret, true) - return ret - } catch (e) { - return handleException(e) - } - } - function run(args) { - args = args || arguments_ - if (runDependencies > 0) { - 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() - } - } - if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') - Module['preInit'] = [Module['preInit']] - while (Module['preInit'].length > 0) { - Module['preInit'].pop()() - } - } - var shouldRunNow = false - if (Module['noInitialRun']) shouldRunNow = false - run() - Module.mountContainingDir = function(filePath) { - if (!ENVIRONMENT_IS_NODE) { - return - } - var path = require('path') - var containingDir = path.dirname(filePath) - if (FS.isDir(containingDir) || containingDir === '/') { - return - } - var currentDir = '/' - var splitContainingDir = containingDir.split(path.sep) - for (var ii = 1; ii < splitContainingDir.length; ii++) { - currentDir += splitContainingDir[ii] - if (!FS.analyzePath(currentDir).exists) { - FS.mkdir(currentDir) - } - currentDir += '/' - } - FS.mount(NODEFS, { root: containingDir }, currentDir) - return currentDir + path.basename(filePath) - } - Module.unmountContainingDir = function(filePath) { - if (!ENVIRONMENT_IS_NODE) { - return - } - var path = require('path') - var containingDir = path.dirname(filePath) - FS.unmount(containingDir) - } - Module.fs_mkdirs = function(dirs) { - var currentDir = '/' - var splitDirs = dirs.split('/') - for (var ii = 1; ii < splitDirs.length; ++ii) { - currentDir += splitDirs[ii] - if (!FS.analyzePath(currentDir).exists) { - FS.mkdir(currentDir) - } - currentDir += '/' - } - } - Module.fs_readFile = function(path, opts) { - return FS.readFile(path, opts) - } - Module.fs_writeFile = function(path, data, opts) { - return FS.writeFile(path, data, opts) - } - Module.fs_unlink = function(path) { - return FS.unlink(path) - } - Module.fs_open = function(path, flags, mode) { - return FS.open(path, flags, mode) - } - Module.fs_stat = function(path) { - return FS.stat(path) - } - Module.fs_read = function(stream, buffer, offset, length, position) { - return FS.read(stream, buffer, offset, length, position) - } - Module.fs_close = function(stream) { - return FS.close(stream) - } - - return DownsampleLabelImage.ready - } -})() -if (typeof exports === 'object' && typeof module === 'object') - module.exports = DownsampleLabelImage -else if (typeof define === 'function' && define['amd']) - define([], function() { - return DownsampleLabelImage - }) -else if (typeof exports === 'object') - exports['DownsampleLabelImage'] = DownsampleLabelImage diff --git a/src/IO/Downsample/emscripten-build/DownsampleLabelImage.umd.wasm b/src/IO/Downsample/emscripten-build/DownsampleLabelImage.umd.wasm deleted file mode 100755 index 7248e463c..000000000 Binary files a/src/IO/Downsample/emscripten-build/DownsampleLabelImage.umd.wasm and /dev/null differ diff --git a/src/IO/Downsample/emscripten-build/DownsampleLabelImage.wasm b/src/IO/Downsample/emscripten-build/DownsampleLabelImage.wasm index 7248e463c..086cd49d4 100755 Binary files a/src/IO/Downsample/emscripten-build/DownsampleLabelImage.wasm and b/src/IO/Downsample/emscripten-build/DownsampleLabelImage.wasm differ diff --git a/src/IO/Downsample/emscripten-build/DownsampleLabelImage.wasm.zst b/src/IO/Downsample/emscripten-build/DownsampleLabelImage.wasm.zst new file mode 100755 index 000000000..b0d52c077 Binary files /dev/null and b/src/IO/Downsample/emscripten-build/DownsampleLabelImage.wasm.zst differ diff --git a/src/IO/Downsample/package-lock.json b/src/IO/Downsample/package-lock.json index 290497d9f..caa92b9e0 100644 --- a/src/IO/Downsample/package-lock.json +++ b/src/IO/Downsample/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "commander": "^9.1.0", "itk-image-io": "^1.0.0-b.84", - "itk-wasm": "^1.0.0-b.84" + "itk-wasm": "^1.0.0-b.158" }, "devDependencies": { "cypress": "^13.2.0", @@ -106,9 +106,9 @@ "dev": true }, "node_modules/@thewtex/zstddec": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@thewtex/zstddec/-/zstddec-0.1.2.tgz", - "integrity": "sha512-Bv50pouFqlmIZDcAA2Nrpk9tjJpAPlqHHeD5h0noK+oNXMimrZ/hMbJK2N09Svr6TI/S6nT63dzkWoim4ZzTuw==" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@thewtex/zstddec/-/zstddec-0.2.0.tgz", + "integrity": "sha512-lIS+smrfa48WGlDVQSQSm0jBnwVp5XmfGJWU9q0J0fRFY9ohzK4s27Zg2SFMb1NWMp9RiANAdK+/q86EBGWR1Q==" }, "node_modules/@types/emscripten": { "version": "1.39.7", @@ -580,6 +580,11 @@ "node": ">= 0.8" } }, + "node_modules/comlink": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.1.tgz", + "integrity": "sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==" + }, "node_modules/commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", @@ -1426,7 +1431,38 @@ "itk-wasm": "1.0.0-b.138" } }, - "node_modules/itk-wasm": { + "node_modules/itk-image-io/node_modules/@thewtex/zstddec": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@thewtex/zstddec/-/zstddec-0.1.2.tgz", + "integrity": "sha512-Bv50pouFqlmIZDcAA2Nrpk9tjJpAPlqHHeD5h0noK+oNXMimrZ/hMbJK2N09Svr6TI/S6nT63dzkWoim4ZzTuw==" + }, + "node_modules/itk-image-io/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/itk-image-io/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/itk-image-io/node_modules/itk-wasm": { "version": "1.0.0-b.138", "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.138.tgz", "integrity": "sha512-LRU62u+KznDMeopAQzVB+aatVmZ1D8owm3htOHe6QRYRv3mkZJpvFTkdw+4lgpHpFf2Zcvnz2XgjDOv3c+ggcw==", @@ -1447,6 +1483,38 @@ "itk-wasm": "src/itk-wasm-cli.js" } }, + "node_modules/itk-image-io/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/itk-wasm": { + "version": "1.0.0-b.158", + "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.158.tgz", + "integrity": "sha512-IHRmwu1zxLmH9auF7kN3BREbom9NGorVhK1g4TRNsr4qRbuHZsZ3RsGRNVqWI2LZamo3Rw9sDYrM7NMA5x0dqQ==", + "dependencies": { + "@babel/runtime": "^7.15.4", + "@thewtex/zstddec": "^0.2.0", + "@types/emscripten": "^1.39.6", + "axios": "^1.4.0", + "comlink": "^4.4.1", + "commander": "^9.4.0", + "fs-extra": "^10.0.0", + "glob": "^8.1.0", + "markdown-table": "^3.0.3", + "mime-types": "^2.1.35", + "wasm-feature-detect": "^1.5.1" + }, + "bin": { + "itk-wasm": "src/itk-wasm-cli.js" + } + }, "node_modules/itk-wasm/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -2654,9 +2722,9 @@ "dev": true }, "@thewtex/zstddec": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@thewtex/zstddec/-/zstddec-0.1.2.tgz", - "integrity": "sha512-Bv50pouFqlmIZDcAA2Nrpk9tjJpAPlqHHeD5h0noK+oNXMimrZ/hMbJK2N09Svr6TI/S6nT63dzkWoim4ZzTuw==" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@thewtex/zstddec/-/zstddec-0.2.0.tgz", + "integrity": "sha512-lIS+smrfa48WGlDVQSQSm0jBnwVp5XmfGJWU9q0J0fRFY9ohzK4s27Zg2SFMb1NWMp9RiANAdK+/q86EBGWR1Q==" }, "@types/emscripten": { "version": "1.39.7", @@ -3005,6 +3073,11 @@ "delayed-stream": "~1.0.0" } }, + "comlink": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.1.tgz", + "integrity": "sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==" + }, "commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", @@ -3643,24 +3716,77 @@ "integrity": "sha512-Bq2aE9EWWd+CLJHqEmDg0s93YWR5TGv2qQ0pNkqe5JfK6OEw+u6NKpZUg2wxXOHHiGrHrVVLMl2uGHK0UgMNMw==", "requires": { "itk-wasm": "1.0.0-b.138" + }, + "dependencies": { + "@thewtex/zstddec": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@thewtex/zstddec/-/zstddec-0.1.2.tgz", + "integrity": "sha512-Bv50pouFqlmIZDcAA2Nrpk9tjJpAPlqHHeD5h0noK+oNXMimrZ/hMbJK2N09Svr6TI/S6nT63dzkWoim4ZzTuw==" + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "itk-wasm": { + "version": "1.0.0-b.138", + "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.138.tgz", + "integrity": "sha512-LRU62u+KznDMeopAQzVB+aatVmZ1D8owm3htOHe6QRYRv3mkZJpvFTkdw+4lgpHpFf2Zcvnz2XgjDOv3c+ggcw==", + "requires": { + "@babel/runtime": "^7.15.4", + "@thewtex/zstddec": "^0.1.2", + "@types/emscripten": "^1.39.6", + "axios": "^1.4.0", + "commander": "^9.4.0", + "fs-extra": "^10.0.0", + "glob": "^8.1.0", + "markdown-table": "^3.0.3", + "mime-types": "^2.1.35", + "wasm-feature-detect": "^1.5.1", + "webworker-promise": "^0.4.2" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "itk-wasm": { - "version": "1.0.0-b.138", - "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.138.tgz", - "integrity": "sha512-LRU62u+KznDMeopAQzVB+aatVmZ1D8owm3htOHe6QRYRv3mkZJpvFTkdw+4lgpHpFf2Zcvnz2XgjDOv3c+ggcw==", + "version": "1.0.0-b.158", + "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.158.tgz", + "integrity": "sha512-IHRmwu1zxLmH9auF7kN3BREbom9NGorVhK1g4TRNsr4qRbuHZsZ3RsGRNVqWI2LZamo3Rw9sDYrM7NMA5x0dqQ==", "requires": { "@babel/runtime": "^7.15.4", - "@thewtex/zstddec": "^0.1.2", + "@thewtex/zstddec": "^0.2.0", "@types/emscripten": "^1.39.6", "axios": "^1.4.0", + "comlink": "^4.4.1", "commander": "^9.4.0", "fs-extra": "^10.0.0", "glob": "^8.1.0", "markdown-table": "^3.0.3", "mime-types": "^2.1.35", - "wasm-feature-detect": "^1.5.1", - "webworker-promise": "^0.4.2" + "wasm-feature-detect": "^1.5.1" }, "dependencies": { "brace-expansion": { diff --git a/src/IO/Downsample/package.json b/src/IO/Downsample/package.json index c53ad93a5..d439559a6 100644 --- a/src/IO/Downsample/package.json +++ b/src/IO/Downsample/package.json @@ -31,7 +31,7 @@ "dependencies": { "commander": "^9.1.0", "itk-image-io": "^1.0.0-b.84", - "itk-wasm": "^1.0.0-b.84" + "itk-wasm": "^1.0.0-b.158" }, "devDependencies": { "cypress": "^13.2.0", diff --git a/src/IO/InMemoryMultiscaleSpatialImage.js b/src/IO/InMemoryMultiscaleSpatialImage.js index 802ef0c0d..cbf238053 100644 --- a/src/IO/InMemoryMultiscaleSpatialImage.js +++ b/src/IO/InMemoryMultiscaleSpatialImage.js @@ -11,6 +11,7 @@ import { imageSharedBufferOrCopy, stackImages, } from 'itk-wasm' +import itkConfig from '../itkConfig.js' import { chunkArray, CXYZT, orderBy, toDimensionMap } from './dimensionUtils' import { computeRanges } from './Analyze/computeRanges' @@ -246,6 +247,10 @@ class InMemoryMultiscaleSpatialImage extends MultiscaleSpatialImage { }) const downsampleTaskArgs = [] + const options = { + pipelineWorkerUrl: itkConfig.pipelineWorkerUrl, + pipelineBaseUrl: itkConfig.pipelinesUrl, + } for (let index = 0; index < maxTotalSplits; index++) { const data = imageSharedBufferOrCopy(currentImage) const inputs = [ @@ -271,7 +276,13 @@ class InMemoryMultiscaleSpatialImage extends MultiscaleSpatialImage { '' + maxTotalSplits, '--memory-io', ] - downsampleTaskArgs.push([pipelinePath, args, desiredOutputs, inputs]) + downsampleTaskArgs.push([ + pipelinePath, + args, + desiredOutputs, + inputs, + options, + ]) } const results = await downsampleWorkerPool.runTasks(downsampleTaskArgs) .promise diff --git a/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.js b/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.js index f0e04a42d..9a14e7bac 100644 --- a/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.js +++ b/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.js @@ -1,9 +1,7 @@ var ResampleLabelImage = (() => { var _scriptDir = import.meta.url - return async function(ResampleLabelImage) { - ResampleLabelImage = ResampleLabelImage || {} - + return async function(ResampleLabelImage = {}) { var Module = typeof ResampleLabelImage != 'undefined' ? ResampleLabelImage : {} var readyPromiseResolve, readyPromiseReject @@ -53,11 +51,6 @@ var ResampleLabelImage = (() => { return scriptDirectory + path } var read_, readAsync, readBinary, setWindowTitle - function logExceptionOnExit(e) { - if (e instanceof ExitStatus) return - let toLog = e - err('exiting due to exception: ' + toLog) - } if (ENVIRONMENT_IS_NODE) { const { createRequire: createRequire } = await import('module') var require = createRequire(import.meta.url) @@ -92,25 +85,13 @@ var ResampleLabelImage = (() => { else onload(data.buffer) }) } - if (process['argv'].length > 1) { - thisProgram = process['argv'][1].replace(/\\/g, '/') + if (!Module['thisProgram'] && process.argv.length > 1) { + thisProgram = process.argv[1].replace(/\\/g, '/') } - arguments_ = process['argv'].slice(2) - process['on']('uncaughtException', function(ex) { - if (!(ex instanceof ExitStatus)) { - throw ex - } - }) - process['on']('unhandledRejection', function(reason) { - throw reason - }) + arguments_ = process.argv.slice(2) quit_ = (status, toThrow) => { - if (keepRuntimeAlive()) { - process['exitCode'] = status - throw toThrow - } - logExceptionOnExit(toThrow) - process['exit'](status) + process.exitCode = status + throw toThrow } Module['inspect'] = function() { return '[Emscripten Module object]' @@ -187,131 +168,27 @@ var ResampleLabelImage = (() => { abort(text) } } - var UTF8Decoder = - typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined - function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { - var endIdx = idx + maxBytesToRead - var endPtr = idx - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)) - } - var str = '' - while (idx < endPtr) { - var u0 = heapOrArray[idx++] - if (!(u0 & 128)) { - str += String.fromCharCode(u0) - continue - } - var u1 = heapOrArray[idx++] & 63 - if ((u0 & 224) == 192) { - str += String.fromCharCode(((u0 & 31) << 6) | u1) - continue - } - var u2 = heapOrArray[idx++] & 63 - if ((u0 & 240) == 224) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2 - } else { - u0 = - ((u0 & 7) << 18) | - (u1 << 12) | - (u2 << 6) | - (heapOrArray[idx++] & 63) - } - if (u0 < 65536) { - str += String.fromCharCode(u0) - } else { - var ch = u0 - 65536 - str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)) - } - } - return str - } - function UTF8ToString(ptr, maxBytesToRead) { - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : '' + var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64 + function updateMemoryViews() { + var b = wasmMemory.buffer + Module['HEAP8'] = HEAP8 = new Int8Array(b) + Module['HEAP16'] = HEAP16 = new Int16Array(b) + Module['HEAP32'] = HEAP32 = new Int32Array(b) + Module['HEAPU8'] = HEAPU8 = new Uint8Array(b) + Module['HEAPU16'] = HEAPU16 = new Uint16Array(b) + Module['HEAPU32'] = HEAPU32 = new Uint32Array(b) + Module['HEAPF32'] = HEAPF32 = new Float32Array(b) + Module['HEAPF64'] = HEAPF64 = new Float64Array(b) } - function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { - if (!(maxBytesToWrite > 0)) return 0 - var startIdx = outIdx - var endIdx = outIdx + maxBytesToWrite - 1 - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i) - if (u >= 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, HEAPU8, outPtr, maxBytesToWrite) - } - function lengthBytesUTF8(str) { - var len = 0 - for (var i = 0; i < str.length; ++i) { - var c = str.charCodeAt(i) - if (c <= 127) { - len++ - } else if (c <= 2047) { - len += 2 - } else if (c >= 55296 && c <= 57343) { - len += 4 - ++i - } else { - len += 3 - } - } - return len - } - var buffer, - HEAP8, - HEAPU8, - HEAP16, - HEAPU16, - HEAP32, - HEAPU32, - HEAPF32, - HEAPF64 - 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 var wasmTable var __ATPRERUN__ = [] var __ATINIT__ = [] var __ATMAIN__ = [] var __ATPOSTRUN__ = [] var runtimeInitialized = false + var runtimeKeepaliveCounter = 0 function keepRuntimeAlive() { - return noExitRuntime + return noExitRuntime || runtimeKeepaliveCounter > 0 } function preRun() { if (Module['preRun']) { @@ -423,26 +300,24 @@ var ResampleLabelImage = (() => { abort(err) } } - function getBinaryPromise() { + function getBinaryPromise(binaryFile) { if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { - if (typeof fetch == 'function' && !isFileURI(wasmBinaryFile)) { - return fetch(wasmBinaryFile, { credentials: 'same-origin' }) + if (typeof fetch == 'function' && !isFileURI(binaryFile)) { + return fetch(binaryFile, { credentials: 'same-origin' }) .then(function(response) { if (!response['ok']) { - throw "failed to load wasm binary file at '" + - wasmBinaryFile + - "'" + throw "failed to load wasm binary file at '" + binaryFile + "'" } return response['arrayBuffer']() }) .catch(function() { - return getBinary(wasmBinaryFile) + return getBinary(binaryFile) }) } else { if (readAsync) { return new Promise(function(resolve, reject) { readAsync( - wasmBinaryFile, + binaryFile, function(response) { resolve(new Uint8Array(response)) }, @@ -453,70 +328,75 @@ var ResampleLabelImage = (() => { } } return Promise.resolve().then(function() { - return getBinary(wasmBinaryFile) + return getBinary(binaryFile) }) } + function instantiateArrayBuffer(binaryFile, imports, receiver) { + return getBinaryPromise(binaryFile) + .then(function(binary) { + return WebAssembly.instantiate(binary, imports) + }) + .then(function(instance) { + return instance + }) + .then(receiver, function(reason) { + err('failed to asynchronously prepare wasm: ' + reason) + abort(reason) + }) + } + function instantiateAsync(binary, binaryFile, imports, callback) { + if ( + !binary && + typeof WebAssembly.instantiateStreaming == 'function' && + !isDataURI(binaryFile) && + !isFileURI(binaryFile) && + !ENVIRONMENT_IS_NODE && + typeof fetch == 'function' + ) { + return fetch(binaryFile, { credentials: 'same-origin' }).then(function( + response + ) { + var result = WebAssembly.instantiateStreaming(response, imports) + return result.then(callback, function(reason) { + err('wasm streaming compile failed: ' + reason) + err('falling back to ArrayBuffer instantiation') + return instantiateArrayBuffer(binaryFile, imports, callback) + }) + }) + } else { + return instantiateArrayBuffer(binaryFile, imports, callback) + } + } function createWasm() { - var info = { a: asmLibraryArg } + var info = { a: wasmImports } function receiveInstance(instance, module) { var exports = instance.exports Module['asm'] = exports wasmMemory = Module['asm']['s'] - updateGlobalBufferAndViews(wasmMemory.buffer) + updateMemoryViews() wasmTable = Module['asm']['D'] addOnInit(Module['asm']['t']) removeRunDependency('wasm-instantiate') + return exports } addRunDependency('wasm-instantiate') function receiveInstantiationResult(result) { receiveInstance(result['instance']) } - 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) && - !isFileURI(wasmBinaryFile) && - !ENVIRONMENT_IS_NODE && - 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 + return Module['instantiateWasm'](info, receiveInstance) } catch (e) { err('Module.instantiateWasm callback failed with error: ' + e) readyPromiseReject(e) } } - instantiateAsync().catch(readyPromiseReject) + instantiateAsync( + wasmBinary, + wasmBinaryFile, + info, + receiveInstantiationResult + ).catch(readyPromiseReject) return {} } var tempDouble @@ -535,33 +415,33 @@ var ResampleLabelImage = (() => { this.excPtr = excPtr this.ptr = excPtr - 24 this.set_type = function(type) { - HEAPU32[(this.ptr + 4) >> 2] = type + HEAPU32[(this.ptr + 4) >>> 2] = type } this.get_type = function() { - return HEAPU32[(this.ptr + 4) >> 2] + return HEAPU32[(this.ptr + 4) >>> 2] } this.set_destructor = function(destructor) { - HEAPU32[(this.ptr + 8) >> 2] = destructor + HEAPU32[(this.ptr + 8) >>> 2] = destructor } this.get_destructor = function() { - return HEAPU32[(this.ptr + 8) >> 2] + return HEAPU32[(this.ptr + 8) >>> 2] } this.set_refcount = function(refcount) { - HEAP32[this.ptr >> 2] = refcount + HEAP32[this.ptr >>> 2] = refcount } this.set_caught = function(caught) { caught = caught ? 1 : 0 - HEAP8[(this.ptr + 12) >> 0] = caught + HEAP8[(this.ptr + 12) >>> 0] = caught } this.get_caught = function() { - return HEAP8[(this.ptr + 12) >> 0] != 0 + return HEAP8[(this.ptr + 12) >>> 0] != 0 } this.set_rethrown = function(rethrown) { rethrown = rethrown ? 1 : 0 - HEAP8[(this.ptr + 13) >> 0] = rethrown + HEAP8[(this.ptr + 13) >>> 0] = rethrown } this.get_rethrown = function() { - return HEAP8[(this.ptr + 13) >> 0] != 0 + return HEAP8[(this.ptr + 13) >>> 0] != 0 } this.init = function(type, destructor) { this.set_adjusted_ptr(0) @@ -572,24 +452,24 @@ var ResampleLabelImage = (() => { this.set_rethrown(false) } this.add_ref = function() { - var value = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = value + 1 + var value = HEAP32[this.ptr >>> 2] + HEAP32[this.ptr >>> 2] = value + 1 } this.release_ref = function() { - var prev = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = prev - 1 + var prev = HEAP32[this.ptr >>> 2] + HEAP32[this.ptr >>> 2] = prev - 1 return prev === 1 } this.set_adjusted_ptr = function(adjustedPtr) { - HEAPU32[(this.ptr + 16) >> 2] = adjustedPtr + HEAPU32[(this.ptr + 16) >>> 2] = adjustedPtr } this.get_adjusted_ptr = function() { - return HEAPU32[(this.ptr + 16) >> 2] + return HEAPU32[(this.ptr + 16) >>> 2] } this.get_exception_ptr = function() { var isPointer = ___cxa_is_pointer_type(this.get_type()) if (isPointer) { - return HEAPU32[this.excPtr >> 2] + return HEAPU32[this.excPtr >>> 2] } var adjusted = this.get_adjusted_ptr() if (adjusted !== 0) return adjusted @@ -603,10 +483,10 @@ var ResampleLabelImage = (() => { info.init(type, destructor) exceptionLast = ptr uncaughtExceptionCount++ - throw ptr + throw exceptionLast } function setErrNo(value) { - HEAP32[___errno_location() >> 2] = value + HEAP32[___errno_location() >>> 2] = value return value } var PATH = { @@ -679,23 +559,27 @@ var ResampleLabelImage = (() => { return PATH.normalize(l + '/' + r) }, } - function getRandomDevice() { + function initRandomFill() { if ( typeof crypto == 'object' && typeof crypto['getRandomValues'] == 'function' ) { - var randomBuffer = new Uint8Array(1) - return () => { - crypto.getRandomValues(randomBuffer) - return randomBuffer[0] - } + return view => crypto.getRandomValues(view) } else if (ENVIRONMENT_IS_NODE) { try { var crypto_module = require('crypto') - return () => crypto_module['randomBytes'](1)[0] + var randomFillSync = crypto_module['randomFillSync'] + if (randomFillSync) { + return view => crypto_module['randomFillSync'](view) + } + var randomBytes = crypto_module['randomBytes'] + return view => (view.set(randomBytes(view.byteLength)), view) } catch (e) {} } - return () => abort('randomDevice') + abort('initRandomDevice') + } + function randomFill(view) { + return (randomFill = initRandomFill())(view) } var PATH_FS = { resolve: function() { @@ -750,6 +634,57 @@ var ResampleLabelImage = (() => { return outputParts.join('/') }, } + function lengthBytesUTF8(str) { + var len = 0 + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i) + if (c <= 127) { + len++ + } else if (c <= 2047) { + len += 2 + } else if (c >= 55296 && c <= 57343) { + len += 4 + ++i + } else { + len += 3 + } + } + return len + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + outIdx >>>= 0 + if (!(maxBytesToWrite > 0)) return 0 + var startIdx = outIdx + var endIdx = outIdx + maxBytesToWrite - 1 + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i) + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i) + u = (65536 + ((u & 1023) << 10)) | (u1 & 1023) + } + if (u <= 127) { + if (outIdx >= endIdx) break + heap[outIdx++ >>> 0] = u + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break + heap[outIdx++ >>> 0] = 192 | (u >> 6) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break + heap[outIdx++ >>> 0] = 224 | (u >> 12) + heap[outIdx++ >>> 0] = 128 | ((u >> 6) & 63) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } else { + if (outIdx + 3 >= endIdx) break + heap[outIdx++ >>> 0] = 240 | (u >> 18) + heap[outIdx++ >>> 0] = 128 | ((u >> 12) & 63) + heap[outIdx++ >>> 0] = 128 | ((u >> 6) & 63) + heap[outIdx++ >>> 0] = 128 | (u & 63) + } + } + heap[outIdx >>> 0] = 0 + return outIdx - startIdx + } function intArrayFromString(stringy, dontAddNull, length) { var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1 var u8array = new Array(len) @@ -988,6 +923,7 @@ var ResampleLabelImage = (() => { return new Uint8Array(node.contents) }, expandFileStorage: function(node, newCapacity) { + newCapacity >>>= 0 var prevCapacity = node.contents ? node.contents.length : 0 if (prevCapacity >= newCapacity) return var CAPACITY_DOUBLING_MAX = 1024 * 1024 @@ -1004,6 +940,7 @@ var ResampleLabelImage = (() => { node.contents.set(oldContents.subarray(0, node.usedBytes), 0) }, resizeFileStorage: function(node, newSize) { + newSize >>>= 0 if (node.usedBytes == newSize) return if (newSize == 0) { node.contents = null @@ -1194,7 +1131,7 @@ var ResampleLabelImage = (() => { var ptr var allocated var contents = stream.node.contents - if (!(flags & 2) && contents.buffer === buffer) { + if (!(flags & 2) && contents.buffer === HEAP8.buffer) { allocated = false ptr = contents.byteOffset } else { @@ -1214,7 +1151,8 @@ var ResampleLabelImage = (() => { if (!ptr) { throw new FS.ErrnoError(48) } - HEAP8.set(contents, ptr) + ptr >>>= 0 + HEAP8.set(contents, ptr >>> 0) } return { ptr: ptr, allocated: allocated } }, @@ -1251,7 +1189,7 @@ var ResampleLabelImage = (() => { isWindows: false, staticInit: () => { NODEFS.isWindows = !!process.platform.match(/^win/) - var flags = process['binding']('constants') + var flags = process.binding('constants') if (flags['fs']) { flags = flags['fs'] } @@ -2363,6 +2301,7 @@ var ResampleLabelImage = (() => { return stream.position }, read: (stream, buffer, offset, length, position) => { + offset >>>= 0 if (length < 0 || position < 0) { throw new FS.ErrnoError(28) } @@ -2395,6 +2334,7 @@ var ResampleLabelImage = (() => { return bytesRead }, write: (stream, buffer, offset, length, position, canOwn) => { + offset >>>= 0 if (length < 0 || position < 0) { throw new FS.ErrnoError(28) } @@ -2465,6 +2405,7 @@ var ResampleLabelImage = (() => { return stream.stream_ops.mmap(stream, length, position, prot, flags) }, msync: (stream, buffer, offset, length, mmapFlags) => { + offset >>>= 0 if (!stream.stream_ops.msync) { return 0 } @@ -2548,9 +2489,16 @@ var ResampleLabelImage = (() => { TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops) FS.mkdev('/dev/tty', FS.makedev(5, 0)) FS.mkdev('/dev/tty1', FS.makedev(6, 0)) - var random_device = getRandomDevice() - FS.createDevice('/dev', 'random', random_device) - FS.createDevice('/dev', 'urandom', random_device) + var randomBuffer = new Uint8Array(1024), + randomLeft = 0 + var randomByte = () => { + if (randomLeft === 0) { + randomLeft = randomFill(randomBuffer).byteLength + } + return randomBuffer[--randomLeft] + } + FS.createDevice('/dev', 'random', randomByte) + FS.createDevice('/dev', 'urandom', randomByte) FS.mkdir('/dev/shm') FS.mkdir('/dev/shm/tmp') }, @@ -2606,6 +2554,7 @@ var ResampleLabelImage = (() => { ensureErrnoError: () => { if (FS.ErrnoError) return FS.ErrnoError = function ErrnoError(errno, node) { + this.name = 'ErrnoError' this.node = node this.setErrno = function(errno) { this.errno = errno @@ -3028,114 +2977,51 @@ var ResampleLabelImage = (() => { processData(url) } }, - indexedDB: () => { - return ( - window.indexedDB || - window.mozIndexedDB || - window.webkitIndexedDB || - window.msIndexedDB - ) - }, - DB_NAME: () => { - return 'EM_FS_' + window.location.pathname - }, - DB_VERSION: 20, - DB_STORE_NAME: 'FILE_DATA', - saveFilesToDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) - } - openRequest.onupgradeneeded = () => { - out('creating db') - var db = openRequest.result - db.createObjectStore(FS.DB_STORE_NAME) - } - openRequest.onsuccess = () => { - var db = openRequest.result - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite') - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var putRequest = files.put( - FS.analyzePath(path).object.contents, - path - ) - putRequest.onsuccess = () => { - ok++ - if (ok + fail == total) finish() - } - putRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror + } + var UTF8Decoder = + typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined + function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + idx >>>= 0 + var endIdx = idx + maxBytesToRead + var endPtr = idx + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr + if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { + return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)) + } + var str = '' + while (idx < endPtr) { + var u0 = heapOrArray[idx++] + if (!(u0 & 128)) { + str += String.fromCharCode(u0) + continue } - openRequest.onerror = onerror - }, - loadFilesFromDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) + var u1 = heapOrArray[idx++] & 63 + if ((u0 & 224) == 192) { + str += String.fromCharCode(((u0 & 31) << 6) | u1) + continue } - openRequest.onupgradeneeded = onerror - openRequest.onsuccess = () => { - var db = openRequest.result - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly') - } catch (e) { - onerror(e) - return - } - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var getRequest = files.get(path) - getRequest.onsuccess = () => { - if (FS.analyzePath(path).exists) { - FS.unlink(path) - } - FS.createDataFile( - PATH.dirname(path), - PATH.basename(path), - getRequest.result, - true, - true, - true - ) - ok++ - if (ok + fail == total) finish() - } - getRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror + var u2 = heapOrArray[idx++] & 63 + if ((u0 & 240) == 224) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2 + } else { + u0 = + ((u0 & 7) << 18) | + (u1 << 12) | + (u2 << 6) | + (heapOrArray[idx++] & 63) } - openRequest.onerror = onerror - }, + if (u0 < 65536) { + str += String.fromCharCode(u0) + } else { + var ch = u0 - 65536 + str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)) + } + } + return str + } + function UTF8ToString(ptr, maxBytesToRead) { + ptr >>>= 0 + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : '' } var SYSCALLS = { DEFAULT_POLLMASK: 5, @@ -3171,13 +3057,13 @@ var ResampleLabelImage = (() => { } throw e } - HEAP32[buf >> 2] = stat.dev - HEAP32[(buf + 8) >> 2] = stat.ino - HEAP32[(buf + 12) >> 2] = stat.mode - HEAPU32[(buf + 16) >> 2] = stat.nlink - HEAP32[(buf + 20) >> 2] = stat.uid - HEAP32[(buf + 24) >> 2] = stat.gid - HEAP32[(buf + 28) >> 2] = stat.rdev + HEAP32[buf >>> 2] = stat.dev + HEAP32[(buf + 8) >>> 2] = stat.ino + HEAP32[(buf + 12) >>> 2] = stat.mode + HEAPU32[(buf + 16) >>> 2] = stat.nlink + HEAP32[(buf + 20) >>> 2] = stat.uid + HEAP32[(buf + 24) >>> 2] = stat.gid + HEAP32[(buf + 28) >>> 2] = stat.rdev ;(tempI64 = [ stat.size >>> 0, ((tempDouble = stat.size), @@ -3191,10 +3077,10 @@ var ResampleLabelImage = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 40) >> 2] = tempI64[0]), - (HEAP32[(buf + 44) >> 2] = tempI64[1]) - HEAP32[(buf + 48) >> 2] = 4096 - HEAP32[(buf + 52) >> 2] = stat.blocks + (HEAP32[(buf + 40) >>> 2] = tempI64[0]), + (HEAP32[(buf + 44) >>> 2] = tempI64[1]) + HEAP32[(buf + 48) >>> 2] = 4096 + HEAP32[(buf + 52) >>> 2] = stat.blocks var atime = stat.atime.getTime() var mtime = stat.mtime.getTime() var ctime = stat.ctime.getTime() @@ -3211,9 +3097,9 @@ var ResampleLabelImage = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 56) >> 2] = tempI64[0]), - (HEAP32[(buf + 60) >> 2] = tempI64[1]) - HEAPU32[(buf + 64) >> 2] = (atime % 1e3) * 1e3 + (HEAP32[(buf + 56) >>> 2] = tempI64[0]), + (HEAP32[(buf + 60) >>> 2] = tempI64[1]) + HEAPU32[(buf + 64) >>> 2] = (atime % 1e3) * 1e3 ;(tempI64 = [ Math.floor(mtime / 1e3) >>> 0, ((tempDouble = Math.floor(mtime / 1e3)), @@ -3227,9 +3113,9 @@ var ResampleLabelImage = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 72) >> 2] = tempI64[0]), - (HEAP32[(buf + 76) >> 2] = tempI64[1]) - HEAPU32[(buf + 80) >> 2] = (mtime % 1e3) * 1e3 + (HEAP32[(buf + 72) >>> 2] = tempI64[0]), + (HEAP32[(buf + 76) >>> 2] = tempI64[1]) + HEAPU32[(buf + 80) >>> 2] = (mtime % 1e3) * 1e3 ;(tempI64 = [ Math.floor(ctime / 1e3) >>> 0, ((tempDouble = Math.floor(ctime / 1e3)), @@ -3243,9 +3129,9 @@ var ResampleLabelImage = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 88) >> 2] = tempI64[0]), - (HEAP32[(buf + 92) >> 2] = tempI64[1]) - HEAPU32[(buf + 96) >> 2] = (ctime % 1e3) * 1e3 + (HEAP32[(buf + 88) >>> 2] = tempI64[0]), + (HEAP32[(buf + 92) >>> 2] = tempI64[1]) + HEAPU32[(buf + 96) >>> 2] = (ctime % 1e3) * 1e3 ;(tempI64 = [ stat.ino >>> 0, ((tempDouble = stat.ino), @@ -3259,8 +3145,8 @@ var ResampleLabelImage = (() => { ) >>> 0 : 0), ]), - (HEAP32[(buf + 104) >> 2] = tempI64[0]), - (HEAP32[(buf + 108) >> 2] = tempI64[1]) + (HEAP32[(buf + 104) >>> 2] = tempI64[0]), + (HEAP32[(buf + 108) >>> 2] = tempI64[1]) return 0 }, doMsync: function(addr, stream, len, flags, offset) { @@ -3270,13 +3156,14 @@ var ResampleLabelImage = (() => { if (flags & 2) { return 0 } + addr >>>= 0 var buffer = HEAPU8.slice(addr, addr + len) FS.msync(stream, buffer, offset, len, flags) }, varargs: undefined, get: function() { SYSCALLS.varargs += 4 - var ret = HEAP32[(SYSCALLS.varargs - 4) >> 2] + var ret = HEAP32[(SYSCALLS.varargs - 4) >>> 2] return ret }, getStr: function(ptr) { @@ -3316,7 +3203,7 @@ var ResampleLabelImage = (() => { case 5: { var arg = SYSCALLS.get() var offset = 0 - HEAP16[(arg + offset) >> 1] = 2 + HEAP16[(arg + offset) >>> 1] = 2 return 0 } case 6: @@ -3333,10 +3220,13 @@ var ResampleLabelImage = (() => { } } } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite) + } function ___syscall_getcwd(buf, size) { try { if (size === 0) return -28 @@ -3346,7 +3236,7 @@ var ResampleLabelImage = (() => { stringToUTF8(cwd, buf, size) return cwdLengthInBytes } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3372,7 +3262,7 @@ var ResampleLabelImage = (() => { case 21519: { if (!stream.tty) return -59 var argp = SYSCALLS.get() - HEAP32[argp >> 2] = 0 + HEAP32[argp >>> 2] = 0 return 0 } case 21520: { @@ -3395,7 +3285,7 @@ var ResampleLabelImage = (() => { return -28 } } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3407,7 +3297,7 @@ var ResampleLabelImage = (() => { var mode = varargs ? SYSCALLS.get() : 0 return FS.open(path, flags, mode).fd } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3418,12 +3308,12 @@ var ResampleLabelImage = (() => { if (bufsize <= 0) return -28 var ret = FS.readlink(path) var len = Math.min(bufsize, lengthBytesUTF8(ret)) - var endChar = HEAP8[buf + len] + var endChar = HEAP8[(buf + len) >>> 0] stringToUTF8(ret, buf, bufsize + 1) - HEAP8[buf + len] = endChar + HEAP8[(buf + len) >>> 0] = endChar return len } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3432,7 +3322,7 @@ var ResampleLabelImage = (() => { path = SYSCALLS.getStr(path) return SYSCALLS.doStat(FS.stat, path, buf) } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return -e.errno } } @@ -3440,15 +3330,16 @@ var ResampleLabelImage = (() => { abort('') } function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.copyWithin(dest, src, src + num) + HEAPU8.copyWithin(dest >>> 0, src >>> 0, (src + num) >>> 0) } function getHeapMax() { - return 2147483648 + return 4294901760 } function emscripten_realloc_buffer(size) { + var b = wasmMemory.buffer try { - wasmMemory.grow((size - buffer.byteLength + 65535) >>> 16) - updateGlobalBufferAndViews(wasmMemory.buffer) + wasmMemory.grow((size - b.byteLength + 65535) >>> 16) + updateMemoryViews() return 1 } catch (e) {} } @@ -3512,30 +3403,30 @@ var ResampleLabelImage = (() => { } return getEnvStrings.strings } - function writeAsciiToMemory(str, buffer, dontAddNull) { + function stringToAscii(str, buffer) { for (var i = 0; i < str.length; ++i) { - HEAP8[buffer++ >> 0] = str.charCodeAt(i) + HEAP8[buffer++ >>> 0] = str.charCodeAt(i) } - if (!dontAddNull) HEAP8[buffer >> 0] = 0 + HEAP8[buffer >>> 0] = 0 } function _environ_get(__environ, environ_buf) { var bufSize = 0 getEnvStrings().forEach(function(string, i) { var ptr = environ_buf + bufSize - HEAPU32[(__environ + i * 4) >> 2] = ptr - writeAsciiToMemory(string, ptr) + HEAPU32[(__environ + i * 4) >>> 2] = ptr + stringToAscii(string, ptr) bufSize += string.length + 1 }) return 0 } function _environ_sizes_get(penviron_count, penviron_buf_size) { var strings = getEnvStrings() - HEAPU32[penviron_count >> 2] = strings.length + HEAPU32[penviron_count >>> 2] = strings.length var bufSize = 0 strings.forEach(function(string) { bufSize += string.length + 1 }) - HEAPU32[penviron_buf_size >> 2] = bufSize + HEAPU32[penviron_buf_size >>> 2] = bufSize return 0 } function _proc_exit(code) { @@ -3557,20 +3448,23 @@ var ResampleLabelImage = (() => { FS.close(stream) return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } function doReadv(stream, iov, iovcnt, offset) { var ret = 0 for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] + var ptr = HEAPU32[iov >>> 2] + var len = HEAPU32[(iov + 4) >>> 2] iov += 8 var curr = FS.read(stream, HEAP8, ptr, len, offset) if (curr < 0) return -1 ret += curr if (curr < len) break + if (typeof offset !== 'undefined') { + offset += curr + } } return ret } @@ -3578,10 +3472,10 @@ var ResampleLabelImage = (() => { try { var stream = SYSCALLS.getStreamFromFD(fd) var num = doReadv(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num + HEAPU32[pnum >>> 2] = num return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } @@ -3609,25 +3503,28 @@ var ResampleLabelImage = (() => { ) >>> 0 : 0), ]), - (HEAP32[newOffset >> 2] = tempI64[0]), - (HEAP32[(newOffset + 4) >> 2] = tempI64[1]) + (HEAP32[newOffset >>> 2] = tempI64[0]), + (HEAP32[(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)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } function doWritev(stream, iov, iovcnt, offset) { var ret = 0 for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] + var ptr = HEAPU32[iov >>> 2] + var len = HEAPU32[(iov + 4) >>> 2] iov += 8 var curr = FS.write(stream, HEAP8, ptr, len, offset) if (curr < 0) return -1 ret += curr + if (typeof offset !== 'undefined') { + offset += curr + } } return ret } @@ -3635,31 +3532,31 @@ var ResampleLabelImage = (() => { try { var stream = SYSCALLS.getStreamFromFD(fd) var num = doWritev(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num + HEAPU32[pnum >>> 2] = num return 0 } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e + if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e return e.errno } } - function __isLeapYear(year) { + function isLeapYear(year) { return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) } - function __arraySum(array, index) { + function arraySum(array, index) { var sum = 0 for (var i = 0; i <= index; sum += array[i++]) {} return sum } - var __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - var __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - function __addDays(date, days) { + var MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + var MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] + function addDays(date, days) { var newDate = new Date(date.getTime()) while (days > 0) { - var leap = __isLeapYear(newDate.getFullYear()) + var leap = isLeapYear(newDate.getFullYear()) var currentMonth = newDate.getMonth() - var daysInCurrentMonth = (leap - ? __MONTH_DAYS_LEAP - : __MONTH_DAYS_REGULAR)[currentMonth] + var daysInCurrentMonth = (leap ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[ + currentMonth + ] if (days > daysInCurrentMonth - newDate.getDate()) { days -= daysInCurrentMonth - newDate.getDate() + 1 newDate.setDate(1) @@ -3677,21 +3574,21 @@ var ResampleLabelImage = (() => { return newDate } function writeArrayToMemory(array, buffer) { - HEAP8.set(array, buffer) + HEAP8.set(array, buffer >>> 0) } function _strftime(s, maxsize, format, tm) { - var tm_zone = HEAP32[(tm + 40) >> 2] + var tm_zone = HEAP32[(tm + 40) >>> 2] var date = { - tm_sec: HEAP32[tm >> 2], - tm_min: HEAP32[(tm + 4) >> 2], - tm_hour: HEAP32[(tm + 8) >> 2], - tm_mday: HEAP32[(tm + 12) >> 2], - tm_mon: HEAP32[(tm + 16) >> 2], - tm_year: HEAP32[(tm + 20) >> 2], - tm_wday: HEAP32[(tm + 24) >> 2], - tm_yday: HEAP32[(tm + 28) >> 2], - tm_isdst: HEAP32[(tm + 32) >> 2], - tm_gmtoff: HEAP32[(tm + 36) >> 2], + tm_sec: HEAP32[tm >>> 2], + tm_min: HEAP32[(tm + 4) >>> 2], + tm_hour: HEAP32[(tm + 8) >>> 2], + tm_mday: HEAP32[(tm + 12) >>> 2], + tm_mon: HEAP32[(tm + 16) >>> 2], + tm_year: HEAP32[(tm + 20) >>> 2], + tm_wday: HEAP32[(tm + 24) >>> 2], + tm_yday: HEAP32[(tm + 28) >>> 2], + tm_isdst: HEAP32[(tm + 32) >>> 2], + tm_gmtoff: HEAP32[(tm + 36) >>> 2], tm_zone: tm_zone ? UTF8ToString(tm_zone) : '', } var pattern = UTF8ToString(format) @@ -3795,7 +3692,7 @@ var ResampleLabelImage = (() => { } } function getWeekBasedYear(date) { - var thisDate = __addDays( + var thisDate = addDays( new Date(date.tm_year + 1900, 0, 1), date.tm_yday ) @@ -3854,10 +3751,10 @@ var ResampleLabelImage = (() => { '%j': function(date) { return leadingNulls( date.tm_mday + - __arraySum( - __isLeapYear(date.tm_year + 1900) - ? __MONTH_DAYS_LEAP - : __MONTH_DAYS_REGULAR, + arraySum( + isLeapYear(date.tm_year + 1900) + ? MONTH_DAYS_LEAP + : MONTH_DAYS_REGULAR, date.tm_mon - 1 ), 3 @@ -3903,13 +3800,13 @@ var ResampleLabelImage = (() => { var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7 if ( dec31 == 4 || - (dec31 == 5 && __isLeapYear((date.tm_year % 400) - 1)) + (dec31 == 5 && isLeapYear((date.tm_year % 400) - 1)) ) { val++ } } else if (val == 53) { var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7 - if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1 + if (jan1 != 4 && (jan1 != 3 || !isLeapYear(date.tm_year))) val = 1 } return leadingNulls(val, 2) }, @@ -3966,10 +3863,10 @@ var ResampleLabelImage = (() => { } quit_(1, e) } - function allocateUTF8OnStack(str) { + function stringToUTF8OnStack(str) { var size = lengthBytesUTF8(str) + 1 var ret = stackAlloc(size) - stringToUTF8Array(str, HEAP8, ret, size) + stringToUTF8(str, ret, size) return ret } function getCFunc(ident) { @@ -3981,9 +3878,7 @@ var ResampleLabelImage = (() => { string: str => { var ret = 0 if (str !== null && str !== undefined && str !== 0) { - var len = (str.length << 2) + 1 - ret = stackAlloc(len) - stringToUTF8(str, ret, len) + ret = stringToUTF8OnStack(str) } return ret }, @@ -4023,10 +3918,9 @@ var ResampleLabelImage = (() => { return ret } function cwrap(ident, returnType, argTypes, opts) { - argTypes = argTypes || [] - var numericArgs = argTypes.every( - type => type === 'number' || type === 'boolean' - ) + var numericArgs = + !argTypes || + argTypes.every(type => type === 'number' || type === 'boolean') var numericRet = returnType !== 'string' if (numericRet && numericArgs && !opts) { return getCFunc(ident) @@ -4035,10 +3929,17 @@ var ResampleLabelImage = (() => { return ccall(ident, returnType, argTypes, arguments, opts) } } + function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + HEAP8[buffer++ >>> 0] = str.charCodeAt(i) + } + if (!dontAddNull) HEAP8[buffer >>> 0] = 0 + } function AsciiToString(ptr) { + ptr >>>= 0 var str = '' while (1) { - var ch = HEAPU8[ptr++ >> 0] + var ch = HEAPU8[ptr++ >>> 0] if (!ch) return str str += String.fromCharCode(ch) } @@ -4221,7 +4122,7 @@ var ResampleLabelImage = (() => { EOWNERDEAD: 62, ESTRPIPE: 135, } - var asmLibraryArg = { + var wasmImports = { a: ___cxa_throw, d: ___syscall_fcntl64, r: ___syscall_getcwd, @@ -4242,20 +4143,24 @@ var ResampleLabelImage = (() => { l: _strftime_l, } var asm = createWasm() - var ___wasm_call_ctors = (Module['___wasm_call_ctors'] = function() { - return (___wasm_call_ctors = Module['___wasm_call_ctors'] = - Module['asm']['t']).apply(null, arguments) - }) + var ___wasm_call_ctors = function() { + return (___wasm_call_ctors = Module['asm']['t']).apply(null, arguments) + } var _main = (Module['_main'] = function() { return (_main = Module['_main'] = Module['asm']['u']).apply( null, arguments ) }) - var ___errno_location = (Module['___errno_location'] = function() { - return (___errno_location = Module['___errno_location'] = - Module['asm']['v']).apply(null, arguments) - }) + var ___errno_location = function() { + return (___errno_location = Module['asm']['v']).apply(null, arguments) + } + var _malloc = function() { + return (_malloc = Module['asm']['malloc']).apply(null, arguments) + } + var _free = function() { + return (_free = Module['asm']['free']).apply(null, arguments) + } var _itk_wasm_input_array_alloc = (Module[ '_itk_wasm_input_array_alloc' ] = function() { @@ -4302,30 +4207,21 @@ var ResampleLabelImage = (() => { return (_itk_wasm_free_all = Module['_itk_wasm_free_all'] = Module['asm']['C']).apply(null, arguments) }) - var stackSave = (Module['stackSave'] = function() { - return (stackSave = Module['stackSave'] = Module['asm']['E']).apply( - null, - arguments - ) - }) - var stackRestore = (Module['stackRestore'] = function() { - return (stackRestore = Module['stackRestore'] = Module['asm']['F']).apply( - null, - arguments - ) - }) - var stackAlloc = (Module['stackAlloc'] = function() { - return (stackAlloc = Module['stackAlloc'] = Module['asm']['G']).apply( + var stackSave = function() { + return (stackSave = Module['asm']['E']).apply(null, arguments) + } + var stackRestore = function() { + return (stackRestore = Module['asm']['F']).apply(null, arguments) + } + var stackAlloc = function() { + return (stackAlloc = Module['asm']['G']).apply(null, arguments) + } + var ___cxa_is_pointer_type = function() { + return (___cxa_is_pointer_type = Module['asm']['H']).apply( null, arguments ) - }) - var ___cxa_is_pointer_type = (Module[ - '___cxa_is_pointer_type' - ] = function() { - return (___cxa_is_pointer_type = Module['___cxa_is_pointer_type'] = - Module['asm']['H']).apply(null, arguments) - }) + } Module['addRunDependency'] = addRunDependency Module['removeRunDependency'] = removeRunDependency Module['FS_createPath'] = FS.createPath @@ -4335,6 +4231,8 @@ var ResampleLabelImage = (() => { Module['FS_createDevice'] = FS.createDevice Module['FS_unlink'] = FS.unlink Module['callMain'] = callMain + Module['stackSave'] = stackSave + Module['stackRestore'] = stackRestore Module['ccall'] = ccall Module['cwrap'] = cwrap Module['AsciiToString'] = AsciiToString @@ -4345,17 +4243,16 @@ var ResampleLabelImage = (() => { if (!calledRun) run() if (!calledRun) dependenciesFulfilled = runCaller } - function callMain(args) { - var entryFunction = Module['_main'] - args = args || [] + function callMain(args = []) { + var entryFunction = _main args.unshift(thisProgram) var argc = args.length var argv = stackAlloc((argc + 1) * 4) var argv_ptr = argv >> 2 args.forEach(arg => { - HEAP32[argv_ptr++] = allocateUTF8OnStack(arg) + HEAP32[argv_ptr++ >>> 0] = stringToUTF8OnStack(arg) }) - HEAP32[argv_ptr] = 0 + HEAP32[argv_ptr >>> 0] = 0 try { var ret = entryFunction(argc, argv) exitJS(ret, true) @@ -4364,8 +4261,7 @@ var ResampleLabelImage = (() => { return handleException(e) } } - function run(args) { - args = args || arguments_ + function run(args = arguments_) { if (runDependencies > 0) { return } @@ -4413,8 +4309,8 @@ var ResampleLabelImage = (() => { } var path = require('path') var containingDir = path.dirname(filePath) - if (FS.isDir(containingDir) || containingDir === '/') { - return + if (containingDir === '/') { + throw new Error('Cannot mount root directory') } var currentDir = '/' var splitContainingDir = containingDir.split(path.sep) @@ -4436,6 +4332,32 @@ var ResampleLabelImage = (() => { var containingDir = path.dirname(filePath) FS.unmount(containingDir) } + Module.mountDir = function(dir) { + if (!ENVIRONMENT_IS_NODE) { + return + } + if (dir === '/') { + throw new Error('Cannot mount root directory') + } + var currentDir = '/' + var path = require('path') + var splitDir = dir.split(path.sep) + for (var ii = 1; ii < splitDir.length; ii++) { + currentDir += splitDir[ii] + if (!FS.analyzePath(currentDir).exists) { + FS.mkdir(currentDir) + } + currentDir += '/' + } + FS.mount(NODEFS, { root: dir }, currentDir) + return currentDir + } + Module.unmountDir = function(dir) { + if (!ENVIRONMENT_IS_NODE) { + return + } + FS.unmount(dir) + } Module.fs_mkdirs = function(dirs) { var currentDir = '/' var splitDirs = dirs.split('/') diff --git a/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.umd.js b/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.umd.js deleted file mode 100644 index c2322d8ff..000000000 --- a/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.umd.js +++ /dev/null @@ -1,4477 +0,0 @@ -var ResampleLabelImage = (() => { - var _scriptDir = - typeof document !== 'undefined' && document.currentScript - ? document.currentScript.src - : undefined - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename - return function(ResampleLabelImage) { - ResampleLabelImage = ResampleLabelImage || {} - - var Module = - typeof ResampleLabelImage != 'undefined' ? ResampleLabelImage : {} - var readyPromiseResolve, readyPromiseReject - Module['ready'] = new Promise(function(resolve, reject) { - readyPromiseResolve = resolve - readyPromiseReject = reject - }) - var mStdout = null - var mStderr = null - Module['resetModuleStdout'] = function() { - mStdout = '' - } - Module['resetModuleStderr'] = function() { - mStderr = '' - } - Module['print'] = function(text) { - console.log(text) - mStdout += text + '\n' - } - Module['printErr'] = function(text) { - console.error(text) - mStderr += text + '\n' - } - Module['getModuleStdout'] = function() { - return mStdout - } - Module['getModuleStderr'] = function() { - return mStderr - } - var moduleOverrides = Object.assign({}, Module) - var arguments_ = [] - var thisProgram = './this.program' - var quit_ = (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 scriptDirectory = '' - function locateFile(path) { - if (Module['locateFile']) { - return Module['locateFile'](path, scriptDirectory) - } - return scriptDirectory + path - } - var read_, readAsync, readBinary, setWindowTitle - function logExceptionOnExit(e) { - if (e instanceof ExitStatus) return - let toLog = e - err('exiting due to exception: ' + toLog) - } - if (ENVIRONMENT_IS_NODE) { - var fs = require('fs') - var nodePath = require('path') - if (ENVIRONMENT_IS_WORKER) { - scriptDirectory = nodePath.dirname(scriptDirectory) + '/' - } else { - scriptDirectory = __dirname + '/' - } - read_ = (filename, binary) => { - filename = isFileURI(filename) - ? new URL(filename) - : nodePath.normalize(filename) - return fs.readFileSync(filename, binary ? undefined : 'utf8') - } - readBinary = filename => { - var ret = read_(filename, true) - if (!ret.buffer) { - ret = new Uint8Array(ret) - } - return ret - } - readAsync = (filename, onload, onerror) => { - filename = isFileURI(filename) - ? new URL(filename) - : nodePath.normalize(filename) - fs.readFile(filename, function(err, data) { - if (err) onerror(err) - else onload(data.buffer) - }) - } - if (process['argv'].length > 1) { - thisProgram = process['argv'][1].replace(/\\/g, '/') - } - arguments_ = process['argv'].slice(2) - process['on']('uncaughtException', function(ex) { - if (!(ex instanceof ExitStatus)) { - throw ex - } - }) - process['on']('unhandledRejection', function(reason) { - throw reason - }) - quit_ = (status, toThrow) => { - if (keepRuntimeAlive()) { - process['exitCode'] = status - throw toThrow - } - logExceptionOnExit(toThrow) - process['exit'](status) - } - Module['inspect'] = function() { - return '[Emscripten Module object]' - } - } else 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_ = url => { - var xhr = new XMLHttpRequest() - xhr.open('GET', url, false) - xhr.send(null) - return xhr.responseText - } - if (ENVIRONMENT_IS_WORKER) { - readBinary = url => { - var xhr = new XMLHttpRequest() - xhr.open('GET', url, false) - xhr.responseType = 'arraybuffer' - xhr.send(null) - return new Uint8Array(xhr.response) - } - } - readAsync = (url, onload, onerror) => { - var xhr = new XMLHttpRequest() - xhr.open('GET', url, true) - xhr.responseType = 'arraybuffer' - xhr.onload = () => { - if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { - onload(xhr.response) - return - } - onerror() - } - xhr.onerror = onerror - xhr.send(null) - } - } - setWindowTitle = title => (document.title = title) - } else { - } - var out = Module['print'] || console.log.bind(console) - var err = Module['printErr'] || console.warn.bind(console) - Object.assign(Module, moduleOverrides) - moduleOverrides = null - if (Module['arguments']) arguments_ = Module['arguments'] - if (Module['thisProgram']) thisProgram = Module['thisProgram'] - if (Module['quit']) quit_ = Module['quit'] - 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 ABORT = false - var EXITSTATUS - function assert(condition, text) { - if (!condition) { - abort(text) - } - } - var UTF8Decoder = - typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined - function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { - var endIdx = idx + maxBytesToRead - var endPtr = idx - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)) - } - var str = '' - while (idx < endPtr) { - var u0 = heapOrArray[idx++] - if (!(u0 & 128)) { - str += String.fromCharCode(u0) - continue - } - var u1 = heapOrArray[idx++] & 63 - if ((u0 & 224) == 192) { - str += String.fromCharCode(((u0 & 31) << 6) | u1) - continue - } - var u2 = heapOrArray[idx++] & 63 - if ((u0 & 240) == 224) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2 - } else { - u0 = - ((u0 & 7) << 18) | - (u1 << 12) | - (u2 << 6) | - (heapOrArray[idx++] & 63) - } - if (u0 < 65536) { - str += String.fromCharCode(u0) - } else { - var ch = u0 - 65536 - str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)) - } - } - return str - } - function UTF8ToString(ptr, maxBytesToRead) { - return ptr ? UTF8ArrayToString(HEAPU8, 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 < str.length; ++i) { - var u = str.charCodeAt(i) - if (u >= 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, HEAPU8, outPtr, maxBytesToWrite) - } - function lengthBytesUTF8(str) { - var len = 0 - for (var i = 0; i < str.length; ++i) { - var c = str.charCodeAt(i) - if (c <= 127) { - len++ - } else if (c <= 2047) { - len += 2 - } else if (c >= 55296 && c <= 57343) { - len += 4 - ++i - } else { - len += 3 - } - } - return len - } - var buffer, - HEAP8, - HEAPU8, - HEAP16, - HEAPU16, - HEAP32, - HEAPU32, - HEAPF32, - HEAPF64 - 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 - var wasmTable - var __ATPRERUN__ = [] - var __ATINIT__ = [] - var __ATMAIN__ = [] - var __ATPOSTRUN__ = [] - var runtimeInitialized = false - function keepRuntimeAlive() { - return noExitRuntime - } - function preRun() { - 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 (!Module['noFSInit'] && !FS.init.initialized) FS.init() - FS.ignorePermissions = false - TTY.init() - callRuntimeCallbacks(__ATINIT__) - } - function preMain() { - callRuntimeCallbacks(__ATMAIN__) - } - function postRun() { - 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() - } - } - } - function abort(what) { - if (Module['onAbort']) { - Module['onAbort'](what) - } - what = 'Aborted(' + what + ')' - err(what) - ABORT = true - EXITSTATUS = 1 - what += '. Build with -sASSERTIONS 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) - } - function isFileURI(filename) { - return filename.startsWith('file://') - } - var wasmBinaryFile - wasmBinaryFile = 'ResampleLabelImage.umd.wasm' - if (!isDataURI(wasmBinaryFile)) { - wasmBinaryFile = locateFile(wasmBinaryFile) - } - function getBinary(file) { - try { - if (file == wasmBinaryFile && wasmBinary) { - return new Uint8Array(wasmBinary) - } - if (readBinary) { - return readBinary(file) - } - 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' && !isFileURI(wasmBinaryFile)) { - 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) - }) - } else { - if (readAsync) { - return new Promise(function(resolve, reject) { - readAsync( - wasmBinaryFile, - function(response) { - resolve(new Uint8Array(response)) - }, - reject - ) - }) - } - } - } - 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 - wasmMemory = Module['asm']['s'] - updateGlobalBufferAndViews(wasmMemory.buffer) - wasmTable = Module['asm']['D'] - addOnInit(Module['asm']['t']) - removeRunDependency('wasm-instantiate') - } - addRunDependency('wasm-instantiate') - function receiveInstantiationResult(result) { - receiveInstance(result['instance']) - } - 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) && - !isFileURI(wasmBinaryFile) && - !ENVIRONMENT_IS_NODE && - 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) - readyPromiseReject(e) - } - } - instantiateAsync().catch(readyPromiseReject) - return {} - } - var tempDouble - var tempI64 - function ExitStatus(status) { - this.name = 'ExitStatus' - this.message = 'Program terminated with exit(' + status + ')' - this.status = status - } - function callRuntimeCallbacks(callbacks) { - while (callbacks.length > 0) { - callbacks.shift()(Module) - } - } - function ExceptionInfo(excPtr) { - this.excPtr = excPtr - this.ptr = excPtr - 24 - this.set_type = function(type) { - HEAPU32[(this.ptr + 4) >> 2] = type - } - this.get_type = function() { - return HEAPU32[(this.ptr + 4) >> 2] - } - this.set_destructor = function(destructor) { - HEAPU32[(this.ptr + 8) >> 2] = destructor - } - this.get_destructor = function() { - return HEAPU32[(this.ptr + 8) >> 2] - } - this.set_refcount = function(refcount) { - HEAP32[this.ptr >> 2] = refcount - } - this.set_caught = function(caught) { - caught = caught ? 1 : 0 - HEAP8[(this.ptr + 12) >> 0] = caught - } - this.get_caught = function() { - return HEAP8[(this.ptr + 12) >> 0] != 0 - } - this.set_rethrown = function(rethrown) { - rethrown = rethrown ? 1 : 0 - HEAP8[(this.ptr + 13) >> 0] = rethrown - } - this.get_rethrown = function() { - return HEAP8[(this.ptr + 13) >> 0] != 0 - } - this.init = function(type, destructor) { - this.set_adjusted_ptr(0) - this.set_type(type) - this.set_destructor(destructor) - this.set_refcount(0) - this.set_caught(false) - this.set_rethrown(false) - } - this.add_ref = function() { - var value = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = value + 1 - } - this.release_ref = function() { - var prev = HEAP32[this.ptr >> 2] - HEAP32[this.ptr >> 2] = prev - 1 - return prev === 1 - } - this.set_adjusted_ptr = function(adjustedPtr) { - HEAPU32[(this.ptr + 16) >> 2] = adjustedPtr - } - this.get_adjusted_ptr = function() { - return HEAPU32[(this.ptr + 16) >> 2] - } - this.get_exception_ptr = function() { - var isPointer = ___cxa_is_pointer_type(this.get_type()) - if (isPointer) { - return HEAPU32[this.excPtr >> 2] - } - var adjusted = this.get_adjusted_ptr() - if (adjusted !== 0) return adjusted - return this.excPtr - } - } - var exceptionLast = 0 - var uncaughtExceptionCount = 0 - function ___cxa_throw(ptr, type, destructor) { - var info = new ExceptionInfo(ptr) - info.init(type, destructor) - exceptionLast = ptr - uncaughtExceptionCount++ - throw ptr - } - function setErrNo(value) { - HEAP32[___errno_location() >> 2] = value - return value - } - var PATH = { - isAbs: path => path.charAt(0) === '/', - splitPath: filename => { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/ - return splitPathRe.exec(filename).slice(1) - }, - normalizeArray: (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: path => { - var isAbsolute = PATH.isAbs(path), - trailingSlash = path.substr(-1) === '/' - path = PATH.normalizeArray( - path.split('/').filter(p => !!p), - !isAbsolute - ).join('/') - if (!path && !isAbsolute) { - path = '.' - } - if (path && trailingSlash) { - path += '/' - } - return (isAbsolute ? '/' : '') + path - }, - dirname: 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: 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) - }, - join: function() { - var paths = Array.prototype.slice.call(arguments) - return PATH.normalize(paths.join('/')) - }, - join2: (l, r) => { - return PATH.normalize(l + '/' + r) - }, - } - function getRandomDevice() { - if ( - typeof crypto == 'object' && - typeof crypto['getRandomValues'] == 'function' - ) { - var randomBuffer = new Uint8Array(1) - return () => { - crypto.getRandomValues(randomBuffer) - return randomBuffer[0] - } - } else if (ENVIRONMENT_IS_NODE) { - try { - var crypto_module = require('crypto') - return () => crypto_module['randomBytes'](1)[0] - } catch (e) {} - } - return () => abort('randomDevice') - } - 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.isAbs(path) - } - resolvedPath = PATH.normalizeArray( - resolvedPath.split('/').filter(p => !!p), - !resolvedAbsolute - ).join('/') - return (resolvedAbsolute ? '/' : '') + resolvedPath || '.' - }, - relative: (from, to) => { - from = PATH_FS.resolve(from).substr(1) - to = PATH_FS.resolve(to).substr(1) - function trim(arr) { - var start = 0 - for (; start < arr.length; start++) { - if (arr[start] !== '') break - } - var end = arr.length - 1 - for (; end >= 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; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i - break - } - } - var outputParts = [] - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push('..') - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)) - return outputParts.join('/') - }, - } - 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 TTY = { - ttys: [], - init: function() {}, - shutdown: function() {}, - register: function(dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops } - FS.registerDevice(dev, TTY.stream_ops) - }, - stream_ops: { - open: function(stream) { - var tty = TTY.ttys[stream.node.rdev] - if (!tty) { - throw new FS.ErrnoError(43) - } - stream.tty = tty - stream.seekable = false - }, - close: function(stream) { - stream.tty.ops.fsync(stream.tty) - }, - fsync: function(stream) { - stream.tty.ops.fsync(stream.tty) - }, - read: function(stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(60) - } - var bytesRead = 0 - for (var i = 0; i < length; i++) { - var result - try { - result = stream.tty.ops.get_char(stream.tty) - } catch (e) { - throw new FS.ErrnoError(29) - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6) - } - if (result === null || result === undefined) break - bytesRead++ - buffer[offset + i] = result - } - if (bytesRead) { - stream.node.timestamp = Date.now() - } - return bytesRead - }, - write: function(stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(60) - } - try { - for (var i = 0; i < length; i++) { - stream.tty.ops.put_char(stream.tty, buffer[offset + i]) - } - } catch (e) { - throw new FS.ErrnoError(29) - } - if (length) { - stream.node.timestamp = Date.now() - } - return i - }, - }, - default_tty_ops: { - get_char: function(tty) { - if (!tty.input.length) { - var result = null - if (ENVIRONMENT_IS_NODE) { - var BUFSIZE = 256 - var buf = Buffer.alloc(BUFSIZE) - var bytesRead = 0 - try { - bytesRead = fs.readSync(process.stdin.fd, buf, 0, BUFSIZE, -1) - } catch (e) { - if (e.toString().includes('EOF')) bytesRead = 0 - else throw e - } - if (bytesRead > 0) { - result = buf.slice(0, bytesRead).toString('utf-8') - } else { - result = null - } - } else if ( - typeof window != 'undefined' && - typeof window.prompt == 'function' - ) { - result = window.prompt('Input: ') - if (result !== null) { - result += '\n' - } - } else if (typeof readline == 'function') { - result = readline() - if (result !== null) { - result += '\n' - } - } - if (!result) { - return null - } - tty.input = intArrayFromString(result, true) - } - return tty.input.shift() - }, - put_char: function(tty, val) { - if (val === null || val === 10) { - out(UTF8ArrayToString(tty.output, 0)) - tty.output = [] - } else { - if (val != 0) tty.output.push(val) - } - }, - fsync: function(tty) { - if (tty.output && tty.output.length > 0) { - 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) - } - }, - fsync: function(tty) { - if (tty.output && tty.output.length > 0) { - err(UTF8ArrayToString(tty.output, 0)) - tty.output = [] - } - }, - }, - } - function mmapAlloc(size) { - abort() - } - 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 < CAPACITY_DOUBLING_MAX ? 2 : 1.125)) >>> - 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; i < size; i++) - buffer[offset + i] = contents[position + i] - } - return size - }, - write: function(stream, buffer, offset, length, position, canOwn) { - if (buffer.buffer === HEAP8.buffer) { - canOwn = false - } - if (!length) return 0 - var node = stream.node - node.timestamp = Date.now() - if (buffer.subarray && (!node.contents || node.contents.subarray)) { - if (canOwn) { - node.contents = buffer.subarray(offset, offset + length) - node.usedBytes = length - return length - } else if (node.usedBytes === 0 && position === 0) { - node.contents = buffer.slice(offset, offset + length) - node.usedBytes = length - return length - } else if (position + length <= node.usedBytes) { - node.contents.set( - buffer.subarray(offset, offset + length), - position - ) - return length - } - } - MEMFS.expandFileStorage(node, position + length) - if (node.contents.subarray && buffer.subarray) { - node.contents.set( - buffer.subarray(offset, offset + length), - position - ) - } else { - for (var i = 0; i < length; i++) { - node.contents[position + i] = buffer[offset + i] - } - } - node.usedBytes = Math.max(node.usedBytes, position + length) - return length - }, - llseek: function(stream, offset, whence) { - var position = offset - if (whence === 1) { - position += stream.position - } else if (whence === 2) { - if (FS.isFile(stream.node.mode)) { - position += stream.node.usedBytes - } - } - if (position < 0) { - throw new FS.ErrnoError(28) - } - return position - }, - allocate: function(stream, offset, length) { - MEMFS.expandFileStorage(stream.node, offset + length) - stream.node.usedBytes = Math.max( - stream.node.usedBytes, - offset + length - ) - }, - mmap: function(stream, length, position, prot, flags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43) - } - var ptr - var allocated - var contents = stream.node.contents - if (!(flags & 2) && contents.buffer === buffer) { - allocated = false - ptr = contents.byteOffset - } else { - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length) - } else { - contents = Array.prototype.slice.call( - contents, - position, - position + length - ) - } - } - allocated = true - ptr = mmapAlloc(length) - if (!ptr) { - throw new FS.ErrnoError(48) - } - HEAP8.set(contents, ptr) - } - return { ptr: ptr, allocated: allocated } - }, - msync: function(stream, buffer, offset, length, mmapFlags) { - MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false) - return 0 - }, - }, - } - function asyncLoad(url, onload, onerror, noRunDep) { - var dep = !noRunDep ? getUniqueRunDependency('al ' + url) : '' - readAsync( - url, - arrayBuffer => { - assert( - arrayBuffer, - 'Loading data file "' + url + '" failed (no arrayBuffer).' - ) - onload(new Uint8Array(arrayBuffer)) - if (dep) removeRunDependency(dep) - }, - event => { - if (onerror) { - onerror() - } else { - throw 'Loading data file "' + url + '" failed.' - } - } - ) - if (dep) addRunDependency(dep) - } - var ERRNO_CODES = {} - var NODEFS = { - isWindows: false, - staticInit: () => { - NODEFS.isWindows = !!process.platform.match(/^win/) - var flags = process['binding']('constants') - if (flags['fs']) { - flags = flags['fs'] - } - NODEFS.flagsForNodeMap = { - 1024: flags['O_APPEND'], - 64: flags['O_CREAT'], - 128: flags['O_EXCL'], - 256: flags['O_NOCTTY'], - 0: flags['O_RDONLY'], - 2: flags['O_RDWR'], - 4096: flags['O_SYNC'], - 512: flags['O_TRUNC'], - 1: flags['O_WRONLY'], - 131072: flags['O_NOFOLLOW'], - } - }, - convertNodeCode: e => { - var code = e.code - return ERRNO_CODES[code] - }, - mount: mount => { - return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0) - }, - createNode: (parent, name, mode, dev) => { - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { - throw new FS.ErrnoError(28) - } - var node = FS.createNode(parent, name, mode) - node.node_ops = NODEFS.node_ops - node.stream_ops = NODEFS.stream_ops - return node - }, - getMode: path => { - var stat - try { - stat = fs.lstatSync(path) - if (NODEFS.isWindows) { - stat.mode = stat.mode | ((stat.mode & 292) >> 2) - } - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - return stat.mode - }, - realPath: node => { - var parts = [] - while (node.parent !== node) { - parts.push(node.name) - node = node.parent - } - parts.push(node.mount.opts.root) - parts.reverse() - return PATH.join.apply(null, parts) - }, - flagsForNode: flags => { - flags &= ~2097152 - flags &= ~2048 - flags &= ~32768 - flags &= ~524288 - flags &= ~65536 - var newFlags = 0 - for (var k in NODEFS.flagsForNodeMap) { - if (flags & k) { - newFlags |= NODEFS.flagsForNodeMap[k] - flags ^= k - } - } - if (flags) { - throw new FS.ErrnoError(28) - } - return newFlags - }, - node_ops: { - getattr: node => { - var path = NODEFS.realPath(node) - var stat - try { - stat = fs.lstatSync(path) - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - if (NODEFS.isWindows && !stat.blksize) { - stat.blksize = 4096 - } - if (NODEFS.isWindows && !stat.blocks) { - stat.blocks = ((stat.size + stat.blksize - 1) / stat.blksize) | 0 - } - return { - dev: stat.dev, - ino: stat.ino, - mode: stat.mode, - nlink: stat.nlink, - uid: stat.uid, - gid: stat.gid, - rdev: stat.rdev, - size: stat.size, - atime: stat.atime, - mtime: stat.mtime, - ctime: stat.ctime, - blksize: stat.blksize, - blocks: stat.blocks, - } - }, - setattr: (node, attr) => { - var path = NODEFS.realPath(node) - try { - if (attr.mode !== undefined) { - fs.chmodSync(path, attr.mode) - node.mode = attr.mode - } - if (attr.timestamp !== undefined) { - var date = new Date(attr.timestamp) - fs.utimesSync(path, date, date) - } - if (attr.size !== undefined) { - fs.truncateSync(path, attr.size) - } - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - lookup: (parent, name) => { - var path = PATH.join2(NODEFS.realPath(parent), name) - var mode = NODEFS.getMode(path) - return NODEFS.createNode(parent, name, mode) - }, - mknod: (parent, name, mode, dev) => { - var node = NODEFS.createNode(parent, name, mode, dev) - var path = NODEFS.realPath(node) - try { - if (FS.isDir(node.mode)) { - fs.mkdirSync(path, node.mode) - } else { - fs.writeFileSync(path, '', { mode: node.mode }) - } - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - return node - }, - rename: (oldNode, newDir, newName) => { - var oldPath = NODEFS.realPath(oldNode) - var newPath = PATH.join2(NODEFS.realPath(newDir), newName) - try { - fs.renameSync(oldPath, newPath) - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - oldNode.name = newName - }, - unlink: (parent, name) => { - var path = PATH.join2(NODEFS.realPath(parent), name) - try { - fs.unlinkSync(path) - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - rmdir: (parent, name) => { - var path = PATH.join2(NODEFS.realPath(parent), name) - try { - fs.rmdirSync(path) - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - readdir: node => { - var path = NODEFS.realPath(node) - try { - return fs.readdirSync(path) - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - symlink: (parent, newName, oldPath) => { - var newPath = PATH.join2(NODEFS.realPath(parent), newName) - try { - fs.symlinkSync(oldPath, newPath) - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - readlink: node => { - var path = NODEFS.realPath(node) - try { - path = fs.readlinkSync(path) - path = nodePath.relative( - nodePath.resolve(node.mount.opts.root), - path - ) - return path - } catch (e) { - if (!e.code) throw e - if (e.code === 'UNKNOWN') throw new FS.ErrnoError(28) - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - }, - stream_ops: { - open: stream => { - var path = NODEFS.realPath(stream.node) - try { - if (FS.isFile(stream.node.mode)) { - stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags)) - } - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - close: stream => { - try { - if (FS.isFile(stream.node.mode) && stream.nfd) { - fs.closeSync(stream.nfd) - } - } catch (e) { - if (!e.code) throw e - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - read: (stream, buffer, offset, length, position) => { - if (length === 0) return 0 - try { - return fs.readSync( - stream.nfd, - Buffer.from(buffer.buffer), - offset, - length, - position - ) - } catch (e) { - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - write: (stream, buffer, offset, length, position) => { - try { - return fs.writeSync( - stream.nfd, - Buffer.from(buffer.buffer), - offset, - length, - position - ) - } catch (e) { - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - }, - llseek: (stream, offset, whence) => { - var position = offset - if (whence === 1) { - position += stream.position - } else if (whence === 2) { - if (FS.isFile(stream.node.mode)) { - try { - var stat = fs.fstatSync(stream.nfd) - position += stat.size - } catch (e) { - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)) - } - } - } - if (position < 0) { - throw new FS.ErrnoError(28) - } - return position - }, - mmap: (stream, length, position, prot, flags) => { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43) - } - var ptr = mmapAlloc(length) - NODEFS.stream_ops.read(stream, HEAP8, ptr, length, position) - return { ptr: ptr, allocated: true } - }, - msync: (stream, buffer, offset, length, mmapFlags) => { - NODEFS.stream_ops.write(stream, buffer, 0, length, offset, false) - return 0 - }, - }, - } - var FS = { - root: null, - mounts: [], - devices: {}, - streams: [], - nextInode: 1, - nameTable: null, - currentPath: '/', - initialized: false, - ignorePermissions: true, - ErrnoError: null, - genericErrors: {}, - filesystems: null, - syncFSRequests: 0, - lookupPath: (path, opts = {}) => { - path = PATH_FS.resolve(path) - if (!path) return { path: '', node: null } - var defaults = { follow_mount: true, recurse_count: 0 } - opts = Object.assign(defaults, opts) - if (opts.recurse_count > 8) { - throw new FS.ErrnoError(32) - } - var parts = path.split('/').filter(p => !!p) - var current = FS.root - var current_path = '/' - for (var i = 0; i < parts.length; i++) { - var islast = i === parts.length - 1 - if (islast && opts.parent) { - break - } - current = FS.lookupNode(current, parts[i]) - current_path = PATH.join2(current_path, parts[i]) - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root - } - } - if (!islast || opts.follow) { - var count = 0 - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path) - current_path = PATH_FS.resolve(PATH.dirname(current_path), link) - var lookup = FS.lookupPath(current_path, { - recurse_count: opts.recurse_count + 1, - }) - current = lookup.node - if (count++ > 40) { - throw new FS.ErrnoError(32) - } - } - } - } - return { path: current_path, node: current } - }, - getPath: 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: (parentid, name) => { - var hash = 0 - for (var i = 0; i < name.length; i++) { - hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0 - } - return ((parentid + hash) >>> 0) % FS.nameTable.length - }, - hashAddNode: node => { - var hash = FS.hashName(node.parent.id, node.name) - node.name_next = FS.nameTable[hash] - FS.nameTable[hash] = node - }, - hashRemoveNode: 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: (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: (parent, name, mode, rdev) => { - var node = new FS.FSNode(parent, name, mode, rdev) - FS.hashAddNode(node) - return node - }, - destroyNode: node => { - FS.hashRemoveNode(node) - }, - isRoot: node => { - return node === node.parent - }, - isMountpoint: node => { - return !!node.mounted - }, - isFile: mode => { - return (mode & 61440) === 32768 - }, - isDir: mode => { - return (mode & 61440) === 16384 - }, - isLink: mode => { - return (mode & 61440) === 40960 - }, - isChrdev: mode => { - return (mode & 61440) === 8192 - }, - isBlkdev: mode => { - return (mode & 61440) === 24576 - }, - isFIFO: mode => { - return (mode & 61440) === 4096 - }, - isSocket: mode => { - return (mode & 49152) === 49152 - }, - flagModes: { r: 0, 'r+': 2, w: 577, 'w+': 578, a: 1089, 'a+': 1090 }, - modeStringToFlags: str => { - var flags = FS.flagModes[str] - if (typeof flags == 'undefined') { - throw new Error('Unknown file open mode: ' + str) - } - return flags - }, - flagsToPermissionString: flag => { - var perms = ['r', 'w', 'rw'][flag & 3] - if (flag & 512) { - perms += 'w' - } - return perms - }, - nodePermissions: (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: dir => { - var errCode = FS.nodePermissions(dir, 'x') - if (errCode) return errCode - if (!dir.node_ops.lookup) return 2 - return 0 - }, - mayCreate: (dir, name) => { - try { - var node = FS.lookupNode(dir, name) - return 20 - } catch (e) {} - return FS.nodePermissions(dir, 'wx') - }, - mayDelete: (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: (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: (fd_start = 0, 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: fd => FS.streams[fd], - createStream: (stream, fd_start, fd_end) => { - if (!FS.FSStream) { - FS.FSStream = function() { - this.shared = {} - } - FS.FSStream.prototype = {} - Object.defineProperties(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 - }, - }, - flags: { - get: function() { - return this.shared.flags - }, - set: function(val) { - this.shared.flags = val - }, - }, - position: { - get: function() { - return this.shared.position - }, - set: function(val) { - this.shared.position = val - }, - }, - }) - } - stream = Object.assign(new FS.FSStream(), stream) - var fd = FS.nextfd(fd_start, fd_end) - stream.fd = fd - FS.streams[fd] = stream - return stream - }, - closeStream: fd => { - FS.streams[fd] = null - }, - chrdev_stream_ops: { - open: 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: () => { - throw new FS.ErrnoError(70) - }, - }, - major: dev => dev >> 8, - minor: dev => dev & 255, - makedev: (ma, mi) => (ma << 8) | mi, - registerDevice: (dev, ops) => { - FS.devices[dev] = { stream_ops: ops } - }, - getDevice: dev => FS.devices[dev], - getMounts: 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: (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(mount => { - if (!mount.type.syncfs) { - return done(null) - } - mount.type.syncfs(mount, populate, done) - }) - }, - mount: (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: 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(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: (parent, name) => { - return parent.node_ops.lookup(parent, name) - }, - mknod: (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: (path, mode) => { - mode = mode !== undefined ? mode : 438 - mode &= 4095 - mode |= 32768 - return FS.mknod(path, mode, 0) - }, - mkdir: (path, mode) => { - mode = mode !== undefined ? mode : 511 - mode &= 511 | 512 - mode |= 16384 - return FS.mknod(path, mode, 0) - }, - mkdirTree: (path, mode) => { - var dirs = path.split('/') - var d = '' - for (var i = 0; i < dirs.length; ++i) { - if (!dirs[i]) continue - d += '/' + dirs[i] - try { - FS.mkdir(d, mode) - } catch (e) { - if (e.errno != 20) throw e - } - } - }, - mkdev: (path, mode, dev) => { - if (typeof dev == 'undefined') { - dev = mode - mode = 438 - } - mode |= 8192 - return FS.mknod(path, mode, dev) - }, - symlink: (oldpath, newpath) => { - if (!PATH_FS.resolve(oldpath)) { - throw new FS.ErrnoError(44) - } - var lookup = FS.lookupPath(newpath, { parent: true }) - var parent = lookup.node - if (!parent) { - throw new FS.ErrnoError(44) - } - var newname = PATH.basename(newpath) - var errCode = FS.mayCreate(parent, newname) - if (errCode) { - throw new FS.ErrnoError(errCode) - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(63) - } - return parent.node_ops.symlink(parent, newname, oldpath) - }, - rename: (old_path, new_path) => { - var old_dirname = PATH.dirname(old_path) - var new_dirname = PATH.dirname(new_path) - var old_name = PATH.basename(old_path) - var new_name = PATH.basename(new_path) - var lookup, old_dir, new_dir - lookup = FS.lookupPath(old_path, { parent: true }) - old_dir = lookup.node - lookup = FS.lookupPath(new_path, { parent: true }) - new_dir = lookup.node - if (!old_dir || !new_dir) throw new FS.ErrnoError(44) - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(75) - } - var old_node = FS.lookupNode(old_dir, old_name) - var relative = PATH_FS.relative(old_path, new_dirname) - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(28) - } - relative = PATH_FS.relative(new_path, old_dirname) - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(55) - } - var new_node - try { - new_node = FS.lookupNode(new_dir, new_name) - } catch (e) {} - if (old_node === new_node) { - return - } - var isdir = FS.isDir(old_node.mode) - var errCode = FS.mayDelete(old_dir, old_name, isdir) - if (errCode) { - throw new FS.ErrnoError(errCode) - } - errCode = new_node - ? FS.mayDelete(new_dir, new_name, isdir) - : FS.mayCreate(new_dir, new_name) - if (errCode) { - throw new FS.ErrnoError(errCode) - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(63) - } - if ( - FS.isMountpoint(old_node) || - (new_node && FS.isMountpoint(new_node)) - ) { - throw new FS.ErrnoError(10) - } - if (new_dir !== old_dir) { - errCode = FS.nodePermissions(old_dir, 'w') - if (errCode) { - throw new FS.ErrnoError(errCode) - } - } - FS.hashRemoveNode(old_node) - try { - old_dir.node_ops.rename(old_node, new_dir, new_name) - } catch (e) { - throw e - } finally { - FS.hashAddNode(old_node) - } - }, - rmdir: path => { - var lookup = FS.lookupPath(path, { parent: true }) - var parent = lookup.node - var name = PATH.basename(path) - var node = FS.lookupNode(parent, name) - var errCode = FS.mayDelete(parent, name, true) - if (errCode) { - throw new FS.ErrnoError(errCode) - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(63) - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10) - } - parent.node_ops.rmdir(parent, name) - FS.destroyNode(node) - }, - readdir: path => { - var lookup = FS.lookupPath(path, { follow: true }) - var node = lookup.node - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(54) - } - return node.node_ops.readdir(node) - }, - unlink: path => { - var lookup = FS.lookupPath(path, { parent: true }) - var parent = lookup.node - if (!parent) { - throw new FS.ErrnoError(44) - } - var name = PATH.basename(path) - var node = FS.lookupNode(parent, name) - var errCode = FS.mayDelete(parent, name, false) - if (errCode) { - throw new FS.ErrnoError(errCode) - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(63) - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10) - } - parent.node_ops.unlink(parent, name) - FS.destroyNode(node) - }, - readlink: path => { - var lookup = FS.lookupPath(path) - var link = lookup.node - if (!link) { - throw new FS.ErrnoError(44) - } - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(28) - } - return PATH_FS.resolve( - FS.getPath(link.parent), - link.node_ops.readlink(link) - ) - }, - stat: (path, dontFollow) => { - var lookup = FS.lookupPath(path, { follow: !dontFollow }) - var node = lookup.node - if (!node) { - throw new FS.ErrnoError(44) - } - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(63) - } - return node.node_ops.getattr(node) - }, - lstat: path => { - return FS.stat(path, true) - }, - chmod: (path, mode, dontFollow) => { - var node - if (typeof path == 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }) - node = lookup.node - } else { - node = path - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63) - } - node.node_ops.setattr(node, { - mode: (mode & 4095) | (node.mode & ~4095), - timestamp: Date.now(), - }) - }, - lchmod: (path, mode) => { - FS.chmod(path, mode, true) - }, - fchmod: (fd, mode) => { - var stream = FS.getStream(fd) - if (!stream) { - throw new FS.ErrnoError(8) - } - FS.chmod(stream.node, mode) - }, - chown: (path, uid, gid, dontFollow) => { - var node - if (typeof path == 'string') { - var lookup = FS.lookupPath(path, { follow: !dontFollow }) - node = lookup.node - } else { - node = path - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63) - } - node.node_ops.setattr(node, { timestamp: Date.now() }) - }, - lchown: (path, uid, gid) => { - FS.chown(path, uid, gid, true) - }, - fchown: (fd, uid, gid) => { - var stream = FS.getStream(fd) - if (!stream) { - throw new FS.ErrnoError(8) - } - FS.chown(stream.node, uid, gid) - }, - truncate: (path, len) => { - if (len < 0) { - throw new FS.ErrnoError(28) - } - var node - if (typeof path == 'string') { - var lookup = FS.lookupPath(path, { follow: true }) - node = lookup.node - } else { - node = path - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63) - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(31) - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(28) - } - var errCode = FS.nodePermissions(node, 'w') - if (errCode) { - throw new FS.ErrnoError(errCode) - } - node.node_ops.setattr(node, { size: len, timestamp: Date.now() }) - }, - ftruncate: (fd, len) => { - var stream = FS.getStream(fd) - if (!stream) { - throw new FS.ErrnoError(8) - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(28) - } - FS.truncate(stream.node, len) - }, - utime: (path, atime, mtime) => { - var lookup = FS.lookupPath(path, { follow: true }) - var node = lookup.node - node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) }) - }, - open: (path, flags, mode) => { - if (path === '') { - throw new FS.ErrnoError(44) - } - flags = typeof flags == 'string' ? FS.modeStringToFlags(flags) : flags - mode = typeof mode == 'undefined' ? 438 : mode - if (flags & 64) { - mode = (mode & 4095) | 32768 - } else { - mode = 0 - } - var node - if (typeof path == 'object') { - node = path - } else { - path = PATH.normalize(path) - try { - var lookup = FS.lookupPath(path, { follow: !(flags & 131072) }) - node = lookup.node - } catch (e) {} - } - var created = false - if (flags & 64) { - if (node) { - if (flags & 128) { - throw new FS.ErrnoError(20) - } - } else { - node = FS.mknod(path, mode, 0) - created = true - } - } - if (!node) { - throw new FS.ErrnoError(44) - } - if (FS.isChrdev(node.mode)) { - flags &= ~512 - } - if (flags & 65536 && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(54) - } - if (!created) { - var errCode = FS.mayOpen(node, flags) - if (errCode) { - throw new FS.ErrnoError(errCode) - } - } - if (flags & 512 && !created) { - FS.truncate(node, 0) - } - flags &= ~(128 | 512 | 131072) - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - ungotten: [], - error: false, - }) - if (stream.stream_ops.open) { - stream.stream_ops.open(stream) - } - if (Module['logReadFiles'] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {} - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1 - } - } - return stream - }, - close: stream => { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8) - } - if (stream.getdents) stream.getdents = null - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream) - } - } catch (e) { - throw e - } finally { - FS.closeStream(stream.fd) - } - stream.fd = null - }, - isClosed: stream => { - return stream.fd === null - }, - llseek: (stream, offset, whence) => { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8) - } - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(70) - } - if (whence != 0 && whence != 1 && whence != 2) { - throw new FS.ErrnoError(28) - } - stream.position = stream.stream_ops.llseek(stream, offset, whence) - stream.ungotten = [] - return stream.position - }, - read: (stream, buffer, offset, length, position) => { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28) - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8) - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(8) - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31) - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(28) - } - var seeking = typeof position != 'undefined' - if (!seeking) { - position = stream.position - } else if (!stream.seekable) { - throw new FS.ErrnoError(70) - } - var bytesRead = stream.stream_ops.read( - stream, - buffer, - offset, - length, - position - ) - if (!seeking) stream.position += bytesRead - return bytesRead - }, - write: (stream, buffer, offset, length, position, canOwn) => { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28) - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8) - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8) - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31) - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(28) - } - if (stream.seekable && stream.flags & 1024) { - FS.llseek(stream, 0, 2) - } - var seeking = typeof position != 'undefined' - if (!seeking) { - position = stream.position - } else if (!stream.seekable) { - throw new FS.ErrnoError(70) - } - var bytesWritten = stream.stream_ops.write( - stream, - buffer, - offset, - length, - position, - canOwn - ) - if (!seeking) stream.position += bytesWritten - return bytesWritten - }, - allocate: (stream, offset, length) => { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8) - } - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(28) - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8) - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(43) - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(138) - } - stream.stream_ops.allocate(stream, offset, length) - }, - mmap: (stream, length, position, prot, flags) => { - if ( - (prot & 2) !== 0 && - (flags & 2) === 0 && - (stream.flags & 2097155) !== 2 - ) { - throw new FS.ErrnoError(2) - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(2) - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(43) - } - return stream.stream_ops.mmap(stream, length, position, prot, flags) - }, - msync: (stream, buffer, offset, length, mmapFlags) => { - if (!stream.stream_ops.msync) { - return 0 - } - return stream.stream_ops.msync( - stream, - buffer, - offset, - length, - mmapFlags - ) - }, - munmap: stream => 0, - ioctl: (stream, cmd, arg) => { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(59) - } - return stream.stream_ops.ioctl(stream, cmd, arg) - }, - readFile: (path, opts = {}) => { - opts.flags = opts.flags || 0 - opts.encoding = opts.encoding || 'binary' - if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { - throw new Error('Invalid encoding type "' + opts.encoding + '"') - } - var ret - var stream = FS.open(path, opts.flags) - var stat = FS.stat(path) - var length = stat.size - var buf = new Uint8Array(length) - FS.read(stream, buf, 0, length, 0) - if (opts.encoding === 'utf8') { - ret = UTF8ArrayToString(buf, 0) - } else if (opts.encoding === 'binary') { - ret = buf - } - FS.close(stream) - return ret - }, - writeFile: (path, data, opts = {}) => { - opts.flags = opts.flags || 577 - var stream = FS.open(path, opts.flags, opts.mode) - if (typeof data == 'string') { - var buf = new Uint8Array(lengthBytesUTF8(data) + 1) - var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length) - FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn) - } else if (ArrayBuffer.isView(data)) { - FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn) - } else { - throw new Error('Unsupported data type') - } - FS.close(stream) - }, - cwd: () => FS.currentPath, - chdir: path => { - var lookup = FS.lookupPath(path, { follow: true }) - if (lookup.node === null) { - throw new FS.ErrnoError(44) - } - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(54) - } - var errCode = FS.nodePermissions(lookup.node, 'x') - if (errCode) { - throw new FS.ErrnoError(errCode) - } - FS.currentPath = lookup.path - }, - createDefaultDirectories: () => { - FS.mkdir('/tmp') - FS.mkdir('/home') - FS.mkdir('/home/web_user') - }, - createDefaultDevices: () => { - FS.mkdir('/dev') - FS.registerDevice(FS.makedev(1, 3), { - read: () => 0, - write: (stream, buffer, offset, length, pos) => length, - }) - FS.mkdev('/dev/null', FS.makedev(1, 3)) - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops) - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops) - FS.mkdev('/dev/tty', FS.makedev(5, 0)) - FS.mkdev('/dev/tty1', FS.makedev(6, 0)) - var random_device = getRandomDevice() - FS.createDevice('/dev', 'random', random_device) - FS.createDevice('/dev', 'urandom', random_device) - FS.mkdir('/dev/shm') - FS.mkdir('/dev/shm/tmp') - }, - createSpecialDirectories: () => { - FS.mkdir('/proc') - var proc_self = FS.mkdir('/proc/self') - FS.mkdir('/proc/self/fd') - FS.mount( - { - mount: () => { - var node = FS.createNode(proc_self, 'fd', 16384 | 511, 73) - node.node_ops = { - lookup: (parent, name) => { - var fd = +name - var stream = FS.getStream(fd) - if (!stream) throw new FS.ErrnoError(8) - var ret = { - parent: null, - mount: { mountpoint: 'fake' }, - node_ops: { readlink: () => stream.path }, - } - ret.parent = ret - return ret - }, - } - return node - }, - }, - {}, - '/proc/self/fd' - ) - }, - createStandardStreams: () => { - if (Module['stdin']) { - FS.createDevice('/dev', 'stdin', Module['stdin']) - } else { - FS.symlink('/dev/tty', '/dev/stdin') - } - if (Module['stdout']) { - FS.createDevice('/dev', 'stdout', null, Module['stdout']) - } else { - FS.symlink('/dev/tty', '/dev/stdout') - } - if (Module['stderr']) { - FS.createDevice('/dev', 'stderr', null, Module['stderr']) - } else { - FS.symlink('/dev/tty1', '/dev/stderr') - } - var stdin = FS.open('/dev/stdin', 0) - var stdout = FS.open('/dev/stdout', 1) - var stderr = FS.open('/dev/stderr', 1) - }, - ensureErrnoError: () => { - if (FS.ErrnoError) return - FS.ErrnoError = function ErrnoError(errno, node) { - this.node = node - this.setErrno = function(errno) { - this.errno = errno - } - this.setErrno(errno) - this.message = 'FS error' - } - FS.ErrnoError.prototype = new Error() - FS.ErrnoError.prototype.constructor = FS.ErrnoError - ;[44].forEach(code => { - FS.genericErrors[code] = new FS.ErrnoError(code) - FS.genericErrors[code].stack = '' - }) - }, - staticInit: () => { - FS.ensureErrnoError() - FS.nameTable = new Array(4096) - FS.mount(MEMFS, {}, '/') - FS.createDefaultDirectories() - FS.createDefaultDevices() - FS.createSpecialDirectories() - FS.filesystems = { MEMFS: MEMFS, NODEFS: NODEFS } - }, - init: (input, output, error) => { - FS.init.initialized = true - FS.ensureErrnoError() - Module['stdin'] = input || Module['stdin'] - Module['stdout'] = output || Module['stdout'] - Module['stderr'] = error || Module['stderr'] - FS.createStandardStreams() - }, - quit: () => { - FS.init.initialized = false - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i] - if (!stream) { - continue - } - FS.close(stream) - } - }, - getMode: (canRead, canWrite) => { - var mode = 0 - if (canRead) mode |= 292 | 73 - if (canWrite) mode |= 146 - return mode - }, - findObject: (path, dontResolveLastLink) => { - var ret = FS.analyzePath(path, dontResolveLastLink) - if (!ret.exists) { - return null - } - return ret.object - }, - analyzePath: (path, dontResolveLastLink) => { - try { - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }) - path = lookup.path - } catch (e) {} - var ret = { - isRoot: false, - exists: false, - error: 0, - name: null, - path: null, - object: null, - parentExists: false, - parentPath: null, - parentObject: null, - } - try { - var lookup = FS.lookupPath(path, { parent: true }) - ret.parentExists = true - ret.parentPath = lookup.path - ret.parentObject = lookup.node - ret.name = PATH.basename(path) - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }) - ret.exists = true - ret.path = lookup.path - ret.object = lookup.node - ret.name = lookup.node.name - ret.isRoot = lookup.path === '/' - } catch (e) { - ret.error = e.errno - } - return ret - }, - createPath: (parent, path, canRead, canWrite) => { - parent = typeof parent == 'string' ? parent : FS.getPath(parent) - var parts = path.split('/').reverse() - while (parts.length) { - var part = parts.pop() - if (!part) continue - var current = PATH.join2(parent, part) - try { - FS.mkdir(current) - } catch (e) {} - parent = current - } - return current - }, - createFile: (parent, name, properties, canRead, canWrite) => { - var path = PATH.join2( - typeof parent == 'string' ? parent : FS.getPath(parent), - name - ) - var mode = FS.getMode(canRead, canWrite) - return FS.create(path, mode) - }, - createDataFile: (parent, name, data, canRead, canWrite, canOwn) => { - var path = name - if (parent) { - parent = typeof parent == 'string' ? parent : FS.getPath(parent) - path = name ? PATH.join2(parent, name) : parent - } - var mode = FS.getMode(canRead, canWrite) - var node = FS.create(path, mode) - if (data) { - if (typeof data == 'string') { - var arr = new Array(data.length) - for (var i = 0, len = data.length; i < len; ++i) - arr[i] = data.charCodeAt(i) - data = arr - } - FS.chmod(node, mode | 146) - var stream = FS.open(node, 577) - FS.write(stream, data, 0, data.length, 0, canOwn) - FS.close(stream) - FS.chmod(node, mode) - } - return node - }, - createDevice: (parent, name, input, output) => { - var path = PATH.join2( - typeof parent == 'string' ? parent : FS.getPath(parent), - name - ) - var mode = FS.getMode(!!input, !!output) - if (!FS.createDevice.major) FS.createDevice.major = 64 - var dev = FS.makedev(FS.createDevice.major++, 0) - FS.registerDevice(dev, { - open: stream => { - stream.seekable = false - }, - close: stream => { - if (output && output.buffer && output.buffer.length) { - output(10) - } - }, - read: (stream, buffer, offset, length, pos) => { - var bytesRead = 0 - for (var i = 0; i < length; i++) { - var result - try { - result = input() - } catch (e) { - throw new FS.ErrnoError(29) - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6) - } - if (result === null || result === undefined) break - bytesRead++ - buffer[offset + i] = result - } - if (bytesRead) { - stream.node.timestamp = Date.now() - } - return bytesRead - }, - write: (stream, buffer, offset, length, pos) => { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset + i]) - } catch (e) { - throw new FS.ErrnoError(29) - } - } - if (length) { - stream.node.timestamp = Date.now() - } - return i - }, - }) - return FS.mkdev(path, mode, dev) - }, - forceLoadFile: obj => { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) - return true - if (typeof XMLHttpRequest != 'undefined') { - throw new Error( - 'Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.' - ) - } else if (read_) { - try { - obj.contents = intArrayFromString(read_(obj.url), true) - obj.usedBytes = obj.contents.length - } catch (e) { - throw new FS.ErrnoError(29) - } - } else { - throw new Error('Cannot load without read() or XMLHttpRequest.') - } - }, - createLazyFile: (parent, name, url, canRead, canWrite) => { - function LazyUint8Array() { - this.lengthKnown = false - this.chunks = [] - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.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 = (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) - 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 || []) - } - return intArrayFromString(xhr.responseText || '', true) - } - var lazyArray = this - lazyArray.setDataGetter(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(key => { - var fn = node.stream_ops[key] - stream_ops[key] = function forceLoadLazyFile() { - FS.forceLoadFile(node) - return fn.apply(null, arguments) - } - }) - function writeChunks(stream, buffer, offset, length, position) { - 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 < size; i++) { - buffer[offset + i] = contents[position + i] - } - } else { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents.get(position + i) - } - } - return size - } - stream_ops.read = (stream, buffer, offset, length, position) => { - FS.forceLoadFile(node) - return writeChunks(stream, buffer, offset, length, position) - } - stream_ops.mmap = (stream, length, position, prot, flags) => { - FS.forceLoadFile(node) - var ptr = mmapAlloc(length) - if (!ptr) { - throw new FS.ErrnoError(48) - } - writeChunks(stream, HEAP8, ptr, length, position) - return { ptr: ptr, allocated: true } - } - node.stream_ops = stream_ops - return node - }, - createPreloadedFile: ( - parent, - name, - url, - canRead, - canWrite, - onload, - onerror, - dontCreateFile, - canOwn, - preFinish - ) => { - var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent - var dep = getUniqueRunDependency('cp ' + fullname) - function processData(byteArray) { - function finish(byteArray) { - if (preFinish) preFinish() - if (!dontCreateFile) { - FS.createDataFile( - parent, - name, - byteArray, - canRead, - canWrite, - canOwn - ) - } - if (onload) onload() - removeRunDependency(dep) - } - if ( - Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => { - if (onerror) onerror() - removeRunDependency(dep) - }) - ) { - return - } - finish(byteArray) - } - addRunDependency(dep) - if (typeof url == 'string') { - asyncLoad(url, byteArray => processData(byteArray), onerror) - } else { - processData(url) - } - }, - indexedDB: () => { - return ( - window.indexedDB || - window.mozIndexedDB || - window.webkitIndexedDB || - window.msIndexedDB - ) - }, - DB_NAME: () => { - return 'EM_FS_' + window.location.pathname - }, - DB_VERSION: 20, - DB_STORE_NAME: 'FILE_DATA', - saveFilesToDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) - } - openRequest.onupgradeneeded = () => { - out('creating db') - var db = openRequest.result - db.createObjectStore(FS.DB_STORE_NAME) - } - openRequest.onsuccess = () => { - var db = openRequest.result - var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite') - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var putRequest = files.put( - FS.analyzePath(path).object.contents, - path - ) - putRequest.onsuccess = () => { - ok++ - if (ok + fail == total) finish() - } - putRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror - } - openRequest.onerror = onerror - }, - loadFilesFromDB: (paths, onload, onerror) => { - onload = onload || (() => {}) - onerror = onerror || (() => {}) - var indexedDB = FS.indexedDB() - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION) - } catch (e) { - return onerror(e) - } - openRequest.onupgradeneeded = onerror - openRequest.onsuccess = () => { - var db = openRequest.result - try { - var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly') - } catch (e) { - onerror(e) - return - } - var files = transaction.objectStore(FS.DB_STORE_NAME) - var ok = 0, - fail = 0, - total = paths.length - function finish() { - if (fail == 0) onload() - else onerror() - } - paths.forEach(path => { - var getRequest = files.get(path) - getRequest.onsuccess = () => { - if (FS.analyzePath(path).exists) { - FS.unlink(path) - } - FS.createDataFile( - PATH.dirname(path), - PATH.basename(path), - getRequest.result, - true, - true, - true - ) - ok++ - if (ok + fail == total) finish() - } - getRequest.onerror = () => { - fail++ - if (ok + fail == total) finish() - } - }) - transaction.onerror = onerror - } - openRequest.onerror = onerror - }, - } - var SYSCALLS = { - DEFAULT_POLLMASK: 5, - calculateAt: function(dirfd, path, allowEmpty) { - if (PATH.isAbs(path)) { - return path - } - var dir - if (dirfd === -100) { - dir = FS.cwd() - } else { - var dirstream = SYSCALLS.getStreamFromFD(dirfd) - dir = dirstream.path - } - if (path.length == 0) { - if (!allowEmpty) { - throw new FS.ErrnoError(44) - } - return dir - } - return PATH.join2(dir, path) - }, - doStat: function(func, path, buf) { - try { - var stat = func(path) - } catch (e) { - if ( - e && - e.node && - PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node)) - ) { - return -54 - } - throw e - } - HEAP32[buf >> 2] = stat.dev - HEAP32[(buf + 8) >> 2] = stat.ino - HEAP32[(buf + 12) >> 2] = stat.mode - HEAPU32[(buf + 16) >> 2] = stat.nlink - HEAP32[(buf + 20) >> 2] = stat.uid - HEAP32[(buf + 24) >> 2] = stat.gid - HEAP32[(buf + 28) >> 2] = stat.rdev - ;(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), - ]), - (HEAP32[(buf + 40) >> 2] = tempI64[0]), - (HEAP32[(buf + 44) >> 2] = tempI64[1]) - HEAP32[(buf + 48) >> 2] = 4096 - HEAP32[(buf + 52) >> 2] = stat.blocks - var atime = stat.atime.getTime() - var mtime = stat.mtime.getTime() - var ctime = stat.ctime.getTime() - ;(tempI64 = [ - Math.floor(atime / 1e3) >>> 0, - ((tempDouble = Math.floor(atime / 1e3)), - +Math.abs(tempDouble) >= 1 - ? tempDouble > 0 - ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | - 0) >>> - 0 - : ~~+Math.ceil( - (tempDouble - +(~~tempDouble >>> 0)) / 4294967296 - ) >>> 0 - : 0), - ]), - (HEAP32[(buf + 56) >> 2] = tempI64[0]), - (HEAP32[(buf + 60) >> 2] = tempI64[1]) - HEAPU32[(buf + 64) >> 2] = (atime % 1e3) * 1e3 - ;(tempI64 = [ - Math.floor(mtime / 1e3) >>> 0, - ((tempDouble = Math.floor(mtime / 1e3)), - +Math.abs(tempDouble) >= 1 - ? tempDouble > 0 - ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | - 0) >>> - 0 - : ~~+Math.ceil( - (tempDouble - +(~~tempDouble >>> 0)) / 4294967296 - ) >>> 0 - : 0), - ]), - (HEAP32[(buf + 72) >> 2] = tempI64[0]), - (HEAP32[(buf + 76) >> 2] = tempI64[1]) - HEAPU32[(buf + 80) >> 2] = (mtime % 1e3) * 1e3 - ;(tempI64 = [ - Math.floor(ctime / 1e3) >>> 0, - ((tempDouble = Math.floor(ctime / 1e3)), - +Math.abs(tempDouble) >= 1 - ? tempDouble > 0 - ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | - 0) >>> - 0 - : ~~+Math.ceil( - (tempDouble - +(~~tempDouble >>> 0)) / 4294967296 - ) >>> 0 - : 0), - ]), - (HEAP32[(buf + 88) >> 2] = tempI64[0]), - (HEAP32[(buf + 92) >> 2] = tempI64[1]) - HEAPU32[(buf + 96) >> 2] = (ctime % 1e3) * 1e3 - ;(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), - ]), - (HEAP32[(buf + 104) >> 2] = tempI64[0]), - (HEAP32[(buf + 108) >> 2] = tempI64[1]) - return 0 - }, - doMsync: function(addr, stream, len, flags, offset) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43) - } - if (flags & 2) { - return 0 - } - var buffer = HEAPU8.slice(addr, addr + len) - FS.msync(stream, buffer, offset, len, flags) - }, - varargs: undefined, - get: function() { - SYSCALLS.varargs += 4 - var ret = HEAP32[(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 - }, - } - function ___syscall_fcntl64(fd, cmd, varargs) { - SYSCALLS.varargs = varargs - try { - var stream = SYSCALLS.getStreamFromFD(fd) - switch (cmd) { - case 0: { - var arg = SYSCALLS.get() - if (arg < 0) { - return -28 - } - var newStream - newStream = FS.createStream(stream, arg) - return newStream.fd - } - case 1: - case 2: - return 0 - case 3: - return stream.flags - case 4: { - var arg = SYSCALLS.get() - stream.flags |= arg - return 0 - } - case 5: { - var arg = SYSCALLS.get() - var offset = 0 - HEAP16[(arg + offset) >> 1] = 2 - return 0 - } - case 6: - case 7: - return 0 - case 16: - case 8: - return -28 - case 9: - setErrNo(28) - return -1 - default: { - return -28 - } - } - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return -e.errno - } - } - function ___syscall_getcwd(buf, size) { - try { - if (size === 0) return -28 - var cwd = FS.cwd() - var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1 - if (size < cwdLengthInBytes) return -68 - stringToUTF8(cwd, buf, size) - return cwdLengthInBytes - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return -e.errno - } - } - function ___syscall_ioctl(fd, op, varargs) { - SYSCALLS.varargs = varargs - try { - var stream = SYSCALLS.getStreamFromFD(fd) - switch (op) { - case 21509: - case 21505: { - if (!stream.tty) return -59 - return 0 - } - case 21510: - case 21511: - case 21512: - case 21506: - case 21507: - case 21508: { - if (!stream.tty) return -59 - return 0 - } - case 21519: { - if (!stream.tty) return -59 - var argp = SYSCALLS.get() - HEAP32[argp >> 2] = 0 - return 0 - } - case 21520: { - if (!stream.tty) return -59 - return -28 - } - case 21531: { - var argp = SYSCALLS.get() - return FS.ioctl(stream, op, argp) - } - case 21523: { - if (!stream.tty) return -59 - return 0 - } - case 21524: { - if (!stream.tty) return -59 - return 0 - } - default: - return -28 - } - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return -e.errno - } - } - function ___syscall_openat(dirfd, path, flags, varargs) { - SYSCALLS.varargs = varargs - try { - path = SYSCALLS.getStr(path) - path = SYSCALLS.calculateAt(dirfd, path) - var mode = varargs ? SYSCALLS.get() : 0 - return FS.open(path, flags, mode).fd - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return -e.errno - } - } - function ___syscall_readlinkat(dirfd, path, buf, bufsize) { - try { - path = SYSCALLS.getStr(path) - path = SYSCALLS.calculateAt(dirfd, path) - if (bufsize <= 0) return -28 - var ret = FS.readlink(path) - var len = Math.min(bufsize, lengthBytesUTF8(ret)) - var endChar = HEAP8[buf + len] - stringToUTF8(ret, buf, bufsize + 1) - HEAP8[buf + len] = endChar - return len - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return -e.errno - } - } - function ___syscall_stat64(path, buf) { - try { - path = SYSCALLS.getStr(path) - return SYSCALLS.doStat(FS.stat, path, buf) - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return -e.errno - } - } - function _abort() { - abort('') - } - function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.copyWithin(dest, src, src + num) - } - function getHeapMax() { - return 2147483648 - } - function emscripten_realloc_buffer(size) { - try { - wasmMemory.grow((size - buffer.byteLength + 65535) >>> 16) - updateGlobalBufferAndViews(wasmMemory.buffer) - return 1 - } catch (e) {} - } - function _emscripten_resize_heap(requestedSize) { - var oldSize = HEAPU8.length - requestedSize = requestedSize >>> 0 - var maxHeapSize = getHeapMax() - if (requestedSize > maxHeapSize) { - return false - } - let alignUp = (x, multiple) => - x + ((multiple - (x % multiple)) % multiple) - for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { - var overGrownHeapSize = oldSize * (1 + 0.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 - } - var ENV = {} - function getExecutableName() { - return thisProgram || './this.program' - } - 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 - } - function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; ++i) { - HEAP8[buffer++ >> 0] = str.charCodeAt(i) - } - if (!dontAddNull) HEAP8[buffer >> 0] = 0 - } - function _environ_get(__environ, environ_buf) { - var bufSize = 0 - getEnvStrings().forEach(function(string, i) { - var ptr = environ_buf + bufSize - HEAPU32[(__environ + i * 4) >> 2] = ptr - writeAsciiToMemory(string, ptr) - bufSize += string.length + 1 - }) - return 0 - } - function _environ_sizes_get(penviron_count, penviron_buf_size) { - var strings = getEnvStrings() - HEAPU32[penviron_count >> 2] = strings.length - var bufSize = 0 - strings.forEach(function(string) { - bufSize += string.length + 1 - }) - HEAPU32[penviron_buf_size >> 2] = bufSize - return 0 - } - function _proc_exit(code) { - EXITSTATUS = code - if (!keepRuntimeAlive()) { - if (Module['onExit']) Module['onExit'](code) - ABORT = true - } - quit_(code, new ExitStatus(code)) - } - function exitJS(status, implicit) { - EXITSTATUS = status - _proc_exit(status) - } - var _exit = exitJS - function _fd_close(fd) { - try { - var stream = SYSCALLS.getStreamFromFD(fd) - FS.close(stream) - return 0 - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return e.errno - } - } - function doReadv(stream, iov, iovcnt, offset) { - var ret = 0 - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] - iov += 8 - var curr = FS.read(stream, HEAP8, ptr, len, offset) - if (curr < 0) return -1 - ret += curr - if (curr < len) break - } - return ret - } - function _fd_read(fd, iov, iovcnt, pnum) { - try { - var stream = SYSCALLS.getStreamFromFD(fd) - var num = doReadv(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num - return 0 - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return e.errno - } - } - function convertI32PairToI53Checked(lo, hi) { - return (hi + 2097152) >>> 0 < 4194305 - !!lo - ? (lo >>> 0) + hi * 4294967296 - : NaN - } - function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { - try { - var offset = convertI32PairToI53Checked(offset_low, offset_high) - if (isNaN(offset)) return 61 - var stream = SYSCALLS.getStreamFromFD(fd) - 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), - ]), - (HEAP32[newOffset >> 2] = tempI64[0]), - (HEAP32[(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)) throw e - return e.errno - } - } - function doWritev(stream, iov, iovcnt, offset) { - var ret = 0 - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAPU32[iov >> 2] - var len = HEAPU32[(iov + 4) >> 2] - iov += 8 - var curr = FS.write(stream, HEAP8, ptr, len, offset) - if (curr < 0) return -1 - ret += curr - } - return ret - } - function _fd_write(fd, iov, iovcnt, pnum) { - try { - var stream = SYSCALLS.getStreamFromFD(fd) - var num = doWritev(stream, iov, iovcnt) - HEAPU32[pnum >> 2] = num - return 0 - } catch (e) { - if (typeof FS == 'undefined' || !(e instanceof FS.ErrnoError)) throw e - return e.errno - } - } - function __isLeapYear(year) { - return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) - } - function __arraySum(array, index) { - var sum = 0 - for (var i = 0; i <= index; sum += array[i++]) {} - return sum - } - var __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - var __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] - 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 - } - function writeArrayToMemory(array, buffer) { - HEAP8.set(array, buffer) - } - function _strftime(s, maxsize, format, tm) { - var tm_zone = HEAP32[(tm + 40) >> 2] - var date = { - tm_sec: HEAP32[tm >> 2], - tm_min: HEAP32[(tm + 4) >> 2], - tm_hour: HEAP32[(tm + 8) >> 2], - tm_mday: HEAP32[(tm + 12) >> 2], - tm_mon: HEAP32[(tm + 16) >> 2], - tm_year: HEAP32[(tm + 20) >> 2], - tm_wday: HEAP32[(tm + 24) >> 2], - tm_yday: HEAP32[(tm + 28) >> 2], - tm_isdst: HEAP32[(tm + 32) >> 2], - tm_gmtoff: HEAP32[(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.length < digits) { - str = character[0] + str - } - return str - } - function leadingNulls(value, digits) { - return leadingSomething(value, digits, '0') - } - function compareByDay(date1, date2) { - function sgn(value) { - return value < 0 ? -1 : value > 0 ? 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 - } - return thisDate.getFullYear() - } - 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' - } - 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 days = date.tm_yday + 7 - date.tm_wday - return leadingNulls(Math.floor(days / 7), 2) - }, - '%V': function(date) { - var val = Math.floor( - (date.tm_yday + 7 - ((date.tm_wday + 6) % 7)) / 7 - ) - if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) { - val++ - } - if (!val) { - val = 52 - var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7 - if ( - dec31 == 4 || - (dec31 == 5 && __isLeapYear((date.tm_year % 400) - 1)) - ) { - val++ - } - } else if (val == 53) { - var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7 - if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1 - } - return leadingNulls(val, 2) - }, - '%w': function(date) { - return date.tm_wday - }, - '%W': function(date) { - var days = date.tm_yday + 7 - ((date.tm_wday + 6) % 7) - return leadingNulls(Math.floor(days / 7), 2) - }, - '%y': function(date) { - return (date.tm_year + 1900).toString().substring(2) - }, - '%Y': function(date) { - return date.tm_year + 1900 - }, - '%z': function(date) { - var off = date.tm_gmtoff - var ahead = off >= 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 '%' - }, - } - pattern = pattern.replace(/%%/g, '\0\0') - for (var rule in EXPANSION_RULES_2) { - if (pattern.includes(rule)) { - pattern = pattern.replace( - new RegExp(rule, 'g'), - EXPANSION_RULES_2[rule](date) - ) - } - } - pattern = pattern.replace(/\0\0/g, '%') - var bytes = intArrayFromString(pattern, false) - if (bytes.length > maxsize) { - return 0 - } - writeArrayToMemory(bytes, s) - return bytes.length - 1 - } - function _strftime_l(s, maxsize, format, tm, loc) { - return _strftime(s, maxsize, format, tm) - } - function handleException(e) { - if (e instanceof ExitStatus || e == 'unwind') { - return EXITSTATUS - } - quit_(1, e) - } - function allocateUTF8OnStack(str) { - var size = lengthBytesUTF8(str) + 1 - var ret = stackAlloc(size) - stringToUTF8Array(str, HEAP8, ret, size) - return ret - } - function getCFunc(ident) { - var func = Module['_' + ident] - return func - } - function ccall(ident, returnType, argTypes, args, opts) { - var toC = { - string: str => { - var ret = 0 - if (str !== null && str !== undefined && str !== 0) { - var len = (str.length << 2) + 1 - ret = stackAlloc(len) - stringToUTF8(str, ret, len) - } - return ret - }, - array: arr => { - var ret = stackAlloc(arr.length) - writeArrayToMemory(arr, ret) - return ret - }, - } - function convertReturnValue(ret) { - if (returnType === 'string') { - return UTF8ToString(ret) - } - if (returnType === 'boolean') return Boolean(ret) - return ret - } - var func = getCFunc(ident) - var cArgs = [] - var stack = 0 - if (args) { - for (var i = 0; i < args.length; i++) { - var converter = toC[argTypes[i]] - if (converter) { - if (stack === 0) stack = stackSave() - cArgs[i] = converter(args[i]) - } else { - cArgs[i] = args[i] - } - } - } - var ret = func.apply(null, cArgs) - function onDone(ret) { - if (stack !== 0) stackRestore(stack) - return convertReturnValue(ret) - } - ret = onDone(ret) - return ret - } - function cwrap(ident, returnType, argTypes, opts) { - argTypes = argTypes || [] - var numericArgs = argTypes.every( - type => type === 'number' || type === 'boolean' - ) - var numericRet = returnType !== 'string' - if (numericRet && numericArgs && !opts) { - return getCFunc(ident) - } - return function() { - return ccall(ident, returnType, argTypes, arguments, opts) - } - } - function AsciiToString(ptr) { - var str = '' - while (1) { - var ch = HEAPU8[ptr++ >> 0] - if (!ch) return str - str += String.fromCharCode(ch) - } - } - 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() - Module['FS_createPath'] = FS.createPath - Module['FS_createDataFile'] = FS.createDataFile - Module['FS_createPreloadedFile'] = FS.createPreloadedFile - Module['FS_unlink'] = FS.unlink - Module['FS_createLazyFile'] = FS.createLazyFile - Module['FS_createDevice'] = FS.createDevice - if (ENVIRONMENT_IS_NODE) { - NODEFS.staticInit() - } - ERRNO_CODES = { - EPERM: 63, - ENOENT: 44, - ESRCH: 71, - EINTR: 27, - EIO: 29, - ENXIO: 60, - E2BIG: 1, - ENOEXEC: 45, - EBADF: 8, - ECHILD: 12, - EAGAIN: 6, - EWOULDBLOCK: 6, - ENOMEM: 48, - EACCES: 2, - EFAULT: 21, - ENOTBLK: 105, - EBUSY: 10, - EEXIST: 20, - EXDEV: 75, - ENODEV: 43, - ENOTDIR: 54, - EISDIR: 31, - EINVAL: 28, - ENFILE: 41, - EMFILE: 33, - ENOTTY: 59, - ETXTBSY: 74, - EFBIG: 22, - ENOSPC: 51, - ESPIPE: 70, - EROFS: 69, - EMLINK: 34, - EPIPE: 64, - EDOM: 18, - ERANGE: 68, - ENOMSG: 49, - EIDRM: 24, - ECHRNG: 106, - EL2NSYNC: 156, - EL3HLT: 107, - EL3RST: 108, - ELNRNG: 109, - EUNATCH: 110, - ENOCSI: 111, - EL2HLT: 112, - EDEADLK: 16, - ENOLCK: 46, - EBADE: 113, - EBADR: 114, - EXFULL: 115, - ENOANO: 104, - EBADRQC: 103, - EBADSLT: 102, - EDEADLOCK: 16, - EBFONT: 101, - ENOSTR: 100, - ENODATA: 116, - ETIME: 117, - ENOSR: 118, - ENONET: 119, - ENOPKG: 120, - EREMOTE: 121, - ENOLINK: 47, - EADV: 122, - ESRMNT: 123, - ECOMM: 124, - EPROTO: 65, - EMULTIHOP: 36, - EDOTDOT: 125, - EBADMSG: 9, - ENOTUNIQ: 126, - EBADFD: 127, - EREMCHG: 128, - ELIBACC: 129, - ELIBBAD: 130, - ELIBSCN: 131, - ELIBMAX: 132, - ELIBEXEC: 133, - ENOSYS: 52, - ENOTEMPTY: 55, - ENAMETOOLONG: 37, - ELOOP: 32, - EOPNOTSUPP: 138, - EPFNOSUPPORT: 139, - ECONNRESET: 15, - ENOBUFS: 42, - EAFNOSUPPORT: 5, - EPROTOTYPE: 67, - ENOTSOCK: 57, - ENOPROTOOPT: 50, - ESHUTDOWN: 140, - ECONNREFUSED: 14, - EADDRINUSE: 3, - ECONNABORTED: 13, - ENETUNREACH: 40, - ENETDOWN: 38, - ETIMEDOUT: 73, - EHOSTDOWN: 142, - EHOSTUNREACH: 23, - EINPROGRESS: 26, - EALREADY: 7, - EDESTADDRREQ: 17, - EMSGSIZE: 35, - EPROTONOSUPPORT: 66, - ESOCKTNOSUPPORT: 137, - EADDRNOTAVAIL: 4, - ENETRESET: 39, - EISCONN: 30, - ENOTCONN: 53, - ETOOMANYREFS: 141, - EUSERS: 136, - EDQUOT: 19, - ESTALE: 72, - ENOTSUP: 138, - ENOMEDIUM: 148, - EILSEQ: 25, - EOVERFLOW: 61, - ECANCELED: 11, - ENOTRECOVERABLE: 56, - EOWNERDEAD: 62, - ESTRPIPE: 135, - } - var asmLibraryArg = { - a: ___cxa_throw, - d: ___syscall_fcntl64, - r: ___syscall_getcwd, - i: ___syscall_ioctl, - j: ___syscall_openat, - n: ___syscall_readlinkat, - o: ___syscall_stat64, - b: _abort, - f: _emscripten_memcpy_big, - m: _emscripten_resize_heap, - p: _environ_get, - q: _environ_sizes_get, - c: _exit, - e: _fd_close, - h: _fd_read, - k: _fd_seek, - g: _fd_write, - l: _strftime_l, - } - var asm = createWasm() - var ___wasm_call_ctors = (Module['___wasm_call_ctors'] = function() { - return (___wasm_call_ctors = Module['___wasm_call_ctors'] = - Module['asm']['t']).apply(null, arguments) - }) - var _main = (Module['_main'] = function() { - return (_main = Module['_main'] = Module['asm']['u']).apply( - null, - arguments - ) - }) - var ___errno_location = (Module['___errno_location'] = function() { - return (___errno_location = Module['___errno_location'] = - Module['asm']['v']).apply(null, arguments) - }) - var _itk_wasm_input_array_alloc = (Module[ - '_itk_wasm_input_array_alloc' - ] = function() { - return (_itk_wasm_input_array_alloc = Module[ - '_itk_wasm_input_array_alloc' - ] = Module['asm']['w']).apply(null, arguments) - }) - var _itk_wasm_input_json_alloc = (Module[ - '_itk_wasm_input_json_alloc' - ] = function() { - return (_itk_wasm_input_json_alloc = Module[ - '_itk_wasm_input_json_alloc' - ] = Module['asm']['x']).apply(null, arguments) - }) - var _itk_wasm_output_json_address = (Module[ - '_itk_wasm_output_json_address' - ] = function() { - return (_itk_wasm_output_json_address = Module[ - '_itk_wasm_output_json_address' - ] = Module['asm']['y']).apply(null, arguments) - }) - var _itk_wasm_output_json_size = (Module[ - '_itk_wasm_output_json_size' - ] = function() { - return (_itk_wasm_output_json_size = Module[ - '_itk_wasm_output_json_size' - ] = Module['asm']['z']).apply(null, arguments) - }) - var _itk_wasm_output_array_address = (Module[ - '_itk_wasm_output_array_address' - ] = function() { - return (_itk_wasm_output_array_address = Module[ - '_itk_wasm_output_array_address' - ] = Module['asm']['A']).apply(null, arguments) - }) - var _itk_wasm_output_array_size = (Module[ - '_itk_wasm_output_array_size' - ] = function() { - return (_itk_wasm_output_array_size = Module[ - '_itk_wasm_output_array_size' - ] = Module['asm']['B']).apply(null, arguments) - }) - var _itk_wasm_free_all = (Module['_itk_wasm_free_all'] = function() { - return (_itk_wasm_free_all = Module['_itk_wasm_free_all'] = - Module['asm']['C']).apply(null, arguments) - }) - var stackSave = (Module['stackSave'] = function() { - return (stackSave = Module['stackSave'] = Module['asm']['E']).apply( - null, - arguments - ) - }) - var stackRestore = (Module['stackRestore'] = function() { - return (stackRestore = Module['stackRestore'] = Module['asm']['F']).apply( - null, - arguments - ) - }) - var stackAlloc = (Module['stackAlloc'] = function() { - return (stackAlloc = Module['stackAlloc'] = Module['asm']['G']).apply( - null, - arguments - ) - }) - var ___cxa_is_pointer_type = (Module[ - '___cxa_is_pointer_type' - ] = function() { - return (___cxa_is_pointer_type = Module['___cxa_is_pointer_type'] = - Module['asm']['H']).apply(null, arguments) - }) - Module['addRunDependency'] = addRunDependency - Module['removeRunDependency'] = removeRunDependency - Module['FS_createPath'] = FS.createPath - Module['FS_createDataFile'] = FS.createDataFile - Module['FS_createPreloadedFile'] = FS.createPreloadedFile - Module['FS_createLazyFile'] = FS.createLazyFile - Module['FS_createDevice'] = FS.createDevice - Module['FS_unlink'] = FS.unlink - Module['callMain'] = callMain - Module['ccall'] = ccall - Module['cwrap'] = cwrap - Module['AsciiToString'] = AsciiToString - Module['writeArrayToMemory'] = writeArrayToMemory - Module['writeAsciiToMemory'] = writeAsciiToMemory - var calledRun - dependenciesFulfilled = function runCaller() { - if (!calledRun) run() - if (!calledRun) dependenciesFulfilled = runCaller - } - function callMain(args) { - var entryFunction = Module['_main'] - args = args || [] - args.unshift(thisProgram) - var argc = args.length - var argv = stackAlloc((argc + 1) * 4) - var argv_ptr = argv >> 2 - args.forEach(arg => { - HEAP32[argv_ptr++] = allocateUTF8OnStack(arg) - }) - HEAP32[argv_ptr] = 0 - try { - var ret = entryFunction(argc, argv) - exitJS(ret, true) - return ret - } catch (e) { - return handleException(e) - } - } - function run(args) { - args = args || arguments_ - if (runDependencies > 0) { - 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() - } - } - if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') - Module['preInit'] = [Module['preInit']] - while (Module['preInit'].length > 0) { - Module['preInit'].pop()() - } - } - var shouldRunNow = false - if (Module['noInitialRun']) shouldRunNow = false - run() - Module.mountContainingDir = function(filePath) { - if (!ENVIRONMENT_IS_NODE) { - return - } - var path = require('path') - var containingDir = path.dirname(filePath) - if (FS.isDir(containingDir) || containingDir === '/') { - return - } - var currentDir = '/' - var splitContainingDir = containingDir.split(path.sep) - for (var ii = 1; ii < splitContainingDir.length; ii++) { - currentDir += splitContainingDir[ii] - if (!FS.analyzePath(currentDir).exists) { - FS.mkdir(currentDir) - } - currentDir += '/' - } - FS.mount(NODEFS, { root: containingDir }, currentDir) - return currentDir + path.basename(filePath) - } - Module.unmountContainingDir = function(filePath) { - if (!ENVIRONMENT_IS_NODE) { - return - } - var path = require('path') - var containingDir = path.dirname(filePath) - FS.unmount(containingDir) - } - Module.fs_mkdirs = function(dirs) { - var currentDir = '/' - var splitDirs = dirs.split('/') - for (var ii = 1; ii < splitDirs.length; ++ii) { - currentDir += splitDirs[ii] - if (!FS.analyzePath(currentDir).exists) { - FS.mkdir(currentDir) - } - currentDir += '/' - } - } - Module.fs_readFile = function(path, opts) { - return FS.readFile(path, opts) - } - Module.fs_writeFile = function(path, data, opts) { - return FS.writeFile(path, data, opts) - } - Module.fs_unlink = function(path) { - return FS.unlink(path) - } - Module.fs_open = function(path, flags, mode) { - return FS.open(path, flags, mode) - } - Module.fs_stat = function(path) { - return FS.stat(path) - } - Module.fs_read = function(stream, buffer, offset, length, position) { - return FS.read(stream, buffer, offset, length, position) - } - Module.fs_close = function(stream) { - return FS.close(stream) - } - - return ResampleLabelImage.ready - } -})() -if (typeof exports === 'object' && typeof module === 'object') - module.exports = ResampleLabelImage -else if (typeof define === 'function' && define['amd']) - define([], function() { - return ResampleLabelImage - }) -else if (typeof exports === 'object') - exports['ResampleLabelImage'] = ResampleLabelImage diff --git a/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.umd.wasm b/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.umd.wasm deleted file mode 100755 index 85cff6676..000000000 Binary files a/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.umd.wasm and /dev/null differ diff --git a/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.wasm b/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.wasm index 85cff6676..dc7bf1be9 100755 Binary files a/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.wasm and b/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.wasm differ diff --git a/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.wasm.zst b/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.wasm.zst new file mode 100755 index 000000000..915a45cb8 Binary files /dev/null and b/src/IO/ResampleLabelImage/emscripten-build/ResampleLabelImage.wasm.zst differ diff --git a/src/IO/ResampleLabelImage/package-lock.json b/src/IO/ResampleLabelImage/package-lock.json index fc310b3bb..6f8c1ff9d 100644 --- a/src/IO/ResampleLabelImage/package-lock.json +++ b/src/IO/ResampleLabelImage/package-lock.json @@ -10,7 +10,7 @@ "license": "Apache-2.0", "dependencies": { "itk-image-io": "^1.0.0-b.84", - "itk-wasm": "^1.0.0-b.84" + "itk-wasm": "^1.0.0-b.158" } }, "node_modules/@babel/runtime": { @@ -24,17 +24,29 @@ "node": ">=6.9.0" } }, + "node_modules/@thewtex/zstddec": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@thewtex/zstddec/-/zstddec-0.2.0.tgz", + "integrity": "sha512-lIS+smrfa48WGlDVQSQSm0jBnwVp5XmfGJWU9q0J0fRFY9ohzK4s27Zg2SFMb1NWMp9RiANAdK+/q86EBGWR1Q==" + }, "node_modules/@types/emscripten": { "version": "1.39.6", "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.6.tgz", "integrity": "sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/axios": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", - "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dependencies": { - "follow-redirects": "^1.14.4" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/balanced-match": { @@ -50,6 +62,22 @@ "balanced-match": "^1.0.0" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comlink": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.1.tgz", + "integrity": "sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==" + }, "node_modules/commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", @@ -58,10 +86,18 @@ "node": "^12.20.0 || >=14" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "funding": [ { "type": "individual", @@ -77,6 +113,19 @@ } } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -140,7 +189,15 @@ "itk-wasm": "1.0.0-b.84" } }, - "node_modules/itk-wasm": { + "node_modules/itk-image-io/node_modules/axios": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", + "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", + "dependencies": { + "follow-redirects": "^1.14.4" + } + }, + "node_modules/itk-image-io/node_modules/itk-wasm": { "version": "1.0.0-b.84", "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.84.tgz", "integrity": "sha512-iM3ZMVqGv/3kjoe4UUTO0PlyGLMOrmOb0e1e6+5kHu4fnTg6PhNjxLGdanLH/OlX6VSv6LOP6o8rKiC7Xo0zRw==", @@ -160,6 +217,27 @@ "itk-wasm": "src/itk-wasm-cli.js" } }, + "node_modules/itk-wasm": { + "version": "1.0.0-b.158", + "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.158.tgz", + "integrity": "sha512-IHRmwu1zxLmH9auF7kN3BREbom9NGorVhK1g4TRNsr4qRbuHZsZ3RsGRNVqWI2LZamo3Rw9sDYrM7NMA5x0dqQ==", + "dependencies": { + "@babel/runtime": "^7.15.4", + "@thewtex/zstddec": "^0.2.0", + "@types/emscripten": "^1.39.6", + "axios": "^1.4.0", + "comlink": "^4.4.1", + "commander": "^9.4.0", + "fs-extra": "^10.0.0", + "glob": "^8.1.0", + "markdown-table": "^3.0.3", + "mime-types": "^2.1.35", + "wasm-feature-detect": "^1.5.1" + }, + "bin": { + "itk-wasm": "src/itk-wasm-cli.js" + } + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -223,6 +301,11 @@ "resolved": "https://registry.npmjs.org/promise-file-reader/-/promise-file-reader-1.0.3.tgz", "integrity": "sha512-/sumzg8xjurm6PchjhlXb592lv3tFFaO13DtsFqbglhdZjCzxhDgvmPv/vMcarpfGiCRPC4ZvZ+YsV0am0d4+g==" }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", @@ -236,6 +319,11 @@ "node": ">= 10.0.0" } }, + "node_modules/wasm-feature-detect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/wasm-feature-detect/-/wasm-feature-detect-1.6.1.tgz", + "integrity": "sha512-R1i9ED8UlLu/foILNB1ck9XS63vdtqU/tP1MCugVekETp/ySCrBZRk5I/zI67cI1wlQYeSonNm1PLjDHZDNg6g==" + }, "node_modules/webworker-promise": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/webworker-promise/-/webworker-promise-0.4.4.tgz", @@ -256,17 +344,29 @@ "regenerator-runtime": "^0.13.11" } }, + "@thewtex/zstddec": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@thewtex/zstddec/-/zstddec-0.2.0.tgz", + "integrity": "sha512-lIS+smrfa48WGlDVQSQSm0jBnwVp5XmfGJWU9q0J0fRFY9ohzK4s27Zg2SFMb1NWMp9RiANAdK+/q86EBGWR1Q==" + }, "@types/emscripten": { "version": "1.39.6", "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.6.tgz", "integrity": "sha512-H90aoynNhhkQP6DRweEjJp5vfUVdIj7tdPLsu7pq89vODD/lcugKfZOsfgwpvM6XUewEp2N5dCg1Uf3Qe55Dcg==" }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "axios": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", - "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "requires": { - "follow-redirects": "^1.14.4" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "balanced-match": { @@ -282,15 +382,43 @@ "balanced-match": "^1.0.0" } }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "comlink": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.1.tgz", + "integrity": "sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==" + }, "commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==" }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } }, "fs-extra": { "version": "10.1.0", @@ -344,23 +472,51 @@ "integrity": "sha512-lqMlvvFT9y3XkmfQZWQ6WUN6Ci6Bu7eb1aV5xex8CsvXhFrEDmuInmlT9f67H2cluTYvuRV6UzEPBnyimUAGZQ==", "requires": { "itk-wasm": "1.0.0-b.84" + }, + "dependencies": { + "axios": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", + "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", + "requires": { + "follow-redirects": "^1.14.4" + } + }, + "itk-wasm": { + "version": "1.0.0-b.84", + "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.84.tgz", + "integrity": "sha512-iM3ZMVqGv/3kjoe4UUTO0PlyGLMOrmOb0e1e6+5kHu4fnTg6PhNjxLGdanLH/OlX6VSv6LOP6o8rKiC7Xo0zRw==", + "requires": { + "@babel/runtime": "^7.15.4", + "@types/emscripten": "^1.39.6", + "axios": "^0.23.0", + "commander": "^9.4.0", + "fs-extra": "^10.0.0", + "glob": "^8.1.0", + "markdown-table": "^3.0.3", + "mime-types": "^2.1.35", + "promise-file-reader": "^1.0.3", + "webworker-promise": "^0.4.2" + } + } } }, "itk-wasm": { - "version": "1.0.0-b.84", - "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.84.tgz", - "integrity": "sha512-iM3ZMVqGv/3kjoe4UUTO0PlyGLMOrmOb0e1e6+5kHu4fnTg6PhNjxLGdanLH/OlX6VSv6LOP6o8rKiC7Xo0zRw==", + "version": "1.0.0-b.158", + "resolved": "https://registry.npmjs.org/itk-wasm/-/itk-wasm-1.0.0-b.158.tgz", + "integrity": "sha512-IHRmwu1zxLmH9auF7kN3BREbom9NGorVhK1g4TRNsr4qRbuHZsZ3RsGRNVqWI2LZamo3Rw9sDYrM7NMA5x0dqQ==", "requires": { "@babel/runtime": "^7.15.4", + "@thewtex/zstddec": "^0.2.0", "@types/emscripten": "^1.39.6", - "axios": "^0.23.0", + "axios": "^1.4.0", + "comlink": "^4.4.1", "commander": "^9.4.0", "fs-extra": "^10.0.0", "glob": "^8.1.0", "markdown-table": "^3.0.3", "mime-types": "^2.1.35", - "promise-file-reader": "^1.0.3", - "webworker-promise": "^0.4.2" + "wasm-feature-detect": "^1.5.1" } }, "jsonfile": { @@ -411,6 +567,11 @@ "resolved": "https://registry.npmjs.org/promise-file-reader/-/promise-file-reader-1.0.3.tgz", "integrity": "sha512-/sumzg8xjurm6PchjhlXb592lv3tFFaO13DtsFqbglhdZjCzxhDgvmPv/vMcarpfGiCRPC4ZvZ+YsV0am0d4+g==" }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", @@ -421,6 +582,11 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" }, + "wasm-feature-detect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/wasm-feature-detect/-/wasm-feature-detect-1.6.1.tgz", + "integrity": "sha512-R1i9ED8UlLu/foILNB1ck9XS63vdtqU/tP1MCugVekETp/ySCrBZRk5I/zI67cI1wlQYeSonNm1PLjDHZDNg6g==" + }, "webworker-promise": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/webworker-promise/-/webworker-promise-0.4.4.tgz", diff --git a/src/IO/ResampleLabelImage/package.json b/src/IO/ResampleLabelImage/package.json index b2ce247c5..e3c57e68c 100644 --- a/src/IO/ResampleLabelImage/package.json +++ b/src/IO/ResampleLabelImage/package.json @@ -13,6 +13,6 @@ "license": "Apache-2.0", "dependencies": { "itk-image-io": "^1.0.0-b.84", - "itk-wasm": "^1.0.0-b.84" + "itk-wasm": "^1.0.0-b.158" } } diff --git a/src/IO/itkWasmUtils.js b/src/IO/itkWasmUtils.js index 764563d52..6e734f594 100644 --- a/src/IO/itkWasmUtils.js +++ b/src/IO/itkWasmUtils.js @@ -5,6 +5,7 @@ import { WorkerPool, stackImages, } from 'itk-wasm' +import itkConfig from '../itkConfig.js' export async function runWasm({ pipeline, @@ -22,6 +23,10 @@ export async function runWasm({ maxSplits ) + const options = { + pipelineWorkerUrl: itkConfig.pipelineWorkerUrl, + pipelineBaseUrl: itkConfig.pipelinesUrl, + } const tasks = [...Array(splits).keys()].map(split => { const taskArgs = [ ...[...Array(images.length).keys()].map(num => num.toString()), @@ -41,7 +46,7 @@ export async function runWasm({ data: imageSharedBufferOrCopy(image), })) - return [pipeline, taskArgs, outputs, inputs] + return [pipeline, taskArgs, outputs, inputs, options] }) const workerPool = new WorkerPool(numberOfWorkers, runPipeline) diff --git a/src/IO/processFiles.js b/src/IO/processFiles.js index 8c29c66ee..af9859137 100644 --- a/src/IO/processFiles.js +++ b/src/IO/processFiles.js @@ -1,12 +1,12 @@ import { extensionToMeshIO, - readImageFile, readImageDICOMFileSeries, readMeshFile, FloatTypes, getFileExtension, meshToPolyData, } from 'itk-wasm' +import { readImage } from '@itk-wasm/image-io' import vtk from 'vtk.js/Sources/vtk' import vtkXMLPolyDataReader from 'vtk.js/Sources/IO/XML/XMLPolyDataReader' import vtkXMLImageDataReader from 'vtk.js/Sources/IO/XML/XMLImageDataReader' @@ -61,7 +61,7 @@ const readDataFromFiles = async files => { const polyData = vtkITKHelper.convertItkToVtkPolyData(itkPolyData) return { is3D, data: vtk(polyData) } } catch (error) { - return readImageFile(null, file) + return readImage(null, file) .then(({ image: itkImage, webWorker }) => { webWorker.terminate() is3D = itkImage.imageType.dimension === 3 @@ -72,7 +72,7 @@ const readDataFromFiles = async files => { }) } } - const { image: itkImage, webWorker } = await readImageFile(null, file) + const { image: itkImage, webWorker } = await readImage(null, file) itkImage.name = file.name webWorker.terminate() const is3D = itkImage.imageType.dimension === 3 diff --git a/src/IO/toMultiscaleSpatialImage.js b/src/IO/toMultiscaleSpatialImage.js index 27e71afe1..e53c1415d 100644 --- a/src/IO/toMultiscaleSpatialImage.js +++ b/src/IO/toMultiscaleSpatialImage.js @@ -1,4 +1,4 @@ -import { readImageArrayBuffer } from 'itk-wasm' +import { readImage } from '@itk-wasm/image-io' import MultiscaleSpatialImage from './MultiscaleSpatialImage' import InMemoryMultiscaleSpatialImage from './InMemoryMultiscaleSpatialImage' @@ -72,11 +72,9 @@ async function toMultiscaleSpatialImage( ) } else { const dataBuffer = await fetchBinaryContent(image) - const { image: itkImage, webWorker } = await readImageArrayBuffer( - null, - dataBuffer, - image.pathname.split('/').pop() - ) + + const file = new File([dataBuffer], image.pathname.split('/').pop()) + const { image: itkImage, webWorker } = await readImage(null, file) webWorker.terminate() multiscaleImage = await itkImageToInMemoryMultiscaleSpatialImage( itkImage, diff --git a/src/index.js b/src/index.js index 62c4bbf6a..9272567bb 100644 --- a/src/index.js +++ b/src/index.js @@ -1,8 +1,10 @@ import axios from 'axios' import vtkURLExtract from 'vtk.js/Sources/Common/Core/URLExtract' -import { readImageArrayBuffer } from 'itk-wasm' +import { readImage } from '@itk-wasm/image-io' +import { setPipelineWorkerUrl, setPipelinesBaseUrl } from 'itk-wasm' +import itkConfig from '../itkConfig.js' import fetchBinaryContent from './IO/fetchBinaryContent' import fetchJsonContent from './IO/fetchJsonContent' import { processFiles } from './IO/processFiles' @@ -41,6 +43,9 @@ export async function createViewerFromFiles(el, files, use2D = false) { return processFiles(el, { files: files, use2D }) } +setPipelineWorkerUrl(itkConfig.pipelineWorkerUrl) +setPipelinesBaseUrl(itkConfig.pipelinesUrl) + async function makeImage({ image, progressCallback, isLabelImage = false }) { if (!image) return null @@ -50,11 +55,11 @@ async function makeImage({ image, progressCallback, isLabelImage = false }) { return toMultiscaleSpatialImage(imageUrlObj, isLabelImage) } - const result = await readImageArrayBuffer( - null, - await fetchBinaryContent(imageUrlObj, progressCallback), + const file = new File( + [await fetchBinaryContent(imageUrlObj, progressCallback)], imageUrlObj.pathname.split('/').pop() ) + const result = await readImage(null, file) result.webWorker.terminate() return toMultiscaleSpatialImage(result.image, isLabelImage) diff --git a/src/itkConfig.js b/src/itkConfig.js index 1f52648b2..3e005826b 100644 --- a/src/itkConfig.js +++ b/src/itkConfig.js @@ -1,8 +1,8 @@ /* eslint-disable no-undef */ const itkConfig = { pipelineWorkerUrl: - __webpack_public_path__ + 'itk/web-workers/min-bundles/pipeline.worker.js', - imageIOUrl: __webpack_public_path__ + 'itk/image-io', + __webpack_public_path__ + 'itk/web-workers/itk-wasm-pipeline.min.worker.js', + imageIOUrl: __webpack_public_path__ + 'itk/pipeline', meshIOUrl: __webpack_public_path__ + 'itk/mesh-io', pipelinesUrl: __webpack_public_path__ + 'itk/pipeline', } diff --git a/test/convertItkImageToVtkImageTest.js b/test/convertItkImageToVtkImageTest.js index e5654fcca..02c4003e0 100644 --- a/test/convertItkImageToVtkImageTest.js +++ b/test/convertItkImageToVtkImageTest.js @@ -1,6 +1,7 @@ import test from 'tape-catch' -import { readImageBlob, IntTypes, PixelTypes, getMatrixElement } from 'itk-wasm' +import { IntTypes, PixelTypes, getMatrixElement } from 'itk-wasm' +import { readImage } from '@itk-wasm/image-io' const cthead1SmallBase64DataURI = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAAAAABWESUoAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAHdElNRQfhBQYVKw8AZTNIAAADdklEQVQ4y2WTa2wUVRiGp6W7O3POnLmc2VrstokJlrBIUBJigjfSICVCCAo/QKM/FFNRIESJQKAws3M7M2f20t3GthRKQQq0kkoXMIq9oFwCXkg0UpMakGLgR9EmJF4TNOvZhRBb31+TvM955/vO+T6Ou69pAgSwKCCAEPc/lYUhFEUkMgH2ESmbYocEEUmKLIQqBKmEgUlERQhAPhyJiDMXPFZZDmRGoP8Q5TwC4ciMpatfXE9zmT2NVRVIQiLi76cDUVRDT/m72zLUc/Srv+gNCi8jhCrupvMAQIWf1zJx58pRj7g7h/sduunhiIIkUAJ4AUBZ0LZev3TondmeS42TuaYms6kOapJUalYQAAKxt+j4qD3yxvMZ0z47NLi/ydhWA7GMinWyAH6G1Wwe/OdUz6dz33T35dPdIxdIYrPGK0qxTnYrobVtjm+3pNvPxGu9/dTRgw8/e89et0AKF1uFItS2u7ZP7fr4K3H19VbP94me/T6fXRifM6+a/QKC6N5+PWGYZhVeNn9pzvUoTVnt3/QEz81dUTONgwjis4UzvS2Z5JbY9JlPdxmEuFZzX9va0yu5WlXmRAlWd3Tmjg980vXBprJZbYPtza0dXw40ZleeP1ZbrWKOXXpsu7Grb3gnsY/27B46+e3ElVuF3w+sm7Pki2VAUxkAo1t0a7TL8YnVPZxy6KG9fX/+2qu/+9DARoAVBiDYaHjnfc/3nHOdicA1Em6WpnOdG/I6zwCA5PCzrn6uw6VO99gBnRBKGUyIMfz3BgmrHHta8cEdu04dN6wjPwy6FinaTNT8emKNzGrgBEmJLLf7T6Tf/60wpFP2oKToB/bNr+pVTWHjghQxZuTzW51C4aIZENdj8gMv+1f3I7iYwPEqrFu+z1/zzI3vHN/ziEd9P0haV39aXxXFRaBMRrCu9Vjj5o/S5C4QBCnjws+pJ9SoqpZmRlqyeNWlPa922El22PMCl5if38q9FGV+CeAaFuK4OZY5nLRoksnsPX19nL5do2GsREoAlCtr68lo4VoXNROWdXD8j7GUNV96AMPye5MtYgU/ujF/887tHy+PXLt9o9/asUipvDfWpc1QNFWKPfla8PHI5Ysnsua2l2dH1Un7WS6rKlamxx9f/MKKhkX1syoxmLqcUMVRDTNMlZGkilPsUrOsJ6wxRSel/wuAkzbenLRf4gAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNy0wNS0wNlQxNzoyNjozNC0wNDowMORO/MMAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTctMDUtMDZUMTc6MjY6MzQtMDQ6MDCVE0R/AAAAAElFTkSuQmCC' @@ -36,7 +37,7 @@ const verifyImage = (t, image) => { } test('readImageBlob reads a Blob', t => { - return readImageBlob(null, cthead1SmallBlob, 'cthead1Small.png').then( + return readImage(null, new File([cthead1SmallBlob], 'cthead1Small.png')).then( function({ image }) { verifyImage(t, image) } diff --git a/test/createViewerTest.js b/test/createViewerTest.js index d8306d2cb..9f6db0877 100644 --- a/test/createViewerTest.js +++ b/test/createViewerTest.js @@ -1,7 +1,6 @@ import test from 'tape-catch' import axios from 'axios' -import { readImageArrayBuffer } from 'itk-wasm' import testUtils from 'vtk.js/Sources/Testing/testUtils' import vtk from 'vtk.js/Sources/vtk' @@ -9,6 +8,7 @@ import createViewer from '../src/createViewer' import './customElementsDefineOverride.js' import referenceUIMachineOptions from '../src/UI/reference-ui' import { MAX_CONCURRENCY } from '../src/Context/ViewerMachineContext' +import { readImage } from '@itk-wasm/image-io' const testImage3DPath = 'base/test/data/input/HeadMRVolume.nrrd' const testLabelImage3DPath = 'base/test/data/input/HeadMRVolumeLabels.nrrd' @@ -82,20 +82,19 @@ test('Test createViewer', async t => { const response = await axios.get(testImage3DPath, { responseType: 'arraybuffer', }) - const { image: itkImage, webWorker } = await readImageArrayBuffer( + const { image: itkImage, webWorker } = await readImage( null, - response.data, - 'data.nrrd' + new File([response.data], 'data.nrrd') ) webWorker.terminate() const labelResponse = await axios.get(testLabelImage3DPath, { responseType: 'arraybuffer', }) - const { - image: itkLabelImage, - webWorker: labelWebWorker, - } = await readImageArrayBuffer(null, labelResponse.data, 'data.nrrd') + const { image: itkLabelImage, webWorker: labelWebWorker } = await readImage( + null, + new File([labelResponse.data], 'data.nrrd') + ) labelWebWorker.terminate() const uiMachineOptions = { ...referenceUIMachineOptions } @@ -453,10 +452,9 @@ test('Test createViewer.setImage', async t => { const response = await axios.get(testImage3DPath, { responseType: 'arraybuffer', }) - const { image: itkImage, webWorker } = await readImageArrayBuffer( + const { image: itkImage, webWorker } = await readImage( null, - response.data, - 'data.nrrd' + new File([response.data], 'data.nrrd') ) webWorker.terminate() @@ -469,10 +467,11 @@ test('Test createViewer.setImage', async t => { const response2 = await axios.get(testImage3DPath2, { responseType: 'arraybuffer', }) - const { - image: itkImage2, - webWorker: webWorker2, - } = await readImageArrayBuffer(null, response2.data, 'data.nrrd') + const { image: itkImage2, webWorker: webWorker2 } = await readImage( + null, + new File([response2.data], 'data.nrrd') + ) + webWorker2.terminate() viewer.setImage(itkImage2) @@ -511,10 +510,9 @@ test('Test createViewer with just labelImage', async t => { const response = await axios.get(testLabelImage3DPath, { responseType: 'arraybuffer', }) - const { image: labelImage, webWorker } = await readImageArrayBuffer( + const { image: labelImage, webWorker } = await readImage( null, - response.data, - 'data.nrrd' + new File([response.data], 'data.nrrd') ) webWorker.terminate() @@ -540,10 +538,9 @@ test('Test setImage and setLabelImage after createViewer', async t => { const labelImageResponse = await axios.get(testLabelImage3DPath, { responseType: 'arraybuffer', }) - const { image: labelImage, webWorker } = await readImageArrayBuffer( + const { image: labelImage, webWorker } = await readImage( null, - labelImageResponse.data, - 'data.nrrd' + new File([labelImageResponse.data], 'data.nrrd') ) webWorker.terminate() @@ -551,10 +548,9 @@ test('Test setImage and setLabelImage after createViewer', async t => { responseType: 'arraybuffer', }) - const { image, webWorker: webWorkerForImage } = await readImageArrayBuffer( + const { image, webWorker: webWorkerForImage } = await readImage( null, - imageResponse.data, - 'data.nrrd' + new File([imageResponse.data], 'data.nrrd') ) webWorkerForImage.terminate() @@ -584,10 +580,9 @@ test('Test createViewer custom UI options', async t => { const response = await axios.get(testImage3DPath, { responseType: 'arraybuffer', }) - const { image: itkImage, webWorker } = await readImageArrayBuffer( + const { image: itkImage, webWorker } = await readImage( null, - response.data, - 'data.nrrd' + new File([response.data], 'data.nrrd') ) webWorker.terminate() @@ -652,10 +647,9 @@ const makeImages = async paths => { const response = await axios.get(path, { responseType: 'arraybuffer', }) - const { image, webWorker } = await readImageArrayBuffer( + const { image, webWorker } = await readImage( null, - response.data, - 'data.nrrd' + new File([response.data], 'data.nrrd') ) webWorker.terminate() return image diff --git a/test/imjoyTest.js b/test/imjoyTest.js index b862181f5..30000550b 100644 --- a/test/imjoyTest.js +++ b/test/imjoyTest.js @@ -1,13 +1,13 @@ import test from 'tape-catch' import axios from 'axios' -import { readImageArrayBuffer } from 'itk-wasm' import testUtils from 'vtk.js/Sources/Testing/testUtils' const testImage3DPath = 'base/test/data/input/HeadMRVolume.nrrd' import * as imjoyCore from 'imjoy-core' import ndarray from 'ndarray' +import { readImage } from '@itk-wasm/image-io' const TEST_STYLE_RENDERING_VIEW_CONTAINER = { position: 'relative', @@ -52,10 +52,9 @@ test('Test ImJoy Plugin', async t => { const response = await axios.get(testImage3DPath, { responseType: 'arraybuffer', }) - const { image: itkImage, webWorker } = await readImageArrayBuffer( + const { image: itkImage, webWorker } = await readImage( null, - response.data, - 'data.nrrd' + new File([response.data], 'data.nrrd') ) webWorker.terminate() const array = ndarray(itkImage.data, itkImage.size.slice().reverse()) diff --git a/test/itkConfigBrowserTest.js b/test/itkConfigBrowserTest.js index 23b25c636..3580d53e5 100644 --- a/test/itkConfigBrowserTest.js +++ b/test/itkConfigBrowserTest.js @@ -1,6 +1,7 @@ const itkConfig = { - pipelineWorkerUrl: '/base/dist/itk/web-workers/bundles/pipeline.worker.js', // eslint-disable-line no-undef - imageIOUrl: '/base/dist/itk/image-io', // eslint-disable-line no-undef + pipelineWorkerUrl: + '/base/dist/itk/web-workers/itk-wasm-pipeline.min.worker.js', // eslint-disable-line no-undef + imageIOUrl: '/base/dist/itk/pipeline', // eslint-disable-line no-undef meshIOUrl: '/base/dist/itk/mesh-io', // eslint-disable-line no-undef pipelinesUrl: '/base/dist/itk/pipeline', // eslint-disable-line no-undef } diff --git a/test/pipelineTest.js b/test/pipelineTest.js index 089c869ae..e7d14cf4d 100644 --- a/test/pipelineTest.js +++ b/test/pipelineTest.js @@ -1,11 +1,11 @@ import test from 'tape-catch' import axios from 'axios' -import { readImageArrayBuffer } from 'itk-wasm' import testUtils from 'vtk.js/Sources/Testing/testUtils' import createViewer from '../src/createViewer' import './customElementsDefineOverride.js' +import { readImage } from '@itk-wasm/image-io' const testImage3DPath = 'base/test/data/input/HeadMRVolume.nrrd' const testLabelImage3DPath = @@ -21,20 +21,19 @@ test('Test createViewer with smaller size label image', async t => { const imageResponse = await axios.get(testImage3DPath, { responseType: 'arraybuffer', }) - const { image, webWorker: imageWorker } = await readImageArrayBuffer( + const { image, webWorker: imageWorker } = await readImage( null, - imageResponse.data, - 'data.nrrd' + new File([imageResponse.data], 'data.nrrd') ) imageWorker.terminate() const labelResponse = await axios.get(testLabelImage3DPath, { responseType: 'arraybuffer', }) - const { - image: labelImage, - webWorker: labelWorker, - } = await readImageArrayBuffer(null, labelResponse.data, 'data.nrrd') + const { image: labelImage, webWorker: labelWorker } = await readImage( + null, + new File([labelResponse.data], 'data.nrrd') + ) labelWorker.terminate() const viewer = await createViewer(container, { diff --git a/test/run.sh b/test/run.sh index 015e6548c..25ca6f0b7 100755 --- a/test/run.sh +++ b/test/run.sh @@ -142,7 +142,7 @@ docker run \ --workdir /home/user/work \ ${mount_local} \ $port_arg \ - --env="APP=npm run test -- --browsers Chrome --dockered" \ + --env="APP=npx puppeteer browsers install chrome && npm run test -- --browsers Chrome --dockered" \ $extra_run_args \ $debug_arg \ $image >/dev/null diff --git a/webpack.config.js b/webpack.config.js index f64188f73..cbe0f67ff 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -58,6 +58,7 @@ const moduleConfigRules = [ { test: /\.js$/, loader: 'babel-loader', dependency: { not: ['url'] } }, { test: /\.worker.js$/, + exclude: /node_modules/, // Skip itk-wasm worker in node modules. Copy plugin pulls prebuild itk-wasm-pipeline.worker.js use: [{ loader: 'worker-loader', options: { inline: 'no-fallback' } }], }, { @@ -105,30 +106,41 @@ module.exports = (env, argv) => [ 'node_modules', 'itk-wasm', 'dist', - 'web-workers' + 'core', + 'web-workers', + 'bundles' ), to: path.join(__dirname, 'dist', 'itk', 'web-workers'), }, { - from: path.join(__dirname, 'node_modules', 'itk-image-io'), - to: path.join(__dirname, 'dist', 'itk', 'image-io'), + from: path.join( + __dirname, + 'node_modules', + '@itk-wasm', + 'image-io', + 'dist', + 'pipelines' + ), + to: path.join(__dirname, 'dist', 'itk', 'pipeline'), }, { from: path.join(__dirname, 'node_modules', 'itk-mesh-io'), to: path.join(__dirname, 'dist', 'itk', 'mesh-io'), }, { - from: path.join( + from: '*', + context: path.join( __dirname, 'src', 'Compression', 'blosc-zarr', - 'web-build' + 'emscripten-build' ), to: path.join(__dirname, 'dist', 'itk', 'pipeline'), }, { - from: path.join( + from: '*', + context: path.join( __dirname, 'src', 'IO', @@ -138,7 +150,8 @@ module.exports = (env, argv) => [ to: path.join(__dirname, 'dist', 'itk', 'pipeline'), }, { - from: path.join( + from: '*', + context: path.join( __dirname, 'src', 'IO', @@ -148,7 +161,8 @@ module.exports = (env, argv) => [ to: path.join(__dirname, 'dist', 'itk', 'pipeline'), }, { - from: path.join( + from: '*', + context: path.join( __dirname, 'src', 'IO', @@ -157,6 +171,10 @@ module.exports = (env, argv) => [ ), to: path.join(__dirname, 'dist', 'itk', 'pipeline'), }, + { + from: path.join(__dirname, 'public'), + to: path.join(__dirname, 'dist'), + }, ], }), // workbox plugin should be last plugin. Don't create in development to avoid warning with devServer --watch