From 449aa491ee46c6b162fb25feffa0d80a16ebeac8 Mon Sep 17 00:00:00 2001 From: blankhex Date: Fri, 17 Apr 2026 12:54:54 +0000 Subject: [PATCH] deploy: ef4d899380793406f09b1cc64a1d3f41ffd253bb --- index.js | 2 +- index.wasm | Bin 1385946 -> 1385937 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index de228d2..b1e70fe 100644 --- a/index.js +++ b/index.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}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"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];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(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}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 getUniqueRunDependency(id){return id}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;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile;wasmBinaryFile="index.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw`failed to load wasm binary file at '${binaryFile}'`}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["eg"];updateMemoryViews();wasmTable=wasmExports["gg"];addOnInit(wasmExports["fg"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={483392:$0=>{var str=UTF8ToString($0)+"\n\n"+"Abort/Retry/Ignore/AlwaysIgnore? [ariA] :";var reply=window.prompt(str,"i");if(reply===null){reply="i"}return allocate(intArrayFromString(reply),"i8",ALLOC_NORMAL)},483617:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},483764:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},483998:$0=>{if(typeof Module["SDL2"]==="undefined"){Module["SDL2"]={}}var SDL2=Module["SDL2"];if(!$0){SDL2.audio={}}else{SDL2.capture={}}if(!SDL2.audioContext){if(typeof AudioContext!=="undefined"){SDL2.audioContext=new AudioContext}else if(typeof webkitAudioContext!=="undefined"){SDL2.audioContext=new webkitAudioContext}if(SDL2.audioContext){autoResumeAudioContext(SDL2.audioContext)}}return SDL2.audioContext===undefined?-1:0},484491:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},484559:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];var have_microphone=function(stream){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer);SDL2.capture.silenceTimer=undefined}SDL2.capture.mediaStreamNode=SDL2.audioContext.createMediaStreamSource(stream);SDL2.capture.scriptProcessorNode=SDL2.audioContext.createScriptProcessor($1,$0,1);SDL2.capture.scriptProcessorNode.onaudioprocess=function(audioProcessingEvent){if(SDL2===undefined||SDL2.capture===undefined){return}audioProcessingEvent.outputBuffer.getChannelData(0).fill(0);SDL2.capture.currentCaptureBuffer=audioProcessingEvent.inputBuffer;dynCall("vi",$2,[$3])};SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode);SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination);SDL2.capture.stream=stream};var no_microphone=function(error){};SDL2.capture.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.capture.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){SDL2.capture.currentCaptureBuffer=SDL2.capture.silenceBuffer;dynCall("vi",$2,[$3])};SDL2.capture.silenceTimer=setTimeout(silence_callback,$1/SDL2.audioContext.sampleRate*1e3);if(navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined){navigator.mediaDevices.getUserMedia({audio:true,video:false}).then(have_microphone).catch(no_microphone)}else if(navigator.webkitGetUserMedia!==undefined){navigator.webkitGetUserMedia({audio:true,video:false},have_microphone,no_microphone)}},486211:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];SDL2.audio.scriptProcessorNode=SDL2.audioContext["createScriptProcessor"]($1,0,$0);SDL2.audio.scriptProcessorNode["onaudioprocess"]=function(e){if(SDL2===undefined||SDL2.audio===undefined){return}SDL2.audio.currentOutputBuffer=e["outputBuffer"];dynCall("vi",$2,[$3])};SDL2.audio.scriptProcessorNode["connect"](SDL2.audioContext["destination"])},486621:($0,$1)=>{var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c{var SDL2=Module["SDL2"];var numChannels=SDL2.audio.currentOutputBuffer["numberOfChannels"];for(var c=0;c>2]}}},487706:$0=>{var SDL2=Module["SDL2"];if($0){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer)}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i{var w=$0;var h=$1;var pixels=$2;if(!Module["SDL2"])Module["SDL2"]={};var SDL2=Module["SDL2"];if(SDL2.ctxCanvas!==Module["canvas"]){SDL2.ctx=Module["createContext"](Module["canvas"],false,true);SDL2.ctxCanvas=Module["canvas"]}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx}var data=SDL2.image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=255;src++;dst+=4}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer);SDL2.data32Data=data}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i{var w=$0;var h=$1;var hot_x=$2;var hot_y=$3;var pixels=$4;var canvas=document.createElement("canvas");canvas.width=w;canvas.height=h;var ctx=canvas.getContext("2d");var image=ctx.createImageData(w,h);var data=image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},491336:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},491419:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},491488:()=>window.innerWidth,491518:()=>window.innerHeight};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(info.excPtr);return info.get_exception_ptr()};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var arg in args){var caughtType=args[arg];if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};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};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init(input,output,error){FS.init.initialized=true;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.getp();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_fs_load_embedded_files=ptr=>{do{var name_addr=HEAPU32[ptr>>2];ptr+=4;var len=HEAPU32[ptr>>2];ptr+=4;var content=HEAPU32[ptr>>2];ptr+=4;var name=UTF8ToString(name_addr);FS.createPath("/",PATH.dirname(name),true,true);FS.createDataFile(name,null,HEAP8.subarray(content,content+len),true,true,true)}while(HEAPU32[ptr>>2])};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var _abort=()=>{abort("")};var _emscripten_set_main_loop_timing=(mode,value)=>{Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof Browser.setImmediate=="undefined"){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);Browser.setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}else{Browser.setImmediate=setImmediate}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){Browser.setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var setMainLoop=(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming)=>{Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object")SDL.audio?.queueNewAudioData?.();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};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 safeSetTimeout=(func,timeout)=>setTimeout(()=>{callUserCallback(func)},timeout);var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);onload?.(byteArray)};img.onerror=event=>{err(`Image ${url} could not be decoded`);onerror?.()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;onload?.(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}Module["onFullScreen"]?.(Browser.isFullscreen);Module["onFullscreen"]?.(Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia(func){window.getUserMedia||=navigator["getUserMedia"]||navigator["mozGetUserMedia"];window.getUserMedia(func)},getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords(pageX,pageY){var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords(pageX,pageY){const{x:x,y:y}=Browser.calculateMouseCoords(pageX,pageY);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];last||=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAPU32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};var _eglBindAPI=api=>{if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0};var _eglChooseConfig=(display,attrib_list,configs,config_size,numConfigs)=>EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs);var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_disjoint_timer_query","EXT_frag_depth","EXT_shader_texture_lod","EXT_sRGB","OES_element_index_uint","OES_fbo_render_mipmap","OES_standard_derivatives","OES_texture_float","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_depth_texture","WEBGL_draw_buffers","EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>2]=id}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var _eglCreateContext=(display,config,hmm,contextAttribs)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}};var _eglCreateWindowSurface=(display,config,win,attrib_list)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006};var _eglDestroyContext=(display,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1};var _eglDestroySurface=(display,surface)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1};var _eglGetConfigAttrib=(display,config,attribute,value)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}if(!value){EGL.setErrorCode(12300);return 0}EGL.setErrorCode(12288);switch(attribute){case 12320:HEAP32[value>>2]=EGL.contextAttributes.alpha?32:24;return 1;case 12321:HEAP32[value>>2]=EGL.contextAttributes.alpha?8:0;return 1;case 12322:HEAP32[value>>2]=8;return 1;case 12323:HEAP32[value>>2]=8;return 1;case 12324:HEAP32[value>>2]=8;return 1;case 12325:HEAP32[value>>2]=EGL.contextAttributes.depth?24:0;return 1;case 12326:HEAP32[value>>2]=EGL.contextAttributes.stencil?8:0;return 1;case 12327:HEAP32[value>>2]=12344;return 1;case 12328:HEAP32[value>>2]=62002;return 1;case 12329:HEAP32[value>>2]=0;return 1;case 12330:HEAP32[value>>2]=4096;return 1;case 12331:HEAP32[value>>2]=16777216;return 1;case 12332:HEAP32[value>>2]=4096;return 1;case 12333:HEAP32[value>>2]=0;return 1;case 12334:HEAP32[value>>2]=0;return 1;case 12335:HEAP32[value>>2]=12344;return 1;case 12337:HEAP32[value>>2]=EGL.contextAttributes.antialias?4:0;return 1;case 12338:HEAP32[value>>2]=EGL.contextAttributes.antialias?1:0;return 1;case 12339:HEAP32[value>>2]=4;return 1;case 12340:HEAP32[value>>2]=12344;return 1;case 12341:case 12342:case 12343:HEAP32[value>>2]=-1;return 1;case 12345:case 12346:HEAP32[value>>2]=0;return 1;case 12347:HEAP32[value>>2]=0;return 1;case 12348:HEAP32[value>>2]=1;return 1;case 12349:case 12350:HEAP32[value>>2]=0;return 1;case 12351:HEAP32[value>>2]=12430;return 1;case 12352:HEAP32[value>>2]=4;return 1;case 12354:HEAP32[value>>2]=0;return 1;default:EGL.setErrorCode(12292);return 0}};var _eglGetDisplay=nativeDisplayType=>{EGL.setErrorCode(12288);if(nativeDisplayType!=0&&nativeDisplayType!=1){return 0}return 62e3};var _eglGetError=()=>EGL.errorCode;var _eglInitialize=(display,majorVersion,minorVersion)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1};var _eglMakeCurrent=(display,draw,read,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _eglQueryString=(display,name)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.setErrorCode(12288);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 12371:ret=stringToNewUTF8("Emscripten");break;case 12372:ret=stringToNewUTF8("1.4 Emscripten EGL");break;case 12373:ret=stringToNewUTF8("");break;case 12429:ret=stringToNewUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret};var _eglSwapBuffers=(dpy,surface)=>{if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0};var _eglSwapInterval=(display,interval)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1};var _eglTerminate=display=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1};var _eglWaitClient=()=>{EGL.setErrorCode(12288);return 1};var _eglWaitGL=_eglWaitClient;var _eglWaitNative=nativeEngineId=>{EGL.setErrorCode(12288);return 1};var readEmAsmArgsArray=[];var readEmAsmArgs=(sigPtr,buf)=>{readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++]){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>2]:ch==105?HEAP32[buf>>2]:HEAPF64[buf>>3]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code](...args)};var _emscripten_asm_const_int=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);var runMainThreadEmAsm=(emAsmAddr,sigPtr,argbuf,sync)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[emAsmAddr](...args)};var _emscripten_asm_const_int_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_asm_const_ptr_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_cancel_main_loop=()=>{Browser.mainLoop.pause();Browser.mainLoop.func=null};var _emscripten_date_now=()=>Date.now();var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var JSEvents={removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedence{for(var i=0;icString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement};var findCanvasEventTarget=findEventTarget;var _emscripten_get_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height};var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var getCanvasElementSize=target=>withStackSave(()=>{var w=stackAlloc(8);var h=w+4;var targetInt=stringToUTF8OnStack(target.id);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];return size});var _emscripten_set_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0};var setCanvasElementSize=(target,width,height)=>{if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{withStackSave(()=>{var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height)})}};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 registerRestoreOldStyle=canvas=>{var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle};var setLetterbox=(element,topBottom,leftRight)=>{element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"};var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0};var JSEvents_resizeCanvasForFullscreen=(target,strategy)=>{var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight{if(strategy.scaleMode!=0||strategy.canvasResolutionScaleMode!=0){JSEvents_resizeCanvasForFullscreen(target,strategy)}if(target.requestFullscreen){target.requestFullscreen()}else if(target.webkitRequestFullscreen){target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else{return JSEvents.fullscreenEnabled()?-3:-1}currentFullscreenStrategy=strategy;if(strategy.canvasResizedCallback){getWasmTableEntry(strategy.canvasResizedCallback)(37,0,strategy.canvasResizedCallbackUserData)}return 0};var _emscripten_exit_fullscreen=()=>{if(!JSEvents.fullscreenEnabled())return-1;JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);var d=specialHTMLTargets[1];if(d.exitFullscreen){d.fullscreenElement&&d.exitFullscreen()}else if(d.webkitExitFullscreen){d.webkitFullscreenElement&&d.webkitExitFullscreen()}else{return-1}return 0};var requestPointerLock=target=>{if(target.requestPointerLock){target.requestPointerLock()}else{if(document.body.requestPointerLock){return-3}return-1}return 0};var _emscripten_exit_pointerlock=()=>{JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else{return-1}return 0};var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var _emscripten_force_exit=status=>{__emscripten_runtime_keepalive_clear();_exit(status)};var _emscripten_get_device_pixel_ratio=()=>typeof devicePixelRatio=="number"&&devicePixelRatio||1;var _emscripten_get_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0};var fillGamepadEventData=(eventStruct,e)=>{HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)};var _emscripten_get_gamepad_status=(index,gamepadState)=>{if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0};var _emscripten_get_num_gamepads=()=>JSEvents.lastGamepadState.length;var _emscripten_get_screen_size=(width,height)=>{HEAP32[width>>2]=screen.width;HEAP32[height>>2]=screen.height};var _glActiveTexture=x0=>GLctx.activeTexture(x0);var _emscripten_glActiveTexture=_glActiveTexture;var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glAttachShader=_glAttachShader;var _glBeginQuery=(target,id)=>{GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQuery=_glBeginQuery;var _glBeginQueryEXT=(target,id)=>{GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;var _glBeginTransformFeedback=x0=>GLctx.beginTransformFeedback(x0);var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;var _glBindAttribLocation=(program,index,name)=>{GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _emscripten_glBindAttribLocation=_glBindAttribLocation;var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _emscripten_glBindBuffer=_glBindBuffer;var _glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferBase=_glBindBufferBase;var _glBindBufferRange=(target,index,buffer,offset,ptrsize)=>{GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindBufferRange=_glBindBufferRange;var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindFramebuffer=_glBindFramebuffer;var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;var _glBindSampler=(unit,sampler)=>{GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindSampler=_glBindSampler;var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTexture=_glBindTexture;var _glBindTransformFeedback=(target,id)=>{GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;var _glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _emscripten_glBlendColor=_glBlendColor;var _glBlendEquation=x0=>GLctx.blendEquation(x0);var _emscripten_glBlendEquation=_glBlendEquation;var _glBlendEquationSeparate=(x0,x1)=>GLctx.blendEquationSeparate(x0,x1);var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _emscripten_glBlendFunc=_glBlendFunc;var _glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;var _glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferData=_glBufferData;var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glBufferSubData=_glBufferSubData;var _glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;var _glClear=x0=>GLctx.clear(x0);var _emscripten_glClear=_glClear;var _glClearBufferfi=(x0,x1,x2,x3)=>GLctx.clearBufferfi(x0,x1,x2,x3);var _emscripten_glClearBufferfi=_glClearBufferfi;var _glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferfv=_glClearBufferfv;var _glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferiv=_glClearBufferiv;var _glClearBufferuiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearBufferuiv=_glClearBufferuiv;var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _emscripten_glClearColor=_glClearColor;var _glClearDepthf=x0=>GLctx.clearDepth(x0);var _emscripten_glClearDepthf=_glClearDepthf;var _glClearStencil=x0=>GLctx.clearStencil(x0);var _emscripten_glClearStencil=_glClearStencil;var convertI32PairToI53=(lo,hi)=>(lo>>>0)+hi*4294967296;var _glClientWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClientWaitSync=_glClientWaitSync;var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorMask=_glColorMask;var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _emscripten_glCompileShader=_glCompileShader;var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;var _glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;var _glCompressedTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data)}else{GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize)}return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;var _glCompressedTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;var _glCopyBufferSubData=(x0,x1,x2,x3,x4)=>GLctx.copyBufferSubData(x0,x1,x2,x3,x4);var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;var _glCopyTexImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;var _glCopyTexSubImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;var _glCopyTexSubImage3D=(x0,x1,x2,x3,x4,x5,x6,x7,x8)=>GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8);var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _emscripten_glCreateProgram=_glCreateProgram;var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _emscripten_glCreateShader=_glCreateShader;var _glCullFace=x0=>GLctx.cullFace(x0);var _emscripten_glCullFace=_glCullFace;var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteBuffers=_glDeleteBuffers;var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _emscripten_glDeleteProgram=_glDeleteProgram;var _glDeleteQueries=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueries=_glDeleteQueries;var _glDeleteQueriesEXT=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;var _glDeleteSamplers=(n,samplers)=>{for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSamplers=_glDeleteSamplers;var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _emscripten_glDeleteShader=_glDeleteShader;var _glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteSync=_glDeleteSync;var _glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTextures=_glDeleteTextures;var _glDeleteTransformFeedbacks=(n,ids)=>{for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;var _glDepthFunc=x0=>GLctx.depthFunc(x0);var _emscripten_glDepthFunc=_glDepthFunc;var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _emscripten_glDepthMask=_glDepthMask;var _glDepthRangef=(x0,x1)=>GLctx.depthRange(x0,x1);var _emscripten_glDepthRangef=_glDepthRangef;var _glDetachShader=(program,shader)=>{GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glDetachShader=_glDetachShader;var _glDisable=x0=>GLctx.disable(x0);var _emscripten_glDisable=_glDisable;var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _emscripten_glDrawArrays=_glDrawArrays;var _glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];var _glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _emscripten_glDrawElements=_glDrawElements;var _glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;var _glDrawRangeElements=(mode,start,end,count,type,indices)=>{_glDrawElements(mode,count,type,indices)};var _emscripten_glDrawRangeElements=_glDrawRangeElements;var _glEnable=x0=>GLctx.enable(x0);var _emscripten_glEnable=_glEnable;var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;var _glEndQuery=x0=>GLctx.endQuery(x0);var _emscripten_glEndQuery=_glEndQuery;var _glEndQueryEXT=target=>{GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndQueryEXT=_glEndQueryEXT;var _glEndTransformFeedback=()=>GLctx.endTransformFeedback();var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;var _glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFenceSync=_glFenceSync;var _glFinish=()=>GLctx.finish();var _emscripten_glFinish=_glFinish;var _glFlush=()=>GLctx.flush();var _emscripten_glFlush=_glFlush;var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;var _glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;var _glFrontFace=x0=>GLctx.frontFace(x0);var _emscripten_glFrontFace=_glFrontFace;var _glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenBuffers=_glGenBuffers;var _glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenFramebuffers=_glGenFramebuffers;var _glGenQueries=(n,ids)=>{GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueries=_glGenQueries;var _glGenQueriesEXT=(n,ids)=>{for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}};var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;var _glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;var _glGenSamplers=(n,samplers)=>{GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenSamplers=_glGenSamplers;var _glGenTextures=(n,textures)=>{GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTextures=_glGenTextures;var _glGenTransformFeedbacks=(n,ids)=>{GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;var _glGenVertexArrays=(n,arrays)=>{GL.genObject(n,arrays,"createVertexArray",GL.vaos)};var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;var _glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var _emscripten_glGenerateMipmap=_glGenerateMipmap;var __glGetActiveAttribOrUniform=(funcName,program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}};var _glGetActiveAttrib=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;var _glGetActiveUniform=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveUniform=_glGetActiveUniform;var _glGetActiveUniformBlockName=(program,uniformBlockIndex,bufSize,length,uniformBlockName)=>{program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}};var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;var _glGetActiveUniformBlockiv=(program,uniformBlockIndex,pname,params)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}};var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;var _glGetActiveUniformsiv=(program,uniformCount,uniformIndices,pname,params)=>{if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;var _glGetAttachedShaders=(program,maxCount,count,shaders)=>{var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}};var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;var _glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetAttribLocation=_glGetAttribLocation;var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=function $webglGetExtensions(){var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>"GL_"+e));return exts};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);return}}break;default:GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetBooleanv=(name_,p)=>emscriptenWebGLGet(name_,p,4);var _emscripten_glGetBooleanv=_glGetBooleanv;var _glGetBufferParameteri64v=(target,value,data)=>{if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;var _glGetBufferParameteriv=(target,value,data)=>{if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)};var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;var _glGetError=()=>{var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetError=_glGetError;var _glGetFloatv=(name_,p)=>emscriptenWebGLGet(name_,p,2);var _emscripten_glGetFloatv=_glGetFloatv;var _glGetFragDataLocation=(program,name)=>GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;var _glGetFramebufferAttachmentParameteriv=(target,attachment,pname,params)=>{var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result};var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;var emscriptenWebGLGetIndexed=(target,index,data,type)=>{if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}};var _glGetInteger64i_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,1);var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;var _glGetInteger64v=(name_,p)=>{emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetInteger64v=_glGetInteger64v;var _glGetIntegeri_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,0);var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;var _glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _emscripten_glGetIntegerv=_glGetIntegerv;var _glGetInternalformativ=(target,internalformat,pname,bufSize,params)=>{if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}};var _emscripten_glGetInternalformativ=_glGetInternalformativ;var _glGetProgramBinary=(program,bufSize,length,binaryFormat,binary)=>{GL.recordError(1282)};var _emscripten_glGetProgramBinary=_glGetProgramBinary;var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _emscripten_glGetProgramiv=_glGetProgramiv;var _glGetQueryObjecti64vEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;var _glGetQueryObjectivEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;var _glGetQueryObjectuiv=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;var _glGetQueryiv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)};var _emscripten_glGetQueryiv=_glGetQueryiv;var _glGetQueryivEXT=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)};var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;var _glGetRenderbufferParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)};var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;var _glGetSamplerParameterfv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;var _glGetSamplerParameteriv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;var _glGetShaderPrecisionFormat=(shaderType,precisionType,range,precision)=>{var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision};var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;var _glGetShaderSource=(shader,bufSize,length,source)=>{var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderSource=_glGetShaderSource;var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _emscripten_glGetShaderiv=_glGetShaderiv;var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var glVersion=GLctx.getParameter(7938);if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${glVersion})`;else{glVersion=`OpenGL ES 2.0 (${glVersion})`}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _emscripten_glGetString=_glGetString;var _glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetStringi=_glGetStringi;var _glGetSynciv=(sync,pname,bufSize,length,values)=>{if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}};var _emscripten_glGetSynciv=_glGetSynciv;var _glGetTexParameterfv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;var _glGetTexParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;var _glGetTransformFeedbackVarying=(program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type};var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;var _glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;var _glGetUniformIndices=(program,uniformCount,uniformNames,uniformIndices)=>{if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetUniformIndices=_glGetUniformIndices;var jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:""))}return webglLoc}else{GL.recordError(1282)}};var emscriptenWebGLGetUniform=(program,location,params,type)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _glGetUniformfv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformfv=_glGetUniformfv;var _glGetUniformiv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformiv=_glGetUniformiv;var _glGetUniformuiv=(program,location,params)=>emscriptenWebGLGetUniform(program,location,params,0);var _emscripten_glGetUniformuiv=_glGetUniformuiv;var emscriptenWebGLGetVertexAttrib=(index,pname,params,type)=>{if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}};var _glGetVertexAttribIiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;var _glGetVertexAttribPointerv=(index,pname,pointer)=>{if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)};var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;var _glGetVertexAttribfv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;var _glGetVertexAttribiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;var _glHint=(x0,x1)=>GLctx.hint(x0,x1);var _emscripten_glHint=_glHint;var _glInvalidateFramebuffer=(target,numAttachments,attachments)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;var _glInvalidateSubFramebuffer=(target,numAttachments,attachments,x,y,width,height)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;var _glIsBuffer=buffer=>{var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsBuffer=_glIsBuffer;var _glIsEnabled=x0=>GLctx.isEnabled(x0);var _emscripten_glIsEnabled=_glIsEnabled;var _glIsFramebuffer=framebuffer=>{var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsFramebuffer=_glIsFramebuffer;var _glIsProgram=program=>{program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsProgram=_glIsProgram;var _glIsQuery=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQuery=_glIsQuery;var _glIsQueryEXT=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsQueryEXT=_glIsQueryEXT;var _glIsRenderbuffer=renderbuffer=>{var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;var _glIsSampler=id=>{var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsSampler=_glIsSampler;var _glIsShader=shader=>{var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsShader=_glIsShader;var _glIsSync=sync=>GLctx.isSync(GL.syncs[sync]);var _emscripten_glIsSync=_glIsSync;var _glIsTexture=id=>{var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTexture=_glIsTexture;var _glIsTransformFeedback=id=>GLctx.isTransformFeedback(GL.transformFeedbacks[id]);var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;var _glIsVertexArray=array=>{var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)};var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;var _glLineWidth=x0=>GLctx.lineWidth(x0);var _emscripten_glLineWidth=_glLineWidth;var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _emscripten_glLinkProgram=_glLinkProgram;var _glPauseTransformFeedback=()=>GLctx.pauseTransformFeedback();var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPixelStorei=_glPixelStorei;var _glPolygonOffset=(x0,x1)=>GLctx.polygonOffset(x0,x1);var _emscripten_glPolygonOffset=_glPolygonOffset;var _glProgramBinary=(program,binaryFormat,binary,length)=>{GL.recordError(1280)};var _emscripten_glProgramBinary=_glProgramBinary;var _glProgramParameteri=(program,pname,value)=>{GL.recordError(1280)};var _emscripten_glProgramParameteri=_glProgramParameteri;var _glQueryCounterEXT=(id,target)=>{GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;var _glReadBuffer=x0=>GLctx.readBuffer(x0);var _emscripten_glReadBuffer=_glReadBuffer;var computeUnpackAlignedImageSize=(width,height,sizePerPixel,alignment)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _glReadPixels=(x,y,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target)}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReadPixels=_glReadPixels;var _glReleaseShaderCompiler=()=>{};var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;var _glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;var _glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;var _glResumeTransformFeedback=()=>GLctx.resumeTransformFeedback();var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;var _glSampleCoverage=(value,invert)=>{GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSampleCoverage=_glSampleCoverage;var _glSamplerParameterf=(sampler,pname,param)=>{GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterf=_glSamplerParameterf;var _glSamplerParameterfv=(sampler,pname,params)=>{var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;var _glSamplerParameteri=(sampler,pname,param)=>{GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=_glSamplerParameteri;var _glSamplerParameteriv=(sampler,pname,params)=>{var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;var _glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _emscripten_glScissor=_glScissor;var _glShaderBinary=(count,shaders,binaryformat,binary,length)=>{GL.recordError(1280)};var _emscripten_glShaderBinary=_glShaderBinary;var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _emscripten_glShaderSource=_glShaderSource;var _glStencilFunc=(x0,x1,x2)=>GLctx.stencilFunc(x0,x1,x2);var _emscripten_glStencilFunc=_glStencilFunc;var _glStencilFuncSeparate=(x0,x1,x2,x3)=>GLctx.stencilFuncSeparate(x0,x1,x2,x3);var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;var _glStencilMask=x0=>GLctx.stencilMask(x0);var _emscripten_glStencilMask=_glStencilMask;var _glStencilMaskSeparate=(x0,x1)=>GLctx.stencilMaskSeparate(x0,x1);var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;var _glStencilOp=(x0,x1,x2)=>GLctx.stencilOp(x0,x1,x2);var _emscripten_glStencilOp=_glStencilOp;var _glStencilOpSeparate=(x0,x1,x2,x3)=>GLctx.stencilOpSeparate(x0,x1,x2,x3);var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)};var _emscripten_glTexImage2D=_glTexImage2D;var _glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexImage3D=_glTexImage3D;var _glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _emscripten_glTexParameterf=_glTexParameterf;var _glTexParameterfv=(target,pname,params)=>{var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameterfv=_glTexParameterfv;var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _emscripten_glTexParameteri=_glTexParameteri;var _glTexParameteriv=(target,pname,params)=>{var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexParameteriv=_glTexParameteriv;var _glTexStorage2D=(x0,x1,x2,x3,x4)=>GLctx.texStorage2D(x0,x1,x2,x3,x4);var _emscripten_glTexStorage2D=_glTexStorage2D;var _glTexStorage3D=(x0,x1,x2,x3,x4,x5)=>GLctx.texStorage3D(x0,x1,x2,x3,x4,x5);var _emscripten_glTexStorage3D=_glTexStorage3D;var _glTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage2D=_glTexSubImage2D;var _glTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTexSubImage3D=_glTexSubImage3D;var _glTransformFeedbackVaryings=(program,count,varyings,bufferMode)=>{program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;var _glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1f=_glUniform1f;var miniTempWebGLFloatBuffers=[];var _glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1fv=_glUniform1fv;var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1i=_glUniform1i;var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1iv=_glUniform1iv;var _glUniform1ui=(location,v0)=>{GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1ui=_glUniform1ui;var _glUniform1uiv=(location,count,value)=>{count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform1uiv=_glUniform1uiv;var _glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2f=_glUniform2f;var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2fv=_glUniform2fv;var _glUniform2i=(location,v0,v1)=>{GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2i=_glUniform2i;var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2iv=_glUniform2iv;var _glUniform2ui=(location,v0,v1)=>{GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2ui=_glUniform2ui;var _glUniform2uiv=(location,count,value)=>{count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform2uiv=_glUniform2uiv;var _glUniform3f=(location,v0,v1,v2)=>{GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3f=_glUniform3f;var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3fv=_glUniform3fv;var _glUniform3i=(location,v0,v1,v2)=>{GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3i=_glUniform3i;var _glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3iv=_glUniform3iv;var _glUniform3ui=(location,v0,v1,v2)=>{GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3ui=_glUniform3ui;var _glUniform3uiv=(location,count,value)=>{count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform3uiv=_glUniform3uiv;var _glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4f=_glUniform4f;var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4fv=_glUniform4fv;var _glUniform4i=(location,v0,v1,v2,v3)=>{GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4i=_glUniform4i;var _glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4iv=_glUniform4iv;var _glUniform4ui=(location,v0,v1,v2,v3)=>{GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4ui=_glUniform4ui;var _glUniform4uiv=(location,count,value)=>{count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniform4uiv=_glUniform4uiv;var _glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;var _glUniformMatrix2fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;var _glUniformMatrix2x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;var _glUniformMatrix2x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;var _glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;var _glUniformMatrix3x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;var _glUniformMatrix3x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;var _glUniformMatrix4x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;var _glUniformMatrix4x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _emscripten_glUseProgram=_glUseProgram;var _glValidateProgram=program=>{GLctx.validateProgram(GL.programs[program])};var _emscripten_glValidateProgram=_glValidateProgram;var _glVertexAttrib1f=(x0,x1)=>GLctx.vertexAttrib1f(x0,x1);var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;var _glVertexAttrib1fv=(index,v)=>{GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;var _glVertexAttrib2f=(x0,x1,x2)=>GLctx.vertexAttrib2f(x0,x1,x2);var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;var _glVertexAttrib2fv=(index,v)=>{GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;var _glVertexAttrib3f=(x0,x1,x2,x3)=>GLctx.vertexAttrib3f(x0,x1,x2,x3);var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;var _glVertexAttrib3fv=(index,v)=>{GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;var _glVertexAttrib4f=(x0,x1,x2,x3,x4)=>GLctx.vertexAttrib4f(x0,x1,x2,x3,x4);var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;var _glVertexAttrib4fv=(index,v)=>{GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;var _glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;var _glVertexAttribI4i=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4i(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;var _glVertexAttribI4iv=(index,v)=>{GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;var _glVertexAttribI4ui=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;var _glVertexAttribI4uiv=(index,v)=>{GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;var _glVertexAttribIPointer=(index,size,type,stride,ptr)=>{GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var _emscripten_glViewport=_glViewport;var _glWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glWaitSync=_glWaitSync;var _emscripten_has_asyncify=()=>0;var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var doRequestFullscreen=(target,strategy)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(JSEvents_requestFullscreen,1,[target,strategy]);return 1}return-2}return JSEvents_requestFullscreen(target,strategy)};var _emscripten_request_fullscreen_strategy=(target,deferUntilInEventHandler,fullscreenStrategy)=>{var strategy={scaleMode:HEAP32[fullscreenStrategy>>2],canvasResolutionScaleMode:HEAP32[fullscreenStrategy+4>>2],filteringMode:HEAP32[fullscreenStrategy+8>>2],deferUntilInEventHandler:deferUntilInEventHandler,canvasResizedCallback:HEAP32[fullscreenStrategy+12>>2],canvasResizedCallbackUserData:HEAP32[fullscreenStrategy+16>>2]};return doRequestFullscreen(target,strategy)};var _emscripten_request_pointerlock=(target,deferUntilInEventHandler)=>{target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}return-2}return requestPointerLock(target)};var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var _emscripten_sample_gamepad_data=()=>{try{if(navigator.getGamepads)return(JSEvents.lastGamepadState=navigator.getGamepads())?0:-1}catch(e){navigator.getGamepads=null}return-1};var registerBeforeUnloadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString)=>{var beforeUnloadEventHandlerFunc=(e=event)=>{var confirmationMessage=getWasmTableEntry(callbackfunc)(eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=UTF8ToString(confirmationMessage)}if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage}};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_beforeunload_callback_on_thread=(userData,callbackfunc,targetThread)=>{if(typeof onbeforeunload=="undefined")return-1;if(targetThread!==1)return-5;return registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload")};var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(e=event)=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_blur_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);var _emscripten_set_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0};var _emscripten_set_focus_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);var fillFullscreenChangeEventData=eventStruct=>{var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement?.id||"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}};var registerFullscreenChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=(e=event)=>{var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_fullscreenchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread)};var registerGamepadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=(e=event)=>{var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_gamepadconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)};var _emscripten_set_gamepaddisconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)};var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=e=>{var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_keydown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);var _emscripten_set_keypress_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);var _emscripten_set_keyup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);var _emscripten_set_main_loop=(func,fps,simulateInfiniteLoop)=>{var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)};var fillMouseEventData=(eventStruct,e,target)=>{HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-(rect.left|0);HEAP32[idx+14]=e.clientY-(rect.top|0)};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=(e=event)=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_mousedown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);var _emscripten_set_mouseenter_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);var _emscripten_set_mouseleave_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);var _emscripten_set_mousemove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);var _emscripten_set_mouseup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);var fillPointerlockChangeEventData=eventStruct=>{var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement?.id||"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)};var registerPointerlockChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=(e=event)=>{var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document||!document.body||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)};var registerUiEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=(e=event)=>{if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=0;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset|0;HEAP32[uiEvent+32>>2]=pageYOffset|0;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_resize_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=e=>{var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-(targetRect.left|0);HEAP32[idx+10]=t.clientY-(targetRect.top|0);idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_touchcancel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);var _emscripten_set_touchend_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);var _emscripten_set_touchmove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);var _emscripten_set_touchstart_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);var fillVisibilityChangeEventData=eventStruct=>{var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState};var registerVisibilityChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=(e=event)=>{var visibilityChangeEvent=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(visibilityChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_visibilitychange_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(!specialHTMLTargets[1]){return-4}return registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread)};var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=(e=event)=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_wheel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}};var _emscripten_set_window_title=title=>document.title=UTF8ToString(title);var _emscripten_sleep=()=>{throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"};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;HEAPU32[__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();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var arraySum=(array,index)=>{var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum};var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];var addDays=(date,days)=>{var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var _strftime=(s,maxsize,format,tm)=>{var tm_zone=HEAPU32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":getWeekBasedYear,"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":date=>date.tm_zone,"%%":()=>"%"};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1};var _strftime_l=(s,maxsize,format,tm,loc)=>_strftime(s,maxsize,format,tm);var listenOnce=(object,event,func)=>{object.addEventListener(event,func,{"once":true})};var autoResumeAudioContext=(ctx,elements)=>{if(!elements){elements=[document,document.getElementById("canvas")]}["keydown","mousedown","touchstart"].forEach(event=>{elements.forEach(element=>{if(element){listenOnce(element,event,()=>{if(ctx.state==="suspended")ctx.resume()})}})})};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return f(ptr,...args)};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=Browser.requestFullscreen;Module["requestAnimationFrame"]=Browser.requestAnimationFrame;Module["setCanvasSize"]=Browser.setCanvasSize;Module["pauseMainLoop"]=Browser.mainLoop.pause;Module["resumeMainLoop"]=Browser.mainLoop.resume;Module["getUserMedia"]=Browser.getUserMedia;Module["createContext"]=Browser.createContext;var preloadedImages={};var preloadedAudios={};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i+1)}var wasmImports={p:___cxa_begin_catch,v:___cxa_end_catch,a:___cxa_find_matching_catch_2,h:___cxa_find_matching_catch_3,I:___cxa_rethrow,o:___cxa_throw,ab:___cxa_uncaught_exceptions,b:___resumeException,ha:___syscall_fcntl64,fb:___syscall_ioctl,gb:___syscall_openat,ad:__emscripten_fs_load_embedded_files,hb:__emscripten_get_now_is_monotonic,D:_abort,Ua:_eglBindAPI,Xa:_eglChooseConfig,La:_eglCreateContext,Na:_eglCreateWindowSurface,Ma:_eglDestroyContext,Oa:_eglDestroySurface,Za:_eglGetConfigAttrib,ca:_eglGetDisplay,Ka:_eglGetError,Va:_eglInitialize,Pa:_eglMakeCurrent,Ja:_eglQueryString,Qa:_eglSwapBuffers,Ra:_eglSwapInterval,Wa:_eglTerminate,Ta:_eglWaitGL,Sa:_eglWaitNative,mc:_emscripten_asm_const_int,q:_emscripten_asm_const_int_sync_on_main_thread,na:_emscripten_asm_const_ptr_sync_on_main_thread,oa:_emscripten_cancel_main_loop,ia:_emscripten_date_now,Ea:_emscripten_exit_fullscreen,Ha:_emscripten_exit_pointerlock,Rc:_emscripten_force_exit,y:_emscripten_get_device_pixel_ratio,u:_emscripten_get_element_css_size,la:_emscripten_get_gamepad_status,H:_emscripten_get_now,Tb:_emscripten_get_num_gamepads,Ia:_emscripten_get_screen_size,$f:_emscripten_glActiveTexture,_f:_emscripten_glAttachShader,$c:_emscripten_glBeginQuery,Aa:_emscripten_glBeginQueryEXT,Hc:_emscripten_glBeginTransformFeedback,Zf:_emscripten_glBindAttribLocation,Yf:_emscripten_glBindBuffer,Ec:_emscripten_glBindBufferBase,Fc:_emscripten_glBindBufferRange,Xf:_emscripten_glBindFramebuffer,Wf:_emscripten_glBindRenderbuffer,Kb:_emscripten_glBindSampler,Vf:_emscripten_glBindTexture,Cb:_emscripten_glBindTransformFeedback,Mc:_emscripten_glBindVertexArray,sa:_emscripten_glBindVertexArrayOES,Uf:_emscripten_glBlendColor,Tf:_emscripten_glBlendEquation,Sf:_emscripten_glBlendEquationSeparate,Rf:_emscripten_glBlendFunc,Qf:_emscripten_glBlendFuncSeparate,Pc:_emscripten_glBlitFramebuffer,Pf:_emscripten_glBufferData,Of:_emscripten_glBufferSubData,Nf:_emscripten_glCheckFramebufferStatus,Mf:_emscripten_glClear,gc:_emscripten_glClearBufferfi,hc:_emscripten_glClearBufferfv,jc:_emscripten_glClearBufferiv,ic:_emscripten_glClearBufferuiv,Lf:_emscripten_glClearColor,Kf:_emscripten_glClearDepthf,Jf:_emscripten_glClearStencil,Ub:_emscripten_glClientWaitSync,If:_emscripten_glColorMask,Hf:_emscripten_glCompileShader,Gf:_emscripten_glCompressedTexImage2D,fd:_emscripten_glCompressedTexImage3D,Ff:_emscripten_glCompressedTexSubImage2D,ed:_emscripten_glCompressedTexSubImage3D,ec:_emscripten_glCopyBufferSubData,Ef:_emscripten_glCopyTexImage2D,Df:_emscripten_glCopyTexSubImage2D,gd:_emscripten_glCopyTexSubImage3D,Cf:_emscripten_glCreateProgram,Bf:_emscripten_glCreateShader,Af:_emscripten_glCullFace,zf:_emscripten_glDeleteBuffers,yf:_emscripten_glDeleteFramebuffers,xf:_emscripten_glDeleteProgram,cd:_emscripten_glDeleteQueries,Ca:_emscripten_glDeleteQueriesEXT,wf:_emscripten_glDeleteRenderbuffers,Mb:_emscripten_glDeleteSamplers,vf:_emscripten_glDeleteShader,Vb:_emscripten_glDeleteSync,uf:_emscripten_glDeleteTextures,Bb:_emscripten_glDeleteTransformFeedbacks,Lc:_emscripten_glDeleteVertexArrays,ra:_emscripten_glDeleteVertexArraysOES,tf:_emscripten_glDepthFunc,sf:_emscripten_glDepthMask,rf:_emscripten_glDepthRangef,qf:_emscripten_glDetachShader,pf:_emscripten_glDisable,of:_emscripten_glDisableVertexAttribArray,nf:_emscripten_glDrawArrays,Zb:_emscripten_glDrawArraysInstanced,cg:_emscripten_glDrawArraysInstancedANGLE,lb:_emscripten_glDrawArraysInstancedARB,od:_emscripten_glDrawArraysInstancedEXT,mb:_emscripten_glDrawArraysInstancedNV,Xc:_emscripten_glDrawBuffers,md:_emscripten_glDrawBuffersEXT,dg:_emscripten_glDrawBuffersWEBGL,mf:_emscripten_glDrawElements,Yb:_emscripten_glDrawElementsInstanced,bg:_emscripten_glDrawElementsInstancedANGLE,jb:_emscripten_glDrawElementsInstancedARB,kb:_emscripten_glDrawElementsInstancedEXT,nd:_emscripten_glDrawElementsInstancedNV,jd:_emscripten_glDrawRangeElements,lf:_emscripten_glEnable,kf:_emscripten_glEnableVertexAttribArray,_c:_emscripten_glEndQuery,za:_emscripten_glEndQueryEXT,Gc:_emscripten_glEndTransformFeedback,Xb:_emscripten_glFenceSync,jf:_emscripten_glFinish,hf:_emscripten_glFlush,gf:_emscripten_glFramebufferRenderbuffer,ff:_emscripten_glFramebufferTexture2D,Nc:_emscripten_glFramebufferTextureLayer,ef:_emscripten_glFrontFace,df:_emscripten_glGenBuffers,bf:_emscripten_glGenFramebuffers,dd:_emscripten_glGenQueries,Da:_emscripten_glGenQueriesEXT,af:_emscripten_glGenRenderbuffers,Nb:_emscripten_glGenSamplers,$e:_emscripten_glGenTextures,Ab:_emscripten_glGenTransformFeedbacks,Kc:_emscripten_glGenVertexArrays,qa:_emscripten_glGenVertexArraysOES,cf:_emscripten_glGenerateMipmap,_e:_emscripten_glGetActiveAttrib,Ze:_emscripten_glGetActiveUniform,$b:_emscripten_glGetActiveUniformBlockName,ac:_emscripten_glGetActiveUniformBlockiv,cc:_emscripten_glGetActiveUniformsiv,Ye:_emscripten_glGetAttachedShaders,Xe:_emscripten_glGetAttribLocation,We:_emscripten_glGetBooleanv,Ob:_emscripten_glGetBufferParameteri64v,Ve:_emscripten_glGetBufferParameteriv,Ue:_emscripten_glGetError,Te:_emscripten_glGetFloatv,tc:_emscripten_glGetFragDataLocation,Se:_emscripten_glGetFramebufferAttachmentParameteriv,Pb:_emscripten_glGetInteger64i_v,Rb:_emscripten_glGetInteger64v,Ic:_emscripten_glGetIntegeri_v,Re:_emscripten_glGetIntegerv,pb:_emscripten_glGetInternalformativ,wb:_emscripten_glGetProgramBinary,Pe:_emscripten_glGetProgramInfoLog,Qe:_emscripten_glGetProgramiv,ua:_emscripten_glGetQueryObjecti64vEXT,wa:_emscripten_glGetQueryObjectivEXT,ta:_emscripten_glGetQueryObjectui64vEXT,Yc:_emscripten_glGetQueryObjectuiv,va:_emscripten_glGetQueryObjectuivEXT,Zc:_emscripten_glGetQueryiv,xa:_emscripten_glGetQueryivEXT,Oe:_emscripten_glGetRenderbufferParameteriv,Eb:_emscripten_glGetSamplerParameterfv,Fb:_emscripten_glGetSamplerParameteriv,Me:_emscripten_glGetShaderInfoLog,Le:_emscripten_glGetShaderPrecisionFormat,Ke:_emscripten_glGetShaderSource,Ne:_emscripten_glGetShaderiv,Je:_emscripten_glGetString,fc:_emscripten_glGetStringi,Qb:_emscripten_glGetSynciv,Ie:_emscripten_glGetTexParameterfv,He:_emscripten_glGetTexParameteriv,Cc:_emscripten_glGetTransformFeedbackVarying,bc:_emscripten_glGetUniformBlockIndex,dc:_emscripten_glGetUniformIndices,De:_emscripten_glGetUniformLocation,Ge:_emscripten_glGetUniformfv,Fe:_emscripten_glGetUniformiv,uc:_emscripten_glGetUniformuiv,Ac:_emscripten_glGetVertexAttribIiv,zc:_emscripten_glGetVertexAttribIuiv,Ae:_emscripten_glGetVertexAttribPointerv,Ce:_emscripten_glGetVertexAttribfv,Be:_emscripten_glGetVertexAttribiv,ze:_emscripten_glHint,tb:_emscripten_glInvalidateFramebuffer,sb:_emscripten_glInvalidateSubFramebuffer,ye:_emscripten_glIsBuffer,xe:_emscripten_glIsEnabled,we:_emscripten_glIsFramebuffer,ve:_emscripten_glIsProgram,bd:_emscripten_glIsQuery,Ba:_emscripten_glIsQueryEXT,ue:_emscripten_glIsRenderbuffer,Lb:_emscripten_glIsSampler,te:_emscripten_glIsShader,Wb:_emscripten_glIsSync,se:_emscripten_glIsTexture,zb:_emscripten_glIsTransformFeedback,Jc:_emscripten_glIsVertexArray,pa:_emscripten_glIsVertexArrayOES,re:_emscripten_glLineWidth,qe:_emscripten_glLinkProgram,yb:_emscripten_glPauseTransformFeedback,pe:_emscripten_glPixelStorei,oe:_emscripten_glPolygonOffset,vb:_emscripten_glProgramBinary,ub:_emscripten_glProgramParameteri,ya:_emscripten_glQueryCounterEXT,kd:_emscripten_glReadBuffer,ne:_emscripten_glReadPixels,me:_emscripten_glReleaseShaderCompiler,le:_emscripten_glRenderbufferStorage,Oc:_emscripten_glRenderbufferStorageMultisample,xb:_emscripten_glResumeTransformFeedback,ke:_emscripten_glSampleCoverage,Hb:_emscripten_glSamplerParameterf,Gb:_emscripten_glSamplerParameterfv,Jb:_emscripten_glSamplerParameteri,Ib:_emscripten_glSamplerParameteriv,je:_emscripten_glScissor,ie:_emscripten_glShaderBinary,he:_emscripten_glShaderSource,ge:_emscripten_glStencilFunc,fe:_emscripten_glStencilFuncSeparate,ee:_emscripten_glStencilMask,de:_emscripten_glStencilMaskSeparate,ce:_emscripten_glStencilOp,be:_emscripten_glStencilOpSeparate,ae:_emscripten_glTexImage2D,id:_emscripten_glTexImage3D,$d:_emscripten_glTexParameterf,_d:_emscripten_glTexParameterfv,Zd:_emscripten_glTexParameteri,Yd:_emscripten_glTexParameteriv,rb:_emscripten_glTexStorage2D,qb:_emscripten_glTexStorage3D,Xd:_emscripten_glTexSubImage2D,hd:_emscripten_glTexSubImage3D,Dc:_emscripten_glTransformFeedbackVaryings,Wd:_emscripten_glUniform1f,Vd:_emscripten_glUniform1fv,Ud:_emscripten_glUniform1i,Td:_emscripten_glUniform1iv,sc:_emscripten_glUniform1ui,oc:_emscripten_glUniform1uiv,Sd:_emscripten_glUniform2f,Qd:_emscripten_glUniform2fv,Pd:_emscripten_glUniform2i,Od:_emscripten_glUniform2iv,rc:_emscripten_glUniform2ui,nc:_emscripten_glUniform2uiv,Nd:_emscripten_glUniform3f,Md:_emscripten_glUniform3fv,Ld:_emscripten_glUniform3i,Kd:_emscripten_glUniform3iv,qc:_emscripten_glUniform3ui,lc:_emscripten_glUniform3uiv,Jd:_emscripten_glUniform4f,Id:_emscripten_glUniform4fv,Hd:_emscripten_glUniform4i,Fd:_emscripten_glUniform4iv,pc:_emscripten_glUniform4ui,kc:_emscripten_glUniform4uiv,_b:_emscripten_glUniformBlockBinding,Ed:_emscripten_glUniformMatrix2fv,Wc:_emscripten_glUniformMatrix2x3fv,Uc:_emscripten_glUniformMatrix2x4fv,Dd:_emscripten_glUniformMatrix3fv,Vc:_emscripten_glUniformMatrix3x2fv,Sc:_emscripten_glUniformMatrix3x4fv,Cd:_emscripten_glUniformMatrix4fv,Tc:_emscripten_glUniformMatrix4x2fv,Qc:_emscripten_glUniformMatrix4x3fv,Bd:_emscripten_glUseProgram,Ad:_emscripten_glValidateProgram,zd:_emscripten_glVertexAttrib1f,yd:_emscripten_glVertexAttrib1fv,xd:_emscripten_glVertexAttrib2f,wd:_emscripten_glVertexAttrib2fv,vd:_emscripten_glVertexAttrib3f,ud:_emscripten_glVertexAttrib3fv,td:_emscripten_glVertexAttrib4f,sd:_emscripten_glVertexAttrib4fv,Db:_emscripten_glVertexAttribDivisor,ag:_emscripten_glVertexAttribDivisorANGLE,nb:_emscripten_glVertexAttribDivisorARB,pd:_emscripten_glVertexAttribDivisorEXT,ob:_emscripten_glVertexAttribDivisorNV,yc:_emscripten_glVertexAttribI4i,wc:_emscripten_glVertexAttribI4iv,xc:_emscripten_glVertexAttribI4ui,vc:_emscripten_glVertexAttribI4uiv,Bc:_emscripten_glVertexAttribIPointer,rd:_emscripten_glVertexAttribPointer,qd:_emscripten_glViewport,Sb:_emscripten_glWaitSync,G:_emscripten_has_asyncify,ib:_emscripten_memcpy_js,Fa:_emscripten_request_fullscreen_strategy,ba:_emscripten_request_pointerlock,bb:_emscripten_resize_heap,ma:_emscripten_sample_gamepad_data,J:_emscripten_set_beforeunload_callback_on_thread,V:_emscripten_set_blur_callback_on_thread,x:_emscripten_set_canvas_element_size,C:_emscripten_set_element_css_size,W:_emscripten_set_focus_callback_on_thread,M:_emscripten_set_fullscreenchange_callback_on_thread,ka:_emscripten_set_gamepadconnected_callback_on_thread,ja:_emscripten_set_gamepaddisconnected_callback_on_thread,P:_emscripten_set_keydown_callback_on_thread,N:_emscripten_set_keypress_callback_on_thread,O:_emscripten_set_keyup_callback_on_thread,Ee:_emscripten_set_main_loop,$:_emscripten_set_mousedown_callback_on_thread,Z:_emscripten_set_mouseenter_callback_on_thread,Y:_emscripten_set_mouseleave_callback_on_thread,aa:_emscripten_set_mousemove_callback_on_thread,_:_emscripten_set_mouseup_callback_on_thread,Q:_emscripten_set_pointerlockchange_callback_on_thread,L:_emscripten_set_resize_callback_on_thread,R:_emscripten_set_touchcancel_callback_on_thread,T:_emscripten_set_touchend_callback_on_thread,S:_emscripten_set_touchmove_callback_on_thread,U:_emscripten_set_touchstart_callback_on_thread,K:_emscripten_set_visibilitychange_callback_on_thread,X:_emscripten_set_wheel_callback_on_thread,Ga:_emscripten_set_window_title,F:_emscripten_sleep,cb:_environ_get,db:_environ_sizes_get,fa:_fd_close,eb:_fd_read,_a:_fd_seek,ga:_fd_write,Rd:invoke_di,ld:invoke_dii,E:invoke_diii,da:invoke_fiii,g:invoke_i,c:invoke_ii,e:invoke_iii,i:invoke_iiii,l:invoke_iiiii,n:invoke_iiiiii,s:invoke_iiiiiii,ea:invoke_iiiiiiii,A:invoke_iiiiiiiiiiii,Ya:invoke_jiiii,j:invoke_v,k:invoke_vi,Gd:invoke_vid,d:invoke_vii,f:invoke_viii,m:invoke_viiii,t:invoke_viiiii,B:invoke_viiiiii,r:invoke_viiiiiii,w:invoke_viiiiiiiiii,z:invoke_viiiiiiiiiiiiiii,$a:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["fg"])();var ___cxa_free_exception=a0=>(___cxa_free_exception=wasmExports["__cxa_free_exception"])(a0);var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["hg"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports["ig"])(a0);var _setThrew=(a0,a1)=>(_setThrew=wasmExports["jg"])(a0,a1);var setTempRet0=a0=>(setTempRet0=wasmExports["kg"])(a0);var stackSave=()=>(stackSave=wasmExports["lg"])();var stackRestore=a0=>(stackRestore=wasmExports["mg"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["ng"])(a0);var ___cxa_decrement_exception_refcount=a0=>(___cxa_decrement_exception_refcount=wasmExports["og"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["pg"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports["qg"])(a0,a1,a2);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["rg"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["sg"])(a0,a1,a2,a3,a4);var dynCall_ji=Module["dynCall_ji"]=(a0,a1)=>(dynCall_ji=Module["dynCall_ji"]=wasmExports["tg"])(a0,a1);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["ug"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["vg"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["wg"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["xg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["yg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var ___emscripten_embedded_file_data=Module["___emscripten_embedded_file_data"]=406728;function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_di(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vid(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_dii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_unlink"]=FS.unlink;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args=[]){var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;args.forEach(arg=>{HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4});HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); +var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}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"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];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(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}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 getUniqueRunDependency(id){return id}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;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile;wasmBinaryFile="index.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw`failed to load wasm binary file at '${binaryFile}'`}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["eg"];updateMemoryViews();wasmTable=wasmExports["gg"];addOnInit(wasmExports["fg"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={483376:$0=>{var str=UTF8ToString($0)+"\n\n"+"Abort/Retry/Ignore/AlwaysIgnore? [ariA] :";var reply=window.prompt(str,"i");if(reply===null){reply="i"}return allocate(intArrayFromString(reply),"i8",ALLOC_NORMAL)},483601:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},483748:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},483982:$0=>{if(typeof Module["SDL2"]==="undefined"){Module["SDL2"]={}}var SDL2=Module["SDL2"];if(!$0){SDL2.audio={}}else{SDL2.capture={}}if(!SDL2.audioContext){if(typeof AudioContext!=="undefined"){SDL2.audioContext=new AudioContext}else if(typeof webkitAudioContext!=="undefined"){SDL2.audioContext=new webkitAudioContext}if(SDL2.audioContext){autoResumeAudioContext(SDL2.audioContext)}}return SDL2.audioContext===undefined?-1:0},484475:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},484543:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];var have_microphone=function(stream){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer);SDL2.capture.silenceTimer=undefined}SDL2.capture.mediaStreamNode=SDL2.audioContext.createMediaStreamSource(stream);SDL2.capture.scriptProcessorNode=SDL2.audioContext.createScriptProcessor($1,$0,1);SDL2.capture.scriptProcessorNode.onaudioprocess=function(audioProcessingEvent){if(SDL2===undefined||SDL2.capture===undefined){return}audioProcessingEvent.outputBuffer.getChannelData(0).fill(0);SDL2.capture.currentCaptureBuffer=audioProcessingEvent.inputBuffer;dynCall("vi",$2,[$3])};SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode);SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination);SDL2.capture.stream=stream};var no_microphone=function(error){};SDL2.capture.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.capture.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){SDL2.capture.currentCaptureBuffer=SDL2.capture.silenceBuffer;dynCall("vi",$2,[$3])};SDL2.capture.silenceTimer=setTimeout(silence_callback,$1/SDL2.audioContext.sampleRate*1e3);if(navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined){navigator.mediaDevices.getUserMedia({audio:true,video:false}).then(have_microphone).catch(no_microphone)}else if(navigator.webkitGetUserMedia!==undefined){navigator.webkitGetUserMedia({audio:true,video:false},have_microphone,no_microphone)}},486195:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];SDL2.audio.scriptProcessorNode=SDL2.audioContext["createScriptProcessor"]($1,0,$0);SDL2.audio.scriptProcessorNode["onaudioprocess"]=function(e){if(SDL2===undefined||SDL2.audio===undefined){return}SDL2.audio.currentOutputBuffer=e["outputBuffer"];dynCall("vi",$2,[$3])};SDL2.audio.scriptProcessorNode["connect"](SDL2.audioContext["destination"])},486605:($0,$1)=>{var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c{var SDL2=Module["SDL2"];var numChannels=SDL2.audio.currentOutputBuffer["numberOfChannels"];for(var c=0;c>2]}}},487690:$0=>{var SDL2=Module["SDL2"];if($0){if(SDL2.capture.silenceTimer!==undefined){clearTimeout(SDL2.capture.silenceTimer)}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i{var w=$0;var h=$1;var pixels=$2;if(!Module["SDL2"])Module["SDL2"]={};var SDL2=Module["SDL2"];if(SDL2.ctxCanvas!==Module["canvas"]){SDL2.ctx=Module["createContext"](Module["canvas"],false,true);SDL2.ctxCanvas=Module["canvas"]}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx}var data=SDL2.image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=255;src++;dst+=4}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer);SDL2.data32Data=data}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i{var w=$0;var h=$1;var hot_x=$2;var hot_y=$3;var pixels=$4;var canvas=document.createElement("canvas");canvas.width=w;canvas.height=h;var ctx=canvas.getContext("2d");var image=ctx.createImageData(w,h);var data=image.data;var src=pixels>>2;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},491320:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},491403:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},491472:()=>window.innerWidth,491502:()=>window.innerHeight};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;break;case"i8":HEAP8[ptr]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(info.excPtr);return info.get_exception_ptr()};var exceptionLast=0;var ___cxa_end_catch=()=>{_setThrew(0,0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var arg in args){var caughtType=args[arg];if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_rethrow=()=>{var info=exceptionCaught.pop();if(!info){abort("no exception to throw")}var ptr=info.excPtr;if(!info.get_rethrown()){exceptionCaught.push(info);info.set_rethrown(true);info.set_caught(false);uncaughtExceptionCount++}exceptionLast=ptr;throw exceptionLast};var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___cxa_uncaught_exceptions=()=>uncaughtExceptionCount;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};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};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init(input,output,error){FS.init.initialized=true;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.getp();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>2]=termios.c_iflag||0;HEAP32[argp+4>>2]=termios.c_oflag||0;HEAP32[argp+8>>2]=termios.c_cflag||0;HEAP32[argp+12>>2]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>1]=winsize[0];HEAP16[argp+2>>1]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __emscripten_fs_load_embedded_files=ptr=>{do{var name_addr=HEAPU32[ptr>>2];ptr+=4;var len=HEAPU32[ptr>>2];ptr+=4;var content=HEAPU32[ptr>>2];ptr+=4;var name=UTF8ToString(name_addr);FS.createPath("/",PATH.dirname(name),true,true);FS.createDataFile(name,null,HEAP8.subarray(content,content+len),true,true,true)}while(HEAPU32[ptr>>2])};var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var _abort=()=>{abort("")};var _emscripten_set_main_loop_timing=(mode,value)=>{Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof Browser.setImmediate=="undefined"){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);Browser.setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}else{Browser.setImmediate=setImmediate}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){Browser.setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var setMainLoop=(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming)=>{Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object")SDL.audio?.queueNewAudioData?.();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};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 safeSetTimeout=(func,timeout)=>setTimeout(()=>{callUserCallback(func)},timeout);var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);onload?.(byteArray)};img.onerror=event=>{err(`Image ${url} could not be decoded`);onerror?.()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;onload?.(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}Module["onFullScreen"]?.(Browser.isFullscreen);Module["onFullscreen"]?.(Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia(func){window.getUserMedia||=navigator["getUserMedia"]||navigator["mozGetUserMedia"];window.getUserMedia(func)},getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords(pageX,pageY){var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords(pageX,pageY){const{x:x,y:y}=Browser.calculateMouseCoords(pageX,pageY);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];last||=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1}if(config&&config_size>0){HEAPU32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};var _eglBindAPI=api=>{if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0};var _eglChooseConfig=(display,attrib_list,configs,config_size,numConfigs)=>EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs);var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_disjoint_timer_query","EXT_frag_depth","EXT_shader_texture_lod","EXT_sRGB","OES_element_index_uint","OES_fbo_render_mipmap","OES_standard_derivatives","OES_texture_float","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_depth_texture","WEBGL_draw_buffers","EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>2]=id}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(GLctx);webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};var _eglCreateContext=(display,config,hmm,contextAttribs)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}};var _eglCreateWindowSurface=(display,config,win,attrib_list)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006};var _eglDestroyContext=(display,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1};var _eglDestroySurface=(display,surface)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1};var _eglGetConfigAttrib=(display,config,attribute,value)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}if(!value){EGL.setErrorCode(12300);return 0}EGL.setErrorCode(12288);switch(attribute){case 12320:HEAP32[value>>2]=EGL.contextAttributes.alpha?32:24;return 1;case 12321:HEAP32[value>>2]=EGL.contextAttributes.alpha?8:0;return 1;case 12322:HEAP32[value>>2]=8;return 1;case 12323:HEAP32[value>>2]=8;return 1;case 12324:HEAP32[value>>2]=8;return 1;case 12325:HEAP32[value>>2]=EGL.contextAttributes.depth?24:0;return 1;case 12326:HEAP32[value>>2]=EGL.contextAttributes.stencil?8:0;return 1;case 12327:HEAP32[value>>2]=12344;return 1;case 12328:HEAP32[value>>2]=62002;return 1;case 12329:HEAP32[value>>2]=0;return 1;case 12330:HEAP32[value>>2]=4096;return 1;case 12331:HEAP32[value>>2]=16777216;return 1;case 12332:HEAP32[value>>2]=4096;return 1;case 12333:HEAP32[value>>2]=0;return 1;case 12334:HEAP32[value>>2]=0;return 1;case 12335:HEAP32[value>>2]=12344;return 1;case 12337:HEAP32[value>>2]=EGL.contextAttributes.antialias?4:0;return 1;case 12338:HEAP32[value>>2]=EGL.contextAttributes.antialias?1:0;return 1;case 12339:HEAP32[value>>2]=4;return 1;case 12340:HEAP32[value>>2]=12344;return 1;case 12341:case 12342:case 12343:HEAP32[value>>2]=-1;return 1;case 12345:case 12346:HEAP32[value>>2]=0;return 1;case 12347:HEAP32[value>>2]=0;return 1;case 12348:HEAP32[value>>2]=1;return 1;case 12349:case 12350:HEAP32[value>>2]=0;return 1;case 12351:HEAP32[value>>2]=12430;return 1;case 12352:HEAP32[value>>2]=4;return 1;case 12354:HEAP32[value>>2]=0;return 1;default:EGL.setErrorCode(12292);return 0}};var _eglGetDisplay=nativeDisplayType=>{EGL.setErrorCode(12288);if(nativeDisplayType!=0&&nativeDisplayType!=1){return 0}return 62e3};var _eglGetError=()=>EGL.errorCode;var _eglInitialize=(display,majorVersion,minorVersion)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1}if(minorVersion){HEAP32[minorVersion>>2]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1};var _eglMakeCurrent=(display,draw,read,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _eglQueryString=(display,name)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.setErrorCode(12288);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 12371:ret=stringToNewUTF8("Emscripten");break;case 12372:ret=stringToNewUTF8("1.4 Emscripten EGL");break;case 12373:ret=stringToNewUTF8("");break;case 12429:ret=stringToNewUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret};var _eglSwapBuffers=(dpy,surface)=>{if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0};var _eglSwapInterval=(display,interval)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1};var _eglTerminate=display=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1};var _eglWaitClient=()=>{EGL.setErrorCode(12288);return 1};var _eglWaitGL=_eglWaitClient;var _eglWaitNative=nativeEngineId=>{EGL.setErrorCode(12288);return 1};var readEmAsmArgsArray=[];var readEmAsmArgs=(sigPtr,buf)=>{readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++]){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>2]:ch==105?HEAP32[buf>>2]:HEAPF64[buf>>3]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code](...args)};var _emscripten_asm_const_int=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);var runMainThreadEmAsm=(emAsmAddr,sigPtr,argbuf,sync)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[emAsmAddr](...args)};var _emscripten_asm_const_int_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_asm_const_ptr_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_cancel_main_loop=()=>{Browser.mainLoop.pause();Browser.mainLoop.func=null};var _emscripten_date_now=()=>Date.now();var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var JSEvents={removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedence{for(var i=0;icString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement};var findCanvasEventTarget=findEventTarget;var _emscripten_get_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height};var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var getCanvasElementSize=target=>withStackSave(()=>{var w=stackAlloc(8);var h=w+4;var targetInt=stringToUTF8OnStack(target.id);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];return size});var _emscripten_set_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0};var setCanvasElementSize=(target,width,height)=>{if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{withStackSave(()=>{var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height)})}};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 registerRestoreOldStyle=canvas=>{var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){var fullscreenElement=document.fullscreenElement||document.webkitFullscreenElement;if(!fullscreenElement){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle};var setLetterbox=(element,topBottom,leftRight)=>{element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"};var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0};var JSEvents_resizeCanvasForFullscreen=(target,strategy)=>{var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight{if(strategy.scaleMode!=0||strategy.canvasResolutionScaleMode!=0){JSEvents_resizeCanvasForFullscreen(target,strategy)}if(target.requestFullscreen){target.requestFullscreen()}else if(target.webkitRequestFullscreen){target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else{return JSEvents.fullscreenEnabled()?-3:-1}currentFullscreenStrategy=strategy;if(strategy.canvasResizedCallback){getWasmTableEntry(strategy.canvasResizedCallback)(37,0,strategy.canvasResizedCallbackUserData)}return 0};var _emscripten_exit_fullscreen=()=>{if(!JSEvents.fullscreenEnabled())return-1;JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);var d=specialHTMLTargets[1];if(d.exitFullscreen){d.fullscreenElement&&d.exitFullscreen()}else if(d.webkitExitFullscreen){d.webkitFullscreenElement&&d.webkitExitFullscreen()}else{return-1}return 0};var requestPointerLock=target=>{if(target.requestPointerLock){target.requestPointerLock()}else{if(document.body.requestPointerLock){return-3}return-1}return 0};var _emscripten_exit_pointerlock=()=>{JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else{return-1}return 0};var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var _emscripten_force_exit=status=>{__emscripten_runtime_keepalive_clear();_exit(status)};var _emscripten_get_device_pixel_ratio=()=>typeof devicePixelRatio=="number"&&devicePixelRatio||1;var _emscripten_get_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0};var fillGamepadEventData=(eventStruct,e)=>{HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)};var _emscripten_get_gamepad_status=(index,gamepadState)=>{if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0};var _emscripten_get_num_gamepads=()=>JSEvents.lastGamepadState.length;var _emscripten_get_screen_size=(width,height)=>{HEAP32[width>>2]=screen.width;HEAP32[height>>2]=screen.height};var _glActiveTexture=x0=>GLctx.activeTexture(x0);var _emscripten_glActiveTexture=_glActiveTexture;var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glAttachShader=_glAttachShader;var _glBeginQuery=(target,id)=>{GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQuery=_glBeginQuery;var _glBeginQueryEXT=(target,id)=>{GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginQueryEXT=_glBeginQueryEXT;var _glBeginTransformFeedback=x0=>GLctx.beginTransformFeedback(x0);var _emscripten_glBeginTransformFeedback=_glBeginTransformFeedback;var _glBindAttribLocation=(program,index,name)=>{GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _emscripten_glBindAttribLocation=_glBindAttribLocation;var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _emscripten_glBindBuffer=_glBindBuffer;var _glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferBase=_glBindBufferBase;var _glBindBufferRange=(target,index,buffer,offset,ptrsize)=>{GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindBufferRange=_glBindBufferRange;var _glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindFramebuffer=_glBindFramebuffer;var _glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindRenderbuffer=_glBindRenderbuffer;var _glBindSampler=(unit,sampler)=>{GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindSampler=_glBindSampler;var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTexture=_glBindTexture;var _glBindTransformFeedback=(target,id)=>{GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glBindTransformFeedback=_glBindTransformFeedback;var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _emscripten_glBindVertexArray=_glBindVertexArray;var _glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArrayOES;var _glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _emscripten_glBlendColor=_glBlendColor;var _glBlendEquation=x0=>GLctx.blendEquation(x0);var _emscripten_glBlendEquation=_glBlendEquation;var _glBlendEquationSeparate=(x0,x1)=>GLctx.blendEquationSeparate(x0,x1);var _emscripten_glBlendEquationSeparate=_glBlendEquationSeparate;var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _emscripten_glBlendFunc=_glBlendFunc;var _glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _emscripten_glBlendFuncSeparate=_glBlendFuncSeparate;var _glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _emscripten_glBlitFramebuffer=_glBlitFramebuffer;var _glBufferData=(target,size,data,usage)=>{if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferData=_glBufferData;var _glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glBufferSubData=_glBufferSubData;var _glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _emscripten_glCheckFramebufferStatus=_glCheckFramebufferStatus;var _glClear=x0=>GLctx.clear(x0);var _emscripten_glClear=_glClear;var _glClearBufferfi=(x0,x1,x2,x3)=>GLctx.clearBufferfi(x0,x1,x2,x3);var _emscripten_glClearBufferfi=_glClearBufferfi;var _glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferfv=_glClearBufferfv;var _glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferiv=_glClearBufferiv;var _glClearBufferuiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearBufferuiv=_glClearBufferuiv;var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _emscripten_glClearColor=_glClearColor;var _glClearDepthf=x0=>GLctx.clearDepth(x0);var _emscripten_glClearDepthf=_glClearDepthf;var _glClearStencil=x0=>GLctx.clearStencil(x0);var _emscripten_glClearStencil=_glClearStencil;var convertI32PairToI53=(lo,hi)=>(lo>>>0)+hi*4294967296;var _glClientWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClientWaitSync=_glClientWaitSync;var _glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorMask=_glColorMask;var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _emscripten_glCompileShader=_glCompileShader;var _glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data)}else{GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize)}return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexImage2D=_glCompressedTexImage2D;var _glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexImage3D=_glCompressedTexImage3D;var _glCompressedTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data)}else{GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize)}return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)};var _emscripten_glCompressedTexSubImage2D=_glCompressedTexSubImage2D;var _glCompressedTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage3D=_glCompressedTexSubImage3D;var _glCopyBufferSubData=(x0,x1,x2,x3,x4)=>GLctx.copyBufferSubData(x0,x1,x2,x3,x4);var _emscripten_glCopyBufferSubData=_glCopyBufferSubData;var _glCopyTexImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexImage2D=_glCopyTexImage2D;var _glCopyTexSubImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage2D=_glCopyTexSubImage2D;var _glCopyTexSubImage3D=(x0,x1,x2,x3,x4,x5,x6,x7,x8)=>GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8);var _emscripten_glCopyTexSubImage3D=_glCopyTexSubImage3D;var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _emscripten_glCreateProgram=_glCreateProgram;var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _emscripten_glCreateShader=_glCreateShader;var _glCullFace=x0=>GLctx.cullFace(x0);var _emscripten_glCullFace=_glCullFace;var _glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteBuffers=_glDeleteBuffers;var _glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteFramebuffers=_glDeleteFramebuffers;var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _emscripten_glDeleteProgram=_glDeleteProgram;var _glDeleteQueries=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueries=_glDeleteQueries;var _glDeleteQueriesEXT=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=_glDeleteQueriesEXT;var _glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteRenderbuffers=_glDeleteRenderbuffers;var _glDeleteSamplers=(n,samplers)=>{for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSamplers=_glDeleteSamplers;var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _emscripten_glDeleteShader=_glDeleteShader;var _glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteSync=_glDeleteSync;var _glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTextures=_glDeleteTextures;var _glDeleteTransformFeedbacks=(n,ids)=>{for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var _emscripten_glDeleteTransformFeedbacks=_glDeleteTransformFeedbacks;var _glDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}};var _emscripten_glDeleteVertexArrays=_glDeleteVertexArrays;var _glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArraysOES;var _glDepthFunc=x0=>GLctx.depthFunc(x0);var _emscripten_glDepthFunc=_glDepthFunc;var _glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _emscripten_glDepthMask=_glDepthMask;var _glDepthRangef=(x0,x1)=>GLctx.depthRange(x0,x1);var _emscripten_glDepthRangef=_glDepthRangef;var _glDetachShader=(program,shader)=>{GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glDetachShader=_glDetachShader;var _glDisable=x0=>GLctx.disable(x0);var _emscripten_glDisable=_glDisable;var _glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _emscripten_glDisableVertexAttribArray=_glDisableVertexAttribArray;var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _emscripten_glDrawArrays=_glDrawArrays;var _glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var _emscripten_glDrawArraysInstanced=_glDrawArraysInstanced;var _glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstancedANGLE;var _glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstancedARB;var _glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstancedEXT;var _glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstancedNV;var tempFixedLengthArray=[];var _glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _emscripten_glDrawBuffers=_glDrawBuffers;var _glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffersEXT;var _glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffersWEBGL;var _glDrawElements=(mode,count,type,indices)=>{GLctx.drawElements(mode,count,type,indices)};var _emscripten_glDrawElements=_glDrawElements;var _glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _emscripten_glDrawElementsInstanced=_glDrawElementsInstanced;var _glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstancedANGLE;var _glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstancedARB;var _glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstancedEXT;var _glDrawElementsInstancedNV=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstancedNV;var _glDrawRangeElements=(mode,start,end,count,type,indices)=>{_glDrawElements(mode,count,type,indices)};var _emscripten_glDrawRangeElements=_glDrawRangeElements;var _glEnable=x0=>GLctx.enable(x0);var _emscripten_glEnable=_glEnable;var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _emscripten_glEnableVertexAttribArray=_glEnableVertexAttribArray;var _glEndQuery=x0=>GLctx.endQuery(x0);var _emscripten_glEndQuery=_glEndQuery;var _glEndQueryEXT=target=>{GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndQueryEXT=_glEndQueryEXT;var _glEndTransformFeedback=()=>GLctx.endTransformFeedback();var _emscripten_glEndTransformFeedback=_glEndTransformFeedback;var _glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFenceSync=_glFenceSync;var _glFinish=()=>GLctx.finish();var _emscripten_glFinish=_glFinish;var _glFlush=()=>GLctx.flush();var _emscripten_glFlush=_glFlush;var _glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferRenderbuffer=_glFramebufferRenderbuffer;var _glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTexture2D=_glFramebufferTexture2D;var _glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFramebufferTextureLayer=_glFramebufferTextureLayer;var _glFrontFace=x0=>GLctx.frontFace(x0);var _emscripten_glFrontFace=_glFrontFace;var _glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenBuffers=_glGenBuffers;var _glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenFramebuffers=_glGenFramebuffers;var _glGenQueries=(n,ids)=>{GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueries=_glGenQueries;var _glGenQueriesEXT=(n,ids)=>{for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}};var _emscripten_glGenQueriesEXT=_glGenQueriesEXT;var _glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenRenderbuffers=_glGenRenderbuffers;var _glGenSamplers=(n,samplers)=>{GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenSamplers=_glGenSamplers;var _glGenTextures=(n,textures)=>{GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTextures=_glGenTextures;var _glGenTransformFeedbacks=(n,ids)=>{GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var _emscripten_glGenTransformFeedbacks=_glGenTransformFeedbacks;var _glGenVertexArrays=(n,arrays)=>{GL.genObject(n,arrays,"createVertexArray",GL.vaos)};var _emscripten_glGenVertexArrays=_glGenVertexArrays;var _glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArraysOES;var _glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var _emscripten_glGenerateMipmap=_glGenerateMipmap;var __glGetActiveAttribOrUniform=(funcName,program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}};var _glGetActiveAttrib=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveAttrib=_glGetActiveAttrib;var _glGetActiveUniform=(program,index,bufSize,length,size,type,name)=>{__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)};var _emscripten_glGetActiveUniform=_glGetActiveUniform;var _glGetActiveUniformBlockName=(program,uniformBlockIndex,bufSize,length,uniformBlockName)=>{program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}};var _emscripten_glGetActiveUniformBlockName=_glGetActiveUniformBlockName;var _glGetActiveUniformBlockiv=(program,uniformBlockIndex,pname,params)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i]}}else{HEAP32[params>>2]=result}};var _emscripten_glGetActiveUniformBlockiv=_glGetActiveUniformBlockiv;var _glGetActiveUniformsiv=(program,uniformCount,uniformIndices,pname,params)=>{if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetActiveUniformsiv=_glGetActiveUniformsiv;var _glGetAttachedShaders=(program,maxCount,count,shaders)=>{var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i>2]=id}};var _emscripten_glGetAttachedShaders=_glGetAttachedShaders;var _glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetAttribLocation=_glGetAttribLocation;var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296};var webglGetExtensions=function $webglGetExtensions(){var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>"GL_"+e));return exts};var emscriptenWebGLGet=(name_,p,type)=>{if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}ret=webglGetExtensions().length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);return}}break;default:GL.recordError(1280);err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;break}};var _glGetBooleanv=(name_,p)=>emscriptenWebGLGet(name_,p,4);var _emscripten_glGetBooleanv=_glGetBooleanv;var _glGetBufferParameteri64v=(target,value,data)=>{if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteri64v=_glGetBufferParameteri64v;var _glGetBufferParameteriv=(target,value,data)=>{if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)};var _emscripten_glGetBufferParameteriv=_glGetBufferParameteriv;var _glGetError=()=>{var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetError=_glGetError;var _glGetFloatv=(name_,p)=>emscriptenWebGLGet(name_,p,2);var _emscripten_glGetFloatv=_glGetFloatv;var _glGetFragDataLocation=(program,name)=>GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetFragDataLocation=_glGetFragDataLocation;var _glGetFramebufferAttachmentParameteriv=(target,attachment,pname,params)=>{var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result};var _emscripten_glGetFramebufferAttachmentParameteriv=_glGetFramebufferAttachmentParameteriv;var emscriptenWebGLGetIndexed=(target,index,data,type)=>{if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}};var _glGetInteger64i_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,1);var _emscripten_glGetInteger64i_v=_glGetInteger64i_v;var _glGetInteger64v=(name_,p)=>{emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetInteger64v=_glGetInteger64v;var _glGetIntegeri_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,0);var _emscripten_glGetIntegeri_v=_glGetIntegeri_v;var _glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _emscripten_glGetIntegerv=_glGetIntegerv;var _glGetInternalformativ=(target,internalformat,pname,bufSize,params)=>{if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i]}};var _emscripten_glGetInternalformativ=_glGetInternalformativ;var _glGetProgramBinary=(program,bufSize,length,binaryFormat,binary)=>{GL.recordError(1282)};var _emscripten_glGetProgramBinary=_glGetProgramBinary;var _glGetProgramInfoLog=(program,maxLength,length,infoLog)=>{var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetProgramInfoLog=_glGetProgramInfoLog;var _glGetProgramiv=(program,pname,p)=>{if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}};var _emscripten_glGetProgramiv=_glGetProgramiv;var _glGetQueryObjecti64vEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjecti64vEXT=_glGetQueryObjecti64vEXT;var _glGetQueryObjectivEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectivEXT=_glGetQueryObjectivEXT;var _glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjectui64vEXT;var _glGetQueryObjectuiv=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret};var _emscripten_glGetQueryObjectuiv=_glGetQueryObjectuiv;var _glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectuivEXT;var _glGetQueryiv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname)};var _emscripten_glGetQueryiv=_glGetQueryiv;var _glGetQueryivEXT=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)};var _emscripten_glGetQueryivEXT=_glGetQueryivEXT;var _glGetRenderbufferParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)};var _emscripten_glGetRenderbufferParameteriv=_glGetRenderbufferParameteriv;var _glGetSamplerParameterfv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameterfv=_glGetSamplerParameterfv;var _glGetSamplerParameteriv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=_glGetSamplerParameteriv;var _glGetShaderInfoLog=(shader,maxLength,length,infoLog)=>{var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderInfoLog=_glGetShaderInfoLog;var _glGetShaderPrecisionFormat=(shaderType,precisionType,range,precision)=>{var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision};var _emscripten_glGetShaderPrecisionFormat=_glGetShaderPrecisionFormat;var _glGetShaderSource=(shader,bufSize,length,source)=>{var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull};var _emscripten_glGetShaderSource=_glGetShaderSource;var _glGetShaderiv=(shader,pname,p)=>{if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}};var _emscripten_glGetShaderiv=_glGetShaderiv;var _glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var glVersion=GLctx.getParameter(7938);if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${glVersion})`;else{glVersion=`OpenGL ES 2.0 (${glVersion})`}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _emscripten_glGetString=_glGetString;var _glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetStringi=_glGetStringi;var _glGetSynciv=(sync,pname,bufSize,length,values)=>{if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;if(length)HEAP32[length>>2]=1}};var _emscripten_glGetSynciv=_glGetSynciv;var _glGetTexParameterfv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameterfv=_glGetTexParameterfv;var _glGetTexParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=_glGetTexParameteriv;var _glGetTransformFeedbackVarying=(program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type};var _emscripten_glGetTransformFeedbackVarying=_glGetTransformFeedbackVarying;var _glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var _emscripten_glGetUniformBlockIndex=_glGetUniformBlockIndex;var _glGetUniformIndices=(program,uniformCount,uniformNames,uniformIndices)=>{if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}};var _emscripten_glGetUniformIndices=_glGetUniformIndices;var jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:""))}return webglLoc}else{GL.recordError(1282)}};var emscriptenWebGLGetUniform=(program,location,params,type)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _glGetUniformfv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformfv=_glGetUniformfv;var _glGetUniformiv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformiv=_glGetUniformiv;var _glGetUniformuiv=(program,location,params)=>emscriptenWebGLGetUniform(program,location,params,0);var _emscripten_glGetUniformuiv=_glGetUniformuiv;var emscriptenWebGLGetVertexAttrib=(index,pname,params,type)=>{if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}};var _glGetVertexAttribIiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _emscripten_glGetVertexAttribIiv=_glGetVertexAttribIiv;var _glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIuiv;var _glGetVertexAttribPointerv=(index,pname,pointer)=>{if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)};var _emscripten_glGetVertexAttribPointerv=_glGetVertexAttribPointerv;var _glGetVertexAttribfv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribfv=_glGetVertexAttribfv;var _glGetVertexAttribiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glGetVertexAttribiv=_glGetVertexAttribiv;var _glHint=(x0,x1)=>GLctx.hint(x0,x1);var _emscripten_glHint=_glHint;var _glInvalidateFramebuffer=(target,numAttachments,attachments)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateFramebuffer=_glInvalidateFramebuffer;var _glInvalidateSubFramebuffer=(target,numAttachments,attachments,x,y,width,height)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glInvalidateSubFramebuffer=_glInvalidateSubFramebuffer;var _glIsBuffer=buffer=>{var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsBuffer=_glIsBuffer;var _glIsEnabled=x0=>GLctx.isEnabled(x0);var _emscripten_glIsEnabled=_glIsEnabled;var _glIsFramebuffer=framebuffer=>{var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsFramebuffer=_glIsFramebuffer;var _glIsProgram=program=>{program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsProgram=_glIsProgram;var _glIsQuery=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQuery=_glIsQuery;var _glIsQueryEXT=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsQueryEXT=_glIsQueryEXT;var _glIsRenderbuffer=renderbuffer=>{var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsRenderbuffer=_glIsRenderbuffer;var _glIsSampler=id=>{var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsSampler=_glIsSampler;var _glIsShader=shader=>{var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsShader=_glIsShader;var _glIsSync=sync=>GLctx.isSync(GL.syncs[sync]);var _emscripten_glIsSync=_glIsSync;var _glIsTexture=id=>{var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTexture=_glIsTexture;var _glIsTransformFeedback=id=>GLctx.isTransformFeedback(GL.transformFeedbacks[id]);var _emscripten_glIsTransformFeedback=_glIsTransformFeedback;var _glIsVertexArray=array=>{var vao=GL.vaos[array];if(!vao)return 0;return GLctx.isVertexArray(vao)};var _emscripten_glIsVertexArray=_glIsVertexArray;var _glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArrayOES;var _glLineWidth=x0=>GLctx.lineWidth(x0);var _emscripten_glLineWidth=_glLineWidth;var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _emscripten_glLinkProgram=_glLinkProgram;var _glPauseTransformFeedback=()=>GLctx.pauseTransformFeedback();var _emscripten_glPauseTransformFeedback=_glPauseTransformFeedback;var _glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPixelStorei=_glPixelStorei;var _glPolygonOffset=(x0,x1)=>GLctx.polygonOffset(x0,x1);var _emscripten_glPolygonOffset=_glPolygonOffset;var _glProgramBinary=(program,binaryFormat,binary,length)=>{GL.recordError(1280)};var _emscripten_glProgramBinary=_glProgramBinary;var _glProgramParameteri=(program,pname,value)=>{GL.recordError(1280)};var _emscripten_glProgramParameteri=_glProgramParameteri;var _glQueryCounterEXT=(id,target)=>{GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glQueryCounterEXT=_glQueryCounterEXT;var _glReadBuffer=x0=>GLctx.readBuffer(x0);var _emscripten_glReadBuffer=_glReadBuffer;var computeUnpackAlignedImageSize=(width,height,sizePerPixel,alignment)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _glReadPixels=(x,y,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target)}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReadPixels=_glReadPixels;var _glReleaseShaderCompiler=()=>{};var _emscripten_glReleaseShaderCompiler=_glReleaseShaderCompiler;var _glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _emscripten_glRenderbufferStorage=_glRenderbufferStorage;var _glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _emscripten_glRenderbufferStorageMultisample=_glRenderbufferStorageMultisample;var _glResumeTransformFeedback=()=>GLctx.resumeTransformFeedback();var _emscripten_glResumeTransformFeedback=_glResumeTransformFeedback;var _glSampleCoverage=(value,invert)=>{GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSampleCoverage=_glSampleCoverage;var _glSamplerParameterf=(sampler,pname,param)=>{GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterf=_glSamplerParameterf;var _glSamplerParameterfv=(sampler,pname,params)=>{var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=_glSamplerParameterfv;var _glSamplerParameteri=(sampler,pname,param)=>{GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=_glSamplerParameteri;var _glSamplerParameteriv=(sampler,pname,params)=>{var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=_glSamplerParameteriv;var _glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _emscripten_glScissor=_glScissor;var _glShaderBinary=(count,shaders,binaryformat,binary,length)=>{GL.recordError(1280)};var _emscripten_glShaderBinary=_glShaderBinary;var _glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _emscripten_glShaderSource=_glShaderSource;var _glStencilFunc=(x0,x1,x2)=>GLctx.stencilFunc(x0,x1,x2);var _emscripten_glStencilFunc=_glStencilFunc;var _glStencilFuncSeparate=(x0,x1,x2,x3)=>GLctx.stencilFuncSeparate(x0,x1,x2,x3);var _emscripten_glStencilFuncSeparate=_glStencilFuncSeparate;var _glStencilMask=x0=>GLctx.stencilMask(x0);var _emscripten_glStencilMask=_glStencilMask;var _glStencilMaskSeparate=(x0,x1)=>GLctx.stencilMaskSeparate(x0,x1);var _emscripten_glStencilMaskSeparate=_glStencilMaskSeparate;var _glStencilOp=(x0,x1,x2)=>GLctx.stencilOp(x0,x1,x2);var _emscripten_glStencilOp=_glStencilOp;var _glStencilOpSeparate=(x0,x1,x2,x3)=>GLctx.stencilOpSeparate(x0,x1,x2,x3);var _emscripten_glStencilOpSeparate=_glStencilOpSeparate;var _glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)};var _emscripten_glTexImage2D=_glTexImage2D;var _glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexImage3D=_glTexImage3D;var _glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _emscripten_glTexParameterf=_glTexParameterf;var _glTexParameterfv=(target,pname,params)=>{var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameterfv=_glTexParameterfv;var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _emscripten_glTexParameteri=_glTexParameteri;var _glTexParameteriv=(target,pname,params)=>{var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexParameteriv=_glTexParameteriv;var _glTexStorage2D=(x0,x1,x2,x3,x4)=>GLctx.texStorage2D(x0,x1,x2,x3,x4);var _emscripten_glTexStorage2D=_glTexStorage2D;var _glTexStorage3D=(x0,x1,x2,x3,x4,x5)=>GLctx.texStorage3D(x0,x1,x2,x3,x4,x5);var _emscripten_glTexStorage3D=_glTexStorage3D;var _glTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage2D=_glTexSubImage2D;var _glTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTexSubImage3D=_glTexSubImage3D;var _glTransformFeedbackVaryings=(program,count,varyings,bufferMode)=>{program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTransformFeedbackVaryings=_glTransformFeedbackVaryings;var _glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1f=_glUniform1f;var miniTempWebGLFloatBuffers=[];var _glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1fv=_glUniform1fv;var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1i=_glUniform1i;var miniTempWebGLIntBuffers=[];var _glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count-1];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1iv=_glUniform1iv;var _glUniform1ui=(location,v0)=>{GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1ui=_glUniform1ui;var _glUniform1uiv=(location,count,value)=>{count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform1uiv=_glUniform1uiv;var _glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2f=_glUniform2f;var _glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2fv=_glUniform2fv;var _glUniform2i=(location,v0,v1)=>{GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2i=_glUniform2i;var _glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){var view=miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2iv=_glUniform2iv;var _glUniform2ui=(location,v0,v1)=>{GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2ui=_glUniform2ui;var _glUniform2uiv=(location,count,value)=>{count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform2uiv=_glUniform2uiv;var _glUniform3f=(location,v0,v1,v2)=>{GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3f=_glUniform3f;var _glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3fv=_glUniform3fv;var _glUniform3i=(location,v0,v1,v2)=>{GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3i=_glUniform3i;var _glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){var view=miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3iv=_glUniform3iv;var _glUniform3ui=(location,v0,v1,v2)=>{GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3ui=_glUniform3ui;var _glUniform3uiv=(location,count,value)=>{count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform3uiv=_glUniform3uiv;var _glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4f=_glUniform4f;var _glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4fv=_glUniform4fv;var _glUniform4i=(location,v0,v1,v2,v3)=>{GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4i=_glUniform4i;var _glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4iv=_glUniform4iv;var _glUniform4ui=(location,v0,v1,v2,v3)=>{GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4ui=_glUniform4ui;var _glUniform4uiv=(location,count,value)=>{count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniform4uiv=_glUniform4uiv;var _glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformBlockBinding=_glUniformBlockBinding;var _glUniformMatrix2fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2fv=_glUniformMatrix2fv;var _glUniformMatrix2x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x3fv=_glUniformMatrix2x3fv;var _glUniformMatrix2x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix2x4fv=_glUniformMatrix2x4fv;var _glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3fv=_glUniformMatrix3fv;var _glUniformMatrix3x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x2fv=_glUniformMatrix3x2fv;var _glUniformMatrix3x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix3x4fv=_glUniformMatrix3x4fv;var _glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value=value>>2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4fv=_glUniformMatrix4fv;var _glUniformMatrix4x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x2fv=_glUniformMatrix4x2fv;var _glUniformMatrix4x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4x3fv=_glUniformMatrix4x3fv;var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _emscripten_glUseProgram=_glUseProgram;var _glValidateProgram=program=>{GLctx.validateProgram(GL.programs[program])};var _emscripten_glValidateProgram=_glValidateProgram;var _glVertexAttrib1f=(x0,x1)=>GLctx.vertexAttrib1f(x0,x1);var _emscripten_glVertexAttrib1f=_glVertexAttrib1f;var _glVertexAttrib1fv=(index,v)=>{GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib1fv=_glVertexAttrib1fv;var _glVertexAttrib2f=(x0,x1,x2)=>GLctx.vertexAttrib2f(x0,x1,x2);var _emscripten_glVertexAttrib2f=_glVertexAttrib2f;var _glVertexAttrib2fv=(index,v)=>{GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib2fv=_glVertexAttrib2fv;var _glVertexAttrib3f=(x0,x1,x2,x3)=>GLctx.vertexAttrib3f(x0,x1,x2,x3);var _emscripten_glVertexAttrib3f=_glVertexAttrib3f;var _glVertexAttrib3fv=(index,v)=>{GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib3fv=_glVertexAttrib3fv;var _glVertexAttrib4f=(x0,x1,x2,x3,x4)=>GLctx.vertexAttrib4f(x0,x1,x2,x3,x4);var _emscripten_glVertexAttrib4f=_glVertexAttrib4f;var _glVertexAttrib4fv=(index,v)=>{GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttrib4fv=_glVertexAttrib4fv;var _glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _emscripten_glVertexAttribDivisor=_glVertexAttribDivisor;var _glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisorANGLE;var _glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisorARB;var _glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisorEXT;var _glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisorNV;var _glVertexAttribI4i=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4i(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4i=_glVertexAttribI4i;var _glVertexAttribI4iv=(index,v)=>{GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4iv=_glVertexAttribI4iv;var _glVertexAttribI4ui=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4ui=_glVertexAttribI4ui;var _glVertexAttribI4uiv=(index,v)=>{GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribI4uiv=_glVertexAttribI4uiv;var _glVertexAttribIPointer=(index,size,type,stride,ptr)=>{GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexAttribIPointer=_glVertexAttribIPointer;var _glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _emscripten_glVertexAttribPointer=_glVertexAttribPointer;var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var _emscripten_glViewport=_glViewport;var _glWaitSync=(sync,flags,timeout_low,timeout_high)=>{var timeout=convertI32PairToI53(timeout_low,timeout_high);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glWaitSync=_glWaitSync;var _emscripten_has_asyncify=()=>0;var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var doRequestFullscreen=(target,strategy)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(JSEvents_requestFullscreen,1,[target,strategy]);return 1}return-2}return JSEvents_requestFullscreen(target,strategy)};var _emscripten_request_fullscreen_strategy=(target,deferUntilInEventHandler,fullscreenStrategy)=>{var strategy={scaleMode:HEAP32[fullscreenStrategy>>2],canvasResolutionScaleMode:HEAP32[fullscreenStrategy+4>>2],filteringMode:HEAP32[fullscreenStrategy+8>>2],deferUntilInEventHandler:deferUntilInEventHandler,canvasResizedCallback:HEAP32[fullscreenStrategy+12>>2],canvasResizedCallbackUserData:HEAP32[fullscreenStrategy+16>>2]};return doRequestFullscreen(target,strategy)};var _emscripten_request_pointerlock=(target,deferUntilInEventHandler)=>{target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}return-2}return requestPointerLock(target)};var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var _emscripten_sample_gamepad_data=()=>{try{if(navigator.getGamepads)return(JSEvents.lastGamepadState=navigator.getGamepads())?0:-1}catch(e){navigator.getGamepads=null}return-1};var registerBeforeUnloadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString)=>{var beforeUnloadEventHandlerFunc=(e=event)=>{var confirmationMessage=getWasmTableEntry(callbackfunc)(eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=UTF8ToString(confirmationMessage)}if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage}};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_beforeunload_callback_on_thread=(userData,callbackfunc,targetThread)=>{if(typeof onbeforeunload=="undefined")return-1;if(targetThread!==1)return-5;return registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload")};var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(e=event)=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_blur_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);var _emscripten_set_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0};var _emscripten_set_focus_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);var fillFullscreenChangeEventData=eventStruct=>{var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement?.id||"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}};var registerFullscreenChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=(e=event)=>{var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_fullscreenchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread)};var registerGamepadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=(e=event)=>{var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_gamepadconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)};var _emscripten_set_gamepaddisconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)};var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=e=>{var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;HEAP32[idx+7]=e.repeat;HEAP32[idx+8]=e.charCode;HEAP32[idx+9]=e.keyCode;HEAP32[idx+10]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_keydown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);var _emscripten_set_keypress_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);var _emscripten_set_keyup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);var _emscripten_set_main_loop=(func,fps,simulateInfiniteLoop)=>{var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)};var fillMouseEventData=(eventStruct,e,target)=>{HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP32[idx+6]=e.ctrlKey;HEAP32[idx+7]=e.shiftKey;HEAP32[idx+8]=e.altKey;HEAP32[idx+9]=e.metaKey;HEAP16[idx*2+20]=e.button;HEAP16[idx*2+21]=e.buttons;HEAP32[idx+11]=e["movementX"];HEAP32[idx+12]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13]=e.clientX-(rect.left|0);HEAP32[idx+14]=e.clientY-(rect.top|0)};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=(e=event)=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_mousedown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);var _emscripten_set_mouseenter_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);var _emscripten_set_mouseleave_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);var _emscripten_set_mousemove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);var _emscripten_set_mouseup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);var fillPointerlockChangeEventData=eventStruct=>{var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement?.id||"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)};var registerPointerlockChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);var pointerlockChangeEventHandlerFunc=(e=event)=>{var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document||!document.body||!document.body.requestPointerLock&&!document.body.mozRequestPointerLock&&!document.body.webkitRequestPointerLock&&!document.body.msRequestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mozpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"webkitpointerlockchange",targetThread);registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"mspointerlockchange",targetThread);return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)};var registerUiEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=(e=event)=>{if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=0;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset|0;HEAP32[uiEvent+32>>2]=pageYOffset|0;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_resize_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=e=>{var t,touches={},et=e.touches;for(var i=0;i>3]=e.timeStamp;var idx=touchEvent>>2;HEAP32[idx+3]=e.ctrlKey;HEAP32[idx+4]=e.shiftKey;HEAP32[idx+5]=e.altKey;HEAP32[idx+6]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-(targetRect.left|0);HEAP32[idx+10]=t.clientY-(targetRect.top|0);idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_touchcancel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);var _emscripten_set_touchend_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);var _emscripten_set_touchmove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);var _emscripten_set_touchstart_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);var fillVisibilityChangeEventData=eventStruct=>{var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState};var registerVisibilityChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);var visibilityChangeEventHandlerFunc=(e=event)=>{var visibilityChangeEvent=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(visibilityChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_visibilitychange_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(!specialHTMLTargets[1]){return-4}return registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread)};var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=(e=event)=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_wheel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}};var _emscripten_set_window_title=title=>document.title=UTF8ToString(title);var _emscripten_sleep=()=>{throw"Please compile your program with async support in order to use asynchronous operations like emscripten_sleep"};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;HEAPU32[__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();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var arraySum=(array,index)=>{var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum};var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];var addDays=(date,days)=>{var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var _strftime=(s,maxsize,format,tm)=>{var tm_zone=HEAPU32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":getWeekBasedYear,"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":date=>date.tm_zone,"%%":()=>"%"};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1};var _strftime_l=(s,maxsize,format,tm,loc)=>_strftime(s,maxsize,format,tm);var listenOnce=(object,event,func)=>{object.addEventListener(event,func,{"once":true})};var autoResumeAudioContext=(ctx,elements)=>{if(!elements){elements=[document,document.getElementById("canvas")]}["keydown","mousedown","touchstart"].forEach(event=>{elements.forEach(element=>{if(element){listenOnce(element,event,()=>{if(ctx.state==="suspended")ctx.resume()})}})})};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return f(ptr,...args)};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=Browser.requestFullscreen;Module["requestAnimationFrame"]=Browser.requestAnimationFrame;Module["setCanvasSize"]=Browser.setCanvasSize;Module["pauseMainLoop"]=Browser.mainLoop.pause;Module["resumeMainLoop"]=Browser.mainLoop.resume;Module["getUserMedia"]=Browser.getUserMedia;Module["createContext"]=Browser.createContext;var preloadedImages={};var preloadedAudios={};var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i+1)}var wasmImports={p:___cxa_begin_catch,v:___cxa_end_catch,a:___cxa_find_matching_catch_2,h:___cxa_find_matching_catch_3,I:___cxa_rethrow,o:___cxa_throw,ab:___cxa_uncaught_exceptions,b:___resumeException,ha:___syscall_fcntl64,fb:___syscall_ioctl,gb:___syscall_openat,ad:__emscripten_fs_load_embedded_files,hb:__emscripten_get_now_is_monotonic,D:_abort,Ua:_eglBindAPI,Xa:_eglChooseConfig,La:_eglCreateContext,Na:_eglCreateWindowSurface,Ma:_eglDestroyContext,Oa:_eglDestroySurface,Za:_eglGetConfigAttrib,ca:_eglGetDisplay,Ka:_eglGetError,Va:_eglInitialize,Pa:_eglMakeCurrent,Ja:_eglQueryString,Qa:_eglSwapBuffers,Ra:_eglSwapInterval,Wa:_eglTerminate,Ta:_eglWaitGL,Sa:_eglWaitNative,mc:_emscripten_asm_const_int,q:_emscripten_asm_const_int_sync_on_main_thread,na:_emscripten_asm_const_ptr_sync_on_main_thread,oa:_emscripten_cancel_main_loop,ia:_emscripten_date_now,Ea:_emscripten_exit_fullscreen,Ha:_emscripten_exit_pointerlock,Rc:_emscripten_force_exit,y:_emscripten_get_device_pixel_ratio,u:_emscripten_get_element_css_size,la:_emscripten_get_gamepad_status,H:_emscripten_get_now,Tb:_emscripten_get_num_gamepads,Ia:_emscripten_get_screen_size,$f:_emscripten_glActiveTexture,_f:_emscripten_glAttachShader,$c:_emscripten_glBeginQuery,Aa:_emscripten_glBeginQueryEXT,Hc:_emscripten_glBeginTransformFeedback,Zf:_emscripten_glBindAttribLocation,Yf:_emscripten_glBindBuffer,Ec:_emscripten_glBindBufferBase,Fc:_emscripten_glBindBufferRange,Xf:_emscripten_glBindFramebuffer,Wf:_emscripten_glBindRenderbuffer,Kb:_emscripten_glBindSampler,Vf:_emscripten_glBindTexture,Cb:_emscripten_glBindTransformFeedback,Mc:_emscripten_glBindVertexArray,sa:_emscripten_glBindVertexArrayOES,Uf:_emscripten_glBlendColor,Tf:_emscripten_glBlendEquation,Sf:_emscripten_glBlendEquationSeparate,Rf:_emscripten_glBlendFunc,Qf:_emscripten_glBlendFuncSeparate,Pc:_emscripten_glBlitFramebuffer,Pf:_emscripten_glBufferData,Of:_emscripten_glBufferSubData,Nf:_emscripten_glCheckFramebufferStatus,Mf:_emscripten_glClear,gc:_emscripten_glClearBufferfi,hc:_emscripten_glClearBufferfv,jc:_emscripten_glClearBufferiv,ic:_emscripten_glClearBufferuiv,Lf:_emscripten_glClearColor,Kf:_emscripten_glClearDepthf,Jf:_emscripten_glClearStencil,Ub:_emscripten_glClientWaitSync,If:_emscripten_glColorMask,Hf:_emscripten_glCompileShader,Gf:_emscripten_glCompressedTexImage2D,fd:_emscripten_glCompressedTexImage3D,Ff:_emscripten_glCompressedTexSubImage2D,ed:_emscripten_glCompressedTexSubImage3D,ec:_emscripten_glCopyBufferSubData,Ef:_emscripten_glCopyTexImage2D,Df:_emscripten_glCopyTexSubImage2D,gd:_emscripten_glCopyTexSubImage3D,Cf:_emscripten_glCreateProgram,Bf:_emscripten_glCreateShader,Af:_emscripten_glCullFace,zf:_emscripten_glDeleteBuffers,yf:_emscripten_glDeleteFramebuffers,xf:_emscripten_glDeleteProgram,cd:_emscripten_glDeleteQueries,Ca:_emscripten_glDeleteQueriesEXT,wf:_emscripten_glDeleteRenderbuffers,Mb:_emscripten_glDeleteSamplers,vf:_emscripten_glDeleteShader,Vb:_emscripten_glDeleteSync,uf:_emscripten_glDeleteTextures,Bb:_emscripten_glDeleteTransformFeedbacks,Lc:_emscripten_glDeleteVertexArrays,ra:_emscripten_glDeleteVertexArraysOES,tf:_emscripten_glDepthFunc,sf:_emscripten_glDepthMask,rf:_emscripten_glDepthRangef,qf:_emscripten_glDetachShader,pf:_emscripten_glDisable,of:_emscripten_glDisableVertexAttribArray,nf:_emscripten_glDrawArrays,Zb:_emscripten_glDrawArraysInstanced,cg:_emscripten_glDrawArraysInstancedANGLE,lb:_emscripten_glDrawArraysInstancedARB,od:_emscripten_glDrawArraysInstancedEXT,mb:_emscripten_glDrawArraysInstancedNV,Xc:_emscripten_glDrawBuffers,md:_emscripten_glDrawBuffersEXT,dg:_emscripten_glDrawBuffersWEBGL,mf:_emscripten_glDrawElements,Yb:_emscripten_glDrawElementsInstanced,bg:_emscripten_glDrawElementsInstancedANGLE,jb:_emscripten_glDrawElementsInstancedARB,kb:_emscripten_glDrawElementsInstancedEXT,nd:_emscripten_glDrawElementsInstancedNV,jd:_emscripten_glDrawRangeElements,lf:_emscripten_glEnable,kf:_emscripten_glEnableVertexAttribArray,_c:_emscripten_glEndQuery,za:_emscripten_glEndQueryEXT,Gc:_emscripten_glEndTransformFeedback,Xb:_emscripten_glFenceSync,jf:_emscripten_glFinish,hf:_emscripten_glFlush,gf:_emscripten_glFramebufferRenderbuffer,ff:_emscripten_glFramebufferTexture2D,Nc:_emscripten_glFramebufferTextureLayer,ef:_emscripten_glFrontFace,df:_emscripten_glGenBuffers,bf:_emscripten_glGenFramebuffers,dd:_emscripten_glGenQueries,Da:_emscripten_glGenQueriesEXT,af:_emscripten_glGenRenderbuffers,Nb:_emscripten_glGenSamplers,$e:_emscripten_glGenTextures,Ab:_emscripten_glGenTransformFeedbacks,Kc:_emscripten_glGenVertexArrays,qa:_emscripten_glGenVertexArraysOES,cf:_emscripten_glGenerateMipmap,_e:_emscripten_glGetActiveAttrib,Ze:_emscripten_glGetActiveUniform,$b:_emscripten_glGetActiveUniformBlockName,ac:_emscripten_glGetActiveUniformBlockiv,cc:_emscripten_glGetActiveUniformsiv,Ye:_emscripten_glGetAttachedShaders,Xe:_emscripten_glGetAttribLocation,We:_emscripten_glGetBooleanv,Ob:_emscripten_glGetBufferParameteri64v,Ve:_emscripten_glGetBufferParameteriv,Ue:_emscripten_glGetError,Te:_emscripten_glGetFloatv,tc:_emscripten_glGetFragDataLocation,Se:_emscripten_glGetFramebufferAttachmentParameteriv,Pb:_emscripten_glGetInteger64i_v,Rb:_emscripten_glGetInteger64v,Ic:_emscripten_glGetIntegeri_v,Re:_emscripten_glGetIntegerv,pb:_emscripten_glGetInternalformativ,wb:_emscripten_glGetProgramBinary,Pe:_emscripten_glGetProgramInfoLog,Qe:_emscripten_glGetProgramiv,ua:_emscripten_glGetQueryObjecti64vEXT,wa:_emscripten_glGetQueryObjectivEXT,ta:_emscripten_glGetQueryObjectui64vEXT,Yc:_emscripten_glGetQueryObjectuiv,va:_emscripten_glGetQueryObjectuivEXT,Zc:_emscripten_glGetQueryiv,xa:_emscripten_glGetQueryivEXT,Oe:_emscripten_glGetRenderbufferParameteriv,Eb:_emscripten_glGetSamplerParameterfv,Fb:_emscripten_glGetSamplerParameteriv,Me:_emscripten_glGetShaderInfoLog,Le:_emscripten_glGetShaderPrecisionFormat,Ke:_emscripten_glGetShaderSource,Ne:_emscripten_glGetShaderiv,Je:_emscripten_glGetString,fc:_emscripten_glGetStringi,Qb:_emscripten_glGetSynciv,Ie:_emscripten_glGetTexParameterfv,He:_emscripten_glGetTexParameteriv,Cc:_emscripten_glGetTransformFeedbackVarying,bc:_emscripten_glGetUniformBlockIndex,dc:_emscripten_glGetUniformIndices,De:_emscripten_glGetUniformLocation,Ge:_emscripten_glGetUniformfv,Fe:_emscripten_glGetUniformiv,uc:_emscripten_glGetUniformuiv,Ac:_emscripten_glGetVertexAttribIiv,zc:_emscripten_glGetVertexAttribIuiv,Ae:_emscripten_glGetVertexAttribPointerv,Ce:_emscripten_glGetVertexAttribfv,Be:_emscripten_glGetVertexAttribiv,ze:_emscripten_glHint,tb:_emscripten_glInvalidateFramebuffer,sb:_emscripten_glInvalidateSubFramebuffer,ye:_emscripten_glIsBuffer,xe:_emscripten_glIsEnabled,we:_emscripten_glIsFramebuffer,ve:_emscripten_glIsProgram,bd:_emscripten_glIsQuery,Ba:_emscripten_glIsQueryEXT,ue:_emscripten_glIsRenderbuffer,Lb:_emscripten_glIsSampler,te:_emscripten_glIsShader,Wb:_emscripten_glIsSync,se:_emscripten_glIsTexture,zb:_emscripten_glIsTransformFeedback,Jc:_emscripten_glIsVertexArray,pa:_emscripten_glIsVertexArrayOES,re:_emscripten_glLineWidth,qe:_emscripten_glLinkProgram,yb:_emscripten_glPauseTransformFeedback,pe:_emscripten_glPixelStorei,oe:_emscripten_glPolygonOffset,vb:_emscripten_glProgramBinary,ub:_emscripten_glProgramParameteri,ya:_emscripten_glQueryCounterEXT,kd:_emscripten_glReadBuffer,ne:_emscripten_glReadPixels,me:_emscripten_glReleaseShaderCompiler,le:_emscripten_glRenderbufferStorage,Oc:_emscripten_glRenderbufferStorageMultisample,xb:_emscripten_glResumeTransformFeedback,ke:_emscripten_glSampleCoverage,Hb:_emscripten_glSamplerParameterf,Gb:_emscripten_glSamplerParameterfv,Jb:_emscripten_glSamplerParameteri,Ib:_emscripten_glSamplerParameteriv,je:_emscripten_glScissor,ie:_emscripten_glShaderBinary,he:_emscripten_glShaderSource,ge:_emscripten_glStencilFunc,fe:_emscripten_glStencilFuncSeparate,ee:_emscripten_glStencilMask,de:_emscripten_glStencilMaskSeparate,ce:_emscripten_glStencilOp,be:_emscripten_glStencilOpSeparate,ae:_emscripten_glTexImage2D,id:_emscripten_glTexImage3D,$d:_emscripten_glTexParameterf,_d:_emscripten_glTexParameterfv,Zd:_emscripten_glTexParameteri,Yd:_emscripten_glTexParameteriv,rb:_emscripten_glTexStorage2D,qb:_emscripten_glTexStorage3D,Xd:_emscripten_glTexSubImage2D,hd:_emscripten_glTexSubImage3D,Dc:_emscripten_glTransformFeedbackVaryings,Wd:_emscripten_glUniform1f,Vd:_emscripten_glUniform1fv,Ud:_emscripten_glUniform1i,Td:_emscripten_glUniform1iv,sc:_emscripten_glUniform1ui,oc:_emscripten_glUniform1uiv,Sd:_emscripten_glUniform2f,Qd:_emscripten_glUniform2fv,Pd:_emscripten_glUniform2i,Od:_emscripten_glUniform2iv,rc:_emscripten_glUniform2ui,nc:_emscripten_glUniform2uiv,Nd:_emscripten_glUniform3f,Md:_emscripten_glUniform3fv,Ld:_emscripten_glUniform3i,Kd:_emscripten_glUniform3iv,qc:_emscripten_glUniform3ui,lc:_emscripten_glUniform3uiv,Jd:_emscripten_glUniform4f,Id:_emscripten_glUniform4fv,Hd:_emscripten_glUniform4i,Fd:_emscripten_glUniform4iv,pc:_emscripten_glUniform4ui,kc:_emscripten_glUniform4uiv,_b:_emscripten_glUniformBlockBinding,Ed:_emscripten_glUniformMatrix2fv,Wc:_emscripten_glUniformMatrix2x3fv,Uc:_emscripten_glUniformMatrix2x4fv,Dd:_emscripten_glUniformMatrix3fv,Vc:_emscripten_glUniformMatrix3x2fv,Sc:_emscripten_glUniformMatrix3x4fv,Cd:_emscripten_glUniformMatrix4fv,Tc:_emscripten_glUniformMatrix4x2fv,Qc:_emscripten_glUniformMatrix4x3fv,Bd:_emscripten_glUseProgram,Ad:_emscripten_glValidateProgram,zd:_emscripten_glVertexAttrib1f,yd:_emscripten_glVertexAttrib1fv,xd:_emscripten_glVertexAttrib2f,wd:_emscripten_glVertexAttrib2fv,vd:_emscripten_glVertexAttrib3f,ud:_emscripten_glVertexAttrib3fv,td:_emscripten_glVertexAttrib4f,sd:_emscripten_glVertexAttrib4fv,Db:_emscripten_glVertexAttribDivisor,ag:_emscripten_glVertexAttribDivisorANGLE,nb:_emscripten_glVertexAttribDivisorARB,pd:_emscripten_glVertexAttribDivisorEXT,ob:_emscripten_glVertexAttribDivisorNV,yc:_emscripten_glVertexAttribI4i,wc:_emscripten_glVertexAttribI4iv,xc:_emscripten_glVertexAttribI4ui,vc:_emscripten_glVertexAttribI4uiv,Bc:_emscripten_glVertexAttribIPointer,rd:_emscripten_glVertexAttribPointer,qd:_emscripten_glViewport,Sb:_emscripten_glWaitSync,G:_emscripten_has_asyncify,ib:_emscripten_memcpy_js,Fa:_emscripten_request_fullscreen_strategy,ba:_emscripten_request_pointerlock,bb:_emscripten_resize_heap,ma:_emscripten_sample_gamepad_data,J:_emscripten_set_beforeunload_callback_on_thread,V:_emscripten_set_blur_callback_on_thread,x:_emscripten_set_canvas_element_size,C:_emscripten_set_element_css_size,W:_emscripten_set_focus_callback_on_thread,M:_emscripten_set_fullscreenchange_callback_on_thread,ka:_emscripten_set_gamepadconnected_callback_on_thread,ja:_emscripten_set_gamepaddisconnected_callback_on_thread,P:_emscripten_set_keydown_callback_on_thread,N:_emscripten_set_keypress_callback_on_thread,O:_emscripten_set_keyup_callback_on_thread,Ee:_emscripten_set_main_loop,$:_emscripten_set_mousedown_callback_on_thread,Z:_emscripten_set_mouseenter_callback_on_thread,Y:_emscripten_set_mouseleave_callback_on_thread,aa:_emscripten_set_mousemove_callback_on_thread,_:_emscripten_set_mouseup_callback_on_thread,Q:_emscripten_set_pointerlockchange_callback_on_thread,L:_emscripten_set_resize_callback_on_thread,R:_emscripten_set_touchcancel_callback_on_thread,T:_emscripten_set_touchend_callback_on_thread,S:_emscripten_set_touchmove_callback_on_thread,U:_emscripten_set_touchstart_callback_on_thread,K:_emscripten_set_visibilitychange_callback_on_thread,X:_emscripten_set_wheel_callback_on_thread,Ga:_emscripten_set_window_title,F:_emscripten_sleep,cb:_environ_get,db:_environ_sizes_get,fa:_fd_close,eb:_fd_read,_a:_fd_seek,ga:_fd_write,Rd:invoke_di,ld:invoke_dii,E:invoke_diii,da:invoke_fiii,g:invoke_i,c:invoke_ii,e:invoke_iii,i:invoke_iiii,l:invoke_iiiii,n:invoke_iiiiii,s:invoke_iiiiiii,ea:invoke_iiiiiiii,A:invoke_iiiiiiiiiiii,Ya:invoke_jiiii,j:invoke_v,k:invoke_vi,Gd:invoke_vid,d:invoke_vii,f:invoke_viii,m:invoke_viiii,t:invoke_viiiii,B:invoke_viiiiii,r:invoke_viiiiiii,w:invoke_viiiiiiiiii,z:invoke_viiiiiiiiiiiiiii,$a:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["fg"])();var ___cxa_free_exception=a0=>(___cxa_free_exception=wasmExports["__cxa_free_exception"])(a0);var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["hg"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports["ig"])(a0);var _setThrew=(a0,a1)=>(_setThrew=wasmExports["jg"])(a0,a1);var setTempRet0=a0=>(setTempRet0=wasmExports["kg"])(a0);var stackSave=()=>(stackSave=wasmExports["lg"])();var stackRestore=a0=>(stackRestore=wasmExports["mg"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["ng"])(a0);var ___cxa_decrement_exception_refcount=a0=>(___cxa_decrement_exception_refcount=wasmExports["og"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["pg"])(a0);var ___cxa_can_catch=(a0,a1,a2)=>(___cxa_can_catch=wasmExports["qg"])(a0,a1,a2);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["rg"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["sg"])(a0,a1,a2,a3,a4);var dynCall_ji=Module["dynCall_ji"]=(a0,a1)=>(dynCall_ji=Module["dynCall_ji"]=wasmExports["tg"])(a0,a1);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["ug"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiiii=Module["dynCall_jiiii"]=(a0,a1,a2,a3,a4)=>(dynCall_jiiii=Module["dynCall_jiiii"]=wasmExports["vg"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["wg"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["xg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["yg"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var ___emscripten_embedded_file_data=Module["___emscripten_embedded_file_data"]=406720;function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_di(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vid(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_dii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return dynCall_jiiii(index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_unlink"]=FS.unlink;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args=[]){var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;args.forEach(arg=>{HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4});HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/index.wasm b/index.wasm index d0c2af5a40530a68b3a40d38ab4ab0da09342516..a0e86b0be06e6df78a75292a8da3ffee07fc4853 100755 GIT binary patch delta 137092 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­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

2q~=v~d*I1gfW4*Dll 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�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 delta 137056 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 z zvNX-*KBXpNg1QezU|JL4Dlz(6*3_yORGw$A7bN^Zz1ojp&Bh1S%b}xbI{8~rKPXdR z1+_{r>dA4i#o`7w@Kw1m+lx(b5hu(NRSeKF!tPf`5;SsEi zwJ!TwPFN4I%!Ot+65-=t8SzmFR~uomL~%9tzjr$`X>rtr;LF01#b3S zKOwe_VHt5J3bhW$og=mr4{Jo?GahqvGILmKu8uf;gR* zF`}YwV&^w4C?JO&srqFEL{4Wd~wNbta<7aXRDFBK-EjdoZDC?FDMXxz_L&s7yN`ec^%0S>>ZzcEk{jE^~F`pqcK_W8Bjfb07n#z?(`Ri*pUr6+~z-0}O1~ zGu+^F^`&c={*elL$A8Ga2%4?i@+bgFQl8MbDaoQ_ZCizgpI!OeDps_g*+p@IA>X$jbMokO)?0k0_2vs#>gFPkXl-ox5o zW`n|-M{Za$Gv-FEb6a6GnG3vn)t+Siqdm#M@3P$`U~3l*r?8TXY`kB=%l$96@T6fZ z3~r(LV+v~;Fem;P9o8bz@m}_zw`>(z5d%$s8h}AAHt1oo`(74bx1Tl%$7k+k2iZDt z;68SK92q4$5V~BLiPwp=``KpLEB&9`&!#d2#MlQR665*ogDim(DjsBU3dzVj9$~lh z29~|hfk7lnc|i2dXQlOPO37zKa}38muVC-|C7-2@I#5cxDx_MZY7RQ$fEYu1J%Sj9 z7^o*SN8jAbV1XzyjYQHR!^lbuf`$1qgprF%VH7?fraa1C4C450>xRGURQ5XAInPXE zO`BG%NyeC?!5G%#FQ6l15UBLGn$Bjrp!+B#!21-jR~eJ8ZWoJ7o@P;5rlpH%4w}?t{bjlf^upmTg}{eY=_aS|6AwMj z;=64(xew}yLMiBasN^X@G28Aw zB@ZWiF)^|0Innczm$0sN7W&E(mT*q@GdSG>aYzkB)Kbt#M95SOgy$e&#sL9X&ZBISG-PIC_jnxW$fdi zCI=`(gXP!;!zw?alnsM5bxSF02A_!!OIcMYh=17%wu`k7S`Se2Fl_SkNLK_^_HqqI zP@<~AHy?;4FR%_>pUl^6h7XdB!>QYw_M3{l3P5h!2-_Pw!b?TeDwdgAIu+#*UXv$; zU|tAQwIc(|S^rU7vWku2*xp}S#S$BX>(os))L|3^1=PV+EG1$(Ql{rWwHiuIC_S64 zhVi&e^k2q^9smsm?yBJO>O zW%MeMnHoev&uTF5@O`CG)!^DqOykkr(jV8@M4&__ic7UvsE|f^-%G57I`xq<)}~t- zrU8Bc@B&1VC<7jyNw2G5(h7h;LNGzZXJxE8VX3!by0qDYx|R*S6l09d7P`C~NF7-C+Fc$e89m&j;F*RAfFA(BjLJDk zHzvS4S1NkEDu%f%pX#kmp zwGC&y2H@~cTMbS(1;a5KCL_iIMHC`j9$6{fk)fY*(Bwl6Nz{={{W>EoSwhIHaA+wn zXDxCIWlasgWPk&+ot3I7-9sQWAf-S;HsFp}NK?mUg=n7(&4fA!Wjbo8{&y5z>D&B9GXS2IELY9NuTn>3Et%q62gkR8lFn9&3WVIN!fhFJk*Vz*I2^man zFbhH}8;dJ1YMeI$tE*r?t?7MgqW<_NW{79&e~3LBu<)nZ=Wsr6P>cFKHtVK}aAOa=}e4v7j$~_kv zy=Vo~VaRb19pAH*=?9E3bdz~ew0WEcZU4kf-}N7HYpx)6O}bu%?#<$xms#^nV>AQg zFHf}w90ou%2s$eKM3;?h9LMvyjjYq~If%nAFbiPjGZcF?4@h4Zw8i5tA?W(3eS>Hp zDYhD;r`-dZHV9G!uMT-py~_m&4q9{vwEv8~Kw%Z`hrp_ld-HDJcEJo3eR zo7sxMokS%|P1C?$G3OQ5o20XMUSZd;BO+@HyD8Q@gBL;e>-pkeTUci=o!XNuusrIB zsYtZNJa#AH3dON4Y??eZM&>fTP&{14E;f(eiMOj5&fW=SE1L!1z$dmc>z*wCs;w-Y z@o6W-o>$pbtWsocgDXO@xM3TcN5bL{+gLx|YQEef4Yh~+Ta~UqDw7uy*-;w1i(>cr zN59TCaoWS+mfuZWxswf|m&H5TgN;m2Sg31Ga*PLN>IvzB#=a8z@Qt7NObtICZ(f82a9hHLx1pgC|3sfFk0Gu4HR%p_?2C3dOis|nXeig@GVHNa7 zS_%=Tw6lqw@3A&*i=+tbB{vAN^64?-fHFr9NXAg$8tvg(@cK%p09)OMIUt2VmZIKKGdg2irvD z`z$ftZd+@x1dwvv^rvwE5C{InFYmL|KqqHGz&iMItwM1DfYn9d5HtuK!KOyNC7}+U z3$?EmB2#Ga=_NfKQul!+DSAer8ci_@{-O_9eZ~$g*rg+Es2UsFN#I}R1171%aWbf1qqPGE2`hzdAsCN0=9$^pgFf#Y#_i*geS!raI|%GG$4{{Qu$t!m0CKa+U-AR|*BhIXEp2g$3g`ib{Is~@ zN7f&rxBuxM**n2~V9R{sp`Y0|p@{ucPO;m=1;L3cBAN*0SJpeIGXtY@#jouAP(-5W zSE$Ph9u@EY%7)!uVlkESNR1o<8DlW|P^-|s0u~Q_oJdm|3T`zUL@8uc%{<0k94H?R z4S^7|e*?ApR8;(Clz!qjb~y`E?}~{ysu!L2jJbQ1hz+M9=$;ahzcX74Oj{1_X^R(w zerHd#uvQFYAKu+jA4>$9AiaK$dsU=Oia;}QQn-m|aE3J9+p%RH3NI+eUjs>tk)5Tjd|2Iy4 z6@!_$ZzO;2Pr8Mj5*_RDX4ZCQ^@0)IB<38=E{y)0%{~_W=gpock%l&Vx%e%b#|GLi zG1b-f8(FhF>#(wpkl~4e zDB5JoSb)Tv%VUOp=$ke+czMSgGo5AxDcHY=<*jTqCW!k&!_Yu5gr;pAAAGSjuj)i& z)(;bln@9Mp4Qz&CJg|*2WQ!Pm1S;MS;&|grEu{KPbg;&9U|dIm#=NO*NU8Jo#^76B zU_}w#>hlRu5HGLKTU!j_zWN-Oq=-}Xd0rGQYLJJg#MXwqiCEyqDFAsx0_d3oT5Td% zrv3!W0{2YdClVU*WWgHn>%%Ttr7eRlnV=sb!0jER@1k~?m#jjGBa{B>C94vnyiKAG zjN)Je-pgv0){u8VtA;n^r9n+F?^h*}Qd4R*;Q^Ob6JnSbHR8>Ts~4TMfCCNKR`ae6n7lOHUlM6vEg{A==5K(5?$m@IAlA7-Q(nzco6q9;a@Rh| zK@&s2Ps~r?4+ZT)w%N`H>lqfgP2=JE zX!2tSgG~4E^R6@%csLiJu_WUrkw4vpT{9wB6a+vyDo~Lvjc^}=gbR7luVR2v-IX4m zWi}tm8OcO zdH7k)3F*dQ&Q9ljnuqWWwKxkbFf2A%wRGO*s&jyvE%!Re#6FXB!&$r-m(>0l^Fp{M zW#H6S-iqb3GdOd?CgM@V@Q>9daZHcHJxf^S5P_#{6XnhMK(K=SUBeMz&LxL*M)dF+Gl%6~r=1YH1oD`og_8E^~j7MTGeo;*2QSlf8ITR_TAf7yq7Qp0D4DNM3LRr^G)KReku@)DNIA0L6cA27~P!ht{B& z&`7+8`10Kr!M*RJMStVVo?M^_wUHCzR7#MRLCSw&eF zCqV?(z^!UvW6X<^a7ITAxrV3Y2DjUg+A$fhQ!T@Grm?_9O~%n#7-CSGd7{`W^@>!e zWVEb8(Iv(hkQL1uZVa9^#&r4~H36kUT_S1KQ)P}{!<+tBP7aykrfYeEyG)LmCjwIo z{_o)HpSYF}jzg?*Cl-zjBkteV^0o;@*65=ATpBtO22kN@(dIgy=r$U>mNtv{wF{sP zyXrbg`tH4sUlwH~B681lJR_#UC=-Tlus>`B*Afw9TtbH!ndnt7B^CezN{mkqjiHOg;Dt|K#_Gw;f$ek`85nfGL0i<+BxuiRg2z<$Pnu{w2t0=SfD$A=UEU$yrG z3V@qhB$KeE9Q%}Fuw4|u$5PtkA%wSe97C)|=MTT%#qKf!bQ&;Z-{lQ@`I*f~{wEAg! z#d-Q=3f^82bMD}~dM$dBB4P71VxN+)Ro3h3os_!6dKL1u+IoFk6iwi7v1)PCM4nyG zbh810UOkat=&5~<)UYz6Ap3M_g;+FQiO&r`HHvSHNFeLfsN6JHO~p1Oqb>jF2rvB6 z41ZrJKN4NT>Ej(y?kAKWMXKHo6qxQrw*6P7a>v-VY4=i{+31Q&@zR}q(76t5(xz6) z>K1`SyGi`q&R})QMgIFHp=G(nQ;7zFi`P%Xe_@m1sEbgg4CSHOn`LMkLa)fsOoX<` zPys?!GE|7rRvDU)(5o_3gwQq_T8Pkg8A556>W_ANjf=LE`6uj@h`EPfmVz31BBfKt zR0?4IqErMxNM}wJ58eZ*s7zcxg|BDZ{f+MBPR0wSip2Z)@MM(lVU!caBY>PJ9RcKA z=$~;PuV5%6#DiMg{s5oru@!JQoF{E@_&iTQhlnF`BI!Y%UTr4clK+ZGJIeEs_rC+4^nVJ?3xy5WkLfsLrQ(t|_D@ko7e90UuFB7$>P$ z0wzuBmh}(wHujbL#0PZ_^aUATe|wlGqSKo`!aG_@Y&1m-e}vy0=t77$QC@}GYxm7L zS^)MNy=eEiad8^4vYK^onyn_L>eyWvYJojJ&?|a(_*nrf`UW>byJg|jkD&)0kwfI< z@?@(iWI8R(kOV|ef~i9p+T=A#PR7+5^R2yUtMBHL#DjAC>3afupYD?L#u@ssI(cgBOlP)`|GQ z2dft22(vrR;d+=k;o^ry5xj}yyWA0hS&yQ{wnFZ)t!glZPq(K!Sr<+h@_qq}h67s= zcdv5>_8@|}el9=2PKhy3xS+8Lm>keR|JZqa5x1A9juRLWu%g+sGGLVeor|nZ=X9LF zfP*_uVAS9Q1`j%cVIJ|IwHg(Y2Zv2+6(Hva)HVbga&@9U5BO0Tn*@XrQY;L)Ut3GY zI-O$Y2qmY)<<`z2Pp8BM*u>f6j;H+PJ~?9;nCuqT z*(Y!;4bUI+Jd2&9&OWJ?L!NJ`qfhP@ZHi!Vs`Nio#5XWj?7!@39)+hE@eD5~XD9bU zK9rtg7VFKV~r zF%K4@aSRfEgV^O==U7|*cb?@lBRUnXuo#`WD>V1r)I3Dl+{h#RAsq?egMu|1wUOP1sIL9q9%34ryZXiaE=<^ljR_oEIX+KeUubb6hWS-AZYDdtfDR z0e3qMm8QiV1HCyE2AJPgBy&%Y{>y-o@g$^62X6C1UjjYp|7<0HG6IWs(i)y(kvJk+ zMQix3xB}C03wZQ`72>Y7yi=3y@@imEoLngHK)!wlU$k9pT+91KJhoEP;d-r<^OkX@ z&K}+h(0A+;-OI7s_ll9_by#se2K=9$PsRNYh7v;RCUMEL>5)j<&<-Jb$YAxoj(X4! zy#yZHOB_3D^YA+8WzCPMVK$Iep;DBsdgLy2aUbpNOr6+r*f<2 zBw~hrbJRgUxZ!&p?n=_2CF(n5%JdUV$FEjOwM_Z+C#K_9D`lTdS=>oq+^JT4jf^jV z_5;7*lwAFYOe(`61^j}O^y4z+%v(&yuU5(_nezHprsG#DC9ja0Q-Kuxf>RLt0V<52 z6$^Sbv(W$fD||?}5vWfUZ{s`(4e&|-omKpO*8Y^CU^V1bs1)hm7tm@AM_;?}(r9dC zW~5H$yyIf>tGs!`9j2O%XVZVkV%6e>S9u1s@zt-wWO>+_p4=cVH6mgg?}Ph<25jSA zfZV=~r{FPT8~1dt!Gt$_3v@FRoifS62U<~qsBs9>ZRpb#N|j6nRV@+}t44gbO%@or zo%cup8d_6a=B3Z30Eh(e8Zlx!&xAVT(d}>+IxJRg=LxlH#{jZ-JD(V;ZSi0B8q^@( zy!GU+B?%{{c{O~<2Rklzfa(P`^NpEsbfIweNF!IP{Vgt)={H@LTrl|iqeoI&gY zym9C&2lhTp(%n06pj+Vj^aj2c1zro~;&#_lqS+2uIUs58;Ek znD&3flMw##Bi;p%j-T+xBKu=Zt}?+WeDBAc&U69PBO+@MvHBp7M#SNdd5<9Y2+{oj zRN-c(I{War32cUrrppFnt4njvB0BtI+J;>t>_%t!&AnXcdqT(PQWWcn?1J(K! zk2asmLSHz<6GhzTm@H*t@uz$M9xG~$`cV}Q)xalc_vfIIW#ZW9ysap#;qe9xRR_tP zjg(~Z%3&TOdLNQK0OV=n{zIUOWdbD(#skO`#j{`VbV8wuZlCd7#8!M(S1nqLt3KyR zuCh%ja!9=Sqr1Ax+>*Ir3R=lza0JwQ@T>be$D&g zZTQ!`E#7j!<^zqlc=74i_>^;{`1Whw3sJ4V0rjX9OAd^k|O z@&oSA%C(P7C;=Z5wO^7}C6Tex7Z$Q7__(;4K|Hk{1J^qW+sLUbJ_;>Ws zA^*tVc?M<8|AUXl+tDZ6= zIFIe=>wh&`X%W7WoN_7S!&-WGj1uTG=*!aUfP19Fzdth3Oj7 zJx*yJ?p83Np%UiC;4f;ZtW()?F{BxItr9Vj9&d`d^mxNx-c0G{#Jv2zQ&f|NU*#yzp5eN+>Xm7+8NO!pK8SB3k>q$rEoIS=E4GGV_7VPO3o)09C$w?2>~ zK2&{7|KTT68DL{D2zx+w*J-v&`8~*Mmb~#9blkRvAXvd8bzi!}BV|p4Lk{uAhlLCG zYh#o6LsRl>M^MdGOM_R3fKA#=;tNlSwI0R(m@&!fpLvvrZCM?v!C)8dnmK-UO8 zprtEp6jVf@i#4XPmb_jx!29|_iEDa1Si3XN8 z2P!RGHhe?+a8!!dNHa@qOmWHHrUrcC<;q=D>JwMUQX{UEr4GMRd4$_o;tVYD!KKzW zurxEUoVr>`bmsou>&~o053mr@p$Eth^3cOsFAC#yQJCvRh7W7-Y|w1W;+-VDOtf4_ z!1sb2Jfu>Id@Us9-e(%v!Ir>ZMY3sR20v`t&}&~3FSEkpFSE+;o16X_bbf+N{K2jn zSbR`js||#EltP~mh##dSceMQppfAJHhwVZZMEnmHqXV^oUj@~I8(eRhxOtRPc%5N* zC(#n^qr-A!il^W}!?PD9(S$bKYz%LafZ1Le_OX41+;1Vx{RhO*8(@DkIh z3ZmTaif+Uk4hE$bi%(097F!2g!1u@`+*poFm8xz~(ysx8lmtl*{K#o~3qZYzx=P<5 zS$nzi%!5Ow%w?-2D^3aMx_}$AtJ|O z55}h@#wr7vbH!MtIlX>LxK4a@IujL@~$Sn#v$Q0e8jA{QjJwrs+txBuGXU&ugGhJ|E z;2Q{1q&3b;@oc$TOrMx%Z&h0KJ!<>Jz)PdHPYg-$=Jypm3=?^~y3ZtUx=l&{+x-@MJ67!hal?2e@q*e7l&i+9ORWY{yX*#n zD4(s7y~inO;?>)gte!xO?tokj_QXMVEFi*A{MChD3C4ex4jhuBwE2Imtpor6(abb) zYP{0=f78}@vFHw^!QUR&Pwr3>h8-x-@TEU8<2`*?PF-^MX5^I{vT*;aH8x>_a>YNn zW>Y6Bng3CH%{3cR7s;~KML$^WHC3nU6WW#}Qtu3F;D3d5_nk`S+3E5*Xfo;1NaHW5 zvfQ+Zgd7lkCMk*kWUJRtQrfg8dh}m4v(sJ5aHuz?-=%cMW8+;)(x06RiK*KuDwqo) zCer=az}kd?wFy27Y#i$ay3S#6hRq`HZspwfw<2%wEVL!xTbD| zwY%U?S+&}`R`4h$Ve$m_<-f87PEA%){)V3-6!g*#TZ_Wbq*cfsIr1LNg87D@A})zB zwC9G6@lP9d7?>p$LoSn%G>(1+Za3MfpcM0bI@SjTX~K{SJTP&tgIPrOr)|!x-MhHr z;6EJ%F>DHWdiydKFr0gqnwPO4TqL*rzu4MBYNWir6ny93$++;MpqzC~gzc0}7IPXY z83+(Z?JrCS|26k2zjJ6uuX+I5xk~>d4=8;ZtMG4q5SM$h8vnZwD}7bEOQ-3hO7Pu% zG#K0I54Rt+;p zAz?8}KQh~xe6TF+6*H$PJz5yI$kP3=L@Hy(Ln-Ed36dZxgCr@~L%!Q9zMiIdvH(Sx zq*2xNInF@kTKBzS(clU=pdc}Co#-@Ox%e+SrDp%fPO0Ge$R*YP({%JqkO&dz$UZZa zzF{3%I78W~#8hog$Z5qL^P%B`K47+Td#xD%N3)fS!Y?WRey)-bicjpBS4X5iPYFNQ zNnfWFo98IO7fZm~-5B+!3YF|I-2YvHeiY~lpELg*QZaU(5`Mz-zr>m3Q+|!YC1aRC zYPPs=zH)!d8hQPMdkqYXcIb#5I%D()Csyg&&*Wcv03CF$C8QnNoJtM)O< zA~*_5@>*;KN<`j*a~FN?-Rw_`#&=HS9A9XcXa#Va82XCt5i_poFo>o+KS9ggQdE$Q z(3oDqB)s;0Ze?QjQ%WaRBep!H#KRK1?JD_LX-r_01dQNX~YQ;=)7H{Tn z@{E$^WT(WCrjhL|Q!8oF?g0vnJZ#mm4zD?=QoUs6wbl5f zN>6SU`4I~Fbcqsg6+%vxY^ib&FPSGiFGXK~CQW)S`eOg-rAj{c?vfX0SvKgZa%`hL zp@gz+(ADKqR_|JEkwGktsFc840ZPl zSX#)2;-=OZ7%`q!ml+?iw%>I{*D&(31Ee{I#yD=ID_*p{!Q~bsRzkONN=(Rc*^_`= zXbW>($HdGRluYwnH(XWx{ukgj8@Mb5qXN9Pb1K>-M!cv@3kHY;fVA$IZ4tk|sCWYa zFfqdu(ryD$cnIjXZYWd6b*g^ca}gFr^<$o)xGGK~g|<2lb9k5GBIqR5t&$Ce z6g+CAJ``G(-^-LMhXX*0DzxPAA&ef(LEo3bai%hN8dMHe)_5yab*YP zx?Dxc#1NJS!{xmz6Dh7t20`Y)4_PhHe%5;*vHK@VKNtfZ`2_4-u~`3!vW=$91D`6-F>LRthm>YnH5JJ@ z?u|}E`~YW5A13)^Eenl0Dy~1IT!3XG4k^7-j=sj+f6y6abp4iRDNH&a=~guj-hGFZ zMttT^BH}Zp9mji@&y@7|nLkmTyKsCU`6q)3CM(CZ3jd_fl#4h!E;b!jx(0>{3pePV zdz#KMUnsNr2&;RsDd3(<9GR$NK9H`$_;1Y&*fQh+5o7!x!##F%(H{0n`$i&~3@5%+ zGA{mW1rTB~Wm(YrS+40xPqQKFzM)4fJ)&G{UooW5GOqCnoD?7fb?jF`(@qb*vxg{R z|F4vn*(v{-uM}KrgVEJaD{&0p-E9B6(m#6cbIJ6jpTV(?1yyQ1zB}F5;r?2oDYE!? zg%Q}2Gs<8*zCEK%z+>beN{86F&nM@!anKioqV&1qUw^=(VXpZ1A4(3JyI{DQfWPC^ zu5kg>H09QpsgvrlV}5+T@fXJPp7W=~s24ImIBO6Vzr47blbZji&*| zpwJAvm27dg$^EDvU=i{Lw**c^{S|I5u)okYanTBzfk1a@0nb(xFuxi3%`H(32IrZKeD z?WeCE(R!-7Kz)XiukWrluOr#lT|LwGS<4q3ZGffz5}L`zy**^->}J?ZX(4x}3lU!F zp}rIa%j$&w>L6U+eou6!kNh=JYiZ#YR-A{L8^-V!!Jc= zBjdQC>QYwij~k{QV2zGHmYmaCAwV!E#Y^FHQ7C>Nu6D#h()O3Zi(;P`ewo^meJLKi zOl_AgeN2fe4#2mbzyldxroj>W#IDQK^V}~z&Gd%uov;=Pg3KoVp@C zNpUf=7v%r_H-aMCBI2~T>~b~uk|NuqMI5?Z%?}g5CS9SvZQVB#twqy)BYGCTfaM>4 zrJ7Kmt@Mw(NiD6%7Wx}c01X5Q)BmNGh^JSpsr8OOD(A8uFSf2$GwoNmIKEnq2LZ|3 zq&60Jl&Z}T9$uj~#Y3MY-|{Nd)?tzLSJV-C?Id*uAP-GaJK*u{<7yfn^*5^R@#wQr zZJJPRtaGDiEjxNoxB4v*!N)f7C6pHQ2L1C!OEMo*k4M%|+d#P4}hZGlJX6#4MXQPUI6 znss+LQ8Aa+FbMysIkJNmPEpg5scMQEAAkmr1?UDr&~F19z`i#!wZB*99dxhy7$V=f zSGMPmdoei2g?69XB7jM<%lLYIpi9QwC-XjVpSlCksq-)|kBd9*mo1xpzpVO`^CZZw z`$3)T7AWHQCN*9}JfL2V4A(uNX5f+gfZD?9{_YO!QgFM8!4)UC)RexUhI#TY@#%6| z#P#!KAFg>&)^hcHIU;Kwl2c;RD{@M-f2EGdF$?O5ta(Vb{MLu%lqh;wP6<4roCc%T$O?5Vl8|@gO30a8)e)j5SC0Cxxe}mdp6r`P z)~Zd#^?B-j81+Nz)Mru1daKxm08o&6l7rG+9QHPksjX72c0{4Vv0A*AINlr78u7+@ zwVmBo_vG3onQb+)2Ip$NLA_SIQ>?~`3udS;)aAk%YP+=Hq8xC0iEhtSoH(%8@E03! z;n{{6>b0on|5?J5vqBv&iXWE~>i;nHIar|HgANKKJhvE~@PCiyq!<3rX%5<5HBX(4 z$GNCX%>SOsY+CR?qB5h4Wb?uaOg#vp0ou6-UC?8xB>XolRh#4O`lscpUACJoIv^i@MqNNSOW-VjT#PD_lwia{x#zxAB5}T1B5`h6sO|+w<@1uX9C#i~ z49L&(60+4Y37N7;LUv!IPDR=)izHqDbdf~O7o*maP8Ny{i`8V0waAspdQJUFASo^_ ze!SNew9J24EX!z8EX&Y~Wf>!jWf}JutNAG7w_;gF@)B7_pCurMk|g}&{q+2E|8PIW z+3lZlR}aR;okiG6XDm}kh4oykR+HH(+Z4uZ1w(<{jkLDiS*z4`*6yaeMaMj~ z3Cfa8*SD+GD5G->_7m|hua=#2Wc5G6R$#%8vk3m8mt^O>^U|O57G)x(K#dQobMFE< zL-jRs_7bBJZ%qJfmguFR4!U!zWIR9;Mp*1-$F;Ieqt{xDN2als>@B)qxnw*hluP`f zj7Kd7BZ%>+#gGu=ab2y=c+@&s>J#f~u^(rDtFl_}@%* zaM1s^raE|R+T6otc~dd^RW;aXNY^?UrsC&bRj&&bTm3QHFcsP7{;u1>!L!fBrLU>I zLV?87uc>{4jHUre_~>ius6^|AT+*6B056Mh7s*eyz;E-W*HsVsZ_apKZB5U0udAKu zDZh;2eM4PHFE}pVRDAFTrt&`?ofafxEg4z)|;dH;qqN_Qo}(~3kRm99ENmd0Ys z4y=WF;=3K{A12NPc>1<(ZY0j^QZu-IOl)}*x|(Cc`IdUYIgfz^+rexzn3(vMn&AnY z7Y0x*`;!lu?}gnTYEHv9xxc2O8ohU^EvSmO?o#{Evve19H-W0k zi(q@dt+uz~aD{H9nDw^Wi-32$t$OKs^lkNG3t;eWm2MW6ZC$tB z9cZTjnp&+6ZfrEt0K}PJo^6grQ{k&thguav=SPU&tJQlb-{d_;?N;qkAEoyW?*?iP zz*gdgcU5xnwT7*gsQ(_u4v^=+r=|xbG#B&UQ*Q{0$P{h%su^)#;bbn|WJb;eCYnim z)hlZOviFTfSQirz8nNVk^+$RZeW0FC&v!mh2ZES3`%rBYwg8~qX)JC*3eJ}KK2%q+ zZ$$P!wM!V>^nL0ufPAn|?Ub=nG)a7iC z$p1_|jSsOs^0~SJFy|jOV6Hi=UIdt>ht-v#z2hJ81#+;{{%gJjgBxgpqPt-xv#nsH z>xO~SBSv@SE>U$v?ZHkh_&wUT&XF}I^((a`6oIX3C*$P7uhf3*l<<5F#SL`aq|zl_ zb-%CAk&o2X{F|_RWOu&pn{(uY*-o@L8kUbN%ugIWM?SJcUh-{NKC(Wp{kC>KGGN;6 zqgyd1eHWIGE^YeoyW07vW9@wOv74ukh2_JUE^+$UIr7m>PMeO0<)aInJm1&OSF4`5 zv`N%_uU^V(j{~k~@((|uet?-EvQDZ`;j!f;R^u%H_#Ywa7_m<#sjhksI_Hj|bNy0} zN9C#yV~ODKj(%En_*os({Iq!>1>G;9{0s(kpV_;s*XVQ^OoaGwxn8&i0T_yL$pd|3n3t>}hlIo| zIR^~$()*;Gr~B0<>GAS_`57xv^!goGOU0<))r8npK_4hyDDhoh78GTdb%aU>R^6yZ z!0H6I29616pB@Ytxv;NEw+1Ih=-c1b8(_H`az>pM_`cG6M3WS~5Z6koLEp+C+VIO6 zwP$DBZe;>yj|+t}P0r{Ilm+`Ma^C)jni@&^S}b_YnVVr1OtvukF!f&95kaOv zq8hg`XX*tOr0zyXW#j~ma-pX{8GTJp_JeDv?1wGPX;VcaCWn~wYV^Ye+-YBCN5o_@ zcXmbeDjt9)60(~+@5CbQqd4VfxUN>5GeRjnJ{se^1_tf{s*|&p=UM{H^|&gJ9P(^^ zxtQd1rg)ZbW%{u7s+rdpWc4i0SQ2$D@PsINIBpBqsKDx)AkX@45jp?OO$KO`rI-my>Qnr~}R7 zK2Exm;QjxPy)S{UqDcOK^O84tZ)O7F2qX}~dm$i4AY5`^!y$4kg1W8>D)N6o{~vZu zzn<>u>gwvM>gw+5?xBYGbErGEb9g(c$z-A8O1HRi%ewXO7hv;ygeY*r`(?j0Geg6% zDLTareTo8C^yDZ`>&g2tuowR`wpXYwoneVI57g)PV%gCOid{@?^eP8LkKUoP@NHUe zj#)t;j{3$vp;WfJH%`43uwTl4`D-7J^W;9hI{#4C#rvKSx|v=lfz_MJJ{b|Zj1183 zmxjil_$np7|I*O56D~+xIXJ%FBU8US~%0;YXx^i5@$*oJd8REKdD$k7{ z85uf9Jt>f8jR_4)1X=cv4W%~csHIVJ=>iFfS{=%*E07SV#oLSvbxAXe%*>QoW!luQim2ntlI(AN}E zrz-!-ith@gLi+rCSLh%GKB%l)4BdJt{=$8sK?!BimMFN<7AUY5vr+Mb8KD-z6RQ|U zMLk1X^%6buf$*xU*^uW$L*lcRhn`Jz<;IbFX@Z>*Hdn`Aej(H|=*nQo7!tp5b?BiW zPV{gf16~cinkat!H9mYzC_Mo`P^>;{x+avtQl1Q@#@D|UI--=#PG2ATF$iLfOH*s$ zPwd?g{Tcr$rs_LIp(gCQcSEl`H|VvfPD4a-=S({y0KDqNE!F^C{9dRk)R1*Y|Cr?& z%6DZSydQe8TomF!;a?SCcj3pOmTbibp)DuYS}WG^qfiZYaC4~S->CRy`Dg-{BW2Kx zgNPkYkQNQ%p>3h;6Rz}+&mdIGL#>6icAP@m7_%8I4 zJueVzoBd-~XubWLg8TK`9a>@kPQXM8?FqGYCK57Ouf3ryt^%y#zR)-JZvt3rf9QSt zHy&Jw@7*7I!2@8$fzXe30czoypJ0T!GT2K$hrY9a6NG0DhCXm0XvmoIYiOWT0~u^y zb+r{+dn8nyeezSNHal`8q_Hy&hYs3M@aQ)yt)aGv|Km3ZJ3E(Zc28AX#ZhxFiG}AB z^%eZNKB&HnKRpxF=akj)(gd|VeQc?!Tk*$8QoqBWgGuTpd|V$^SJTJ4boFQayv;_$}k^maTudSluebd$Pe$~{oAYS6Y|6=+J9M7P? zgcYd|k}s*YT&NkcLC0+gG#Oi!gDJF4XGMVOawJaC1 zDFRucW8x2Fsu6ptRnVW57;yWkzWPI@jXjQH1gPS+7}{zSza&fj(3UObHyFRDq1sr^ zq+<%*__9W7`x7Z&rLkK77<~o`&EvN>QTIw&!$m~BEFmH+v5_WdDFVO5@6S< z){Qsrs#f`(FxZ@K>dy}0xO6#=;flZAU5zE2a5Wm`rtu-Ya01;CKF3Y;XL_rHPrMpK zwcPmVGa!0S7~MF~Ju|@>=Q=c|nce_S8DgA8Trg|wGX-~w1z^100Ch1*fY%18HJna! zP`+4D98^Y@6=LkSL2B>#(7&i7PrPm%b?;Riw9^IJo(NEN1=<;I_N*t+wqjAeHCXMM z;C30nVc_;d&?Sf1xoX_3l`l@+#^~w>-O7p((0%dmXRC)Iwdut|C7}mgB=5|DPXWiM z5sSxse$GO*HoP-w3)N;-?Erh?*7`T>?1kzc*A8Hky%omJUZl?B(fa6EKSk>ch-iHQ zYVa^id{}KNqxJ3m0lQNH^BdOvVf7&wxR3*G|HJCUGA^NskEmr|!+iY_^%6HJ=t4|_ z^q#=U7VoxLO;X%t;Gl#%$Z;ydKNG+7Q49;MzV|<-j;6mCKdydO=_)*k>ojFT#<4L= z)B|M@$J^WID0j0ro=~$mjp$u1qET4Th=QboMn|5o37$>YBj_f|^xYNImnu6k1K zSJCLPcc0|L_tld&G(5a$4`2PK%0eq|b1DAMr_>2$A6E}ASKH?DcP_y-37l&ZIM*bY z6sR!_dQi6v(Jj85I?P5dS98VCPXv=vIF|e%I`-6Z^>Qn`qacQtVVbT`b8B$!+eurP zM~GvJ71SHELjAsyde=Rx=GNu));RSFQExx}!m~LnFRs>NA3UqRUI~z8EA7S?Q?+|3 zxa2}=eBVm-+)CfL zE^)gS?Jjc)^+2r~Q!S`r z-UCGpGNR8C@4o+no7?#1!EadPMYW!?K7QJZ>JkN~_lsUqYnz96@kcdd*kVRl{&vBd z_=DmpI4S@A1Ndzqu_KwbA~e$yKAIEV6N9L+qL?&NfWQs%bB)b+T4G$m=JW zcUPhMNp}4tr+$3H%j!dAuV~-&nwo(P9`>3_JJ4)nv08&o)Rk&%RVmejvmm+t=}L=4zJ$`xt#c} znq8^z!_g0P-shHQ7rd*E9q9PF-@%5C+*0u0=M2(oL{3@P{aVLuO`EBy@2L|MMDTx4 zJ=1e(mscf+lXnxPZ*mg7eC7fhLNDP9cdl6CBWwJ=`kJyMj^|rX58}Pk=q9zJf;g=g zexTliKVN^KB6=$uuvxtYQCrt-R#gDKY+!5D4R(DWn*4>{%OqSu9 z&Q?wb968Z;sGabq5B{WL>mlX2ge)GUFcAYoHHsMX ze36>+79F!$x?1EFu#z2WcH3?IQ#3dZ4^?9?4#5_91`c-MEmVGbW94e{$GJ)@Wj(%7 z2Ps8t>KE!*LQwfqU7EED7vY{0anzAC6&#?@5yBL#(k_U{$rKYk|5E)hO3W{82hAnLI<}#rzR>@^Y|@AvHc)+tAZ(?gyg0N-*w<0u%nc~ zubD+Deylxe=*|ZBV^I9|s{oY5_x#)?H=|^pvyb6tGP$Kj=Wtw6NWok7U0?o$iY#ar z(mo_YoMzGK9ZwumFR#ff$9Y6(&l^pW1*3eYPJ%~4Pxw^-rDJzV560NEvoYq6Imv?N zz)s)+AFgF~@MQI16mOIBV5vOi4wj0oy!faRb&PVp-I)0%4h$h`JE-B>=jC(M8p2=? z3}evRAhmDlzC}a~m|vGFDPe570UAwKI#$u*JGB*N^ziT0)Gk)G95qvk@%L}|W~&XW z0ibVNRL{(o78`~yzWh7&{$_x5>M!^^JF4c|0Kc>fgc3))_q}OH6?guxirawdd!o5)7lJxQm)QL}v;tNZ!7N+p- zr?ibRHBWsTuhu^GZB(y&>f0EZd5YV(gm~`M4fkmZ(;9~9ae-6UMq?#Drg69#Z7iB? z!n7lg0P3_O->PFchCfORcP4_a_oK`XzRXnieT(oEeED54Hn#lzFjlty{V-VD-w)%a zcE2CSMIC-Wj2@lB^X0fGoy!?pD-&beimmP(riUu50hV7<V~GJmmguW|&SuZ0yQeW4ZfF-!Prp0L;2ddgiHtySra_mf(l7(g@rYRpmnuTuu$JMH1((knb}+6A}M-KsbwH zzyEqRSKu$5!`1$F@n`foT>H;Br~Ge-ReEl?mvgoW>j<{soG_hjDg&lYe9yVzZe(VR zxRlR=R%7`5h+QK73=5~Tf-Aywh$?z<`2~jHn>nKVZ)t4m<>686qKm?Ge(F>fd_wC+-7wIuVX!b86~ zNBGKcvbzFj=UVZStHM_+I1Bf{Kf^f+yL~Klh5cjaIM`JP)#PWgb#|2fGGZ!ZO4Ui> zJkp0#@8&R{nap7pO~&gpyYA+yu(a%#k7fY70(SRgSDiTO%pyqDX7F4!O=h4PDqm^U*u{?feyr{520`m~b;>57>r3sToPCks-IdEtAB;wO_I4&ERB2OVfI z7m86_#7A-eLX6^r3;8G(JmvdBqi8PmWu~$>9tz)jQUI|BMef}aJcHif8 z*6pP*J#2W*OJzQDjrPt<;jK0C{j*K{`@2P)$)+ojRCdjWT%)CIEc0c|My}BomHqPD z#_;x&2d&NKlL_t0kHUK#dWKlFl@X%nh()01y<0dv-IKQPW8Q7w=X4g`!s$6=OL?DD z<4E#_zaa<(*G`nYGy9UEww;K5VP|i?SnJo4vR-d_KO6+rgJ8 zF%|Q8&o(jaI?~sC!PC=kjF21iscn^(Qj#K>tkY-V9w>VAXO$M+m=wu~xBNalL1B}( zb5r#9cIBEsw-+TlPf9Opvm3ttQwLSyZ+R!JXRGf(J>(cul(%g z5pv3BCh|X!J9X(o5Y8o8*L60QUy5$)EJ`d3U_>yoc=ovwno_3<{>P^f_9N`MP^2ds z7^7jrE>pQFfvHa<8bY&v>ghbon)TCEq5vzW046+%_IxJrxdohlJpc#IQ& z_SNRUs-;DSBNIqi;M3VMjW-M=2p8FYCYzRKW9csiByw24lt^pT049|cyY(bPcxS;)Q#)7HipD$ec^ycp2P0LT(-`h#W6*nKCalkB|$-W~>T<#rwC2>?YzI z>cHh({f_+4j<%7$$lN%L%flTvRwR#KJH4U;+yEQgE@RvEr&m_-MyFo zNnKrk#UI_(yitErS1-KgkM3&KYyXU{hLrfW8zQ~_u$dFbWW7OQ_uL#g=Z~7KR+Ihn z{@5n}p)k0kF8w2W*^C@h%O7xS%W?DF>yLg9mh+9P+AR-qRh#}$IR&_uee9vgH459e zAX0cr+n7na1Dzh`SR8tof~uYg;TXBU(U zge@z;s(Br&x;#<@xW&tPHy5qo-Gm!4m3_K`cXP-J?y|daMI{C5vczX0#tPV(&sJJ$ z^RpbK$V!e9cUJm0ARIC!MNMeHm!`blm$W0@(ZT2OP-@n#tWZ|{7r3W z-+sj1CS0zhy9IWRN;%>-8}4mHJ_|Z!ljw`*{(YEo#Klb3?bXO;rzi*FDatEbMcWrf zb~!~Wg&ObsTI9m&M!`aU4TWwy6tSm2h|~$*`3rmd1Gpzj*x?T%gOnxl0h`JEU&1*yW=i+X z;`MSoEa!b16L$z~sNSc`@j{(^*;~B4eUa}jiRbM(9d9;*baZ8cI*=a}J=n>Ew$(9r zKW2YIieE$kNlN%fJZgm+yV)%}BH0>!<&QFzuqSs!a{4Z@@zzZX6xzXE2DF1pbg6-t zMsqttMCA>4@tAK4?p)AiNmCg|1GbLU`y%osqADt1MrtU^i!60#WQy`x{NbIEh?4f; zT8jSoUI5`A&6cB5Qp~`afPL3b?2WG?-{u^^19|*<&%Oy!``yf%W6a`j(?;RVEs7k4 z52i+RJixYm9ckGXzrhJvs;SZIJg85<5}aRjpMnN6s+u*&(2wg!nZ>NjH@NqC&)Y2T zo5*>}`|P7{B14onSmTmN7iB&hSrWNWS%fHw5F0DwUzbF7Dxnz#iuoja|GP+?OorEw z-bsiBO~aHSP($d02qv4fD{{Vi$2`THFprJg6=~te_mQ&|bN2VR zC?>+5Qp8O&aJ*Nk9w&0@=H2mE_C_|Q$aDM&JZzV9%>?ngWetdu|P2!=S^NED@Bi&q}&K%#_#Bsu6Rlv%)zph9rU z1eV=LJ5AZd2KLc%@=6xdAVYp&$fo57dC)R2?89sLD_F?HB@TYF$9&Yunq-wTQ*dWP zF&};1elbfimx{C(*oV0NgeSEqGipQICi2+9K3bK$Ux0*oa|;n?A9V^#bPm{$atR#K zXsMI4kcuJaT^Aa^IV~<+==A9>0hwYHoA17DwTPE0gPnQ(&93?roo+0A*r|V?T^~r? zhI+RF&PMj?85olltoRHqH}>p1iWmfY1c-9MTqTUYLyFvq;J1CXkJ7(=j!!I=N7mz) zXp-ncSpEc7|4gk(#2P&##2z?PD`X@3X?6NTEYT~Ay_4|>nt1Efe#4Vz?G)0$U5egN z6EC28O73R==%+Qp#mNQzv}g^RQ5H|I5J#i+`)ljjp8i_hK{mKP$xuwbR(YPUS)Nx; zyF7n43l7j)g%(4qEo2=AXkD`=a-=aFPzq6%D1djl%JA-;8>)>q*ZV32k? z{T(_;EB{U9HG{OQ26jV%lnDvch&7EcLHVU>w0VF<&eGt79;fM4Axp8Uh&$&T07kCJ3Lr>6n`EbqK!!2AcznE zZK0)7&eksSW!-eP)=XK$9y?p>4G6o=)&}4jZ2NPx*2?DisB^SlO7a#Lh&AyS&($vR z#2tXK7j?xyq)3qM&euGl3h9AM=SnBVgsgIb<_T5kxgkZ-A)mTHb3JgGgZoden`elI zI5T%rYW%kgw1$etADHD&&a&YwA(cHaR7+t)hH7|qlp{{;^enhKXcEVX$7y-VI7$vt zlxNxAVOn;%I;+t|+Bkfldy&?>!$*gJ1L>2kiRPORb5Tiy7c`5Z*Ax1hu=MKUcS4!L z{Ouy`TDogF?qY3)vYcgKqBW~K@rkI3|3kbBRc-F(FOh>ex3N)|Xsx^9es8;A8e}~l zS%=8L;PIRcz5MIIxC-pt#G^RepI)MMJg*R$$GkW!v>hxNP^svMHIH;c&OwmuzaUfx zmrPHvD~D^hRx2#5hpvB)t_M?kWd+Qq*}>tOseHsbj?h}7w=>Q6YOvczXhX|PiINf8 zHA*Qv|5B}|efQ6OlMqn7Zw`Kq_e2qwGz(WwAs}y{C&gEJkB9ZJp^R@~}VSlCGSEYgHQBg&WGQIajRy~f+R|7HGuq(8_UOc`( z=otlw6E_~!2@gI*72ttbt5*4F4RPi5Sc6d0br-lMd+2hlSs3@L+XXX-mVejk+nh!r zSnvM3c2-al_cPAdDPJNkt<42s2ln1Sl{Dv()-p_d+GuT3&X$LQXVlfZD@qFw0su4~6(wImm@ZidQuu@jiA`jpW1-xOdL2 z+W-8;!66FixBCdai(Y}S@ZF{^S56e%3fZ@q^}02>{eD%r7=NPn#!)FblFPAcvZSZvA{M zU6L7#WAm|MPZ$04g<<3%SdLWk6O)#CPI=D_YAKjmJYVasERG+{*E;>@O^|gJO%T>< zvUaOd%AT35rQ0+oxv}pBttR_=GP+dC8r`Ecamf@*rUkJ+p???-uOfa4k$cQ(rBUCI zvuXEeb)98yv^wf(DB{dTn$_#>(XNyi=vN2vSXqL(1;zt{vP*`=lwg0IqWuM^Ju*c* z!$zA}h0v}U^2Qech>5?jy7y{z+FMKo@o5X@R6?Ey{NO?yW!IrOCFPJ41O)E~urc>) z9g>|o9NzMKwFd1hc(o)v zeV>ypNM@;>c+8Rwhgy63p!x|7n$oT@dGQSu@B%&OPI z63wEA<{fP75rw8|gA}~mFjcZqCbB=Ds%zG{Xx ztm2_;gc4uPz#<+7=}h^w$!W-LF_U~#Y&^1SSPeIp4L4@{nU=xU&D4@Bh7RGt_RrKB zACpm!7$NHvOfOZ#o+s$>V^C_9@9T9H+ zdX!vCyL?U{+Vc43WGf)PZjN?F#guN15=|K&$01CPV;f{&$Lw*eWpGX*y0*oK5~j7T z7~<(D(QdBRSOE>^N{H={J$|knDIQRUAhyScLvytU-Qvq4*etGWgzzNoY2*xL} zw3a;t>*$n^c04w{k_eejK&JkDZ90%&K3^Lsqe&&EM7YMLLY*bt&VZX7A#1}I_^FDS zNP(aDLWAmb0pNc3YdZnB#R4sAvrtzFsw;ITG1{%%^_$JQJ{IckROb}wP9UTJD9b`% zY%v|cLOqU65<=Vr;=e4=W@I`O=`AuEcLrQ?y(h{%@qpI9uTuu(qNWHyFT2e^v=`y0 za+A!Sl?gB|Ii(!!*c-q)J*a&pfuTWFt{M7BczuZaiR7ko8U{SKA~^%VE`Lb7K6~A> z89;`fkEgek71J1vpQFspJey}?*XzhbTA_THC4qb0x#p#Q^mQ7E_T{9DDtO=oI|+)p znEkL&8!RbQm=H~g;yrjN&(8!N!xw3jgQauX*hjUF$}HCES?z4s&moU%eIu_ZN&?nQ z*x~x*5p4_#jeA5puX@SCdW2y>f64zDl?DY%8C&$YRtKe*FV=>5f1bg{F3}>&Dt67I zFd{{x@)xzq@*dN|!MTjZo{?zDpVR`Ja|<8W>RJtWehK*M!r8Q$!crD%r(2EqvSds7 zvpp@zpR!2tEDw$3Pp1fQh&?GgW7? zoy&K#oN4fIFhv#1Zem@C1mQ-y_&Kd=9lH>%&9QkxY)yq=e6iviboef9OBOFn(UUdS zcc@mDGE`4vA3ev_#c$7PO>HseU*1S_)#R9HHV~J^;d43B+f*rpslY}~X%WKACDp{d zaRH zFidRwi*US`va3hw&I?Nz3)bf)?Gd?-^3~%$13@B#Z6B-m@d3b4#IIki-L4?N^kwPM zpnhk+qTPh-hhEWgZ9FM^%PZRDu~p@9wIh&;t9Pu?(j?XJ>}QHx)Df8JuWI!i|0A7~ za4m88YC~X+^&On6aDzZUTt+M?vf&o!6qxAnBn`vOYqcy^w@@3Ul(IVuwT3p%gv@h= zaO#(`q}Mdl&W3Ht&VEhHL-wZEWNDgf%In&BP1n4oGzkRS2dY5mzhb578MNoEG;ksu zXvH}GbxAm25`X%2t*Ro;u&09L;E`SoYI(~WS`J!v)0SH9wnm!}oBJP0+oz-zxD|d% zvj}qsAq%$zpo_zNO=^iMdx-eRN&YuKrYXq|!dK&z2C?kYd^rgEHVzIGQSZb!V>Z>a z1YIpm0|`!ezVMs9^rqI*9#on~KfS4)*3gD)a$K<+W6s~8nAKgF(u^|S(pnrxQJQ75 z-qM;MM^Tb^U%#d09!F7ESHB=kF!#2FK+e!(G?SiQr}4;wM1Q|XBUVk5;Gvq@Ydm6q;HPM?`XXHtpO3})T1q+T)h?viwT-lCY4NOb0AXa!3Tuu(2d_^cGBo8qPyex#w*U6X; z%A)8xYqd!mndOw&Li4^R_5=y2GXh{#wrZ2sL}HfW!Hjke4sFshkAaz=Jt13tm~l=d z&IhNmksoN?9AcRX{Bc;Pmtaly$_LtY$3mT0^qkGw1rqhz9@NR}_vU7?708KZmP=Hw zE%|rhTP?@CY7y6wm(o=jr)If5?Sj*3o64{Kc z+;_ietJcRZK%ybGO&dCB(fxEJu~UF{c<0?OY#Q1%nQo=ikiOeWV`*%Tx6%}||Cjlq zJV^wA05WX-Hi-mDmqTcy={~C*)i1HqRKM6;pC(5BXRv>-%_G2h^;CQIY(Ao{GZBB=DK;$xBo%w<_Eqz;dS#R*2sZ5ZF`}L zWh2>25$j^Sdy5m`uoOy?#+s{YkCH27zwyXfL1-}V0^Obkw4@%nTYDifHuspLB{muB z>s6!__ZmC2{yCnB=*sW$AJN{Ws?V|liWLaun6cCUWdyd zpzM-3e-8&P7IFbL=m)J8=2ZR<(xU;16My&zoD1_9jo8Zot)atc@LCe-IjFm@Ud5MU_CJF6`XP6O;8m zh;b`rZrn&ru04oDbWY!Dn0T^c66A#74k9vFn1ib+8SKnbt*TSh8ge${Hpc?ExZnsm01>YDzmmW667 zf0h0ZGU|?^T7_gF>#XG=PKLZga;F#88+-T=4hEI7y@%w=JBI8ghqcBM3vQ!1)M=3e3CwruB3P6>Y`~I98}u}L_4oqleGIJ5)g_KJQHAkS8G z#~`A;!nKOt1=+!%?kuJ|AiHHyC!QS?)EnD4VE-?kAJnsg(oeDy!j+By-~<`@mZVl9 zEAg#Fy;b8vJa1FHAegcNmrh)=jn6_ZzNq7nek>Z&YoWpRAv`5y4I;^|5h0!E@lr_7 zw6n=x`!b~e3)vT`dTl!!LWd{(M!nPJwm#_#mbeIcTm4>pv+97AVPjttM7JU*w7&;#dpKOB|c)AuiFG zG!CoTVog8$45xiQ?v8xN8rDWEgQ~l%0ik-rF-Sat0!hR!y56d{QzaaOSQ8&1_H01> z*hx6b>B$=s=!NB&lhj+T>kXSabwELK%~`;*B(N+Ct2u_`N)n1q4gF_}6gK-cM7Ei% z*9nPk4^P(5b(l)n15N`TL5FU0sU^^~yUisVF{oeiB}AK0wse_9!;(oM^=vXU1?H?x z6+OGQlNE|V=m~l?1F~0F(QCOsI&-2qKHgtNZ`i`A>7@@OqumP5X%PB+9)U)g2Be{A zAr~BzR#iWsMD4=nPq-0c$q7eJL*&JCs_B!wOCmZf?G$MXbc(9$dn6$48x#V^DFq40 zKC7W$Mn_~gDQ!eRb+RF9X63=a35rd6yG%4BN1a6EkSOY}S#1OaMOh@Yz9)}1Iw^Mk(`O(Zol$uuR!3Y-m{~9Sy{95`1sU$k%AgkniqQr=E^qO+k zK~<$dIXjF=rz)~*>%HpR=nFS2NkcgvT~X-H+IrSGb|G*#UK9dpQ>KSv-EF#elQif? zToQJ)aGL*#*uHg1_0&=&OgvZr|*74AKz_0 zQ1B8}yC7!_D(O;%e325M8$rXwGC(w7c)VpkOCQusAcK?+Vf|Vh$ZHprCYW$sCcwgQ zyCnD+bI9blq=`_TmyaV%_(ApBnDf=B?1@;wIV{6h1bG7Gs&sxt!KJ1Y9HXbZO%4pY zS}nFK2smF(h$?(LLjsRhi+Z*Q{aRO+6lic&+Bn#aJBn?DxvrHZqu9%Exy7Ml?SlMh zDGIVrvh*gSkxj_?^{WI#JS*1Wo-Jy>cD06*>rTDe8v{`lt}A5767oZJpsC%2u^feK^;b9C3q?W&N-baLBK zj$|57%+aqzL*JvMt=q_msx3K)KVV zv{1lu;ut7#UVv1R+X4pD60Uq#nV7&kKOs-pO)c~hQX}EaIg}$#u*v;vOj-783q2!Z z4@i`4Z>~G%jQtbzcOdSb)PBS{TInb$Pg@|L0+Ysye82dyi z?v?|7#4)|?X6gyVe{ER?alByaqB!{>ZfaE_;{HkhJ18!tWHjnW9EQA&cuXMPsdX8| zH4oxhK>Wql6(U}VC^=DzONAWG_9NaquAF!9W%xlb7bvF=C}awYuMUY~0p zT%}+pF8OBR`E3Ccl>fOFLaVvLvXzgBbr-xY-@MDD{xBh;Z-)>dgv>W{bLVF z6TgKgyXvv<${KjGAQ^bB7$_~nbJ=#<6i0th> zC0cGlUmgXyxH|PNGgOeP?1A3;3eaS5A3bWbFJz~UK~{OFX4|vVFGXELmF*cS$U(ND z52uNGhIH_etZQ+GKC6-4o(VsrxSmhW=K{s$XoTQnC1>cPfa^JZb>~bOgc!TGubxdS zGr^|bBcjp_<;x-8;R150xh!_C)bp&HV7YUI+@?Duo=vBwtmTQAxVq7opM zW`#-&ixx8Zofg3~tWH0@4#;|XKgj~{>ez_n5+d9Pb#)ECZXuw#ABcaTyEX2D(N>jp1nGddxxna zsTZOZ*8~C~erl0Ac=caoH3)Dv^)F?r`9(Isux^87HCirQGN?>7F3Ck}e7BN{RXIym zBe|V>R+(ykxlKCob5}K}z4+0y^xg{Mrt}`7caq#)Knop5e^k!h=5kMADIcKiy+ais zH?T9Nu4zp6Jc1d;e;cCrQeuVtx`M+RLU41|Aj;DKVZEE-D0*UEmoJ7!f}P{`#qe{* zPJJ5C_s-F?osAgRI=m!FGCK`T&2#moF>!msK?j_j;_|!zF57Xgp00?)+(bgclFu12 zV*Cs&Z=U}a-QfzpJVuhVrc>l8a?#~y9a+$H?O1b_N$l~|U-d!2$$d~9;~CF5Pgj&! zex(#93c|&i$_g&jf8Tus?9?}PX1JGb<#dOihPMfbKG>px`^H?|<)RlXFDUJw8!oAb zcmOT}`e%bIScZU@7_7=LT&8&AuX;Nl70L9QHcH>ivU zZ{zw1y=_pgJ=g{RqmPR%JRb7bWqH?BEDcEAB+T1=JarWaldoss?wMEy1dhB6O*Q>Jk+c^n1c&LAPKckZwm8fmG=l zBQvhxTkdY$uxN>ozCv#eQGYyxd-6s7|CPBFhp0bYacm92ZJbqTJV?H8AFZc4-|0|? z%d5`y$QZrWMK&jpVV#IsiE&GiriPytrLn;8M3E)!H0fVC)65$`Mt6cM5LZ4pMsHTp z9=V?@xgjE^f!Hk8s8>R@f|Xg-tMq1NHbKF$>@Qd8=QgE9!0wr}$C!oF5w2PJG`x#adTa(~ZTRP&*Uxs8lKZClM%4O%$?6Z75?9yxX{vOSTn|8QtB6nDb zUEjG@e}6N~3q;&G<2Xdn$!Eu75pm>AdSlx{`_B+Too}v41np(l-J%agn9}!e(d)Vl+r(S- zE>-7FCi+H$JP-tAz*)CSmkD$e8+)ssL%Y60{lQJpR*E617r93-iMujjQzsxgHL7mB zRc~ecd|`7k<2HSyBM3>tg>ixfdRy3=5LVnm6%Fz0a~=hTL))_DN~{4`7j4DKJd%HY z$vRZRG&|vLETGcaLmb`XRxwp^OI@FH2A;;eV6E$73#Pu__tz} zs2WqEgq%1n7$2XHvtT(Zr&k#8@J^5K3Jo#@JgmdcnxMa~>|jT3*JG^B?fQCUM;z(K zs#G&mVX?rJb6;m9k5Qk=dS3;;;>o%b7?3Qq7bfdRkiF_2-8r&N4EW_e`YSmO0|o&N z!xp@rqI*MyCDHJ?f`XEl@7*c-OaK~juiS|s_M3dKzTSfyZR{H^6$rJ%uDg%p_R@V4 zH%#yNH}~n+{^td-TM#Ta!sDJGdS8E@o?{Cr>4?R-0Jvg3;S4v@)*W4?;!7%GRd;bd zu|*Zs4Y|F~bP(!g1Os)2X!9*W8@Sx-h~$$1YQy496!V-~qG8!HPtSFvf+=>kI0jU} zJJ0*lxkq0JT14XvNh4a$ZeSbm_0)Z2#48ur{qyxm`4K^Bt+0B&-oMSl2f3hBMZ}!M zsLF+$ZJd9Q5Y-?QTpIx-5IWwk50ibnhx`q2KBj>LeA-eE`9gxrJYbx_F(#UGx+`9C zC()U|1oI69f_2f{vhYZVS0{1h5(rJANoGoQL36$=rUpq6HCmwOx(}|?i9}~b!#DF5 z=(Qx`5CF=*L1V9|BIh;E<+#wh*L8%)E2XfzYzA290liI|!&5og69n0@f$SmseZgpi z*7wqs#@Z!5`T_mTLrPNL5;osItY$N(2db{r@3IghM*SnG^ z+uh-dB|@~+y=$@Fpd!WqXW4cFKM#n#ekWQ9rvi1r#Ylcn4KMHE5HC4xU3m#uou4B_ z#8(Ov?P4h!&kwyl^l~BQhZIs~185Lm$Y)v`PkL0ZCl90D1*A<}OmOy}X?gtmqk7~1 zc6ZH5R3txS7P}l4{#|N!yLWpuDji8``uQhdSL96-Qy`G?TTrLl z6{ekm`GjAK@8dH>ezr5j=hgT6KHC}M^X4hO&vu6Ry!)OYPP(EQr*Y))4Do%U^~?Ee zXNb?1bt!Ax8RGNOyM2w@8RGNmN%Xmyt8tNoIAXl#>+bSZU&j_L(Z?y#q^D_|Dbq1Mh;67$MTkQr5Y`>w;eQUO`&2Q0ODAuAXg zti^shC&G)r?kLRJ1qXZe!JX~ysrwZOTdLP)aAihSTXToaeYou znHB%>1w0#)x#V`qC0Fo(-e&$oA{?EWzmT1rxahbFKur*r|a`bK6!;SV)hGTznbcxtprHhQ?!dPl3Y z)M^yPtwxcu8bt;3s{$ouUV^y|$?YPEy8OF|x&*Ub5Ol#`YP8VZDDUaQqx2Y?uCEIs z+L&H54<)R2kh0oA8M7pxcWxiSBAI^# z?ccqP7oKt?YR;d>nQJbR4?^q!+F~SMc!MVkkQ5lKMrzh4JaZkAg#yFPNIoO*E=KZk z0bnP&q<4$#eN^};FMJruRU$bFz&4BI zEF?=sav_qFtT}?@T#;Ob*(|0F{D`TX<$^CHon|hwSCXPc^=ISR&+~R+AW6m;( z?3Kt{`Vc2Tu4Q=aNs^6{IdIYRVDsFm3M?;L`&h>bh0$M( zy-}III8ISA5NoZ|pI6}6TBkpVKV#mOH)F9#jL&&n|4~8y2MIT~IG|vUAlr4Wt~c`duh!s+$2(%?2d|M2%Na1DTCYud z>%3V|&jHR+NLW}*L(;;6k`ur7VzE}|c;ZtEzzAE94+jTC7i;L;=mHz?TnU(x7GO#) z{yKvePtLN~d{aQiHwl@$-2`NQ3XXSy|4w<6JJ^X$q)U$cckW}W<~jj$p&O=j%;&)c z#LKU=(JheZQqn?~k|knboY8n&K*lGDt$%ASXs)&auabZ%DFEl0ls^2qm%{4>WPFm4 z{ktfV4(2<$yzAxl&v+=YK|n2ZL(P+`eLD*8W*gxmi7+KCN>FlIu@~QW1!R1Z`1+kY z@FduPw@AQwl(ryKvUGKc{2fVt5%dj7o?*C1~aVE4Jfdc9LFumSS} z7gWCs)CDzfvj98kb{DpOM^(^Vdb=ehmLOqC2})XIpyV2#l=x5p#wSSzzeg)*=B>0L z7f8sIv>;P*Rf(6t9|_3#Bq7_rFWdEnd1nJ&B>_{?0!+y%-}&Uv#{x3GNyvWx7-H4h zkP9VbN?MR9d0>|pMFOTI2MqqF^yZ(ukhclQ_#`32-}jT%#kvCWP8)KugiJ{bWlFC5*$enH0T`bI z;5;Ip|H6xlc)RT;N@Nq1w3?vg>VtL@1j~DK(K98ti?&fmcB%%yOe5%(X=yID_ftJJ z&zfcXWMh;pE_FBNzgOcze1~WZb!1~O#BB;jt+uS+=3&6*WQ@9?}+(DSOEwciRmlum(P0Ux~I+ zN4A|Ui)V}CQ|u-u$tEdjwK#1e7P-@eNk-YL_wd${ZSEFHyYJ@LqCJ$7?KPC`H5BbF zKuzAoxky-Dq@>l}LL^s;<|uc~-V9EE%07U!+eG?Cw1;A{y+*RVMm}TVz7o zCKDw$9Jc8}v#pr~=DV(B?h$RHjwDo$ES@9U-fTBngoM>1B@0>!V~^5nezTht*nKY` zY5ytm@}_dJdKe;uDq$CRPZ1hz|<4 zTgux>b+BBsH!~K-&;4A#L+Rsi+)sGi1be!U>Fu}p_}YnMN{g_R0>?;(smC&l^>^~N z9gLCl(e|LwbPXY zcySg~l-_<9?uyu*rg|HGVAa0RQ-c!^vQ9hnj9wN}OC(4)#DZf$<1ZbPKo zl%%B42y7}!bhAo8!`LM#DHN1FT1y=iESwhG8LZ!zdV@}U2hB!ZN3W0D7GarR=uKJC zmwHxS5nl2W9M&^nP5};lT2Dg4LXncTu)RIjb6I|Veqo5-&!7*}w(l~Qf;qSNYa@fN*OiBuvx$up~%w=2nz7%Dbe99pnhVkrzSZG6J%Xi}T)hhPRPMpzfy-t--04rUa3LDtUuk>sjR{P{D{UZ5*(q6pgjLGf@1@C&? z;}F>AD~bhn{MN7a`L1|Z6LlQ;3d(aRw4=svb1gimcjMQ?==8?DCGsd7ZMH8f(K{%m z?3)tZ3H6DUN4(LudK*O^9{FCAi&Z*nG44A(54HAxr}w6fB$DdhWdcW@owZ9Id!iE< z8-CU6$LHK9{-O~^1ouo@{qE<1x^maBRqty_|XqJxX z2+iS%;wxS1KXHy)%5R_aDwW-!!xZ40v)SfSeQWvMaB)xHU-ce#H_GFlMZd~!fZ%a( z&*DVZVV^#3_It(+tp0xepU=H#7|OrFDSFUwqEuR(QjeV%G+ZwzyIJ1FE{lRj8Fpz? zhF!E{vI|R3Fg!5@z!m9iXoArk1AKRa;mk&hHTIQHP8U}kO*EXzSRPkg6f&GMh!$7W zk3SwVa$Rprzf59=u4Kr#8+3s1rzGQSFwmJ{qt{SJW~T59E%NA28IvZU!@1c5#|ZSZ z+*dy6kiK|Zl%9m+Gly7;44tpT#^2EWZV|&dFhuU`kr87ivhQzTH0o+e8|e(BHh4Sm z33@~(<}5{w^;l9z8W{Be=_bu^ZunCJ=Vcph*f*N-S9uC(A*3nic?Uu8ysZ@wpv)aO z!Nit4z5eM4a<4}S2axa>Al)YRxM2{ak3;vPTl84(sNcZ`6p7P-tg(NY0{!XnHC0rdMmjA*)> zNml9bY~o~P0B0k)GnwjuYg^kx06zsrJBpjWh9IC&`51|+?vbGLMpddAxmJhr_)4E( z`P~P4w4UpAVAJ0_|B4^PE~j^VtxnMWYkWN#?L*+twkws}znB9wiq-k?bPo%3_I8fZ zUW#=KalU#cOd6oXKdT!peBd07gmo_~tZrOZ1_WPu5(unRS&tf(fM^Wie0L4w zdRL52*N{8xjWs8$mugIQT8j3KHcj~;$s11eja1`&g|lC6I^;(P@Oj0@7vdy=<{r!@ z_ZrmdbPJ*%RiK64)wPU_3Ok*P0*}_>!iM;KbSt}NOF0B0-bA!jISp}9M-8=>#ak0z zQU(g9FAPLAaJ?fK+MwNAYa0#G!9{fpC**KjWUr}hT!ZYV+sGMwI+qhVva1Y&YR!qhaC(e3bG-^?*lx^rFQ3aj(oPQ3HI z?9TKAsM5Md-wFxc8wD=RFgiH9x)kA(aJ!7l$&}|E7VCqO&u19l0ILVXP)aM_pFQG%^9Fd8RZ+NL`M}G}pyFPx(T82nQw$#0rAu{QIY~~}o`}l1TgqJ*i8-$q+4d>=C(G^xle`#<$ zTh`!!HDS>%igVD8!SQKBDXw5V#E&*KRx7MqveAmY+}N1OjwT!3;z;!)awavEy>(d{ z`AwxHgq_dr4Ciu;IZZpJoxzM|MkC@J8uvbozb@Pi=R;oHhUz;uYWYXQqZ!A&`I+i=7^tP8d^*SO0Wf@sfZe-nyaV;x%?y5TWZhMvx8L8P^{KMWKb zzs`i8Tl@Q4f(61pJH3qd$JQ*gf11DNus>MSc3k^YCwu&^PQt2T-?TH%tdK)t#jyVE zE71RVeNyUwvSA);&-MR(9Zp35Yy63JkN!W>f$RTz9liR0SVyk^XLj`J|5rO2=Txfy zTeD%Ei~$$eBT}9bU=J4JdG}2Y<4Jm`_FwU`QP|W*2}?jMF@<&Tct|`7OX31rY))sR zivmldv(!nJ9gxlTt}#OFp3cUcs@6>s+ah2syGX@gSpbEAQmw0m5+O0x)#$3^TK7!s z$`-ojqDsw)_qrJa$~tOcPza3$=xq8xV^2KGG;U0C1fpp@^|YE4-hh#oD%LH-F?hr59V68dHnr&sIq>mpAEanxS`r4Y_U9@5HkP^mcEJ`Nq79yIK9487k)HE!!CsN4+o2wQPjDyV~kqt zFBco#oh5}yB~9|UIrOG}4!qGwW5y+zD@7L@s<$*;2kXJB~FKGYC!Vs8)U%jrGC<=Buz zt?CG4iH}YZ(24h-s=~L%#@!66?ipcplv8SkXu%;qY--l?Qlpg*l!xT7pV{h1xlB$k%sQLuhzM5h z^m0IWr=m5zIwsKi^}WlCEIamonOO*NV&Hq;j5Ka3f2t9ezC4mowf%X9 z^Xe9HKrG*=q2TGc%cUwNE*+6?bU^mKmrIvFI4{2Ha-*7p{PkCOp&XiM^k<)sGWxK) z|8Cri0=2J{1xP(@xElpty#@t7x{?>D2*PnLfryX4}UYVL3r? z)!H>dKs=ij_;p{`48{bZ{Z-B^#N{-Vr`=^Vah~prCg9$7U^K;XK=WTXla9pMCwCd6 z*_T%tJ$+~rvx6(0xgGCywV}`uRWt%;mkDkX9V@9y_Dheku2q$Jhu8(-{UEH#eBLKf8TJ7fRj!Uck>v}ouyi=*% zY3Im_GV@7lwcXdBpjNA3mRSldnzTWQMM&Krk6IgaLs_+^;3n%0a^hLqY<9J2K1H_9 zr^w*$sZf#a{ij=zQOR-@nQInsXdYQg9h`Gxh3bp1V!2v_`r^@sUCeKB=*d!FXMsjL z{w4X=QeIhdS{}FFI-r%+TYtaFXyEWRrezYQ#W>T~m}i7Yjm^8oxY`jZxHAVv zM}!32yMgoDnZ-~?tm&=BMbLMXZapr2_xIc6#5+m)ZtHEoOW(E2JBGfCCM{56VVa5M zX+3E?&SkAGH_~mx)}{XD=gV10oD20=pY6;y_A1!5m?$+IDN?Awschy1<4$~AaJT$s zX}|l}mfMZwTo-|k;fsomdWqA|Jr78lmAWP(duu4AMvJ2orraeR#g-avE@$a+D^JYQa+RlhmXh)$ z%_(Q8r8%GW;?0e6x6)*bCm9FJAGdGiy!}?JJDoXXX~HKR6wK*RZ{;b$`|mMs%C(|2 z_=o=fN{4>z6vRlu!tq7PP-veWi5s>4>R1}I&?n+Jn8}5NSVnNyl2~xS`o-PJjTz>r z8#BnX!V?Daa1rrw?n}mS*=Giiu6sM2Ceu?d89jj0_tT7Y!=WN=K2%$6+$woVR5g|B z<*^1@oj$$VXi+hI;>&}pjn;B20b6XUxjKj#KjR&N zgzkGqN)=jmEq{f3!$3Iaj0NefpI$MtS^Me610J$~EhOQH)%Hy{&hzbD9S*|aGE0NB zbH&G;3^a0f6ug7A>x3D`6`tWBPIC_j4flw*e8b^smxjCOb)yB#pJ^m|#w1{(aXuz) z7O*M71N#sOo}X!)X$w{w{SoVo8q!DU8v(M`r>-+H*}1cfvz(1eGhc|WK;z&BdQ<|O zCU}5|^42V)i30gP%c$4g%H}-6nLWy*Cj$)&Et7BexrxTDbs`!`ru_GehV0te#-qm^ zhg^1ezHu7bojgYlr9<~i?muaCZ@1d*Z>HU5bNBI(z3MuwRi0WPcgv2S_H3@3_D3mx z7bw4)D4!|bB(zrn(YK8>(BS0<4E}s2WtT&HcHulpBa6)0tm}hDS5`a^8qo?@;}?tb zD;0}p&Nr_7uOB7Qe*6Pc!q9ZUkkkxy;KJwM9hPO4({=c>Mqe~M;t@HhBu3tS)+hS? zvWE0S%EHQI4de)0RA96Q^w*Xewe5qQUR#qt;KFt+G1}Qug@i`ziAtmj@!asIjgf%+ z;wGbx0g)@^$I<1Shc_;gJj`W+kRSF6p1O-uK6XXY6vLMpBUr(c#x?(k$<^dzImpm= zEamzCPb{y^;Nq>^t^c1`$2SqB5p&SeE-Rs3$Q?`0B{4TGcB{z-7aNI~x&PJ#-SmHW zZho@d$go8qN&f#Y$mn#P+n#sL&0Wu(#JSn!3JM{&4=)BMAX4+TJ9+dOzxgt+GV?{{ zFTL>oh zND0IgY>Lw~6YIgdXnAE^>#hWSZrkzPi%0BbykIo6*$uVhonOGY8s*pvQ?Y92COFxL zK78nehm8n)UMFc`T7+fSAFwdR=?~RBtQ_CMv~>q`)LLlR#4T@4iqkP}9{$7Dq@bC9 zO*%4nw}_n{G3@`$a}QlG6|u=}93v42K^J zwCGvBSuuzvFipFaCECo?g2V^89D7A7p+g zR@;`vwD|g6LYx(U?MMb8o_2OUGJK+5I|pcBMM@@mKJYW>|-Cp zjqn{xxIF^CWqUbpgk7{4KDHa-f;}EL0)rdjwD>c73?q1@2rwH{q5+(7#1C^d%;x}B zWO--Q#dfN0=3$|TIJ8eh&!{VicGz;kSkdJDM4MG9(FX4`l9bi#{C&oTaKYLPT@9E^ zSk8Xq`l?p^a~m9cW`8-8;Lv{Kk=&gk@~~afp3O5VZTOcTj9CiyhJQ5DI$8D>Kj_CL zL9j=#2Zd7g#35(`GK8?h>v&P^M5w_<(3}hA&dO|m|j^wvU|~^0YNi7 zz;z@Qr~iKQxNy%rXf)5AQa<=;m4RnP2aWr47al1Wv8k2Te6ti3nHvxNV*D+fYlSrO zckRB)AjIQJ@{mMlml{)n;uP>fA`cE6bgY4ze7bX{gbr<*_~(jwK`Y)H)a3qEiw=8w zz}{DrolAtaL>2D9xh$5H+!V2g2PP%Akw;4A!9T)-1i5zj>G0M=Ny)CQr@7*2ibH$i zkf!0}5zh8MonQlw`B4{=ao3K+U>ezrp~G~N6Ze{hPi7=Lht zYQj9lNYc#*@kiCoJMagKtVi(&rqd$)0aHB@Umr<6s>B?vh8u+eGdc=R(tz~u5M{p8 zlUp=&iopX!p(*(ChUhDulTn@RYiDG{FEEmaC(4y&W3Zh;Z$8byJ6o<-&WJ1{rY6^r zkA%?7p{KPRk15e*I*K@SF&luqzQ=B8fXCHHKA*8_$y3X`U`qgrj1}BxW zT{V(_{=-{7pS_xz+*I=9op4f`X*hb~I_pc!j9^je?A4OQFl$;Xxsx*t7=$1KX{X8S z6~uYtYb7_&bC_VN#$T*UlwrtyItPb$G~dn1M9fMIs93YQxrU$hp%22kqElJWc=B8_ zKS4s@asoI8%MS+O<-b55H+(Fy0pB?sM4QtW)J|?88D|o_g;8Y`-av9VmkwDxRy(5HZLu? znKKOL-TroHoxdY3IaWRZ@;%o{Pk!Z3V7KS%BtPk#w{qCWk#3mi7JY)GFL{9Q|5x0V zfK^qr|8p+O1ut_!ITw*dk#JvFL|n4sW-4Xo0-B|zq_`rW;+OXMC6>4^pwOsk!KbDs zDkyryKtQq3&@|CBwa{Es5=%`>`#=BZ|2%mfUf%OA^S(3h%$b=p=iE8$ zX-T>-v3^>UUFj9RBv8IjZ}}4I$H~~WZS*5=SX&;fJECzaw*H;F(MDtRG<+Ks49S!0 ze5Km{t9fY6mg;h0zy5GyTlLr;qL}S##nP(j6+g1 zVKSt{3%zxEwgdik3nue|Syi4?F!{d~j6aIvkzm{J^dXL{V3rc#B@_FCS%N@6Zc09U z3Qgu=Gx85PjZO_9v46jJbw_g&r~CW;(z`*VpKa>zf#!;@SM#RFMpD+zzTJZO;~JRR zf>?hYhZ>}xv>;>aCdBthtqIv6-Ml4F_(DrtLbmQ1+mgHvdj&0tb)AtdcK+Csd?MG- z_gj(HPBowTnRDruR;0Q08a98xhK!>g7>lh}v8Bc6u*aRa%5>&5`luD@7?``s&s?+F zPkbeHp^F(beibvVxf6aI?!-PSmP`A!CN1R}HMun@ae4}YZxl>gD7bvtupuVEe0xXp zL)tf(bb1OI8XiJ={rzs$S)rsxZdimxekXIlx>r&RKx1J*}%YT1HsaNFR9iI!4WbIQZ=G zN834RZ|}r5dl0`&;NFE(Z0pE2g!EXfw~Z0DSyVs+Iys7%X!gq_sIQ&%iWF~q`}J=F zY)dO_Q0gcIt1~TQePp@4YV^@$!_+oL8<@5&NeSI6K2nTK(l{SRb+PODA&jIkMz~CWun3T$!&(C29OMfe;7bEGrV9RdF?4&Z@UIPl|Jrt zGNSMCA6iyo zWv^iDS{t3g=+A6)CZo@)2ZxZc7&%L5$Dw3`JYQWkl=wKvD$O58`pLIc-EeYCo>h=# zHG4ykWQT0@O-3*K)GDuL^coxe3!`&v^esl;wWY6N^j@3%Hlr`t=wCt4G9R`veq#!0 zHUoDU{ku(mm(lY#Su=Ex(K~GP?~Gn+qwh2N?nbNr14b{)v(kU)16s)D?{-@me=>z% zZ8UzW!Z?MhGJ?Dzn?EVGYA$yL|CEhh!RY-qI)l+$Y;-20uc+Hb5_bn(>T0!k6p7b0 zq$O5^x0%8++G7l9I&1YOR`w#sK4%vaM&I3Um5cn@a(tJ`%WdfwGkRXORsSBNmmaXv z2tl0)EP;HMxyokXca|W_X5c=fH`)x;583~>j+VLxm}K)NTZtvJs5UxjEGc>lJ%-D8 z^4s6)R-HY8D6+hael(H1BbU<$6G^mOLHos%X}C{15Kor5=dSa|?L$LJGUu=JH|MLd zlZcZnXVI|<1lM~5Fom@iuOu>y-fqG>MuKroM`}}e5v}2z?hP7o5ytCQQS!MRD zO3pfE&$_}{*X&vMIqMI57P~Q9Tr7+e868=%zX8t`4A06w>^)Owx+9tNl$WaalF9F~ z{1g4FQ8lmu_1~yy*Ek zqHH{D1IRUS3#4(&V31geXClFRCvrA=sT|s)d+{(oxp-A&t z+AM?k>LBcqL82K>&%l*%mj04K@MLc@C7Gl@gh%mr4f zKO%a}4>qg!C~3n^X!BJhh~Yk~uqXvw+6*5pFIz<-g6p-xI;|8>xy%b5$^nwEN4W$0 zt~pY+Sxw%?BFp^M#L>aJB~C!Y4pL~{jZ!~bO9HJcs^;gglyCPuhrd=Pruf(gw>OqY z*$)cc>U;u$S+qW2!%t-`6Jsxyz)|QsAf%3Bt%X}-T5Oezzbavt;@DSL_{QNV3A1lE z_184{FTX@iuqR({qAA+%Y1CR5ZhNM{SO0}R|Ed{VQ_lH>ShtpEdqAA{ggkFsVlTy` z4zvAA8r%J$XXZb>Ag@d2^%SJLx=brmP z0M@^yKo_=WW6EAS^m7sE)lhPEwP+IPUx2VmREFyye_pJH|-6gjCmEtlXi0`6bgQu+f@Y!*8A{dNQ^3hvLF(*X@-FWMr9_##v09O5P4r$cjWdaa;0HwTY1YG`^c zX+yt-rfvPUif!>>_l&7Ev|YE_vZ?o8LLi=tb z?b=#elliB5+U;yr*N#=K6HVWac@Zx~6M7VBZKb$WFKv5xGHoY;-UukF!V<|$7ks_B zyTl^de><^mjoJb9hmUKkuGY90ZMVgXeZ}AR=^@#Q`weh%W@dB&p{hmuFWI;ZJD@H&uk|sPS|0| zEst_Ts_r0uwj?*}B?(88TS!tb)DLYrX|vOolg`k7eW%R2SlYw4yX;HzTfNde%d)=PqTPh{+HGIWcj{^Pfc9c&ds@ow*K_r% zRnK?TIht#zt#Hjf@1no3zl_-qv2H4JqXw(E>#sjGQ-|&)=lGBxQAoN6@`;6HK6{yc zDDE%3v4XcU@YDqlI2$@h7!EO@FE1o(lhMg+?1!loAEifuX1(e_2Fx>FoH0j~3%76-fs^`%ENdGf)JMxz%9?_B)(w^?VNIE-# zgFQ8CE|Mm4rBJP;?S8_YMhI1+;UJvM63M@^fsC`^T|y$l$Aon55Ec^KtwVT7Xjq5Xkj`B?guK%&q+3`- zXn5S15SkQX9RGjP?ytTYYTOd4i+rDk)F?jGbCgjb(_hm|?cbO9kwwEt8KWC!fi)Ve z);;x{?M7FQG7jVHay#~P>Nr|shtINUU!qACc9tD`06k}6yQSE)3u#oGW@Ne@yFJa1 zGmhXcFWIp(XwVqr>y20jV`kfoNFQK_N8_7Zz0i&yPw$V>jJN*4rhb}^9;>l4?ATHC z*jUY{^r1~VpGJ<;w3F=Et!d6U<0$U(oE>{54H$16!E-oZj?IW;Dor1+<*>w#pF|&y z*NnGMwW*(`<0cqi=f+psu_Ng*3tO6N)80h8PSmu=*|9yaucXF4X2+gMUE(#DUFX@1 zT%*Yr_If+^CR!D5-0sRE?lB+Qbmb&tqI{FOBp91vji)t3s6&R3X@>65`3#Mtn-Yxe zX0e3l7D!U0*2FxPNK&#aNz(vfk|g~DI2`z0V0N^Jd^*l&X!7@f{|T50U`G_>|HAqE z0G56hFiW4J$>%JRq}e$CK*(oFA8HD7GzB*(q~d(8P>|+n^7)!P3i1UwU#Q6!Y4XLI zJRTWXg7c-Cd>L>WARWMtnM);UInGxA!X$b;(HO|<@%}+~O#SDm#O_*r!BL^~`Klo2hOsM0(+#>4~ z^J?tq(Q#9>ge>2eEV7W8zHu`w7DbsPgpk_|jp^KPyv-&ru%AU37SnUul&N(bcGYC` z!Z@QTfR!4aVl-ywn5eiZiGnws@o3T%V`JU`7h7z0iWxNRop<6bMp^P4P1Y@@U+nmV zesKxYgo$!1zt^<*SR22}Vk;!(<%HxZi9#aM+_%a4PZP4XFeiix8ip3hn8Ycg##v&* zG7-XLG-Rr=aSKMiYEcc18I+hf$)d@N8_!kary6}_H#&c+aUySBd%(4H*A>(;S-WJz zmw~MoCL8~VY;`8v!O*BylEfd&Rqcy?22GXBAOG9IAY=5+1KzKrp}UQ@Xyk4qp+&om zezf0iV>_LBHjPz{if-)&dZEJTsVmq(V@r&l@=3wIElAyx&uCsL*!T?+(>^Fj-G$G% zw(ikqR4z1n8Z$RK7@SWa9{}?PD(^9R>q{6MfXH_?VAAoFN0 z(>kJ&*9DonnMu9jk16SjHq(&9z-Ki2?q*>#{c~*pD>4YO4_M+A7qKYjm|nFWAQUK^wLq3Y`!I zfO!`PBMXVf;GsFbjb^KecJ($9^#$8S95-yIv&)T&tdZxpi>N=KrC%WGnYoiVx zI`UDWQE7ZV_X!SC^Mr%!JYl#=Qia+XRV2Hs3g_uGwiwc_0v+N=cXjMszPCFmxhlQ@}TRg1&x4BE`{w4MMAAqVEMdYKhVfbnhPyVPQkE_&er z3?Dxr)T{BVnRNiEWp?c(lcwV;(&d$D6<8)Zfa`*tdXQC=w|r1kAE$7I9~8=WH9GxE zQJq`A6t#Xxqc49cY7n<|=u~uTzY=N%8b0}zR)re9q@2^}Pnxp|Kgf~pLb+%oj|92u zkVv%akT81ukT6=U;RT0; znH2)(Y4}Kmi2C&kp`Ut0(Ah_XUeOUAb}a6j(QWAN9uaEkM}>H+h7TPT$u1ui?q+`@ z@Y-*Le!(|Fep17?zu{)x7aX&z%~i)lsds7kxQ45biKr|%u0`j#sHxK9B8ulV{sV#K zOd5L_Rgg!68A3rAy3Ua<^#t?bEuRo=;)Jkx=7g|#_k^&RUMcunHGHU2UUEuQ|7LpoYqZmYr|9f`aDIwuF~o)*_f_B7Rp#dJSfCX7J03Ur z0?n=f^@t;{Ri~d&)4OODQ#sC&uKKj7m<4AF!wv!;3U~w^5;;jv7N+9XR(NW(le1#VmmW=V4{#TjQ^E z<~PPt`GorXF{7)_`NvBRhPf_k=~j0ynNB)x)Tbq9C=8me24HtPO?{?SE~Aysyyv)}V< zOT7kq4tL&m$z&*SptA>h2GX>Fp04V;fu3oy^So;&!;F5^9PQ~t2Sj_i&|%S@L-k)= zHyJ*3aG<5pp5F9Ww5MJ@6YUu%%Rj0w4EF3L>x*xh44a)A)AS*pCN*n_XQod7;a!vA zN1Z#Bmw5W9L*DT0Ez9%OwQqVh+A0^*T)pBi*V3bUr75Utz2XO|feTPEZRMgg2lcXx z;y<+bq_@G#F9^3ixSj8vn2qi%4pqBo{P%-s)Rhof%j-g`umMc_h>HC8E#Fc9nx$-=I zFEsyfRRUSM20*nmvH_R9)qt1npAERp)k0PzsB=R0hoG7mxQFfr?(aGbJt|c66L(;TklYRys+2B#Ab>M@%|% zE$vN|W&y?5y$zn3khEp<^ykxXpS#{kib|8rRgjd+bPiDt%lT@5qoQwvwZ_-GD9^Q? zP>FlS8LvxH^;?qU@;2_HfgRsN`XQ3kawq`2W#D-OZsPnE;1Iy`I1d{vNt@oly*bVs z4V0v}-;|`CgCwZ~&MUync^kf$`WOav=qE{A=wBn0E)$x@Ns<>}>uBU3aAXv0MB(?E z%X|zICPqk-FC04|QUs6 z*rVYgEFJxHBr2vvEgq@V${uAIJ_eUm+%aKQBT_PF(4+4t5mc@WtmTY zmXG22WEA2z_-GD)hX6msNYVlN(P*XJh&kCl2IE|vB+UcN2Q0uH(0ayP3}OjjDPS3x zWsI2yA|0?Cuma2~Fx_j?oTY$tXDM>IvovyrGu9{njR)rIAh)iFuRWN+oGpM4AkI@}USCHSkYd<*Mz z^u~N;qp3fNRDrts2z4ESVlik;H!e^nSOp49ax&uRK2-aX{&S2`rXG+qNB^w6<<0lO*ud-mMYz7r!=J<)^bOrDFjQ( z57mTpNC8v4XQ! z(usHt&vfpvuYn9hwvht~?xa?d`HuRds*IDJQjYo>us85Xr9GWqpm??~2QA}vyAs$J zi$VOr3JyQ8`XZr4OMWBtc+uh;sun1F9%7La@x};LMh;bz8q!Mh9SJ12~#q6BLOjXgVRmw`;>@4g{p|o`UBFoPp zyGiD+Xzm5Yx5HgVdSLZA+s|NfhkHl%PjdBO|0Vo~Y&&FfBgy;)y?;RoYWgckqYtD$ zKI}gZSINBY-_TK@OS@lGd|l5o(n~U5SKq#egkY=Pb9zdZ~kxBy|MbudS_R zz<9x+LjXNYdT9Uvod7>#APWUQ4Db-T3>dEy=x{(hbW;Fsn*L45I)fhpU^bY2#_IyQ ztCJKV-2sCEV|D|xJ75hAOb5LfkOjyGl!2EEV8;M@^@{R>96(!LRmSpV&~aXRX+EV_ zl`c+f?L3Q~xTYHTvMKH!dw(0i35D-04zDfF|_uY(wDD)xq0iQN_dV0n;jWVu*QVK_hXR(%_7Bk zuYv9lC;`oY@dkh%2p9(&6#y6T`~V?-6=kr5#gZ9TE=yRLJ$BePk#c01fqfHsEt*FCtn_||FRCH4%vTSQREqM^ zOM_6bXh0d#F<`tH(1QUv(7yz@4=4dx(y@G4@@7eg55(2{tPJ9QB-mg&@tU7YpohTT z>wpaSV8D1oLB9bQiSw0!96&O_lFr_bB^~^%zoB$*z{-;kUC`HVC}DgFum&`%WOkgU z?QSa1bj$J8OK-tN9AFH99rM8(i}P`S*P@dz|OM$}Y)py8oWizXh}2HRN&Y_NvEd z#P6DF&i|tN68+qw8W8&5t?r>s?<@UzFOcyhRXX>+(vFKyKT&-6zS4|$5`L%z78I>f zbQzTxA0L|>_wuM-z4*d&!m3JPMJR?b@M)!^Iq(IJ&Cj>vx;**i0 z$}oPZ4QFf||4FrL=6fb_>3eq<#veW*MF?cf0y}c3Q8tO|I1Oxe*c-Q34WJ)bR2`rF z@2VN}o<()~|DxKJPSBa&ZO^L2tB1(*u_q;g%zW-Xsugb?5C<*AUM)p3aQ&=TvJ@$Q zuoNjY*OKDx=Y$V$;QA@1gJ)jRu<)KOFRnQ~eEFJr=W8+>8%q(^(sQMkn>8 zDXylrykTFW+retYE-M#p9AKBe)Kk6WYMQOb+<8nx)7rN4slNel*7988UodXjHi6~b z*|Cq~5J$lYC*RTzjZCeb=dAQMoNYiKRw)7WpN&kX5tkTGQ>!;v_vD7*@Z11v zzlnDYm+++cO1i!=qYS&>50Bi_Qx&Ey12krWU4md*$HgExLzjyk$5s{DD^f0N~io1sw-C g>{0JcU>D3o`GGs+5`Tk{-7gO4n+a