From 361463a2ff10bd3e536e34ee816b397c23dca6f7 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Sat, 22 Sep 2018 17:18:25 +0200 Subject: [PATCH] wasm --- emscripten/taler-emscripten-lib.js | 2 +- emscripten/taler-emscripten-lib.wasm | Bin 443523 -> 444112 bytes gulpfile.js | 1 + .../nyc/node_modules/md5-hex/package.json | 64 ++- .../nyc/node_modules/path-exists/package.json | 64 ++- .../node_modules/resolve-from/package.json | 59 ++- package.json | 1 + src/crypto/cryptoWorker.ts | 76 ++++ src/crypto/emscInterface.ts | 72 +++- src/i18n/de.po | 86 ++-- src/i18n/en-US.po | 86 ++-- src/i18n/fr.po | 86 ++-- src/i18n/it.po | 86 ++-- src/i18n/strings.ts | 30 ++ src/i18n/sv.po | 86 ++-- src/i18n/taler-wallet-webex.pot | 86 ++-- webpack.config.js | 4 + yarn.lock | 374 +++++++++++++++++- 18 files changed, 984 insertions(+), 279 deletions(-) diff --git a/emscripten/taler-emscripten-lib.js b/emscripten/taler-emscripten-lib.js index 5819e7e43..ce2a19d3a 100644 --- a/emscripten/taler-emscripten-lib.js +++ b/emscripten/taler-emscripten-lib.js @@ -5,7 +5,7 @@ var TalerEmscriptenLib = (function() { function(TalerEmscriptenLib) { TalerEmscriptenLib = TalerEmscriptenLib || {}; -var Module=typeof TalerEmscriptenLib!=="undefined"?TalerEmscriptenLib:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(Module["ENVIRONMENT"]){throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)")}assert(typeof Module["memoryInitializerPrefixURL"]==="undefined","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["pthreadMainPrefixURL"]==="undefined","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["cdInitializerPrefixURL"]==="undefined","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["filePackagePrefixURL"]==="undefined","Module.filePackagePrefixURL option was removed, use Module.locateFile instead");var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}else{return scriptDirectory+path}}if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+"/";var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}Module["arguments"]=process["argv"].slice(2);process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process["on"]("unhandledRejection",(function(reason,p){err("node.js exiting due to unhandled promise rejection");process["exit"](1)}));Module["quit"]=(function(status){process["exit"](status)});Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){return read(f)}}Module["readBinary"]=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WEB){if(document.currentScript){scriptDirectory=document.currentScript.src}}else{scriptDirectory=self.location.href}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};Module["setWindowTitle"]=(function(title){document.title=title})}else{throw new Error("environment detection error")}var out=Module["print"]||(typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null);var err=Module["printErr"]||(typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;stackSave=stackRestore=stackAlloc=setTempRet0=getTempRet0=(function(){abort("cannot use the stack before compiled code is ready to run, and has provided stack access")});function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;assert(STATICTOP>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var asm2wasmImports={"f64-rem":(function(x,y){return x%y}),"debugger":(function(){debugger})};var functionPointers=new Array(0);var GLOBAL_BASE=1024;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}var JSfuncs={"stackSave":(function(){stackSave()}),"stackRestore":(function(){stackRestore()}),"arrayToC":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(ident,returnType,argTypes,args,opts){function convertReturnValue(ret){if(returnType==="string")return Pointer_stringify(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!=="array",'Return type should not be "array".');if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for getValue: "+type)}return null}var ALLOC_NORMAL=0;var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:staticAlloc,stackAlloc,staticAlloc,dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function demangle(func){warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var PAGE_SIZE=16384;var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function writeStackCookie(){assert((STACK_MAX&3)==0);HEAPU32[(STACK_MAX>>2)-1]=34821223;HEAPU32[(STACK_MAX>>2)-2]=2310721022}function checkStackCookie(){if(HEAPU32[(STACK_MAX>>2)-1]!=34821223||HEAPU32[(STACK_MAX>>2)-2]!=2310721022){abort("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x"+HEAPU32[(STACK_MAX>>2)-2].toString(16)+" "+HEAPU32[(STACK_MAX>>2)-1].toString(16))}if(HEAP32[0]!==1668509029)throw"Runtime error: The application has corrupted its heap memory area (address zero)!"}function abortStackOverflow(allocSize){abort("Stack overflow! Attempted to allocate "+allocSize+" bytes on the stack, but stack has only "+(STACK_MAX-stackSave()+allocSize)+" bytes available!")}function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){checkStackCookie();if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){checkStackCookie();callRuntimeCallbacks(__ATMAIN__)}function postRun(){checkStackCookie();if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){assert(array.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)");HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}assert(Math["imul"]&&Math["fround"]&&Math["clz32"]&&Math["trunc"],"this is a legacy browser, build with LEGACY_VM_SUPPORT");var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function getUniqueRunDependency(id){var orig=id;while(1){if(!runDependencyTracking[id])return id;id=orig+Math.random()}return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=="undefined"){runDependencyWatcher=setInterval((function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;err("still waiting on run dependencies:")}err("dependency: "+dep)}if(shown){err("(end of list)")}}),1e4)}}else{err("warning: run dependency added without ID")}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{err("warning: run dependency removed without ID")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}function integrateWasmJS(){var wasmTextFile="taler-emscripten-lib.wast";var wasmBinaryFile="taler-emscripten-lib.wasm";var asmjsCodeFile="taler-emscripten-lib.temp.asm.js";if(!isDataURI(wasmTextFile)){wasmTextFile=locateFile(wasmTextFile)}if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}if(!isDataURI(asmjsCodeFile)){asmjsCodeFile=locateFile(asmjsCodeFile)}var wasmPageSize=64*1024;var info={"global":null,"env":null,"asm2wasm":asm2wasmImports,"parent":Module};var exports=null;function mergeMemory(newBuffer){var oldBuffer=Module["buffer"];if(newBuffer.byteLength>2]=poolPtr;HEAP32[environ>>2]=envPtr}else{envPtr=HEAP32[environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in ENV){if(typeof ENV[key]==="string"){var line=key+"="+ENV[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}function ___lock(){}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;else err("failed to set errno from JS");return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"]}NODEFS.flagsForNodeMap={"1024":flags["O_APPEND"],"64":flags["O_CREAT"],"128":flags["O_EXCL"],"0":flags["O_RDONLY"],"2":flags["O_RDWR"],"4096":flags["O_SYNC"],"512":flags["O_TRUNC"],"1":flags["O_WRONLY"]}}),bufferFrom:(function(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsForNode:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k}}if(!flags){return newFlags}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),write:(function(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:(function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"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},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdirTree:(function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},chunkSize:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:(function(){return this.contents.length})}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall142(which,varargs){SYSCALLS.varargs=varargs;try{var nfds=SYSCALLS.get(),readfds=SYSCALLS.get(),writefds=SYSCALLS.get(),exceptfds=SYSCALLS.get(),timeout=SYSCALLS.get();assert(nfds<=64,"nfds must be less than or equal to 64");assert(!exceptfds,"exceptfds not supported");var total=0;var srcReadLow=readfds?HEAP32[readfds>>2]:0,srcReadHigh=readfds?HEAP32[readfds+4>>2]:0;var srcWriteLow=writefds?HEAP32[writefds>>2]:0,srcWriteHigh=writefds?HEAP32[writefds+4>>2]:0;var srcExceptLow=exceptfds?HEAP32[exceptfds>>2]:0,srcExceptHigh=exceptfds?HEAP32[exceptfds+4>>2]:0;var dstReadLow=0,dstReadHigh=0;var dstWriteLow=0,dstWriteHigh=0;var dstExceptLow=0,dstExceptHigh=0;var allLow=(readfds?HEAP32[readfds>>2]:0)|(writefds?HEAP32[writefds>>2]:0)|(exceptfds?HEAP32[exceptfds>>2]:0);var allHigh=(readfds?HEAP32[readfds+4>>2]:0)|(writefds?HEAP32[writefds+4>>2]:0)|(exceptfds?HEAP32[exceptfds+4>>2]:0);function check(fd,low,high,val){return fd<32?low&val:high&val}for(var fd=0;fd>2]=dstReadLow;HEAP32[readfds+4>>2]=dstReadHigh}if(writefds){HEAP32[writefds>>2]=dstWriteLow;HEAP32[writefds+4>>2]=dstWriteHigh}if(exceptfds){HEAP32[exceptfds>>2]=dstExceptLow;HEAP32[exceptfds+4>>2]=dstExceptHigh}return total}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall192(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get(),prot=SYSCALLS.get(),flags=SYSCALLS.get(),fd=SYSCALLS.get(),off=SYSCALLS.get();off<<=12;var ptr;var allocated=false;if(fd===-1){ptr=_memalign(PAGE_SIZE,len);if(!ptr)return-ERRNO_CODES.ENOMEM;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-ERRNO_CODES.EBADF;var res=FS.mmap(info,HEAPU8,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,flags:flags};return ptr}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall194(which,varargs){SYSCALLS.varargs=varargs;try{var fd=SYSCALLS.get(),zero=SYSCALLS.getZero(),length=SYSCALLS.get64();FS.ftruncate(fd,length);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall195(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall197(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall202(which,varargs){SYSCALLS.varargs=varargs;try{return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall199(){return ___syscall202.apply(null,arguments)}var PROCINFO={ppid:1,pid:42,sid:42,pgid:42};function ___syscall20(which,varargs){SYSCALLS.varargs=varargs;try{return PROCINFO.pid}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall201(){return ___syscall202.apply(null,arguments)}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall3(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.read(stream,HEAP8,buf,count)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall33(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),amode=SYSCALLS.get();return SYSCALLS.doAccess(path,amode)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall4(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.write(stream,HEAP8,buf,count)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21524:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall64(which,varargs){SYSCALLS.varargs=varargs;try{return PROCINFO.ppid}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall77(which,varargs){SYSCALLS.varargs=varargs;try{var who=SYSCALLS.get(),usage=SYSCALLS.get();_memset(usage,0,136);HEAP32[usage>>2]=1;HEAP32[usage+4>>2]=2;HEAP32[usage+8>>2]=3;HEAP32[usage+12>>2]=4;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___unlock(){}function _abort(){Module["abort"]()}function _atexit(func,arg){warnOnce("atexit() called, but NO_EXIT_RUNTIME is set, so atexits() will not be called. set NO_EXIT_RUNTIME to 0 (see the FAQ)");__ATEXIT__.unshift({func:func,arg:arg})}function _clock(){if(_clock.start===undefined)_clock.start=Date.now();return(Date.now()-_clock.start)*(1e6/1e3)|0}function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocateUTF8(ENV[name]);return _getenv.ret}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p,1);stackRestore(ret)}function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDSTACKS){self.LLVM_SAVEDSTACKS=[]}self.LLVM_SAVEDSTACKS.push(stackSave());return self.LLVM_SAVEDSTACKS.length-1}var ___tm_current=STATICTOP;STATICTOP+=48;var ___tm_timezone=allocate(intArrayFromString("GMT"),"i8",ALLOC_STATIC);function _tzset(){if(_tzset.called)return;_tzset.called=true;HEAP32[__get_timezone()>>2]=(new Date).getTimezoneOffset()*60;var winter=new Date(2e3,0,1);var summer=new Date(2e3,6,1);HEAP32[__get_daylight()>>2]=Number(winter.getTimezoneOffset()!=summer.getTimezoneOffset());function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocate(intArrayFromString(winterName),"i8",ALLOC_NORMAL);var summerNamePtr=allocate(intArrayFromString(summerName),"i8",ALLOC_NORMAL);if(summer.getTimezoneOffset()>2]=winterNamePtr;HEAP32[__get_tzname()+4>>2]=summerNamePtr}else{HEAP32[__get_tzname()>>2]=summerNamePtr;HEAP32[__get_tzname()+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=(new Date(2e3,6,1)).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[__get_tzname()+(dst?4:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function _localtime(time){return _localtime_r(time,___tm_current)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}function _pthread_mutex_destroy(){}function _pthread_mutex_init(){}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?Pointer_stringify(tm_zone):""};var pattern=Pointer_stringify(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":(function(date){return WEEKDAYS[date.tm_wday].substring(0,3)}),"%A":(function(date){return WEEKDAYS[date.tm_wday]}),"%b":(function(date){return MONTHS[date.tm_mon].substring(0,3)}),"%B":(function(date){return MONTHS[date.tm_mon]}),"%C":(function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)}),"%d":(function(date){return leadingNulls(date.tm_mday,2)}),"%e":(function(date){return leadingSomething(date.tm_mday,2," ")}),"%g":(function(date){return getWeekBasedYear(date).toString().substring(2)}),"%G":(function(date){return getWeekBasedYear(date)}),"%H":(function(date){return leadingNulls(date.tm_hour,2)}),"%I":(function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)}),"%j":(function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)}),"%m":(function(date){return leadingNulls(date.tm_mon+1,2)}),"%M":(function(date){return leadingNulls(date.tm_min,2)}),"%n":(function(){return"\n"}),"%p":(function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}}),"%S":(function(date){return leadingNulls(date.tm_sec,2)}),"%t":(function(){return"\t"}),"%u":(function(date){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()||7}),"%U":(function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"}),"%V":(function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)}),"%Z":(function(date){return date.tm_zone}),"%%":(function(){return"%"})};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:var maxHeapSize=2*1024*1024*1024-65536;maxHeapSize=HEAPU8.length;return maxHeapSize/PAGE_SIZE;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:return 200809;case 79:return 0;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:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;assert(DYNAMIC_BASE0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function nullFunc_ii(x){err("Invalid function pointer called with signature 'ii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_iii(x){err("Invalid function pointer called with signature 'iii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_iiii(x){err("Invalid function pointer called with signature 'iiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_iiiii(x){err("Invalid function pointer called with signature 'iiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_v(x){err("Invalid function pointer called with signature 'v'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_vi(x){err("Invalid function pointer called with signature 'vi'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_vii(x){err("Invalid function pointer called with signature 'vii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_viii(x){err("Invalid function pointer called with signature 'viii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_viiii(x){err("Invalid function pointer called with signature 'viiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_viiiii(x){err("Invalid function pointer called with signature 'viiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_viiiiii(x){err("Invalid function pointer called with signature 'viiiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}Module["wasmTableSize"]=140;Module["wasmMaxTableSize"]=140;Module.asmGlobalArg={};Module.asmLibraryArg={"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"abortStackOverflow":abortStackOverflow,"nullFunc_ii":nullFunc_ii,"nullFunc_iii":nullFunc_iii,"nullFunc_iiii":nullFunc_iiii,"nullFunc_iiiii":nullFunc_iiiii,"nullFunc_v":nullFunc_v,"nullFunc_vi":nullFunc_vi,"nullFunc_vii":nullFunc_vii,"nullFunc_viii":nullFunc_viii,"nullFunc_viiii":nullFunc_viiii,"nullFunc_viiiii":nullFunc_viiiii,"nullFunc_viiiiii":nullFunc_viiiiii,"___assert_fail":___assert_fail,"___buildEnvironment":___buildEnvironment,"___lock":___lock,"___setErrNo":___setErrNo,"___syscall140":___syscall140,"___syscall142":___syscall142,"___syscall145":___syscall145,"___syscall146":___syscall146,"___syscall192":___syscall192,"___syscall194":___syscall194,"___syscall195":___syscall195,"___syscall197":___syscall197,"___syscall199":___syscall199,"___syscall20":___syscall20,"___syscall201":___syscall201,"___syscall221":___syscall221,"___syscall3":___syscall3,"___syscall33":___syscall33,"___syscall4":___syscall4,"___syscall5":___syscall5,"___syscall54":___syscall54,"___syscall6":___syscall6,"___syscall64":___syscall64,"___syscall77":___syscall77,"___syscall91":___syscall91,"___unlock":___unlock,"_abort":_abort,"_atexit":_atexit,"_clock":_clock,"_emscripten_memcpy_big":_emscripten_memcpy_big,"_getenv":_getenv,"_gettimeofday":_gettimeofday,"_llvm_stackrestore":_llvm_stackrestore,"_llvm_stacksave":_llvm_stacksave,"_localtime":_localtime,"_pthread_mutex_destroy":_pthread_mutex_destroy,"_pthread_mutex_init":_pthread_mutex_init,"_strftime":_strftime,"_sysconf":_sysconf,"_time":_time,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX};var asm=Module["asm"](Module.asmGlobalArg,Module.asmLibraryArg,buffer);var real__GNUNET_CRYPTO_ecc_ecdh=asm["_GNUNET_CRYPTO_ecc_ecdh"];asm["_GNUNET_CRYPTO_ecc_ecdh"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_ecc_ecdh.apply(null,arguments)});var real__GNUNET_CRYPTO_ecdh_eddsa=asm["_GNUNET_CRYPTO_ecdh_eddsa"];asm["_GNUNET_CRYPTO_ecdh_eddsa"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_ecdh_eddsa.apply(null,arguments)});var real__GNUNET_CRYPTO_ecdhe_key_create=asm["_GNUNET_CRYPTO_ecdhe_key_create"];asm["_GNUNET_CRYPTO_ecdhe_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_ecdhe_key_create.apply(null,arguments)});var real__GNUNET_CRYPTO_ecdhe_key_get_public=asm["_GNUNET_CRYPTO_ecdhe_key_get_public"];asm["_GNUNET_CRYPTO_ecdhe_key_get_public"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_ecdhe_key_get_public.apply(null,arguments)});var real__GNUNET_CRYPTO_ecdsa_key_create=asm["_GNUNET_CRYPTO_ecdsa_key_create"];asm["_GNUNET_CRYPTO_ecdsa_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_ecdsa_key_create.apply(null,arguments)});var real__GNUNET_CRYPTO_eddsa_key_create=asm["_GNUNET_CRYPTO_eddsa_key_create"];asm["_GNUNET_CRYPTO_eddsa_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_eddsa_key_create.apply(null,arguments)});var real__GNUNET_CRYPTO_eddsa_key_get_public=asm["_GNUNET_CRYPTO_eddsa_key_get_public"];asm["_GNUNET_CRYPTO_eddsa_key_get_public"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_eddsa_key_get_public.apply(null,arguments)});var real__GNUNET_CRYPTO_eddsa_sign=asm["_GNUNET_CRYPTO_eddsa_sign"];asm["_GNUNET_CRYPTO_eddsa_sign"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_eddsa_sign.apply(null,arguments)});var real__GNUNET_CRYPTO_eddsa_verify=asm["_GNUNET_CRYPTO_eddsa_verify"];asm["_GNUNET_CRYPTO_eddsa_verify"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_eddsa_verify.apply(null,arguments)});var real__GNUNET_CRYPTO_hash=asm["_GNUNET_CRYPTO_hash"];asm["_GNUNET_CRYPTO_hash"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hash.apply(null,arguments)});var real__GNUNET_CRYPTO_hash_context_abort=asm["_GNUNET_CRYPTO_hash_context_abort"];asm["_GNUNET_CRYPTO_hash_context_abort"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hash_context_abort.apply(null,arguments)});var real__GNUNET_CRYPTO_hash_context_finish=asm["_GNUNET_CRYPTO_hash_context_finish"];asm["_GNUNET_CRYPTO_hash_context_finish"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hash_context_finish.apply(null,arguments)});var real__GNUNET_CRYPTO_hash_context_read=asm["_GNUNET_CRYPTO_hash_context_read"];asm["_GNUNET_CRYPTO_hash_context_read"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hash_context_read.apply(null,arguments)});var real__GNUNET_CRYPTO_hash_context_start=asm["_GNUNET_CRYPTO_hash_context_start"];asm["_GNUNET_CRYPTO_hash_context_start"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hash_context_start.apply(null,arguments)});var real__GNUNET_CRYPTO_hash_create_random=asm["_GNUNET_CRYPTO_hash_create_random"];asm["_GNUNET_CRYPTO_hash_create_random"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hash_create_random.apply(null,arguments)});var real__GNUNET_CRYPTO_hkdf=asm["_GNUNET_CRYPTO_hkdf"];asm["_GNUNET_CRYPTO_hkdf"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hkdf.apply(null,arguments)});var real__GNUNET_CRYPTO_kdf=asm["_GNUNET_CRYPTO_kdf"];asm["_GNUNET_CRYPTO_kdf"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_kdf.apply(null,arguments)});var real__GNUNET_CRYPTO_random_block=asm["_GNUNET_CRYPTO_random_block"];asm["_GNUNET_CRYPTO_random_block"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_random_block.apply(null,arguments)});var real__GNUNET_CRYPTO_random_init=asm["_GNUNET_CRYPTO_random_init"];asm["_GNUNET_CRYPTO_random_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_random_init.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_blind=asm["_GNUNET_CRYPTO_rsa_blind"];asm["_GNUNET_CRYPTO_rsa_blind"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_blind.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_private_key_create=asm["_GNUNET_CRYPTO_rsa_private_key_create"];asm["_GNUNET_CRYPTO_rsa_private_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_private_key_create.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_private_key_decode=asm["_GNUNET_CRYPTO_rsa_private_key_decode"];asm["_GNUNET_CRYPTO_rsa_private_key_decode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_private_key_decode.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_private_key_encode=asm["_GNUNET_CRYPTO_rsa_private_key_encode"];asm["_GNUNET_CRYPTO_rsa_private_key_encode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_private_key_encode.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_private_key_free=asm["_GNUNET_CRYPTO_rsa_private_key_free"];asm["_GNUNET_CRYPTO_rsa_private_key_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_private_key_free.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_private_key_get_public=asm["_GNUNET_CRYPTO_rsa_private_key_get_public"];asm["_GNUNET_CRYPTO_rsa_private_key_get_public"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_private_key_get_public.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_public_key_decode=asm["_GNUNET_CRYPTO_rsa_public_key_decode"];asm["_GNUNET_CRYPTO_rsa_public_key_decode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_public_key_decode.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_public_key_encode=asm["_GNUNET_CRYPTO_rsa_public_key_encode"];asm["_GNUNET_CRYPTO_rsa_public_key_encode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_public_key_encode.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_public_key_free=asm["_GNUNET_CRYPTO_rsa_public_key_free"];asm["_GNUNET_CRYPTO_rsa_public_key_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_public_key_free.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_signature_decode=asm["_GNUNET_CRYPTO_rsa_signature_decode"];asm["_GNUNET_CRYPTO_rsa_signature_decode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_signature_decode.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_signature_encode=asm["_GNUNET_CRYPTO_rsa_signature_encode"];asm["_GNUNET_CRYPTO_rsa_signature_encode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_signature_encode.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_signature_free=asm["_GNUNET_CRYPTO_rsa_signature_free"];asm["_GNUNET_CRYPTO_rsa_signature_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_signature_free.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_unblind=asm["_GNUNET_CRYPTO_rsa_unblind"];asm["_GNUNET_CRYPTO_rsa_unblind"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_unblind.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_verify=asm["_GNUNET_CRYPTO_rsa_verify"];asm["_GNUNET_CRYPTO_rsa_verify"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_verify.apply(null,arguments)});var real__GNUNET_CRYPTO_symmetric_decrypt=asm["_GNUNET_CRYPTO_symmetric_decrypt"];asm["_GNUNET_CRYPTO_symmetric_decrypt"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_symmetric_decrypt.apply(null,arguments)});var real__GNUNET_CRYPTO_symmetric_encrypt=asm["_GNUNET_CRYPTO_symmetric_encrypt"];asm["_GNUNET_CRYPTO_symmetric_encrypt"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_symmetric_encrypt.apply(null,arguments)});var real__GNUNET_STRINGS_data_to_string_alloc=asm["_GNUNET_STRINGS_data_to_string_alloc"];asm["_GNUNET_STRINGS_data_to_string_alloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_STRINGS_data_to_string_alloc.apply(null,arguments)});var real__GNUNET_STRINGS_string_to_data=asm["_GNUNET_STRINGS_string_to_data"];asm["_GNUNET_STRINGS_string_to_data"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_STRINGS_string_to_data.apply(null,arguments)});var real__GNUNET_util_cl_init=asm["_GNUNET_util_cl_init"];asm["_GNUNET_util_cl_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_util_cl_init.apply(null,arguments)});var real__TALER_WRALL_ecdhe_public_key_from_private=asm["_TALER_WRALL_ecdhe_public_key_from_private"];asm["_TALER_WRALL_ecdhe_public_key_from_private"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WRALL_ecdhe_public_key_from_private.apply(null,arguments)});var real__TALER_WRALL_ecdsa_public_key_from_private=asm["_TALER_WRALL_ecdsa_public_key_from_private"];asm["_TALER_WRALL_ecdsa_public_key_from_private"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WRALL_ecdsa_public_key_from_private.apply(null,arguments)});var real__TALER_WRALL_eddsa_public_key_from_private=asm["_TALER_WRALL_eddsa_public_key_from_private"];asm["_TALER_WRALL_eddsa_public_key_from_private"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WRALL_eddsa_public_key_from_private.apply(null,arguments)});var real__TALER_WRALL_get_amount=asm["_TALER_WRALL_get_amount"];asm["_TALER_WRALL_get_amount"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WRALL_get_amount.apply(null,arguments)});var real__TALER_WRALL_purpose_create=asm["_TALER_WRALL_purpose_create"];asm["_TALER_WRALL_purpose_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WRALL_purpose_create.apply(null,arguments)});var real__TALER_WR_get_currency=asm["_TALER_WR_get_currency"];asm["_TALER_WR_get_currency"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WR_get_currency.apply(null,arguments)});var real__TALER_WR_get_fraction=asm["_TALER_WR_get_fraction"];asm["_TALER_WR_get_fraction"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WR_get_fraction.apply(null,arguments)});var real__TALER_WR_get_value=asm["_TALER_WR_get_value"];asm["_TALER_WR_get_value"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WR_get_value.apply(null,arguments)});var real__TALER_amount_add=asm["_TALER_amount_add"];asm["_TALER_amount_add"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_add.apply(null,arguments)});var real__TALER_amount_cmp=asm["_TALER_amount_cmp"];asm["_TALER_amount_cmp"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_cmp.apply(null,arguments)});var real__TALER_amount_get_zero=asm["_TALER_amount_get_zero"];asm["_TALER_amount_get_zero"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_get_zero.apply(null,arguments)});var real__TALER_amount_hton=asm["_TALER_amount_hton"];asm["_TALER_amount_hton"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_hton.apply(null,arguments)});var real__TALER_amount_normalize=asm["_TALER_amount_normalize"];asm["_TALER_amount_normalize"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_normalize.apply(null,arguments)});var real__TALER_amount_ntoh=asm["_TALER_amount_ntoh"];asm["_TALER_amount_ntoh"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_ntoh.apply(null,arguments)});var real__TALER_amount_subtract=asm["_TALER_amount_subtract"];asm["_TALER_amount_subtract"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_subtract.apply(null,arguments)});var real__TALER_gcrypt_init=asm["_TALER_gcrypt_init"];asm["_TALER_gcrypt_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_gcrypt_init.apply(null,arguments)});var real__TALER_setup_fresh_coin=asm["_TALER_setup_fresh_coin"];asm["_TALER_setup_fresh_coin"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_setup_fresh_coin.apply(null,arguments)});var real____emscripten_environ_constructor=asm["___emscripten_environ_constructor"];asm["___emscripten_environ_constructor"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real____emscripten_environ_constructor.apply(null,arguments)});var real____errno_location=asm["___errno_location"];asm["___errno_location"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real____errno_location.apply(null,arguments)});var real___get_daylight=asm["__get_daylight"];asm["__get_daylight"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real___get_daylight.apply(null,arguments)});var real___get_environ=asm["__get_environ"];asm["__get_environ"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real___get_environ.apply(null,arguments)});var real___get_timezone=asm["__get_timezone"];asm["__get_timezone"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real___get_timezone.apply(null,arguments)});var real___get_tzname=asm["__get_tzname"];asm["__get_tzname"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real___get_tzname.apply(null,arguments)});var real__fflush=asm["_fflush"];asm["_fflush"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__fflush.apply(null,arguments)});var real__free=asm["_free"];asm["_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__free.apply(null,arguments)});var real__gpg_err_init=asm["_gpg_err_init"];asm["_gpg_err_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__gpg_err_init.apply(null,arguments)});var real__llvm_bswap_i32=asm["_llvm_bswap_i32"];asm["_llvm_bswap_i32"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__llvm_bswap_i32.apply(null,arguments)});var real__malloc=asm["_malloc"];asm["_malloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__malloc.apply(null,arguments)});var real__memalign=asm["_memalign"];asm["_memalign"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__memalign.apply(null,arguments)});var real__memmove=asm["_memmove"];asm["_memmove"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__memmove.apply(null,arguments)});var real__pthread_mutex_lock=asm["_pthread_mutex_lock"];asm["_pthread_mutex_lock"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__pthread_mutex_lock.apply(null,arguments)});var real__pthread_mutex_unlock=asm["_pthread_mutex_unlock"];asm["_pthread_mutex_unlock"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__pthread_mutex_unlock.apply(null,arguments)});var real__sbrk=asm["_sbrk"];asm["_sbrk"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__sbrk.apply(null,arguments)});var real_establishStackSpace=asm["establishStackSpace"];asm["establishStackSpace"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_establishStackSpace.apply(null,arguments)});var real_getTempRet0=asm["getTempRet0"];asm["getTempRet0"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_getTempRet0.apply(null,arguments)});var real_setTempRet0=asm["setTempRet0"];asm["setTempRet0"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_setTempRet0.apply(null,arguments)});var real_setThrew=asm["setThrew"];asm["setThrew"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_setThrew.apply(null,arguments)});var real_stackAlloc=asm["stackAlloc"];asm["stackAlloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_stackAlloc.apply(null,arguments)});var real_stackRestore=asm["stackRestore"];asm["stackRestore"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_stackRestore.apply(null,arguments)});var real_stackSave=asm["stackSave"];asm["stackSave"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_stackSave.apply(null,arguments)});Module["asm"]=asm;var _GNUNET_CRYPTO_ecc_ecdh=Module["_GNUNET_CRYPTO_ecc_ecdh"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_ecc_ecdh"].apply(null,arguments)});var _GNUNET_CRYPTO_ecdh_eddsa=Module["_GNUNET_CRYPTO_ecdh_eddsa"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_ecdh_eddsa"].apply(null,arguments)});var _GNUNET_CRYPTO_ecdhe_key_create=Module["_GNUNET_CRYPTO_ecdhe_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_ecdhe_key_create"].apply(null,arguments)});var _GNUNET_CRYPTO_ecdhe_key_get_public=Module["_GNUNET_CRYPTO_ecdhe_key_get_public"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_ecdhe_key_get_public"].apply(null,arguments)});var _GNUNET_CRYPTO_ecdsa_key_create=Module["_GNUNET_CRYPTO_ecdsa_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_ecdsa_key_create"].apply(null,arguments)});var _GNUNET_CRYPTO_eddsa_key_create=Module["_GNUNET_CRYPTO_eddsa_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_eddsa_key_create"].apply(null,arguments)});var _GNUNET_CRYPTO_eddsa_key_get_public=Module["_GNUNET_CRYPTO_eddsa_key_get_public"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_eddsa_key_get_public"].apply(null,arguments)});var _GNUNET_CRYPTO_eddsa_sign=Module["_GNUNET_CRYPTO_eddsa_sign"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_eddsa_sign"].apply(null,arguments)});var _GNUNET_CRYPTO_eddsa_verify=Module["_GNUNET_CRYPTO_eddsa_verify"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_eddsa_verify"].apply(null,arguments)});var _GNUNET_CRYPTO_hash=Module["_GNUNET_CRYPTO_hash"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hash"].apply(null,arguments)});var _GNUNET_CRYPTO_hash_context_abort=Module["_GNUNET_CRYPTO_hash_context_abort"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hash_context_abort"].apply(null,arguments)});var _GNUNET_CRYPTO_hash_context_finish=Module["_GNUNET_CRYPTO_hash_context_finish"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hash_context_finish"].apply(null,arguments)});var _GNUNET_CRYPTO_hash_context_read=Module["_GNUNET_CRYPTO_hash_context_read"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hash_context_read"].apply(null,arguments)});var _GNUNET_CRYPTO_hash_context_start=Module["_GNUNET_CRYPTO_hash_context_start"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hash_context_start"].apply(null,arguments)});var _GNUNET_CRYPTO_hash_create_random=Module["_GNUNET_CRYPTO_hash_create_random"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hash_create_random"].apply(null,arguments)});var _GNUNET_CRYPTO_hkdf=Module["_GNUNET_CRYPTO_hkdf"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hkdf"].apply(null,arguments)});var _GNUNET_CRYPTO_kdf=Module["_GNUNET_CRYPTO_kdf"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_kdf"].apply(null,arguments)});var _GNUNET_CRYPTO_random_block=Module["_GNUNET_CRYPTO_random_block"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_random_block"].apply(null,arguments)});var _GNUNET_CRYPTO_random_init=Module["_GNUNET_CRYPTO_random_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_random_init"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_blind=Module["_GNUNET_CRYPTO_rsa_blind"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_blind"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_private_key_create=Module["_GNUNET_CRYPTO_rsa_private_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_private_key_create"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_private_key_decode=Module["_GNUNET_CRYPTO_rsa_private_key_decode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_private_key_decode"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_private_key_encode=Module["_GNUNET_CRYPTO_rsa_private_key_encode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_private_key_encode"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_private_key_free=Module["_GNUNET_CRYPTO_rsa_private_key_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_private_key_free"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_private_key_get_public=Module["_GNUNET_CRYPTO_rsa_private_key_get_public"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_private_key_get_public"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_public_key_decode=Module["_GNUNET_CRYPTO_rsa_public_key_decode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_public_key_decode"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_public_key_encode=Module["_GNUNET_CRYPTO_rsa_public_key_encode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_public_key_encode"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_public_key_free=Module["_GNUNET_CRYPTO_rsa_public_key_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_public_key_free"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_signature_decode=Module["_GNUNET_CRYPTO_rsa_signature_decode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_signature_decode"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_signature_encode=Module["_GNUNET_CRYPTO_rsa_signature_encode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_signature_encode"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_signature_free=Module["_GNUNET_CRYPTO_rsa_signature_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_signature_free"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_unblind=Module["_GNUNET_CRYPTO_rsa_unblind"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_unblind"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_verify=Module["_GNUNET_CRYPTO_rsa_verify"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_verify"].apply(null,arguments)});var _GNUNET_CRYPTO_symmetric_decrypt=Module["_GNUNET_CRYPTO_symmetric_decrypt"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_symmetric_decrypt"].apply(null,arguments)});var _GNUNET_CRYPTO_symmetric_encrypt=Module["_GNUNET_CRYPTO_symmetric_encrypt"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_symmetric_encrypt"].apply(null,arguments)});var _GNUNET_STRINGS_data_to_string_alloc=Module["_GNUNET_STRINGS_data_to_string_alloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_STRINGS_data_to_string_alloc"].apply(null,arguments)});var _GNUNET_STRINGS_string_to_data=Module["_GNUNET_STRINGS_string_to_data"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_STRINGS_string_to_data"].apply(null,arguments)});var _GNUNET_util_cl_init=Module["_GNUNET_util_cl_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_util_cl_init"].apply(null,arguments)});var _TALER_WRALL_ecdhe_public_key_from_private=Module["_TALER_WRALL_ecdhe_public_key_from_private"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WRALL_ecdhe_public_key_from_private"].apply(null,arguments)});var _TALER_WRALL_ecdsa_public_key_from_private=Module["_TALER_WRALL_ecdsa_public_key_from_private"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WRALL_ecdsa_public_key_from_private"].apply(null,arguments)});var _TALER_WRALL_eddsa_public_key_from_private=Module["_TALER_WRALL_eddsa_public_key_from_private"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WRALL_eddsa_public_key_from_private"].apply(null,arguments)});var _TALER_WRALL_get_amount=Module["_TALER_WRALL_get_amount"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WRALL_get_amount"].apply(null,arguments)});var _TALER_WRALL_purpose_create=Module["_TALER_WRALL_purpose_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WRALL_purpose_create"].apply(null,arguments)});var _TALER_WR_get_currency=Module["_TALER_WR_get_currency"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WR_get_currency"].apply(null,arguments)});var _TALER_WR_get_fraction=Module["_TALER_WR_get_fraction"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WR_get_fraction"].apply(null,arguments)});var _TALER_WR_get_value=Module["_TALER_WR_get_value"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WR_get_value"].apply(null,arguments)});var _TALER_amount_add=Module["_TALER_amount_add"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_add"].apply(null,arguments)});var _TALER_amount_cmp=Module["_TALER_amount_cmp"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_cmp"].apply(null,arguments)});var _TALER_amount_get_zero=Module["_TALER_amount_get_zero"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_get_zero"].apply(null,arguments)});var _TALER_amount_hton=Module["_TALER_amount_hton"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_hton"].apply(null,arguments)});var _TALER_amount_normalize=Module["_TALER_amount_normalize"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_normalize"].apply(null,arguments)});var _TALER_amount_ntoh=Module["_TALER_amount_ntoh"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_ntoh"].apply(null,arguments)});var _TALER_amount_subtract=Module["_TALER_amount_subtract"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_subtract"].apply(null,arguments)});var _TALER_gcrypt_init=Module["_TALER_gcrypt_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_gcrypt_init"].apply(null,arguments)});var _TALER_setup_fresh_coin=Module["_TALER_setup_fresh_coin"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_setup_fresh_coin"].apply(null,arguments)});var ___emscripten_environ_constructor=Module["___emscripten_environ_constructor"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["___emscripten_environ_constructor"].apply(null,arguments)});var ___errno_location=Module["___errno_location"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["___errno_location"].apply(null,arguments)});var __get_daylight=Module["__get_daylight"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["__get_daylight"].apply(null,arguments)});var __get_environ=Module["__get_environ"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["__get_environ"].apply(null,arguments)});var __get_timezone=Module["__get_timezone"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["__get_timezone"].apply(null,arguments)});var __get_tzname=Module["__get_tzname"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["__get_tzname"].apply(null,arguments)});var _fflush=Module["_fflush"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_fflush"].apply(null,arguments)});var _free=Module["_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_free"].apply(null,arguments)});var _gpg_err_init=Module["_gpg_err_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_gpg_err_init"].apply(null,arguments)});var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_llvm_bswap_i32"].apply(null,arguments)});var _malloc=Module["_malloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_malloc"].apply(null,arguments)});var _memalign=Module["_memalign"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_memalign"].apply(null,arguments)});var _memmove=Module["_memmove"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_memmove"].apply(null,arguments)});var _memset=Module["_memset"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_memset"].apply(null,arguments)});var _pthread_mutex_lock=Module["_pthread_mutex_lock"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_pthread_mutex_lock"].apply(null,arguments)});var _pthread_mutex_unlock=Module["_pthread_mutex_unlock"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_pthread_mutex_unlock"].apply(null,arguments)});var _sbrk=Module["_sbrk"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_sbrk"].apply(null,arguments)});var establishStackSpace=Module["establishStackSpace"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["establishStackSpace"].apply(null,arguments)});var getTempRet0=Module["getTempRet0"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["getTempRet0"].apply(null,arguments)});var setTempRet0=Module["setTempRet0"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["setTempRet0"].apply(null,arguments)});var setThrew=Module["setThrew"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["setThrew"].apply(null,arguments)});var stackAlloc=Module["stackAlloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["stackAlloc"].apply(null,arguments)});var stackRestore=Module["stackRestore"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["stackRestore"].apply(null,arguments)});var stackSave=Module["stackSave"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["stackSave"].apply(null,arguments)});var dynCall_v=Module["dynCall_v"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["dynCall_v"].apply(null,arguments)});var dynCall_vi=Module["dynCall_vi"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["dynCall_vi"].apply(null,arguments)});Module["asm"]=asm;if(!Module["intArrayFromString"])Module["intArrayFromString"]=(function(){abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["intArrayToString"])Module["intArrayToString"]=(function(){abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["setValue"]=setValue;Module["getValue"]=getValue;if(!Module["allocate"])Module["allocate"]=(function(){abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["getMemory"])Module["getMemory"]=(function(){abort("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});Module["Pointer_stringify"]=Pointer_stringify;if(!Module["AsciiToString"])Module["AsciiToString"]=(function(){abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stringToAscii"])Module["stringToAscii"]=(function(){abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["UTF8ArrayToString"])Module["UTF8ArrayToString"]=(function(){abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["UTF8ToString"])Module["UTF8ToString"]=(function(){abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stringToUTF8Array"])Module["stringToUTF8Array"]=(function(){abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});Module["stringToUTF8"]=stringToUTF8;if(!Module["lengthBytesUTF8"])Module["lengthBytesUTF8"]=(function(){abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["UTF16ToString"])Module["UTF16ToString"]=(function(){abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stringToUTF16"])Module["stringToUTF16"]=(function(){abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["lengthBytesUTF16"])Module["lengthBytesUTF16"]=(function(){abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["UTF32ToString"])Module["UTF32ToString"]=(function(){abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stringToUTF32"])Module["stringToUTF32"]=(function(){abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["lengthBytesUTF32"])Module["lengthBytesUTF32"]=(function(){abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["allocateUTF8"])Module["allocateUTF8"]=(function(){abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stackTrace"])Module["stackTrace"]=(function(){abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addOnPreRun"])Module["addOnPreRun"]=(function(){abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addOnInit"])Module["addOnInit"]=(function(){abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addOnPreMain"])Module["addOnPreMain"]=(function(){abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addOnExit"])Module["addOnExit"]=(function(){abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addOnPostRun"])Module["addOnPostRun"]=(function(){abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["writeStringToMemory"])Module["writeStringToMemory"]=(function(){abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["writeArrayToMemory"])Module["writeArrayToMemory"]=(function(){abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["writeAsciiToMemory"])Module["writeAsciiToMemory"]=(function(){abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addRunDependency"])Module["addRunDependency"]=(function(){abort("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["removeRunDependency"])Module["removeRunDependency"]=(function(){abort("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["ENV"])Module["ENV"]=(function(){abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["FS"])Module["FS"]=(function(){abort("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["FS_createFolder"])Module["FS_createFolder"]=(function(){abort("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_createPath"])Module["FS_createPath"]=(function(){abort("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_createDataFile"])Module["FS_createDataFile"]=(function(){abort("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_createPreloadedFile"])Module["FS_createPreloadedFile"]=(function(){abort("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_createLazyFile"])Module["FS_createLazyFile"]=(function(){abort("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_createLink"])Module["FS_createLink"]=(function(){abort("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_createDevice"])Module["FS_createDevice"]=(function(){abort("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_unlink"])Module["FS_unlink"]=(function(){abort("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["GL"])Module["GL"]=(function(){abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["staticAlloc"])Module["staticAlloc"]=(function(){abort("'staticAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["dynamicAlloc"])Module["dynamicAlloc"]=(function(){abort("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["warnOnce"])Module["warnOnce"]=(function(){abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["loadDynamicLibrary"])Module["loadDynamicLibrary"]=(function(){abort("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["loadWebAssemblyModule"])Module["loadWebAssemblyModule"]=(function(){abort("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["getLEB"])Module["getLEB"]=(function(){abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["getFunctionTables"])Module["getFunctionTables"]=(function(){abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["alignFunctionTables"])Module["alignFunctionTables"]=(function(){abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["registerFunctions"])Module["registerFunctions"]=(function(){abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addFunction"])Module["addFunction"]=(function(){abort("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["removeFunction"])Module["removeFunction"]=(function(){abort("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["getFuncWrapper"])Module["getFuncWrapper"]=(function(){abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["prettyPrint"])Module["prettyPrint"]=(function(){abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["makeBigInt"])Module["makeBigInt"]=(function(){abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["dynCall"])Module["dynCall"]=(function(){abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["getCompilerSetting"])Module["getCompilerSetting"]=(function(){abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stackSave"])Module["stackSave"]=(function(){abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stackRestore"])Module["stackRestore"]=(function(){abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stackAlloc"])Module["stackAlloc"]=(function(){abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["establishStackSpace"])Module["establishStackSpace"]=(function(){abort("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["print"])Module["print"]=(function(){abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["printErr"])Module["printErr"]=(function(){abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["ALLOC_NORMAL"])Object.defineProperty(Module,"ALLOC_NORMAL",{get:(function(){abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")})});if(!Module["ALLOC_STACK"])Object.defineProperty(Module,"ALLOC_STACK",{get:(function(){abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")})});if(!Module["ALLOC_STATIC"])Object.defineProperty(Module,"ALLOC_STATIC",{get:(function(){abort("'ALLOC_STATIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")})});if(!Module["ALLOC_DYNAMIC"])Object.defineProperty(Module,"ALLOC_DYNAMIC",{get:(function(){abort("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")})});if(!Module["ALLOC_NONE"])Object.defineProperty(Module,"ALLOC_NONE",{get:(function(){abort("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")})});Module["then"]=(function(func){if(Module["calledRun"]){func(Module)}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=(function(){if(old)old();func(Module)})}return Module});function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};function run(args){args=args||Module["arguments"];if(runDependencies>0){return}writeStackCookie();preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();assert(!Module["_main"],'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]');postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}checkStackCookie()}Module["run"]=run;var abortDecorators=[];function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){out(what);err(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}Module["noExitRuntime"]=true;run() +var Module=typeof TalerEmscriptenLib!=="undefined"?TalerEmscriptenLib:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(Module["ENVIRONMENT"]){throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)")}assert(typeof Module["memoryInitializerPrefixURL"]==="undefined","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["pthreadMainPrefixURL"]==="undefined","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["cdInitializerPrefixURL"]==="undefined","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["filePackagePrefixURL"]==="undefined","Module.filePackagePrefixURL option was removed, use Module.locateFile instead");var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}else{return scriptDirectory+path}}if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+"/";var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}Module["arguments"]=process["argv"].slice(2);process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process["on"]("unhandledRejection",(function(reason,p){err("node.js exiting due to unhandled promise rejection");process["exit"](1)}));Module["quit"]=(function(status){process["exit"](status)});Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){return read(f)}}Module["readBinary"]=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WEB){if(document.currentScript){scriptDirectory=document.currentScript.src}}else{scriptDirectory=self.location.href}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};Module["setWindowTitle"]=(function(title){document.title=title})}else{throw new Error("environment detection error")}var out=Module["print"]||(typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null);var err=Module["printErr"]||(typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;stackSave=stackRestore=stackAlloc=setTempRet0=getTempRet0=(function(){abort("cannot use the stack before compiled code is ready to run, and has provided stack access")});function staticAlloc(size){assert(!staticSealed);var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;assert(STATICTOP>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var asm2wasmImports={"f64-rem":(function(x,y){return x%y}),"debugger":(function(){debugger})};var functionPointers=new Array(0);var GLOBAL_BASE=1024;var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}var JSfuncs={"stackSave":(function(){stackSave()}),"stackRestore":(function(){stackRestore()}),"arrayToC":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(ident,returnType,argTypes,args,opts){function convertReturnValue(ret){if(returnType==="string")return Pointer_stringify(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;assert(returnType!=="array",'Return type should not be "array".');if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for getValue: "+type)}return null}var ALLOC_NORMAL=0;var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:staticAlloc,stackAlloc,staticAlloc,dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){assert(typeof maxBytesToWrite=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function demangle(func){warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var PAGE_SIZE=16384;var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function writeStackCookie(){assert((STACK_MAX&3)==0);HEAPU32[(STACK_MAX>>2)-1]=34821223;HEAPU32[(STACK_MAX>>2)-2]=2310721022}function checkStackCookie(){if(HEAPU32[(STACK_MAX>>2)-1]!=34821223||HEAPU32[(STACK_MAX>>2)-2]!=2310721022){abort("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x"+HEAPU32[(STACK_MAX>>2)-2].toString(16)+" "+HEAPU32[(STACK_MAX>>2)-1].toString(16))}if(HEAP32[0]!==1668509029)throw"Runtime error: The application has corrupted its heap memory area (address zero)!"}function abortStackOverflow(allocSize){abort("Stack overflow! Attempted to allocate "+allocSize+" bytes on the stack, but stack has only "+(STACK_MAX-stackSave()+allocSize)+" bytes available!")}function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){checkStackCookie();if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){checkStackCookie();callRuntimeCallbacks(__ATMAIN__)}function postRun(){checkStackCookie();if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){assert(array.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)");HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}assert(Math["imul"]&&Math["fround"]&&Math["clz32"]&&Math["trunc"],"this is a legacy browser, build with LEGACY_VM_SUPPORT");var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;var runDependencyTracking={};function getUniqueRunDependency(id){var orig=id;while(1){if(!runDependencyTracking[id])return id;id=orig+Math.random()}return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&typeof setInterval!=="undefined"){runDependencyWatcher=setInterval((function(){if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;err("still waiting on run dependencies:")}err("dependency: "+dep)}if(shown){err("(end of list)")}}),1e4)}}else{err("warning: run dependency added without ID")}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(id){assert(runDependencyTracking[id]);delete runDependencyTracking[id]}else{err("warning: run dependency removed without ID")}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}function integrateWasmJS(){var wasmTextFile="taler-emscripten-lib.wast";var wasmBinaryFile="taler-emscripten-lib.wasm";var asmjsCodeFile="taler-emscripten-lib.temp.asm.js";if(!isDataURI(wasmTextFile)){wasmTextFile=locateFile(wasmTextFile)}if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}if(!isDataURI(asmjsCodeFile)){asmjsCodeFile=locateFile(asmjsCodeFile)}var wasmPageSize=64*1024;var info={"global":null,"env":null,"asm2wasm":asm2wasmImports,"parent":Module};var exports=null;function mergeMemory(newBuffer){var oldBuffer=Module["buffer"];if(newBuffer.byteLength>2]=poolPtr;HEAP32[environ>>2]=envPtr}else{envPtr=HEAP32[environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in ENV){if(typeof ENV[key]==="string"){var line=key+"="+ENV[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}function ___lock(){}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;else err("failed to set errno from JS");return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"]}NODEFS.flagsForNodeMap={"1024":flags["O_APPEND"],"64":flags["O_CREAT"],"128":flags["O_EXCL"],"0":flags["O_RDONLY"],"2":flags["O_RDWR"],"4096":flags["O_SYNC"],"512":flags["O_TRUNC"],"1":flags["O_WRONLY"]}}),bufferFrom:(function(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsForNode:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k}}if(!flags){return newFlags}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),write:(function(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:(function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"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},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdirTree:(function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},chunkSize:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:(function(){return this.contents.length})}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall142(which,varargs){SYSCALLS.varargs=varargs;try{var nfds=SYSCALLS.get(),readfds=SYSCALLS.get(),writefds=SYSCALLS.get(),exceptfds=SYSCALLS.get(),timeout=SYSCALLS.get();assert(nfds<=64,"nfds must be less than or equal to 64");assert(!exceptfds,"exceptfds not supported");var total=0;var srcReadLow=readfds?HEAP32[readfds>>2]:0,srcReadHigh=readfds?HEAP32[readfds+4>>2]:0;var srcWriteLow=writefds?HEAP32[writefds>>2]:0,srcWriteHigh=writefds?HEAP32[writefds+4>>2]:0;var srcExceptLow=exceptfds?HEAP32[exceptfds>>2]:0,srcExceptHigh=exceptfds?HEAP32[exceptfds+4>>2]:0;var dstReadLow=0,dstReadHigh=0;var dstWriteLow=0,dstWriteHigh=0;var dstExceptLow=0,dstExceptHigh=0;var allLow=(readfds?HEAP32[readfds>>2]:0)|(writefds?HEAP32[writefds>>2]:0)|(exceptfds?HEAP32[exceptfds>>2]:0);var allHigh=(readfds?HEAP32[readfds+4>>2]:0)|(writefds?HEAP32[writefds+4>>2]:0)|(exceptfds?HEAP32[exceptfds+4>>2]:0);function check(fd,low,high,val){return fd<32?low&val:high&val}for(var fd=0;fd>2]=dstReadLow;HEAP32[readfds+4>>2]=dstReadHigh}if(writefds){HEAP32[writefds>>2]=dstWriteLow;HEAP32[writefds+4>>2]=dstWriteHigh}if(exceptfds){HEAP32[exceptfds>>2]=dstExceptLow;HEAP32[exceptfds+4>>2]=dstExceptHigh}return total}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall192(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get(),prot=SYSCALLS.get(),flags=SYSCALLS.get(),fd=SYSCALLS.get(),off=SYSCALLS.get();off<<=12;var ptr;var allocated=false;if(fd===-1){ptr=_memalign(PAGE_SIZE,len);if(!ptr)return-ERRNO_CODES.ENOMEM;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-ERRNO_CODES.EBADF;var res=FS.mmap(info,HEAPU8,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,flags:flags};return ptr}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall194(which,varargs){SYSCALLS.varargs=varargs;try{var fd=SYSCALLS.get(),zero=SYSCALLS.getZero(),length=SYSCALLS.get64();FS.ftruncate(fd,length);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall195(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall197(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall202(which,varargs){SYSCALLS.varargs=varargs;try{return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall199(){return ___syscall202.apply(null,arguments)}var PROCINFO={ppid:1,pid:42,sid:42,pgid:42};function ___syscall20(which,varargs){SYSCALLS.varargs=varargs;try{return PROCINFO.pid}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall201(){return ___syscall202.apply(null,arguments)}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall3(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.read(stream,HEAP8,buf,count)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall33(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),amode=SYSCALLS.get();return SYSCALLS.doAccess(path,amode)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall4(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.write(stream,HEAP8,buf,count)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21524:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall64(which,varargs){SYSCALLS.varargs=varargs;try{return PROCINFO.ppid}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall77(which,varargs){SYSCALLS.varargs=varargs;try{var who=SYSCALLS.get(),usage=SYSCALLS.get();_memset(usage,0,136);HEAP32[usage>>2]=1;HEAP32[usage+4>>2]=2;HEAP32[usage+8>>2]=3;HEAP32[usage+12>>2]=4;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___unlock(){}function _abort(){Module["abort"]()}function _atexit(func,arg){warnOnce("atexit() called, but NO_EXIT_RUNTIME is set, so atexits() will not be called. set NO_EXIT_RUNTIME to 0 (see the FAQ)");__ATEXIT__.unshift({func:func,arg:arg})}function _clock(){if(_clock.start===undefined)_clock.start=Date.now();return(Date.now()-_clock.start)*(1e6/1e3)|0}function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocateUTF8(ENV[name]);return _getenv.ret}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p,1);stackRestore(ret)}function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDSTACKS){self.LLVM_SAVEDSTACKS=[]}self.LLVM_SAVEDSTACKS.push(stackSave());return self.LLVM_SAVEDSTACKS.length-1}var ___tm_current=STATICTOP;STATICTOP+=48;var ___tm_timezone=allocate(intArrayFromString("GMT"),"i8",ALLOC_STATIC);function _tzset(){if(_tzset.called)return;_tzset.called=true;HEAP32[__get_timezone()>>2]=(new Date).getTimezoneOffset()*60;var winter=new Date(2e3,0,1);var summer=new Date(2e3,6,1);HEAP32[__get_daylight()>>2]=Number(winter.getTimezoneOffset()!=summer.getTimezoneOffset());function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocate(intArrayFromString(winterName),"i8",ALLOC_NORMAL);var summerNamePtr=allocate(intArrayFromString(summerName),"i8",ALLOC_NORMAL);if(summer.getTimezoneOffset()>2]=winterNamePtr;HEAP32[__get_tzname()+4>>2]=summerNamePtr}else{HEAP32[__get_tzname()>>2]=summerNamePtr;HEAP32[__get_tzname()+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=(new Date(2e3,6,1)).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[__get_tzname()+(dst?4:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function _localtime(time){return _localtime_r(time,___tm_current)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}function _pthread_mutex_destroy(){}function _pthread_mutex_init(){}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?Pointer_stringify(tm_zone):""};var pattern=Pointer_stringify(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":(function(date){return WEEKDAYS[date.tm_wday].substring(0,3)}),"%A":(function(date){return WEEKDAYS[date.tm_wday]}),"%b":(function(date){return MONTHS[date.tm_mon].substring(0,3)}),"%B":(function(date){return MONTHS[date.tm_mon]}),"%C":(function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)}),"%d":(function(date){return leadingNulls(date.tm_mday,2)}),"%e":(function(date){return leadingSomething(date.tm_mday,2," ")}),"%g":(function(date){return getWeekBasedYear(date).toString().substring(2)}),"%G":(function(date){return getWeekBasedYear(date)}),"%H":(function(date){return leadingNulls(date.tm_hour,2)}),"%I":(function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)}),"%j":(function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)}),"%m":(function(date){return leadingNulls(date.tm_mon+1,2)}),"%M":(function(date){return leadingNulls(date.tm_min,2)}),"%n":(function(){return"\n"}),"%p":(function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}}),"%S":(function(date){return leadingNulls(date.tm_sec,2)}),"%t":(function(){return"\t"}),"%u":(function(date){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()||7}),"%U":(function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"}),"%V":(function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)}),"%Z":(function(date){return date.tm_zone}),"%%":(function(){return"%"})};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:var maxHeapSize=2*1024*1024*1024-65536;maxHeapSize=HEAPU8.length;return maxHeapSize/PAGE_SIZE;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:return 200809;case 79:return 0;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:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;assert(DYNAMIC_BASE0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function nullFunc_ii(x){err("Invalid function pointer called with signature 'ii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_iii(x){err("Invalid function pointer called with signature 'iii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_iiii(x){err("Invalid function pointer called with signature 'iiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_iiiii(x){err("Invalid function pointer called with signature 'iiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_v(x){err("Invalid function pointer called with signature 'v'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_vi(x){err("Invalid function pointer called with signature 'vi'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_vii(x){err("Invalid function pointer called with signature 'vii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_viii(x){err("Invalid function pointer called with signature 'viii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_viiii(x){err("Invalid function pointer called with signature 'viiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_viiiii(x){err("Invalid function pointer called with signature 'viiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}function nullFunc_viiiiii(x){err("Invalid function pointer called with signature 'viiiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");err("Build with ASSERTIONS=2 for more info.");abort(x)}Module["wasmTableSize"]=140;Module["wasmMaxTableSize"]=140;Module.asmGlobalArg={};Module.asmLibraryArg={"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"abortStackOverflow":abortStackOverflow,"nullFunc_ii":nullFunc_ii,"nullFunc_iii":nullFunc_iii,"nullFunc_iiii":nullFunc_iiii,"nullFunc_iiiii":nullFunc_iiiii,"nullFunc_v":nullFunc_v,"nullFunc_vi":nullFunc_vi,"nullFunc_vii":nullFunc_vii,"nullFunc_viii":nullFunc_viii,"nullFunc_viiii":nullFunc_viiii,"nullFunc_viiiii":nullFunc_viiiii,"nullFunc_viiiiii":nullFunc_viiiiii,"___assert_fail":___assert_fail,"___buildEnvironment":___buildEnvironment,"___lock":___lock,"___setErrNo":___setErrNo,"___syscall140":___syscall140,"___syscall142":___syscall142,"___syscall145":___syscall145,"___syscall146":___syscall146,"___syscall192":___syscall192,"___syscall194":___syscall194,"___syscall195":___syscall195,"___syscall197":___syscall197,"___syscall199":___syscall199,"___syscall20":___syscall20,"___syscall201":___syscall201,"___syscall221":___syscall221,"___syscall3":___syscall3,"___syscall33":___syscall33,"___syscall4":___syscall4,"___syscall5":___syscall5,"___syscall54":___syscall54,"___syscall6":___syscall6,"___syscall64":___syscall64,"___syscall77":___syscall77,"___syscall91":___syscall91,"___unlock":___unlock,"_abort":_abort,"_atexit":_atexit,"_clock":_clock,"_emscripten_memcpy_big":_emscripten_memcpy_big,"_getenv":_getenv,"_gettimeofday":_gettimeofday,"_llvm_stackrestore":_llvm_stackrestore,"_llvm_stacksave":_llvm_stacksave,"_localtime":_localtime,"_pthread_mutex_destroy":_pthread_mutex_destroy,"_pthread_mutex_init":_pthread_mutex_init,"_strftime":_strftime,"_sysconf":_sysconf,"_time":_time,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX};var asm=Module["asm"](Module.asmGlobalArg,Module.asmLibraryArg,buffer);var real__GNUNET_CRYPTO_ecc_ecdh=asm["_GNUNET_CRYPTO_ecc_ecdh"];asm["_GNUNET_CRYPTO_ecc_ecdh"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_ecc_ecdh.apply(null,arguments)});var real__GNUNET_CRYPTO_ecdh_eddsa=asm["_GNUNET_CRYPTO_ecdh_eddsa"];asm["_GNUNET_CRYPTO_ecdh_eddsa"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_ecdh_eddsa.apply(null,arguments)});var real__GNUNET_CRYPTO_ecdhe_key_create=asm["_GNUNET_CRYPTO_ecdhe_key_create"];asm["_GNUNET_CRYPTO_ecdhe_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_ecdhe_key_create.apply(null,arguments)});var real__GNUNET_CRYPTO_ecdhe_key_get_public=asm["_GNUNET_CRYPTO_ecdhe_key_get_public"];asm["_GNUNET_CRYPTO_ecdhe_key_get_public"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_ecdhe_key_get_public.apply(null,arguments)});var real__GNUNET_CRYPTO_ecdsa_key_create=asm["_GNUNET_CRYPTO_ecdsa_key_create"];asm["_GNUNET_CRYPTO_ecdsa_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_ecdsa_key_create.apply(null,arguments)});var real__GNUNET_CRYPTO_eddsa_key_create=asm["_GNUNET_CRYPTO_eddsa_key_create"];asm["_GNUNET_CRYPTO_eddsa_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_eddsa_key_create.apply(null,arguments)});var real__GNUNET_CRYPTO_eddsa_key_get_public=asm["_GNUNET_CRYPTO_eddsa_key_get_public"];asm["_GNUNET_CRYPTO_eddsa_key_get_public"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_eddsa_key_get_public.apply(null,arguments)});var real__GNUNET_CRYPTO_eddsa_sign=asm["_GNUNET_CRYPTO_eddsa_sign"];asm["_GNUNET_CRYPTO_eddsa_sign"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_eddsa_sign.apply(null,arguments)});var real__GNUNET_CRYPTO_eddsa_verify=asm["_GNUNET_CRYPTO_eddsa_verify"];asm["_GNUNET_CRYPTO_eddsa_verify"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_eddsa_verify.apply(null,arguments)});var real__GNUNET_CRYPTO_hash=asm["_GNUNET_CRYPTO_hash"];asm["_GNUNET_CRYPTO_hash"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hash.apply(null,arguments)});var real__GNUNET_CRYPTO_hash_context_abort=asm["_GNUNET_CRYPTO_hash_context_abort"];asm["_GNUNET_CRYPTO_hash_context_abort"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hash_context_abort.apply(null,arguments)});var real__GNUNET_CRYPTO_hash_context_finish=asm["_GNUNET_CRYPTO_hash_context_finish"];asm["_GNUNET_CRYPTO_hash_context_finish"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hash_context_finish.apply(null,arguments)});var real__GNUNET_CRYPTO_hash_context_read=asm["_GNUNET_CRYPTO_hash_context_read"];asm["_GNUNET_CRYPTO_hash_context_read"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hash_context_read.apply(null,arguments)});var real__GNUNET_CRYPTO_hash_context_start=asm["_GNUNET_CRYPTO_hash_context_start"];asm["_GNUNET_CRYPTO_hash_context_start"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hash_context_start.apply(null,arguments)});var real__GNUNET_CRYPTO_hash_create_random=asm["_GNUNET_CRYPTO_hash_create_random"];asm["_GNUNET_CRYPTO_hash_create_random"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hash_create_random.apply(null,arguments)});var real__GNUNET_CRYPTO_hkdf=asm["_GNUNET_CRYPTO_hkdf"];asm["_GNUNET_CRYPTO_hkdf"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_hkdf.apply(null,arguments)});var real__GNUNET_CRYPTO_kdf=asm["_GNUNET_CRYPTO_kdf"];asm["_GNUNET_CRYPTO_kdf"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_kdf.apply(null,arguments)});var real__GNUNET_CRYPTO_random_block=asm["_GNUNET_CRYPTO_random_block"];asm["_GNUNET_CRYPTO_random_block"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_random_block.apply(null,arguments)});var real__GNUNET_CRYPTO_random_init=asm["_GNUNET_CRYPTO_random_init"];asm["_GNUNET_CRYPTO_random_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_random_init.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_blind=asm["_GNUNET_CRYPTO_rsa_blind"];asm["_GNUNET_CRYPTO_rsa_blind"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_blind.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_private_key_create=asm["_GNUNET_CRYPTO_rsa_private_key_create"];asm["_GNUNET_CRYPTO_rsa_private_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_private_key_create.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_private_key_decode=asm["_GNUNET_CRYPTO_rsa_private_key_decode"];asm["_GNUNET_CRYPTO_rsa_private_key_decode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_private_key_decode.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_private_key_encode=asm["_GNUNET_CRYPTO_rsa_private_key_encode"];asm["_GNUNET_CRYPTO_rsa_private_key_encode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_private_key_encode.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_private_key_free=asm["_GNUNET_CRYPTO_rsa_private_key_free"];asm["_GNUNET_CRYPTO_rsa_private_key_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_private_key_free.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_private_key_get_public=asm["_GNUNET_CRYPTO_rsa_private_key_get_public"];asm["_GNUNET_CRYPTO_rsa_private_key_get_public"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_private_key_get_public.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_public_key_decode=asm["_GNUNET_CRYPTO_rsa_public_key_decode"];asm["_GNUNET_CRYPTO_rsa_public_key_decode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_public_key_decode.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_public_key_encode=asm["_GNUNET_CRYPTO_rsa_public_key_encode"];asm["_GNUNET_CRYPTO_rsa_public_key_encode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_public_key_encode.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_public_key_free=asm["_GNUNET_CRYPTO_rsa_public_key_free"];asm["_GNUNET_CRYPTO_rsa_public_key_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_public_key_free.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_sign_blinded=asm["_GNUNET_CRYPTO_rsa_sign_blinded"];asm["_GNUNET_CRYPTO_rsa_sign_blinded"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_sign_blinded.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_signature_decode=asm["_GNUNET_CRYPTO_rsa_signature_decode"];asm["_GNUNET_CRYPTO_rsa_signature_decode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_signature_decode.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_signature_encode=asm["_GNUNET_CRYPTO_rsa_signature_encode"];asm["_GNUNET_CRYPTO_rsa_signature_encode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_signature_encode.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_signature_free=asm["_GNUNET_CRYPTO_rsa_signature_free"];asm["_GNUNET_CRYPTO_rsa_signature_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_signature_free.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_unblind=asm["_GNUNET_CRYPTO_rsa_unblind"];asm["_GNUNET_CRYPTO_rsa_unblind"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_unblind.apply(null,arguments)});var real__GNUNET_CRYPTO_rsa_verify=asm["_GNUNET_CRYPTO_rsa_verify"];asm["_GNUNET_CRYPTO_rsa_verify"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_rsa_verify.apply(null,arguments)});var real__GNUNET_CRYPTO_symmetric_decrypt=asm["_GNUNET_CRYPTO_symmetric_decrypt"];asm["_GNUNET_CRYPTO_symmetric_decrypt"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_symmetric_decrypt.apply(null,arguments)});var real__GNUNET_CRYPTO_symmetric_encrypt=asm["_GNUNET_CRYPTO_symmetric_encrypt"];asm["_GNUNET_CRYPTO_symmetric_encrypt"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_CRYPTO_symmetric_encrypt.apply(null,arguments)});var real__GNUNET_STRINGS_data_to_string_alloc=asm["_GNUNET_STRINGS_data_to_string_alloc"];asm["_GNUNET_STRINGS_data_to_string_alloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_STRINGS_data_to_string_alloc.apply(null,arguments)});var real__GNUNET_STRINGS_string_to_data=asm["_GNUNET_STRINGS_string_to_data"];asm["_GNUNET_STRINGS_string_to_data"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_STRINGS_string_to_data.apply(null,arguments)});var real__GNUNET_util_cl_init=asm["_GNUNET_util_cl_init"];asm["_GNUNET_util_cl_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__GNUNET_util_cl_init.apply(null,arguments)});var real__TALER_WRALL_ecdhe_public_key_from_private=asm["_TALER_WRALL_ecdhe_public_key_from_private"];asm["_TALER_WRALL_ecdhe_public_key_from_private"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WRALL_ecdhe_public_key_from_private.apply(null,arguments)});var real__TALER_WRALL_ecdsa_public_key_from_private=asm["_TALER_WRALL_ecdsa_public_key_from_private"];asm["_TALER_WRALL_ecdsa_public_key_from_private"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WRALL_ecdsa_public_key_from_private.apply(null,arguments)});var real__TALER_WRALL_eddsa_public_key_from_private=asm["_TALER_WRALL_eddsa_public_key_from_private"];asm["_TALER_WRALL_eddsa_public_key_from_private"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WRALL_eddsa_public_key_from_private.apply(null,arguments)});var real__TALER_WRALL_get_amount=asm["_TALER_WRALL_get_amount"];asm["_TALER_WRALL_get_amount"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WRALL_get_amount.apply(null,arguments)});var real__TALER_WRALL_purpose_create=asm["_TALER_WRALL_purpose_create"];asm["_TALER_WRALL_purpose_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WRALL_purpose_create.apply(null,arguments)});var real__TALER_WR_get_currency=asm["_TALER_WR_get_currency"];asm["_TALER_WR_get_currency"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WR_get_currency.apply(null,arguments)});var real__TALER_WR_get_fraction=asm["_TALER_WR_get_fraction"];asm["_TALER_WR_get_fraction"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WR_get_fraction.apply(null,arguments)});var real__TALER_WR_get_value=asm["_TALER_WR_get_value"];asm["_TALER_WR_get_value"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_WR_get_value.apply(null,arguments)});var real__TALER_amount_add=asm["_TALER_amount_add"];asm["_TALER_amount_add"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_add.apply(null,arguments)});var real__TALER_amount_cmp=asm["_TALER_amount_cmp"];asm["_TALER_amount_cmp"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_cmp.apply(null,arguments)});var real__TALER_amount_get_zero=asm["_TALER_amount_get_zero"];asm["_TALER_amount_get_zero"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_get_zero.apply(null,arguments)});var real__TALER_amount_hton=asm["_TALER_amount_hton"];asm["_TALER_amount_hton"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_hton.apply(null,arguments)});var real__TALER_amount_normalize=asm["_TALER_amount_normalize"];asm["_TALER_amount_normalize"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_normalize.apply(null,arguments)});var real__TALER_amount_ntoh=asm["_TALER_amount_ntoh"];asm["_TALER_amount_ntoh"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_ntoh.apply(null,arguments)});var real__TALER_amount_subtract=asm["_TALER_amount_subtract"];asm["_TALER_amount_subtract"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_amount_subtract.apply(null,arguments)});var real__TALER_gcrypt_init=asm["_TALER_gcrypt_init"];asm["_TALER_gcrypt_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_gcrypt_init.apply(null,arguments)});var real__TALER_setup_fresh_coin=asm["_TALER_setup_fresh_coin"];asm["_TALER_setup_fresh_coin"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__TALER_setup_fresh_coin.apply(null,arguments)});var real____emscripten_environ_constructor=asm["___emscripten_environ_constructor"];asm["___emscripten_environ_constructor"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real____emscripten_environ_constructor.apply(null,arguments)});var real____errno_location=asm["___errno_location"];asm["___errno_location"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real____errno_location.apply(null,arguments)});var real___get_daylight=asm["__get_daylight"];asm["__get_daylight"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real___get_daylight.apply(null,arguments)});var real___get_environ=asm["__get_environ"];asm["__get_environ"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real___get_environ.apply(null,arguments)});var real___get_timezone=asm["__get_timezone"];asm["__get_timezone"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real___get_timezone.apply(null,arguments)});var real___get_tzname=asm["__get_tzname"];asm["__get_tzname"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real___get_tzname.apply(null,arguments)});var real__fflush=asm["_fflush"];asm["_fflush"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__fflush.apply(null,arguments)});var real__free=asm["_free"];asm["_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__free.apply(null,arguments)});var real__gpg_err_init=asm["_gpg_err_init"];asm["_gpg_err_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__gpg_err_init.apply(null,arguments)});var real__llvm_bswap_i32=asm["_llvm_bswap_i32"];asm["_llvm_bswap_i32"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__llvm_bswap_i32.apply(null,arguments)});var real__malloc=asm["_malloc"];asm["_malloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__malloc.apply(null,arguments)});var real__memalign=asm["_memalign"];asm["_memalign"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__memalign.apply(null,arguments)});var real__memmove=asm["_memmove"];asm["_memmove"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__memmove.apply(null,arguments)});var real__pthread_mutex_lock=asm["_pthread_mutex_lock"];asm["_pthread_mutex_lock"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__pthread_mutex_lock.apply(null,arguments)});var real__pthread_mutex_unlock=asm["_pthread_mutex_unlock"];asm["_pthread_mutex_unlock"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__pthread_mutex_unlock.apply(null,arguments)});var real__sbrk=asm["_sbrk"];asm["_sbrk"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real__sbrk.apply(null,arguments)});var real_establishStackSpace=asm["establishStackSpace"];asm["establishStackSpace"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_establishStackSpace.apply(null,arguments)});var real_getTempRet0=asm["getTempRet0"];asm["getTempRet0"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_getTempRet0.apply(null,arguments)});var real_setTempRet0=asm["setTempRet0"];asm["setTempRet0"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_setTempRet0.apply(null,arguments)});var real_setThrew=asm["setThrew"];asm["setThrew"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_setThrew.apply(null,arguments)});var real_stackAlloc=asm["stackAlloc"];asm["stackAlloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_stackAlloc.apply(null,arguments)});var real_stackRestore=asm["stackRestore"];asm["stackRestore"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_stackRestore.apply(null,arguments)});var real_stackSave=asm["stackSave"];asm["stackSave"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return real_stackSave.apply(null,arguments)});Module["asm"]=asm;var _GNUNET_CRYPTO_ecc_ecdh=Module["_GNUNET_CRYPTO_ecc_ecdh"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_ecc_ecdh"].apply(null,arguments)});var _GNUNET_CRYPTO_ecdh_eddsa=Module["_GNUNET_CRYPTO_ecdh_eddsa"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_ecdh_eddsa"].apply(null,arguments)});var _GNUNET_CRYPTO_ecdhe_key_create=Module["_GNUNET_CRYPTO_ecdhe_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_ecdhe_key_create"].apply(null,arguments)});var _GNUNET_CRYPTO_ecdhe_key_get_public=Module["_GNUNET_CRYPTO_ecdhe_key_get_public"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_ecdhe_key_get_public"].apply(null,arguments)});var _GNUNET_CRYPTO_ecdsa_key_create=Module["_GNUNET_CRYPTO_ecdsa_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_ecdsa_key_create"].apply(null,arguments)});var _GNUNET_CRYPTO_eddsa_key_create=Module["_GNUNET_CRYPTO_eddsa_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_eddsa_key_create"].apply(null,arguments)});var _GNUNET_CRYPTO_eddsa_key_get_public=Module["_GNUNET_CRYPTO_eddsa_key_get_public"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_eddsa_key_get_public"].apply(null,arguments)});var _GNUNET_CRYPTO_eddsa_sign=Module["_GNUNET_CRYPTO_eddsa_sign"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_eddsa_sign"].apply(null,arguments)});var _GNUNET_CRYPTO_eddsa_verify=Module["_GNUNET_CRYPTO_eddsa_verify"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_eddsa_verify"].apply(null,arguments)});var _GNUNET_CRYPTO_hash=Module["_GNUNET_CRYPTO_hash"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hash"].apply(null,arguments)});var _GNUNET_CRYPTO_hash_context_abort=Module["_GNUNET_CRYPTO_hash_context_abort"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hash_context_abort"].apply(null,arguments)});var _GNUNET_CRYPTO_hash_context_finish=Module["_GNUNET_CRYPTO_hash_context_finish"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hash_context_finish"].apply(null,arguments)});var _GNUNET_CRYPTO_hash_context_read=Module["_GNUNET_CRYPTO_hash_context_read"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hash_context_read"].apply(null,arguments)});var _GNUNET_CRYPTO_hash_context_start=Module["_GNUNET_CRYPTO_hash_context_start"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hash_context_start"].apply(null,arguments)});var _GNUNET_CRYPTO_hash_create_random=Module["_GNUNET_CRYPTO_hash_create_random"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hash_create_random"].apply(null,arguments)});var _GNUNET_CRYPTO_hkdf=Module["_GNUNET_CRYPTO_hkdf"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_hkdf"].apply(null,arguments)});var _GNUNET_CRYPTO_kdf=Module["_GNUNET_CRYPTO_kdf"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_kdf"].apply(null,arguments)});var _GNUNET_CRYPTO_random_block=Module["_GNUNET_CRYPTO_random_block"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_random_block"].apply(null,arguments)});var _GNUNET_CRYPTO_random_init=Module["_GNUNET_CRYPTO_random_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_random_init"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_blind=Module["_GNUNET_CRYPTO_rsa_blind"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_blind"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_private_key_create=Module["_GNUNET_CRYPTO_rsa_private_key_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_private_key_create"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_private_key_decode=Module["_GNUNET_CRYPTO_rsa_private_key_decode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_private_key_decode"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_private_key_encode=Module["_GNUNET_CRYPTO_rsa_private_key_encode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_private_key_encode"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_private_key_free=Module["_GNUNET_CRYPTO_rsa_private_key_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_private_key_free"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_private_key_get_public=Module["_GNUNET_CRYPTO_rsa_private_key_get_public"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_private_key_get_public"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_public_key_decode=Module["_GNUNET_CRYPTO_rsa_public_key_decode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_public_key_decode"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_public_key_encode=Module["_GNUNET_CRYPTO_rsa_public_key_encode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_public_key_encode"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_public_key_free=Module["_GNUNET_CRYPTO_rsa_public_key_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_public_key_free"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_sign_blinded=Module["_GNUNET_CRYPTO_rsa_sign_blinded"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_sign_blinded"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_signature_decode=Module["_GNUNET_CRYPTO_rsa_signature_decode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_signature_decode"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_signature_encode=Module["_GNUNET_CRYPTO_rsa_signature_encode"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_signature_encode"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_signature_free=Module["_GNUNET_CRYPTO_rsa_signature_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_signature_free"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_unblind=Module["_GNUNET_CRYPTO_rsa_unblind"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_unblind"].apply(null,arguments)});var _GNUNET_CRYPTO_rsa_verify=Module["_GNUNET_CRYPTO_rsa_verify"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_rsa_verify"].apply(null,arguments)});var _GNUNET_CRYPTO_symmetric_decrypt=Module["_GNUNET_CRYPTO_symmetric_decrypt"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_symmetric_decrypt"].apply(null,arguments)});var _GNUNET_CRYPTO_symmetric_encrypt=Module["_GNUNET_CRYPTO_symmetric_encrypt"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_CRYPTO_symmetric_encrypt"].apply(null,arguments)});var _GNUNET_STRINGS_data_to_string_alloc=Module["_GNUNET_STRINGS_data_to_string_alloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_STRINGS_data_to_string_alloc"].apply(null,arguments)});var _GNUNET_STRINGS_string_to_data=Module["_GNUNET_STRINGS_string_to_data"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_STRINGS_string_to_data"].apply(null,arguments)});var _GNUNET_util_cl_init=Module["_GNUNET_util_cl_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_GNUNET_util_cl_init"].apply(null,arguments)});var _TALER_WRALL_ecdhe_public_key_from_private=Module["_TALER_WRALL_ecdhe_public_key_from_private"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WRALL_ecdhe_public_key_from_private"].apply(null,arguments)});var _TALER_WRALL_ecdsa_public_key_from_private=Module["_TALER_WRALL_ecdsa_public_key_from_private"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WRALL_ecdsa_public_key_from_private"].apply(null,arguments)});var _TALER_WRALL_eddsa_public_key_from_private=Module["_TALER_WRALL_eddsa_public_key_from_private"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WRALL_eddsa_public_key_from_private"].apply(null,arguments)});var _TALER_WRALL_get_amount=Module["_TALER_WRALL_get_amount"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WRALL_get_amount"].apply(null,arguments)});var _TALER_WRALL_purpose_create=Module["_TALER_WRALL_purpose_create"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WRALL_purpose_create"].apply(null,arguments)});var _TALER_WR_get_currency=Module["_TALER_WR_get_currency"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WR_get_currency"].apply(null,arguments)});var _TALER_WR_get_fraction=Module["_TALER_WR_get_fraction"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WR_get_fraction"].apply(null,arguments)});var _TALER_WR_get_value=Module["_TALER_WR_get_value"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_WR_get_value"].apply(null,arguments)});var _TALER_amount_add=Module["_TALER_amount_add"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_add"].apply(null,arguments)});var _TALER_amount_cmp=Module["_TALER_amount_cmp"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_cmp"].apply(null,arguments)});var _TALER_amount_get_zero=Module["_TALER_amount_get_zero"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_get_zero"].apply(null,arguments)});var _TALER_amount_hton=Module["_TALER_amount_hton"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_hton"].apply(null,arguments)});var _TALER_amount_normalize=Module["_TALER_amount_normalize"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_normalize"].apply(null,arguments)});var _TALER_amount_ntoh=Module["_TALER_amount_ntoh"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_ntoh"].apply(null,arguments)});var _TALER_amount_subtract=Module["_TALER_amount_subtract"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_amount_subtract"].apply(null,arguments)});var _TALER_gcrypt_init=Module["_TALER_gcrypt_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_gcrypt_init"].apply(null,arguments)});var _TALER_setup_fresh_coin=Module["_TALER_setup_fresh_coin"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_TALER_setup_fresh_coin"].apply(null,arguments)});var ___emscripten_environ_constructor=Module["___emscripten_environ_constructor"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["___emscripten_environ_constructor"].apply(null,arguments)});var ___errno_location=Module["___errno_location"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["___errno_location"].apply(null,arguments)});var __get_daylight=Module["__get_daylight"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["__get_daylight"].apply(null,arguments)});var __get_environ=Module["__get_environ"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["__get_environ"].apply(null,arguments)});var __get_timezone=Module["__get_timezone"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["__get_timezone"].apply(null,arguments)});var __get_tzname=Module["__get_tzname"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["__get_tzname"].apply(null,arguments)});var _fflush=Module["_fflush"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_fflush"].apply(null,arguments)});var _free=Module["_free"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_free"].apply(null,arguments)});var _gpg_err_init=Module["_gpg_err_init"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_gpg_err_init"].apply(null,arguments)});var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_llvm_bswap_i32"].apply(null,arguments)});var _malloc=Module["_malloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_malloc"].apply(null,arguments)});var _memalign=Module["_memalign"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_memalign"].apply(null,arguments)});var _memmove=Module["_memmove"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_memmove"].apply(null,arguments)});var _memset=Module["_memset"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_memset"].apply(null,arguments)});var _pthread_mutex_lock=Module["_pthread_mutex_lock"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_pthread_mutex_lock"].apply(null,arguments)});var _pthread_mutex_unlock=Module["_pthread_mutex_unlock"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_pthread_mutex_unlock"].apply(null,arguments)});var _sbrk=Module["_sbrk"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["_sbrk"].apply(null,arguments)});var establishStackSpace=Module["establishStackSpace"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["establishStackSpace"].apply(null,arguments)});var getTempRet0=Module["getTempRet0"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["getTempRet0"].apply(null,arguments)});var setTempRet0=Module["setTempRet0"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["setTempRet0"].apply(null,arguments)});var setThrew=Module["setThrew"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["setThrew"].apply(null,arguments)});var stackAlloc=Module["stackAlloc"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["stackAlloc"].apply(null,arguments)});var stackRestore=Module["stackRestore"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["stackRestore"].apply(null,arguments)});var stackSave=Module["stackSave"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["stackSave"].apply(null,arguments)});var dynCall_v=Module["dynCall_v"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["dynCall_v"].apply(null,arguments)});var dynCall_vi=Module["dynCall_vi"]=(function(){assert(runtimeInitialized,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)");assert(!runtimeExited,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)");return Module["asm"]["dynCall_vi"].apply(null,arguments)});Module["asm"]=asm;if(!Module["intArrayFromString"])Module["intArrayFromString"]=(function(){abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["intArrayToString"])Module["intArrayToString"]=(function(){abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["setValue"]=setValue;Module["getValue"]=getValue;if(!Module["allocate"])Module["allocate"]=(function(){abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["getMemory"])Module["getMemory"]=(function(){abort("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});Module["Pointer_stringify"]=Pointer_stringify;if(!Module["AsciiToString"])Module["AsciiToString"]=(function(){abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stringToAscii"])Module["stringToAscii"]=(function(){abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["UTF8ArrayToString"])Module["UTF8ArrayToString"]=(function(){abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["UTF8ToString"])Module["UTF8ToString"]=(function(){abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stringToUTF8Array"])Module["stringToUTF8Array"]=(function(){abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});Module["stringToUTF8"]=stringToUTF8;if(!Module["lengthBytesUTF8"])Module["lengthBytesUTF8"]=(function(){abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["UTF16ToString"])Module["UTF16ToString"]=(function(){abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stringToUTF16"])Module["stringToUTF16"]=(function(){abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["lengthBytesUTF16"])Module["lengthBytesUTF16"]=(function(){abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["UTF32ToString"])Module["UTF32ToString"]=(function(){abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stringToUTF32"])Module["stringToUTF32"]=(function(){abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["lengthBytesUTF32"])Module["lengthBytesUTF32"]=(function(){abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["allocateUTF8"])Module["allocateUTF8"]=(function(){abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stackTrace"])Module["stackTrace"]=(function(){abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addOnPreRun"])Module["addOnPreRun"]=(function(){abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addOnInit"])Module["addOnInit"]=(function(){abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addOnPreMain"])Module["addOnPreMain"]=(function(){abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addOnExit"])Module["addOnExit"]=(function(){abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addOnPostRun"])Module["addOnPostRun"]=(function(){abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["writeStringToMemory"])Module["writeStringToMemory"]=(function(){abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["writeArrayToMemory"])Module["writeArrayToMemory"]=(function(){abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["writeAsciiToMemory"])Module["writeAsciiToMemory"]=(function(){abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addRunDependency"])Module["addRunDependency"]=(function(){abort("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["removeRunDependency"])Module["removeRunDependency"]=(function(){abort("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["ENV"])Module["ENV"]=(function(){abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["FS"])Module["FS"]=(function(){abort("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["FS_createFolder"])Module["FS_createFolder"]=(function(){abort("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_createPath"])Module["FS_createPath"]=(function(){abort("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_createDataFile"])Module["FS_createDataFile"]=(function(){abort("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_createPreloadedFile"])Module["FS_createPreloadedFile"]=(function(){abort("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_createLazyFile"])Module["FS_createLazyFile"]=(function(){abort("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_createLink"])Module["FS_createLink"]=(function(){abort("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_createDevice"])Module["FS_createDevice"]=(function(){abort("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["FS_unlink"])Module["FS_unlink"]=(function(){abort("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")});if(!Module["GL"])Module["GL"]=(function(){abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["staticAlloc"])Module["staticAlloc"]=(function(){abort("'staticAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["dynamicAlloc"])Module["dynamicAlloc"]=(function(){abort("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["warnOnce"])Module["warnOnce"]=(function(){abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["loadDynamicLibrary"])Module["loadDynamicLibrary"]=(function(){abort("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["loadWebAssemblyModule"])Module["loadWebAssemblyModule"]=(function(){abort("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["getLEB"])Module["getLEB"]=(function(){abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["getFunctionTables"])Module["getFunctionTables"]=(function(){abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["alignFunctionTables"])Module["alignFunctionTables"]=(function(){abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["registerFunctions"])Module["registerFunctions"]=(function(){abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["addFunction"])Module["addFunction"]=(function(){abort("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["removeFunction"])Module["removeFunction"]=(function(){abort("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["getFuncWrapper"])Module["getFuncWrapper"]=(function(){abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["prettyPrint"])Module["prettyPrint"]=(function(){abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["makeBigInt"])Module["makeBigInt"]=(function(){abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["dynCall"])Module["dynCall"]=(function(){abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["getCompilerSetting"])Module["getCompilerSetting"]=(function(){abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stackSave"])Module["stackSave"]=(function(){abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stackRestore"])Module["stackRestore"]=(function(){abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["stackAlloc"])Module["stackAlloc"]=(function(){abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["establishStackSpace"])Module["establishStackSpace"]=(function(){abort("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["print"])Module["print"]=(function(){abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["printErr"])Module["printErr"]=(function(){abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")});if(!Module["ALLOC_NORMAL"])Object.defineProperty(Module,"ALLOC_NORMAL",{get:(function(){abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")})});if(!Module["ALLOC_STACK"])Object.defineProperty(Module,"ALLOC_STACK",{get:(function(){abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")})});if(!Module["ALLOC_STATIC"])Object.defineProperty(Module,"ALLOC_STATIC",{get:(function(){abort("'ALLOC_STATIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")})});if(!Module["ALLOC_DYNAMIC"])Object.defineProperty(Module,"ALLOC_DYNAMIC",{get:(function(){abort("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")})});if(!Module["ALLOC_NONE"])Object.defineProperty(Module,"ALLOC_NONE",{get:(function(){abort("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")})});Module["then"]=(function(func){if(Module["calledRun"]){func(Module)}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=(function(){if(old)old();func(Module)})}return Module});function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};function run(args){args=args||Module["arguments"];if(runDependencies>0){return}writeStackCookie();preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();assert(!Module["_main"],'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]');postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}checkStackCookie()}Module["run"]=run;var abortDecorators=[];function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){out(what);err(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}Module["noExitRuntime"]=true;run() diff --git a/emscripten/taler-emscripten-lib.wasm b/emscripten/taler-emscripten-lib.wasm index ffb1bb0b799dee78334f0f9b0efed0316ae2f9bc..c52c2aacbaf157c44e443d8c039417d023d096b2 100644 GIT binary patch delta 60093 zcmd?S2b>he7B@Oo)xA5rv!P*0yDTuXfCK>%BnYS!ilV5PuHky`MHE!B1ap`rgMfrV zizthdB`hpBNZKU|NK(mh2?{DoFrlRPKh@ncv#@ymzW06a_ul)&*{(iSbt;`Yb?Tf` z)%}K)-#)y2ZVxjxY%VqpBi<14Ot5$!$~J3y<9J*mPvk~up_!MKoLEu_&bgT^;*&+9 z>5WSby&9Kw8|QJngegpunTR&inb1#Dq~VSE4CeKE4KKHtm#3ztrX;hpMAPJn@oDk# zaU!%Qu3?ZTCv%>NqJTA#a2O_n3CSWZ-tZ!EykYwApVu@J(|m?umf@x;;!&h9IsTO^ zn`Cfdlo39`eVhwa1eHN?2*$??A-uwunCMLHBPlgFd>iHSgi`Y_Zu&Wk1_`n-nE>+yJaJU4(Ie;AK9k(@dQ2$M^trX(gO zrUC9rh!1@eUoSb)D-wn9pkIVY3RU%16`M;u5_-U!Uh%Av-u9jc|M6hU$J*Zc$WsqJ z)~0QT=i0y6wnO{&z1n$Bh5CE5jL~N0wrc33ah2KB&{l62yAnDJ=tTq2D~|v=E7UY0 zll>8TGNB^-CG=`SQ?b*?3XM$2RKp*Six-CsKfNUM?9i^g=co~As~&zlF2Ii&p%DpX zLboO+cmCE$yQ&T^c5eT?XM<7lDlkDm_`9lLex z?O7CBkXW97D?)ysKlD>#JPU;?`2ybd9iHpnzJq4~UaE_sM&(ezS1IoKo*g=PMuocj zYKeYE6@W^q{HNkdh_fQ{l9ZuAO;8lx_Q% zyualmZJ&5V-hY4F7drHA+pcT(m%H`$91o?YRAk?U>ZGIxkDFy8$#k0Md$xP7cgODC zJl~pWMPpuR*X897o@1hf1GcfXZP&iNXS#6}@VTxpd1e_dY9}RC;f)SGyL*1-B^?~n ziF&a&O8mrdtL#9#b?@1=U6+n;bnwgsmDsIuqk4CL(K8z*sP1dx%G8??iGSg_p0B^u z+wPTV5rn-u^nUrJwivTsFSdQId&h2`k3(%zt33T18q>CIhn_vVb#Dv8YNs1M-biVy zyP|!&*SmCl;lCo+!jy+M+bHYi|yJOc5Z*=e0!Sl07vXk_Fqg%VK9X!8= zwx(8L3qn7q)?_)MidL=QB3`=fOTAyD3DUOf%e_0i*7oIYnwS@Hvu&?udv^AG$`abY z-tEqIUAnY=#dAg^MqWC4PK&e-y?VC;iS>H%(cbNz>-^|T?Vju4nPvLWsgHH&`qCpE zde`+R!-s}OUbh=wdPR}1dVUQWi9qmNXW0dXdVVmI^xGrA+P!B7&sS!Get)#xD;+%F zn+bh5^HlcuhOu|~BtG7J-<*W!B)-WQ%{Q5oj5)?4{;vM_qnKcZ%rA^J#yP&+9A&oq z6bycmnP-kO$C}Fgz#Lj58(}XZgFvH|9(> z&zx(n=O2k2FLCi5fG3OiKiCsSOnI>t6k8;0Zg;|E*V+8#kQ!Y6g zs$KT}B3Vs4t0}*WWL0G=l>PH4H|6=G+!ql3cpr)&?3>nwz9?IfFFhXmq3i(GE7YT0 zlhPjulrB(A3;d0ftW%a@eGn=r_d0t&)Fi!GsA>616_>BjZ9*-L<`OSd-%hA-67%6T z^ji5EmYpPvNzZ*cO=v;+(pmW%(Hf7R%klBlDkcXW=6-Iq^z$las*nEWy_~+D<$YH^ z$k~Zd$BMtRm7#W(`tnaMg}$lOgYC?F!hepj#Oy+%2xeZImJ;J4ll8%QeSA8u01Koj}L+@05!0hE`RN#{If&0XQc?8@y7Azv*ez9O90`5=X(9hLN1_#6@h>Ii`7z>V%fCt5b zy%F%>Sa3oFJR}yJ7y-W<15TE{2z=<`(5M=v(}%@G%j8Jx@WrA08l{8p#m1&aVn@V+ ztq6EzEVx7jJSrAkG6EhQ3r>rGLlLmgpZ93Zh4H=_AW?t3EY&G1UM+w~7P_HcSw1yC zbVt3?$rv__*B--~F660DyL#m?72c?q4-#rpzYE99j0UaPs?eDRFxDFx?Hm*Q9E;M z2}zH&0Q1Gyim{-KWUl_#nLWMM?pKP1xT5~(C{t|acGFd7J;Clw;HJdfTed;gcr z=bOdQKpx~eInBFd&)>uf_F`kDEYw3JR|0M2JrKjQh;gDUr$4Xm?a=4{c$xUf?T>dx z!)8Ce3d7swiKo0J&;Kd>DOM{v{(|slSk2^z7xH$ujbj=f=fJ%h9y#LGc^=yG{7YrFZ{&W{`dol*`wc$_OIZm9o7cL16NX9*>~Ie&RT><_ z&%g^?ND6^DTLqy`FZ9)Ty$)W}F7EORg(bhfAc&J1@&^hS@}mo(GcQ)vspE^J&a2jO zJmdS#(B%&+8pk+e>Y3F%J@ja2e+ipK+YA~*Xf+S@?;PN(=Z9u=ZvKyJB2Bq=4z~x? zA>G~qhG{e2=II`Jcmpj}fNTQ=c&RxJc@j8pzl~gu*vb7Kt4pX^m-Lp`V76*t%rtI{ z8D6k3mFtw{AVgot?LbJY#p?M$Z?&{)NKdG+)8ol06q)lm)yf(kn%QNiJiij@9QwQH zhCwxe6QLQ+x&DW2ymJcoFpz0>zLQ1xWdHoo%B~eLaSwK_^YF>b0xQHAhUHp%I|a}H z$$QI!MMfu}(!|E9V6ja#<)AA9BZrijyniyrgEW%p(8D~7R(i>>wlVAL(7(FXOxLhv zbR1If-kq{AanLf;+8vtQZC!AWo->lS0x27`Ci+n7o~^>Vt7VpndA9mDfg*i@ct5?Z zJ&iSe(>eni6_n|bg$Iz31OrNkEI`7nu)t(Q@@Uv2XPwXqDKE;mmSK;G$5u0Rtb5Ie zH=X9bhTI}b#X5(E2IV%lpoY8@;3RxFB{$^dY=GR**RU(okY~!TPLrV0irV12O-)(D z%7@-Lp6uh+gJ>+s*4mLb>Lq4)5A784H{wd;d$$+G5M=6Wfjeo`1&z9|nMWRQm+F+;qQ;*~5eMQ@qC%IFlpM3kV%-dVhdrVYpd)L2sj*YJVmLS2L9 zGYbn0zkzupfy5t2oFx&o?WJBW2u%%kgg&SL(!Yb#N?Z~eq*1wzmCt;>OJbl+iAs=r@4!!y*h|J!KwXZ;ua zWfcYtIFevDnp)R=U?z3g@PVHYh9-k*5#ARE{ag>F(STt}x54yuIu3p0_jJw@GPSi0 z#4Pqe`lW6u3=JP#jVh^EHwXzU2j3Vx9>GEx@Ma?*(jh@OS1<6GJxg=|!aCOeY(Jq} z6bUUyC`h0JH?S4~T0-R*HvmNbMEOz=xo7sy*=8?_%l7-SLN5-fm^@PB&SI#*;I*O9 zkQ=HZ8`>rfh^5jKfEKDb{gY?x$}(Cx$F2<>8uA8Tv^Mn5cWYG|Y@;xVV9^7uLH}3q zU;MooDLHa&Xxh7-_>#4u5<{EEQI*E54LvdR*~Z9)5~(OZNwlaG*!D0Dpx!{pPe5O^ zXaiuBe0Jz#nRd@1V*o4$ix`Qeon?HF0K=-@Zde8+{I`Y$>ivTLM!%p8U`jF|MSzq~ z>W174WC&>j1e8$45%z7vX50hpG#XSjNY%P8(R#m0bp-d6tS2V5=?uG{gOVkUtW6Y= zET=*%hCdOv2N6UPo^qIpQqssDuZobrvyaH}kACS$r)ZaU`ZefC&oiI%9bxVLBQm{C=(SLj9br9FG7 zF6Z$U%S~BVkO^Coy3$dq_CRGW6`>G|SP|hD{t;qCtKj4xJgqF*YEJ5C^1kd!B$V zdt4rdVCO8&!#Lt0>goLo3G_fN&*bHg-NuryV5>0nl8}FJ`N5^U3F8NGzIv}eh-bG@;GXhcW%lh&Y{~m zJGCC$9jY?zel{-DV_KlocxYsNy*-dYXa$Gv0c}Cpl*?B}0SKF@Q51l%DKEwV5Jr~# zXbOa}JS~p`mV_=&YgLw{v)nj&VwbS~4MDUzCl+3?EA;gA8@1#{aiRC7*NwicpMGn? z#IYa~kDNU=!AG6uYaqe^#$o;h$-Lw9 z5gCcM~*p-!ta zzj2v8I|O8Xnh{n|Uc!sdl%sa$y)}Ow3lOb?s5%p?2?jhMa@ybcDq*+o2cNM9g`Qo| zjGYcmUa*9n3_ZEa!CHLmuIjFTP(XrOY#WYLXj(iVNTicHqMy!+r^1!KeUV*XQ;Dm^Cz2vw#NO1J;(qG9+MHlJv>3k=VOwqp4#7)3KV6B_o}z zgCs!)sfm>R@=Pc{*O3ZSvL4oXo|QnP07wMd6P(v)-sBeHAp zjj~#Pt)lt!p2?3FE&?qvM-jZWx;e3}m8)N7Y;@i&Yi~E9W$U%^SuguOZ`YTr84QQx zzFq~j&eJw5^PVQL1U^{R%+YR2kW-o;i}7Ay;?6K$L$)5 z>Bps=082Z#Yo`*-gVp(5A(y*6@((q4UgMtmA_+#}3E>=UM1Hvp;nZIL`v-S?D~o!%n>OEO4HM&NF+76Yo3= zoM)l)%>Inx@63=nI)ENwT;rhX&*PHw}x|Cd`S|CJ6cE4$V(tKmtQ@G#DMe?HRmA z`(eslofC77TTQ`tm|V0|=Vdk$NHOvhka)4C;6WO_D?4nB9<#cD2p8%6HWxuy^Jy{z zX+Ec|KU%p6B9x0lkDo|ObL!@iKSt~J)`_FAa<@HMjs2WA=;Tu@q8SRE{4Sth&O=QU zD)Ie3wk7Y>_ZJw+o8O&!m(Twq^zx5)(qpOpxMDx<`bh(a*pIFHk(YM54Xb+C2$)H6 zkY{L-#DZ;DdkJF3LWYJ0ovB{F$V@!xG^j_w192;~=}fiMY3I27Ax_T2!y{Lm8-2EA z`&xKw*TO(`NHR-lpl}yh&2J6*`5+h`5(}p=q zE!qIMZJCqHS99y$EK;yzg|?a!lH~6jdHMF6$7abJzUqCp*wj@L8#YnwfNYA z&=fo-(&NTzq_FfuVvz30Iim%g5Yf0jTHB`N1%6-T(*}YB$3VceIYFJ^tV!zc2B|Hb zDPjGl>I&AWOrgC_N2WnfB9uavE7(J7%zdV%CK#+nslr;)(z~kn4nR2#6<2LpPOTKo zueutnA|G^64L4YGc0z46SS$Xyer=@Mm@FYU;~+%zcMm{yAh|STg0$p$VGR;lA~`Ms z7c$X?53%9Lq1Siwa5ru+;xN*F(K0z9Dc%PwH|dM;7n3Fc%|0^O`Y3EJDWMzyt4|yZ zHi!xzG}#?suHgz^mI^hos_kPtZ(hHTEQZXwlN#*_c)&97zx=`l19~wgoV{PwPhwSX z-WCHZj0vBJ3I7xm{#6Z0!r1QGr&cAg(kcD-JEa2syZhDgB-X+zy6v@AsfNjHAP?kid|iDRp}a ztH$$`dLe~X3QR*RS2DnFG~u8_S?$YeJ*n^QEnEU=6)WHMn%Qzb3U<$z~de~8{8nC`;grH^Y z$?zBDlp~`Q2J&u<=3fF8o-%$P0=J$0g*al>Pkc1p2n)g z%BZSq8mqw$gjE`QmDOLsF(HUySPNj|3c#39xR$mg&_~z-YZtcZFjRpntuw3=a?Cm< zOEZ6&1!#Xyy|=8+8)q@>aePRjUM^8Sur#Z{@w`|XJO|IrGWL5@JWJVY5>&m`O2gq3hFZ{9lv9NxSiBlqhNYBS@DcWl zVAEiywLD&IfKWCD=z>~Mh7D}!#!{rSbU<5fuPx59=p#wjy{y;mWBEOZ;_P?*APUWf+7+1zgOIF*~h%JQ-KYGVeg#4d)v%U~Zf zJcnnpuX)PAY(tL6?`I)rWERpf=n(wi? zsx9>(i@n=dovz24@%Q(u+VxpEc0t`;pLJnfRbGAe99yr--oox?(^ZMa;68WU%F3(Z zx3GA?-@k?B@lW@u`x>x2P|mvz*n{k2wYLH4Fh#xIkhNtwYHvflbycr7Vv3L7uSzy% z)k@64_+>(5XaXaJKS2_P#x{n=>}fVhecPDb6;oaVp1V)Iax3Z})rwnL4W~%I@-{(_ zN>#lH`!}1c1~y^C?w%t2CYf&`DQYp8(Pj?qCEtwcP8{uPBhjGqozQzt;jSlyfjISK zQEF>C}j3%odzUOQ)7JW48s1 z=<~oq{4g8y=B}#B)h1$QM^$VZNGdi=_iMC@07g}8Iwh&tV5y0y*zD|3v3a0kOL28< z8oEUF=*ZI1Zxe4rze)AyZLBu?T2;TDWtQ4vkgm8-w$Yh-4T?37wOc)TJBDM6nshsB zT`~6zF;B=;9vS82U@bHubI+)_J6ID|sN@~2UTK>%a=ZIouBrwjimzR%mfykNtpV0* zXN{%>W3kf`o7NoIC-oK<`9eJ_xrzt@ZG0p#|B6 z>2&>z!orwl9^y(?|L}hvV@*?8ukiTiu*^4@xgQgI(SDFCm~{Xv55x`6JtY5Q#v#%M zgN0BdSAhy31bwZ}w`YNhi&l{!V08qMEz!X&hW9MgL^PK(Rih59QpNt-excJ0*1^~` z=T+|xtVaC#zY_e_5rBtmMnBi_Xf%T;WgY!zzQ3z!IBsD&@E#Sv49>i#0Ttwt-Pe_= zlAml9lFNK2RVle~i~6}MyRGC>4L{_-kHd@_Zqbds&u-kPBQ7}+H_JhIx3MPk3}2EL z`#w-MdUVfL#b078IG(FsVsG9sQrKQuA8!)@MmrDe^oc@E7zZD;4luk6YlM2X2Yaak zrG+Vy$sJ`V37lkNlbr6ss?-J=lmrtIx&2uCnLN0a@RHjYyQB9inWXq{0 zmwU3+c!pQ^V!t!CQZ0R%Ed{T9`4#jmM4EzESug(CCe`3IR-LU3|K~OK5vzKTG(<%d zS9=IjRB@%MzQO)dbERHhjOwcJ8kN+(qAIC=Ka=XJ@{ViLZM`PlqO&!4 zzn|6HZ?f`FU#+|9_cPamwzis?zUCfhg`tItCR7hvSg=qb%yk$`6vAE|#`1))rNe`B z)z5FTe}ezcX!8~`i4Q;AhfSvExjyW9dj7L7JWcW3-%pdTdXvpB~uBs}n422YM*I+9k8tsmLDzU4w5`N-b&k;_UGEV(PaORZ3HXb6pk*^UV)VpTj0j(hKCD=v3!2-1+p`d&`7&byGF^TKbflSY3XP( zv1^1>q$73E)=yFpwaamu5!p;8^Qi^u^ayriaHcaRK7V7ZmUWWj{f!B4oRjBn|9$jo zN~3p{kaIL1I!Yjyz}$vk9ftOGl2&hNy)3U(>XGGX%ILrcVktyeY%L?Q+Iu|csC@ne zXne}O0xO*wHZb}$>sOiwxBy&qq$uCF-D8{Q5wmEXpC);TlKNwPqS_%wp7y9k{kf6Bw*0rl!%3u z01T=OD;8z}2KktF$iL|^lOA~)MGay8geuU31hMQU*vl^j)=Fpvyf(um1x<9M8y!?H zD^@#gQ(urDwwts_k(SZKUURWxmHEQH;eCoVwD^w8s^m;oCH2T*E>(j32@j9#TNrLR zla&{BV-|K`b;T^}G8JbFQ;wVkVo3E_m%}4JVfhyONIkTiovn~>2H+y3Wi!3xXz%m` z`duDT1&^DhRL>Rcg@~;~9a+J?i%JMztz=o(ag9)k`K(4XWz&2nuaYGUkka*JiD~&! zSpo)d?L$IKR>ZMF18LXCVs?ERNRAaOX4j{IwCiIryFNQRc70f0BaRgsNRAcEmL={h zV6`Abyjs8>y=o5|aWqj!3S#%LiL0*N!+QOR5MQAoWmb@+GT#Rr{?~e2TbN6NsO=F@%9hDjB zNQNUbzOb4#h*c-br9W{w>IW`oaJl6tPBxJOM}CI__dCcR~kG$o@=9+RZ2fCWy% zaSAp#1dx-Qw848JpMWt$U8S@_(hrp%N#$BeC>NEAXf7lA$6cq?O>0=$)*IZiqbfwS z$KBSF!h+O~gb(6465HmUXyORM;XkTTYuK%9qxxbEd-<-V`lwZF?Bk&b#)jb@Kda?o zaz74Ckz*;0(~!4*f(`yN6>*J91W^U7N2)4n*W zGS;!oblpqfg5-MP1>e)}Npjm!)n*;L8K>G*-*xPM9@bmV^beMqsp|YXmclohs>OU> zBl!jp2Re|NxIyS`X}Ios)`5#FVuqU1kyTK27xU6;(+1>$tgvqbTU=sCE=B`uk2QtN zE6f_GayCK*hv;n^**%qp7+5$E;TRd>(8MZm7z1af&ReS*Y+|F4IJ|Kady=ysRn`_* zMt%%Gw}o|J>{NK;RyLZYjWDv}I%g$vdNwv`l$l2l zERCBB0)ibZ2TzXY3_OL^%qO)v1k=j4`s$*J%fEAu8nK)8Nr|S5qa9zxJ($LO)g60S zpZlXxq|>8?QnFqcG!KkrKI(%{3?g?B$bU;Y_!E`1mwoWR7UNHQS^bCXrISV)Aw9z( z5JhahU@|s8SUC>VPii-9tj(4MD&9PO8nqItHDMx6+(Li|C+jHiKYT28&!0Ix%H?I?u01m)zf=#{oOG!T&0TP1~ z{66cPy8C55Bh5iZ5|NwqgI9RXNjW| zrEaNyi^H34t$vHgn{KgwgK!{qtMyv~-Yy5J>H0Mhue$mAjg)b^3-ntO-gGzUw`9EO zp3rY8c+80_#z#IsJ&|P+kE1U2jI#{ z8yziLSW8KFhAoc$wwdBwKMU(i_53@$SDC5Mhd{`Z)9>(1?7EVI z{LXsIZ3<^l5J(OY(ML!9B&DNHXI2i3u%xE4nv&AqdIL@xeS*9qlo&boBR|M*2|~FU zljjP%Di1|NM37pmX(5^eC9EJ0N{aR(nudf?G}NM~cWiV5qG^nDw07Z-jaEIgd41A- z&B*2z+CoJbQ(9ksRcRC*Ee+8{OQYy$X^1Xb8Vaf0hc}K$-M!!hnt^I9Gkj=tb2(*( zfvRFmtfuHJ42rBr78(bP?fM&ZL=yW&v_-e)6GsmiX%9u0Kr~SZvk5Ob!7RmU&Lve6`iJIcEXu#}F0vD=w4~+7vc3&R0X4)`DhoelSP`~u$ z>#l`v?8ld+IQh{qoqt4sKI4fwIzO6hBXY{HE{hCp__q~J@CUF1z+kIG%3~Ad8h$+1 zDiPrB8~2?e+eFl68ZFs1fP&$T;`ax`{QW@ft3$Kf=6{qe*!x zP|fcTB>Jla5|YaLBwcJV&L`J@qc+dr{@6r;Ky`oBK#im_cA`Z(k#8oaElIe^O#Y5; z($ZPz2>`6w{AvD(OOU-##nRS9$8-Q59f`pec zUy>6BiFZ?-=JU5pZaf4r&@Zsj!DPU_Ci0m2V?JN`*sep+H|#q^rmbZg;mad;=HdU%Zqo?wUYvk?bHNiD?H41L)(Bx$~<^nLO6{*itk${ zm>ES^m<`^OZD@Lv^bCv^(tZh2fT!(PBG4;RHymGt=t@(;iz0iXPZjC z(PQ17h1CFKd{8x8$jh@o)RPPOjm?VnbRHI49LGi`wi64YW#%vB_2ca7tMdzKwJ6SS zdSp>-&S>DAI?lA(y`x&^@tU`P3pEu)YuG1I=`2(g4Jq)*F$Z)@^f1Z|rj^aEZIy{u z<>m1f#W!b6(Fzo$iDl7R+`Ne2?j<5v&#j(n>!+f+n!JdYdAitEos4x^j~VkXKx;+D z95M}N@lINb@z450;Fabgra`u$ti}9J;;{c%%)7H6!s{0E*ExKU?pVUBun$!GCH#Ii zRxMbYQYNr59|!$SMrD1YW37gUgxPO4t6yT zeUD0?IpmDi8fu6D9bt^o3>2S!J#+}9zStiwT**uFH23fes^c78xuVQf{7&~24)$(t z#E9AIU#q}6^3>a_YzCgQikHotJe!Q2x01IZ1SM{rV_CS=fUHC4E=s{C&sL{a@w@!4 z@;`v_kaa=mdW%QnL&Lamwt8qazk|(CBUkgvb*>=<=!f0&2T(GA=LvbtK7W8i4C=^g zUbcaI+(78#2FqiP8z6i=rlM-E;pL)74TkE<5Z_WyuHjYdNJ{58C6aEZ<*0mlqOZ-6h@r~;eSZ!zH=holRWNsk2`3(Q)!E&ubx1N`K+)nB)t@aTCR6={cW7j~M9Jeksi}g&Ng>!2J zj46u{&_bpWY@4FKT+eF+udkjeQXZ+Nv|{Nhy%d(RKC}n3YeA8^KwFe~zKQekEXmqBT0IBh#*FdYxiX9oZReo+9BKIx^zV0^uHVkqg$M*j1Gy z%udfg?2%MEsNXqyBjR-4TaT+t~7~Q3WgXXmyGg&>efj8xI^3|jb z{PtQ)&@K3(Vo*F2$wPaG7psljj2Qf)F=tf#MqW8+Hwfes;Q&zL)2ycldKmaX0Jyve zv?86>GpjFn4@eV77HKDpKCpf#Zd4pHP&*-mN`R1U12Wug6v?Y*ZREb&>{`<0UEkq^ zV`uEcK;v?+aZfV&?l@JG22MhvI6B80Tar4v5d%wzanTbhgIZmuD$p=eRWMGTsKKe>amUAbpPKhvY6>{bw8rtzWkEcX&Nc^e{@>dW0(#LA5SJih7k2XJ0&K4 z#T)!Dm3bn=H`~S2VNHB|7u39Y>h)dx<{KhQE>r~e(gebxrD^Slw7z4Ngl-_H zI)2T+sPq|^>>j!aK$`wkEX@#ZIZoKq&e@-Y<7AKS;BAWEcjmXeW=(c$6@@P zedpdCJWzb*sj-<8-OPzHCz|=@ojh>gHCqBY5;Ze6bAp>WL4F*`Z1@vMA3%DZ6ze83 zh^rm5@HK*WX5Z0R^7Zec2WFGQgJB!|9#}z`R|ge z$7+a4e)DyP-aZ2%(@ZX)!_g5?yB`SyGz~*w-`0{D9?P{6%Nc{g*(P;mLiy)h%P}SCmeZR zwK@h>=0(-v81@KAIQST^(4a^{B*Qj1!i)txTYv{YutrCd@U1Rm-!WeCaVH&}`-M&> zxrM-6Zja~D1=1=nuDF&MT^1Y7N?`6}*P-n{iS+jKhx zazn3EM7QIQhuq`jhg*|PGH{B3T_GL}I=euP`j)py%r1Zegb3uKI`}Own{FqB_W&*~ zj?flWL?xf#ogxbf{POW$%pq|!-B^F?$;?$$Y}WEA$9o34aUUYKC`E8(u{B&&!f%n@X89>U&D zB-y)()!-~iaL9)R(JgeLH)t!8l2T%U4lKDC82n13nVoc?(%rya9=IXoyo*gs27+)= zC1^T=UK?5tL5w2l%Z}Nt_;*qeM{6lrS;WC6Oqt6d2u4WI(g;G{C1@!GAxB+PIFx`_ z!>*&si=0*WWqHIC|S1$)eNuU5swfd8P0S}2%7kFh#+xQ}HC^tN2U&^U_;{HI{VjsZfy%OTSrC9lL}NtVs3FW&SE2zg_0_%fpGE?3Hw; zi6$xx?e}E(lSshcr0%-HYav~aE4(@$f4jn~C9q-PiV0$L9G(kO z#etG+nR+ive9V@G>s1zm8C{B~jU6a@Z51&9@cXKYS)9LrIs9ui(c4sQ>xkN_V{Op@ zKFE`6i;BGemny%uxaHbQ$(2z@RKH`u7RMs~r#4q&xN{)+L+?!!CrQF>adYI_doshr z;4_NT)$rJMH?vNM$JP-(mO9d9 zqqgK&%VFgqTL88|F;VEc^^ESmq*)Dy%;1zt6CqodrUC0o9qt@q0iam7RGTy*EKq)$ zAQwv&&;=;);l)Tf=i|rxsm|Oi8de?b;vS|0+5v&K!;2Q-dS|rY0<22;s&ze){x77^ z(X@W#EP}d%0#gytD@sfT;M8*mE<*bBFcMP+nQ2WS_d?3cWT|_pn@m~CmxY5Ms-T`I zU;3i1CsAEwUamqt>xmm{MY@UZ1=L6Ioo)(BAaQy~pO5dKAHJu)7rqkPcM{xe=_~i|)cKkEIIRmYJ*b+h$dSH7mHz)oHl_ofcYB@_{hy z0-!;an<5$!^+8urw|HI5qS(wHH#2%YVro~Hx{8Lyf16>+buv$jWG3r{_RYX$8gjO3 z{-9Y)P3Gk8~FminAq8)u=Hb zbeA1eTrxUM)uisCtS@F(s{HOEy?A$rnXxsbGc;K-eKsrF;iX;@6WL6);3ZL;tq&i5 zNsObzyRY{Ym)SJ+S}#$d_|X^}i=Mk}=W<}A?P_zc>y5_5*vt;0L5VL1MKY7+SC57# zIvTxti!#NxH76Dyw>?!f^?J~K??#ZSb-hI=T;f&tWudIC`oK5QKGIm$*6{9^MHj|D zKcq&!D$4S(^PKKHKd_%QMjXP$1mptvoSy%95Mvxf&{#mdDtdr#f)O1i0S;L8rcOx)ZAqKE?#j(E~HwIl>=3juk%hy2xZW z?3?_is7zPR)O%Arz^Ct1eclxJ&M zWf7LkI9wPL&Us6eVEn^-`l4S zzav_d(U*D&=PqmVoFFzoM>PtHdTfL06ckx_3=fJsybEws7wCC`+7T50WJ=wXEjp)f z;K^WDj%RxU`0N3DWjLbpvc*lVA3HJsNW`z%;*H|z@p#dXuk@i6jYz5xObh);P7@yv z#AQh<`-s}bV>lU$!H^CHXq%!KvigcUi>JU-v6+QUfer>7_m5(j(pLmyu0YTi*J!H1 z+Go=uxu+mZPS&xP)ikH;umOa--^G}e2m=TeuX7(XIap8_!053>4Wwg>bOD^trzZCk z728LyqaYXR|4lb=t3ZE|LCp=|kj2#v1PD#i^N%V`%>(G_#!<$|DMq_#0HHCFjMT6= zTzo*wlSi)IjoW1CJ2v`1aw1bp`->`=4Tt-Sn_{}&J~0ZTENY^7fy51<-^|(U>H8kj)$vQQBfY?_&`JE|BK@kF89VH$RaEoGOxw8XB zT3Uo$*GJQr9VD8!D%Lb{zGz|EwJ$=hn<5z8H8BM5$WXznGg;kT7xWyziC&C+?j`?QtiPNDWUKB04fJEMBb49*5-k)S*s(`aMy;#=1yyEh81@A9{0Q*`E~i>KLbRM&BgM$f||MJsyN7-c_uInNcN#KQ!) zMvI0?xho7DuY^yrELfo)87*$Eb0*io!ja9bB`hnhWq?lqz=N(IN$`Q* zPOAl@!BT82~Gq7CghrGZ=?ro6B*VcmNUu{NCtoviqh#j5EW1^HSV= z{YGBXxLKqn-0pD^O_0vj4&4ND9JmQ?63m~d57UMysm&fS!D*Sq)l>_OhSV?G5Q}@O z$o~=7n9D_|l0jASp_W>~vWvp#7pstZoksD^F`{D=o6Tg!)0PixdIkKPFpNO1MSVx) zH>LCSOxT^!|IWHx@qMu$SC;(wzNnLYU?Z>L@iYS6k(sB#2cnuY)-61bpqW5QP*LW%5-CddkV zHg`1jTVyo#TVymnbV{1;iD`-B$)0OQ)8kLEM^nA0MD=7EDDDnac#RU5c-dSWg~5+j zN<)7UVG#g}R;u0OMa6XIR1SwB5fn=E4CY0BJSSy>c$DLq&T|vQ3n|XcX&x(I;P{N% zGeOj76}@{i8-24{L{9+8Y2VYuIIYO!r*DQQn>O7tMdD+nPVyQ11Q1n;jtAX4QG7%t z{Wwu9tsPTaQ@eE8wbg00J)35bx0CG=r*=#Ng-%?ll0Fnq#-9K;les5V=MTld{*&t* z(*YAb0SOau=h%*r)oI$|_O zPpYbug+EA#jPRpo1UumiTN3hmXWVZ>iP5q2Duv9FO^PF^FzRJW9DK6%ZgjXwt5Z=?x-r!~bA?7Y=s>@^Iy8h-0UMmquJS1K1o?YnQ?4&$!Q=xR-^tQAu?6`I2?TCvww*Fk%c95Nt5Dj# z_6XY{P{H8b@IQ0JGJN&rn{e5WMKcDW>#?b#V=*Gj)~TXgn*P`#^~*qF$x_Sce@qoU zaNer(G?9g4vhPh3ZP^a>(=?I6bB=`*r;E|7P0leomV)%4SPr~xiyC^&6pC-<>b6;;ysA1& zbXC94<5g-TqRA+UTU~wS^lgOFFZXQVa-#=lPM9?nf{*VcXYoOm+gGHk9kayEY_^J< z4ft$TZMJBHN88z=&3$|Hfd-qZ5Wb$~g*3@_QrM-?Vc|o%wYap}Yj^v=!|MEO@kB#J z$W8I61Sy>MV*p4gWq+thb0&)48jq6~=u+P(gW*_bbKYFF{S4cx#h-|hYTj&7=EjJ; ziK(~QK5~I#4YycBj&?XdiuKMB6Zl7m)wDUHR&aYva}d5>bI7yCPUktN8P(Ry~8D{iUT97IRV%vUyc)EetSTVi6+ zJ|^9$?vi$^@tGaWE$cWwhmC5g?Q=xg$0I!h`Xt8CoYa?Voh}0Dxd(cL9D$FP7;-f} z*@f>iLJ>kN%3~eHE&`86TA_-WN?RZc*RjnLrE6`7X(Yl|H!`-w4XV#PQKqtU0EfwG zR2T>nGu|t?+>Wnq48rj&d>BD3ohMp6gDVvE!KBwQ-LQ!#p68xb0!Ze@l#KAzC8K-o z6x6#hO-!MYr@G`7gJzj-k^IqX^$ZYo_~}@Rp1PQT za`!=^FMU)FtfZ0N;Lt4&1u<1c_N{c*PzMutux4WIRg>q7vbPn}xij7Vh&dW{M$apUxN#m1s}ATw-M>&&$&94} z?23v|fx0+fq~BXiA#>b9m`eh`g*3+#?zG&7{4?gRr! zBxdd~0Gh;fSrI)5jl%>me2^x+*sGj{(G|8^B+=2z#OcIwi$%-g8=D>5;|XrP66B<4 zV@rQ38l;fqaf4pNWw--CSzr^-zl!)cm zF~h4*zN$yVqD4n)-S0SDS%inkQyPga&LDjKNnC(y ze8ew+&+mZ2#QTCct1QRrZxZa-K=cW|jn8_o{RCgJ)#RG9PEB4aDw~M)dsN|4QHld} zaH%MpLD_K6wC@?tg6tiM6#A+niTEnZM4Pho5qG;?Hkr-G`Bdg>L!aKNtkg15I?{wS z%fyRG3(0qzOA?&l4>wvaUeRausfor4x?`bm2$<}-mEvC3Up31Y`l9K7=Zo@m{vT}> zZd>7x0B%D3)AYT^k@3skqCx|3U^IXzK6XwzAiBcYou&?mpxxV+Qv92^*vJ4I z36Qg1gplc#1Zh84udNd`OTdT(4KK>UHd?Qt#C0m;o2d9_eT^$xG`HJ^zEgj$6}LCP zrj@k5?6C*dHY~@mg&h$)C#aM*1kw}ETPI3#HcYMmT>OL2&s7yRh|KuKbo*Rxu4=wP zl;I0=)sq{Hb~wISmU?ufFs8d zWk3O5Jd59cokmZNG+I5qQ&iCmd?xkZpq-*dF`MyKJ4Lxn5GeIN?jMTerp<=#GL^Yo z+*)z-=XC2268U_GeLOyBzQZ93$ttalcQCr)Ub|u0gP+0HJ))DjkQ3;(y*R(f-_H%V z-Y0tL%R&kchgGP!a-TdTno$2%IV={?bN68}Sm0`E zm91EY8hHd(UO;CZ5p)AfIN>O4!>VneXco5tn!XJy)RaO|D-+BB$RR;t&RMh@qZh=w zDaxoTg%IlZsWL}I#cM?}BF?q3t^X3f(i%S4^0%7M&Ee%WijduJ~}I zgvg3DX`TUJs`DpBwS+743|Ss4^6_x>??id_z=4?hA^cbMvy(dY!|~5~x@wq#&LR(M z@yPEnn`LWV&!wIb z&#F7W7iF%)k#u3#cI&YyhLvYT>jyT(R0`q0s+677L5XdeT`4XPMo~U~R?NqB#c}6E z&EyfFiD~%#mL%uT3*UB5^krnQ+=4qBO(x9yR_H4+n8BOknAKC|Tf6Adk-zdvizh8YQP(eT@>` z^kM3oK1ewqt!44W%|&Xu=VKL~`kGRY4~Cai>jPYlZT-`){`gZgN|-C`YYRN;=J`fx zb=U8r<^yMUa%&Tvv-ja&k~CrJJWAd)dey87Tnp(!H@eQk;VAG~!?v1)y?5=^4Pq*7 zs^OP=OfCCeRIKbI#1<0?>EO~hJE7*I&<0Y%i@%Fof+U2IEJXK*&_|86^o=#a=w)3L z`mMSj_btGSF;Y5R?T0GULI?NY-*-ZUBKwRi(940%MiKri;??hXEx3#dG)?}DXsltg#h(Rt1cI%tZEBv2#AGD79jN8G4Z zBboaVH~4?TDoB;HrC(IQc2C%hjGF!+=lWHE8U8j?XA*uOMI3dLU0E;~+k+Agi%tTN z8!o-T?M5yRyN2Y8$w(nY%iV6=Im3+VkK0i&;`m7>h*UoIW)imzBsgo~nY^^G!c7Rc zivYM&puBt3zV!qlRM7E=b+2B*>?(5W38oTVbicdU>s5%rbuMO~ zo}{nFdC?{QB=|TupEbqgqy|Q!k}2vfvgwFG3f;V4Gyx_$CD0!{#W`3zt2zkmw-X9n zQBeeYB#9Gs4faR^Ro^roE;BMhlJ3VAM#e)aIo>p6DZ77&aA=#WTX;d8HjN5=Sb<83 zGalw&OjqsVjEd~6%8oNm@qyD-w|FC?%(UrnTp;ll1C5>?i7u9i`|vN~wjz#Co36f( zH*V)cXQ-N9``O8BJYRzvnvC-RV6wwpnu%5pZVYbst3SL(rACxIj`}5mdQN}U5Bhtz z({)T@bUY$as!f7Xj)tydf>GXU-zPb9h8mV&+~?fVLtQ~SIJ+w*6FWyK+@2#;GYEK) zWI-%rbhloIULf$f71lFG@Be+i>ChV#cc)Oukd4kot~VlPteM1sY4+tuW3X`BR}Rtj zabObm{YGFCxc5ji2|VW|8V{F64UwBBx_e#G4nt0yrpow?EIx0VYT`38lI*W#(EUQz zpXwQ(aU6%&TP7Jb>f^YBllz+U7cmEe{6#K$n381Fb}xE>UjtmikE;VoM$APIMzLpt zRMljoshcs*$=EH~xY>%FRg?YE-~Dm3Q?gOI4xP!MzK78>fIpElI&sBgKbLICPB>SE z_J9r9$K3+>dY=seyR!rCN$-H^9J7LF&2~E~o=%-pb}tBGFtM< zebrZ`jM_Z6uYyj=&lmPpl}j6q*>d%-(#GA7^&-^)h7G1lZs`|q>`PMYixvA)D*8f- zetp@TgGK#T+NjAsSAjCd)3+|^YjnaSA%eEgMZ-i>QRerhnMl4uy`3E@~_O(zMNe)tPceDK=l3=|-ja1AWoc zgZio)(~UZ{qJmiQ;$k5hLF#14VrSHVbmI-4-48osBb^2zGsBS7*=;k7|HR0!+PQ90 zT_ZC{Dw`DHVVum%n`sv>f4D$i#klWVUt0thIPy8t;{%Nbc?;q)Y3&+E0-s3}@YH5O z>LBWUxEYhX(#U?ARSl&T+sR%`Wqd85QX7T^WaF>VY+KwB;7 zun8Kpi{7jABm}>;gBF6n=~SiQu3;@_vVVV_#*c_GcCZS9Q~RsU<&AgP8r3=zbhc3S z&on;A4S4rgFe>uJT=l46q^s--hN<4IV04Y?8ZF+Rt!_)GXYSqI8`#MAJ^%manVh*Z=T13uX70?HGiPKCnLGGy z`rBQ>Ui#z41Lr;T7d>NHOv-hX9TR(^WP;R3EN2{anfQfC_V3^^Hj50hucl{%>^~V^ zBKtv!zS}P%pOLK5Ov~M<@>V3=n>-WI5vjQ7=hLh_2a-{&Uj1TakYx zb+%*h&;?UywhQpmxDW4bc+KHt+(=>zZ-dXoQuY6dNML;}6!4S%p<1kL_>@sb=c9cSMI={aP3gjf zP`Z4{6)Ik=#rE8n`in-1Cu_4oTGlABtu|{Fyz+DGh(bMA^oYl)-1>D`HB0us21vYb z15_x{0AfWQ78UBH_^wf6Zygr>bUun7P89ze9=SQ#QXl;#DHhZ+FTaPu;ejY7))?=SrD&ZZ-9#GGEqU$reN+0KH ziENm9Ld;8Kbuc3BNo3WD|B4e?3w(-eC$Tpz33xve2`Qyh0iSYWL!6Z?`C*6v8%nto z4CjFjBm8Xm&u9{ywWs$Ipqm8UFJlQdZHy^>_yHc8gv$L3Fl5%4&N3JJ2<)Ob>d>$+ zD$%^mS!6`eX!MuirO{~A*n3AK;?wD4#k2^Z zimU@As;wC(q8hVz0>+IQFP1lEHRJu&2!iQrUl+x9S)q+bDXBs_w;QwAhwh7u<>#33 zvj15{S6=#5<(Mig94iJjVTUYb@-knf7|@iJ)wYip!<(|5k;`pvCrD2FMotLhA^iAU zyxxqRC)RwXIZFnyCpIrpIhjys3-)hJh$$Q0(__4SoC?Ep4YF zIDuAzIBJ2}S{WEMM(8Sp)t4(WI-&^2#h7H)A-H(5Nx8gaHrr3f5juNb{X-nr z*@Mxer=Xc{PsZ#s)Kv)*opRv(=~G0#*6d^L$Eo7`)@-%5WQyqVD2q<eb(JSd&>T5gA0n8` z<+=JOdqwlOp1^!v%iJm+YR^9N{N9eW^FA%M+p!3LAjDJ9p3ScuRGbbegfml2e2ZeK?0U#|cWnCa*lEAxS=)=Xk5b2p;1o8t@;IBDgT-+;xwo@3dLD!z zm_lGebyOAeQrUPc2bvW92^V}H43L~8qwuvmXK2iJY{OMqQKoL zzC6Vfvsgn&OFx~(-b7ta&0{(; z5qj7wA6jS!(ml22vKLg(xAWO%n@E|*8mn7GIzWZxpX2L5&8awZNv9KY6W!(fOWc{q zqAFv%mpQX=2#6@qOsZQEE|#|!MdEyx6kr3l-+WfFitoJZZ8>QpbteA??pq7M`Uh=d z_5xPv*?Ss?7HuO9LP2TQP({Njb)$XEW7?SJ>A9hFW=4uYt>?fQG({Z?S<}ERFs5V+ z_=2n~#O(?GJFs#}rE zSTrUzSBewu$f+F-%~d^BgXw(|5~BlA%N~RfO}{0}V{8S$U)ojx&d*6iyg`ja`!i-*z$txkdok-8xOGyktz)4`o{u78%o5i2UfoXGG(4T~JDf<=IVihc9GjI{v&}Gb>;A28?T(QwCq@6CeVM-i%-@S~LJo0{d8LO$z z6BU+YZTz!nxtz7o)~*vD;gDDZAG4%U-b8AW7z9gN9QuXi)9=z0g6>~6G_XB8ma|i~ zN~>>?KpCwG2?lZH7q>_@*}~Ce@|;aEQ3#)X4}w^i&f+S3YeV<7k!miQ-T9TxO&cP6 zY~rtUR=KUOifA{f?+xp9W;-Hv!%nzWkTBNOJ9`&~9>S6A{W5!{#-K1DN7JblSs=#YeBD{lpMlwN^KYgpx8{!c#%oo~sB0Q8XVlybf99nI04rl#Kc zg7qb|QY!2Sm?llExAIbqn7M{EQZvN9HKnyj&i|r4Zs9{vdV5q8Z)CFQK$P0+rPRHR z;-%COlTzqHcQ^HYTWPArz)lOg>l$(G2l zB=686l-oIhhlwp-hM-i7>unTZMKR=3feWDd3hgm2~X8pZLlY7-|jY?YXb15V=nuWV<;VjS_n zYDa#a^)ZEF%R$z>=gc$c*Fh*w-d085r8wteqez#5U@DrME6ydP7@AIaG_V_?s&gA5 zZuW(e*bdW#ZP4w%V|!o6p<9xx=%1ev-49_8Yeu0Ma)`C=w(ks09S2clEQk=R72n|_EAmtU%zX5z+~Kxt*bj8PyB?c;#r4JBry#PlI}4WlhwtW7T{ zfHEg}sVX)-vmlwS2{Rrs0wQQSF#av1Wc>63apf>;tj#GDwT^&l!wN;mBdmh9uu%Nx z2&<`~CC49OQLwS_?Gg4?B(BuL+@_>8h3ZGyvlbC^;N|;rk#d~X5$lh#5bUmPKgw!0 z!eKNt437EI2#<657LkVa!y<)cQXwn5P`Hn=gomM~4*iG!!;5>#9uOK8>;F74;uz~} zDQ@7bipAf@*ncd7G%07p21HdcI+v9R^=?O{o)zgU+7;AgOY((gB_MAoj5|}Pi z&x+LJ?BkSg&yrz|_pyyCiQ&>>!ODJ_NMKE|Wq67B3H90luPM^@&4%ccw+G?UVqQ!A zH+YG)fqfZXIeTrX-+@<6XhFdajG6LAGubnk^R{~55{xer%THkQWmS>bbAtAli$wHq zB{osKgsY`(D-tt)W1j}3Rh>LYjh2cbd8}6BTWDSeQjp#P)Z59Do1YMYshBHH@(Ot6Vzi~c30|Tmq)(VCNfHkbznx^8 zEUh0{`nLa^*nA4>uesvF0gKU36YdKf^j%C=!^Zv(AgK0#;Sc6SWIi8!hL&=wHAZ++EWZ1*{e}0gn~1 z$?7%Hw=gg*rk!Qc+LsqZMHmRF3z0W%Sdz%wPM9|NKqQ&xhky*s%kOsv$)(2qcIo7wz2H3uk z7Yt<51lARXo_G|=&DQjTm&EhuS@YNYEFEE4zsSKZf&{atFVUj8rCtO``kj{nA-L49 z0g{;WCSV!BA(yFPTIwSJLjcDDl4Nx9WpVjDWN`Du^A}jx2+I9u${lsmCtnh4FR)RG z^DoMUI<99Y4`fmLV)8iQSw^0U@T?+_3m(r!G4LX5R2eVDYBua0V=_x0NN@yAYw5cs zHeF-~!d4?I%I>U&(RS`7)~jSlh0Cl?`0pmpbxogqQ9ON_)w?Tb6oMj4VA*ink*lm2 zf0@+~7cR3hcfAl)%;KP4P_GzTFe^pdVm1kFakQ9q3Cp}_lxHTyOyc3+Sxil|j)M*( zp@o8-gJZA{M6!~>R*`-v8bu8Lokce~chN@M6ApdWO`|35Ab==76fHoM9sx*{9}P$? zH2#v<_B-nY%2)csr2I}~jZ#R;r~bhbL)OT4z^$Po;}7<&HvO{bafJ;CTbggvZ=ba3 zvx4*^o)cG4he#agQC-2XiUA_0^zMz3QTGhJ#tPMNFLIh)UzIODx{fS$vEw>~cDhKo z!5#;A?*2iU4>Gph2nZMYdDwJD2_M2>)YUyoq2X@gdR#_X7FSgyn_Q^q!aGNzD zMc5v8F{wS)^)5fy^py3kV zS+=FEw=1|UI{3m<2KIF5Q=gK|jkzCs71V*9&q>LP<+B%{1W4k?Q=X|vH#lfZ9qm(` zKg5NKtfE-PIrp3kJQJp_ zG{VzNm~Fy56Q-^*<4u@t!aNhErkn95%r;@32~&TR@vymKc=T)&=9w^cwV8kkvrU+1 z!c>nLZ^CR7=9w@x!;Cj!wh8l0n7W4IJK~Zl=>Y{ym}kP&Ofvx!W}7h2gsE9Z{A>d{ zid1EC%85deUym1609kuuDu9IomT}U&IGrU;6Z!SItC|_<4%M9lUHJE5|JZQgRs7Jv zaVPQy)Gm~O8^Hr*8vO^L=R5sL`Qnj=jnWtZ?Ho&1zW88@uZVc$cTYTwATeoEnM!B8 z;&KdtLd-9TJQAnr3KBUTsb^SBcfnE+(K3n00_T+^UIk!K5*RH_%t+$Z0J4&J z48TFW5AY`fUox{nCRqKkfv9CL72T}8S!~z|7>N1?Q?Uu$RYo^d#|NSqR4rGSFH-bv z!0VLrW#I58Di$}8`R6p?wNZ@g4R}p}>J4RJtA@NTp5ARJi$BT$-!N%1$kR1O~f|l|zz-c8~ z&!jiPh@N00R~Rvxr2xJbLAB8=L~*;H;u9P5iYeY4h}8zb3X+dey%9(pS%=8?slySu zsKltv4Q$GJv-8GC0-G%64Ra3cj|vhA%@EX-4T!~Q-~^G-gon5HBg)qCq9Gf4(X5ac zDHwqe7+6z_g%klr0UxG$Qk(GXa+p8p?Rd*TLahm2q1L_DguQax5wuG}pX-vcHz}fT z$4fCUJjD>|K{kq$DR-L}9*Gpqy*>96e1f(#SEN6|A4?vWYl96^jfAA(*yV68B56yC z{&Oyt2;BSh3!b3JhaV}rAIz0nq}t;!B$FqaKgnOVjW})-Yo6du#qKA0NX0@z$3>?g z3Xm{^%f&c`*TkhKc^BI@1Gkw-Y0rZzet#Ue%!{i^+z`T@-JUOr*nnLGV}3}=#QVid z9eCAh>C%3$vloh)A-(d1Jt;%llJx~*S_fXe*06Qh+*c&dNa?lW+*oUDm-m7J95JT@ zkBo3O*I8H)Co8~^dn}mNk@rIbzTc6TVrqGqmDCnf%V+&mhN)$jIMb1rVy$|lH3iEq zUy&~b-@YepoJi}}rQD)D#+np*Pl+wR3%>L`>!0FnG$F$9jI)hXs_=1mgfkk{L z9c-m1K1wOPu&_IbI!$d{=&*^Ng-RkuQC9%w(gZ)aZ7YbRCF zm-=7(x-)N}O*txdcjoO&GiqG_S>9SbC*FUSr{m^<_~-b+xE;8Gj(A^M`wwk{>5Xa2 z7|LmWlf|*m^D8iA7WD$J?lox)nTtQZ?F;+?Z^Yd%CdA;dHT8l(31`2+qpM6mY{P94 znCl0^_~QjWAo|3wFmM&5UjP94f3-PBsruN1Vo(=ex9)rdGBTw|_NMiP)+gkOAl4ga z-$|a0zPG;%cWXK8#3Nntz1%ChcjfU|usqxqUxq2hQ>uK@CTtL|bmehS$Dv4Vukom@ z-5_7pa@NXdEn_V`R}~+ml|9&>&DxGb5gsN#(lY^aNlr08%ge4 zC2n*J$bHYeWaYjueXn^2y~Jy%HA$n;GJOtwbaFwC*!nV0vaARK<1Nb(6}oem1uydM zC3_?-+0&MIUhK~2F$-c~>EfmwQSCKe8S zL2v%ReG^=rBeHszpmN}hvvNGQd-Ex_`z8n~uX>L+RyT>W@A2jq^uUX$9XX!XefbyG zbOW=)?SQ3yz;!#sD1r-d_sS={g|=j;xJGcr zPLcFqz#n&tcmB)UR9FLbg2#wbNV19{GD5jC#P6@Q%S0u_Vrx@}if+>QkKbR*(q6RX81QSrk zkg};>gL&OZ&kiF3_VGbWBVxf|-Y^IS#2Z=SB zVv(PDz8k`~s@k$0qR&wNGF5ZeP+nEt?I{|{i_{cir7}3M805g=DeS3{;wpvFAx0cK z!Hn1+Mprc9)F*97`S8FUBuvIhYJXTL!cZLA*Ye@v^e1UZV-o8R0}G2z!}*GydCO_a z;gWjh@W*m8`JR^L4}>3qn2lVp1j3I%%u8<>*5~Ex@FS369Ln~;zE-?Gg1_zdN#H@i zZ3@nP;)W-4+*97i`M9;~Jr_rCNOTT*z8J+jXkE;5$;lA>zB0)Gl*v~f8G!Qm$|3_$ z7GF7J0LmmMR0(5vQ}rLwV+^lXW^u7*S{TQKr&xSFhPUYMEhr`|Bx}*hYGC?ux)g_c zCkSQG@Zbf~8fxb~cpj_avn;m)KkKb)PsGCXqVFBwiQ=&rMbcQF)b0N@3tO8~)6X2s zn{~N6eUfSUi}Np4*eoAA^J2z0UOfeP@~|bu ziL@bTV8gS@ME#3UHOPQ*_7Op_Co5Gt3_Mz?coB!GCL*R;*&+IAytE8?~FQNjDgKG>6JQoq_an=dsvMI>!)B&8cYb&!eqOH*wxV)Mmv1Z`o~iA1O|kj zH%PS6h9R(a3hB|Io{(Nb08Yl4p-%G-UByLatX=5TFgbzqv9M=-d;*VuaHPx~gFR{6 zI`?5lh}Tu;L5>v*;2)X;2g;x{2g4Dx5hK3}_y==E;^B#WBJ36KnaCg0MxGT>lQ1dX zCt6P8FGV4D2K7(i-UW27HS5Yc;24OL)4V?0wU96SXE{Fd^tYfVW01e&v)79``hOmUg%9FSf6b8 zu}qJFuF`DFQ>eb!^5oE07h>c^<`Q*dp}0AP*Ru};YYkg3>QCjZ|GyW`EE+0n77ISJ zNbsRJCMh-=K5=;}f7mRLr{Od{l0&$i^$oua@WTwuw)%MTX7KJo;;H$(n>Mt-vuHm5 zO4WuJh{wLe5_Up?81o(PuWl80zT=I{ZMDVFmqva9@eQ)W`o-hlW7+_%gw*f(huW+H zapQYl4{66Q;I%_GoYC~d5&GN$@!|shdW2IUEBdB+lBSv`a{+%#g|@kS5r2a{f07&1 zCNd&IhJ^KeX>p$}`N}rBihn!AP#uBMVN@AtQgfKTYu;C&Y#|qpHzvRLe1(vGuqPI) z5x?GC$}9E$<_wv>2F5W}TEKBW6{{L*OXmCFZ8Jyz%+t(K8hr8P2;C+lN9ui82upJZ z*itt9IHWRo8LzJvizUmr%e;=m=s1RTc<jUMKdiQU(TIt-|%n4ma0Zy^mA(Wi=(n1s?FC zWdRKXoFy_;Kk1D;fXL7iksI@d{^8O zgxRfO_;5rxw@8gJU5Qm~$@27_j$_5iF5IeV)NM81DrTA8n!^=7M z^H{~~(k`X{<8;F+brK)n>3LpeE(iYOkB66mcGVs&1{bLk8^I5?aehVv+r(x-_=8F; z@bD`3OmvTMhe-19=e=>2EE$6j>@Jx7cCG7h%=E4N&RgG?HCEpWB z#`NG$Rti}zE@trhRgZGIdetZ>+J|)9X=Y2M$GoKZ8s5cWM505(sNUCW_)v&5s%7#j z(TUI*bdHvayUT~92Gb|lxmX(VkHM92s(5viR*BO*=!$qLlUENWo4MCutzUee$>XXw zr7;xy5ID>y?f4%eJN}SC_oi6~z7O@YcpJ>WKFH$TdNy9AD4L=u$$$*717I*7191f_ciZYoX5|~X82`nav1XdG70vkorT3$2djRHIZoqm)ZdDTos zc?|AJxN&g%;L2wyN*B17;j$&3K0nkE_ZA+%hT9FNtW}goaQ}gu4mS%f&p+!1Kq;2leka97~sx1rE*l=B$CJVn16=5Wt|_YhpU z?bw-x8ws}=j?n%|frpAWKiuIivqMoj!A*fX1Q)YYQM$tsVj5sF@D2cPIsCR=it+;7 zLbzLSPv;nTa{*I`}qy%PSY-HP%t+%dREepZw@aFia~gM9JDN=XM|c{~WXn7xWJ z6VA0yQRcxBV*D>g0rP>^82*poGU0B+CGS_1p>Txv6ChP&N`%9G4E|~d6s0HJe7Him z+P@ljeE3-CVw74+YVfZ&6Q(jJZw#{p7;`v3{?Di90cuXRXK-i2ER_Xk{)!v@~R zfOmj5-|27-ZaZ74F$QML7sZcrTs=9x_fZ>xg+Bekv4Y{vG^9aCJ{fJUz9X zW0pqUtS%4B0Y{DkB#xT}NF22akT_-sATh*mfYji{fYhLB zzR_Og04cnN`TUUi{H*!>1|YS=2Y^K8QTY`OI?l|;!mhldSUpgvD5v1=h=OchJ(QhA zzk#cKRzz&%)k2csZw1$1G~LLnhm3%C8r%-?3LZmG!+Qm;c99qX?9in}in0L?&&xLQ zxDbEh$2amC*2F_MaknM$CYyK-OX5B8Xia<^u&s$_ZsN5piC@^n8(9;twV5}xB>u)` z-pG=88Xm2Q9|yKI@k(2G3rpfJZQ+kv6JM}}x3(mH1<{toTWtllg)C#X^46BbJ%_jQ z5j>^MMPux552%8vp9TyDd;!n~_^Jut0t~_Pdw`*U9{@T4KLzA~setv6z%W2Np1%YP zQuGOR9re;LE6O^!EpYVf3P@S?1q`P=hQmW?%=Db!#fREE?Kct515&)L*odzTh+drf zprh(j@KPH80VI^cCdxDeW%+}SslnI(P?Q_j!M!&;8-C$ec-ek86y*yz0rxH3D$nM_ z-0mtn-=QiC;FiLzf?MM`dV^2vpicL^|F}IIH$BAJ!`$fY5HC1X>h&gsIL=Wk2)S!; zp_fEjTYGHClodc?I9BJ`+14J;c@8R(CvrR3tHmG4GNSSTn>0d6Tfxzf2uo?S#dBTZ z>S(W)n1-DxN@g+ORCOsLGEHQvF8wy)IR`ER{&z*6j`r&O7#`1wi5=~cmEJ?;ld7V( z0Db`XDcoSVRI#q3J-$3`ZDnedC%LL1hWm!N-qBwFiLLNIQ$tZA5#D&VqErE-EQ#6# zsiCsrsPQ-ag@5=F!%#X0@!ZdRx1V_LDSP$U;|RKHq7mN^TIk=3GQmV!E|wBn*e#44 zaP;$1qXnLm;*F9Ni%URDNk&i?6OB@%UmsY7oRF7n(@L z$1em%BKLZcQxR|%@-4(s6Jtl(@n$)C13#+vWu)A%{G%9T;JFEhv&Bjf+!c}bw7qq$ zj7``vyn`QJh80Gc$dt{RBZR`}hj19FbyO8kdLH~C`EwNI?YYzp`c=X~0%Nw~%JNEP0{e+k=OaW#Pgw;h3x&7S zV3*rAkYaCb(<(UB7)77A-5(7L|Bgv#J?oya?+p=qU$jS8=<(XSz21A{%{P?(1A6ut f(Ce-Ddi3enOX)0re$E~zuFSGWdA{#v&+YX;2?+%K delta 59650 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.10.0" }, - "scripts": { - "test": "xo && ava" - }, "files": [ "index.js", "browser.js" ], + "homepage": "https://github.com/sindresorhus/md5-hex#readme", "keywords": [ "hash", "crypto", @@ -29,11 +62,14 @@ "browser", "browserify" ], - "dependencies": { - "md5-o-matic": "^0.1.1" + "license": "MIT", + "name": "md5-hex", + "repository": { + "type": "git", + "url": "git+https://github.com/sindresorhus/md5-hex.git" }, - "devDependencies": { - "ava": "*", - "xo": "*" - } + "scripts": { + "test": "xo && ava" + }, + "version": "1.3.0" } diff --git a/node_modules/nyc/node_modules/path-exists/package.json b/node_modules/nyc/node_modules/path-exists/package.json index 5477ee8d9..8abcc8103 100644 --- a/node_modules/nyc/node_modules/path-exists/package.json +++ b/node_modules/nyc/node_modules/path-exists/package.json @@ -1,23 +1,56 @@ { - "name": "path-exists", - "version": "2.1.0", - "description": "Check if a path exists", - "license": "MIT", - "repository": "sindresorhus/path-exists", + "_args": [ + [ + "path-exists@2.1.0", + "/Users/benjamincoe/oss/nyc" + ] + ], + "_from": "path-exists@2.1.0", + "_id": "path-exists@2.1.0", + "_inBundle": false, + "_integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "_location": "/path-exists", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "path-exists@2.1.0", + "name": "path-exists", + "escapedName": "path-exists", + "rawSpec": "2.1.0", + "saveSpec": null, + "fetchSpec": "2.1.0" + }, + "_requiredBy": [ + "/pkg-dir/find-up", + "/read-pkg-up/find-up" + ], + "_resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "_spec": "2.1.0", + "_where": "/Users/benjamincoe/oss/nyc", "author": { "name": "Sindre Sorhus", "email": "sindresorhus@gmail.com", "url": "sindresorhus.com" }, + "bugs": { + "url": "https://github.com/sindresorhus/path-exists/issues" + }, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "description": "Check if a path exists", + "devDependencies": { + "ava": "*", + "xo": "*" + }, "engines": { "node": ">=0.10.0" }, - "scripts": { - "test": "xo && ava" - }, "files": [ "index.js" ], + "homepage": "https://github.com/sindresorhus/path-exists#readme", "keywords": [ "path", "exists", @@ -30,11 +63,14 @@ "access", "stat" ], - "dependencies": { - "pinkie-promise": "^2.0.0" + "license": "MIT", + "name": "path-exists", + "repository": { + "type": "git", + "url": "git+https://github.com/sindresorhus/path-exists.git" }, - "devDependencies": { - "ava": "*", - "xo": "*" - } + "scripts": { + "test": "xo && ava" + }, + "version": "2.1.0" } diff --git a/node_modules/nyc/node_modules/resolve-from/package.json b/node_modules/nyc/node_modules/resolve-from/package.json index ee47da7c1..2b18849c5 100644 --- a/node_modules/nyc/node_modules/resolve-from/package.json +++ b/node_modules/nyc/node_modules/resolve-from/package.json @@ -1,23 +1,52 @@ { - "name": "resolve-from", - "version": "2.0.0", - "description": "Resolve the path of a module like require.resolve() but from a given path", - "license": "MIT", - "repository": "sindresorhus/resolve-from", + "_args": [ + [ + "resolve-from@2.0.0", + "/Users/benjamincoe/oss/nyc" + ] + ], + "_from": "resolve-from@2.0.0", + "_id": "resolve-from@2.0.0", + "_inBundle": false, + "_integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", + "_location": "/resolve-from", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "resolve-from@2.0.0", + "name": "resolve-from", + "escapedName": "resolve-from", + "rawSpec": "2.0.0", + "saveSpec": null, + "fetchSpec": "2.0.0" + }, + "_requiredBy": [ + "/" + ], + "_resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "_spec": "2.0.0", + "_where": "/Users/benjamincoe/oss/nyc", "author": { "name": "Sindre Sorhus", "email": "sindresorhus@gmail.com", "url": "sindresorhus.com" }, + "bugs": { + "url": "https://github.com/sindresorhus/resolve-from/issues" + }, + "description": "Resolve the path of a module like require.resolve() but from a given path", + "devDependencies": { + "ava": "*", + "xo": "*" + }, "engines": { "node": ">=0.10.0" }, - "scripts": { - "test": "xo && ava" - }, "files": [ "index.js" ], + "homepage": "https://github.com/sindresorhus/resolve-from#readme", "keywords": [ "require", "resolve", @@ -27,8 +56,14 @@ "like", "path" ], - "devDependencies": { - "ava": "*", - "xo": "*" - } + "license": "MIT", + "name": "resolve-from", + "repository": { + "type": "git", + "url": "git+https://github.com/sindresorhus/resolve-from.git" + }, + "scripts": { + "test": "xo && ava" + }, + "version": "2.0.0" } diff --git a/package.json b/package.json index 00a96acd0..40e277b4e 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "vinyl": "^2.0.0", "vinyl-fs": "^2.4.3", "webpack": "^4.19.1", + "webpack-bundle-analyzer": "^3.0.2", "webpack-cli": "^3.1.0", "webpack-merge": "^4.1.0" } diff --git a/src/crypto/cryptoWorker.ts b/src/crypto/cryptoWorker.ts index 3e71794b4..11b21190d 100644 --- a/src/crypto/cryptoWorker.ts +++ b/src/crypto/cryptoWorker.ts @@ -549,6 +549,76 @@ namespace RpcFunctions { time_eddsa_verify += timer.performanceNow() - start; } + /* rsa 2048 */ + + let time_rsa_2048_blind = 0; + const rsaPriv2048: native.RsaPrivateKey = native.RsaPrivateKey.create(2048); + const rsaPub2048 = rsaPriv2048.getPublicKey(); + const blindingSecret2048 = native.RsaBlindingKeySecret.create(); + for (let i = 0; i < repetitions; i++) { + const start = timer.performanceNow(); + native.rsaBlind(h, blindingSecret2048, rsaPub2048); + time_rsa_2048_blind += timer.performanceNow() - start; + } + + const blindedMessage2048 = native.rsaBlind(h, blindingSecret2048, rsaPub2048); + if (!blindedMessage2048) { + throw Error("should not happen"); + } + const rsaBlindSig2048 = native.rsaSignBlinded(rsaPriv2048, blindedMessage2048); + + let time_rsa_2048_unblind = 0; + for (let i = 0; i < repetitions; i++) { + const start = timer.performanceNow(); + native.rsaUnblind(rsaBlindSig2048, blindingSecret2048, rsaPub2048); + time_rsa_2048_unblind += timer.performanceNow() - start; + } + + const unblindedSig2048 = native.rsaUnblind(rsaBlindSig2048, blindingSecret2048, rsaPub2048); + + let time_rsa_2048_verify = 0; + for (let i = 0; i < repetitions; i++) { + const start = timer.performanceNow(); + native.rsaVerify(h, unblindedSig2048, rsaPub2048); + time_rsa_2048_verify += timer.performanceNow() - start; + } + + + /* rsa 4096 */ + + let time_rsa_4096_blind = 0; + const rsaPriv4096: native.RsaPrivateKey = native.RsaPrivateKey.create(4096); + const rsaPub4096 = rsaPriv4096.getPublicKey(); + const blindingSecret4096 = native.RsaBlindingKeySecret.create(); + for (let i = 0; i < repetitions; i++) { + const start = timer.performanceNow(); + native.rsaBlind(h, blindingSecret4096, rsaPub4096); + time_rsa_4096_blind += timer.performanceNow() - start; + } + + const blindedMessage4096 = native.rsaBlind(h, blindingSecret4096, rsaPub4096); + if (!blindedMessage4096) { + throw Error("should not happen"); + } + const rsaBlindSig4096 = native.rsaSignBlinded(rsaPriv4096, blindedMessage4096); + + let time_rsa_4096_unblind = 0; + for (let i = 0; i < repetitions; i++) { + const start = timer.performanceNow(); + native.rsaUnblind(rsaBlindSig4096, blindingSecret4096, rsaPub4096); + time_rsa_4096_unblind += timer.performanceNow() - start; + } + + const unblindedSig4096 = native.rsaUnblind(rsaBlindSig4096, blindingSecret4096, rsaPub4096); + + let time_rsa_4096_verify = 0; + for (let i = 0; i < repetitions; i++) { + const start = timer.performanceNow(); + native.rsaVerify(h, unblindedSig4096, rsaPub4096); + time_rsa_4096_verify += timer.performanceNow() - start; + } + + return { repetitions, time: { @@ -558,6 +628,12 @@ namespace RpcFunctions { eddsa_sign: time_eddsa_sign, eddsa_verify: time_eddsa_verify, ecdsa_create: time_ecdsa_create, + rsa_2048_blind: time_rsa_2048_blind, + rsa_2048_unblind: time_rsa_2048_unblind, + rsa_2048_verify: time_rsa_2048_verify, + rsa_4096_blind: time_rsa_4096_blind, + rsa_4096_unblind: time_rsa_4096_unblind, + rsa_4096_verify: time_rsa_4096_verify, } }; } diff --git a/src/crypto/emscInterface.ts b/src/crypto/emscInterface.ts index 61289fb75..dcd16e633 100644 --- a/src/crypto/emscInterface.ts +++ b/src/crypto/emscInterface.ts @@ -90,7 +90,9 @@ interface EmscFunctions { random_block(a1: number, a2: number, a3: number): void; rsa_blinding_key_free(a1: number): void; rsa_public_key_free(a1: number): void; + rsa_private_key_free(a1: number): void; rsa_signature_free(a1: number): void; + rsa_verify(msgHash: number, sig: number, pubKey: number): number; setup_fresh_coin(a1: number, a2: number, a3: number): void; string_to_data(a1: number, a2: number, a3: number, a4: number): number; } @@ -115,10 +117,15 @@ interface EmscAllocFunctions { rsa_blinding_key_create(a1: number): number; rsa_blinding_key_decode(a1: number, a2: number): number; rsa_blinding_key_encode(a1: number, a2: number): number; + rsa_private_key_create(len: number): number; + rsa_private_key_decode(a1: number, a2: number): number; + rsa_private_key_encode(a1: number, a2: number): number; + rsa_private_key_get_public(privKeyPtr: number): number; rsa_public_key_decode(a1: number, a2: number): number; rsa_public_key_encode(a1: number, a2: number): number; - rsa_signature_encode(a1: number, a2: number): number; rsa_signature_decode(a1: number, a2: number): number; + rsa_signature_encode(a1: number, a2: number): number; + rsa_sign_blinded(keyPtr: number, msgPtr: number, msgLen: number): number; rsa_unblind(a1: number, a2: number, a3: number): number; } @@ -159,10 +166,15 @@ class EmscEnvironment { rsa_blinding_key_create: getEmsc("GNUNET_CRYPTO_rsa_blinding_key_create", "number", ["number"]), rsa_blinding_key_decode: getEmsc("GNUNET_CRYPTO_rsa_blinding_key_decode", "number", ["number", "number"]), rsa_blinding_key_encode: getEmsc("GNUNET_CRYPTO_rsa_blinding_key_encode", "number", ["number", "number"]), + rsa_private_key_create: getEmsc("GNUNET_CRYPTO_rsa_private_key_create", "number", ["number"]), + rsa_private_key_decode: getEmsc("GNUNET_CRYPTO_rsa_private_key_decode", "number", ["number", "number"]), + rsa_private_key_encode: getEmsc("GNUNET_CRYPTO_rsa_private_key_encode", "number", ["number", "number"]), + rsa_private_key_get_public: getEmsc("GNUNET_CRYPTO_rsa_private_key_get_public", "number", ["number"]), rsa_public_key_decode: getEmsc("GNUNET_CRYPTO_rsa_public_key_decode", "number", ["number", "number"]), rsa_public_key_encode: getEmsc("GNUNET_CRYPTO_rsa_public_key_encode", "number", ["number", "number"]), rsa_signature_decode: getEmsc("GNUNET_CRYPTO_rsa_signature_decode", "number", ["number", "number"]), rsa_signature_encode: getEmsc("GNUNET_CRYPTO_rsa_signature_encode", "number", ["number", "number"]), + rsa_sign_blinded: getEmsc("GNUNET_CRYPTO_rsa_sign_blinded", "number", ["number", "number", "number"]), rsa_unblind: getEmsc("GNUNET_CRYPTO_rsa_unblind", "number", ["number", "number", "number"]), }; this.funcs = { @@ -189,7 +201,9 @@ class EmscEnvironment { random_block: getEmsc("GNUNET_CRYPTO_random_block", "void", ["number", "number", "number"]), rsa_blinding_key_free: getEmsc("GNUNET_CRYPTO_rsa_blinding_key_free", "void", ["number"]), rsa_public_key_free: getEmsc("GNUNET_CRYPTO_rsa_public_key_free", "void", ["number"]), + rsa_private_key_free: getEmsc("GNUNET_CRYPTO_rsa_private_key_free", "void", ["number"]), rsa_signature_free: getEmsc("GNUNET_CRYPTO_rsa_signature_free", "void", ["number"]), + rsa_verify: getEmsc("GNUNET_CRYPTO_rsa_verify", "number", ["number", "number", "number"]), setup_fresh_coin: getEmsc("TALER_setup_fresh_coin", "void", ["number", "number", "number"]), string_to_data: getEmsc("GNUNET_STRINGS_string_to_data", "number", ["number", "number", "number", "number"]), }; @@ -1357,6 +1371,42 @@ export class PaymentSignaturePS extends SignatureStruct { } +/** + * Low-level handle to an RsaPrivateKey. + */ +export class RsaPrivateKey extends MallocArenaObject { + static fromCrock(s: string): RsaPrivateKey { + return fromCrockDecoded(s, this, emsc().allocFuncs.rsa_private_key_decode); + } + + static create(bitLen: number, a?: Arena): RsaPrivateKey { + const obj = new RsaPrivateKey(a); + obj.nativePtr = emsc().allocFuncs.rsa_private_key_create(bitLen); + return obj; + } + + toCrock() { + return this.encode().toCrock(); + } + + + getPublicKey(a?: Arena): RsaPublicKey { + const obj = new RsaPublicKey(a); + obj.nativePtr = emsc().allocFuncs.rsa_private_key_get_public(this.nativePtr); + return obj; + } + + destroy() { + emsc().funcs.rsa_public_key_free(this.nativePtr); + this.nativePtr = 0; + } + + encode(arena?: Arena): ByteArray { + return encode(this, emsc().allocFuncs.rsa_private_key_encode); + } +} + + /** * Low-level handle to an RsaPublicKey. */ @@ -1470,6 +1520,16 @@ export function eddsaVerify(purposeNum: number, } +export function rsaVerify(h: HashCode, + sig: RsaSignature, + pub: RsaPublicKey) { + const r = emsc().funcs.rsa_verify(h.nativePtr, + sig.nativePtr, + pub.nativePtr); + return r === GNUNET_OK; +} + + /** * Unblind a blindly signed value. */ @@ -1516,6 +1576,16 @@ export function ecdhEddsa(priv: EcdhePrivateKey, return h; } +export function rsaSignBlinded(priv: RsaPrivateKey, + msg: ByteArray): RsaSignature { + const sig = new RsaSignature(); + sig.nativePtr = emsc().allocFuncs.rsa_sign_blinded (priv.nativePtr, + msg.nativePtr, + msg.size()); + return sig; +} + + /** * Derive a fresh coin from the given seed. Used during refreshing. diff --git a/src/i18n/de.po b/src/i18n/de.po index 94ad58bb6..1f6ee9010 100644 --- a/src/i18n/de.po +++ b/src/i18n/de.po @@ -27,28 +27,38 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/webex/pages/confirm-contract.tsx:76 +#: src/webex/pages/benchmark.tsx:58 +#, c-format +msgid "Operation" +msgstr "" + +#: src/webex/pages/benchmark.tsx:59 +#, c-format +msgid "time (ms/op)" +msgstr "" + +#: src/webex/pages/confirm-contract.tsx:78 #, c-format msgid "show more details" msgstr "" -#: src/webex/pages/confirm-contract.tsx:90 +#: src/webex/pages/confirm-contract.tsx:92 #, c-format msgid "Accepted exchanges:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:95 +#: src/webex/pages/confirm-contract.tsx:97 #, c-format msgid "Exchanges in the wallet:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:217 +#: src/webex/pages/confirm-contract.tsx:219 #, c-format msgid "You have insufficient funds of the requested currency in your wallet." msgstr "" #. tslint:disable-next-line:max-line-length -#: src/webex/pages/confirm-contract.tsx:219 +#: src/webex/pages/confirm-contract.tsx:221 #, c-format msgid "" "You do not have any funds from an exchange that is accepted by this " @@ -56,54 +66,54 @@ msgid "" "wallet." msgstr "" -#: src/webex/pages/confirm-contract.tsx:320 +#: src/webex/pages/confirm-contract.tsx:322 #, fuzzy, c-format msgid "Confirm payment" msgstr "Bezahlung bestätigen" -#: src/webex/pages/confirm-contract.tsx:330 +#: src/webex/pages/confirm-contract.tsx:332 #, c-format msgid "Submitting payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:341 +#: src/webex/pages/confirm-contract.tsx:343 #, c-format msgid "" "You already paid for this, clicking \"Confirm payment\" will not cost money " "again." msgstr "" -#: src/webex/pages/confirm-contract.tsx:355 +#: src/webex/pages/confirm-contract.tsx:357 #, fuzzy, c-format msgid "Aborting payment ..." msgstr "Bezahlung bestätigen" -#: src/webex/pages/confirm-contract.tsx:357 +#: src/webex/pages/confirm-contract.tsx:359 #, c-format msgid "Payment aborted!" msgstr "" -#: src/webex/pages/confirm-contract.tsx:360 +#: src/webex/pages/confirm-contract.tsx:362 #, fuzzy, c-format msgid "Retry Payment" msgstr "Bezahlung bestätigen" -#: src/webex/pages/confirm-contract.tsx:363 +#: src/webex/pages/confirm-contract.tsx:365 #, fuzzy, c-format msgid "Abort Payment" msgstr "Bezahlung bestätigen" -#: src/webex/pages/confirm-contract.tsx:372 +#: src/webex/pages/confirm-contract.tsx:374 #, fuzzy, c-format msgid "The merchant %1$s offers you to purchase:" msgstr "Der Händler %1$s möchte einen Vertrag über %2$s mit Ihnen abschließen." -#: src/webex/pages/confirm-contract.tsx:381 +#: src/webex/pages/confirm-contract.tsx:383 #, c-format msgid "The total price is %1$s (plus %2$s fees)." msgstr "" -#: src/webex/pages/confirm-contract.tsx:385 +#: src/webex/pages/confirm-contract.tsx:387 #, c-format msgid "The total price is %1$s." msgstr "" @@ -230,72 +240,72 @@ msgstr "" msgid "Fatal error: \"%1$s\"." msgstr "" -#: src/webex/pages/popup.tsx:162 +#: src/webex/pages/popup.tsx:165 #, c-format msgid "Balance" msgstr "Saldo" -#: src/webex/pages/popup.tsx:165 +#: src/webex/pages/popup.tsx:168 #, c-format msgid "History" msgstr "Verlauf" -#: src/webex/pages/popup.tsx:168 +#: src/webex/pages/popup.tsx:171 #, c-format msgid "Debug" msgstr "Debug" -#: src/webex/pages/popup.tsx:248 +#: src/webex/pages/popup.tsx:251 #, c-format msgid "help" msgstr "" -#: src/webex/pages/popup.tsx:253 +#: src/webex/pages/popup.tsx:256 #, fuzzy, c-format msgid "You have no balance to show. Need some %1$s getting started?" msgstr "Sie haben kein Digitalgeld. Wollen Sie %1$s? abheben?" -#: src/webex/pages/popup.tsx:270 +#: src/webex/pages/popup.tsx:273 #, c-format msgid "%1$s incoming" msgstr "" -#: src/webex/pages/popup.tsx:283 +#: src/webex/pages/popup.tsx:286 #, c-format msgid "%1$s being spent" msgstr "" -#: src/webex/pages/popup.tsx:310 +#: src/webex/pages/popup.tsx:313 #, c-format msgid "Error: could not retrieve balance information." msgstr "" -#: src/webex/pages/popup.tsx:337 +#: src/webex/pages/popup.tsx:340 #, c-format msgid "Payback" msgstr "" -#: src/webex/pages/popup.tsx:338 +#: src/webex/pages/popup.tsx:341 #, c-format msgid "Return Electronic Cash to Bank Account" msgstr "" -#: src/webex/pages/popup.tsx:339 +#: src/webex/pages/popup.tsx:342 #, c-format msgid "Manage Trusted Auditors and Exchanges" msgstr "" -#: src/webex/pages/popup.tsx:351 +#: src/webex/pages/popup.tsx:354 #, fuzzy, c-format msgid "Bank requested reserve (%1$s) for %2$s." msgstr "Bank bestätig anlegen der Reserve (%1$s) bei %2$s" -#: src/webex/pages/popup.tsx:361 +#: src/webex/pages/popup.tsx:364 #, fuzzy, c-format msgid "Started to withdraw %1$s from %2$s (%3$s)." msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt" -#: src/webex/pages/popup.tsx:370 +#: src/webex/pages/popup.tsx:373 #, fuzzy, c-format msgid "Merchant %1$s offered contract %2$s." msgstr "" @@ -303,17 +313,17 @@ msgstr "" " möchte einen Vertrag über %2$s\n" " mit Ihnen abschließen." -#: src/webex/pages/popup.tsx:381 +#: src/webex/pages/popup.tsx:384 #, fuzzy, c-format msgid "Withdrew %1$s from %2$s (%3$s)." msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt" -#: src/webex/pages/popup.tsx:391 +#: src/webex/pages/popup.tsx:394 #, fuzzy, c-format msgid "Paid %1$s to merchant %2$s. %3$s (%4$s)" msgstr "Reserve (%1$s) mit %2$s bei %3$s erzeugt" -#: src/webex/pages/popup.tsx:401 +#: src/webex/pages/popup.tsx:404 #, fuzzy, c-format msgid "Merchant %1$s gave a refund over %2$s." msgstr "" @@ -321,12 +331,12 @@ msgstr "" " möchte einen Vertrag über %2$s\n" " mit Ihnen abschließen." -#: src/webex/pages/popup.tsx:411 +#: src/webex/pages/popup.tsx:414 #, c-format msgid "tip" msgstr "" -#: src/webex/pages/popup.tsx:415 +#: src/webex/pages/popup.tsx:418 #, fuzzy, c-format msgid "Merchant %1$s gave a %2$s of %3$s." msgstr "" @@ -334,22 +344,22 @@ msgstr "" " möchte einen Vertrag über %2$s\n" " mit Ihnen abschließen." -#: src/webex/pages/popup.tsx:419 +#: src/webex/pages/popup.tsx:422 #, c-format msgid "You did not accept the tip yet." msgstr "" -#: src/webex/pages/popup.tsx:424 +#: src/webex/pages/popup.tsx:427 #, c-format msgid "Unknown event (%1$s)" msgstr "" -#: src/webex/pages/popup.tsx:467 +#: src/webex/pages/popup.tsx:470 #, c-format msgid "Error: could not retrieve event history" msgstr "" -#: src/webex/pages/popup.tsx:492 +#: src/webex/pages/popup.tsx:495 #, c-format msgid "Your wallet has no events recorded." msgstr "Ihre Geldbörse verzeichnet keine Vorkommnisse." diff --git a/src/i18n/en-US.po b/src/i18n/en-US.po index b9625d921..5d68c6167 100644 --- a/src/i18n/en-US.po +++ b/src/i18n/en-US.po @@ -27,28 +27,38 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/webex/pages/confirm-contract.tsx:76 +#: src/webex/pages/benchmark.tsx:58 +#, c-format +msgid "Operation" +msgstr "" + +#: src/webex/pages/benchmark.tsx:59 +#, c-format +msgid "time (ms/op)" +msgstr "" + +#: src/webex/pages/confirm-contract.tsx:78 #, c-format msgid "show more details" msgstr "" -#: src/webex/pages/confirm-contract.tsx:90 +#: src/webex/pages/confirm-contract.tsx:92 #, c-format msgid "Accepted exchanges:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:95 +#: src/webex/pages/confirm-contract.tsx:97 #, c-format msgid "Exchanges in the wallet:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:217 +#: src/webex/pages/confirm-contract.tsx:219 #, c-format msgid "You have insufficient funds of the requested currency in your wallet." msgstr "" #. tslint:disable-next-line:max-line-length -#: src/webex/pages/confirm-contract.tsx:219 +#: src/webex/pages/confirm-contract.tsx:221 #, c-format msgid "" "You do not have any funds from an exchange that is accepted by this " @@ -56,54 +66,54 @@ msgid "" "wallet." msgstr "" -#: src/webex/pages/confirm-contract.tsx:320 +#: src/webex/pages/confirm-contract.tsx:322 #, c-format msgid "Confirm payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:330 +#: src/webex/pages/confirm-contract.tsx:332 #, c-format msgid "Submitting payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:341 +#: src/webex/pages/confirm-contract.tsx:343 #, c-format msgid "" "You already paid for this, clicking \"Confirm payment\" will not cost money " "again." msgstr "" -#: src/webex/pages/confirm-contract.tsx:355 +#: src/webex/pages/confirm-contract.tsx:357 #, c-format msgid "Aborting payment ..." msgstr "" -#: src/webex/pages/confirm-contract.tsx:357 +#: src/webex/pages/confirm-contract.tsx:359 #, c-format msgid "Payment aborted!" msgstr "" -#: src/webex/pages/confirm-contract.tsx:360 +#: src/webex/pages/confirm-contract.tsx:362 #, c-format msgid "Retry Payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:363 +#: src/webex/pages/confirm-contract.tsx:365 #, c-format msgid "Abort Payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:372 +#: src/webex/pages/confirm-contract.tsx:374 #, c-format msgid "The merchant %1$s offers you to purchase:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:381 +#: src/webex/pages/confirm-contract.tsx:383 #, c-format msgid "The total price is %1$s (plus %2$s fees)." msgstr "" -#: src/webex/pages/confirm-contract.tsx:385 +#: src/webex/pages/confirm-contract.tsx:387 #, c-format msgid "The total price is %1$s." msgstr "" @@ -230,117 +240,117 @@ msgstr "" msgid "Fatal error: \"%1$s\"." msgstr "" -#: src/webex/pages/popup.tsx:162 +#: src/webex/pages/popup.tsx:165 #, c-format msgid "Balance" msgstr "" -#: src/webex/pages/popup.tsx:165 +#: src/webex/pages/popup.tsx:168 #, c-format msgid "History" msgstr "" -#: src/webex/pages/popup.tsx:168 +#: src/webex/pages/popup.tsx:171 #, c-format msgid "Debug" msgstr "" -#: src/webex/pages/popup.tsx:248 +#: src/webex/pages/popup.tsx:251 #, c-format msgid "help" msgstr "" -#: src/webex/pages/popup.tsx:253 +#: src/webex/pages/popup.tsx:256 #, c-format msgid "You have no balance to show. Need some %1$s getting started?" msgstr "" -#: src/webex/pages/popup.tsx:270 +#: src/webex/pages/popup.tsx:273 #, c-format msgid "%1$s incoming" msgstr "" -#: src/webex/pages/popup.tsx:283 +#: src/webex/pages/popup.tsx:286 #, c-format msgid "%1$s being spent" msgstr "" -#: src/webex/pages/popup.tsx:310 +#: src/webex/pages/popup.tsx:313 #, c-format msgid "Error: could not retrieve balance information." msgstr "" -#: src/webex/pages/popup.tsx:337 +#: src/webex/pages/popup.tsx:340 #, c-format msgid "Payback" msgstr "" -#: src/webex/pages/popup.tsx:338 +#: src/webex/pages/popup.tsx:341 #, c-format msgid "Return Electronic Cash to Bank Account" msgstr "" -#: src/webex/pages/popup.tsx:339 +#: src/webex/pages/popup.tsx:342 #, c-format msgid "Manage Trusted Auditors and Exchanges" msgstr "" -#: src/webex/pages/popup.tsx:351 +#: src/webex/pages/popup.tsx:354 #, c-format msgid "Bank requested reserve (%1$s) for %2$s." msgstr "" -#: src/webex/pages/popup.tsx:361 +#: src/webex/pages/popup.tsx:364 #, c-format msgid "Started to withdraw %1$s from %2$s (%3$s)." msgstr "" -#: src/webex/pages/popup.tsx:370 +#: src/webex/pages/popup.tsx:373 #, c-format msgid "Merchant %1$s offered contract %2$s." msgstr "" -#: src/webex/pages/popup.tsx:381 +#: src/webex/pages/popup.tsx:384 #, c-format msgid "Withdrew %1$s from %2$s (%3$s)." msgstr "" -#: src/webex/pages/popup.tsx:391 +#: src/webex/pages/popup.tsx:394 #, c-format msgid "Paid %1$s to merchant %2$s. %3$s (%4$s)" msgstr "" -#: src/webex/pages/popup.tsx:401 +#: src/webex/pages/popup.tsx:404 #, c-format msgid "Merchant %1$s gave a refund over %2$s." msgstr "" -#: src/webex/pages/popup.tsx:411 +#: src/webex/pages/popup.tsx:414 #, c-format msgid "tip" msgstr "" -#: src/webex/pages/popup.tsx:415 +#: src/webex/pages/popup.tsx:418 #, c-format msgid "Merchant %1$s gave a %2$s of %3$s." msgstr "" -#: src/webex/pages/popup.tsx:419 +#: src/webex/pages/popup.tsx:422 #, c-format msgid "You did not accept the tip yet." msgstr "" -#: src/webex/pages/popup.tsx:424 +#: src/webex/pages/popup.tsx:427 #, c-format msgid "Unknown event (%1$s)" msgstr "" -#: src/webex/pages/popup.tsx:467 +#: src/webex/pages/popup.tsx:470 #, c-format msgid "Error: could not retrieve event history" msgstr "" -#: src/webex/pages/popup.tsx:492 +#: src/webex/pages/popup.tsx:495 #, c-format msgid "Your wallet has no events recorded." msgstr "" diff --git a/src/i18n/fr.po b/src/i18n/fr.po index 7f9fc14cf..f097767a8 100644 --- a/src/i18n/fr.po +++ b/src/i18n/fr.po @@ -27,28 +27,38 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/webex/pages/confirm-contract.tsx:76 +#: src/webex/pages/benchmark.tsx:58 +#, c-format +msgid "Operation" +msgstr "" + +#: src/webex/pages/benchmark.tsx:59 +#, c-format +msgid "time (ms/op)" +msgstr "" + +#: src/webex/pages/confirm-contract.tsx:78 #, c-format msgid "show more details" msgstr "" -#: src/webex/pages/confirm-contract.tsx:90 +#: src/webex/pages/confirm-contract.tsx:92 #, c-format msgid "Accepted exchanges:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:95 +#: src/webex/pages/confirm-contract.tsx:97 #, c-format msgid "Exchanges in the wallet:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:217 +#: src/webex/pages/confirm-contract.tsx:219 #, c-format msgid "You have insufficient funds of the requested currency in your wallet." msgstr "" #. tslint:disable-next-line:max-line-length -#: src/webex/pages/confirm-contract.tsx:219 +#: src/webex/pages/confirm-contract.tsx:221 #, c-format msgid "" "You do not have any funds from an exchange that is accepted by this " @@ -56,54 +66,54 @@ msgid "" "wallet." msgstr "" -#: src/webex/pages/confirm-contract.tsx:320 +#: src/webex/pages/confirm-contract.tsx:322 #, c-format msgid "Confirm payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:330 +#: src/webex/pages/confirm-contract.tsx:332 #, c-format msgid "Submitting payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:341 +#: src/webex/pages/confirm-contract.tsx:343 #, c-format msgid "" "You already paid for this, clicking \"Confirm payment\" will not cost money " "again." msgstr "" -#: src/webex/pages/confirm-contract.tsx:355 +#: src/webex/pages/confirm-contract.tsx:357 #, c-format msgid "Aborting payment ..." msgstr "" -#: src/webex/pages/confirm-contract.tsx:357 +#: src/webex/pages/confirm-contract.tsx:359 #, c-format msgid "Payment aborted!" msgstr "" -#: src/webex/pages/confirm-contract.tsx:360 +#: src/webex/pages/confirm-contract.tsx:362 #, c-format msgid "Retry Payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:363 +#: src/webex/pages/confirm-contract.tsx:365 #, c-format msgid "Abort Payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:372 +#: src/webex/pages/confirm-contract.tsx:374 #, c-format msgid "The merchant %1$s offers you to purchase:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:381 +#: src/webex/pages/confirm-contract.tsx:383 #, c-format msgid "The total price is %1$s (plus %2$s fees)." msgstr "" -#: src/webex/pages/confirm-contract.tsx:385 +#: src/webex/pages/confirm-contract.tsx:387 #, c-format msgid "The total price is %1$s." msgstr "" @@ -230,117 +240,117 @@ msgstr "" msgid "Fatal error: \"%1$s\"." msgstr "" -#: src/webex/pages/popup.tsx:162 +#: src/webex/pages/popup.tsx:165 #, c-format msgid "Balance" msgstr "" -#: src/webex/pages/popup.tsx:165 +#: src/webex/pages/popup.tsx:168 #, c-format msgid "History" msgstr "" -#: src/webex/pages/popup.tsx:168 +#: src/webex/pages/popup.tsx:171 #, c-format msgid "Debug" msgstr "" -#: src/webex/pages/popup.tsx:248 +#: src/webex/pages/popup.tsx:251 #, c-format msgid "help" msgstr "" -#: src/webex/pages/popup.tsx:253 +#: src/webex/pages/popup.tsx:256 #, c-format msgid "You have no balance to show. Need some %1$s getting started?" msgstr "" -#: src/webex/pages/popup.tsx:270 +#: src/webex/pages/popup.tsx:273 #, c-format msgid "%1$s incoming" msgstr "" -#: src/webex/pages/popup.tsx:283 +#: src/webex/pages/popup.tsx:286 #, c-format msgid "%1$s being spent" msgstr "" -#: src/webex/pages/popup.tsx:310 +#: src/webex/pages/popup.tsx:313 #, c-format msgid "Error: could not retrieve balance information." msgstr "" -#: src/webex/pages/popup.tsx:337 +#: src/webex/pages/popup.tsx:340 #, c-format msgid "Payback" msgstr "" -#: src/webex/pages/popup.tsx:338 +#: src/webex/pages/popup.tsx:341 #, c-format msgid "Return Electronic Cash to Bank Account" msgstr "" -#: src/webex/pages/popup.tsx:339 +#: src/webex/pages/popup.tsx:342 #, c-format msgid "Manage Trusted Auditors and Exchanges" msgstr "" -#: src/webex/pages/popup.tsx:351 +#: src/webex/pages/popup.tsx:354 #, c-format msgid "Bank requested reserve (%1$s) for %2$s." msgstr "" -#: src/webex/pages/popup.tsx:361 +#: src/webex/pages/popup.tsx:364 #, c-format msgid "Started to withdraw %1$s from %2$s (%3$s)." msgstr "" -#: src/webex/pages/popup.tsx:370 +#: src/webex/pages/popup.tsx:373 #, c-format msgid "Merchant %1$s offered contract %2$s." msgstr "" -#: src/webex/pages/popup.tsx:381 +#: src/webex/pages/popup.tsx:384 #, c-format msgid "Withdrew %1$s from %2$s (%3$s)." msgstr "" -#: src/webex/pages/popup.tsx:391 +#: src/webex/pages/popup.tsx:394 #, c-format msgid "Paid %1$s to merchant %2$s. %3$s (%4$s)" msgstr "" -#: src/webex/pages/popup.tsx:401 +#: src/webex/pages/popup.tsx:404 #, c-format msgid "Merchant %1$s gave a refund over %2$s." msgstr "" -#: src/webex/pages/popup.tsx:411 +#: src/webex/pages/popup.tsx:414 #, c-format msgid "tip" msgstr "" -#: src/webex/pages/popup.tsx:415 +#: src/webex/pages/popup.tsx:418 #, c-format msgid "Merchant %1$s gave a %2$s of %3$s." msgstr "" -#: src/webex/pages/popup.tsx:419 +#: src/webex/pages/popup.tsx:422 #, c-format msgid "You did not accept the tip yet." msgstr "" -#: src/webex/pages/popup.tsx:424 +#: src/webex/pages/popup.tsx:427 #, c-format msgid "Unknown event (%1$s)" msgstr "" -#: src/webex/pages/popup.tsx:467 +#: src/webex/pages/popup.tsx:470 #, c-format msgid "Error: could not retrieve event history" msgstr "" -#: src/webex/pages/popup.tsx:492 +#: src/webex/pages/popup.tsx:495 #, c-format msgid "Your wallet has no events recorded." msgstr "" diff --git a/src/i18n/it.po b/src/i18n/it.po index 7f9fc14cf..f097767a8 100644 --- a/src/i18n/it.po +++ b/src/i18n/it.po @@ -27,28 +27,38 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/webex/pages/confirm-contract.tsx:76 +#: src/webex/pages/benchmark.tsx:58 +#, c-format +msgid "Operation" +msgstr "" + +#: src/webex/pages/benchmark.tsx:59 +#, c-format +msgid "time (ms/op)" +msgstr "" + +#: src/webex/pages/confirm-contract.tsx:78 #, c-format msgid "show more details" msgstr "" -#: src/webex/pages/confirm-contract.tsx:90 +#: src/webex/pages/confirm-contract.tsx:92 #, c-format msgid "Accepted exchanges:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:95 +#: src/webex/pages/confirm-contract.tsx:97 #, c-format msgid "Exchanges in the wallet:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:217 +#: src/webex/pages/confirm-contract.tsx:219 #, c-format msgid "You have insufficient funds of the requested currency in your wallet." msgstr "" #. tslint:disable-next-line:max-line-length -#: src/webex/pages/confirm-contract.tsx:219 +#: src/webex/pages/confirm-contract.tsx:221 #, c-format msgid "" "You do not have any funds from an exchange that is accepted by this " @@ -56,54 +66,54 @@ msgid "" "wallet." msgstr "" -#: src/webex/pages/confirm-contract.tsx:320 +#: src/webex/pages/confirm-contract.tsx:322 #, c-format msgid "Confirm payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:330 +#: src/webex/pages/confirm-contract.tsx:332 #, c-format msgid "Submitting payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:341 +#: src/webex/pages/confirm-contract.tsx:343 #, c-format msgid "" "You already paid for this, clicking \"Confirm payment\" will not cost money " "again." msgstr "" -#: src/webex/pages/confirm-contract.tsx:355 +#: src/webex/pages/confirm-contract.tsx:357 #, c-format msgid "Aborting payment ..." msgstr "" -#: src/webex/pages/confirm-contract.tsx:357 +#: src/webex/pages/confirm-contract.tsx:359 #, c-format msgid "Payment aborted!" msgstr "" -#: src/webex/pages/confirm-contract.tsx:360 +#: src/webex/pages/confirm-contract.tsx:362 #, c-format msgid "Retry Payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:363 +#: src/webex/pages/confirm-contract.tsx:365 #, c-format msgid "Abort Payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:372 +#: src/webex/pages/confirm-contract.tsx:374 #, c-format msgid "The merchant %1$s offers you to purchase:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:381 +#: src/webex/pages/confirm-contract.tsx:383 #, c-format msgid "The total price is %1$s (plus %2$s fees)." msgstr "" -#: src/webex/pages/confirm-contract.tsx:385 +#: src/webex/pages/confirm-contract.tsx:387 #, c-format msgid "The total price is %1$s." msgstr "" @@ -230,117 +240,117 @@ msgstr "" msgid "Fatal error: \"%1$s\"." msgstr "" -#: src/webex/pages/popup.tsx:162 +#: src/webex/pages/popup.tsx:165 #, c-format msgid "Balance" msgstr "" -#: src/webex/pages/popup.tsx:165 +#: src/webex/pages/popup.tsx:168 #, c-format msgid "History" msgstr "" -#: src/webex/pages/popup.tsx:168 +#: src/webex/pages/popup.tsx:171 #, c-format msgid "Debug" msgstr "" -#: src/webex/pages/popup.tsx:248 +#: src/webex/pages/popup.tsx:251 #, c-format msgid "help" msgstr "" -#: src/webex/pages/popup.tsx:253 +#: src/webex/pages/popup.tsx:256 #, c-format msgid "You have no balance to show. Need some %1$s getting started?" msgstr "" -#: src/webex/pages/popup.tsx:270 +#: src/webex/pages/popup.tsx:273 #, c-format msgid "%1$s incoming" msgstr "" -#: src/webex/pages/popup.tsx:283 +#: src/webex/pages/popup.tsx:286 #, c-format msgid "%1$s being spent" msgstr "" -#: src/webex/pages/popup.tsx:310 +#: src/webex/pages/popup.tsx:313 #, c-format msgid "Error: could not retrieve balance information." msgstr "" -#: src/webex/pages/popup.tsx:337 +#: src/webex/pages/popup.tsx:340 #, c-format msgid "Payback" msgstr "" -#: src/webex/pages/popup.tsx:338 +#: src/webex/pages/popup.tsx:341 #, c-format msgid "Return Electronic Cash to Bank Account" msgstr "" -#: src/webex/pages/popup.tsx:339 +#: src/webex/pages/popup.tsx:342 #, c-format msgid "Manage Trusted Auditors and Exchanges" msgstr "" -#: src/webex/pages/popup.tsx:351 +#: src/webex/pages/popup.tsx:354 #, c-format msgid "Bank requested reserve (%1$s) for %2$s." msgstr "" -#: src/webex/pages/popup.tsx:361 +#: src/webex/pages/popup.tsx:364 #, c-format msgid "Started to withdraw %1$s from %2$s (%3$s)." msgstr "" -#: src/webex/pages/popup.tsx:370 +#: src/webex/pages/popup.tsx:373 #, c-format msgid "Merchant %1$s offered contract %2$s." msgstr "" -#: src/webex/pages/popup.tsx:381 +#: src/webex/pages/popup.tsx:384 #, c-format msgid "Withdrew %1$s from %2$s (%3$s)." msgstr "" -#: src/webex/pages/popup.tsx:391 +#: src/webex/pages/popup.tsx:394 #, c-format msgid "Paid %1$s to merchant %2$s. %3$s (%4$s)" msgstr "" -#: src/webex/pages/popup.tsx:401 +#: src/webex/pages/popup.tsx:404 #, c-format msgid "Merchant %1$s gave a refund over %2$s." msgstr "" -#: src/webex/pages/popup.tsx:411 +#: src/webex/pages/popup.tsx:414 #, c-format msgid "tip" msgstr "" -#: src/webex/pages/popup.tsx:415 +#: src/webex/pages/popup.tsx:418 #, c-format msgid "Merchant %1$s gave a %2$s of %3$s." msgstr "" -#: src/webex/pages/popup.tsx:419 +#: src/webex/pages/popup.tsx:422 #, c-format msgid "You did not accept the tip yet." msgstr "" -#: src/webex/pages/popup.tsx:424 +#: src/webex/pages/popup.tsx:427 #, c-format msgid "Unknown event (%1$s)" msgstr "" -#: src/webex/pages/popup.tsx:467 +#: src/webex/pages/popup.tsx:470 #, c-format msgid "Error: could not retrieve event history" msgstr "" -#: src/webex/pages/popup.tsx:492 +#: src/webex/pages/popup.tsx:495 #, c-format msgid "Your wallet has no events recorded." msgstr "" diff --git a/src/i18n/strings.ts b/src/i18n/strings.ts index b0d2208d4..cb5ee7e62 100644 --- a/src/i18n/strings.ts +++ b/src/i18n/strings.ts @@ -24,6 +24,12 @@ strings['de'] = { "plural_forms": "nplurals=2; plural=(n != 1);", "lang": "" }, + "Operation": [ + "" + ], + "time (ms/op)": [ + "" + ], "show more details": [ "" ], @@ -258,6 +264,12 @@ strings['en-US'] = { "plural_forms": "nplurals=2; plural=(n != 1);", "lang": "" }, + "Operation": [ + "" + ], + "time (ms/op)": [ + "" + ], "show more details": [ "" ], @@ -492,6 +504,12 @@ strings['fr'] = { "plural_forms": "nplurals=2; plural=(n != 1);", "lang": "" }, + "Operation": [ + "" + ], + "time (ms/op)": [ + "" + ], "show more details": [ "" ], @@ -726,6 +744,12 @@ strings['it'] = { "plural_forms": "nplurals=2; plural=(n != 1);", "lang": "" }, + "Operation": [ + "" + ], + "time (ms/op)": [ + "" + ], "show more details": [ "" ], @@ -960,6 +984,12 @@ strings['sv'] = { "plural_forms": "nplurals=2; plural=(n != 1);", "lang": "" }, + "Operation": [ + "" + ], + "time (ms/op)": [ + "" + ], "show more details": [ "visa mer" ], diff --git a/src/i18n/sv.po b/src/i18n/sv.po index cff28fd3c..890505c07 100644 --- a/src/i18n/sv.po +++ b/src/i18n/sv.po @@ -27,28 +27,38 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/webex/pages/confirm-contract.tsx:76 +#: src/webex/pages/benchmark.tsx:58 +#, c-format +msgid "Operation" +msgstr "" + +#: src/webex/pages/benchmark.tsx:59 +#, c-format +msgid "time (ms/op)" +msgstr "" + +#: src/webex/pages/confirm-contract.tsx:78 #, fuzzy, c-format msgid "show more details" msgstr "visa mer" -#: src/webex/pages/confirm-contract.tsx:90 +#: src/webex/pages/confirm-contract.tsx:92 #, c-format msgid "Accepted exchanges:" msgstr "Accepterade tjänsteleverantörer:" -#: src/webex/pages/confirm-contract.tsx:95 +#: src/webex/pages/confirm-contract.tsx:97 #, c-format msgid "Exchanges in the wallet:" msgstr "Tjänsteleverantörer i plånboken:" -#: src/webex/pages/confirm-contract.tsx:217 +#: src/webex/pages/confirm-contract.tsx:219 #, c-format msgid "You have insufficient funds of the requested currency in your wallet." msgstr "plånboken" #. tslint:disable-next-line:max-line-length -#: src/webex/pages/confirm-contract.tsx:219 +#: src/webex/pages/confirm-contract.tsx:221 #, c-format msgid "" "You do not have any funds from an exchange that is accepted by this " @@ -56,17 +66,17 @@ msgid "" "wallet." msgstr "plånboken" -#: src/webex/pages/confirm-contract.tsx:320 +#: src/webex/pages/confirm-contract.tsx:322 #, c-format msgid "Confirm payment" msgstr "Godkän betalning" -#: src/webex/pages/confirm-contract.tsx:330 +#: src/webex/pages/confirm-contract.tsx:332 #, c-format msgid "Submitting payment" msgstr "Bekräftar betalning" -#: src/webex/pages/confirm-contract.tsx:341 +#: src/webex/pages/confirm-contract.tsx:343 #, c-format msgid "" "You already paid for this, clicking \"Confirm payment\" will not cost money " @@ -75,37 +85,37 @@ msgstr "" "Du har redan betalat för det här, om du trycker \"Godkän betalning\" " "debiteras du inte igen" -#: src/webex/pages/confirm-contract.tsx:355 +#: src/webex/pages/confirm-contract.tsx:357 #, c-format msgid "Aborting payment ..." msgstr "" -#: src/webex/pages/confirm-contract.tsx:357 +#: src/webex/pages/confirm-contract.tsx:359 #, c-format msgid "Payment aborted!" msgstr "" -#: src/webex/pages/confirm-contract.tsx:360 +#: src/webex/pages/confirm-contract.tsx:362 #, c-format msgid "Retry Payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:363 +#: src/webex/pages/confirm-contract.tsx:365 #, c-format msgid "Abort Payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:372 +#: src/webex/pages/confirm-contract.tsx:374 #, fuzzy, c-format msgid "The merchant %1$s offers you to purchase:" msgstr "Säljaren %1$s erbjuder följande:" -#: src/webex/pages/confirm-contract.tsx:381 +#: src/webex/pages/confirm-contract.tsx:383 #, fuzzy, c-format msgid "The total price is %1$s (plus %2$s fees)." msgstr "Det totala priset är %1$s (plus %2$s avgifter).\n" -#: src/webex/pages/confirm-contract.tsx:385 +#: src/webex/pages/confirm-contract.tsx:387 #, fuzzy, c-format msgid "The total price is %1$s." msgstr "Det totala priset är %1$s." @@ -234,119 +244,119 @@ msgstr "" msgid "Fatal error: \"%1$s\"." msgstr "" -#: src/webex/pages/popup.tsx:162 +#: src/webex/pages/popup.tsx:165 #, c-format msgid "Balance" msgstr "Balans" -#: src/webex/pages/popup.tsx:165 +#: src/webex/pages/popup.tsx:168 #, c-format msgid "History" msgstr "Historia" -#: src/webex/pages/popup.tsx:168 +#: src/webex/pages/popup.tsx:171 #, c-format msgid "Debug" msgstr "" -#: src/webex/pages/popup.tsx:248 +#: src/webex/pages/popup.tsx:251 #, c-format msgid "help" msgstr "hjälp" -#: src/webex/pages/popup.tsx:253 +#: src/webex/pages/popup.tsx:256 #, fuzzy, c-format msgid "You have no balance to show. Need some %1$s getting started?" msgstr "" "Du har ingen balans att visa. Behöver du\n" " %1$s att börja?\n" -#: src/webex/pages/popup.tsx:270 +#: src/webex/pages/popup.tsx:273 #, fuzzy, c-format msgid "%1$s incoming" msgstr "%1$s inkommande" -#: src/webex/pages/popup.tsx:283 +#: src/webex/pages/popup.tsx:286 #, c-format msgid "%1$s being spent" msgstr "" -#: src/webex/pages/popup.tsx:310 +#: src/webex/pages/popup.tsx:313 #, c-format msgid "Error: could not retrieve balance information." msgstr "" -#: src/webex/pages/popup.tsx:337 +#: src/webex/pages/popup.tsx:340 #, c-format msgid "Payback" msgstr "Återbetalning" -#: src/webex/pages/popup.tsx:338 +#: src/webex/pages/popup.tsx:341 #, c-format msgid "Return Electronic Cash to Bank Account" msgstr "Återlämna elektroniska pengar till bank konto" -#: src/webex/pages/popup.tsx:339 +#: src/webex/pages/popup.tsx:342 #, c-format msgid "Manage Trusted Auditors and Exchanges" msgstr "" -#: src/webex/pages/popup.tsx:351 +#: src/webex/pages/popup.tsx:354 #, c-format msgid "Bank requested reserve (%1$s) for %2$s." msgstr "" -#: src/webex/pages/popup.tsx:361 +#: src/webex/pages/popup.tsx:364 #, c-format msgid "Started to withdraw %1$s from %2$s (%3$s)." msgstr "" -#: src/webex/pages/popup.tsx:370 +#: src/webex/pages/popup.tsx:373 #, fuzzy, c-format msgid "Merchant %1$s offered contract %2$s." msgstr "Säljaren %1$s erbjöd kontrakt %2$s.\n" -#: src/webex/pages/popup.tsx:381 +#: src/webex/pages/popup.tsx:384 #, c-format msgid "Withdrew %1$s from %2$s (%3$s)." msgstr "" -#: src/webex/pages/popup.tsx:391 +#: src/webex/pages/popup.tsx:394 #, c-format msgid "Paid %1$s to merchant %2$s. %3$s (%4$s)" msgstr "" -#: src/webex/pages/popup.tsx:401 +#: src/webex/pages/popup.tsx:404 #, fuzzy, c-format msgid "Merchant %1$s gave a refund over %2$s." msgstr "Säljaren %1$sgav en återbetalning på %2$s.\n" -#: src/webex/pages/popup.tsx:411 +#: src/webex/pages/popup.tsx:414 #, c-format msgid "tip" msgstr "" -#: src/webex/pages/popup.tsx:415 +#: src/webex/pages/popup.tsx:418 #, fuzzy, c-format msgid "Merchant %1$s gave a %2$s of %3$s." msgstr "Säljaren %1$sgav en återbetalning på %2$s.\n" -#: src/webex/pages/popup.tsx:419 +#: src/webex/pages/popup.tsx:422 #, c-format msgid "You did not accept the tip yet." msgstr "" -#: src/webex/pages/popup.tsx:424 +#: src/webex/pages/popup.tsx:427 #, c-format msgid "Unknown event (%1$s)" msgstr "" -#: src/webex/pages/popup.tsx:467 +#: src/webex/pages/popup.tsx:470 #, c-format msgid "Error: could not retrieve event history" msgstr "" -#: src/webex/pages/popup.tsx:492 +#: src/webex/pages/popup.tsx:495 #, c-format msgid "Your wallet has no events recorded." msgstr "plånboken" diff --git a/src/i18n/taler-wallet-webex.pot b/src/i18n/taler-wallet-webex.pot index 7f9fc14cf..f097767a8 100644 --- a/src/i18n/taler-wallet-webex.pot +++ b/src/i18n/taler-wallet-webex.pot @@ -27,28 +27,38 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/webex/pages/confirm-contract.tsx:76 +#: src/webex/pages/benchmark.tsx:58 +#, c-format +msgid "Operation" +msgstr "" + +#: src/webex/pages/benchmark.tsx:59 +#, c-format +msgid "time (ms/op)" +msgstr "" + +#: src/webex/pages/confirm-contract.tsx:78 #, c-format msgid "show more details" msgstr "" -#: src/webex/pages/confirm-contract.tsx:90 +#: src/webex/pages/confirm-contract.tsx:92 #, c-format msgid "Accepted exchanges:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:95 +#: src/webex/pages/confirm-contract.tsx:97 #, c-format msgid "Exchanges in the wallet:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:217 +#: src/webex/pages/confirm-contract.tsx:219 #, c-format msgid "You have insufficient funds of the requested currency in your wallet." msgstr "" #. tslint:disable-next-line:max-line-length -#: src/webex/pages/confirm-contract.tsx:219 +#: src/webex/pages/confirm-contract.tsx:221 #, c-format msgid "" "You do not have any funds from an exchange that is accepted by this " @@ -56,54 +66,54 @@ msgid "" "wallet." msgstr "" -#: src/webex/pages/confirm-contract.tsx:320 +#: src/webex/pages/confirm-contract.tsx:322 #, c-format msgid "Confirm payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:330 +#: src/webex/pages/confirm-contract.tsx:332 #, c-format msgid "Submitting payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:341 +#: src/webex/pages/confirm-contract.tsx:343 #, c-format msgid "" "You already paid for this, clicking \"Confirm payment\" will not cost money " "again." msgstr "" -#: src/webex/pages/confirm-contract.tsx:355 +#: src/webex/pages/confirm-contract.tsx:357 #, c-format msgid "Aborting payment ..." msgstr "" -#: src/webex/pages/confirm-contract.tsx:357 +#: src/webex/pages/confirm-contract.tsx:359 #, c-format msgid "Payment aborted!" msgstr "" -#: src/webex/pages/confirm-contract.tsx:360 +#: src/webex/pages/confirm-contract.tsx:362 #, c-format msgid "Retry Payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:363 +#: src/webex/pages/confirm-contract.tsx:365 #, c-format msgid "Abort Payment" msgstr "" -#: src/webex/pages/confirm-contract.tsx:372 +#: src/webex/pages/confirm-contract.tsx:374 #, c-format msgid "The merchant %1$s offers you to purchase:" msgstr "" -#: src/webex/pages/confirm-contract.tsx:381 +#: src/webex/pages/confirm-contract.tsx:383 #, c-format msgid "The total price is %1$s (plus %2$s fees)." msgstr "" -#: src/webex/pages/confirm-contract.tsx:385 +#: src/webex/pages/confirm-contract.tsx:387 #, c-format msgid "The total price is %1$s." msgstr "" @@ -230,117 +240,117 @@ msgstr "" msgid "Fatal error: \"%1$s\"." msgstr "" -#: src/webex/pages/popup.tsx:162 +#: src/webex/pages/popup.tsx:165 #, c-format msgid "Balance" msgstr "" -#: src/webex/pages/popup.tsx:165 +#: src/webex/pages/popup.tsx:168 #, c-format msgid "History" msgstr "" -#: src/webex/pages/popup.tsx:168 +#: src/webex/pages/popup.tsx:171 #, c-format msgid "Debug" msgstr "" -#: src/webex/pages/popup.tsx:248 +#: src/webex/pages/popup.tsx:251 #, c-format msgid "help" msgstr "" -#: src/webex/pages/popup.tsx:253 +#: src/webex/pages/popup.tsx:256 #, c-format msgid "You have no balance to show. Need some %1$s getting started?" msgstr "" -#: src/webex/pages/popup.tsx:270 +#: src/webex/pages/popup.tsx:273 #, c-format msgid "%1$s incoming" msgstr "" -#: src/webex/pages/popup.tsx:283 +#: src/webex/pages/popup.tsx:286 #, c-format msgid "%1$s being spent" msgstr "" -#: src/webex/pages/popup.tsx:310 +#: src/webex/pages/popup.tsx:313 #, c-format msgid "Error: could not retrieve balance information." msgstr "" -#: src/webex/pages/popup.tsx:337 +#: src/webex/pages/popup.tsx:340 #, c-format msgid "Payback" msgstr "" -#: src/webex/pages/popup.tsx:338 +#: src/webex/pages/popup.tsx:341 #, c-format msgid "Return Electronic Cash to Bank Account" msgstr "" -#: src/webex/pages/popup.tsx:339 +#: src/webex/pages/popup.tsx:342 #, c-format msgid "Manage Trusted Auditors and Exchanges" msgstr "" -#: src/webex/pages/popup.tsx:351 +#: src/webex/pages/popup.tsx:354 #, c-format msgid "Bank requested reserve (%1$s) for %2$s." msgstr "" -#: src/webex/pages/popup.tsx:361 +#: src/webex/pages/popup.tsx:364 #, c-format msgid "Started to withdraw %1$s from %2$s (%3$s)." msgstr "" -#: src/webex/pages/popup.tsx:370 +#: src/webex/pages/popup.tsx:373 #, c-format msgid "Merchant %1$s offered contract %2$s." msgstr "" -#: src/webex/pages/popup.tsx:381 +#: src/webex/pages/popup.tsx:384 #, c-format msgid "Withdrew %1$s from %2$s (%3$s)." msgstr "" -#: src/webex/pages/popup.tsx:391 +#: src/webex/pages/popup.tsx:394 #, c-format msgid "Paid %1$s to merchant %2$s. %3$s (%4$s)" msgstr "" -#: src/webex/pages/popup.tsx:401 +#: src/webex/pages/popup.tsx:404 #, c-format msgid "Merchant %1$s gave a refund over %2$s." msgstr "" -#: src/webex/pages/popup.tsx:411 +#: src/webex/pages/popup.tsx:414 #, c-format msgid "tip" msgstr "" -#: src/webex/pages/popup.tsx:415 +#: src/webex/pages/popup.tsx:418 #, c-format msgid "Merchant %1$s gave a %2$s of %3$s." msgstr "" -#: src/webex/pages/popup.tsx:419 +#: src/webex/pages/popup.tsx:422 #, c-format msgid "You did not accept the tip yet." msgstr "" -#: src/webex/pages/popup.tsx:424 +#: src/webex/pages/popup.tsx:427 #, c-format msgid "Unknown event (%1$s)" msgstr "" -#: src/webex/pages/popup.tsx:467 +#: src/webex/pages/popup.tsx:470 #, c-format msgid "Error: could not retrieve event history" msgstr "" -#: src/webex/pages/popup.tsx:492 +#: src/webex/pages/popup.tsx:495 #, c-format msgid "Your wallet has no events recorded." msgstr "" diff --git a/webpack.config.js b/webpack.config.js index c19b3addc..f0c2a16ce 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -47,14 +47,17 @@ module.exports = function (env) { const configWebWorker = { entry: {"cryptoWorker": "./src/crypto/cryptoWorker.ts"}, target: "webworker", + name: "webworker", }; const configBackground = { entry: {"background": "./src/webex/background.ts"}, + name: "background", }; const configContentScript = { entry: {"contentScript": "./src/webex/notify.ts"}, + name: "contentScript", }; const configExtensionPages = { @@ -75,6 +78,7 @@ module.exports = function (env) { "tip": "./src/webex/pages/tip.tsx", "tree": "./src/webex/pages/tree.tsx", }, + name: "pages", optimization: { splitChunks: { name: "page-common", diff --git a/yarn.lock b/yarn.lock index 23b09aa15..198bc9c02 100644 --- a/yarn.lock +++ b/yarn.lock @@ -268,13 +268,20 @@ abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" +accepts@~1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + acorn-dynamic-import@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" dependencies: acorn "^5.0.0" -acorn@^5.0.0, acorn@^5.6.2: +acorn@^5.0.0, acorn@^5.6.2, acorn@^5.7.3: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" @@ -476,6 +483,10 @@ array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + array-slice@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" @@ -532,6 +543,10 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + async@^2.0.0, async@^2.5.0: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" @@ -982,6 +997,15 @@ beeper@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" +bfj@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.1.tgz#05a3b7784fbd72cfa3c22e56002ef99336516c48" + dependencies: + bluebird "^3.5.1" + check-types "^7.3.0" + hoopy "^0.1.2" + tryer "^1.0.0" + big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" @@ -1005,6 +1029,21 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" +body-parser@1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.1" + http-errors "~1.6.2" + iconv-lite "0.4.19" + on-finished "~2.3.0" + qs "6.5.1" + raw-body "2.3.2" + type-is "~1.6.15" + boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -1166,7 +1205,7 @@ builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" -bytes@^3.0.0: +bytes@3.0.0, bytes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -1279,6 +1318,10 @@ chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" +check-types@^7.3.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" + chokidar@^1.4.2: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -1463,7 +1506,7 @@ commander@2.17.x, commander@~2.17.1: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" -commander@^2.12.1: +commander@^2.12.1, commander@^2.18.0: version "2.18.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" @@ -1552,6 +1595,14 @@ constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + convert-source-map@^1.1.1, convert-source-map@^1.2.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" @@ -1562,6 +1613,14 @@ convert-to-spaces@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -1739,15 +1798,15 @@ debug-log@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" @@ -1820,6 +1879,14 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" +depd@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + +depd@~1.1.1, depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + deprecated@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" @@ -1831,6 +1898,10 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + detect-file@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" @@ -1921,6 +1992,10 @@ duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" +duplexer@^0.1.1: + version "0.1.1" + resolved "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + duplexify@^3.2.0, duplexify@^3.4.2, duplexify@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410" @@ -1930,6 +2005,14 @@ duplexify@^3.2.0, duplexify@^3.4.2, duplexify@^3.6.0: readable-stream "^2.0.0" stream-shift "^1.0.0" +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +ejs@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" + elliptic@^6.0.0: version "6.4.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" @@ -1953,6 +2036,10 @@ empower-core@^0.6.1: call-signature "0.0.2" core-js "^2.0.0" +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -2026,6 +2113,10 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.1: d "1" es5-ext "~0.10.14" +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -2070,6 +2161,10 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -2135,6 +2230,41 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" +express@^4.16.3: + version "4.16.3" + resolved "http://registry.npmjs.org/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" + dependencies: + accepts "~1.3.5" + array-flatten "1.1.1" + body-parser "1.18.2" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.1" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.3" + qs "6.5.1" + range-parser "~1.2.0" + safe-buffer "5.1.1" + send "0.16.2" + serve-static "1.13.2" + setprototypeof "1.1.0" + statuses "~1.4.0" + type-is "~1.6.16" + utils-merge "1.0.1" + vary "~1.1.2" + extend-shallow@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" @@ -2215,6 +2345,10 @@ filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" +filesize@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + fill-range@^2.1.0: version "2.2.4" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" @@ -2234,6 +2368,18 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +finalhandler@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.4.0" + unpipe "~1.0.0" + find-cache-dir@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" @@ -2340,12 +2486,20 @@ foreground-child@^1.5.3, foreground-child@^1.5.6: cross-spawn "^4" signal-exit "^3.0.0" +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" dependencies: map-cache "^0.2.2" +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" @@ -2795,6 +2949,13 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" +gzip-size@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80" + dependencies: + duplexer "^0.1.1" + pify "^3.0.0" + handlebars@^4.0.3, handlebars@^4.0.6: version "4.0.12" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" @@ -2915,6 +3076,10 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" +hoopy@^0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + hosted-git-info@^2.1.4: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" @@ -2951,6 +3116,24 @@ htmlparser2@~3.3.0: domutils "1.1" readable-stream "1.0" +http-errors@1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-errors@~1.6.2: + version "1.6.3" + resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -2974,6 +3157,10 @@ hullabaloo-config-manager@^1.1.0: resolve-from "^3.0.0" safe-buffer "^5.0.1" +iconv-lite@0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -3093,6 +3280,10 @@ invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" +ipaddr.js@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" + irregular-plurals@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-1.4.0.tgz#2ca9b033651111855412f16be5d77c62a458a766" @@ -3872,6 +4063,10 @@ md5.js@^1.3.4: hash-base "^3.0.0" inherits "^2.0.1" +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + mem@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" @@ -3908,6 +4103,10 @@ meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + merge-source-map@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" @@ -3920,6 +4119,10 @@ merge-stream@^1.0.0: dependencies: readable-stream "^2.0.1" +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -3963,6 +4166,20 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" +mime-db@~1.36.0: + version "1.36.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" + +mime-types@~2.1.18: + version "2.1.20" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19" + dependencies: + mime-db "~1.36.0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" @@ -4121,6 +4338,10 @@ needle@^2.2.1: iconv-lite "^0.4.4" sax "^1.2.4" +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + neo-async@^2.5.0: version "2.5.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc" @@ -4360,6 +4581,12 @@ observable-to-promise@^0.5.0: is-observable "^0.2.0" symbol-observable "^1.0.4" +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -4378,6 +4605,10 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +opener@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -4587,6 +4818,10 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -4635,6 +4870,10 @@ path-root@^0.1.1: dependencies: path-root-regex "^0.1.0" +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -4809,6 +5048,13 @@ prop-types@^15.6.2: loose-envify "^1.3.1" object-assign "^4.1.1" +proxy-addr@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.8.0" + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -4854,6 +5100,10 @@ punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" +qs@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -4883,6 +5133,19 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" +range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + dependencies: + bytes "3.0.0" + http-errors "1.6.2" + iconv-lite "0.4.19" + unpipe "1.0.0" + rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -5195,6 +5458,10 @@ rxjs@^6.1.0: dependencies: tslib "^1.9.0" +safe-buffer@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -5240,6 +5507,24 @@ semver@^4.1.0: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + sequencify@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" @@ -5248,6 +5533,15 @@ serialize-javascript@^1.4.0: version "1.5.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -5274,6 +5568,14 @@ setimmediate@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -5461,6 +5763,14 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" @@ -5808,6 +6118,10 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" +tryer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" @@ -5839,6 +6153,13 @@ tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" +type-is@~1.6.15, type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -5966,6 +6287,10 @@ universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -6059,6 +6384,10 @@ utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + uuid@^3.1.0: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -6088,6 +6417,10 @@ value-or-function@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + vinyl-fs@^0.3.0: version "0.3.14" resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" @@ -6209,6 +6542,23 @@ watchpack@^1.5.0: graceful-fs "^4.1.2" neo-async "^2.5.0" +webpack-bundle-analyzer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.0.2.tgz#22f19ea6d1b5a15fd7a90baae0bc0f39bd1e4d48" + dependencies: + acorn "^5.7.3" + bfj "^6.1.1" + chalk "^2.4.1" + commander "^2.18.0" + ejs "^2.6.1" + express "^4.16.3" + filesize "^3.6.1" + gzip-size "^5.0.0" + lodash "^4.17.10" + mkdirp "^0.5.1" + opener "^1.5.1" + ws "^6.0.0" + webpack-cli@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.0.tgz#d71a83687dcfeb758fdceeb0fe042f96bcf62994" @@ -6357,6 +6707,12 @@ write-pkg@^3.1.0: sort-keys "^2.0.0" write-json-file "^2.2.0" +ws@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.0.0.tgz#eaa494aded00ac4289d455bac8d84c7c651cef35" + dependencies: + async-limiter "~1.0.0" + xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"