-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathlc80.js
More file actions
73 lines (73 loc) · 35.8 KB
/
lc80.js
File metadata and controls
73 lines (73 loc) · 35.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
var h;h||=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("node: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.argv.length&&(ea=process.argv[1].replace(/\\/g,"/"));da=process.argv.slice(2);"undefined"!=typeof module&&(module.exports=h);fa=(a,b)=>{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);}}var ma=console.log.bind(console),k=console.error.bind(console),n,q=!1,na,la=a=>a.startsWith("file://");
function oa(){var a=pa.buffer;t=new Int8Array(a);qa=new Int16Array(a);u=new Uint8Array(a);ra=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 sa(a){h.onAbort?.(a);a=`Aborted(${a})`;k(a);q=!0;throw new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");}var ta;
async function ua(a){if(!n)try{var b=await ja(a);return new Uint8Array(b)}catch{}if(a==ta&&n)a=new Uint8Array(n);else if(ka)a=ka(a);else throw"both async and sync fetching of the wasm failed";return a}async function va(a,b){try{var c=await ua(a);return await WebAssembly.instantiate(c,b)}catch(d){k(`failed to asynchronously prepare wasm: ${d}`),sa(d)}}
async function wa(a){var b=ta;if(!n&&!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 va(b,a)}class xa{name="ExitStatus";constructor(a){this.message=`Program terminated with exit(${a})`;this.status=a}}
var qa,v,t,x,y,ra,w,u,ya=a=>{for(;0<a.length;)a.shift()(h)},za=[],Aa=[],Ba=()=>{var a=h.preRun.shift();Aa.push(a)},z=0,A=null,Ca=!0,Da=globalThis.TextDecoder&&new TextDecoder,B=(a,b=0,c)=>{var d=b;for(c=d+c;a[d]&&!(d>=c);)++d;if(16<d-b&&a.buffer&&Da)return Da.decode(a.subarray(b,d));for(c="";b<d;){var e=a[b++];if(e&128){var g=a[b++]&63;if(192==(e&224))c+=String.fromCharCode((e&31)<<6|g);else{var f=a[b++]&63;e=224==(e&240)?(e&15)<<12|g<<6|f:(e&7)<<18|g<<12|f<<6|a[b++]&63;65536>e?c+=String.fromCharCode(e):
(e-=65536,c+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else c+=String.fromCharCode(e)}return c},Ea=0,C={},Fa=a=>{a instanceof xa||"unwind"==a||fa(1,a)},Ga=a=>{na=a;Ca||0<Ea||(h.onExit?.(a),q=!0);fa(a,new xa(a))},Ha=()=>{if(!(Ca||0<Ea))try{var a=na;na=a;Ga(a)}catch(b){Fa(b)}},Ia=a=>{if(!q)try{a()}catch(b){Fa(b)}finally{Ha()}},Pa=(a,b)=>{Ja=a;Ka=b;if(D)if(La||=!0,0==a)G=function(){setTimeout(H,Math.max(0,Ma+b-performance.now())|0)};else if(1==a)G=function(){Na(H)};else{if(!Oa)if(globalThis.setImmediate)Oa=
setImmediate;else{var c=[];addEventListener("message",d=>{if("setimmediate"===d.data||"setimmediate"===d.data.target)d.stopPropagation(),c.shift()()},!0);Oa=d=>{c.push(d);if(ba){let e;(e=h).setImmediates??(e.setImmediates=[]);h.setImmediates.push(d);postMessage({target:"setimmediate"})}else postMessage("setimmediate","*")}}G=function(){Oa(H)}}},Ya=(a,b,c,d,e)=>{function g(){return f<Qa?(Ha(),!1):!0}D=a;Ra=d;var f=Qa;La=!1;H=function(){if(!q)if(0<Sa.length){var l=Sa.shift();l.Vd(l.Jd);if(Ta){var m=
Ta,p=0==m%1?m-1:Math.floor(m);Ta=l.Md?p:(8*m+(p+.5))/9}h.setStatus&&(l=h.statusMessage||"Please wait...",m=Ta??0,p=Ua.Sd??0,m?m<p?h.setStatus("{message} ({expected - remaining}/{expected})"):h.setStatus(l):h.setStatus(""));g()&&setTimeout(H,0)}else if(g())if(Va=Va+1|0,1==Ja&&1<Ka&&0!=Va%Ka)G();else{0==Ja&&(Ma=performance.now());a:if(!q){for(l of Wa)if(!1===l())break a;Ia(a);for(m of Xa)m()}g()&&G()}};e||(0<b?Pa(0,1E3/b):Pa(1,1),G());if(c)throw"unwind";},La=!1,G=null,Qa=0,D=null,Ra=0,Ja=0,Ka=0,Va=
0,Sa=[],Wa=[],Xa=[];function Za(){G=null;Qa++}var $a=0;function Na(a){if(globalThis.requestAnimationFrame)requestAnimationFrame(a);else{var b=Date.now();if(0===$a)$a=b+1E3/60;else for(;b+2>=$a;)$a+=1E3/60;setTimeout(a,Math.max($a-b,0))}}var Ua={},Ma,H,Oa,Ta,ab=[0,globalThis.document??0,globalThis.window??0],I=a=>{a=2<a?a?B(u,a):"":a;return ab[a]||globalThis.document?.querySelector(a)},bb=a=>0>ab.indexOf(a)?a.getBoundingClientRect():{left:0,top:0},cb=[],J=a=>{var b=cb[a];b||(cb[a]=b=db.get(a));return b};
function eb(a){var b=K.Ic[a];b.target.removeEventListener(b.Hc,b.qd,b.Lc);K.Ic.splice(a,1)}function fb(){if(navigator.userActivation?navigator.userActivation.isActive:K.ad&&K.Dd.Yc){var a=K.Qc;K.Qc=[];for(var b of a)b.dd(...b.md)}}function L(a){if(!a.target)return-4;if(a.Jc)a.qd=function(c){++K.ad;K.Dd=a;fb();a.Nc(c);fb();--K.ad},a.target.addEventListener(a.Hc,a.qd,a.Lc),K.Ic.push(a);else for(var b=0;b<K.Ic.length;++b)K.Ic[b].target==a.target&&K.Ic[b].Hc==a.Hc&&eb(b--);return 0}
function gb(a){return a?a==window?"#window":a==screen?"#screen":a?.nodeName||"":""}
var K={Kd:0,Wd:0,bd:0,Wc:0,jd:0,gd:0,Zc:0,Qd:0,$d:0,Pd:0,$c:0,cd:0,je:0,ed:0,be(){for(;K.Ic.length;)eb(K.Ic.length-1);K.Qc=[]},ad:0,Qc:[],Od(a,b,c){function d(g,f){if(g.length!=f.length)return!1;for(var l in g)if(g[l]!=f[l])return!1;return!0}for(var e of K.Qc)if(e.dd==a&&d(e.md,c))return;K.Qc.push({dd:a,ud:b,md:c});K.Qc.sort((g,f)=>g.ud-f.ud)},de(a){K.Qc=K.Qc.filter(b=>b.dd!=a)},Ic:[],ce:(a,b)=>{for(var c=0;c<K.Ic.length;++c)K.Ic[c].target!=a||b&&b!=K.Ic[c].Hc||eb(c--)},ee(a){let b=!1;for(let c=0;c<
K.Ic.length;++c){const d=K.Ic[c];d.target===a.target&&d.Kc===a.Kc&&d.Jc===a.Jc&&d.Mc===a.Mc&&(eb(c--),b=!0)}return b?0:-5},fullscreenEnabled(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}},M=(a,b,c)=>{var d=u;if(!(0<c))return 0;var e=b;c=b+c-1;for(var g=0;g<a.length;++g){var f=a.codePointAt(g);if(127>=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;g++}}d[b]=0;return b-e},hb=(a,b,c,d,e,g)=>{K.Zc||(K.Zc=N(256));a={target:I(a),Hc:g,Kc:e,Mc:b,Jc:d,Nc:f=>{var l=f.target.id?f.target.id:"",m=K.Zc;M(gb(f.target),m+0,128);M(l,m+128,128);J(d)(e,m,b)&&f.preventDefault()},Lc:c};return L(a)},ib=(a,b,c,d,e)=>{K.$c||(K.$c=N(276));return L({target:a,Hc:e,Kc:19,Mc:b,Jc:d,Nc:g=>{var f=K.$c,l=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||
document.webkitCurrentFullScreenElement||document.msFullscreenElement,m=!!l;t[f]=m;t[f+1]=K.fullscreenEnabled();var p=m?l:K.Hd,r=p?.id||"";M(gb(p),f+2,128);M(r,f+130,128);v[f+260>>2]=p?p.clientWidth:0;v[f+264>>2]=p?p.clientHeight:0;v[f+268>>2]=screen.width;v[f+272>>2]=screen.height;m&&(K.Hd=l);J(d)(19,f,b)&&g.preventDefault()},Lc:c})},jb=(a,b,c,d,e,g)=>{K.bd||(K.bd=N(160));a={target:I(a),Hc:g,Kc:e,Mc:b,Jc:d,Nc:f=>{var l=K.bd;y[l>>3]=f.timeStamp;var m=l>>2;v[m+2]=f.location;t[l+12]=f.ctrlKey;t[l+13]=
f.shiftKey;t[l+14]=f.altKey;t[l+15]=f.metaKey;t[l+16]=f.repeat;v[m+5]=f.charCode;v[m+6]=f.keyCode;v[m+7]=f.which;M(f.key||"",l+32,32);M(f.code||"",l+64,32);M(f.char||"",l+96,32);M(f.locale||"",l+128,32);J(d)(e,l,b)&&f.preventDefault()},Lc:c};return L(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;t[a+24]=b.ctrlKey;t[a+25]=b.shiftKey;t[a+26]=b.altKey;t[a+27]=b.metaKey;qa[2*d+14]=b.button;qa[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,g)=>{K.Wc||(K.Wc=N(64));a=I(a);return L({target:a,Yc:"mousemove"!=g&&"mouseenter"!=g&&"mouseleave"!=g,Hc:g,Kc:e,Mc:b,Jc:d,Nc:f=>{kb(K.Wc,f,a);J(d)(e,K.Wc,b)&&f.preventDefault()},Lc:c})},mb=(a,b,c,d)=>{K.cd||(K.cd=N(257));return L({target:a,Hc:"pointerlockchange",Kc:20,Mc:b,Jc:d,Nc:e=>{var g=K.cd,f=document.pointerLockElement;t[g]=!!f;var l=f?.id||"";M(gb(f),g+1,128);M(l,g+129,128);J(d)(20,g,b)&&e.preventDefault()},
Lc:c})},nb=(a,b,c,d)=>L({target:a,Hc:"pointerlockerror",Kc:38,Mc:b,Jc:d,Nc:e=>{J(d)(38,0,b)&&e.preventDefault()},Lc:c}),ob=(a,b,c,d)=>{K.gd||(K.gd=N(36));a=I(a);return L({target:a,Hc:"resize",Kc:10,Mc:b,Jc:d,Nc:e=>{if(e.target==a){var g=document.body;if(g){var f=K.gd;v[f>>2]=0;v[f+4>>2]=g.clientWidth;v[f+8>>2]=g.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;J(d)(10,f,b)&&e.preventDefault()}}},
Lc:c})},pb=(a,b,c,d,e,g)=>{K.ed||(K.ed=N(1552));a=I(a);return L({target:a,Yc:"touchstart"==g||"touchend"==g,Hc:g,Kc:e,Mc:b,Jc:d,Nc:f=>{var l={},m=f.touches;for(var p of m)p.rd=p.td=0,l[p.identifier]=p;for(var r of f.changedTouches)r.rd=1,l[r.identifier]=r;for(var E of f.targetTouches)l[E.identifier].td=1;m=K.ed;y[m>>3]=f.timeStamp;t[m+12]=f.ctrlKey;t[m+13]=f.shiftKey;t[m+14]=f.altKey;t[m+15]=f.metaKey;p=m+16;r=bb(a);E=0;for(let F of Object.values(l))if(l=p>>2,v[l]=F.identifier,v[l+1]=F.screenX,v[l+
2]=F.screenY,v[l+3]=F.clientX,v[l+4]=F.clientY,v[l+5]=F.pageX,v[l+6]=F.pageY,t[p+28]=F.rd,t[p+29]=F.td,v[l+8]=F.clientX-(r.left|0),v[l+9]=F.clientY-(r.top|0),p+=48,31<++E)break;v[m+8>>2]=E;J(d)(e,m,b)&&f.preventDefault()},Lc: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,g)=>b.drawArraysInstancedANGLE(c,d,e,g),a.drawElementsInstanced=(c,d,e,g,f)=>b.drawElementsInstancedANGLE(c,d,e,g,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<b;c++)a[c]=null;return b},V=(a,b,c,d)=>{for(var e=0;e<a;e++){var g=O[c](),f=g&&Cb(d);g?(g.name=f,d[f]=g):U||=1282;v[b+4*e>>2]=f}},Eb=(a,b)=>{a.ld||(a.ld=a.getContext,a.getContext=function(d,e){e=a.ld(d,e);return"webgl"==d==e instanceof WebGLRenderingContext?e:null});var c=1<b.sd?a.getContext("webgl2",b):a.getContext("webgl",b);return c?
Db(c,b):0},Db=(a,b)=>{var c=Cb(yb),d={handle:c,attributes:b,version:b.sd,kd:a};a.canvas&&(a.canvas.Id=d);yb[c]=d;if("undefined"==typeof b.pd||b.pd)if((a=d)||(a=W),!a.Gd){a.Gd=!0;b=a.kd;b.Zd=b.getExtension("WEBGL_multi_draw");b.Ud=b.getExtension("EXT_polygon_offset_clamp");b.Td=b.getExtension("EXT_clip_control");b.ke=b.getExtension("WEBGL_polygon_mode");qb(b);rb(b);sb(b);b.Rd=b.getExtension("WEBGL_draw_instanced_base_vertex_base_instance");b.Xd=b.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance");
2<=a.version&&(b.od=b.getExtension("EXT_disjoint_timer_query_webgl2"));if(2>a.version||!b.od)b.od=b.getExtension("EXT_disjoint_timer_query");for(var e of tb(b))e.includes("lose_context")||e.includes("debug")||b.getExtension(e)}return c},U,W,Fb=(a,b,c,d,e,g)=>{a={target:I(a),Hc:g,Kc:e,Mc:b,Jc:d,Nc:f=>{J(d)(e,0,b)&&f.preventDefault()},Lc:c};L(a)},Gb=(a,b,c,d)=>{K.jd||(K.jd=N(96));return L({target:a,Yc:!0,Hc:"wheel",Kc:9,Mc:b,Jc:d,Nc:e=>{var g=K.jd;kb(g,e,a);y[g+64>>3]=e.deltaX;y[g+72>>3]=e.deltaY;y[g+
80>>3]=e.deltaZ;v[g+88>>2]=e.deltaMode;J(d)(9,g,b)&&e.preventDefault()},Lc:c})},Hb=["default","low-power","high-performance"],Ib={},Kb=()=>{if(!Jb){var a={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:ea||"./this.program"},b;for(b in Ib)void 0===Ib[b]?delete a[b]:a[b]=Ib[b];var c=[];for(b in a)c.push(`${b}=${a[b]}`);Jb=c}return Jb},Jb,Lb=a=>{for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);127>=
d?b++:2047>=d?b+=2:55296<=d&&57343>=d?(b+=4,++c):b+=3}return b},Mb=[null,[],[]],Nb=[],Ob=()=>{var a=tb(O);return a=a.concat(a.map(b=>"GL_"+b))},Pb=(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=Ob().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<d.length;++a)v[b+4*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},Qb=a=>{var b=Lb(a)+1,c=N(b);c&&M(a,c,b);return c},Rb=a=>"]"==a.slice(-1)&&a.lastIndexOf("["),Sb=a=>{a-=5120;return 0==a?t:1==a?u:2==a?qa:4==a?v:6==a?x:5==a||28922==a||28520==a||30779==a||30782==
a?w:ra},X=a=>{var b=O.Ed;if(b){var c=b.Sc[a];"number"==typeof c&&(b.Sc[a]=c=O.getUniformLocation(b,b.Bd[a]+(0<c?`[${c}]`:"")));return c}U||=1282},Y=[],Tb=[],Vb=a=>{var b=Lb(a)+1,c=Ub(b);M(a,c,b);return c},Yb=a=>{var b=Wb();a();Xb(b)};h.requestAnimationFrame=Na;h.pauseMainLoop=Za;h.resumeMainLoop=function(){Qa++;var a=Ja,b=Ka,c=D;D=null;Ya(c,0,!1,Ra,!0);Pa(a,b);G()};h.preMainLoop&&Wa.push(h.preMainLoop);h.postMainLoop&&Xa.push(h.postMainLoop);for(let a=0;32>a;++a)Nb.push(Array(a));
for(var Zb=new Float32Array(288),Z=0;288>=Z;++Z)Y[Z]=Zb.subarray(0,Z);var $b=new Int32Array(288);for(Z=0;288>=Z;++Z)Tb[Z]=$b.subarray(0,Z);h.noExitRuntime&&(Ca=h.noExitRuntime);h.print&&(ma=h.print);h.printErr&&(k=h.printErr);h.wasmBinary&&(n=h.wasmBinary);h.arguments&&(da=h.arguments);h.thisProgram&&(ea=h.thisProgram);if(h.preInit)for("function"==typeof h.preInit&&(h.preInit=[h.preInit]);0<h.preInit.length;)h.preInit.shift()();
var N,ac,bc,cc,dc,ec,fc,gc,hc,ic,jc,kc,lc,mc,nc,oc,pc,Xb,Ub,Wb,pa,db,qc={sa:function(){return 0},nb:function(){return 0},ob:function(){},rb:()=>sa(""),hb:()=>{Ca=!1;Ea=0},ib:(a,b)=>{C[a]&&(clearTimeout(C[a].id),delete C[a]);if(!b)return 0;var c=setTimeout(()=>{delete C[a];Ia(()=>pc(a,performance.now()))},b);C[a]={id:c,ie:b};return 0},tb:function(a){if(void 0===window.localStorage)return 0;a=a?B(u,a):"";return(a=window.localStorage.getItem(a))?Qb(a):0},ub:function(a,b){void 0!==window.localStorage&&
(a=a?B(u,a):"",b=b?B(u,b):"",window.localStorage.setItem(a,b))},Va:()=>{Za();D=null},la:()=>globalThis.devicePixelRatio??1,na:(a,b,c)=>{a=I(a);if(!a)return-4;a=bb(a);y[b>>3]=a.width;y[c>>3]=a.height;return 0},C:()=>performance.now(),Wa:()=>performance.now(),ab:(a,b)=>{function c(d){J(a)(d,b)&&requestAnimationFrame(c)}return requestAnimationFrame(c)},jb:a=>{var b=u.length;a>>>=0;if(2147483648<a)return!1;for(var c=1;4>=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))-pa.buffer.byteLength+65535)/65536|0;try{pa.grow(d);oa();var e=1;break a}catch(g){}e=void 0}if(e)return!0}return!1},V:(a,b,c,d)=>hb(a,b,c,d,12,"blur"),ka:(a,b,c)=>{a=I(a);if(!a)return-4;a.width=b;a.height=c;return 0},W:(a,b,c,d)=>hb(a,b,c,d,13,"focus"),U:(a,b,c,d)=>{if(!K.fullscreenEnabled())return-1;a=I(a);if(!a)return-4;ib(a,b,c,d,"webkitfullscreenchange");return ib(a,b,c,d,"fullscreenchange")},da:(a,b,c,d)=>jb(a,b,c,d,2,"keydown"),ba:(a,b,c,d)=>jb(a,b,c,d,1,"keypress"),
ca:(a,b,c,d)=>jb(a,b,c,d,3,"keyup"),bb:(a,b,c)=>{a=J(a);Ya(a,b,c)},ja:(a,b,c,d)=>lb(a,b,c,d,5,"mousedown"),ga:(a,b,c,d)=>lb(a,b,c,d,33,"mouseenter"),fa:(a,b,c,d)=>lb(a,b,c,d,34,"mouseleave"),ha:(a,b,c,d)=>lb(a,b,c,d,8,"mousemove"),ia:(a,b,c,d)=>lb(a,b,c,d,6,"mouseup"),Y:(a,b,c,d)=>document.body?.requestPointerLock?(a=I(a))?mb(a,b,c,d):-4:-1,X:(a,b,c,d)=>document.body?.requestPointerLock?(a=I(a))?nb(a,b,c,d):-4:-1,ma:(a,b,c,d)=>ob(a,b,c,d),Z:(a,b,c,d)=>pb(a,b,c,d,25,"touchcancel"),_:(a,b,c,d)=>pb(a,
b,c,d,23,"touchend"),$:(a,b,c,d)=>pb(a,b,c,d,24,"touchmove"),aa:(a,b,c,d)=>pb(a,b,c,d,22,"touchstart"),T:(a,b,c,d)=>{Fb(a,b,c,d,31,"webglcontextlost");return 0},S:(a,b,c,d)=>{Fb(a,b,c,d,32,"webglcontextrestored");return 0},ea:(a,b,c,d)=>(a=I(a))?"undefined"!=typeof a.onwheel?Gb(a,b,c,d):-1:-4,$a:(a,b)=>{var c=b>>2;b={alpha:!!t[b+0],depth:!!t[b+1],stencil:!!t[b+2],antialias:!!t[b+3],premultipliedAlpha:!!t[b+4],preserveDrawingBuffer:!!t[b+5],powerPreference:Hb[v[c+2]],failIfMajorPerformanceCaveat:!!t[b+
12],sd:v[c+4],Yd:v[c+5],pd:t[b+24],Fd:t[b+25],ae:v[c+7],fe:t[b+32]};a=I(a);return!a||b.Fd?0:Eb(a,b)},Za:a=>{W=yb[a];h.ctx=O=W?.kd;return!a||O?0:-5},pb:(a,b)=>{var c=0,d=0,e;for(e of Kb()){var g=b+c;w[a+d>>2]=g;c+=M(e,g,Infinity)+1;d+=4}return 0},qb:(a,b)=>{var c=Kb();w[a>>2]=c.length;a=0;for(var d of c)a+=Lb(d)+1;w[b>>2]=a;return 0},qa:()=>52,mb:()=>52,kb:function(){return 70},lb:(a,b,c,d)=>{for(var e=0,g=0;g<c;g++){var f=w[b>>2],l=w[b+4>>2];b+=8;for(var m=0;m<l;m++){var p=a,r=u[f+m],E=Mb[p];0===
r||10===r?((1===p?ma:k)(B(E)),E.length=0):E.push(r)}e+=l}w[d>>2]=e;return 0},h:function(a,b,c){const d=a?B(u,a):"";let e;try{e=window.indexedDB.open("chips",1)}catch(g){console.log("fs_js_load_snapshot: failed to open IndexedDB with "+g)}e.onupgradeneeded=()=>{console.log("fs_js_load_snapshot: creating db");e.result.createObjectStore("store")};e.onsuccess=()=>{var g=e.result;let f;try{f=g.transaction(["store"],"readwrite")}catch(p){console.log("fs_js_load_snapshot: db.transaction failed with",p);
return}g=f.objectStore("store");const l=d+"_"+b,m=g.get(l);m.onsuccess=()=>{if(void 0!==m.result){const p=m.result.length;console.log("fs_js_load_snapshot:",l,"successfully loaded",p,"bytes");const r=nc(p);u.set(m.result,r);oc(c,r,p)}else oc(c,0,0)};m.onerror=()=>{console.log("fs_js_load_snapshot: FAILED loading",l)};f.onerror=()=>{console.log("fs_js_load_snapshot: transaction onerror")}};e.onerror=()=>{console.log("fs_js_load_snapshot: open_request onerror")}},sb:function(a,b,c,d){const e=a?B(u,
a):"";console.log("fs_js_save_snapshot: called with",e,b);let g;try{g=window.indexedDB.open("chips",1)}catch(f){console.log("fs_js_save_snapshot: failed to open IndexedDB with "+f);return}g.onupgradeneeded=()=>{console.log("fs_js_save_snapshot: creating db");g.result.createObjectStore("store")};g.onsuccess=()=>{console.log("fs_js_save_snapshot: onsuccess");const f=g.result.transaction(["store"],"readwrite");var l=f.objectStore("store");const m=e+"_"+b;l=l.put(u.subarray(c,c+d),m);l.onsuccess=()=>
{console.log("fs_js_save_snapshot:",m,"successfully stored")};l.onerror=()=>{console.log("fs_js_save_snapshot: FAILED to store",m)};f.onerror=()=>{console.log("fs_js_save_snapshot: transaction onerror")}};g.onerror=()=>{console.log("fs_js_save_snapshot: open_request onerror")}},o:a=>O.activeTexture(a),E:(a,b)=>{O.attachShader(Q[a],S[b])},a:(a,b)=>{35051==a?O.nd=b:35052==a&&(O.Rc=b);O.bindBuffer(a,P[b])},y:(a,b,c)=>{O.bindBufferBase(a,b,P[c])},Mb:(a,b,c,d,e)=>{O.bindBufferRange(a,b,P[c],d,e)},i:(a,
b)=>{O.bindFramebuffer(a,vb[b])},Xb:(a,b)=>{O.bindRenderbuffer(a,wb[b])},n:(a,b)=>{O.bindSampler(a,T[b])},c:(a,b)=>{O.bindTexture(a,R[b])},R:a=>{O.bindVertexArray(xb[a])},M:(a,b,c,d)=>O.blendColor(a,b,c,d),N:(a,b)=>O.blendEquationSeparate(a,b),O:(a,b,c,d)=>O.blendFuncSeparate(a,b,c,d),xb:(a,b,c,d,e,g,f,l,m,p)=>O.blitFramebuffer(a,b,c,d,e,g,f,l,m,p),Ja:(a,b,c,d)=>{2<=W.version?c&&b?O.bufferData(a,u,d,c,b):O.bufferData(a,b,d):O.bufferData(a,c?u.subarray(c,c+b):b,d)},G:(a,b,c,d)=>{2<=W.version?c&&O.bufferSubData(a,
b,u,d,c):O.bufferSubData(a,b,u.subarray(d,d+c))},Ub:a=>O.checkFramebufferStatus(a),Tb:(a,b,c,d)=>O.clearBufferfi(a,b,c,d),va:(a,b,c)=>{O.clearBufferfv(a,b,x,c>>2)},Sb:(a,b,c)=>{O.clearBufferiv(a,b,v,c>>2)},p:(a,b,c,d)=>{O.colorMask(!!a,!!b,!!c,!!d)},$b:a=>{O.compileShader(S[a])},v:(a,b,c,d,e,g,f,l,m)=>{2<=W.version?O.Rc||!l?O.compressedTexSubImage2D(a,b,c,d,e,g,f,l,m):O.compressedTexSubImage2D(a,b,c,d,e,g,f,u,m,l):O.compressedTexSubImage2D(a,b,c,d,e,g,f,u.subarray(m,m+l))},Fa:(a,b,c,d,e,g,f,l,m,p,
r)=>{O.Rc?O.compressedTexSubImage3D(a,b,c,d,e,g,f,l,m,p,r):O.compressedTexSubImage3D(a,b,c,d,e,g,f,l,m,u,r,p)},fc:()=>{var a=Cb(Q),b=O.createProgram();b.name=a;b.Vc=b.Tc=b.Uc=0;b.hd=1;Q[a]=b;return a},cc:a=>{var b=Cb(S);S[b]=O.createShader(a);return b},J:a=>O.cullFace(a),Na:(a,b)=>{for(var c=0;c<a;c++){var d=v[b+4*c>>2],e=P[d];e&&(O.deleteBuffer(e),e.name=0,P[d]=null,d==O.nd&&(O.nd=0),d==O.Rc&&(O.Rc=0))}},x:(a,b)=>{for(var c=0;c<a;++c){var d=v[b+4*c>>2],e=vb[d];e&&(O.deleteFramebuffer(e),e.name=0,
vb[d]=null)}},m:a=>{if(a){var b=Q[a];b?(O.deleteProgram(b),b.name=0,Q[a]=null):U||=1281}},H:(a,b)=>{for(var c=0;c<a;c++){var d=v[b+4*c>>2],e=wb[d];e&&(O.deleteRenderbuffer(e),e.name=0,wb[d]=null)}},I:(a,b)=>{for(var c=0;c<a;c++){var d=v[b+4*c>>2],e=T[d];e&&(O.deleteSampler(e),e.name=0,T[d]=null)}},q:a=>{if(a){var b=S[a];b?(O.deleteShader(b),S[a]=null):U||=1281}},j:(a,b)=>{for(var c=0;c<a;c++){var d=v[b+4*c>>2],e=R[d];e&&(O.deleteTexture(e),e.name=0,R[d]=null)}},La:(a,b)=>{for(var c=0;c<a;c++){var d=
v[b+4*c>>2];O.deleteVertexArray(xb[d]);xb[d]=null}},A:a=>O.depthFunc(a),z:a=>{O.depthMask(!!a)},d:a=>O.disable(a),P:a=>{O.disableVertexAttribArray(a)},zb:(a,b,c)=>{O.drawArrays(a,b,c)},Ab:(a,b,c,d)=>{O.drawArraysInstanced(a,b,c,d)},wa:(a,b)=>{for(var c=Nb[a],d=0;d<a;d++)c[d]=v[b+4*d>>2];O.drawBuffers(c)},Bb:(a,b,c,d)=>{O.drawElements(a,b,c,d)},Cb:(a,b,c,d,e)=>{O.drawElementsInstanced(a,b,c,d,e)},g:a=>O.enable(a),Nb:a=>{O.enableVertexAttribArray(a)},k:(a,b,c,d)=>{O.framebufferRenderbuffer(a,b,c,wb[d])},
e:(a,b,c,d,e)=>{O.framebufferTexture2D(a,b,c,R[d],e)},D:(a,b,c,d,e)=>{O.framebufferTextureLayer(a,b,R[c],d,e)},K:a=>O.frontFace(a),Ka:(a,b)=>{V(a,b,"createBuffer",P)},Q:(a,b)=>{V(a,b,"createFramebuffer",vb)},Yb:(a,b)=>{V(a,b,"createRenderbuffer",wb)},Da:(a,b)=>{V(a,b,"createSampler",T)},Ia:(a,b)=>{V(a,b,"createTexture",R)},Ua:(a,b)=>{V(a,b,"createVertexArray",xb)},Zb:(a,b)=>O.getAttribLocation(Q[a],b?B(u,b):""),b:(a,b)=>Pb(a,b),ec:(a,b,c,d)=>{a=O.getProgramInfoLog(Q[a]);null===a&&(a="(unknown error)");
b=0<b&&d?M(a,d,b):0;c&&(v[c>>2]=b)},za:(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.Vc){var d=O.getProgramParameter(a,35718);for(b=0;b<d;++b)a.Vc=Math.max(a.Vc,O.getActiveUniform(a,b).name.length+1)}v[c>>2]=a.Vc}else if(35722==b){if(!a.Tc)for(d=O.getProgramParameter(a,35721),b=0;b<d;++b)a.Tc=Math.max(a.Tc,O.getActiveAttrib(a,b).name.length+1);v[c>>2]=a.Tc}else if(35381==b){if(!a.Uc)for(d=
O.getProgramParameter(a,35382),b=0;b<d;++b)a.Uc=Math.max(a.Uc,O.getActiveUniformBlockName(a,b).length+1);v[c>>2]=a.Uc}else v[c>>2]=O.getProgramParameter(a,b);else U||=1281},_b:(a,b,c,d)=>{a=O.getShaderInfoLog(S[a]);null===a&&(a="(unknown error)");b=0<b&&d?M(a,d,b):0;c&&(v[c>>2]=b)},xa:(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},Sa:(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=Ob().map(Qb),c=zb[a]=c,0>b||b>=c.length?(U||=1281,0):c[b];default:return U||=1280,0}},ya:(a,b)=>{b=b?B(u,b):"";if(a=Q[a]){var c=a,d=c.Sc,e=c.Cd,g;if(!d){c.Sc=d={};c.Bd={};var f=O.getProgramParameter(c,35718);for(g=0;g<f;++g){var l=O.getActiveUniform(c,g);var m=l.name;l=l.size;var p=Rb(m);p=0<p?m.slice(0,p):m;var r=c.hd;c.hd+=l;e[p]=[l,r];for(m=0;m<l;++m)d[r]=m,c.Bd[r++]=p}}c=
a.Sc;d=0;e=b;g=Rb(b);0<g&&(d=parseInt(b.slice(g+1))>>>0,e=b.slice(0,g));if((e=a.Cd[e])&&d<e[0]&&(d+=e[1],c[d]=c[d]||O.getUniformLocation(a,b)))return d}else U||=1281;return-1},vb:(a,b,c)=>{for(var d=Nb[b],e=0;e<b;e++)d[e]=v[c+4*e>>2];O.invalidateFramebuffer(a,d)},Aa:a=>{a=Q[a];O.linkProgram(a);a.Sc=0;a.Cd={}},Ta:(a,b)=>{3317==a?Ab=b:3314==a&&(Bb=b);O.pixelStorei(a,b)},L:(a,b)=>O.polygonOffset(a,b),yb:a=>O.readBuffer(a),Wb:(a,b,c,d,e)=>O.renderbufferStorageMultisample(a,b,c,d,e),F:(a,b,c)=>{O.samplerParameterf(T[a],
b,c)},f:(a,b,c)=>{O.samplerParameteri(T[a],b,c)},s:(a,b,c,d)=>O.scissor(a,b,c,d),bc:(a,b,c,d)=>{for(var e="",g=0;g<b;++g){var f=(f=w[c+4*g>>2])?B(u,f,d?w[d+4*g>>2]:void 0):"";e+=f}O.shaderSource(S[a],e)},Qa:(a,b,c)=>O.stencilFunc(a,b,c),ua:(a,b,c,d)=>O.stencilFuncSeparate(a,b,c,d),r:a=>O.stencilMask(a),Pa:(a,b,c)=>O.stencilOp(a,b,c),ta:(a,b,c,d)=>O.stencilOpSeparate(a,b,c,d),Ha:(a,b,c,d,e)=>O.texStorage2D(a,b,c,d,e),Ga:(a,b,c,d,e,g)=>O.texStorage3D(a,b,c,d,e,g),u:(a,b,c,d,e,g,f,l,m)=>{if(2<=W.version){if(O.Rc){O.texSubImage2D(a,
b,c,d,e,g,f,l,m);return}if(m){var p=Sb(l);O.texSubImage2D(a,b,c,d,e,g,f,l,p,m>>>31-Math.clz32(p.BYTES_PER_ELEMENT));return}}if(m){p=Sb(l);var r=g*((Bb||e)*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[f-6402]||1)*p.BYTES_PER_ELEMENT+Ab-1&-Ab);m=p.subarray(m>>>31-Math.clz32(p.BYTES_PER_ELEMENT),m+r>>>31-Math.clz32(p.BYTES_PER_ELEMENT))}else m=null;O.texSubImage2D(a,b,c,d,e,g,f,l,m)},Ea:(a,b,c,d,e,g,f,l,m,p,r)=>{if(O.Rc)O.texSubImage3D(a,b,c,d,e,g,f,l,m,p,r);else if(r){var E=Sb(p);
O.texSubImage3D(a,b,c,d,e,g,f,l,m,p,E,r>>>31-Math.clz32(E.BYTES_PER_ELEMENT))}else O.texSubImage3D(a,b,c,d,e,g,f,l,m,p,null)},Lb:(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<b;++e)d[e]=x[c+4*e>>2];else d=x.subarray(c>>2,c+4*b>>2);O.uniform1fv(X(a),d)}},dc:(a,b)=>{O.uniform1i(X(a),b)},Hb:(a,b,c)=>{if(2<=W.version)b&&O.uniform1iv(X(a),v,c>>2,b);else{if(288>=b)for(var d=Tb[b],e=0;e<b;++e)d[e]=v[c+4*e>>2];else d=v.subarray(c>>2,c+4*b>>2);O.uniform1iv(X(a),
d)}},Kb:(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<b;e+=2)d[e]=x[c+4*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)}},Gb:(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=Tb[b],e=0;e<b;e+=2)d[e]=v[c+4*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)}},Jb:(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<b;e+=3)d[e]=x[c+4*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)}},Fb:(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=Tb[b],e=0;e<b;e+=3)d[e]=v[c+4*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)}},Ib:(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 g=0;g<b;g+=
4){var f=c+g;d[g]=e[f];d[g+1]=e[f+1];d[g+2]=e[f+2];d[g+3]=e[f+3]}}else d=x.subarray(c>>2,c+16*b>>2);O.uniform4fv(X(a),d)}},Eb:(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=Tb[b],e=0;e<b;e+=4)d[e]=v[c+4*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)}},Db:(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],g=x;d>>=2;b*=16;for(var f=
0;f<b;f+=16){var l=d+f;e[f]=g[l];e[f+1]=g[l+1];e[f+2]=g[l+2];e[f+3]=g[l+3];e[f+4]=g[l+4];e[f+5]=g[l+5];e[f+6]=g[l+6];e[f+7]=g[l+7];e[f+8]=g[l+8];e[f+9]=g[l+9];e[f+10]=g[l+10];e[f+11]=g[l+11];e[f+12]=g[l+12];e[f+13]=g[l+13];e[f+14]=g[l+14];e[f+15]=g[l+15]}}else e=x.subarray(d>>2,d+64*b>>2);O.uniformMatrix4fv(X(a),!!c,e)}},l:a=>{a=Q[a];O.useProgram(a);O.Ed=a},Ob:(a,b)=>{O.vertexAttribDivisor(a,b)},Pb:(a,b,c,d,e)=>{O.vertexAttribIPointer(a,b,c,d,e)},Qb:(a,b,c,d,e,g)=>{O.vertexAttribPointer(a,b,c,!!d,
e,g)},t:(a,b,c,d)=>O.viewport(a,b,c,d),gb:Ga,gc:function(){h.vd=a=>{0!=bc()&&(a.preventDefault(),a.returnValue=" ")};window.addEventListener("beforeunload",h.vd)},_a:function(){h.Ad=a=>{const b=a.clipboardData.getData("text");Yb(()=>{const c=Vb(b);ac(c)})};window.addEventListener("paste",h.Ad)},Ra:function(){h.ge=[];h.wd=b=>{b.stopPropagation();b.preventDefault()};h.xd=b=>{b.stopPropagation();b.preventDefault()};h.yd=b=>{b.stopPropagation();b.preventDefault()};h.zd=b=>{b.stopPropagation();b.preventDefault();
const c=b.dataTransfer.files;h.he=c;cc(c.length);for(let e=0;e<c.length;e++)Yb(()=>{const g=Vb(c[e].name);dc(e,g)});let d=0;b.shiftKey&&(d|=1);b.ctrlKey&&(d|=2);b.altKey&&(d|=4);b.metaKey&&(d|=8);ec(b.clientX,b.clientY,d)};const a=h.Oc;a.addEventListener("dragenter",h.wd,!1);a.addEventListener("dragleave",h.xd,!1);a.addEventListener("dragover",h.yd,!1);a.addEventListener("drop",h.zd,!1)},Vb:function(){const a=document.getElementById("sokol-app-favicon");a&&document.head.removeChild(a)},ac:function(a){h.Xc&&
(URL.revokeObjectURL(h.Xc[a].Ld),h.Xc[a]=null)},Ma:function(a,b){0!==b&&(document.title=b?B(u,b):"");a=a?B(u,a):"";void 0!==h.canvas&&("object"===typeof h.canvas?ab[a]=h.canvas:console.warn("sokol_app.h: Module['canvas'] is set but is not an object"));h.Oc=I(a);h.Oc||console.warn("sokol_app.h: can't find html5_canvas_selector ",a);h.Oc.requestPointerLock||console.warn("sokol_app.h: target doesn't support requestPointerLock: ",a)},cb:function(){window.removeEventListener("beforeunload",h.vd)},Ya:function(){window.removeEventListener("paste",
h.Ad)},Oa:function(){const a=h.Oc;a.removeEventListener("dragenter",h.wd);a.removeEventListener("dragleave",h.xd);a.removeEventListener("dragover",h.yd);a.removeEventListener("drop",h.zd)},w:function(){h.Oc&&h.Oc.requestPointerLock&&h.Oc.requestPointerLock()},Ba:function(a,b,c){if(h.Oc){if(0===b)a="none";else if(0!=c)a=h.Xc[a].Nd;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"}h.Oc.style.cursor=a}},Rb:function(a,b,c){const d=document.createElement("canvas");d.width=a;d.height=b;const e=d.getContext("2d"),g=e.createImageData(a,b);g.data.set(u.subarray(c,c+a*b*4));e.putImageData(g,0,0);a=document.createElement("link");a.id="sokol-app-favicon";a.rel="shortcut icon";a.href=d.toDataURL();document.head.appendChild(a)},Xa:function(a){a=
a?B(u,a):"";const b=document.createElement("textarea");b.setAttribute("autocomplete","off");b.setAttribute("autocorrect","off");b.setAttribute("autocapitalize","off");b.setAttribute("spellcheck","false");b.style.left="-100px";b.style.top="-100px";b.style.height=1;b.style.width=1;b.value=a;document.body.appendChild(b);b.select();document.execCommand("copy");document.body.removeChild(b)},db: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];Yb(()=>{const e=Vb(c),g=Vb(d);hc(e,g)})}},eb:function(){return h.Pc?h.Pc.bufferSize:0},wb:function(a,b,c){h.Gc=null;h.Pc=null;"undefined"!==typeof AudioContext?h.Gc=new AudioContext({sampleRate:a,latencyHint:"interactive"}):(h.Gc=null,console.log("sokol_audio.h: no WebAudio support"));if(h.Gc){console.log("sokol_audio.h: sample rate ",h.Gc.sampleRate);h.Pc=h.Gc.createScriptProcessor(c,0,b);h.Pc.onaudioprocess=e=>{const g=e.outputBuffer.length,f=gc(g);if(f){const l=e.outputBuffer.numberOfChannels;
for(let m=0;m<l;m++){const p=e.outputBuffer.getChannelData(m);for(let r=0;r<g;r++)p[r]=x[(f>>2)+(l*r+m)]}}};h.Pc.connect(h.Gc.destination);const d=()=>{if(h.Gc){const e=h.Gc.state;"suspended"!==e&&"interrupted"!==e||h.Gc.resume().catch(()=>{console.warn("sokol_audio.h: webaudio resume failed")})}};h.Gc.onstatechange=d;document.addEventListener("visibilitychange",()=>{"visible"===document.visibilityState&&d()});document.addEventListener("click",d,{once:!0});document.addEventListener("touchend",d,{once:!0});
document.addEventListener("keydown",d,{once:!0});return 1}return 0},fb:function(){return h.Gc?h.Gc.sampleRate:0},ra:function(){const a=h.Gc;null!==a&&(h.Pc&&h.Pc.disconnect(),a.close(),h.Gc=null,h.Pc=null)},B:function(a,b,c,d,e,g){const f=b?B(u,b):"";b=new Headers;0<d&&b.append("Range",`bytes=${c}-${c+d-1}`);fetch(f,{method:"GET",headers:b}).then(l=>{l.ok?l.arrayBuffer().then(m=>{m=new Uint8Array(m);m.length<=g?(u.set(m,e),jc(a,d,m.length)):lc(a)}).catch(m=>{console.error(`sokol_fetch.h: GET ${f} failed with: `,
m);mc(a)}):kc(a,l.status)}).catch(l=>{console.error(`sokol_fetch.h: GET ${f} failed with: `,l);mc(a)})},pa:function(a,b){const c=b?B(u,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`),mc(a)):ic(a,Number(d))):kc(a,d.status)}).catch(d=>{console.error(`sokol_fetch.h: HEAD ${c} failed with: `,d);mc(a)})},Ca:function(){return navigator.userAgent.includes("Macintosh")?1:0},oa:function(a,b){b=
b?B(u,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 rc(a=[]){var b=fc;a.unshift(ea);var c=a.length,d=Ub(4*(c+1)),e=d,g;for(g of a)w[e>>2]=Vb(g),e+=4;w[e>>2]=0;try{var f=b(c,d);na=f;Ga(f)}catch(l){Fa(l)}}
function sc(a=da){function b(){h.calledRun=!0;if(!q){tc.ic();h.onRuntimeInitialized?.();h.noInitialRun||rc(a);if(h.postRun)for("function"==typeof h.postRun&&(h.postRun=[h.postRun]);h.postRun.length;){var c=h.postRun.shift();za.push(c)}ya(za)}}if(0<z)A=sc;else{if(h.preRun)for("function"==typeof h.preRun&&(h.preRun=[h.preRun]);h.preRun.length;)Ba();ya(Aa);0<z?A=sc:h.setStatus?(h.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>h.setStatus(""),1);b()},1)):b()}}var tc;
(async function(){function a(c){c=tc=c.exports;N=c.jc;ac=h.__sapp_emsc_onpaste=c.kc;bc=h.__sapp_html5_get_ask_leave_site=c.lc;cc=h.__sapp_emsc_begin_drop=c.mc;dc=h.__sapp_emsc_drop=c.nc;ec=h.__sapp_emsc_end_drop=c.oc;h.__sapp_emsc_invoke_fetch_cb=c.pc;h.__sapp_emsc_set_fullscreen_flag=c.qc;fc=h._main=c.rc;gc=h.__saudio_emsc_pull=c.sc;hc=h.__sargs_add_kvp=c.tc;ic=h.__sfetch_emsc_head_response=c.uc;jc=h.__sfetch_emsc_get_response=c.vc;kc=h.__sfetch_emsc_failed_http_status=c.wc;lc=h.__sfetch_emsc_failed_buffer_too_small=
c.xc;mc=h.__sfetch_emsc_failed_other=c.yc;nc=h._fs_emsc_alloc=c.zc;oc=h._fs_emsc_load_snapshot_callback=c.Ac;pc=c.Cc;Xb=c.Dc;Ub=c.Ec;Wb=c.Fc;pa=c.hc;db=c.Bc;oa();z--;h.monitorRunDependencies?.(z);0==z&&A&&(c=A,A=null,c());return tc}z++;h.monitorRunDependencies?.(z);var b={a:qc};if(h.instantiateWasm)return new Promise(c=>{h.instantiateWasm(b,(d,e)=>{c(a(d,e))})});ta??=h.locateFile?h.locateFile("lc80.wasm",ia):ia+"lc80.wasm";return a((await wa(b)).instance)})();sc();