(function(){function ta(b,c,a,e){b?(b=d.LINEAR,c=c?d.LINEAR_MIPMAP_LINEAR:d.LINEAR):(b=d.NEAREST,c=c?d.NEAREST_MIPMAP_LINEAR:d.NEAREST);d.texParameteri(d.TEXTURE_2D,d.TEXTURE_MAG_FILTER,b);d.texParameteri(d.TEXTURE_2D,d.TEXTURE_MIN_FILTER,c);d.texParameteri(d.TEXTURE_2D,d.TEXTURE_WRAP_S,a?d.REPEAT:d.CLAMP_TO_EDGE);d.texParameteri(d.TEXTURE_2D,d.TEXTURE_WRAP_T,e?d.REPEAT:d.CLAMP_TO_EDGE)}function Q(b,c,a,e,f,g,l){this.G=l?null:d.createFramebuffer();this.j=l?null:d.createTexture();this.o=null;this.width=
b;this.height=c;this.ca=a;this.da=e;this.type=f;l||(d.bindTexture(d.TEXTURE_2D,this.j),d.texImage2D(d.TEXTURE_2D,0,a,b,c,0,e,f,null),ta(!1,!1,!1,!1),d.bindFramebuffer(d.FRAMEBUFFER,this.G),d.framebufferTexture2D(d.FRAMEBUFFER,d.COLOR_ATTACHMENT0,d.TEXTURE_2D,this.j,0),ua=this,va=wa=0,xa=b,ya=c,g&&(this.o=d.createRenderbuffer(),d.bindRenderbuffer(d.RENDERBUFFER,this.o),d.renderbufferStorage(d.RENDERBUFFER,d.DEPTH_COMPONENT,b,c),d.framebufferRenderbuffer(d.FRAMEBUFFER,d.DEPTH_ATTACHMENT,d.RENDERBUFFER,
this.o)))}function lb(){p.addEventListener("mousedown",function(c){0===c.button?(r&&Ra(),E=1):2===c.button&&(R=1,c.preventDefault())});p.addEventListener("mouseup",function(c){0===c.button?E=0:2===c.button&&(R=0,c.preventDefault())});p.addEventListener("contextmenu",function(c){c.preventDefault()});p.addEventListener("mousemove",function(c){r?(t+=c.movementX*z*K,u+=c.movementY*-z*K):(t=Math.floor(c.clientX*z),u=Math.floor(v.height-1-c.clientY*z))});p.addEventListener("touchstart",function(c){document.fullscreenElement!==
p&&p.requestFullscreen();if(B){var a=c.changedTouches[0];r?(u=t=0,W=a.identifier,za=Math.floor(a.clientX*z),Aa=Math.floor(v.height-1-a.clientY*z)):(t=Math.floor(a.clientX*z),u=Math.floor(v.height-1-a.clientY*z));E=1;c.preventDefault();c.stopPropagation()}});p.addEventListener("touchmove",function(c){if(B){var a=c.changedTouches[0];r?(a.identifier===W?(t+=(a.clientX-za)*z*K,u+=(a.clientY-Aa)*-z*K):(u=t=0,W=a.identifier),za=a.clientX,Aa=a.clientY):(t=Math.floor(a.clientX*z),u=Math.floor(v.height-1-
a.clientY*z));E=1;c.preventDefault();c.stopPropagation()}});p.addEventListener("touchend",function(c){if(B){var a=c.changedTouches[0];r&&a.identifier===W&&(u=t=0);0===c.targetTouches.length&&(E=0);c.preventDefault();c.stopPropagation()}});p.addEventListener("touchcancel",function(c){if(B){var a=c.changedTouches[0];r&&a.identifier===W&&(u=t=0);0===c.targetTouches.length&&(E=0);c.preventDefault();c.stopPropagation()}});for(var b=0;b<I.length;b++)Ba[I[b]]=b;window.addEventListener("keydown",function(c){if(B)if(c.key===
Ca)ia(!ja),c.preventDefault(),c.stopPropagation();else{var a=Ba[c.code];void 0!==a&&(F[Math.floor(a/32)]|=1<<a%32,c.preventDefault(),c.stopPropagation())}});window.addEventListener("keyup",function(c){if(B)if(c.key===Ca)c.preventDefault(),c.stopPropagation();else{var a=Ba[c.code];void 0!==a&&(F[Math.floor(a/32)]&=~(1<<a%32),c.preventDefault(),c.stopPropagation())}})}function Ra(){document.pointerLockElement!==p&&p.requestPointerLock({unadjustedMovement:!0})}function mb(){Da=q.GamepadMouse;window.addEventListener("gamepadconnected",
function(b){G=b.o;Ea=L})}function Sa(){var b=window.devicePixelRatio;b||(b=1);p.width=v.width=Math.ceil(window.innerWidth*b);p.height=v.height=Math.ceil(window.innerHeight*b);1===b?1!==z&&(p.style.removeProperty("width"),p.style.removeProperty("height")):(p.style.width=Math.ceil(window.innerWidth)+"px",p.style.height=window.innerHeight+"px");z=b;Ta()}function Ua(b,c){this.aa=b;this.A=c}function Va(b,c){Wa("Error: Shader error '"+b.name+"': "+c)}function nb(b){b=b.target.ba;b.width=b.image.naturalWidth;
b.height=b.image.naturalHeight;d.bindTexture(d.TEXTURE_2D,b.j);ta(b.X,b.S,b.Z,b.$);d.texImage2D(d.TEXTURE_2D,0,d.RGBA,d.RGBA,d.UNSIGNED_BYTE,b.image);b.S&&d.generateMipmap(d.TEXTURE_2D);Fa--}function Ga(b,c){return Xa?new Q(b,c,d.RGBA32F,d.RGBA,d.FLOAT):new Q(b,c,d.RGBA,d.RGBA,d.UNSIGNED_BYTE)}function Ta(){if(J){var b=ob;b.length=m.length;b.fill(!1);for(var c=0;c<m.length;c++){var a=m[c];if(a.type===C)if(a.N.length=0,a.L=!1,a.O===Ya)a.width=v.width,a.height=v.height;else if(a.O===pb)a.width=a.F,
a.height=a.D;else{var e=m[a.O-2];a.width=e.width;a.height=e.height}}for(c=0;c<m.length;c++)if(a=m[c],a.type===C)for(e=0;e<a.H.length;e++){var f=a.H[e];if(f.A>=c){var g=m[f.A];g.type===C&&(m[f.A].L=!0)}}for(c=m.length-1;-1<c;c--)if(a=m[c],a.type===C){if(a.L)if(a.J){if(g=a.f,g.width!==a.width||g.height!==a.height)g.M(a.width,a.height),a.B.M(a.width,a.height)}else a.f=Ga(a.width,a.height),a.B=Ga(a.width,a.height),a.J=!0;else a.J&&(a.f.v(),a.B.v(),a.J=!1);for(e=0;e<a.H.length;e++)f=a.H[e],g=m[f.A],g.type!==
C||b[f.A]||(g.L||a.N.push(f.A),b[f.A]=!0)}e=Ha;f=w[w.length-1];Ha=Za;Za=e;for(c=0;c<m.length;c++)if(a=m[c],a.type===C&&!a.L){if(a===f)a.f=v;else if(b[c]){var l=M.length,x=a.width,n=a.height;for(g=0;g<l;g++){var h=M[g];if(h.width===x&&h.height===n){a.f=h;l--;g!==l&&(M[g]=M[l]);M.length=l;g=-1;break}}if(g>=l){l=e.length;for(g=0;g<l;g++)if(h=e[g],h.width===x&&h.height===n){a.f=h;l--;g!==l&&(e[g]=e[l]);e.length=l;g=-1;break}g>=l&&(g=Ga(x,n),Ha.push(g),a.f=g)}}else a.f=null;for(g=0;g<a.N.length;g++)M.push(m[a.N[g]].f)}for(c=
0;c<e.length;c++)e[c].v();e.length=0;M.length=0}}function Ia(b){if(b.i&&b.f){b.f.V();d.useProgram(b.i);b.U&&d.uniform4f(b.U,v.width,v.height,N,Ja);b.T&&d.uniform4f(b.T,t,u,E,R);b.P&&d.uniform4uiv(b.P,F);for(var c=b.H,a=0;a<c.length;a++){var e=c[a],f=m[e.A],g=null;switch(f.type){case C:g=f.J?f.B.j:f.f.j;break;case X:g=f.j;break;case Ka:g=f.j}g&&(e=e.aa,f=g,g=Y.indexOf(d.INVALID_VALUE),-1===g?g=Y.push(e)-1:Y[g]=e,d.activeTexture(d.TEXTURE0+g),d.bindTexture(d.TEXTURE_2D,f),d.uniform1i(e,g))}b=b.R;for(a=
0;a<b.length;a++)e=b[a],f=m[e.A],f.type!==ka&&d.uniform4f(e.aa,f.width,f.height,1/f.width,1/f.height);d.drawArrays(d.TRIANGLES,0,3);for(a=0;a<Y.length;a++)Y[a]=d.INVALID_VALUE}}function $a(){for(var b=0,c=w.length-1;b<c;b++)Ia(w[b])}function ab(){for(var b=0,c=w.length-1;b<c;b++){var a=w[b];if(a.J){var e=a.f;a.f=a.B;a.B=e}}}function Wa(b){document.body.innerHTML="<div class='FatalCrash'>"+b+"</div>"}function La(b){b=b.C("-","+").C("_","/");var c=b.length%4;if(c){c=4-c;for(var a=0;a<c;a++)b+="="}return atob(b)}
function qb(b){if((b=b.target.files)&&b.length){var c=new FileReader;c.onload=rb;c.readAsArrayBuffer(b[0])}}function rb(b){if(!B){b=new Float32Array(b.target.result);1<O.length&&(Z.selectedIndex=(new Uint32Array(b.buffer))[0]);for(var c=0;c<A.length;c++)A[c].element.value=b[2+c];aa=b;bb()}}function cb(){var b="";1<O.length&&(la=Math.max(0,Z.selectedIndex),b+="#define BUILD_MODE_ID "+la+"\n");for(var c=0;c<A.length;c++){var a=A[c],e=Math.round(a.element.value);b+="#define "+a.name.toUpperCase().C(" ",
"_").C("-","_").C(",","_")+" "+e+"\n"}for(c=0;c<m.length;c++)a=m[c],a.type===ka&&(b+=a.I+"\n\n");for(c=0;c<m.length;c++)if(a=m[c],a.type===C){a.W=ma+b+a.I;a.i&&d.deleteProgram(a.i);d.shaderSource(a.K,a.W);d.compileShader(a.K);if(d.getShaderParameter(a.K,d.COMPILE_STATUS))if(a.i=d.createProgram(),d.attachShader(a.i,Ma),d.attachShader(a.i,a.K),d.bindAttribLocation(a.i,0,"vertexPosition"),d.linkProgram(a.i),d.getProgramParameter(a.i,d.LINK_STATUS)){a.U=d.getUniformLocation(a.i,"GlslPassParams");a.T=
d.getUniformLocation(a.i,"MouseState");a.P=d.getUniformLocation(a.i,"KeyboardState");e=w[w.length-1];a.H.length=0;for(var f=a.R.length=0;f<m.length;f++)if(m[f]!==e){var g=d.getUniformLocation(a.i,"Layer"+f);g&&a.H.push(new Ua(g,f));(g=d.getUniformLocation(a.i,"LayerSize"+f))&&a.R.push(new Ua(g,f))}a=!0}else Va(a,d.getProgramInfoLog(a.i)),a=!1;else Va(a,d.getShaderInfoLog(a.K)),a=!1;if(!a)return!1}Ta();if(aa){b=2+A.length;N=aa[1];for(c=0;c<P.length;c++)a=m[P[c]],e=a.F*a.D*4,a.f&&(f=aa.subarray(b,b+
e),a.f.M(a.F,a.D,f),a.B&&a.B.M(a.F,a.D,f)),b+=e;aa=null}return!0}function ia(b){(ja=b)?(q.BuildPause&&(na.style.display="none",S.style.display="block",r&&(T=ba.value,K=Math.pow(10,parseFloat(T)))),db(la),U=0===ca?Date.now()-1E3*N:0,Na=Date.now()):(q.BuildPause&&(S.style.display="none",na.style.display="block",r&&(ba.value=T),r&&document.exitPointerLock()),db(-1))}function eb(){Fa?setTimeout(eb,20):fb()}function fb(){if(q.BuildLaunch){var b=document.getElementById("LaunchContent");b.innerHTML="<span class='Tit'>"+
J.ProjectName+"</span></br>"+q.BuildLaunchText+"</br>";1<O.length&&b.appendChild(Z);for(var c=0;c<A.length;c++){var a=A[c];b.appendChild(document.createElement("br"));b.appendChild(da(a.element,a.name))}r&&(oa=ea(!0,"-3","3","0"),b.appendChild(document.createElement("br")),b.appendChild(da(oa,"Mouse Sensitivity")));D&&(pa=ea(!0,"0","1","0.5"),pa.addEventListener("input",function(){D.volume=parseFloat(pa.value)}),b.appendChild(document.createElement("br")),b.appendChild(da(pa,"Audio Volume")));qa.style.display=
"block";document.getElementById("Launch").addEventListener("click",bb)}else{if(!cb())return;S.style.display="block";ia(!0);B=!0}document.getElementById("SplashPanel").style.display="none";gb()}function bb(){N=0;cb()&&(qa.style.display="none",S.style.display="block",ia(!0),r&&(T=oa.value,K=Math.pow(10,parseFloat(T)),Ra()),B=!0)}function ea(b,c,a,e){var f=document.createElement("input");b?f.type="range":(f.size="10",f.type="number");0<c.length&&0<a.length&&(f.min=c,f.max=a);f.value=e;f.step="any";return f}
function da(b,c){var a=document.createElement("label");a.innerText=c+" ";a.appendChild(b);return a}function db(b){if(D){var c=q.BuildAudio;-1<b&&(b=O[b].audio,0<b.length&&(c=b));0<c.length?(c!==D.src&&(D.src=c),D.play()):D.pause()}}function H(b,c){this.name=b;this.type=c;this.I=""}function Oa(b,c){H.call(this,b,C);this.I=c;this.O=Ya;this.D=this.F=512;this.height=this.width=1;this.W="";this.f=v;this.K=d.createShader(d.FRAGMENT_SHADER);this.P=this.T=this.U=this.i=null;this.H=[];this.R=[];this.N=[];
this.J=this.L=!1;this.B=null}function Pa(b){H.call(this,b,X);this.image=new Image;this.image.className+="LayImg";this.height=this.width=1;this.j=d.createTexture();this.S=this.X=this.$=this.Z=!1}function hb(b,c){H.call(this,b,ka);this.I=c}function Qa(b){H.call(this,b,Ka);this.height=this.width=0;this.j=d.createTexture();this.channels=0}function sb(b){this.name=b.n;this.audio=b.a}function tb(b){this.name=b.n;this.G=b.s;this.min=b.m;this.max=b.u;this.o=b.d;this.element=ea(this.G,this.min,this.max,this.o)}
function ub(b){switch(b.t){case C:var c=new Oa(b.n,b.g);c.O=b.r;c.F=b.w;c.D=b.h;break;case X:c=new Pa(b.n);c.Z=b.x;c.$=b.y;c.X=b.l;c.S=b.m;c.I=b.g;break;case ka:c=new hb(b.n,b.g);break;case Ka:c=new Qa(b.n),c.channels=b.c,c.I=b.g}return c}function vb(b){var c=b.l;m.length=c.length;for(var a=w.length=0;a<m.length;a++){var e=ub(c[a]);m[a]=e;e.type===C&&w.push(e)}J=b.c;ca=J.LockFPS;Ca=J.PlayHotkey;r=J.CaptureMouse;q=b.b;q.BuildLaunchText=La(q.BuildLaunchText);q.BuildPauseText=La(q.BuildPauseText);O=
b.bm;A=b.bo;P=b.bc;fa=b.gp;(q.GamepadMouse||fa)&&mb();c=0<q.BuildAudio.length;e=b.bm;Z=document.createElement("select");O.length=e.length;for(a=0;a<e.length;a++){var f=O[a]=new sb(e[a]),g=document.createElement("option");0<f.audio.length&&(c=!0);g.innerText=f.name;Z.appendChild(g)}c&&(D=new Audio,D.loop=!0);b=b.bo;A.length=b.length;for(a=0;a<b.length;a++)A[a]=new tb(b[a]);a=document.getElementById("Save");b=document.getElementById("Load");q.BuildSaveLoad?(a.addEventListener("click",function(){for(var n=
2+A.length,h=0;h<P.length;h++){var k=m[P[h]];n+=k.F*k.D*4}n=new Float32Array(n);var y=2;(new Uint32Array(n.buffer))[0]=la;n[1]=N;for(h=0;h<A.length;h++)n[y++]=parseFloat(A[h].element.value);for(h=0;h<P.length;h++)k=m[P[h]],k.f&&(k.f.V(),d.readPixels(0,0,k.F,k.D,d.RGBA,d.FLOAT,n,y)),y+=k.F*k.D*4;ra&&URL.revokeObjectURL(ra);ra=URL.createObjectURL(new Blob([n]));h=new Date;h=h.getFullYear()+"_"+(h.getMonth()+1)+"_"+h.getDate()+"_"+Math.floor(h.getTime()/1E3)%86400;h=J.ProjectName.C(" ","_")+h+".savestate";
k=document.createElement("a");k.href=ra;k.download=h;k.click()}),b.addEventListener("click",function(){var n=document.createElement("input");n.type="file";n.accept=".savestate";n.addEventListener("change",qb);n.click()})):a.style.display=b.style.display="none";a=q.BuildLaunch;b=q.BuildPause;if(a||b){c=document.createElement("style");if((e=q.BuildCSS)&&2<e.length)c.innerHTML=e;else{var l=q.BuildFGColor,x=q.BuildBGColor;e=function(n){var h=1-n,k=Math.min(255,Math.floor(l.r*h+x.r*n)).toString(16);var y=
"#"+(1===k.length?"0"+k:k);k=Math.min(255,Math.floor(l.g*h+x.g*n)).toString(16);y+=1===k.length?"0"+k:k;k=Math.min(255,Math.floor(l.b*h+x.b*n)).toString(16);return y+(1===k.length?"0"+k:k)};f="{background-color:"+e(.1)+";border: 0.25vw solid "+e(.25)+";}";c.innerHTML="div.Panel {color:"+e(0)+"; background-color:"+e(1)+";}span.Tit {color:"+e(.5)+"; text-shadow: 0px 0px 0.4vw "+e(0)+";}span.Btn {color:"+e(.1)+";background-color:"+e(.8)+";border: 0.3vw solid "+e(.6)+";}span.Btn:hover {background-color:"+
e(.5)+";}input, select {color:"+e(.05)+";background-color:"+e(.92)+";border: 0.1vw solid "+e(.4)+";}input[type='range']::-webkit-slider-thumb "+f+"input[type='range']::-moz-range-thumb "+f}document.head.appendChild(c)}b&&(b=document.getElementById("PauseContent"),b.innerHTML="<span class='Tit'>"+J.ProjectName+" Paused</span></br>"+q.BuildPauseText,document.getElementById("Resume").addEventListener("click",function(){ia(!0)}),document.getElementById("GoFullscreen").addEventListener("click",function(){document.fullscreenElement?
document.exitFullscreen():document.body.requestFullscreen()}),c=document.getElementById("Quit"),a?c.addEventListener("click",function(){ja=B=!1;r&&(oa.value=T=ba.value);S.style.display=na.style.display="none";qa.style.display="block"}):c.style.display="none",r&&(ba=ea(!0,"-3","3","0"),b.appendChild(document.createElement("br")),b.appendChild(da(ba,"Mouse Sensitivity"))),D&&(sa=ea(!0,"0","1","0.5"),sa.addEventListener("input",function(){D.volume=parseFloat(sa.value)}),b.appendChild(document.createElement("br")),
b.appendChild(da(sa,"Audio Volume"))))}function gb(){if(B&&ja){L=Date.now();var b=L-Na;a:{var c=b;if(G&&G.connected){if(G.timestamp!=ib)ib=G.timestamp,Ea=L;else if(3E3<L-Ea)break a;c/=1E3;if(Da){var a=2*(Da-1),e=G.axes[a];a=G.axes[a+1];c*=v.height*K;e=e*e*Math.sign(e);a=a*a*Math.sign(a);r?(t=e*c,u=-a*c):(c*=.25,t=Math.min(Math.max(t+e*c,0),v.width),u=Math.min(Math.max(u+a*c,0),v.height))}if(fa){F.fill(0);for(e=E=R=0;17>e;e++)(c=fa[e])&&G.buttons[e].pressed&&(c--,c>=I.length?c===I.length?E=1:R=1:(a=
Math.floor(c/32),c%=32,F[a]|=1<<c));for(e=17;25>e;e++)if(c=fa[e]){a=e-17;var f=Math.floor(a/2);a=(a+f)%2*2-1;.5<G.axes[f]*a&&(c--,c>=I.length?c===I.length?E=1:R=1:(a=Math.floor(c/32),c%=32,F[a]|=1<<c))}}}}if(0===ca)Ja=1E3/Math.max(1,b),N=(L-U)/1E3,$a(),Ia(w[w.length-1]),ab(),r&&(t=u=0);else for(e=1E3/ca,c=e/1E3,Ja=ca,U+=b,b=U>=e;b;)N+=c,U-=e,b=U>=e,$a(),r&&(t=u=0),b||Ia(w[w.length-1]),ab();Na=L}else r&&(t=u=0);requestAnimationFrame(gb)}var d,p,Y=[],v,ua=null,va,wa,xa,ya;Q.prototype.M=function(b,c,
a){this.width=b;this.height=c;this.G&&(d.bindTexture(d.TEXTURE_2D,this.j),d.texImage2D(d.TEXTURE_2D,0,this.ca,b,c,0,this.da,this.type,a),this.o&&(d.bindRenderbuffer(d.RENDERBUFFER,this.o),d.renderbufferStorage(d.RENDERBUFFER,d.DEPTH_COMPONENT,b,c)))};Q.prototype.V=function(b,c,a,e){4>arguments.length&&(b=c=0,a=this.width,e=this.height);if(ua!==this||va!==b||wa!==c||xa!==a||ya!==e)ua=this,va=b,wa=c,xa=a,ya=e,d.bindFramebuffer(d.FRAMEBUFFER,this.G),d.viewport(b,c,a,e),d.scissor(b,c,a,e)};Q.prototype.v=
function(){this.G&&(d.deleteFramebuffer(this.G),d.deleteTexture(this.j),this.o&&d.deleteRenderbuffer(this.o))};var jb,t=0,u=0,E=0,R=0,za=0,Aa=0,W=-1,K=1,G=null,Ea=-1,ib=0,Da=0,Ba={},F=new Uint32Array(4),I="Escape Digit1 Digit2 Digit3 Digit4 Digit5 Digit6 Digit7 Digit8 Digit9 Digit0 Minus Equal Backspace Tab KeyQ KeyW KeyE KeyR KeyT KeyY KeyU KeyI KeyO KeyP BracketLeft BracketRight Enter ControlLeft KeyA KeyS KeyD KeyF KeyG KeyH KeyJ KeyK KeyL Semicolon Quote Backquote ShiftLeft Backslash KeyZ KeyX KeyC KeyV KeyB KeyN KeyM Comma Period Slash ShiftRight NumpadMultiply AltLeft Space CapsLock F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 ScrollLock Numpad7 Numpad8 Numpad9 NumpadSubtract Numpad4 Numpad5 Numpad6 NumpadAdd Numpad1 Numpad2 Numpad3 Numpad0 NumpadDecimal IntlBackslash F11 F12 NumpadEqual NumpadComma NumpadEnter ControlRight NumpadDivide AltRight NumLock Home ArrowUp PageUp ArrowLeft ArrowRight End ArrowDown PageDown Insert Delete".split(" "),
z=1,Xa=!1,V=4,Ma,ma,ob=[],Ha=[],Za=[],M=[],B=!1,ja=!1,Ca,r=!1,ca=0,N=0,U=0,Na=0,L=0,Ja=0,J=null,m=[],w=[],Fa=0,q,O=[],A=[],P=[],D=null,fa=null,qa,na,S,T=0,la=-1,ra=null,aa=null,Z,pa,oa,sa,ba,C=0,ka=1,X=2,Ka=3,Ya=0,pb=1;document.addEventListener("DOMContentLoaded",function(){p=document.getElementsByTagName("canvas")[0];p.width=p.height=1;if(d=p.getContext("webgl2",{alpha:!1,antialias:!1,depth:!1,failIfMajorPerformanceCaveat:!1,preserveDrawingBuffer:!1})){v=new Q(4,4,d.RGBA,d.RGBA,d.UNSIGNED_BYTE,!1,
!0);d.enable(d.SCISSOR_TEST);d.enableVertexAttribArray(0);var b=[2,1,-2,1,0,-3];var c=d.createBuffer();d.bindBuffer(d.ARRAY_BUFFER,c);d.bufferData(d.ARRAY_BUFFER,"Float32Array"===c.constructor.name?b:new Float32Array(b),d.STATIC_DRAW);c.Y=2;c.ea=b.length/2;jb=c;b=!0}else b=!1;if(b){Xa=d.getExtension("EXT_color_buffer_float")?!0:!1;V=d.getParameter(d.MAX_TEXTURE_SIZE);d.enable(d.CULL_FACE);d.cullFace(d.BACK);d.disable(d.DEPTH_TEST);d.depthMask(!1);d.clearDepth(1);d.disable(d.STENCIL_TEST);d.disable(d.BLEND);
d.enable(d.SCISSOR_TEST);d.colorMask(!0,!0,!0,!0);b=d.createShader(d.VERTEX_SHADER);d.shaderSource(b,"#version 300 es\nprecision highp float;precision highp int;in vec2 vertexPosition;out vec4 pixelPosition;uniform vec4 GlslPassParams;void main() {\tpixelPosition = vec4(vertexPosition, vertexPosition*.5+.5);\tgl_Position = vec4(vertexPosition,1,1);}");d.compileShader(b);d.getShaderParameter(b,d.COMPILE_STATUS)?Ma=b:(console.error("Error compiling GLSL shader: "+d.getShaderInfoLog(b)+"\nFrom shader:"),
console.log("#version 300 es\nprecision highp float;precision highp int;in vec2 vertexPosition;out vec4 pixelPosition;uniform vec4 GlslPassParams;void main() {\tpixelPosition = vec4(vertexPosition, vertexPosition*.5+.5);\tgl_Position = vec4(vertexPosition,1,1);}"),d.deleteShader(b),Ma=null);ma="#version 300 es\nprecision highp float;precision highp int;\n\nin vec4 pixelPosition;\n\nuniform vec4 GlslPassParams;\n#define RESOLUTION (GlslPassParams.xy)\n#define TIME (GlslPassParams.z)\n#define FRAMERATE (GlslPassParams.w)\n\nuniform vec4 MouseState;\n#define MOUSE_POSITION (MouseState.xy)\n#define MOUSE_LEFT bool(MouseState.z)\n#define MOUSE_RIGHT bool(MouseState.w)\n\nuniform uvec4 KeyboardState;\n";
for(b=0;b<I.length;b++){c=I[b].C("Key","").C("Digit","").toUpperCase();var a=b%32;ma+="#define KEY_"+c+" bool((KeyboardState["+Math.floor(b/32)+"]"+(a?">>"+a:"")+")&1u)\n"}ma+="\nout vec4 pixelColor;\n\n";window.addEventListener("resize",Sa);Sa();b=jb;d.bindBuffer(d.ARRAY_BUFFER,b);d.vertexAttribPointer(0,b.Y,d.FLOAT,!1,4*b.Y,0);b=!0}else Wa("Fatal Error: Your browser does not support WebGL 2. Try again on a modern browser such as Firefox or Chrome and with a device capable of at least OpenGL ES 3.0 or Core 3.2."),
b=!1;if(b&&(lb(),S=document.getElementById("MainPanel"),qa=document.getElementById("LaunchPanel"),na=document.getElementById("PausePanel"),b=document.getElementById("GCPJS"))){c=null;try{c=JSON.parse(b.textContent)}catch(wb){}if(c){vb(c);b=!1;for(c=0;c<m.length;c++)if(a=m[c],a.type>=X){var e=document.getElementById("LAYER"+c);if(e)if(a.type===X)Fa++,a.image.ba=a,a.image.onload=nb,a.image.src=e.textContent,b=!0;else{var f=null;try{f=JSON.parse(La(e.textContent))}catch(wb){}if(f){e=f;var g=a.channels+
1,l=Math.ceil(e.length/g),x=l,n=1;if(!(x>V*V)){if(x>V){var h=Math.min(V+1,Math.ceil(l/2));for(f=Math.max(2,Math.floor(l/V));f<h;f++)if(0===l%f){x=f;n=l/f;break}f>=h&&(x=n=Math.ceil(Math.sqrt(l)))}l=x*n*g;a.width=x;a.height=n;h=new Float32Array(x*n*4);var k=0;switch(g){case 1:for(f=0;f<l;f++)g=e[f],isNaN(g)&&(g=0),h[k++]=g,h[k++]=g,h[k++]=g,h[k++]=1;break;case 2:for(f=0;f<l;f++){g=e[f++];var y=e[f];h[k++]=isNaN(g)?0:g;h[k++]=isNaN(y)?0:y;h[k++]=0;h[k++]=1}break;case 3:for(f=0;f<l;f++){g=e[f++];y=e[f++];
var ha=e[f];h[k++]=isNaN(g)?0:g;h[k++]=isNaN(y)?0:y;h[k++]=isNaN(ha)?0:ha;h[k++]=1}break;case 4:for(f=0;f<l;f++){g=e[f++];y=e[f++];ha=e[f++];var kb=e[f++];h[k++]=isNaN(g)?0:g;h[k++]=isNaN(y)?0:y;h[k++]=isNaN(ha)?0:ha;h[k++]=isNaN(kb)?0:kb}}d.bindTexture(d.TEXTURE_2D,a.j);ta(!1,!1,!1,!1);d.texImage2D(d.TEXTURE_2D,0,d.RGBA32F,x,n,0,d.RGBA,d.FLOAT,h)}}}}b?eb():fb()}}});String.prototype.C||(String.prototype.C=function(b,c){return this.replace(new RegExp(b,"g"),c)});H.prototype.v=function(){};Oa.prototype=
Object.create(H.prototype);Oa.prototype.v=function(){d.deleteShader(this.K);this.i&&d.deleteProgram(this.i);this.L&&(this.f.v(),this.B.v());w.splice(w.indexOf(this),1)};Pa.prototype=Object.create(H.prototype);Pa.prototype.v=function(){d.deleteTexture(this.j)};hb.prototype=Object.create(H.prototype);Qa.prototype=Object.create(H.prototype);Qa.prototype.v=function(){d.deleteTexture(this.j)}})();
</script>

