var g;g||=typeof Module != 'undefined' ? Module : {};var aa=!!globalThis.window,ba=!!globalThis.WorkerGlobalScope,ca=globalThis.process?.versions?.node&&"renderer"!=globalThis.process?.type,da=[],ea="./this.program",fa=(a,b)=>{throw b;},ha=globalThis.document?.currentScript?.src;"undefined"!=typeof __filename?ha=__filename:ba&&(ha=self.location.href);var ia="",ja,ka; if(ca){var fs=require("fs");ia=__dirname+"/";ka=a=>{a=la(a)?new URL(a):a;return fs.readFileSync(a)};ja=async a=>{a=la(a)?new URL(a):a;return fs.readFileSync(a,void 0)};1{process.exitCode=a;throw b;}}else if(aa||ba){try{ia=(new URL(".",ha)).href}catch{}ba&&(ka=a=>{var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}); ja=async a=>{if(la(a))return new Promise((c,d)=>{var e=new XMLHttpRequest;e.open("GET",a,!0);e.responseType="arraybuffer";e.onload=()=>{200==e.status||0==e.status&&e.response?c(e.response):d(e.status)};e.onerror=d;e.send(null)});var b=await fetch(a,{credentials:"same-origin"});if(b.ok)return b.arrayBuffer();throw Error(b.status+" : "+b.url);}}console.log.bind(console);var k=console.error.bind(console),m,p=!1,ma,la=a=>a.startsWith("file://"),r,t,na,oa,v,w,x,y; function pa(){var a=qa.buffer;r=new Int8Array(a);na=new Int16Array(a);t=new Uint8Array(a);oa=new Uint16Array(a);v=new Int32Array(a);w=new Uint32Array(a);x=new Float32Array(a);y=new Float64Array(a);new BigInt64Array(a);new BigUint64Array(a)}function ra(a){g.onAbort?.(a);a="Aborted("+a+")";k(a);p=!0;throw new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");}var sa; async function ta(a){if(!m)try{var b=await ja(a);return new Uint8Array(b)}catch{}if(a==sa&&m)a=new Uint8Array(m);else if(ka)a=ka(a);else throw"both async and sync fetching of the wasm failed";return a}async function ua(a,b){try{var c=await ta(a);return await WebAssembly.instantiate(c,b)}catch(d){k(`failed to asynchronously prepare wasm: ${d}`),ra(d)}} async function va(a){var b=sa;if(!m&&!la(b)&&!ca)try{var c=fetch(b,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(c,a)}catch(d){k(`wasm streaming compile failed: ${d}`),k("falling back to ArrayBuffer instantiation")}return ua(b,a)}class wa{name="ExitStatus";constructor(a){this.message=`Program terminated with exit(${a})`;this.status=a}} var xa=a=>{for(;0{var a=g.preRun.shift();za.push(a)},z=0,A=null,Ba=!0,Ca=0,B={},Da=a=>{a instanceof wa||"unwind"==a||fa(1,a)},Ea=a=>{ma=a;Ba||0{ma=a;Ea(a)},Ga=()=>{if(!(Ba||0{if(!p)try{a(),Ga()}catch(b){Da(b)}},Oa=(a,b)=>{Ia=a;Ja=b;if(D)if(Ka||=!0,0==a)E=function(){setTimeout(F,Math.max(0,La+b-performance.now())|0)};else if(1==a)E=function(){Ma(F)};else if(2== a){if(!Na)if(globalThis.setImmediate)Na=setImmediate;else{var c=[];addEventListener("message",d=>{if("setimmediate"===d.data||"setimmediate"===d.data.target)d.stopPropagation(),c.shift()()},!0);Na=d=>{c.push(d);if(ba){let e;(e=g).setImmediates??(e.setImmediates=[]);g.setImmediates.push(d);postMessage({target:"setimmediate"})}else postMessage("setimmediate","*")}}E=function(){Na(F)}}},Xa=(a,b,c,d,e)=>{function h(){return f=Za;)Za+=1E3/60;setTimeout(a,Math.max(Za-b,0))}} var Ta={},La,F,Na,Sa,$a=globalThis.TextDecoder&&new TextDecoder,G=(a=0,b)=>{var c=t;var d=a;for(b=d+b;c[d]&&!(d>=b);)++d;if(16e?b+=String.fromCharCode(e):(e-=65536,b+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else b+=String.fromCharCode(e)}return b}, ab=[0,"undefined"!=typeof document?document:0,"undefined"!=typeof window?window:0],H=a=>{a=20>ab.indexOf(a)?a.getBoundingClientRect():{left:0,top:0},cb=[],I=a=>{var b=cb[a];b||(cb[a]=b=db.get(a));return b};function eb(a){var b=J.wc[a];b.target.removeEventListener(b.vc,b.$c,b.xc);J.wc.splice(a,1)} function fb(){if(navigator.userActivation?navigator.userActivation.isActive:J.Nc&&J.qd.Kc){var a=J.Cc;J.Cc=[];for(var b of a)b.Qc(...b.Wc)}}function K(a){if(!a.target)return-4;if(a.yc)a.$c=function(c){++J.Nc;J.qd=a;fb();a.zc(c);fb();--J.Nc},a.target.addEventListener(a.vc,a.$c,a.xc),J.wc.push(a);else for(var b=0;bh.ddb.Qc!=a)},wc:[],Rd:(a,b)=>{for(var c=0;c{var d=t;if(!(0=f){if(b>=c)break;d[b++]=f}else if(2047>=f){if(b+1>=c)break;d[b++]=192|f>>6;d[b++]=128|f&63}else if(65535>=f){if(b+2>=c)break;d[b++]=224|f>>12;d[b++]=128|f>>6&63;d[b++]=128|f&63}else{if(b+3>=c)break;d[b++]=240|f>>18;d[b++]=128|f>>12&63;d[b++]=128|f>>6&63;d[b++]=128|f&63;h++}}d[b]=0;return b- e},hb=(a,b,c,d,e,h)=>{J.Lc||(J.Lc=M(256));a={target:H(a),vc:h,yc:d,zc:(f=event)=>{var l=f.target.id?f.target.id:"",n=J.Lc;L(gb(f.target),n+0,128);L(l,n+128,128);I(d)(e,n,b)&&f.preventDefault()},xc:c};return K(a)},ib=(a,b,c,d,e)=>{J.Mc||(J.Mc=M(276));return K({target:a,vc:e,yc:d,zc:(h=event)=>{var f=J.Mc,l=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement||document.msFullscreenElement,n=!!l;r[f]=n;r[f+1]=J.fullscreenEnabled(); var q=n?l:J.ud,u=q?.id||"";L(gb(q),f+2,128);L(u,f+130,128);v[f+260>>2]=q?q.clientWidth:0;v[f+264>>2]=q?q.clientHeight:0;v[f+268>>2]=screen.width;v[f+272>>2]=screen.height;n&&(J.ud=l);I(d)(19,f,b)&&h.preventDefault()},xc:c})},jb=(a,b,c,d,e,h)=>{J.Oc||(J.Oc=M(160));a={target:H(a),vc:h,yc:d,zc:f=>{var l=J.Oc;y[l>>3]=f.timeStamp;var n=l>>2;v[n+2]=f.location;r[l+12]=f.ctrlKey;r[l+13]=f.shiftKey;r[l+14]=f.altKey;r[l+15]=f.metaKey;r[l+16]=f.repeat;v[n+5]=f.charCode;v[n+6]=f.keyCode;v[n+7]=f.which;L(f.key|| "",l+32,32);L(f.code||"",l+64,32);L(f.char||"",l+96,32);L(f.locale||"",l+128,32);I(d)(e,l,b)&&f.preventDefault()},xc:c};return K(a)},kb=(a,b,c)=>{y[a>>3]=b.timeStamp;var d=a>>2;v[d+2]=b.screenX;v[d+3]=b.screenY;v[d+4]=b.clientX;v[d+5]=b.clientY;r[a+24]=b.ctrlKey;r[a+25]=b.shiftKey;r[a+26]=b.altKey;r[a+27]=b.metaKey;na[2*d+14]=b.button;na[2*d+15]=b.buttons;v[d+8]=b.movementX;v[d+9]=b.movementY;a=bb(c);v[d+10]=b.clientX-(a.left|0);v[d+11]=b.clientY-(a.top|0)},lb=(a,b,c,d,e,h)=>{J.Ic||(J.Ic=M(64));a= H(a);return K({target:a,Kc:"mousemove"!=h&&"mouseenter"!=h&&"mouseleave"!=h,vc:h,yc:d,zc:(f=event)=>{kb(J.Ic,f,a);I(d)(e,J.Ic,b)&&f.preventDefault()},xc:c})},mb=(a,b,c,d)=>{J.Pc||(J.Pc=M(257));return K({target:a,vc:"pointerlockchange",yc:d,zc:(e=event)=>{var h=J.Pc,f=document.pointerLockElement;r[h]=!!f;var l=f?.id||"";L(gb(f),h+1,128);L(l,h+129,128);I(d)(20,h,b)&&e.preventDefault()},xc:c})},nb=(a,b,c,d)=>K({target:a,vc:"pointerlockerror",yc:d,zc:(e=event)=>{I(d)(38,0,b)&&e.preventDefault()},xc:c}), ob=(a,b,c,d)=>{J.Sc||(J.Sc=M(36));a=H(a);return K({target:a,vc:"resize",yc:d,zc:(e=event)=>{if(e.target==a){var h=document.body;if(h){var f=J.Sc;v[f>>2]=0;v[f+4>>2]=h.clientWidth;v[f+8>>2]=h.clientHeight;v[f+12>>2]=innerWidth;v[f+16>>2]=innerHeight;v[f+20>>2]=outerWidth;v[f+24>>2]=outerHeight;v[f+28>>2]=pageXOffset|0;v[f+32>>2]=pageYOffset|0;I(d)(10,f,b)&&e.preventDefault()}}},xc:c})},pb=(a,b,c,d,e,h)=>{J.Rc||(J.Rc=M(1552));a=H(a);return K({target:a,Kc:"touchstart"==h||"touchend"==h,vc:h,yc:d,zc:f=> {var l={},n=f.touches;for(var q of n)q.ad=q.cd=0,l[q.identifier]=q;for(var u of f.changedTouches)u.ad=1,l[u.identifier]=u;for(var N of f.targetTouches)l[N.identifier].cd=1;n=J.Rc;y[n>>3]=f.timeStamp;r[n+12]=f.ctrlKey;r[n+13]=f.shiftKey;r[n+14]=f.altKey;r[n+15]=f.metaKey;q=n+16;u=bb(a);N=0;for(let C of Object.values(l))if(l=q>>2,v[l]=C.identifier,v[l+1]=C.screenX,v[l+2]=C.screenY,v[l+3]=C.clientX,v[l+4]=C.clientY,v[l+5]=C.pageX,v[l+6]=C.pageY,r[q+28]=C.ad,r[q+29]=C.cd,v[l+8]=C.clientX-(u.left|0),v[l+ 9]=C.clientY-(u.top|0),q+=48,31<++N)break;v[n+8>>2]=N;I(d)(e,n,b)&&f.preventDefault()},xc:c})},O,qb=a=>{var b=a.getExtension("ANGLE_instanced_arrays");b&&(a.vertexAttribDivisor=(c,d)=>b.vertexAttribDivisorANGLE(c,d),a.drawArraysInstanced=(c,d,e,h)=>b.drawArraysInstancedANGLE(c,d,e,h),a.drawElementsInstanced=(c,d,e,h,f)=>b.drawElementsInstancedANGLE(c,d,e,h,f))},rb=a=>{var b=a.getExtension("OES_vertex_array_object");b&&(a.createVertexArray=()=>b.createVertexArrayOES(),a.deleteVertexArray=c=>b.deleteVertexArrayOES(c), a.bindVertexArray=c=>b.bindVertexArrayOES(c),a.isVertexArray=c=>b.isVertexArrayOES(c))},sb=a=>{var b=a.getExtension("WEBGL_draw_buffers");b&&(a.drawBuffers=(c,d)=>b.drawBuffersWEBGL(c,d))},tb=a=>{var b="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_clip_control EXT_color_buffer_half_float EXT_depth_clamp EXT_float_blend EXT_polygon_offset_clamp 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 WEBGL_polygon_mode".split(" "); return(a.getSupportedExtensions()||[]).filter(c=>b.includes(c))},ub=1,P=[],Q=[],vb=[],wb=[],R=[],S=[],xb=[],yb=[],T=[],zb={},Ab=4,Bb=0,Cb=a=>{for(var b=ub++,c=a.length;c{for(var e=0;e>2]=f}},Eb=(a,b)=>{a.nd||(a.nd=a.getContext,a.getContext=function(d,e){e=a.nd(d,e);return"webgl"==d==e instanceof WebGLRenderingContext?e:null});var c=1{var c=Cb(yb),d={handle:c,attributes:b,version:b.bd,Vc:a};a.canvas&&(a.canvas.vd=d);yb[c]=d;("undefined"==typeof b.Zc||b.Zc)&&Fb(d);return c},Fb=a=>{a||=W;if(!a.td){a.td=!0;var b=a.Vc;b.Nd=b.getExtension("WEBGL_multi_draw");b.Hd=b.getExtension("EXT_polygon_offset_clamp");b.Gd=b.getExtension("EXT_clip_control");b.Xd=b.getExtension("WEBGL_polygon_mode");qb(b);rb(b);sb(b);b.Ed=b.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");b.Kd=b.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"); 2<=a.version&&(b.Yc=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.Yc)b.Yc=b.getExtension("EXT_disjoint_timer_query");tb(b).forEach(c=>{c.includes("lose_context")||c.includes("debug")||b.getExtension(c)})}},U,W,Gb=(a,b,c,d,e,h)=>{a={target:H(a),vc:h,yc:d,zc:(f=event)=>{I(d)(e,0,b)&&f.preventDefault()},xc:c};K(a)},Hb=(a,b,c,d)=>{J.Uc||(J.Uc=M(96));return K({target:a,Kc:!0,vc:"wheel",yc:d,zc:(e=event)=>{var h=J.Uc;kb(h,e,a);y[h+64>>3]=e.deltaX;y[h+72>>3]=e.deltaY;y[h+80>>3]=e.deltaZ; v[h+88>>2]=e.deltaMode;I(d)(9,h,b)&&e.preventDefault()},xc:c})},Ib=["default","low-power","high-performance"],Jb=[],Kb=()=>{var a=tb(O);return a=a.concat(a.map(b=>"GL_"+b))},Lb=(a,b)=>{if(b){var c=void 0;switch(a){case 36346:c=1;break;case 36344:return;case 34814:case 36345:c=0;break;case 34466:var d=O.getParameter(34467);c=d?d.length:0;break;case 33309:if(2>W.version){U||=1282;return}c=Kb().length;break;case 33307:case 33308:if(2>W.version){U||=1280;return}c=33307==a?3:0}if(void 0===c)switch(d=O.getParameter(a), typeof d){case "number":c=d;break;case "boolean":c=d?1:0;break;case "string":U||=1280;return;case "object":if(null===d)switch(a){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:c=0;break;default:U||=1280;return}else{if(d instanceof Float32Array||d instanceof Uint32Array||d instanceof Int32Array||d instanceof Array){for(a=0;a>2]=d[a];return}try{c=d.name|0}catch(e){U||=1280;k(`GL_INVALID_ENUM in glGet${0}v: Unknown object returned from WebGL getParameter(${a})! (error: ${e})`);return}}break;default:U||=1280;k(`GL_INVALID_ENUM in glGet${0}v: Native code calling glGet${0}v(${a}) and it returns ${d} of type ${typeof d}!`);return}v[b>>2]=c}else U||=1281},Mb=a=>{for(var b=0,c=0;c=d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},Nb=a=>{var b=Mb(a)+1,c=M(b);c&&L(a,c, b);return c},Ob=a=>"]"==a.slice(-1)&&a.lastIndexOf("["),Pb=a=>{a-=5120;return 0==a?r:1==a?t:2==a?na:4==a?v:6==a?x:5==a||28922==a||28520==a||30779==a||30782==a?w:oa},X=a=>{var b=O.rd;if(b){var c=b.Ec[a];"number"==typeof c&&(b.Ec[a]=c=O.getUniformLocation(b,b.od[a]+(0{var b=Mb(a)+1,c=Rb(b);L(a,c,b);return c},Vb=a=>{var b=Tb();a();Ub(b)};g.requestAnimationFrame=Ma;g.pauseMainLoop=Ya; g.resumeMainLoop=function(){Pa++;var a=Ia,b=Ja,c=D;D=null;Xa(c,0,!1,Qa,!0);Oa(a,b);E()};g.preMainLoop&&Va.push(g.preMainLoop);g.postMainLoop&&Wa.push(g.postMainLoop);for(let a=0;32>a;++a)Jb.push(Array(a));for(var Wb=new Float32Array(288),Z=0;288>=Z;++Z)Y[Z]=Wb.subarray(0,Z);var Xb=new Int32Array(288);for(Z=0;288>=Z;++Z)Qb[Z]=Xb.subarray(0,Z);g.noExitRuntime&&(Ba=g.noExitRuntime);g.printErr&&(k=g.printErr);g.wasmBinary&&(m=g.wasmBinary);g.arguments&&(da=g.arguments);g.thisProgram&&(ea=g.thisProgram); if(g.preInit)for("function"==typeof g.preInit&&(g.preInit=[g.preInit]);0ra(""),db:()=>{Ba=!1;Ca=0},eb:(a,b)=>{B[a]&&(clearTimeout(B[a].id),delete B[a]);if(!b)return 0;var c=setTimeout(()=>{delete B[a];Ha(()=>lc(a,performance.now()))},b);B[a]={id:c,Vd:b};return 0},Qa:()=>{Ya();D=null},ha:()=>"number"==typeof devicePixelRatio&&devicePixelRatio||1,ja:(a,b,c)=>{a=H(a);if(!a)return-4;a=bb(a);y[b>>3]=a.width;y[c>>3]=a.height;return 0},z:()=>performance.now(),Ra:()=>performance.now(),Xa:(a,b)=>{function c(d){I(a)(d, b)&&requestAnimationFrame(c)}return requestAnimationFrame(c)},fb:a=>{var b=t.length;a>>>=0;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);a:{d=(Math.min(2147483648,65536*Math.ceil(Math.max(a,d)/65536))-qa.buffer.byteLength+65535)/65536|0;try{qa.grow(d);pa();var e=1;break a}catch(h){}e=void 0}if(e)return!0}return!1},R:(a,b,c,d)=>hb(a,b,c,d,12,"blur"),ga:(a,b,c)=>{a=H(a);if(!a)return-4;a.width=b;a.height=c;return 0},S:(a,b,c,d)=>hb(a,b,c,d,13,"focus"),Q:(a, b,c,d)=>{if(!J.fullscreenEnabled())return-1;a=H(a);if(!a)return-4;ib(a,b,c,d,"webkitfullscreenchange");return ib(a,b,c,d,"fullscreenchange")},$:(a,b,c,d)=>jb(a,b,c,d,2,"keydown"),Z:(a,b,c,d)=>jb(a,b,c,d,1,"keypress"),_:(a,b,c,d)=>jb(a,b,c,d,3,"keyup"),Ya:(a,b,c)=>{a=I(a);Xa(a,b,c)},fa:(a,b,c,d)=>lb(a,b,c,d,5,"mousedown"),ca:(a,b,c,d)=>lb(a,b,c,d,33,"mouseenter"),ba:(a,b,c,d)=>lb(a,b,c,d,34,"mouseleave"),da:(a,b,c,d)=>lb(a,b,c,d,8,"mousemove"),ea:(a,b,c,d)=>lb(a,b,c,d,6,"mouseup"),U:(a,b,c,d)=>document.body?.requestPointerLock? (a=H(a))?mb(a,b,c,d):-4:-1,T:(a,b,c,d)=>document.body?.requestPointerLock?(a=H(a))?nb(a,b,c,d):-4:-1,ia:(a,b,c,d)=>ob(a,b,c,d),V:(a,b,c,d)=>pb(a,b,c,d,25,"touchcancel"),W:(a,b,c,d)=>pb(a,b,c,d,23,"touchend"),X:(a,b,c,d)=>pb(a,b,c,d,24,"touchmove"),Y:(a,b,c,d)=>pb(a,b,c,d,22,"touchstart"),P:(a,b,c,d)=>{Gb(a,b,c,d,31,"webglcontextlost");return 0},O:(a,b,c,d)=>{Gb(a,b,c,d,32,"webglcontextrestored");return 0},aa:(a,b,c,d)=>(a=H(a))?"undefined"!=typeof a.onwheel?Hb(a,b,c,d):-1:-4,Va:(a,b)=>{var c=b>>2; b={alpha:!!r[b+0],depth:!!r[b+1],stencil:!!r[b+2],antialias:!!r[b+3],premultipliedAlpha:!!r[b+4],preserveDrawingBuffer:!!r[b+5],powerPreference:Ib[v[c+2]],failIfMajorPerformanceCaveat:!!r[b+12],bd:v[c+4],Md:v[c+5],Zc:r[b+24],sd:r[b+25],Pd:v[c+7],Td:r[b+32]};a=H(a);return!a||b.sd?0:Eb(a,b)},Ua:a=>{W=yb[a];g.ctx=O=W?.Vc;return!a||O?0:-5},m:a=>O.activeTexture(a),B:(a,b)=>{O.attachShader(Q[a],S[b])},a:(a,b)=>{35051==a?O.Xc=b:35052==a&&(O.Dc=b);O.bindBuffer(a,P[b])},v:(a,b,c)=>{O.bindBufferBase(a,b,P[c])}, yb:(a,b,c,d,e)=>{O.bindBufferRange(a,b,P[c],d,e)},g:(a,b)=>{O.bindFramebuffer(a,vb[b])},Jb:(a,b)=>{O.bindRenderbuffer(a,wb[b])},l:(a,b)=>{O.bindSampler(a,T[b])},c:(a,b)=>{O.bindTexture(a,R[b])},N:a=>{O.bindVertexArray(xb[a])},I:(a,b,c,d)=>O.blendColor(a,b,c,d),J:(a,b)=>O.blendEquationSeparate(a,b),K:(a,b,c,d)=>O.blendFuncSeparate(a,b,c,d),ib:(a,b,c,d,e,h,f,l,n,q)=>O.blitFramebuffer(a,b,c,d,e,h,f,l,n,q),Ea:(a,b,c,d)=>{2<=W.version?c&&b?O.bufferData(a,t,d,c,b):O.bufferData(a,b,d):O.bufferData(a,c?t.subarray(c, c+b):b,d)},C:(a,b,c,d)=>{2<=W.version?c&&O.bufferSubData(a,b,t,d,c):O.bufferSubData(a,b,t.subarray(d,d+c))},Gb:a=>O.checkFramebufferStatus(a),Fb:(a,b,c,d)=>O.clearBufferfi(a,b,c,d),pa:(a,b,c)=>{O.clearBufferfv(a,b,x,c>>2)},Eb:(a,b,c)=>{O.clearBufferiv(a,b,v,c>>2)},n:(a,b,c,d)=>{O.colorMask(!!a,!!b,!!c,!!d)},Nb:a=>{O.compileShader(S[a])},s:(a,b,c,d,e,h,f,l,n)=>{2<=W.version?O.Dc||!l?O.compressedTexSubImage2D(a,b,c,d,e,h,f,l,n):O.compressedTexSubImage2D(a,b,c,d,e,h,f,t,n,l):O.compressedTexSubImage2D(a, b,c,d,e,h,f,t.subarray(n,n+l))},Aa:(a,b,c,d,e,h,f,l,n,q,u)=>{O.Dc?O.compressedTexSubImage3D(a,b,c,d,e,h,f,l,n,q,u):O.compressedTexSubImage3D(a,b,c,d,e,h,f,l,n,t,u,q)},Tb:()=>{var a=Cb(Q),b=O.createProgram();b.name=a;b.Hc=b.Fc=b.Gc=0;b.Tc=1;Q[a]=b;return a},Qb:a=>{var b=Cb(S);S[b]=O.createShader(a);return b},F:a=>O.cullFace(a),Ha:(a,b)=>{for(var c=0;c>2],e=P[d];e&&(O.deleteBuffer(e),e.name=0,P[d]=null,d==O.Xc&&(O.Xc=0),d==O.Dc&&(O.Dc=0))}},u:(a,b)=>{for(var c=0;c>2],e=vb[d];e&&(O.deleteFramebuffer(e),e.name=0,vb[d]=null)}},k:a=>{if(a){var b=Q[a];b?(O.deleteProgram(b),b.name=0,Q[a]=null):U||=1281}},D:(a,b)=>{for(var c=0;c>2],e=wb[d];e&&(O.deleteRenderbuffer(e),e.name=0,wb[d]=null)}},E:(a,b)=>{for(var c=0;c>2],e=T[d];e&&(O.deleteSampler(e),e.name=0,T[d]=null)}},o:a=>{if(a){var b=S[a];b?(O.deleteShader(b),S[a]=null):U||=1281}},h:(a,b)=>{for(var c=0;c>2],e=R[d];e&&(O.deleteTexture(e),e.name= 0,R[d]=null)}},Ga:(a,b)=>{for(var c=0;c>2];O.deleteVertexArray(xb[d]);xb[d]=null}},x:a=>O.depthFunc(a),w:a=>{O.depthMask(!!a)},d:a=>O.disable(a),L:a=>{O.disableVertexAttribArray(a)},lb:(a,b,c)=>{O.drawArrays(a,b,c)},mb:(a,b,c,d)=>{O.drawArraysInstanced(a,b,c,d)},sa:(a,b)=>{for(var c=Jb[a],d=0;d>2];O.drawBuffers(c)},nb:(a,b,c,d)=>{O.drawElements(a,b,c,d)},ob:(a,b,c,d,e)=>{O.drawElementsInstanced(a,b,c,d,e)},f:a=>O.enable(a),zb:a=>{O.enableVertexAttribArray(a)}, ra:(a,b,c,d)=>{O.framebufferRenderbuffer(a,b,c,wb[d])},i:(a,b,c,d,e)=>{O.framebufferTexture2D(a,b,c,R[d],e)},A:(a,b,c,d,e)=>{O.framebufferTextureLayer(a,b,R[c],d,e)},G:a=>O.frontFace(a),Fa:(a,b)=>{V(a,b,"createBuffer",P)},M:(a,b)=>{V(a,b,"createFramebuffer",vb)},Kb:(a,b)=>{V(a,b,"createRenderbuffer",wb)},ya:(a,b)=>{V(a,b,"createSampler",T)},Da:(a,b)=>{V(a,b,"createTexture",R)},Pa:(a,b)=>{V(a,b,"createVertexArray",xb)},Lb:(a,b)=>O.getAttribLocation(Q[a],b?G(b):""),b:(a,b)=>Lb(a,b),Sb:(a,b,c,d)=>{a= O.getProgramInfoLog(Q[a]);null===a&&(a="(unknown error)");b=0>2]=b)},va:(a,b,c)=>{if(c)if(a>=ub)U||=1281;else if(a=Q[a],35716==b)a=O.getProgramInfoLog(a),null===a&&(a="(unknown error)"),v[c>>2]=a.length+1;else if(35719==b){if(!a.Hc){var d=O.getProgramParameter(a,35718);for(b=0;b>2]=a.Hc}else if(35722==b){if(!a.Fc)for(d=O.getProgramParameter(a,35721),b=0;b>2]=a.Fc}else if(35381==b){if(!a.Gc)for(d=O.getProgramParameter(a,35382),b=0;b>2]=a.Gc}else v[c>>2]=O.getProgramParameter(a,b);else U||=1281},Mb:(a,b,c,d)=>{a=O.getShaderInfoLog(S[a]);null===a&&(a="(unknown error)");b=0>2]=b)},ta:(a,b,c)=>{c?35716==b?(a=O.getShaderInfoLog(S[a]),null===a&&(a="(unknown error)"),v[c>>2]=a?a.length+1:0):35720==b?(a=O.getShaderSource(S[a]),v[c>>2]=a?a.length+1:0):v[c>> 2]=O.getShaderParameter(S[a],b):U||=1281},Na:(a,b)=>{if(2>W.version)return U||=1282,0;var c=zb[a];if(c)return 0>b||b>=c.length?(U||=1281,0):c[b];switch(a){case 7939:return c=Kb().map(Nb),c=zb[a]=c,0>b||b>=c.length?(U||=1281,0):c[b];default:return U||=1280,0}},ua:(a,b)=>{b=b?G(b):"";if(a=Q[a]){var c=a,d=c.Ec,e=c.pd,h;if(!d){c.Ec=d={};c.od={};var f=O.getProgramParameter(c,35718);for(h=0;h>>0,e=b.slice(0,h));if((e=a.pd[e])&&d{for(var d=Jb[b],e=0;e>2];O.invalidateFramebuffer(a,d)},wa:a=>{a=Q[a];O.linkProgram(a);a.Ec=0;a.pd={}},Oa:(a,b)=>{3317==a?Ab=b:3314==a&&(Bb=b);O.pixelStorei(a,b)},H:(a,b)=>O.polygonOffset(a,b),kb:a=>O.readBuffer(a),Ib:(a,b,c,d,e)=>O.renderbufferStorageMultisample(a, b,c,d,e),xa:(a,b,c)=>{O.samplerParameterf(T[a],b,c)},e:(a,b,c)=>{O.samplerParameteri(T[a],b,c)},qa:(a,b,c,d)=>O.scissor(a,b,c,d),Ob:(a,b,c,d)=>{for(var e="",h=0;h>2])?G(f,d?w[d+4*h>>2]:void 0):"";e+=f}O.shaderSource(S[a],e)},La:(a,b,c)=>O.stencilFunc(a,b,c),oa:(a,b,c,d)=>O.stencilFuncSeparate(a,b,c,d),p:a=>O.stencilMask(a),Ka:(a,b,c)=>O.stencilOp(a,b,c),na:(a,b,c,d)=>O.stencilOpSeparate(a,b,c,d),Ca:(a,b,c,d,e)=>O.texStorage2D(a,b,c,d,e),Ba:(a,b,c,d,e,h)=>O.texStorage3D(a, b,c,d,e,h),r:(a,b,c,d,e,h,f,l,n)=>{if(2<=W.version){if(O.Dc){O.texSubImage2D(a,b,c,d,e,h,f,l,n);return}if(n){var q=Pb(l);O.texSubImage2D(a,b,c,d,e,h,f,l,q,n>>>31-Math.clz32(q.BYTES_PER_ELEMENT));return}}if(n){q=Pb(l);var u=h*((Bb||e)*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[f-6402]||1)*q.BYTES_PER_ELEMENT+Ab-1&-Ab);n=q.subarray(n>>>31-Math.clz32(q.BYTES_PER_ELEMENT),n+u>>>31-Math.clz32(q.BYTES_PER_ELEMENT))}else n=null;O.texSubImage2D(a,b,c,d,e,h,f,l,n)},za:(a,b,c,d,e,h,f,l, n,q,u)=>{if(O.Dc)O.texSubImage3D(a,b,c,d,e,h,f,l,n,q,u);else if(u){var N=Pb(q);O.texSubImage3D(a,b,c,d,e,h,f,l,n,q,N,u>>>31-Math.clz32(N.BYTES_PER_ELEMENT))}else O.texSubImage3D(a,b,c,d,e,h,f,l,n,q,null)},xb:(a,b,c)=>{if(2<=W.version)b&&O.uniform1fv(X(a),x,c>>2,b);else{if(288>=b)for(var d=Y[b],e=0;e>2];else d=x.subarray(c>>2,c+4*b>>2);O.uniform1fv(X(a),d)}},Rb:(a,b)=>{O.uniform1i(X(a),b)},tb:(a,b,c)=>{if(2<=W.version)b&&O.uniform1iv(X(a),v,c>>2,b);else{if(288>=b)for(var d=Qb[b], e=0;e>2];else d=v.subarray(c>>2,c+4*b>>2);O.uniform1iv(X(a),d)}},wb:(a,b,c)=>{if(2<=W.version)b&&O.uniform2fv(X(a),x,c>>2,2*b);else{if(144>=b){b*=2;for(var d=Y[b],e=0;e>2],d[e+1]=x[c+(4*e+4)>>2]}else d=x.subarray(c>>2,c+8*b>>2);O.uniform2fv(X(a),d)}},sb:(a,b,c)=>{if(2<=W.version)b&&O.uniform2iv(X(a),v,c>>2,2*b);else{if(144>=b){b*=2;for(var d=Qb[b],e=0;e>2],d[e+1]=v[c+(4*e+4)>>2]}else d=v.subarray(c>>2,c+8*b>>2);O.uniform2iv(X(a),d)}},vb:(a, b,c)=>{if(2<=W.version)b&&O.uniform3fv(X(a),x,c>>2,3*b);else{if(96>=b){b*=3;for(var d=Y[b],e=0;e>2],d[e+1]=x[c+(4*e+4)>>2],d[e+2]=x[c+(4*e+8)>>2]}else d=x.subarray(c>>2,c+12*b>>2);O.uniform3fv(X(a),d)}},rb:(a,b,c)=>{if(2<=W.version)b&&O.uniform3iv(X(a),v,c>>2,3*b);else{if(96>=b){b*=3;for(var d=Qb[b],e=0;e>2],d[e+1]=v[c+(4*e+4)>>2],d[e+2]=v[c+(4*e+8)>>2]}else d=v.subarray(c>>2,c+12*b>>2);O.uniform3iv(X(a),d)}},ub:(a,b,c)=>{if(2<=W.version)b&&O.uniform4fv(X(a), x,c>>2,4*b);else{if(72>=b){var d=Y[4*b],e=x;c>>=2;b*=4;for(var h=0;h>2,c+16*b>>2);O.uniform4fv(X(a),d)}},qb:(a,b,c)=>{if(2<=W.version)b&&O.uniform4iv(X(a),v,c>>2,4*b);else{if(72>=b){b*=4;for(var d=Qb[b],e=0;e>2],d[e+1]=v[c+(4*e+4)>>2],d[e+2]=v[c+(4*e+8)>>2],d[e+3]=v[c+(4*e+12)>>2]}else d=v.subarray(c>>2,c+16*b>>2);O.uniform4iv(X(a),d)}},pb:(a,b,c,d)=>{if(2<=W.version)b&&O.uniformMatrix4fv(X(a), !!c,x,d>>2,16*b);else{if(18>=b){var e=Y[16*b],h=x;d>>=2;b*=16;for(var f=0;f>2,d+64*b>>2);O.uniformMatrix4fv(X(a),!!c,e)}},j:a=>{a=Q[a];O.useProgram(a);O.rd=a},Ab:(a,b)=>{O.vertexAttribDivisor(a,b)},Bb:(a,b,c,d,e)=>{O.vertexAttribIPointer(a, b,c,d,e)},Cb:(a,b,c,d,e,h)=>{O.vertexAttribPointer(a,b,c,!!d,e,h)},q:(a,b,c,d)=>O.viewport(a,b,c,d),cb:Ea,Wb:function(){g.ed=a=>{0!=Zb()&&(a.preventDefault(),a.returnValue=" ")};window.addEventListener("beforeunload",g.ed)},_a:function(){g.md=a=>{const b=a.clipboardData.getData("text");Vb(()=>{const c=Sb(b);Yb(c)})};window.addEventListener("paste",g.md)},Ta:function(){g.Ud=[];g.gd=b=>{b.stopPropagation();b.preventDefault()};g.hd=b=>{b.stopPropagation();b.preventDefault()};g.jd=b=>{b.stopPropagation(); b.preventDefault()};g.kd=b=>{b.stopPropagation();b.preventDefault();const c=b.dataTransfer.files;g.ld=c;$b(c.length);for(let e=0;e{const h=Sb(c[e].name);ac(e,h)});let d=0;b.shiftKey&&(d|=1);b.ctrlKey&&(d|=2);b.altKey&&(d|=4);b.metaKey&&(d|=8);bc(b.clientX,b.clientY,d)};const a=g.Ac;a.addEventListener("dragenter",g.gd,!1);a.addEventListener("dragleave",g.hd,!1);a.addEventListener("dragover",g.jd,!1);a.addEventListener("drop",g.kd,!1)},Hb:function(){const a=document.getElementById("sokol-app-favicon"); a&&document.head.removeChild(a)},Pb:function(a){g.Jc&&(URL.revokeObjectURL(g.Jc[a].yd),g.Jc[a]=null)},Sa:function(a){const b=g.ld;return 0>a||a>=b.length?0:b[a].size},Ma:function(a,b,c,d,e){const h=new FileReader;h.onload=f=>{f=f.target.result;f.byteLength>d?cc(a,0,1,b,0,c,d,e):(t.set(new Uint8Array(f),c),cc(a,1,0,b,f.byteLength,c,d,e))};h.onerror=()=>{cc(a,0,2,b,0,c,d,e)};h.readAsArrayBuffer(g.ld[a])},Ia:function(a,b){0!==b&&(document.title=b?G(b):"");a=a?G(a):"";void 0!==g.canvas&&("object"===typeof g.canvas? ab[a]=g.canvas:console.warn("sokol_app.h: Module['canvas'] is set but is not an object"));g.Ac=H(a);g.Ac||console.warn("sokol_app.h: can't find html5_canvas_selector ",a);g.Ac.requestPointerLock||console.warn("sokol_app.h: target doesn't support requestPointerLock: ",a)},Vb:function(){window.removeEventListener("beforeunload",g.ed)},Wa:function(){window.removeEventListener("paste",g.md)},Ja:function(){const a=g.Ac;a.removeEventListener("dragenter",g.gd);a.removeEventListener("dragleave",g.hd);a.removeEventListener("dragover", g.jd);a.removeEventListener("drop",g.kd)},t:function(){g.Ac&&g.Ac.requestPointerLock&&g.Ac.requestPointerLock()},Ub:function(a,b,c){if(g.Ac){if(0===b)a="none";else if(0!=c)a=g.Jc[a].Ad;else switch(a){case 0:a="auto";break;case 1:a="default";break;case 2:a="text";break;case 3:a="crosshair";break;case 4:a="pointer";break;case 5:a="ew-resize";break;case 6:a="ns-resize";break;case 7:a="nwse-resize";break;case 8:a="nesw-resize";break;case 9:a="all-scroll";break;case 10:a="not-allowed";break;default:a= "auto"}g.Ac.style.cursor=a}},Db:function(a,b,c){const d=document.createElement("canvas");d.width=a;d.height=b;const e=d.getContext("2d"),h=e.createImageData(a,b);h.data.set(t.subarray(c,c+a*b*4));e.putImageData(h,0,0);a=document.createElement("link");a.id="sokol-app-favicon";a.rel="shortcut icon";a.href=d.toDataURL();document.head.appendChild(a)},Za:function(){const a=(new URLSearchParams(window.location.search)).entries();for(let b=a.next();!b.done;b=a.next()){const c=b.value[0],d=b.value[1];Vb(()=> {const e=Sb(c),h=Sb(d);fc(e,h)})}},ab:function(){return g.Bc?g.Bc.bufferSize:0},jb:function(a,b,c){g.uc=null;g.Bc=null;"undefined"!==typeof AudioContext?g.uc=new AudioContext({sampleRate:a,latencyHint:"interactive"}):(g.uc=null,console.log("sokol_audio.h: no WebAudio support"));return g.uc?(console.log("sokol_audio.h: sample rate ",g.uc.sampleRate),g.Bc=g.uc.createScriptProcessor(c,0,b),g.Bc.onaudioprocess=d=>{const e=d.outputBuffer.length,h=ec(e);if(h){const f=d.outputBuffer.numberOfChannels;for(let l= 0;l>2)+(f*q+l)]}}},g.Bc.connect(g.uc.destination),a=()=>{g.uc&&"suspended"===g.uc.state&&g.uc.resume()},document.addEventListener("click",a,{once:!0}),document.addEventListener("touchend",a,{once:!0}),document.addEventListener("keydown",a,{once:!0}),1):0},bb:function(){return g.uc?g.uc.sampleRate:0},ma:function(){const a=g.uc;null!==a&&(g.Bc&&g.Bc.disconnect(),a.close(),g.uc=null,g.Bc=null)},$a:function(){if(g.uc)return"suspended"=== g.uc.state?1:0},y:function(a,b,c,d,e,h){const f=b?G(b):"";b=new Headers;0{l.ok?l.arrayBuffer().then(n=>{n=new Uint8Array(n);n.length<=h?(t.set(n,e),hc(a,d,n.length)):jc(a)}).catch(n=>{console.error(`sokol_fetch.h: GET ${f} failed with: `,n);kc(a)}):ic(a,l.status)}).catch(l=>{console.error(`sokol_fetch.h: GET ${f} failed with: `,l);kc(a)})},la:function(a,b){const c=b?G(b):"";fetch(c,{method:"HEAD"}).then(d=>{d.ok? (d=d.headers.get("Content-Length"),null===d?(console.warn(`sokol_fetch.h: HEAD ${c} response has no Content-Length`),kc(a)):gc(a,Number(d))):ic(a,d.status)}).catch(d=>{console.error(`sokol_fetch.h: HEAD ${c} failed with: `,d);kc(a)})},ka:function(a,b){b=b?G(b):"";switch(a){case 0:console.error(b);break;case 1:console.error(b);break;case 2:console.warn(b);break;default:console.info(b)}}}; function nc(a=[]){var b=dc;a.unshift(ea);var c=a.length,d=Rb(4*(c+1)),e=d;a.forEach(f=>{w[e>>2]=Sb(f);e+=4});w[e>>2]=0;try{var h=b(c,d);Fa(h)}catch(f){Da(f)}} function oc(a=da){function b(){g.calledRun=!0;if(!p){pc.Yb();g.onRuntimeInitialized?.();g.noInitialRun||nc(a);if(g.postRun)for("function"==typeof g.postRun&&(g.postRun=[g.postRun]);g.postRun.length;){var c=g.postRun.shift();ya.push(c)}xa(ya)}}if(0{setTimeout(()=>g.setStatus(""),1);b()},1)):b()}}var pc; (async function(){function a(c){c=pc=c.exports;g._fs_emsc_alloc=c.Zb;M=c._b;g._fs_emsc_load_snapshot_callback=c.$b;Yb=g.__sapp_emsc_onpaste=c.ac;Zb=g.__sapp_html5_get_ask_leave_site=c.bc;$b=g.__sapp_emsc_begin_drop=c.cc;ac=g.__sapp_emsc_drop=c.dc;bc=g.__sapp_emsc_end_drop=c.ec;cc=g.__sapp_emsc_invoke_fetch_cb=c.fc;g.__sapp_emsc_set_fullscreen_flag=c.gc;dc=g._main=c.hc;ec=g.__saudio_emsc_pull=c.ic;fc=g.__sargs_add_kvp=c.jc;gc=g.__sfetch_emsc_head_response=c.kc;hc=g.__sfetch_emsc_get_response=c.lc; ic=g.__sfetch_emsc_failed_http_status=c.mc;jc=g.__sfetch_emsc_failed_buffer_too_small=c.nc;kc=g.__sfetch_emsc_failed_other=c.oc;lc=c.pc;Ub=c.rc;Rb=c.sc;Tb=c.tc;qa=c.Xb;db=c.qc;pa();z--;g.monitorRunDependencies?.(z);0==z&&A&&(c=A,A=null,c());return pc}z++;g.monitorRunDependencies?.(z);var b={a:mc};if(g.instantiateWasm)return new Promise(c=>{g.instantiateWasm(b,(d,e)=>{c(a(d,e))})});sa??=g.locateFile?g.locateFile("c64.wasm",ia):ia+"c64.wasm";return a((await va(b)).instance)})();oc();