diff --git a/codecs/build-cpp.sh b/codecs/build-cpp.sh index 4e1beb8e..608ccce9 100755 --- a/codecs/build-cpp.sh +++ b/codecs/build-cpp.sh @@ -1,3 +1,3 @@ #!/bin/sh -e docker build -t squoosh-cpp - < ../cpp.Dockerfile -docker run -it --rm -v $PWD:/src squoosh-cpp +docker run -it --rm -v $PWD:/src squoosh-cpp "$@" diff --git a/codecs/jxl/Makefile b/codecs/jxl/Makefile index f4152507..2a6fe1d2 100644 --- a/codecs/jxl/Makefile +++ b/codecs/jxl/Makefile @@ -1,18 +1,37 @@ CODEC_URL = https://gitlab.com/wg1/jpeg-xl.git CODEC_VERSION = v0.1 CODEC_DIR = node_modules/jxl -CODEC_BUILD_DIR := $(CODEC_DIR)/build -CODEC_OUT := $(CODEC_BUILD_DIR)/lib/libjxl.a +CODEC_BUILD_ROOT := $(CODEC_DIR)/build +CODEC_MT_BUILD_DIR := $(CODEC_BUILD_ROOT)/mt +CODEC_MT_SIMD_BUILD_DIR := $(CODEC_BUILD_ROOT)/mt-simd -OUT_JS = enc/jxl_enc.js dec/jxl_dec.js +OUT_JS = enc/jxl_enc.js enc/jxl_enc_mt.js enc/jxl_enc_mt_simd.js dec/jxl_dec.js OUT_WASM = $(OUT_JS:.js=.wasm) +OUT_WORKER = $(OUT_JS:.js=.worker.js) .PHONY: all clean all: $(OUT_JS) -%.js: %.cpp $(LIBAOM_OUT) $(CODEC_OUT) +# Define dependencies for all variations of build artifacts. +$(filter enc/%,$(OUT_JS)): enc/jxl_enc.cpp +$(filter dec/%,$(OUT_JS)): dec/jxl_dec.cpp + +# For single-threaded build, we compile with threads enabled, but then just don't use them nor link them in. +enc/jxl_enc.js enc/jxl_enc_mt.js dec/jxl_dec.js: CODEC_BUILD_DIR:=$(CODEC_MT_BUILD_DIR) +enc/jxl_enc_mt_simd.js: CODEC_BUILD_DIR:=$(CODEC_MT_SIMD_BUILD_DIR) + +enc/jxl_enc.js dec/jxl_dec.js: $(CODEC_MT_BUILD_DIR)/lib/libjxl.a +enc/jxl_enc_mt.js: $(CODEC_MT_BUILD_DIR)/lib/libjxl.a $(CODEC_MT_BUILD_DIR)/lib/libjxl_threads.a +enc/jxl_enc_mt_simd.js: $(CODEC_MT_SIMD_BUILD_DIR)/lib/libjxl.a $(CODEC_MT_SIMD_BUILD_DIR)/lib/libjxl_threads.a + +# Compile multithreaded wrappers with -pthread. +enc/jxl_enc_mt.js enc/jxl_enc_mt_simd.js: CXXFLAGS+=-pthread + +$(OUT_JS): $(CXX) \ + $(CXXFLAGS) \ + $(LDFLAGS) \ -I $(CODEC_DIR) \ -I $(CODEC_DIR)/lib \ -I $(CODEC_DIR)/lib/include \ @@ -21,8 +40,6 @@ all: $(OUT_JS) -I $(CODEC_DIR)/third_party/skcms \ -I $(CODEC_DIR)/third_party/brunsli \ -I $(CODEC_DIR)/third_party/brunsli/c/include \ - ${CXXFLAGS} \ - ${LDFLAGS} \ --bind \ --closure 1 \ -s ALLOW_MEMORY_GROWTH=1 \ @@ -42,18 +59,31 @@ all: $(OUT_JS) $(CODEC_BUILD_DIR)/third_party/libskcms.a \ $(CODEC_BUILD_DIR)/third_party/highway/libhwy.a -$(CODEC_OUT): $(CODEC_DIR)/CMakeLists.txt - mkdir -p $(CODEC_BUILD_DIR) - cd $(CODEC_BUILD_DIR) && \ - emcmake cmake ../ && \ - $(MAKE) jxl-static +%/lib/libjxl.a: %/Makefile + $(MAKE) -C $((options.speed); @@ -97,14 +103,14 @@ val encode(std::string image, int width, int height, JXLOptions options) { jxl::Span(reinterpret_cast(image.data()), image.size()), width, height, jxl::ColorEncoding::SRGB(/*is_gray=*/false), /*has_alpha=*/true, /*alpha_is_premultiplied=*/false, /*bits_per_alpha=*/8, /*bits_per_sample=*/8, - /*big_endian=*/false, /*flipped_y=*/false, /*pool=*/nullptr, main); + /*big_endian=*/false, /*flipped_y=*/false, pool_ptr, main); if (!result) { return val::null(); } auto js_result = val::null(); - if (EncodeFile(cparams, &io, &passes_enc_state, &bytes)) { + if (EncodeFile(cparams, &io, &passes_enc_state, &bytes, /*aux=*/nullptr, pool_ptr)) { js_result = Uint8Array.new_(typed_memory_view(bytes.size(), bytes.data())); } diff --git a/codecs/jxl/enc/jxl_enc.js b/codecs/jxl/enc/jxl_enc.js index f57f3fee..1e092595 100644 --- a/codecs/jxl/enc/jxl_enc.js +++ b/codecs/jxl/enc/jxl_enc.js @@ -1,1606 +1,71 @@ -var jxl_enc = (function () { + +var jxl_enc = (function() { var _scriptDir = import.meta.url; + + return ( +function(jxl_enc) { + jxl_enc = jxl_enc || {}; - return function (jxl_enc) { - jxl_enc = jxl_enc || {}; - var f; - f || (f = typeof jxl_enc !== 'undefined' ? jxl_enc : {}); - var aa, ba; - f.ready = new Promise(function (a, b) { - aa = a; - ba = b; - }); - var t = {}, - w; - for (w in f) f.hasOwnProperty(w) && (t[w] = f[w]); - var ca = './this.program', - y = '', - da; - y = self.location.href; - _scriptDir && (y = _scriptDir); - 0 !== y.indexOf('blob:') - ? (y = y.substr(0, y.lastIndexOf('/') + 1)) - : (y = ''); - da = function (a) { - var b = new XMLHttpRequest(); - b.open('GET', a, !1); - b.responseType = 'arraybuffer'; - b.send(null); - return new Uint8Array(b.response); - }; - var ea = f.print || console.log.bind(console), - z = f.printErr || console.warn.bind(console); - for (w in t) t.hasOwnProperty(w) && (f[w] = t[w]); - t = null; - f.thisProgram && (ca = f.thisProgram); - var A; - f.wasmBinary && (A = f.wasmBinary); - var noExitRuntime; - f.noExitRuntime && (noExitRuntime = f.noExitRuntime); - 'object' !== typeof WebAssembly && C('no native wasm support detected'); - var D, - fa = !1, - ha = new TextDecoder('utf8'); - function ia(a, b) { - if (!a) return ''; - b = a + b; - for (var c = a; !(c >= b) && E[c]; ) ++c; - return ha.decode(E.subarray(a, c)); - } - function ja(a, b, c, d) { - if (0 < d) { - d = c + d - 1; - for (var g = 0; g < a.length; ++g) { - var h = a.charCodeAt(g); - if (55296 <= h && 57343 >= h) { - var m = a.charCodeAt(++g); - h = (65536 + ((h & 1023) << 10)) | (m & 1023); - } - if (127 >= h) { - if (c >= d) break; - b[c++] = h; - } else { - if (2047 >= h) { - if (c + 1 >= d) break; - b[c++] = 192 | (h >> 6); - } else { - if (65535 >= h) { - if (c + 2 >= d) break; - b[c++] = 224 | (h >> 12); - } else { - if (c + 3 >= d) break; - b[c++] = 240 | (h >> 18); - b[c++] = 128 | ((h >> 12) & 63); - } - b[c++] = 128 | ((h >> 6) & 63); - } - b[c++] = 128 | (h & 63); - } - } - b[c] = 0; - } - } - function ka(a) { - for (var b = 0, c = 0; c < a.length; ++c) { - var d = a.charCodeAt(c); - 55296 <= d && - 57343 >= d && - (d = (65536 + ((d & 1023) << 10)) | (a.charCodeAt(++c) & 1023)); - 127 >= d ? ++b : (b = 2047 >= d ? b + 2 : 65535 >= d ? b + 3 : b + 4); - } - return b; - } - var la = new TextDecoder('utf-16le'); - function ma(a, b) { - var c = a >> 1; - for (b = c + b / 2; !(c >= b) && F[c]; ) ++c; - return la.decode(E.subarray(a, c << 1)); - } - function na(a, b, c) { - void 0 === c && (c = 2147483647); - if (2 > c) return 0; - c -= 2; - var d = b; - c = c < 2 * a.length ? c / 2 : a.length; - for (var g = 0; g < c; ++g) (G[b >> 1] = a.charCodeAt(g)), (b += 2); - G[b >> 1] = 0; - return b - d; - } - function oa(a) { - return 2 * a.length; - } - function pa(a, b) { - for (var c = 0, d = ''; !(c >= b / 4); ) { - var g = H[(a + 4 * c) >> 2]; - if (0 == g) break; - ++c; - 65536 <= g - ? ((g -= 65536), - (d += String.fromCharCode(55296 | (g >> 10), 56320 | (g & 1023)))) - : (d += String.fromCharCode(g)); - } - return d; - } - function qa(a, b, c) { - void 0 === c && (c = 2147483647); - if (4 > c) return 0; - var d = b; - c = d + c - 4; - for (var g = 0; g < a.length; ++g) { - var h = a.charCodeAt(g); - if (55296 <= h && 57343 >= h) { - var m = a.charCodeAt(++g); - h = (65536 + ((h & 1023) << 10)) | (m & 1023); - } - H[b >> 2] = h; - b += 4; - if (b + 4 > c) break; - } - H[b >> 2] = 0; - return b - d; - } - function ra(a) { - for (var b = 0, c = 0; c < a.length; ++c) { - var d = a.charCodeAt(c); - 55296 <= d && 57343 >= d && ++c; - b += 4; - } - return b; - } - var I, J, E, G, F, H, K, sa, ta; - function ua(a) { - I = a; - f.HEAP8 = J = new Int8Array(a); - f.HEAP16 = G = new Int16Array(a); - f.HEAP32 = H = new Int32Array(a); - f.HEAPU8 = E = new Uint8Array(a); - f.HEAPU16 = F = new Uint16Array(a); - f.HEAPU32 = K = new Uint32Array(a); - f.HEAPF32 = sa = new Float32Array(a); - f.HEAPF64 = ta = new Float64Array(a); - } - var va = f.INITIAL_MEMORY || 16777216; - f.wasmMemory - ? (D = f.wasmMemory) - : (D = new WebAssembly.Memory({ initial: va / 65536, maximum: 32768 })); - D && (I = D.buffer); - va = I.byteLength; - ua(I); - var L, - wa = [], - xa = [], - ya = [], - za = []; - function Aa() { - var a = f.preRun.shift(); - wa.unshift(a); - } - var M = 0, - Ba = null, - N = null; - f.preloadedImages = {}; - f.preloadedAudios = {}; - function C(a) { - if (f.onAbort) f.onAbort(a); - z(a); - fa = !0; - a = new WebAssembly.RuntimeError( - 'abort(' + a + '). Build with -s ASSERTIONS=1 for more info.', - ); - ba(a); - throw a; - } - function Ca() { - var a = O; - return String.prototype.startsWith - ? a.startsWith('data:application/octet-stream;base64,') - : 0 === a.indexOf('data:application/octet-stream;base64,'); - } - var O = 'jxl_enc.wasm'; - if (!Ca()) { - var Da = O; - O = f.locateFile ? f.locateFile(Da, y) : y + Da; - } - function Ea() { - try { - if (A) return new Uint8Array(A); - if (da) return da(O); - throw 'both async and sync fetching of the wasm failed'; - } catch (a) { - C(a); - } - } - function Fa() { - return A || 'function' !== typeof fetch - ? Promise.resolve().then(Ea) - : fetch(O, { credentials: 'same-origin' }) - .then(function (a) { - if (!a.ok) throw "failed to load wasm binary file at '" + O + "'"; - return a.arrayBuffer(); - }) - .catch(function () { - return Ea(); - }); - } - function P(a) { - for (; 0 < a.length; ) { - var b = a.shift(); - if ('function' == typeof b) b(f); - else { - var c = b.fa; - 'number' === typeof c - ? void 0 === b.$ - ? L.get(c)() - : L.get(c)(b.$) - : c(void 0 === b.$ ? null : b.$); - } - } - } - function Ga(a) { - this.V = a - 16; - this.ra = function (b) { - H[(this.V + 8) >> 2] = b; - }; - this.oa = function (b) { - H[(this.V + 0) >> 2] = b; - }; - this.pa = function () { - H[(this.V + 4) >> 2] = 0; - }; - this.na = function () { - J[(this.V + 12) >> 0] = 0; - }; - this.qa = function () { - J[(this.V + 13) >> 0] = 0; - }; - this.ka = function (b, c) { - this.ra(b); - this.oa(c); - this.pa(); - this.na(); - this.qa(); - }; - } - function Q() { - return 0 < Q.ca; - } - var Ha = {}; - function Ia(a) { - for (; a.length; ) { - var b = a.pop(); - a.pop()(b); - } - } - function Ja(a) { - return this.fromWireType(K[a >> 2]); - } - var R = {}, - S = {}, - Ka = {}; - function La(a) { - if (void 0 === a) return '_unknown'; - a = a.replace(/[^a-zA-Z0-9_]/g, '$'); - var b = a.charCodeAt(0); - return 48 <= b && 57 >= b ? '_' + a : a; - } - function Ma(a, b) { - a = La(a); - return new Function( - 'body', - 'return function ' + - a + - '() {\n "use strict"; return body.apply(this, arguments);\n};\n', - )(b); - } - function Na(a) { - var b = Error, - c = Ma(a, function (d) { - this.name = a; - this.message = d; - d = Error(d).stack; - void 0 !== d && - (this.stack = - this.toString() + '\n' + d.replace(/^Error(:[^\n]*)?\n/, '')); - }); - c.prototype = Object.create(b.prototype); - c.prototype.constructor = c; - c.prototype.toString = function () { - return void 0 === this.message - ? this.name - : this.name + ': ' + this.message; - }; - return c; - } - var Oa = void 0; - function Pa(a, b, c) { - function d(k) { - k = c(k); - if (k.length !== a.length) - throw new Oa('Mismatched type converter count'); - for (var n = 0; n < a.length; ++n) T(a[n], k[n]); - } - a.forEach(function (k) { - Ka[k] = b; - }); - var g = Array(b.length), - h = [], - m = 0; - b.forEach(function (k, n) { - S.hasOwnProperty(k) - ? (g[n] = S[k]) - : (h.push(k), - R.hasOwnProperty(k) || (R[k] = []), - R[k].push(function () { - g[n] = S[k]; - ++m; - m === h.length && d(g); - })); - }); - 0 === h.length && d(g); - } - function Qa(a) { - switch (a) { - case 1: - return 0; - case 2: - return 1; - case 4: - return 2; - case 8: - return 3; - default: - throw new TypeError('Unknown type size: ' + a); - } - } - var Ra = void 0; - function U(a) { - for (var b = ''; E[a]; ) b += Ra[E[a++]]; - return b; - } - var Sa = void 0; - function V(a) { - throw new Sa(a); - } - function T(a, b, c) { - c = c || {}; - if (!('argPackAdvance' in b)) - throw new TypeError( - 'registerType registeredInstance requires argPackAdvance', - ); - var d = b.name; - a || V('type "' + d + '" must have a positive integer typeid pointer'); - if (S.hasOwnProperty(a)) { - if (c.ja) return; - V("Cannot register type '" + d + "' twice"); - } - S[a] = b; - delete Ka[a]; - R.hasOwnProperty(a) && - ((b = R[a]), - delete R[a], - b.forEach(function (g) { - g(); - })); - } - var Ta = [], - X = [ - {}, - { value: void 0 }, - { value: null }, - { value: !0 }, - { value: !1 }, - ]; - function Ua(a) { - 4 < a && 0 === --X[a].aa && ((X[a] = void 0), Ta.push(a)); - } - function Va(a) { - switch (a) { - case void 0: - return 1; - case null: - return 2; - case !0: - return 3; - case !1: - return 4; - default: - var b = Ta.length ? Ta.pop() : X.length; - X[b] = { aa: 1, value: a }; - return b; - } - } - function Wa(a) { - if (null === a) return 'null'; - var b = typeof a; - return 'object' === b || 'array' === b || 'function' === b - ? a.toString() - : '' + a; - } - function Xa(a, b) { - switch (b) { - case 2: - return function (c) { - return this.fromWireType(sa[c >> 2]); - }; - case 3: - return function (c) { - return this.fromWireType(ta[c >> 3]); - }; - default: - throw new TypeError('Unknown float type: ' + a); - } - } - function Ya(a) { - var b = Function; - if (!(b instanceof Function)) - throw new TypeError( - 'new_ called with constructor type ' + - typeof b + - ' which is not a function', - ); - var c = Ma(b.name || 'unknownFunctionName', function () {}); - c.prototype = b.prototype; - c = new c(); - a = b.apply(c, a); - return a instanceof Object ? a : c; - } - function Za(a, b) { - var c = f; - if (void 0 === c[a].S) { - var d = c[a]; - c[a] = function () { - c[a].S.hasOwnProperty(arguments.length) || - V( - "Function '" + - b + - "' called with an invalid number of arguments (" + - arguments.length + - ') - expects one of (' + - c[a].S + - ')!', - ); - return c[a].S[arguments.length].apply(this, arguments); - }; - c[a].S = []; - c[a].S[d.da] = d; - } - } - function $a(a, b, c) { - f.hasOwnProperty(a) - ? ((void 0 === c || (void 0 !== f[a].S && void 0 !== f[a].S[c])) && - V("Cannot register public name '" + a + "' twice"), - Za(a, a), - f.hasOwnProperty(c) && - V( - 'Cannot register multiple overloads of a function with the same number of arguments (' + - c + - ')!', - ), - (f[a].S[c] = b)) - : ((f[a] = b), void 0 !== c && (f[a].Aa = c)); - } - function ab(a, b) { - for (var c = [], d = 0; d < a; d++) c.push(H[(b >> 2) + d]); - return c; - } - function bb(a, b) { - 0 <= a.indexOf('j') || - C('Assertion failed: getDynCaller should only be called with i64 sigs'); - var c = []; - return function () { - c.length = arguments.length; - for (var d = 0; d < arguments.length; d++) c[d] = arguments[d]; - var g; - -1 != a.indexOf('j') - ? (g = - c && c.length - ? f['dynCall_' + a].apply(null, [b].concat(c)) - : f['dynCall_' + a].call(null, b)) - : (g = L.get(b).apply(null, c)); - return g; - }; - } - function Y(a, b) { - a = U(a); - var c = -1 != a.indexOf('j') ? bb(a, b) : L.get(b); - 'function' !== typeof c && - V('unknown function pointer with signature ' + a + ': ' + b); - return c; - } - var cb = void 0; - function db(a) { - a = eb(a); - var b = U(a); - Z(a); - return b; - } - function fb(a, b) { - function c(h) { - g[h] || S[h] || (Ka[h] ? Ka[h].forEach(c) : (d.push(h), (g[h] = !0))); - } - var d = [], - g = {}; - b.forEach(c); - throw new cb(a + ': ' + d.map(db).join([', '])); - } - function gb(a, b, c) { - switch (b) { - case 0: - return c - ? function (d) { - return J[d]; - } - : function (d) { - return E[d]; - }; - case 1: - return c - ? function (d) { - return G[d >> 1]; - } - : function (d) { - return F[d >> 1]; - }; - case 2: - return c - ? function (d) { - return H[d >> 2]; - } - : function (d) { - return K[d >> 2]; - }; - default: - throw new TypeError('Unknown integer type: ' + a); - } - } - var hb = {}; - function ib() { - return 'object' === typeof globalThis - ? globalThis - : Function('return this')(); - } - function jb(a, b) { - var c = S[a]; - void 0 === c && V(b + ' has unknown type ' + db(a)); - return c; - } - var kb = {}, - lb = {}; - function mb() { - if (!nb) { - var a = { - USER: 'web_user', - LOGNAME: 'web_user', - PATH: '/', - PWD: '/', - HOME: '/home/web_user', - LANG: - ( - ('object' === typeof navigator && - navigator.languages && - navigator.languages[0]) || - 'C' - ).replace('-', '_') + '.UTF-8', - _: ca || './this.program', - }, - b; - for (b in lb) a[b] = lb[b]; - var c = []; - for (b in a) c.push(b + '=' + a[b]); - nb = c; - } - return nb; - } - var nb, - ob = [null, [], []]; - function pb(a) { - return 0 === a % 4 && (0 !== a % 100 || 0 === a % 400); - } - function qb(a, b) { - for (var c = 0, d = 0; d <= b; c += a[d++]); - return c; - } - var rb = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], - sb = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; - function tb(a, b) { - for (a = new Date(a.getTime()); 0 < b; ) { - var c = a.getMonth(), - d = (pb(a.getFullYear()) ? rb : sb)[c]; - if (b > d - a.getDate()) - (b -= d - a.getDate() + 1), - a.setDate(1), - 11 > c - ? a.setMonth(c + 1) - : (a.setMonth(0), a.setFullYear(a.getFullYear() + 1)); - else { - a.setDate(a.getDate() + b); - break; - } - } - return a; - } - function ub(a, b, c, d) { - function g(e, l, u) { - for (e = 'number' === typeof e ? e.toString() : e || ''; e.length < l; ) - e = u[0] + e; - return e; - } - function h(e, l) { - return g(e, l, '0'); - } - function m(e, l) { - function u(B) { - return 0 > B ? -1 : 0 < B ? 1 : 0; - } - var v; - 0 === (v = u(e.getFullYear() - l.getFullYear())) && - 0 === (v = u(e.getMonth() - l.getMonth())) && - (v = u(e.getDate() - l.getDate())); - return v; - } - function k(e) { - switch (e.getDay()) { - case 0: - return new Date(e.getFullYear() - 1, 11, 29); - case 1: - return e; - case 2: - return new Date(e.getFullYear(), 0, 3); - case 3: - return new Date(e.getFullYear(), 0, 2); - case 4: - return new Date(e.getFullYear(), 0, 1); - case 5: - return new Date(e.getFullYear() - 1, 11, 31); - case 6: - return new Date(e.getFullYear() - 1, 11, 30); - } - } - function n(e) { - e = tb(new Date(e.R + 1900, 0, 1), e.Z); - var l = new Date(e.getFullYear() + 1, 0, 4), - u = k(new Date(e.getFullYear(), 0, 4)); - l = k(l); - return 0 >= m(u, e) - ? 0 >= m(l, e) - ? e.getFullYear() + 1 - : e.getFullYear() - : e.getFullYear() - 1; - } - var p = H[(d + 40) >> 2]; - d = { - xa: H[d >> 2], - wa: H[(d + 4) >> 2], - X: H[(d + 8) >> 2], - W: H[(d + 12) >> 2], - U: H[(d + 16) >> 2], - R: H[(d + 20) >> 2], - Y: H[(d + 24) >> 2], - Z: H[(d + 28) >> 2], - Ba: H[(d + 32) >> 2], - va: H[(d + 36) >> 2], - ya: p ? ia(p) : '', - }; - c = ia(c); - p = { - '%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 q in p) c = c.replace(new RegExp(q, 'g'), p[q]); - var r = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split( - ' ', - ), - x = 'January February March April May June July August September October November December'.split( - ' ', - ); - p = { - '%a': function (e) { - return r[e.Y].substring(0, 3); - }, - '%A': function (e) { - return r[e.Y]; - }, - '%b': function (e) { - return x[e.U].substring(0, 3); - }, - '%B': function (e) { - return x[e.U]; - }, - '%C': function (e) { - return h(((e.R + 1900) / 100) | 0, 2); - }, - '%d': function (e) { - return h(e.W, 2); - }, - '%e': function (e) { - return g(e.W, 2, ' '); - }, - '%g': function (e) { - return n(e).toString().substring(2); - }, - '%G': function (e) { - return n(e); - }, - '%H': function (e) { - return h(e.X, 2); - }, - '%I': function (e) { - e = e.X; - 0 == e ? (e = 12) : 12 < e && (e -= 12); - return h(e, 2); - }, - '%j': function (e) { - return h(e.W + qb(pb(e.R + 1900) ? rb : sb, e.U - 1), 3); - }, - '%m': function (e) { - return h(e.U + 1, 2); - }, - '%M': function (e) { - return h(e.wa, 2); - }, - '%n': function () { - return '\n'; - }, - '%p': function (e) { - return 0 <= e.X && 12 > e.X ? 'AM' : 'PM'; - }, - '%S': function (e) { - return h(e.xa, 2); - }, - '%t': function () { - return '\t'; - }, - '%u': function (e) { - return e.Y || 7; - }, - '%U': function (e) { - var l = new Date(e.R + 1900, 0, 1), - u = 0 === l.getDay() ? l : tb(l, 7 - l.getDay()); - e = new Date(e.R + 1900, e.U, e.W); - return 0 > m(u, e) - ? h( - Math.ceil( - (31 - - u.getDate() + - (qb(pb(e.getFullYear()) ? rb : sb, e.getMonth() - 1) - 31) + - e.getDate()) / - 7, - ), - 2, - ) - : 0 === m(u, l) - ? '01' - : '00'; - }, - '%V': function (e) { - var l = new Date(e.R + 1901, 0, 4), - u = k(new Date(e.R + 1900, 0, 4)); - l = k(l); - var v = tb(new Date(e.R + 1900, 0, 1), e.Z); - return 0 > m(v, u) - ? '53' - : 0 >= m(l, v) - ? '01' - : h( - Math.ceil( - (u.getFullYear() < e.R + 1900 - ? e.Z + 32 - u.getDate() - : e.Z + 1 - u.getDate()) / 7, - ), - 2, - ); - }, - '%w': function (e) { - return e.Y; - }, - '%W': function (e) { - var l = new Date(e.R, 0, 1), - u = - 1 === l.getDay() - ? l - : tb(l, 0 === l.getDay() ? 1 : 7 - l.getDay() + 1); - e = new Date(e.R + 1900, e.U, e.W); - return 0 > m(u, e) - ? h( - Math.ceil( - (31 - - u.getDate() + - (qb(pb(e.getFullYear()) ? rb : sb, e.getMonth() - 1) - 31) + - e.getDate()) / - 7, - ), - 2, - ) - : 0 === m(u, l) - ? '01' - : '00'; - }, - '%y': function (e) { - return (e.R + 1900).toString().substring(2); - }, - '%Y': function (e) { - return e.R + 1900; - }, - '%z': function (e) { - e = e.va; - var l = 0 <= e; - e = Math.abs(e) / 60; - return ( - (l ? '+' : '-') + - String('0000' + ((e / 60) * 100 + (e % 60))).slice(-4) - ); - }, - '%Z': function (e) { - return e.ya; - }, - '%%': function () { - return '%'; - }, - }; - for (q in p) - 0 <= c.indexOf(q) && (c = c.replace(new RegExp(q, 'g'), p[q](d))); - q = vb(c); - if (q.length > b) return 0; - J.set(q, a); - return q.length - 1; - } - Oa = f.InternalError = Na('InternalError'); - for (var wb = Array(256), xb = 0; 256 > xb; ++xb) - wb[xb] = String.fromCharCode(xb); - Ra = wb; - Sa = f.BindingError = Na('BindingError'); - f.count_emval_handles = function () { - for (var a = 0, b = 5; b < X.length; ++b) void 0 !== X[b] && ++a; - return a; - }; - f.get_first_emval = function () { - for (var a = 5; a < X.length; ++a) if (void 0 !== X[a]) return X[a]; - return null; - }; - cb = f.UnboundTypeError = Na('UnboundTypeError'); - function vb(a) { - var b = Array(ka(a) + 1); - ja(a, b, 0, b.length); - return b; - } - xa.push({ - fa: function () { - yb(); - }, - }); - var Ab = { - q: function (a) { - return zb(a + 16) + 16; - }, - D: function () {}, - p: function (a, b, c) { - new Ga(a).ka(b, c); - 'uncaught_exception' in Q ? Q.ca++ : (Q.ca = 1); - throw a; - }, - m: function (a) { - var b = Ha[a]; - delete Ha[a]; - var c = b.la, - d = b.ma, - g = b.ba, - h = g - .map(function (m) { - return m.ia; - }) - .concat( - g.map(function (m) { - return m.ta; - }), - ); - Pa([a], h, function (m) { - var k = {}; - g.forEach(function (n, p) { - var q = m[p], - r = n.ga, - x = n.ha, - e = m[p + g.length], - l = n.sa, - u = n.ua; - k[n.ea] = { - read: function (v) { - return q.fromWireType(r(x, v)); - }, - write: function (v, B) { - var W = []; - l(u, v, e.toWireType(W, B)); - Ia(W); - }, - }; - }); - return [ - { - name: b.name, - fromWireType: function (n) { - var p = {}, - q; - for (q in k) p[q] = k[q].read(n); - d(n); - return p; - }, - toWireType: function (n, p) { - for (var q in k) - if (!(q in p)) - throw new TypeError('Missing field: "' + q + '"'); - var r = c(); - for (q in k) k[q].write(r, p[q]); - null !== n && n.push(d, r); - return r; - }, - argPackAdvance: 8, - readValueFromPointer: Ja, - T: d, - }, - ]; - }); - }, - z: function (a, b, c, d, g) { - var h = Qa(c); - b = U(b); - T(a, { - name: b, - fromWireType: function (m) { - return !!m; - }, - toWireType: function (m, k) { - return k ? d : g; - }, - argPackAdvance: 8, - readValueFromPointer: function (m) { - if (1 === c) var k = J; - else if (2 === c) k = G; - else if (4 === c) k = H; - else throw new TypeError('Unknown boolean type size: ' + b); - return this.fromWireType(k[m >> h]); - }, - T: null, - }); - }, - y: function (a, b) { - b = U(b); - T(a, { - name: b, - fromWireType: function (c) { - var d = X[c].value; - Ua(c); - return d; - }, - toWireType: function (c, d) { - return Va(d); - }, - argPackAdvance: 8, - readValueFromPointer: Ja, - T: null, - }); - }, - j: function (a, b, c) { - c = Qa(c); - b = U(b); - T(a, { - name: b, - fromWireType: function (d) { - return d; - }, - toWireType: function (d, g) { - if ('number' !== typeof g && 'boolean' !== typeof g) - throw new TypeError( - 'Cannot convert "' + Wa(g) + '" to ' + this.name, - ); - return g; - }, - argPackAdvance: 8, - readValueFromPointer: Xa(b, c), - T: null, - }); - }, - l: function (a, b, c, d, g, h) { - var m = ab(b, c); - a = U(a); - g = Y(d, g); - $a( - a, - function () { - fb('Cannot call ' + a + ' due to unbound types', m); - }, - b - 1, - ); - Pa([], m, function (k) { - var n = a, - p = a; - k = [k[0], null].concat(k.slice(1)); - var q = g, - r = k.length; - 2 > r && - V( - "argTypes array size mismatch! Must at least get return value and 'this' types!", - ); - for (var x = null !== k[1] && !1, e = !1, l = 1; l < k.length; ++l) - if (null !== k[l] && void 0 === k[l].T) { - e = !0; - break; - } - var u = 'void' !== k[0].name, - v = '', - B = ''; - for (l = 0; l < r - 2; ++l) - (v += (0 !== l ? ', ' : '') + 'arg' + l), - (B += (0 !== l ? ', ' : '') + 'arg' + l + 'Wired'); - p = - 'return function ' + - La(p) + - '(' + - v + - ') {\nif (arguments.length !== ' + - (r - 2) + - ") {\nthrowBindingError('function " + - p + - " called with ' + arguments.length + ' arguments, expected " + - (r - 2) + - " args!');\n}\n"; - e && (p += 'var destructors = [];\n'); - var W = e ? 'destructors' : 'null'; - v = 'throwBindingError invoker fn runDestructors retType classParam'.split( - ' ', - ); - q = [V, q, h, Ia, k[0], k[1]]; - x && - (p += 'var thisWired = classParam.toWireType(' + W + ', this);\n'); - for (l = 0; l < r - 2; ++l) - (p += - 'var arg' + - l + - 'Wired = argType' + - l + - '.toWireType(' + - W + - ', arg' + - l + - '); // ' + - k[l + 2].name + - '\n'), - v.push('argType' + l), - q.push(k[l + 2]); - x && (B = 'thisWired' + (0 < B.length ? ', ' : '') + B); - p += - (u ? 'var rv = ' : '') + - 'invoker(fn' + - (0 < B.length ? ', ' : '') + - B + - ');\n'; - if (e) p += 'runDestructors(destructors);\n'; - else - for (l = x ? 1 : 2; l < k.length; ++l) - (r = 1 === l ? 'thisWired' : 'arg' + (l - 2) + 'Wired'), - null !== k[l].T && - ((p += r + '_dtor(' + r + '); // ' + k[l].name + '\n'), - v.push(r + '_dtor'), - q.push(k[l].T)); - u && (p += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); - v.push(p + '}\n'); - k = Ya(v).apply(null, q); - l = b - 1; - if (!f.hasOwnProperty(n)) - throw new Oa('Replacing nonexistant public symbol'); - void 0 !== f[n].S && void 0 !== l - ? (f[n].S[l] = k) - : ((f[n] = k), (f[n].da = l)); - return []; - }); - }, - d: function (a, b, c, d, g) { - function h(p) { - return p; - } - b = U(b); - -1 === g && (g = 4294967295); - var m = Qa(c); - if (0 === d) { - var k = 32 - 8 * c; - h = function (p) { - return (p << k) >>> k; - }; - } - var n = -1 != b.indexOf('unsigned'); - T(a, { - name: b, - fromWireType: h, - toWireType: function (p, q) { - if ('number' !== typeof q && 'boolean' !== typeof q) - throw new TypeError( - 'Cannot convert "' + Wa(q) + '" to ' + this.name, - ); - if (q < d || q > g) - throw new TypeError( - 'Passing a number "' + - Wa(q) + - '" from JS side to C/C++ side to an argument of type "' + - b + - '", which is outside the valid range [' + - d + - ', ' + - g + - ']!', - ); - return n ? q >>> 0 : q | 0; - }, - argPackAdvance: 8, - readValueFromPointer: gb(b, m, 0 !== d), - T: null, - }); - }, - c: function (a, b, c) { - function d(h) { - h >>= 2; - var m = K; - return new g(I, m[h + 1], m[h]); - } - var g = [ - Int8Array, - Uint8Array, - Int16Array, - Uint16Array, - Int32Array, - Uint32Array, - Float32Array, - Float64Array, - ][b]; - c = U(c); - T( - a, - { - name: c, - fromWireType: d, - argPackAdvance: 8, - readValueFromPointer: d, - }, - { ja: !0 }, - ); - }, - k: function (a, b) { - b = U(b); - var c = 'std::string' === b; - T(a, { - name: b, - fromWireType: function (d) { - var g = K[d >> 2]; - if (c) - for (var h = d + 4, m = 0; m <= g; ++m) { - var k = d + 4 + m; - if (m == g || 0 == E[k]) { - h = ia(h, k - h); - if (void 0 === n) var n = h; - else (n += String.fromCharCode(0)), (n += h); - h = k + 1; - } - } - else { - n = Array(g); - for (m = 0; m < g; ++m) n[m] = String.fromCharCode(E[d + 4 + m]); - n = n.join(''); - } - Z(d); - return n; - }, - toWireType: function (d, g) { - g instanceof ArrayBuffer && (g = new Uint8Array(g)); - var h = 'string' === typeof g; - h || - g instanceof Uint8Array || - g instanceof Uint8ClampedArray || - g instanceof Int8Array || - V('Cannot pass non-string to std::string'); - var m = (c && h - ? function () { - return ka(g); - } - : function () { - return g.length; - })(), - k = zb(4 + m + 1); - K[k >> 2] = m; - if (c && h) ja(g, E, k + 4, m + 1); - else if (h) - for (h = 0; h < m; ++h) { - var n = g.charCodeAt(h); - 255 < n && - (Z(k), - V('String has UTF-16 code units that do not fit in 8 bits')); - E[k + 4 + h] = n; - } - else for (h = 0; h < m; ++h) E[k + 4 + h] = g[h]; - null !== d && d.push(Z, k); - return k; - }, - argPackAdvance: 8, - readValueFromPointer: Ja, - T: function (d) { - Z(d); - }, - }); - }, - h: function (a, b, c) { - c = U(c); - if (2 === b) { - var d = ma; - var g = na; - var h = oa; - var m = function () { - return F; - }; - var k = 1; - } else - 4 === b && - ((d = pa), - (g = qa), - (h = ra), - (m = function () { - return K; - }), - (k = 2)); - T(a, { - name: c, - fromWireType: function (n) { - for (var p = K[n >> 2], q = m(), r, x = n + 4, e = 0; e <= p; ++e) { - var l = n + 4 + e * b; - if (e == p || 0 == q[l >> k]) - (x = d(x, l - x)), - void 0 === r - ? (r = x) - : ((r += String.fromCharCode(0)), (r += x)), - (x = l + b); - } - Z(n); - return r; - }, - toWireType: function (n, p) { - 'string' !== typeof p && - V('Cannot pass non-string to C++ string type ' + c); - var q = h(p), - r = zb(4 + q + b); - K[r >> 2] = q >> k; - g(p, r + 4, q + b); - null !== n && n.push(Z, r); - return r; - }, - argPackAdvance: 8, - readValueFromPointer: Ja, - T: function (n) { - Z(n); - }, - }); - }, - n: function (a, b, c, d, g, h) { - Ha[a] = { name: U(b), la: Y(c, d), ma: Y(g, h), ba: [] }; - }, - f: function (a, b, c, d, g, h, m, k, n, p) { - Ha[a].ba.push({ - ea: U(b), - ia: c, - ga: Y(d, g), - ha: h, - ta: m, - sa: Y(k, n), - ua: p, - }); - }, - A: function (a, b) { - b = U(b); - T(a, { - za: !0, - name: b, - argPackAdvance: 0, - fromWireType: function () {}, - toWireType: function () {}, - }); - }, - g: Ua, - C: function (a) { - if (0 === a) return Va(ib()); - var b = hb[a]; - a = void 0 === b ? U(a) : b; - return Va(ib()[a]); - }, - B: function (a) { - 4 < a && (X[a].aa += 1); - }, - o: function (a, b, c, d) { - a || V('Cannot use deleted val. handle = ' + a); - a = X[a].value; - var g = kb[b]; - if (!g) { - g = ''; - for (var h = 0; h < b; ++h) g += (0 !== h ? ', ' : '') + 'arg' + h; - var m = - 'return function emval_allocator_' + - b + - '(constructor, argTypes, args) {\n'; - for (h = 0; h < b; ++h) - m += - 'var argType' + - h + - " = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + " + - h + - '], "parameter ' + - h + - '");\nvar arg' + - h + - ' = argType' + - h + - '.readValueFromPointer(args);\nargs += argType' + - h + - "['argPackAdvance'];\n"; - g = new Function( - 'requireRegisteredType', - 'Module', - '__emval_register', - m + - ('var obj = new constructor(' + - g + - ');\nreturn __emval_register(obj);\n}\n'), - )(jb, f, Va); - kb[b] = g; - } - return g(a, c, d); - }, - b: function () { - C(); - }, - t: function (a, b, c) { - E.copyWithin(a, b, b + c); - }, - e: function (a) { - a >>>= 0; - var b = E.length; - if (2147483648 < a) return !1; - for (var c = 1; 4 >= c; c *= 2) { - var d = b * (1 + 0.2 / c); - d = Math.min(d, a + 100663296); - d = Math.max(16777216, a, d); - 0 < d % 65536 && (d += 65536 - (d % 65536)); - a: { - try { - D.grow((Math.min(2147483648, d) - I.byteLength + 65535) >>> 16); - ua(D.buffer); - var g = 1; - break a; - } catch (h) {} - g = void 0; - } - if (g) return !0; - } - return !1; - }, - v: function (a, b) { - var c = 0; - mb().forEach(function (d, g) { - var h = b + c; - g = H[(a + 4 * g) >> 2] = h; - for (h = 0; h < d.length; ++h) J[g++ >> 0] = d.charCodeAt(h); - J[g >> 0] = 0; - c += d.length + 1; - }); - return 0; - }, - w: function (a, b) { - var c = mb(); - H[a >> 2] = c.length; - var d = 0; - c.forEach(function (g) { - d += g.length + 1; - }); - H[b >> 2] = d; - return 0; - }, - x: function () { - return 0; - }, - r: function () {}, - i: function (a, b, c, d) { - for (var g = 0, h = 0; h < c; h++) { - for ( - var m = H[(b + 8 * h) >> 2], k = H[(b + (8 * h + 4)) >> 2], n = 0; - n < k; - n++ - ) { - var p = E[m + n], - q = ob[a]; - if (0 === p || 10 === p) { - for (p = 0; q[p] && !(NaN <= p); ) ++p; - p = ha.decode( - q.subarray ? q.subarray(0, p) : new Uint8Array(q.slice(0, p)), - ); - (1 === a ? ea : z)(p); - q.length = 0; - } else q.push(p); - } - g += k; - } - H[d >> 2] = g; - return 0; - }, - a: D, - s: function () {}, - u: function (a, b, c, d) { - return ub(a, b, c, d); - }, - }; - (function () { - function a(g) { - f.asm = g.exports; - L = f.asm.E; - M--; - f.monitorRunDependencies && f.monitorRunDependencies(M); - 0 == M && - (null !== Ba && (clearInterval(Ba), (Ba = null)), - N && ((g = N), (N = null), g())); - } - function b(g) { - a(g.instance); - } - function c(g) { - return Fa() - .then(function (h) { - return WebAssembly.instantiate(h, d); - }) - .then(g, function (h) { - z('failed to asynchronously prepare wasm: ' + h); - C(h); - }); - } - var d = { a: Ab }; - M++; - f.monitorRunDependencies && f.monitorRunDependencies(M); - if (f.instantiateWasm) - try { - return f.instantiateWasm(d, a); - } catch (g) { - return ( - z('Module.instantiateWasm callback failed with error: ' + g), !1 - ); - } - (function () { - return A || - 'function' !== typeof WebAssembly.instantiateStreaming || - Ca() || - 'function' !== typeof fetch - ? c(b) - : fetch(O, { credentials: 'same-origin' }).then(function (g) { - return WebAssembly.instantiateStreaming(g, d).then(b, function ( - h, - ) { - z('wasm streaming compile failed: ' + h); - z('falling back to ArrayBuffer instantiation'); - return c(b); - }); - }); - })().catch(ba); - return {}; - })(); - var yb = (f.___wasm_call_ctors = function () { - return (yb = f.___wasm_call_ctors = f.asm.F).apply(null, arguments); - }), - zb = (f._malloc = function () { - return (zb = f._malloc = f.asm.G).apply(null, arguments); - }), - Z = (f._free = function () { - return (Z = f._free = f.asm.H).apply(null, arguments); - }), - eb = (f.___getTypeName = function () { - return (eb = f.___getTypeName = f.asm.I).apply(null, arguments); - }); - f.___embind_register_native_and_builtin_types = function () { - return (f.___embind_register_native_and_builtin_types = f.asm.J).apply( - null, - arguments, - ); - }; - f.dynCall_viijii = function () { - return (f.dynCall_viijii = f.asm.K).apply(null, arguments); - }; - f.dynCall_iiji = function () { - return (f.dynCall_iiji = f.asm.L).apply(null, arguments); - }; - f.dynCall_jiji = function () { - return (f.dynCall_jiji = f.asm.M).apply(null, arguments); - }; - f.dynCall_iiiiiijj = function () { - return (f.dynCall_iiiiiijj = f.asm.N).apply(null, arguments); - }; - f.dynCall_iiiiij = function () { - return (f.dynCall_iiiiij = f.asm.O).apply(null, arguments); - }; - f.dynCall_iiiiijj = function () { - return (f.dynCall_iiiiijj = f.asm.P).apply(null, arguments); - }; - var Bb; - N = function Cb() { - Bb || Db(); - Bb || (N = Cb); - }; - function Db() { - function a() { - if (!Bb && ((Bb = !0), (f.calledRun = !0), !fa)) { - P(xa); - P(ya); - aa(f); - if (f.onRuntimeInitialized) f.onRuntimeInitialized(); - if (f.postRun) - for ( - 'function' == typeof f.postRun && (f.postRun = [f.postRun]); - f.postRun.length; +var f;f||(f=typeof jxl_enc !== 'undefined' ? jxl_enc : {});var aa,ba;f.ready=new Promise(function(a,b){aa=a;ba=b});var t={},w;for(w in f)f.hasOwnProperty(w)&&(t[w]=f[w]);var ca="./this.program",y="",da;y=self.location.href;_scriptDir&&(y=_scriptDir);0!==y.indexOf("blob:")?y=y.substr(0,y.lastIndexOf("/")+1):y="";da=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}; +var ea=f.print||console.log.bind(console),z=f.printErr||console.warn.bind(console);for(w in t)t.hasOwnProperty(w)&&(f[w]=t[w]);t=null;f.thisProgram&&(ca=f.thisProgram);var A;f.wasmBinary&&(A=f.wasmBinary);var noExitRuntime;f.noExitRuntime&&(noExitRuntime=f.noExitRuntime);"object"!==typeof WebAssembly&&C("no native wasm support detected");var D,fa=!1,ha=new TextDecoder("utf8");function ia(a,b){if(!a)return"";b=a+b;for(var c=a;!(c>=b)&&E[c];)++c;return ha.decode(E.subarray(a,c))} +function ja(a,b,c,d){if(0=h){var m=a.charCodeAt(++g);h=65536+((h&1023)<<10)|m&1023}if(127>=h){if(c>=d)break;b[c++]=h}else{if(2047>=h){if(c+1>=d)break;b[c++]=192|h>>6}else{if(65535>=h){if(c+2>=d)break;b[c++]=224|h>>12}else{if(c+3>=d)break;b[c++]=240|h>>18;b[c++]=128|h>>12&63}b[c++]=128|h>>6&63}b[c++]=128|h&63}}b[c]=0}} +function ka(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}var la=new TextDecoder("utf-16le");function ma(a,b){var c=a>>1;for(b=c+b/2;!(c>=b)&&F[c];)++c;return la.decode(E.subarray(a,c<<1))}function na(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var g=0;g>1]=a.charCodeAt(g),b+=2;G[b>>1]=0;return b-d} +function oa(a){return 2*a.length}function pa(a,b){for(var c=0,d="";!(c>=b/4);){var g=H[a+4*c>>2];if(0==g)break;++c;65536<=g?(g-=65536,d+=String.fromCharCode(55296|g>>10,56320|g&1023)):d+=String.fromCharCode(g)}return d}function qa(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var g=0;g=h){var m=a.charCodeAt(++g);h=65536+((h&1023)<<10)|m&1023}H[b>>2]=h;b+=4;if(b+4>c)break}H[b>>2]=0;return b-d} +function ra(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}var I,J,E,G,F,H,K,sa,ta;function ua(a){I=a;f.HEAP8=J=new Int8Array(a);f.HEAP16=G=new Int16Array(a);f.HEAP32=H=new Int32Array(a);f.HEAPU8=E=new Uint8Array(a);f.HEAPU16=F=new Uint16Array(a);f.HEAPU32=K=new Uint32Array(a);f.HEAPF32=sa=new Float32Array(a);f.HEAPF64=ta=new Float64Array(a)}var va=f.INITIAL_MEMORY||16777216;f.wasmMemory?D=f.wasmMemory:D=new WebAssembly.Memory({initial:va/65536,maximum:32768}); +D&&(I=D.buffer);va=I.byteLength;ua(I);var L,wa=[],xa=[],ya=[],za=[];function Aa(){var a=f.preRun.shift();wa.unshift(a)}var M=0,Ba=null,N=null;f.preloadedImages={};f.preloadedAudios={};function C(a){if(f.onAbort)f.onAbort(a);z(a);fa=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");ba(a);throw a;} +function Ca(){var a=O;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var O="jxl_enc.wasm";if(!Ca()){var Da=O;O=f.locateFile?f.locateFile(Da,y):y+Da}function Ea(){try{if(A)return new Uint8Array(A);if(da)return da(O);throw"both async and sync fetching of the wasm failed";}catch(a){C(a)}} +function Fa(){return A||"function"!==typeof fetch?Promise.resolve().then(Ea):fetch(O,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+O+"'";return a.arrayBuffer()}).catch(function(){return Ea()})}function P(a){for(;0>2]=b};this.oa=function(b){H[this.V+0>>2]=b};this.pa=function(){H[this.V+4>>2]=0};this.na=function(){J[this.V+12>>0]=0};this.qa=function(){J[this.V+13>>0]=0};this.ka=function(b,c){this.ra(b);this.oa(c);this.pa();this.na();this.qa()}}function Q(){return 0>2])}var R={},S={},Ka={}; +function La(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}function Ma(a,b){a=La(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)} +function Na(a){var b=Error,c=Ma(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var Oa=void 0; +function Pa(a,b,c){function d(k){k=c(k);if(k.length!==a.length)throw new Oa("Mismatched type converter count");for(var n=0;n>2])};case 3:return function(c){return this.fromWireType(ta[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}function Ya(a){var b=Function;if(!(b instanceof Function))throw new TypeError("new_ called with constructor type "+typeof b+" which is not a function");var c=Ma(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c} +function Za(a,b){var c=f;if(void 0===c[a].S){var d=c[a];c[a]=function(){c[a].S.hasOwnProperty(arguments.length)||V("Function '"+b+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+c[a].S+")!");return c[a].S[arguments.length].apply(this,arguments)};c[a].S=[];c[a].S[d.da]=d}} +function $a(a,b,c){f.hasOwnProperty(a)?((void 0===c||void 0!==f[a].S&&void 0!==f[a].S[c])&&V("Cannot register public name '"+a+"' twice"),Za(a,a),f.hasOwnProperty(c)&&V("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),f[a].S[c]=b):(f[a]=b,void 0!==c&&(f[a].Aa=c))}function ab(a,b){for(var c=[],d=0;d>2)+d]);return c} +function bb(a,b){0<=a.indexOf("j")||C("Assertion failed: getDynCaller should only be called with i64 sigs");var c=[];return function(){c.length=arguments.length;for(var d=0;d>1]}:function(d){return F[d>>1]};case 2:return c?function(d){return H[d>>2]}:function(d){return K[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var hb={};function ib(){return"object"===typeof globalThis?globalThis:Function("return this")()}function jb(a,b){var c=S[a];void 0===c&&V(b+" has unknown type "+db(a));return c}var kb={},lb={}; +function mb(){if(!nb){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"===typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:ca||"./this.program"},b;for(b in lb)a[b]=lb[b];var c=[];for(b in a)c.push(b+"="+a[b]);nb=c}return nb}var nb,ob=[null,[],[]];function pb(a){return 0===a%4&&(0!==a%100||0===a%400)}function qb(a,b){for(var c=0,d=0;d<=b;c+=a[d++]);return c} +var rb=[31,29,31,30,31,30,31,31,30,31,30,31],sb=[31,28,31,30,31,30,31,31,30,31,30,31];function tb(a,b){for(a=new Date(a.getTime());0d-a.getDate())b-=d-a.getDate()+1,a.setDate(1),11>c?a.setMonth(c+1):(a.setMonth(0),a.setFullYear(a.getFullYear()+1));else{a.setDate(a.getDate()+b);break}}return a} +function ub(a,b,c,d){function g(e,l,u){for(e="number"===typeof e?e.toString():e||"";e.lengthB?-1:0=m(u,e)?0>=m(l,e)?e.getFullYear()+1:e.getFullYear():e.getFullYear()-1}var p=H[d+40>>2];d={xa:H[d>>2],wa:H[d+4>>2],X:H[d+8>>2],W:H[d+12>>2],U:H[d+16>>2],R:H[d+20>>2],Y:H[d+24>>2],Z:H[d+28>>2],Ba:H[d+32>>2],va:H[d+36>>2], +ya:p?ia(p):""};c=ia(c);p={"%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 q in p)c=c.replace(new RegExp(q,"g"),p[q]);var r="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "), +x="January February March April May June July August September October November December".split(" ");p={"%a":function(e){return r[e.Y].substring(0,3)},"%A":function(e){return r[e.Y]},"%b":function(e){return x[e.U].substring(0,3)},"%B":function(e){return x[e.U]},"%C":function(e){return h((e.R+1900)/100|0,2)},"%d":function(e){return h(e.W,2)},"%e":function(e){return g(e.W,2," ")},"%g":function(e){return n(e).toString().substring(2)},"%G":function(e){return n(e)},"%H":function(e){return h(e.X,2)},"%I":function(e){e= +e.X;0==e?e=12:12e.X?"AM":"PM"},"%S":function(e){return h(e.xa,2)},"%t":function(){return"\t"},"%u":function(e){return e.Y||7},"%U":function(e){var l=new Date(e.R+1900,0,1),u=0===l.getDay()?l:tb(l,7-l.getDay());e=new Date(e.R+1900,e.U,e.W);return 0>m(u,e)?h(Math.ceil((31-u.getDate()+ +(qb(pb(e.getFullYear())?rb:sb,e.getMonth()-1)-31)+e.getDate())/7),2):0===m(u,l)?"01":"00"},"%V":function(e){var l=new Date(e.R+1901,0,4),u=k(new Date(e.R+1900,0,4));l=k(l);var v=tb(new Date(e.R+1900,0,1),e.Z);return 0>m(v,u)?"53":0>=m(l,v)?"01":h(Math.ceil((u.getFullYear()m(u,e)?h(Math.ceil((31- +u.getDate()+(qb(pb(e.getFullYear())?rb:sb,e.getMonth()-1)-31)+e.getDate())/7),2):0===m(u,l)?"01":"00"},"%y":function(e){return(e.R+1900).toString().substring(2)},"%Y":function(e){return e.R+1900},"%z":function(e){e=e.va;var l=0<=e;e=Math.abs(e)/60;return(l?"+":"-")+String("0000"+(e/60*100+e%60)).slice(-4)},"%Z":function(e){return e.ya},"%%":function(){return"%"}};for(q in p)0<=c.indexOf(q)&&(c=c.replace(new RegExp(q,"g"),p[q](d)));q=vb(c);if(q.length>b)return 0;J.set(q,a);return q.length-1} +Oa=f.InternalError=Na("InternalError");for(var wb=Array(256),xb=0;256>xb;++xb)wb[xb]=String.fromCharCode(xb);Ra=wb;Sa=f.BindingError=Na("BindingError");f.count_emval_handles=function(){for(var a=0,b=5;b>h])},T:null})},y:function(a,b){b=U(b);T(a,{name:b,fromWireType:function(c){var d=X[c].value;Ua(c);return d},toWireType:function(c,d){return Va(d)},argPackAdvance:8,readValueFromPointer:Ja,T:null})},j:function(a,b,c){c=Qa(c);b=U(b);T(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,g){if("number"!==typeof g&&"boolean"!==typeof g)throw new TypeError('Cannot convert "'+ +Wa(g)+'" to '+this.name);return g},argPackAdvance:8,readValueFromPointer:Xa(b,c),T:null})},l:function(a,b,c,d,g,h){var m=ab(b,c);a=U(a);g=Y(d,g);$a(a,function(){fb("Cannot call "+a+" due to unbound types",m)},b-1);Pa([],m,function(k){var n=a,p=a;k=[k[0],null].concat(k.slice(1));var q=g,r=k.length;2>r&&V("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var x=null!==k[1]&&!1,e=!1,l=1;l>>k}}var n=-1!=b.indexOf("unsigned");T(a,{name:b,fromWireType:h,toWireType:function(p,q){if("number"!==typeof q&&"boolean"!==typeof q)throw new TypeError('Cannot convert "'+Wa(q)+ +'" to '+this.name);if(qg)throw new TypeError('Passing a number "'+Wa(q)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+d+", "+g+"]!");return n?q>>>0:q|0},argPackAdvance:8,readValueFromPointer:gb(b,m,0!==d),T:null})},c:function(a,b,c){function d(h){h>>=2;var m=K;return new g(I,m[h+1],m[h])}var g=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=U(c);T(a,{name:c,fromWireType:d,argPackAdvance:8, +readValueFromPointer:d},{ja:!0})},k:function(a,b){b=U(b);var c="std::string"===b;T(a,{name:b,fromWireType:function(d){var g=K[d>>2];if(c)for(var h=d+4,m=0;m<=g;++m){var k=d+4+m;if(m==g||0==E[k]){h=ia(h,k-h);if(void 0===n)var n=h;else n+=String.fromCharCode(0),n+=h;h=k+1}}else{n=Array(g);for(m=0;m>2]=m;if(c&&h)ja(g,E,k+4,m+1);else if(h)for(h=0;h>2],q=m(),r,x=n+4,e=0;e<=p;++e){var l=n+4+e*b;if(e==p||0==q[l>>k])x=d(x,l-x),void 0===r?r=x:(r+=String.fromCharCode(0),r+=x),x=l+b}Z(n);return r},toWireType:function(n,p){"string"!==typeof p&&V("Cannot pass non-string to C++ string type "+c);var q=h(p),r=zb(4+q+b);K[r>>2]=q>>k;g(p,r+4,q+b);null!==n&&n.push(Z,r);return r},argPackAdvance:8, +readValueFromPointer:Ja,T:function(n){Z(n)}})},n:function(a,b,c,d,g,h){Ha[a]={name:U(b),la:Y(c,d),ma:Y(g,h),ba:[]}},f:function(a,b,c,d,g,h,m,k,n,p){Ha[a].ba.push({ea:U(b),ia:c,ga:Y(d,g),ha:h,ta:m,sa:Y(k,n),ua:p})},A:function(a,b){b=U(b);T(a,{za:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},g:Ua,C:function(a){if(0===a)return Va(ib());var b=hb[a];a=void 0===b?U(a):b;return Va(ib()[a])},B:function(a){4>> 2) + "+h+'], "parameter '+h+'");\nvar arg'+h+" = argType"+h+".readValueFromPointer(args);\nargs += argType"+h+"['argPackAdvance'];\n";g=(new Function("requireRegisteredType","Module","__emval_register",m+("var obj = new constructor("+g+");\nreturn __emval_register(obj);\n}\n")))(jb, +f,Va);kb[b]=g}return g(a,c,d)},b:function(){C()},t:function(a,b,c){E.copyWithin(a,b,b+c)},e:function(a){a>>>=0;var b=E.length;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216,a,d);0>>16);ua(D.buffer);var g=1;break a}catch(h){}g=void 0}if(g)return!0}return!1},v:function(a,b){var c=0;mb().forEach(function(d,g){var h=b+c;g=H[a+4*g>>2]=h;for(h=0;h> +0]=d.charCodeAt(h);J[g>>0]=0;c+=d.length+1});return 0},w:function(a,b){var c=mb();H[a>>2]=c.length;var d=0;c.forEach(function(g){d+=g.length+1});H[b>>2]=d;return 0},x:function(){return 0},r:function(){},i:function(a,b,c,d){for(var g=0,h=0;h>2],k=H[b+(8*h+4)>>2],n=0;n>2]=g;return 0}, +a:D,s:function(){},u:function(a,b,c,d){return ub(a,b,c,d)}}; +(function(){function a(g){f.asm=g.exports;L=f.asm.E;M--;f.monitorRunDependencies&&f.monitorRunDependencies(M);0==M&&(null!==Ba&&(clearInterval(Ba),Ba=null),N&&(g=N,N=null,g()))}function b(g){a(g.instance)}function c(g){return Fa().then(function(h){return WebAssembly.instantiate(h,d)}).then(g,function(h){z("failed to asynchronously prepare wasm: "+h);C(h)})}var d={a:Ab};M++;f.monitorRunDependencies&&f.monitorRunDependencies(M);if(f.instantiateWasm)try{return f.instantiateWasm(d,a)}catch(g){return z("Module.instantiateWasm callback failed with error: "+ +g),!1}(function(){return A||"function"!==typeof WebAssembly.instantiateStreaming||Ca()||"function"!==typeof fetch?c(b):fetch(O,{credentials:"same-origin"}).then(function(g){return WebAssembly.instantiateStreaming(g,d).then(b,function(h){z("wasm streaming compile failed: "+h);z("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ba);return{}})(); +var yb=f.___wasm_call_ctors=function(){return(yb=f.___wasm_call_ctors=f.asm.F).apply(null,arguments)},zb=f._malloc=function(){return(zb=f._malloc=f.asm.G).apply(null,arguments)},Z=f._free=function(){return(Z=f._free=f.asm.H).apply(null,arguments)},eb=f.___getTypeName=function(){return(eb=f.___getTypeName=f.asm.I).apply(null,arguments)};f.___embind_register_native_and_builtin_types=function(){return(f.___embind_register_native_and_builtin_types=f.asm.J).apply(null,arguments)}; +f.dynCall_viijii=function(){return(f.dynCall_viijii=f.asm.K).apply(null,arguments)};f.dynCall_iiji=function(){return(f.dynCall_iiji=f.asm.L).apply(null,arguments)};f.dynCall_jiji=function(){return(f.dynCall_jiji=f.asm.M).apply(null,arguments)};f.dynCall_iiiiiijj=function(){return(f.dynCall_iiiiiijj=f.asm.N).apply(null,arguments)};f.dynCall_iiiiij=function(){return(f.dynCall_iiiiij=f.asm.O).apply(null,arguments)};f.dynCall_iiiiijj=function(){return(f.dynCall_iiiiijj=f.asm.P).apply(null,arguments)}; +var Bb;N=function Cb(){Bb||Db();Bb||(N=Cb)}; +function Db(){function a(){if(!Bb&&(Bb=!0,f.calledRun=!0,!fa)){P(xa);P(ya);aa(f);if(f.onRuntimeInitialized)f.onRuntimeInitialized();if(f.postRun)for("function"==typeof f.postRun&&(f.postRun=[f.postRun]);f.postRun.length;){var b=f.postRun.shift();za.unshift(b)}P(za)}}if(!(0=c);){var f=a[b++];if(!f)break;if(f&128){var g=a[b++]&63;if(192==(f&224))d+=String.fromCharCode((f&31)<<6|g);else{var l=a[b++]&63;f=224==(f&240)?(f&15)<<12|g<<6|l:(f&7)<<18|g<<12|l<<6|a[b++]&63;65536>f?d+=String.fromCharCode(f):(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else d+=String.fromCharCode(f)}return d}function L(a,b){return a?xa(v(),a,b):""} +function ya(a,b,c,d){if(0=g){var l=a.charCodeAt(++f);g=65536+((g&1023)<<10)|l&1023}if(127>=g){if(c>=d)break;b[c++]=g}else{if(2047>=g){if(c+1>=d)break;b[c++]=192|g>>6}else{if(65535>=g){if(c+2>=d)break;b[c++]=224|g>>12}else{if(c+3>=d)break;b[c++]=240|g>>18;b[c++]=128|g>>12&63}b[c++]=128|g>>6&63}b[c++]=128|g&63}}b[c]=0}}function za(a,b,c){ya(a,v(),b,c)} +function Aa(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}function Ba(a,b){for(var c=0,d="";;){var f=x()[a+2*c>>1];if(0==f||c==b/2)return d;++c;d+=String.fromCharCode(f)}}function Ca(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var f=0;f>1]=g;b+=2}x()[b>>1]=0;return b-d} +function Da(a){return 2*a.length}function Ea(a,b){for(var c=0,d="";!(c>=b/4);){var f=A()[a+4*c>>2];if(0==f)break;++c;65536<=f?(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023)):d+=String.fromCharCode(f)}return d}function Fa(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var f=0;f=g){var l=a.charCodeAt(++f);g=65536+((g&1023)<<10)|l&1023}A()[b>>2]=g;b+=4;if(b+4>c)break}A()[b>>2]=0;return b-d} +function Ga(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}function Ha(a,b){e().set(a,b)}var n,aa,ba,ca,fa,ha,ia,ka,ma;function u(a){n=a;D.HEAP8=aa=new Int8Array(a);D.HEAP16=ca=new Int16Array(a);D.HEAP32=ha=new Int32Array(a);D.HEAPU8=ba=new Uint8Array(a);D.HEAPU16=fa=new Uint16Array(a);D.HEAPU32=ia=new Uint32Array(a);D.HEAPF32=ka=new Float32Array(a);D.HEAPF64=ma=new Float64Array(a)}var Ia=D.INITIAL_MEMORY||16777216; +if(G)m=D.wasmMemory,n=D.buffer;else if(D.wasmMemory)m=D.wasmMemory;else if(m=new WebAssembly.Memory({initial:Ia/65536,maximum:32768,shared:!0}),!(m.buffer instanceof SharedArrayBuffer))throw J("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"),Error("bad memory");m&&(n=m.buffer);Ia=n.byteLength;u(n);var M,Ja=[],Ka=[],La=[],Ma=[]; +function Na(){var a=D.preRun.shift();Ja.unshift(a)}var N=0,Oa=null,Pa=null;D.preloadedImages={};D.preloadedAudios={};function K(a){if(D.onAbort)D.onAbort(a);G&&console.error("Pthread aborting at "+Error().stack);J(a);va=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");oa(a);throw a;}function Qa(){var a=O;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var O="jxl_enc_mt.wasm"; +Qa()||(O=qa(O));function Ra(){try{if(ta)return new Uint8Array(ta);if(ra)return ra(O);throw"both async and sync fetching of the wasm failed";}catch(a){K(a)}}function Sa(){return ta||"function"!==typeof fetch?Promise.resolve().then(Ra):fetch(O,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+O+"'";return a.arrayBuffer()}).catch(function(){return Ra()})}var Ua={60005:function(a,b){setTimeout(function(){Ta(a,b)},0)},60083:function(){throw"Canceled!";}}; +function Va(a){for(;0=a||a>e().length||a&1||0>b)return-28;if(0==b)return 0;2147483647<=b&&(b=Infinity);var c=Atomics.load(A(),Q.rb>>2),d=0;if(c==a&&Atomics.compareExchange(A(),Q.rb>>2,c,0)==c&&(--b,d=1,0>=b))return 1;a=Atomics.notify(A(),a>>2,b);if(0<=a)return a+d;throw"Atomics.notify returned an unexpected value "+a;}D._emscripten_futex_wake=$a; +function ab(a){if(G)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!a)throw"Internal Error! Null pthread_ptr in cleanupThread!";A()[a+12>>2]=0;(a=Q.Oa[a])&&Q.bb(a.worker)} +var Q={ic:1,pc:{ub:0,vb:0},Ma:[],Qa:[],Jb:function(){for(var a=navigator.hardwareConcurrency,b=0;ba;++a)C()[Q.Ka/4+a]=0;A()[Q.Ka+12>>2]=Q.Ka;a=Q.Ka+156;A()[a>>2]=a;var b=R(512);for(a=0;128>a;++a)C()[b/4+a]=0;Atomics.store(C(),Q.Ka+104>>2,b);Atomics.store(C(),Q.Ka+40>>2,Q.Ka);Atomics.store(C(),Q.Ka+44>>2,42);Q.pb();Za(Q.Ka,!1,1);bb(Q.Ka)},Lb:function(){Q.pb();na(D);Q.receiveObjectTransfer=Q.Qb;Q.setThreadStatus=Q.Rb;Q.threadCancel=Q.ac;Q.threadExit= +Q.bc},pb:function(){Q.rb=cb},Oa:{},kb:[],Rb:function(){},tb:function(){for(;0>2,a),Atomics.store(C(),b+0>>2,1),Atomics.store(C(),b+60>>2,1),Atomics.store(C(),b+64>>2,0),Q.tb(),$a(b+0,2147483647),Za(0,0,0),threadInfoStruct=0,G&&postMessage({cmd:"exit"}))},ac:function(){Q.tb();Atomics.store(C(),threadInfoStruct+4>>2,-1);Atomics.store(C(),threadInfoStruct+0>>2,1);$a(threadInfoStruct+0,2147483647); +threadInfoStruct=selfThreadId=0;Za(0,0,0);postMessage({cmd:"cancelDone"})},wc:function(){for(var a in Q.Oa){var b=Q.Oa[a];b&&b.worker&&Q.bb(b.worker)}Q.Oa={};for(a=0;a>2];A()[a.threadInfoStruct+104>>2]=0;S(b);S(a.threadInfoStruct)}a.threadInfoStruct=0;a.gb&&a.Ra&&S(a.Ra);a.Ra=0;a.worker&&(a.worker.La= +null)}},bb:function(a){delete Q.Oa[a.La.wb];Q.Ma.push(a);Q.Qa.splice(Q.Qa.indexOf(a),1);Q.ib(a.La);a.La=void 0},Qb:function(){},qb:function(a,b){a.onmessage=function(c){var d=c.data,f=d.cmd;a.La&&(Q.hb=a.La.threadInfoStruct);if(d.targetThread&&d.targetThread!=(P|0)){var g=Q.Oa[d.vc];g?g.worker.postMessage(c.data,d.transferList):console.error('Internal error! Worker sent a message "'+f+'" to target pthread '+d.targetThread+", but that thread no longer exists!")}else if("processQueuedMainThreadWork"=== +f)eb();else if("spawnThread"===f)fb(c.data);else if("cleanupThread"===f)ab(d.thread);else if("killThread"===f){c=d.thread;if(G)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!c)throw"Internal Error! Null pthread_ptr in killThread!";A()[c+12>>2]=0;c=Q.Oa[c];c.worker.terminate();Q.ib(c);Q.Qa.splice(Q.Qa.indexOf(c.worker),1);c.worker.La=void 0}else if("cancelThread"===f){c=d.thread;if(G)throw"Internal Error! cancelThread() can only ever be called from main application thread!"; +if(!c)throw"Internal Error! Null pthread_ptr in cancelThread!";Q.Oa[c].worker.postMessage({cmd:"cancel"})}else"loaded"===f?(a.loaded=!0,b&&b(a),a.Xa&&(a.Xa(),delete a.Xa)):"print"===f?sa("Thread "+d.threadId+": "+d.text):"printErr"===f?J("Thread "+d.threadId+": "+d.text):"alert"===f?alert("Thread "+d.threadId+": "+d.text):"exit"===f?a.La&&Atomics.load(C(),a.La.wb+68>>2)&&Q.bb(a):"cancelDone"===f?Q.bb(a):"objectTransfer"!==f&&("setimmediate"===c.data.target?a.postMessage(c.data):J("worker sent an unknown command "+ +f));Q.hb=void 0};a.onerror=function(c){J("pthread sent an error! "+c.filename+":"+c.lineno+": "+c.message)};a.postMessage({cmd:"load",urlOrBlob:D.mainScriptUrlOrBlob||_scriptDir,wasmMemory:m,wasmModule:ua})},lb:function(){var a=qa("jxl_enc_mt.worker.js");Q.Ma.push(new Worker(a))},Cb:function(){0==Q.Ma.length&&(Q.lb(),Q.qb(Q.Ma[0]));return 0>2]=b};this.Tb=function(b){A()[this.Wa+0>>2]=b};this.Ub=function(){A()[this.Wa+4>>2]=0};this.Sb=function(){var b=0;e()[this.Wa+12>>0]=b};this.Vb=function(){var b=0;e()[this.Wa+13>>0]=b};this.Hb=function(b,c){this.Wb(b);this.Tb(c);this.Ub();this.Sb();this.Vb()}} +function kb(){return 0>2])}var T={},U={},ob={};function pb(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}function qb(a,b){a=pb(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)} +function rb(a){var b=Error,c=qb(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var sb=void 0; +function tb(a,b,c){function d(k){k=c(k);if(k.length!==a.length)throw new sb("Mismatched type converter count");for(var q=0;q>2])};case 3:return function(c){return this.fromWireType(la()[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}function Cb(a){var b=Function;if(!(b instanceof Function))throw new TypeError("new_ called with constructor type "+typeof b+" which is not a function");var c=qb(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c} +function Db(a,b){var c=D;if(void 0===c[a].Na){var d=c[a];c[a]=function(){c[a].Na.hasOwnProperty(arguments.length)||X("Function '"+b+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+c[a].Na+")!");return c[a].Na[arguments.length].apply(this,arguments)};c[a].Na=[];c[a].Na[d.yb]=d}} +function Eb(a,b,c){D.hasOwnProperty(a)?((void 0===c||void 0!==D[a].Na&&void 0!==D[a].Na[c])&&X("Cannot register public name '"+a+"' twice"),Db(a,a),D.hasOwnProperty(c)&&X("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),D[a].Na[c]=b):(D[a]=b,void 0!==c&&(D[a].sc=c))}function Fb(a,b){for(var c=[],d=0;d>2)+d]);return c} +function Gb(a,b){wa(0<=a.indexOf("j"),"getDynCaller should only be called with i64 sigs");var c=[];return function(){c.length=arguments.length;for(var d=0;d>1]}:function(d){return ea()[d>>1]};case 2:return c?function(d){return A()[d>>2]}:function(d){return C()[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var Nb={}; +function Ob(){return"object"===typeof globalThis?globalThis:Function("return this")()}function Pb(a,b){var c=U[a];void 0===c&&X(b+" has unknown type "+Jb(a));return c}var Qb={};function Rb(a,b,c){if(0>=a||a>e().length||a&1)return-28;a=Atomics.wait(A(),a>>2,b,c);if("timed-out"===a)return-73;if("not-equal"===a)return-6;if("ok"===a)return 0;throw"Atomics.wait returned an unexpected value "+a;} +function Z(a,b){for(var c=arguments.length-2,d=Sb(),f=Tb(8*c),g=f>>3,l=0;l>2]=b,A()[d.ab+4>>2]=c);if(d.sb||!d.lc)d.sb&&(d=d.sb),a=!1,d.$a&&d.$a.Za&&(a=d.$a.Za.getParameter(2978),a=0===a[0]&&0===a[1]&&a[2]===d.width&&a[3]===d.height),d.width=b,d.height=c,a&&d.$a.Za.viewport(0,0,b,c);else{if(d.ab){d=A()[d.ab+8>>2];a=a?L(a):"";var f=Sb(),g=Tb(12),l=0;if(a){l=Aa(a)+1;var k=R(l);za(a,k,l);l=k}A()[g>>2]=l;A()[g+4>>2]=b;A()[g+8>>2]=c;$b(0,d,657457152,0,l,g);gb(f);return 1}return-4}return 0} +function ac(a,b,c){return G?Z(2,1,a,b,c):Zb(a,b,c)}function bc(a){var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=function(c,d){b.vertexAttribDivisorANGLE(c,d)},a.drawArraysInstanced=function(c,d,f,g){b.drawArraysInstancedANGLE(c,d,f,g)},a.drawElementsInstanced=function(c,d,f,g,l){b.drawElementsInstancedANGLE(c,d,f,g,l)})} +function cc(a){var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=function(){return b.createVertexArrayOES()},a.deleteVertexArray=function(c){b.deleteVertexArrayOES(c)},a.bindVertexArray=function(c){b.bindVertexArrayOES(c)},a.isVertexArray=function(c){return b.isVertexArrayOES(c)})}function dc(a){var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=function(c,d){b.drawBuffersWEBGL(c,d)})} +function ec(a){a||(a=fc);if(!a.Ib){a.Ib=!0;var b=a.Za;bc(b);cc(b);dc(b);b.mc=b.getExtension("EXT_disjoint_timer_query");b.rc=b.getExtension("WEBGL_multi_draw");var c="OES_texture_float OES_texture_half_float OES_standard_derivatives OES_vertex_array_object WEBGL_compressed_texture_s3tc WEBGL_depth_texture OES_element_index_uint EXT_texture_filter_anisotropic EXT_frag_depth WEBGL_draw_buffers ANGLE_instanced_arrays OES_texture_float_linear OES_texture_half_float_linear EXT_blend_minmax EXT_shader_texture_lod EXT_texture_norm16 WEBGL_compressed_texture_pvrtc EXT_color_buffer_half_float WEBGL_color_buffer_float EXT_sRGB WEBGL_compressed_texture_etc1 EXT_disjoint_timer_query WEBGL_compressed_texture_etc WEBGL_compressed_texture_astc EXT_color_buffer_float WEBGL_compressed_texture_s3tc_srgb EXT_disjoint_timer_query_webgl2 WEBKIT_WEBGL_compressed_texture_pvrtc".split(" "); +(b.getSupportedExtensions()||[]).forEach(function(d){-1!=c.indexOf(d)&&b.getExtension(d)})}}var fc,gc=["default","low-power","high-performance"],hc={};function ic(){if(!jc){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"===typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:pa||"./this.program"},b;for(b in hc)a[b]=hc[b];var c=[];for(b in a)c.push(b+"="+a[b]);jc=c}return jc}var jc,kc=[null,[],[]]; +function lc(a){return G?Z(3,1,a):0}function mc(a,b,c,d,f){if(G)return Z(4,1,a,b,c,d,f)}function nc(a,b,c,d){if(G)return Z(5,1,a,b,c,d);for(var f=0,g=0;g>2],k=A()[b+(8*g+4)>>2],q=0;q>2]=f;return 0} +function fb(a){if(G)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var b=Q.Cb();if(void 0!==b.La)throw"Internal error!";if(!a.Sa)throw"Internal error, no pthread ptr!";Q.Qa.push(b);for(var c=R(512),d=0;128>d;++d)A()[c+4*d>>2]=0;var f=a.Ra+a.Ta;d=Q.Oa[a.Sa]={worker:b,Ra:a.Ra,Ta:a.Ta,gb:a.gb,wb:a.Sa,threadInfoStruct:a.Sa};var g=d.threadInfoStruct>>2;Atomics.store(C(),g,0);Atomics.store(C(),g+1,0);Atomics.store(C(),g+2,0);Atomics.store(C(),g+17,a.mb);Atomics.store(C(), +g+26,c);Atomics.store(C(),g+12,0);Atomics.store(C(),g+10,d.threadInfoStruct);Atomics.store(C(),g+11,42);Atomics.store(C(),g+27,a.Ta);Atomics.store(C(),g+21,a.Ta);Atomics.store(C(),g+20,f);Atomics.store(C(),g+29,f);Atomics.store(C(),g+30,a.mb);Atomics.store(C(),g+32,a.ub);Atomics.store(C(),g+33,a.vb);c=oc()+40;Atomics.store(C(),g+44,c);b.La=d;var l={cmd:"run",start_routine:a.$b,arg:a.Va,threadInfoStruct:a.Sa,selfThreadId:a.Sa,parentThreadId:a.Nb,stackBase:a.Ra,stackSize:a.Ta};b.Xa=function(){l.time= +performance.now();b.postMessage(l,a.hc)};b.loaded&&(b.Xa(),delete b.Xa)}function pc(){return P|0}D._pthread_self=pc; +function qc(a,b){if(!a)return J("pthread_join attempted on a null thread pointer!"),71;if(G&&selfThreadId==a)return J("PThread "+a+" is attempting to join to itself!"),16;if(!G&&Q.Ka==a)return J("Main thread "+a+" is attempting to join to itself!"),16;if(A()[a+12>>2]!==a)return J("pthread_join attempted on thread "+a+", which does not point to a valid thread, or does not exist anymore!"),71;if(Atomics.load(C(),a+68>>2))return J("Attempted to join thread "+a+", which was already detached!"),28;for(;;){var c= +Atomics.load(C(),a+0>>2);if(1==c)return c=Atomics.load(C(),a+4>>2),b&&(A()[b>>2]=c),Atomics.store(C(),a+68>>2,1),G?postMessage({cmd:"cleanupThread",thread:a}):ab(a),0;if(G&&threadInfoStruct&&!Atomics.load(C(),threadInfoStruct+60>>2)&&2==Atomics.load(C(),threadInfoStruct+0>>2))throw"Canceled!";G||eb();Rb(a+0,c,G?100:1)}}function rc(a){return 0===a%4&&(0!==a%100||0===a%400)}function sc(a,b){for(var c=0,d=0;d<=b;c+=a[d++]);return c} +var tc=[31,29,31,30,31,30,31,31,30,31,30,31],uc=[31,28,31,30,31,30,31,31,30,31,30,31];function vc(a,b){for(a=new Date(a.getTime());0d-a.getDate())b-=d-a.getDate()+1,a.setDate(1),11>c?a.setMonth(c+1):(a.setMonth(0),a.setFullYear(a.getFullYear()+1));else{a.setDate(a.getDate()+b);break}}return a} +function wc(a,b,c,d){function f(h,p,y){for(h="number"===typeof h?h.toString():h||"";h.lengthI?-1:0=l(y,h)?0>=l(p,h)?h.getFullYear()+1:h.getFullYear():h.getFullYear()-1}var t=A()[d+40>>2];d={ec:A()[d>>2],dc:A()[d+4>>2],cb:A()[d+8>>2],Ya:A()[d+12>>2],Ua:A()[d+16>>2],Ja:A()[d+20>>2],eb:A()[d+24>>2],fb:A()[d+28>>2],xc:A()[d+ +32>>2],cc:A()[d+36>>2],fc:t?L(t):""};c=L(c);t={"%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 r in t)c=c.replace(new RegExp(r,"g"),t[r]);var w="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "), +z="January February March April May June July August September October November December".split(" ");t={"%a":function(h){return w[h.eb].substring(0,3)},"%A":function(h){return w[h.eb]},"%b":function(h){return z[h.Ua].substring(0,3)},"%B":function(h){return z[h.Ua]},"%C":function(h){return g((h.Ja+1900)/100|0,2)},"%d":function(h){return g(h.Ya,2)},"%e":function(h){return f(h.Ya,2," ")},"%g":function(h){return q(h).toString().substring(2)},"%G":function(h){return q(h)},"%H":function(h){return g(h.cb, +2)},"%I":function(h){h=h.cb;0==h?h=12:12h.cb?"AM":"PM"},"%S":function(h){return g(h.ec,2)},"%t":function(){return"\t"},"%u":function(h){return h.eb||7},"%U":function(h){var p=new Date(h.Ja+1900,0,1),y=0===p.getDay()?p:vc(p,7-p.getDay());h=new Date(h.Ja+1900,h.Ua,h.Ya);return 0> +l(y,h)?g(Math.ceil((31-y.getDate()+(sc(rc(h.getFullYear())?tc:uc,h.getMonth()-1)-31)+h.getDate())/7),2):0===l(y,p)?"01":"00"},"%V":function(h){var p=new Date(h.Ja+1901,0,4),y=k(new Date(h.Ja+1900,0,4));p=k(p);var B=vc(new Date(h.Ja+1900,0,1),h.fb);return 0>l(B,y)?"53":0>=l(p,B)?"01":g(Math.ceil((y.getFullYear()l(y,h)?g(Math.ceil((31-y.getDate()+(sc(rc(h.getFullYear())?tc:uc,h.getMonth()-1)-31)+h.getDate())/7),2):0===l(y,p)?"01":"00"},"%y":function(h){return(h.Ja+1900).toString().substring(2)},"%Y":function(h){return h.Ja+1900},"%z":function(h){h=h.cc;var p=0<=h;h=Math.abs(h)/60;return(p?"+":"-")+String("0000"+(h/60*100+h%60)).slice(-4)},"%Z":function(h){return h.fc},"%%":function(){return"%"}};for(r in t)0<=c.indexOf(r)&&(c=c.replace(new RegExp(r,"g"),t[r](d)));r= +xc(c);if(r.length>b)return 0;Ha(r,a);return r.length-1} +function yc(a){if(G)return Z(6,1,a);switch(a){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1; +case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"=== +typeof navigator?navigator.hardwareConcurrency||1:1}A()[zc()>>2]=28;return-1}G||Q.Jb();sb=D.InternalError=rb("InternalError");for(var Ac=Array(256),Bc=0;256>Bc;++Bc)Ac[Bc]=String.fromCharCode(Bc);vb=Ac;wb=D.BindingError=rb("BindingError");D.count_emval_handles=function(){for(var a=0,b=5;b>g])},Pa:null})},R:function(a,b){b=W(b);V(a,{name:b,fromWireType:function(c){var d=Y[c].value;yb(c);return d},toWireType:function(c,d){return zb(d)},argPackAdvance:8,readValueFromPointer:nb,Pa:null})},t:function(a, +b,c){c=ub(c);b=W(b);V(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,f){if("number"!==typeof f&&"boolean"!==typeof f)throw new TypeError('Cannot convert "'+Ab(f)+'" to '+this.name);return f},argPackAdvance:8,readValueFromPointer:Bb(b,c),Pa:null})},v:function(a,b,c,d,f,g){var l=Fb(b,c);a=W(a);f=Hb(d,f);Eb(a,function(){Lb("Cannot call "+a+" due to unbound types",l)},b-1);tb([],l,function(k){var q=a,t=a;k=[k[0],null].concat(k.slice(1));var r=f,w=k.length;2>w&&X("argTypes array size mismatch! Must at least get return value and 'this' types!"); +for(var z=null!==k[1]&&!1,h=!1,p=1;p>>k}}var q=-1!=b.indexOf("unsigned");V(a,{name:b,fromWireType:g,toWireType:function(t, +r){if("number"!==typeof r&&"boolean"!==typeof r)throw new TypeError('Cannot convert "'+Ab(r)+'" to '+this.name);if(rf)throw new TypeError('Passing a number "'+Ab(r)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+d+", "+f+"]!");return q?r>>>0:r|0},argPackAdvance:8,readValueFromPointer:Mb(b,l,0!==d),Pa:null})},h:function(a,b,c){function d(g){g>>=2;var l=C();return new f(n,l[g+1],l[g])}var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array, +Uint32Array,Float32Array,Float64Array][b];c=W(c);V(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{Gb:!0})},u:function(a,b){b=W(b);var c="std::string"===b;V(a,{name:b,fromWireType:function(d){var f=C()[d>>2];if(c)for(var g=d+4,l=0;l<=f;++l){var k=d+4+l;if(l==f||0==v()[k]){g=L(g,k-g);if(void 0===q)var q=g;else q+=String.fromCharCode(0),q+=g;g=k+1}}else{q=Array(f);for(l=0;l>2]=l;if(c&&g)za(f,k+4,l+1);else if(g)for(g=0;g>2],r=l(),w,z=q+4,h=0;h<=t;++h){var p=q+4+h*b;if(h==t||0==r[p>>k])z=d(z,p-z),void 0===w?w=z:(w+=String.fromCharCode(0),w+=z),z=p+b}S(q);return w},toWireType:function(q,t){"string"!==typeof t&&X("Cannot pass non-string to C++ string type "+ +c);var r=g(t),w=R(4+r+b);C()[w>>2]=r>>k;f(t,w+4,r+b);null!==q&&q.push(S,w);return w},argPackAdvance:8,readValueFromPointer:nb,Pa:function(q){S(q)}})},x:function(a,b,c,d,f,g){lb[a]={name:W(b),Ob:Hb(c,d),Pb:Hb(f,g),ob:[]}},l:function(a,b,c,d,f,g,l,k,q,t){lb[a].ob.push({Ab:W(b),Fb:c,Db:Hb(d,f),Eb:g,Yb:l,Xb:Hb(k,q),Zb:t})},T:function(a,b){b=W(b);V(a,{oc:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},H:function(a,b){if(a==b)postMessage({cmd:"processQueuedMainThreadWork"}); +else if(G)postMessage({targetThread:a,cmd:"processThreadQueue"});else{a=(a=Q.Oa[a])&&a.worker;if(!a)return;a.postMessage({cmd:"processThreadQueue"})}return 1},m:yb,W:function(a){if(0===a)return zb(Ob());var b=Nb[a];a=void 0===b?W(a):b;return zb(Ob()[a])},V:function(a){4>> 2) + "+g+'], "parameter '+g+'");\nvar arg'+g+" = argType"+g+".readValueFromPointer(args);\nargs += argType"+g+"['argPackAdvance'];\n";f=(new Function("requireRegisteredType","Module","__emval_register",l+("var obj = new constructor("+f+");\nreturn __emval_register(obj);\n}\n")))(Pb,D,zb);Qb[b]=f}return f(a,c,d)},b:function(){K()},n:function(a,b,c){Wb.length=0;var d;for(c>>=2;d=v()[b++];)(d=105>d)&&c&1&&c++, +Wb.push(d?la()[c++>>1]:A()[c]),++c;return Ua[a].apply(null,Wb)},J:function(){},r:function(){},f:Rb,g:$a,d:hb,p:function(){return Ya|0},o:function(){return Xa|0},C:function(a,b,c){v().copyWithin(a,b,b+c)},E:function(a,b,c){Vb.length=b;c>>=3;for(var d=0;da?Ua[-a-1]:Cc[a]).apply(null,Vb)},k:function(a){a>>>=0;var b=v().length;if(a<=b||2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216,a,d);0>>16);u(m.buffer);var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},F:function(a,b,c){return Yb(a)?Zb(a,b,c):ac(a,b,c)},e:function(){},G:function(a,b){var c={};b>>=2;c.alpha=!!A()[b];c.depth=!!A()[b+1];c.stencil=!!A()[b+2];c.antialias=!!A()[b+3];c.premultipliedAlpha=!!A()[b+4];c.preserveDrawingBuffer=!!A()[b+5];var d=A()[b+6];c.powerPreference=gc[d];c.failIfMajorPerformanceCaveat=!!A()[b+7];c.Mb=A()[b+8];c.qc=A()[b+9];c.nb=A()[b+ +10];c.zb=A()[b+11];c.tc=A()[b+12];c.uc=A()[b+13];a=Yb(a);!a||c.zb?c=0:(a=a.getContext("webgl",c))?(b=R(8),A()[b+4>>2]=P|0,d={nc:b,attributes:c,version:c.Mb,Za:a},a.canvas&&(a.canvas.$a=d),("undefined"===typeof c.nb||c.nb)&&ec(d),c=b):c=0;return c},O:function(a,b){var c=0;ic().forEach(function(d,f){var g=b+c;f=A()[a+4*f>>2]=g;for(g=0;g>0]=d.charCodeAt(g);e()[f>>0]=0;c+=d.length+1});return 0},P:function(a,b){var c=ic();A()[a>>2]=c.length;var d=0;c.forEach(function(f){d+=f.length+ +1});A()[b>>2]=d;return 0},Q:lc,z:mc,s:nc,B:function(){Q.Kb()},a:m||D.wasmMemory,D:ib,U:function(a,b,c,d){if("undefined"===typeof SharedArrayBuffer)return J("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!a)return J("pthread_create called with a null thread pointer!"),28;var f=[];if(G&&0===f.length)return Ec(687865856,a,b,c,d);var g=0,l=0,k=0,q=0;if(b){var t=A()[b>>2];t+=81920;g=A()[b+8>>2];l=0!==A()[b+12>>2];if(0===A()[b+16>>2]){var r=A()[b+20>>2],w=A()[b+ +24>>2];k=b+20;q=b+24;var z=Q.hb?Q.hb:P|0;if(k||q)if(z)if(A()[z+12>>2]!==z)J("pthread_getschedparam attempted on thread "+z+", which does not point to a valid thread, or does not exist anymore!");else{var h=Atomics.load(C(),z+108+20>>2);z=Atomics.load(C(),z+108+24>>2);k&&(A()[k>>2]=h);q&&(A()[q>>2]=z)}else J("pthread_getschedparam called with a null thread pointer!");k=A()[b+20>>2];q=A()[b+24>>2];A()[b+20>>2]=r;A()[b+24>>2]=w}else k=A()[b+20>>2],q=A()[b+24>>2]}else t=2097152;(b=0==g)?g=Fc(16,t):(g-= +t,wa(0w;++w)C()[(r>>2)+w]=0;A()[a>>2]=r;A()[r+12>>2]=r;a=r+156;A()[a>>2]=a;c={Ra:g,Ta:t,gb:b,ub:k,vb:q,mb:l,$b:c,Sa:r,Nb:P|0,Va:d,hc:f};G?(c.kc="spawnThread",postMessage(c,f)):fb(c);return 0},L:function(a,b){return qc(a,b)},c:pc,A:function(){},N:function(a,b,c,d){return wc(a,b,c,d)},M:yc}; +(function(){function a(f,g){D.asm=f.exports;M=D.asm.Y;ua=g;if(!G){var l=Q.Ma.length;Q.Ma.forEach(function(k){Q.qb(k,function(){if(!--l&&(N--,D.monitorRunDependencies&&D.monitorRunDependencies(N),0==N&&(null!==Oa&&(clearInterval(Oa),Oa=null),Pa))){var q=Pa;Pa=null;q()}})})}}function b(f){a(f.instance,f.module)}function c(f){return Sa().then(function(g){return WebAssembly.instantiate(g,d)}).then(f,function(g){J("failed to asynchronously prepare wasm: "+g);K(g)})}var d={a:Gc};G||(wa(!G,"addRunDependency cannot be used in a pthread worker"), +N++,D.monitorRunDependencies&&D.monitorRunDependencies(N));if(D.instantiateWasm)try{return D.instantiateWasm(d,a)}catch(f){return J("Module.instantiateWasm callback failed with error: "+f),!1}(function(){return ta||"function"!==typeof WebAssembly.instantiateStreaming||Qa()||"function"!==typeof fetch?c(b):fetch(O,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,d).then(b,function(g){J("wasm streaming compile failed: "+g);J("falling back to ArrayBuffer instantiation"); +return c(b)})})})().catch(oa);return{}})();var Dc=D.___wasm_call_ctors=function(){return(Dc=D.___wasm_call_ctors=D.asm.Z).apply(null,arguments)},R=D._malloc=function(){return(R=D._malloc=D.asm._).apply(null,arguments)},S=D._free=function(){return(S=D._free=D.asm.$).apply(null,arguments)},zc=D.___errno_location=function(){return(zc=D.___errno_location=D.asm.aa).apply(null,arguments)},Kb=D.___getTypeName=function(){return(Kb=D.___getTypeName=D.asm.ba).apply(null,arguments)}; +D.___embind_register_native_and_builtin_types=function(){return(D.___embind_register_native_and_builtin_types=D.asm.ca).apply(null,arguments)};D.___em_js__initPthreadsJS=function(){return(D.___em_js__initPthreadsJS=D.asm.da).apply(null,arguments)}; +var oc=D._emscripten_get_global_libc=function(){return(oc=D._emscripten_get_global_libc=D.asm.ea).apply(null,arguments)},Sb=D.stackSave=function(){return(Sb=D.stackSave=D.asm.fa).apply(null,arguments)},gb=D.stackRestore=function(){return(gb=D.stackRestore=D.asm.ga).apply(null,arguments)},Tb=D.stackAlloc=function(){return(Tb=D.stackAlloc=D.asm.ha).apply(null,arguments)},Fc=D._memalign=function(){return(Fc=D._memalign=D.asm.ia).apply(null,arguments)}; +D._emscripten_main_browser_thread_id=function(){return(D._emscripten_main_browser_thread_id=D.asm.ja).apply(null,arguments)};var db=D.___pthread_tsd_run_dtors=function(){return(db=D.___pthread_tsd_run_dtors=D.asm.ka).apply(null,arguments)},eb=D._emscripten_main_thread_process_queued_calls=function(){return(eb=D._emscripten_main_thread_process_queued_calls=D.asm.la).apply(null,arguments)}; +D._emscripten_current_thread_process_queued_calls=function(){return(D._emscripten_current_thread_process_queued_calls=D.asm.ma).apply(null,arguments)};var bb=D._emscripten_register_main_browser_thread_id=function(){return(bb=D._emscripten_register_main_browser_thread_id=D.asm.na).apply(null,arguments)},Ta=D._do_emscripten_dispatch_to_thread=function(){return(Ta=D._do_emscripten_dispatch_to_thread=D.asm.oa).apply(null,arguments)}; +D._emscripten_async_run_in_main_thread=function(){return(D._emscripten_async_run_in_main_thread=D.asm.pa).apply(null,arguments)};D._emscripten_sync_run_in_main_thread=function(){return(D._emscripten_sync_run_in_main_thread=D.asm.qa).apply(null,arguments)};D._emscripten_sync_run_in_main_thread_0=function(){return(D._emscripten_sync_run_in_main_thread_0=D.asm.ra).apply(null,arguments)}; +D._emscripten_sync_run_in_main_thread_1=function(){return(D._emscripten_sync_run_in_main_thread_1=D.asm.sa).apply(null,arguments)};D._emscripten_sync_run_in_main_thread_2=function(){return(D._emscripten_sync_run_in_main_thread_2=D.asm.ta).apply(null,arguments)};D._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(D._emscripten_sync_run_in_main_thread_xprintf_varargs=D.asm.ua).apply(null,arguments)}; +D._emscripten_sync_run_in_main_thread_3=function(){return(D._emscripten_sync_run_in_main_thread_3=D.asm.va).apply(null,arguments)};var Ec=D._emscripten_sync_run_in_main_thread_4=function(){return(Ec=D._emscripten_sync_run_in_main_thread_4=D.asm.wa).apply(null,arguments)};D._emscripten_sync_run_in_main_thread_5=function(){return(D._emscripten_sync_run_in_main_thread_5=D.asm.xa).apply(null,arguments)}; +D._emscripten_sync_run_in_main_thread_6=function(){return(D._emscripten_sync_run_in_main_thread_6=D.asm.ya).apply(null,arguments)};D._emscripten_sync_run_in_main_thread_7=function(){return(D._emscripten_sync_run_in_main_thread_7=D.asm.za).apply(null,arguments)}; +var Ub=D._emscripten_run_in_main_runtime_thread_js=function(){return(Ub=D._emscripten_run_in_main_runtime_thread_js=D.asm.Aa).apply(null,arguments)},$b=D.__emscripten_call_on_thread=function(){return($b=D.__emscripten_call_on_thread=D.asm.Ba).apply(null,arguments)};D._emscripten_tls_init=function(){return(D._emscripten_tls_init=D.asm.Ca).apply(null,arguments)};D.dynCall_viijii=function(){return(D.dynCall_viijii=D.asm.Da).apply(null,arguments)}; +D.dynCall_iiji=function(){return(D.dynCall_iiji=D.asm.Ea).apply(null,arguments)};D.dynCall_jiji=function(){return(D.dynCall_jiji=D.asm.Fa).apply(null,arguments)};D.dynCall_iiiiiijj=function(){return(D.dynCall_iiiiiijj=D.asm.Ga).apply(null,arguments)};D.dynCall_iiiiij=function(){return(D.dynCall_iiiiij=D.asm.Ha).apply(null,arguments)};D.dynCall_iiiiijj=function(){return(D.dynCall_iiiiijj=D.asm.Ia).apply(null,arguments)};var cb=D._main_thread_futex=3067912;D.PThread=Q;D.PThread=Q;D._pthread_self=pc; +D.wasmMemory=m;D.ExitStatus=Hc;var Ic;function Hc(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}Pa=function Jc(){Ic||Kc();Ic||(Pa=Jc)}; +function Kc(){function a(){if(!Ic&&(Ic=!0,D.calledRun=!0,!va)){Va(Ka);G||Va(La);na(D);if(D.onRuntimeInitialized)D.onRuntimeInitialized();if(!G){if(D.postRun)for("function"==typeof D.postRun&&(D.postRun=[D.postRun]);D.postRun.length;){var b=D.postRun.shift();Ma.unshift(b)}Va(Ma)}}}if(!(0>/*C_STRUCTS.pthread.threadExitCode*/2,(ex instanceof Module["ExitStatus"])?ex.status:-2);/*A custom entry specific to Emscripten denoting that the thread crashed.*/Atomics.store(Module["HEAPU32"],(threadInfoStruct+0)>>/*C_STRUCTS.pthread.threadStatus*/2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,/*C_STRUCTS.pthread.threadStatus*/2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex&&ex.stack)err(ex.stack);throw ex}}; diff --git a/codecs/jxl/enc/jxl_enc_mt_simd.d.ts b/codecs/jxl/enc/jxl_enc_mt_simd.d.ts new file mode 100644 index 00000000..3cf01324 --- /dev/null +++ b/codecs/jxl/enc/jxl_enc_mt_simd.d.ts @@ -0,0 +1 @@ +export { default } from './jxl_enc'; diff --git a/codecs/jxl/enc/jxl_enc_mt_simd.js b/codecs/jxl/enc/jxl_enc_mt_simd.js new file mode 100644 index 00000000..be48c481 --- /dev/null +++ b/codecs/jxl/enc/jxl_enc_mt_simd.js @@ -0,0 +1,112 @@ + +var jxl_enc_mt_simd = (function() { + var _scriptDir = import.meta.url; + + return ( +function(jxl_enc_mt_simd) { + jxl_enc_mt_simd = jxl_enc_mt_simd || {}; + + +function e(){m.buffer!=n&&u(m.buffer);return aa}function v(){m.buffer!=n&&u(m.buffer);return ba}function x(){m.buffer!=n&&u(m.buffer);return ca}function ea(){m.buffer!=n&&u(m.buffer);return fa}function A(){m.buffer!=n&&u(m.buffer);return ha}function C(){m.buffer!=n&&u(m.buffer);return ia}function ja(){m.buffer!=n&&u(m.buffer);return ka}function la(){m.buffer!=n&&u(m.buffer);return ma}var D;D||(D=typeof jxl_enc_mt_simd !== 'undefined' ? jxl_enc_mt_simd : {});var na,oa; +D.ready=new Promise(function(a,b){na=a;oa=b});var E={},F;for(F in D)D.hasOwnProperty(F)&&(E[F]=D[F]);var pa="./this.program",G=D.ENVIRONMENT_IS_PTHREAD||!1;G&&(n=D.buffer);var H="";function qa(a){return D.locateFile?D.locateFile(a,H):H+a}var ra;H=self.location.href;_scriptDir&&(H=_scriptDir);0!==H.indexOf("blob:")?H=H.substr(0,H.lastIndexOf("/")+1):H="";ra=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}; +var sa=D.print||console.log.bind(console),J=D.printErr||console.warn.bind(console);for(F in E)E.hasOwnProperty(F)&&(D[F]=E[F]);E=null;D.thisProgram&&(pa=D.thisProgram);var ta;D.wasmBinary&&(ta=D.wasmBinary);var noExitRuntime;D.noExitRuntime&&(noExitRuntime=D.noExitRuntime);"object"!==typeof WebAssembly&&K("no native wasm support detected");var m,ua,threadInfoStruct=0,selfThreadId=0,va=!1;function wa(a,b){a||K("Assertion failed: "+b)} +function xa(a,b,c){c=b+c;for(var d="";!(b>=c);){var f=a[b++];if(!f)break;if(f&128){var g=a[b++]&63;if(192==(f&224))d+=String.fromCharCode((f&31)<<6|g);else{var l=a[b++]&63;f=224==(f&240)?(f&15)<<12|g<<6|l:(f&7)<<18|g<<12|l<<6|a[b++]&63;65536>f?d+=String.fromCharCode(f):(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else d+=String.fromCharCode(f)}return d}function L(a,b){return a?xa(v(),a,b):""} +function ya(a,b,c,d){if(0=g){var l=a.charCodeAt(++f);g=65536+((g&1023)<<10)|l&1023}if(127>=g){if(c>=d)break;b[c++]=g}else{if(2047>=g){if(c+1>=d)break;b[c++]=192|g>>6}else{if(65535>=g){if(c+2>=d)break;b[c++]=224|g>>12}else{if(c+3>=d)break;b[c++]=240|g>>18;b[c++]=128|g>>12&63}b[c++]=128|g>>6&63}b[c++]=128|g&63}}b[c]=0}}function za(a,b,c){ya(a,v(),b,c)} +function Aa(a){for(var b=0,c=0;c=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}function Ba(a,b){for(var c=0,d="";;){var f=x()[a+2*c>>1];if(0==f||c==b/2)return d;++c;d+=String.fromCharCode(f)}}function Ca(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var f=0;f>1]=g;b+=2}x()[b>>1]=0;return b-d} +function Da(a){return 2*a.length}function Ea(a,b){for(var c=0,d="";!(c>=b/4);){var f=A()[a+4*c>>2];if(0==f)break;++c;65536<=f?(f-=65536,d+=String.fromCharCode(55296|f>>10,56320|f&1023)):d+=String.fromCharCode(f)}return d}function Fa(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var f=0;f=g){var l=a.charCodeAt(++f);g=65536+((g&1023)<<10)|l&1023}A()[b>>2]=g;b+=4;if(b+4>c)break}A()[b>>2]=0;return b-d} +function Ga(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}function Ha(a,b){e().set(a,b)}var n,aa,ba,ca,fa,ha,ia,ka,ma;function u(a){n=a;D.HEAP8=aa=new Int8Array(a);D.HEAP16=ca=new Int16Array(a);D.HEAP32=ha=new Int32Array(a);D.HEAPU8=ba=new Uint8Array(a);D.HEAPU16=fa=new Uint16Array(a);D.HEAPU32=ia=new Uint32Array(a);D.HEAPF32=ka=new Float32Array(a);D.HEAPF64=ma=new Float64Array(a)}var Ia=D.INITIAL_MEMORY||16777216; +if(G)m=D.wasmMemory,n=D.buffer;else if(D.wasmMemory)m=D.wasmMemory;else if(m=new WebAssembly.Memory({initial:Ia/65536,maximum:32768,shared:!0}),!(m.buffer instanceof SharedArrayBuffer))throw J("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"),Error("bad memory");m&&(n=m.buffer);Ia=n.byteLength;u(n);var M,Ja=[],Ka=[],La=[],Ma=[]; +function Na(){var a=D.preRun.shift();Ja.unshift(a)}var N=0,Oa=null,Pa=null;D.preloadedImages={};D.preloadedAudios={};function K(a){if(D.onAbort)D.onAbort(a);G&&console.error("Pthread aborting at "+Error().stack);J(a);va=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");oa(a);throw a;}function Qa(){var a=O;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var O="jxl_enc_mt_simd.wasm"; +Qa()||(O=qa(O));function Ra(){try{if(ta)return new Uint8Array(ta);if(ra)return ra(O);throw"both async and sync fetching of the wasm failed";}catch(a){K(a)}}function Sa(){return ta||"function"!==typeof fetch?Promise.resolve().then(Ra):fetch(O,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+O+"'";return a.arrayBuffer()}).catch(function(){return Ra()})}var Ua={60053:function(a,b){setTimeout(function(){Ta(a,b)},0)},60131:function(){throw"Canceled!";}}; +function Va(a){for(;0=a||a>e().length||a&1||0>b)return-28;if(0==b)return 0;2147483647<=b&&(b=Infinity);var c=Atomics.load(A(),Q.rb>>2),d=0;if(c==a&&Atomics.compareExchange(A(),Q.rb>>2,c,0)==c&&(--b,d=1,0>=b))return 1;a=Atomics.notify(A(),a>>2,b);if(0<=a)return a+d;throw"Atomics.notify returned an unexpected value "+a;}D._emscripten_futex_wake=$a; +function ab(a){if(G)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!a)throw"Internal Error! Null pthread_ptr in cleanupThread!";A()[a+12>>2]=0;(a=Q.Oa[a])&&Q.bb(a.worker)} +var Q={ic:1,pc:{ub:0,vb:0},Ma:[],Qa:[],Jb:function(){for(var a=navigator.hardwareConcurrency,b=0;ba;++a)C()[Q.Ka/4+a]=0;A()[Q.Ka+12>>2]=Q.Ka;a=Q.Ka+156;A()[a>>2]=a;var b=R(512);for(a=0;128>a;++a)C()[b/4+a]=0;Atomics.store(C(),Q.Ka+104>>2,b);Atomics.store(C(),Q.Ka+40>>2,Q.Ka);Atomics.store(C(),Q.Ka+44>>2,42);Q.pb();Za(Q.Ka,!1,1);bb(Q.Ka)},Lb:function(){Q.pb();na(D);Q.receiveObjectTransfer=Q.Qb;Q.setThreadStatus=Q.Rb;Q.threadCancel=Q.ac;Q.threadExit= +Q.bc},pb:function(){Q.rb=cb},Oa:{},kb:[],Rb:function(){},tb:function(){for(;0>2,a),Atomics.store(C(),b+0>>2,1),Atomics.store(C(),b+60>>2,1),Atomics.store(C(),b+64>>2,0),Q.tb(),$a(b+0,2147483647),Za(0,0,0),threadInfoStruct=0,G&&postMessage({cmd:"exit"}))},ac:function(){Q.tb();Atomics.store(C(),threadInfoStruct+4>>2,-1);Atomics.store(C(),threadInfoStruct+0>>2,1);$a(threadInfoStruct+0,2147483647); +threadInfoStruct=selfThreadId=0;Za(0,0,0);postMessage({cmd:"cancelDone"})},wc:function(){for(var a in Q.Oa){var b=Q.Oa[a];b&&b.worker&&Q.bb(b.worker)}Q.Oa={};for(a=0;a>2];A()[a.threadInfoStruct+104>>2]=0;S(b);S(a.threadInfoStruct)}a.threadInfoStruct=0;a.gb&&a.Ra&&S(a.Ra);a.Ra=0;a.worker&&(a.worker.La= +null)}},bb:function(a){delete Q.Oa[a.La.wb];Q.Ma.push(a);Q.Qa.splice(Q.Qa.indexOf(a),1);Q.ib(a.La);a.La=void 0},Qb:function(){},qb:function(a,b){a.onmessage=function(c){var d=c.data,f=d.cmd;a.La&&(Q.hb=a.La.threadInfoStruct);if(d.targetThread&&d.targetThread!=(P|0)){var g=Q.Oa[d.vc];g?g.worker.postMessage(c.data,d.transferList):console.error('Internal error! Worker sent a message "'+f+'" to target pthread '+d.targetThread+", but that thread no longer exists!")}else if("processQueuedMainThreadWork"=== +f)eb();else if("spawnThread"===f)fb(c.data);else if("cleanupThread"===f)ab(d.thread);else if("killThread"===f){c=d.thread;if(G)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!c)throw"Internal Error! Null pthread_ptr in killThread!";A()[c+12>>2]=0;c=Q.Oa[c];c.worker.terminate();Q.ib(c);Q.Qa.splice(Q.Qa.indexOf(c.worker),1);c.worker.La=void 0}else if("cancelThread"===f){c=d.thread;if(G)throw"Internal Error! cancelThread() can only ever be called from main application thread!"; +if(!c)throw"Internal Error! Null pthread_ptr in cancelThread!";Q.Oa[c].worker.postMessage({cmd:"cancel"})}else"loaded"===f?(a.loaded=!0,b&&b(a),a.Xa&&(a.Xa(),delete a.Xa)):"print"===f?sa("Thread "+d.threadId+": "+d.text):"printErr"===f?J("Thread "+d.threadId+": "+d.text):"alert"===f?alert("Thread "+d.threadId+": "+d.text):"exit"===f?a.La&&Atomics.load(C(),a.La.wb+68>>2)&&Q.bb(a):"cancelDone"===f?Q.bb(a):"objectTransfer"!==f&&("setimmediate"===c.data.target?a.postMessage(c.data):J("worker sent an unknown command "+ +f));Q.hb=void 0};a.onerror=function(c){J("pthread sent an error! "+c.filename+":"+c.lineno+": "+c.message)};a.postMessage({cmd:"load",urlOrBlob:D.mainScriptUrlOrBlob||_scriptDir,wasmMemory:m,wasmModule:ua})},lb:function(){var a=qa("jxl_enc_mt_simd.worker.js");Q.Ma.push(new Worker(a))},Cb:function(){0==Q.Ma.length&&(Q.lb(),Q.qb(Q.Ma[0]));return 0>2]=b};this.Tb=function(b){A()[this.Wa+0>>2]=b};this.Ub=function(){A()[this.Wa+4>>2]=0};this.Sb=function(){var b=0;e()[this.Wa+12>>0]=b};this.Vb=function(){var b=0;e()[this.Wa+13>>0]=b};this.Hb=function(b,c){this.Wb(b);this.Tb(c);this.Ub();this.Sb();this.Vb()}}function kb(){return 0>2])}var T={},U={},ob={}; +function pb(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}function qb(a,b){a=pb(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)} +function rb(a){var b=Error,c=qb(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var sb=void 0; +function tb(a,b,c){function d(k){k=c(k);if(k.length!==a.length)throw new sb("Mismatched type converter count");for(var q=0;q>2])};case 3:return function(c){return this.fromWireType(la()[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}function Cb(a){var b=Function;if(!(b instanceof Function))throw new TypeError("new_ called with constructor type "+typeof b+" which is not a function");var c=qb(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c} +function Db(a,b){var c=D;if(void 0===c[a].Na){var d=c[a];c[a]=function(){c[a].Na.hasOwnProperty(arguments.length)||X("Function '"+b+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+c[a].Na+")!");return c[a].Na[arguments.length].apply(this,arguments)};c[a].Na=[];c[a].Na[d.yb]=d}} +function Eb(a,b,c){D.hasOwnProperty(a)?((void 0===c||void 0!==D[a].Na&&void 0!==D[a].Na[c])&&X("Cannot register public name '"+a+"' twice"),Db(a,a),D.hasOwnProperty(c)&&X("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),D[a].Na[c]=b):(D[a]=b,void 0!==c&&(D[a].sc=c))}function Fb(a,b){for(var c=[],d=0;d>2)+d]);return c} +function Gb(a,b){wa(0<=a.indexOf("j"),"getDynCaller should only be called with i64 sigs");var c=[];return function(){c.length=arguments.length;for(var d=0;d>1]}:function(d){return ea()[d>>1]};case 2:return c?function(d){return A()[d>>2]}:function(d){return C()[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var Nb={}; +function Ob(){return"object"===typeof globalThis?globalThis:Function("return this")()}function Pb(a,b){var c=U[a];void 0===c&&X(b+" has unknown type "+Jb(a));return c}var Qb={};function Rb(a,b,c){if(0>=a||a>e().length||a&1)return-28;a=Atomics.wait(A(),a>>2,b,c);if("timed-out"===a)return-73;if("not-equal"===a)return-6;if("ok"===a)return 0;throw"Atomics.wait returned an unexpected value "+a;} +function Z(a,b){for(var c=arguments.length-2,d=Sb(),f=Tb(8*c),g=f>>3,l=0;l>2]=b,A()[d.ab+4>>2]=c);if(d.sb||!d.lc)d.sb&&(d=d.sb),a=!1,d.$a&&d.$a.Za&&(a=d.$a.Za.getParameter(2978),a=0===a[0]&&0===a[1]&&a[2]===d.width&&a[3]===d.height),d.width=b,d.height=c,a&&d.$a.Za.viewport(0,0,b,c);else{if(d.ab){d=A()[d.ab+8>>2];a=a?L(a):"";var f=Sb(),g=Tb(12),l=0;if(a){l=Aa(a)+1;var k=R(l);za(a,k,l);l=k}A()[g>>2]=l;A()[g+4>>2]=b;A()[g+8>>2]=c;$b(0,d,657457152,0,l,g);gb(f);return 1}return-4}return 0} +function ac(a,b,c){return G?Z(2,1,a,b,c):Zb(a,b,c)}function bc(a){var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=function(c,d){b.vertexAttribDivisorANGLE(c,d)},a.drawArraysInstanced=function(c,d,f,g){b.drawArraysInstancedANGLE(c,d,f,g)},a.drawElementsInstanced=function(c,d,f,g,l){b.drawElementsInstancedANGLE(c,d,f,g,l)})} +function cc(a){var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=function(){return b.createVertexArrayOES()},a.deleteVertexArray=function(c){b.deleteVertexArrayOES(c)},a.bindVertexArray=function(c){b.bindVertexArrayOES(c)},a.isVertexArray=function(c){return b.isVertexArrayOES(c)})}function dc(a){var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=function(c,d){b.drawBuffersWEBGL(c,d)})} +function ec(a){a||(a=fc);if(!a.Ib){a.Ib=!0;var b=a.Za;bc(b);cc(b);dc(b);b.mc=b.getExtension("EXT_disjoint_timer_query");b.rc=b.getExtension("WEBGL_multi_draw");var c="OES_texture_float OES_texture_half_float OES_standard_derivatives OES_vertex_array_object WEBGL_compressed_texture_s3tc WEBGL_depth_texture OES_element_index_uint EXT_texture_filter_anisotropic EXT_frag_depth WEBGL_draw_buffers ANGLE_instanced_arrays OES_texture_float_linear OES_texture_half_float_linear EXT_blend_minmax EXT_shader_texture_lod EXT_texture_norm16 WEBGL_compressed_texture_pvrtc EXT_color_buffer_half_float WEBGL_color_buffer_float EXT_sRGB WEBGL_compressed_texture_etc1 EXT_disjoint_timer_query WEBGL_compressed_texture_etc WEBGL_compressed_texture_astc EXT_color_buffer_float WEBGL_compressed_texture_s3tc_srgb EXT_disjoint_timer_query_webgl2 WEBKIT_WEBGL_compressed_texture_pvrtc".split(" "); +(b.getSupportedExtensions()||[]).forEach(function(d){-1!=c.indexOf(d)&&b.getExtension(d)})}}var fc,gc=["default","low-power","high-performance"],hc={};function ic(){if(!jc){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"===typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:pa||"./this.program"},b;for(b in hc)a[b]=hc[b];var c=[];for(b in a)c.push(b+"="+a[b]);jc=c}return jc}var jc,kc=[null,[],[]]; +function lc(a){return G?Z(3,1,a):0}function mc(a,b,c,d,f){if(G)return Z(4,1,a,b,c,d,f)}function nc(a,b,c,d){if(G)return Z(5,1,a,b,c,d);for(var f=0,g=0;g>2],k=A()[b+(8*g+4)>>2],q=0;q>2]=f;return 0} +function fb(a){if(G)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var b=Q.Cb();if(void 0!==b.La)throw"Internal error!";if(!a.Sa)throw"Internal error, no pthread ptr!";Q.Qa.push(b);for(var c=R(512),d=0;128>d;++d)A()[c+4*d>>2]=0;var f=a.Ra+a.Ta;d=Q.Oa[a.Sa]={worker:b,Ra:a.Ra,Ta:a.Ta,gb:a.gb,wb:a.Sa,threadInfoStruct:a.Sa};var g=d.threadInfoStruct>>2;Atomics.store(C(),g,0);Atomics.store(C(),g+1,0);Atomics.store(C(),g+2,0);Atomics.store(C(),g+17,a.mb);Atomics.store(C(), +g+26,c);Atomics.store(C(),g+12,0);Atomics.store(C(),g+10,d.threadInfoStruct);Atomics.store(C(),g+11,42);Atomics.store(C(),g+27,a.Ta);Atomics.store(C(),g+21,a.Ta);Atomics.store(C(),g+20,f);Atomics.store(C(),g+29,f);Atomics.store(C(),g+30,a.mb);Atomics.store(C(),g+32,a.ub);Atomics.store(C(),g+33,a.vb);c=oc()+40;Atomics.store(C(),g+44,c);b.La=d;var l={cmd:"run",start_routine:a.$b,arg:a.Va,threadInfoStruct:a.Sa,selfThreadId:a.Sa,parentThreadId:a.Nb,stackBase:a.Ra,stackSize:a.Ta};b.Xa=function(){l.time= +performance.now();b.postMessage(l,a.hc)};b.loaded&&(b.Xa(),delete b.Xa)}function pc(){return P|0}D._pthread_self=pc; +function qc(a,b){if(!a)return J("pthread_join attempted on a null thread pointer!"),71;if(G&&selfThreadId==a)return J("PThread "+a+" is attempting to join to itself!"),16;if(!G&&Q.Ka==a)return J("Main thread "+a+" is attempting to join to itself!"),16;if(A()[a+12>>2]!==a)return J("pthread_join attempted on thread "+a+", which does not point to a valid thread, or does not exist anymore!"),71;if(Atomics.load(C(),a+68>>2))return J("Attempted to join thread "+a+", which was already detached!"),28;for(;;){var c= +Atomics.load(C(),a+0>>2);if(1==c)return c=Atomics.load(C(),a+4>>2),b&&(A()[b>>2]=c),Atomics.store(C(),a+68>>2,1),G?postMessage({cmd:"cleanupThread",thread:a}):ab(a),0;if(G&&threadInfoStruct&&!Atomics.load(C(),threadInfoStruct+60>>2)&&2==Atomics.load(C(),threadInfoStruct+0>>2))throw"Canceled!";G||eb();Rb(a+0,c,G?100:1)}}function rc(a){return 0===a%4&&(0!==a%100||0===a%400)}function sc(a,b){for(var c=0,d=0;d<=b;c+=a[d++]);return c} +var tc=[31,29,31,30,31,30,31,31,30,31,30,31],uc=[31,28,31,30,31,30,31,31,30,31,30,31];function vc(a,b){for(a=new Date(a.getTime());0d-a.getDate())b-=d-a.getDate()+1,a.setDate(1),11>c?a.setMonth(c+1):(a.setMonth(0),a.setFullYear(a.getFullYear()+1));else{a.setDate(a.getDate()+b);break}}return a} +function wc(a,b,c,d){function f(h,p,y){for(h="number"===typeof h?h.toString():h||"";h.lengthI?-1:0=l(y,h)?0>=l(p,h)?h.getFullYear()+1:h.getFullYear():h.getFullYear()-1}var t=A()[d+40>>2];d={ec:A()[d>>2],dc:A()[d+4>>2],cb:A()[d+8>>2],Ya:A()[d+12>>2],Ua:A()[d+16>>2],Ja:A()[d+20>>2],eb:A()[d+24>>2],fb:A()[d+28>>2],xc:A()[d+ +32>>2],cc:A()[d+36>>2],fc:t?L(t):""};c=L(c);t={"%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 r in t)c=c.replace(new RegExp(r,"g"),t[r]);var w="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "), +z="January February March April May June July August September October November December".split(" ");t={"%a":function(h){return w[h.eb].substring(0,3)},"%A":function(h){return w[h.eb]},"%b":function(h){return z[h.Ua].substring(0,3)},"%B":function(h){return z[h.Ua]},"%C":function(h){return g((h.Ja+1900)/100|0,2)},"%d":function(h){return g(h.Ya,2)},"%e":function(h){return f(h.Ya,2," ")},"%g":function(h){return q(h).toString().substring(2)},"%G":function(h){return q(h)},"%H":function(h){return g(h.cb, +2)},"%I":function(h){h=h.cb;0==h?h=12:12h.cb?"AM":"PM"},"%S":function(h){return g(h.ec,2)},"%t":function(){return"\t"},"%u":function(h){return h.eb||7},"%U":function(h){var p=new Date(h.Ja+1900,0,1),y=0===p.getDay()?p:vc(p,7-p.getDay());h=new Date(h.Ja+1900,h.Ua,h.Ya);return 0> +l(y,h)?g(Math.ceil((31-y.getDate()+(sc(rc(h.getFullYear())?tc:uc,h.getMonth()-1)-31)+h.getDate())/7),2):0===l(y,p)?"01":"00"},"%V":function(h){var p=new Date(h.Ja+1901,0,4),y=k(new Date(h.Ja+1900,0,4));p=k(p);var B=vc(new Date(h.Ja+1900,0,1),h.fb);return 0>l(B,y)?"53":0>=l(p,B)?"01":g(Math.ceil((y.getFullYear()l(y,h)?g(Math.ceil((31-y.getDate()+(sc(rc(h.getFullYear())?tc:uc,h.getMonth()-1)-31)+h.getDate())/7),2):0===l(y,p)?"01":"00"},"%y":function(h){return(h.Ja+1900).toString().substring(2)},"%Y":function(h){return h.Ja+1900},"%z":function(h){h=h.cc;var p=0<=h;h=Math.abs(h)/60;return(p?"+":"-")+String("0000"+(h/60*100+h%60)).slice(-4)},"%Z":function(h){return h.fc},"%%":function(){return"%"}};for(r in t)0<=c.indexOf(r)&&(c=c.replace(new RegExp(r,"g"),t[r](d)));r= +xc(c);if(r.length>b)return 0;Ha(r,a);return r.length-1} +function yc(a){if(G)return Z(6,1,a);switch(a){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1; +case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"=== +typeof navigator?navigator.hardwareConcurrency||1:1}A()[zc()>>2]=28;return-1}G||Q.Jb();sb=D.InternalError=rb("InternalError");for(var Ac=Array(256),Bc=0;256>Bc;++Bc)Ac[Bc]=String.fromCharCode(Bc);vb=Ac;wb=D.BindingError=rb("BindingError");D.count_emval_handles=function(){for(var a=0,b=5;b>g])},Pa:null})},R:function(a,b){b=W(b);V(a,{name:b,fromWireType:function(c){var d=Y[c].value;yb(c);return d},toWireType:function(c,d){return zb(d)},argPackAdvance:8,readValueFromPointer:nb,Pa:null})},t:function(a, +b,c){c=ub(c);b=W(b);V(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,f){if("number"!==typeof f&&"boolean"!==typeof f)throw new TypeError('Cannot convert "'+Ab(f)+'" to '+this.name);return f},argPackAdvance:8,readValueFromPointer:Bb(b,c),Pa:null})},v:function(a,b,c,d,f,g){var l=Fb(b,c);a=W(a);f=Hb(d,f);Eb(a,function(){Lb("Cannot call "+a+" due to unbound types",l)},b-1);tb([],l,function(k){var q=a,t=a;k=[k[0],null].concat(k.slice(1));var r=f,w=k.length;2>w&&X("argTypes array size mismatch! Must at least get return value and 'this' types!"); +for(var z=null!==k[1]&&!1,h=!1,p=1;p>>k}}var q=-1!=b.indexOf("unsigned");V(a,{name:b,fromWireType:g,toWireType:function(t, +r){if("number"!==typeof r&&"boolean"!==typeof r)throw new TypeError('Cannot convert "'+Ab(r)+'" to '+this.name);if(rf)throw new TypeError('Passing a number "'+Ab(r)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+d+", "+f+"]!");return q?r>>>0:r|0},argPackAdvance:8,readValueFromPointer:Mb(b,l,0!==d),Pa:null})},h:function(a,b,c){function d(g){g>>=2;var l=C();return new f(n,l[g+1],l[g])}var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array, +Uint32Array,Float32Array,Float64Array][b];c=W(c);V(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{Gb:!0})},u:function(a,b){b=W(b);var c="std::string"===b;V(a,{name:b,fromWireType:function(d){var f=C()[d>>2];if(c)for(var g=d+4,l=0;l<=f;++l){var k=d+4+l;if(l==f||0==v()[k]){g=L(g,k-g);if(void 0===q)var q=g;else q+=String.fromCharCode(0),q+=g;g=k+1}}else{q=Array(f);for(l=0;l>2]=l;if(c&&g)za(f,k+4,l+1);else if(g)for(g=0;g>2],r=l(),w,z=q+4,h=0;h<=t;++h){var p=q+4+h*b;if(h==t||0==r[p>>k])z=d(z,p-z),void 0===w?w=z:(w+=String.fromCharCode(0),w+=z),z=p+b}S(q);return w},toWireType:function(q,t){"string"!==typeof t&&X("Cannot pass non-string to C++ string type "+ +c);var r=g(t),w=R(4+r+b);C()[w>>2]=r>>k;f(t,w+4,r+b);null!==q&&q.push(S,w);return w},argPackAdvance:8,readValueFromPointer:nb,Pa:function(q){S(q)}})},x:function(a,b,c,d,f,g){lb[a]={name:W(b),Ob:Hb(c,d),Pb:Hb(f,g),ob:[]}},l:function(a,b,c,d,f,g,l,k,q,t){lb[a].ob.push({Ab:W(b),Fb:c,Db:Hb(d,f),Eb:g,Yb:l,Xb:Hb(k,q),Zb:t})},T:function(a,b){b=W(b);V(a,{oc:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},H:function(a,b){if(a==b)postMessage({cmd:"processQueuedMainThreadWork"}); +else if(G)postMessage({targetThread:a,cmd:"processThreadQueue"});else{a=(a=Q.Oa[a])&&a.worker;if(!a)return;a.postMessage({cmd:"processThreadQueue"})}return 1},m:yb,W:function(a){if(0===a)return zb(Ob());var b=Nb[a];a=void 0===b?W(a):b;return zb(Ob()[a])},V:function(a){4>> 2) + "+g+'], "parameter '+g+'");\nvar arg'+g+" = argType"+g+".readValueFromPointer(args);\nargs += argType"+g+"['argPackAdvance'];\n";f=(new Function("requireRegisteredType","Module","__emval_register",l+("var obj = new constructor("+f+");\nreturn __emval_register(obj);\n}\n")))(Pb,D,zb);Qb[b]=f}return f(a,c,d)},b:function(){K()},n:function(a,b,c){Wb.length=0;var d;for(c>>=2;d=v()[b++];)(d=105>d)&&c&1&&c++, +Wb.push(d?la()[c++>>1]:A()[c]),++c;return Ua[a].apply(null,Wb)},J:function(){},r:function(){},f:Rb,g:$a,d:hb,p:function(){return Ya|0},o:function(){return Xa|0},C:function(a,b,c){v().copyWithin(a,b,b+c)},E:function(a,b,c){Vb.length=b;c>>=3;for(var d=0;da?Ua[-a-1]:Cc[a]).apply(null,Vb)},k:function(a){a>>>=0;var b=v().length;if(a<=b||2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216,a,d);0>>16);u(m.buffer);var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},F:function(a,b,c){return Yb(a)?Zb(a,b,c):ac(a,b,c)},e:function(){},G:function(a,b){var c={};b>>=2;c.alpha=!!A()[b];c.depth=!!A()[b+1];c.stencil=!!A()[b+2];c.antialias=!!A()[b+3];c.premultipliedAlpha=!!A()[b+4];c.preserveDrawingBuffer=!!A()[b+5];var d=A()[b+6];c.powerPreference=gc[d];c.failIfMajorPerformanceCaveat=!!A()[b+7];c.Mb=A()[b+8];c.qc=A()[b+9];c.nb=A()[b+ +10];c.zb=A()[b+11];c.tc=A()[b+12];c.uc=A()[b+13];a=Yb(a);!a||c.zb?c=0:(a=a.getContext("webgl",c))?(b=R(8),A()[b+4>>2]=P|0,d={nc:b,attributes:c,version:c.Mb,Za:a},a.canvas&&(a.canvas.$a=d),("undefined"===typeof c.nb||c.nb)&&ec(d),c=b):c=0;return c},O:function(a,b){var c=0;ic().forEach(function(d,f){var g=b+c;f=A()[a+4*f>>2]=g;for(g=0;g>0]=d.charCodeAt(g);e()[f>>0]=0;c+=d.length+1});return 0},P:function(a,b){var c=ic();A()[a>>2]=c.length;var d=0;c.forEach(function(f){d+=f.length+ +1});A()[b>>2]=d;return 0},Q:lc,z:mc,s:nc,B:function(){Q.Kb()},a:m||D.wasmMemory,D:ib,U:function(a,b,c,d){if("undefined"===typeof SharedArrayBuffer)return J("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!a)return J("pthread_create called with a null thread pointer!"),28;var f=[];if(G&&0===f.length)return Ec(687865856,a,b,c,d);var g=0,l=0,k=0,q=0;if(b){var t=A()[b>>2];t+=81920;g=A()[b+8>>2];l=0!==A()[b+12>>2];if(0===A()[b+16>>2]){var r=A()[b+20>>2],w=A()[b+ +24>>2];k=b+20;q=b+24;var z=Q.hb?Q.hb:P|0;if(k||q)if(z)if(A()[z+12>>2]!==z)J("pthread_getschedparam attempted on thread "+z+", which does not point to a valid thread, or does not exist anymore!");else{var h=Atomics.load(C(),z+108+20>>2);z=Atomics.load(C(),z+108+24>>2);k&&(A()[k>>2]=h);q&&(A()[q>>2]=z)}else J("pthread_getschedparam called with a null thread pointer!");k=A()[b+20>>2];q=A()[b+24>>2];A()[b+20>>2]=r;A()[b+24>>2]=w}else k=A()[b+20>>2],q=A()[b+24>>2]}else t=2097152;(b=0==g)?g=Fc(16,t):(g-= +t,wa(0w;++w)C()[(r>>2)+w]=0;A()[a>>2]=r;A()[r+12>>2]=r;a=r+156;A()[a>>2]=a;c={Ra:g,Ta:t,gb:b,ub:k,vb:q,mb:l,$b:c,Sa:r,Nb:P|0,Va:d,hc:f};G?(c.kc="spawnThread",postMessage(c,f)):fb(c);return 0},L:function(a,b){return qc(a,b)},c:pc,A:function(){},N:function(a,b,c,d){return wc(a,b,c,d)},M:yc}; +(function(){function a(f,g){D.asm=f.exports;M=D.asm.Y;ua=g;if(!G){var l=Q.Ma.length;Q.Ma.forEach(function(k){Q.qb(k,function(){if(!--l&&(N--,D.monitorRunDependencies&&D.monitorRunDependencies(N),0==N&&(null!==Oa&&(clearInterval(Oa),Oa=null),Pa))){var q=Pa;Pa=null;q()}})})}}function b(f){a(f.instance,f.module)}function c(f){return Sa().then(function(g){return WebAssembly.instantiate(g,d)}).then(f,function(g){J("failed to asynchronously prepare wasm: "+g);K(g)})}var d={a:Gc};G||(wa(!G,"addRunDependency cannot be used in a pthread worker"), +N++,D.monitorRunDependencies&&D.monitorRunDependencies(N));if(D.instantiateWasm)try{return D.instantiateWasm(d,a)}catch(f){return J("Module.instantiateWasm callback failed with error: "+f),!1}(function(){return ta||"function"!==typeof WebAssembly.instantiateStreaming||Qa()||"function"!==typeof fetch?c(b):fetch(O,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,d).then(b,function(g){J("wasm streaming compile failed: "+g);J("falling back to ArrayBuffer instantiation"); +return c(b)})})})().catch(oa);return{}})();var Dc=D.___wasm_call_ctors=function(){return(Dc=D.___wasm_call_ctors=D.asm.Z).apply(null,arguments)},R=D._malloc=function(){return(R=D._malloc=D.asm._).apply(null,arguments)},S=D._free=function(){return(S=D._free=D.asm.$).apply(null,arguments)},zc=D.___errno_location=function(){return(zc=D.___errno_location=D.asm.aa).apply(null,arguments)},Kb=D.___getTypeName=function(){return(Kb=D.___getTypeName=D.asm.ba).apply(null,arguments)}; +D.___embind_register_native_and_builtin_types=function(){return(D.___embind_register_native_and_builtin_types=D.asm.ca).apply(null,arguments)};D.___em_js__initPthreadsJS=function(){return(D.___em_js__initPthreadsJS=D.asm.da).apply(null,arguments)}; +var oc=D._emscripten_get_global_libc=function(){return(oc=D._emscripten_get_global_libc=D.asm.ea).apply(null,arguments)},Sb=D.stackSave=function(){return(Sb=D.stackSave=D.asm.fa).apply(null,arguments)},gb=D.stackRestore=function(){return(gb=D.stackRestore=D.asm.ga).apply(null,arguments)},Tb=D.stackAlloc=function(){return(Tb=D.stackAlloc=D.asm.ha).apply(null,arguments)},Fc=D._memalign=function(){return(Fc=D._memalign=D.asm.ia).apply(null,arguments)}; +D._emscripten_main_browser_thread_id=function(){return(D._emscripten_main_browser_thread_id=D.asm.ja).apply(null,arguments)};var db=D.___pthread_tsd_run_dtors=function(){return(db=D.___pthread_tsd_run_dtors=D.asm.ka).apply(null,arguments)},eb=D._emscripten_main_thread_process_queued_calls=function(){return(eb=D._emscripten_main_thread_process_queued_calls=D.asm.la).apply(null,arguments)}; +D._emscripten_current_thread_process_queued_calls=function(){return(D._emscripten_current_thread_process_queued_calls=D.asm.ma).apply(null,arguments)};var bb=D._emscripten_register_main_browser_thread_id=function(){return(bb=D._emscripten_register_main_browser_thread_id=D.asm.na).apply(null,arguments)},Ta=D._do_emscripten_dispatch_to_thread=function(){return(Ta=D._do_emscripten_dispatch_to_thread=D.asm.oa).apply(null,arguments)}; +D._emscripten_async_run_in_main_thread=function(){return(D._emscripten_async_run_in_main_thread=D.asm.pa).apply(null,arguments)};D._emscripten_sync_run_in_main_thread=function(){return(D._emscripten_sync_run_in_main_thread=D.asm.qa).apply(null,arguments)};D._emscripten_sync_run_in_main_thread_0=function(){return(D._emscripten_sync_run_in_main_thread_0=D.asm.ra).apply(null,arguments)}; +D._emscripten_sync_run_in_main_thread_1=function(){return(D._emscripten_sync_run_in_main_thread_1=D.asm.sa).apply(null,arguments)};D._emscripten_sync_run_in_main_thread_2=function(){return(D._emscripten_sync_run_in_main_thread_2=D.asm.ta).apply(null,arguments)};D._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(D._emscripten_sync_run_in_main_thread_xprintf_varargs=D.asm.ua).apply(null,arguments)}; +D._emscripten_sync_run_in_main_thread_3=function(){return(D._emscripten_sync_run_in_main_thread_3=D.asm.va).apply(null,arguments)};var Ec=D._emscripten_sync_run_in_main_thread_4=function(){return(Ec=D._emscripten_sync_run_in_main_thread_4=D.asm.wa).apply(null,arguments)};D._emscripten_sync_run_in_main_thread_5=function(){return(D._emscripten_sync_run_in_main_thread_5=D.asm.xa).apply(null,arguments)}; +D._emscripten_sync_run_in_main_thread_6=function(){return(D._emscripten_sync_run_in_main_thread_6=D.asm.ya).apply(null,arguments)};D._emscripten_sync_run_in_main_thread_7=function(){return(D._emscripten_sync_run_in_main_thread_7=D.asm.za).apply(null,arguments)}; +var Ub=D._emscripten_run_in_main_runtime_thread_js=function(){return(Ub=D._emscripten_run_in_main_runtime_thread_js=D.asm.Aa).apply(null,arguments)},$b=D.__emscripten_call_on_thread=function(){return($b=D.__emscripten_call_on_thread=D.asm.Ba).apply(null,arguments)};D._emscripten_tls_init=function(){return(D._emscripten_tls_init=D.asm.Ca).apply(null,arguments)};D.dynCall_viijii=function(){return(D.dynCall_viijii=D.asm.Da).apply(null,arguments)}; +D.dynCall_iiji=function(){return(D.dynCall_iiji=D.asm.Ea).apply(null,arguments)};D.dynCall_jiji=function(){return(D.dynCall_jiji=D.asm.Fa).apply(null,arguments)};D.dynCall_iiiiiijj=function(){return(D.dynCall_iiiiiijj=D.asm.Ga).apply(null,arguments)};D.dynCall_iiiiij=function(){return(D.dynCall_iiiiij=D.asm.Ha).apply(null,arguments)};D.dynCall_iiiiijj=function(){return(D.dynCall_iiiiijj=D.asm.Ia).apply(null,arguments)};var cb=D._main_thread_futex=3067960;D.PThread=Q;D.PThread=Q;D._pthread_self=pc; +D.wasmMemory=m;D.ExitStatus=Hc;var Ic;function Hc(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}Pa=function Jc(){Ic||Kc();Ic||(Pa=Jc)}; +function Kc(){function a(){if(!Ic&&(Ic=!0,D.calledRun=!0,!va)){Va(Ka);G||Va(La);na(D);if(D.onRuntimeInitialized)D.onRuntimeInitialized();if(!G){if(D.postRun)for("function"==typeof D.postRun&&(D.postRun=[D.postRun]);D.postRun.length;){var b=D.postRun.shift();Ma.unshift(b)}Va(Ma)}}}if(!(0>/*C_STRUCTS.pthread.threadExitCode*/2,(ex instanceof Module["ExitStatus"])?ex.status:-2);/*A custom entry specific to Emscripten denoting that the thread crashed.*/Atomics.store(Module["HEAPU32"],(threadInfoStruct+0)>>/*C_STRUCTS.pthread.threadStatus*/2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,/*C_STRUCTS.pthread.threadStatus*/2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex&&ex.stack)err(ex.stack);throw ex}}; diff --git a/src/features/encoders/jxl/worker/jxlEncode.ts b/src/features/encoders/jxl/worker/jxlEncode.ts index 25ee6e77..7a154d3b 100644 --- a/src/features/encoders/jxl/worker/jxlEncode.ts +++ b/src/features/encoders/jxl/worker/jxlEncode.ts @@ -10,24 +10,56 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import jxlEncoder, { JXLModule } from 'codecs/jxl/enc/jxl_enc'; -import wasmUrl from 'url:codecs/jxl/enc/jxl_enc.wasm'; -import { initEmscriptenModule } from 'features/worker-utils'; +import type { JXLModule } from 'codecs/jxl/enc/jxl_enc'; import type { EncodeOptions } from '../shared/meta'; +import { initEmscriptenModule } from 'features/worker-utils'; +import { threads, simd } from 'wasm-feature-detect'; + +import wasmUrl from 'url:codecs/jxl/enc/jxl_enc.wasm'; + +import wasmUrlWithMT from 'url:codecs/jxl/enc/jxl_enc_mt.wasm'; +import workerUrl from 'omt:codecs/jxl/enc/jxl_enc_mt.worker.js'; + +import wasmUrlWithMTAndSIMD from 'url:codecs/jxl/enc/jxl_enc_mt_simd.wasm'; +import workerUrlWithSIMD from 'omt:codecs/jxl/enc/jxl_enc_mt_simd.worker.js'; + let emscriptenModule: Promise; +async function init() { + if (await threads()) { + if (await simd()) { + const jxlEncoder = await import('codecs/jxl/enc/jxl_enc_mt_simd'); + return initEmscriptenModule( + jxlEncoder.default, + wasmUrlWithMTAndSIMD, + workerUrlWithSIMD, + ); + } + const jxlEncoder = await import('codecs/jxl/enc/jxl_enc_mt'); + return initEmscriptenModule( + jxlEncoder.default, + wasmUrlWithMT, + workerUrl, + ); + } + const jxlEncoder = await import('codecs/jxl/enc/jxl_enc'); + return initEmscriptenModule( + jxlEncoder.default, + wasmUrl, + ); +} + export default async function encode( data: ImageData, options: EncodeOptions, ): Promise { - if (!emscriptenModule) { - emscriptenModule = initEmscriptenModule(jxlEncoder, wasmUrl); - } + if (!emscriptenModule) emscriptenModule = init(); const module = await emscriptenModule; const result = module.encode(data.data, data.width, data.height, options); + if (!result) throw new Error('Encoding error.'); - // wasm can’t run on SharedArrayBuffers, so we hard-cast to ArrayBuffer. - return result.buffer as ArrayBuffer; + + return result.buffer; }