From d10cc09ab112104b37e591b459c356d88bcd0e72 Mon Sep 17 00:00:00 2001 From: Maxwell Jeffress Date: Thu, 5 Mar 2026 20:29:30 +1100 Subject: [PATCH] Update playground --- node_modules/.mf/cf.json | 2 +- playground/index.html | 69 +- playground/playground.js | 5362 +----------------------------------- playground/playground.wasm | Bin 705482 -> 146206 bytes 4 files changed, 23 insertions(+), 5410 deletions(-) diff --git a/node_modules/.mf/cf.json b/node_modules/.mf/cf.json index 6d33a93..17bf833 100644 --- a/node_modules/.mf/cf.json +++ b/node_modules/.mf/cf.json @@ -1 +1 @@ -{"httpProtocol":"HTTP/1.1","clientAcceptEncoding":"gzip, deflate, br","requestPriority":"","edgeRequestKeepAliveStatus":1,"requestHeaderNames":{},"clientTcpRtt":12,"colo":"SYD","asn":9443,"asOrganization":"Vocus","country":"AU","isEUCountry":false,"city":"Sydney","continent":"OC","region":"New South Wales","regionCode":"NSW","timezone":"Australia/Sydney","longitude":"151.20732","latitude":"-33.86785","postalCode":"1001","tlsVersion":"TLSv1.3","tlsCipher":"AEAD-AES256-GCM-SHA384","tlsClientRandom":"ZCFOIxx+dLjJKWNa9xLCxaSIHvshEBi9p5Ma3GkbD6Y=","tlsClientCiphersSha1":"kXrN3VEKDdzz2cPKTQaKzpxVTxQ=","tlsClientExtensionsSha1":"1eY97BUYYO8vDaTfHQywB1pcNdM=","tlsClientExtensionsSha1Le":"u4wtEMFQBY18l3BzHAvORm+KGRw=","tlsExportedAuthenticator":{"clientHandshake":"60c7a93668cf712955e55da8d87ad7d798dd50f3bd0f41cf6b50bd536330370c8d70f3c724a783da997a7ce56eb10942","serverHandshake":"a1387243818dc978c8e6191d9435d288d47c82a4c87c3727ee318328e68412165a11e528abea944087ca1463ad1dfeb5","clientFinished":"3187fbfafb25128e53194b2cc610611991652337efdaf72c36409d98dfd12ca3a8a01c6a4b3bec6b601abdd178673f94","serverFinished":"f55737956343d6a2de3e75a6297677de63f979c2a570fc887651fd9b0fa24a9671b4545cdec6cfab6ecd70e39f6b1aea"},"tlsClientHelloLength":"1603","tlsClientAuth":{"certPresented":"0","certVerified":"NONE","certRevoked":"0","certIssuerDN":"","certSubjectDN":"","certIssuerDNRFC2253":"","certSubjectDNRFC2253":"","certIssuerDNLegacy":"","certSubjectDNLegacy":"","certSerial":"","certIssuerSerial":"","certSKI":"","certIssuerSKI":"","certFingerprintSHA1":"","certFingerprintSHA256":"","certNotBefore":"","certNotAfter":""},"verifiedBotCategory":"","botManagement":{"corporateProxy":false,"verifiedBot":false,"jsDetection":{"passed":false},"staticResource":false,"detectionIds":{},"score":99}} \ No newline at end of file +{"httpProtocol":"HTTP/1.1","clientAcceptEncoding":"gzip, deflate, br","requestPriority":"","edgeRequestKeepAliveStatus":1,"requestHeaderNames":{},"clientTcpRtt":26,"colo":"SYD","asn":9443,"asOrganization":"Vocus","country":"AU","isEUCountry":false,"city":"Sydney","continent":"OC","region":"New South Wales","regionCode":"NSW","timezone":"Australia/Sydney","longitude":"151.20732","latitude":"-33.86785","postalCode":"1001","tlsVersion":"TLSv1.3","tlsCipher":"AEAD-AES256-GCM-SHA384","tlsClientRandom":"q+XTQrmbIX2iNNAi+8RaMkPlVKucfKu2QjNQej35Jo8=","tlsClientCiphersSha1":"kXrN3VEKDdzz2cPKTQaKzpxVTxQ=","tlsClientExtensionsSha1":"1eY97BUYYO8vDaTfHQywB1pcNdM=","tlsClientExtensionsSha1Le":"u4wtEMFQBY18l3BzHAvORm+KGRw=","tlsExportedAuthenticator":{"clientHandshake":"918753d88f16497a81bec58c93db6eb95382e6cc3fef5af6c045f00ddd7b4ff09bca2042e3e9a2809bd9e43d17a91692","serverHandshake":"0ec75818c051cc9c6548de819406a93217de79a9d796a3632a1987dcada263f5cbc07cccf47598c74ac989687992921e","clientFinished":"f14e7fd18d6916fedd649672b8eda2fce6b0e2210de45f35605155815ed0be3b6868e8798f35e8f8aba21beabbab48d2","serverFinished":"46f06972f7ed47a394e7b635e7762eddf8df855ef2a2a1ce30d44c672eb4a115903238c40a834112f656434d29485f2f"},"tlsClientHelloLength":"1603","tlsClientAuth":{"certPresented":"0","certVerified":"NONE","certRevoked":"0","certIssuerDN":"","certSubjectDN":"","certIssuerDNRFC2253":"","certSubjectDNRFC2253":"","certIssuerDNLegacy":"","certSubjectDNLegacy":"","certSerial":"","certIssuerSerial":"","certSKI":"","certIssuerSKI":"","certFingerprintSHA1":"","certFingerprintSHA256":"","certNotBefore":"","certNotAfter":""},"verifiedBotCategory":"","botManagement":{"corporateProxy":false,"verifiedBot":false,"jsDetection":{"passed":false},"staticResource":false,"detectionIds":{},"score":99}} \ No newline at end of file diff --git a/playground/index.html b/playground/index.html index c9660fe..9f9553b 100644 --- a/playground/index.html +++ b/playground/index.html @@ -16,12 +16,10 @@

Solstice Playground

-

Broken right now. Sorry!

+
@@ -30,57 +28,32 @@ puts 10 + 20 + 12

Output:

Output will appear here. Click "Run Code" to run!
- +
diff --git a/playground/playground.js b/playground/playground.js index 7d16a2d..5c6a068 100644 --- a/playground/playground.js +++ b/playground/playground.js @@ -1,5361 +1 @@ - -var createSolsticeModule = (() => { - var _scriptDir = import.meta.url; - - return ( -async function(moduleArg = {}) { - -// include: shell.js -// The Module object: Our interface to the outside world. We import -// and export values on it. There are various ways Module can be used: -// 1. Not defined. We create it here -// 2. A function parameter, function(Module) { ..generated code.. } -// 3. pre-run appended it, var Module = {}; ..generated code.. -// 4. External script tag defines var Module. -// We need to check if Module already exists (e.g. case 3 above). -// Substitution will be replaced with actual code on later stage of the build, -// this way Closure Compiler will not mangle it (e.g. case 4. above). -// Note that if you want to run closure, and also to use Module -// after the generated code, you will need to define var Module = {}; -// before the code. Then that object will be used in the code, and you -// can continue to use Module afterwards as well. -var Module = moduleArg; - -// Set up the promise that indicates the Module is initialized -var readyPromiseResolve, readyPromiseReject; -Module['ready'] = new Promise((resolve, reject) => { - readyPromiseResolve = resolve; - readyPromiseReject = reject; -}); -["_memory","___indirect_function_table","_run_source","onRuntimeInitialized"].forEach((prop) => { - if (!Object.getOwnPropertyDescriptor(Module['ready'], prop)) { - Object.defineProperty(Module['ready'], prop, { - get: () => abort('You are getting ' + prop + ' on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js'), - set: () => abort('You are setting ' + prop + ' on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js'), - }); - } -}); - -// --pre-jses are emitted after the Module integration code, so that they can -// refer to Module (if they choose; they can also define Module) - - -// Sometimes an existing Module object exists with properties -// meant to overwrite the default module functionality. Here -// we collect those properties and reapply _after_ we configure -// the current environment's defaults to avoid having to be so -// defensive during initialization. -var moduleOverrides = Object.assign({}, Module); - -var arguments_ = []; -var thisProgram = './this.program'; -var quit_ = (status, toThrow) => { - throw toThrow; -}; - -// Determine the runtime environment we are in. You can customize this by -// setting the ENVIRONMENT setting at compile time (see settings.js). - -// Attempt to auto-detect the environment -var ENVIRONMENT_IS_WEB = typeof window == 'object'; -var ENVIRONMENT_IS_WORKER = typeof importScripts == 'function'; -// N.b. Electron.js environment is simultaneously a NODE-environment, but -// also a web environment. -var ENVIRONMENT_IS_NODE = typeof process == 'object' && typeof process.versions == 'object' && typeof process.versions.node == 'string'; -var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (Module['ENVIRONMENT']) { - throw new Error('Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)'); -} - -// `/` should be present at the end if `scriptDirectory` is not empty -var scriptDirectory = ''; -function locateFile(path) { - if (Module['locateFile']) { - return Module['locateFile'](path, scriptDirectory); - } - return scriptDirectory + path; -} - -// Hooks that are implemented differently in different runtime environments. -var read_, - readAsync, - readBinary; - -if (ENVIRONMENT_IS_NODE) { - if (typeof process == 'undefined' || !process.release || process.release.name !== 'node') throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - - var nodeVersion = process.versions.node; - var numericVersion = nodeVersion.split('.').slice(0, 3); - numericVersion = (numericVersion[0] * 10000) + (numericVersion[1] * 100) + (numericVersion[2].split('-')[0] * 1); - var minVersion = 160000; - if (numericVersion < 160000) { - throw new Error('This emscripten-generated code requires node v16.0.0 (detected v' + nodeVersion + ')'); - } - - // `require()` is no-op in an ESM module, use `createRequire()` to construct - // the require()` function. This is only necessary for multi-environment - // builds, `-sENVIRONMENT=node` emits a static import declaration instead. - // TODO: Swap all `require()`'s with `import()`'s? - const { createRequire } = await import('module'); - /** @suppress{duplicate} */ - var require = createRequire(import.meta.url); - // These modules will usually be used on Node.js. Load them eagerly to avoid - // the complexity of lazy-loading. - var fs = require('fs'); - var nodePath = require('path'); - - if (ENVIRONMENT_IS_WORKER) { - scriptDirectory = nodePath.dirname(scriptDirectory) + '/'; - } else { - // EXPORT_ES6 + ENVIRONMENT_IS_NODE always requires use of import.meta.url, - // since there's no way getting the current absolute path of the module when - // support for that is not available. - scriptDirectory = require('url').fileURLToPath(new URL('./', import.meta.url)); // includes trailing slash - } - -// include: node_shell_read.js -read_ = (filename, binary) => { - // We need to re-wrap `file://` strings to URLs. Normalizing isn't - // necessary in that case, the path should already be absolute. - 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); - } - assert(ret.buffer); - return ret; -}; - -readAsync = (filename, onload, onerror, binary = true) => { - // See the comment in the `read_` function. - filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); - fs.readFile(filename, binary ? undefined : 'utf8', (err, data) => { - if (err) onerror(err); - else onload(binary ? data.buffer : data); - }); -}; -// end include: node_shell_read.js - if (!Module['thisProgram'] && process.argv.length > 1) { - thisProgram = process.argv[1].replace(/\\/g, '/'); - } - - arguments_ = process.argv.slice(2); - - // MODULARIZE will export the module in the proper place outside, we don't need to export here - - quit_ = (status, toThrow) => { - process.exitCode = status; - throw toThrow; - }; - -} else -if (ENVIRONMENT_IS_SHELL) { - - if ((typeof process == 'object' && typeof require === 'function') || typeof window == 'object' || typeof importScripts == 'function') throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - - if (typeof read != 'undefined') { - read_ = read; - } - - readBinary = (f) => { - if (typeof readbuffer == 'function') { - return new Uint8Array(readbuffer(f)); - } - let data = read(f, 'binary'); - assert(typeof data == 'object'); - return data; - }; - - readAsync = (f, onload, onerror) => { - setTimeout(() => onload(readBinary(f))); - }; - - if (typeof clearTimeout == 'undefined') { - globalThis.clearTimeout = (id) => {}; - } - - if (typeof setTimeout == 'undefined') { - // spidermonkey lacks setTimeout but we use it above in readAsync. - globalThis.setTimeout = (f) => (typeof f == 'function') ? f() : abort(); - } - - if (typeof scriptArgs != 'undefined') { - arguments_ = scriptArgs; - } else if (typeof arguments != 'undefined') { - arguments_ = arguments; - } - - if (typeof quit == 'function') { - quit_ = (status, toThrow) => { - // Unlike node which has process.exitCode, d8 has no such mechanism. So we - // have no way to set the exit code and then let the program exit with - // that code when it naturally stops running (say, when all setTimeouts - // have completed). For that reason, we must call `quit` - the only way to - // set the exit code - but quit also halts immediately. To increase - // consistency with node (and the web) we schedule the actual quit call - // using a setTimeout to give the current stack and any exception handlers - // a chance to run. This enables features such as addOnPostRun (which - // expected to be able to run code after main returns). - setTimeout(() => { - if (!(toThrow instanceof ExitStatus)) { - let toLog = toThrow; - if (toThrow && typeof toThrow == 'object' && toThrow.stack) { - toLog = [toThrow, toThrow.stack]; - } - err(`exiting due to exception: ${toLog}`); - } - quit(status); - }); - throw toThrow; - }; - } - - if (typeof print != 'undefined') { - // Prefer to use print/printErr where they exist, as they usually work better. - if (typeof console == 'undefined') console = /** @type{!Console} */({}); - console.log = /** @type{!function(this:Console, ...*): undefined} */ (print); - console.warn = console.error = /** @type{!function(this:Console, ...*): undefined} */ (typeof printErr != 'undefined' ? printErr : print); - } - -} else - -// Note that this includes Node.js workers when relevant (pthreads is enabled). -// Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and -// ENVIRONMENT_IS_NODE. -if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { - if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled - scriptDirectory = self.location.href; - } else if (typeof document != 'undefined' && document.currentScript) { // web - scriptDirectory = document.currentScript.src; - } - // When MODULARIZE, this JS may be executed later, after document.currentScript - // is gone, so we saved it, and we use it here instead of any other info. - if (_scriptDir) { - scriptDirectory = _scriptDir; - } - // blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. - // otherwise, slice off the final part of the url to find the script directory. - // if scriptDirectory does not contain a slash, lastIndexOf will return -1, - // and scriptDirectory will correctly be replaced with an empty string. - // If scriptDirectory contains a query (starting with ?) or a fragment (starting with #), - // they are removed because they could contain a slash. - if (scriptDirectory.startsWith('blob:')) { - scriptDirectory = ''; - } else { - scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, '').lastIndexOf('/')+1); - } - - if (!(typeof window == 'object' || typeof importScripts == 'function')) throw new Error('not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)'); - - // Differentiate the Web Worker from the Node Worker case, as reading must - // be done differently. - { -// include: web_or_worker_shell_read.js -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(/** @type{!ArrayBuffer} */(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)) { // file URLs can return 0 - onload(xhr.response); - return; - } - onerror(); - }; - xhr.onerror = onerror; - xhr.send(null); - } - -// end include: web_or_worker_shell_read.js - } -} else -{ - throw new Error('environment detection error'); -} - -var out = Module['print'] || console.log.bind(console); -var err = Module['printErr'] || console.error.bind(console); - -// Merge back in the overrides -Object.assign(Module, moduleOverrides); -// Free the object hierarchy contained in the overrides, this lets the GC -// reclaim data used. -moduleOverrides = null; -checkIncomingModuleAPI(); - -// Emit code to handle expected values on the Module object. This applies Module.x -// to the proper local x. This has two benefits: first, we only emit it if it is -// expected to arrive, and second, by using a local everywhere else that can be -// minified. - -if (Module['arguments']) arguments_ = Module['arguments'];legacyModuleProp('arguments', 'arguments_'); - -if (Module['thisProgram']) thisProgram = Module['thisProgram'];legacyModuleProp('thisProgram', 'thisProgram'); - -if (Module['quit']) quit_ = Module['quit'];legacyModuleProp('quit', 'quit_'); - -// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message -// Assertions on removed incoming Module JS APIs. -assert(typeof Module['memoryInitializerPrefixURL'] == 'undefined', 'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['pthreadMainPrefixURL'] == 'undefined', 'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['cdInitializerPrefixURL'] == 'undefined', 'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['filePackagePrefixURL'] == 'undefined', 'Module.filePackagePrefixURL option was removed, use Module.locateFile instead'); -assert(typeof Module['read'] == 'undefined', 'Module.read option was removed (modify read_ in JS)'); -assert(typeof Module['readAsync'] == 'undefined', 'Module.readAsync option was removed (modify readAsync in JS)'); -assert(typeof Module['readBinary'] == 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)'); -assert(typeof Module['setWindowTitle'] == 'undefined', 'Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)'); -assert(typeof Module['TOTAL_MEMORY'] == 'undefined', 'Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY'); -legacyModuleProp('asm', 'wasmExports'); -legacyModuleProp('read', 'read_'); -legacyModuleProp('readAsync', 'readAsync'); -legacyModuleProp('readBinary', 'readBinary'); -legacyModuleProp('setWindowTitle', 'setWindowTitle'); -var IDBFS = 'IDBFS is no longer included by default; build with -lidbfs.js'; -var PROXYFS = 'PROXYFS is no longer included by default; build with -lproxyfs.js'; -var WORKERFS = 'WORKERFS is no longer included by default; build with -lworkerfs.js'; -var FETCHFS = 'FETCHFS is no longer included by default; build with -lfetchfs.js'; -var ICASEFS = 'ICASEFS is no longer included by default; build with -licasefs.js'; -var JSFILEFS = 'JSFILEFS is no longer included by default; build with -ljsfilefs.js'; -var OPFS = 'OPFS is no longer included by default; build with -lopfs.js'; - -var NODEFS = 'NODEFS is no longer included by default; build with -lnodefs.js'; - -assert(!ENVIRONMENT_IS_SHELL, 'shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable.'); - -// end include: shell.js - -// include: preamble.js -// === Preamble library stuff === - -// Documentation for the public APIs defined in this file must be updated in: -// site/source/docs/api_reference/preamble.js.rst -// A prebuilt local version of the documentation is available at: -// site/build/text/docs/api_reference/preamble.js.txt -// You can also build docs locally as HTML or other formats in site/ -// An online HTML version (which may be of a different version of Emscripten) -// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html - -var wasmBinary; -if (Module['wasmBinary']) wasmBinary = Module['wasmBinary'];legacyModuleProp('wasmBinary', 'wasmBinary'); - -if (typeof WebAssembly != 'object') { - err('no native wasm support detected'); -} - -// include: base64Utils.js -// Converts a string of base64 into a byte array (Uint8Array). -function intArrayFromBase64(s) { - if (typeof ENVIRONMENT_IS_NODE != 'undefined' && ENVIRONMENT_IS_NODE) { - var buf = Buffer.from(s, 'base64'); - return new Uint8Array(buf.buffer, buf.byteOffset, buf.length); - } - - var decoded = atob(s); - var bytes = new Uint8Array(decoded.length); - for (var i = 0 ; i < decoded.length ; ++i) { - bytes[i] = decoded.charCodeAt(i); - } - return bytes; -} - -// If filename is a base64 data URI, parses and returns data (Buffer on node, -// Uint8Array otherwise). If filename is not a base64 data URI, returns undefined. -function tryParseAsDataURI(filename) { - if (!isDataURI(filename)) { - return; - } - - return intArrayFromBase64(filename.slice(dataURIPrefix.length)); -} -// end include: base64Utils.js -// Wasm globals - -var wasmMemory; - -//======================================== -// Runtime essentials -//======================================== - -// whether we are quitting the application. no code should run after this. -// set in exit() and abort() -var ABORT = false; - -// set by exit() and abort(). Passed to 'onExit' handler. -// NOTE: This is also used as the process return code code in shell environments -// but only when noExitRuntime is false. -var EXITSTATUS; - -// In STRICT mode, we only define assert() when ASSERTIONS is set. i.e. we -// don't define it at all in release modes. This matches the behaviour of -// MINIMAL_RUNTIME. -// TODO(sbc): Make this the default even without STRICT enabled. -/** @type {function(*, string=)} */ -function assert(condition, text) { - if (!condition) { - abort('Assertion failed' + (text ? ': ' + text : '')); - } -} - -// We used to include malloc/free by default in the past. Show a helpful error in -// builds with assertions. -function _malloc() { - abort('malloc() called but not included in the build - add `_malloc` to EXPORTED_FUNCTIONS'); -} -function _free() { - // Show a helpful error since we used to include free by default in the past. - abort('free() called but not included in the build - add `_free` to EXPORTED_FUNCTIONS'); -} - -// Memory management - -var HEAP, -/** @type {!Int8Array} */ - HEAP8, -/** @type {!Uint8Array} */ - HEAPU8, -/** @type {!Int16Array} */ - HEAP16, -/** @type {!Uint16Array} */ - HEAPU16, -/** @type {!Int32Array} */ - HEAP32, -/** @type {!Uint32Array} */ - HEAPU32, -/** @type {!Float32Array} */ - HEAPF32, -/** @type {!Float64Array} */ - HEAPF64; - -// include: runtime_shared.js -function updateMemoryViews() { - var b = wasmMemory.buffer; - Module['HEAP8'] = HEAP8 = new Int8Array(b); - Module['HEAP16'] = HEAP16 = new Int16Array(b); - Module['HEAPU8'] = HEAPU8 = new Uint8Array(b); - Module['HEAPU16'] = HEAPU16 = new Uint16Array(b); - Module['HEAP32'] = HEAP32 = new Int32Array(b); - Module['HEAPU32'] = HEAPU32 = new Uint32Array(b); - Module['HEAPF32'] = HEAPF32 = new Float32Array(b); - Module['HEAPF64'] = HEAPF64 = new Float64Array(b); -} -// end include: runtime_shared.js -assert(!Module['STACK_SIZE'], 'STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time') - -assert(typeof Int32Array != 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray != undefined && Int32Array.prototype.set != undefined, - 'JS engine does not provide full typed array support'); - -// If memory is defined in wasm, the user can't provide it, or set INITIAL_MEMORY -assert(!Module['wasmMemory'], 'Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally'); -assert(!Module['INITIAL_MEMORY'], 'Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically'); - -// include: runtime_stack_check.js -// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. -function writeStackCookie() { - var max = _emscripten_stack_get_end(); - assert((max & 3) == 0); - // If the stack ends at address zero we write our cookies 4 bytes into the - // stack. This prevents interference with SAFE_HEAP and ASAN which also - // monitor writes to address zero. - if (max == 0) { - max += 4; - } - // The stack grow downwards towards _emscripten_stack_get_end. - // We write cookies to the final two words in the stack and detect if they are - // ever overwritten. - HEAPU32[((max)>>2)] = 0x02135467; - HEAPU32[(((max)+(4))>>2)] = 0x89BACDFE; - // Also test the global address 0 for integrity. - HEAPU32[((0)>>2)] = 1668509029; -} - -function checkStackCookie() { - if (ABORT) return; - var max = _emscripten_stack_get_end(); - // See writeStackCookie(). - if (max == 0) { - max += 4; - } - var cookie1 = HEAPU32[((max)>>2)]; - var cookie2 = HEAPU32[(((max)+(4))>>2)]; - if (cookie1 != 0x02135467 || cookie2 != 0x89BACDFE) { - abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`); - } - // Also test the global address 0 for integrity. - if (HEAPU32[((0)>>2)] != 0x63736d65 /* 'emsc' */) { - abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); - } -} -// end include: runtime_stack_check.js -// include: runtime_assertions.js -// Endianness check -(function() { - var h16 = new Int16Array(1); - var h8 = new Int8Array(h16.buffer); - h16[0] = 0x6373; - if (h8[0] !== 0x73 || h8[1] !== 0x63) throw 'Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)'; -})(); - -// end include: runtime_assertions.js -var __ATPRERUN__ = []; // functions called before the runtime is initialized -var __ATINIT__ = []; // functions called during startup -var __ATEXIT__ = []; // functions called during shutdown -var __ATPOSTRUN__ = []; // functions called after the main() is called - -var runtimeInitialized = false; - -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() { - assert(!runtimeInitialized); - runtimeInitialized = true; - - checkStackCookie(); - - -if (!Module['noFSInit'] && !FS.init.initialized) - FS.init(); -FS.ignorePermissions = false; - -TTY.init(); - callRuntimeCallbacks(__ATINIT__); -} - -function postRun() { - checkStackCookie(); - - 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 addOnExit(cb) { -} - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} - -// include: runtime_math.js -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32 - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc - -assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); -// end include: runtime_math.js -// A counter of dependencies for calling run(). If we need to -// do asynchronous work before running, increment this and -// decrement it. Incrementing must happen in a place like -// Module.preRun (used by emcc to add file preloading). -// Note that you can add dependencies in preRun, even though -// it happens right before run - run will be postponed until -// the dependencies are met. -var runDependencies = 0; -var runDependencyWatcher = null; -var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled -var runDependencyTracking = {}; - -function getUniqueRunDependency(id) { - var orig = id; - while (1) { - if (!runDependencyTracking[id]) return id; - id = orig + Math.random(); - } -} - -function addRunDependency(id) { - runDependencies++; - - Module['monitorRunDependencies']?.(runDependencies); - - if (id) { - assert(!runDependencyTracking[id]); - runDependencyTracking[id] = 1; - if (runDependencyWatcher === null && typeof setInterval != 'undefined') { - // Check for missing dependencies every few seconds - runDependencyWatcher = setInterval(() => { - if (ABORT) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - return; - } - var shown = false; - for (var dep in runDependencyTracking) { - if (!shown) { - shown = true; - err('still waiting on run dependencies:'); - } - err(`dependency: ${dep}`); - } - if (shown) { - err('(end of list)'); - } - }, 10000); - } - } else { - err('warning: run dependency added without ID'); - } -} - -function removeRunDependency(id) { - runDependencies--; - - Module['monitorRunDependencies']?.(runDependencies); - - if (id) { - assert(runDependencyTracking[id]); - delete runDependencyTracking[id]; - } else { - err('warning: run dependency removed without ID'); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); // can add another dependenciesFulfilled - } - } -} - -/** @param {string|number=} what */ -function abort(what) { - Module['onAbort']?.(what); - - what = 'Aborted(' + what + ')'; - // TODO(sbc): Should we remove printing and leave it up to whoever - // catches the exception? - err(what); - - ABORT = true; - EXITSTATUS = 1; - - // Use a wasm runtime error, because a JS error might be seen as a foreign - // exception, which means we'd run destructors on it. We need the error to - // simply make the program stop. - // FIXME This approach does not work in Wasm EH because it currently does not assume - // all RuntimeErrors are from traps; it decides whether a RuntimeError is from - // a trap or not based on a hidden field within the object. So at the moment - // we don't have a way of throwing a wasm trap from JS. TODO Make a JS API that - // allows this in the wasm spec. - - // Suppress closure compiler warning here. Closure compiler's builtin extern - // definition for WebAssembly.RuntimeError claims it takes no arguments even - // though it can. - // TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure gets fixed. - /** @suppress {checkTypes} */ - var e = new WebAssembly.RuntimeError(what); - - readyPromiseReject(e); - // Throw the error whether or not MODULARIZE is set because abort is used - // in code paths apart from instantiation where an exception is expected - // to be thrown when abort is called. - throw e; -} - -// include: memoryprofiler.js -// end include: memoryprofiler.js -// include: URIUtils.js -// Prefix of data URIs emitted by SINGLE_FILE and related options. -var dataURIPrefix = 'data:application/octet-stream;base64,'; - -/** - * Indicates whether filename is a base64 data URI. - * @noinline - */ -var isDataURI = (filename) => filename.startsWith(dataURIPrefix); - -/** - * Indicates whether filename is delivered via file protocol (as opposed to http/https) - * @noinline - */ -var isFileURI = (filename) => filename.startsWith('file://'); -// end include: URIUtils.js -function createExportWrapper(name) { - return (...args) => { - assert(runtimeInitialized, `native function \`${name}\` called before runtime initialization`); - var f = wasmExports[name]; - assert(f, `exported native function \`${name}\` not found`); - return f(...args); - }; -} - -// include: runtime_exceptions.js -// end include: runtime_exceptions.js -var wasmBinaryFile; -if (Module['locateFile']) { - wasmBinaryFile = 'playground.wasm'; - if (!isDataURI(wasmBinaryFile)) { - wasmBinaryFile = locateFile(wasmBinaryFile); - } -} else { - // Use bundler-friendly `new URL(..., import.meta.url)` pattern; works in browsers too. - wasmBinaryFile = new URL('playground.wasm', import.meta.url).href; -} - -function getBinarySync(file) { - if (file == wasmBinaryFile && wasmBinary) { - return new Uint8Array(wasmBinary); - } - if (readBinary) { - return readBinary(file); - } - throw 'both async and sync fetching of the wasm failed'; -} - -function getBinaryPromise(binaryFile) { - // If we don't have the binary yet, try to load it asynchronously. - // Fetch has some additional restrictions over XHR, like it can't be used on a file:// url. - // See https://github.com/github/fetch/pull/92#issuecomment-140665932 - // Cordova or Electron apps are typically loaded from a file:// url. - // So use fetch if it is available and the url is not a file, otherwise fall back to XHR. - if (!wasmBinary - && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { - if (typeof fetch == 'function' - && !isFileURI(binaryFile) - ) { - return fetch(binaryFile, { credentials: 'same-origin' }).then((response) => { - if (!response['ok']) { - throw `failed to load wasm binary file at '${binaryFile}'`; - } - return response['arrayBuffer'](); - }).catch(() => getBinarySync(binaryFile)); - } - else if (readAsync) { - // fetch is not available or url is file => try XHR (readAsync uses XHR internally) - return new Promise((resolve, reject) => { - readAsync(binaryFile, (response) => resolve(new Uint8Array(/** @type{!ArrayBuffer} */(response))), reject) - }); - } - } - - // Otherwise, getBinarySync should be able to get it synchronously - return Promise.resolve().then(() => getBinarySync(binaryFile)); -} - -function instantiateArrayBuffer(binaryFile, imports, receiver) { - return getBinaryPromise(binaryFile).then((binary) => { - return WebAssembly.instantiate(binary, imports); - }).then(receiver, (reason) => { - err(`failed to asynchronously prepare wasm: ${reason}`); - - // Warn on some common problems. - if (isFileURI(wasmBinaryFile)) { - err(`warning: Loading from a file URI (${wasmBinaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`); - } - abort(reason); - }); -} - -function instantiateAsync(binary, binaryFile, imports, callback) { - if (!binary && - typeof WebAssembly.instantiateStreaming == 'function' && - !isDataURI(binaryFile) && - // Don't use streaming for file:// delivered objects in a webview, fetch them synchronously. - !isFileURI(binaryFile) && - // Avoid instantiateStreaming() on Node.js environment for now, as while - // Node.js v18.1.0 implements it, it does not have a full fetch() - // implementation yet. - // - // Reference: - // https://github.com/emscripten-core/emscripten/pull/16917 - !ENVIRONMENT_IS_NODE && - typeof fetch == 'function') { - return fetch(binaryFile, { credentials: 'same-origin' }).then((response) => { - // Suppress closure warning here since the upstream definition for - // instantiateStreaming only allows Promise rather than - // an actual Response. - // TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure is fixed. - /** @suppress {checkTypes} */ - var result = WebAssembly.instantiateStreaming(response, imports); - - return result.then( - callback, - function(reason) { - // We expect the most common failure cause to be a bad MIME type for the binary, - // in which case falling back to ArrayBuffer instantiation should work. - err(`wasm streaming compile failed: ${reason}`); - err('falling back to ArrayBuffer instantiation'); - return instantiateArrayBuffer(binaryFile, imports, callback); - }); - }); - } - return instantiateArrayBuffer(binaryFile, imports, callback); -} - -// Create the wasm instance. -// Receives the wasm imports, returns the exports. -function createWasm() { - // prepare imports - var info = { - 'env': wasmImports, - 'wasi_snapshot_preview1': wasmImports, - }; - // Load the wasm module and create an instance of using native support in the JS engine. - // handle a generated wasm instance, receiving its exports and - // performing other necessary setup - /** @param {WebAssembly.Module=} module*/ - function receiveInstance(instance, module) { - wasmExports = instance.exports; - - - - wasmMemory = wasmExports['memory']; - - assert(wasmMemory, 'memory not found in wasm exports'); - updateMemoryViews(); - - addOnInit(wasmExports['__wasm_call_ctors']); - - removeRunDependency('wasm-instantiate'); - return wasmExports; - } - // wait for the pthread pool (if any) - addRunDependency('wasm-instantiate'); - - // Prefer streaming instantiation if available. - // Async compilation can be confusing when an error on the page overwrites Module - // (for example, if the order of elements is wrong, and the one defining Module is - // later), so we save Module and check it later. - var trueModule = Module; - function receiveInstantiationResult(result) { - // 'result' is a ResultObject object which has both the module and instance. - // receiveInstance() will swap in the exports (to Module.asm) so they can be called - assert(Module === trueModule, 'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?'); - trueModule = null; - // TODO: Due to Closure regression https://github.com/google/closure-compiler/issues/3193, the above line no longer optimizes out down to the following line. - // When the regression is fixed, can restore the above PTHREADS-enabled path. - receiveInstance(result['instance']); - } - - // User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback - // to manually instantiate the Wasm module themselves. This allows pages to - // run the instantiation parallel to any other async startup actions they are - // performing. - // Also pthreads and wasm workers initialize the wasm instance through this - // path. - if (Module['instantiateWasm']) { - - try { - return Module['instantiateWasm'](info, receiveInstance); - } catch(e) { - err(`Module.instantiateWasm callback failed with error: ${e}`); - // If instantiation fails, reject the module ready promise. - readyPromiseReject(e); - } - } - - // If instantiation fails, reject the module ready promise. - instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject); - return {}; // no exports yet; we'll fill them in later -} - -// Globals used by JS i64 conversions (see makeSetValue) -var tempDouble; -var tempI64; - -// include: runtime_debug.js -function legacyModuleProp(prop, newName, incoming=true) { - if (!Object.getOwnPropertyDescriptor(Module, prop)) { - Object.defineProperty(Module, prop, { - configurable: true, - get() { - let extra = incoming ? ' (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)' : ''; - abort(`\`Module.${prop}\` has been replaced by \`${newName}\`` + extra); - - } - }); - } -} - -function ignoredModuleProp(prop) { - if (Object.getOwnPropertyDescriptor(Module, prop)) { - abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`); - } -} - -// forcing the filesystem exports a few things by default -function isExportedByForceFilesystem(name) { - return name === 'FS_createPath' || - name === 'FS_createDataFile' || - name === 'FS_createPreloadedFile' || - name === 'FS_unlink' || - name === 'addRunDependency' || - // The old FS has some functionality that WasmFS lacks. - name === 'FS_createLazyFile' || - name === 'FS_createDevice' || - name === 'removeRunDependency'; -} - -function missingGlobal(sym, msg) { - if (typeof globalThis !== 'undefined') { - Object.defineProperty(globalThis, sym, { - configurable: true, - get() { - warnOnce(`\`${sym}\` is not longer defined by emscripten. ${msg}`); - return undefined; - } - }); - } -} - -missingGlobal('buffer', 'Please use HEAP8.buffer or wasmMemory.buffer'); -missingGlobal('asm', 'Please use wasmExports instead'); - -function missingLibrarySymbol(sym) { - if (typeof globalThis !== 'undefined' && !Object.getOwnPropertyDescriptor(globalThis, sym)) { - Object.defineProperty(globalThis, sym, { - configurable: true, - get() { - // Can't `abort()` here because it would break code that does runtime - // checks. e.g. `if (typeof SDL === 'undefined')`. - var msg = `\`${sym}\` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line`; - // DEFAULT_LIBRARY_FUNCS_TO_INCLUDE requires the name as it appears in - // library.js, which means $name for a JS name with no prefix, or name - // for a JS name like _name. - var librarySymbol = sym; - if (!librarySymbol.startsWith('_')) { - librarySymbol = '$' + sym; - } - msg += ` (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='${librarySymbol}')`; - if (isExportedByForceFilesystem(sym)) { - msg += '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; - } - warnOnce(msg); - return undefined; - } - }); - } - // Any symbol that is not included from the JS library is also (by definition) - // not exported on the Module object. - unexportedRuntimeSymbol(sym); -} - -function unexportedRuntimeSymbol(sym) { - if (!Object.getOwnPropertyDescriptor(Module, sym)) { - Object.defineProperty(Module, sym, { - configurable: true, - get() { - var msg = `'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`; - if (isExportedByForceFilesystem(sym)) { - msg += '. Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you'; - } - abort(msg); - } - }); - } -} - -// Used by XXXXX_DEBUG settings to output debug messages. -function dbg(...args) { - // TODO(sbc): Make this configurable somehow. Its not always convenient for - // logging to show up as warnings. - console.warn(...args); -} -// end include: runtime_debug.js -// === Body === -// end include: preamble.js - - - /** @constructor */ - function ExitStatus(status) { - this.name = 'ExitStatus'; - this.message = `Program terminated with exit(${status})`; - this.status = status; - } - - var callRuntimeCallbacks = (callbacks) => { - while (callbacks.length > 0) { - // Pass the module as the first argument. - callbacks.shift()(Module); - } - }; - - - /** - * @param {number} ptr - * @param {string} type - */ - function getValue(ptr, type = 'i8') { - if (type.endsWith('*')) type = '*'; - switch (type) { - case 'i1': return HEAP8[ptr]; - case 'i8': return HEAP8[ptr]; - case 'i16': return HEAP16[((ptr)>>1)]; - case 'i32': return HEAP32[((ptr)>>2)]; - case 'i64': abort('to do getValue(i64) use WASM_BIGINT'); - case 'float': return HEAPF32[((ptr)>>2)]; - case 'double': return HEAPF64[((ptr)>>3)]; - case '*': return HEAPU32[((ptr)>>2)]; - default: abort(`invalid type for getValue: ${type}`); - } - } - - var noExitRuntime = Module['noExitRuntime'] || true; - - var ptrToString = (ptr) => { - assert(typeof ptr === 'number'); - // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned. - ptr >>>= 0; - return '0x' + ptr.toString(16).padStart(8, '0'); - }; - - - /** - * @param {number} ptr - * @param {number} value - * @param {string} type - */ - function setValue(ptr, value, type = 'i8') { - if (type.endsWith('*')) type = '*'; - switch (type) { - case 'i1': HEAP8[ptr] = value; break; - case 'i8': HEAP8[ptr] = value; break; - case 'i16': HEAP16[((ptr)>>1)] = value; break; - case 'i32': HEAP32[((ptr)>>2)] = value; break; - case 'i64': abort('to do setValue(i64) use WASM_BIGINT'); - case 'float': HEAPF32[((ptr)>>2)] = value; break; - case 'double': HEAPF64[((ptr)>>3)] = value; break; - case '*': HEAPU32[((ptr)>>2)] = value; break; - default: abort(`invalid type for setValue: ${type}`); - } - } - - var warnOnce = (text) => { - warnOnce.shown ||= {}; - if (!warnOnce.shown[text]) { - warnOnce.shown[text] = 1; - if (ENVIRONMENT_IS_NODE) text = 'warning: ' + text; - err(text); - } - }; - - class ExceptionInfo { - // excPtr - Thrown object pointer to wrap. Metadata pointer is calculated from it. - constructor(excPtr) { - this.excPtr = excPtr; - this.ptr = excPtr - 24; - } - - set_type(type) { - HEAPU32[(((this.ptr)+(4))>>2)] = type; - } - - get_type() { - return HEAPU32[(((this.ptr)+(4))>>2)]; - } - - set_destructor(destructor) { - HEAPU32[(((this.ptr)+(8))>>2)] = destructor; - } - - get_destructor() { - return HEAPU32[(((this.ptr)+(8))>>2)]; - } - - set_caught(caught) { - caught = caught ? 1 : 0; - HEAP8[(this.ptr)+(12)] = caught; - } - - get_caught() { - return HEAP8[(this.ptr)+(12)] != 0; - } - - set_rethrown(rethrown) { - rethrown = rethrown ? 1 : 0; - HEAP8[(this.ptr)+(13)] = rethrown; - } - - get_rethrown() { - return HEAP8[(this.ptr)+(13)] != 0; - } - - // Initialize native structure fields. Should be called once after allocated. - init(type, destructor) { - this.set_adjusted_ptr(0); - this.set_type(type); - this.set_destructor(destructor); - } - - set_adjusted_ptr(adjustedPtr) { - HEAPU32[(((this.ptr)+(16))>>2)] = adjustedPtr; - } - - get_adjusted_ptr() { - return HEAPU32[(((this.ptr)+(16))>>2)]; - } - - // Get pointer which is expected to be received by catch clause in C++ code. It may be adjusted - // when the pointer is casted to some of the exception object base classes (e.g. when virtual - // inheritance is used). When a pointer is thrown this method should return the thrown pointer - // itself. - get_exception_ptr() { - // Work around a fastcomp bug, this code is still included for some reason in a build without - // exceptions support. - 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; - var ___cxa_throw = (ptr, type, destructor) => { - var info = new ExceptionInfo(ptr); - // Initialize ExceptionInfo content after it was allocated in __cxa_allocate_exception. - info.init(type, destructor); - exceptionLast = ptr; - uncaughtExceptionCount++; - assert(false, 'Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.'); - }; - - var PATH = { - isAbs:(path) => path.charAt(0) === '/', - splitPath:(filename) => { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - }, - normalizeArray:(parts, allowAboveRoot) => { - // if the path tries to go above the root, `up` ends up > 0 - 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 the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up; up--) { - parts.unshift('..'); - } - } - return parts; - }, - normalize:(path) => { - var isAbsolute = PATH.isAbs(path), - trailingSlash = path.substr(-1) === '/'; - // Normalize the path - 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) { - // No dirname whatsoever - return '.'; - } - if (dir) { - // It has a dirname, strip trailing slash - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - }, - basename:(path) => { - // EMSCRIPTEN return '/'' for '/', not an empty string - 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:(...paths) => PATH.normalize(paths.join('/')), - join2:(l, r) => PATH.normalize(l + '/' + r), - }; - - var initRandomFill = () => { - if (typeof crypto == 'object' && typeof crypto['getRandomValues'] == 'function') { - // for modern web browsers - return (view) => crypto.getRandomValues(view); - } else - if (ENVIRONMENT_IS_NODE) { - // for nodejs with or without crypto support included - try { - var crypto_module = require('crypto'); - var randomFillSync = crypto_module['randomFillSync']; - if (randomFillSync) { - // nodejs with LTS crypto support - return (view) => crypto_module['randomFillSync'](view); - } - // very old nodejs with the original crypto API - var randomBytes = crypto_module['randomBytes']; - return (view) => ( - view.set(randomBytes(view.byteLength)), - // Return the original view to match modern native implementations. - view - ); - } catch (e) { - // nodejs doesn't have crypto support - } - } - // we couldn't find a proper implementation, as Math.random() is not suitable for /dev/random, see emscripten-core/emscripten/pull/7096 - abort('no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: (array) => { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };'); - }; - var randomFill = (view) => { - // Lazily init on the first invocation. - return (randomFill = initRandomFill())(view); - }; - - - - var PATH_FS = { - resolve:(...args) => { - var resolvedPath = '', - resolvedAbsolute = false; - for (var i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) ? args[i] : FS.cwd(); - // Skip empty and invalid entries - if (typeof path != 'string') { - throw new TypeError('Arguments to path.resolve must be strings'); - } else if (!path) { - return ''; // an invalid portion invalidates the whole thing - } - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = PATH.isAbs(path); - } - // At this point the path should be resolved to a full absolute path, but - // handle relative paths to be safe (might happen when process.cwd() fails) - 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('/'); - }, - }; - - - var UTF8Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder('utf8') : undefined; - - /** - * Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given - * array that contains uint8 values, returns a copy of that string as a - * Javascript String object. - * heapOrArray is either a regular array, or a JavaScript typed array view. - * @param {number} idx - * @param {number=} maxBytesToRead - * @return {string} - */ - var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => { - var endIdx = idx + maxBytesToRead; - var endPtr = idx; - // TextDecoder needs to know the byte length in advance, it doesn't stop on - // null terminator by itself. Also, use the length info to avoid running tiny - // strings through TextDecoder, since .subarray() allocates garbage. - // (As a tiny code save trick, compare endPtr against endIdx using a negation, - // so that undefined means Infinity) - while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; - - if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { - return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); - } - var str = ''; - // If building with TextDecoder, we have already computed the string length - // above, so test loop end condition against that - while (idx < endPtr) { - // For UTF8 byte structure, see: - // http://en.wikipedia.org/wiki/UTF-8#Description - // https://www.ietf.org/rfc/rfc2279.txt - // https://tools.ietf.org/html/rfc3629 - var u0 = heapOrArray[idx++]; - if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } - var u1 = heapOrArray[idx++] & 63; - if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } - var u2 = heapOrArray[idx++] & 63; - if ((u0 & 0xF0) == 0xE0) { - u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; - } else { - if ((u0 & 0xF8) != 0xF0) warnOnce('Invalid UTF-8 leading byte ' + ptrToString(u0) + ' encountered when deserializing a UTF-8 string in wasm memory to a JS string!'); - u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63); - } - - if (u0 < 0x10000) { - str += String.fromCharCode(u0); - } else { - var ch = u0 - 0x10000; - str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); - } - } - return str; - }; - - var FS_stdin_getChar_buffer = []; - - var lengthBytesUTF8 = (str) => { - var len = 0; - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code - // unit, not a Unicode code point of the character! So decode - // UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - var c = str.charCodeAt(i); // possibly a lead surrogate - if (c <= 0x7F) { - len++; - } else if (c <= 0x7FF) { - len += 2; - } else if (c >= 0xD800 && c <= 0xDFFF) { - len += 4; ++i; - } else { - len += 3; - } - } - return len; - }; - - var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => { - assert(typeof str === 'string', `stringToUTF8Array expects a string (got ${typeof str})`); - // Parameter maxBytesToWrite is not optional. Negative values, 0, null, - // undefined and false each don't write out any bytes. - if (!(maxBytesToWrite > 0)) - return 0; - - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. - for (var i = 0; i < str.length; ++i) { - // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code - // unit, not a Unicode code point of the character! So decode - // UTF16->UTF32->UTF8. - // See http://unicode.org/faq/utf_bom.html#utf16-3 - // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description - // and https://www.ietf.org/rfc/rfc2279.txt - // and https://tools.ietf.org/html/rfc3629 - var u = str.charCodeAt(i); // possibly a lead surrogate - if (u >= 0xD800 && u <= 0xDFFF) { - var u1 = str.charCodeAt(++i); - u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); - } - if (u <= 0x7F) { - if (outIdx >= endIdx) break; - heap[outIdx++] = u; - } else if (u <= 0x7FF) { - if (outIdx + 1 >= endIdx) break; - heap[outIdx++] = 0xC0 | (u >> 6); - heap[outIdx++] = 0x80 | (u & 63); - } else if (u <= 0xFFFF) { - if (outIdx + 2 >= endIdx) break; - heap[outIdx++] = 0xE0 | (u >> 12); - heap[outIdx++] = 0x80 | ((u >> 6) & 63); - heap[outIdx++] = 0x80 | (u & 63); - } else { - if (outIdx + 3 >= endIdx) break; - if (u > 0x10FFFF) warnOnce('Invalid Unicode code point ' + ptrToString(u) + ' encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).'); - heap[outIdx++] = 0xF0 | (u >> 18); - heap[outIdx++] = 0x80 | ((u >> 12) & 63); - heap[outIdx++] = 0x80 | ((u >> 6) & 63); - heap[outIdx++] = 0x80 | (u & 63); - } - } - // Null-terminate the pointer to the buffer. - heap[outIdx] = 0; - return outIdx - startIdx; - }; - /** @type {function(string, boolean=, number=)} */ - 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 FS_stdin_getChar = () => { - if (!FS_stdin_getChar_buffer.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - // we will read data by chunks of BUFSIZE - var BUFSIZE = 256; - var buf = Buffer.alloc(BUFSIZE); - var bytesRead = 0; - - // For some reason we must suppress a closure warning here, even though - // fd definitely exists on process.stdin, and is even the proper way to - // get the fd of stdin, - // https://github.com/nodejs/help/issues/2136#issuecomment-523649904 - // This started to happen after moving this logic out of library_tty.js, - // so it is related to the surrounding code in some unclear manner. - /** @suppress {missingProperties} */ - var fd = process.stdin.fd; - - try { - bytesRead = fs.readSync(fd, buf); - } catch(e) { - // Cross-platform differences: on Windows, reading EOF throws an exception, but on other OSes, - // reading EOF returns 0. Uniformize behavior by treating the EOF exception to return 0. - 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') { - // Browser. - result = window.prompt('Input: '); // returns null on cancel - if (result !== null) { - result += '\n'; - } - } else if (typeof readline == 'function') { - // Command line. - result = readline(); - if (result !== null) { - result += '\n'; - } - } - if (!result) { - return null; - } - FS_stdin_getChar_buffer = intArrayFromString(result, true); - } - return FS_stdin_getChar_buffer.shift(); - }; - var TTY = { - ttys:[], - init() { - // https://github.com/emscripten-core/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // currently, FS.init does not distinguish if process.stdin is a file or TTY - // // device, it always assumes it's a TTY device. because of this, we're forcing - // // process.stdin to UTF8 encoding to at least make stdin reading compatible - // // with text files until FS.init can be refactored. - // process.stdin.setEncoding('utf8'); - // } - }, - shutdown() { - // https://github.com/emscripten-core/emscripten/pull/1555 - // if (ENVIRONMENT_IS_NODE) { - // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? - // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation - // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? - // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle - // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call - // process.stdin.pause(); - // } - }, - register(dev, ops) { - TTY.ttys[dev] = { input: [], output: [], ops: ops }; - FS.registerDevice(dev, TTY.stream_ops); - }, - stream_ops:{ - open(stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(43); - } - stream.tty = tty; - stream.seekable = false; - }, - close(stream) { - // flush any pending line data - stream.tty.ops.fsync(stream.tty); - }, - fsync(stream) { - stream.tty.ops.fsync(stream.tty); - }, - read(stream, buffer, offset, length, pos /* ignored */) { - 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(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(tty) { - return FS_stdin_getChar(); - }, - put_char(tty, val) { - if (val === null || val === 10) { - out(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } else { - if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle. - } - }, - fsync(tty) { - if (tty.output && tty.output.length > 0) { - out(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } - }, - ioctl_tcgets(tty) { - // typical setting - return { - c_iflag: 25856, - c_oflag: 5, - c_cflag: 191, - c_lflag: 35387, - c_cc: [ - 0x03, 0x1c, 0x7f, 0x15, 0x04, 0x00, 0x01, 0x00, 0x11, 0x13, 0x1a, 0x00, - 0x12, 0x0f, 0x17, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - ] - }; - }, - ioctl_tcsets(tty, optional_actions, data) { - // currently just ignore - return 0; - }, - ioctl_tiocgwinsz(tty) { - return [24, 80]; - }, - }, - default_tty1_ops:{ - put_char(tty, val) { - if (val === null || val === 10) { - err(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } else { - if (val != 0) tty.output.push(val); - } - }, - fsync(tty) { - if (tty.output && tty.output.length > 0) { - err(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } - }, - }, - }; - - - var zeroMemory = (address, size) => { - HEAPU8.fill(0, address, address + size); - return address; - }; - - var alignMemory = (size, alignment) => { - assert(alignment, "alignment argument is required"); - return Math.ceil(size / alignment) * alignment; - }; - var mmapAlloc = (size) => { - abort('internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported'); - }; - var MEMFS = { - ops_table:null, - mount(mount) { - return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0); - }, - createNode(parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - // no supported - throw new FS.ErrnoError(63); - } - 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; // The actual number of bytes used in the typed array, as opposed to contents.length which gives the whole capacity. - // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred - // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size - // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme. - 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(); - // add the new node to the parent - if (parent) { - parent.contents[name] = node; - parent.timestamp = node.timestamp; - } - return node; - }, - getFileDataAsTypedArray(node) { - if (!node.contents) return new Uint8Array(0); - if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes. - return new Uint8Array(node.contents); - }, - expandFileStorage(node, newCapacity) { - var prevCapacity = node.contents ? node.contents.length : 0; - if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough. - // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity. - // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to - // avoid overshooting the allocation cap by a very large margin. - var CAPACITY_DOUBLING_MAX = 1024 * 1024; - newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) >>> 0); - if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding. - var oldContents = node.contents; - node.contents = new Uint8Array(newCapacity); // Allocate new storage. - if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage. - }, - resizeFileStorage(node, newSize) { - if (node.usedBytes == newSize) return; - if (newSize == 0) { - node.contents = null; // Fully decommit when requesting a resize to zero. - node.usedBytes = 0; - } else { - var oldContents = node.contents; - node.contents = new Uint8Array(newSize); // Allocate new storage. - if (oldContents) { - node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage. - } - node.usedBytes = newSize; - } - }, - node_ops:{ - getattr(node) { - var attr = {}; - // device numbers reuse inode numbers. - 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); - // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), - // but this is not required by the standard. - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - }, - setattr(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(parent, name) { - throw FS.genericErrors[44]; - }, - mknod(parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - }, - rename(old_node, new_dir, new_name) { - // if we're overwriting a directory at new_name, make sure it's empty. - 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); - } - } - } - // do the internal rewiring - 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(parent, name) { - delete parent.contents[name]; - parent.timestamp = Date.now(); - }, - rmdir(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(node) { - var entries = ['.', '..']; - for (var key of Object.keys(node.contents)) { - entries.push(key); - } - return entries; - }, - symlink(parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0); - node.link = oldpath; - return node; - }, - readlink(node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(28); - } - return node.link; - }, - }, - stream_ops:{ - read(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); - assert(size >= 0); - if (size > 8 && contents.subarray) { // non-trivial, and typed array - 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(stream, buffer, offset, length, position, canOwn) { - // The data buffer should be a typed array view - assert(!(buffer instanceof ArrayBuffer)); - // If the buffer is located in main memory (HEAP), and if - // memory can grow, we can't hold on to references of the - // memory buffer, as they may get invalidated. That means we - // need to do copy its contents. - 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)) { // This write is from a typed array to a typed array? - if (canOwn) { - assert(position === 0, 'canOwn must imply no weird position inside the file'); - node.contents = buffer.subarray(offset, offset + length); - node.usedBytes = length; - return length; - } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data. - node.contents = buffer.slice(offset, offset + length); - node.usedBytes = length; - return length; - } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file? - node.contents.set(buffer.subarray(offset, offset + length), position); - return length; - } - } - - // Appending to an existing file and we need to reallocate, or source data did not come as a typed array. - MEMFS.expandFileStorage(node, position+length); - if (node.contents.subarray && buffer.subarray) { - // Use typed array write which is available. - node.contents.set(buffer.subarray(offset, offset + length), position); - } else { - for (var i = 0; i < length; i++) { - node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not. - } - } - node.usedBytes = Math.max(node.usedBytes, position + length); - return length; - }, - llseek(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(stream, offset, length) { - MEMFS.expandFileStorage(stream.node, offset + length); - stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); - }, - mmap(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; - // Only make a new copy when MAP_PRIVATE is specified. - if (!(flags & 2) && contents.buffer === HEAP8.buffer) { - // We can't emulate MAP_SHARED when the file is not backed by the - // buffer we're mapping to (e.g. the HEAP buffer). - allocated = false; - ptr = contents.byteOffset; - } else { - // Try to avoid unnecessary slices. - 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, allocated }; - }, - msync(stream, buffer, offset, length, mmapFlags) { - MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); - // should we check if bytesWritten and length are the same? - return 0; - }, - }, - }; - - /** @param {boolean=} noRunDep */ - var 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 FS_createDataFile = (parent, name, fileData, canRead, canWrite, canOwn) => { - FS.createDataFile(parent, name, fileData, canRead, canWrite, canOwn); - }; - - var preloadPlugins = Module['preloadPlugins'] || []; - var FS_handledByPreloadPlugin = (byteArray, fullname, finish, onerror) => { - // Ensure plugins are ready. - if (typeof Browser != 'undefined') Browser.init(); - - var handled = false; - preloadPlugins.forEach((plugin) => { - if (handled) return; - if (plugin['canHandle'](fullname)) { - plugin['handle'](byteArray, fullname, finish, onerror); - handled = true; - } - }); - return handled; - }; - var FS_createPreloadedFile = (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => { - // TODO we should allow people to just pass in a complete filename instead - // of parent and name being that we just join them anyways - var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; - var dep = getUniqueRunDependency(`cp ${fullname}`); // might have several active requests for the same fullname - function processData(byteArray) { - function finish(byteArray) { - preFinish?.(); - if (!dontCreateFile) { - FS_createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - onload?.(); - removeRunDependency(dep); - } - if (FS_handledByPreloadPlugin(byteArray, fullname, finish, () => { - onerror?.(); - removeRunDependency(dep); - })) { - return; - } - finish(byteArray); - } - addRunDependency(dep); - if (typeof url == 'string') { - asyncLoad(url, processData, onerror); - } else { - processData(url); - } - }; - - var FS_modeStringToFlags = (str) => { - var flagModes = { - 'r': 0, - 'r+': 2, - 'w': 512 | 64 | 1, - 'w+': 512 | 64 | 2, - 'a': 1024 | 64 | 1, - 'a+': 1024 | 64 | 2, - }; - var flags = flagModes[str]; - if (typeof flags == 'undefined') { - throw new Error(`Unknown file open mode: ${str}`); - } - return flags; - }; - - var FS_getMode = (canRead, canWrite) => { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - }; - - - - - var ERRNO_MESSAGES = { - 0:"Success", - 1:"Arg list too long", - 2:"Permission denied", - 3:"Address already in use", - 4:"Address not available", - 5:"Address family not supported by protocol family", - 6:"No more processes", - 7:"Socket already connected", - 8:"Bad file number", - 9:"Trying to read unreadable message", - 10:"Mount device busy", - 11:"Operation canceled", - 12:"No children", - 13:"Connection aborted", - 14:"Connection refused", - 15:"Connection reset by peer", - 16:"File locking deadlock error", - 17:"Destination address required", - 18:"Math arg out of domain of func", - 19:"Quota exceeded", - 20:"File exists", - 21:"Bad address", - 22:"File too large", - 23:"Host is unreachable", - 24:"Identifier removed", - 25:"Illegal byte sequence", - 26:"Connection already in progress", - 27:"Interrupted system call", - 28:"Invalid argument", - 29:"I/O error", - 30:"Socket is already connected", - 31:"Is a directory", - 32:"Too many symbolic links", - 33:"Too many open files", - 34:"Too many links", - 35:"Message too long", - 36:"Multihop attempted", - 37:"File or path name too long", - 38:"Network interface is not configured", - 39:"Connection reset by network", - 40:"Network is unreachable", - 41:"Too many open files in system", - 42:"No buffer space available", - 43:"No such device", - 44:"No such file or directory", - 45:"Exec format error", - 46:"No record locks available", - 47:"The link has been severed", - 48:"Not enough core", - 49:"No message of desired type", - 50:"Protocol not available", - 51:"No space left on device", - 52:"Function not implemented", - 53:"Socket is not connected", - 54:"Not a directory", - 55:"Directory not empty", - 56:"State not recoverable", - 57:"Socket operation on non-socket", - 59:"Not a typewriter", - 60:"No such device or address", - 61:"Value too large for defined data type", - 62:"Previous owner died", - 63:"Not super-user", - 64:"Broken pipe", - 65:"Protocol error", - 66:"Unknown protocol", - 67:"Protocol wrong type for socket", - 68:"Math result not representable", - 69:"Read only file system", - 70:"Illegal seek", - 71:"No such process", - 72:"Stale file handle", - 73:"Connection timed out", - 74:"Text file busy", - 75:"Cross-device link", - 100:"Device not a stream", - 101:"Bad font file fmt", - 102:"Invalid slot", - 103:"Invalid request code", - 104:"No anode", - 105:"Block device required", - 106:"Channel number out of range", - 107:"Level 3 halted", - 108:"Level 3 reset", - 109:"Link number out of range", - 110:"Protocol driver not attached", - 111:"No CSI structure available", - 112:"Level 2 halted", - 113:"Invalid exchange", - 114:"Invalid request descriptor", - 115:"Exchange full", - 116:"No data (for no delay io)", - 117:"Timer expired", - 118:"Out of streams resources", - 119:"Machine is not on the network", - 120:"Package not installed", - 121:"The object is remote", - 122:"Advertise error", - 123:"Srmount error", - 124:"Communication error on send", - 125:"Cross mount point (not really error)", - 126:"Given log. name not unique", - 127:"f.d. invalid for this operation", - 128:"Remote address changed", - 129:"Can access a needed shared lib", - 130:"Accessing a corrupted shared lib", - 131:".lib section in a.out corrupted", - 132:"Attempting to link in too many libs", - 133:"Attempting to exec a shared library", - 135:"Streams pipe error", - 136:"Too many users", - 137:"Socket type not supported", - 138:"Not supported", - 139:"Protocol family not supported", - 140:"Can't send after socket shutdown", - 141:"Too many references", - 142:"Host is down", - 148:"No medium (in tape drive)", - 156:"Level 2 not synchronized", - }; - - var 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 FS = { - root:null, - mounts:[], - devices:{ - }, - streams:[], - nextInode:1, - nameTable:null, - currentPath:"/", - initialized:false, - ignorePermissions:true, - ErrnoError:class extends Error { - // We set the `name` property to be able to identify `FS.ErrnoError` - // - the `name` is a standard ECMA-262 property of error objects. Kind of good to have it anyway. - // - when using PROXYFS, an error can come from an underlying FS - // as different FS objects have their own FS.ErrnoError each, - // the test `err instanceof FS.ErrnoError` won't detect an error coming from another filesystem, causing bugs. - // we'll use the reliable test `err.name == "ErrnoError"` instead - constructor(errno) { - super(ERRNO_MESSAGES[errno]); - // TODO(sbc): Use the inline member declaration syntax once we - // support it in acorn and closure. - this.name = 'ErrnoError'; - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - } - }, - genericErrors:{ - }, - filesystems:null, - syncFSRequests:0, - FSStream:class { - constructor() { - // TODO(https://github.com/emscripten-core/emscripten/issues/21414): - // Use inline field declarations. - this.shared = {}; - } - get object() { - return this.node; - } - set object(val) { - this.node = val; - } - get isRead() { - return (this.flags & 2097155) !== 1; - } - get isWrite() { - return (this.flags & 2097155) !== 0; - } - get isAppend() { - return (this.flags & 1024); - } - get flags() { - return this.shared.flags; - } - set flags(val) { - this.shared.flags = val; - } - get position() { - return this.shared.position; - } - set position(val) { - this.shared.position = val; - } - }, - FSNode:class { - constructor(parent, name, mode, rdev) { - if (!parent) { - parent = this; // root node sets parent to itself - } - 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; - this.readMode = 292/*292*/ | 73/*73*/; - this.writeMode = 146/*146*/; - } - get read() { - return (this.mode & this.readMode) === this.readMode; - } - set read(val) { - val ? this.mode |= this.readMode : this.mode &= ~this.readMode; - } - get write() { - return (this.mode & this.writeMode) === this.writeMode; - } - set write(val) { - val ? this.mode |= this.writeMode : this.mode &= ~this.writeMode; - } - get isFolder() { - return FS.isDir(this.mode); - } - get isDevice() { - return FS.isChrdev(this.mode); - } - }, - 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) { // max recursive lookup of 8 - throw new FS.ErrnoError(32); - } - - // split the absolute path - var parts = path.split('/').filter((p) => !!p); - - // start at the root - 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) { - // stop resolving - break; - } - - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - - // jump to the mount's root node if this is a mountpoint - if (FS.isMountpoint(current)) { - if (!islast || (islast && opts.follow_mount)) { - current = current.mounted.root; - } - } - - // by default, lookupPath will not follow a symlink if it is the final path component. - // setting opts.follow = true will override this behavior. - 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) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). - 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); - } - 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; - } - } - // if we failed to find it in the cache, call into the VFS - return FS.lookup(parent, name); - }, - createNode(parent, name, mode, rdev) { - assert(typeof parent == 'object') - 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; - }, - flagsToPermissionString(flag) { - var perms = ['r', 'w', 'rw'][flag & 3]; - if ((flag & 512)) { - perms += 'w'; - } - return perms; - }, - nodePermissions(node, perms) { - if (FS.ignorePermissions) { - return 0; - } - // return 0 if any user, group or owner bits are set. - 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) { - if (!FS.isDir(dir.mode)) return 54; - 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' || // opening for write - (flags & 512)) { // TODO: check for O_SEARCH? (== search for dir only) - return 31; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - }, - MAX_OPEN_FDS:4096, - nextfd() { - for (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(33); - }, - getStreamChecked(fd) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - return stream; - }, - getStream:(fd) => FS.streams[fd], - createStream(stream, fd = -1) { - - // clone it, so we can return an instance of FSStream - stream = Object.assign(new FS.FSStream(), stream); - if (fd == -1) { - fd = FS.nextfd(); - } - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - }, - closeStream(fd) { - FS.streams[fd] = null; - }, - dupStream(origStream, fd = -1) { - var stream = FS.createStream(origStream, fd); - stream.stream_ops?.dup?.(stream); - return stream; - }, - chrdev_stream_ops:{ - open(stream) { - var device = FS.getDevice(stream.node.rdev); - // override node's stream ops with the device's - stream.stream_ops = device.stream_ops; - // forward the open call - stream.stream_ops.open?.(stream); - }, - llseek() { - throw new FS.ErrnoError(70); - }, - }, - major:(dev) => ((dev) >> 8), - minor:(dev) => ((dev) & 0xff), - 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(...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) { - assert(FS.syncFSRequests > 0); - 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); - } - }; - - // sync all mounts - mounts.forEach((mount) => { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - }, - mount(type, opts, mountpoint) { - if (typeof type == 'string') { - // The filesystem was not included, and instead we have an error - // message stored in the variable. - throw type; - } - 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; // use the absolute 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, - opts, - mountpoint, - mounts: [] - }; - - // create a root node for the fs - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - - if (root) { - FS.root = mountRoot; - } else if (node) { - // set as a mountpoint - node.mounted = mount; - - // add the new mount to the current mount's children - 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); - } - - // destroy the nodes for this mount, and all its child mounts - 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; - } - }); - - // no longer a mountpoint - node.mounted = null; - - // remove this mount from the child mounts - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - 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 /* 0666 */; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - }, - mkdir(path, mode) { - mode = mode !== undefined ? mode : 511 /* 0777 */; - 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 /* 0666 */; - } - 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); - // parents must exist - var lookup, old_dir, new_dir; - - // let the errors from non existent directories percolate up - 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); - // need to be part of the same mount - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(75); - } - // source must exist - var old_node = FS.lookupNode(old_dir, old_name); - // old path should not be an ancestor of the new path - var relative = PATH_FS.relative(old_path, new_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(28); - } - // new path should not be an ancestor of the old path - relative = PATH_FS.relative(new_path, old_dirname); - if (relative.charAt(0) !== '.') { - throw new FS.ErrnoError(55); - } - // see if the new path already exists - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) { - // not fatal - } - // early out if nothing needs to change - if (old_node === new_node) { - return; - } - // we'll need to delete the old entry - var isdir = FS.isDir(old_node.mode); - var errCode = FS.mayDelete(old_dir, old_name, isdir); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - // need delete permissions if we'll be overwriting. - // need create permissions if new doesn't already exist. - 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 we are going to change the parent, check write permissions - if (new_dir !== old_dir) { - errCode = FS.nodePermissions(old_dir, 'w'); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - } - // remove the node from the lookup hash - FS.hashRemoveNode(old_node); - // do the underlying fs rename - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - // add the node back to the hash (in case node_ops.rename - // changed its name) - 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) { - // According to POSIX, we should map EISDIR to EPERM, but - // we instead do what Linux does (and we must, as we use - // the musl linux libc). - 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.getStreamChecked(fd); - 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() - // we ignore the uid / gid for now - }); - }, - lchown(path, uid, gid) { - FS.chown(path, uid, gid, true); - }, - fchown(fd, uid, gid) { - var stream = FS.getStreamChecked(fd); - 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.getStreamChecked(fd); - 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 /* 0666 */ : 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) { - // ignore - } - } - // perhaps we need to create the node - var created = false; - if ((flags & 64)) { - if (node) { - // if O_CREAT and O_EXCL are set, error out if the node already exists - if ((flags & 128)) { - throw new FS.ErrnoError(20); - } - } else { - // node doesn't exist, try to create it - node = FS.mknod(path, mode, 0); - created = true; - } - } - if (!node) { - throw new FS.ErrnoError(44); - } - // can't truncate a device - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - // if asked only for a directory, then this must be one - if ((flags & 65536) && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(54); - } - // check permissions, if this is not a file we just created now (it is ok to - // create and write to a file with read-only permissions; it is read-only - // for later use) - if (!created) { - var errCode = FS.mayOpen(node, flags); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - } - // do truncation if necessary - if ((flags & 512) && !created) { - FS.truncate(node, 0); - } - // we've already handled these, don't pass down to the underlying vfs - flags &= ~(128 | 512 | 131072); - - // register the stream with the filesystem - var stream = FS.createStream({ - node, - path: FS.getPath(node), // we want the absolute path to the node - flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - // used by the file family libc calls (fopen, fwrite, ferror, etc.) - ungotten: [], - error: false - }); - // call the new stream's open function - 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; // free readdir state - 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) { - assert(offset >= 0); - 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) { - assert(offset >= 0); - 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) { - // seek to the end before writing in append mode - 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) { - // User requests writing to file (prot & PROT_WRITE != 0). - // Checking if we have permissions to write to the file unless - // MAP_PRIVATE flag is set. According to POSIX spec it is possible - // to write to file opened in read-only mode with MAP_PRIVATE flag, - // as all modifications will be visible only in the memory of - // the current process. - 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) { - assert(offset >= 0); - if (!stream.stream_ops.msync) { - return 0; - } - return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); - }, - 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() { - // create /dev - FS.mkdir('/dev'); - // setup /dev/null - FS.registerDevice(FS.makedev(1, 3), { - read: () => 0, - write: (stream, buffer, offset, length, pos) => length, - }); - FS.mkdev('/dev/null', FS.makedev(1, 3)); - // setup /dev/tty and /dev/tty1 - // stderr needs to print output using err() rather than out() - // so we register a second tty just for it. - 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)); - // setup /dev/[u]random - // use a buffer to avoid overhead of individual crypto calls per byte - 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); - // we're not going to emulate the actual shm device, - // just create the tmp dirs that reside in it commonly - FS.mkdir('/dev/shm'); - FS.mkdir('/dev/shm/tmp'); - }, - createSpecialDirectories() { - // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the - // name of the stream for fd 6 (see test_unistd_ttyname) - 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 /* 0777 */, 73); - node.node_ops = { - lookup(parent, name) { - var fd = +name; - var stream = FS.getStreamChecked(fd); - var ret = { - parent: null, - mount: { mountpoint: 'fake' }, - node_ops: { readlink: () => stream.path }, - }; - ret.parent = ret; // make it look like a simple root node - return ret; - } - }; - return node; - } - }, {}, '/proc/self/fd'); - }, - createStandardStreams() { - // TODO deprecate the old functionality of a single - // input / output callback and that utilizes FS.createDevice - // and instead require a unique set of stream ops - - // by default, we symlink the standard streams to the - // default tty devices. however, if the standard streams - // have been overwritten we create a unique device for - // them instead. - 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'); - } - - // open default streams for the stdin, stdout and stderr devices - var stdin = FS.open('/dev/stdin', 0); - var stdout = FS.open('/dev/stdout', 1); - var stderr = FS.open('/dev/stderr', 1); - assert(stdin.fd === 0, `invalid handle for stdin (${stdin.fd})`); - assert(stdout.fd === 1, `invalid handle for stdout (${stdout.fd})`); - assert(stderr.fd === 2, `invalid handle for stderr (${stderr.fd})`); - }, - staticInit() { - // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) - [44].forEach((code) => { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ''; - }); - - FS.nameTable = new Array(4096); - - FS.mount(MEMFS, {}, '/'); - - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - FS.createSpecialDirectories(); - - FS.filesystems = { - 'MEMFS': MEMFS, - }; - }, - init(input, output, error) { - assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); - FS.init.initialized = true; - - // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here - Module['stdin'] = input || Module['stdin']; - Module['stdout'] = output || Module['stdout']; - Module['stderr'] = error || Module['stderr']; - - FS.createStandardStreams(); - }, - quit() { - FS.init.initialized = false; - // force-flush all streams, so we get musl std streams printed out - _fflush(0); - // close all of our streams - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - }, - findObject(path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (!ret.exists) { - return null; - } - return ret.object; - }, - analyzePath(path, dontResolveLastLink) { - // operate from within the context of the symlink's target - 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) { - // ignore EEXIST - } - 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; - } - // make sure we can write to the file - 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); - } - }, - 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); - // Create a fake device that a set of stream ops to emulate - // the old behavior. - FS.registerDevice(dev, { - open(stream) { - stream.seekable = false; - }, - close(stream) { - // flush any pending line data - if (output?.buffer?.length) { - output(10); - } - }, - read(stream, buffer, offset, length, pos /* ignored */) { - 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_) { - // Command-line. - try { - // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as - // read() will try to parse UTF8. - 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) { - // Lazy chunked Uint8Array (implements get and length from Uint8Array). - // Actual getting is abstracted away for eventual reuse. - class LazyUint8Array { - constructor() { - this.lengthKnown = false; - this.chunks = []; // Loaded chunks. Index is the chunk number - } - 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]; - } - setDataGetter(getter) { - this.getter = getter; - } - cacheLength() { - // Find length - 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; // Chunk size in bytes - - if (!hasByteServing) chunkSize = datalength; - - // Function to get a range from the remote URL. - 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!"); - - // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - - // Some hints to the browser that we want binary data. - 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(/** @type{Array} */(xhr.response || [])); - } - return intArrayFromString(xhr.responseText || '', true); - }; - var lazyArray = this; - lazyArray.setDataGetter((chunkNum) => { - var start = chunkNum * chunkSize; - var end = (chunkNum+1) * chunkSize - 1; // including this byte - end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block - 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) { - // if the server uses gzip or doesn't supply the length, we have to download the whole file to get the (uncompressed) length - chunkSize = datalength = 1; // this will force getter(0)/doXHR do download the whole file - 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; - } - get length() { - if (!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - get chunkSize() { - if (!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - } - - 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(); - var properties = { isDevice: false, contents: lazyArray }; - } else { - var properties = { isDevice: false, url: url }; - } - - var node = FS.createFile(parent, name, properties, canRead, canWrite); - // This is a total hack, but I want to get this lazy file code out of the - // core of MEMFS. If we want to keep this lazy file concept I feel it should - // be its own thin LAZYFS proxying calls to MEMFS. - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - // Add a function that defers querying the file size until it is asked the first time. - Object.defineProperties(node, { - usedBytes: { - get: function() { return this.contents.length; } - } - }); - // override each stream op with one that tries to force load the lazy file first - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach((key) => { - var fn = node.stream_ops[key]; - stream_ops[key] = (...args) => { - FS.forceLoadFile(node); - return fn(...args); - }; - }); - 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); - assert(size >= 0); - if (contents.slice) { // normal array - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR - buffer[offset + i] = contents.get(position + i); - } - } - return size; - } - // use a custom read function - stream_ops.read = (stream, buffer, offset, length, position) => { - FS.forceLoadFile(node); - return writeChunks(stream, buffer, offset, length, position) - }; - // use a custom mmap function - 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, allocated: true }; - }; - node.stream_ops = stream_ops; - return node; - }, - absolutePath() { - abort('FS.absolutePath has been removed; use PATH_FS.resolve instead'); - }, - createFolder() { - abort('FS.createFolder has been removed; use FS.mkdir instead'); - }, - createLink() { - abort('FS.createLink has been removed; use FS.symlink instead'); - }, - joinPath() { - abort('FS.joinPath has been removed; use PATH.join instead'); - }, - mmapAlloc() { - abort('FS.mmapAlloc has been replaced by the top level function mmapAlloc'); - }, - standardizePath() { - abort('FS.standardizePath has been removed; use PATH.normalize instead'); - }, - }; - - - /** - * Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the - * emscripten HEAP, returns a copy of that string as a Javascript String object. - * - * @param {number} ptr - * @param {number=} maxBytesToRead - An optional length that specifies the - * maximum number of bytes to read. You can omit this parameter to scan the - * string until the first 0 byte. If maxBytesToRead is passed, and the string - * at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the - * string will cut short at that byte index (i.e. maxBytesToRead will not - * produce a string of exact length [ptr, ptr+maxBytesToRead[) N.B. mixing - * frequent uses of UTF8ToString() with and without maxBytesToRead may throw - * JS JIT optimizations off, so it is worth to consider consistently using one - * @return {string} - */ - var UTF8ToString = (ptr, maxBytesToRead) => { - assert(typeof ptr == 'number', `UTF8ToString expects a number (got ${typeof ptr})`); - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; - }; - var SYSCALLS = { - DEFAULT_POLLMASK:5, - calculateAt(dirfd, path, allowEmpty) { - if (PATH.isAbs(path)) { - return path; - } - // relative 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(func, path, buf) { - var stat = func(path); - HEAP32[((buf)>>2)] = stat.dev; - HEAP32[(((buf)+(4))>>2)] = stat.mode; - HEAPU32[(((buf)+(8))>>2)] = stat.nlink; - HEAP32[(((buf)+(12))>>2)] = stat.uid; - HEAP32[(((buf)+(16))>>2)] = stat.gid; - HEAP32[(((buf)+(20))>>2)] = stat.rdev; - (tempI64 = [stat.size>>>0,(tempDouble = stat.size,(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? (+(Math.floor((tempDouble)/4294967296.0)))>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)], HEAP32[(((buf)+(24))>>2)] = tempI64[0],HEAP32[(((buf)+(28))>>2)] = tempI64[1]); - HEAP32[(((buf)+(32))>>2)] = 4096; - HEAP32[(((buf)+(36))>>2)] = stat.blocks; - var atime = stat.atime.getTime(); - var mtime = stat.mtime.getTime(); - var ctime = stat.ctime.getTime(); - (tempI64 = [Math.floor(atime / 1000)>>>0,(tempDouble = Math.floor(atime / 1000),(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? (+(Math.floor((tempDouble)/4294967296.0)))>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)], HEAP32[(((buf)+(40))>>2)] = tempI64[0],HEAP32[(((buf)+(44))>>2)] = tempI64[1]); - HEAPU32[(((buf)+(48))>>2)] = (atime % 1000) * 1000; - (tempI64 = [Math.floor(mtime / 1000)>>>0,(tempDouble = Math.floor(mtime / 1000),(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? (+(Math.floor((tempDouble)/4294967296.0)))>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)], HEAP32[(((buf)+(56))>>2)] = tempI64[0],HEAP32[(((buf)+(60))>>2)] = tempI64[1]); - HEAPU32[(((buf)+(64))>>2)] = (mtime % 1000) * 1000; - (tempI64 = [Math.floor(ctime / 1000)>>>0,(tempDouble = Math.floor(ctime / 1000),(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? (+(Math.floor((tempDouble)/4294967296.0)))>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)], HEAP32[(((buf)+(72))>>2)] = tempI64[0],HEAP32[(((buf)+(76))>>2)] = tempI64[1]); - HEAPU32[(((buf)+(80))>>2)] = (ctime % 1000) * 1000; - (tempI64 = [stat.ino>>>0,(tempDouble = stat.ino,(+(Math.abs(tempDouble))) >= 1.0 ? (tempDouble > 0.0 ? (+(Math.floor((tempDouble)/4294967296.0)))>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)], HEAP32[(((buf)+(88))>>2)] = tempI64[0],HEAP32[(((buf)+(92))>>2)] = tempI64[1]); - return 0; - }, - doMsync(addr, stream, len, flags, offset) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - if (flags & 2) { - // MAP_PRIVATE calls need not to be synced back to underlying fs - return 0; - } - var buffer = HEAPU8.slice(addr, addr + len); - FS.msync(stream, buffer, offset, len, flags); - }, - varargs:undefined, - get() { - assert(SYSCALLS.varargs != undefined); - // the `+` prepended here is necessary to convince the JSCompiler that varargs is indeed a number. - var ret = HEAP32[((+SYSCALLS.varargs)>>2)]; - SYSCALLS.varargs += 4; - return ret; - }, - getp() { return SYSCALLS.get() }, - getStr(ptr) { - var ret = UTF8ToString(ptr); - return ret; - }, - getStreamFromFD(fd) { - var stream = FS.getStreamChecked(fd); - return stream; - }, - }; - function ___syscall_faccessat(dirfd, path, amode, flags) { - try { - - path = SYSCALLS.getStr(path); - assert(flags === 0); - path = SYSCALLS.calculateAt(dirfd, path); - if (amode & ~7) { - // need a valid mode - 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 /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) { - return -2; - } - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e; - return -e.errno; - } - } - - 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; - } - while (FS.streams[arg]) { - arg++; - } - var newStream; - newStream = FS.dupStream(stream, arg); - return newStream.fd; - } - case 1: - case 2: - return 0; // FD_CLOEXEC makes no sense for a single process. - case 3: - return stream.flags; - case 4: { - var arg = SYSCALLS.get(); - stream.flags |= arg; - return 0; - } - case 12: { - var arg = SYSCALLS.getp(); - var offset = 0; - // We're always unlocked. - HEAP16[(((arg)+(offset))>>1)] = 2; - return 0; - } - case 13: - case 14: - return 0; // Pretend that the locking is successful. - } - return -28; - } catch (e) { - if (typeof FS == 'undefined' || !(e.name === '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: { - if (!stream.tty) return -59; - return 0; - } - case 21505: { - if (!stream.tty) return -59; - if (stream.tty.ops.ioctl_tcgets) { - var termios = stream.tty.ops.ioctl_tcgets(stream); - var argp = SYSCALLS.getp(); - HEAP32[((argp)>>2)] = termios.c_iflag || 0; - HEAP32[(((argp)+(4))>>2)] = termios.c_oflag || 0; - HEAP32[(((argp)+(8))>>2)] = termios.c_cflag || 0; - HEAP32[(((argp)+(12))>>2)] = termios.c_lflag || 0; - for (var i = 0; i < 32; i++) { - HEAP8[(argp + i)+(17)] = termios.c_cc[i] || 0; - } - return 0; - } - return 0; - } - case 21510: - case 21511: - case 21512: { - if (!stream.tty) return -59; - return 0; // no-op, not actually adjusting terminal settings - } - case 21506: - case 21507: - case 21508: { - if (!stream.tty) return -59; - if (stream.tty.ops.ioctl_tcsets) { - var argp = SYSCALLS.getp(); - var c_iflag = HEAP32[((argp)>>2)]; - var c_oflag = HEAP32[(((argp)+(4))>>2)]; - var c_cflag = HEAP32[(((argp)+(8))>>2)]; - var c_lflag = HEAP32[(((argp)+(12))>>2)]; - var c_cc = [] - for (var i = 0; i < 32; i++) { - c_cc.push(HEAP8[(argp + i)+(17)]); - } - return stream.tty.ops.ioctl_tcsets(stream.tty, op, { c_iflag, c_oflag, c_cflag, c_lflag, c_cc }); - } - return 0; // no-op, not actually adjusting terminal settings - } - case 21519: { - if (!stream.tty) return -59; - var argp = SYSCALLS.getp(); - HEAP32[((argp)>>2)] = 0; - return 0; - } - case 21520: { - if (!stream.tty) return -59; - return -28; // not supported - } - case 21531: { - var argp = SYSCALLS.getp(); - return FS.ioctl(stream, op, argp); - } - case 21523: { - // TODO: in theory we should write to the winsize struct that gets - // passed in, but for now musl doesn't read anything on it - if (!stream.tty) return -59; - if (stream.tty.ops.ioctl_tiocgwinsz) { - var winsize = stream.tty.ops.ioctl_tiocgwinsz(stream.tty); - var argp = SYSCALLS.getp(); - HEAP16[((argp)>>1)] = winsize[0]; - HEAP16[(((argp)+(2))>>1)] = winsize[1]; - } - return 0; - } - case 21524: { - // TODO: technically, this ioctl call should change the window size. - // but, since emscripten doesn't have any concept of a terminal window - // yet, we'll just silently throw it away as we do TIOCGWINSZ - if (!stream.tty) return -59; - return 0; - } - case 21515: { - if (!stream.tty) return -59; - return 0; - } - default: return -28; // not supported - } - } catch (e) { - if (typeof FS == 'undefined' || !(e.name === '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.name === 'ErrnoError')) throw e; - return -e.errno; - } - } - - var _abort = () => { - abort('native code called abort()'); - }; - - var _emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num); - - var getHeapMax = () => - // Stay one Wasm page short of 4GB: while e.g. Chrome is able to allocate - // full 4GB Wasm memories, the size will wrap back to 0 bytes in Wasm side - // for any code that deals with heap sizes, which would require special - // casing all heap size related code to treat 0 specially. - 2147483648; - - var growMemory = (size) => { - var b = wasmMemory.buffer; - var pages = (size - b.byteLength + 65535) / 65536; - try { - // round size grow request up to wasm page size (fixed 64KB per spec) - wasmMemory.grow(pages); // .grow() takes a delta compared to the previous size - updateMemoryViews(); - return 1 /*success*/; - } catch(e) { - err(`growMemory: Attempted to grow heap from ${b.byteLength} bytes to ${size} bytes, but got error: ${e}`); - } - // implicit 0 return to save code size (caller will cast "undefined" into 0 - // anyhow) - }; - var _emscripten_resize_heap = (requestedSize) => { - var oldSize = HEAPU8.length; - // With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned. - requestedSize >>>= 0; - // With multithreaded builds, races can happen (another thread might increase the size - // in between), so return a failure, and let the caller retry. - assert(requestedSize > oldSize); - - // Memory resize rules: - // 1. Always increase heap size to at least the requested size, rounded up - // to next page multiple. - // 2a. If MEMORY_GROWTH_LINEAR_STEP == -1, excessively resize the heap - // geometrically: increase the heap size according to - // MEMORY_GROWTH_GEOMETRIC_STEP factor (default +20%), At most - // overreserve by MEMORY_GROWTH_GEOMETRIC_CAP bytes (default 96MB). - // 2b. If MEMORY_GROWTH_LINEAR_STEP != -1, excessively resize the heap - // linearly: increase the heap size by at least - // MEMORY_GROWTH_LINEAR_STEP bytes. - // 3. Max size for the heap is capped at 2048MB-WASM_PAGE_SIZE, or by - // MAXIMUM_MEMORY, or by ASAN limit, depending on which is smallest - // 4. If we were unable to allocate as much memory, it may be due to - // over-eager decision to excessively reserve due to (3) above. - // Hence if an allocation fails, cut down on the amount of excess - // growth, in an attempt to succeed to perform a smaller allocation. - - // A limit is set for how much we can grow. We should not exceed that - // (the wasm binary specifies it, so if we tried, we'd fail anyhow). - var maxHeapSize = getHeapMax(); - if (requestedSize > maxHeapSize) { - err(`Cannot enlarge memory, requested ${requestedSize} bytes, but the limit is ${maxHeapSize} bytes!`); - return false; - } - - var alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple; - - // Loop through potential heap size increases. If we attempt a too eager - // reservation that fails, cut down on the attempted size and reserve a - // smaller bump instead. (max 3 times, chosen somewhat arbitrarily) - for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { - var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); // ensure geometric growth - // but limit overreserving (default to capping at +96MB overgrowth at most) - overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296 ); - - var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); - - var replacement = growMemory(newSize); - if (replacement) { - - return true; - } - } - err(`Failed to grow the heap from ${oldSize} bytes to ${newSize} bytes, not enough memory!`); - return false; - }; - - var ENV = { - }; - - var getExecutableName = () => { - return thisProgram || './this.program'; - }; - var getEnvStrings = () => { - if (!getEnvStrings.strings) { - // Default values. - // Browser language detection #8751 - 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() - }; - // Apply the user-provided values, if any. - for (var x in ENV) { - // x is a key in ENV; if ENV[x] is undefined, that means it was - // explicitly set to be so. We allow user code to do that to - // force variables with default values to remain unset. - 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; - }; - - var stringToAscii = (str, buffer) => { - for (var i = 0; i < str.length; ++i) { - assert(str.charCodeAt(i) === (str.charCodeAt(i) & 0xff)); - HEAP8[buffer++] = str.charCodeAt(i); - } - // Null-terminate the string - HEAP8[buffer] = 0; - }; - var _environ_get = (__environ, environ_buf) => { - var bufSize = 0; - getEnvStrings().forEach((string, i) => { - var ptr = environ_buf + bufSize; - HEAPU32[(((__environ)+(i*4))>>2)] = ptr; - stringToAscii(string, ptr); - bufSize += string.length + 1; - }); - return 0; - }; - - var _environ_sizes_get = (penviron_count, penviron_buf_size) => { - var strings = getEnvStrings(); - HEAPU32[((penviron_count)>>2)] = strings.length; - var bufSize = 0; - strings.forEach((string) => bufSize += string.length + 1); - HEAPU32[((penviron_buf_size)>>2)] = bufSize; - return 0; - }; - - - var runtimeKeepaliveCounter = 0; - var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0; - var _proc_exit = (code) => { - EXITSTATUS = code; - if (!keepRuntimeAlive()) { - Module['onExit']?.(code); - ABORT = true; - } - quit_(code, new ExitStatus(code)); - }; - - /** @suppress {duplicate } */ - /** @param {boolean|number=} implicit */ - var exitJS = (status, implicit) => { - EXITSTATUS = status; - - checkUnflushedContent(); - - // if exit() was called explicitly, warn the user if the runtime isn't actually being shut down - if (keepRuntimeAlive() && !implicit) { - var msg = `program exited (with status: ${status}), but keepRuntimeAlive() is set (counter=${runtimeKeepaliveCounter}) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`; - readyPromiseReject(msg); - err(msg); - } - - _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.name === 'ErrnoError')) throw e; - return e.errno; - } - } - - /** @param {number=} offset */ - var 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; // nothing more to read - if (typeof offset !== 'undefined') { - offset += curr; - } - } - 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.name === 'ErrnoError')) throw e; - return e.errno; - } - } - - - var convertI32PairToI53Checked = (lo, hi) => { - assert(lo == (lo >>> 0) || lo == (lo|0)); // lo should either be a i32 or a u32 - assert(hi === (hi|0)); // hi should be a i32 - return ((hi + 0x200000) >>> 0 < 0x400001 - !!lo) ? (lo >>> 0) + hi * 4294967296 : NaN; - }; - function _fd_seek(fd,offset_low, offset_high,whence,newOffset) { - var offset = convertI32PairToI53Checked(offset_low, offset_high); - - - try { - - 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.0 ? (tempDouble > 0.0 ? (+(Math.floor((tempDouble)/4294967296.0)))>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>0) : 0)], HEAP32[((newOffset)>>2)] = tempI64[0],HEAP32[(((newOffset)+(4))>>2)] = tempI64[1]); - if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state - return 0; - } catch (e) { - if (typeof FS == 'undefined' || !(e.name === 'ErrnoError')) throw e; - return e.errno; - } - ; - } - - /** @param {number=} offset */ - var 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; - if (typeof offset !== 'undefined') { - offset += 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.name === 'ErrnoError')) throw e; - return e.errno; - } - } - - var isLeapYear = (year) => year%4 === 0 && (year%100 !== 0 || year%400 === 0); - - var arraySum = (array, index) => { - var sum = 0; - for (var i = 0; i <= index; sum += array[i++]) { - // no-op - } - 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]; - var 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()) { - // we spill over to next month - 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 { - // we stay in current month - newDate.setDate(newDate.getDate()+days); - return newDate; - } - } - - return newDate; - }; - - - - - var writeArrayToMemory = (array, buffer) => { - assert(array.length >= 0, 'writeArrayToMemory array must have a length (should be an array or typed array)') - HEAP8.set(array, buffer); - }; - - var _strftime = (s, maxsize, format, tm) => { - // size_t strftime(char *restrict s, size_t maxsize, const char *restrict format, const struct tm *restrict timeptr); - // http://pubs.opengroup.org/onlinepubs/009695399/functions/strftime.html - - var tm_zone = HEAPU32[(((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); - - // expand format - var EXPANSION_RULES_1 = { - '%c': '%a %b %d %H:%M:%S %Y', // Replaced by the locale's appropriate date and time representation - e.g., Mon Aug 3 14:02:01 2013 - '%D': '%m/%d/%y', // Equivalent to %m / %d / %y - '%F': '%Y-%m-%d', // Equivalent to %Y - %m - %d - '%h': '%b', // Equivalent to %b - '%r': '%I:%M:%S %p', // Replaced by the time in a.m. and p.m. notation - '%R': '%H:%M', // Replaced by the time in 24-hour notation - '%T': '%H:%M:%S', // Replaced by the time - '%x': '%m/%d/%y', // Replaced by the locale's appropriate date representation - '%X': '%H:%M:%S', // Replaced by the locale's appropriate time representation - // Modified Conversion Specifiers - '%Ec': '%c', // Replaced by the locale's alternative appropriate date and time representation. - '%EC': '%C', // Replaced by the name of the base year (period) in the locale's alternative representation. - '%Ex': '%m/%d/%y', // Replaced by the locale's alternative date representation. - '%EX': '%H:%M:%S', // Replaced by the locale's alternative time representation. - '%Ey': '%y', // Replaced by the offset from %EC (year only) in the locale's alternative representation. - '%EY': '%Y', // Replaced by the full alternative year representation. - '%Od': '%d', // Replaced by the day of the month, using the locale's alternative numeric symbols, filled as needed with leading zeros if there is any alternative symbol for zero; otherwise, with leading characters. - '%Oe': '%e', // Replaced by the day of the month, using the locale's alternative numeric symbols, filled as needed with leading characters. - '%OH': '%H', // Replaced by the hour (24-hour clock) using the locale's alternative numeric symbols. - '%OI': '%I', // Replaced by the hour (12-hour clock) using the locale's alternative numeric symbols. - '%Om': '%m', // Replaced by the month using the locale's alternative numeric symbols. - '%OM': '%M', // Replaced by the minutes using the locale's alternative numeric symbols. - '%OS': '%S', // Replaced by the seconds using the locale's alternative numeric symbols. - '%Ou': '%u', // Replaced by the weekday as a number in the locale's alternative representation (Monday=1). - '%OU': '%U', // Replaced by the week number of the year (Sunday as the first day of the week, rules corresponding to %U ) using the locale's alternative numeric symbols. - '%OV': '%V', // Replaced by the week number of the year (Monday as the first day of the week, rules corresponding to %V ) using the locale's alternative numeric symbols. - '%Ow': '%w', // Replaced by the number of the weekday (Sunday=0) using the locale's alternative numeric symbols. - '%OW': '%W', // Replaced by the week number of the year (Monday as the first day of the week) using the locale's alternative numeric symbols. - '%Oy': '%y', // Replaced by the year (offset from %C ) using the locale's alternative numeric symbols. - }; - 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: // Sunday - return new Date(janFourth.getFullYear()-1, 11, 29); - case 1: // Monday - return janFourth; - case 2: // Tuesday - return new Date(janFourth.getFullYear(), 0, 3); - case 3: // Wednesday - return new Date(janFourth.getFullYear(), 0, 2); - case 4: // Thursday - return new Date(janFourth.getFullYear(), 0, 1); - case 5: // Friday - return new Date(janFourth.getFullYear()-1, 11, 31); - case 6: // Saturday - 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) { - // this date is after the start of the first week of this year - if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) { - return thisDate.getFullYear()+1; - } - return thisDate.getFullYear(); - } - return thisDate.getFullYear()-1; - } - - var EXPANSION_RULES_2 = { - '%a': (date) => WEEKDAYS[date.tm_wday].substring(0,3) , - '%A': (date) => WEEKDAYS[date.tm_wday], - '%b': (date) => MONTHS[date.tm_mon].substring(0,3), - '%B': (date) => MONTHS[date.tm_mon], - '%C': (date) => { - var year = date.tm_year+1900; - return leadingNulls((year/100)|0,2); - }, - '%d': (date) => leadingNulls(date.tm_mday, 2), - '%e': (date) => leadingSomething(date.tm_mday, 2, ' '), - '%g': (date) => { - // %g, %G, and %V give values according to the ISO 8601:2000 standard week-based year. - // In this system, weeks begin on a Monday and week 1 of the year is the week that includes - // January 4th, which is also the week that includes the first Thursday of the year, and - // is also the first week that contains at least four days in the year. - // If the first Monday of January is the 2nd, 3rd, or 4th, the preceding days are part of - // the last week of the preceding year; thus, for Saturday 2nd January 1999, - // %G is replaced by 1998 and %V is replaced by 53. If December 29th, 30th, - // or 31st is a Monday, it and any following days are part of week 1 of the following year. - // Thus, for Tuesday 30th December 1997, %G is replaced by 1998 and %V is replaced by 01. - - return getWeekBasedYear(date).toString().substring(2); - }, - '%G': getWeekBasedYear, - '%H': (date) => leadingNulls(date.tm_hour, 2), - '%I': (date) => { - var twelveHour = date.tm_hour; - if (twelveHour == 0) twelveHour = 12; - else if (twelveHour > 12) twelveHour -= 12; - return leadingNulls(twelveHour, 2); - }, - '%j': (date) => { - // Day of the year (001-366) - return leadingNulls(date.tm_mday + arraySum(isLeapYear(date.tm_year+1900) ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR, date.tm_mon-1), 3); - }, - '%m': (date) => leadingNulls(date.tm_mon+1, 2), - '%M': (date) => leadingNulls(date.tm_min, 2), - '%n': () => '\n', - '%p': (date) => { - if (date.tm_hour >= 0 && date.tm_hour < 12) { - return 'AM'; - } - return 'PM'; - }, - '%S': (date) => leadingNulls(date.tm_sec, 2), - '%t': () => '\t', - '%u': (date) => date.tm_wday || 7, - '%U': (date) => { - var days = date.tm_yday + 7 - date.tm_wday; - return leadingNulls(Math.floor(days / 7), 2); - }, - '%V': (date) => { - // Replaced by the week number of the year (Monday as the first day of the week) - // as a decimal number [01,53]. If the week containing 1 January has four - // or more days in the new year, then it is considered week 1. - // Otherwise, it is the last week of the previous year, and the next week is week 1. - // Both January 4th and the first Thursday of January are always in week 1. [ tm_year, tm_wday, tm_yday] - var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7 ) / 7); - // If 1 Jan is just 1-3 days past Monday, the previous week - // is also in this year. - if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) { - val++; - } - if (!val) { - val = 52; - // If 31 December of prev year a Thursday, or Friday of a - // leap year, then the prev year has 53 weeks. - 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) { - // If 1 January is not a Thursday, and not a Wednesday of a - // leap year, then this year has only 52 weeks. - 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': (date) => date.tm_wday, - '%W': (date) => { - var days = date.tm_yday + 7 - ((date.tm_wday + 6) % 7); - return leadingNulls(Math.floor(days / 7), 2); - }, - '%y': (date) => { - // Replaced by the last two digits of the year as a decimal number [00,99]. [ tm_year] - return (date.tm_year+1900).toString().substring(2); - }, - // Replaced by the year as a decimal number (for example, 1997). [ tm_year] - '%Y': (date) => date.tm_year+1900, - '%z': (date) => { - // Replaced by the offset from UTC in the ISO 8601:2000 standard format ( +hhmm or -hhmm ). - // For example, "-0430" means 4 hours 30 minutes behind UTC (west of Greenwich). - var off = date.tm_gmtoff; - var ahead = off >= 0; - off = Math.abs(off) / 60; - // convert from minutes into hhmm format (which means 60 minutes = 100 units) - off = (off / 60)*100 + (off % 60); - return (ahead ? '+' : '-') + String("0000" + off).slice(-4); - }, - '%Z': (date) => date.tm_zone, - '%%': () => '%' - }; - - // Replace %% with a pair of NULLs (which cannot occur in a C string), then - // re-inject them after processing. - 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; - }; - var _strftime_l = (s, maxsize, format, tm, loc) => { - return _strftime(s, maxsize, format, tm); // no locale support yet - }; - - - var getCFunc = (ident) => { - var func = Module['_' + ident]; // closure exported function - assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported'); - return func; - }; - - - - var stringToUTF8 = (str, outPtr, maxBytesToWrite) => { - assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); - return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); - }; - var stringToUTF8OnStack = (str) => { - var size = lengthBytesUTF8(str) + 1; - var ret = stackAlloc(size); - stringToUTF8(str, ret, size); - return ret; - }; - - - - - - /** - * @param {string|null=} returnType - * @param {Array=} argTypes - * @param {Arguments|Array=} args - * @param {Object=} opts - */ - var ccall = (ident, returnType, argTypes, args, opts) => { - // For fast lookup of conversion functions - var toC = { - 'string': (str) => { - var ret = 0; - if (str !== null && str !== undefined && str !== 0) { // null string - // at most 4 bytes per UTF-8 code point, +1 for the trailing '\0' - ret = stringToUTF8OnStack(str); - } - 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; - assert(returnType !== 'array', 'Return type should not be "array".'); - 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(...cArgs); - function onDone(ret) { - if (stack !== 0) stackRestore(stack); - return convertReturnValue(ret); - } - - ret = onDone(ret); - return ret; - }; - - - - /** - * @param {string=} returnType - * @param {Array=} argTypes - * @param {Object=} opts - */ - var cwrap = (ident, returnType, argTypes, opts) => { - return (...args) => ccall(ident, returnType, argTypes, args, opts); - }; - - - - var FS_unlink = (path) => FS.unlink(path); - - FS.createPreloadedFile = FS_createPreloadedFile; - 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;; -function checkIncomingModuleAPI() { - ignoredModuleProp('fetchSettings'); -} -var wasmImports = { - /** @export */ - __cxa_throw: ___cxa_throw, - /** @export */ - __syscall_faccessat: ___syscall_faccessat, - /** @export */ - __syscall_fcntl64: ___syscall_fcntl64, - /** @export */ - __syscall_ioctl: ___syscall_ioctl, - /** @export */ - __syscall_openat: ___syscall_openat, - /** @export */ - abort: _abort, - /** @export */ - emscripten_memcpy_js: _emscripten_memcpy_js, - /** @export */ - emscripten_resize_heap: _emscripten_resize_heap, - /** @export */ - environ_get: _environ_get, - /** @export */ - environ_sizes_get: _environ_sizes_get, - /** @export */ - exit: _exit, - /** @export */ - fd_close: _fd_close, - /** @export */ - fd_read: _fd_read, - /** @export */ - fd_seek: _fd_seek, - /** @export */ - fd_write: _fd_write, - /** @export */ - strftime_l: _strftime_l -}; -var wasmExports = createWasm(); -var ___wasm_call_ctors = createExportWrapper('__wasm_call_ctors'); -var _run_source = Module['_run_source'] = createExportWrapper('run_source'); -var _fflush = createExportWrapper('fflush'); -var _emscripten_stack_init = () => (_emscripten_stack_init = wasmExports['emscripten_stack_init'])(); -var _emscripten_stack_get_free = () => (_emscripten_stack_get_free = wasmExports['emscripten_stack_get_free'])(); -var _emscripten_stack_get_base = () => (_emscripten_stack_get_base = wasmExports['emscripten_stack_get_base'])(); -var _emscripten_stack_get_end = () => (_emscripten_stack_get_end = wasmExports['emscripten_stack_get_end'])(); -var stackSave = createExportWrapper('stackSave'); -var stackRestore = createExportWrapper('stackRestore'); -var stackAlloc = createExportWrapper('stackAlloc'); -var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports['emscripten_stack_get_current'])(); -var ___cxa_is_pointer_type = createExportWrapper('__cxa_is_pointer_type'); -var dynCall_iij = Module['dynCall_iij'] = createExportWrapper('dynCall_iij'); -var dynCall_jiji = Module['dynCall_jiji'] = createExportWrapper('dynCall_jiji'); -var dynCall_viijii = Module['dynCall_viijii'] = createExportWrapper('dynCall_viijii'); -var dynCall_iiiiij = Module['dynCall_iiiiij'] = createExportWrapper('dynCall_iiiiij'); -var dynCall_iiiiijj = Module['dynCall_iiiiijj'] = createExportWrapper('dynCall_iiiiijj'); -var dynCall_iiiiiijj = Module['dynCall_iiiiiijj'] = createExportWrapper('dynCall_iiiiiijj'); - - -// include: postamble.js -// === Auto-generated postamble setup entry stuff === - -Module['addRunDependency'] = addRunDependency; -Module['removeRunDependency'] = removeRunDependency; -Module['FS_createPath'] = FS.createPath; -Module['FS_createLazyFile'] = FS.createLazyFile; -Module['FS_createDevice'] = FS.createDevice; -Module['ccall'] = ccall; -Module['cwrap'] = cwrap; -Module['FS_createPreloadedFile'] = FS.createPreloadedFile; -Module['FS_createDataFile'] = FS.createDataFile; -Module['FS_unlink'] = FS.unlink; -var missingLibrarySymbols = [ - 'writeI53ToI64', - 'writeI53ToI64Clamped', - 'writeI53ToI64Signaling', - 'writeI53ToU64Clamped', - 'writeI53ToU64Signaling', - 'readI53FromI64', - 'readI53FromU64', - 'convertI32PairToI53', - 'convertU32PairToI53', - 'ydayFromDate', - 'inetPton4', - 'inetNtop4', - 'inetPton6', - 'inetNtop6', - 'readSockaddr', - 'writeSockaddr', - 'getCallstack', - 'emscriptenLog', - 'convertPCtoSourceLocation', - 'readEmAsmArgs', - 'jstoi_q', - 'listenOnce', - 'autoResumeAudioContext', - 'dynCallLegacy', - 'getDynCaller', - 'dynCall', - 'handleException', - 'runtimeKeepalivePush', - 'runtimeKeepalivePop', - 'callUserCallback', - 'maybeExit', - 'asmjsMangle', - 'HandleAllocator', - 'getNativeTypeSize', - 'STACK_SIZE', - 'STACK_ALIGN', - 'POINTER_SIZE', - 'ASSERTIONS', - 'uleb128Encode', - 'sigToWasmTypes', - 'generateFuncType', - 'convertJsFunctionToWasm', - 'getEmptyTableSlot', - 'updateTableMap', - 'getFunctionAddress', - 'addFunction', - 'removeFunction', - 'reallyNegative', - 'unSign', - 'strLen', - 'reSign', - 'formatString', - 'intArrayToString', - 'AsciiToString', - 'UTF16ToString', - 'stringToUTF16', - 'lengthBytesUTF16', - 'UTF32ToString', - 'stringToUTF32', - 'lengthBytesUTF32', - 'stringToNewUTF8', - 'registerKeyEventCallback', - 'maybeCStringToJsString', - 'findEventTarget', - 'getBoundingClientRect', - 'fillMouseEventData', - 'registerMouseEventCallback', - 'registerWheelEventCallback', - 'registerUiEventCallback', - 'registerFocusEventCallback', - 'fillDeviceOrientationEventData', - 'registerDeviceOrientationEventCallback', - 'fillDeviceMotionEventData', - 'registerDeviceMotionEventCallback', - 'screenOrientation', - 'fillOrientationChangeEventData', - 'registerOrientationChangeEventCallback', - 'fillFullscreenChangeEventData', - 'registerFullscreenChangeEventCallback', - 'JSEvents_requestFullscreen', - 'JSEvents_resizeCanvasForFullscreen', - 'registerRestoreOldStyle', - 'hideEverythingExceptGivenElement', - 'restoreHiddenElements', - 'setLetterbox', - 'softFullscreenResizeWebGLRenderTarget', - 'doRequestFullscreen', - 'fillPointerlockChangeEventData', - 'registerPointerlockChangeEventCallback', - 'registerPointerlockErrorEventCallback', - 'requestPointerLock', - 'fillVisibilityChangeEventData', - 'registerVisibilityChangeEventCallback', - 'registerTouchEventCallback', - 'fillGamepadEventData', - 'registerGamepadEventCallback', - 'registerBeforeUnloadEventCallback', - 'fillBatteryEventData', - 'battery', - 'registerBatteryEventCallback', - 'setCanvasElementSize', - 'getCanvasElementSize', - 'jsStackTrace', - 'stackTrace', - 'checkWasiClock', - 'wasiRightsToMuslOFlags', - 'wasiOFlagsToMuslOFlags', - 'createDyncallWrapper', - 'safeSetTimeout', - 'setImmediateWrapped', - 'clearImmediateWrapped', - 'polyfillSetImmediate', - 'getPromise', - 'makePromise', - 'idsToPromises', - 'makePromiseCallback', - 'findMatchingCatch', - 'Browser_asyncPrepareDataCounter', - 'setMainLoop', - 'getSocketFromFD', - 'getSocketAddress', - 'FS_mkdirTree', - '_setNetworkCallback', - 'heapObjectForWebGLType', - 'toTypedArrayIndex', - 'webgl_enable_ANGLE_instanced_arrays', - 'webgl_enable_OES_vertex_array_object', - 'webgl_enable_WEBGL_draw_buffers', - 'webgl_enable_WEBGL_multi_draw', - 'emscriptenWebGLGet', - 'computeUnpackAlignedImageSize', - 'colorChannelsInGlTextureFormat', - 'emscriptenWebGLGetTexPixelData', - 'emscriptenWebGLGetUniform', - 'webglGetUniformLocation', - 'webglPrepareUniformLocationsBeforeFirstUse', - 'webglGetLeftBracePos', - 'emscriptenWebGLGetVertexAttrib', - '__glGetActiveAttribOrUniform', - 'writeGLArray', - 'registerWebGlEventCallback', - 'runAndAbortIfError', - 'ALLOC_NORMAL', - 'ALLOC_STACK', - 'allocate', - 'writeStringToMemory', - 'writeAsciiToMemory', - 'setErrNo', - 'demangle', -]; -missingLibrarySymbols.forEach(missingLibrarySymbol) - -var unexportedSymbols = [ - 'run', - 'addOnPreRun', - 'addOnInit', - 'addOnPreMain', - 'addOnExit', - 'addOnPostRun', - 'FS_createFolder', - 'FS_createLink', - 'FS_readFile', - 'out', - 'err', - 'callMain', - 'abort', - 'wasmMemory', - 'wasmExports', - 'stackAlloc', - 'stackSave', - 'stackRestore', - 'getTempRet0', - 'setTempRet0', - 'writeStackCookie', - 'checkStackCookie', - 'convertI32PairToI53Checked', - 'ptrToString', - 'zeroMemory', - 'exitJS', - 'getHeapMax', - 'growMemory', - 'ENV', - 'MONTH_DAYS_REGULAR', - 'MONTH_DAYS_LEAP', - 'MONTH_DAYS_REGULAR_CUMULATIVE', - 'MONTH_DAYS_LEAP_CUMULATIVE', - 'isLeapYear', - 'arraySum', - 'addDays', - 'ERRNO_CODES', - 'ERRNO_MESSAGES', - 'DNS', - 'Protocols', - 'Sockets', - 'initRandomFill', - 'randomFill', - 'timers', - 'warnOnce', - 'UNWIND_CACHE', - 'readEmAsmArgsArray', - 'jstoi_s', - 'getExecutableName', - 'keepRuntimeAlive', - 'asyncLoad', - 'alignMemory', - 'mmapAlloc', - 'wasmTable', - 'noExitRuntime', - 'getCFunc', - 'freeTableIndexes', - 'functionsInTableMap', - 'setValue', - 'getValue', - 'PATH', - 'PATH_FS', - 'UTF8Decoder', - 'UTF8ArrayToString', - 'UTF8ToString', - 'stringToUTF8Array', - 'stringToUTF8', - 'lengthBytesUTF8', - 'intArrayFromString', - 'stringToAscii', - 'UTF16Decoder', - 'stringToUTF8OnStack', - 'writeArrayToMemory', - 'JSEvents', - 'specialHTMLTargets', - 'findCanvasEventTarget', - 'currentFullscreenStrategy', - 'restoreOldWindowedStyle', - 'ExitStatus', - 'getEnvStrings', - 'doReadv', - 'doWritev', - 'promiseMap', - 'uncaughtExceptionCount', - 'exceptionLast', - 'exceptionCaught', - 'ExceptionInfo', - 'Browser', - 'getPreloadedImageData__data', - 'wget', - 'SYSCALLS', - 'preloadPlugins', - 'FS_modeStringToFlags', - 'FS_getMode', - 'FS_stdin_getChar_buffer', - 'FS_stdin_getChar', - 'FS', - 'MEMFS', - 'TTY', - 'PIPEFS', - 'SOCKFS', - 'tempFixedLengthArray', - 'miniTempWebGLFloatBuffers', - 'miniTempWebGLIntBuffers', - 'GL', - 'AL', - 'GLUT', - 'EGL', - 'GLEW', - 'IDBStore', - 'SDL', - 'SDL_gfx', - 'allocateUTF8', - 'allocateUTF8OnStack', -]; -unexportedSymbols.forEach(unexportedRuntimeSymbol); - - - -var calledRun; - -dependenciesFulfilled = function runCaller() { - // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) - if (!calledRun) run(); - if (!calledRun) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled -}; - -function stackCheckInit() { - // This is normally called automatically during __wasm_call_ctors but need to - // get these values before even running any of the ctors so we call it redundantly - // here. - _emscripten_stack_init(); - // TODO(sbc): Move writeStackCookie to native to to avoid this. - writeStackCookie(); -} - -function run() { - - if (runDependencies > 0) { - return; - } - - stackCheckInit(); - - preRun(); - - // a preRun added a dependency, run will be called later - if (runDependencies > 0) { - return; - } - - function doRun() { - // run may have just been called through dependencies being fulfilled just in this very frame, - // or while the async setStatus time below was happening - if (calledRun) return; - calledRun = true; - Module['calledRun'] = true; - - if (ABORT) return; - - initRuntime(); - - readyPromiseResolve(Module); - if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); - - assert(!Module['_main'], 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'); - - postRun(); - } - - if (Module['setStatus']) { - Module['setStatus']('Running...'); - setTimeout(function() { - setTimeout(function() { - Module['setStatus'](''); - }, 1); - doRun(); - }, 1); - } else - { - doRun(); - } - checkStackCookie(); -} - -function checkUnflushedContent() { - // Compiler settings do not allow exiting the runtime, so flushing - // the streams is not possible. but in ASSERTIONS mode we check - // if there was something to flush, and if so tell the user they - // should request that the runtime be exitable. - // Normally we would not even include flush() at all, but in ASSERTIONS - // builds we do so just for this check, and here we see if there is any - // content to flush, that is, we check if there would have been - // something a non-ASSERTIONS build would have not seen. - // How we flush the streams depends on whether we are in SYSCALLS_REQUIRE_FILESYSTEM=0 - // mode (which has its own special function for this; otherwise, all - // the code is inside libc) - var oldOut = out; - var oldErr = err; - var has = false; - out = err = (x) => { - has = true; - } - try { // it doesn't matter if it fails - _fflush(0); - // also flush in the JS FS layer - ['stdout', 'stderr'].forEach(function(name) { - var info = FS.analyzePath('/dev/' + name); - if (!info) return; - var stream = info.object; - var rdev = stream.rdev; - var tty = TTY.ttys[rdev]; - if (tty?.output?.length) { - has = true; - } - }); - } catch(e) {} - out = oldOut; - err = oldErr; - if (has) { - warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.'); - } -} - -if (Module['preInit']) { - if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; - while (Module['preInit'].length > 0) { - Module['preInit'].pop()(); - } -} - -run(); - -// end include: postamble.js - - - - return moduleArg.ready -} -); -})(); -export default createSolsticeModule; \ No newline at end of file +var Module=typeof Module!="undefined"?Module:{};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;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,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}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(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{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)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.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 wasmMemory;var ABORT=false;var EXITSTATUS;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["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;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 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++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){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);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile;wasmBinaryFile="playground.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw`failed to load wasm binary file at '${binaryFile}'`}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,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(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)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["n"];updateMemoryViews();addOnInit(wasmExports["o"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;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:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");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){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[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=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{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>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var 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 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 FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}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}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(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;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}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(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(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(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(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(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(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(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(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(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(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(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{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,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 FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_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){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(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;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},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;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)}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},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){if(!FS.isDir(dir.mode))return 54;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(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;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(...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;iFS.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 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")},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.getStreamChecked(fd);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)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init(input,output,error){FS.init.initialized=true;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;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}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}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}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;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]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});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{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}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(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(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>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.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>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]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>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]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(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(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);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}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}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}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(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 12:{var arg=SYSCALLS.getp();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="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:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="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.name==="ErrnoError"))throw e;return-e.errno}}var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;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=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var 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};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var 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.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>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>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{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.floor(tempDouble/4294967296)>>>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.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>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};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.name==="ErrnoError"))throw e;return e.errno}}var getCFunc=ident=>{var func=Module["_"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={"string":str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}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{var numericArgs=!argTypes||argTypes.every(type=>type==="number"||type==="boolean");var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();var wasmImports={m:___syscall_faccessat,d:___syscall_fcntl64,g:___syscall_ioctl,h:___syscall_openat,i:_emscripten_memcpy_js,k:_emscripten_resize_heap,l:_environ_get,e:_environ_sizes_get,a:_exit,b:_fd_close,f:_fd_read,j:_fd_seek,c:_fd_write};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["o"])();var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["p"])(a0);var _free=Module["_free"]=a0=>(_free=Module["_free"]=wasmExports["q"])(a0);var _solstice_run=Module["_solstice_run"]=a0=>(_solstice_run=Module["_solstice_run"]=wasmExports["s"])(a0);var stackSave=()=>(stackSave=wasmExports["t"])();var stackRestore=a0=>(stackRestore=wasmExports["u"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["v"])(a0);Module["ccall"]=ccall;Module["cwrap"]=cwrap;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();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()()}}run(); diff --git a/playground/playground.wasm b/playground/playground.wasm index 92df2b92fa1863beef6e47f36f02fab0216ad0ee..d6c2c17c1476690666c3ee12bddc717ed5c63433 100755 GIT binary patch literal 146206 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 literal 705482 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
h9zyq!^a!Cx$R3#| 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