<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">

<style>
body,html {
	margin: 0px;
	padding: 0px;
	text-align: center;
}
html, input, select {
	font-size: 2.2vw;
	font-family: "Arial", sans-serif;
	vertical-align: top;
}

div.FatalCrash {
	width: 100%;
	height: 100%;
	background-color: #161616;
	color: #ffaf40;
	font-size: 5vw;
	font-weight: bold;
}

div.Panel {
	width: 100%;
	height: 100%;
	overflow: auto;
}	

#SplashPanel {
	background: linear-gradient(134deg,#1e2150 0%, #22639a 100%);
}

span.Tit {
	font-size: 5vw;
	text-decoration: underline;
	font-weight: bold;
}

canvas {
	position: absolute;
	left: 0px;
	top: 0px;
}

#LaunchContent {
	white-space: pre-wrap;
}

span.Btn {
	display: inline-block;
	margin: 0.3vw;
	padding: 0.3vw;
	font-size: 3vw;
	cursor: pointer;
	user-select: none;
}


label {
	display: inline-block;
	margin-top: 1vw;
}

input::-webkit-outer-spin-button, input::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0px;
}
input[type="number"] {
	-moz-appearance: textfield;
}

input[type="range"] {
	-webkit-appearance: none;
	appearance: none;
	width: 20vw;
	height: 2vw;
}
input[type="range"]::-webkit-slider-thumb {
	-webkit-appearance: none;
	appearance: none;
	cursor: pointer;
	border-radius: 0.05vw;
	width: 1.8vw;
	height: 1.8vw;
}
input[type="range"]::-moz-range-thumb {
	cursor: pointer;
	border-radius: 0.05vw;
	width: 1.8vw;
	height: 1.8vw;
}
</style>
</head>



<body>
<div id="SplashPanel" class="Panel" style="display: none;">
<span class="Tit">Loading...</span>
</div>

<div id="LaunchPanel" class="Panel" style="display: none;">
<div id="LaunchContent"></div>
</br>
<span id="Load" class="Btn">Load State</span> &nbsp;
<span id="Launch" class="Btn">Launch</span>
</div>

<div id="PausePanel" class="Panel" style="display: none;">
<div id="PauseContent"></div>
</br>
<span id="Save" class="Btn">Save State</span> &nbsp;&nbsp;
<span id="GoFullscreen" class="Btn">Toggle Fullscreen</span>
</br>
<span id="Quit" class="Btn">Quit to Main Menu</span> &nbsp;&nbsp;
<span id="Resume" class="Btn">Resume and Continue</span>
</div>

<div id="MainPanel" class="Panel" style="display: none; background: none;">
<canvas tabindex="0"></canvas>
</div>
</body>
</html>
