From 14c913d44cd6ebff3645217a2023b1d412599990 Mon Sep 17 00:00:00 2001 From: msqr1 Date: Mon, 23 Sep 2024 22:56:25 -0700 Subject: [PATCH] Attempt to fix MacOs #13 --- Examples/Vosklet.js | 2 +- Examples/Vosklet.wasm | Bin 2559691 -> 2559693 bytes Examples/fromFile.html | 2 +- Examples/fromMic.html | 2 +- Vosklet.js | 2 +- Vosklet.wasm | Bin 2559691 -> 2559693 bytes src/Clapack-wasm.patch | 8 +- src/Wrapper.js | 229 +++++++++++++++++++++-------------------- src/make | 10 +- test | 8 +- 10 files changed, 137 insertions(+), 126 deletions(-) diff --git a/Examples/Vosklet.js b/Examples/Vosklet.js index 30897dd..988e57c 100644 --- a/Examples/Vosklet.js +++ b/Examples/Vosklet.js @@ -6,7 +6,7 @@ var loadVosklet = (() => { function(moduleArg = {}) { var moduleRtn; -function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU16}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU32}function GROWABLE_HEAP_F32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF64}var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_WASM_WORKER=Module["$ww"];let objs=[];let events=["status","partialResult","result"];let processorURL=URL.createObjectURL(new Blob(["(",(()=>{registerProcessor("VoskletTransferer",class extends AudioWorkletProcessor{constructor(opts){super();this.count=0;this.maxCount=opts.processorOptions.maxCount;this.buffer=new Float32Array(this.maxCount*128)}process(inputs){if(!inputs[0][0])return true;this.buffer.set(inputs[0][0],this.count*128);this.count++;if(this.count>=this.maxCount){this.count=0;this.port.postMessage(this.buffer,[this.buffer.buffer]);this.buffer=new Float32Array(this.maxCount*128)}return true}})}).toString(),")()"],{type:"text/javascript"}));Module.cleanUp=async()=>{for(let obj of objs)await obj.delete();URL.revokeObjectURL(processorURL)};Module.createTransferer=async(ctx,bufferSize)=>{await ctx.audioWorklet.addModule(processorURL);return new AudioWorkletNode(ctx,"VoskletTransferer",{channelCountMode:"explicit",numberOfInputs:1,numberOfOutputs:0,channelCount:1,processorOptions:{maxCount:bufferSize/128}})};getFileHandle=async(path,create=false)=>{let components=path.split("/");let prevDir=await navigator.storage.getDirectory();for(let component of components.slice(0,-1))prevDir=await prevDir.getDirectoryHandle(component,{create});return prevDir.getFileHandle(components[components.length-1],{create})};class CommonModel extends EventTarget{constructor(){super();objs.push(this)}delete(){this.obj.delete()}static async create(url,storepath,id,normalMdl){let mdl=new CommonModel;let result=new Promise((resolve,reject)=>{mdl.addEventListener("status",ev=>{if(!ev.detail){if(normalMdl)mdl.findWord=word=>mdl.obj.findWord(word);resolve(mdl)}else reject(ev.detail)},{once:true})});let tar;try{let dataFile=await(await getFileHandle(storepath+"/model.tgz")).getFile();let idFile=await(await getFileHandle(storepath+"/id")).getFile();if(await idFile.text()!=id)throw"";tar=await new Response(dataFile.stream().pipeThrough(new DecompressionStream("gzip"))).arrayBuffer()}catch{try{let res=await fetch(url);if(!res.ok)throw"Unable to download model";let teedBody=new Response(res.body.pipeThrough(new DecompressionStream("gzip"))).body.tee();let newDataFile=await(await getFileHandle(storepath+"/model.tgz",true)).createWritable();await newDataFile.write(await new Response(teedBody[0].pipeThrough(new CompressionStream("gzip"))).arrayBuffer());await newDataFile.close();let newIDFile=await(await getFileHandle(storepath+"/id",true)).createWritable();await newIDFile.write(id);await newIDFile.close();tar=await new Response(teedBody[1]).arrayBuffer()}catch(e){mdl.delete();throw e}}let tarStart=_malloc(tar.byteLength);GROWABLE_HEAP_U8().set(new Uint8Array(tar),tarStart);mdl.obj=new Module.CommonModel(objs.length-1,normalMdl,"/"+storepath,id,tarStart,tar.byteLength);return result}}Module.createModel=async(url,storepath,id)=>CommonModel.create(url,storepath,id,true);Module.createSpkModel=async(url,storepath,id)=>CommonModel.create(url,storepath,id,false);class Recognizer extends EventTarget{constructor(){super();objs.push(this);return new Proxy(this,{get(self,prop,_){if(self[prop]==undefined&&self.obj[prop]==undefined)return undefined;let p=self[prop];if(p)return p.bind?p.bind(self):p;p=self.obj[prop];return p.bind?p.bind(self.obj):p}})}acceptWaveform(audioData){let start=_malloc(audioData.length*4);GROWABLE_HEAP_F32().set(audioData,start/4);this.obj.acceptWaveform(start,audioData.length)}async delete(processCurrent=false){let result=new Promise((resolve,_)=>this.addEventListener("status",_=>{this.obj.delete();resolve()},{once:true}));this.obj.safeDelete(processCurrent);return result}static async create(model,sampleRate,mode,grammar,spkModel){let rec=new Recognizer;let result=new Promise((resolve,reject)=>{rec.addEventListener("status",ev=>{if(!ev.detail)resolve(rec);else reject(ev.detail)},{once:true})});switch(mode){case 1:rec.obj=new Module.Recognizer(objs.length-1,sampleRate,model);break;case 2:rec.obj=new Module.Recognizer(objs.length-1,sampleRate,model,spkModel);break;default:rec.obj=new Module.Recognizer(objs.length-1,sampleRate,model,grammar,0)}return result}}Module.createRecognizer=(model,sampleRate)=>Recognizer.create(model.obj,sampleRate,1);Module.createRecognizerWithSpkModel=(model,sampleRate,spkModel)=>Recognizer.create(model.obj,sampleRate,2,null,spkModel.obj);Module.createRecognizerWithGrm=(model,sampleRate,grammar)=>Recognizer.create(model.obj,sampleRate,3,grammar,null);var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=url=>fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||330301440;wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768,shared:true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")}throw Error("bad memory")}}updateMemoryViews();var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_WASM_WORKER)return _wasmWorkerInitializeRuntime();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function findWasmBinary(){var f="Vosklet.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmTable=wasmExports["$"];addOnInit(wasmExports["Y"]);wasmModule=module;removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}function mtFireEv(index,typeIdx,content){objs[index].dispatchEvent(new CustomEvent(events[typeIdx],{detail:content==0?null:UTF8ToString(content)}))}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var _wasmWorkerDelayedMessageQueue=[];var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var _wasmWorkerRunPostMessage=e=>{let data=e.data;let wasmCall=data["_wsc"];wasmCall&&getWasmTableEntry(wasmCall)(...data["x"])};var _wasmWorkerAppendToQueue=e=>{_wasmWorkerDelayedMessageQueue.push(e)};var _wasmWorkerInitializeRuntime=()=>{let m=Module;__emscripten_wasm_worker_initialize(m["sb"],m["sz"]);removeEventListener("message",_wasmWorkerAppendToQueue);_wasmWorkerDelayedMessageQueue=_wasmWorkerDelayedMessageQueue.forEach(_wasmWorkerRunPostMessage);addEventListener("message",_wasmWorkerRunPostMessage)};var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;var UTF8Decoder=new TextDecoder;var UTF8ToString=(ptr,maxBytesToRead)=>{if(!ptr)return"";var maxPtr=ptr+maxBytesToRead;for(var end=ptr;!(end>=maxPtr)&&GROWABLE_HEAP_U8()[end];)++end;return UTF8Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,end))};var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};var ___call_sighandler=(fp,sig)=>getWasmTableEntry(fp)(sig);class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){GROWABLE_HEAP_U32()[this.ptr+4>>2]=type}get_type(){return GROWABLE_HEAP_U32()[this.ptr+4>>2]}set_destructor(destructor){GROWABLE_HEAP_U32()[this.ptr+8>>2]=destructor}get_destructor(){return GROWABLE_HEAP_U32()[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;GROWABLE_HEAP_I8()[this.ptr+12]=caught}get_caught(){return GROWABLE_HEAP_I8()[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;GROWABLE_HEAP_I8()[this.ptr+13]=rethrown}get_rethrown(){return GROWABLE_HEAP_I8()[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){GROWABLE_HEAP_U32()[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return GROWABLE_HEAP_U32()[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var __abort_js=()=>{abort("")};var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(GROWABLE_HEAP_U8()[c]){ret+=embind_charCodes[GROWABLE_HEAP_U8()[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(type=>typeDependencies[type]=dependentTypes);function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>GROWABLE_HEAP_I8()[pointer]:pointer=>GROWABLE_HEAP_U8()[pointer];case 2:return signed?pointer=>GROWABLE_HEAP_I16()[pointer>>1]:pointer=>GROWABLE_HEAP_U16()[pointer>>1];case 4:return signed?pointer=>GROWABLE_HEAP_I32()[pointer>>2]:pointer=>GROWABLE_HEAP_U32()[pointer>>2];case 8:return signed?pointer=>HEAP64[pointer>>3]:pointer=>HEAPU64[pointer>>3];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);var isUnsignedType=name.indexOf("u")!=-1;if(isUnsignedType){maxRange=(1n<<64n)-1n}registerType(primitiveType,{name,fromWireType:value=>value,toWireType:function(destructors,value){if(typeof value!="bigint"&&typeof value!="number"){throw new TypeError(`Cannot convert "${embindRepr(value)}" to ${this.name}`)}if(typeof value=="number"){value=BigInt(value)}return value},argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U8()[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var getInheritedInstanceCount=()=>Object.keys(registeredInstances).length;var getLiveInheritedInstances=()=>{var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var setDelayFunction=fn=>{delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}};var init_embind=()=>{Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle["delete"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this["fromWireType"](GROWABLE_HEAP_U32()[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistent public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var enumReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?function(pointer){return this["fromWireType"](GROWABLE_HEAP_I8()[pointer])}:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U8()[pointer])};case 2:return signed?function(pointer){return this["fromWireType"](GROWABLE_HEAP_I16()[pointer>>1])}:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U16()[pointer>>1])};case 4:return signed?function(pointer){return this["fromWireType"](GROWABLE_HEAP_I32()[pointer>>2])}:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U32()[pointer>>2])};default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_enum=(rawType,name,size,isSigned)=>{name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name,constructor:ctor,fromWireType:function(c){return this.constructor.values[c]},toWireType:(destructors,c)=>c.value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var __embind_register_enum_value=(rawEnumType,name,enumValue)=>{var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(`${enumType.name}_${name}`,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F32()[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F64()[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync,isNonnullReturn)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name,fromWireType,toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=GROWABLE_HEAP_U32()[handle>>2];var data=GROWABLE_HEAP_U32()[handle+4>>2];return new TA(GROWABLE_HEAP_I8().buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name,fromWireType(value){var length=GROWABLE_HEAP_U32()[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||GROWABLE_HEAP_U8()[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}GROWABLE_HEAP_U8()[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&GROWABLE_HEAP_U16()[idx])++idx;endPtr=idx<<1;return UTF16Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,endPtr))};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}GROWABLE_HEAP_I16()[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=GROWABLE_HEAP_I32()[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}GROWABLE_HEAP_I32()[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}GROWABLE_HEAP_I32()[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>GROWABLE_HEAP_U16()[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>GROWABLE_HEAP_U32()[pointer>>2]}registerType(rawType,{name,fromWireType:value=>{var length=GROWABLE_HEAP_U32()[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);GROWABLE_HEAP_U32()[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var _wasmWorkers={};var _wasmWorkersID=1;var _wasmWorkerBlobUrl=URL.createObjectURL(new Blob(["onmessage=function(d){onmessage=null;d=d.data;d[`instantiateWasm`]=(i,r)=>{var n=new WebAssembly.Instance(d[`wasm`],i);return r(n,d[`wasm`]);};importScripts(d.js);loadVosklet(d);d.wasm=d.mem=d.js=0;}"],{type:"application/javascript"}));var __emscripten_create_wasm_worker=(stackLowestAddress,stackSize)=>{let worker=_wasmWorkers[_wasmWorkersID]=new Worker(_wasmWorkerBlobUrl);worker.postMessage({$ww:_wasmWorkersID,wasm:wasmModule,js:Module["mainScriptUrlOrBlob"]||_scriptName,wasmMemory,sb:stackLowestAddress,sz:stackSize});worker.onmessage=_wasmWorkerRunPostMessage;return _wasmWorkersID++};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);GROWABLE_HEAP_U32()[timezone>>2]=stdTimezoneOffset*60;GROWABLE_HEAP_I32()[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffsetGROWABLE_HEAP_U8().set(wasmFSPreloadedFiles[index].fileData,buffer);var wasmFSPreloadedDirs=[];var __wasmfs_get_num_preloaded_dirs=()=>wasmFSPreloadedDirs.length;var wasmFSPreloadedFiles=[];var wasmFSPreloadingFlushed=false;var __wasmfs_get_num_preloaded_files=()=>{wasmFSPreloadingFlushed=true;return wasmFSPreloadedFiles.length};var __wasmfs_get_preloaded_child_path=(index,childNameBuffer)=>{var s=wasmFSPreloadedDirs[index].childName;var len=lengthBytesUTF8(s)+1;stringToUTF8(s,childNameBuffer,len)};var __wasmfs_get_preloaded_file_mode=index=>wasmFSPreloadedFiles[index].mode;var __wasmfs_get_preloaded_file_size=index=>wasmFSPreloadedFiles[index].fileData.length;var __wasmfs_get_preloaded_parent_path=(index,parentPathBuffer)=>{var s=wasmFSPreloadedDirs[index].parentPath;var len=lengthBytesUTF8(s)+1;stringToUTF8(s,parentPathBuffer,len)};var __wasmfs_get_preloaded_path_name=(index,fileNameBuffer)=>{var s=wasmFSPreloadedFiles[index].pathName;var len=lengthBytesUTF8(s)+1;stringToUTF8(s,fileNameBuffer,len)};var FS_stdin_getChar_buffer=[];function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var __wasmfs_stdin_get_char=()=>{var c=FS_stdin_getChar();if(typeof c==="number"){return c}return-1};var _emscripten_console_error=str=>{console.error(UTF8ToString(str))};var _emscripten_console_log=str=>{console.log(UTF8ToString(str))};var _emscripten_console_warn=str=>{console.warn(UTF8ToString(str))};var _emscripten_date_now=()=>Date.now();var _emscripten_err=str=>err(UTF8ToString(str));var _emscripten_out=str=>out(UTF8ToString(str));var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=GROWABLE_HEAP_U8().length;requestedSize>>>=0;if(requestedSize<=oldSize){return false}var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var _wasmWorkerPostFunction2=(id,funcPtr,arg0,arg1)=>{_wasmWorkers[id].postMessage({_wsc:funcPtr,x:[arg0,arg1]})};var _emscripten_wasm_worker_post_function_vii=_wasmWorkerPostFunction2;var _wasmWorkerPostFunction3=(id,funcPtr,arg0,arg1,arg2)=>{_wasmWorkers[id].postMessage({_wsc:funcPtr,x:[arg0,arg1,arg2]})};var _emscripten_wasm_worker_post_function_viii=_wasmWorkerPostFunction3;var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;GROWABLE_HEAP_U32()[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();GROWABLE_HEAP_U32()[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);GROWABLE_HEAP_U32()[penviron_buf_size>>2]=bufSize;return 0};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>(view.set(crypto.getRandomValues(new Uint8Array(view.byteLength))),view)}else abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var _getentropy=(buffer,size)=>{randomFill(GROWABLE_HEAP_U8().subarray(buffer,buffer+size));return 0};embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();if(ENVIRONMENT_IS_WASM_WORKER){_wasmWorkers[0]=this;addEventListener("message",_wasmWorkerAppendToQueue)}var wasmImports={c:___assert_fail,t:___call_sighandler,d:___cxa_throw,P:__abort_js,q:__embind_register_bigint,S:__embind_register_bool,o:__embind_register_class,j:__embind_register_class_constructor,g:__embind_register_class_function,R:__embind_register_emval,s:__embind_register_enum,k:__embind_register_enum_value,p:__embind_register_float,C:__embind_register_function,i:__embind_register_integer,e:__embind_register_memory_view,r:__embind_register_std_string,n:__embind_register_std_wstring,T:__embind_register_void,I:__emscripten_create_wasm_worker,O:__emscripten_get_now_is_monotonic,v:__emscripten_runtime_keepalive_clear,w:__setitimer_js,K:__tzset_js,E:__wasmfs_copy_preloaded_file_data,B:__wasmfs_get_num_preloaded_dirs,D:__wasmfs_get_num_preloaded_files,z:__wasmfs_get_preloaded_child_path,x:__wasmfs_get_preloaded_file_mode,F:__wasmfs_get_preloaded_file_size,A:__wasmfs_get_preloaded_parent_path,y:__wasmfs_get_preloaded_path_name,H:__wasmfs_stdin_get_char,U:_emscripten_console_error,W:_emscripten_console_log,V:_emscripten_console_warn,f:_emscripten_date_now,l:_emscripten_err,m:_emscripten_get_now,G:_emscripten_out,L:_emscripten_resize_heap,Q:_emscripten_wasm_worker_post_function_vii,h:_emscripten_wasm_worker_post_function_viii,M:_environ_get,N:_environ_sizes_get,b:_exit,J:_getentropy,a:wasmMemory,X:mtFireEv,u:_proc_exit};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["Y"])();var _free=a0=>(_free=wasmExports["Z"])(a0);var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["_"])(a0);var ___getTypeName=a0=>(___getTypeName=wasmExports["aa"])(a0);var __emscripten_timeout=(a0,a1)=>(__emscripten_timeout=wasmExports["ba"])(a0,a1);var __emscripten_wasm_worker_initialize=(a0,a1)=>(__emscripten_wasm_worker_initialize=wasmExports["ca"])(a0,a1);Module["UTF8ToString"]=UTF8ToString;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}if(ENVIRONMENT_IS_WASM_WORKER){readyPromiseResolve(Module);return initRuntime()}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise; +function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU16}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU32}function GROWABLE_HEAP_F32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF64}var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_WASM_WORKER=Module["$ww"];let objs=[];let events=["status","partialResult","result"];let storageWorkerURL=URL.createObjectURL(new Blob(["(",(()=>{let txtDecoder=new TextDecoder;let txtEncoder=new TextEncoder;onmessage=async msg=>{msg=msg.data;let components=msg.storepath.split("/");let prevDir=await navigator.storage.getDirectory();for(let component of components)prevDir=await prevDir.getDirectoryHandle(component,{create:true});let idHandle=await prevDir.getFileHandle("id",{create:true});let mdlHandle=await prevDir.getFileHandle("model.tgz",{create:true});let idFile=await idHandle.createSyncAccessHandle();let mdlFile=await mdlHandle.createSyncAccessHandle();let oldIdBuf=new ArrayBuffer(idFile.getSize());idFile.read(oldIdBuf);let tar,tgz;if(txtDecoder.decode(oldIdBuf)==msg.id){tgz=new ArrayBuffer(mdlFile.getSize());mdlFile.read(tgz);tar=await new Response(new Response(tgz).body.pipeThrough(new DecompressionStream("gzip"))).arrayBuffer()}else{let res=await fetch(msg.url);if(!res.ok){postMessage("Unable to download model");return}let teed=res.body.tee();tgz=await new Response(teed[0]).arrayBuffer();mdlFile.write(tgz,{at:0});mdlFile.truncate(tgz.byteLength);let newId=txtEncoder.encode(msg.id);idFile.write(newId,{at:0});idFile.truncate(newId.length);tar=await new Response(teed[1].pipeThrough(new DecompressionStream("gzip"))).arrayBuffer()}idFile.close();mdlFile.close();self.postMessage(tar,[tar])}}).toString(),")()"],{type:"text/javascript"}));let storageWorker=new Worker(storageWorkerURL);let processorURL=URL.createObjectURL(new Blob(["(",(()=>{registerProcessor("VoskletTransferer",class extends AudioWorkletProcessor{constructor(opts){super();this.count=0;this.maxCount=opts.processorOptions.maxCount;this.buffer=new Float32Array(this.maxCount*128)}process(inputs){if(!inputs[0][0])return true;this.buffer.set(inputs[0][0],this.count++*128);if(this.count>=this.maxCount){this.count=0;this.port.postMessage(this.buffer,[this.buffer.buffer]);this.buffer=new Float32Array(this.maxCount*128)}return true}})}).toString(),")()"],{type:"text/javascript"}));Module.cleanUp=async()=>{for(let obj of objs)await obj.delete();URL.revokeObjectURL(processorURL);URL.revokeObjectURL(storageWorkerURL);storageWorker.terminate()};Module.createTransferer=async(ctx,bufferSize)=>{await ctx.audioWorklet.addModule(processorURL);return new AudioWorkletNode(ctx,"VoskletTransferer",{channelCountMode:"explicit",numberOfInputs:1,numberOfOutputs:0,channelCount:1,processorOptions:{maxCount:bufferSize/128}})};class CommonModel extends EventTarget{constructor(){super();objs.push(this)}delete(){this.obj.delete()}static async mk(url,storepath,id,normalMdl){let mdl=new CommonModel;let result=new Promise((resolve,reject)=>{mdl.addEventListener("status",ev=>{if(!ev.detail){if(normalMdl)mdl.findWord=word=>mdl.obj.findWord(word);resolve(mdl)}else reject(ev.detail)},{once:true})});storageWorker.addEventListener("message",tar=>{tar=tar.data;let tarStart=_malloc(tar.byteLength);GROWABLE_HEAP_U8().set(new Uint8Array(tar),tarStart);mdl.obj=new Module.CommonModel(objs.length-1,normalMdl,"/"+storepath,id,tarStart,tar.byteLength)},{once:true});storageWorker.postMessage({url,storepath,id});return result}}Module.createModel=async(url,storepath,id)=>CommonModel.mk(url,storepath,id,true);Module.createSpkModel=async(url,storepath,id)=>CommonModel.mk(url,storepath,id,false);class Recognizer extends EventTarget{constructor(){super();objs.push(this);return new Proxy(this,{get(self,prop,_){if(self[prop]==undefined&&self.obj[prop]==undefined)return;let p=self[prop];if(p)return p.bind?p.bind(self):p;p=self.obj[prop];return p.bind?p.bind(self.obj):p}})}acceptWaveform(audioData){let start=_malloc(audioData.length*4);GROWABLE_HEAP_F32().set(audioData,start/4);this.obj.acceptWaveform(start,audioData.length)}async delete(processCurrent=false){let result=new Promise((resolve,_)=>this.addEventListener("status",_=>{this.obj.delete();resolve()},{once:true}));this.obj.safeDelete(processCurrent);return result}static async mk(model,sampleRate,mode,grammar,spkModel){let rec=new Recognizer;let result=new Promise((resolve,reject)=>{rec.addEventListener("status",ev=>{if(!ev.detail)resolve(rec);else reject(ev.detail)},{once:true})});switch(mode){case 1:rec.obj=new Module.Recognizer(objs.length-1,sampleRate,model);break;case 2:rec.obj=new Module.Recognizer(objs.length-1,sampleRate,model,spkModel);break;default:rec.obj=new Module.Recognizer(objs.length-1,sampleRate,model,grammar,0)}return result}}Module.createRecognizer=(model,sampleRate)=>Recognizer.mk(model.obj,sampleRate,1);Module.createRecognizerWithSpkModel=(model,sampleRate,spkModel)=>Recognizer.mk(model.obj,sampleRate,2,null,spkModel.obj);Module.createRecognizerWithGrm=(model,sampleRate,grammar)=>Recognizer.mk(model.obj,sampleRate,3,grammar,null);var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=url=>fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||330301440;wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768,shared:true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")}throw Error("bad memory")}}updateMemoryViews();var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_WASM_WORKER)return _wasmWorkerInitializeRuntime();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function findWasmBinary(){var f="Vosklet.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmTable=wasmExports["$"];addOnInit(wasmExports["Y"]);wasmModule=module;removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}function mtFireEv(index,typeIdx,content){objs[index].dispatchEvent(new CustomEvent(events[typeIdx],{detail:content==0?null:UTF8ToString(content)}))}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var _wasmWorkerDelayedMessageQueue=[];var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var _wasmWorkerRunPostMessage=e=>{let data=e.data;let wasmCall=data["_wsc"];wasmCall&&getWasmTableEntry(wasmCall)(...data["x"])};var _wasmWorkerAppendToQueue=e=>{_wasmWorkerDelayedMessageQueue.push(e)};var _wasmWorkerInitializeRuntime=()=>{let m=Module;__emscripten_wasm_worker_initialize(m["sb"],m["sz"]);removeEventListener("message",_wasmWorkerAppendToQueue);_wasmWorkerDelayedMessageQueue=_wasmWorkerDelayedMessageQueue.forEach(_wasmWorkerRunPostMessage);addEventListener("message",_wasmWorkerRunPostMessage)};var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;var UTF8Decoder=new TextDecoder;var UTF8ToString=(ptr,maxBytesToRead)=>{if(!ptr)return"";var maxPtr=ptr+maxBytesToRead;for(var end=ptr;!(end>=maxPtr)&&GROWABLE_HEAP_U8()[end];)++end;return UTF8Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,end))};var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};var ___call_sighandler=(fp,sig)=>getWasmTableEntry(fp)(sig);class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){GROWABLE_HEAP_U32()[this.ptr+4>>2]=type}get_type(){return GROWABLE_HEAP_U32()[this.ptr+4>>2]}set_destructor(destructor){GROWABLE_HEAP_U32()[this.ptr+8>>2]=destructor}get_destructor(){return GROWABLE_HEAP_U32()[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;GROWABLE_HEAP_I8()[this.ptr+12]=caught}get_caught(){return GROWABLE_HEAP_I8()[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;GROWABLE_HEAP_I8()[this.ptr+13]=rethrown}get_rethrown(){return GROWABLE_HEAP_I8()[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){GROWABLE_HEAP_U32()[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return GROWABLE_HEAP_U32()[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var __abort_js=()=>{abort("")};var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(GROWABLE_HEAP_U8()[c]){ret+=embind_charCodes[GROWABLE_HEAP_U8()[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(type=>typeDependencies[type]=dependentTypes);function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>GROWABLE_HEAP_I8()[pointer]:pointer=>GROWABLE_HEAP_U8()[pointer];case 2:return signed?pointer=>GROWABLE_HEAP_I16()[pointer>>1]:pointer=>GROWABLE_HEAP_U16()[pointer>>1];case 4:return signed?pointer=>GROWABLE_HEAP_I32()[pointer>>2]:pointer=>GROWABLE_HEAP_U32()[pointer>>2];case 8:return signed?pointer=>HEAP64[pointer>>3]:pointer=>HEAPU64[pointer>>3];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);var isUnsignedType=name.indexOf("u")!=-1;if(isUnsignedType){maxRange=(1n<<64n)-1n}registerType(primitiveType,{name,fromWireType:value=>value,toWireType:function(destructors,value){if(typeof value!="bigint"&&typeof value!="number"){throw new TypeError(`Cannot convert "${embindRepr(value)}" to ${this.name}`)}if(typeof value=="number"){value=BigInt(value)}return value},argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U8()[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var getInheritedInstanceCount=()=>Object.keys(registeredInstances).length;var getLiveInheritedInstances=()=>{var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var setDelayFunction=fn=>{delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}};var init_embind=()=>{Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle["delete"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this["fromWireType"](GROWABLE_HEAP_U32()[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistent public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var enumReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?function(pointer){return this["fromWireType"](GROWABLE_HEAP_I8()[pointer])}:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U8()[pointer])};case 2:return signed?function(pointer){return this["fromWireType"](GROWABLE_HEAP_I16()[pointer>>1])}:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U16()[pointer>>1])};case 4:return signed?function(pointer){return this["fromWireType"](GROWABLE_HEAP_I32()[pointer>>2])}:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U32()[pointer>>2])};default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_enum=(rawType,name,size,isSigned)=>{name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name,constructor:ctor,fromWireType:function(c){return this.constructor.values[c]},toWireType:(destructors,c)=>c.value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var __embind_register_enum_value=(rawEnumType,name,enumValue)=>{var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(`${enumType.name}_${name}`,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F32()[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F64()[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync,isNonnullReturn)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name,fromWireType,toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=GROWABLE_HEAP_U32()[handle>>2];var data=GROWABLE_HEAP_U32()[handle+4>>2];return new TA(GROWABLE_HEAP_I8().buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name,fromWireType(value){var length=GROWABLE_HEAP_U32()[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||GROWABLE_HEAP_U8()[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}GROWABLE_HEAP_U8()[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&GROWABLE_HEAP_U16()[idx])++idx;endPtr=idx<<1;return UTF16Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,endPtr))};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}GROWABLE_HEAP_I16()[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=GROWABLE_HEAP_I32()[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}GROWABLE_HEAP_I32()[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}GROWABLE_HEAP_I32()[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>GROWABLE_HEAP_U16()[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>GROWABLE_HEAP_U32()[pointer>>2]}registerType(rawType,{name,fromWireType:value=>{var length=GROWABLE_HEAP_U32()[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);GROWABLE_HEAP_U32()[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var _wasmWorkers={};var _wasmWorkersID=1;var _wasmWorkerBlobUrl=URL.createObjectURL(new Blob(["onmessage=function(d){onmessage=null;d=d.data;d[`instantiateWasm`]=(i,r)=>{var n=new WebAssembly.Instance(d[`wasm`],i);return r(n,d[`wasm`]);};importScripts(d.js);loadVosklet(d);d.wasm=d.mem=d.js=0;}"],{type:"application/javascript"}));var __emscripten_create_wasm_worker=(stackLowestAddress,stackSize)=>{let worker=_wasmWorkers[_wasmWorkersID]=new Worker(_wasmWorkerBlobUrl);worker.postMessage({$ww:_wasmWorkersID,wasm:wasmModule,js:Module["mainScriptUrlOrBlob"]||_scriptName,wasmMemory,sb:stackLowestAddress,sz:stackSize});worker.onmessage=_wasmWorkerRunPostMessage;return _wasmWorkersID++};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);GROWABLE_HEAP_U32()[timezone>>2]=stdTimezoneOffset*60;GROWABLE_HEAP_I32()[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffsetGROWABLE_HEAP_U8().set(wasmFSPreloadedFiles[index].fileData,buffer);var wasmFSPreloadedDirs=[];var __wasmfs_get_num_preloaded_dirs=()=>wasmFSPreloadedDirs.length;var wasmFSPreloadedFiles=[];var wasmFSPreloadingFlushed=false;var __wasmfs_get_num_preloaded_files=()=>{wasmFSPreloadingFlushed=true;return wasmFSPreloadedFiles.length};var __wasmfs_get_preloaded_child_path=(index,childNameBuffer)=>{var s=wasmFSPreloadedDirs[index].childName;var len=lengthBytesUTF8(s)+1;stringToUTF8(s,childNameBuffer,len)};var __wasmfs_get_preloaded_file_mode=index=>wasmFSPreloadedFiles[index].mode;var __wasmfs_get_preloaded_file_size=index=>wasmFSPreloadedFiles[index].fileData.length;var __wasmfs_get_preloaded_parent_path=(index,parentPathBuffer)=>{var s=wasmFSPreloadedDirs[index].parentPath;var len=lengthBytesUTF8(s)+1;stringToUTF8(s,parentPathBuffer,len)};var __wasmfs_get_preloaded_path_name=(index,fileNameBuffer)=>{var s=wasmFSPreloadedFiles[index].pathName;var len=lengthBytesUTF8(s)+1;stringToUTF8(s,fileNameBuffer,len)};var FS_stdin_getChar_buffer=[];function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var __wasmfs_stdin_get_char=()=>{var c=FS_stdin_getChar();if(typeof c==="number"){return c}return-1};var _emscripten_console_error=str=>{console.error(UTF8ToString(str))};var _emscripten_console_log=str=>{console.log(UTF8ToString(str))};var _emscripten_console_warn=str=>{console.warn(UTF8ToString(str))};var _emscripten_date_now=()=>Date.now();var _emscripten_err=str=>err(UTF8ToString(str));var _emscripten_out=str=>out(UTF8ToString(str));var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=GROWABLE_HEAP_U8().length;requestedSize>>>=0;if(requestedSize<=oldSize){return false}var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var _wasmWorkerPostFunction2=(id,funcPtr,arg0,arg1)=>{_wasmWorkers[id].postMessage({_wsc:funcPtr,x:[arg0,arg1]})};var _emscripten_wasm_worker_post_function_vii=_wasmWorkerPostFunction2;var _wasmWorkerPostFunction3=(id,funcPtr,arg0,arg1,arg2)=>{_wasmWorkers[id].postMessage({_wsc:funcPtr,x:[arg0,arg1,arg2]})};var _emscripten_wasm_worker_post_function_viii=_wasmWorkerPostFunction3;var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;GROWABLE_HEAP_U32()[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();GROWABLE_HEAP_U32()[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);GROWABLE_HEAP_U32()[penviron_buf_size>>2]=bufSize;return 0};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>(view.set(crypto.getRandomValues(new Uint8Array(view.byteLength))),view)}else abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var _getentropy=(buffer,size)=>{randomFill(GROWABLE_HEAP_U8().subarray(buffer,buffer+size));return 0};embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();if(ENVIRONMENT_IS_WASM_WORKER){_wasmWorkers[0]=this;addEventListener("message",_wasmWorkerAppendToQueue)}var wasmImports={c:___assert_fail,t:___call_sighandler,d:___cxa_throw,P:__abort_js,q:__embind_register_bigint,S:__embind_register_bool,o:__embind_register_class,j:__embind_register_class_constructor,g:__embind_register_class_function,R:__embind_register_emval,s:__embind_register_enum,k:__embind_register_enum_value,p:__embind_register_float,C:__embind_register_function,i:__embind_register_integer,e:__embind_register_memory_view,r:__embind_register_std_string,n:__embind_register_std_wstring,T:__embind_register_void,I:__emscripten_create_wasm_worker,O:__emscripten_get_now_is_monotonic,v:__emscripten_runtime_keepalive_clear,w:__setitimer_js,K:__tzset_js,E:__wasmfs_copy_preloaded_file_data,B:__wasmfs_get_num_preloaded_dirs,D:__wasmfs_get_num_preloaded_files,z:__wasmfs_get_preloaded_child_path,x:__wasmfs_get_preloaded_file_mode,F:__wasmfs_get_preloaded_file_size,A:__wasmfs_get_preloaded_parent_path,y:__wasmfs_get_preloaded_path_name,H:__wasmfs_stdin_get_char,U:_emscripten_console_error,W:_emscripten_console_log,V:_emscripten_console_warn,f:_emscripten_date_now,l:_emscripten_err,m:_emscripten_get_now,G:_emscripten_out,L:_emscripten_resize_heap,Q:_emscripten_wasm_worker_post_function_vii,h:_emscripten_wasm_worker_post_function_viii,M:_environ_get,N:_environ_sizes_get,b:_exit,J:_getentropy,a:wasmMemory,X:mtFireEv,u:_proc_exit};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["Y"])();var _free=a0=>(_free=wasmExports["Z"])(a0);var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["_"])(a0);var ___getTypeName=a0=>(___getTypeName=wasmExports["aa"])(a0);var __emscripten_timeout=(a0,a1)=>(__emscripten_timeout=wasmExports["ba"])(a0,a1);var __emscripten_wasm_worker_initialize=(a0,a1)=>(__emscripten_wasm_worker_initialize=wasmExports["ca"])(a0,a1);Module["UTF8ToString"]=UTF8ToString;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}if(ENVIRONMENT_IS_WASM_WORKER){readyPromiseResolve(Module);return initRuntime()}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise; return moduleRtn; diff --git a/Examples/Vosklet.wasm b/Examples/Vosklet.wasm index a1443ae0165fe88b4128aab31dcc4cab08d20347..061028b80cac56755104398f911703ef7c0b4538 100755 GIT binary patch delta 69506 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 delta 69667 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
WKOfY8t$vN6M|1!~~H|r;`1E%8@wnbwL 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 R`nF~s{I4LlHLFOD{XY;f?c@Le diff --git a/Examples/fromFile.html b/Examples/fromFile.html index f858850..e8d10d9 100644 --- a/Examples/fromFile.html +++ b/Examples/fromFile.html @@ -7,7 +7,7 @@ // All data is collected and transfered to the main thread so the AudioContext won't output anything. Set sinkId type to none to save power let ctx = new AudioContext({sinkId: {type: "none"}}) let module = await loadVosklet() - let model = await module.createModel("https://ccoreilly.github.io/vosk-browser/models/vosk-model-small-en-us-0.15.tar.gz","English","vosk-model-small-en-us-0.15") + let model = await module.createModel("https://ccoreilly.github.io/vosk-browser/models/vosk-model-small-en-us-0.15.tar.gz", "English", "vosk-model-small-en-us-0.15") let recognizer = await module.createRecognizer(model, ctx.sampleRate) // Listen for result and partial result diff --git a/Examples/fromMic.html b/Examples/fromMic.html index 26606ca..4c3fc26 100644 --- a/Examples/fromMic.html +++ b/Examples/fromMic.html @@ -19,7 +19,7 @@ // Load Vosklet module, model and recognizer let module = await loadVosklet() - let model = await module.createModel("https://ccoreilly.github.io/vosk-browser/models/vosk-model-small-en-us-0.15.tar.gz","English","vosk-model-small-en-us-0.15") + let model = await module.createModel("https://ccoreilly.github.io/vosk-browser/models/vosk-model-small-en-us-0.15.tar.gz", "English", "vosk-model-small-en-us-0.15") let recognizer = await module.createRecognizer(model, ctx.sampleRate) // Listen for result and partial result diff --git a/Vosklet.js b/Vosklet.js index 10f01bc..f35ec71 100644 --- a/Vosklet.js +++ b/Vosklet.js @@ -6,7 +6,7 @@ var loadVosklet = (() => { function(moduleArg = {}) { var moduleRtn; -function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU16}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU32}function GROWABLE_HEAP_F32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF64}var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_WASM_WORKER=Module["$ww"];let objs=[];let events=["status","partialResult","result"];let processorURL=URL.createObjectURL(new Blob(["(",(()=>{registerProcessor("VoskletTransferer",class extends AudioWorkletProcessor{constructor(opts){super();this.count=0;this.maxCount=opts.processorOptions.maxCount;this.buffer=new Float32Array(this.maxCount*128)}process(inputs){if(!inputs[0][0])return true;this.buffer.set(inputs[0][0],this.count*128);this.count++;if(this.count>=this.maxCount){this.count=0;this.port.postMessage(this.buffer,[this.buffer.buffer]);this.buffer=new Float32Array(this.maxCount*128)}return true}})}).toString(),")()"],{type:"text/javascript"}));Module.cleanUp=async()=>{for(let obj of objs)await obj.delete();URL.revokeObjectURL(processorURL)};Module.createTransferer=async(ctx,bufferSize)=>{await ctx.audioWorklet.addModule(processorURL);return new AudioWorkletNode(ctx,"VoskletTransferer",{channelCountMode:"explicit",numberOfInputs:1,numberOfOutputs:0,channelCount:1,processorOptions:{maxCount:bufferSize/128}})};getFileHandle=async(path,create=false)=>{let components=path.split("/");let prevDir=await navigator.storage.getDirectory();for(let component of components.slice(0,-1))prevDir=await prevDir.getDirectoryHandle(component,{create});return prevDir.getFileHandle(components[components.length-1],{create})};class CommonModel extends EventTarget{constructor(){super();objs.push(this)}delete(){this.obj.delete()}static async create(url,storepath,id,normalMdl){let mdl=new CommonModel;let result=new Promise((resolve,reject)=>{mdl.addEventListener("status",ev=>{if(!ev.detail){if(normalMdl)mdl.findWord=word=>mdl.obj.findWord(word);resolve(mdl)}else reject(ev.detail)},{once:true})});let tar;try{let dataFile=await(await getFileHandle(storepath+"/model.tgz")).getFile();let idFile=await(await getFileHandle(storepath+"/id")).getFile();if(await idFile.text()!=id)throw"";tar=await new Response(dataFile.stream().pipeThrough(new DecompressionStream("gzip"))).arrayBuffer()}catch{try{let res=await fetch(url);if(!res.ok)throw"Unable to download model";let teedBody=res.body.tee();let newDataFile=await(await getFileHandle(storepath+"/model.tgz",true)).createWritable();await newDataFile.write(await new Response(teedBody[0].pipeThrough(new CompressionStream("gzip"))).arrayBuffer());await newDataFile.close();let newIDFile=await(await getFileHandle(storepath+"/id",true)).createWritable();await newIDFile.write(id);await newIDFile.close();tar=await new Response(teedBody[1]).arrayBuffer()}catch(e){mdl.delete();throw e}}let tarStart=_malloc(tar.byteLength);GROWABLE_HEAP_U8().set(new Uint8Array(tar),tarStart);mdl.obj=new Module.CommonModel(objs.length-1,normalMdl,"/"+storepath,id,tarStart,tar.byteLength);return result}}Module.createModel=async(url,storepath,id)=>CommonModel.create(url,storepath,id,true);Module.createSpkModel=async(url,storepath,id)=>CommonModel.create(url,storepath,id,false);class Recognizer extends EventTarget{constructor(){super();objs.push(this);return new Proxy(this,{get(self,prop,_){if(self[prop]==undefined&&self.obj[prop]==undefined)return undefined;let p=self[prop];if(p)return p.bind?p.bind(self):p;p=self.obj[prop];return p.bind?p.bind(self.obj):p}})}acceptWaveform(audioData){let start=_malloc(audioData.length*4);GROWABLE_HEAP_F32().set(audioData,start/4);this.obj.acceptWaveform(start,audioData.length)}async delete(processCurrent=false){let result=new Promise((resolve,_)=>this.addEventListener("status",_=>{this.obj.delete();resolve()},{once:true}));this.obj.safeDelete(processCurrent);return result}static async create(model,sampleRate,mode,grammar,spkModel){let rec=new Recognizer;let result=new Promise((resolve,reject)=>{rec.addEventListener("status",ev=>{if(!ev.detail)resolve(rec);else reject(ev.detail)},{once:true})});switch(mode){case 1:rec.obj=new Module.Recognizer(objs.length-1,sampleRate,model);break;case 2:rec.obj=new Module.Recognizer(objs.length-1,sampleRate,model,spkModel);break;default:rec.obj=new Module.Recognizer(objs.length-1,sampleRate,model,grammar,0)}return result}}Module.createRecognizer=(model,sampleRate)=>Recognizer.create(model.obj,sampleRate,1);Module.createRecognizerWithSpkModel=(model,sampleRate,spkModel)=>Recognizer.create(model.obj,sampleRate,2,null,spkModel.obj);Module.createRecognizerWithGrm=(model,sampleRate,grammar)=>Recognizer.create(model.obj,sampleRate,3,grammar,null);var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=url=>fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||330301440;wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768,shared:true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")}throw Error("bad memory")}}updateMemoryViews();var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_WASM_WORKER)return _wasmWorkerInitializeRuntime();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function findWasmBinary(){var f="Vosklet.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmTable=wasmExports["$"];addOnInit(wasmExports["Y"]);wasmModule=module;removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}function mtFireEv(index,typeIdx,content){objs[index].dispatchEvent(new CustomEvent(events[typeIdx],{detail:content==0?null:UTF8ToString(content)}))}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var _wasmWorkerDelayedMessageQueue=[];var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var _wasmWorkerRunPostMessage=e=>{let data=e.data;let wasmCall=data["_wsc"];wasmCall&&getWasmTableEntry(wasmCall)(...data["x"])};var _wasmWorkerAppendToQueue=e=>{_wasmWorkerDelayedMessageQueue.push(e)};var _wasmWorkerInitializeRuntime=()=>{let m=Module;__emscripten_wasm_worker_initialize(m["sb"],m["sz"]);removeEventListener("message",_wasmWorkerAppendToQueue);_wasmWorkerDelayedMessageQueue=_wasmWorkerDelayedMessageQueue.forEach(_wasmWorkerRunPostMessage);addEventListener("message",_wasmWorkerRunPostMessage)};var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;var UTF8Decoder=new TextDecoder;var UTF8ToString=(ptr,maxBytesToRead)=>{if(!ptr)return"";var maxPtr=ptr+maxBytesToRead;for(var end=ptr;!(end>=maxPtr)&&GROWABLE_HEAP_U8()[end];)++end;return UTF8Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,end))};var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};var ___call_sighandler=(fp,sig)=>getWasmTableEntry(fp)(sig);class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){GROWABLE_HEAP_U32()[this.ptr+4>>2]=type}get_type(){return GROWABLE_HEAP_U32()[this.ptr+4>>2]}set_destructor(destructor){GROWABLE_HEAP_U32()[this.ptr+8>>2]=destructor}get_destructor(){return GROWABLE_HEAP_U32()[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;GROWABLE_HEAP_I8()[this.ptr+12]=caught}get_caught(){return GROWABLE_HEAP_I8()[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;GROWABLE_HEAP_I8()[this.ptr+13]=rethrown}get_rethrown(){return GROWABLE_HEAP_I8()[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){GROWABLE_HEAP_U32()[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return GROWABLE_HEAP_U32()[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var __abort_js=()=>{abort("")};var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(GROWABLE_HEAP_U8()[c]){ret+=embind_charCodes[GROWABLE_HEAP_U8()[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(type=>typeDependencies[type]=dependentTypes);function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>GROWABLE_HEAP_I8()[pointer]:pointer=>GROWABLE_HEAP_U8()[pointer];case 2:return signed?pointer=>GROWABLE_HEAP_I16()[pointer>>1]:pointer=>GROWABLE_HEAP_U16()[pointer>>1];case 4:return signed?pointer=>GROWABLE_HEAP_I32()[pointer>>2]:pointer=>GROWABLE_HEAP_U32()[pointer>>2];case 8:return signed?pointer=>HEAP64[pointer>>3]:pointer=>HEAPU64[pointer>>3];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);var isUnsignedType=name.indexOf("u")!=-1;if(isUnsignedType){maxRange=(1n<<64n)-1n}registerType(primitiveType,{name,fromWireType:value=>value,toWireType:function(destructors,value){if(typeof value!="bigint"&&typeof value!="number"){throw new TypeError(`Cannot convert "${embindRepr(value)}" to ${this.name}`)}if(typeof value=="number"){value=BigInt(value)}return value},argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U8()[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var getInheritedInstanceCount=()=>Object.keys(registeredInstances).length;var getLiveInheritedInstances=()=>{var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var setDelayFunction=fn=>{delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}};var init_embind=()=>{Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle["delete"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this["fromWireType"](GROWABLE_HEAP_U32()[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistent public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var enumReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?function(pointer){return this["fromWireType"](GROWABLE_HEAP_I8()[pointer])}:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U8()[pointer])};case 2:return signed?function(pointer){return this["fromWireType"](GROWABLE_HEAP_I16()[pointer>>1])}:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U16()[pointer>>1])};case 4:return signed?function(pointer){return this["fromWireType"](GROWABLE_HEAP_I32()[pointer>>2])}:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U32()[pointer>>2])};default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_enum=(rawType,name,size,isSigned)=>{name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name,constructor:ctor,fromWireType:function(c){return this.constructor.values[c]},toWireType:(destructors,c)=>c.value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var __embind_register_enum_value=(rawEnumType,name,enumValue)=>{var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(`${enumType.name}_${name}`,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F32()[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F64()[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync,isNonnullReturn)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name,fromWireType,toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=GROWABLE_HEAP_U32()[handle>>2];var data=GROWABLE_HEAP_U32()[handle+4>>2];return new TA(GROWABLE_HEAP_I8().buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name,fromWireType(value){var length=GROWABLE_HEAP_U32()[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||GROWABLE_HEAP_U8()[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}GROWABLE_HEAP_U8()[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&GROWABLE_HEAP_U16()[idx])++idx;endPtr=idx<<1;return UTF16Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,endPtr))};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}GROWABLE_HEAP_I16()[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=GROWABLE_HEAP_I32()[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}GROWABLE_HEAP_I32()[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}GROWABLE_HEAP_I32()[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>GROWABLE_HEAP_U16()[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>GROWABLE_HEAP_U32()[pointer>>2]}registerType(rawType,{name,fromWireType:value=>{var length=GROWABLE_HEAP_U32()[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);GROWABLE_HEAP_U32()[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var _wasmWorkers={};var _wasmWorkersID=1;var _wasmWorkerBlobUrl=URL.createObjectURL(new Blob(["onmessage=function(d){onmessage=null;d=d.data;d[`instantiateWasm`]=(i,r)=>{var n=new WebAssembly.Instance(d[`wasm`],i);return r(n,d[`wasm`]);};importScripts(d.js);loadVosklet(d);d.wasm=d.mem=d.js=0;}"],{type:"application/javascript"}));var __emscripten_create_wasm_worker=(stackLowestAddress,stackSize)=>{let worker=_wasmWorkers[_wasmWorkersID]=new Worker(_wasmWorkerBlobUrl);worker.postMessage({$ww:_wasmWorkersID,wasm:wasmModule,js:Module["mainScriptUrlOrBlob"]||_scriptName,wasmMemory,sb:stackLowestAddress,sz:stackSize});worker.onmessage=_wasmWorkerRunPostMessage;return _wasmWorkersID++};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);GROWABLE_HEAP_U32()[timezone>>2]=stdTimezoneOffset*60;GROWABLE_HEAP_I32()[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffsetGROWABLE_HEAP_U8().set(wasmFSPreloadedFiles[index].fileData,buffer);var wasmFSPreloadedDirs=[];var __wasmfs_get_num_preloaded_dirs=()=>wasmFSPreloadedDirs.length;var wasmFSPreloadedFiles=[];var wasmFSPreloadingFlushed=false;var __wasmfs_get_num_preloaded_files=()=>{wasmFSPreloadingFlushed=true;return wasmFSPreloadedFiles.length};var __wasmfs_get_preloaded_child_path=(index,childNameBuffer)=>{var s=wasmFSPreloadedDirs[index].childName;var len=lengthBytesUTF8(s)+1;stringToUTF8(s,childNameBuffer,len)};var __wasmfs_get_preloaded_file_mode=index=>wasmFSPreloadedFiles[index].mode;var __wasmfs_get_preloaded_file_size=index=>wasmFSPreloadedFiles[index].fileData.length;var __wasmfs_get_preloaded_parent_path=(index,parentPathBuffer)=>{var s=wasmFSPreloadedDirs[index].parentPath;var len=lengthBytesUTF8(s)+1;stringToUTF8(s,parentPathBuffer,len)};var __wasmfs_get_preloaded_path_name=(index,fileNameBuffer)=>{var s=wasmFSPreloadedFiles[index].pathName;var len=lengthBytesUTF8(s)+1;stringToUTF8(s,fileNameBuffer,len)};var FS_stdin_getChar_buffer=[];function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var __wasmfs_stdin_get_char=()=>{var c=FS_stdin_getChar();if(typeof c==="number"){return c}return-1};var _emscripten_console_error=str=>{console.error(UTF8ToString(str))};var _emscripten_console_log=str=>{console.log(UTF8ToString(str))};var _emscripten_console_warn=str=>{console.warn(UTF8ToString(str))};var _emscripten_date_now=()=>Date.now();var _emscripten_err=str=>err(UTF8ToString(str));var _emscripten_out=str=>out(UTF8ToString(str));var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=GROWABLE_HEAP_U8().length;requestedSize>>>=0;if(requestedSize<=oldSize){return false}var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var _wasmWorkerPostFunction2=(id,funcPtr,arg0,arg1)=>{_wasmWorkers[id].postMessage({_wsc:funcPtr,x:[arg0,arg1]})};var _emscripten_wasm_worker_post_function_vii=_wasmWorkerPostFunction2;var _wasmWorkerPostFunction3=(id,funcPtr,arg0,arg1,arg2)=>{_wasmWorkers[id].postMessage({_wsc:funcPtr,x:[arg0,arg1,arg2]})};var _emscripten_wasm_worker_post_function_viii=_wasmWorkerPostFunction3;var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;GROWABLE_HEAP_U32()[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();GROWABLE_HEAP_U32()[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);GROWABLE_HEAP_U32()[penviron_buf_size>>2]=bufSize;return 0};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>(view.set(crypto.getRandomValues(new Uint8Array(view.byteLength))),view)}else abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var _getentropy=(buffer,size)=>{randomFill(GROWABLE_HEAP_U8().subarray(buffer,buffer+size));return 0};embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();if(ENVIRONMENT_IS_WASM_WORKER){_wasmWorkers[0]=this;addEventListener("message",_wasmWorkerAppendToQueue)}var wasmImports={c:___assert_fail,t:___call_sighandler,d:___cxa_throw,P:__abort_js,q:__embind_register_bigint,S:__embind_register_bool,o:__embind_register_class,j:__embind_register_class_constructor,g:__embind_register_class_function,R:__embind_register_emval,s:__embind_register_enum,k:__embind_register_enum_value,p:__embind_register_float,C:__embind_register_function,i:__embind_register_integer,e:__embind_register_memory_view,r:__embind_register_std_string,n:__embind_register_std_wstring,T:__embind_register_void,I:__emscripten_create_wasm_worker,O:__emscripten_get_now_is_monotonic,v:__emscripten_runtime_keepalive_clear,w:__setitimer_js,K:__tzset_js,E:__wasmfs_copy_preloaded_file_data,B:__wasmfs_get_num_preloaded_dirs,D:__wasmfs_get_num_preloaded_files,z:__wasmfs_get_preloaded_child_path,x:__wasmfs_get_preloaded_file_mode,F:__wasmfs_get_preloaded_file_size,A:__wasmfs_get_preloaded_parent_path,y:__wasmfs_get_preloaded_path_name,H:__wasmfs_stdin_get_char,U:_emscripten_console_error,W:_emscripten_console_log,V:_emscripten_console_warn,f:_emscripten_date_now,l:_emscripten_err,m:_emscripten_get_now,G:_emscripten_out,L:_emscripten_resize_heap,Q:_emscripten_wasm_worker_post_function_vii,h:_emscripten_wasm_worker_post_function_viii,M:_environ_get,N:_environ_sizes_get,b:_exit,J:_getentropy,a:wasmMemory,X:mtFireEv,u:_proc_exit};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["Y"])();var _free=a0=>(_free=wasmExports["Z"])(a0);var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["_"])(a0);var ___getTypeName=a0=>(___getTypeName=wasmExports["aa"])(a0);var __emscripten_timeout=(a0,a1)=>(__emscripten_timeout=wasmExports["ba"])(a0,a1);var __emscripten_wasm_worker_initialize=(a0,a1)=>(__emscripten_wasm_worker_initialize=wasmExports["ca"])(a0,a1);Module["UTF8ToString"]=UTF8ToString;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}if(ENVIRONMENT_IS_WASM_WORKER){readyPromiseResolve(Module);return initRuntime()}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise; +function GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU8}function GROWABLE_HEAP_I16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP16}function GROWABLE_HEAP_U16(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU16}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPU32}function GROWABLE_HEAP_F32(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=HEAP8.buffer){updateMemoryViews()}return HEAPF64}var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_WASM_WORKER=Module["$ww"];let objs=[];let events=["status","partialResult","result"];let storageWorkerURL=URL.createObjectURL(new Blob(["(",(()=>{let txtDecoder=new TextDecoder;let txtEncoder=new TextEncoder;onmessage=async msg=>{msg=msg.data;let components=msg.storepath.split("/");let prevDir=await navigator.storage.getDirectory();for(let component of components)prevDir=await prevDir.getDirectoryHandle(component,{create:true});let idHandle=await prevDir.getFileHandle("id",{create:true});let mdlHandle=await prevDir.getFileHandle("model.tgz",{create:true});let idFile=await idHandle.createSyncAccessHandle();let mdlFile=await mdlHandle.createSyncAccessHandle();let oldIdBuf=new ArrayBuffer(idFile.getSize());idFile.read(oldIdBuf);let tar,tgz;if(txtDecoder.decode(oldIdBuf)==msg.id){tgz=new ArrayBuffer(mdlFile.getSize());mdlFile.read(tgz);tar=await new Response(new Response(tgz).body.pipeThrough(new DecompressionStream("gzip"))).arrayBuffer()}else{let res=await fetch(msg.url);if(!res.ok){postMessage("Unable to download model");return}let teed=res.body.tee();tgz=await new Response(teed[0].pipeThrough(new CompressionStream("gzip"))).arrayBuffer();mdlFile.write(tgz,{at:0});mdlFile.truncate(tgz.byteLength);let newId=txtEncoder.encode(msg.id);idFile.write(newId,{at:0});idFile.truncate(newId.length);tar=await new Response(teed[1]).arrayBuffer()}idFile.close();mdlFile.close();self.postMessage(tar,[tar])}}).toString(),")()"],{type:"text/javascript"}));let storageWorker=new Worker(storageWorkerURL);let processorURL=URL.createObjectURL(new Blob(["(",(()=>{registerProcessor("VoskletTransferer",class extends AudioWorkletProcessor{constructor(opts){super();this.count=0;this.maxCount=opts.processorOptions.maxCount;this.buffer=new Float32Array(this.maxCount*128)}process(inputs){if(!inputs[0][0])return true;this.buffer.set(inputs[0][0],this.count++*128);if(this.count>=this.maxCount){this.count=0;this.port.postMessage(this.buffer,[this.buffer.buffer]);this.buffer=new Float32Array(this.maxCount*128)}return true}})}).toString(),")()"],{type:"text/javascript"}));Module.cleanUp=async()=>{for(let obj of objs)await obj.delete();URL.revokeObjectURL(processorURL);URL.revokeObjectURL(storageWorkerURL);storageWorker.terminate()};Module.createTransferer=async(ctx,bufferSize)=>{await ctx.audioWorklet.addModule(processorURL);return new AudioWorkletNode(ctx,"VoskletTransferer",{channelCountMode:"explicit",numberOfInputs:1,numberOfOutputs:0,channelCount:1,processorOptions:{maxCount:bufferSize/128}})};class CommonModel extends EventTarget{constructor(){super();objs.push(this)}delete(){this.obj.delete()}static async mk(url,storepath,id,normalMdl){let mdl=new CommonModel;let result=new Promise((resolve,reject)=>{mdl.addEventListener("status",ev=>{if(!ev.detail){if(normalMdl)mdl.findWord=word=>mdl.obj.findWord(word);resolve(mdl)}else reject(ev.detail)},{once:true})});storageWorker.addEventListener("message",tar=>{tar=tar.data;let tarStart=_malloc(tar.byteLength);GROWABLE_HEAP_U8().set(new Uint8Array(tar),tarStart);mdl.obj=new Module.CommonModel(objs.length-1,normalMdl,"/"+storepath,id,tarStart,tar.byteLength)},{once:true});storageWorker.postMessage({url,storepath,id});return result}}Module.createModel=async(url,storepath,id)=>CommonModel.mk(url,storepath,id,true);Module.createSpkModel=async(url,storepath,id)=>CommonModel.mk(url,storepath,id,false);class Recognizer extends EventTarget{constructor(){super();objs.push(this);return new Proxy(this,{get(self,prop,_){if(self[prop]==undefined&&self.obj[prop]==undefined)return;let p=self[prop];if(p)return p.bind?p.bind(self):p;p=self.obj[prop];return p.bind?p.bind(self.obj):p}})}acceptWaveform(audioData){let start=_malloc(audioData.length*4);GROWABLE_HEAP_F32().set(audioData,start/4);this.obj.acceptWaveform(start,audioData.length)}async delete(processCurrent=false){let result=new Promise((resolve,_)=>this.addEventListener("status",_=>{this.obj.delete();resolve()},{once:true}));this.obj.safeDelete(processCurrent);return result}static async mk(model,sampleRate,mode,grammar,spkModel){let rec=new Recognizer;let result=new Promise((resolve,reject)=>{rec.addEventListener("status",ev=>{if(!ev.detail)resolve(rec);else reject(ev.detail)},{once:true})});switch(mode){case 1:rec.obj=new Module.Recognizer(objs.length-1,sampleRate,model);break;case 2:rec.obj=new Module.Recognizer(objs.length-1,sampleRate,model,spkModel);break;default:rec.obj=new Module.Recognizer(objs.length-1,sampleRate,model,grammar,0)}return result}}Module.createRecognizer=(model,sampleRate)=>Recognizer.mk(model.obj,sampleRate,1);Module.createRecognizerWithSpkModel=(model,sampleRate,spkModel)=>Recognizer.mk(model.obj,sampleRate,2,null,spkModel.obj);Module.createRecognizerWithGrm=(model,sampleRate,grammar)=>Recognizer.mk(model.obj,sampleRate,3,grammar,null);var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=url=>fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||330301440;wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768,shared:true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")}throw Error("bad memory")}}updateMemoryViews();var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_WASM_WORKER)return _wasmWorkerInitializeRuntime();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function findWasmBinary(){var f="Vosklet.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmTable=wasmExports["$"];addOnInit(wasmExports["Y"]);wasmModule=module;removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}function mtFireEv(index,typeIdx,content){objs[index].dispatchEvent(new CustomEvent(events[typeIdx],{detail:content==0?null:UTF8ToString(content)}))}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var _wasmWorkerDelayedMessageQueue=[];var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var _wasmWorkerRunPostMessage=e=>{let data=e.data;let wasmCall=data["_wsc"];wasmCall&&getWasmTableEntry(wasmCall)(...data["x"])};var _wasmWorkerAppendToQueue=e=>{_wasmWorkerDelayedMessageQueue.push(e)};var _wasmWorkerInitializeRuntime=()=>{let m=Module;__emscripten_wasm_worker_initialize(m["sb"],m["sz"]);removeEventListener("message",_wasmWorkerAppendToQueue);_wasmWorkerDelayedMessageQueue=_wasmWorkerDelayedMessageQueue.forEach(_wasmWorkerRunPostMessage);addEventListener("message",_wasmWorkerRunPostMessage)};var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;var UTF8Decoder=new TextDecoder;var UTF8ToString=(ptr,maxBytesToRead)=>{if(!ptr)return"";var maxPtr=ptr+maxBytesToRead;for(var end=ptr;!(end>=maxPtr)&&GROWABLE_HEAP_U8()[end];)++end;return UTF8Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,end))};var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};var ___call_sighandler=(fp,sig)=>getWasmTableEntry(fp)(sig);class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){GROWABLE_HEAP_U32()[this.ptr+4>>2]=type}get_type(){return GROWABLE_HEAP_U32()[this.ptr+4>>2]}set_destructor(destructor){GROWABLE_HEAP_U32()[this.ptr+8>>2]=destructor}get_destructor(){return GROWABLE_HEAP_U32()[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;GROWABLE_HEAP_I8()[this.ptr+12]=caught}get_caught(){return GROWABLE_HEAP_I8()[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;GROWABLE_HEAP_I8()[this.ptr+13]=rethrown}get_rethrown(){return GROWABLE_HEAP_I8()[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){GROWABLE_HEAP_U32()[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return GROWABLE_HEAP_U32()[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var __abort_js=()=>{abort("")};var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(GROWABLE_HEAP_U8()[c]){ret+=embind_charCodes[GROWABLE_HEAP_U8()[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(type=>typeDependencies[type]=dependentTypes);function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>GROWABLE_HEAP_I8()[pointer]:pointer=>GROWABLE_HEAP_U8()[pointer];case 2:return signed?pointer=>GROWABLE_HEAP_I16()[pointer>>1]:pointer=>GROWABLE_HEAP_U16()[pointer>>1];case 4:return signed?pointer=>GROWABLE_HEAP_I32()[pointer>>2]:pointer=>GROWABLE_HEAP_U32()[pointer>>2];case 8:return signed?pointer=>HEAP64[pointer>>3]:pointer=>HEAPU64[pointer>>3];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);var isUnsignedType=name.indexOf("u")!=-1;if(isUnsignedType){maxRange=(1n<<64n)-1n}registerType(primitiveType,{name,fromWireType:value=>value,toWireType:function(destructors,value){if(typeof value!="bigint"&&typeof value!="number"){throw new TypeError(`Cannot convert "${embindRepr(value)}" to ${this.name}`)}if(typeof value=="number"){value=BigInt(value)}return value},argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U8()[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var getInheritedInstanceCount=()=>Object.keys(registeredInstances).length;var getLiveInheritedInstances=()=>{var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var setDelayFunction=fn=>{delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}};var init_embind=()=>{Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle["delete"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this["fromWireType"](GROWABLE_HEAP_U32()[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistent public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var enumReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?function(pointer){return this["fromWireType"](GROWABLE_HEAP_I8()[pointer])}:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U8()[pointer])};case 2:return signed?function(pointer){return this["fromWireType"](GROWABLE_HEAP_I16()[pointer>>1])}:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U16()[pointer>>1])};case 4:return signed?function(pointer){return this["fromWireType"](GROWABLE_HEAP_I32()[pointer>>2])}:function(pointer){return this["fromWireType"](GROWABLE_HEAP_U32()[pointer>>2])};default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_enum=(rawType,name,size,isSigned)=>{name=readLatin1String(name);function ctor(){}ctor.values={};registerType(rawType,{name,constructor:ctor,fromWireType:function(c){return this.constructor.values[c]},toWireType:(destructors,c)=>c.value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:enumReadValueFromPointer(name,size,isSigned),destructorFunction:null});exposePublicSymbol(name,ctor)};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var __embind_register_enum_value=(rawEnumType,name,enumValue)=>{var enumType=requireRegisteredType(rawEnumType,"enum");name=readLatin1String(name);var Enum=enumType.constructor;var Value=Object.create(enumType.constructor.prototype,{value:{value:enumValue},constructor:{value:createNamedFunction(`${enumType.name}_${name}`,function(){})}});Enum.values[enumValue]=Value;Enum[name]=Value};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F32()[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](GROWABLE_HEAP_F64()[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var __embind_register_function=(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync,isNonnullReturn)=>{var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=readLatin1String(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name,fromWireType,toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=GROWABLE_HEAP_U32()[handle>>2];var data=GROWABLE_HEAP_U32()[handle+4>>2];return new TA(GROWABLE_HEAP_I8().buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name,fromWireType(value){var length=GROWABLE_HEAP_U32()[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||GROWABLE_HEAP_U8()[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}GROWABLE_HEAP_U8()[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&GROWABLE_HEAP_U16()[idx])++idx;endPtr=idx<<1;return UTF16Decoder.decode(GROWABLE_HEAP_U8().slice(ptr,endPtr))};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}GROWABLE_HEAP_I16()[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=GROWABLE_HEAP_I32()[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}GROWABLE_HEAP_I32()[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}GROWABLE_HEAP_I32()[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>GROWABLE_HEAP_U16()[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>GROWABLE_HEAP_U32()[pointer>>2]}registerType(rawType,{name,fromWireType:value=>{var length=GROWABLE_HEAP_U32()[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);GROWABLE_HEAP_U32()[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var _wasmWorkers={};var _wasmWorkersID=1;var _wasmWorkerBlobUrl=URL.createObjectURL(new Blob(["onmessage=function(d){onmessage=null;d=d.data;d[`instantiateWasm`]=(i,r)=>{var n=new WebAssembly.Instance(d[`wasm`],i);return r(n,d[`wasm`]);};importScripts(d.js);loadVosklet(d);d.wasm=d.mem=d.js=0;}"],{type:"application/javascript"}));var __emscripten_create_wasm_worker=(stackLowestAddress,stackSize)=>{let worker=_wasmWorkers[_wasmWorkersID]=new Worker(_wasmWorkerBlobUrl);worker.postMessage({$ww:_wasmWorkersID,wasm:wasmModule,js:Module["mainScriptUrlOrBlob"]||_scriptName,wasmMemory,sb:stackLowestAddress,sz:stackSize});worker.onmessage=_wasmWorkerRunPostMessage;return _wasmWorkersID++};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);GROWABLE_HEAP_U32()[timezone>>2]=stdTimezoneOffset*60;GROWABLE_HEAP_I32()[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffsetGROWABLE_HEAP_U8().set(wasmFSPreloadedFiles[index].fileData,buffer);var wasmFSPreloadedDirs=[];var __wasmfs_get_num_preloaded_dirs=()=>wasmFSPreloadedDirs.length;var wasmFSPreloadedFiles=[];var wasmFSPreloadingFlushed=false;var __wasmfs_get_num_preloaded_files=()=>{wasmFSPreloadingFlushed=true;return wasmFSPreloadedFiles.length};var __wasmfs_get_preloaded_child_path=(index,childNameBuffer)=>{var s=wasmFSPreloadedDirs[index].childName;var len=lengthBytesUTF8(s)+1;stringToUTF8(s,childNameBuffer,len)};var __wasmfs_get_preloaded_file_mode=index=>wasmFSPreloadedFiles[index].mode;var __wasmfs_get_preloaded_file_size=index=>wasmFSPreloadedFiles[index].fileData.length;var __wasmfs_get_preloaded_parent_path=(index,parentPathBuffer)=>{var s=wasmFSPreloadedDirs[index].parentPath;var len=lengthBytesUTF8(s)+1;stringToUTF8(s,parentPathBuffer,len)};var __wasmfs_get_preloaded_path_name=(index,fileNameBuffer)=>{var s=wasmFSPreloadedFiles[index].pathName;var len=lengthBytesUTF8(s)+1;stringToUTF8(s,fileNameBuffer,len)};var FS_stdin_getChar_buffer=[];function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var __wasmfs_stdin_get_char=()=>{var c=FS_stdin_getChar();if(typeof c==="number"){return c}return-1};var _emscripten_console_error=str=>{console.error(UTF8ToString(str))};var _emscripten_console_log=str=>{console.log(UTF8ToString(str))};var _emscripten_console_warn=str=>{console.warn(UTF8ToString(str))};var _emscripten_date_now=()=>Date.now();var _emscripten_err=str=>err(UTF8ToString(str));var _emscripten_out=str=>out(UTF8ToString(str));var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=GROWABLE_HEAP_U8().length;requestedSize>>>=0;if(requestedSize<=oldSize){return false}var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var _wasmWorkerPostFunction2=(id,funcPtr,arg0,arg1)=>{_wasmWorkers[id].postMessage({_wsc:funcPtr,x:[arg0,arg1]})};var _emscripten_wasm_worker_post_function_vii=_wasmWorkerPostFunction2;var _wasmWorkerPostFunction3=(id,funcPtr,arg0,arg1,arg2)=>{_wasmWorkers[id].postMessage({_wsc:funcPtr,x:[arg0,arg1,arg2]})};var _emscripten_wasm_worker_post_function_viii=_wasmWorkerPostFunction3;var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;GROWABLE_HEAP_U32()[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();GROWABLE_HEAP_U32()[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);GROWABLE_HEAP_U32()[penviron_buf_size>>2]=bufSize;return 0};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>(view.set(crypto.getRandomValues(new Uint8Array(view.byteLength))),view)}else abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var _getentropy=(buffer,size)=>{randomFill(GROWABLE_HEAP_U8().subarray(buffer,buffer+size));return 0};embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();if(ENVIRONMENT_IS_WASM_WORKER){_wasmWorkers[0]=this;addEventListener("message",_wasmWorkerAppendToQueue)}var wasmImports={c:___assert_fail,t:___call_sighandler,d:___cxa_throw,P:__abort_js,q:__embind_register_bigint,S:__embind_register_bool,o:__embind_register_class,j:__embind_register_class_constructor,g:__embind_register_class_function,R:__embind_register_emval,s:__embind_register_enum,k:__embind_register_enum_value,p:__embind_register_float,C:__embind_register_function,i:__embind_register_integer,e:__embind_register_memory_view,r:__embind_register_std_string,n:__embind_register_std_wstring,T:__embind_register_void,I:__emscripten_create_wasm_worker,O:__emscripten_get_now_is_monotonic,v:__emscripten_runtime_keepalive_clear,w:__setitimer_js,K:__tzset_js,E:__wasmfs_copy_preloaded_file_data,B:__wasmfs_get_num_preloaded_dirs,D:__wasmfs_get_num_preloaded_files,z:__wasmfs_get_preloaded_child_path,x:__wasmfs_get_preloaded_file_mode,F:__wasmfs_get_preloaded_file_size,A:__wasmfs_get_preloaded_parent_path,y:__wasmfs_get_preloaded_path_name,H:__wasmfs_stdin_get_char,U:_emscripten_console_error,W:_emscripten_console_log,V:_emscripten_console_warn,f:_emscripten_date_now,l:_emscripten_err,m:_emscripten_get_now,G:_emscripten_out,L:_emscripten_resize_heap,Q:_emscripten_wasm_worker_post_function_vii,h:_emscripten_wasm_worker_post_function_viii,M:_environ_get,N:_environ_sizes_get,b:_exit,J:_getentropy,a:wasmMemory,X:mtFireEv,u:_proc_exit};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["Y"])();var _free=a0=>(_free=wasmExports["Z"])(a0);var _malloc=Module["_malloc"]=a0=>(_malloc=Module["_malloc"]=wasmExports["_"])(a0);var ___getTypeName=a0=>(___getTypeName=wasmExports["aa"])(a0);var __emscripten_timeout=(a0,a1)=>(__emscripten_timeout=wasmExports["ba"])(a0,a1);var __emscripten_wasm_worker_initialize=(a0,a1)=>(__emscripten_wasm_worker_initialize=wasmExports["ca"])(a0,a1);Module["UTF8ToString"]=UTF8ToString;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}if(ENVIRONMENT_IS_WASM_WORKER){readyPromiseResolve(Module);return initRuntime()}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise; return moduleRtn; diff --git a/Vosklet.wasm b/Vosklet.wasm index a1443ae0165fe88b4128aab31dcc4cab08d20347..061028b80cac56755104398f911703ef7c0b4538 100755 GIT binary patch delta 69506 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 delta 69667 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
WKOfY8t$vN6M|1!~~H|r;`1E%8@wnbwL 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 R`nF~s{I4LlHLFOD{XY;f?c@Le diff --git a/src/Clapack-wasm.patch b/src/Clapack-wasm.patch index 0fe39f2..71e5679 100644 --- a/src/Clapack-wasm.patch +++ b/src/Clapack-wasm.patch @@ -7,7 +7,7 @@ index bf7eda6..5fedaf6 100644 #----------------------------------------------------------------------------- -CFLAGS = -DADD_ -O3 -+CFLAGS = -DADD_ -O3 -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals ++CFLAGS = -DADD_ -O3 -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals #----------------------------------------------------------------------------- # Archive programs and flags @@ -20,7 +20,7 @@ index 80037d0..a964b2d 100644 # if no wrapping of the blas library is needed, uncomment next line CC = emcc # -DNO_BLAS_WRAP -CFLAGS = -I$(TOPDIR)/INCLUDE -I$(TOPDIR)/../libf2c -O3 -+CFLAGS = -I$(TOPDIR)/INCLUDE -I$(TOPDIR)/../libf2c -O3 -fno-rtti -fno-exceptions -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals ++CFLAGS = -I$(TOPDIR)/INCLUDE -I$(TOPDIR)/../libf2c -O3 -fno-rtti -fno-exceptions -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals LOADER = $(CC) LOADOPTS = NOOPT = -O0 -I$(TOPDIR)/INCLUDE -I$(TOPDIR)/../libf2c @@ -33,7 +33,7 @@ index e071614..4647c2b 100644 # CC = emcc -CFLAGS = -I../libf2c -O3 -+CFLAGS = -I../libf2c -O3 -fno-rtti -fno-exceptions -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals ++CFLAGS = -I../libf2c -O3 -fno-rtti -fno-exceptions -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals DRVOPTS = $(OPTS) NOOPT = LOADER = emcc @@ -46,7 +46,7 @@ index 6221401..d93b87f 100644 CC = emcc SHELL = /bin/sh -CFLAGS = -DNON_UNIX_STDIO -O3 -+CFLAGS = -DNON_UNIX_STDIO -O3 -fno-rtti -fno-exceptions -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals ++CFLAGS = -DNON_UNIX_STDIO -O3 -fno-rtti -fno-exceptions -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals LD = wasm-ld RANLIB = emranlib diff --git a/src/Wrapper.js b/src/Wrapper.js index 37eaf39..9adbf02 100644 --- a/src/Wrapper.js +++ b/src/Wrapper.js @@ -1,166 +1,177 @@ -let objs = [] -let events = ["status", "partialResult", "result"] +let objs = []; +let events = ["status", "partialResult", "result"]; +let storageWorkerURL = URL.createObjectURL(new Blob(['(', (() => { + let txtDecoder = new TextDecoder(); + let txtEncoder = new TextEncoder(); + onmessage = async msg => { + msg = msg.data; + let components = msg.storepath.split("/"); + let prevDir = await navigator.storage.getDirectory(); + for(let component of components) prevDir = await prevDir.getDirectoryHandle(component, { create: true }); + let idHandle = await prevDir.getFileHandle("id", { create: true }); + let mdlHandle = await prevDir.getFileHandle("model.tgz", { create: true }); + let idFile = await idHandle.createSyncAccessHandle(); + let mdlFile = await mdlHandle.createSyncAccessHandle(); + let oldIdBuf = new ArrayBuffer(idFile.getSize()); + idFile.read(oldIdBuf); + let tar, tgz; + if(txtDecoder.decode(oldIdBuf) == msg.id) { + tgz = new ArrayBuffer(mdlFile.getSize()); + mdlFile.read(tgz); + tar = await new Response(new Response(tgz).body.pipeThrough(new DecompressionStream("gzip"))).arrayBuffer(); + } + else { + let res = await fetch(msg.url); + if(!res.ok) { + postMessage("Unable to download model"); + return; + } + let teed = res.body.tee(); + tgz = await new Response(teed[0].pipeThrough(new CompressionStream("gzip"))).arrayBuffer(); + mdlFile.write(tgz, { at: 0 }); + mdlFile.truncate(tgz.byteLength); + let newId = txtEncoder.encode(msg.id); + idFile.write(newId, { at: 0 }); + idFile.truncate(newId.length); + tar = await new Response(teed[1]).arrayBuffer(); + } + idFile.close(); + mdlFile.close(); + self.postMessage(tar, [tar]); + } +}).toString(), ')()'], { type: "text/javascript" })) +let storageWorker = new Worker(storageWorkerURL); let processorURL = URL.createObjectURL(new Blob(['(', (() => { registerProcessor("VoskletTransferer", class extends AudioWorkletProcessor { constructor(opts) { - super() - this.count = 0 - this.maxCount = opts.processorOptions.maxCount - this.buffer = new Float32Array(this.maxCount * 128) + super(); + this.count = 0; + this.maxCount = opts.processorOptions.maxCount; + this.buffer = new Float32Array(this.maxCount * 128); } process(inputs) { - if(!inputs[0][0]) return true - this.buffer.set(inputs[0][0], this.count * 128) - this.count++ + if(!inputs[0][0]) return true; + this.buffer.set(inputs[0][0], this.count++ * 128); if(this.count >= this.maxCount) { - this.count = 0 - this.port.postMessage(this.buffer, [this.buffer.buffer]) - this.buffer = new Float32Array(this.maxCount * 128) + this.count = 0; + this.port.postMessage(this.buffer, [this.buffer.buffer]); + this.buffer = new Float32Array(this.maxCount * 128); } - return true + return true; } }) -}).toString(), ')()'], { type : "text/javascript" })) - +}).toString(), ')()'], { type: "text/javascript" })); Module.cleanUp = async () => { - for(let obj of objs) await obj.delete() - URL.revokeObjectURL(processorURL) + for(let obj of objs) await obj.delete(); + URL.revokeObjectURL(processorURL); + URL.revokeObjectURL(storageWorkerURL); + storageWorker.terminate(); } Module.createTransferer = async (ctx, bufferSize) => { - await ctx.audioWorklet.addModule(processorURL) + await ctx.audioWorklet.addModule(processorURL); return new AudioWorkletNode(ctx, "VoskletTransferer", { - channelCountMode : "explicit", - numberOfInputs : 1, - numberOfOutputs : 0, - channelCount : 1, - processorOptions : { maxCount: bufferSize / 128 } - }) -} - -getFileHandle = async (path, create = false) => { - let components = path.split("/") - let prevDir = await navigator.storage.getDirectory() - for(let component of components.slice(0, -1)) prevDir = await prevDir.getDirectoryHandle(component, { create : create }) - return prevDir.getFileHandle(components[components.length - 1], { create : create }) + channelCountMode: "explicit", + numberOfInputs: 1, + numberOfOutputs: 0, + channelCount: 1, + processorOptions: { maxCount: bufferSize / 128 } + }); } class CommonModel extends EventTarget { constructor() { - super() - objs.push(this) + super(); + objs.push(this); } delete() { - this.obj.delete() + this.obj.delete(); } - static async create(url, storepath, id, normalMdl) { - let mdl = new CommonModel() + static async mk(url, storepath, id, normalMdl) { + let mdl = new CommonModel(); let result = new Promise((resolve, reject) => { mdl.addEventListener("status", ev => { if(!ev.detail) { - if(normalMdl) mdl.findWord = (word) => mdl.obj.findWord(word) + if(normalMdl) mdl.findWord = word => mdl.obj.findWord(word) resolve(mdl) } else reject(ev.detail) }, { once : true }) - }) - let tar - try { - let dataFile = await (await getFileHandle(storepath + "/model.tgz")).getFile() - let idFile = await (await getFileHandle(storepath + "/id")).getFile() - if(await idFile.text() != id) throw "" - tar = await new Response(dataFile.stream().pipeThrough(new DecompressionStream("gzip"))).arrayBuffer() - } - catch { - try { - let res = await fetch(url) - if (!res.ok) throw "Unable to download model" - let teedBody = res.body.tee() - let newDataFile = await (await getFileHandle(storepath + "/model.tgz", true)).createWritable() - await newDataFile.write(await new Response(teedBody[0].pipeThrough(new CompressionStream("gzip"))).arrayBuffer()) - await newDataFile.close() - let newIDFile = await (await getFileHandle(storepath + "/id", true)).createWritable() - await newIDFile.write(id) - await newIDFile.close() - tar = await new Response(teedBody[1]).arrayBuffer() - } - catch(e) { - mdl.delete() - throw e - } - } - let tarStart = _malloc(tar.byteLength) - HEAPU8.set(new Uint8Array(tar), tarStart) - mdl.obj = new Module.CommonModel(objs.length - 1, normalMdl, "/" + storepath, id, tarStart, tar.byteLength) - return result + }); + storageWorker.addEventListener("message", tar => { + tar = tar.data; + let tarStart = _malloc(tar.byteLength); + HEAPU8.set(new Uint8Array(tar), tarStart); + mdl.obj = new Module.CommonModel(objs.length - 1, normalMdl, "/" + storepath, id, tarStart, tar.byteLength); + }, { once: true }); + storageWorker.postMessage({ + url: url, + storepath: storepath, + id: id + }); + return result; } } -Module.createModel = async (url, storepath, id) => { - return CommonModel.create(url, storepath, id, true) -} +Module.createModel = async (url, storepath, id) => + CommonModel.mk(url, storepath, id, true); -Module.createSpkModel = async (url, storepath, id) => { - return CommonModel.create(url, storepath, id, false) -} +Module.createSpkModel = async (url, storepath, id) => + CommonModel.mk(url, storepath, id, false); class Recognizer extends EventTarget { constructor() { - super() - objs.push(this) + super(); + objs.push(this); return new Proxy(this, { get(self, prop, _) { - if(self[prop] == undefined && self.obj[prop] == undefined) return undefined - let p = self[prop] - if(p) return p.bind ? p.bind(self) : p - p = self.obj[prop] - return p.bind ? p.bind(self.obj) : p + if(self[prop] == undefined && self.obj[prop] == undefined) return; + let p = self[prop]; + if(p) return p.bind ? p.bind(self) : p; + p = self.obj[prop]; + return p.bind ? p.bind(self.obj) : p; } }) } acceptWaveform(audioData) { - let start = _malloc(audioData.length * 4) - HEAPF32.set(audioData, start / 4) - this.obj.acceptWaveform(start, audioData.length) + let start = _malloc(audioData.length * 4); + HEAPF32.set(audioData, start / 4); + this.obj.acceptWaveform(start, audioData.length); } async delete(processCurrent = false) { let result = new Promise((resolve, _) => this.addEventListener("status", _ => { - this.obj.delete() - resolve() - }, { once : true })) - this.obj.safeDelete(processCurrent) - return result + this.obj.delete(); + resolve(); + }, { once: true })); + this.obj.safeDelete(processCurrent); + return result; } - static async create(model, sampleRate, mode, grammar, spkModel) { - let rec = new Recognizer() + static async mk(model, sampleRate, mode, grammar, spkModel) { + let rec = new Recognizer(); let result = new Promise((resolve, reject) => { rec.addEventListener("status", ev => { - if(!ev.detail) resolve(rec) - else reject(ev.detail) - }, { once : true }) + if(!ev.detail) resolve(rec); + else reject(ev.detail); + }, { once: true }); }) switch(mode) { case 1: - rec.obj = new Module.Recognizer(objs.length - 1, sampleRate, model) - break + rec.obj = new Module.Recognizer(objs.length - 1, sampleRate, model); + break; case 2: - rec.obj = new Module.Recognizer(objs.length -1, sampleRate, model, spkModel) - break + rec.obj = new Module.Recognizer(objs.length -1, sampleRate, model, spkModel); + break; default: - rec.obj = new Module.Recognizer(objs.length - 1, sampleRate, model, grammar, 0) + rec.obj = new Module.Recognizer(objs.length - 1, sampleRate, model, grammar, 0); } - return result + return result; } } +Module.createRecognizer = (model, sampleRate) => + Recognizer.mk(model.obj, sampleRate, 1); -Module.createRecognizer = (model, sampleRate) => { - return Recognizer.create(model.obj, sampleRate, 1) -} - -Module.createRecognizerWithSpkModel = (model, sampleRate, spkModel) => { - return Recognizer.create(model.obj, sampleRate, 2, null, spkModel.obj) -} +Module.createRecognizerWithSpkModel = (model, sampleRate, spkModel) => + Recognizer.mk(model.obj, sampleRate, 2, null, spkModel.obj); -Module.createRecognizerWithGrm = (model, sampleRate, grammar) => { - return Recognizer.create(model.obj, sampleRate, 3, grammar, null) -} \ No newline at end of file +Module.createRecognizerWithGrm = (model, sampleRate, grammar) => + Recognizer.mk(model.obj, sampleRate, 3, grammar, null); diff --git a/src/make b/src/make index 842f02a..3df23c0 100755 --- a/src/make +++ b/src/make @@ -42,7 +42,7 @@ if [ ! -d "$OPENFST" ]; then git clone --depth=1 https://github.com/alphacep/openfst /tmp/openfst && cd /tmp/openfst && autoreconf -is && - CXXFLAGS="-r -O3 -fno-rtti -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals -flto" emconfigure ./configure --prefix="$OPENFST" --enable-static --disable-shared --enable-lookahead-fsts --enable-ngram-fsts --disable-bin && + CXXFLAGS="-r -O3 -fno-rtti -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals -flto" emconfigure ./configure --prefix="$OPENFST" --enable-static --disable-shared --enable-lookahead-fsts --enable-ngram-fsts --disable-bin && emmake make -j"$JOBS" install && echo "PACKAGE_VERSION = 1.8.0" >> "$OPENFST"/Makefile fi @@ -58,7 +58,7 @@ if [ ! -d "$KALDI" ]; then git clone -b vosk --depth=1 https://github.com/alphacep/kaldi "$KALDI" && cd "$KALDI"/src && git apply "$SRC"/Kaldi.patch && - CXXFLAGS="-O3 -UHAVE_EXECINFO_H -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals -Wno-unused-variable -Wno-unused-but-set-variable -g0" LDFLAGS="-lembind" emconfigure ./configure --use-cuda=no --with-cudadecoder=no --static --static-math=yes --static-fst=yes --debug-level=0 --fst-root="$OPENFST" --clapack-root="$CLAPACK_WASM" --host=WASM && + CXXFLAGS="-O3 -UHAVE_EXECINFO_H -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals -Wno-unused-variable -Wno-unused-but-set-variable -g0" LDFLAGS="-lembind" emconfigure ./configure --use-cuda=no --with-cudadecoder=no --static --static-math=yes --static-fst=yes --debug-level=0 --fst-root="$OPENFST" --clapack-root="$CLAPACK_WASM" --host=WASM && emmake make -j"$JOBS" online2 rnnlm fi @@ -67,12 +67,12 @@ if [ ! -d "$VOSK" ]; then cd "$VOSK"/src && git apply "$SRC"/Vosk.patch && VOSK_FILES="recognizer.cc language_model.cc model.cc spk_model.cc vosk_api.cc" && - em++ -O3 -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals -Wno-deprecated -I. -I"$KALDI"/src -I"$OPENFST"/include $VOSK_FILES -c && + em++ -O3 -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals -Wno-deprecated -I. -I"$KALDI"/src -I"$OPENFST"/include $VOSK_FILES -c && emar -rcs vosk.a ${VOSK_FILES//.cc/.o} fi cd "$SRC" && - em++ Util.cc CommonModel.cc Recognizer.cc Bindings.cc -O3 -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -fno-rtti -DMAX_WORKERS="$MAX_THREADS" -sWASMFS -sWASM_BIGINT -sMODULARIZE -sWASM_EXNREF -sTEXTDECODER=2 -sWASM_WORKERS=2 -sEVAL_CTORS=2 -sINITIAL_MEMORY="$INITIAL_MEMORY" -sALLOW_MEMORY_GROWTH -sPOLYFILL=0 -sEXIT_RUNTIME=0 -sINVOKE_RUN=0 -sSUPPORT_LONGJMP=0 -sEXPORTED_FUNCTIONS=_malloc -sEXPORT_NAME=loadVosklet -sMALLOC=emmalloc -sEXPORTED_RUNTIME_METHODS=UTF8ToString -sENVIRONMENT=web,worker -I. -I"$VOSK"/src -L"$KALDI"/src -l:online2/kaldi-online2.a -l:decoder/kaldi-decoder.a -l:ivector/kaldi-ivector.a -l:gmm/kaldi-gmm.a -l:tree/kaldi-tree.a -l:feat/kaldi-feat.a -l:cudamatrix/kaldi-cudamatrix.a -l:lat/kaldi-lat.a -l:lm/kaldi-lm.a -l:rnnlm/kaldi-rnnlm.a -l:hmm/kaldi-hmm.a -l:nnet3/kaldi-nnet3.a -l:transform/kaldi-transform.a -l:matrix/kaldi-matrix.a -l:fstext/kaldi-fstext.a -l:util/kaldi-util.a -l:base/kaldi-base.a -L"$OPENFST"/lib -l:libfst.a -l:libfstngram.a -L"$CLAPACK_WASM" -l:CBLAS/lib/cblas.a -l:CLAPACK-3.2.1/lapack.a -l:CLAPACK-3.2.1/libcblaswr.a -l:f2c_BLAS-3.8.0/blas.a -l:libf2c/libf2c.a -L"$VOSK"/src -l:vosk.a -lembind -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals --pre-js Wrapper.js -o ../Vosklet.js + em++ Util.cc CommonModel.cc Recognizer.cc Bindings.cc -O3 -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -fno-rtti -DMAX_WORKERS="$MAX_THREADS" -sWASMFS -sWASM_BIGINT -sMODULARIZE -sWASM_EXNREF -sTEXTDECODER=2 -sWASM_WORKERS=2 -sEVAL_CTORS=2 -sINITIAL_MEMORY="$INITIAL_MEMORY" -sALLOW_MEMORY_GROWTH -sPOLYFILL=0 -sEXIT_RUNTIME=0 -sINVOKE_RUN=0 -sSUPPORT_LONGJMP=0 -sEXPORTED_FUNCTIONS=_malloc -sEXPORT_NAME=loadVosklet -sMALLOC=emmalloc -sEXPORTED_RUNTIME_METHODS=UTF8ToString -sENVIRONMENT=web,worker -I. -I"$VOSK"/src -L"$KALDI"/src -l:online2/kaldi-online2.a -l:decoder/kaldi-decoder.a -l:ivector/kaldi-ivector.a -l:gmm/kaldi-gmm.a -l:tree/kaldi-tree.a -l:feat/kaldi-feat.a -l:cudamatrix/kaldi-cudamatrix.a -l:lat/kaldi-lat.a -l:lm/kaldi-lm.a -l:rnnlm/kaldi-rnnlm.a -l:hmm/kaldi-hmm.a -l:nnet3/kaldi-nnet3.a -l:transform/kaldi-transform.a -l:matrix/kaldi-matrix.a -l:fstext/kaldi-fstext.a -l:util/kaldi-util.a -l:base/kaldi-base.a -L"$OPENFST"/lib -l:libfst.a -l:libfstngram.a -L"$CLAPACK_WASM" -l:CBLAS/lib/cblas.a -l:CLAPACK-3.2.1/lapack.a -l:CLAPACK-3.2.1/libcblaswr.a -l:f2c_BLAS-3.8.0/blas.a -l:libf2c/libf2c.a -L"$VOSK"/src -l:vosk.a -lembind -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals --pre-js Wrapper.js -o ../Vosklet.js cd .. && rm -f Vosklet.worker.js @@ -80,6 +80,6 @@ cp Vosklet.js Examples/Vosklet.js && cp Vosklet.wasm Examples/Vosklet.wasm && # Can't serve files from raw.githubusercontent with Content-Encoding: gzip header so the browser won't decompress automatically. Manually decompressing instead. -sed -i 's/res.body/new Response(res.body.pipeThrough(new DecompressionStream("gzip"))).body/' Examples/Vosklet.js && +sed -i 's/.pipeThrough(new CompressionStream("gzip"))//;s/teed\[1\]/teed[1].pipeThrough(new DecompressionStream("gzip"))/' Examples/Vosklet.js && rm -rf /tmp/openfst \ No newline at end of file diff --git a/test b/test index 62fc612..edb81c7 100755 --- a/test +++ b/test @@ -36,13 +36,13 @@ OPENFST=$(realpath openfst) CLAPACK_WASM=$(realpath clapack-wasm) cd src && -MODE=1 && # 0: Debug, 1: Optimized release, else custom +MODE=0 && # 0: Debug, 1: Optimized release, else custom echo "Mode = $MODE" && if [ "$MODE" = 0 ]; then - em++ Util.cc CommonModel.cc Recognizer.cc Bindings.cc -O0 -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -fno-rtti -DMAX_WORKERS="$MAX_THREADS" -sWASMFS -sWASM_BIGINT -sMODULARIZE -sWASM_EXNREF -sTEXTDECODER=2 -sWASM_WORKERS=2 -sEVAL_CTORS=2 -sSTACK_OVERFLOW_CHECK=2 -sASSERTIONS=2 -sINITIAL_MEMORY="$INITIAL_MEMORY" -sALLOW_MEMORY_GROWTH -sRUNTIME_DEBUG -sPOLYFILL=0 -sEXIT_RUNTIME=0 -sINVOKE_RUN=0 -sDISABLE_EXCEPTION_CATCHING=0 -sEXPORTED_FUNCTIONS=_malloc -sEXPORT_NAME=loadVosklet -sMALLOC=emmalloc -sEXPORTED_RUNTIME_METHODS=UTF8ToString -sENVIRONMENT=web,worker -I. -I"$VOSK"/src -L"$KALDI"/src -l:online2/kaldi-online2.a -l:decoder/kaldi-decoder.a -l:ivector/kaldi-ivector.a -l:gmm/kaldi-gmm.a -l:tree/kaldi-tree.a -l:feat/kaldi-feat.a -l:cudamatrix/kaldi-cudamatrix.a -l:lat/kaldi-lat.a -l:lm/kaldi-lm.a -l:rnnlm/kaldi-rnnlm.a -l:hmm/kaldi-hmm.a -l:nnet3/kaldi-nnet3.a -l:transform/kaldi-transform.a -l:matrix/kaldi-matrix.a -l:fstext/kaldi-fstext.a -l:util/kaldi-util.a -l:base/kaldi-base.a -L"$OPENFST"/lib -l:libfst.a -l:libfstngram.a -L"$CLAPACK_WASM" -l:CBLAS/lib/cblas.a -l:CLAPACK-3.2.1/lapack.a -l:CLAPACK-3.2.1/libcblaswr.a -l:f2c_BLAS-3.8.0/blas.a -l:libf2c/libf2c.a -L"$VOSK"/src -l:vosk.a -lembind -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals --pre-js Wrapper.js -o ../test.js + em++ Util.cc CommonModel.cc Recognizer.cc Bindings.cc -O0 -g3 -Wall -Werror -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -fno-rtti -DMAX_WORKERS="$MAX_THREADS" -sWASMFS -sWASM_BIGINT -sMODULARIZE -sWASM_EXNREF -sTEXTDECODER=2 -sWASM_WORKERS=2 -sEVAL_CTORS=2 -sSTACK_OVERFLOW_CHECK=2 -sASSERTIONS=2 -sINITIAL_MEMORY="$INITIAL_MEMORY" -sALLOW_MEMORY_GROWTH -sRUNTIME_DEBUG -sPOLYFILL=0 -sEXIT_RUNTIME=0 -sINVOKE_RUN=0 -sDISABLE_EXCEPTION_CATCHING=0 -sEXPORTED_FUNCTIONS=_malloc -sEXPORT_NAME=loadVosklet -sMALLOC=emmalloc -sEXPORTED_RUNTIME_METHODS=UTF8ToString -sENVIRONMENT=web,worker -I. -I"$VOSK"/src -L"$KALDI"/src -l:online2/kaldi-online2.a -l:decoder/kaldi-decoder.a -l:ivector/kaldi-ivector.a -l:gmm/kaldi-gmm.a -l:tree/kaldi-tree.a -l:feat/kaldi-feat.a -l:cudamatrix/kaldi-cudamatrix.a -l:lat/kaldi-lat.a -l:lm/kaldi-lm.a -l:rnnlm/kaldi-rnnlm.a -l:hmm/kaldi-hmm.a -l:nnet3/kaldi-nnet3.a -l:transform/kaldi-transform.a -l:matrix/kaldi-matrix.a -l:fstext/kaldi-fstext.a -l:util/kaldi-util.a -l:base/kaldi-base.a -L"$OPENFST"/lib -l:libfst.a -l:libfstngram.a -L"$CLAPACK_WASM" -l:CBLAS/lib/cblas.a -l:CLAPACK-3.2.1/lapack.a -l:CLAPACK-3.2.1/libcblaswr.a -l:f2c_BLAS-3.8.0/blas.a -l:libf2c/libf2c.a -L"$VOSK"/src -l:vosk.a -lembind -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals --pre-js Wrapper.js -o ../test.js elif [ "$MODE" = 1 ]; then - em++ Util.cc CommonModel.cc Recognizer.cc Bindings.cc -O3 -Wall -Werror -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -fno-rtti -DMAX_WORKERS="$MAX_THREADS" -sWASMFS -sWASM_BIGINT -sMODULARIZE -sWASM_EXNREF -sTEXTDECODER=2 -sWASM_WORKERS=2 -sEVAL_CTORS=2 -sINITIAL_MEMORY="$INITIAL_MEMORY" -sALLOW_MEMORY_GROWTH -sPOLYFILL=0 -sEXIT_RUNTIME=0 -sINVOKE_RUN=0 -sSUPPORT_LONGJMP=0 -sEXPORTED_FUNCTIONS=_malloc -sEXPORT_NAME=loadVosklet -sMALLOC=emmalloc -sEXPORTED_RUNTIME_METHODS=UTF8ToString -sENVIRONMENT=web,worker -I. -I"$VOSK"/src -L"$KALDI"/src -l:online2/kaldi-online2.a -l:decoder/kaldi-decoder.a -l:ivector/kaldi-ivector.a -l:gmm/kaldi-gmm.a -l:tree/kaldi-tree.a -l:feat/kaldi-feat.a -l:cudamatrix/kaldi-cudamatrix.a -l:lat/kaldi-lat.a -l:lm/kaldi-lm.a -l:rnnlm/kaldi-rnnlm.a -l:hmm/kaldi-hmm.a -l:nnet3/kaldi-nnet3.a -l:transform/kaldi-transform.a -l:matrix/kaldi-matrix.a -l:fstext/kaldi-fstext.a -l:util/kaldi-util.a -l:base/kaldi-base.a -L"$OPENFST"/lib -l:libfst.a -l:libfstngram.a -L"$CLAPACK_WASM" -l:CBLAS/lib/cblas.a -l:CLAPACK-3.2.1/lapack.a -l:CLAPACK-3.2.1/libcblaswr.a -l:f2c_BLAS-3.8.0/blas.a -l:libf2c/libf2c.a -L"$VOSK"/src -l:vosk.a -lembind -flto -msimd128 -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals --pre-js Wrapper.js -o ../test.js + em++ Util.cc CommonModel.cc Recognizer.cc Bindings.cc -O3 -Wall -Werror -DEMSCRIPTEN_HAS_UNBOUND_TYPE_NAMES=0 -fno-rtti -DMAX_WORKERS="$MAX_THREADS" -sWASMFS -sWASM_BIGINT -sMODULARIZE -sWASM_EXNREF -sTEXTDECODER=2 -sWASM_WORKERS=2 -sEVAL_CTORS=2 -sINITIAL_MEMORY="$INITIAL_MEMORY" -sALLOW_MEMORY_GROWTH -sPOLYFILL=0 -sEXIT_RUNTIME=0 -sINVOKE_RUN=0 -sSUPPORT_LONGJMP=0 -sEXPORTED_FUNCTIONS=_malloc -sEXPORT_NAME=loadVosklet -sMALLOC=emmalloc -sEXPORTED_RUNTIME_METHODS=UTF8ToString -sENVIRONMENT=web,worker -I. -I"$VOSK"/src -L"$KALDI"/src -l:online2/kaldi-online2.a -l:decoder/kaldi-decoder.a -l:ivector/kaldi-ivector.a -l:gmm/kaldi-gmm.a -l:tree/kaldi-tree.a -l:feat/kaldi-feat.a -l:cudamatrix/kaldi-cudamatrix.a -l:lat/kaldi-lat.a -l:lm/kaldi-lm.a -l:rnnlm/kaldi-rnnlm.a -l:hmm/kaldi-hmm.a -l:nnet3/kaldi-nnet3.a -l:transform/kaldi-transform.a -l:matrix/kaldi-matrix.a -l:fstext/kaldi-fstext.a -l:util/kaldi-util.a -l:base/kaldi-base.a -L"$OPENFST"/lib -l:libfst.a -l:libfstngram.a -L"$CLAPACK_WASM" -l:CBLAS/lib/cblas.a -l:CLAPACK-3.2.1/lapack.a -l:CLAPACK-3.2.1/libcblaswr.a -l:f2c_BLAS-3.8.0/blas.a -l:libf2c/libf2c.a -L"$VOSK"/src -l:vosk.a -lembind -flto -msimd128 -matomics -mbulk-memory -mreference-types -mnontrapping-fptoint -mextended-const -msign-ext -mmutable-globals --pre-js Wrapper.js -o ../test.js fi cd .. && -sed -i 's/res.body/new Response(res.body.pipeThrough(new DecompressionStream("gzip"))).body/' test.js && +sed -i 's/.pipeThrough(new CompressionStream("gzip"))//;s/teed\[1\]/teed[1].pipeThrough(new DecompressionStream("gzip"))/' test.js && rm -f test.worker.js \ No newline at end of file