12022 lines
344 KiB
JavaScript
12022 lines
344 KiB
JavaScript
var getUsdModule = ((args) => {
|
|
var _scriptDir =
|
|
typeof document !== "undefined" && document.currentScript
|
|
? document.currentScript.src
|
|
: undefined;
|
|
if (typeof __filename !== "undefined") _scriptDir = _scriptDir || __filename;
|
|
return function (moduleArg = {
|
|
// module overrides can be supplied here
|
|
locateFile: (path, prefix) => {
|
|
if (!prefix && _scriptDir) prefix = _scriptDir.substr(0, _scriptDir.lastIndexOf('/') + 1);
|
|
return prefix + path;
|
|
},
|
|
...args
|
|
}) {
|
|
function GROWABLE_HEAP_I8() {
|
|
if (wasmMemory.buffer != HEAP8.buffer) {
|
|
updateMemoryViews();
|
|
}
|
|
return HEAP8;
|
|
}
|
|
function GROWABLE_HEAP_U8() {
|
|
if (wasmMemory.buffer != HEAP8.buffer) {
|
|
updateMemoryViews();
|
|
}
|
|
return HEAPU8;
|
|
}
|
|
function GROWABLE_HEAP_I16() {
|
|
if (wasmMemory.buffer != HEAP8.buffer) {
|
|
updateMemoryViews();
|
|
}
|
|
return HEAP16;
|
|
}
|
|
function GROWABLE_HEAP_U16() {
|
|
if (wasmMemory.buffer != HEAP8.buffer) {
|
|
updateMemoryViews();
|
|
}
|
|
return HEAPU16;
|
|
}
|
|
function GROWABLE_HEAP_I32() {
|
|
if (wasmMemory.buffer != HEAP8.buffer) {
|
|
updateMemoryViews();
|
|
}
|
|
return HEAP32;
|
|
}
|
|
function GROWABLE_HEAP_U32() {
|
|
if (wasmMemory.buffer != HEAP8.buffer) {
|
|
updateMemoryViews();
|
|
}
|
|
return HEAPU32;
|
|
}
|
|
function GROWABLE_HEAP_F32() {
|
|
if (wasmMemory.buffer != HEAP8.buffer) {
|
|
updateMemoryViews();
|
|
}
|
|
return HEAPF32;
|
|
}
|
|
function GROWABLE_HEAP_F64() {
|
|
if (wasmMemory.buffer != HEAP8.buffer) {
|
|
updateMemoryViews();
|
|
}
|
|
return HEAPF64;
|
|
}
|
|
var Module = moduleArg;
|
|
var readyPromiseResolve, readyPromiseReject;
|
|
Module["ready"] = new Promise((resolve, reject) => {
|
|
readyPromiseResolve = resolve;
|
|
readyPromiseReject = reject;
|
|
});
|
|
if (!Module.expectedDataFileDownloads) {
|
|
Module.expectedDataFileDownloads = 0;
|
|
}
|
|
Module.expectedDataFileDownloads++;
|
|
(function () {
|
|
if (Module["ENVIRONMENT_IS_PTHREAD"] || Module["$ww"]) return;
|
|
var loadPackage = function (metadata) {
|
|
var PACKAGE_PATH = "";
|
|
if (typeof window === "object") {
|
|
PACKAGE_PATH = window["encodeURIComponent"](
|
|
window.location.pathname
|
|
.toString()
|
|
.substring(
|
|
0,
|
|
window.location.pathname.toString().lastIndexOf("/"),
|
|
) + "/",
|
|
);
|
|
} else if (
|
|
typeof process === "undefined" &&
|
|
typeof location !== "undefined"
|
|
) {
|
|
PACKAGE_PATH = encodeURIComponent(
|
|
location.pathname
|
|
.toString()
|
|
.substring(0, location.pathname.toString().lastIndexOf("/")) +
|
|
"/",
|
|
);
|
|
}
|
|
var PACKAGE_NAME = "emHdBindings.data";
|
|
var REMOTE_PACKAGE_BASE = "emHdBindings.data";
|
|
if (
|
|
typeof Module["locateFilePackage"] === "function" &&
|
|
!Module["locateFile"]
|
|
) {
|
|
Module["locateFile"] = Module["locateFilePackage"];
|
|
err(
|
|
"warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)",
|
|
);
|
|
}
|
|
var REMOTE_PACKAGE_NAME = Module["locateFile"]
|
|
? Module["locateFile"](REMOTE_PACKAGE_BASE, "")
|
|
: REMOTE_PACKAGE_BASE;
|
|
var REMOTE_PACKAGE_SIZE = metadata["remote_package_size"];
|
|
function fetchRemotePackage(
|
|
packageName,
|
|
packageSize,
|
|
callback,
|
|
errback,
|
|
) {
|
|
if (
|
|
typeof process === "object" &&
|
|
typeof process.versions === "object" &&
|
|
typeof process.versions.node === "string"
|
|
) {
|
|
require("fs").readFile(packageName, function (err, contents) {
|
|
if (err) {
|
|
errback(err);
|
|
} else {
|
|
callback(contents.buffer);
|
|
}
|
|
});
|
|
return;
|
|
}
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open("GET", packageName, true);
|
|
xhr.responseType = "arraybuffer";
|
|
xhr.onprogress = function (event) {
|
|
var url = packageName;
|
|
var size = packageSize;
|
|
if (event.total) size = event.total;
|
|
if (event.loaded) {
|
|
if (!xhr.addedTotal) {
|
|
xhr.addedTotal = true;
|
|
if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
|
|
Module.dataFileDownloads[url] = {
|
|
loaded: event.loaded,
|
|
total: size,
|
|
};
|
|
} else {
|
|
Module.dataFileDownloads[url].loaded = event.loaded;
|
|
}
|
|
var total = 0;
|
|
var loaded = 0;
|
|
var num = 0;
|
|
for (var download in Module.dataFileDownloads) {
|
|
var data = Module.dataFileDownloads[download];
|
|
total += data.total;
|
|
loaded += data.loaded;
|
|
num++;
|
|
}
|
|
total = Math.ceil(
|
|
(total * Module.expectedDataFileDownloads) / num,
|
|
);
|
|
if (Module["setStatus"])
|
|
Module["setStatus"](`Downloading data... (${loaded}/${total})`);
|
|
} else if (!Module.dataFileDownloads) {
|
|
if (Module["setStatus"])
|
|
Module["setStatus"]("Downloading data...");
|
|
}
|
|
};
|
|
xhr.onerror = function (event) {
|
|
throw new Error("NetworkError for: " + packageName);
|
|
};
|
|
xhr.onload = function (event) {
|
|
if (
|
|
xhr.status == 200 ||
|
|
xhr.status == 304 ||
|
|
xhr.status == 206 ||
|
|
(xhr.status == 0 && xhr.response)
|
|
) {
|
|
var packageData = xhr.response;
|
|
callback(packageData);
|
|
} else {
|
|
throw new Error(xhr.statusText + " : " + xhr.responseURL);
|
|
}
|
|
};
|
|
xhr.send(null);
|
|
}
|
|
function handleError(error) {
|
|
console.error("package error:", error);
|
|
}
|
|
var fetchedCallback = null;
|
|
var fetched = Module["getPreloadedPackage"]
|
|
? Module["getPreloadedPackage"](
|
|
REMOTE_PACKAGE_NAME,
|
|
REMOTE_PACKAGE_SIZE,
|
|
)
|
|
: null;
|
|
if (!fetched)
|
|
fetchRemotePackage(
|
|
REMOTE_PACKAGE_NAME,
|
|
REMOTE_PACKAGE_SIZE,
|
|
function (data) {
|
|
if (fetchedCallback) {
|
|
fetchedCallback(data);
|
|
fetchedCallback = null;
|
|
} else {
|
|
fetched = data;
|
|
}
|
|
},
|
|
handleError,
|
|
);
|
|
function runWithFS() {
|
|
function assert(check, msg) {
|
|
if (!check) throw msg + new Error().stack;
|
|
}
|
|
Module["FS_createPath"]("/", "usd", true, true);
|
|
Module["FS_createPath"]("/usd", "ar", true, true);
|
|
Module["FS_createPath"]("/usd/ar", "resources", true, true);
|
|
Module["FS_createPath"]("/usd", "hd", true, true);
|
|
Module["FS_createPath"]("/usd/hd", "resources", true, true);
|
|
Module["FS_createPath"](
|
|
"/usd/hd/resources",
|
|
"codegenTemplates",
|
|
true,
|
|
true,
|
|
);
|
|
Module["FS_createPath"]("/usd", "httpResolver", true, true);
|
|
Module["FS_createPath"]("/usd/httpResolver", "resources", true, true);
|
|
Module["FS_createPath"]("/usd", "ndr", true, true);
|
|
Module["FS_createPath"]("/usd/ndr", "resources", true, true);
|
|
Module["FS_createPath"]("/usd", "sdf", true, true);
|
|
Module["FS_createPath"]("/usd/sdf", "resources", true, true);
|
|
Module["FS_createPath"]("/usd", "usd", true, true);
|
|
Module["FS_createPath"]("/usd/usd", "resources", true, true);
|
|
Module["FS_createPath"](
|
|
"/usd/usd/resources",
|
|
"codegenTemplates",
|
|
true,
|
|
true,
|
|
);
|
|
Module["FS_createPath"]("/usd/usd/resources", "usd", true, true);
|
|
Module["FS_createPath"]("/usd", "usdGeom", true, true);
|
|
Module["FS_createPath"]("/usd/usdGeom", "resources", true, true);
|
|
Module["FS_createPath"](
|
|
"/usd/usdGeom/resources",
|
|
"usdGeom",
|
|
true,
|
|
true,
|
|
);
|
|
Module["FS_createPath"]("/usd", "usdHydra", true, true);
|
|
Module["FS_createPath"]("/usd/usdHydra", "resources", true, true);
|
|
Module["FS_createPath"](
|
|
"/usd/usdHydra/resources",
|
|
"shaders",
|
|
true,
|
|
true,
|
|
);
|
|
Module["FS_createPath"](
|
|
"/usd/usdHydra/resources",
|
|
"usdHydra",
|
|
true,
|
|
true,
|
|
);
|
|
Module["FS_createPath"]("/usd", "usdImaging", true, true);
|
|
Module["FS_createPath"]("/usd/usdImaging", "resources", true, true);
|
|
Module["FS_createPath"]("/usd", "usdLux", true, true);
|
|
Module["FS_createPath"]("/usd/usdLux", "resources", true, true);
|
|
Module["FS_createPath"](
|
|
"/usd/usdLux/resources",
|
|
"usdLux",
|
|
true,
|
|
true,
|
|
);
|
|
Module["FS_createPath"]("/usd", "usdRender", true, true);
|
|
Module["FS_createPath"]("/usd/usdRender", "resources", true, true);
|
|
Module["FS_createPath"](
|
|
"/usd/usdRender/resources",
|
|
"usdRender",
|
|
true,
|
|
true,
|
|
);
|
|
Module["FS_createPath"]("/usd", "usdShade", true, true);
|
|
Module["FS_createPath"]("/usd/usdShade", "resources", true, true);
|
|
Module["FS_createPath"](
|
|
"/usd/usdShade/resources",
|
|
"usdShade",
|
|
true,
|
|
true,
|
|
);
|
|
Module["FS_createPath"]("/usd", "usdShaders", true, true);
|
|
Module["FS_createPath"]("/usd/usdShaders", "resources", true, true);
|
|
Module["FS_createPath"](
|
|
"/usd/usdShaders/resources",
|
|
"shaders",
|
|
true,
|
|
true,
|
|
);
|
|
Module["FS_createPath"]("/usd", "usdSkel", true, true);
|
|
Module["FS_createPath"]("/usd/usdSkel", "resources", true, true);
|
|
Module["FS_createPath"](
|
|
"/usd/usdSkel/resources",
|
|
"usdSkel",
|
|
true,
|
|
true,
|
|
);
|
|
Module["FS_createPath"]("/usd", "usdVol", true, true);
|
|
Module["FS_createPath"]("/usd/usdVol", "resources", true, true);
|
|
Module["FS_createPath"](
|
|
"/usd/usdVol/resources",
|
|
"usdVol",
|
|
true,
|
|
true,
|
|
);
|
|
function DataRequest(start, end, audio) {
|
|
this.start = start;
|
|
this.end = end;
|
|
this.audio = audio;
|
|
}
|
|
DataRequest.prototype = {
|
|
requests: {},
|
|
open: function (mode, name) {
|
|
this.name = name;
|
|
this.requests[name] = this;
|
|
Module["addRunDependency"](`fp ${this.name}`);
|
|
},
|
|
send: function () {},
|
|
onload: function () {
|
|
var byteArray = this.byteArray.subarray(this.start, this.end);
|
|
this.finish(byteArray);
|
|
},
|
|
finish: function (byteArray) {
|
|
var that = this;
|
|
Module["FS_createDataFile"](
|
|
this.name,
|
|
null,
|
|
byteArray,
|
|
true,
|
|
true,
|
|
true,
|
|
);
|
|
Module["removeRunDependency"](`fp ${that.name}`);
|
|
this.requests[this.name] = null;
|
|
},
|
|
};
|
|
var files = metadata["files"];
|
|
for (var i = 0; i < files.length; ++i) {
|
|
new DataRequest(
|
|
files[i]["start"],
|
|
files[i]["end"],
|
|
files[i]["audio"] || 0,
|
|
).open("GET", files[i]["filename"]);
|
|
}
|
|
function processPackageData(arrayBuffer) {
|
|
assert(arrayBuffer, "Loading data file failed.");
|
|
assert(
|
|
arrayBuffer.constructor.name === ArrayBuffer.name,
|
|
"bad input to processPackageData",
|
|
);
|
|
var byteArray = new Uint8Array(arrayBuffer);
|
|
DataRequest.prototype.byteArray = byteArray;
|
|
var files = metadata["files"];
|
|
for (var i = 0; i < files.length; ++i) {
|
|
DataRequest.prototype.requests[files[i].filename].onload();
|
|
}
|
|
Module["removeRunDependency"]("datafile_emHdBindings.data");
|
|
}
|
|
Module["addRunDependency"]("datafile_emHdBindings.data");
|
|
if (!Module.preloadResults) Module.preloadResults = {};
|
|
Module.preloadResults[PACKAGE_NAME] = { fromCache: false };
|
|
if (fetched) {
|
|
processPackageData(fetched);
|
|
fetched = null;
|
|
} else {
|
|
fetchedCallback = processPackageData;
|
|
}
|
|
}
|
|
if (Module["calledRun"]) {
|
|
runWithFS();
|
|
} else {
|
|
if (!Module["preRun"]) Module["preRun"] = [];
|
|
Module["preRun"].push(runWithFS);
|
|
}
|
|
};
|
|
loadPackage({
|
|
files: [
|
|
{ filename: "/usd/ar/resources/plugInfo.json", start: 0, end: 589 },
|
|
{
|
|
filename: "/usd/hd/resources/codegenTemplates/schemaClass.cpp",
|
|
start: 589,
|
|
end: 9620,
|
|
},
|
|
{
|
|
filename: "/usd/hd/resources/codegenTemplates/schemaClass.h",
|
|
start: 9620,
|
|
end: 20258,
|
|
},
|
|
{
|
|
filename: "/usd/hd/resources/plugInfo.json",
|
|
start: 20258,
|
|
end: 20483,
|
|
},
|
|
{
|
|
filename: "/usd/httpResolver/resources/plugInfo.json",
|
|
start: 20483,
|
|
end: 20823,
|
|
},
|
|
{
|
|
filename: "/usd/ndr/resources/plugInfo.json",
|
|
start: 20823,
|
|
end: 21397,
|
|
},
|
|
{ filename: "/usd/plugInfo.json", start: 21397, end: 21448 },
|
|
{
|
|
filename: "/usd/sdf/resources/plugInfo.json",
|
|
start: 21448,
|
|
end: 22544,
|
|
},
|
|
{
|
|
filename: "/usd/usd/resources/codegenTemplates/api.h",
|
|
start: 22544,
|
|
end: 24646,
|
|
},
|
|
{
|
|
filename: "/usd/usd/resources/codegenTemplates/plugInfo.json",
|
|
start: 24646,
|
|
end: 25003,
|
|
},
|
|
{
|
|
filename: "/usd/usd/resources/codegenTemplates/schemaClass.cpp",
|
|
start: 25003,
|
|
end: 37342,
|
|
},
|
|
{
|
|
filename: "/usd/usd/resources/codegenTemplates/schemaClass.h",
|
|
start: 37342,
|
|
end: 54229,
|
|
},
|
|
{
|
|
filename: "/usd/usd/resources/codegenTemplates/tokens.cpp",
|
|
start: 54229,
|
|
end: 55817,
|
|
},
|
|
{
|
|
filename: "/usd/usd/resources/codegenTemplates/tokens.h",
|
|
start: 55817,
|
|
end: 59072,
|
|
},
|
|
{
|
|
filename: "/usd/usd/resources/codegenTemplates/wrapSchemaClass.cpp",
|
|
start: 59072,
|
|
end: 68578,
|
|
},
|
|
{
|
|
filename: "/usd/usd/resources/codegenTemplates/wrapTokens.cpp",
|
|
start: 68578,
|
|
end: 71099,
|
|
},
|
|
{
|
|
filename: "/usd/usd/resources/generatedSchema.usda",
|
|
start: 71099,
|
|
end: 86803,
|
|
},
|
|
{
|
|
filename: "/usd/usd/resources/plugInfo.json",
|
|
start: 86803,
|
|
end: 92530,
|
|
},
|
|
{
|
|
filename: "/usd/usd/resources/usd/schema.usda",
|
|
start: 92530,
|
|
end: 110774,
|
|
},
|
|
{
|
|
filename: "/usd/usdGeom/resources/generatedSchema.usda",
|
|
start: 110774,
|
|
end: 355640,
|
|
},
|
|
{
|
|
filename: "/usd/usdGeom/resources/plugInfo.json",
|
|
start: 355640,
|
|
end: 371761,
|
|
},
|
|
{
|
|
filename: "/usd/usdGeom/resources/usdGeom/schema.usda",
|
|
start: 371761,
|
|
end: 500520,
|
|
},
|
|
{
|
|
filename: "/usd/usdHydra/resources/generatedSchema.usda",
|
|
start: 500520,
|
|
end: 501538,
|
|
},
|
|
{
|
|
filename: "/usd/usdHydra/resources/plugInfo.json",
|
|
start: 501538,
|
|
end: 502826,
|
|
},
|
|
{
|
|
filename: "/usd/usdHydra/resources/shaders/empty.glslfx",
|
|
start: 502826,
|
|
end: 504049,
|
|
},
|
|
{
|
|
filename: "/usd/usdHydra/resources/shaders/shaderDefs.usda",
|
|
start: 504049,
|
|
end: 510806,
|
|
},
|
|
{
|
|
filename: "/usd/usdHydra/resources/usdHydra/schema.usda",
|
|
start: 510806,
|
|
end: 518107,
|
|
},
|
|
{
|
|
filename: "/usd/usdImaging/resources/plugInfo.json",
|
|
start: 518107,
|
|
end: 531776,
|
|
},
|
|
{
|
|
filename: "/usd/usdLux/resources/generatedSchema.usda",
|
|
start: 531776,
|
|
end: 610666,
|
|
},
|
|
{
|
|
filename: "/usd/usdLux/resources/plugInfo.json",
|
|
start: 610666,
|
|
end: 620463,
|
|
},
|
|
{
|
|
filename: "/usd/usdLux/resources/usdLux/schema.usda",
|
|
start: 620463,
|
|
end: 662394,
|
|
},
|
|
{
|
|
filename: "/usd/usdRender/resources/generatedSchema.usda",
|
|
start: 662394,
|
|
end: 685685,
|
|
},
|
|
{
|
|
filename: "/usd/usdRender/resources/plugInfo.json",
|
|
start: 685685,
|
|
end: 688784,
|
|
},
|
|
{
|
|
filename: "/usd/usdRender/resources/usdRender/schema.usda",
|
|
start: 688784,
|
|
end: 705492,
|
|
},
|
|
{
|
|
filename: "/usd/usdShade/resources/generatedSchema.usda",
|
|
start: 705492,
|
|
end: 721492,
|
|
},
|
|
{
|
|
filename: "/usd/usdShade/resources/plugInfo.json",
|
|
start: 721492,
|
|
end: 727378,
|
|
},
|
|
{
|
|
filename: "/usd/usdShade/resources/usdShade/schema.usda",
|
|
start: 727378,
|
|
end: 754223,
|
|
},
|
|
{
|
|
filename: "/usd/usdShaders/resources/plugInfo.json",
|
|
start: 754223,
|
|
end: 754902,
|
|
},
|
|
{
|
|
filename: "/usd/usdShaders/resources/shaders/previewSurface.glslfx",
|
|
start: 754902,
|
|
end: 768823,
|
|
},
|
|
{
|
|
filename: "/usd/usdShaders/resources/shaders/primvarReader.glslfx",
|
|
start: 768823,
|
|
end: 770046,
|
|
},
|
|
{
|
|
filename: "/usd/usdShaders/resources/shaders/shaderDefs.usda",
|
|
start: 770046,
|
|
end: 784976,
|
|
},
|
|
{
|
|
filename: "/usd/usdShaders/resources/shaders/transform2d.glslfx",
|
|
start: 784976,
|
|
end: 786199,
|
|
},
|
|
{
|
|
filename: "/usd/usdShaders/resources/shaders/uvTexture.glslfx",
|
|
start: 786199,
|
|
end: 787422,
|
|
},
|
|
{
|
|
filename: "/usd/usdSkel/resources/generatedSchema.usda",
|
|
start: 787422,
|
|
end: 802913,
|
|
},
|
|
{
|
|
filename: "/usd/usdSkel/resources/plugInfo.json",
|
|
start: 802913,
|
|
end: 805907,
|
|
},
|
|
{
|
|
filename: "/usd/usdSkel/resources/usdSkel/schema.usda",
|
|
start: 805907,
|
|
end: 816312,
|
|
},
|
|
{
|
|
filename: "/usd/usdVol/resources/generatedSchema.usda",
|
|
start: 816312,
|
|
end: 840757,
|
|
},
|
|
{
|
|
filename: "/usd/usdVol/resources/plugInfo.json",
|
|
start: 840757,
|
|
end: 843193,
|
|
},
|
|
{
|
|
filename: "/usd/usdVol/resources/usdVol/schema.usda",
|
|
start: 843193,
|
|
end: 849069,
|
|
},
|
|
],
|
|
remote_package_size: 849069,
|
|
});
|
|
})();
|
|
if (!Module["ENVIRONMENT_IS_PTHREAD"]) {
|
|
function isMobileDevice() {
|
|
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
|
|
navigator.userAgent,
|
|
);
|
|
}
|
|
const MAX_MEMORY_MOBILE = 1024 * 1024 * 1024;
|
|
const MAX_MEMORY_DESKTOP = 4 * 1024 * 1024 * 1024;
|
|
const MAX_DEVICE_MEMORY = isMobileDevice()
|
|
? MAX_MEMORY_MOBILE
|
|
: MAX_MEMORY_DESKTOP;
|
|
Module["wasmMemory"] = new WebAssembly.Memory({
|
|
initial: 16777216 / 65536,
|
|
maximum: MAX_DEVICE_MEMORY / 65536,
|
|
shared: true,
|
|
});
|
|
}
|
|
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 ENVIRONMENT_IS_PTHREAD = Module["ENVIRONMENT_IS_PTHREAD"] || false;
|
|
var scriptDirectory = "";
|
|
function locateFile(path) {
|
|
if (Module["locateFile"]) {
|
|
return Module["locateFile"](path, scriptDirectory);
|
|
}
|
|
return scriptDirectory + path;
|
|
}
|
|
var read_, readAsync, readBinary;
|
|
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);
|
|
quit_ = (status, toThrow) => {
|
|
process.exitCode = status;
|
|
throw toThrow;
|
|
};
|
|
Module["inspect"] = () => "[Emscripten Module object]";
|
|
let nodeWorkerThreads;
|
|
try {
|
|
nodeWorkerThreads = require("worker_threads");
|
|
} catch (e) {
|
|
console.error(
|
|
'The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?',
|
|
);
|
|
throw e;
|
|
}
|
|
global.Worker = nodeWorkerThreads.Worker;
|
|
} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
|
|
if (ENVIRONMENT_IS_WORKER) {
|
|
scriptDirectory = self.location.href;
|
|
} else if (typeof document != "undefined" && document.currentScript) {
|
|
scriptDirectory = document.currentScript.src;
|
|
}
|
|
if (_scriptDir) {
|
|
scriptDirectory = _scriptDir;
|
|
}
|
|
if (scriptDirectory.indexOf("blob:") !== 0) {
|
|
scriptDirectory = scriptDirectory.substr(
|
|
0,
|
|
scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1,
|
|
);
|
|
} else {
|
|
scriptDirectory = "";
|
|
}
|
|
if (!ENVIRONMENT_IS_NODE) {
|
|
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 {
|
|
}
|
|
if (ENVIRONMENT_IS_NODE) {
|
|
if (typeof performance == "undefined") {
|
|
global.performance = require("perf_hooks").performance;
|
|
}
|
|
}
|
|
var defaultPrint = console.log.bind(console);
|
|
var defaultPrintErr = console.error.bind(console);
|
|
if (ENVIRONMENT_IS_NODE) {
|
|
defaultPrint = (...args) => fs.writeSync(1, args.join(" ") + "\n");
|
|
defaultPrintErr = (...args) => fs.writeSync(2, args.join(" ") + "\n");
|
|
}
|
|
var out = Module["print"] || defaultPrint;
|
|
var err = Module["printErr"] || defaultPrintErr;
|
|
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"];
|
|
if (typeof WebAssembly != "object") {
|
|
abort("no native wasm support detected");
|
|
}
|
|
var wasmMemory;
|
|
var wasmModule;
|
|
var ABORT = false;
|
|
var EXITSTATUS;
|
|
function assert(condition, text) {
|
|
if (!condition) {
|
|
abort(text);
|
|
}
|
|
}
|
|
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 INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 16777216;
|
|
assert(
|
|
INITIAL_MEMORY >= 5242880,
|
|
"INITIAL_MEMORY should be larger than STACK_SIZE, was " +
|
|
INITIAL_MEMORY +
|
|
"! (STACK_SIZE=" +
|
|
5242880 +
|
|
")",
|
|
);
|
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
wasmMemory = Module["wasmMemory"];
|
|
} else {
|
|
if (Module["wasmMemory"]) {
|
|
wasmMemory = Module["wasmMemory"];
|
|
} else {
|
|
wasmMemory = new WebAssembly.Memory({
|
|
initial: INITIAL_MEMORY / 65536,
|
|
maximum: 4294967296 / 65536,
|
|
shared: true,
|
|
});
|
|
if (!(wasmMemory.buffer instanceof SharedArrayBuffer)) {
|
|
err(
|
|
"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag",
|
|
);
|
|
if (ENVIRONMENT_IS_NODE) {
|
|
err(
|
|
"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)",
|
|
);
|
|
}
|
|
throw Error("bad memory");
|
|
}
|
|
}
|
|
}
|
|
updateMemoryViews();
|
|
INITIAL_MEMORY = wasmMemory.buffer.byteLength;
|
|
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 (ENVIRONMENT_IS_PTHREAD) return;
|
|
if (!Module["noFSInit"] && !FS.init.initialized) FS.init();
|
|
FS.ignorePermissions = false;
|
|
TTY.init();
|
|
callRuntimeCallbacks(__ATINIT__);
|
|
}
|
|
function postRun() {
|
|
if (ENVIRONMENT_IS_PTHREAD) return;
|
|
if (Module["postRun"]) {
|
|
if (typeof Module["postRun"] == "function")
|
|
Module["postRun"] = [Module["postRun"]];
|
|
while (Module["postRun"].length) {
|
|
addOnPostRun(Module["postRun"].shift());
|
|
}
|
|
}
|
|
callRuntimeCallbacks(__ATPOSTRUN__);
|
|
}
|
|
function addOnPreRun(cb) {
|
|
__ATPRERUN__.unshift(cb);
|
|
}
|
|
function addOnInit(cb) {
|
|
__ATINIT__.unshift(cb);
|
|
}
|
|
function addOnPostRun(cb) {
|
|
__ATPOSTRUN__.unshift(cb);
|
|
}
|
|
var runDependencies = 0;
|
|
var runDependencyWatcher = null;
|
|
var dependenciesFulfilled = null;
|
|
function getUniqueRunDependency(id) {
|
|
return id;
|
|
}
|
|
function addRunDependency(id) {
|
|
runDependencies++;
|
|
if (Module["monitorRunDependencies"]) {
|
|
Module["monitorRunDependencies"](runDependencies);
|
|
}
|
|
}
|
|
function removeRunDependency(id) {
|
|
runDependencies--;
|
|
if (Module["monitorRunDependencies"]) {
|
|
Module["monitorRunDependencies"](runDependencies);
|
|
}
|
|
if (runDependencies == 0) {
|
|
if (runDependencyWatcher !== null) {
|
|
clearInterval(runDependencyWatcher);
|
|
runDependencyWatcher = null;
|
|
}
|
|
if (dependenciesFulfilled) {
|
|
var callback = dependenciesFulfilled;
|
|
dependenciesFulfilled = null;
|
|
callback();
|
|
}
|
|
}
|
|
}
|
|
function abort(what) {
|
|
if (Module["onAbort"]) {
|
|
Module["onAbort"](what);
|
|
}
|
|
what = "Aborted(" + what + ")";
|
|
err(what);
|
|
// ABORT = true; // this does not allow anything to work after being set, however we're actually okay to try other assets so we shouldn't do this
|
|
EXITSTATUS = 1;
|
|
what += ". Build with -sASSERTIONS for more info.";
|
|
var e = new WebAssembly.RuntimeError(what);
|
|
readyPromiseReject(e);
|
|
throw e;
|
|
}
|
|
var dataURIPrefix = "data:application/octet-stream;base64,";
|
|
var isDataURI = (filename) => filename.startsWith(dataURIPrefix);
|
|
var isFileURI = (filename) => filename.startsWith("file://");
|
|
var wasmBinaryFile;
|
|
wasmBinaryFile = "emHdBindings.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((instance) => instance)
|
|
.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;
|
|
wasmExports = Asyncify.instrumentWasmExports(wasmExports);
|
|
wasmExports = applySignatureConversions(wasmExports);
|
|
registerTLSInit(wasmExports["Hd"]);
|
|
wasmTable = wasmExports["Dd"];
|
|
addOnInit(wasmExports["Bd"]);
|
|
wasmModule = module;
|
|
removeRunDependency("wasm-instantiate");
|
|
return wasmExports;
|
|
}
|
|
addRunDependency("wasm-instantiate");
|
|
function receiveInstantiationResult(result) {
|
|
receiveInstance(result["instance"], result["module"]);
|
|
}
|
|
if (Module["instantiateWasm"]) {
|
|
try {
|
|
return Module["instantiateWasm"](info, receiveInstance);
|
|
} catch (e) {
|
|
err(`Module.instantiateWasm callback failed with error: ${e}`);
|
|
readyPromiseReject(e);
|
|
}
|
|
}
|
|
instantiateAsync(
|
|
wasmBinary,
|
|
wasmBinaryFile,
|
|
info,
|
|
receiveInstantiationResult,
|
|
).catch(readyPromiseReject);
|
|
return {};
|
|
}
|
|
var tempDouble;
|
|
var tempI64;
|
|
function __asyncjs__fetch_asset(route, dataPtr) {
|
|
return Asyncify.handleAsync(async () => {
|
|
const routeString = UTF8ToString(route);
|
|
const absoluteUrl = new URL(routeString);
|
|
try {
|
|
const response = await fetch(absoluteUrl);
|
|
if (!response.ok)
|
|
throw new Error("Fetch failed: " + response.statusText);
|
|
const buffer = await response.arrayBuffer();
|
|
const length = buffer.byteLength;
|
|
const ptr = _malloc(length);
|
|
GROWABLE_HEAP_U8().set(new Uint8Array(buffer), ptr >>> 0);
|
|
Module.HEAP32[dataPtr >> 2] = ptr;
|
|
Module.HEAP32[(dataPtr >> 2) + 1] = length;
|
|
} catch (err) {
|
|
console.error("Error in fetch_asset: ", err);
|
|
Module.HEAP32[dataPtr >> 2] = 0;
|
|
Module.HEAP32[(dataPtr >> 2) + 1] = 0;
|
|
}
|
|
});
|
|
}
|
|
function addToLoadedFiles(path) {
|
|
if (typeof self !== "undefined") {
|
|
if (typeof self.loadedFiles === "undefined") {
|
|
self.loadedFiles = [];
|
|
}
|
|
} else {
|
|
console.log("Neither window nor self is defined");
|
|
}
|
|
self.loadedFiles.push(UTF8ToString(path));
|
|
}
|
|
function downloadJS(data, filenamedata) {
|
|
const text = UTF8ToString(data);
|
|
const filename = UTF8ToString(filenamedata);
|
|
let element = document.createElement("a");
|
|
element.setAttribute(
|
|
"href",
|
|
"data:text/plain;charset=utf-8," + encodeURIComponent(text),
|
|
);
|
|
element.setAttribute("download", filename);
|
|
element.style.display = "none";
|
|
document.body.appendChild(element);
|
|
element.click();
|
|
document.body.removeChild(element);
|
|
}
|
|
function ExitStatus(status) {
|
|
this.name = "ExitStatus";
|
|
this.message = `Program terminated with exit(${status})`;
|
|
this.status = status;
|
|
}
|
|
var terminateWorker = (worker) => {
|
|
worker.terminate();
|
|
worker.onmessage = (e) => {};
|
|
};
|
|
var killThread = (pthread_ptr) => {
|
|
var worker = PThread.pthreads[pthread_ptr];
|
|
delete PThread.pthreads[pthread_ptr];
|
|
terminateWorker(worker);
|
|
__emscripten_thread_free_data(pthread_ptr);
|
|
PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker), 1);
|
|
worker.pthread_ptr = 0;
|
|
};
|
|
var cancelThread = (pthread_ptr) => {
|
|
var worker = PThread.pthreads[pthread_ptr];
|
|
worker.postMessage({ cmd: "cancel" });
|
|
};
|
|
var cleanupThread = (pthread_ptr) => {
|
|
var worker = PThread.pthreads[pthread_ptr];
|
|
assert(worker);
|
|
PThread.returnWorkerToPool(worker);
|
|
};
|
|
var zeroMemory = (address, size) => {
|
|
GROWABLE_HEAP_U8().fill(0, address, address + size);
|
|
return address;
|
|
};
|
|
var spawnThread = (threadParams) => {
|
|
var worker = PThread.getNewWorker();
|
|
if (!worker) {
|
|
return 6;
|
|
}
|
|
PThread.runningWorkers.push(worker);
|
|
PThread.pthreads[threadParams.pthread_ptr] = worker;
|
|
worker.pthread_ptr = threadParams.pthread_ptr;
|
|
var msg = {
|
|
cmd: "run",
|
|
start_routine: threadParams.startRoutine,
|
|
arg: threadParams.arg,
|
|
pthread_ptr: threadParams.pthread_ptr,
|
|
};
|
|
if (ENVIRONMENT_IS_NODE) {
|
|
worker.unref();
|
|
}
|
|
worker.postMessage(msg, threadParams.transferList);
|
|
return 0;
|
|
};
|
|
var runtimeKeepaliveCounter = 0;
|
|
var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;
|
|
var PATH = {
|
|
isAbs: (path) => path.charAt(0) === "/",
|
|
splitPath: (filename) => {
|
|
var splitPathRe =
|
|
/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
|
|
return splitPathRe.exec(filename).slice(1);
|
|
},
|
|
normalizeArray: (parts, allowAboveRoot) => {
|
|
var up = 0;
|
|
for (var i = parts.length - 1; i >= 0; i--) {
|
|
var last = parts[i];
|
|
if (last === ".") {
|
|
parts.splice(i, 1);
|
|
} else if (last === "..") {
|
|
parts.splice(i, 1);
|
|
up++;
|
|
} else if (up) {
|
|
parts.splice(i, 1);
|
|
up--;
|
|
}
|
|
}
|
|
if (allowAboveRoot) {
|
|
for (; up; up--) {
|
|
parts.unshift("..");
|
|
}
|
|
}
|
|
return parts;
|
|
},
|
|
normalize: (path) => {
|
|
var isAbsolute = PATH.isAbs(path),
|
|
trailingSlash = path.substr(-1) === "/";
|
|
path = PATH.normalizeArray(
|
|
path.split("/").filter((p) => !!p),
|
|
!isAbsolute,
|
|
).join("/");
|
|
if (!path && !isAbsolute) {
|
|
path = ".";
|
|
}
|
|
if (path && trailingSlash) {
|
|
path += "/";
|
|
}
|
|
return (isAbsolute ? "/" : "") + path;
|
|
},
|
|
dirname: (path) => {
|
|
var result = PATH.splitPath(path),
|
|
root = result[0],
|
|
dir = result[1];
|
|
if (!root && !dir) {
|
|
return ".";
|
|
}
|
|
if (dir) {
|
|
dir = dir.substr(0, dir.length - 1);
|
|
}
|
|
return root + dir;
|
|
},
|
|
basename: (path) => {
|
|
if (path === "/") return "/";
|
|
path = PATH.normalize(path);
|
|
path = path.replace(/\/$/, "");
|
|
var lastSlash = path.lastIndexOf("/");
|
|
if (lastSlash === -1) return path;
|
|
return path.substr(lastSlash + 1);
|
|
},
|
|
join: function () {
|
|
var paths = Array.prototype.slice.call(arguments);
|
|
return PATH.normalize(paths.join("/"));
|
|
},
|
|
join2: (l, r) => PATH.normalize(l + "/" + r),
|
|
};
|
|
var initRandomFill = () => {
|
|
if (
|
|
typeof crypto == "object" &&
|
|
typeof crypto["getRandomValues"] == "function"
|
|
) {
|
|
return (view) => (
|
|
view.set(crypto.getRandomValues(new Uint8Array(view.byteLength))),
|
|
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: function () {
|
|
var resolvedPath = "",
|
|
resolvedAbsolute = false;
|
|
for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
|
|
var path = i >= 0 ? arguments[i] : FS.cwd();
|
|
if (typeof path != "string") {
|
|
throw new TypeError("Arguments to path.resolve must be strings");
|
|
} else if (!path) {
|
|
return "";
|
|
}
|
|
resolvedPath = path + "/" + resolvedPath;
|
|
resolvedAbsolute = PATH.isAbs(path);
|
|
}
|
|
resolvedPath = PATH.normalizeArray(
|
|
resolvedPath.split("/").filter((p) => !!p),
|
|
!resolvedAbsolute,
|
|
).join("/");
|
|
return (resolvedAbsolute ? "/" : "") + resolvedPath || ".";
|
|
},
|
|
relative: (from, to) => {
|
|
from = PATH_FS.resolve(from).substr(1);
|
|
to = PATH_FS.resolve(to).substr(1);
|
|
function trim(arr) {
|
|
var start = 0;
|
|
for (; start < arr.length; start++) {
|
|
if (arr[start] !== "") break;
|
|
}
|
|
var end = arr.length - 1;
|
|
for (; end >= 0; end--) {
|
|
if (arr[end] !== "") break;
|
|
}
|
|
if (start > end) return [];
|
|
return arr.slice(start, end - start + 1);
|
|
}
|
|
var fromParts = trim(from.split("/"));
|
|
var toParts = trim(to.split("/"));
|
|
var length = Math.min(fromParts.length, toParts.length);
|
|
var samePartsLength = length;
|
|
for (var i = 0; i < length; i++) {
|
|
if (fromParts[i] !== toParts[i]) {
|
|
samePartsLength = i;
|
|
break;
|
|
}
|
|
}
|
|
var outputParts = [];
|
|
for (var i = samePartsLength; i < fromParts.length; i++) {
|
|
outputParts.push("..");
|
|
}
|
|
outputParts = outputParts.concat(toParts.slice(samePartsLength));
|
|
return outputParts.join("/");
|
|
},
|
|
};
|
|
var UTF8Decoder =
|
|
typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined;
|
|
var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => {
|
|
idx >>>= 0;
|
|
var endIdx = idx + maxBytesToRead;
|
|
var endPtr = idx;
|
|
while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
|
|
if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
|
|
return UTF8Decoder.decode(heapOrArray.slice(idx, endPtr));
|
|
}
|
|
var str = "";
|
|
while (idx < endPtr) {
|
|
var u0 = heapOrArray[idx++];
|
|
if (!(u0 & 128)) {
|
|
str += String.fromCharCode(u0);
|
|
continue;
|
|
}
|
|
var u1 = heapOrArray[idx++] & 63;
|
|
if ((u0 & 224) == 192) {
|
|
str += String.fromCharCode(((u0 & 31) << 6) | u1);
|
|
continue;
|
|
}
|
|
var u2 = heapOrArray[idx++] & 63;
|
|
if ((u0 & 240) == 224) {
|
|
u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;
|
|
} else {
|
|
u0 =
|
|
((u0 & 7) << 18) |
|
|
(u1 << 12) |
|
|
(u2 << 6) |
|
|
(heapOrArray[idx++] & 63);
|
|
}
|
|
if (u0 < 65536) {
|
|
str += String.fromCharCode(u0);
|
|
} else {
|
|
var ch = u0 - 65536;
|
|
str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023));
|
|
}
|
|
}
|
|
return str;
|
|
};
|
|
var FS_stdin_getChar_buffer = [];
|
|
var lengthBytesUTF8 = (str) => {
|
|
var len = 0;
|
|
for (var i = 0; i < str.length; ++i) {
|
|
var c = str.charCodeAt(i);
|
|
if (c <= 127) {
|
|
len++;
|
|
} else if (c <= 2047) {
|
|
len += 2;
|
|
} else if (c >= 55296 && c <= 57343) {
|
|
len += 4;
|
|
++i;
|
|
} else {
|
|
len += 3;
|
|
}
|
|
}
|
|
return len;
|
|
};
|
|
var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {
|
|
outIdx >>>= 0;
|
|
if (!(maxBytesToWrite > 0)) return 0;
|
|
var startIdx = outIdx;
|
|
var endIdx = outIdx + maxBytesToWrite - 1;
|
|
for (var i = 0; i < str.length; ++i) {
|
|
var u = str.charCodeAt(i);
|
|
if (u >= 55296 && u <= 57343) {
|
|
var u1 = str.charCodeAt(++i);
|
|
u = (65536 + ((u & 1023) << 10)) | (u1 & 1023);
|
|
}
|
|
if (u <= 127) {
|
|
if (outIdx >= endIdx) break;
|
|
heap[outIdx++ >>> 0] = u;
|
|
} else if (u <= 2047) {
|
|
if (outIdx + 1 >= endIdx) break;
|
|
heap[outIdx++ >>> 0] = 192 | (u >> 6);
|
|
heap[outIdx++ >>> 0] = 128 | (u & 63);
|
|
} else if (u <= 65535) {
|
|
if (outIdx + 2 >= endIdx) break;
|
|
heap[outIdx++ >>> 0] = 224 | (u >> 12);
|
|
heap[outIdx++ >>> 0] = 128 | ((u >> 6) & 63);
|
|
heap[outIdx++ >>> 0] = 128 | (u & 63);
|
|
} else {
|
|
if (outIdx + 3 >= endIdx) break;
|
|
heap[outIdx++ >>> 0] = 240 | (u >> 18);
|
|
heap[outIdx++ >>> 0] = 128 | ((u >> 12) & 63);
|
|
heap[outIdx++ >>> 0] = 128 | ((u >> 6) & 63);
|
|
heap[outIdx++ >>> 0] = 128 | (u & 63);
|
|
}
|
|
}
|
|
heap[outIdx >>> 0] = 0;
|
|
return outIdx - startIdx;
|
|
};
|
|
function intArrayFromString(stringy, dontAddNull, length) {
|
|
var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;
|
|
var u8array = new Array(len);
|
|
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; 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);
|
|
}
|
|
},
|
|
fsync(tty) {
|
|
if (tty.output && tty.output.length > 0) {
|
|
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 alignMemory = (size, alignment) =>
|
|
Math.ceil(size / alignment) * alignment;
|
|
var mmapAlloc = (size) => {
|
|
size = alignMemory(size, 65536);
|
|
var ptr = _emscripten_builtin_memalign(65536, size);
|
|
if (!ptr) return 0;
|
|
return zeroMemory(ptr, size);
|
|
};
|
|
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);
|
|
}
|
|
if (!MEMFS.ops_table) {
|
|
MEMFS.ops_table = {
|
|
dir: {
|
|
node: {
|
|
getattr: MEMFS.node_ops.getattr,
|
|
setattr: MEMFS.node_ops.setattr,
|
|
lookup: MEMFS.node_ops.lookup,
|
|
mknod: MEMFS.node_ops.mknod,
|
|
rename: MEMFS.node_ops.rename,
|
|
unlink: MEMFS.node_ops.unlink,
|
|
rmdir: MEMFS.node_ops.rmdir,
|
|
readdir: MEMFS.node_ops.readdir,
|
|
symlink: MEMFS.node_ops.symlink,
|
|
},
|
|
stream: { llseek: MEMFS.stream_ops.llseek },
|
|
},
|
|
file: {
|
|
node: {
|
|
getattr: MEMFS.node_ops.getattr,
|
|
setattr: MEMFS.node_ops.setattr,
|
|
},
|
|
stream: {
|
|
llseek: MEMFS.stream_ops.llseek,
|
|
read: MEMFS.stream_ops.read,
|
|
write: MEMFS.stream_ops.write,
|
|
allocate: MEMFS.stream_ops.allocate,
|
|
mmap: MEMFS.stream_ops.mmap,
|
|
msync: MEMFS.stream_ops.msync,
|
|
},
|
|
},
|
|
link: {
|
|
node: {
|
|
getattr: MEMFS.node_ops.getattr,
|
|
setattr: MEMFS.node_ops.setattr,
|
|
readlink: MEMFS.node_ops.readlink,
|
|
},
|
|
stream: {},
|
|
},
|
|
chrdev: {
|
|
node: {
|
|
getattr: MEMFS.node_ops.getattr,
|
|
setattr: MEMFS.node_ops.setattr,
|
|
},
|
|
stream: FS.chrdev_stream_ops,
|
|
},
|
|
};
|
|
}
|
|
var node = FS.createNode(parent, name, mode, dev);
|
|
if (FS.isDir(node.mode)) {
|
|
node.node_ops = MEMFS.ops_table.dir.node;
|
|
node.stream_ops = MEMFS.ops_table.dir.stream;
|
|
node.contents = {};
|
|
} else if (FS.isFile(node.mode)) {
|
|
node.node_ops = MEMFS.ops_table.file.node;
|
|
node.stream_ops = MEMFS.ops_table.file.stream;
|
|
node.usedBytes = 0;
|
|
node.contents = null;
|
|
} else if (FS.isLink(node.mode)) {
|
|
node.node_ops = MEMFS.ops_table.link.node;
|
|
node.stream_ops = MEMFS.ops_table.link.stream;
|
|
} else if (FS.isChrdev(node.mode)) {
|
|
node.node_ops = MEMFS.ops_table.chrdev.node;
|
|
node.stream_ops = MEMFS.ops_table.chrdev.stream;
|
|
}
|
|
node.timestamp = Date.now();
|
|
if (parent) {
|
|
parent.contents[name] = node;
|
|
parent.timestamp = node.timestamp;
|
|
}
|
|
return node;
|
|
},
|
|
getFileDataAsTypedArray(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 < CAPACITY_DOUBLING_MAX ? 2 : 1.125)) >>>
|
|
0,
|
|
);
|
|
if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);
|
|
var oldContents = node.contents;
|
|
node.contents = new Uint8Array(newCapacity);
|
|
if (node.usedBytes > 0)
|
|
node.contents.set(oldContents.subarray(0, node.usedBytes), 0);
|
|
},
|
|
resizeFileStorage(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 in node.contents) {
|
|
if (!node.contents.hasOwnProperty(key)) {
|
|
continue;
|
|
}
|
|
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; i < size; i++)
|
|
buffer[offset + i] = contents[position + i];
|
|
}
|
|
return size;
|
|
},
|
|
write(stream, buffer, offset, length, position, canOwn) {
|
|
if (buffer.buffer === GROWABLE_HEAP_I8().buffer) {
|
|
canOwn = false;
|
|
}
|
|
if (!length) return 0;
|
|
var node = stream.node;
|
|
node.timestamp = Date.now();
|
|
if (buffer.subarray && (!node.contents || node.contents.subarray)) {
|
|
if (canOwn) {
|
|
node.contents = buffer.subarray(offset, offset + length);
|
|
node.usedBytes = length;
|
|
return length;
|
|
} else if (node.usedBytes === 0 && position === 0) {
|
|
node.contents = buffer.slice(offset, offset + length);
|
|
node.usedBytes = length;
|
|
return length;
|
|
} else if (position + length <= node.usedBytes) {
|
|
node.contents.set(
|
|
buffer.subarray(offset, offset + length),
|
|
position,
|
|
);
|
|
return length;
|
|
}
|
|
}
|
|
MEMFS.expandFileStorage(node, position + length);
|
|
if (node.contents.subarray && buffer.subarray) {
|
|
node.contents.set(
|
|
buffer.subarray(offset, offset + length),
|
|
position,
|
|
);
|
|
} else {
|
|
for (var i = 0; i < length; i++) {
|
|
node.contents[position + i] = buffer[offset + i];
|
|
}
|
|
}
|
|
node.usedBytes = Math.max(node.usedBytes, position + length);
|
|
return length;
|
|
},
|
|
llseek(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;
|
|
if (!(flags & 2) && contents.buffer === GROWABLE_HEAP_I8().buffer) {
|
|
allocated = false;
|
|
ptr = contents.byteOffset;
|
|
} else {
|
|
if (position > 0 || position + length < contents.length) {
|
|
if (contents.subarray) {
|
|
contents = contents.subarray(position, position + length);
|
|
} else {
|
|
contents = Array.prototype.slice.call(
|
|
contents,
|
|
position,
|
|
position + length,
|
|
);
|
|
}
|
|
}
|
|
allocated = true;
|
|
ptr = mmapAlloc(length);
|
|
if (!ptr) {
|
|
throw new FS.ErrnoError(48);
|
|
}
|
|
GROWABLE_HEAP_I8().set(contents, ptr >>> 0);
|
|
}
|
|
return { ptr: ptr, allocated: allocated };
|
|
},
|
|
msync(stream, buffer, offset, length, mmapFlags) {
|
|
MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
|
|
return 0;
|
|
},
|
|
},
|
|
};
|
|
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) => {
|
|
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) {
|
|
if (preFinish) preFinish();
|
|
if (!dontCreateFile) {
|
|
FS_createDataFile(
|
|
parent,
|
|
name,
|
|
byteArray,
|
|
canRead,
|
|
canWrite,
|
|
canOwn,
|
|
);
|
|
}
|
|
if (onload) onload();
|
|
removeRunDependency(dep);
|
|
}
|
|
if (
|
|
FS_handledByPreloadPlugin(byteArray, fullname, finish, () => {
|
|
if (onerror) onerror();
|
|
removeRunDependency(dep);
|
|
})
|
|
) {
|
|
return;
|
|
}
|
|
finish(byteArray);
|
|
}
|
|
addRunDependency(dep);
|
|
if (typeof url == "string") {
|
|
asyncLoad(url, (byteArray) => processData(byteArray), onerror);
|
|
} else {
|
|
processData(url);
|
|
}
|
|
};
|
|
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: null,
|
|
genericErrors: {},
|
|
filesystems: null,
|
|
syncFSRequests: 0,
|
|
lookupPath(path, opts = {}) {
|
|
path = PATH_FS.resolve(path);
|
|
if (!path) return { path: "", node: null };
|
|
var defaults = { follow_mount: true, recurse_count: 0 };
|
|
opts = Object.assign(defaults, opts);
|
|
if (opts.recurse_count > 8) {
|
|
throw new FS.ErrnoError(32);
|
|
}
|
|
var parts = path.split("/").filter((p) => !!p);
|
|
var current = FS.root;
|
|
var current_path = "/";
|
|
for (var i = 0; i < parts.length; i++) {
|
|
var islast = i === parts.length - 1;
|
|
if (islast && opts.parent) {
|
|
break;
|
|
}
|
|
current = FS.lookupNode(current, parts[i]);
|
|
current_path = PATH.join2(current_path, parts[i]);
|
|
if (FS.isMountpoint(current)) {
|
|
if (!islast || (islast && opts.follow_mount)) {
|
|
current = current.mounted.root;
|
|
}
|
|
}
|
|
if (!islast || opts.follow) {
|
|
var count = 0;
|
|
while (FS.isLink(current.mode)) {
|
|
var link = FS.readlink(current_path);
|
|
current_path = PATH_FS.resolve(PATH.dirname(current_path), link);
|
|
var lookup = FS.lookupPath(current_path, {
|
|
recurse_count: opts.recurse_count + 1,
|
|
});
|
|
current = lookup.node;
|
|
if (count++ > 40) {
|
|
throw new FS.ErrnoError(32);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return { path: current_path, node: current };
|
|
},
|
|
getPath(node) {
|
|
var path;
|
|
while (true) {
|
|
if (FS.isRoot(node)) {
|
|
var mount = node.mount.mountpoint;
|
|
if (!path) return mount;
|
|
return mount[mount.length - 1] !== "/"
|
|
? `${mount}/${path}`
|
|
: mount + path;
|
|
}
|
|
path = path ? `${node.name}/${path}` : node.name;
|
|
node = node.parent;
|
|
}
|
|
},
|
|
hashName(parentid, name) {
|
|
var hash = 0;
|
|
for (var i = 0; i < name.length; i++) {
|
|
hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
|
|
}
|
|
return ((parentid + hash) >>> 0) % FS.nameTable.length;
|
|
},
|
|
hashAddNode(node) {
|
|
var hash = FS.hashName(node.parent.id, node.name);
|
|
node.name_next = FS.nameTable[hash];
|
|
FS.nameTable[hash] = node;
|
|
},
|
|
hashRemoveNode(node) {
|
|
var hash = FS.hashName(node.parent.id, node.name);
|
|
if (FS.nameTable[hash] === node) {
|
|
FS.nameTable[hash] = node.name_next;
|
|
} else {
|
|
var current = FS.nameTable[hash];
|
|
while (current) {
|
|
if (current.name_next === node) {
|
|
current.name_next = node.name_next;
|
|
break;
|
|
}
|
|
current = current.name_next;
|
|
}
|
|
}
|
|
},
|
|
lookupNode(parent, name) {
|
|
var errCode = FS.mayLookup(parent);
|
|
if (errCode) {
|
|
throw new FS.ErrnoError(errCode, parent);
|
|
}
|
|
var hash = FS.hashName(parent.id, name);
|
|
for (var node = FS.nameTable[hash]; node; node = node.name_next) {
|
|
var nodeName = node.name;
|
|
if (node.parent.id === parent.id && nodeName === name) {
|
|
return node;
|
|
}
|
|
}
|
|
return FS.lookup(parent, name);
|
|
},
|
|
createNode(parent, name, mode, rdev) {
|
|
var node = new FS.FSNode(parent, name, mode, rdev);
|
|
FS.hashAddNode(node);
|
|
return node;
|
|
},
|
|
destroyNode(node) {
|
|
FS.hashRemoveNode(node);
|
|
},
|
|
isRoot(node) {
|
|
return node === node.parent;
|
|
},
|
|
isMountpoint(node) {
|
|
return !!node.mounted;
|
|
},
|
|
isFile(mode) {
|
|
return (mode & 61440) === 32768;
|
|
},
|
|
isDir(mode) {
|
|
return (mode & 61440) === 16384;
|
|
},
|
|
isLink(mode) {
|
|
return (mode & 61440) === 40960;
|
|
},
|
|
isChrdev(mode) {
|
|
return (mode & 61440) === 8192;
|
|
},
|
|
isBlkdev(mode) {
|
|
return (mode & 61440) === 24576;
|
|
},
|
|
isFIFO(mode) {
|
|
return (mode & 61440) === 4096;
|
|
},
|
|
isSocket(mode) {
|
|
return (mode & 49152) === 49152;
|
|
},
|
|
flagsToPermissionString(flag) {
|
|
var perms = ["r", "w", "rw"][flag & 3];
|
|
if (flag & 512) {
|
|
perms += "w";
|
|
}
|
|
return perms;
|
|
},
|
|
nodePermissions(node, perms) {
|
|
if (FS.ignorePermissions) {
|
|
return 0;
|
|
}
|
|
if (perms.includes("r") && !(node.mode & 292)) {
|
|
return 2;
|
|
} else if (perms.includes("w") && !(node.mode & 146)) {
|
|
return 2;
|
|
} else if (perms.includes("x") && !(node.mode & 73)) {
|
|
return 2;
|
|
}
|
|
return 0;
|
|
},
|
|
mayLookup(dir) {
|
|
var errCode = FS.nodePermissions(dir, "x");
|
|
if (errCode) return errCode;
|
|
if (!dir.node_ops.lookup) return 2;
|
|
return 0;
|
|
},
|
|
mayCreate(dir, name) {
|
|
try {
|
|
var node = FS.lookupNode(dir, name);
|
|
return 20;
|
|
} catch (e) {}
|
|
return FS.nodePermissions(dir, "wx");
|
|
},
|
|
mayDelete(dir, name, isdir) {
|
|
var node;
|
|
try {
|
|
node = FS.lookupNode(dir, name);
|
|
} catch (e) {
|
|
return e.errno;
|
|
}
|
|
var errCode = FS.nodePermissions(dir, "wx");
|
|
if (errCode) {
|
|
return errCode;
|
|
}
|
|
if (isdir) {
|
|
if (!FS.isDir(node.mode)) {
|
|
return 54;
|
|
}
|
|
if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
|
|
return 10;
|
|
}
|
|
} else {
|
|
if (FS.isDir(node.mode)) {
|
|
return 31;
|
|
}
|
|
}
|
|
return 0;
|
|
},
|
|
mayOpen(node, flags) {
|
|
if (!node) {
|
|
return 44;
|
|
}
|
|
if (FS.isLink(node.mode)) {
|
|
return 32;
|
|
} else if (FS.isDir(node.mode)) {
|
|
if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) {
|
|
return 31;
|
|
}
|
|
}
|
|
return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
|
|
},
|
|
MAX_OPEN_FDS: 4096,
|
|
nextfd() {
|
|
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) {
|
|
if (!FS.FSStream) {
|
|
FS.FSStream = function () {
|
|
this.shared = {};
|
|
};
|
|
FS.FSStream.prototype = {};
|
|
Object.defineProperties(FS.FSStream.prototype, {
|
|
object: {
|
|
get() {
|
|
return this.node;
|
|
},
|
|
set(val) {
|
|
this.node = val;
|
|
},
|
|
},
|
|
isRead: {
|
|
get() {
|
|
return (this.flags & 2097155) !== 1;
|
|
},
|
|
},
|
|
isWrite: {
|
|
get() {
|
|
return (this.flags & 2097155) !== 0;
|
|
},
|
|
},
|
|
isAppend: {
|
|
get() {
|
|
return this.flags & 1024;
|
|
},
|
|
},
|
|
flags: {
|
|
get() {
|
|
return this.shared.flags;
|
|
},
|
|
set(val) {
|
|
this.shared.flags = val;
|
|
},
|
|
},
|
|
position: {
|
|
get() {
|
|
return this.shared.position;
|
|
},
|
|
set(val) {
|
|
this.shared.position = val;
|
|
},
|
|
},
|
|
});
|
|
}
|
|
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;
|
|
},
|
|
chrdev_stream_ops: {
|
|
open(stream) {
|
|
var device = FS.getDevice(stream.node.rdev);
|
|
stream.stream_ops = device.stream_ops;
|
|
if (stream.stream_ops.open) {
|
|
stream.stream_ops.open(stream);
|
|
}
|
|
},
|
|
llseek() {
|
|
throw new FS.ErrnoError(70);
|
|
},
|
|
},
|
|
major: (dev) => dev >> 8,
|
|
minor: (dev) => dev & 255,
|
|
makedev: (ma, mi) => (ma << 8) | mi,
|
|
registerDevice(dev, ops) {
|
|
FS.devices[dev] = { stream_ops: ops };
|
|
},
|
|
getDevice: (dev) => FS.devices[dev],
|
|
getMounts(mount) {
|
|
var mounts = [];
|
|
var check = [mount];
|
|
while (check.length) {
|
|
var m = check.pop();
|
|
mounts.push(m);
|
|
check.push.apply(check, m.mounts);
|
|
}
|
|
return mounts;
|
|
},
|
|
syncfs(populate, callback) {
|
|
if (typeof populate == "function") {
|
|
callback = populate;
|
|
populate = false;
|
|
}
|
|
FS.syncFSRequests++;
|
|
if (FS.syncFSRequests > 1) {
|
|
err(
|
|
`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`,
|
|
);
|
|
}
|
|
var mounts = FS.getMounts(FS.root.mount);
|
|
var completed = 0;
|
|
function doCallback(errCode) {
|
|
FS.syncFSRequests--;
|
|
return callback(errCode);
|
|
}
|
|
function done(errCode) {
|
|
if (errCode) {
|
|
if (!done.errored) {
|
|
done.errored = true;
|
|
return doCallback(errCode);
|
|
}
|
|
return;
|
|
}
|
|
if (++completed >= mounts.length) {
|
|
doCallback(null);
|
|
}
|
|
}
|
|
mounts.forEach((mount) => {
|
|
if (!mount.type.syncfs) {
|
|
return done(null);
|
|
}
|
|
mount.type.syncfs(mount, populate, done);
|
|
});
|
|
},
|
|
mount(type, opts, mountpoint) {
|
|
var root = mountpoint === "/";
|
|
var pseudo = !mountpoint;
|
|
var node;
|
|
if (root && FS.root) {
|
|
throw new FS.ErrnoError(10);
|
|
} else if (!root && !pseudo) {
|
|
var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
|
|
mountpoint = lookup.path;
|
|
node = lookup.node;
|
|
if (FS.isMountpoint(node)) {
|
|
throw new FS.ErrnoError(10);
|
|
}
|
|
if (!FS.isDir(node.mode)) {
|
|
throw new FS.ErrnoError(54);
|
|
}
|
|
}
|
|
var mount = {
|
|
type: type,
|
|
opts: opts,
|
|
mountpoint: mountpoint,
|
|
mounts: [],
|
|
};
|
|
var mountRoot = type.mount(mount);
|
|
mountRoot.mount = mount;
|
|
mount.root = mountRoot;
|
|
if (root) {
|
|
FS.root = mountRoot;
|
|
} else if (node) {
|
|
node.mounted = mount;
|
|
if (node.mount) {
|
|
node.mount.mounts.push(mount);
|
|
}
|
|
}
|
|
return mountRoot;
|
|
},
|
|
unmount(mountpoint) {
|
|
var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
|
|
if (!FS.isMountpoint(lookup.node)) {
|
|
throw new FS.ErrnoError(28);
|
|
}
|
|
var node = lookup.node;
|
|
var mount = node.mounted;
|
|
var mounts = FS.getMounts(mount);
|
|
Object.keys(FS.nameTable).forEach((hash) => {
|
|
var current = FS.nameTable[hash];
|
|
while (current) {
|
|
var next = current.name_next;
|
|
if (mounts.includes(current.mount)) {
|
|
FS.destroyNode(current);
|
|
}
|
|
current = next;
|
|
}
|
|
});
|
|
node.mounted = null;
|
|
var idx = node.mount.mounts.indexOf(mount);
|
|
node.mount.mounts.splice(idx, 1);
|
|
},
|
|
lookup(parent, name) {
|
|
return parent.node_ops.lookup(parent, name);
|
|
},
|
|
mknod(path, mode, dev) {
|
|
var lookup = FS.lookupPath(path, { parent: true });
|
|
var parent = lookup.node;
|
|
var name = PATH.basename(path);
|
|
if (!name || name === "." || name === "..") {
|
|
throw new FS.ErrnoError(28);
|
|
}
|
|
var errCode = FS.mayCreate(parent, name);
|
|
if (errCode) {
|
|
throw new FS.ErrnoError(errCode);
|
|
}
|
|
if (!parent.node_ops.mknod) {
|
|
throw new FS.ErrnoError(63);
|
|
}
|
|
return parent.node_ops.mknod(parent, name, mode, dev);
|
|
},
|
|
create(path, mode) {
|
|
mode = mode !== undefined ? mode : 438;
|
|
mode &= 4095;
|
|
mode |= 32768;
|
|
return FS.mknod(path, mode, 0);
|
|
},
|
|
mkdir(path, mode) {
|
|
mode = mode !== undefined ? mode : 511;
|
|
mode &= 511 | 512;
|
|
mode |= 16384;
|
|
return FS.mknod(path, mode, 0);
|
|
},
|
|
mkdirTree(path, mode) {
|
|
var dirs = path.split("/");
|
|
var d = "";
|
|
for (var i = 0; i < dirs.length; ++i) {
|
|
if (!dirs[i]) continue;
|
|
d += "/" + dirs[i];
|
|
try {
|
|
FS.mkdir(d, mode);
|
|
} catch (e) {
|
|
if (e.errno != 20) throw e;
|
|
}
|
|
}
|
|
},
|
|
mkdev(path, mode, dev) {
|
|
if (typeof dev == "undefined") {
|
|
dev = mode;
|
|
mode = 438;
|
|
}
|
|
mode |= 8192;
|
|
return FS.mknod(path, mode, dev);
|
|
},
|
|
symlink(oldpath, newpath) {
|
|
if (!PATH_FS.resolve(oldpath)) {
|
|
throw new FS.ErrnoError(44);
|
|
}
|
|
var lookup = FS.lookupPath(newpath, { parent: true });
|
|
var parent = lookup.node;
|
|
if (!parent) {
|
|
throw new FS.ErrnoError(44);
|
|
}
|
|
var newname = PATH.basename(newpath);
|
|
var errCode = FS.mayCreate(parent, newname);
|
|
if (errCode) {
|
|
throw new FS.ErrnoError(errCode);
|
|
}
|
|
if (!parent.node_ops.symlink) {
|
|
throw new FS.ErrnoError(63);
|
|
}
|
|
return parent.node_ops.symlink(parent, newname, oldpath);
|
|
},
|
|
rename(old_path, new_path) {
|
|
var old_dirname = PATH.dirname(old_path);
|
|
var new_dirname = PATH.dirname(new_path);
|
|
var old_name = PATH.basename(old_path);
|
|
var new_name = PATH.basename(new_path);
|
|
var lookup, old_dir, new_dir;
|
|
lookup = FS.lookupPath(old_path, { parent: true });
|
|
old_dir = lookup.node;
|
|
lookup = FS.lookupPath(new_path, { parent: true });
|
|
new_dir = lookup.node;
|
|
if (!old_dir || !new_dir) throw new FS.ErrnoError(44);
|
|
if (old_dir.mount !== new_dir.mount) {
|
|
throw new FS.ErrnoError(75);
|
|
}
|
|
var old_node = FS.lookupNode(old_dir, old_name);
|
|
var relative = PATH_FS.relative(old_path, new_dirname);
|
|
if (relative.charAt(0) !== ".") {
|
|
throw new FS.ErrnoError(28);
|
|
}
|
|
relative = PATH_FS.relative(new_path, old_dirname);
|
|
if (relative.charAt(0) !== ".") {
|
|
throw new FS.ErrnoError(55);
|
|
}
|
|
var new_node;
|
|
try {
|
|
new_node = FS.lookupNode(new_dir, new_name);
|
|
} catch (e) {}
|
|
if (old_node === new_node) {
|
|
return;
|
|
}
|
|
var isdir = FS.isDir(old_node.mode);
|
|
var errCode = FS.mayDelete(old_dir, old_name, isdir);
|
|
if (errCode) {
|
|
throw new FS.ErrnoError(errCode);
|
|
}
|
|
errCode = new_node
|
|
? FS.mayDelete(new_dir, new_name, isdir)
|
|
: FS.mayCreate(new_dir, new_name);
|
|
if (errCode) {
|
|
throw new FS.ErrnoError(errCode);
|
|
}
|
|
if (!old_dir.node_ops.rename) {
|
|
throw new FS.ErrnoError(63);
|
|
}
|
|
if (
|
|
FS.isMountpoint(old_node) ||
|
|
(new_node && FS.isMountpoint(new_node))
|
|
) {
|
|
throw new FS.ErrnoError(10);
|
|
}
|
|
if (new_dir !== old_dir) {
|
|
errCode = FS.nodePermissions(old_dir, "w");
|
|
if (errCode) {
|
|
throw new FS.ErrnoError(errCode);
|
|
}
|
|
}
|
|
FS.hashRemoveNode(old_node);
|
|
try {
|
|
old_dir.node_ops.rename(old_node, new_dir, new_name);
|
|
} catch (e) {
|
|
throw e;
|
|
} finally {
|
|
FS.hashAddNode(old_node);
|
|
}
|
|
},
|
|
rmdir(path) {
|
|
var lookup = FS.lookupPath(path, { parent: true });
|
|
var parent = lookup.node;
|
|
var name = PATH.basename(path);
|
|
var node = FS.lookupNode(parent, name);
|
|
var errCode = FS.mayDelete(parent, name, true);
|
|
if (errCode) {
|
|
throw new FS.ErrnoError(errCode);
|
|
}
|
|
if (!parent.node_ops.rmdir) {
|
|
throw new FS.ErrnoError(63);
|
|
}
|
|
if (FS.isMountpoint(node)) {
|
|
throw new FS.ErrnoError(10);
|
|
}
|
|
parent.node_ops.rmdir(parent, name);
|
|
FS.destroyNode(node);
|
|
},
|
|
readdir(path) {
|
|
var lookup = FS.lookupPath(path, { follow: true });
|
|
var node = lookup.node;
|
|
if (!node.node_ops.readdir) {
|
|
throw new FS.ErrnoError(54);
|
|
}
|
|
return node.node_ops.readdir(node);
|
|
},
|
|
unlink(path) {
|
|
var lookup = FS.lookupPath(path, { parent: true });
|
|
var parent = lookup.node;
|
|
if (!parent) {
|
|
throw new FS.ErrnoError(44);
|
|
}
|
|
var name = PATH.basename(path);
|
|
var node = FS.lookupNode(parent, name);
|
|
var errCode = FS.mayDelete(parent, name, false);
|
|
if (errCode) {
|
|
throw new FS.ErrnoError(errCode);
|
|
}
|
|
if (!parent.node_ops.unlink) {
|
|
throw new FS.ErrnoError(63);
|
|
}
|
|
if (FS.isMountpoint(node)) {
|
|
throw new FS.ErrnoError(10);
|
|
}
|
|
parent.node_ops.unlink(parent, name);
|
|
FS.destroyNode(node);
|
|
},
|
|
readlink(path) {
|
|
var lookup = FS.lookupPath(path);
|
|
var link = lookup.node;
|
|
if (!link) {
|
|
throw new FS.ErrnoError(44);
|
|
}
|
|
if (!link.node_ops.readlink) {
|
|
throw new FS.ErrnoError(28);
|
|
}
|
|
return PATH_FS.resolve(
|
|
FS.getPath(link.parent),
|
|
link.node_ops.readlink(link),
|
|
);
|
|
},
|
|
stat(path, dontFollow) {
|
|
var lookup = FS.lookupPath(path, { follow: !dontFollow });
|
|
var node = lookup.node;
|
|
if (!node) {
|
|
throw new FS.ErrnoError(44);
|
|
}
|
|
if (!node.node_ops.getattr) {
|
|
throw new FS.ErrnoError(63);
|
|
}
|
|
return node.node_ops.getattr(node);
|
|
},
|
|
lstat(path) {
|
|
return FS.stat(path, true);
|
|
},
|
|
chmod(path, mode, dontFollow) {
|
|
var node;
|
|
if (typeof path == "string") {
|
|
var lookup = FS.lookupPath(path, { follow: !dontFollow });
|
|
node = lookup.node;
|
|
} else {
|
|
node = path;
|
|
}
|
|
if (!node.node_ops.setattr) {
|
|
throw new FS.ErrnoError(63);
|
|
}
|
|
node.node_ops.setattr(node, {
|
|
mode: (mode & 4095) | (node.mode & ~4095),
|
|
timestamp: Date.now(),
|
|
});
|
|
},
|
|
lchmod(path, mode) {
|
|
FS.chmod(path, mode, true);
|
|
},
|
|
fchmod(fd, mode) {
|
|
var stream = FS.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() });
|
|
},
|
|
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 : mode;
|
|
if (flags & 64) {
|
|
mode = (mode & 4095) | 32768;
|
|
} else {
|
|
mode = 0;
|
|
}
|
|
var node;
|
|
if (typeof path == "object") {
|
|
node = path;
|
|
} else {
|
|
path = PATH.normalize(path);
|
|
try {
|
|
var lookup = FS.lookupPath(path, { follow: !(flags & 131072) });
|
|
node = lookup.node;
|
|
} catch (e) {}
|
|
}
|
|
var created = false;
|
|
if (flags & 64) {
|
|
if (node) {
|
|
if (flags & 128) {
|
|
throw new FS.ErrnoError(20);
|
|
}
|
|
} else {
|
|
node = FS.mknod(path, mode, 0);
|
|
created = true;
|
|
}
|
|
}
|
|
if (!node) {
|
|
throw new FS.ErrnoError(44);
|
|
}
|
|
if (FS.isChrdev(node.mode)) {
|
|
flags &= ~512;
|
|
}
|
|
if (flags & 65536 && !FS.isDir(node.mode)) {
|
|
throw new FS.ErrnoError(54);
|
|
}
|
|
if (!created) {
|
|
var errCode = FS.mayOpen(node, flags);
|
|
if (errCode) {
|
|
throw new FS.ErrnoError(errCode);
|
|
}
|
|
}
|
|
if (flags & 512 && !created) {
|
|
FS.truncate(node, 0);
|
|
}
|
|
flags &= ~(128 | 512 | 131072);
|
|
var stream = FS.createStream({
|
|
node: node,
|
|
path: FS.getPath(node),
|
|
flags: flags,
|
|
seekable: true,
|
|
position: 0,
|
|
stream_ops: node.stream_ops,
|
|
ungotten: [],
|
|
error: false,
|
|
});
|
|
if (stream.stream_ops.open) {
|
|
stream.stream_ops.open(stream);
|
|
}
|
|
if (Module["logReadFiles"] && !(flags & 1)) {
|
|
if (!FS.readFiles) FS.readFiles = {};
|
|
if (!(path in FS.readFiles)) {
|
|
FS.readFiles[path] = 1;
|
|
}
|
|
}
|
|
return stream;
|
|
},
|
|
close(stream) {
|
|
if (FS.isClosed(stream)) {
|
|
throw new FS.ErrnoError(8);
|
|
}
|
|
if (stream.getdents) stream.getdents = null;
|
|
try {
|
|
if (stream.stream_ops.close) {
|
|
stream.stream_ops.close(stream);
|
|
}
|
|
} catch (e) {
|
|
throw e;
|
|
} finally {
|
|
FS.closeStream(stream.fd);
|
|
}
|
|
stream.fd = null;
|
|
},
|
|
isClosed(stream) {
|
|
return stream.fd === null;
|
|
},
|
|
llseek(stream, offset, whence) {
|
|
if (FS.isClosed(stream)) {
|
|
throw new FS.ErrnoError(8);
|
|
}
|
|
if (!stream.seekable || !stream.stream_ops.llseek) {
|
|
throw new FS.ErrnoError(70);
|
|
}
|
|
if (whence != 0 && whence != 1 && whence != 2) {
|
|
throw new FS.ErrnoError(28);
|
|
}
|
|
stream.position = stream.stream_ops.llseek(stream, offset, whence);
|
|
stream.ungotten = [];
|
|
return stream.position;
|
|
},
|
|
read(stream, buffer, offset, length, position) {
|
|
if (length < 0 || position < 0) {
|
|
throw new FS.ErrnoError(28);
|
|
}
|
|
if (FS.isClosed(stream)) {
|
|
throw new FS.ErrnoError(8);
|
|
}
|
|
if ((stream.flags & 2097155) === 1) {
|
|
throw new FS.ErrnoError(8);
|
|
}
|
|
if (FS.isDir(stream.node.mode)) {
|
|
throw new FS.ErrnoError(31);
|
|
}
|
|
if (!stream.stream_ops.read) {
|
|
throw new FS.ErrnoError(28);
|
|
}
|
|
var seeking = typeof position != "undefined";
|
|
if (!seeking) {
|
|
position = stream.position;
|
|
} else if (!stream.seekable) {
|
|
throw new FS.ErrnoError(70);
|
|
}
|
|
var bytesRead = stream.stream_ops.read(
|
|
stream,
|
|
buffer,
|
|
offset,
|
|
length,
|
|
position,
|
|
);
|
|
if (!seeking) stream.position += bytesRead;
|
|
return bytesRead;
|
|
},
|
|
write(stream, buffer, offset, length, position, canOwn) {
|
|
if (length < 0 || position < 0) {
|
|
throw new FS.ErrnoError(28);
|
|
}
|
|
if (FS.isClosed(stream)) {
|
|
throw new FS.ErrnoError(8);
|
|
}
|
|
if ((stream.flags & 2097155) === 0) {
|
|
throw new FS.ErrnoError(8);
|
|
}
|
|
if (FS.isDir(stream.node.mode)) {
|
|
throw new FS.ErrnoError(31);
|
|
}
|
|
if (!stream.stream_ops.write) {
|
|
throw new FS.ErrnoError(28);
|
|
}
|
|
if (stream.seekable && stream.flags & 1024) {
|
|
FS.llseek(stream, 0, 2);
|
|
}
|
|
var seeking = typeof position != "undefined";
|
|
if (!seeking) {
|
|
position = stream.position;
|
|
} else if (!stream.seekable) {
|
|
throw new FS.ErrnoError(70);
|
|
}
|
|
var bytesWritten = stream.stream_ops.write(
|
|
stream,
|
|
buffer,
|
|
offset,
|
|
length,
|
|
position,
|
|
canOwn,
|
|
);
|
|
if (!seeking) stream.position += bytesWritten;
|
|
return bytesWritten;
|
|
},
|
|
allocate(stream, offset, length) {
|
|
if (FS.isClosed(stream)) {
|
|
throw new FS.ErrnoError(8);
|
|
}
|
|
if (offset < 0 || length <= 0) {
|
|
throw new FS.ErrnoError(28);
|
|
}
|
|
if ((stream.flags & 2097155) === 0) {
|
|
throw new FS.ErrnoError(8);
|
|
}
|
|
if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {
|
|
throw new FS.ErrnoError(43);
|
|
}
|
|
if (!stream.stream_ops.allocate) {
|
|
throw new FS.ErrnoError(138);
|
|
}
|
|
stream.stream_ops.allocate(stream, offset, length);
|
|
},
|
|
mmap(stream, length, position, prot, flags) {
|
|
if (
|
|
(prot & 2) !== 0 &&
|
|
(flags & 2) === 0 &&
|
|
(stream.flags & 2097155) !== 2
|
|
) {
|
|
throw new FS.ErrnoError(2);
|
|
}
|
|
if ((stream.flags & 2097155) === 1) {
|
|
throw new FS.ErrnoError(2);
|
|
}
|
|
if (!stream.stream_ops.mmap) {
|
|
throw new FS.ErrnoError(43);
|
|
}
|
|
return stream.stream_ops.mmap(stream, length, position, prot, flags);
|
|
},
|
|
msync(stream, buffer, offset, length, mmapFlags) {
|
|
if (!stream.stream_ops.msync) {
|
|
return 0;
|
|
}
|
|
return stream.stream_ops.msync(
|
|
stream,
|
|
buffer,
|
|
offset,
|
|
length,
|
|
mmapFlags,
|
|
);
|
|
},
|
|
munmap: (stream) => 0,
|
|
ioctl(stream, cmd, arg) {
|
|
if (!stream.stream_ops.ioctl) {
|
|
throw new FS.ErrnoError(59);
|
|
}
|
|
return stream.stream_ops.ioctl(stream, cmd, arg);
|
|
},
|
|
readFile(path, opts = {}) {
|
|
opts.flags = opts.flags || 0;
|
|
opts.encoding = opts.encoding || "binary";
|
|
if (opts.encoding !== "utf8" && opts.encoding !== "binary") {
|
|
throw new Error(`Invalid encoding type "${opts.encoding}"`);
|
|
}
|
|
var ret;
|
|
var stream = FS.open(path, opts.flags);
|
|
var stat = FS.stat(path);
|
|
var length = stat.size;
|
|
var buf = new Uint8Array(length);
|
|
FS.read(stream, buf, 0, length, 0);
|
|
if (opts.encoding === "utf8") {
|
|
ret = UTF8ArrayToString(buf, 0);
|
|
} else if (opts.encoding === "binary") {
|
|
ret = buf;
|
|
}
|
|
FS.close(stream);
|
|
return ret;
|
|
},
|
|
writeFile(path, data, opts = {}) {
|
|
opts.flags = opts.flags || 577;
|
|
var stream = FS.open(path, opts.flags, opts.mode);
|
|
if (typeof data == "string") {
|
|
var buf = new Uint8Array(lengthBytesUTF8(data) + 1);
|
|
var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
|
|
FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);
|
|
} else if (ArrayBuffer.isView(data)) {
|
|
FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);
|
|
} else {
|
|
throw new Error("Unsupported data type");
|
|
}
|
|
FS.close(stream);
|
|
},
|
|
cwd: () => FS.currentPath,
|
|
chdir(path) {
|
|
var lookup = FS.lookupPath(path, { follow: true });
|
|
if (lookup.node === null) {
|
|
throw new FS.ErrnoError(44);
|
|
}
|
|
if (!FS.isDir(lookup.node.mode)) {
|
|
throw new FS.ErrnoError(54);
|
|
}
|
|
var errCode = FS.nodePermissions(lookup.node, "x");
|
|
if (errCode) {
|
|
throw new FS.ErrnoError(errCode);
|
|
}
|
|
FS.currentPath = lookup.path;
|
|
},
|
|
createDefaultDirectories() {
|
|
FS.mkdir("/tmp");
|
|
FS.mkdir("/home");
|
|
FS.mkdir("/home/web_user");
|
|
},
|
|
createDefaultDevices() {
|
|
FS.mkdir("/dev");
|
|
FS.registerDevice(FS.makedev(1, 3), {
|
|
read: () => 0,
|
|
write: (stream, buffer, offset, length, pos) => length,
|
|
});
|
|
FS.mkdev("/dev/null", FS.makedev(1, 3));
|
|
TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
|
|
TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
|
|
FS.mkdev("/dev/tty", FS.makedev(5, 0));
|
|
FS.mkdev("/dev/tty1", FS.makedev(6, 0));
|
|
var 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);
|
|
},
|
|
ensureErrnoError() {
|
|
if (FS.ErrnoError) return;
|
|
FS.ErrnoError = function ErrnoError(errno, node) {
|
|
this.name = "ErrnoError";
|
|
this.node = node;
|
|
this.setErrno = function (errno) {
|
|
this.errno = errno;
|
|
};
|
|
this.setErrno(errno);
|
|
this.message = "FS error";
|
|
};
|
|
FS.ErrnoError.prototype = new Error();
|
|
FS.ErrnoError.prototype.constructor = FS.ErrnoError;
|
|
[44].forEach((code) => {
|
|
FS.genericErrors[code] = new FS.ErrnoError(code);
|
|
FS.genericErrors[code].stack = "<generic error, no stack>";
|
|
});
|
|
},
|
|
staticInit() {
|
|
FS.ensureErrnoError();
|
|
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;
|
|
FS.ensureErrnoError();
|
|
Module["stdin"] = input || Module["stdin"];
|
|
Module["stdout"] = output || Module["stdout"];
|
|
Module["stderr"] = error || Module["stderr"];
|
|
FS.createStandardStreams();
|
|
},
|
|
quit() {
|
|
FS.init.initialized = false;
|
|
for (var i = 0; i < FS.streams.length; i++) {
|
|
var stream = FS.streams[i];
|
|
if (!stream) {
|
|
continue;
|
|
}
|
|
FS.close(stream);
|
|
}
|
|
},
|
|
findObject(path, dontResolveLastLink) {
|
|
var ret = FS.analyzePath(path, dontResolveLastLink);
|
|
if (!ret.exists) {
|
|
return null;
|
|
}
|
|
return ret.object;
|
|
},
|
|
analyzePath(path, dontResolveLastLink) {
|
|
try {
|
|
var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
|
|
path = lookup.path;
|
|
} catch (e) {}
|
|
var ret = {
|
|
isRoot: false,
|
|
exists: false,
|
|
error: 0,
|
|
name: null,
|
|
path: null,
|
|
object: null,
|
|
parentExists: false,
|
|
parentPath: null,
|
|
parentObject: null,
|
|
};
|
|
try {
|
|
var lookup = FS.lookupPath(path, { parent: true });
|
|
ret.parentExists = true;
|
|
ret.parentPath = lookup.path;
|
|
ret.parentObject = lookup.node;
|
|
ret.name = PATH.basename(path);
|
|
lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
|
|
ret.exists = true;
|
|
ret.path = lookup.path;
|
|
ret.object = lookup.node;
|
|
ret.name = lookup.node.name;
|
|
ret.isRoot = lookup.path === "/";
|
|
} catch (e) {
|
|
ret.error = e.errno;
|
|
}
|
|
return ret;
|
|
},
|
|
createPath(parent, path, canRead, canWrite) {
|
|
parent = typeof parent == "string" ? parent : FS.getPath(parent);
|
|
var parts = path.split("/").reverse();
|
|
while (parts.length) {
|
|
var part = parts.pop();
|
|
if (!part) continue;
|
|
var current = PATH.join2(parent, part);
|
|
try {
|
|
FS.mkdir(current);
|
|
} catch (e) {}
|
|
parent = current;
|
|
}
|
|
return current;
|
|
},
|
|
createFile(parent, name, properties, canRead, canWrite) {
|
|
var path = PATH.join2(
|
|
typeof parent == "string" ? parent : FS.getPath(parent),
|
|
name,
|
|
);
|
|
var mode = FS_getMode(canRead, canWrite);
|
|
return FS.create(path, mode);
|
|
},
|
|
createDataFile(parent, name, data, canRead, canWrite, canOwn) {
|
|
var path = name;
|
|
if (parent) {
|
|
parent = typeof parent == "string" ? parent : FS.getPath(parent);
|
|
path = name ? PATH.join2(parent, name) : parent;
|
|
}
|
|
var mode = FS_getMode(canRead, canWrite);
|
|
var node = FS.create(path, mode);
|
|
if (data) {
|
|
if (typeof data == "string") {
|
|
var arr = new Array(data.length);
|
|
for (var i = 0, len = data.length; i < len; ++i)
|
|
arr[i] = data.charCodeAt(i);
|
|
data = arr;
|
|
}
|
|
FS.chmod(node, mode | 146);
|
|
var stream = FS.open(node, 577);
|
|
FS.write(stream, data, 0, data.length, 0, canOwn);
|
|
FS.close(stream);
|
|
FS.chmod(node, mode);
|
|
}
|
|
return node;
|
|
},
|
|
createDevice(parent, name, input, output) {
|
|
var path = PATH.join2(
|
|
typeof parent == "string" ? parent : FS.getPath(parent),
|
|
name,
|
|
);
|
|
var mode = FS_getMode(!!input, !!output);
|
|
if (!FS.createDevice.major) FS.createDevice.major = 64;
|
|
var dev = FS.makedev(FS.createDevice.major++, 0);
|
|
FS.registerDevice(dev, {
|
|
open(stream) {
|
|
stream.seekable = false;
|
|
},
|
|
close(stream) {
|
|
if (output && output.buffer && output.buffer.length) {
|
|
output(10);
|
|
}
|
|
},
|
|
read(stream, buffer, offset, length, pos) {
|
|
var bytesRead = 0;
|
|
for (var i = 0; i < length; i++) {
|
|
var result;
|
|
try {
|
|
result = input();
|
|
} catch (e) {
|
|
throw new FS.ErrnoError(29);
|
|
}
|
|
if (result === undefined && bytesRead === 0) {
|
|
throw new FS.ErrnoError(6);
|
|
}
|
|
if (result === null || result === undefined) break;
|
|
bytesRead++;
|
|
buffer[offset + i] = result;
|
|
}
|
|
if (bytesRead) {
|
|
stream.node.timestamp = Date.now();
|
|
}
|
|
return bytesRead;
|
|
},
|
|
write(stream, buffer, offset, length, pos) {
|
|
for (var i = 0; i < length; i++) {
|
|
try {
|
|
output(buffer[offset + i]);
|
|
} catch (e) {
|
|
throw new FS.ErrnoError(29);
|
|
}
|
|
}
|
|
if (length) {
|
|
stream.node.timestamp = Date.now();
|
|
}
|
|
return i;
|
|
},
|
|
});
|
|
return FS.mkdev(path, mode, dev);
|
|
},
|
|
forceLoadFile(obj) {
|
|
if (obj.isDevice || obj.isFolder || obj.link || obj.contents)
|
|
return true;
|
|
if (typeof XMLHttpRequest != "undefined") {
|
|
throw new Error(
|
|
"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.",
|
|
);
|
|
} else if (read_) {
|
|
try {
|
|
obj.contents = intArrayFromString(read_(obj.url), true);
|
|
obj.usedBytes = obj.contents.length;
|
|
} catch (e) {
|
|
throw new FS.ErrnoError(29);
|
|
}
|
|
} else {
|
|
throw new Error("Cannot load without read() or XMLHttpRequest.");
|
|
}
|
|
},
|
|
createLazyFile(parent, name, url, canRead, canWrite) {
|
|
function LazyUint8Array() {
|
|
this.lengthKnown = false;
|
|
this.chunks = [];
|
|
}
|
|
LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
|
|
if (idx > this.length - 1 || idx < 0) {
|
|
return undefined;
|
|
}
|
|
var chunkOffset = idx % this.chunkSize;
|
|
var chunkNum = (idx / this.chunkSize) | 0;
|
|
return this.getter(chunkNum)[chunkOffset];
|
|
};
|
|
LazyUint8Array.prototype.setDataGetter =
|
|
function LazyUint8Array_setDataGetter(getter) {
|
|
this.getter = getter;
|
|
};
|
|
LazyUint8Array.prototype.cacheLength =
|
|
function LazyUint8Array_cacheLength() {
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open("HEAD", url, false);
|
|
xhr.send(null);
|
|
if (
|
|
!((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304)
|
|
)
|
|
throw new Error(
|
|
"Couldn't load " + url + ". Status: " + xhr.status,
|
|
);
|
|
var datalength = Number(xhr.getResponseHeader("Content-length"));
|
|
var header;
|
|
var hasByteServing =
|
|
(header = xhr.getResponseHeader("Accept-Ranges")) &&
|
|
header === "bytes";
|
|
var usesGzip =
|
|
(header = xhr.getResponseHeader("Content-Encoding")) &&
|
|
header === "gzip";
|
|
var chunkSize = 1024 * 1024;
|
|
if (!hasByteServing) chunkSize = datalength;
|
|
var doXHR = (from, to) => {
|
|
if (from > to)
|
|
throw new Error(
|
|
"invalid range (" +
|
|
from +
|
|
", " +
|
|
to +
|
|
") or no bytes requested!",
|
|
);
|
|
if (to > datalength - 1)
|
|
throw new Error(
|
|
"only " + datalength + " bytes available! programmer error!",
|
|
);
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open("GET", url, false);
|
|
if (datalength !== chunkSize)
|
|
xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
|
|
xhr.responseType = "arraybuffer";
|
|
if (xhr.overrideMimeType) {
|
|
xhr.overrideMimeType("text/plain; charset=x-user-defined");
|
|
}
|
|
xhr.send(null);
|
|
if (
|
|
!((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304)
|
|
)
|
|
throw new Error(
|
|
"Couldn't load " + url + ". Status: " + xhr.status,
|
|
);
|
|
if (xhr.response !== undefined) {
|
|
return new Uint8Array(xhr.response || []);
|
|
}
|
|
return intArrayFromString(xhr.responseText || "", true);
|
|
};
|
|
var lazyArray = this;
|
|
lazyArray.setDataGetter((chunkNum) => {
|
|
var start = chunkNum * chunkSize;
|
|
var end = (chunkNum + 1) * chunkSize - 1;
|
|
end = Math.min(end, datalength - 1);
|
|
if (typeof lazyArray.chunks[chunkNum] == "undefined") {
|
|
lazyArray.chunks[chunkNum] = doXHR(start, end);
|
|
}
|
|
if (typeof lazyArray.chunks[chunkNum] == "undefined")
|
|
throw new Error("doXHR failed!");
|
|
return lazyArray.chunks[chunkNum];
|
|
});
|
|
if (usesGzip || !datalength) {
|
|
chunkSize = datalength = 1;
|
|
datalength = this.getter(0).length;
|
|
chunkSize = datalength;
|
|
out(
|
|
"LazyFiles on gzip forces download of the whole file when length is accessed",
|
|
);
|
|
}
|
|
this._length = datalength;
|
|
this._chunkSize = chunkSize;
|
|
this.lengthKnown = true;
|
|
};
|
|
if (typeof XMLHttpRequest != "undefined") {
|
|
if (!ENVIRONMENT_IS_WORKER)
|
|
throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
|
|
var lazyArray = new LazyUint8Array();
|
|
Object.defineProperties(lazyArray, {
|
|
length: {
|
|
get: function () {
|
|
if (!this.lengthKnown) {
|
|
this.cacheLength();
|
|
}
|
|
return this._length;
|
|
},
|
|
},
|
|
chunkSize: {
|
|
get: function () {
|
|
if (!this.lengthKnown) {
|
|
this.cacheLength();
|
|
}
|
|
return this._chunkSize;
|
|
},
|
|
},
|
|
});
|
|
var properties = { isDevice: false, contents: lazyArray };
|
|
} else {
|
|
var properties = { isDevice: false, url: url };
|
|
}
|
|
var node = FS.createFile(parent, name, properties, canRead, canWrite);
|
|
if (properties.contents) {
|
|
node.contents = properties.contents;
|
|
} else if (properties.url) {
|
|
node.contents = null;
|
|
node.url = properties.url;
|
|
}
|
|
Object.defineProperties(node, {
|
|
usedBytes: {
|
|
get: function () {
|
|
return this.contents.length;
|
|
},
|
|
},
|
|
});
|
|
var stream_ops = {};
|
|
var keys = Object.keys(node.stream_ops);
|
|
keys.forEach((key) => {
|
|
var fn = node.stream_ops[key];
|
|
stream_ops[key] = function forceLoadLazyFile() {
|
|
FS.forceLoadFile(node);
|
|
return fn.apply(null, arguments);
|
|
};
|
|
});
|
|
function writeChunks(stream, buffer, offset, length, position) {
|
|
var contents = stream.node.contents;
|
|
if (position >= contents.length) return 0;
|
|
var size = Math.min(contents.length - position, length);
|
|
if (contents.slice) {
|
|
for (var i = 0; i < size; i++) {
|
|
buffer[offset + i] = contents[position + i];
|
|
}
|
|
} else {
|
|
for (var i = 0; i < size; i++) {
|
|
buffer[offset + i] = contents.get(position + i);
|
|
}
|
|
}
|
|
return size;
|
|
}
|
|
stream_ops.read = (stream, buffer, offset, length, position) => {
|
|
FS.forceLoadFile(node);
|
|
return writeChunks(stream, buffer, offset, length, position);
|
|
};
|
|
stream_ops.mmap = (stream, length, position, prot, flags) => {
|
|
FS.forceLoadFile(node);
|
|
var ptr = mmapAlloc(length);
|
|
if (!ptr) {
|
|
throw new FS.ErrnoError(48);
|
|
}
|
|
writeChunks(stream, GROWABLE_HEAP_I8(), ptr, length, position);
|
|
return { ptr: ptr, allocated: true };
|
|
};
|
|
node.stream_ops = stream_ops;
|
|
return node;
|
|
},
|
|
};
|
|
var UTF8ToString = (ptr, maxBytesToRead) => {
|
|
ptr >>>= 0;
|
|
return ptr
|
|
? UTF8ArrayToString(GROWABLE_HEAP_U8(), 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) {
|
|
try {
|
|
var stat = func(path);
|
|
} catch (e) {
|
|
if (
|
|
e &&
|
|
e.node &&
|
|
PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))
|
|
) {
|
|
return -54;
|
|
}
|
|
throw e;
|
|
}
|
|
GROWABLE_HEAP_I32()[(buf >>> 2) >>> 0] = stat.dev;
|
|
GROWABLE_HEAP_I32()[((buf + 4) >>> 2) >>> 0] = stat.mode;
|
|
GROWABLE_HEAP_U32()[((buf + 8) >>> 2) >>> 0] = stat.nlink;
|
|
GROWABLE_HEAP_I32()[((buf + 12) >>> 2) >>> 0] = stat.uid;
|
|
GROWABLE_HEAP_I32()[((buf + 16) >>> 2) >>> 0] = stat.gid;
|
|
GROWABLE_HEAP_I32()[((buf + 20) >>> 2) >>> 0] = 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),
|
|
]),
|
|
(GROWABLE_HEAP_I32()[((buf + 24) >>> 2) >>> 0] = tempI64[0]),
|
|
(GROWABLE_HEAP_I32()[((buf + 28) >>> 2) >>> 0] = tempI64[1]);
|
|
GROWABLE_HEAP_I32()[((buf + 32) >>> 2) >>> 0] = 4096;
|
|
GROWABLE_HEAP_I32()[((buf + 36) >>> 2) >>> 0] = 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),
|
|
]),
|
|
(GROWABLE_HEAP_I32()[((buf + 40) >>> 2) >>> 0] = tempI64[0]),
|
|
(GROWABLE_HEAP_I32()[((buf + 44) >>> 2) >>> 0] = tempI64[1]);
|
|
GROWABLE_HEAP_U32()[((buf + 48) >>> 2) >>> 0] = (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),
|
|
]),
|
|
(GROWABLE_HEAP_I32()[((buf + 56) >>> 2) >>> 0] = tempI64[0]),
|
|
(GROWABLE_HEAP_I32()[((buf + 60) >>> 2) >>> 0] = tempI64[1]);
|
|
GROWABLE_HEAP_U32()[((buf + 64) >>> 2) >>> 0] = (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),
|
|
]),
|
|
(GROWABLE_HEAP_I32()[((buf + 72) >>> 2) >>> 0] = tempI64[0]),
|
|
(GROWABLE_HEAP_I32()[((buf + 76) >>> 2) >>> 0] = tempI64[1]);
|
|
GROWABLE_HEAP_U32()[((buf + 80) >>> 2) >>> 0] = (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),
|
|
]),
|
|
(GROWABLE_HEAP_I32()[((buf + 88) >>> 2) >>> 0] = tempI64[0]),
|
|
(GROWABLE_HEAP_I32()[((buf + 92) >>> 2) >>> 0] = 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 = GROWABLE_HEAP_U8().slice(addr, addr + len);
|
|
FS.msync(stream, buffer, offset, len, flags);
|
|
},
|
|
varargs: undefined,
|
|
get() {
|
|
var ret = GROWABLE_HEAP_I32()[(+SYSCALLS.varargs >>> 2) >>> 0];
|
|
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 _proc_exit(code) {
|
|
if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(0, 1, code);
|
|
EXITSTATUS = code;
|
|
if (!keepRuntimeAlive()) {
|
|
PThread.terminateAllThreads();
|
|
if (Module["onExit"]) Module["onExit"](code);
|
|
ABORT = true;
|
|
}
|
|
quit_(code, new ExitStatus(code));
|
|
}
|
|
var exitJS = (status, implicit) => {
|
|
EXITSTATUS = status;
|
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
exitOnMainThread(status);
|
|
throw "unwind";
|
|
}
|
|
_proc_exit(status);
|
|
};
|
|
var _exit = exitJS;
|
|
var handleException = (e) => {
|
|
if (e instanceof ExitStatus || e == "unwind") {
|
|
return EXITSTATUS;
|
|
}
|
|
quit_(1, e);
|
|
};
|
|
var PThread = {
|
|
unusedWorkers: [],
|
|
runningWorkers: [],
|
|
tlsInitFunctions: [],
|
|
pthreads: {},
|
|
init() {
|
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
PThread.initWorker();
|
|
} else {
|
|
PThread.initMainThread();
|
|
}
|
|
},
|
|
initMainThread() {
|
|
var pthreadPoolSize = 10;
|
|
while (pthreadPoolSize--) {
|
|
PThread.allocateUnusedWorker();
|
|
}
|
|
addOnPreRun(() => {
|
|
addRunDependency("loading-workers");
|
|
PThread.loadWasmModuleToAllWorkers(() =>
|
|
removeRunDependency("loading-workers"),
|
|
);
|
|
});
|
|
},
|
|
initWorker() {
|
|
noExitRuntime = false;
|
|
},
|
|
setExitStatus: (status) => {
|
|
EXITSTATUS = status;
|
|
},
|
|
terminateAllThreads__deps: ["$terminateWorker"],
|
|
terminateAllThreads: () => {
|
|
for (var worker of PThread.runningWorkers) {
|
|
terminateWorker(worker);
|
|
}
|
|
for (var worker of PThread.unusedWorkers) {
|
|
terminateWorker(worker);
|
|
}
|
|
PThread.unusedWorkers = [];
|
|
PThread.runningWorkers = [];
|
|
PThread.pthreads = [];
|
|
},
|
|
returnWorkerToPool: (worker) => {
|
|
var pthread_ptr = worker.pthread_ptr;
|
|
delete PThread.pthreads[pthread_ptr];
|
|
PThread.unusedWorkers.push(worker);
|
|
PThread.runningWorkers.splice(
|
|
PThread.runningWorkers.indexOf(worker),
|
|
1,
|
|
);
|
|
worker.pthread_ptr = 0;
|
|
__emscripten_thread_free_data(pthread_ptr);
|
|
},
|
|
receiveObjectTransfer(data) {},
|
|
threadInitTLS() {
|
|
PThread.tlsInitFunctions.forEach((f) => f());
|
|
},
|
|
loadWasmModuleToWorker: (worker) =>
|
|
new Promise((onFinishedLoading) => {
|
|
worker.onmessage = (e) => {
|
|
var d = e["data"];
|
|
var cmd = d["cmd"];
|
|
if (d["targetThread"] && d["targetThread"] != _pthread_self()) {
|
|
var targetWorker = PThread.pthreads[d["targetThread"]];
|
|
if (targetWorker) {
|
|
targetWorker.postMessage(d, d["transferList"]);
|
|
} else {
|
|
err(
|
|
`Internal error! Worker sent a message "${cmd}" to target pthread ${d["targetThread"]}, but that thread no longer exists!`,
|
|
);
|
|
}
|
|
return;
|
|
}
|
|
if (cmd === "checkMailbox") {
|
|
checkMailbox();
|
|
} else if (cmd === "spawnThread") {
|
|
spawnThread(d);
|
|
} else if (cmd === "cleanupThread") {
|
|
cleanupThread(d["thread"]);
|
|
} else if (cmd === "killThread") {
|
|
killThread(d["thread"]);
|
|
} else if (cmd === "cancelThread") {
|
|
cancelThread(d["thread"]);
|
|
} else if (cmd === "loaded") {
|
|
worker.loaded = true;
|
|
if (ENVIRONMENT_IS_NODE && !worker.pthread_ptr) {
|
|
worker.unref();
|
|
}
|
|
onFinishedLoading(worker);
|
|
} else if (cmd === "alert") {
|
|
alert(`Thread ${d["threadId"]}: ${d["text"]}`);
|
|
} else if (d.target === "setimmediate") {
|
|
worker.postMessage(d);
|
|
} else if (cmd === "callHandler") {
|
|
Module[d["handler"]](...d["args"]);
|
|
} else if (cmd) {
|
|
err(`worker sent an unknown command ${cmd}`);
|
|
}
|
|
};
|
|
worker.onerror = (e) => {
|
|
var message = "worker sent an error!";
|
|
err(`${message} ${e.filename}:${e.lineno}: ${e.message}`);
|
|
throw e;
|
|
};
|
|
if (ENVIRONMENT_IS_NODE) {
|
|
worker.on("message", (data) => worker.onmessage({ data: data }));
|
|
worker.on("error", (e) => worker.onerror(e));
|
|
}
|
|
var handlers = [];
|
|
var knownHandlers = ["onExit", "onAbort", "print", "printErr"];
|
|
for (var handler of knownHandlers) {
|
|
if (Module.hasOwnProperty(handler)) {
|
|
handlers.push(handler);
|
|
}
|
|
}
|
|
worker.postMessage({
|
|
cmd: "load",
|
|
handlers: handlers,
|
|
urlOrBlob: Module["mainScriptUrlOrBlob"] || _scriptDir,
|
|
wasmMemory: wasmMemory,
|
|
wasmModule: wasmModule,
|
|
});
|
|
}),
|
|
loadWasmModuleToAllWorkers(onMaybeReady) {
|
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
return onMaybeReady();
|
|
}
|
|
let pthreadPoolReady = Promise.all(
|
|
PThread.unusedWorkers.map(PThread.loadWasmModuleToWorker),
|
|
);
|
|
pthreadPoolReady.then(onMaybeReady);
|
|
},
|
|
allocateUnusedWorker() {
|
|
var worker;
|
|
var pthreadMainJs = locateFile("emHdBindings.worker.js");
|
|
worker = new Worker(pthreadMainJs);
|
|
PThread.unusedWorkers.push(worker);
|
|
},
|
|
getNewWorker() {
|
|
if (PThread.unusedWorkers.length == 0) {
|
|
PThread.allocateUnusedWorker();
|
|
PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0]);
|
|
}
|
|
return PThread.unusedWorkers.pop();
|
|
},
|
|
};
|
|
Module["PThread"] = PThread;
|
|
var callRuntimeCallbacks = (callbacks) => {
|
|
while (callbacks.length > 0) {
|
|
callbacks.shift()(Module);
|
|
}
|
|
};
|
|
var establishStackSpace = () => {
|
|
var pthread_ptr = _pthread_self();
|
|
var stackHigh = GROWABLE_HEAP_U32()[((pthread_ptr + 52) >>> 2) >>> 0];
|
|
var stackSize = GROWABLE_HEAP_U32()[((pthread_ptr + 56) >>> 2) >>> 0];
|
|
var stackLow = stackHigh - stackSize;
|
|
_emscripten_stack_set_limits(stackHigh, stackLow);
|
|
stackRestore(stackHigh);
|
|
};
|
|
Module["establishStackSpace"] = establishStackSpace;
|
|
function exitOnMainThread(returnCode) {
|
|
if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(1, 0, returnCode);
|
|
_exit(returnCode);
|
|
}
|
|
var invokeEntryPoint = (ptr, arg) => {
|
|
var result = ((a1) => dynCall_ii.apply(null, [ptr, a1]))(arg);
|
|
function finish(result) {
|
|
if (keepRuntimeAlive()) {
|
|
PThread.setExitStatus(result);
|
|
} else {
|
|
__emscripten_thread_exit(result);
|
|
}
|
|
}
|
|
finish(result);
|
|
};
|
|
Module["invokeEntryPoint"] = invokeEntryPoint;
|
|
var noExitRuntime = Module["noExitRuntime"] || true;
|
|
var registerTLSInit = (tlsInitFunc) => {
|
|
PThread.tlsInitFunctions.push(tlsInitFunc);
|
|
};
|
|
var convertI32PairToI53Checked = (lo, hi) =>
|
|
(hi + 2097152) >>> 0 < 4194305 - !!lo
|
|
? (lo >>> 0) + hi * 4294967296
|
|
: NaN;
|
|
var ___call_sighandler = function (fp, sig) {
|
|
fp >>>= 0;
|
|
return ((a1) => dynCall_vi.apply(null, [fp, a1]))(sig);
|
|
};
|
|
var exceptionCaught = [];
|
|
var uncaughtExceptionCount = 0;
|
|
function ___cxa_begin_catch(ptr) {
|
|
ptr >>>= 0;
|
|
var info = new ExceptionInfo(ptr);
|
|
if (!info.get_caught()) {
|
|
info.set_caught(true);
|
|
uncaughtExceptionCount--;
|
|
}
|
|
info.set_rethrown(false);
|
|
exceptionCaught.push(info);
|
|
___cxa_increment_exception_refcount(info.excPtr);
|
|
return info.get_exception_ptr();
|
|
}
|
|
var exceptionLast = 0;
|
|
var ___cxa_end_catch = () => {
|
|
_setThrew(0, 0);
|
|
var info = exceptionCaught.pop();
|
|
___cxa_decrement_exception_refcount(info.excPtr);
|
|
exceptionLast = 0;
|
|
};
|
|
function ExceptionInfo(excPtr) {
|
|
this.excPtr = excPtr;
|
|
this.ptr = excPtr - 24;
|
|
this.set_type = function (type) {
|
|
GROWABLE_HEAP_U32()[((this.ptr + 4) >>> 2) >>> 0] = type;
|
|
};
|
|
this.get_type = function () {
|
|
return GROWABLE_HEAP_U32()[((this.ptr + 4) >>> 2) >>> 0];
|
|
};
|
|
this.set_destructor = function (destructor) {
|
|
GROWABLE_HEAP_U32()[((this.ptr + 8) >>> 2) >>> 0] = destructor;
|
|
};
|
|
this.get_destructor = function () {
|
|
return GROWABLE_HEAP_U32()[((this.ptr + 8) >>> 2) >>> 0];
|
|
};
|
|
this.set_caught = function (caught) {
|
|
caught = caught ? 1 : 0;
|
|
GROWABLE_HEAP_I8()[((this.ptr + 12) >>> 0) >>> 0] = caught;
|
|
};
|
|
this.get_caught = function () {
|
|
return GROWABLE_HEAP_I8()[((this.ptr + 12) >>> 0) >>> 0] != 0;
|
|
};
|
|
this.set_rethrown = function (rethrown) {
|
|
rethrown = rethrown ? 1 : 0;
|
|
GROWABLE_HEAP_I8()[((this.ptr + 13) >>> 0) >>> 0] = rethrown;
|
|
};
|
|
this.get_rethrown = function () {
|
|
return GROWABLE_HEAP_I8()[((this.ptr + 13) >>> 0) >>> 0] != 0;
|
|
};
|
|
this.init = function (type, destructor) {
|
|
this.set_adjusted_ptr(0);
|
|
this.set_type(type);
|
|
this.set_destructor(destructor);
|
|
};
|
|
this.set_adjusted_ptr = function (adjustedPtr) {
|
|
GROWABLE_HEAP_U32()[((this.ptr + 16) >>> 2) >>> 0] = adjustedPtr;
|
|
};
|
|
this.get_adjusted_ptr = function () {
|
|
return GROWABLE_HEAP_U32()[((this.ptr + 16) >>> 2) >>> 0];
|
|
};
|
|
this.get_exception_ptr = function () {
|
|
var isPointer = ___cxa_is_pointer_type(this.get_type());
|
|
if (isPointer) {
|
|
return GROWABLE_HEAP_U32()[(this.excPtr >>> 2) >>> 0];
|
|
}
|
|
var adjusted = this.get_adjusted_ptr();
|
|
if (adjusted !== 0) return adjusted;
|
|
return this.excPtr;
|
|
};
|
|
}
|
|
function ___resumeException(ptr) {
|
|
ptr >>>= 0;
|
|
if (!exceptionLast) {
|
|
exceptionLast = ptr;
|
|
}
|
|
throw exceptionLast;
|
|
}
|
|
var findMatchingCatch = (args) => {
|
|
var thrown = exceptionLast;
|
|
if (!thrown) {
|
|
setTempRet0(0);
|
|
return 0;
|
|
}
|
|
var info = new ExceptionInfo(thrown);
|
|
info.set_adjusted_ptr(thrown);
|
|
var thrownType = info.get_type();
|
|
if (!thrownType) {
|
|
setTempRet0(0);
|
|
return thrown;
|
|
}
|
|
for (var arg in args) {
|
|
var caughtType = args[arg];
|
|
if (caughtType === 0 || caughtType === thrownType) {
|
|
break;
|
|
}
|
|
var adjusted_ptr_addr = info.ptr + 16;
|
|
if (___cxa_can_catch(caughtType, thrownType, adjusted_ptr_addr)) {
|
|
setTempRet0(caughtType);
|
|
return thrown;
|
|
}
|
|
}
|
|
setTempRet0(thrownType);
|
|
return thrown;
|
|
};
|
|
function ___cxa_find_matching_catch_2() {
|
|
return findMatchingCatch([]);
|
|
}
|
|
function ___cxa_find_matching_catch_3(arg0) {
|
|
arg0 >>>= 0;
|
|
return findMatchingCatch([arg0]);
|
|
}
|
|
function ___cxa_find_matching_catch_4(arg0, arg1) {
|
|
arg0 >>>= 0;
|
|
arg1 >>>= 0;
|
|
return findMatchingCatch([arg0, arg1]);
|
|
}
|
|
function ___cxa_get_exception_ptr(ptr) {
|
|
ptr >>>= 0;
|
|
var rtn = new ExceptionInfo(ptr).get_exception_ptr();
|
|
return rtn;
|
|
}
|
|
var ___cxa_rethrow = () => {
|
|
var info = exceptionCaught.pop();
|
|
if (!info) {
|
|
abort("no exception to throw");
|
|
}
|
|
var ptr = info.excPtr;
|
|
if (!info.get_rethrown()) {
|
|
exceptionCaught.push(info);
|
|
info.set_rethrown(true);
|
|
info.set_caught(false);
|
|
uncaughtExceptionCount++;
|
|
}
|
|
exceptionLast = ptr;
|
|
throw exceptionLast;
|
|
};
|
|
function ___cxa_rethrow_primary_exception(ptr) {
|
|
ptr >>>= 0;
|
|
if (!ptr) return;
|
|
var info = new ExceptionInfo(ptr);
|
|
exceptionCaught.push(info);
|
|
info.set_rethrown(true);
|
|
___cxa_rethrow();
|
|
}
|
|
function ___cxa_throw(ptr, type, destructor) {
|
|
ptr >>>= 0;
|
|
type >>>= 0;
|
|
destructor >>>= 0;
|
|
var info = new ExceptionInfo(ptr);
|
|
info.init(type, destructor);
|
|
exceptionLast = ptr;
|
|
uncaughtExceptionCount++;
|
|
throw exceptionLast;
|
|
}
|
|
var ___cxa_uncaught_exceptions = () => uncaughtExceptionCount;
|
|
function ___emscripten_init_main_thread_js(tb) {
|
|
tb >>>= 0;
|
|
__emscripten_thread_init(
|
|
tb,
|
|
!ENVIRONMENT_IS_WORKER,
|
|
1,
|
|
!ENVIRONMENT_IS_WEB,
|
|
2097152,
|
|
false,
|
|
);
|
|
PThread.threadInitTLS();
|
|
}
|
|
function ___emscripten_thread_cleanup(thread) {
|
|
thread >>>= 0;
|
|
if (!ENVIRONMENT_IS_PTHREAD) cleanupThread(thread);
|
|
else postMessage({ cmd: "cleanupThread", thread: thread });
|
|
}
|
|
function pthreadCreateProxied(pthread_ptr, attr, startRoutine, arg) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(2, 1, pthread_ptr, attr, startRoutine, arg);
|
|
return ___pthread_create_js(pthread_ptr, attr, startRoutine, arg);
|
|
}
|
|
function ___pthread_create_js(pthread_ptr, attr, startRoutine, arg) {
|
|
pthread_ptr >>>= 0;
|
|
attr >>>= 0;
|
|
startRoutine >>>= 0;
|
|
arg >>>= 0;
|
|
if (typeof SharedArrayBuffer == "undefined") {
|
|
err(
|
|
"Current environment does not support SharedArrayBuffer, pthreads are not available!",
|
|
);
|
|
return 6;
|
|
}
|
|
var transferList = [];
|
|
var error = 0;
|
|
if (ENVIRONMENT_IS_PTHREAD && (transferList.length === 0 || error)) {
|
|
return pthreadCreateProxied(pthread_ptr, attr, startRoutine, arg);
|
|
}
|
|
if (error) return error;
|
|
var threadParams = {
|
|
startRoutine: startRoutine,
|
|
pthread_ptr: pthread_ptr,
|
|
arg: arg,
|
|
transferList: transferList,
|
|
};
|
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
threadParams.cmd = "spawnThread";
|
|
postMessage(threadParams, transferList);
|
|
return 0;
|
|
}
|
|
return spawnThread(threadParams);
|
|
}
|
|
function ___syscall_chmod(path, mode) {
|
|
if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(3, 1, path, mode);
|
|
path >>>= 0;
|
|
try {
|
|
path = SYSCALLS.getStr(path);
|
|
FS.chmod(path, mode);
|
|
return 0;
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
function ___syscall_faccessat(dirfd, path, amode, flags) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(4, 1, dirfd, path, amode, flags);
|
|
path >>>= 0;
|
|
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_fadvise64(fd, offset, len, advice) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(5, 0, fd, offset, len, advice);
|
|
return 0;
|
|
}
|
|
function ___syscall_fchmod(fd, mode) {
|
|
if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(6, 1, fd, mode);
|
|
try {
|
|
FS.fchmod(fd, mode);
|
|
return 0;
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
var setErrNo = (value) => {
|
|
GROWABLE_HEAP_I32()[(___errno_location() >>> 2) >>> 0] = value;
|
|
return value;
|
|
};
|
|
function ___syscall_fcntl64(fd, cmd, varargs) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(7, 1, fd, cmd, varargs);
|
|
varargs >>>= 0;
|
|
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.createStream(stream, arg);
|
|
return newStream.fd;
|
|
}
|
|
case 1:
|
|
case 2:
|
|
return 0;
|
|
case 3:
|
|
return stream.flags;
|
|
case 4: {
|
|
var arg = SYSCALLS.get();
|
|
stream.flags |= arg;
|
|
return 0;
|
|
}
|
|
case 5: {
|
|
var arg = SYSCALLS.getp();
|
|
var offset = 0;
|
|
GROWABLE_HEAP_I16()[((arg + offset) >>> 1) >>> 0] = 2;
|
|
return 0;
|
|
}
|
|
case 6:
|
|
case 7:
|
|
return 0;
|
|
case 16:
|
|
case 8:
|
|
return -28;
|
|
case 9:
|
|
setErrNo(28);
|
|
return -1;
|
|
default: {
|
|
return -28;
|
|
}
|
|
}
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
function ___syscall_fstat64(fd, buf) {
|
|
if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(8, 1, fd, buf);
|
|
buf >>>= 0;
|
|
try {
|
|
var stream = SYSCALLS.getStreamFromFD(fd);
|
|
return SYSCALLS.doStat(FS.stat, stream.path, buf);
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
var stringToUTF8 = (str, outPtr, maxBytesToWrite) =>
|
|
stringToUTF8Array(str, GROWABLE_HEAP_U8(), outPtr, maxBytesToWrite);
|
|
function ___syscall_getcwd(buf, size) {
|
|
if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(9, 1, buf, size);
|
|
buf >>>= 0;
|
|
size >>>= 0;
|
|
try {
|
|
if (size === 0) return -28;
|
|
var cwd = FS.cwd();
|
|
var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;
|
|
if (size < cwdLengthInBytes) return -68;
|
|
stringToUTF8(cwd, buf, size);
|
|
return cwdLengthInBytes;
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
function ___syscall_getdents64(fd, dirp, count) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(10, 1, fd, dirp, count);
|
|
dirp >>>= 0;
|
|
count >>>= 0;
|
|
try {
|
|
var stream = SYSCALLS.getStreamFromFD(fd);
|
|
if (!stream.getdents) {
|
|
stream.getdents = FS.readdir(stream.path);
|
|
}
|
|
var struct_size = 280;
|
|
var pos = 0;
|
|
var off = FS.llseek(stream, 0, 1);
|
|
var idx = Math.floor(off / struct_size);
|
|
while (idx < stream.getdents.length && pos + struct_size <= count) {
|
|
var id;
|
|
var type;
|
|
var name = stream.getdents[idx];
|
|
if (name === ".") {
|
|
id = stream.node.id;
|
|
type = 4;
|
|
} else if (name === "..") {
|
|
var lookup = FS.lookupPath(stream.path, { parent: true });
|
|
id = lookup.node.id;
|
|
type = 4;
|
|
} else {
|
|
var child = FS.lookupNode(stream.node, name);
|
|
id = child.id;
|
|
type = FS.isChrdev(child.mode)
|
|
? 2
|
|
: FS.isDir(child.mode)
|
|
? 4
|
|
: FS.isLink(child.mode)
|
|
? 10
|
|
: 8;
|
|
}
|
|
(tempI64 = [
|
|
id >>> 0,
|
|
((tempDouble = id),
|
|
+Math.abs(tempDouble) >= 1
|
|
? tempDouble > 0
|
|
? +Math.floor(tempDouble / 4294967296) >>> 0
|
|
: ~~+Math.ceil(
|
|
(tempDouble - +(~~tempDouble >>> 0)) / 4294967296,
|
|
) >>> 0
|
|
: 0),
|
|
]),
|
|
(GROWABLE_HEAP_I32()[((dirp + pos) >>> 2) >>> 0] = tempI64[0]),
|
|
(GROWABLE_HEAP_I32()[((dirp + pos + 4) >>> 2) >>> 0] = tempI64[1]);
|
|
(tempI64 = [
|
|
((idx + 1) * struct_size) >>> 0,
|
|
((tempDouble = (idx + 1) * struct_size),
|
|
+Math.abs(tempDouble) >= 1
|
|
? tempDouble > 0
|
|
? +Math.floor(tempDouble / 4294967296) >>> 0
|
|
: ~~+Math.ceil(
|
|
(tempDouble - +(~~tempDouble >>> 0)) / 4294967296,
|
|
) >>> 0
|
|
: 0),
|
|
]),
|
|
(GROWABLE_HEAP_I32()[((dirp + pos + 8) >>> 2) >>> 0] = tempI64[0]),
|
|
(GROWABLE_HEAP_I32()[((dirp + pos + 12) >>> 2) >>> 0] = tempI64[1]);
|
|
GROWABLE_HEAP_I16()[((dirp + pos + 16) >>> 1) >>> 0] = 280;
|
|
GROWABLE_HEAP_I8()[((dirp + pos + 18) >>> 0) >>> 0] = type;
|
|
stringToUTF8(name, dirp + pos + 19, 256);
|
|
pos += struct_size;
|
|
idx += 1;
|
|
}
|
|
FS.llseek(stream, idx * struct_size, 0);
|
|
return pos;
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
function ___syscall_ioctl(fd, op, varargs) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(11, 1, fd, op, varargs);
|
|
varargs >>>= 0;
|
|
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();
|
|
GROWABLE_HEAP_I32()[(argp >>> 2) >>> 0] = termios.c_iflag || 0;
|
|
GROWABLE_HEAP_I32()[((argp + 4) >>> 2) >>> 0] =
|
|
termios.c_oflag || 0;
|
|
GROWABLE_HEAP_I32()[((argp + 8) >>> 2) >>> 0] =
|
|
termios.c_cflag || 0;
|
|
GROWABLE_HEAP_I32()[((argp + 12) >>> 2) >>> 0] =
|
|
termios.c_lflag || 0;
|
|
for (var i = 0; i < 32; i++) {
|
|
GROWABLE_HEAP_I8()[((argp + i + 17) >>> 0) >>> 0] =
|
|
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 = GROWABLE_HEAP_I32()[(argp >>> 2) >>> 0];
|
|
var c_oflag = GROWABLE_HEAP_I32()[((argp + 4) >>> 2) >>> 0];
|
|
var c_cflag = GROWABLE_HEAP_I32()[((argp + 8) >>> 2) >>> 0];
|
|
var c_lflag = GROWABLE_HEAP_I32()[((argp + 12) >>> 2) >>> 0];
|
|
var c_cc = [];
|
|
for (var i = 0; i < 32; i++) {
|
|
c_cc.push(GROWABLE_HEAP_I8()[((argp + i + 17) >>> 0) >>> 0]);
|
|
}
|
|
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();
|
|
GROWABLE_HEAP_I32()[(argp >>> 2) >>> 0] = 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();
|
|
GROWABLE_HEAP_I16()[(argp >>> 1) >>> 0] = winsize[0];
|
|
GROWABLE_HEAP_I16()[((argp + 2) >>> 1) >>> 0] = 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_lstat64(path, buf) {
|
|
if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(12, 1, path, buf);
|
|
path >>>= 0;
|
|
buf >>>= 0;
|
|
try {
|
|
path = SYSCALLS.getStr(path);
|
|
return SYSCALLS.doStat(FS.lstat, path, buf);
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
function ___syscall_mkdirat(dirfd, path, mode) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(13, 1, dirfd, path, mode);
|
|
path >>>= 0;
|
|
try {
|
|
path = SYSCALLS.getStr(path);
|
|
path = SYSCALLS.calculateAt(dirfd, path);
|
|
path = PATH.normalize(path);
|
|
if (path[path.length - 1] === "/")
|
|
path = path.substr(0, path.length - 1);
|
|
FS.mkdir(path, mode, 0);
|
|
return 0;
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
function ___syscall_newfstatat(dirfd, path, buf, flags) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(14, 1, dirfd, path, buf, flags);
|
|
path >>>= 0;
|
|
buf >>>= 0;
|
|
try {
|
|
path = SYSCALLS.getStr(path);
|
|
var nofollow = flags & 256;
|
|
var allowEmpty = flags & 4096;
|
|
flags = flags & ~6400;
|
|
path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);
|
|
return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf);
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
function ___syscall_openat(dirfd, path, flags, varargs) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(15, 1, dirfd, path, flags, varargs);
|
|
path >>>= 0;
|
|
varargs >>>= 0;
|
|
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;
|
|
}
|
|
}
|
|
function ___syscall_readlinkat(dirfd, path, buf, bufsize) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(16, 1, dirfd, path, buf, bufsize);
|
|
path >>>= 0;
|
|
buf >>>= 0;
|
|
bufsize >>>= 0;
|
|
try {
|
|
path = SYSCALLS.getStr(path);
|
|
path = SYSCALLS.calculateAt(dirfd, path);
|
|
if (bufsize <= 0) return -28;
|
|
var ret = FS.readlink(path);
|
|
var len = Math.min(bufsize, lengthBytesUTF8(ret));
|
|
var endChar = GROWABLE_HEAP_I8()[(buf + len) >>> 0];
|
|
stringToUTF8(ret, buf, bufsize + 1);
|
|
GROWABLE_HEAP_I8()[(buf + len) >>> 0] = endChar;
|
|
return len;
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
function ___syscall_renameat(olddirfd, oldpath, newdirfd, newpath) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(17, 1, olddirfd, oldpath, newdirfd, newpath);
|
|
oldpath >>>= 0;
|
|
newpath >>>= 0;
|
|
try {
|
|
oldpath = SYSCALLS.getStr(oldpath);
|
|
newpath = SYSCALLS.getStr(newpath);
|
|
oldpath = SYSCALLS.calculateAt(olddirfd, oldpath);
|
|
newpath = SYSCALLS.calculateAt(newdirfd, newpath);
|
|
FS.rename(oldpath, newpath);
|
|
return 0;
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
function ___syscall_stat64(path, buf) {
|
|
if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(18, 1, path, buf);
|
|
path >>>= 0;
|
|
buf >>>= 0;
|
|
try {
|
|
path = SYSCALLS.getStr(path);
|
|
return SYSCALLS.doStat(FS.stat, path, buf);
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
function ___syscall_unlinkat(dirfd, path, flags) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(19, 1, dirfd, path, flags);
|
|
path >>>= 0;
|
|
try {
|
|
path = SYSCALLS.getStr(path);
|
|
path = SYSCALLS.calculateAt(dirfd, path);
|
|
if (flags === 0) {
|
|
FS.unlink(path);
|
|
} else if (flags === 512) {
|
|
FS.rmdir(path);
|
|
} else {
|
|
abort("Invalid flags passed to unlinkat");
|
|
}
|
|
return 0;
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
function __embind_register_bigint(
|
|
primitiveType,
|
|
name,
|
|
size,
|
|
minRange,
|
|
maxRange,
|
|
) {
|
|
primitiveType >>>= 0;
|
|
name >>>= 0;
|
|
size >>>= 0;
|
|
}
|
|
var embind_init_charCodes = () => {
|
|
var codes = new Array(256);
|
|
for (var i = 0; i < 256; ++i) {
|
|
codes[i] = String.fromCharCode(i);
|
|
}
|
|
embind_charCodes = codes;
|
|
};
|
|
var embind_charCodes;
|
|
var readLatin1String = (ptr) => {
|
|
var ret = "";
|
|
var c = ptr;
|
|
while (GROWABLE_HEAP_U8()[c >>> 0]) {
|
|
ret += embind_charCodes[GROWABLE_HEAP_U8()[c++ >>> 0]];
|
|
}
|
|
return ret;
|
|
};
|
|
var awaitingDependencies = {};
|
|
var registeredTypes = {};
|
|
var typeDependencies = {};
|
|
var BindingError;
|
|
var throwBindingError = (message) => {
|
|
throw new BindingError(message);
|
|
};
|
|
var InternalError;
|
|
var throwInternalError = (message) => {
|
|
throw new InternalError(message);
|
|
};
|
|
var whenDependentTypesAreResolved = (
|
|
myTypes,
|
|
dependentTypes,
|
|
getTypeConverters,
|
|
) => {
|
|
myTypes.forEach(function (type) {
|
|
typeDependencies[type] = dependentTypes;
|
|
});
|
|
function onComplete(typeConverters) {
|
|
var myTypeConverters = getTypeConverters(typeConverters);
|
|
if (myTypeConverters.length !== myTypes.length) {
|
|
throwInternalError("Mismatched type converter count");
|
|
}
|
|
for (var i = 0; i < myTypes.length; ++i) {
|
|
registerType(myTypes[i], myTypeConverters[i]);
|
|
}
|
|
}
|
|
var typeConverters = new Array(dependentTypes.length);
|
|
var unregisteredTypes = [];
|
|
var registered = 0;
|
|
dependentTypes.forEach((dt, i) => {
|
|
if (registeredTypes.hasOwnProperty(dt)) {
|
|
typeConverters[i] = registeredTypes[dt];
|
|
} else {
|
|
unregisteredTypes.push(dt);
|
|
if (!awaitingDependencies.hasOwnProperty(dt)) {
|
|
awaitingDependencies[dt] = [];
|
|
}
|
|
awaitingDependencies[dt].push(() => {
|
|
typeConverters[i] = registeredTypes[dt];
|
|
++registered;
|
|
if (registered === unregisteredTypes.length) {
|
|
onComplete(typeConverters);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
if (0 === unregisteredTypes.length) {
|
|
onComplete(typeConverters);
|
|
}
|
|
};
|
|
function sharedRegisterType(rawType, registeredInstance, options = {}) {
|
|
var name = registeredInstance.name;
|
|
if (!rawType) {
|
|
throwBindingError(
|
|
`type "${name}" must have a positive integer typeid pointer`,
|
|
);
|
|
}
|
|
if (registeredTypes.hasOwnProperty(rawType)) {
|
|
if (options.ignoreDuplicateRegistrations) {
|
|
return;
|
|
} else {
|
|
throwBindingError(`Cannot register type '${name}' twice`);
|
|
}
|
|
}
|
|
registeredTypes[rawType] = registeredInstance;
|
|
delete typeDependencies[rawType];
|
|
if (awaitingDependencies.hasOwnProperty(rawType)) {
|
|
var callbacks = awaitingDependencies[rawType];
|
|
delete awaitingDependencies[rawType];
|
|
callbacks.forEach((cb) => cb());
|
|
}
|
|
}
|
|
function registerType(rawType, registeredInstance, options = {}) {
|
|
if (!("argPackAdvance" in registeredInstance)) {
|
|
throw new TypeError(
|
|
"registerType registeredInstance requires argPackAdvance",
|
|
);
|
|
}
|
|
return sharedRegisterType(rawType, registeredInstance, options);
|
|
}
|
|
var GenericWireTypeSize = 8;
|
|
function __embind_register_bool(rawType, name, trueValue, falseValue) {
|
|
rawType >>>= 0;
|
|
name >>>= 0;
|
|
name = readLatin1String(name);
|
|
registerType(rawType, {
|
|
name: name,
|
|
fromWireType: function (wt) {
|
|
return !!wt;
|
|
},
|
|
toWireType: function (destructors, o) {
|
|
return o ? trueValue : falseValue;
|
|
},
|
|
argPackAdvance: GenericWireTypeSize,
|
|
readValueFromPointer: function (pointer) {
|
|
return this["fromWireType"](GROWABLE_HEAP_U8()[pointer >>> 0]);
|
|
},
|
|
destructorFunction: null,
|
|
});
|
|
}
|
|
var shallowCopyInternalPointer = (o) => ({
|
|
count: o.count,
|
|
deleteScheduled: o.deleteScheduled,
|
|
preservePointerOnDelete: o.preservePointerOnDelete,
|
|
ptr: o.ptr,
|
|
ptrType: o.ptrType,
|
|
smartPtr: o.smartPtr,
|
|
smartPtrType: o.smartPtrType,
|
|
});
|
|
var throwInstanceAlreadyDeleted = (obj) => {
|
|
function getInstanceTypeName(handle) {
|
|
return handle.$$.ptrType.registeredClass.name;
|
|
}
|
|
throwBindingError(getInstanceTypeName(obj) + " instance already deleted");
|
|
};
|
|
var finalizationRegistry = false;
|
|
var detachFinalizer = (handle) => {};
|
|
var runDestructor = ($$) => {
|
|
if ($$.smartPtr) {
|
|
$$.smartPtrType.rawDestructor($$.smartPtr);
|
|
} else {
|
|
$$.ptrType.registeredClass.rawDestructor($$.ptr);
|
|
}
|
|
};
|
|
var releaseClassHandle = ($$) => {
|
|
$$.count.value -= 1;
|
|
var toDelete = 0 === $$.count.value;
|
|
if (toDelete) {
|
|
runDestructor($$);
|
|
}
|
|
};
|
|
var downcastPointer = (ptr, ptrClass, desiredClass) => {
|
|
if (ptrClass === desiredClass) {
|
|
return ptr;
|
|
}
|
|
if (undefined === desiredClass.baseClass) {
|
|
return null;
|
|
}
|
|
var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass);
|
|
if (rv === null) {
|
|
return null;
|
|
}
|
|
return desiredClass.downcast(rv);
|
|
};
|
|
var registeredPointers = {};
|
|
var getInheritedInstanceCount = () =>
|
|
Object.keys(registeredInstances).length;
|
|
var getLiveInheritedInstances = () => {
|
|
var rv = [];
|
|
for (var k in registeredInstances) {
|
|
if (registeredInstances.hasOwnProperty(k)) {
|
|
rv.push(registeredInstances[k]);
|
|
}
|
|
}
|
|
return rv;
|
|
};
|
|
var deletionQueue = [];
|
|
var flushPendingDeletes = () => {
|
|
while (deletionQueue.length) {
|
|
var obj = deletionQueue.pop();
|
|
obj.$$.deleteScheduled = false;
|
|
obj["delete"]();
|
|
}
|
|
};
|
|
var delayFunction;
|
|
var setDelayFunction = (fn) => {
|
|
delayFunction = fn;
|
|
if (deletionQueue.length && delayFunction) {
|
|
delayFunction(flushPendingDeletes);
|
|
}
|
|
};
|
|
var init_embind = () => {
|
|
Module["getInheritedInstanceCount"] = getInheritedInstanceCount;
|
|
Module["getLiveInheritedInstances"] = getLiveInheritedInstances;
|
|
Module["flushPendingDeletes"] = flushPendingDeletes;
|
|
Module["setDelayFunction"] = setDelayFunction;
|
|
};
|
|
var registeredInstances = {};
|
|
var getBasestPointer = (class_, ptr) => {
|
|
if (ptr === undefined) {
|
|
throwBindingError("ptr should not be undefined");
|
|
}
|
|
while (class_.baseClass) {
|
|
ptr = class_.upcast(ptr);
|
|
class_ = class_.baseClass;
|
|
}
|
|
return ptr;
|
|
};
|
|
var getInheritedInstance = (class_, ptr) => {
|
|
ptr = getBasestPointer(class_, ptr);
|
|
return registeredInstances[ptr];
|
|
};
|
|
var makeClassHandle = (prototype, record) => {
|
|
if (!record.ptrType || !record.ptr) {
|
|
throwInternalError("makeClassHandle requires ptr and ptrType");
|
|
}
|
|
var hasSmartPtrType = !!record.smartPtrType;
|
|
var hasSmartPtr = !!record.smartPtr;
|
|
if (hasSmartPtrType !== hasSmartPtr) {
|
|
throwInternalError("Both smartPtrType and smartPtr must be specified");
|
|
}
|
|
record.count = { value: 1 };
|
|
return attachFinalizer(
|
|
Object.create(prototype, { $$: { value: record } }),
|
|
);
|
|
};
|
|
function RegisteredPointer_fromWireType(ptr) {
|
|
var rawPointer = this.getPointee(ptr);
|
|
if (!rawPointer) {
|
|
this.destructor(ptr);
|
|
return null;
|
|
}
|
|
var registeredInstance = getInheritedInstance(
|
|
this.registeredClass,
|
|
rawPointer,
|
|
);
|
|
if (undefined !== registeredInstance) {
|
|
if (0 === registeredInstance.$$.count.value) {
|
|
registeredInstance.$$.ptr = rawPointer;
|
|
registeredInstance.$$.smartPtr = ptr;
|
|
return registeredInstance["clone"]();
|
|
} else {
|
|
var rv = registeredInstance["clone"]();
|
|
this.destructor(ptr);
|
|
return rv;
|
|
}
|
|
}
|
|
function makeDefaultHandle() {
|
|
if (this.isSmartPointer) {
|
|
return makeClassHandle(this.registeredClass.instancePrototype, {
|
|
ptrType: this.pointeeType,
|
|
ptr: rawPointer,
|
|
smartPtrType: this,
|
|
smartPtr: ptr,
|
|
});
|
|
} else {
|
|
return makeClassHandle(this.registeredClass.instancePrototype, {
|
|
ptrType: this,
|
|
ptr: ptr,
|
|
});
|
|
}
|
|
}
|
|
var actualType = this.registeredClass.getActualType(rawPointer);
|
|
var registeredPointerRecord = registeredPointers[actualType];
|
|
if (!registeredPointerRecord) {
|
|
return makeDefaultHandle.call(this);
|
|
}
|
|
var toType;
|
|
if (this.isConst) {
|
|
toType = registeredPointerRecord.constPointerType;
|
|
} else {
|
|
toType = registeredPointerRecord.pointerType;
|
|
}
|
|
var dp = downcastPointer(
|
|
rawPointer,
|
|
this.registeredClass,
|
|
toType.registeredClass,
|
|
);
|
|
if (dp === null) {
|
|
return makeDefaultHandle.call(this);
|
|
}
|
|
if (this.isSmartPointer) {
|
|
return makeClassHandle(toType.registeredClass.instancePrototype, {
|
|
ptrType: toType,
|
|
ptr: dp,
|
|
smartPtrType: this,
|
|
smartPtr: ptr,
|
|
});
|
|
} else {
|
|
return makeClassHandle(toType.registeredClass.instancePrototype, {
|
|
ptrType: toType,
|
|
ptr: dp,
|
|
});
|
|
}
|
|
}
|
|
var attachFinalizer = (handle) => {
|
|
if ("undefined" === typeof FinalizationRegistry) {
|
|
attachFinalizer = (handle) => handle;
|
|
return handle;
|
|
}
|
|
finalizationRegistry = new FinalizationRegistry((info) => {
|
|
releaseClassHandle(info.$$);
|
|
});
|
|
attachFinalizer = (handle) => {
|
|
var $$ = handle.$$;
|
|
var hasSmartPtr = !!$$.smartPtr;
|
|
if (hasSmartPtr) {
|
|
var info = { $$: $$ };
|
|
finalizationRegistry.register(handle, info, handle);
|
|
}
|
|
return handle;
|
|
};
|
|
detachFinalizer = (handle) => finalizationRegistry.unregister(handle);
|
|
return attachFinalizer(handle);
|
|
};
|
|
var init_ClassHandle = () => {
|
|
Object.assign(ClassHandle.prototype, {
|
|
isAliasOf(other) {
|
|
if (!(this instanceof ClassHandle)) {
|
|
return false;
|
|
}
|
|
if (!(other instanceof ClassHandle)) {
|
|
return false;
|
|
}
|
|
var leftClass = this.$$.ptrType.registeredClass;
|
|
var left = this.$$.ptr;
|
|
other.$$ = other.$$;
|
|
var rightClass = other.$$.ptrType.registeredClass;
|
|
var right = other.$$.ptr;
|
|
while (leftClass.baseClass) {
|
|
left = leftClass.upcast(left);
|
|
leftClass = leftClass.baseClass;
|
|
}
|
|
while (rightClass.baseClass) {
|
|
right = rightClass.upcast(right);
|
|
rightClass = rightClass.baseClass;
|
|
}
|
|
return leftClass === rightClass && left === right;
|
|
},
|
|
clone() {
|
|
if (!this.$$.ptr) {
|
|
throwInstanceAlreadyDeleted(this);
|
|
}
|
|
if (this.$$.preservePointerOnDelete) {
|
|
this.$$.count.value += 1;
|
|
return this;
|
|
} else {
|
|
var clone = attachFinalizer(
|
|
Object.create(Object.getPrototypeOf(this), {
|
|
$$: { value: shallowCopyInternalPointer(this.$$) },
|
|
}),
|
|
);
|
|
clone.$$.count.value += 1;
|
|
clone.$$.deleteScheduled = false;
|
|
return clone;
|
|
}
|
|
},
|
|
delete() {
|
|
if (!this.$$.ptr) {
|
|
throwInstanceAlreadyDeleted(this);
|
|
}
|
|
if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {
|
|
throwBindingError("Object already scheduled for deletion");
|
|
}
|
|
detachFinalizer(this);
|
|
releaseClassHandle(this.$$);
|
|
if (!this.$$.preservePointerOnDelete) {
|
|
this.$$.smartPtr = undefined;
|
|
this.$$.ptr = undefined;
|
|
}
|
|
},
|
|
isDeleted() {
|
|
return !this.$$.ptr;
|
|
},
|
|
deleteLater() {
|
|
if (!this.$$.ptr) {
|
|
throwInstanceAlreadyDeleted(this);
|
|
}
|
|
if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) {
|
|
throwBindingError("Object already scheduled for deletion");
|
|
}
|
|
deletionQueue.push(this);
|
|
if (deletionQueue.length === 1 && delayFunction) {
|
|
delayFunction(flushPendingDeletes);
|
|
}
|
|
this.$$.deleteScheduled = true;
|
|
return this;
|
|
},
|
|
});
|
|
};
|
|
function ClassHandle() {}
|
|
var char_0 = 48;
|
|
var char_9 = 57;
|
|
var makeLegalFunctionName = (name) => {
|
|
if (undefined === name) {
|
|
return "_unknown";
|
|
}
|
|
name = name.replace(/[^a-zA-Z0-9_]/g, "$");
|
|
var f = name.charCodeAt(0);
|
|
if (f >= char_0 && f <= char_9) {
|
|
return `_${name}`;
|
|
}
|
|
return name;
|
|
};
|
|
function createNamedFunction(name, body) {
|
|
name = makeLegalFunctionName(name);
|
|
return {
|
|
[name]: function () {
|
|
return body.apply(this, arguments);
|
|
},
|
|
}[name];
|
|
}
|
|
var ensureOverloadTable = (proto, methodName, humanName) => {
|
|
if (undefined === proto[methodName].overloadTable) {
|
|
var prevFunc = proto[methodName];
|
|
proto[methodName] = function () {
|
|
if (
|
|
!proto[methodName].overloadTable.hasOwnProperty(arguments.length)
|
|
) {
|
|
throwBindingError(
|
|
`Function '${humanName}' called with an invalid number of arguments (${arguments.length}) - expects one of (${proto[methodName].overloadTable})!`,
|
|
);
|
|
}
|
|
return proto[methodName].overloadTable[arguments.length].apply(
|
|
this,
|
|
arguments,
|
|
);
|
|
};
|
|
proto[methodName].overloadTable = [];
|
|
proto[methodName].overloadTable[prevFunc.argCount] = prevFunc;
|
|
}
|
|
};
|
|
var exposePublicSymbol = (name, value, numArguments) => {
|
|
if (Module.hasOwnProperty(name)) {
|
|
if (
|
|
undefined === numArguments ||
|
|
(undefined !== Module[name].overloadTable &&
|
|
undefined !== Module[name].overloadTable[numArguments])
|
|
) {
|
|
throwBindingError(`Cannot register public name '${name}' twice`);
|
|
}
|
|
ensureOverloadTable(Module, name, name);
|
|
if (Module.hasOwnProperty(numArguments)) {
|
|
throwBindingError(
|
|
`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`,
|
|
);
|
|
}
|
|
Module[name].overloadTable[numArguments] = value;
|
|
} else {
|
|
Module[name] = value;
|
|
if (undefined !== numArguments) {
|
|
Module[name].numArguments = numArguments;
|
|
}
|
|
}
|
|
};
|
|
function RegisteredClass(
|
|
name,
|
|
constructor,
|
|
instancePrototype,
|
|
rawDestructor,
|
|
baseClass,
|
|
getActualType,
|
|
upcast,
|
|
downcast,
|
|
) {
|
|
this.name = name;
|
|
this.constructor = constructor;
|
|
this.instancePrototype = instancePrototype;
|
|
this.rawDestructor = rawDestructor;
|
|
this.baseClass = baseClass;
|
|
this.getActualType = getActualType;
|
|
this.upcast = upcast;
|
|
this.downcast = downcast;
|
|
this.pureVirtualFunctions = [];
|
|
}
|
|
var upcastPointer = (ptr, ptrClass, desiredClass) => {
|
|
while (ptrClass !== desiredClass) {
|
|
if (!ptrClass.upcast) {
|
|
throwBindingError(
|
|
`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`,
|
|
);
|
|
}
|
|
ptr = ptrClass.upcast(ptr);
|
|
ptrClass = ptrClass.baseClass;
|
|
}
|
|
return ptr;
|
|
};
|
|
function constNoSmartPtrRawPointerToWireType(destructors, handle) {
|
|
if (handle === null) {
|
|
if (this.isReference) {
|
|
throwBindingError(`null is not a valid ${this.name}`);
|
|
}
|
|
return 0;
|
|
}
|
|
if (!handle.$$) {
|
|
throwBindingError(
|
|
`Cannot pass "${embindRepr(handle)}" as a ${this.name}`,
|
|
);
|
|
}
|
|
if (!handle.$$.ptr) {
|
|
throwBindingError(
|
|
`Cannot pass deleted object as a pointer of type ${this.name}`,
|
|
);
|
|
}
|
|
var handleClass = handle.$$.ptrType.registeredClass;
|
|
var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);
|
|
return ptr;
|
|
}
|
|
function genericPointerToWireType(destructors, handle) {
|
|
var ptr;
|
|
if (handle === null) {
|
|
if (this.isReference) {
|
|
throwBindingError(`null is not a valid ${this.name}`);
|
|
}
|
|
if (this.isSmartPointer) {
|
|
ptr = this.rawConstructor();
|
|
if (destructors !== null) {
|
|
destructors.push(this.rawDestructor, ptr);
|
|
}
|
|
return ptr;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
if (!handle.$$) {
|
|
throwBindingError(
|
|
`Cannot pass "${embindRepr(handle)}" as a ${this.name}`,
|
|
);
|
|
}
|
|
if (!handle.$$.ptr) {
|
|
throwBindingError(
|
|
`Cannot pass deleted object as a pointer of type ${this.name}`,
|
|
);
|
|
}
|
|
if (!this.isConst && handle.$$.ptrType.isConst) {
|
|
throwBindingError(
|
|
`Cannot convert argument of type ${handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name} to parameter type ${this.name}`,
|
|
);
|
|
}
|
|
var handleClass = handle.$$.ptrType.registeredClass;
|
|
ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);
|
|
if (this.isSmartPointer) {
|
|
if (undefined === handle.$$.smartPtr) {
|
|
throwBindingError("Passing raw pointer to smart pointer is illegal");
|
|
}
|
|
switch (this.sharingPolicy) {
|
|
case 0:
|
|
if (handle.$$.smartPtrType === this) {
|
|
ptr = handle.$$.smartPtr;
|
|
} else {
|
|
throwBindingError(
|
|
`Cannot convert argument of type ${handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name} to parameter type ${this.name}`,
|
|
);
|
|
}
|
|
break;
|
|
case 1:
|
|
ptr = handle.$$.smartPtr;
|
|
break;
|
|
case 2:
|
|
if (handle.$$.smartPtrType === this) {
|
|
ptr = handle.$$.smartPtr;
|
|
} else {
|
|
var clonedHandle = handle["clone"]();
|
|
ptr = this.rawShare(
|
|
ptr,
|
|
Emval.toHandle(() => clonedHandle["delete"]()),
|
|
);
|
|
if (destructors !== null) {
|
|
destructors.push(this.rawDestructor, ptr);
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
throwBindingError("Unsupporting sharing policy");
|
|
}
|
|
}
|
|
return ptr;
|
|
}
|
|
function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) {
|
|
if (handle === null) {
|
|
if (this.isReference) {
|
|
throwBindingError(`null is not a valid ${this.name}`);
|
|
}
|
|
return 0;
|
|
}
|
|
if (!handle.$$) {
|
|
throwBindingError(
|
|
`Cannot pass "${embindRepr(handle)}" as a ${this.name}`,
|
|
);
|
|
}
|
|
if (!handle.$$.ptr) {
|
|
throwBindingError(
|
|
`Cannot pass deleted object as a pointer of type ${this.name}`,
|
|
);
|
|
}
|
|
if (handle.$$.ptrType.isConst) {
|
|
throwBindingError(
|
|
`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`,
|
|
);
|
|
}
|
|
var handleClass = handle.$$.ptrType.registeredClass;
|
|
var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass);
|
|
return ptr;
|
|
}
|
|
function readPointer(pointer) {
|
|
return this["fromWireType"](GROWABLE_HEAP_U32()[(pointer >>> 2) >>> 0]);
|
|
}
|
|
var init_RegisteredPointer = () => {
|
|
Object.assign(RegisteredPointer.prototype, {
|
|
getPointee(ptr) {
|
|
if (this.rawGetPointee) {
|
|
ptr = this.rawGetPointee(ptr);
|
|
}
|
|
return ptr;
|
|
},
|
|
destructor(ptr) {
|
|
if (this.rawDestructor) {
|
|
this.rawDestructor(ptr);
|
|
}
|
|
},
|
|
argPackAdvance: GenericWireTypeSize,
|
|
readValueFromPointer: readPointer,
|
|
deleteObject(handle) {
|
|
if (handle !== null) {
|
|
handle["delete"]();
|
|
}
|
|
},
|
|
fromWireType: RegisteredPointer_fromWireType,
|
|
});
|
|
};
|
|
function RegisteredPointer(
|
|
name,
|
|
registeredClass,
|
|
isReference,
|
|
isConst,
|
|
isSmartPointer,
|
|
pointeeType,
|
|
sharingPolicy,
|
|
rawGetPointee,
|
|
rawConstructor,
|
|
rawShare,
|
|
rawDestructor,
|
|
) {
|
|
this.name = name;
|
|
this.registeredClass = registeredClass;
|
|
this.isReference = isReference;
|
|
this.isConst = isConst;
|
|
this.isSmartPointer = isSmartPointer;
|
|
this.pointeeType = pointeeType;
|
|
this.sharingPolicy = sharingPolicy;
|
|
this.rawGetPointee = rawGetPointee;
|
|
this.rawConstructor = rawConstructor;
|
|
this.rawShare = rawShare;
|
|
this.rawDestructor = rawDestructor;
|
|
if (!isSmartPointer && registeredClass.baseClass === undefined) {
|
|
if (isConst) {
|
|
this["toWireType"] = constNoSmartPtrRawPointerToWireType;
|
|
this.destructorFunction = null;
|
|
} else {
|
|
this["toWireType"] = nonConstNoSmartPtrRawPointerToWireType;
|
|
this.destructorFunction = null;
|
|
}
|
|
} else {
|
|
this["toWireType"] = genericPointerToWireType;
|
|
}
|
|
}
|
|
var replacePublicSymbol = (name, value, numArguments) => {
|
|
if (!Module.hasOwnProperty(name)) {
|
|
throwInternalError("Replacing nonexistant public symbol");
|
|
}
|
|
if (
|
|
undefined !== Module[name].overloadTable &&
|
|
undefined !== numArguments
|
|
) {
|
|
Module[name].overloadTable[numArguments] = value;
|
|
} else {
|
|
Module[name] = value;
|
|
Module[name].argCount = numArguments;
|
|
}
|
|
};
|
|
var dynCallLegacy = (sig, ptr, args) => {
|
|
var f = Module["dynCall_" + sig];
|
|
return args && args.length
|
|
? f.apply(null, [ptr].concat(args))
|
|
: f.call(null, ptr);
|
|
};
|
|
var wasmTable;
|
|
var dynCall = (sig, ptr, args) => {
|
|
var rtn = dynCallLegacy(sig, ptr, args);
|
|
return rtn;
|
|
};
|
|
var getDynCaller = (sig, ptr) => {
|
|
var argCache = [];
|
|
return function () {
|
|
argCache.length = 0;
|
|
Object.assign(argCache, arguments);
|
|
return dynCall(sig, ptr, argCache);
|
|
};
|
|
};
|
|
var embind__requireFunction = (signature, rawFunction) => {
|
|
signature = readLatin1String(signature);
|
|
function makeDynCaller() {
|
|
return getDynCaller(signature, rawFunction);
|
|
}
|
|
var fp = makeDynCaller();
|
|
if (typeof fp != "function") {
|
|
throwBindingError(
|
|
`unknown function pointer with signature ${signature}: ${rawFunction}`,
|
|
);
|
|
}
|
|
return fp;
|
|
};
|
|
var extendError = (baseErrorType, errorName) => {
|
|
var errorClass = createNamedFunction(errorName, function (message) {
|
|
this.name = errorName;
|
|
this.message = message;
|
|
var stack = new Error(message).stack;
|
|
if (stack !== undefined) {
|
|
this.stack =
|
|
this.toString() + "\n" + stack.replace(/^Error(:[^\n]*)?\n/, "");
|
|
}
|
|
});
|
|
errorClass.prototype = Object.create(baseErrorType.prototype);
|
|
errorClass.prototype.constructor = errorClass;
|
|
errorClass.prototype.toString = function () {
|
|
if (this.message === undefined) {
|
|
return this.name;
|
|
} else {
|
|
return `${this.name}: ${this.message}`;
|
|
}
|
|
};
|
|
return errorClass;
|
|
};
|
|
var UnboundTypeError;
|
|
var getTypeName = (type) => {
|
|
var ptr = ___getTypeName(type);
|
|
var rv = readLatin1String(ptr);
|
|
_free(ptr);
|
|
return rv;
|
|
};
|
|
var throwUnboundTypeError = (message, types) => {
|
|
var unboundTypes = [];
|
|
var seen = {};
|
|
function visit(type) {
|
|
if (seen[type]) {
|
|
return;
|
|
}
|
|
if (registeredTypes[type]) {
|
|
return;
|
|
}
|
|
if (typeDependencies[type]) {
|
|
typeDependencies[type].forEach(visit);
|
|
return;
|
|
}
|
|
unboundTypes.push(type);
|
|
seen[type] = true;
|
|
}
|
|
types.forEach(visit);
|
|
throw new UnboundTypeError(
|
|
`${message}: ` + unboundTypes.map(getTypeName).join([", "]),
|
|
);
|
|
};
|
|
function __embind_register_class(
|
|
rawType,
|
|
rawPointerType,
|
|
rawConstPointerType,
|
|
baseClassRawType,
|
|
getActualTypeSignature,
|
|
getActualType,
|
|
upcastSignature,
|
|
upcast,
|
|
downcastSignature,
|
|
downcast,
|
|
name,
|
|
destructorSignature,
|
|
rawDestructor,
|
|
) {
|
|
rawType >>>= 0;
|
|
rawPointerType >>>= 0;
|
|
rawConstPointerType >>>= 0;
|
|
baseClassRawType >>>= 0;
|
|
getActualTypeSignature >>>= 0;
|
|
getActualType >>>= 0;
|
|
upcastSignature >>>= 0;
|
|
upcast >>>= 0;
|
|
downcastSignature >>>= 0;
|
|
downcast >>>= 0;
|
|
name >>>= 0;
|
|
destructorSignature >>>= 0;
|
|
rawDestructor >>>= 0;
|
|
name = readLatin1String(name);
|
|
getActualType = embind__requireFunction(
|
|
getActualTypeSignature,
|
|
getActualType,
|
|
);
|
|
if (upcast) {
|
|
upcast = embind__requireFunction(upcastSignature, upcast);
|
|
}
|
|
if (downcast) {
|
|
downcast = embind__requireFunction(downcastSignature, downcast);
|
|
}
|
|
rawDestructor = embind__requireFunction(
|
|
destructorSignature,
|
|
rawDestructor,
|
|
);
|
|
var legalFunctionName = makeLegalFunctionName(name);
|
|
exposePublicSymbol(legalFunctionName, function () {
|
|
throwUnboundTypeError(`Cannot construct ${name} due to unbound types`, [
|
|
baseClassRawType,
|
|
]);
|
|
});
|
|
whenDependentTypesAreResolved(
|
|
[rawType, rawPointerType, rawConstPointerType],
|
|
baseClassRawType ? [baseClassRawType] : [],
|
|
function (base) {
|
|
base = base[0];
|
|
var baseClass;
|
|
var basePrototype;
|
|
if (baseClassRawType) {
|
|
baseClass = base.registeredClass;
|
|
basePrototype = baseClass.instancePrototype;
|
|
} else {
|
|
basePrototype = ClassHandle.prototype;
|
|
}
|
|
var constructor = createNamedFunction(legalFunctionName, function () {
|
|
if (Object.getPrototypeOf(this) !== instancePrototype) {
|
|
throw new BindingError("Use 'new' to construct " + name);
|
|
}
|
|
if (undefined === registeredClass.constructor_body) {
|
|
throw new BindingError(name + " has no accessible constructor");
|
|
}
|
|
var body = registeredClass.constructor_body[arguments.length];
|
|
if (undefined === body) {
|
|
throw new BindingError(
|
|
`Tried to invoke ctor of ${name} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`,
|
|
);
|
|
}
|
|
return body.apply(this, arguments);
|
|
});
|
|
var instancePrototype = Object.create(basePrototype, {
|
|
constructor: { value: constructor },
|
|
});
|
|
constructor.prototype = instancePrototype;
|
|
var registeredClass = new RegisteredClass(
|
|
name,
|
|
constructor,
|
|
instancePrototype,
|
|
rawDestructor,
|
|
baseClass,
|
|
getActualType,
|
|
upcast,
|
|
downcast,
|
|
);
|
|
if (registeredClass.baseClass) {
|
|
if (registeredClass.baseClass.__derivedClasses === undefined) {
|
|
registeredClass.baseClass.__derivedClasses = [];
|
|
}
|
|
registeredClass.baseClass.__derivedClasses.push(registeredClass);
|
|
}
|
|
var referenceConverter = new RegisteredPointer(
|
|
name,
|
|
registeredClass,
|
|
true,
|
|
false,
|
|
false,
|
|
);
|
|
var pointerConverter = new RegisteredPointer(
|
|
name + "*",
|
|
registeredClass,
|
|
false,
|
|
false,
|
|
false,
|
|
);
|
|
var constPointerConverter = new RegisteredPointer(
|
|
name + " const*",
|
|
registeredClass,
|
|
false,
|
|
true,
|
|
false,
|
|
);
|
|
registeredPointers[rawType] = {
|
|
pointerType: pointerConverter,
|
|
constPointerType: constPointerConverter,
|
|
};
|
|
replacePublicSymbol(legalFunctionName, constructor);
|
|
return [referenceConverter, pointerConverter, constPointerConverter];
|
|
},
|
|
);
|
|
}
|
|
var runDestructors = (destructors) => {
|
|
while (destructors.length) {
|
|
var ptr = destructors.pop();
|
|
var del = destructors.pop();
|
|
del(ptr);
|
|
}
|
|
};
|
|
function newFunc(constructor, argumentList) {
|
|
if (!(constructor instanceof Function)) {
|
|
throw new TypeError(
|
|
`new_ called with constructor type ${typeof constructor} which is not a function`,
|
|
);
|
|
}
|
|
var dummy = createNamedFunction(
|
|
constructor.name || "unknownFunctionName",
|
|
function () {},
|
|
);
|
|
dummy.prototype = constructor.prototype;
|
|
var obj = new dummy();
|
|
var r = constructor.apply(obj, argumentList);
|
|
return r instanceof Object ? r : obj;
|
|
}
|
|
var runAndAbortIfError = (func) => {
|
|
try {
|
|
return func();
|
|
} catch (e) {
|
|
abort(e);
|
|
}
|
|
};
|
|
var maybeExit = () => {
|
|
if (!keepRuntimeAlive()) {
|
|
try {
|
|
if (ENVIRONMENT_IS_PTHREAD) __emscripten_thread_exit(EXITSTATUS);
|
|
else _exit(EXITSTATUS);
|
|
} catch (e) {
|
|
handleException(e);
|
|
}
|
|
}
|
|
};
|
|
var callUserCallback = (func) => {
|
|
if (ABORT) {
|
|
return;
|
|
}
|
|
try {
|
|
func();
|
|
maybeExit();
|
|
} catch (e) {
|
|
handleException(e);
|
|
}
|
|
};
|
|
var runtimeKeepalivePush = () => {
|
|
runtimeKeepaliveCounter += 1;
|
|
};
|
|
var runtimeKeepalivePop = () => {
|
|
runtimeKeepaliveCounter -= 1;
|
|
};
|
|
var Asyncify = {
|
|
instrumentWasmImports(imports) {
|
|
var importPattern = /^(invoke_.*|__asyncjs__.*)$/;
|
|
for (var x in imports) {
|
|
(function (x) {
|
|
var original = imports[x];
|
|
var sig = original.sig;
|
|
if (typeof original == "function") {
|
|
var isAsyncifyImport = original.isAsync || importPattern.test(x);
|
|
}
|
|
})(x);
|
|
}
|
|
},
|
|
instrumentWasmExports(exports) {
|
|
var ret = {};
|
|
for (var x in exports) {
|
|
(function (x) {
|
|
var original = exports[x];
|
|
if (typeof original == "function") {
|
|
ret[x] = function () {
|
|
Asyncify.exportCallStack.push(x);
|
|
try {
|
|
return original.apply(null, arguments);
|
|
} finally {
|
|
if (!ABORT) {
|
|
var y = Asyncify.exportCallStack.pop();
|
|
assert(y === x);
|
|
Asyncify.maybeStopUnwind();
|
|
}
|
|
}
|
|
};
|
|
} else {
|
|
ret[x] = original;
|
|
}
|
|
})(x);
|
|
}
|
|
return ret;
|
|
},
|
|
State: { Normal: 0, Unwinding: 1, Rewinding: 2, Disabled: 3 },
|
|
state: 0,
|
|
StackSize: 4096,
|
|
currData: null,
|
|
handleSleepReturnValue: 0,
|
|
exportCallStack: [],
|
|
callStackNameToId: {},
|
|
callStackIdToName: {},
|
|
callStackId: 0,
|
|
asyncPromiseHandlers: null,
|
|
sleepCallbacks: [],
|
|
getCallStackId(funcName) {
|
|
var id = Asyncify.callStackNameToId[funcName];
|
|
if (id === undefined) {
|
|
id = Asyncify.callStackId++;
|
|
Asyncify.callStackNameToId[funcName] = id;
|
|
Asyncify.callStackIdToName[id] = funcName;
|
|
}
|
|
return id;
|
|
},
|
|
maybeStopUnwind() {
|
|
if (
|
|
Asyncify.currData &&
|
|
Asyncify.state === Asyncify.State.Unwinding &&
|
|
Asyncify.exportCallStack.length === 0
|
|
) {
|
|
Asyncify.state = Asyncify.State.Normal;
|
|
runtimeKeepalivePush();
|
|
runAndAbortIfError(_asyncify_stop_unwind);
|
|
if (typeof Fibers != "undefined") {
|
|
Fibers.trampoline();
|
|
}
|
|
}
|
|
},
|
|
whenDone() {
|
|
return new Promise((resolve, reject) => {
|
|
Asyncify.asyncPromiseHandlers = { resolve: resolve, reject: reject };
|
|
});
|
|
},
|
|
allocateData() {
|
|
var ptr = _malloc(12 + Asyncify.StackSize);
|
|
Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);
|
|
Asyncify.setDataRewindFunc(ptr);
|
|
return ptr;
|
|
},
|
|
setDataHeader(ptr, stack, stackSize) {
|
|
GROWABLE_HEAP_U32()[(ptr >>> 2) >>> 0] = stack;
|
|
GROWABLE_HEAP_U32()[((ptr + 4) >>> 2) >>> 0] = stack + stackSize;
|
|
},
|
|
setDataRewindFunc(ptr) {
|
|
var bottomOfCallStack = Asyncify.exportCallStack[0];
|
|
var rewindId = Asyncify.getCallStackId(bottomOfCallStack);
|
|
GROWABLE_HEAP_I32()[((ptr + 8) >>> 2) >>> 0] = rewindId;
|
|
},
|
|
getDataRewindFunc(ptr) {
|
|
var id = GROWABLE_HEAP_I32()[((ptr + 8) >>> 2) >>> 0];
|
|
var name = Asyncify.callStackIdToName[id];
|
|
var func = wasmExports[name];
|
|
return func;
|
|
},
|
|
doRewind(ptr) {
|
|
var start = Asyncify.getDataRewindFunc(ptr);
|
|
runtimeKeepalivePop();
|
|
return start();
|
|
},
|
|
handleSleep(startAsync) {
|
|
if (ABORT) return;
|
|
if (Asyncify.state === Asyncify.State.Normal) {
|
|
var reachedCallback = false;
|
|
var reachedAfterCallback = false;
|
|
startAsync((handleSleepReturnValue = 0) => {
|
|
if (ABORT) return;
|
|
Asyncify.handleSleepReturnValue = handleSleepReturnValue;
|
|
reachedCallback = true;
|
|
if (!reachedAfterCallback) {
|
|
return;
|
|
}
|
|
Asyncify.state = Asyncify.State.Rewinding;
|
|
runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));
|
|
if (typeof Browser != "undefined" && Browser.mainLoop.func) {
|
|
Browser.mainLoop.resume();
|
|
}
|
|
var asyncWasmReturnValue,
|
|
isError = false;
|
|
try {
|
|
asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData);
|
|
} catch (err) {
|
|
asyncWasmReturnValue = err;
|
|
isError = true;
|
|
}
|
|
var handled = false;
|
|
if (!Asyncify.currData) {
|
|
var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;
|
|
if (asyncPromiseHandlers) {
|
|
Asyncify.asyncPromiseHandlers = null;
|
|
(isError
|
|
? asyncPromiseHandlers.reject
|
|
: asyncPromiseHandlers.resolve)(asyncWasmReturnValue);
|
|
handled = true;
|
|
}
|
|
}
|
|
if (isError && !handled) {
|
|
throw asyncWasmReturnValue;
|
|
}
|
|
});
|
|
reachedAfterCallback = true;
|
|
if (!reachedCallback) {
|
|
Asyncify.state = Asyncify.State.Unwinding;
|
|
Asyncify.currData = Asyncify.allocateData();
|
|
if (typeof Browser != "undefined" && Browser.mainLoop.func) {
|
|
Browser.mainLoop.pause();
|
|
}
|
|
runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData));
|
|
}
|
|
} else if (Asyncify.state === Asyncify.State.Rewinding) {
|
|
Asyncify.state = Asyncify.State.Normal;
|
|
runAndAbortIfError(_asyncify_stop_rewind);
|
|
_free(Asyncify.currData);
|
|
Asyncify.currData = null;
|
|
Asyncify.sleepCallbacks.forEach((func) => callUserCallback(func));
|
|
} else {
|
|
abort(`invalid state: ${Asyncify.state}`);
|
|
}
|
|
return Asyncify.handleSleepReturnValue;
|
|
},
|
|
handleAsync(startAsync) {
|
|
return Asyncify.handleSleep((wakeUp) => {
|
|
startAsync().then(wakeUp);
|
|
});
|
|
},
|
|
};
|
|
function craftInvokerFunction(
|
|
humanName,
|
|
argTypes,
|
|
classType,
|
|
cppInvokerFunc,
|
|
cppTargetFunc,
|
|
isAsync,
|
|
) {
|
|
var argCount = argTypes.length;
|
|
if (argCount < 2) {
|
|
throwBindingError(
|
|
"argTypes array size mismatch! Must at least get return value and 'this' types!",
|
|
);
|
|
}
|
|
var isClassMethodFunc = argTypes[1] !== null && classType !== null;
|
|
var needsDestructorStack = false;
|
|
for (var i = 1; i < argTypes.length; ++i) {
|
|
if (
|
|
argTypes[i] !== null &&
|
|
argTypes[i].destructorFunction === undefined
|
|
) {
|
|
needsDestructorStack = true;
|
|
break;
|
|
}
|
|
}
|
|
var returns = argTypes[0].name !== "void";
|
|
var argsList = "";
|
|
var argsListWired = "";
|
|
for (var i = 0; i < argCount - 2; ++i) {
|
|
argsList += (i !== 0 ? ", " : "") + "arg" + i;
|
|
argsListWired += (i !== 0 ? ", " : "") + "arg" + i + "Wired";
|
|
}
|
|
var invokerFnBody = `\n return function ${makeLegalFunctionName(humanName)}(${argsList}) {\n if (arguments.length !== ${argCount - 2}) {\n throwBindingError('function ${humanName} called with ' + arguments.length + ' arguments, expected ${argCount - 2}');\n }`;
|
|
if (needsDestructorStack) {
|
|
invokerFnBody += "var destructors = [];\n";
|
|
}
|
|
var dtorStack = needsDestructorStack ? "destructors" : "null";
|
|
var args1 = [
|
|
"throwBindingError",
|
|
"invoker",
|
|
"fn",
|
|
"runDestructors",
|
|
"retType",
|
|
"classParam",
|
|
];
|
|
var args2 = [
|
|
throwBindingError,
|
|
cppInvokerFunc,
|
|
cppTargetFunc,
|
|
runDestructors,
|
|
argTypes[0],
|
|
argTypes[1],
|
|
];
|
|
if (isClassMethodFunc) {
|
|
invokerFnBody +=
|
|
"var thisWired = classParam.toWireType(" + dtorStack + ", this);\n";
|
|
}
|
|
for (var i = 0; i < argCount - 2; ++i) {
|
|
invokerFnBody +=
|
|
"var arg" +
|
|
i +
|
|
"Wired = argType" +
|
|
i +
|
|
".toWireType(" +
|
|
dtorStack +
|
|
", arg" +
|
|
i +
|
|
"); // " +
|
|
argTypes[i + 2].name +
|
|
"\n";
|
|
args1.push("argType" + i);
|
|
args2.push(argTypes[i + 2]);
|
|
}
|
|
if (isClassMethodFunc) {
|
|
argsListWired =
|
|
"thisWired" + (argsListWired.length > 0 ? ", " : "") + argsListWired;
|
|
}
|
|
invokerFnBody +=
|
|
(returns || isAsync ? "var rv = " : "") +
|
|
"invoker(fn" +
|
|
(argsListWired.length > 0 ? ", " : "") +
|
|
argsListWired +
|
|
");\n";
|
|
args1.push("Asyncify");
|
|
args2.push(Asyncify);
|
|
invokerFnBody += "function onDone(" + (returns ? "rv" : "") + ") {\n";
|
|
if (needsDestructorStack) {
|
|
invokerFnBody += "runDestructors(destructors);\n";
|
|
} else {
|
|
for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; ++i) {
|
|
var paramName = i === 1 ? "thisWired" : "arg" + (i - 2) + "Wired";
|
|
if (argTypes[i].destructorFunction !== null) {
|
|
invokerFnBody +=
|
|
paramName +
|
|
"_dtor(" +
|
|
paramName +
|
|
"); // " +
|
|
argTypes[i].name +
|
|
"\n";
|
|
args1.push(paramName + "_dtor");
|
|
args2.push(argTypes[i].destructorFunction);
|
|
}
|
|
}
|
|
}
|
|
if (returns) {
|
|
invokerFnBody +=
|
|
"var ret = retType.fromWireType(rv);\n" + "return ret;\n";
|
|
} else {
|
|
}
|
|
invokerFnBody += "}\n";
|
|
invokerFnBody +=
|
|
"return Asyncify.currData ? Asyncify.whenDone().then(onDone) : onDone(" +
|
|
(returns ? "rv" : "") +
|
|
");\n";
|
|
invokerFnBody += "}\n";
|
|
args1.push(invokerFnBody);
|
|
return newFunc(Function, args1).apply(null, args2);
|
|
}
|
|
var heap32VectorToArray = (count, firstElement) => {
|
|
var array = [];
|
|
for (var i = 0; i < count; i++) {
|
|
array.push(GROWABLE_HEAP_U32()[((firstElement + i * 4) >>> 2) >>> 0]);
|
|
}
|
|
return array;
|
|
};
|
|
var getFunctionName = (signature) => {
|
|
signature = signature.trim();
|
|
const argsIndex = signature.indexOf("(");
|
|
if (argsIndex !== -1) {
|
|
assert(
|
|
signature[signature.length - 1] == ")",
|
|
"Parentheses for argument names should match.",
|
|
);
|
|
return signature.substr(0, argsIndex);
|
|
} else {
|
|
return signature;
|
|
}
|
|
};
|
|
function __embind_register_class_class_function(
|
|
rawClassType,
|
|
methodName,
|
|
argCount,
|
|
rawArgTypesAddr,
|
|
invokerSignature,
|
|
rawInvoker,
|
|
fn,
|
|
isAsync,
|
|
) {
|
|
rawClassType >>>= 0;
|
|
methodName >>>= 0;
|
|
rawArgTypesAddr >>>= 0;
|
|
invokerSignature >>>= 0;
|
|
rawInvoker >>>= 0;
|
|
fn >>>= 0;
|
|
var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
|
|
methodName = readLatin1String(methodName);
|
|
methodName = getFunctionName(methodName);
|
|
rawInvoker = embind__requireFunction(invokerSignature, rawInvoker);
|
|
whenDependentTypesAreResolved([], [rawClassType], function (classType) {
|
|
classType = classType[0];
|
|
var humanName = `${classType.name}.${methodName}`;
|
|
function unboundTypesHandler() {
|
|
throwUnboundTypeError(
|
|
`Cannot call ${humanName} due to unbound types`,
|
|
rawArgTypes,
|
|
);
|
|
}
|
|
if (methodName.startsWith("@@")) {
|
|
methodName = Symbol[methodName.substring(2)];
|
|
}
|
|
var proto = classType.registeredClass.constructor;
|
|
if (undefined === proto[methodName]) {
|
|
unboundTypesHandler.argCount = argCount - 1;
|
|
proto[methodName] = unboundTypesHandler;
|
|
} else {
|
|
ensureOverloadTable(proto, methodName, humanName);
|
|
proto[methodName].overloadTable[argCount - 1] = unboundTypesHandler;
|
|
}
|
|
whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) {
|
|
var invokerArgsArray = [argTypes[0], null].concat(argTypes.slice(1));
|
|
var func = craftInvokerFunction(
|
|
humanName,
|
|
invokerArgsArray,
|
|
null,
|
|
rawInvoker,
|
|
fn,
|
|
isAsync,
|
|
);
|
|
if (undefined === proto[methodName].overloadTable) {
|
|
func.argCount = argCount - 1;
|
|
proto[methodName] = func;
|
|
} else {
|
|
proto[methodName].overloadTable[argCount - 1] = func;
|
|
}
|
|
if (classType.registeredClass.__derivedClasses) {
|
|
for (const derivedClass of classType.registeredClass
|
|
.__derivedClasses) {
|
|
if (!derivedClass.constructor.hasOwnProperty(methodName)) {
|
|
derivedClass.constructor[methodName] = func;
|
|
}
|
|
}
|
|
}
|
|
return [];
|
|
});
|
|
return [];
|
|
});
|
|
}
|
|
var validateThis = (this_, classType, humanName) => {
|
|
if (!(this_ instanceof Object)) {
|
|
throwBindingError(`${humanName} with invalid "this": ${this_}`);
|
|
}
|
|
if (!(this_ instanceof classType.registeredClass.constructor)) {
|
|
throwBindingError(
|
|
`${humanName} incompatible with "this" of type ${this_.constructor.name}`,
|
|
);
|
|
}
|
|
if (!this_.$$.ptr) {
|
|
throwBindingError(
|
|
`cannot call emscripten binding method ${humanName} on deleted object`,
|
|
);
|
|
}
|
|
return upcastPointer(
|
|
this_.$$.ptr,
|
|
this_.$$.ptrType.registeredClass,
|
|
classType.registeredClass,
|
|
);
|
|
};
|
|
function __embind_register_class_class_property(
|
|
rawClassType,
|
|
fieldName,
|
|
rawFieldType,
|
|
rawFieldPtr,
|
|
getterSignature,
|
|
getter,
|
|
setterSignature,
|
|
setter,
|
|
) {
|
|
rawClassType >>>= 0;
|
|
fieldName >>>= 0;
|
|
rawFieldType >>>= 0;
|
|
rawFieldPtr >>>= 0;
|
|
getterSignature >>>= 0;
|
|
getter >>>= 0;
|
|
setterSignature >>>= 0;
|
|
setter >>>= 0;
|
|
fieldName = readLatin1String(fieldName);
|
|
getter = embind__requireFunction(getterSignature, getter);
|
|
whenDependentTypesAreResolved([], [rawClassType], function (classType) {
|
|
classType = classType[0];
|
|
var humanName = `${classType.name}.${fieldName}`;
|
|
var desc = {
|
|
get() {
|
|
throwUnboundTypeError(
|
|
`Cannot access ${humanName} due to unbound types`,
|
|
[rawFieldType],
|
|
);
|
|
},
|
|
enumerable: true,
|
|
configurable: true,
|
|
};
|
|
if (setter) {
|
|
desc.set = () => {
|
|
throwUnboundTypeError(
|
|
`Cannot access ${humanName} due to unbound types`,
|
|
[rawFieldType],
|
|
);
|
|
};
|
|
} else {
|
|
desc.set = (v) => {
|
|
throwBindingError(`${humanName} is a read-only property`);
|
|
};
|
|
}
|
|
Object.defineProperty(
|
|
classType.registeredClass.constructor,
|
|
fieldName,
|
|
desc,
|
|
);
|
|
whenDependentTypesAreResolved([], [rawFieldType], function (fieldType) {
|
|
fieldType = fieldType[0];
|
|
var desc = {
|
|
get() {
|
|
return fieldType["fromWireType"](getter(rawFieldPtr));
|
|
},
|
|
enumerable: true,
|
|
};
|
|
if (setter) {
|
|
setter = embind__requireFunction(setterSignature, setter);
|
|
desc.set = (v) => {
|
|
var destructors = [];
|
|
setter(rawFieldPtr, fieldType["toWireType"](destructors, v));
|
|
runDestructors(destructors);
|
|
};
|
|
}
|
|
Object.defineProperty(
|
|
classType.registeredClass.constructor,
|
|
fieldName,
|
|
desc,
|
|
);
|
|
return [];
|
|
});
|
|
return [];
|
|
});
|
|
}
|
|
function __embind_register_class_constructor(
|
|
rawClassType,
|
|
argCount,
|
|
rawArgTypesAddr,
|
|
invokerSignature,
|
|
invoker,
|
|
rawConstructor,
|
|
) {
|
|
rawClassType >>>= 0;
|
|
rawArgTypesAddr >>>= 0;
|
|
invokerSignature >>>= 0;
|
|
invoker >>>= 0;
|
|
rawConstructor >>>= 0;
|
|
var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
|
|
invoker = embind__requireFunction(invokerSignature, invoker);
|
|
whenDependentTypesAreResolved([], [rawClassType], function (classType) {
|
|
classType = classType[0];
|
|
var humanName = `constructor ${classType.name}`;
|
|
if (undefined === classType.registeredClass.constructor_body) {
|
|
classType.registeredClass.constructor_body = [];
|
|
}
|
|
if (
|
|
undefined !== classType.registeredClass.constructor_body[argCount - 1]
|
|
) {
|
|
throw new BindingError(
|
|
`Cannot register multiple constructors with identical number of parameters (${argCount - 1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`,
|
|
);
|
|
}
|
|
classType.registeredClass.constructor_body[argCount - 1] = () => {
|
|
throwUnboundTypeError(
|
|
`Cannot construct ${classType.name} due to unbound types`,
|
|
rawArgTypes,
|
|
);
|
|
};
|
|
whenDependentTypesAreResolved([], rawArgTypes, (argTypes) => {
|
|
argTypes.splice(1, 0, null);
|
|
classType.registeredClass.constructor_body[argCount - 1] =
|
|
craftInvokerFunction(
|
|
humanName,
|
|
argTypes,
|
|
null,
|
|
invoker,
|
|
rawConstructor,
|
|
);
|
|
return [];
|
|
});
|
|
return [];
|
|
});
|
|
}
|
|
function __embind_register_class_function(
|
|
rawClassType,
|
|
methodName,
|
|
argCount,
|
|
rawArgTypesAddr,
|
|
invokerSignature,
|
|
rawInvoker,
|
|
context,
|
|
isPureVirtual,
|
|
isAsync,
|
|
) {
|
|
rawClassType >>>= 0;
|
|
methodName >>>= 0;
|
|
rawArgTypesAddr >>>= 0;
|
|
invokerSignature >>>= 0;
|
|
rawInvoker >>>= 0;
|
|
context >>>= 0;
|
|
var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
|
|
methodName = readLatin1String(methodName);
|
|
methodName = getFunctionName(methodName);
|
|
rawInvoker = embind__requireFunction(invokerSignature, rawInvoker);
|
|
whenDependentTypesAreResolved([], [rawClassType], function (classType) {
|
|
classType = classType[0];
|
|
var humanName = `${classType.name}.${methodName}`;
|
|
if (methodName.startsWith("@@")) {
|
|
methodName = Symbol[methodName.substring(2)];
|
|
}
|
|
if (isPureVirtual) {
|
|
classType.registeredClass.pureVirtualFunctions.push(methodName);
|
|
}
|
|
function unboundTypesHandler() {
|
|
throwUnboundTypeError(
|
|
`Cannot call ${humanName} due to unbound types`,
|
|
rawArgTypes,
|
|
);
|
|
}
|
|
var proto = classType.registeredClass.instancePrototype;
|
|
var method = proto[methodName];
|
|
if (
|
|
undefined === method ||
|
|
(undefined === method.overloadTable &&
|
|
method.className !== classType.name &&
|
|
method.argCount === argCount - 2)
|
|
) {
|
|
unboundTypesHandler.argCount = argCount - 2;
|
|
unboundTypesHandler.className = classType.name;
|
|
proto[methodName] = unboundTypesHandler;
|
|
} else {
|
|
ensureOverloadTable(proto, methodName, humanName);
|
|
proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler;
|
|
}
|
|
whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) {
|
|
var memberFunction = craftInvokerFunction(
|
|
humanName,
|
|
argTypes,
|
|
classType,
|
|
rawInvoker,
|
|
context,
|
|
isAsync,
|
|
);
|
|
if (undefined === proto[methodName].overloadTable) {
|
|
memberFunction.argCount = argCount - 2;
|
|
proto[methodName] = memberFunction;
|
|
} else {
|
|
proto[methodName].overloadTable[argCount - 2] = memberFunction;
|
|
}
|
|
return [];
|
|
});
|
|
return [];
|
|
});
|
|
}
|
|
function __embind_register_class_property(
|
|
classType,
|
|
fieldName,
|
|
getterReturnType,
|
|
getterSignature,
|
|
getter,
|
|
getterContext,
|
|
setterArgumentType,
|
|
setterSignature,
|
|
setter,
|
|
setterContext,
|
|
) {
|
|
classType >>>= 0;
|
|
fieldName >>>= 0;
|
|
getterReturnType >>>= 0;
|
|
getterSignature >>>= 0;
|
|
getter >>>= 0;
|
|
getterContext >>>= 0;
|
|
setterArgumentType >>>= 0;
|
|
setterSignature >>>= 0;
|
|
setter >>>= 0;
|
|
setterContext >>>= 0;
|
|
fieldName = readLatin1String(fieldName);
|
|
getter = embind__requireFunction(getterSignature, getter);
|
|
whenDependentTypesAreResolved([], [classType], function (classType) {
|
|
classType = classType[0];
|
|
var humanName = `${classType.name}.${fieldName}`;
|
|
var desc = {
|
|
get() {
|
|
throwUnboundTypeError(
|
|
`Cannot access ${humanName} due to unbound types`,
|
|
[getterReturnType, setterArgumentType],
|
|
);
|
|
},
|
|
enumerable: true,
|
|
configurable: true,
|
|
};
|
|
if (setter) {
|
|
desc.set = () =>
|
|
throwUnboundTypeError(
|
|
`Cannot access ${humanName} due to unbound types`,
|
|
[getterReturnType, setterArgumentType],
|
|
);
|
|
} else {
|
|
desc.set = (v) =>
|
|
throwBindingError(humanName + " is a read-only property");
|
|
}
|
|
Object.defineProperty(
|
|
classType.registeredClass.instancePrototype,
|
|
fieldName,
|
|
desc,
|
|
);
|
|
whenDependentTypesAreResolved(
|
|
[],
|
|
setter ? [getterReturnType, setterArgumentType] : [getterReturnType],
|
|
function (types) {
|
|
var getterReturnType = types[0];
|
|
var desc = {
|
|
get() {
|
|
var ptr = validateThis(this, classType, humanName + " getter");
|
|
return getterReturnType["fromWireType"](
|
|
getter(getterContext, ptr),
|
|
);
|
|
},
|
|
enumerable: true,
|
|
};
|
|
if (setter) {
|
|
setter = embind__requireFunction(setterSignature, setter);
|
|
var setterArgumentType = types[1];
|
|
desc.set = function (v) {
|
|
var ptr = validateThis(this, classType, humanName + " setter");
|
|
var destructors = [];
|
|
setter(
|
|
setterContext,
|
|
ptr,
|
|
setterArgumentType["toWireType"](destructors, v),
|
|
);
|
|
runDestructors(destructors);
|
|
};
|
|
}
|
|
Object.defineProperty(
|
|
classType.registeredClass.instancePrototype,
|
|
fieldName,
|
|
desc,
|
|
);
|
|
return [];
|
|
},
|
|
);
|
|
return [];
|
|
});
|
|
}
|
|
function handleAllocatorInit() {
|
|
Object.assign(HandleAllocator.prototype, {
|
|
get(id) {
|
|
return this.allocated[id];
|
|
},
|
|
has(id) {
|
|
return this.allocated[id] !== undefined;
|
|
},
|
|
allocate(handle) {
|
|
var id = this.freelist.pop() || this.allocated.length;
|
|
this.allocated[id] = handle;
|
|
return id;
|
|
},
|
|
free(id) {
|
|
this.allocated[id] = undefined;
|
|
this.freelist.push(id);
|
|
},
|
|
});
|
|
}
|
|
function HandleAllocator() {
|
|
this.allocated = [undefined];
|
|
this.freelist = [];
|
|
}
|
|
var emval_handles = new HandleAllocator();
|
|
function __emval_decref(handle) {
|
|
handle >>>= 0;
|
|
if (
|
|
handle >= emval_handles.reserved &&
|
|
0 === --emval_handles.get(handle).refcount
|
|
) {
|
|
emval_handles.free(handle);
|
|
}
|
|
}
|
|
var count_emval_handles = () => {
|
|
var count = 0;
|
|
for (
|
|
var i = emval_handles.reserved;
|
|
i < emval_handles.allocated.length;
|
|
++i
|
|
) {
|
|
if (emval_handles.allocated[i] !== undefined) {
|
|
++count;
|
|
}
|
|
}
|
|
return count;
|
|
};
|
|
var init_emval = () => {
|
|
emval_handles.allocated.push(
|
|
{ value: undefined },
|
|
{ value: null },
|
|
{ value: true },
|
|
{ value: false },
|
|
);
|
|
emval_handles.reserved = emval_handles.allocated.length;
|
|
Module["count_emval_handles"] = count_emval_handles;
|
|
};
|
|
var Emval = {
|
|
toValue: (handle) => {
|
|
if (!handle) {
|
|
throwBindingError("Cannot use deleted val. handle = " + handle);
|
|
}
|
|
return emval_handles.get(handle).value;
|
|
},
|
|
toHandle: (value) => {
|
|
switch (value) {
|
|
case undefined:
|
|
return 1;
|
|
case null:
|
|
return 2;
|
|
case true:
|
|
return 3;
|
|
case false:
|
|
return 4;
|
|
default: {
|
|
return emval_handles.allocate({ refcount: 1, value: value });
|
|
}
|
|
}
|
|
},
|
|
};
|
|
function simpleReadValueFromPointer(pointer) {
|
|
return this["fromWireType"](GROWABLE_HEAP_I32()[(pointer >>> 2) >>> 0]);
|
|
}
|
|
var __embind_register_emval = function (rawType, name) {
|
|
rawType >>>= 0;
|
|
name >>>= 0;
|
|
name = readLatin1String(name);
|
|
registerType(rawType, {
|
|
name: name,
|
|
fromWireType: (handle) => {
|
|
var rv = Emval.toValue(handle);
|
|
__emval_decref(handle);
|
|
return rv;
|
|
},
|
|
toWireType: (destructors, value) => Emval.toHandle(value),
|
|
argPackAdvance: GenericWireTypeSize,
|
|
readValueFromPointer: simpleReadValueFromPointer,
|
|
destructorFunction: null,
|
|
});
|
|
};
|
|
var enumReadValueFromPointer = (name, width, signed) => {
|
|
switch (width) {
|
|
case 1:
|
|
return signed
|
|
? function (pointer) {
|
|
return this["fromWireType"](
|
|
GROWABLE_HEAP_I8()[(pointer >>> 0) >>> 0],
|
|
);
|
|
}
|
|
: function (pointer) {
|
|
return this["fromWireType"](
|
|
GROWABLE_HEAP_U8()[(pointer >>> 0) >>> 0],
|
|
);
|
|
};
|
|
case 2:
|
|
return signed
|
|
? function (pointer) {
|
|
return this["fromWireType"](
|
|
GROWABLE_HEAP_I16()[(pointer >>> 1) >>> 0],
|
|
);
|
|
}
|
|
: function (pointer) {
|
|
return this["fromWireType"](
|
|
GROWABLE_HEAP_U16()[(pointer >>> 1) >>> 0],
|
|
);
|
|
};
|
|
case 4:
|
|
return signed
|
|
? function (pointer) {
|
|
return this["fromWireType"](
|
|
GROWABLE_HEAP_I32()[(pointer >>> 2) >>> 0],
|
|
);
|
|
}
|
|
: function (pointer) {
|
|
return this["fromWireType"](
|
|
GROWABLE_HEAP_U32()[(pointer >>> 2) >>> 0],
|
|
);
|
|
};
|
|
default:
|
|
throw new TypeError(`invalid integer width (${width}): ${name}`);
|
|
}
|
|
};
|
|
function __embind_register_enum(rawType, name, size, isSigned) {
|
|
rawType >>>= 0;
|
|
name >>>= 0;
|
|
size >>>= 0;
|
|
name = readLatin1String(name);
|
|
function ctor() {}
|
|
ctor.values = {};
|
|
registerType(rawType, {
|
|
name: name,
|
|
constructor: ctor,
|
|
fromWireType: function (c) {
|
|
return this.constructor.values[c];
|
|
},
|
|
toWireType: (destructors, c) => c.value,
|
|
argPackAdvance: GenericWireTypeSize,
|
|
readValueFromPointer: enumReadValueFromPointer(name, size, isSigned),
|
|
destructorFunction: null,
|
|
});
|
|
exposePublicSymbol(name, ctor);
|
|
}
|
|
var requireRegisteredType = (rawType, humanName) => {
|
|
var impl = registeredTypes[rawType];
|
|
if (undefined === impl) {
|
|
throwBindingError(
|
|
humanName + " has unknown type " + getTypeName(rawType),
|
|
);
|
|
}
|
|
return impl;
|
|
};
|
|
function __embind_register_enum_value(rawEnumType, name, enumValue) {
|
|
rawEnumType >>>= 0;
|
|
name >>>= 0;
|
|
enumValue >>>= 0;
|
|
var enumType = requireRegisteredType(rawEnumType, "enum");
|
|
name = readLatin1String(name);
|
|
var Enum = enumType.constructor;
|
|
var Value = Object.create(enumType.constructor.prototype, {
|
|
value: { value: enumValue },
|
|
constructor: {
|
|
value: createNamedFunction(
|
|
`${enumType.name}_${name}`,
|
|
function () {},
|
|
),
|
|
},
|
|
});
|
|
Enum.values[enumValue] = Value;
|
|
Enum[name] = Value;
|
|
}
|
|
var embindRepr = (v) => {
|
|
if (v === null) {
|
|
return "null";
|
|
}
|
|
var t = typeof v;
|
|
if (t === "object" || t === "array" || t === "function") {
|
|
return v.toString();
|
|
} else {
|
|
return "" + v;
|
|
}
|
|
};
|
|
var floatReadValueFromPointer = (name, width) => {
|
|
switch (width) {
|
|
case 4:
|
|
return function (pointer) {
|
|
return this["fromWireType"](
|
|
GROWABLE_HEAP_F32()[(pointer >>> 2) >>> 0],
|
|
);
|
|
};
|
|
case 8:
|
|
return function (pointer) {
|
|
return this["fromWireType"](
|
|
GROWABLE_HEAP_F64()[(pointer >>> 3) >>> 0],
|
|
);
|
|
};
|
|
default:
|
|
throw new TypeError(`invalid float width (${width}): ${name}`);
|
|
}
|
|
};
|
|
var __embind_register_float = function (rawType, name, size) {
|
|
rawType >>>= 0;
|
|
name >>>= 0;
|
|
size >>>= 0;
|
|
name = readLatin1String(name);
|
|
registerType(rawType, {
|
|
name: name,
|
|
fromWireType: (value) => value,
|
|
toWireType: (destructors, value) => value,
|
|
argPackAdvance: GenericWireTypeSize,
|
|
readValueFromPointer: floatReadValueFromPointer(name, size),
|
|
destructorFunction: null,
|
|
});
|
|
};
|
|
function __embind_register_function(
|
|
name,
|
|
argCount,
|
|
rawArgTypesAddr,
|
|
signature,
|
|
rawInvoker,
|
|
fn,
|
|
isAsync,
|
|
) {
|
|
name >>>= 0;
|
|
rawArgTypesAddr >>>= 0;
|
|
signature >>>= 0;
|
|
rawInvoker >>>= 0;
|
|
fn >>>= 0;
|
|
var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
|
|
name = readLatin1String(name);
|
|
name = getFunctionName(name);
|
|
rawInvoker = embind__requireFunction(signature, rawInvoker);
|
|
exposePublicSymbol(
|
|
name,
|
|
function () {
|
|
throwUnboundTypeError(
|
|
`Cannot call ${name} due to unbound types`,
|
|
argTypes,
|
|
);
|
|
},
|
|
argCount - 1,
|
|
);
|
|
whenDependentTypesAreResolved([], argTypes, function (argTypes) {
|
|
var invokerArgsArray = [argTypes[0], null].concat(argTypes.slice(1));
|
|
replacePublicSymbol(
|
|
name,
|
|
craftInvokerFunction(
|
|
name,
|
|
invokerArgsArray,
|
|
null,
|
|
rawInvoker,
|
|
fn,
|
|
isAsync,
|
|
),
|
|
argCount - 1,
|
|
);
|
|
return [];
|
|
});
|
|
}
|
|
var integerReadValueFromPointer = (name, width, signed) => {
|
|
switch (width) {
|
|
case 1:
|
|
return signed
|
|
? (pointer) => GROWABLE_HEAP_I8()[(pointer >>> 0) >>> 0]
|
|
: (pointer) => GROWABLE_HEAP_U8()[(pointer >>> 0) >>> 0];
|
|
case 2:
|
|
return signed
|
|
? (pointer) => GROWABLE_HEAP_I16()[(pointer >>> 1) >>> 0]
|
|
: (pointer) => GROWABLE_HEAP_U16()[(pointer >>> 1) >>> 0];
|
|
case 4:
|
|
return signed
|
|
? (pointer) => GROWABLE_HEAP_I32()[(pointer >>> 2) >>> 0]
|
|
: (pointer) => GROWABLE_HEAP_U32()[(pointer >>> 2) >>> 0];
|
|
default:
|
|
throw new TypeError(`invalid integer width (${width}): ${name}`);
|
|
}
|
|
};
|
|
function __embind_register_integer(
|
|
primitiveType,
|
|
name,
|
|
size,
|
|
minRange,
|
|
maxRange,
|
|
) {
|
|
primitiveType >>>= 0;
|
|
name >>>= 0;
|
|
size >>>= 0;
|
|
name = readLatin1String(name);
|
|
if (maxRange === -1) {
|
|
maxRange = 4294967295;
|
|
}
|
|
var fromWireType = (value) => value;
|
|
if (minRange === 0) {
|
|
var bitshift = 32 - 8 * size;
|
|
fromWireType = (value) => (value << bitshift) >>> bitshift;
|
|
}
|
|
var isUnsignedType = name.includes("unsigned");
|
|
var checkAssertions = (value, toTypeName) => {};
|
|
var toWireType;
|
|
if (isUnsignedType) {
|
|
toWireType = function (destructors, value) {
|
|
checkAssertions(value, this.name);
|
|
return value >>> 0;
|
|
};
|
|
} else {
|
|
toWireType = function (destructors, value) {
|
|
checkAssertions(value, this.name);
|
|
return value;
|
|
};
|
|
}
|
|
registerType(primitiveType, {
|
|
name: name,
|
|
fromWireType: fromWireType,
|
|
toWireType: toWireType,
|
|
argPackAdvance: GenericWireTypeSize,
|
|
readValueFromPointer: integerReadValueFromPointer(
|
|
name,
|
|
size,
|
|
minRange !== 0,
|
|
),
|
|
destructorFunction: null,
|
|
});
|
|
}
|
|
function __embind_register_memory_view(rawType, dataTypeIndex, name) {
|
|
rawType >>>= 0;
|
|
name >>>= 0;
|
|
var typeMapping = [
|
|
Int8Array,
|
|
Uint8Array,
|
|
Int16Array,
|
|
Uint16Array,
|
|
Int32Array,
|
|
Uint32Array,
|
|
Float32Array,
|
|
Float64Array,
|
|
];
|
|
var TA = typeMapping[dataTypeIndex];
|
|
function decodeMemoryView(handle) {
|
|
var size = GROWABLE_HEAP_U32()[(handle >>> 2) >>> 0];
|
|
var data = GROWABLE_HEAP_U32()[((handle + 4) >>> 2) >>> 0];
|
|
return new TA(GROWABLE_HEAP_I8().buffer, data, size);
|
|
}
|
|
name = readLatin1String(name);
|
|
registerType(
|
|
rawType,
|
|
{
|
|
name: name,
|
|
fromWireType: decodeMemoryView,
|
|
argPackAdvance: GenericWireTypeSize,
|
|
readValueFromPointer: decodeMemoryView,
|
|
},
|
|
{ ignoreDuplicateRegistrations: true },
|
|
);
|
|
}
|
|
function __embind_register_smart_ptr(
|
|
rawType,
|
|
rawPointeeType,
|
|
name,
|
|
sharingPolicy,
|
|
getPointeeSignature,
|
|
rawGetPointee,
|
|
constructorSignature,
|
|
rawConstructor,
|
|
shareSignature,
|
|
rawShare,
|
|
destructorSignature,
|
|
rawDestructor,
|
|
) {
|
|
rawType >>>= 0;
|
|
rawPointeeType >>>= 0;
|
|
name >>>= 0;
|
|
getPointeeSignature >>>= 0;
|
|
rawGetPointee >>>= 0;
|
|
constructorSignature >>>= 0;
|
|
rawConstructor >>>= 0;
|
|
shareSignature >>>= 0;
|
|
rawShare >>>= 0;
|
|
destructorSignature >>>= 0;
|
|
rawDestructor >>>= 0;
|
|
name = readLatin1String(name);
|
|
rawGetPointee = embind__requireFunction(
|
|
getPointeeSignature,
|
|
rawGetPointee,
|
|
);
|
|
rawConstructor = embind__requireFunction(
|
|
constructorSignature,
|
|
rawConstructor,
|
|
);
|
|
rawShare = embind__requireFunction(shareSignature, rawShare);
|
|
rawDestructor = embind__requireFunction(
|
|
destructorSignature,
|
|
rawDestructor,
|
|
);
|
|
whenDependentTypesAreResolved(
|
|
[rawType],
|
|
[rawPointeeType],
|
|
function (pointeeType) {
|
|
pointeeType = pointeeType[0];
|
|
var registeredPointer = new RegisteredPointer(
|
|
name,
|
|
pointeeType.registeredClass,
|
|
false,
|
|
false,
|
|
true,
|
|
pointeeType,
|
|
sharingPolicy,
|
|
rawGetPointee,
|
|
rawConstructor,
|
|
rawShare,
|
|
rawDestructor,
|
|
);
|
|
return [registeredPointer];
|
|
},
|
|
);
|
|
}
|
|
function __embind_register_std_string(rawType, name) {
|
|
rawType >>>= 0;
|
|
name >>>= 0;
|
|
name = readLatin1String(name);
|
|
var stdStringIsUTF8 = name === "std::string";
|
|
registerType(rawType, {
|
|
name: name,
|
|
fromWireType(value) {
|
|
var length = GROWABLE_HEAP_U32()[(value >>> 2) >>> 0];
|
|
var payload = value + 4;
|
|
var str;
|
|
if (stdStringIsUTF8) {
|
|
var decodeStartPtr = payload;
|
|
for (var i = 0; i <= length; ++i) {
|
|
var currentBytePtr = payload + i;
|
|
if (
|
|
i == length ||
|
|
GROWABLE_HEAP_U8()[currentBytePtr >>> 0] == 0
|
|
) {
|
|
var maxRead = currentBytePtr - decodeStartPtr;
|
|
var stringSegment = UTF8ToString(decodeStartPtr, maxRead);
|
|
if (str === undefined) {
|
|
str = stringSegment;
|
|
} else {
|
|
str += String.fromCharCode(0);
|
|
str += stringSegment;
|
|
}
|
|
decodeStartPtr = currentBytePtr + 1;
|
|
}
|
|
}
|
|
} else {
|
|
var a = new Array(length);
|
|
for (var i = 0; i < length; ++i) {
|
|
a[i] = String.fromCharCode(
|
|
GROWABLE_HEAP_U8()[(payload + i) >>> 0],
|
|
);
|
|
}
|
|
str = a.join("");
|
|
}
|
|
_free(value);
|
|
return str;
|
|
},
|
|
toWireType(destructors, value) {
|
|
if (value instanceof ArrayBuffer) {
|
|
value = new Uint8Array(value);
|
|
}
|
|
var length;
|
|
var valueIsOfTypeString = typeof value == "string";
|
|
if (
|
|
!(
|
|
valueIsOfTypeString ||
|
|
value instanceof Uint8Array ||
|
|
value instanceof Uint8ClampedArray ||
|
|
value instanceof Int8Array
|
|
)
|
|
) {
|
|
throwBindingError("Cannot pass non-string to std::string");
|
|
}
|
|
if (stdStringIsUTF8 && valueIsOfTypeString) {
|
|
length = lengthBytesUTF8(value);
|
|
} else {
|
|
length = value.length;
|
|
}
|
|
var base = _malloc(4 + length + 1);
|
|
var ptr = base + 4;
|
|
GROWABLE_HEAP_U32()[(base >>> 2) >>> 0] = length;
|
|
if (stdStringIsUTF8 && valueIsOfTypeString) {
|
|
stringToUTF8(value, ptr, length + 1);
|
|
} else {
|
|
if (valueIsOfTypeString) {
|
|
for (var i = 0; i < length; ++i) {
|
|
var charCode = value.charCodeAt(i);
|
|
if (charCode > 255) {
|
|
_free(ptr);
|
|
throwBindingError(
|
|
"String has UTF-16 code units that do not fit in 8 bits",
|
|
);
|
|
}
|
|
GROWABLE_HEAP_U8()[(ptr + i) >>> 0] = charCode;
|
|
}
|
|
} else {
|
|
for (var i = 0; i < length; ++i) {
|
|
GROWABLE_HEAP_U8()[(ptr + i) >>> 0] = value[i];
|
|
}
|
|
}
|
|
}
|
|
if (destructors !== null) {
|
|
destructors.push(_free, base);
|
|
}
|
|
return base;
|
|
},
|
|
argPackAdvance: GenericWireTypeSize,
|
|
readValueFromPointer: readPointer,
|
|
destructorFunction(ptr) {
|
|
_free(ptr);
|
|
},
|
|
});
|
|
}
|
|
var UTF16Decoder =
|
|
typeof TextDecoder != "undefined"
|
|
? new TextDecoder("utf-16le")
|
|
: undefined;
|
|
var UTF16ToString = (ptr, maxBytesToRead) => {
|
|
var endPtr = ptr;
|
|
var idx = endPtr >> 1;
|
|
var maxIdx = idx + maxBytesToRead / 2;
|
|
while (!(idx >= maxIdx) && GROWABLE_HEAP_U16()[idx >>> 0]) ++idx;
|
|
endPtr = idx << 1;
|
|
if (endPtr - ptr > 32 && UTF16Decoder)
|
|
return UTF16Decoder.decode(GROWABLE_HEAP_U8().slice(ptr, endPtr));
|
|
var str = "";
|
|
for (var i = 0; !(i >= maxBytesToRead / 2); ++i) {
|
|
var codeUnit = GROWABLE_HEAP_I16()[((ptr + i * 2) >>> 1) >>> 0];
|
|
if (codeUnit == 0) break;
|
|
str += String.fromCharCode(codeUnit);
|
|
}
|
|
return str;
|
|
};
|
|
var stringToUTF16 = (str, outPtr, maxBytesToWrite) => {
|
|
if (maxBytesToWrite === undefined) {
|
|
maxBytesToWrite = 2147483647;
|
|
}
|
|
if (maxBytesToWrite < 2) return 0;
|
|
maxBytesToWrite -= 2;
|
|
var startPtr = outPtr;
|
|
var numCharsToWrite =
|
|
maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;
|
|
for (var i = 0; i < numCharsToWrite; ++i) {
|
|
var codeUnit = str.charCodeAt(i);
|
|
GROWABLE_HEAP_I16()[(outPtr >>> 1) >>> 0] = codeUnit;
|
|
outPtr += 2;
|
|
}
|
|
GROWABLE_HEAP_I16()[(outPtr >>> 1) >>> 0] = 0;
|
|
return outPtr - startPtr;
|
|
};
|
|
var lengthBytesUTF16 = (str) => str.length * 2;
|
|
var UTF32ToString = (ptr, maxBytesToRead) => {
|
|
var i = 0;
|
|
var str = "";
|
|
while (!(i >= maxBytesToRead / 4)) {
|
|
var utf32 = GROWABLE_HEAP_I32()[((ptr + i * 4) >>> 2) >>> 0];
|
|
if (utf32 == 0) break;
|
|
++i;
|
|
if (utf32 >= 65536) {
|
|
var ch = utf32 - 65536;
|
|
str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023));
|
|
} else {
|
|
str += String.fromCharCode(utf32);
|
|
}
|
|
}
|
|
return str;
|
|
};
|
|
var stringToUTF32 = (str, outPtr, maxBytesToWrite) => {
|
|
outPtr >>>= 0;
|
|
if (maxBytesToWrite === undefined) {
|
|
maxBytesToWrite = 2147483647;
|
|
}
|
|
if (maxBytesToWrite < 4) return 0;
|
|
var startPtr = outPtr;
|
|
var endPtr = startPtr + maxBytesToWrite - 4;
|
|
for (var i = 0; i < str.length; ++i) {
|
|
var codeUnit = str.charCodeAt(i);
|
|
if (codeUnit >= 55296 && codeUnit <= 57343) {
|
|
var trailSurrogate = str.charCodeAt(++i);
|
|
codeUnit =
|
|
(65536 + ((codeUnit & 1023) << 10)) | (trailSurrogate & 1023);
|
|
}
|
|
GROWABLE_HEAP_I32()[(outPtr >>> 2) >>> 0] = codeUnit;
|
|
outPtr += 4;
|
|
if (outPtr + 4 > endPtr) break;
|
|
}
|
|
GROWABLE_HEAP_I32()[(outPtr >>> 2) >>> 0] = 0;
|
|
return outPtr - startPtr;
|
|
};
|
|
var lengthBytesUTF32 = (str) => {
|
|
var len = 0;
|
|
for (var i = 0; i < str.length; ++i) {
|
|
var codeUnit = str.charCodeAt(i);
|
|
if (codeUnit >= 55296 && codeUnit <= 57343) ++i;
|
|
len += 4;
|
|
}
|
|
return len;
|
|
};
|
|
var __embind_register_std_wstring = function (rawType, charSize, name) {
|
|
rawType >>>= 0;
|
|
charSize >>>= 0;
|
|
name >>>= 0;
|
|
name = readLatin1String(name);
|
|
var decodeString, encodeString, getHeap, lengthBytesUTF, shift;
|
|
if (charSize === 2) {
|
|
decodeString = UTF16ToString;
|
|
encodeString = stringToUTF16;
|
|
lengthBytesUTF = lengthBytesUTF16;
|
|
getHeap = () => GROWABLE_HEAP_U16();
|
|
shift = 1;
|
|
} else if (charSize === 4) {
|
|
decodeString = UTF32ToString;
|
|
encodeString = stringToUTF32;
|
|
lengthBytesUTF = lengthBytesUTF32;
|
|
getHeap = () => GROWABLE_HEAP_U32();
|
|
shift = 2;
|
|
}
|
|
registerType(rawType, {
|
|
name: name,
|
|
fromWireType: (value) => {
|
|
var length = GROWABLE_HEAP_U32()[(value >>> 2) >>> 0];
|
|
var HEAP = getHeap();
|
|
var str;
|
|
var decodeStartPtr = value + 4;
|
|
for (var i = 0; i <= length; ++i) {
|
|
var currentBytePtr = value + 4 + i * charSize;
|
|
if (i == length || HEAP[currentBytePtr >>> shift] == 0) {
|
|
var maxReadBytes = currentBytePtr - decodeStartPtr;
|
|
var stringSegment = decodeString(decodeStartPtr, maxReadBytes);
|
|
if (str === undefined) {
|
|
str = stringSegment;
|
|
} else {
|
|
str += String.fromCharCode(0);
|
|
str += stringSegment;
|
|
}
|
|
decodeStartPtr = currentBytePtr + charSize;
|
|
}
|
|
}
|
|
_free(value);
|
|
return str;
|
|
},
|
|
toWireType: (destructors, value) => {
|
|
if (!(typeof value == "string")) {
|
|
throwBindingError(
|
|
`Cannot pass non-string to C++ string type ${name}`,
|
|
);
|
|
}
|
|
var length = lengthBytesUTF(value);
|
|
var ptr = _malloc(4 + length + charSize);
|
|
GROWABLE_HEAP_U32()[ptr >>> 2] = length >> shift;
|
|
encodeString(value, ptr + 4, length + charSize);
|
|
if (destructors !== null) {
|
|
destructors.push(_free, ptr);
|
|
}
|
|
return ptr;
|
|
},
|
|
argPackAdvance: GenericWireTypeSize,
|
|
readValueFromPointer: simpleReadValueFromPointer,
|
|
destructorFunction(ptr) {
|
|
_free(ptr);
|
|
},
|
|
});
|
|
};
|
|
var __embind_register_void = function (rawType, name) {
|
|
rawType >>>= 0;
|
|
name >>>= 0;
|
|
name = readLatin1String(name);
|
|
registerType(rawType, {
|
|
isVoid: true,
|
|
name: name,
|
|
argPackAdvance: 0,
|
|
fromWireType: () => undefined,
|
|
toWireType: (destructors, o) => undefined,
|
|
});
|
|
};
|
|
var nowIsMonotonic = true;
|
|
var __emscripten_get_now_is_monotonic = () => nowIsMonotonic;
|
|
function __emscripten_thread_mailbox_await(pthread_ptr) {
|
|
pthread_ptr >>>= 0;
|
|
if (typeof Atomics.waitAsync === "function") {
|
|
var wait = Atomics.waitAsync(
|
|
GROWABLE_HEAP_I32(),
|
|
pthread_ptr >>> 2,
|
|
pthread_ptr,
|
|
);
|
|
wait.value.then(checkMailbox);
|
|
var waitingAsync = pthread_ptr + 128;
|
|
Atomics.store(GROWABLE_HEAP_I32(), waitingAsync >>> 2, 1);
|
|
}
|
|
}
|
|
Module["__emscripten_thread_mailbox_await"] =
|
|
__emscripten_thread_mailbox_await;
|
|
var checkMailbox = () => {
|
|
var pthread_ptr = _pthread_self();
|
|
if (pthread_ptr) {
|
|
__emscripten_thread_mailbox_await(pthread_ptr);
|
|
callUserCallback(() => __emscripten_check_mailbox());
|
|
}
|
|
};
|
|
Module["checkMailbox"] = checkMailbox;
|
|
var __emscripten_notify_mailbox_postmessage = function (
|
|
targetThreadId,
|
|
currThreadId,
|
|
mainThreadId,
|
|
) {
|
|
targetThreadId >>>= 0;
|
|
currThreadId >>>= 0;
|
|
mainThreadId >>>= 0;
|
|
if (targetThreadId == currThreadId) {
|
|
setTimeout(() => checkMailbox());
|
|
} else if (ENVIRONMENT_IS_PTHREAD) {
|
|
postMessage({ targetThread: targetThreadId, cmd: "checkMailbox" });
|
|
} else {
|
|
var worker = PThread.pthreads[targetThreadId];
|
|
if (!worker) {
|
|
return;
|
|
}
|
|
worker.postMessage({ cmd: "checkMailbox" });
|
|
}
|
|
};
|
|
var withStackSave = (f) => {
|
|
var stack = stackSave();
|
|
var ret = f();
|
|
stackRestore(stack);
|
|
return ret;
|
|
};
|
|
var proxyToMainThread = function (index, sync) {
|
|
var numCallArgs = arguments.length - 2;
|
|
var outerArgs = arguments;
|
|
return withStackSave(() => {
|
|
var serializedNumCallArgs = numCallArgs;
|
|
var args = stackAlloc(serializedNumCallArgs * 8);
|
|
var b = args >>> 3;
|
|
for (var i = 0; i < numCallArgs; i++) {
|
|
var arg = outerArgs[2 + i];
|
|
GROWABLE_HEAP_F64()[(b + i) >>> 0] = arg;
|
|
}
|
|
return __emscripten_run_on_main_thread_js(
|
|
index,
|
|
serializedNumCallArgs,
|
|
args,
|
|
sync,
|
|
);
|
|
});
|
|
};
|
|
var proxiedJSCallArgs = [];
|
|
function __emscripten_receive_on_main_thread_js(
|
|
index,
|
|
callingThread,
|
|
numCallArgs,
|
|
args,
|
|
) {
|
|
callingThread >>>= 0;
|
|
args >>>= 0;
|
|
proxiedJSCallArgs.length = numCallArgs;
|
|
var b = args >>> 3;
|
|
for (var i = 0; i < numCallArgs; i++) {
|
|
proxiedJSCallArgs[i] = GROWABLE_HEAP_F64()[(b + i) >>> 0];
|
|
}
|
|
var func = proxiedFunctionTable[index];
|
|
PThread.currentProxiedOperationCallerThread = callingThread;
|
|
var rtn = func.apply(null, proxiedJSCallArgs);
|
|
PThread.currentProxiedOperationCallerThread = 0;
|
|
return rtn;
|
|
}
|
|
function __emscripten_runtime_keepalive_clear() {
|
|
if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(20, 1);
|
|
noExitRuntime = false;
|
|
runtimeKeepaliveCounter = 0;
|
|
}
|
|
function __emscripten_thread_set_strongref(thread) {
|
|
thread >>>= 0;
|
|
if (ENVIRONMENT_IS_NODE) {
|
|
PThread.pthreads[thread].ref();
|
|
}
|
|
}
|
|
function __emval_as(handle, returnType, destructorsRef) {
|
|
handle >>>= 0;
|
|
returnType >>>= 0;
|
|
destructorsRef >>>= 0;
|
|
handle = Emval.toValue(handle);
|
|
returnType = requireRegisteredType(returnType, "emval::as");
|
|
var destructors = [];
|
|
var rd = Emval.toHandle(destructors);
|
|
GROWABLE_HEAP_U32()[(destructorsRef >>> 2) >>> 0] = rd;
|
|
return returnType["toWireType"](destructors, handle);
|
|
}
|
|
function __emval_as_int64(handle, returnType) {
|
|
handle >>>= 0;
|
|
returnType >>>= 0;
|
|
handle = Emval.toValue(handle);
|
|
returnType = requireRegisteredType(returnType, "emval::as");
|
|
return returnType["toWireType"](null, handle);
|
|
}
|
|
function __emval_as_uint64(handle, returnType) {
|
|
handle >>>= 0;
|
|
returnType >>>= 0;
|
|
handle = Emval.toValue(handle);
|
|
returnType = requireRegisteredType(returnType, "emval::as");
|
|
return returnType["toWireType"](null, handle);
|
|
}
|
|
var emval_lookupTypes = (argCount, argTypes) => {
|
|
var a = new Array(argCount);
|
|
for (var i = 0; i < argCount; ++i) {
|
|
a[i] = requireRegisteredType(
|
|
GROWABLE_HEAP_U32()[((argTypes + i * 4) >>> 2) >>> 0],
|
|
"parameter " + i,
|
|
);
|
|
}
|
|
return a;
|
|
};
|
|
function __emval_call(handle, argCount, argTypes, argv) {
|
|
handle >>>= 0;
|
|
argTypes >>>= 0;
|
|
argv >>>= 0;
|
|
handle = Emval.toValue(handle);
|
|
var types = emval_lookupTypes(argCount, argTypes);
|
|
var args = new Array(argCount);
|
|
for (var i = 0; i < argCount; ++i) {
|
|
var type = types[i];
|
|
args[i] = type["readValueFromPointer"](argv);
|
|
argv += type["argPackAdvance"];
|
|
}
|
|
var rv = handle.apply(undefined, args);
|
|
return Emval.toHandle(rv);
|
|
}
|
|
var emval_symbols = {};
|
|
var getStringOrSymbol = (address) => {
|
|
var symbol = emval_symbols[address];
|
|
if (symbol === undefined) {
|
|
return readLatin1String(address);
|
|
}
|
|
return symbol;
|
|
};
|
|
var emval_methodCallers = [];
|
|
function __emval_call_method(
|
|
caller,
|
|
handle,
|
|
methodName,
|
|
destructorsRef,
|
|
args,
|
|
) {
|
|
caller >>>= 0;
|
|
handle >>>= 0;
|
|
methodName >>>= 0;
|
|
destructorsRef >>>= 0;
|
|
args >>>= 0;
|
|
caller = emval_methodCallers[caller];
|
|
handle = Emval.toValue(handle);
|
|
methodName = getStringOrSymbol(methodName);
|
|
var destructors = [];
|
|
var result = caller(handle, methodName, destructors, args);
|
|
if (destructors.length) {
|
|
GROWABLE_HEAP_U32()[(destructorsRef >>> 2) >>> 0] =
|
|
Emval.toHandle(destructors);
|
|
}
|
|
return result;
|
|
}
|
|
function __emval_equals(first, second) {
|
|
first >>>= 0;
|
|
second >>>= 0;
|
|
first = Emval.toValue(first);
|
|
second = Emval.toValue(second);
|
|
return first == second;
|
|
}
|
|
var emval_get_global = () => {
|
|
if (typeof globalThis == "object") {
|
|
return globalThis;
|
|
}
|
|
return (function () {
|
|
return Function;
|
|
})()("return this")();
|
|
};
|
|
function __emval_get_global(name) {
|
|
name >>>= 0;
|
|
if (name === 0) {
|
|
return Emval.toHandle(emval_get_global());
|
|
} else {
|
|
name = getStringOrSymbol(name);
|
|
return Emval.toHandle(emval_get_global()[name]);
|
|
}
|
|
}
|
|
var emval_addMethodCaller = (caller) => {
|
|
var id = emval_methodCallers.length;
|
|
emval_methodCallers.push(caller);
|
|
return id;
|
|
};
|
|
function __emval_get_method_caller(argCount, argTypes) {
|
|
argTypes >>>= 0;
|
|
var types = emval_lookupTypes(argCount, argTypes);
|
|
var retType = types.shift();
|
|
argCount--;
|
|
var params = ["retType"];
|
|
var args = [retType];
|
|
var argsList = "";
|
|
for (var i = 0; i < argCount; ++i) {
|
|
argsList += (i !== 0 ? ", " : "") + "arg" + i;
|
|
params.push("argType" + i);
|
|
args.push(types[i]);
|
|
}
|
|
var signatureName =
|
|
retType.name + "_$" + types.map((t) => t.name).join("_") + "$";
|
|
var functionName = makeLegalFunctionName("methodCaller_" + signatureName);
|
|
var functionBody =
|
|
"return function " +
|
|
functionName +
|
|
"(handle, name, destructors, args) {\n";
|
|
var offset = 0;
|
|
for (var i = 0; i < argCount; ++i) {
|
|
functionBody +=
|
|
" var arg" +
|
|
i +
|
|
" = argType" +
|
|
i +
|
|
".readValueFromPointer(args" +
|
|
(offset ? "+" + offset : "") +
|
|
");\n";
|
|
offset += types[i]["argPackAdvance"];
|
|
}
|
|
functionBody += " var rv = handle[name](" + argsList + ");\n";
|
|
for (var i = 0; i < argCount; ++i) {
|
|
if (types[i]["deleteObject"]) {
|
|
functionBody += " argType" + i + ".deleteObject(arg" + i + ");\n";
|
|
}
|
|
}
|
|
if (!retType.isVoid) {
|
|
functionBody += " return retType.toWireType(destructors, rv);\n";
|
|
}
|
|
functionBody += "};\n";
|
|
params.push(functionBody);
|
|
var invokerFunction = newFunc(Function, params).apply(null, args);
|
|
return emval_addMethodCaller(invokerFunction);
|
|
}
|
|
function __emval_get_property(handle, key) {
|
|
handle >>>= 0;
|
|
key >>>= 0;
|
|
handle = Emval.toValue(handle);
|
|
key = Emval.toValue(key);
|
|
return Emval.toHandle(handle[key]);
|
|
}
|
|
function __emval_incref(handle) {
|
|
handle >>>= 0;
|
|
if (handle > 4) {
|
|
emval_handles.get(handle).refcount += 1;
|
|
}
|
|
}
|
|
function __emval_instanceof(object, constructor) {
|
|
object >>>= 0;
|
|
constructor >>>= 0;
|
|
object = Emval.toValue(object);
|
|
constructor = Emval.toValue(constructor);
|
|
return object instanceof constructor;
|
|
}
|
|
function __emval_new_array() {
|
|
return Emval.toHandle([]);
|
|
}
|
|
function __emval_new_cstring(v) {
|
|
v >>>= 0;
|
|
return Emval.toHandle(getStringOrSymbol(v));
|
|
}
|
|
function __emval_new_object() {
|
|
return Emval.toHandle({});
|
|
}
|
|
function __emval_run_destructors(handle) {
|
|
handle >>>= 0;
|
|
var destructors = Emval.toValue(handle);
|
|
runDestructors(destructors);
|
|
__emval_decref(handle);
|
|
}
|
|
function __emval_set_property(handle, key, value) {
|
|
handle >>>= 0;
|
|
key >>>= 0;
|
|
value >>>= 0;
|
|
handle = Emval.toValue(handle);
|
|
key = Emval.toValue(key);
|
|
value = Emval.toValue(value);
|
|
handle[key] = value;
|
|
}
|
|
function __emval_take_value(type, arg) {
|
|
type >>>= 0;
|
|
arg >>>= 0;
|
|
type = requireRegisteredType(type, "_emval_take_value");
|
|
var v = type["readValueFromPointer"](arg);
|
|
return Emval.toHandle(v);
|
|
}
|
|
function __emval_typeof(handle) {
|
|
handle >>>= 0;
|
|
handle = Emval.toValue(handle);
|
|
return Emval.toHandle(typeof handle);
|
|
}
|
|
function __mmap_js(
|
|
len,
|
|
prot,
|
|
flags,
|
|
fd,
|
|
offset_low,
|
|
offset_high,
|
|
allocated,
|
|
addr,
|
|
) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(
|
|
21,
|
|
1,
|
|
len,
|
|
prot,
|
|
flags,
|
|
fd,
|
|
offset_low,
|
|
offset_high,
|
|
allocated,
|
|
addr,
|
|
);
|
|
len >>>= 0;
|
|
var offset = convertI32PairToI53Checked(offset_low, offset_high);
|
|
allocated >>>= 0;
|
|
addr >>>= 0;
|
|
try {
|
|
if (isNaN(offset)) return 61;
|
|
var stream = SYSCALLS.getStreamFromFD(fd);
|
|
var res = FS.mmap(stream, len, offset, prot, flags);
|
|
var ptr = res.ptr;
|
|
GROWABLE_HEAP_I32()[(allocated >>> 2) >>> 0] = res.allocated;
|
|
GROWABLE_HEAP_U32()[(addr >>> 2) >>> 0] = ptr;
|
|
return 0;
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
function __munmap_js(addr, len, prot, flags, fd, offset_low, offset_high) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(
|
|
22,
|
|
1,
|
|
addr,
|
|
len,
|
|
prot,
|
|
flags,
|
|
fd,
|
|
offset_low,
|
|
offset_high,
|
|
);
|
|
addr >>>= 0;
|
|
len >>>= 0;
|
|
var offset = convertI32PairToI53Checked(offset_low, offset_high);
|
|
try {
|
|
if (isNaN(offset)) return 61;
|
|
var stream = SYSCALLS.getStreamFromFD(fd);
|
|
if (prot & 2) {
|
|
SYSCALLS.doMsync(addr, stream, len, flags, offset);
|
|
}
|
|
FS.munmap(stream);
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return -e.errno;
|
|
}
|
|
}
|
|
var timers = {};
|
|
var _emscripten_get_now;
|
|
_emscripten_get_now = () => performance.timeOrigin + performance.now();
|
|
function __setitimer_js(which, timeout_ms) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(23, 1, which, timeout_ms);
|
|
if (timers[which]) {
|
|
clearTimeout(timers[which].id);
|
|
delete timers[which];
|
|
}
|
|
if (!timeout_ms) return 0;
|
|
var id = setTimeout(() => {
|
|
delete timers[which];
|
|
callUserCallback(() =>
|
|
__emscripten_timeout(which, _emscripten_get_now()),
|
|
);
|
|
}, timeout_ms);
|
|
timers[which] = { id: id, timeout_ms: timeout_ms };
|
|
return 0;
|
|
}
|
|
var _abort = () => {
|
|
abort("");
|
|
};
|
|
var warnOnce = (text) => {
|
|
if (!warnOnce.shown) warnOnce.shown = {};
|
|
if (!warnOnce.shown[text]) {
|
|
warnOnce.shown[text] = 1;
|
|
if (ENVIRONMENT_IS_NODE) text = "warning: " + text;
|
|
err(text);
|
|
}
|
|
};
|
|
var _emscripten_check_blocking_allowed = () => {};
|
|
var _emscripten_date_now = () => Date.now();
|
|
var _emscripten_exit_with_live_runtime = () => {
|
|
runtimeKeepalivePush();
|
|
throw "unwind";
|
|
};
|
|
function _emscripten_force_exit(status) {
|
|
if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(24, 1, status);
|
|
__emscripten_runtime_keepalive_clear();
|
|
_exit(status);
|
|
}
|
|
var getHeapMax = () => 4294901760;
|
|
function _emscripten_get_heap_max() {
|
|
return getHeapMax();
|
|
}
|
|
var _emscripten_num_logical_cores = () => {
|
|
if (ENVIRONMENT_IS_NODE) return require("os").cpus().length;
|
|
return navigator["hardwareConcurrency"];
|
|
};
|
|
var growMemory = (size) => {
|
|
var b = wasmMemory.buffer;
|
|
var pages = (size - b.byteLength + 65535) / 65536;
|
|
try {
|
|
wasmMemory.grow(pages);
|
|
updateMemoryViews();
|
|
return 1;
|
|
} catch (e) {}
|
|
};
|
|
function _emscripten_resize_heap(requestedSize) {
|
|
requestedSize >>>= 0;
|
|
var oldSize = GROWABLE_HEAP_U8().length;
|
|
if (requestedSize <= oldSize) {
|
|
return false;
|
|
}
|
|
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 + 0.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 < str.length; ++i) {
|
|
GROWABLE_HEAP_I8()[(buffer++ >>> 0) >>> 0] = str.charCodeAt(i);
|
|
}
|
|
GROWABLE_HEAP_I8()[(buffer >>> 0) >>> 0] = 0;
|
|
};
|
|
var _environ_get = function (__environ, environ_buf) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(25, 1, __environ, environ_buf);
|
|
__environ >>>= 0;
|
|
environ_buf >>>= 0;
|
|
var bufSize = 0;
|
|
getEnvStrings().forEach((string, i) => {
|
|
var ptr = environ_buf + bufSize;
|
|
GROWABLE_HEAP_U32()[((__environ + i * 4) >>> 2) >>> 0] = ptr;
|
|
stringToAscii(string, ptr);
|
|
bufSize += string.length + 1;
|
|
});
|
|
return 0;
|
|
};
|
|
var _environ_sizes_get = function (penviron_count, penviron_buf_size) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(26, 1, penviron_count, penviron_buf_size);
|
|
penviron_count >>>= 0;
|
|
penviron_buf_size >>>= 0;
|
|
var strings = getEnvStrings();
|
|
GROWABLE_HEAP_U32()[(penviron_count >>> 2) >>> 0] = strings.length;
|
|
var bufSize = 0;
|
|
strings.forEach((string) => (bufSize += string.length + 1));
|
|
GROWABLE_HEAP_U32()[(penviron_buf_size >>> 2) >>> 0] = bufSize;
|
|
return 0;
|
|
};
|
|
function _fd_close(fd) {
|
|
if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(27, 1, 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;
|
|
}
|
|
}
|
|
function _fd_fdstat_get(fd, pbuf) {
|
|
if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(28, 1, fd, pbuf);
|
|
pbuf >>>= 0;
|
|
try {
|
|
var rightsBase = 0;
|
|
var rightsInheriting = 0;
|
|
var flags = 0;
|
|
{
|
|
var stream = SYSCALLS.getStreamFromFD(fd);
|
|
var type = stream.tty
|
|
? 2
|
|
: FS.isDir(stream.mode)
|
|
? 3
|
|
: FS.isLink(stream.mode)
|
|
? 7
|
|
: 4;
|
|
}
|
|
GROWABLE_HEAP_I8()[(pbuf >>> 0) >>> 0] = type;
|
|
GROWABLE_HEAP_I16()[((pbuf + 2) >>> 1) >>> 0] = flags;
|
|
(tempI64 = [
|
|
rightsBase >>> 0,
|
|
((tempDouble = rightsBase),
|
|
+Math.abs(tempDouble) >= 1
|
|
? tempDouble > 0
|
|
? +Math.floor(tempDouble / 4294967296) >>> 0
|
|
: ~~+Math.ceil(
|
|
(tempDouble - +(~~tempDouble >>> 0)) / 4294967296,
|
|
) >>> 0
|
|
: 0),
|
|
]),
|
|
(GROWABLE_HEAP_I32()[((pbuf + 8) >>> 2) >>> 0] = tempI64[0]),
|
|
(GROWABLE_HEAP_I32()[((pbuf + 12) >>> 2) >>> 0] = tempI64[1]);
|
|
(tempI64 = [
|
|
rightsInheriting >>> 0,
|
|
((tempDouble = rightsInheriting),
|
|
+Math.abs(tempDouble) >= 1
|
|
? tempDouble > 0
|
|
? +Math.floor(tempDouble / 4294967296) >>> 0
|
|
: ~~+Math.ceil(
|
|
(tempDouble - +(~~tempDouble >>> 0)) / 4294967296,
|
|
) >>> 0
|
|
: 0),
|
|
]),
|
|
(GROWABLE_HEAP_I32()[((pbuf + 16) >>> 2) >>> 0] = tempI64[0]),
|
|
(GROWABLE_HEAP_I32()[((pbuf + 20) >>> 2) >>> 0] = tempI64[1]);
|
|
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 < iovcnt; i++) {
|
|
var ptr = GROWABLE_HEAP_U32()[(iov >>> 2) >>> 0];
|
|
var len = GROWABLE_HEAP_U32()[((iov + 4) >>> 2) >>> 0];
|
|
iov += 8;
|
|
var curr = FS.read(stream, GROWABLE_HEAP_I8(), ptr, len, offset);
|
|
if (curr < 0) return -1;
|
|
ret += curr;
|
|
if (curr < len) break;
|
|
if (typeof offset !== "undefined") {
|
|
offset += curr;
|
|
}
|
|
}
|
|
return ret;
|
|
};
|
|
function _fd_pread(fd, iov, iovcnt, offset_low, offset_high, pnum) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(
|
|
29,
|
|
1,
|
|
fd,
|
|
iov,
|
|
iovcnt,
|
|
offset_low,
|
|
offset_high,
|
|
pnum,
|
|
);
|
|
iov >>>= 0;
|
|
iovcnt >>>= 0;
|
|
var offset = convertI32PairToI53Checked(offset_low, offset_high);
|
|
pnum >>>= 0;
|
|
try {
|
|
if (isNaN(offset)) return 61;
|
|
var stream = SYSCALLS.getStreamFromFD(fd);
|
|
var num = doReadv(stream, iov, iovcnt, offset);
|
|
GROWABLE_HEAP_U32()[(pnum >>> 2) >>> 0] = num;
|
|
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 < iovcnt; i++) {
|
|
var ptr = GROWABLE_HEAP_U32()[(iov >>> 2) >>> 0];
|
|
var len = GROWABLE_HEAP_U32()[((iov + 4) >>> 2) >>> 0];
|
|
iov += 8;
|
|
var curr = FS.write(stream, GROWABLE_HEAP_I8(), ptr, len, offset);
|
|
if (curr < 0) return -1;
|
|
ret += curr;
|
|
if (typeof offset !== "undefined") {
|
|
offset += curr;
|
|
}
|
|
}
|
|
return ret;
|
|
};
|
|
function _fd_pwrite(fd, iov, iovcnt, offset_low, offset_high, pnum) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(
|
|
30,
|
|
1,
|
|
fd,
|
|
iov,
|
|
iovcnt,
|
|
offset_low,
|
|
offset_high,
|
|
pnum,
|
|
);
|
|
iov >>>= 0;
|
|
iovcnt >>>= 0;
|
|
var offset = convertI32PairToI53Checked(offset_low, offset_high);
|
|
pnum >>>= 0;
|
|
try {
|
|
if (isNaN(offset)) return 61;
|
|
var stream = SYSCALLS.getStreamFromFD(fd);
|
|
var num = doWritev(stream, iov, iovcnt, offset);
|
|
GROWABLE_HEAP_U32()[(pnum >>> 2) >>> 0] = num;
|
|
return 0;
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return e.errno;
|
|
}
|
|
}
|
|
function _fd_read(fd, iov, iovcnt, pnum) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(31, 1, fd, iov, iovcnt, pnum);
|
|
iov >>>= 0;
|
|
iovcnt >>>= 0;
|
|
pnum >>>= 0;
|
|
try {
|
|
var stream = SYSCALLS.getStreamFromFD(fd);
|
|
var num = doReadv(stream, iov, iovcnt);
|
|
GROWABLE_HEAP_U32()[(pnum >>> 2) >>> 0] = num;
|
|
return 0;
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return e.errno;
|
|
}
|
|
}
|
|
function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(
|
|
32,
|
|
1,
|
|
fd,
|
|
offset_low,
|
|
offset_high,
|
|
whence,
|
|
newOffset,
|
|
);
|
|
var offset = convertI32PairToI53Checked(offset_low, offset_high);
|
|
newOffset >>>= 0;
|
|
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),
|
|
]),
|
|
(GROWABLE_HEAP_I32()[(newOffset >>> 2) >>> 0] = tempI64[0]),
|
|
(GROWABLE_HEAP_I32()[((newOffset + 4) >>> 2) >>> 0] = 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;
|
|
}
|
|
}
|
|
function _fd_write(fd, iov, iovcnt, pnum) {
|
|
if (ENVIRONMENT_IS_PTHREAD)
|
|
return proxyToMainThread(33, 1, fd, iov, iovcnt, pnum);
|
|
iov >>>= 0;
|
|
iovcnt >>>= 0;
|
|
pnum >>>= 0;
|
|
try {
|
|
var stream = SYSCALLS.getStreamFromFD(fd);
|
|
var num = doWritev(stream, iov, iovcnt);
|
|
GROWABLE_HEAP_U32()[(pnum >>> 2) >>> 0] = num;
|
|
return 0;
|
|
} catch (e) {
|
|
if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
|
|
return e.errno;
|
|
}
|
|
}
|
|
function _llvm_eh_typeid_for(type) {
|
|
type >>>= 0;
|
|
return type;
|
|
}
|
|
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++]) {}
|
|
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()) {
|
|
days -= daysInCurrentMonth - newDate.getDate() + 1;
|
|
newDate.setDate(1);
|
|
if (currentMonth < 11) {
|
|
newDate.setMonth(currentMonth + 1);
|
|
} else {
|
|
newDate.setMonth(0);
|
|
newDate.setFullYear(newDate.getFullYear() + 1);
|
|
}
|
|
} else {
|
|
newDate.setDate(newDate.getDate() + days);
|
|
return newDate;
|
|
}
|
|
}
|
|
return newDate;
|
|
};
|
|
var writeArrayToMemory = (array, buffer) => {
|
|
GROWABLE_HEAP_I8().set(array, buffer >>> 0);
|
|
};
|
|
function _strftime(s, maxsize, format, tm) {
|
|
s >>>= 0;
|
|
maxsize >>>= 0;
|
|
format >>>= 0;
|
|
tm >>>= 0;
|
|
var tm_zone = GROWABLE_HEAP_U32()[((tm + 40) >>> 2) >>> 0];
|
|
var date = {
|
|
tm_sec: GROWABLE_HEAP_I32()[(tm >>> 2) >>> 0],
|
|
tm_min: GROWABLE_HEAP_I32()[((tm + 4) >>> 2) >>> 0],
|
|
tm_hour: GROWABLE_HEAP_I32()[((tm + 8) >>> 2) >>> 0],
|
|
tm_mday: GROWABLE_HEAP_I32()[((tm + 12) >>> 2) >>> 0],
|
|
tm_mon: GROWABLE_HEAP_I32()[((tm + 16) >>> 2) >>> 0],
|
|
tm_year: GROWABLE_HEAP_I32()[((tm + 20) >>> 2) >>> 0],
|
|
tm_wday: GROWABLE_HEAP_I32()[((tm + 24) >>> 2) >>> 0],
|
|
tm_yday: GROWABLE_HEAP_I32()[((tm + 28) >>> 2) >>> 0],
|
|
tm_isdst: GROWABLE_HEAP_I32()[((tm + 32) >>> 2) >>> 0],
|
|
tm_gmtoff: GROWABLE_HEAP_I32()[((tm + 36) >>> 2) >>> 0],
|
|
tm_zone: tm_zone ? UTF8ToString(tm_zone) : "",
|
|
};
|
|
var pattern = UTF8ToString(format);
|
|
var EXPANSION_RULES_1 = {
|
|
"%c": "%a %b %d %H:%M:%S %Y",
|
|
"%D": "%m/%d/%y",
|
|
"%F": "%Y-%m-%d",
|
|
"%h": "%b",
|
|
"%r": "%I:%M:%S %p",
|
|
"%R": "%H:%M",
|
|
"%T": "%H:%M:%S",
|
|
"%x": "%m/%d/%y",
|
|
"%X": "%H:%M:%S",
|
|
"%Ec": "%c",
|
|
"%EC": "%C",
|
|
"%Ex": "%m/%d/%y",
|
|
"%EX": "%H:%M:%S",
|
|
"%Ey": "%y",
|
|
"%EY": "%Y",
|
|
"%Od": "%d",
|
|
"%Oe": "%e",
|
|
"%OH": "%H",
|
|
"%OI": "%I",
|
|
"%Om": "%m",
|
|
"%OM": "%M",
|
|
"%OS": "%S",
|
|
"%Ou": "%u",
|
|
"%OU": "%U",
|
|
"%OV": "%V",
|
|
"%Ow": "%w",
|
|
"%OW": "%W",
|
|
"%Oy": "%y",
|
|
};
|
|
for (var rule in EXPANSION_RULES_1) {
|
|
pattern = pattern.replace(
|
|
new RegExp(rule, "g"),
|
|
EXPANSION_RULES_1[rule],
|
|
);
|
|
}
|
|
var WEEKDAYS = [
|
|
"Sunday",
|
|
"Monday",
|
|
"Tuesday",
|
|
"Wednesday",
|
|
"Thursday",
|
|
"Friday",
|
|
"Saturday",
|
|
];
|
|
var MONTHS = [
|
|
"January",
|
|
"February",
|
|
"March",
|
|
"April",
|
|
"May",
|
|
"June",
|
|
"July",
|
|
"August",
|
|
"September",
|
|
"October",
|
|
"November",
|
|
"December",
|
|
];
|
|
function leadingSomething(value, digits, character) {
|
|
var str = typeof value == "number" ? value.toString() : value || "";
|
|
while (str.length < digits) {
|
|
str = character[0] + str;
|
|
}
|
|
return str;
|
|
}
|
|
function leadingNulls(value, digits) {
|
|
return leadingSomething(value, digits, "0");
|
|
}
|
|
function compareByDay(date1, date2) {
|
|
function sgn(value) {
|
|
return value < 0 ? -1 : value > 0 ? 1 : 0;
|
|
}
|
|
var compare;
|
|
if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {
|
|
if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {
|
|
compare = sgn(date1.getDate() - date2.getDate());
|
|
}
|
|
}
|
|
return compare;
|
|
}
|
|
function getFirstWeekStartDate(janFourth) {
|
|
switch (janFourth.getDay()) {
|
|
case 0:
|
|
return new Date(janFourth.getFullYear() - 1, 11, 29);
|
|
case 1:
|
|
return janFourth;
|
|
case 2:
|
|
return new Date(janFourth.getFullYear(), 0, 3);
|
|
case 3:
|
|
return new Date(janFourth.getFullYear(), 0, 2);
|
|
case 4:
|
|
return new Date(janFourth.getFullYear(), 0, 1);
|
|
case 5:
|
|
return new Date(janFourth.getFullYear() - 1, 11, 31);
|
|
case 6:
|
|
return new Date(janFourth.getFullYear() - 1, 11, 30);
|
|
}
|
|
}
|
|
function getWeekBasedYear(date) {
|
|
var thisDate = addDays(
|
|
new Date(date.tm_year + 1900, 0, 1),
|
|
date.tm_yday,
|
|
);
|
|
var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);
|
|
var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);
|
|
var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
|
|
var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
|
|
if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {
|
|
if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {
|
|
return thisDate.getFullYear() + 1;
|
|
}
|
|
return thisDate.getFullYear();
|
|
}
|
|
return thisDate.getFullYear() - 1;
|
|
}
|
|
var EXPANSION_RULES_2 = {
|
|
"%a": (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) => getWeekBasedYear(date).toString().substring(2),
|
|
"%G": (date) => getWeekBasedYear(date),
|
|
"%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) =>
|
|
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) => {
|
|
var val = Math.floor(
|
|
(date.tm_yday + 7 - ((date.tm_wday + 6) % 7)) / 7,
|
|
);
|
|
if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) {
|
|
val++;
|
|
}
|
|
if (!val) {
|
|
val = 52;
|
|
var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;
|
|
if (
|
|
dec31 == 4 ||
|
|
(dec31 == 5 && isLeapYear((date.tm_year % 400) - 1))
|
|
) {
|
|
val++;
|
|
}
|
|
} else if (val == 53) {
|
|
var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;
|
|
if (jan1 != 4 && (jan1 != 3 || !isLeapYear(date.tm_year))) val = 1;
|
|
}
|
|
return leadingNulls(val, 2);
|
|
},
|
|
"%w": (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) => (date.tm_year + 1900).toString().substring(2),
|
|
"%Y": (date) => date.tm_year + 1900,
|
|
"%z": (date) => {
|
|
var off = date.tm_gmtoff;
|
|
var ahead = off >= 0;
|
|
off = Math.abs(off) / 60;
|
|
off = (off / 60) * 100 + (off % 60);
|
|
return (ahead ? "+" : "-") + String("0000" + off).slice(-4);
|
|
},
|
|
"%Z": (date) => date.tm_zone,
|
|
"%%": () => "%",
|
|
};
|
|
pattern = pattern.replace(/%%/g, "\0\0");
|
|
for (var rule in EXPANSION_RULES_2) {
|
|
if (pattern.includes(rule)) {
|
|
pattern = pattern.replace(
|
|
new RegExp(rule, "g"),
|
|
EXPANSION_RULES_2[rule](date),
|
|
);
|
|
}
|
|
}
|
|
pattern = pattern.replace(/\0\0/g, "%");
|
|
var bytes = intArrayFromString(pattern, false);
|
|
if (bytes.length > maxsize) {
|
|
return 0;
|
|
}
|
|
writeArrayToMemory(bytes, s);
|
|
return bytes.length - 1;
|
|
}
|
|
function _strftime_l(s, maxsize, format, tm, loc) {
|
|
s >>>= 0;
|
|
maxsize >>>= 0;
|
|
format >>>= 0;
|
|
tm >>>= 0;
|
|
loc >>>= 0;
|
|
return _strftime(s, maxsize, format, tm);
|
|
}
|
|
PThread.init();
|
|
var FSNode = function (parent, name, mode, rdev) {
|
|
if (!parent) {
|
|
parent = this;
|
|
}
|
|
this.parent = parent;
|
|
this.mount = parent.mount;
|
|
this.mounted = null;
|
|
this.id = FS.nextInode++;
|
|
this.name = name;
|
|
this.mode = mode;
|
|
this.node_ops = {};
|
|
this.stream_ops = {};
|
|
this.rdev = rdev;
|
|
};
|
|
var readMode = 292 | 73;
|
|
var writeMode = 146;
|
|
Object.defineProperties(FSNode.prototype, {
|
|
read: {
|
|
get: function () {
|
|
return (this.mode & readMode) === readMode;
|
|
},
|
|
set: function (val) {
|
|
val ? (this.mode |= readMode) : (this.mode &= ~readMode);
|
|
},
|
|
},
|
|
write: {
|
|
get: function () {
|
|
return (this.mode & writeMode) === writeMode;
|
|
},
|
|
set: function (val) {
|
|
val ? (this.mode |= writeMode) : (this.mode &= ~writeMode);
|
|
},
|
|
},
|
|
isFolder: {
|
|
get: function () {
|
|
return FS.isDir(this.mode);
|
|
},
|
|
},
|
|
isDevice: {
|
|
get: function () {
|
|
return FS.isChrdev(this.mode);
|
|
},
|
|
},
|
|
});
|
|
FS.FSNode = FSNode;
|
|
FS.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;
|
|
embind_init_charCodes();
|
|
BindingError = Module["BindingError"] = class BindingError extends Error {
|
|
constructor(message) {
|
|
super(message);
|
|
this.name = "BindingError";
|
|
}
|
|
};
|
|
InternalError = Module["InternalError"] = class InternalError extends (
|
|
Error
|
|
) {
|
|
constructor(message) {
|
|
super(message);
|
|
this.name = "InternalError";
|
|
}
|
|
};
|
|
init_ClassHandle();
|
|
init_embind();
|
|
init_RegisteredPointer();
|
|
UnboundTypeError = Module["UnboundTypeError"] = extendError(
|
|
Error,
|
|
"UnboundTypeError",
|
|
);
|
|
handleAllocatorInit();
|
|
init_emval();
|
|
var proxiedFunctionTable = [
|
|
_proc_exit,
|
|
exitOnMainThread,
|
|
pthreadCreateProxied,
|
|
___syscall_chmod,
|
|
___syscall_faccessat,
|
|
___syscall_fadvise64,
|
|
___syscall_fchmod,
|
|
___syscall_fcntl64,
|
|
___syscall_fstat64,
|
|
___syscall_getcwd,
|
|
___syscall_getdents64,
|
|
___syscall_ioctl,
|
|
___syscall_lstat64,
|
|
___syscall_mkdirat,
|
|
___syscall_newfstatat,
|
|
___syscall_openat,
|
|
___syscall_readlinkat,
|
|
___syscall_renameat,
|
|
___syscall_stat64,
|
|
___syscall_unlinkat,
|
|
__emscripten_runtime_keepalive_clear,
|
|
__mmap_js,
|
|
__munmap_js,
|
|
__setitimer_js,
|
|
_emscripten_force_exit,
|
|
_environ_get,
|
|
_environ_sizes_get,
|
|
_fd_close,
|
|
_fd_fdstat_get,
|
|
_fd_pread,
|
|
_fd_pwrite,
|
|
_fd_read,
|
|
_fd_seek,
|
|
_fd_write,
|
|
];
|
|
var wasmImports = {
|
|
Qb: __asyncjs__fetch_asset,
|
|
Lc: ___call_sighandler,
|
|
r: ___cxa_begin_catch,
|
|
D: ___cxa_end_catch,
|
|
b: ___cxa_find_matching_catch_2,
|
|
l: ___cxa_find_matching_catch_3,
|
|
Na: ___cxa_find_matching_catch_4,
|
|
nb: ___cxa_get_exception_ptr,
|
|
Ua: ___cxa_rethrow,
|
|
Bc: ___cxa_rethrow_primary_exception,
|
|
y: ___cxa_throw,
|
|
Cc: ___cxa_uncaught_exceptions,
|
|
Rc: ___emscripten_init_main_thread_js,
|
|
bb: ___emscripten_thread_cleanup,
|
|
Nc: ___pthread_create_js,
|
|
f: ___resumeException,
|
|
gb: ___syscall_chmod,
|
|
$c: ___syscall_faccessat,
|
|
_b: ___syscall_fadvise64,
|
|
Xc: ___syscall_fchmod,
|
|
hb: ___syscall_fcntl64,
|
|
Wc: ___syscall_fstat64,
|
|
Sc: ___syscall_getcwd,
|
|
Kc: ___syscall_getdents64,
|
|
cd: ___syscall_ioctl,
|
|
Tc: ___syscall_lstat64,
|
|
Pc: ___syscall_mkdirat,
|
|
Uc: ___syscall_newfstatat,
|
|
eb: ___syscall_openat,
|
|
Jc: ___syscall_readlinkat,
|
|
Ic: ___syscall_renameat,
|
|
Vc: ___syscall_stat64,
|
|
Ec: ___syscall_unlinkat,
|
|
cc: __embind_register_bigint,
|
|
gd: __embind_register_bool,
|
|
H: __embind_register_class,
|
|
da: __embind_register_class_class_function,
|
|
wa: __embind_register_class_class_property,
|
|
N: __embind_register_class_constructor,
|
|
z: __embind_register_class_function,
|
|
x: __embind_register_class_property,
|
|
fd: __embind_register_emval,
|
|
sb: __embind_register_enum,
|
|
Ea: __embind_register_enum_value,
|
|
jb: __embind_register_float,
|
|
ld: __embind_register_function,
|
|
oa: __embind_register_integer,
|
|
T: __embind_register_memory_view,
|
|
qa: __embind_register_smart_ptr,
|
|
ib: __embind_register_std_string,
|
|
Wa: __embind_register_std_wstring,
|
|
hd: __embind_register_void,
|
|
_c: __emscripten_get_now_is_monotonic,
|
|
Fc: __emscripten_notify_mailbox_postmessage,
|
|
Oc: __emscripten_receive_on_main_thread_js,
|
|
Mc: __emscripten_runtime_keepalive_clear,
|
|
Qc: __emscripten_thread_mailbox_await,
|
|
Zc: __emscripten_thread_set_strongref,
|
|
ra: __emval_as,
|
|
lc: __emval_as_int64,
|
|
kc: __emval_as_uint64,
|
|
Ha: __emval_call,
|
|
la: __emval_call_method,
|
|
yd: __emval_decref,
|
|
kd: __emval_equals,
|
|
od: __emval_get_global,
|
|
ka: __emval_get_method_caller,
|
|
Ad: __emval_get_property,
|
|
$a: __emval_incref,
|
|
pd: __emval_instanceof,
|
|
Ub: __emval_new_array,
|
|
Rb: __emval_new_cstring,
|
|
Tb: __emval_new_object,
|
|
Vb: __emval_run_destructors,
|
|
Sb: __emval_set_property,
|
|
F: __emval_take_value,
|
|
qd: __emval_typeof,
|
|
$b: __mmap_js,
|
|
ac: __munmap_js,
|
|
ab: __setitimer_js,
|
|
fa: _abort,
|
|
Pb: addToLoadedFiles,
|
|
rd: downloadJS,
|
|
cb: _emscripten_check_blocking_allowed,
|
|
fb: _emscripten_date_now,
|
|
Yc: _emscripten_exit_with_live_runtime,
|
|
tb: _emscripten_force_exit,
|
|
Gc: _emscripten_get_heap_max,
|
|
ba: _emscripten_get_now,
|
|
Hc: _emscripten_num_logical_cores,
|
|
Dc: _emscripten_resize_heap,
|
|
dd: _environ_get,
|
|
ed: _environ_sizes_get,
|
|
xa: _exit,
|
|
Ia: _fd_close,
|
|
db: _fd_fdstat_get,
|
|
Zb: _fd_pread,
|
|
Yb: _fd_pwrite,
|
|
bd: _fd_read,
|
|
bc: _fd_seek,
|
|
Va: _fd_write,
|
|
ub: invoke_dddd,
|
|
jd: invoke_ddiiiii,
|
|
s: invoke_di,
|
|
P: invoke_did,
|
|
nd: invoke_didii,
|
|
pa: invoke_dif,
|
|
Ta: invoke_dii,
|
|
sa: invoke_diii,
|
|
mc: invoke_dj,
|
|
Aa: invoke_fi,
|
|
Kb: invoke_fid,
|
|
Gb: invoke_fif,
|
|
mb: invoke_fii,
|
|
Sa: invoke_fiii,
|
|
xd: invoke_fiiid,
|
|
k: invoke_i,
|
|
Ab: invoke_idddii,
|
|
Bb: invoke_idddiii,
|
|
La: invoke_iddii,
|
|
Ma: invoke_iddiii,
|
|
zb: invoke_idi,
|
|
Fa: invoke_idii,
|
|
ob: invoke_idiiiiii,
|
|
Ja: invoke_idiiiiiii,
|
|
Eb: invoke_ifii,
|
|
c: invoke_ii,
|
|
Q: invoke_iid,
|
|
J: invoke_iidd,
|
|
_a: invoke_iiddddddiiii,
|
|
xb: invoke_iidi,
|
|
na: invoke_iidii,
|
|
aa: invoke_iidiii,
|
|
vd: invoke_iidiiii,
|
|
Za: invoke_iidiiiii,
|
|
M: invoke_iif,
|
|
ta: invoke_iiffi,
|
|
id: invoke_iifi,
|
|
e: invoke_iii,
|
|
q: invoke_iiid,
|
|
sd: invoke_iiidd,
|
|
ma: invoke_iiidddii,
|
|
td: invoke_iiiddi,
|
|
zd: invoke_iiiddii,
|
|
ca: invoke_iiidi,
|
|
w: invoke_iiidii,
|
|
vb: invoke_iiidiiidiiiidiif,
|
|
wb: invoke_iiidiiiii,
|
|
ya: invoke_iiiff,
|
|
Ra: invoke_iiifi,
|
|
h: invoke_iiii,
|
|
R: invoke_iiiid,
|
|
I: invoke_iiiiddd,
|
|
wd: invoke_iiiidii,
|
|
ua: invoke_iiiidiii,
|
|
md: invoke_iiiidiiii,
|
|
yb: invoke_iiiidiiiiii,
|
|
Hb: invoke_iiiifffffiiff,
|
|
m: invoke_iiiii,
|
|
L: invoke_iiiiid,
|
|
Ca: invoke_iiiiidiiii,
|
|
o: invoke_iiiiii,
|
|
Pa: invoke_iiiiiid,
|
|
B: invoke_iiiiiii,
|
|
rb: invoke_iiiiiiidddi,
|
|
C: invoke_iiiiiiii,
|
|
ud: invoke_iiiiiiiidi,
|
|
A: invoke_iiiiiiiii,
|
|
va: invoke_iiiiiiiiii,
|
|
kb: invoke_iiiiiiiiiii,
|
|
Da: invoke_iiiiiiiiiiii,
|
|
za: invoke_iiiiiiiiiiiii,
|
|
Oa: invoke_iiiiiiiiiiiiii,
|
|
Cb: invoke_iiiiiiiiiiiiiiiiiiii,
|
|
Xb: invoke_iiiiij,
|
|
dc: invoke_iiiij,
|
|
ec: invoke_iiiijii,
|
|
gc: invoke_iiiijjii,
|
|
sc: invoke_iiijj,
|
|
rc: invoke_iiijji,
|
|
jc: invoke_iij,
|
|
zc: invoke_j,
|
|
wc: invoke_ji,
|
|
pc: invoke_jii,
|
|
yc: invoke_jiii,
|
|
Wb: invoke_jiiii,
|
|
xc: invoke_jiij,
|
|
p: invoke_v,
|
|
Z: invoke_vd,
|
|
pb: invoke_vdiii,
|
|
Fb: invoke_vfiiii,
|
|
j: invoke_vi,
|
|
_: invoke_vid,
|
|
Mb: invoke_vidddi,
|
|
Jb: invoke_viddi,
|
|
Qa: invoke_vidi,
|
|
ea: invoke_vidii,
|
|
Ka: invoke_vidiii,
|
|
qb: invoke_vidiiii,
|
|
U: invoke_vif,
|
|
V: invoke_vifii,
|
|
d: invoke_vii,
|
|
W: invoke_viid,
|
|
Lb: invoke_viiddddi,
|
|
Nb: invoke_viiddi,
|
|
ja: invoke_viidi,
|
|
Xa: invoke_viidii,
|
|
t: invoke_viif,
|
|
g: invoke_viii,
|
|
Y: invoke_viiid,
|
|
Ob: invoke_viiiddddi,
|
|
O: invoke_viiidi,
|
|
ha: invoke_viiidii,
|
|
Ba: invoke_viiidiiiii,
|
|
Db: invoke_viiif,
|
|
i: invoke_viiii,
|
|
E: invoke_viiiid,
|
|
ia: invoke_viiiidi,
|
|
Ya: invoke_viiiidiiiiii,
|
|
n: invoke_viiiii,
|
|
S: invoke_viiiiid,
|
|
X: invoke_viiiiidi,
|
|
v: invoke_viiiiii,
|
|
G: invoke_viiiiiii,
|
|
Ib: invoke_viiiiiiid,
|
|
K: invoke_viiiiiiii,
|
|
$: invoke_viiiiiiiii,
|
|
ga: invoke_viiiiiiiiii,
|
|
lb: invoke_viiiiiiiiiiiii,
|
|
Ga: invoke_viiiiiiiiiiiiiii,
|
|
ic: invoke_viiiijii,
|
|
fc: invoke_viiijii,
|
|
hc: invoke_viiijjii,
|
|
vc: invoke_viij,
|
|
nc: invoke_viiji,
|
|
qc: invoke_vij,
|
|
uc: invoke_viji,
|
|
tc: invoke_vijii,
|
|
oc: invoke_vijji,
|
|
u: _llvm_eh_typeid_for,
|
|
a: wasmMemory || Module["wasmMemory"],
|
|
ad: _proc_exit,
|
|
Ac: _strftime_l,
|
|
};
|
|
var wasmExports = createWasm();
|
|
var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports["Bd"])();
|
|
var _pthread_self = (Module["_pthread_self"] = () =>
|
|
(_pthread_self = Module["_pthread_self"] = wasmExports["Cd"])());
|
|
var ___cxa_free_exception = (a0) =>
|
|
(___cxa_free_exception = wasmExports["__cxa_free_exception"])(a0);
|
|
var _free = (a0) => (_free = wasmExports["Ed"])(a0);
|
|
var _malloc = (a0) => (_malloc = wasmExports["Fd"])(a0);
|
|
var ___errno_location = () => (___errno_location = wasmExports["Gd"])();
|
|
var __emscripten_tls_init = (Module["__emscripten_tls_init"] = () =>
|
|
(__emscripten_tls_init = Module["__emscripten_tls_init"] =
|
|
wasmExports["Hd"])());
|
|
var _emscripten_builtin_memalign = (a0, a1) =>
|
|
(_emscripten_builtin_memalign = wasmExports["Id"])(a0, a1);
|
|
var ___getTypeName = (a0) => (___getTypeName = wasmExports["Jd"])(a0);
|
|
var __embind_initialize_bindings = (Module["__embind_initialize_bindings"] =
|
|
() =>
|
|
(__embind_initialize_bindings = Module["__embind_initialize_bindings"] =
|
|
wasmExports["Kd"])());
|
|
var __emscripten_thread_init = (Module["__emscripten_thread_init"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
) =>
|
|
(__emscripten_thread_init = Module["__emscripten_thread_init"] =
|
|
wasmExports["Ld"])(a0, a1, a2, a3, a4, a5));
|
|
var __emscripten_thread_crashed = (Module["__emscripten_thread_crashed"] =
|
|
() =>
|
|
(__emscripten_thread_crashed = Module["__emscripten_thread_crashed"] =
|
|
wasmExports["Md"])());
|
|
var _emscripten_main_thread_process_queued_calls = () =>
|
|
(_emscripten_main_thread_process_queued_calls =
|
|
wasmExports["emscripten_main_thread_process_queued_calls"])();
|
|
var _emscripten_main_runtime_thread_id = () =>
|
|
(_emscripten_main_runtime_thread_id =
|
|
wasmExports["emscripten_main_runtime_thread_id"])();
|
|
var __emscripten_run_on_main_thread_js = (a0, a1, a2, a3) =>
|
|
(__emscripten_run_on_main_thread_js = wasmExports["Nd"])(a0, a1, a2, a3);
|
|
var __emscripten_thread_free_data = (a0) =>
|
|
(__emscripten_thread_free_data = wasmExports["Od"])(a0);
|
|
var __emscripten_thread_exit = (Module["__emscripten_thread_exit"] = (a0) =>
|
|
(__emscripten_thread_exit = Module["__emscripten_thread_exit"] =
|
|
wasmExports["Pd"])(a0));
|
|
var __emscripten_timeout = (a0, a1) =>
|
|
(__emscripten_timeout = wasmExports["Qd"])(a0, a1);
|
|
var __emscripten_check_mailbox = (Module["__emscripten_check_mailbox"] =
|
|
() =>
|
|
(__emscripten_check_mailbox = Module["__emscripten_check_mailbox"] =
|
|
wasmExports["Rd"])());
|
|
var _setThrew = (a0, a1) => (_setThrew = wasmExports["Sd"])(a0, a1);
|
|
var setTempRet0 = (a0) => (setTempRet0 = wasmExports["Td"])(a0);
|
|
var _emscripten_stack_set_limits = (a0, a1) =>
|
|
(_emscripten_stack_set_limits = wasmExports["Ud"])(a0, a1);
|
|
var stackSave = () => (stackSave = wasmExports["Vd"])();
|
|
var stackRestore = (a0) => (stackRestore = wasmExports["Wd"])(a0);
|
|
var stackAlloc = (a0) => (stackAlloc = wasmExports["Xd"])(a0);
|
|
var ___cxa_decrement_exception_refcount = (a0) =>
|
|
(___cxa_decrement_exception_refcount = wasmExports["Yd"])(a0);
|
|
var ___cxa_increment_exception_refcount = (a0) =>
|
|
(___cxa_increment_exception_refcount = wasmExports["Zd"])(a0);
|
|
var ___cxa_can_catch = (a0, a1, a2) =>
|
|
(___cxa_can_catch = wasmExports["_d"])(a0, a1, a2);
|
|
var ___cxa_is_pointer_type = (a0) =>
|
|
(___cxa_is_pointer_type = wasmExports["$d"])(a0);
|
|
var dynCall_iii = (Module["dynCall_iii"] = (a0, a1, a2) =>
|
|
(dynCall_iii = Module["dynCall_iii"] = wasmExports["ae"])(a0, a1, a2));
|
|
var dynCall_iiii = (Module["dynCall_iiii"] = (a0, a1, a2, a3) =>
|
|
(dynCall_iiii = Module["dynCall_iiii"] = wasmExports["be"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_vi = (Module["dynCall_vi"] = (a0, a1) =>
|
|
(dynCall_vi = Module["dynCall_vi"] = wasmExports["ce"])(a0, a1));
|
|
var dynCall_ii = (Module["dynCall_ii"] = (a0, a1) =>
|
|
(dynCall_ii = Module["dynCall_ii"] = wasmExports["de"])(a0, a1));
|
|
var dynCall_iiiiii = (Module["dynCall_iiiiii"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_iiiiii = Module["dynCall_iiiiii"] = wasmExports["ee"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_vii = (Module["dynCall_vii"] = (a0, a1, a2) =>
|
|
(dynCall_vii = Module["dynCall_vii"] = wasmExports["fe"])(a0, a1, a2));
|
|
var dynCall_i = (Module["dynCall_i"] = (a0) =>
|
|
(dynCall_i = Module["dynCall_i"] = wasmExports["ge"])(a0));
|
|
var dynCall_viiiii = (Module["dynCall_viiiii"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_viiiii = Module["dynCall_viiiii"] = wasmExports["he"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_v = (Module["dynCall_v"] = (a0) =>
|
|
(dynCall_v = Module["dynCall_v"] = wasmExports["ie"])(a0));
|
|
var dynCall_viii = (Module["dynCall_viii"] = (a0, a1, a2, a3) =>
|
|
(dynCall_viii = Module["dynCall_viii"] = wasmExports["je"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_vid = (Module["dynCall_vid"] = (a0, a1, a2) =>
|
|
(dynCall_vid = Module["dynCall_vid"] = wasmExports["ke"])(a0, a1, a2));
|
|
var dynCall_di = (Module["dynCall_di"] = (a0, a1) =>
|
|
(dynCall_di = Module["dynCall_di"] = wasmExports["le"])(a0, a1));
|
|
var dynCall_iiiii = (Module["dynCall_iiiii"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_iiiii = Module["dynCall_iiiii"] = wasmExports["me"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_viiii = (Module["dynCall_viiii"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_viiii = Module["dynCall_viiii"] = wasmExports["ne"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_viid = (Module["dynCall_viid"] = (a0, a1, a2, a3) =>
|
|
(dynCall_viid = Module["dynCall_viid"] = wasmExports["oe"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_dii = (Module["dynCall_dii"] = (a0, a1, a2) =>
|
|
(dynCall_dii = Module["dynCall_dii"] = wasmExports["pe"])(a0, a1, a2));
|
|
var dynCall_viiid = (Module["dynCall_viiid"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_viiid = Module["dynCall_viiid"] = wasmExports["qe"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_iiiid = (Module["dynCall_iiiid"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_iiiid = Module["dynCall_iiiid"] = wasmExports["re"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_iiiiiiii = (Module["dynCall_iiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
) =>
|
|
(dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = wasmExports["se"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
));
|
|
var dynCall_viiiiii = (Module["dynCall_viiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_viiiiii = Module["dynCall_viiiiii"] = wasmExports["te"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_iiiiiii = (Module["dynCall_iiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_iiiiiii = Module["dynCall_iiiiiii"] = wasmExports["ue"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_diii = (Module["dynCall_diii"] = (a0, a1, a2, a3) =>
|
|
(dynCall_diii = Module["dynCall_diii"] = wasmExports["ve"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_j = (Module["dynCall_j"] = (a0) =>
|
|
(dynCall_j = Module["dynCall_j"] = wasmExports["we"])(a0));
|
|
var dynCall_iiid = (Module["dynCall_iiid"] = (a0, a1, a2, a3) =>
|
|
(dynCall_iiid = Module["dynCall_iiid"] = wasmExports["xe"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_iiiiid = (Module["dynCall_iiiiid"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_iiiiid = Module["dynCall_iiiiid"] = wasmExports["ye"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_vd = (Module["dynCall_vd"] = (a0, a1) =>
|
|
(dynCall_vd = Module["dynCall_vd"] = wasmExports["ze"])(a0, a1));
|
|
var dynCall_iiiiiiiiiiii = (Module["dynCall_iiiiiiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
) =>
|
|
(dynCall_iiiiiiiiiiii = Module["dynCall_iiiiiiiiiiii"] =
|
|
wasmExports["Ae"])(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11));
|
|
var dynCall_iid = (Module["dynCall_iid"] = (a0, a1, a2) =>
|
|
(dynCall_iid = Module["dynCall_iid"] = wasmExports["Be"])(a0, a1, a2));
|
|
var dynCall_viidi = (Module["dynCall_viidi"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_viidi = Module["dynCall_viidi"] = wasmExports["Ce"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_iidiii = (Module["dynCall_iidiii"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_iidiii = Module["dynCall_iidiii"] = wasmExports["De"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_iiiiiiiii = (Module["dynCall_iiiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
) =>
|
|
(dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = wasmExports["Ee"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
));
|
|
var dynCall_iiiiiiiiii = (Module["dynCall_iiiiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
) =>
|
|
(dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = wasmExports["Fe"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
));
|
|
var dynCall_iiidi = (Module["dynCall_iiidi"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_iiidi = Module["dynCall_iiidi"] = wasmExports["Ge"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_fiii = (Module["dynCall_fiii"] = (a0, a1, a2, a3) =>
|
|
(dynCall_fiii = Module["dynCall_fiii"] = wasmExports["He"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_iiifi = (Module["dynCall_iiifi"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_iiifi = Module["dynCall_iiifi"] = wasmExports["Ie"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_viif = (Module["dynCall_viif"] = (a0, a1, a2, a3) =>
|
|
(dynCall_viif = Module["dynCall_viif"] = wasmExports["Je"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_iiffi = (Module["dynCall_iiffi"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_iiffi = Module["dynCall_iiffi"] = wasmExports["Ke"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_fif = (Module["dynCall_fif"] = (a0, a1, a2) =>
|
|
(dynCall_fif = Module["dynCall_fif"] = wasmExports["Le"])(a0, a1, a2));
|
|
var dynCall_iif = (Module["dynCall_iif"] = (a0, a1, a2) =>
|
|
(dynCall_iif = Module["dynCall_iif"] = wasmExports["Me"])(a0, a1, a2));
|
|
var dynCall_dif = (Module["dynCall_dif"] = (a0, a1, a2) =>
|
|
(dynCall_dif = Module["dynCall_dif"] = wasmExports["Ne"])(a0, a1, a2));
|
|
var dynCall_viiiiiii = (Module["dynCall_viiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
) =>
|
|
(dynCall_viiiiiii = Module["dynCall_viiiiiii"] = wasmExports["Oe"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
));
|
|
var dynCall_viiiiiiii = (Module["dynCall_viiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
) =>
|
|
(dynCall_viiiiiiii = Module["dynCall_viiiiiiii"] = wasmExports["Pe"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
));
|
|
var dynCall_iidii = (Module["dynCall_iidii"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_iidii = Module["dynCall_iidii"] = wasmExports["Qe"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_viiidiiiii = (Module["dynCall_viiidiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
) =>
|
|
(dynCall_viiidiiiii = Module["dynCall_viiidiiiii"] = wasmExports["Re"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
));
|
|
var dynCall_viiiidi = (Module["dynCall_viiiidi"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_viiiidi = Module["dynCall_viiiidi"] = wasmExports["Se"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_viiidii = (Module["dynCall_viiidii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_viiidii = Module["dynCall_viiidii"] = wasmExports["Te"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_viiiid = (Module["dynCall_viiiid"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_viiiid = Module["dynCall_viiiid"] = wasmExports["Ue"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_iiiidiii = (Module["dynCall_iiiidiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
) =>
|
|
(dynCall_iiiidiii = Module["dynCall_iiiidiii"] = wasmExports["Ve"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
));
|
|
var dynCall_iiiiidiiii = (Module["dynCall_iiiiidiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
) =>
|
|
(dynCall_iiiiidiiii = Module["dynCall_iiiiidiiii"] = wasmExports["We"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
));
|
|
var dynCall_viiiiid = (Module["dynCall_viiiiid"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_viiiiid = Module["dynCall_viiiiid"] = wasmExports["Xe"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_viiiiidi = (Module["dynCall_viiiiidi"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
) =>
|
|
(dynCall_viiiiidi = Module["dynCall_viiiiidi"] = wasmExports["Ye"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
));
|
|
var dynCall_viiiddddi = (Module["dynCall_viiiddddi"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
) =>
|
|
(dynCall_viiiddddi = Module["dynCall_viiiddddi"] = wasmExports["Ze"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
));
|
|
var dynCall_viiddi = (Module["dynCall_viiddi"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_viiddi = Module["dynCall_viiddi"] = wasmExports["_e"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_vidddi = (Module["dynCall_vidddi"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_vidddi = Module["dynCall_vidddi"] = wasmExports["$e"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_viiddddi = (Module["dynCall_viiddddi"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
) =>
|
|
(dynCall_viiddddi = Module["dynCall_viiddddi"] = wasmExports["af"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
));
|
|
var dynCall_fid = (Module["dynCall_fid"] = (a0, a1, a2) =>
|
|
(dynCall_fid = Module["dynCall_fid"] = wasmExports["bf"])(a0, a1, a2));
|
|
var dynCall_iiiiiid = (Module["dynCall_iiiiiid"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_iiiiiid = Module["dynCall_iiiiiid"] = wasmExports["cf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_vif = (Module["dynCall_vif"] = (a0, a1, a2) =>
|
|
(dynCall_vif = Module["dynCall_vif"] = wasmExports["df"])(a0, a1, a2));
|
|
var dynCall_viiidi = (Module["dynCall_viiidi"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_viiidi = Module["dynCall_viiidi"] = wasmExports["ef"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_viddi = (Module["dynCall_viddi"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_viddi = Module["dynCall_viddi"] = wasmExports["ff"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_viiiiiiid = (Module["dynCall_viiiiiiid"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
) =>
|
|
(dynCall_viiiiiiid = Module["dynCall_viiiiiiid"] = wasmExports["gf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
));
|
|
var dynCall_jiij = (Module["dynCall_jiij"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_jiij = Module["dynCall_jiij"] = wasmExports["hf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_ji = (Module["dynCall_ji"] = (a0, a1) =>
|
|
(dynCall_ji = Module["dynCall_ji"] = wasmExports["jf"])(a0, a1));
|
|
var dynCall_iiiifffffiiff = (Module["dynCall_iiiifffffiiff"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
) =>
|
|
(dynCall_iiiifffffiiff = Module["dynCall_iiiifffffiiff"] =
|
|
wasmExports["kf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
));
|
|
var dynCall_jif = (Module["dynCall_jif"] = (a0, a1, a2) =>
|
|
(dynCall_jif = Module["dynCall_jif"] = wasmExports["lf"])(a0, a1, a2));
|
|
var dynCall_vifii = (Module["dynCall_vifii"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_vifii = Module["dynCall_vifii"] = wasmExports["mf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_vfiiii = (Module["dynCall_vfiiii"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_vfiiii = Module["dynCall_vfiiii"] = wasmExports["nf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_ifii = (Module["dynCall_ifii"] = (a0, a1, a2, a3) =>
|
|
(dynCall_ifii = Module["dynCall_ifii"] = wasmExports["of"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_jiiijji = (Module["dynCall_jiiijji"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
) =>
|
|
(dynCall_jiiijji = Module["dynCall_jiiijji"] = wasmExports["pf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
));
|
|
var dynCall_viiif = (Module["dynCall_viiif"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_viiif = Module["dynCall_viiif"] = wasmExports["qf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_iiiiiiiiiiiiiiiiiiii = (Module["dynCall_iiiiiiiiiiiiiiiiiiii"] =
|
|
(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
a14,
|
|
a15,
|
|
a16,
|
|
a17,
|
|
a18,
|
|
a19,
|
|
) =>
|
|
(dynCall_iiiiiiiiiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiiiiiiiiii"] =
|
|
wasmExports["rf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
a14,
|
|
a15,
|
|
a16,
|
|
a17,
|
|
a18,
|
|
a19,
|
|
));
|
|
var dynCall_viiiiiiiiii = (Module["dynCall_viiiiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
) =>
|
|
(dynCall_viiiiiiiiii = Module["dynCall_viiiiiiiiii"] = wasmExports["sf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
));
|
|
var dynCall_viiiiiiiii = (Module["dynCall_viiiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
) =>
|
|
(dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = wasmExports["tf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
));
|
|
var dynCall_iiiiiiiiiiiii = (Module["dynCall_iiiiiiiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
) =>
|
|
(dynCall_iiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiii"] =
|
|
wasmExports["uf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
));
|
|
var dynCall_ff = (Module["dynCall_ff"] = (a0, a1) =>
|
|
(dynCall_ff = Module["dynCall_ff"] = wasmExports["vf"])(a0, a1));
|
|
var dynCall_fff = (Module["dynCall_fff"] = (a0, a1, a2) =>
|
|
(dynCall_fff = Module["dynCall_fff"] = wasmExports["wf"])(a0, a1, a2));
|
|
var dynCall_iiijiii = (Module["dynCall_iiijiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
) =>
|
|
(dynCall_iiijiii = Module["dynCall_iiijiii"] = wasmExports["xf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
));
|
|
var dynCall_jii = (Module["dynCall_jii"] = (a0, a1, a2) =>
|
|
(dynCall_jii = Module["dynCall_jii"] = wasmExports["yf"])(a0, a1, a2));
|
|
var dynCall_iiij = (Module["dynCall_iiij"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_iiij = Module["dynCall_iiij"] = wasmExports["zf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_iiiji = (Module["dynCall_iiiji"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_iiiji = Module["dynCall_iiiji"] = wasmExports["Af"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_iiiiiiiiiiiiii = (Module["dynCall_iiiiiiiiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
) =>
|
|
(dynCall_iiiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiiii"] =
|
|
wasmExports["Bf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
));
|
|
var dynCall_iiddddddiiii = (Module["dynCall_iiddddddiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
) =>
|
|
(dynCall_iiddddddiiii = Module["dynCall_iiddddddiiii"] =
|
|
wasmExports["Cf"])(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11));
|
|
var dynCall_iidiiiii = (Module["dynCall_iidiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
) =>
|
|
(dynCall_iidiiiii = Module["dynCall_iidiiiii"] = wasmExports["Df"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
));
|
|
var dynCall_iddiii = (Module["dynCall_iddiii"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_iddiii = Module["dynCall_iddiii"] = wasmExports["Ef"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_iddii = (Module["dynCall_iddii"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_iddii = Module["dynCall_iddii"] = wasmExports["Ff"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_idddiii = (Module["dynCall_idddiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_idddiii = Module["dynCall_idddiii"] = wasmExports["Gf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_idddii = (Module["dynCall_idddii"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_idddii = Module["dynCall_idddii"] = wasmExports["Hf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_idii = (Module["dynCall_idii"] = (a0, a1, a2, a3) =>
|
|
(dynCall_idii = Module["dynCall_idii"] = wasmExports["If"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_idi = (Module["dynCall_idi"] = (a0, a1, a2) =>
|
|
(dynCall_idi = Module["dynCall_idi"] = wasmExports["Jf"])(a0, a1, a2));
|
|
var dynCall_fiiid = (Module["dynCall_fiiid"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_fiiid = Module["dynCall_fiiid"] = wasmExports["Kf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_iidi = (Module["dynCall_iidi"] = (a0, a1, a2, a3) =>
|
|
(dynCall_iidi = Module["dynCall_iidi"] = wasmExports["Lf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_iiiidii = (Module["dynCall_iiiidii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_iiiidii = Module["dynCall_iiiidii"] = wasmExports["Mf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_iiiidiiiiii = (Module["dynCall_iiiidiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
) =>
|
|
(dynCall_iiiidiiiiii = Module["dynCall_iiiidiiiiii"] = wasmExports["Nf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
));
|
|
var dynCall_iiidiiiii = (Module["dynCall_iiidiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
) =>
|
|
(dynCall_iiidiiiii = Module["dynCall_iiidiiiii"] = wasmExports["Of"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
));
|
|
var dynCall_iiidiiidiiiidiif = (Module["dynCall_iiidiiidiiiidiif"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
a14,
|
|
a15,
|
|
) =>
|
|
(dynCall_iiidiiidiiiidiif = Module["dynCall_iiidiiidiiiidiif"] =
|
|
wasmExports["Pf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
a14,
|
|
a15,
|
|
));
|
|
var dynCall_dddd = (Module["dynCall_dddd"] = (a0, a1, a2, a3) =>
|
|
(dynCall_dddd = Module["dynCall_dddd"] = wasmExports["Qf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_iidiiii = (Module["dynCall_iidiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_iidiiii = Module["dynCall_iidiiii"] = wasmExports["Rf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_iiiddii = (Module["dynCall_iiiddii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_iiiddii = Module["dynCall_iiiddii"] = wasmExports["Sf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_iiiiiiiidi = (Module["dynCall_iiiiiiiidi"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
) =>
|
|
(dynCall_iiiiiiiidi = Module["dynCall_iiiiiiiidi"] = wasmExports["Tf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
));
|
|
var dynCall_iiiddi = (Module["dynCall_iiiddi"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_iiiddi = Module["dynCall_iiiddi"] = wasmExports["Uf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_iiidd = (Module["dynCall_iiidd"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_iiidd = Module["dynCall_iiidd"] = wasmExports["Vf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_iiiif = (Module["dynCall_iiiif"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_iiiif = Module["dynCall_iiiif"] = wasmExports["Wf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_fi = (Module["dynCall_fi"] = (a0, a1) =>
|
|
(dynCall_fi = Module["dynCall_fi"] = wasmExports["Xf"])(a0, a1));
|
|
var dynCall_did = (Module["dynCall_did"] = (a0, a1, a2) =>
|
|
(dynCall_did = Module["dynCall_did"] = wasmExports["Yf"])(a0, a1, a2));
|
|
var dynCall_iiidii = (Module["dynCall_iiidii"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_iiidii = Module["dynCall_iiidii"] = wasmExports["Zf"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_iiidddii = (Module["dynCall_iiidddii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
) =>
|
|
(dynCall_iiidddii = Module["dynCall_iiidddii"] = wasmExports["_f"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
));
|
|
var dynCall_didii = (Module["dynCall_didii"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_didii = Module["dynCall_didii"] = wasmExports["$f"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_iiiiiiidddi = (Module["dynCall_iiiiiiidddi"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
) =>
|
|
(dynCall_iiiiiiidddi = Module["dynCall_iiiiiiidddi"] = wasmExports["ag"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
));
|
|
var dynCall_iidd = (Module["dynCall_iidd"] = (a0, a1, a2, a3) =>
|
|
(dynCall_iidd = Module["dynCall_iidd"] = wasmExports["bg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_viij = (Module["dynCall_viij"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_viij = Module["dynCall_viij"] = wasmExports["cg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_viji = (Module["dynCall_viji"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_viji = Module["dynCall_viji"] = wasmExports["dg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_vijii = (Module["dynCall_vijii"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_vijii = Module["dynCall_vijii"] = wasmExports["eg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_iiijj = (Module["dynCall_iiijj"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_iiijj = Module["dynCall_iiijj"] = wasmExports["fg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_iiijji = (Module["dynCall_iiijji"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
) =>
|
|
(dynCall_iiijji = Module["dynCall_iiijji"] = wasmExports["gg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
));
|
|
var dynCall_vij = (Module["dynCall_vij"] = (a0, a1, a2, a3) =>
|
|
(dynCall_vij = Module["dynCall_vij"] = wasmExports["hg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_vijji = (Module["dynCall_vijji"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_vijji = Module["dynCall_vijji"] = wasmExports["ig"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_viiji = (Module["dynCall_viiji"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_viiji = Module["dynCall_viiji"] = wasmExports["jg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_jiii = (Module["dynCall_jiii"] = (a0, a1, a2, a3) =>
|
|
(dynCall_jiii = Module["dynCall_jiii"] = wasmExports["kg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_iiiiddd = (Module["dynCall_iiiiddd"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_iiiiddd = Module["dynCall_iiiiddd"] = wasmExports["lg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_vidii = (Module["dynCall_vidii"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_vidii = Module["dynCall_vidii"] = wasmExports["mg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_vidiiii = (Module["dynCall_vidiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_vidiiii = Module["dynCall_vidiiii"] = wasmExports["ng"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_vidiii = (Module["dynCall_vidiii"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_vidiii = Module["dynCall_vidiii"] = wasmExports["og"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_dj = (Module["dynCall_dj"] = (a0, a1, a2) =>
|
|
(dynCall_dj = Module["dynCall_dj"] = wasmExports["pg"])(a0, a1, a2));
|
|
var dynCall_vdiii = (Module["dynCall_vdiii"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_vdiii = Module["dynCall_vdiii"] = wasmExports["qg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_idiiiiii = (Module["dynCall_idiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
) =>
|
|
(dynCall_idiiiiii = Module["dynCall_idiiiiii"] = wasmExports["rg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
));
|
|
var dynCall_idiiiiiii = (Module["dynCall_idiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
) =>
|
|
(dynCall_idiiiiiii = Module["dynCall_idiiiiiii"] = wasmExports["sg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
));
|
|
var dynCall_iiiidiiii = (Module["dynCall_iiiidiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
) =>
|
|
(dynCall_iiiidiiii = Module["dynCall_iiiidiiii"] = wasmExports["tg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
));
|
|
var dynCall_viiiidiiiiii = (Module["dynCall_viiiidiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
) =>
|
|
(dynCall_viiiidiiiiii = Module["dynCall_viiiidiiiiii"] =
|
|
wasmExports["ug"])(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11));
|
|
var dynCall_iiiff = (Module["dynCall_iiiff"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_iiiff = Module["dynCall_iiiff"] = wasmExports["vg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_viiiiiiiiiii = (Module["dynCall_viiiiiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
) =>
|
|
(dynCall_viiiiiiiiiii = Module["dynCall_viiiiiiiiiii"] =
|
|
wasmExports["wg"])(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11));
|
|
var dynCall_iij = (Module["dynCall_iij"] = (a0, a1, a2, a3) =>
|
|
(dynCall_iij = Module["dynCall_iij"] = wasmExports["xg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_vidi = (Module["dynCall_vidi"] = (a0, a1, a2, a3) =>
|
|
(dynCall_vidi = Module["dynCall_vidi"] = wasmExports["yg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_fii = (Module["dynCall_fii"] = (a0, a1, a2) =>
|
|
(dynCall_fii = Module["dynCall_fii"] = wasmExports["zg"])(a0, a1, a2));
|
|
var dynCall_viiiiiiiiiiiii = (Module["dynCall_viiiiiiiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
) =>
|
|
(dynCall_viiiiiiiiiiiii = Module["dynCall_viiiiiiiiiiiii"] =
|
|
wasmExports["Ag"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
));
|
|
var dynCall_iiiiiiiiiii = (Module["dynCall_iiiiiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
) =>
|
|
(dynCall_iiiiiiiiiii = Module["dynCall_iiiiiiiiiii"] = wasmExports["Bg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
));
|
|
var dynCall_viidii = (Module["dynCall_viidii"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_viidii = Module["dynCall_viidii"] = wasmExports["Cg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_viiiijii = (Module["dynCall_viiiijii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
) =>
|
|
(dynCall_viiiijii = Module["dynCall_viiiijii"] = wasmExports["Dg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
));
|
|
var dynCall_viiijjii = (Module["dynCall_viiijjii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
) =>
|
|
(dynCall_viiijjii = Module["dynCall_viiijjii"] = wasmExports["Eg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
));
|
|
var dynCall_iiiijjii = (Module["dynCall_iiiijjii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
) =>
|
|
(dynCall_iiiijjii = Module["dynCall_iiiijjii"] = wasmExports["Fg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
));
|
|
var dynCall_viiijii = (Module["dynCall_viiijii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
) =>
|
|
(dynCall_viiijii = Module["dynCall_viiijii"] = wasmExports["Gg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
));
|
|
var dynCall_iiiijii = (Module["dynCall_iiiijii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
) =>
|
|
(dynCall_iiiijii = Module["dynCall_iiiijii"] = wasmExports["Hg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
));
|
|
var dynCall_ddiiiii = (Module["dynCall_ddiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_ddiiiii = Module["dynCall_ddiiiii"] = wasmExports["Ig"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_iifi = (Module["dynCall_iifi"] = (a0, a1, a2, a3) =>
|
|
(dynCall_iifi = Module["dynCall_iifi"] = wasmExports["Jg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
));
|
|
var dynCall_iiiij = (Module["dynCall_iiiij"] = (a0, a1, a2, a3, a4, a5) =>
|
|
(dynCall_iiiij = Module["dynCall_iiiij"] = wasmExports["Kg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
));
|
|
var dynCall_jiji = (Module["dynCall_jiji"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_jiji = Module["dynCall_jiji"] = wasmExports["Lg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_iiiiij = (Module["dynCall_iiiiij"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_iiiiij = Module["dynCall_iiiiij"] = wasmExports["Mg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_viijii = (Module["dynCall_viijii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
) =>
|
|
(dynCall_viijii = Module["dynCall_viijii"] = wasmExports["Ng"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
));
|
|
var dynCall_jiiii = (Module["dynCall_jiiii"] = (a0, a1, a2, a3, a4) =>
|
|
(dynCall_jiiii = Module["dynCall_jiiii"] = wasmExports["Og"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
));
|
|
var dynCall_viiiiiiiiiiiiiii = (Module["dynCall_viiiiiiiiiiiiiii"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
a14,
|
|
a15,
|
|
) =>
|
|
(dynCall_viiiiiiiiiiiiiii = Module["dynCall_viiiiiiiiiiiiiii"] =
|
|
wasmExports["Pg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
a14,
|
|
a15,
|
|
));
|
|
var dynCall_iiiiijj = (Module["dynCall_iiiiijj"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
) =>
|
|
(dynCall_iiiiijj = Module["dynCall_iiiiijj"] = wasmExports["Qg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
));
|
|
var dynCall_iiiiiijj = (Module["dynCall_iiiiiijj"] = (
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
) =>
|
|
(dynCall_iiiiiijj = Module["dynCall_iiiiiijj"] = wasmExports["Rg"])(
|
|
a0,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
));
|
|
var _asyncify_start_unwind = (a0) =>
|
|
(_asyncify_start_unwind = wasmExports["Sg"])(a0);
|
|
var _asyncify_stop_unwind = () =>
|
|
(_asyncify_stop_unwind = wasmExports["Tg"])();
|
|
var _asyncify_start_rewind = (a0) =>
|
|
(_asyncify_start_rewind = wasmExports["Ug"])(a0);
|
|
var _asyncify_stop_rewind = () =>
|
|
(_asyncify_stop_rewind = wasmExports["Vg"])();
|
|
var ___start_em_js = (Module["___start_em_js"] = 3895468);
|
|
var ___stop_em_js = (Module["___stop_em_js"] = 3896792);
|
|
function invoke_iii(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iii(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiii(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiii(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vi(index, a1) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vi(index, a1);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_ii(index, a1) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_ii(index, a1);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiii(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiii(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vii(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vii(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_i(index) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_i(index);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiii(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiii(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiii(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiii(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viii(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viii(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiii(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiii(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_v(index) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_v(index);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vid(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vid(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiiii(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiiii(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiiiii(index, a1, a2, a3, a4, a5, a6, a7);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiidi(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiidi(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiidi(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiidi(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viid(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viid(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viidi(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viidi(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiid(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiid(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_di(index, a1) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_di(index, a1);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iid(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iid(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_dii(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_dii(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiid(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiid(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vd(index, a1) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vd(index, a1);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iif(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iif(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iidiii(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iidiii(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiid(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiid(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiid(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiid(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_fiii(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_fiii(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiifi(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiifi(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiffi(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiffi(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viif(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viif(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_diii(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_diii(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iidii(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iidii(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_dif(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_dif(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiid(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiid(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiidi(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiidi(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiidiii(index, a1, a2, a3, a4, a5, a6, a7) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiidiii(index, a1, a2, a3, a4, a5, a6, a7);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiiidi(index, a1, a2, a3, a4, a5, a6, a7) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiiidi(index, a1, a2, a3, a4, a5, a6, a7);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiidiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiidiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiidii(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiidii(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiiid(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiiid(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiidiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiidiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vidi(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vidi(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiddddi(index, a1, a2, a3, a4, a5, a6, a7, a8) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiddddi(index, a1, a2, a3, a4, a5, a6, a7, a8);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiddi(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiddi(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vidddi(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vidddi(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiddddi(index, a1, a2, a3, a4, a5, a6, a7) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiddddi(index, a1, a2, a3, a4, a5, a6, a7);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_fid(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_fid(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiiid(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiiid(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vif(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vif(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viddi(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viddi(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiiiiid(index, a1, a2, a3, a4, a5, a6, a7, a8) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiiiiid(index, a1, a2, a3, a4, a5, a6, a7, a8);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiifffffiiff(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiifffffiiff(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_fif(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_fif(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vifii(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vifii(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vfiiii(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vfiiii(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_ifii(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_ifii(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiiiiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
a14,
|
|
a15,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiiiiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
a14,
|
|
a15,
|
|
);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiif(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiif(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_fi(index, a1) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_fi(index, a1);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiiiiiiiiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
a14,
|
|
a15,
|
|
a16,
|
|
a17,
|
|
a18,
|
|
a19,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiiiiiiiiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
a14,
|
|
a15,
|
|
a16,
|
|
a17,
|
|
a18,
|
|
a19,
|
|
);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiddddddiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiddddddiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iidiiiii(index, a1, a2, a3, a4, a5, a6, a7) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iidiiiii(index, a1, a2, a3, a4, a5, a6, a7);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiddii(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiddii(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iddiii(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iddiii(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iddii(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iddii(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_idddiii(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_idddiii(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_idddii(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_idddii(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_idii(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_idii(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_idi(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_idi(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_fiiid(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_fiiid(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiidiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiidiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iidi(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iidi(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiidii(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiidii(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiidiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiidiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiidiiidiiiidiif(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
a14,
|
|
a15,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiidiiidiiiidiif(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
a14,
|
|
a15,
|
|
);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_dddd(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_dddd(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iidiiii(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iidiiii(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiiiiidi(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiiiiidi(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiddi(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiddi(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiidd(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiidd(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_did(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_did(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiidii(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiidii(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiidddii(index, a1, a2, a3, a4, a5, a6, a7) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiidddii(index, a1, a2, a3, a4, a5, a6, a7);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_didii(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_didii(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiiiidddi(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiiiidddi(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iidd(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iidd(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiddd(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiddd(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vidii(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vidii(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vidiiii(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vidiiii(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vidiii(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vidiii(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vdiii(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vdiii(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiidiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiidiiii(index, a1, a2, a3, a4, a5, a6, a7, a8);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_idiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_idiiiiii(index, a1, a2, a3, a4, a5, a6, a7);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_idiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_idiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiidiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiidiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiff(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiff(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_fii(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_fii(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
a11,
|
|
a12,
|
|
a13,
|
|
);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiiiiiiii(
|
|
index,
|
|
a1,
|
|
a2,
|
|
a3,
|
|
a4,
|
|
a5,
|
|
a6,
|
|
a7,
|
|
a8,
|
|
a9,
|
|
a10,
|
|
);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viidii(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viidii(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_ddiiiii(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_ddiiiii(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iifi(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iifi(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_j(index) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_j(index);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_jiii(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_jiii(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_jiij(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_jiij(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_ji(index, a1) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_ji(index, a1);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viij(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viij(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viji(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viji(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vijii(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vijii(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiijj(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiijj(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiijji(index, a1, a2, a3, a4, a5, a6, a7) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiijji(index, a1, a2, a3, a4, a5, a6, a7);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vij(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vij(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_jii(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_jii(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_vijji(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_vijji(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiji(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiji(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_dj(index, a1, a2) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_dj(index, a1, a2);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iij(index, a1, a2, a3) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iij(index, a1, a2, a3);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiiijii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiiijii(index, a1, a2, a3, a4, a5, a6, a7, a8);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiijjii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiijjii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiijjii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiijjii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_viiijii(index, a1, a2, a3, a4, a5, a6, a7) {
|
|
var sp = stackSave();
|
|
try {
|
|
dynCall_viiijii(index, a1, a2, a3, a4, a5, a6, a7);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiijii(index, a1, a2, a3, a4, a5, a6, a7) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiijii(index, a1, a2, a3, a4, a5, a6, a7);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiij(index, a1, a2, a3, a4, a5) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiij(index, a1, a2, a3, a4, a5);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_iiiiij(index, a1, a2, a3, a4, a5, a6) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_iiiiij(index, a1, a2, a3, a4, a5, a6);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function invoke_jiiii(index, a1, a2, a3, a4) {
|
|
var sp = stackSave();
|
|
try {
|
|
return dynCall_jiiii(index, a1, a2, a3, a4);
|
|
} catch (e) {
|
|
stackRestore(sp);
|
|
if (e !== e + 0) throw e;
|
|
_setThrew(1, 0);
|
|
}
|
|
}
|
|
function applySignatureConversions(wasmExports) {
|
|
wasmExports = Object.assign({}, wasmExports);
|
|
var makeWrapper_p = (f) => () => f() >>> 0;
|
|
var makeWrapper_pp = (f) => (a0) => f(a0) >>> 0;
|
|
var makeWrapper_ppp = (f) => (a0, a1) => f(a0, a1) >>> 0;
|
|
wasmExports["Cd"] = makeWrapper_p(wasmExports["Cd"]);
|
|
wasmExports["Fd"] = makeWrapper_pp(wasmExports["Fd"]);
|
|
wasmExports["Gd"] = makeWrapper_p(wasmExports["Gd"]);
|
|
wasmExports["Id"] = makeWrapper_ppp(wasmExports["Id"]);
|
|
wasmExports["Jd"] = makeWrapper_pp(wasmExports["Jd"]);
|
|
wasmExports["Vd"] = makeWrapper_p(wasmExports["Vd"]);
|
|
wasmExports["Xd"] = makeWrapper_pp(wasmExports["Xd"]);
|
|
return wasmExports;
|
|
}
|
|
Module["addRunDependency"] = addRunDependency;
|
|
Module["removeRunDependency"] = removeRunDependency;
|
|
Module["FS_createPath"] = FS.createPath;
|
|
Module["FS_createLazyFile"] = FS.createLazyFile;
|
|
Module["FS_createDevice"] = FS.createDevice;
|
|
Module["wasmMemory"] = wasmMemory;
|
|
Module["keepRuntimeAlive"] = keepRuntimeAlive;
|
|
Module["ExitStatus"] = ExitStatus;
|
|
Module["FS_createPreloadedFile"] = FS.createPreloadedFile;
|
|
Module["FS_createDataFile"] = FS.createDataFile;
|
|
Module["FS_unlink"] = FS.unlink;
|
|
Module["PThread"] = PThread;
|
|
Module["FS_readdir"]=FS.readdir;
|
|
Module["FS_analyzePath"]=FS.analyzePath;
|
|
var calledRun;
|
|
dependenciesFulfilled = function runCaller() {
|
|
if (!calledRun) run();
|
|
if (!calledRun) dependenciesFulfilled = runCaller;
|
|
};
|
|
function run() {
|
|
if (runDependencies > 0) {
|
|
return;
|
|
}
|
|
if (ENVIRONMENT_IS_PTHREAD) {
|
|
readyPromiseResolve(Module);
|
|
initRuntime();
|
|
startWorker(Module);
|
|
return;
|
|
}
|
|
preRun();
|
|
if (runDependencies > 0) {
|
|
return;
|
|
}
|
|
function doRun() {
|
|
if (calledRun) return;
|
|
calledRun = true;
|
|
Module["calledRun"] = true;
|
|
if (ABORT) return;
|
|
initRuntime();
|
|
readyPromiseResolve(Module);
|
|
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();
|
|
|
|
return moduleArg.ready;
|
|
};
|
|
})();
|
|
if (typeof exports === "object" && typeof module === "object")
|
|
module.exports = getUsdModule;
|
|
else if (typeof define === "function" && define["amd"])
|
|
define([], () => getUsdModule);
|
|
|
|
globalThis["NEEDLE:USD:GET"] = getUsdModule; |