diff --git a/codecs/jxl/Makefile b/codecs/jxl/Makefile index 34d083d0..09d0f6d8 100644 --- a/codecs/jxl/Makefile +++ b/codecs/jxl/Makefile @@ -1,8 +1,8 @@ CODEC_URL = https://gitlab.com/wg1/jpeg-xl.git -CODEC_VERSION = c8ce59f8ef6393ba3018917791d04662cbf1172a +CODEC_VERSION = 4d70bd58fbcb758b61446aba447fedd9177a00c9 CODEC_DIR = node_modules/jxl CODEC_BUILD_DIR := $(CODEC_DIR)/build -CODEC_OUT := $(CODEC_BUILD_DIR)/libjpegxl-static.a +CODEC_OUT := $(CODEC_BUILD_DIR)/lib/libjxl.a OUT_JS = enc/jxl_enc.js dec/jxl_dec.js OUT_WASM = $(OUT_JS:.js=.wasm) @@ -14,9 +14,11 @@ all: $(OUT_JS) %.js: %.cpp $(LIBAOM_OUT) $(CODEC_OUT) $(CXX) \ -I $(CODEC_DIR) \ - -I $(CODEC_DIR)/include \ - -I $(CODEC_BUILD_DIR)/include \ + -I $(CODEC_DIR)/lib \ + -I $(CODEC_DIR)/lib/include \ + -I $(CODEC_BUILD_DIR)/lib/include \ -I $(CODEC_DIR)/third_party/highway \ + -I $(CODEC_DIR)/third_party/skcms \ -I $(CODEC_DIR)/third_party/brunsli \ -I $(CODEC_DIR)/third_party/brunsli/c/include \ ${CXXFLAGS} \ @@ -41,7 +43,7 @@ $(CODEC_OUT): $(CODEC_DIR)/CMakeLists.txt mkdir -p $(CODEC_BUILD_DIR) cd $(CODEC_BUILD_DIR) && \ emcmake cmake ../ && \ - $(MAKE) jpegxl-static + $(MAKE) jxl-static $(CODEC_DIR)/CMakeLists.txt: $(CODEC_DIR) diff --git a/codecs/jxl/dec/jxl_dec.cpp b/codecs/jxl/dec/jxl_dec.cpp index d464b095..9d558b63 100644 --- a/codecs/jxl/dec/jxl_dec.cpp +++ b/codecs/jxl/dec/jxl_dec.cpp @@ -1,31 +1,80 @@ #include #include -#include +#include +#include "lib/jxl/color_encoding_internal.h" + +#include "skcms.h" using namespace emscripten; thread_local const val Uint8ClampedArray = val::global("Uint8ClampedArray"); thread_local const val ImageData = val::global("ImageData"); -#define EXPECT_EQ(a, b) if ((a) != (b)) { JpegxlDecoderDestroy(dec); return val::null(); } +#define EXPECT_EQ(a, b) \ + if ((a) != (b)) { \ + JxlDecoderDestroy(dec); \ + return val::null(); \ + } val decode(std::string data) { - JpegxlDecoder* dec = JpegxlDecoderCreate(nullptr); - EXPECT_EQ(JPEGXL_DEC_SUCCESS, JpegxlDecoderSubscribeEvents(dec, JPEGXL_DEC_BASIC_INFO | JPEGXL_DEC_FULL_IMAGE)); + JxlDecoder* dec = JxlDecoderCreate(nullptr); + EXPECT_EQ(JXL_DEC_SUCCESS, + JxlDecoderSubscribeEvents( + dec, JXL_DEC_BASIC_INFO | JXL_DEC_COLOR_ENCODING | JXL_DEC_FULL_IMAGE)); auto next_in = (const uint8_t*)data.c_str(); auto avail_in = data.size(); - EXPECT_EQ(JPEGXL_DEC_BASIC_INFO, JpegxlDecoderProcessInput(dec, &next_in, &avail_in)); + EXPECT_EQ(JXL_DEC_BASIC_INFO, JxlDecoderProcessInput(dec, &next_in, &avail_in)); size_t buffer_size; - const JpegxlPixelFormat format = {4, JPEGXL_LITTLE_ENDIAN, JPEGXL_TYPE_UINT8}; - EXPECT_EQ(JPEGXL_DEC_SUCCESS, JpegxlDecoderImageOutBufferSize(dec, &format, &buffer_size)); - JpegxlBasicInfo info; - EXPECT_EQ(JPEGXL_DEC_SUCCESS, JpegxlDecoderGetBasicInfo(dec, &info)); - std::vector pixels(buffer_size); - EXPECT_EQ(JPEGXL_DEC_SUCCESS, JpegxlDecoderSetImageOutBuffer(dec, &format, pixels.data(), pixels.size())); - EXPECT_EQ(JPEGXL_DEC_FULL_IMAGE, JpegxlDecoderProcessInput(dec, &next_in, &avail_in)); - JpegxlDecoderDestroy(dec); - return ImageData.new_(Uint8ClampedArray.new_(typed_memory_view(pixels.size(), pixels.data())), info.xsize, info.ysize); + const JxlPixelFormat format = {4, JXL_LITTLE_ENDIAN, JXL_TYPE_FLOAT}; + EXPECT_EQ(JXL_DEC_SUCCESS, JxlDecoderImageOutBufferSize(dec, &format, &buffer_size)); + JxlBasicInfo info; + EXPECT_EQ(JXL_DEC_SUCCESS, JxlDecoderGetBasicInfo(dec, &info)); + + EXPECT_EQ(JXL_DEC_COLOR_ENCODING, JxlDecoderProcessInput(dec, &next_in, &avail_in)); + size_t icc_size; + EXPECT_EQ(JXL_DEC_SUCCESS, + JxlDecoderGetICCProfileSize(dec, JXL_COLOR_PROFILE_TARGET_DATA, &icc_size)); + std::vector icc_profile(icc_size); + EXPECT_EQ(JXL_DEC_SUCCESS, + JxlDecoderGetColorAsICCProfile(dec, JXL_COLOR_PROFILE_TARGET_DATA, icc_profile.data(), + icc_profile.size())); + + std::unique_ptr float_pixels(new float[(buffer_size + 3) / 4]); + EXPECT_EQ(JXL_DEC_SUCCESS, + JxlDecoderSetImageOutBuffer( + dec, &format, reinterpret_cast(float_pixels.get()), buffer_size)); + EXPECT_EQ(JXL_DEC_FULL_IMAGE, JxlDecoderProcessInput(dec, &next_in, &avail_in)); + JxlDecoderDestroy(dec); +#undef EXPECT_EQ + +#define EXPECT_TRUE(a) \ + if (!(a)) { \ + return val::null(); \ + } + + std::unique_ptr pixels(new uint8_t[info.xsize * info.ysize * 4]); + // Convert to sRGB. + skcms_ICCProfile jxl_profile; + // If the image is encoded in its original color space, the decoded data will be in the color + // space defined by the decoded ICC profile. Otherwise, it is in Linear sRGB. TODO: the decoded + // color profile should also be Linear sRGB if !uses_original_profile. + if (info.uses_original_profile) { + EXPECT_TRUE(skcms_Parse(icc_profile.data(), icc_profile.size(), &jxl_profile)); + } else { + auto s = jxl::ColorEncoding::LinearSRGB(/*gray=*/false); + EXPECT_TRUE(s.CreateICC()); + EXPECT_TRUE(skcms_Parse(s.ICC().data(), s.ICC().size(), &jxl_profile)); + } + EXPECT_TRUE(skcms_Transform( + float_pixels.get(), skcms_PixelFormat_RGBA_ffff, + info.alpha_premultiplied ? skcms_AlphaFormat_PremulAsEncoded : skcms_AlphaFormat_Unpremul, + &jxl_profile, pixels.get(), skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, + skcms_sRGB_profile(), info.xsize * info.ysize)); + + return ImageData.new_( + Uint8ClampedArray.new_(typed_memory_view(info.xsize * info.ysize * 4, pixels.get())), + info.xsize, info.ysize); } EMSCRIPTEN_BINDINGS(my_module) { diff --git a/codecs/jxl/dec/jxl_dec.js b/codecs/jxl/dec/jxl_dec.js index 954d9208..f995b3c2 100644 --- a/codecs/jxl/dec/jxl_dec.js +++ b/codecs/jxl/dec/jxl_dec.js @@ -11,47 +11,47 @@ var d;d||(d=typeof jxl_dec !== 'undefined' ? jxl_dec : {});var aa,ba;d.ready=new if(da)w=v?require("path").dirname(w)+"/":__dirname+"/",x=function(a,b){fa||(fa=require("fs"));ha||(ha=require("path"));a=ha.normalize(a);return fa.readFileSync(a,b?null:"utf8")},z=function(a){a=x(a,!0);a.buffer||(a=new Uint8Array(a));a.buffer||A("Assertion failed: undefined");return a},1>>=0;var e=b+c;for(c=b;a[c>>>0]&&!(c>=e);)++c;if(16>>0,c>>>0));for(e="";b>>0];if(f&128){var g=a[b++>>>0]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|g);else{var l=a[b++>>>0]&63;f=224==(f&240)?(f&15)<<12|g<<6|l:(f&7)<<18|g<<12|l<<6|a[b++>>>0]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e} -function na(a,b,c){var e=F;b>>>=0;if(0=g){var l=a.charCodeAt(++f);g=65536+((g&1023)<<10)|l&1023}if(127>=g){if(b>=c)break;e[b++>>>0]=g}else{if(2047>=g){if(b+1>=c)break;e[b++>>>0]=192|g>>6}else{if(65535>=g){if(b+2>=c)break;e[b++>>>0]=224|g>>12}else{if(b+3>=c)break;e[b++>>>0]=240|g>>18;e[b++>>>0]=128|g>>12&63}e[b++>>>0]=128|g>>6&63}e[b++>>>0]=128|g&63}}e[b>>>0]=0}} -var oa="undefined"!==typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function pa(a,b){var c=a>>1;for(var e=c+b/2;!(c>=e)&&G[c>>>0];)++c;c<<=1;if(32>>0,c>>>0));c=0;for(e="";;){var f=H[a+2*c>>1>>>0];if(0==f||c==b/2)return e;++c;e+=String.fromCharCode(f)}}function qa(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var e=b;c=c<2*a.length?c/2:a.length;for(var f=0;f>1>>>0]=a.charCodeAt(f),b+=2;H[b>>1>>>0]=0;return b-e} -function ra(a){return 2*a.length}function sa(a,b){for(var c=0,e="";!(c>=b/4);){var f=I[a+4*c>>2>>>0];if(0==f)break;++c;65536<=f?(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023)):e+=String.fromCharCode(f)}return e}function ta(a,b,c){b>>>=0;void 0===c&&(c=2147483647);if(4>c)return 0;var e=b;c=e+c-4;for(var f=0;f=g){var l=a.charCodeAt(++f);g=65536+((g&1023)<<10)|l&1023}I[b>>2>>>0]=g;b+=4;if(b+4>c)break}I[b>>2>>>0]=0;return b-e} -function ua(a){for(var b=0,c=0;c=e&&++c;b+=4}return b}var J,L,F,H,G,I,M,va,wa;function xa(a){J=a;d.HEAP8=L=new Int8Array(a);d.HEAP16=H=new Int16Array(a);d.HEAP32=I=new Int32Array(a);d.HEAPU8=F=new Uint8Array(a);d.HEAPU16=G=new Uint16Array(a);d.HEAPU32=M=new Uint32Array(a);d.HEAPF32=va=new Float32Array(a);d.HEAPF64=wa=new Float64Array(a)}var ya=d.INITIAL_MEMORY||16777216;d.wasmMemory?E=d.wasmMemory:E=new WebAssembly.Memory({initial:ya/65536,maximum:65536}); -E&&(J=E.buffer);ya=J.byteLength;xa(J);I[58044]=5475216;function N(a){for(;0=e);)++c;if(16f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else e+=String.fromCharCode(f)}return e} +function na(a,b,c){var e=F;if(0=g){var l=a.charCodeAt(++f);g=65536+((g&1023)<<10)|l&1023}if(127>=g){if(b>=c)break;e[b++]=g}else{if(2047>=g){if(b+1>=c)break;e[b++]=192|g>>6}else{if(65535>=g){if(b+2>=c)break;e[b++]=224|g>>12}else{if(b+3>=c)break;e[b++]=240|g>>18;e[b++]=128|g>>12&63}e[b++]=128|g>>6&63}e[b++]=128|g&63}}e[b]=0}}var oa="undefined"!==typeof TextDecoder?new TextDecoder("utf-16le"):void 0; +function pa(a,b){var c=a>>1;for(var e=c+b/2;!(c>=e)&&G[c];)++c;c<<=1;if(32>1];if(0==f||c==b/2)return e;++c;e+=String.fromCharCode(f)}}function qa(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var e=b;c=c<2*a.length?c/2:a.length;for(var f=0;f>1]=a.charCodeAt(f),b+=2;H[b>>1]=0;return b-e}function ra(a){return 2*a.length} +function sa(a,b){for(var c=0,e="";!(c>=b/4);){var f=I[a+4*c>>2];if(0==f)break;++c;65536<=f?(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023)):e+=String.fromCharCode(f)}return e}function ta(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var e=b;c=e+c-4;for(var f=0;f=g){var l=a.charCodeAt(++f);g=65536+((g&1023)<<10)|l&1023}I[b>>2]=g;b+=4;if(b+4>c)break}I[b>>2]=0;return b-e} +function ua(a){for(var b=0,c=0;c=e&&++c;b+=4}return b}var J,L,F,H,G,I,M,va,wa;function xa(a){J=a;d.HEAP8=L=new Int8Array(a);d.HEAP16=H=new Int16Array(a);d.HEAP32=I=new Int32Array(a);d.HEAPU8=F=new Uint8Array(a);d.HEAPU16=G=new Uint16Array(a);d.HEAPU32=M=new Uint32Array(a);d.HEAPF32=va=new Float32Array(a);d.HEAPF64=wa=new Float64Array(a)}var ya=d.INITIAL_MEMORY||16777216;d.wasmMemory?E=d.wasmMemory:E=new WebAssembly.Memory({initial:ya/65536,maximum:32768}); +E&&(J=E.buffer);ya=J.byteLength;xa(J);I[755548]=8265232;function N(a){for(;0>>0];)b+=Oa[F[a++>>>0]];return b}var U={},V={},Pa={};function Qa(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 Na(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 Oa=void 0;function T(a){for(var b="";F[a];)b+=Oa[F[a++]];return b}var U={},V={},Pa={};function Qa(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 Ra(a,b){a=Qa(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)}function Sa(a){var b=Error,c=Ra(a,function(e){this.name=a;this.message=e;e=Error(e).stack;void 0!==e&&(this.stack=this.toString()+"\n"+e.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 Ta=void 0;function W(a){throw new Ta(a);}var Ua=void 0;function Va(a,b){function c(h){h=b(h);if(h.length!==e.length)throw new Ua("Mismatched type converter count");for(var k=0;k>>2])}function $a(a){if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a} -function cb(a,b){switch(b){case 2:return function(c){return this.fromWireType(va[c>>>2])};case 3:return function(c){return this.fromWireType(wa[c>>>3])};default:throw new TypeError("Unknown float type: "+a);}}function db(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=Ra(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c} +function Xa(a){4>2])}function $a(a){if(null===a)return"null";var b=typeof a;return"object"===b||"array"===b||"function"===b?a.toString():""+a} +function cb(a,b){switch(b){case 2:return function(c){return this.fromWireType(va[c>>2])};case 3:return function(c){return this.fromWireType(wa[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}function db(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=Ra(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c} function eb(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function fb(a,b){var c=d;if(void 0===c[a].X){var e=c[a];c[a]=function(){c[a].X.hasOwnProperty(arguments.length)||W("Function '"+b+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+c[a].X+")!");return c[a].X[arguments.length].apply(this,arguments)};c[a].X=[];c[a].X[e.ba]=e}} -function gb(a,b,c){d.hasOwnProperty(a)?((void 0===c||void 0!==d[a].X&&void 0!==d[a].X[c])&&W("Cannot register public name '"+a+"' twice"),fb(a,a),d.hasOwnProperty(c)&&W("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),d[a].X[c]=b):(d[a]=b,void 0!==c&&(d[a].ga=c))}function hb(a,b){for(var c=[],e=0;e>2)+e>>>0]);return c} +function gb(a,b,c){d.hasOwnProperty(a)?((void 0===c||void 0!==d[a].X&&void 0!==d[a].X[c])&&W("Cannot register public name '"+a+"' twice"),fb(a,a),d.hasOwnProperty(c)&&W("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),d[a].X[c]=b):(d[a]=b,void 0!==c&&(d[a].ga=c))}function hb(a,b){for(var c=[],e=0;e>2)+e]);return c} function ib(a,b){a=T(a);var c=d["dynCall_"+a];for(var e=[],f=1;f>>0]}:function(e){return F[e>>>0]};case 1:return c?function(e){return H[e>>>1]}:function(e){return G[e>>>1]};case 2:return c?function(e){return I[e>>>2]}:function(e){return M[e>>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var ob={}; +function mb(a,b){function c(g){f[g]||V[g]||(Pa[g]?Pa[g].forEach(c):(e.push(g),f[g]=!0))}var e=[],f={};b.forEach(c);throw new jb(a+": "+e.map(kb).join([", "]));}function nb(a,b,c){switch(b){case 0:return c?function(e){return L[e]}:function(e){return F[e]};case 1:return c?function(e){return H[e>>1]}:function(e){return G[e>>1]};case 2:return c?function(e){return I[e>>2]}:function(e){return M[e>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var ob={}; function pb(){return"object"===typeof globalThis?globalThis:Function("return this")()}function qb(a,b){var c=V[a];void 0===c&&W(b+" has unknown type "+kb(a));return c}var rb={},sb={};function tb(){if(!ub){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 sb)a[b]=sb[b];var c=[];for(b in a)c.push(b+"="+a[b]);ub=c}return ub} for(var ub,vb=[null,[],[]],wb=Array(256),xb=0;256>xb;++xb)wb[xb]=String.fromCharCode(xb);Oa=wb;Ta=d.BindingError=Sa("BindingError");Ua=d.InternalError=Sa("InternalError");d.count_emval_handles=function(){for(var a=0,b=5;b>>g])},Y:null})},y:function(a,b){b=T(b);X(a,{name:b,fromWireType:function(c){var e= +var zb={q:function(a){return yb(a)},l:function(){},p:function(a){"uncaught_exception"in S?S.aa++:S.aa=1;throw a;},z:function(a,b,c,e,f){var g=Na(c);b=T(b);X(a,{name:b,fromWireType:function(l){return!!l},toWireType:function(l,k){return k?e:f},argPackAdvance:8,readValueFromPointer:function(l){if(1===c)var k=L;else if(2===c)k=H;else if(4===c)k=I;else throw new TypeError("Unknown boolean type size: "+b);return this.fromWireType(k[l>>g])},Y:null})},y:function(a,b){b=T(b);X(a,{name:b,fromWireType:function(c){var e= Y[c].value;Xa(c);return e},toWireType:function(c,e){return Ya(e)},argPackAdvance:8,readValueFromPointer:Za,Y:null})},j:function(a,b,c){c=Na(c);b=T(b);X(a,{name:b,fromWireType:function(e){return e},toWireType:function(e,f){if("number"!==typeof f&&"boolean"!==typeof f)throw new TypeError('Cannot convert "'+$a(f)+'" to '+this.name);return f},argPackAdvance:8,readValueFromPointer:cb(b,c),Y:null})},n:function(a,b,c,e,f,g){var l=hb(b,c);a=T(a);f=ib(e,f);gb(a,function(){mb("Cannot call "+a+" due to unbound types", -l)},b-1);Va(l,function(h){var k=[h[0],null].concat(h.slice(1)),m=h=a,p=f,q=k.length;2>q&&W("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var y=null!==k[1]&&!1,C=!1,n=1;n>>h}}var k=-1!=b.indexOf("unsigned");X(a,{name:b,fromWireType:g,toWireType:function(m,p){if("number"!==typeof p&&"boolean"!==typeof p)throw new TypeError('Cannot convert "'+$a(p)+'" to '+this.name);if(pf)throw new TypeError('Passing a number "'+$a(p)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+e+", "+f+"]!");return k?p>>>0:p|0},argPackAdvance:8,readValueFromPointer:nb(b, -l,0!==e),Y:null})},a:function(a,b,c){function e(g){g>>=2;var l=M;return new f(J,l[g+1>>>0],l[g>>>0])}var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=T(c);X(a,{name:c,fromWireType:e,argPackAdvance:8,readValueFromPointer:e},{ea:!0})},k:function(a,b){b=T(b);var c="std::string"===b;X(a,{name:b,fromWireType:function(e){var f=M[e>>>2];if(c)for(var g=e+4,l=0;l<=f;++l){var h=e+4+l;if(l==f||0==F[h>>>0]){var k=g;g=(k>>>=0)?ma(F,k,h-g):"";if(void 0=== -m)var m=g;else m+=String.fromCharCode(0),m+=g;g=h+1}}else{m=Array(f);for(l=0;l>>0]);m=m.join("")}Z(e);return m},toWireType:function(e,f){f instanceof ArrayBuffer&&(f=new Uint8Array(f));var g="string"===typeof f;g||f instanceof Uint8Array||f instanceof Uint8ClampedArray||f instanceof Int8Array||W("Cannot pass non-string to std::string");var l=(c&&g?function(){for(var m=0,p=0;p=q&&(q=65536+((q&1023)<<10)|f.charCodeAt(++p)& -1023);127>=q?++m:m=2047>=q?m+2:65535>=q?m+3:m+4}return m}:function(){return f.length})(),h=yb(4+l+1);h>>>=0;M[h>>>2]=l;if(c&&g)na(f,h+4,l+1);else if(g)for(g=0;g>>0]=k}else for(g=0;g>>0]=f[g];null!==e&&e.push(Z,h);return h},argPackAdvance:8,readValueFromPointer:Za,Y:function(e){Z(e)}})},d:function(a,b,c){c=T(c);if(2===b){var e=pa;var f=qa;var g=ra;var l=function(){return G}; -var h=1}else 4===b&&(e=sa,f=ta,g=ua,l=function(){return M},h=2);X(a,{name:c,fromWireType:function(k){for(var m=M[k>>>2],p=l(),q,y=k+4,C=0;C<=m;++C){var n=k+4+C*b;if(C==m||0==p[n>>>h])y=e(y,n-y),void 0===q?q=y:(q+=String.fromCharCode(0),q+=y),y=n+b}Z(k);return q},toWireType:function(k,m){"string"!==typeof m&&W("Cannot pass non-string to C++ string type "+c);var p=g(m),q=yb(4+p+b);q>>>=0;M[q>>>2]=p>>h;f(m,q+4,p+b);null!==k&&k.push(Z,q);return q},argPackAdvance:8,readValueFromPointer:Za,Y:function(k){Z(k)}})}, -m:function(a,b){b=T(b);X(a,{fa:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},w:Xa,A:function(a){if(0===a)return Ya(pb());var b=ob[a];a=void 0===b?T(a):b;return Ya(pb()[a])},o: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")))(qb,d,Ya);rb[b]=f}return f(a,c,e)},e:function(){A()},t:function(a,b,c){F.copyWithin(a>>>0,b>>>0,b+c>>>0)},c:function(a){a>>>=0;var b=F.length;if(4294967296=c;c*=2){var e=b*(1+.2/c);e=Math.min(e,a+100663296);e=Math.max(16777216,a,e);0>>16);xa(E.buffer);var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},u:function(a,b){var c=0;tb().forEach(function(e,f){var g=b+c;f=I[a+4*f>>2>>>0]=g;for(g=0;g>0>>>0]=e.charCodeAt(g);L[f>>0>>>0]=0;c+=e.length+1});return 0},v:function(a,b){var c=tb();I[a>>2>>>0]=c.length;var e=0;c.forEach(function(f){e+= -f.length+1});I[b>>2>>>0]=e;return 0},x:function(){return 0},r:function(){},i:function(a,b,c,e){for(var f=0,g=0;g>2>>>0],h=I[b+(8*g+4)>>2>>>0],k=0;k>>0],p=vb[a];0===m||10===m?((1===a?ia:B)(ma(p,0)),p.length=0):p.push(m)}f+=h}I[e>>2>>>0]=f;return 0},memory:E,g:function(a){a=+a;return 0<=a?+Fa(a+.5):+Ea(a-.5)},h:function(a){a=+a;return 0<=a?+Fa(a+.5):+Ea(a-.5)},s:function(){},table:ja}; +l)},b-1);Va(l,function(k){var h=[k[0],null].concat(k.slice(1)),n=k=a,p=f,q=h.length;2>q&&W("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var y=null!==h[1]&&!1,C=!1,m=1;m>>k}}var h=-1!=b.indexOf("unsigned");X(a,{name:b,fromWireType:g,toWireType:function(n,p){if("number"!==typeof p&&"boolean"!==typeof p)throw new TypeError('Cannot convert "'+$a(p)+'" to '+this.name);if(pf)throw new TypeError('Passing a number "'+$a(p)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+e+", "+f+"]!");return h?p>>>0:p|0},argPackAdvance:8,readValueFromPointer:nb(b, +l,0!==e),Y:null})},a:function(a,b,c){function e(g){g>>=2;var l=M;return new f(J,l[g+1],l[g])}var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=T(c);X(a,{name:c,fromWireType:e,argPackAdvance:8,readValueFromPointer:e},{ea:!0})},k:function(a,b){b=T(b);var c="std::string"===b;X(a,{name:b,fromWireType:function(e){var f=M[e>>2];if(c)for(var g=e+4,l=0;l<=f;++l){var k=e+4+l;if(l==f||0==F[k]){g=g?ma(F,g,k-g):"";if(void 0===h)var h=g;else h+=String.fromCharCode(0), +h+=g;g=k+1}}else{h=Array(f);for(l=0;l=q&&(q=65536+((q&1023)<<10)|f.charCodeAt(++p)&1023);127>=q?++n:n=2047>=q?n+ +2:65535>=q?n+3:n+4}return n}:function(){return f.length})(),k=yb(4+l+1);M[k>>2]=l;if(c&&g)na(f,k+4,l+1);else if(g)for(g=0;g>2],p=l(),q,y=h+4,C=0;C<=n;++C){var m=h+4+C*b;if(C==n||0==p[m>>k])y=e(y,m-y),void 0===q?q=y:(q+=String.fromCharCode(0),q+=y),y=m+b}Z(h);return q},toWireType:function(h,n){"string"!==typeof n&&W("Cannot pass non-string to C++ string type "+c);var p=g(n),q=yb(4+p+b);M[q>>2]=p>>k;f(n,q+4,p+b);null!==h&&h.push(Z,q);return q},argPackAdvance:8,readValueFromPointer:Za,Y:function(h){Z(h)}})},m:function(a,b){b=T(b);X(a,{fa:!0,name:b,argPackAdvance:0, +fromWireType:function(){},toWireType:function(){}})},w:Xa,A:function(a){if(0===a)return Ya(pb());var b=ob[a];a=void 0===b?T(a):b;return Ya(pb()[a])},o: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")))(qb,d,Ya);rb[b]=f}return f(a,c,e)},e:function(){A()},t:function(a,b,c){F.copyWithin(a,b,b+c)},c:function(a){a>>>=0;var b=F.length;if(2147483648=c;c*=2){var e=b*(1+.2/c);e=Math.min(e,a+100663296);e=Math.max(16777216, +a,e);0>>16);xa(E.buffer);var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},u:function(a,b){var c=0;tb().forEach(function(e,f){var g=b+c;f=I[a+4*f>>2]=g;for(g=0;g>0]=e.charCodeAt(g);L[f>>0]=0;c+=e.length+1});return 0},v:function(a,b){var c=tb();I[a>>2]=c.length;var e=0;c.forEach(function(f){e+=f.length+1});I[b>>2]=e;return 0},x:function(){return 0},r:function(){},i:function(a,b,c,e){for(var f= +0,g=0;g>2],k=I[b+(8*g+4)>>2],h=0;h>2]=f;return 0},memory:E,g:function(a){a=+a;return 0<=a?+Fa(a+.5):+Ea(a-.5)},h:function(a){a=+a;return 0<=a?+Fa(a+.5):+Ea(a-.5)},s:function(){},table:ja}; (function(){function a(f){d.asm=f.exports;O--;d.monitorRunDependencies&&d.monitorRunDependencies(O);0==O&&(null!==Ga&&(clearInterval(Ga),Ga=null),Q&&(f=Q,Q=null,f()))}function b(f){a(f.instance)}function c(f){return La().then(function(g){return WebAssembly.instantiate(g,e)}).then(f,function(g){B("failed to asynchronously prepare wasm: "+g);A(g)})}var e={a:zb};O++;d.monitorRunDependencies&&d.monitorRunDependencies(O);if(d.instantiateWasm)try{return d.instantiateWasm(e,a)}catch(f){return B("Module.instantiateWasm callback failed with error: "+ f),!1}(function(){if(D||"function"!==typeof WebAssembly.instantiateStreaming||Ia()||Ha("file://")||"function"!==typeof fetch)return c(b);fetch(R,{credentials:"same-origin"}).then(function(f){return WebAssembly.instantiateStreaming(f,e).then(b,function(g){B("wasm streaming compile failed: "+g);B("falling back to ArrayBuffer instantiation");return c(b)})})})();return{}})(); var Ma=d.___wasm_call_ctors=function(){return(Ma=d.___wasm_call_ctors=d.asm.B).apply(null,arguments)},yb=d._malloc=function(){return(yb=d._malloc=d.asm.C).apply(null,arguments)},Z=d._free=function(){return(Z=d._free=d.asm.D).apply(null,arguments)},lb=d.___getTypeName=function(){return(lb=d.___getTypeName=d.asm.E).apply(null,arguments)};d.___embind_register_native_and_builtin_types=function(){return(d.___embind_register_native_and_builtin_types=d.asm.F).apply(null,arguments)}; -d.dynCall_iii=function(){return(d.dynCall_iii=d.asm.G).apply(null,arguments)};d.dynCall_vii=function(){return(d.dynCall_vii=d.asm.H).apply(null,arguments)};d.dynCall_ii=function(){return(d.dynCall_ii=d.asm.I).apply(null,arguments)};d.dynCall_vi=function(){return(d.dynCall_vi=d.asm.J).apply(null,arguments)};d.dynCall_iidiiii=function(){return(d.dynCall_iidiiii=d.asm.K).apply(null,arguments)};d.dynCall_iiiiiii=function(){return(d.dynCall_iiiiiii=d.asm.L).apply(null,arguments)}; -d.dynCall_viii=function(){return(d.dynCall_viii=d.asm.M).apply(null,arguments)};d.dynCall_viiiiiii=function(){return(d.dynCall_viiiiiii=d.asm.N).apply(null,arguments)};d.dynCall_iiii=function(){return(d.dynCall_iiii=d.asm.O).apply(null,arguments)};d.dynCall_v=function(){return(d.dynCall_v=d.asm.P).apply(null,arguments)};d.dynCall_iiiii=function(){return(d.dynCall_iiiii=d.asm.Q).apply(null,arguments)};d.dynCall_iiji=function(){return(d.dynCall_iiji=d.asm.R).apply(null,arguments)}; -d.dynCall_iifi=function(){return(d.dynCall_iifi=d.asm.S).apply(null,arguments)};d.dynCall_jiji=function(){return(d.dynCall_jiji=d.asm.T).apply(null,arguments)};d.dynCall_viiiiii=function(){return(d.dynCall_viiiiii=d.asm.U).apply(null,arguments)};d.dynCall_viiiii=function(){return(d.dynCall_viiiii=d.asm.V).apply(null,arguments)};d.dynCall_viiii=function(){return(d.dynCall_viiii=d.asm.W).apply(null,arguments)};var Ab;Q=function Bb(){Ab||Cb();Ab||(Q=Bb)}; +d.dynCall_iii=function(){return(d.dynCall_iii=d.asm.G).apply(null,arguments)};d.dynCall_vii=function(){return(d.dynCall_vii=d.asm.H).apply(null,arguments)};d.dynCall_vi=function(){return(d.dynCall_vi=d.asm.I).apply(null,arguments)};d.dynCall_ii=function(){return(d.dynCall_ii=d.asm.J).apply(null,arguments)};d.dynCall_iidiiii=function(){return(d.dynCall_iidiiii=d.asm.K).apply(null,arguments)};d.dynCall_iiiiiii=function(){return(d.dynCall_iiiiiii=d.asm.L).apply(null,arguments)}; +d.dynCall_viii=function(){return(d.dynCall_viii=d.asm.M).apply(null,arguments)};d.dynCall_viiii=function(){return(d.dynCall_viiii=d.asm.N).apply(null,arguments)};d.dynCall_v=function(){return(d.dynCall_v=d.asm.O).apply(null,arguments)};d.dynCall_viiiiiii=function(){return(d.dynCall_viiiiiii=d.asm.P).apply(null,arguments)};d.dynCall_viiiiii=function(){return(d.dynCall_viiiiii=d.asm.Q).apply(null,arguments)};d.dynCall_iiii=function(){return(d.dynCall_iiii=d.asm.R).apply(null,arguments)}; +d.dynCall_iiiii=function(){return(d.dynCall_iiiii=d.asm.S).apply(null,arguments)};d.dynCall_iiji=function(){return(d.dynCall_iiji=d.asm.T).apply(null,arguments)};d.dynCall_iifi=function(){return(d.dynCall_iifi=d.asm.U).apply(null,arguments)};d.dynCall_jiji=function(){return(d.dynCall_jiji=d.asm.V).apply(null,arguments)};d.dynCall_viiiii=function(){return(d.dynCall_viiiii=d.asm.W).apply(null,arguments)};var Ab;Q=function Bb(){Ab||Cb();Ab||(Q=Bb)}; function Cb(){function a(){if(!Ab&&(Ab=!0,d.calledRun=!0,!ka)){N(Aa);N(Ba);aa(d);if(d.onRuntimeInitialized)d.onRuntimeInitialized();if(d.postRun)for("function"==typeof d.postRun&&(d.postRun=[d.postRun]);d.postRun.length;){var b=d.postRun.shift();Ca.unshift(b)}N(Ca)}}if(!(0 #include -#include "jxl/enc_file.h" +#include "lib/jxl/enc_file.h" +#include "lib/jxl/external_image.h" using namespace emscripten; @@ -23,18 +24,16 @@ val encode(std::string image, int width, int height, JXLOptions options) { cparams.speed_tier = static_cast(options.speed); cparams.butteraugli_distance = options.quality; - // cparams.color_transform = jxl::ColorTransform::kNone; - io.metadata.SetUintSamples(8); io.metadata.SetAlphaBits(8); - // io.metadata.color_encoding = jxl::ColorEncoding::SRGB(false); uint8_t* inBuffer = (uint8_t*)image.c_str(); - auto result = - main->SetFromSRGB(width, height, /*is_gray*/ false, /*has_alpha*/ true, - /*alpha_is_premultiplied*/ true, /*pixels*/ (uint8_t*)image.c_str(), - /* end */ (uint8_t*)image.c_str() + width * height * 4); + auto result = jxl::ConvertImage( + 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); if (!result) { return val::null(); diff --git a/codecs/jxl/enc/jxl_enc.js b/codecs/jxl/enc/jxl_enc.js index bf5dae15..43fcc565 100644 --- a/codecs/jxl/enc/jxl_enc.js +++ b/codecs/jxl/enc/jxl_enc.js @@ -7,101 +7,99 @@ 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 p={},t;for(t in f)f.hasOwnProperty(t)&&(p[t]=f[t]);var ca="./this.program",da=!1,w=!1,z=!1,ea=!1;da="object"===typeof window;w="function"===typeof importScripts;z="object"===typeof process&&"object"===typeof process.versions&&"string"===typeof process.versions.node;ea=!da&&!z&&!w;var A="",fa,ha,ia,ka; -if(z)A=w?require("path").dirname(A)+"/":__dirname+"/",fa=function(a,b){ia||(ia=require("fs"));ka||(ka=require("path"));a=ka.normalize(a);return ia.readFileSync(a,b?null:"utf8")},ha=function(a){a=fa(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a},1>>=0;var d=b+c;for(c=b;a[c>>>0]&&!(c>=d);)++c;if(16>>0,c>>>0));for(d="";b>>0];if(e&128){var g=a[b++>>>0]&63;if(192==(e&224))d+=String.fromCharCode((e&31)<<6|g);else{var k=a[b++>>>0]&63;e=224==(e&240)?(e&15)<<12|g<<6|k:(e&7)<<18|g<<12|k<<6|a[b++>>>0]&63;65536>e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d} -function ra(a,b){return(a>>>=0)?qa(E,a,b):""} -function sa(a,b,c,d){c>>>=0;if(!(0=k){var m=a.charCodeAt(++g);k=65536+((k&1023)<<10)|m&1023}if(127>=k){if(c>=d)break;b[c++>>>0]=k}else{if(2047>=k){if(c+1>=d)break;b[c++>>>0]=192|k>>6}else{if(65535>=k){if(c+2>=d)break;b[c++>>>0]=224|k>>12}else{if(c+3>=d)break;b[c++>>>0]=240|k>>18;b[c++>>>0]=128|k>>12&63}b[c++>>>0]=128|k>>6&63}b[c++>>>0]=128|k&63}}b[c>>>0]=0;return c-e} -function ta(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 ua="undefined"!==typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function va(a,b){var c=a>>1;for(var d=c+b/2;!(c>=d)&&wa[c>>>0];)++c;c<<=1;if(32>>0,c>>>0));c=0;for(d="";;){var e=G[a+2*c>>1>>>0];if(0==e||c==b/2)return d;++c;d+=String.fromCharCode(e)}} -function xa(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 e=0;e>1>>>0]=a.charCodeAt(e),b+=2;G[b>>1>>>0]=0;return b-d}function ya(a){return 2*a.length}function za(a,b){for(var c=0,d="";!(c>=b/4);){var e=H[a+4*c>>2>>>0];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d} -function Aa(a,b,c){b>>>=0;void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=g){var k=a.charCodeAt(++e);g=65536+((g&1023)<<10)|k&1023}H[b>>2>>>0]=g;b+=4;if(b+4>c)break}H[b>>2>>>0]=0;return b-d}function Ba(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}var I,J,E,G,wa,H,K,Ca,Da; -function Ea(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=wa=new Uint16Array(a);f.HEAPU32=K=new Uint32Array(a);f.HEAPF32=Ca=new Float32Array(a);f.HEAPF64=Da=new Float64Array(a)}var Fa=f.INITIAL_MEMORY||16777216;f.wasmMemory?D=f.wasmMemory:D=new WebAssembly.Memory({initial:Fa/65536,maximum:65536});D&&(I=D.buffer);Fa=I.byteLength;Ea(I);H[68608]=5517472; -function Ga(a){for(;0=d);)++c;if(16e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d} +function ra(a,b,c,d){if(!(0=k){var m=a.charCodeAt(++g);k=65536+((k&1023)<<10)|m&1023}if(127>=k){if(c>=d)break;b[c++]=k}else{if(2047>=k){if(c+1>=d)break;b[c++]=192|k>>6}else{if(65535>=k){if(c+2>=d)break;b[c++]=224|k>>12}else{if(c+3>=d)break;b[c++]=240|k>>18;b[c++]=128|k>>12&63}b[c++]=128|k>>6&63}b[c++]=128|k&63}}b[c]=0;return c-e} +function sa(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 ta="undefined"!==typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function ua(a,b){var c=a>>1;for(var d=c+b/2;!(c>=d)&&va[c];)++c;c<<=1;if(32>1];if(0==e||c==b/2)return d;++c;d+=String.fromCharCode(e)}} +function wa(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 e=0;e>1]=a.charCodeAt(e),b+=2;G[b>>1]=0;return b-d}function xa(a){return 2*a.length}function ya(a,b){for(var c=0,d="";!(c>=b/4);){var e=H[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d} +function za(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=g){var k=a.charCodeAt(++e);g=65536+((g&1023)<<10)|k&1023}H[b>>2]=g;b+=4;if(b+4>c)break}H[b>>2]=0;return b-d}function Aa(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}var I,J,E,G,va,H,K,Ba,Ca; +function Da(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=va=new Uint16Array(a);f.HEAPU32=K=new Uint32Array(a);f.HEAPF32=Ba=new Float32Array(a);f.HEAPF64=Ca=new Float64Array(a)}var Ea=f.INITIAL_MEMORY||16777216;f.wasmMemory?C=f.wasmMemory:C=new WebAssembly.Memory({initial:Ea/65536,maximum:32768});C&&(I=C.buffer);Ea=I.byteLength;Da(I);H[771900]=8330640; +function Fa(a){for(;0>>=0;var c=a.oa?a.oa.length:0;c>=b||(b=Math.max(b,c*(1048576>c?2:1.125)>>>0),0!=c&&(b=Math.max(b,256)),c=a.oa,a.oa=new Uint8Array(b),0>>=0;if(a.ra!=b)if(0==b)a.oa=null,a.ra=0;else{if(!a.oa||a.oa.subarray){var c=a.oa;a.oa=new Uint8Array(b);c&&a.oa.set(c.subarray(0,Math.min(b,a.ra)))}else if(a.oa||(a.oa=[]),a.oa.length>b)a.oa.length=b;else for(;a.oa.length< -b;)a.oa.push(0);a.ra=b}},pa:{za:function(a){var b={};b.dev=8192===(a.mode&61440)?a.id:1;b.ino=a.id;b.mode=a.mode;b.nlink=1;b.uid=0;b.gid=0;b.rdev=a.rdev;16384===(a.mode&61440)?b.size=4096:32768===(a.mode&61440)?b.size=a.ra:40960===(a.mode&61440)?b.size=a.link.length:b.size=0;b.atime=new Date(a.timestamp);b.mtime=new Date(a.timestamp);b.ctime=new Date(a.timestamp);b.bb=4096;b.blocks=Math.ceil(b.size/b.bb);return b},va:function(a,b){void 0!==b.mode&&(a.mode=b.mode);void 0!==b.timestamp&&(a.timestamp= -b.timestamp);void 0!==b.size&&P.nb(a,b.size)},lookup:function(){throw nb[44];},Fa:function(a,b,c,d){return P.createNode(a,b,c,d)},rename:function(a,b,c){if(16384===(a.mode&61440)){try{var d=ob(b,c)}catch(g){}if(d)for(var e in d.oa)throw new O(55);}delete a.parent.oa[a.name];a.name=c;b.oa[c]=a;a.parent=b},unlink:function(a,b){delete a.oa[b]},rmdir:function(a,b){var c=ob(a,b),d;for(d in c.oa)throw new O(55);delete a.oa[b]},readdir:function(a){var b=[".",".."],c;for(c in a.oa)a.oa.hasOwnProperty(c)&& -b.push(c);return b},symlink:function(a,b,c){a=P.createNode(a,b,41471,0);a.link=c;return a},readlink:function(a){if(40960!==(a.mode&61440))throw new O(28);return a.link}},qa:{read:function(a,b,c,d,e){var g=a.node.oa;if(e>=a.node.ra)return 0;a=Math.min(a.node.ra-e,d);if(8b)throw new O(28);return b},Ra:function(a,b,c){P.Ta(a.node,b+c);a.node.ra=Math.max(a.node.ra,b+c)},Ya:function(a,b,c,d,e,g){assert(0=== -b);if(32768!==(a.node.mode&61440))throw new O(43);a=a.node.oa;if(g&2||a.buffer!==I){if(0>>0]=0;c=b;if(!c)throw new O(48);c>>>=0;J.set(a,c>>>0)}else d=!1,c=a.byteOffset;return{Fb:c,$a:d}},Ha:function(a,b,c,d,e){if(32768!==(a.node.mode&61440))throw new O(43);if(e&2)return 0;P.qa.write(a,b,0,d,c,!1);return 0}}},qb=null,rb={},Q=[],sb=1,tb=null,ub=!0,vb={},O=null, -nb={};function R(a,b){a=db("/",a);b=b||{};if(!a)return{path:"",node:null};var c={Wa:!0,Pa:0},d;for(d in c)void 0===b[d]&&(b[d]=c[d]);if(8>>0)%tb.length}function ob(a,b){var c;if(c=(c=zb(a,"x"))?c:a.pa.lookup?0:2)throw new O(c,a);for(c=tb[yb(a.id,b)];c;c=c.kb){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.pa.lookup(a,b)} -function mb(a,b,c,d){a=new Ab(a,b,c,d);b=yb(a.parent.id,a.name);a.kb=tb[b];return tb[b]=a}var Bb={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218};function Cb(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function zb(a,b){if(ub)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return 2}else return 2;return 0} -function Db(a,b){try{return ob(a,b),20}catch(c){}return zb(a,"wx")}function Eb(){var a=4096;for(var b=0;b<=a;b++)if(!Q[b])return b;throw new O(33);}function Fb(a){Gb||(Gb=function(){},Gb.prototype={});var b=new Gb,c;for(c in a)b[c]=a[c];a=b;b=Eb();a.fd=b;return Q[b]=a}var lb={open:function(a){a.qa=rb[a.node.rdev].qa;a.qa.open&&a.qa.open(a)},Aa:function(){throw new O(70);}};function gb(a,b){rb[a]={qa:b}} -function Hb(a,b){var c="/"===b,d=!b;if(c&&qb)throw new O(10);if(!c&&!d){var e=R(b,{Wa:!1});b=e.path;e=e.node;if(e.Ga)throw new O(10);if(16384!==(e.mode&61440))throw new O(54);}b={type:a,Db:{},Za:b,jb:[]};a=a.ya(b);a.ya=b;b.root=a;c?qb=a:e&&(e.Ga=b,e.ya&&e.ya.jb.push(b))}function Ib(a,b,c){var d=R(a,{parent:!0}).node;a=cb(a);if(!a||"."===a||".."===a)throw new O(28);var e=Db(d,a);if(e)throw new O(e);if(!d.pa.Fa)throw new O(63);return d.pa.Fa(d,a,b,c)}function S(a){Ib(a,16895,0)} -function Jb(a,b,c){"undefined"===typeof c&&(c=b,b=438);Ib(a,b|8192,c)}function Kb(a,b){if(!db(a))throw new O(44);var c=R(b,{parent:!0}).node;if(!c)throw new O(44);b=cb(b);var d=Db(c,b);if(d)throw new O(d);if(!c.pa.symlink)throw new O(63);c.pa.symlink(c,b,a)}function wb(a){a=R(a).node;if(!a)throw new O(44);if(!a.pa.readlink)throw new O(28);return db(xb(a.parent),a.pa.readlink(a))} -function Lb(a,b){if(""===a)throw new O(44);if("string"===typeof b){var c=Bb[b];if("undefined"===typeof c)throw Error("Unknown file open mode: "+b);b=c}var d=b&64?("undefined"===typeof d?438:d)&4095|32768:0;if("object"===typeof a)var e=a;else{a=ab(a);try{e=R(a,{Va:!(b&131072)}).node}catch(k){}}c=!1;if(b&64)if(e){if(b&128)throw new O(20);}else e=Ib(a,d,0),c=!0;if(!e)throw new O(44);8192===(e.mode&61440)&&(b&=-513);if(b&65536&&16384!==(e.mode&61440))throw new O(54);if(!c&&(d=e?40960===(e.mode&61440)? -32:16384===(e.mode&61440)&&("r"!==Cb(b)||b&512)?31:zb(e,Cb(b)):44))throw new O(d);if(b&512){d=e;var g;"string"===typeof d?g=R(d,{Va:!0}).node:g=d;if(!g.pa.va)throw new O(63);if(16384===(g.mode&61440))throw new O(31);if(32768!==(g.mode&61440))throw new O(28);if(d=zb(g,"w"))throw new O(d);g.pa.va(g,{size:0,timestamp:Date.now()})}b&=-131713;e=Fb({node:e,path:xb(e),flags:b,seekable:!0,position:0,qa:e.qa,wb:[],error:!1});e.qa.open&&e.qa.open(e);!f.logReadFiles||b&1||(Mb||(Mb={}),a in Mb||(Mb[a]=1,C("FS.trackingDelegate error on read file: "+ -a)));try{vb.onOpenFile&&(e=0,1!==(b&2097155)&&(e|=1),0!==(b&2097155)&&(e|=2),vb.onOpenFile(a,e))}catch(k){C("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+k.message)}}function Nb(a,b,c){if(null===a.fd)throw new O(8);if(!a.seekable||!a.qa.Aa)throw new O(70);if(0!=c&&1!=c&&2!=c)throw new O(28);a.position=a.qa.Aa(a,b,c);a.wb=[]} -function Ob(){O||(O=function(a,b){this.node=b;this.ob=function(c){this.Ea=c};this.ob(a);this.message="FS error"},O.prototype=Error(),O.prototype.constructor=O,[44].forEach(function(a){nb[a]=new O(a);nb[a].stack=""}))}var Pb;function Qb(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c} -function Rb(a,b,c){a=ab("/dev/"+a);var d=Qb(!!b,!!c);Sb||(Sb=64);var e=Sb++<<8|0;gb(e,{open:function(g){g.seekable=!1},close:function(){c&&c.buffer&&c.buffer.length&&c(10)},read:function(g,k,m,l){for(var q=0,r=0;r>>2])}var T={},U={},Zb={};function $b(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 ac(a,b){a=$b(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)}function bc(a){var b=Error,c=ac(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 cc=void 0;function dc(a,b,c){function d(m){m=c(m);if(m.length!==a.length)throw new cc("Mismatched type converter count");for(var l=0;l>>0];)b+=fc[E[a++>>>0]];return b}var hc=void 0;function X(a){throw new hc(a);} -function V(a,b,c){c=c||{};if(!("argPackAdvance"in b))throw new TypeError("registerType registeredInstance requires argPackAdvance");var d=b.name;a||X('type "'+d+'" must have a positive integer typeid pointer');if(U.hasOwnProperty(a)){if(c.ib)return;X("Cannot register type '"+d+"' twice")}U[a]=b;delete Zb[a];T.hasOwnProperty(a)&&(b=T[a],delete T[a],b.forEach(function(e){e()}))}var ic=[],Y=[{},{value:void 0},{value:null},{value:!0},{value:!1}]; -function jc(a){4>>2])};case 3:return function(c){return this.fromWireType(Da[c>>>3])};default:throw new TypeError("Unknown float type: "+a);}}function nc(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=ac(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c} -function oc(a,b){var c=f;if(void 0===c[a].ua){var d=c[a];c[a]=function(){c[a].ua.hasOwnProperty(arguments.length)||X("Function '"+b+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+c[a].ua+")!");return c[a].ua[arguments.length].apply(this,arguments)};c[a].ua=[];c[a].ua[d.ab]=d}} -function pc(a,b,c){f.hasOwnProperty(a)?((void 0===c||void 0!==f[a].ua&&void 0!==f[a].ua[c])&&X("Cannot register public name '"+a+"' twice"),oc(a,a),f.hasOwnProperty(c)&&X("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),f[a].ua[c]=b):(f[a]=b,void 0!==c&&(f[a].Cb=c))}function qc(a,b){for(var c=[],d=0;d>2)+d>>>0]);return c} -function rc(a,b){a=W(a);var c=f["dynCall_"+a];for(var d=[],e=1;e>>0]}:function(d){return E[d>>>0]};case 1:return c?function(d){return G[d>>>1]}:function(d){return wa[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 xc={}; -function yc(){return"object"===typeof globalThis?globalThis:Function("return this")()}function zc(a,b){var c=U[a];void 0===c&&X(b+" has unknown type "+tc(a));return c}var Ac={},Bc={};function Cc(){if(!Dc){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 Bc)a[b]=Bc[b];var c=[];for(b in a)c.push(b+"="+a[b]);Dc=c}return Dc}var Dc; -function Ec(a){return 0===a%4&&(0!==a%100||0===a%400)}function Fc(a,b){for(var c=0,d=0;d<=b;c+=a[d++]);return c}var Gc=[31,29,31,30,31,30,31,31,30,31,30,31],Hc=[31,28,31,30,31,30,31,31,30,31,30,31];function Ic(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 Jc(a,b,c,d){function e(h,n,v){for(h="number"===typeof h?h.toString():h||"";h.lengthF?-1:0=k(v,h)?0>=k(n,h)?h.getFullYear()+1:h.getFullYear():h.getFullYear()-1}var q=H[d+40>>2>>>0];d={ub:H[d>>2>>>0],tb:H[d+4>>2>>>0],Ja:H[d+8>>2>>>0],Da:H[d+12>>2>>>0],Ca:H[d+16>>2>>>0],sa:H[d+20>>2>>>0],Ka:H[d+24>>2>>>0],La:H[d+ -28>>2>>>0],Gb:H[d+32>>2>>>0],sb:H[d+36>>2>>>0],vb:q?ra(q):""};c=ra(c);q={"%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 q)c=c.replace(new RegExp(r,"g"),q[r]);var u= -"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),x="January February March April May June July August September October November December".split(" ");q={"%a":function(h){return u[h.Ka].substring(0,3)},"%A":function(h){return u[h.Ka]},"%b":function(h){return x[h.Ca].substring(0,3)},"%B":function(h){return x[h.Ca]},"%C":function(h){return g((h.sa+1900)/100|0,2)},"%d":function(h){return g(h.Da,2)},"%e":function(h){return e(h.Da,2," ")},"%g":function(h){return l(h).toString().substring(2)}, -"%G":function(h){return l(h)},"%H":function(h){return g(h.Ja,2)},"%I":function(h){h=h.Ja;0==h?h=12:12h.Ja?"AM":"PM"},"%S":function(h){return g(h.ub,2)},"%t":function(){return"\t"},"%u":function(h){return h.Ka||7},"%U":function(h){var n=new Date(h.sa+1900,0,1),v=0===n.getDay()? -n:Ic(n,7-n.getDay());h=new Date(h.sa+1900,h.Ca,h.Da);return 0>k(v,h)?g(Math.ceil((31-v.getDate()+(Fc(Ec(h.getFullYear())?Gc:Hc,h.getMonth()-1)-31)+h.getDate())/7),2):0===k(v,n)?"01":"00"},"%V":function(h){var n=new Date(h.sa+1901,0,4),v=m(new Date(h.sa+1900,0,4));n=m(n);var y=Ic(new Date(h.sa+1900,0,1),h.La);return 0>k(y,v)?"53":0>=k(n,y)?"01":g(Math.ceil((v.getFullYear()k(v,h)?g(Math.ceil((31-v.getDate()+(Fc(Ec(h.getFullYear())?Gc:Hc,h.getMonth()-1)-31)+h.getDate())/7),2):0===k(v,n)?"01":"00"},"%y":function(h){return(h.sa+1900).toString().substring(2)},"%Y":function(h){return h.sa+1900},"%z":function(h){h=h.sb;var n=0<=h;h=Math.abs(h)/60;return(n?"+":"-")+String("0000"+(h/60*100+h%60)).slice(-4)},"%Z":function(h){return h.vb},"%%":function(){return"%"}};for(r in q)0<= -c.indexOf(r)&&(c=c.replace(new RegExp(r,"g"),q[r](d)));r=ib(c,!1);if(r.length>b)return 0;J.set(r,a>>>0);return r.length-1}function Ab(a,b,c,d){a||(a=this);this.parent=a;this.ya=a.ya;this.Ga=null;this.id=sb++;this.name=b;this.mode=c;this.pa={};this.qa={};this.rdev=d} -Object.defineProperties(Ab.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}}});Ob();tb=Array(4096);Hb(P,"/");S("/tmp");S("/home");S("/home/web_user"); -(function(){S("/dev");gb(259,{read:function(){return 0},write:function(d,e,g,k){return k}});Jb("/dev/null",259);fb(1280,jb);fb(1536,kb);Jb("/dev/tty",1280);Jb("/dev/tty1",1536);if("object"===typeof crypto&&"function"===typeof crypto.getRandomValues){var a=new Uint8Array(1);var b=function(){crypto.getRandomValues(a);return a[0]}}else if(z)try{var c=require("crypto");b=function(){return c.randomBytes(1)[0]}}catch(d){}b||(b=function(){B("random_device")});Rb("random",b);Rb("urandom",b);S("/dev/shm"); -S("/dev/shm/tmp")})();S("/proc");S("/proc/self");S("/proc/self/fd");Hb({ya:function(){var a=mb("/proc/self","fd",16895,73);a.pa={lookup:function(b,c){var d=Q[+c];if(!d)throw new O(8);b={parent:null,ya:{Za:"fake"},pa:{readlink:function(){return d.path}}};return b.parent=b}};return a}},"/proc/self/fd");cc=f.InternalError=bc("InternalError");for(var Kc=Array(256),Lc=0;256>Lc;++Lc)Kc[Lc]=String.fromCharCode(Lc);fc=Kc;hc=f.BindingError=bc("BindingError"); -f.count_emval_handles=function(){for(var a=0,b=5;b>2>>>0]=63;return-1},w:function(a,b){try{a>>>=0;if(-1===(a|0)||0===b)var c=-28;else{var d=Ub[a];if(d&&b===d.Ab){var e=Q[d.fd];if(d.Eb&2){var g=d.flags,k=d.offset,m=E.slice(a,a+b);e&&e.qa.Ha&&e.qa.Ha(e,m,k>>>0,b,g)}Ub[a]=null;d.$a&&Z(d.Bb)}c=0}return c}catch(l){return"undefined"!==typeof Tb&&l instanceof O||B(l),-l.Ea}},n:function(a){var b=Wb[a];delete Wb[a];var c= -b.lb,d=b.mb,e=b.Ua,g=e.map(function(k){return k.hb}).concat(e.map(function(k){return k.qb}));dc([a],g,function(k){var m={};e.forEach(function(l,q){var r=k[q],u=l.fb,x=l.gb,h=k[q+e.length],n=l.pb,v=l.rb;m[l.cb]={read:function(y){return r.fromWireType(u(x,y))},write:function(y,F){var ja=[];n(v,y,h.toWireType(ja,F));Xb(ja)}}});return[{name:b.name,fromWireType:function(l){var q={},r;for(r in m)q[r]=m[r].read(l);d(l);return q},toWireType:function(l,q){for(var r in m)if(!(r in q))throw new TypeError('Missing field: "'+ -r+'"');var u=c();for(r in m)m[r].write(u,q[r]);null!==l&&l.push(d,u);return u},argPackAdvance:8,readValueFromPointer:Yb,wa:d}]})},C:function(a,b,c,d,e){var g=ec(c);b=W(b);V(a,{name:b,fromWireType:function(k){return!!k},toWireType:function(k,m){return m?d:e},argPackAdvance:8,readValueFromPointer:function(k){if(1===c)var m=J;else if(2===c)m=G;else if(4===c)m=H;else throw new TypeError("Unknown boolean type size: "+b);return this.fromWireType(m[k>>>g])},wa:null})},B:function(a,b){b=W(b);V(a,{name:b, -fromWireType:function(c){var d=Y[c].value;jc(c);return d},toWireType:function(c,d){return kc(d)},argPackAdvance:8,readValueFromPointer:Yb,wa:null})},k:function(a,b,c){c=ec(c);b=W(b);V(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,e){if("number"!==typeof e&&"boolean"!==typeof e)throw new TypeError('Cannot convert "'+lc(e)+'" to '+this.name);return e},argPackAdvance:8,readValueFromPointer:mc(b,c),wa:null})},m:function(a,b,c,d,e,g){var k=qc(b,c);a=W(a);e=rc(d,e);pc(a,function(){vc("Cannot call "+ -a+" due to unbound types",k)},b-1);dc([],k,function(m){var l=[m[0],null].concat(m.slice(1)),q=m=a,r=e,u=l.length;2>u&&X("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var x=null!==l[1]&&!1,h=!1,n=1;n>>m}}var l=-1!=b.indexOf("unsigned");V(a,{name:b,fromWireType:g,toWireType:function(q,r){if("number"!==typeof r&&"boolean"!==typeof r)throw new TypeError('Cannot convert "'+lc(r)+'" to '+this.name);if(re)throw new TypeError('Passing a number "'+lc(r)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+ -d+", "+e+"]!");return l?r>>>0:r|0},argPackAdvance:8,readValueFromPointer:wc(b,k,0!==d),wa:null})},a:function(a,b,c){function d(g){g>>=2;var k=K;return new e(I,k[g+1>>>0],k[g>>>0])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=W(c);V(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ib:!0})},l:function(a,b){b=W(b);var c="std::string"===b;V(a,{name:b,fromWireType:function(d){var e=K[d>>>2];if(c)for(var g=d+4,k=0;k<=e;++k){var m= -d+4+k;if(k==e||0==E[m>>>0]){g=ra(g,m-g);if(void 0===l)var l=g;else l+=String.fromCharCode(0),l+=g;g=m+1}}else{l=Array(e);for(k=0;k>>0]);l=l.join("")}Z(d);return l},toWireType:function(d,e){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var g="string"===typeof e;g||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int8Array||X("Cannot pass non-string to std::string");var k=(c&&g?function(){return ta(e)}:function(){return e.length})(),m=pb(4+ -k+1);m>>>=0;K[m>>>2]=k;if(c&&g)sa(e,E,m+4,k+1);else if(g)for(g=0;g>>0]=l}else for(g=0;g>>0]=e[g];null!==d&&d.push(Z,m);return m},argPackAdvance:8,readValueFromPointer:Yb,wa:function(d){Z(d)}})},f:function(a,b,c){c=W(c);if(2===b){var d=va;var e=xa;var g=ya;var k=function(){return wa};var m=1}else 4===b&&(d=za,e=Aa,g=Ba,k=function(){return K},m=2);V(a,{name:c,fromWireType:function(l){for(var q= -K[l>>>2],r=k(),u,x=l+4,h=0;h<=q;++h){var n=l+4+h*b;if(h==q||0==r[n>>>m])x=d(x,n-x),void 0===u?u=x:(u+=String.fromCharCode(0),u+=x),x=n+b}Z(l);return u},toWireType:function(l,q){"string"!==typeof q&&X("Cannot pass non-string to C++ string type "+c);var r=g(q),u=pb(4+r+b);u>>>=0;K[u>>>2]=r>>m;e(q,u+4,r+b);null!==l&&l.push(Z,u);return u},argPackAdvance:8,readValueFromPointer:Yb,wa:function(l){Z(l)}})},o:function(a,b,c,d,e,g){Wb[a]={name:W(b),lb:rc(c,d),mb:rc(e,g),Ua:[]}},h:function(a,b,c,d,e,g,k,m,l, -q){Wb[a].Ua.push({cb:W(b),hb:c,fb:rc(d,e),gb:g,qb:k,pb:rc(m,l),rb:q})},D:function(a,b){b=W(b);V(a,{zb:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},j:jc,F:function(a){if(0===a)return kc(yc());var b=xc[a];a=void 0===b?W(a):b;return kc(yc()[a])},E:function(a){4>> 2) + "+g+'], "parameter '+g+'");\nvar arg'+g+" = argType"+g+".readValueFromPointer(args);\nargs += argType"+g+"['argPackAdvance'];\n";e=(new Function("requireRegisteredType","Module","__emval_register",k+("var obj = new constructor("+e+");\nreturn __emval_register(obj);\n}\n")))(zc,f,kc);Ac[b]=e}return e(a,c,d)},g:function(){B()},u:function(a,b,c){E.copyWithin(a>>>0,b>>> -0,b+c>>>0)},d:function(a){a>>>=0;var b=E.length;if(4294967296=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216,a,d);0>>16);Ea(D.buffer);var e=1;break a}catch(g){}e=void 0}if(e)return!0}return!1},y:function(a,b){var c=0;Cc().forEach(function(d,e){var g=b+c;e=H[a+4*e>>2>>>0]=g;for(g=0;g>0>>>0]=d.charCodeAt(g);J[e>>0>>>0]=0;c+=d.length+1});return 0}, -z:function(a,b){var c=Cc();H[a>>2>>>0]=c.length;var d=0;c.forEach(function(e){d+=e.length+1});H[b>>2>>>0]=d;return 0},A:function(a){try{var b=Vb(a);if(null===b.fd)throw new O(8);b.Na&&(b.Na=null);try{b.qa.close&&b.qa.close(b)}catch(c){throw c;}finally{Q[b.fd]=null}b.fd=null;return 0}catch(c){return"undefined"!==typeof Tb&&c instanceof O||B(c),c.Ea}},r:function(a,b,c,d,e){try{var g=Vb(a);a=4294967296*c+(b>>>0);if(-9007199254740992>=a||9007199254740992<=a)return-61;Nb(g,a,d);Xa=[g.position>>>0,(N=g.position, -1<=+Ma(N)?0>>0:~~+Na((N-+(~~N>>>0))/4294967296)>>>0:0)];H[e>>2>>>0]=Xa[0];H[e+4>>2>>>0]=Xa[1];g.Na&&0===a&&0===d&&(g.Na=null);return 0}catch(k){return"undefined"!==typeof Tb&&k instanceof O||B(k),k.Ea}},i:function(a,b,c,d){try{a:{for(var e=Vb(a),g=a=0;g>2>>>0],l=H[b+(8*g+4)>>2>>>0],q=void 0,r=J;m>>>=0;if(0>l||0>q)throw new O(28);if(null===k.fd)throw new O(8);if(0===(k.flags&2097155))throw new O(8);if(16384===(k.node.mode&61440))throw new O(31); -if(!k.qa.write)throw new O(28);k.seekable&&k.flags&1024&&Nb(k,0,2);var u="undefined"!==typeof q;if(!u)q=k.position;else if(!k.seekable)throw new O(70);var x=k.qa.write(k,r,m,l,q,void 0);u||(k.position+=x);try{if(k.path&&vb.onWriteToFile)vb.onWriteToFile(k.path)}catch(v){C("FS.trackingDelegate['onWriteToFile']('"+k.path+"') threw an exception: "+v.message)}var h=x;if(0>h){var n=-1;break a}a+=h}n=a}H[d>>2>>>0]=n;return 0}catch(v){return"undefined"!==typeof Tb&&v instanceof O||B(v),v.Ea}},memory:D,e:function(a){a= -+a;return 0<=a?+Oa(a+.5):+Na(a-.5)},c:function(a){a=+a;return 0<=a?+Oa(a+.5):+Na(a-.5)},s:function(){},v:function(a,b,c,d){return Jc(a,b,c,d)},table:na}; -(function(){function a(e){f.asm=e.exports;L--;f.monitorRunDependencies&&f.monitorRunDependencies(L);0==L&&(null!==Qa&&(clearInterval(Qa),Qa=null),Ra&&(e=Ra,Ra=null,e()))}function b(e){a(e.instance)}function c(e){return Wa().then(function(g){return WebAssembly.instantiate(g,d)}).then(e,function(g){C("failed to asynchronously prepare wasm: "+g);B(g)})}var d={a:Nc};L++;f.monitorRunDependencies&&f.monitorRunDependencies(L);if(f.instantiateWasm)try{return f.instantiateWasm(d,a)}catch(e){return C("Module.instantiateWasm callback failed with error: "+ -e),!1}(function(){if(ma||"function"!==typeof WebAssembly.instantiateStreaming||Ta()||Sa("file://")||"function"!==typeof fetch)return c(b);fetch(M,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(g){C("wasm streaming compile failed: "+g);C("falling back to ArrayBuffer instantiation");return c(b)})})})();return{}})(); -var Ya=f.___wasm_call_ctors=function(){return(Ya=f.___wasm_call_ctors=f.asm.H).apply(null,arguments)},pb=f._malloc=function(){return(pb=f._malloc=f.asm.I).apply(null,arguments)},Z=f._free=function(){return(Z=f._free=f.asm.J).apply(null,arguments)},Mc=f.___errno_location=function(){return(Mc=f.___errno_location=f.asm.K).apply(null,arguments)},uc=f.___getTypeName=function(){return(uc=f.___getTypeName=f.asm.L).apply(null,arguments)}; +va:P.pa.va},stream:kb}});c=lb(a,b,c,d);16384===(c.mode&61440)?(c.pa=P.ta.dir.node,c.qa=P.ta.dir.stream,c.oa={}):32768===(c.mode&61440)?(c.pa=P.ta.file.node,c.qa=P.ta.file.stream,c.ra=0,c.oa=null):40960===(c.mode&61440)?(c.pa=P.ta.link.node,c.qa=P.ta.link.stream):8192===(c.mode&61440)&&(c.pa=P.ta.Sa.node,c.qa=P.ta.Sa.stream);c.timestamp=Date.now();a&&(a.oa[b]=c);return c},xb:function(a){if(a.oa&&a.oa.subarray){for(var b=[],c=0;c=b||(b=Math.max(b,c*(1048576>c?2:1.125)>>>0),0!=c&&(b=Math.max(b,256)),c=a.oa,a.oa=new Uint8Array(b),0b)a.oa.length=b;else for(;a.oa.length=a.node.ra)return 0;a=Math.min(a.node.ra-e,d);if(8b)throw new O(28);return b},Ra:function(a,b,c){P.Ta(a.node,b+c);a.node.ra=Math.max(a.node.ra,b+c)},Ya:function(a,b,c,d,e,g){assert(0===b);if(32768!==(a.node.mode& +61440))throw new O(43);a=a.node.oa;if(g&2||a.buffer!==I){if(0>>0)%sb.length}function nb(a,b){var c;if(c=(c=yb(a,"x"))?c:a.pa.lookup?0:2)throw new O(c,a);for(c=sb[xb(a.id,b)];c;c=c.kb){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return a.pa.lookup(a,b)} +function lb(a,b,c,d){a=new zb(a,b,c,d);b=xb(a.parent.id,a.name);a.kb=sb[b];return sb[b]=a}var Ab={r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218};function Bb(a){var b=["r","w","rw"][a&3];a&512&&(b+="w");return b}function yb(a,b){if(tb)return 0;if(-1===b.indexOf("r")||a.mode&292){if(-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73))return 2}else return 2;return 0} +function Cb(a,b){try{return nb(a,b),20}catch(c){}return yb(a,"wx")}function Db(){var a=4096;for(var b=0;b<=a;b++)if(!Q[b])return b;throw new O(33);}function Eb(a){Fb||(Fb=function(){},Fb.prototype={});var b=new Fb,c;for(c in a)b[c]=a[c];a=b;b=Db();a.fd=b;return Q[b]=a}var kb={open:function(a){a.qa=qb[a.node.rdev].qa;a.qa.open&&a.qa.open(a)},Aa:function(){throw new O(70);}};function fb(a,b){qb[a]={qa:b}} +function Gb(a,b){var c="/"===b,d=!b;if(c&&pb)throw new O(10);if(!c&&!d){var e=R(b,{Wa:!1});b=e.path;e=e.node;if(e.Ga)throw new O(10);if(16384!==(e.mode&61440))throw new O(54);}b={type:a,Db:{},Za:b,jb:[]};a=a.ya(b);a.ya=b;b.root=a;c?pb=a:e&&(e.Ga=b,e.ya&&e.ya.jb.push(b))}function Hb(a,b,c){var d=R(a,{parent:!0}).node;a=bb(a);if(!a||"."===a||".."===a)throw new O(28);var e=Cb(d,a);if(e)throw new O(e);if(!d.pa.Fa)throw new O(63);return d.pa.Fa(d,a,b,c)}function S(a){Hb(a,16895,0)} +function Ib(a,b,c){"undefined"===typeof c&&(c=b,b=438);Hb(a,b|8192,c)}function Jb(a,b){if(!cb(a))throw new O(44);var c=R(b,{parent:!0}).node;if(!c)throw new O(44);b=bb(b);var d=Cb(c,b);if(d)throw new O(d);if(!c.pa.symlink)throw new O(63);c.pa.symlink(c,b,a)}function vb(a){a=R(a).node;if(!a)throw new O(44);if(!a.pa.readlink)throw new O(28);return cb(wb(a.parent),a.pa.readlink(a))} +function Kb(a,b){if(""===a)throw new O(44);if("string"===typeof b){var c=Ab[b];if("undefined"===typeof c)throw Error("Unknown file open mode: "+b);b=c}var d=b&64?("undefined"===typeof d?438:d)&4095|32768:0;if("object"===typeof a)var e=a;else{a=$a(a);try{e=R(a,{Va:!(b&131072)}).node}catch(k){}}c=!1;if(b&64)if(e){if(b&128)throw new O(20);}else e=Hb(a,d,0),c=!0;if(!e)throw new O(44);8192===(e.mode&61440)&&(b&=-513);if(b&65536&&16384!==(e.mode&61440))throw new O(54);if(!c&&(d=e?40960===(e.mode&61440)? +32:16384===(e.mode&61440)&&("r"!==Bb(b)||b&512)?31:yb(e,Bb(b)):44))throw new O(d);if(b&512){d=e;var g;"string"===typeof d?g=R(d,{Va:!0}).node:g=d;if(!g.pa.va)throw new O(63);if(16384===(g.mode&61440))throw new O(31);if(32768!==(g.mode&61440))throw new O(28);if(d=yb(g,"w"))throw new O(d);g.pa.va(g,{size:0,timestamp:Date.now()})}b&=-131713;e=Eb({node:e,path:wb(e),flags:b,seekable:!0,position:0,qa:e.qa,wb:[],error:!1});e.qa.open&&e.qa.open(e);!f.logReadFiles||b&1||(Lb||(Lb={}),a in Lb||(Lb[a]=1,B("FS.trackingDelegate error on read file: "+ +a)));try{ub.onOpenFile&&(e=0,1!==(b&2097155)&&(e|=1),0!==(b&2097155)&&(e|=2),ub.onOpenFile(a,e))}catch(k){B("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+k.message)}}function Mb(a,b,c){if(null===a.fd)throw new O(8);if(!a.seekable||!a.qa.Aa)throw new O(70);if(0!=c&&1!=c&&2!=c)throw new O(28);a.position=a.qa.Aa(a,b,c);a.wb=[]} +function Nb(){O||(O=function(a,b){this.node=b;this.ob=function(c){this.Ea=c};this.ob(a);this.message="FS error"},O.prototype=Error(),O.prototype.constructor=O,[44].forEach(function(a){mb[a]=new O(a);mb[a].stack=""}))}var Ob;function Pb(a,b){var c=0;a&&(c|=365);b&&(c|=146);return c} +function Qb(a,b,c){a=$a("/dev/"+a);var d=Pb(!!b,!!c);Rb||(Rb=64);var e=Rb++<<8|0;fb(e,{open:function(g){g.seekable=!1},close:function(){c&&c.buffer&&c.buffer.length&&c(10)},read:function(g,k,m,l){for(var q=0,r=0;r>2])}var T={},U={},Yb={};function Zb(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 $b(a,b){a=Zb(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)}function ac(a){var b=Error,c=$b(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 bc=void 0;function cc(a,b,c){function d(m){m=c(m);if(m.length!==a.length)throw new bc("Mismatched type converter count");for(var l=0;l>2])};case 3:return function(c){return this.fromWireType(Ca[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}function mc(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=$b(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c} +function nc(a,b){var c=f;if(void 0===c[a].ua){var d=c[a];c[a]=function(){c[a].ua.hasOwnProperty(arguments.length)||X("Function '"+b+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+c[a].ua+")!");return c[a].ua[arguments.length].apply(this,arguments)};c[a].ua=[];c[a].ua[d.ab]=d}} +function oc(a,b,c){f.hasOwnProperty(a)?((void 0===c||void 0!==f[a].ua&&void 0!==f[a].ua[c])&&X("Cannot register public name '"+a+"' twice"),nc(a,a),f.hasOwnProperty(c)&&X("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),f[a].ua[c]=b):(f[a]=b,void 0!==c&&(f[a].Cb=c))}function pc(a,b){for(var c=[],d=0;d>2)+d]);return c} +function qc(a,b){a=W(a);var c=f["dynCall_"+a];for(var d=[],e=1;e>1]}:function(d){return va[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 wc={}; +function xc(){return"object"===typeof globalThis?globalThis:Function("return this")()}function yc(a,b){var c=U[a];void 0===c&&X(b+" has unknown type "+sc(a));return c}var zc={},Ac={};function Bc(){if(!Cc){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 Ac)a[b]=Ac[b];var c=[];for(b in a)c.push(b+"="+a[b]);Cc=c}return Cc}var Cc; +function Dc(a){return 0===a%4&&(0!==a%100||0===a%400)}function Ec(a,b){for(var c=0,d=0;d<=b;c+=a[d++]);return c}var Fc=[31,29,31,30,31,30,31,31,30,31,30,31],Gc=[31,28,31,30,31,30,31,31,30,31,30,31];function Hc(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 Ic(a,b,c,d){function e(h,n,v){for(h="number"===typeof h?h.toString():h||"";h.lengthF?-1:0=k(v,h)?0>=k(n,h)?h.getFullYear()+1:h.getFullYear():h.getFullYear()-1}var q=H[d+40>>2];d={ub:H[d>>2],tb:H[d+4>>2],Ja:H[d+8>>2],Da:H[d+12>>2],Ca:H[d+16>>2],sa:H[d+20>>2],Ka:H[d+24>>2],La:H[d+28>>2],Gb:H[d+32>>2],sb:H[d+ +36>>2],vb:q?q?D(E,q,void 0):"":""};c=c?D(E,c,void 0):"";q={"%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 q)c=c.replace(new RegExp(r,"g"),q[r]);var u="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "), +x="January February March April May June July August September October November December".split(" ");q={"%a":function(h){return u[h.Ka].substring(0,3)},"%A":function(h){return u[h.Ka]},"%b":function(h){return x[h.Ca].substring(0,3)},"%B":function(h){return x[h.Ca]},"%C":function(h){return g((h.sa+1900)/100|0,2)},"%d":function(h){return g(h.Da,2)},"%e":function(h){return e(h.Da,2," ")},"%g":function(h){return l(h).toString().substring(2)},"%G":function(h){return l(h)},"%H":function(h){return g(h.Ja, +2)},"%I":function(h){h=h.Ja;0==h?h=12:12h.Ja?"AM":"PM"},"%S":function(h){return g(h.ub,2)},"%t":function(){return"\t"},"%u":function(h){return h.Ka||7},"%U":function(h){var n=new Date(h.sa+1900,0,1),v=0===n.getDay()?n:Hc(n,7-n.getDay());h=new Date(h.sa+1900,h.Ca,h.Da);return 0> +k(v,h)?g(Math.ceil((31-v.getDate()+(Ec(Dc(h.getFullYear())?Fc:Gc,h.getMonth()-1)-31)+h.getDate())/7),2):0===k(v,n)?"01":"00"},"%V":function(h){var n=new Date(h.sa+1901,0,4),v=m(new Date(h.sa+1900,0,4));n=m(n);var y=Hc(new Date(h.sa+1900,0,1),h.La);return 0>k(y,v)?"53":0>=k(n,y)?"01":g(Math.ceil((v.getFullYear()k(v,h)?g(Math.ceil((31-v.getDate()+(Ec(Dc(h.getFullYear())?Fc:Gc,h.getMonth()-1)-31)+h.getDate())/7),2):0===k(v,n)?"01":"00"},"%y":function(h){return(h.sa+1900).toString().substring(2)},"%Y":function(h){return h.sa+1900},"%z":function(h){h=h.sb;var n=0<=h;h=Math.abs(h)/60;return(n?"+":"-")+String("0000"+(h/60*100+h%60)).slice(-4)},"%Z":function(h){return h.vb},"%%":function(){return"%"}};for(r in q)0<=c.indexOf(r)&&(c=c.replace(new RegExp(r,"g"),q[r](d)));r= +hb(c,!1);if(r.length>b)return 0;J.set(r,a);return r.length-1}function zb(a,b,c,d){a||(a=this);this.parent=a;this.ya=a.ya;this.Ga=null;this.id=rb++;this.name=b;this.mode=c;this.pa={};this.qa={};this.rdev=d}Object.defineProperties(zb.prototype,{read:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}}});Nb();sb=Array(4096);Gb(P,"/");S("/tmp");S("/home"); +S("/home/web_user"); +(function(){S("/dev");fb(259,{read:function(){return 0},write:function(d,e,g,k){return k}});Ib("/dev/null",259);eb(1280,ib);eb(1536,jb);Ib("/dev/tty",1280);Ib("/dev/tty1",1536);if("object"===typeof crypto&&"function"===typeof crypto.getRandomValues){var a=new Uint8Array(1);var b=function(){crypto.getRandomValues(a);return a[0]}}else if(ea)try{var c=require("crypto");b=function(){return c.randomBytes(1)[0]}}catch(d){}b||(b=function(){A("random_device")});Qb("random",b);Qb("urandom",b);S("/dev/shm"); +S("/dev/shm/tmp")})();S("/proc");S("/proc/self");S("/proc/self/fd");Gb({ya:function(){var a=lb("/proc/self","fd",16895,73);a.pa={lookup:function(b,c){var d=Q[+c];if(!d)throw new O(8);b={parent:null,ya:{Za:"fake"},pa:{readlink:function(){return d.path}}};return b.parent=b}};return a}},"/proc/self/fd");bc=f.InternalError=ac("InternalError");for(var Jc=Array(256),Kc=0;256>Kc;++Kc)Jc[Kc]=String.fromCharCode(Kc);ec=Jc;fc=f.BindingError=ac("BindingError"); +f.count_emval_handles=function(){for(var a=0,b=5;b>2]=63;return-1},w:function(a,b){try{if(-1===(a|0)||0===b)var c=-28;else{var d=Tb[a];if(d&&b===d.Ab){var e=Q[d.fd];if(d.Eb&2){var g=d.flags,k=d.offset,m=E.slice(a,a+b);e&&e.qa.Ha&&e.qa.Ha(e,m,k,b,g)}Tb[a]=null;d.$a&&Z(d.Bb)}c=0}return c}catch(l){return"undefined"!==typeof Sb&&l instanceof O||A(l),-l.Ea}},n:function(a){var b=Vb[a];delete Vb[a];var c=b.lb,d=b.mb,e= +b.Ua,g=e.map(function(k){return k.hb}).concat(e.map(function(k){return k.qb}));cc([a],g,function(k){var m={};e.forEach(function(l,q){var r=k[q],u=l.fb,x=l.gb,h=k[q+e.length],n=l.pb,v=l.rb;m[l.cb]={read:function(y){return r.fromWireType(u(x,y))},write:function(y,F){var ja=[];n(v,y,h.toWireType(ja,F));Wb(ja)}}});return[{name:b.name,fromWireType:function(l){var q={},r;for(r in m)q[r]=m[r].read(l);d(l);return q},toWireType:function(l,q){for(var r in m)if(!(r in q))throw new TypeError('Missing field: "'+ +r+'"');var u=c();for(r in m)m[r].write(u,q[r]);null!==l&&l.push(d,u);return u},argPackAdvance:8,readValueFromPointer:Xb,wa:d}]})},C:function(a,b,c,d,e){var g=dc(c);b=W(b);V(a,{name:b,fromWireType:function(k){return!!k},toWireType:function(k,m){return m?d:e},argPackAdvance:8,readValueFromPointer:function(k){if(1===c)var m=J;else if(2===c)m=G;else if(4===c)m=H;else throw new TypeError("Unknown boolean type size: "+b);return this.fromWireType(m[k>>g])},wa:null})},B:function(a,b){b=W(b);V(a,{name:b,fromWireType:function(c){var d= +Y[c].value;ic(c);return d},toWireType:function(c,d){return jc(d)},argPackAdvance:8,readValueFromPointer:Xb,wa:null})},j:function(a,b,c){c=dc(c);b=W(b);V(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,e){if("number"!==typeof e&&"boolean"!==typeof e)throw new TypeError('Cannot convert "'+kc(e)+'" to '+this.name);return e},argPackAdvance:8,readValueFromPointer:lc(b,c),wa:null})},m:function(a,b,c,d,e,g){var k=pc(b,c);a=W(a);e=qc(d,e);oc(a,function(){uc("Cannot call "+a+" due to unbound types", +k)},b-1);cc([],k,function(m){var l=[m[0],null].concat(m.slice(1)),q=m=a,r=e,u=l.length;2>u&&X("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var x=null!==l[1]&&!1,h=!1,n=1;n>>m}}var l=-1!=b.indexOf("unsigned");V(a,{name:b,fromWireType:g,toWireType:function(q,r){if("number"!==typeof r&&"boolean"!==typeof r)throw new TypeError('Cannot convert "'+kc(r)+'" to '+this.name);if(re)throw new TypeError('Passing a number "'+kc(r)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+d+", "+e+"]!");return l?r>>>0:r|0},argPackAdvance:8,readValueFromPointer:vc(b, +k,0!==d),wa:null})},a:function(a,b,c){function d(g){g>>=2;var k=K;return new e(I,k[g+1],k[g])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=W(c);V(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ib:!0})},k:function(a,b){b=W(b);var c="std::string"===b;V(a,{name:b,fromWireType:function(d){var e=K[d>>2];if(c)for(var g=d+4,k=0;k<=e;++k){var m=d+4+k;if(k==e||0==E[m]){g=g?D(E,g,m-g):"";if(void 0===l)var l=g;else l+=String.fromCharCode(0), +l+=g;g=m+1}}else{l=Array(e);for(k=0;k>2]=k;if(c&&g)ra(e,E,m+4,k+1);else if(g)for(g=0;g>2],r=k(),u,x=l+4,h=0;h<=q;++h){var n=l+4+h*b;if(h==q||0==r[n>>m])x=d(x,n-x),void 0=== +u?u=x:(u+=String.fromCharCode(0),u+=x),x=n+b}Z(l);return u},toWireType:function(l,q){"string"!==typeof q&&X("Cannot pass non-string to C++ string type "+c);var r=g(q),u=ob(4+r+b);K[u>>2]=r>>m;e(q,u+4,r+b);null!==l&&l.push(Z,u);return u},argPackAdvance:8,readValueFromPointer:Xb,wa:function(l){Z(l)}})},o:function(a,b,c,d,e,g){Vb[a]={name:W(b),lb:qc(c,d),mb:qc(e,g),Ua:[]}},g:function(a,b,c,d,e,g,k,m,l,q){Vb[a].Ua.push({cb:W(b),hb:c,fb:qc(d,e),gb:g,qb:k,pb:qc(m,l),rb:q})},D:function(a,b){b=W(b);V(a,{zb:!0, +name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},i:ic,F:function(a){if(0===a)return jc(xc());var b=wc[a];a=void 0===b?W(a):b;return jc(xc()[a])},E:function(a){4>> 2) + "+ +g+'], "parameter '+g+'");\nvar arg'+g+" = argType"+g+".readValueFromPointer(args);\nargs += argType"+g+"['argPackAdvance'];\n";e=(new Function("requireRegisteredType","Module","__emval_register",k+("var obj = new constructor("+e+");\nreturn __emval_register(obj);\n}\n")))(yc,f,jc);zc[b]=e}return e(a,c,d)},l:function(){A()},u:function(a,b,c){E.copyWithin(a,b,b+c)},d: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);Da(C.buffer);var e=1;break a}catch(g){}e=void 0}if(e)return!0}return!1},y:function(a,b){var c=0;Bc().forEach(function(d,e){var g=b+c;e=H[a+4*e>>2]=g;for(g=0;g>0]=d.charCodeAt(g);J[e>>0]=0;c+=d.length+1});return 0},z:function(a,b){var c=Bc();H[a>>2]=c.length;var d=0;c.forEach(function(e){d+=e.length+1});H[b>>2]=d;return 0},A:function(a){try{var b=Ub(a);if(null===b.fd)throw new O(8); +b.Na&&(b.Na=null);try{b.qa.close&&b.qa.close(b)}catch(c){throw c;}finally{Q[b.fd]=null}b.fd=null;return 0}catch(c){return"undefined"!==typeof Sb&&c instanceof O||A(c),c.Ea}},r:function(a,b,c,d,e){try{var g=Ub(a);a=4294967296*c+(b>>>0);if(-9007199254740992>=a||9007199254740992<=a)return-61;Mb(g,a,d);Wa=[g.position>>>0,(N=g.position,1<=+La(N)?0>>0:~~+Ma((N-+(~~N>>>0))/4294967296)>>>0:0)];H[e>>2]=Wa[0];H[e+4>>2]=Wa[1];g.Na&&0===a&&0===d&&(g.Na=null);return 0}catch(k){return"undefined"!== +typeof Sb&&k instanceof O||A(k),k.Ea}},h:function(a,b,c,d){try{a:{for(var e=Ub(a),g=a=0;g>2],l=H[b+(8*g+4)>>2],q=void 0,r=J;if(0>l||0>q)throw new O(28);if(null===k.fd)throw new O(8);if(0===(k.flags&2097155))throw new O(8);if(16384===(k.node.mode&61440))throw new O(31);if(!k.qa.write)throw new O(28);k.seekable&&k.flags&1024&&Mb(k,0,2);var u="undefined"!==typeof q;if(!u)q=k.position;else if(!k.seekable)throw new O(70);var x=k.qa.write(k,r,m,l,q,void 0);u||(k.position+=x);try{if(k.path&& +ub.onWriteToFile)ub.onWriteToFile(k.path)}catch(v){B("FS.trackingDelegate['onWriteToFile']('"+k.path+"') threw an exception: "+v.message)}var h=x;if(0>h){var n=-1;break a}a+=h}n=a}H[d>>2]=n;return 0}catch(v){return"undefined"!==typeof Sb&&v instanceof O||A(v),v.Ea}},memory:C,e:function(a){a=+a;return 0<=a?+Na(a+.5):+Ma(a-.5)},c:function(a){a=+a;return 0<=a?+Na(a+.5):+Ma(a-.5)},s:function(){},v:function(a,b,c,d){return Ic(a,b,c,d)},table:oa}; +(function(){function a(e){f.asm=e.exports;L--;f.monitorRunDependencies&&f.monitorRunDependencies(L);0==L&&(null!==Pa&&(clearInterval(Pa),Pa=null),Qa&&(e=Qa,Qa=null,e()))}function b(e){a(e.instance)}function c(e){return Va().then(function(g){return WebAssembly.instantiate(g,d)}).then(e,function(g){B("failed to asynchronously prepare wasm: "+g);A(g)})}var d={a:Mc};L++;f.monitorRunDependencies&&f.monitorRunDependencies(L);if(f.instantiateWasm)try{return f.instantiateWasm(d,a)}catch(e){return B("Module.instantiateWasm callback failed with error: "+ +e),!1}(function(){if(na||"function"!==typeof WebAssembly.instantiateStreaming||Sa()||Ra("file://")||"function"!==typeof fetch)return c(b);fetch(M,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(g){B("wasm streaming compile failed: "+g);B("falling back to ArrayBuffer instantiation");return c(b)})})})();return{}})(); +var Xa=f.___wasm_call_ctors=function(){return(Xa=f.___wasm_call_ctors=f.asm.H).apply(null,arguments)},ob=f._malloc=function(){return(ob=f._malloc=f.asm.I).apply(null,arguments)},Z=f._free=function(){return(Z=f._free=f.asm.J).apply(null,arguments)},Lc=f.___errno_location=function(){return(Lc=f.___errno_location=f.asm.K).apply(null,arguments)},tc=f.___getTypeName=function(){return(tc=f.___getTypeName=f.asm.L).apply(null,arguments)}; f.___embind_register_native_and_builtin_types=function(){return(f.___embind_register_native_and_builtin_types=f.asm.M).apply(null,arguments)};f.dynCall_i=function(){return(f.dynCall_i=f.asm.N).apply(null,arguments)};f.dynCall_vi=function(){return(f.dynCall_vi=f.asm.O).apply(null,arguments)};f.dynCall_iii=function(){return(f.dynCall_iii=f.asm.P).apply(null,arguments)};f.dynCall_viii=function(){return(f.dynCall_viii=f.asm.Q).apply(null,arguments)}; f.dynCall_fii=function(){return(f.dynCall_fii=f.asm.R).apply(null,arguments)};f.dynCall_viif=function(){return(f.dynCall_viif=f.asm.S).apply(null,arguments)};f.dynCall_iiiiii=function(){return(f.dynCall_iiiiii=f.asm.T).apply(null,arguments)};f.dynCall_viiiii=function(){return(f.dynCall_viiiii=f.asm.U).apply(null,arguments)};f.dynCall_ii=function(){return(f.dynCall_ii=f.asm.V).apply(null,arguments)};f.dynCall_iidiiii=function(){return(f.dynCall_iidiiii=f.asm.W).apply(null,arguments)}; -f.dynCall_vii=function(){return(f.dynCall_vii=f.asm.X).apply(null,arguments)};f.dynCall_iiiiiii=function(){return(f.dynCall_iiiiiii=f.asm.Y).apply(null,arguments)};f.dynCall_iiii=function(){return(f.dynCall_iiii=f.asm.Z).apply(null,arguments)};f.dynCall_v=function(){return(f.dynCall_v=f.asm._).apply(null,arguments)};f.dynCall_viiiiiii=function(){return(f.dynCall_viiiiiii=f.asm.$).apply(null,arguments)};f.dynCall_viijii=function(){return(f.dynCall_viijii=f.asm.aa).apply(null,arguments)}; -f.dynCall_viiii=function(){return(f.dynCall_viiii=f.asm.ba).apply(null,arguments)};f.dynCall_iiiii=function(){return(f.dynCall_iiiii=f.asm.ca).apply(null,arguments)};f.dynCall_fi=function(){return(f.dynCall_fi=f.asm.da).apply(null,arguments)};f.dynCall_iiji=function(){return(f.dynCall_iiji=f.asm.ea).apply(null,arguments)};f.dynCall_iifi=function(){return(f.dynCall_iifi=f.asm.fa).apply(null,arguments)};f.dynCall_jiji=function(){return(f.dynCall_jiji=f.asm.ga).apply(null,arguments)}; -f.dynCall_iiiiiiiii=function(){return(f.dynCall_iiiiiiiii=f.asm.ha).apply(null,arguments)};f.dynCall_viiiiii=function(){return(f.dynCall_viiiiii=f.asm.ia).apply(null,arguments)};f.dynCall_iiiiiiii=function(){return(f.dynCall_iiiiiiii=f.asm.ja).apply(null,arguments)};f.dynCall_iiiiiijj=function(){return(f.dynCall_iiiiiijj=f.asm.ka).apply(null,arguments)};f.dynCall_iiiiij=function(){return(f.dynCall_iiiiij=f.asm.la).apply(null,arguments)}; -f.dynCall_iiiiid=function(){return(f.dynCall_iiiiid=f.asm.ma).apply(null,arguments)};f.dynCall_iiiiijj=function(){return(f.dynCall_iiiiijj=f.asm.na).apply(null,arguments)};var Oc;Ra=function Pc(){Oc||Qc();Oc||(Ra=Pc)}; -function Qc(){function a(){if(!Oc&&(Oc=!0,f.calledRun=!0,!oa)){f.noFSInit||Pb||(Pb=!0,Ob(),f.stdin=f.stdin,f.stdout=f.stdout,f.stderr=f.stderr,f.stdin?Rb("stdin",f.stdin):Kb("/dev/tty","/dev/stdin"),f.stdout?Rb("stdout",null,f.stdout):Kb("/dev/tty","/dev/stdout"),f.stderr?Rb("stderr",null,f.stderr):Kb("/dev/tty1","/dev/stderr"),Lb("/dev/stdin","r"),Lb("/dev/stdout","w"),Lb("/dev/stderr","w"));Ga(Ia);ub=!1;Ga(Ja);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();Ka.unshift(b)}Ga(Ka)}}if(!(0