webar-rocks-world
Version:
Neural network based visual positioning system for WebAR.
118 lines (117 loc) • 76.1 kB
JavaScript
/**
*
* MIT License
*
* Copyright (c) 2021 WebAR.rocks
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
/* eslint-enable */
/* prettier-ignore */
var Ia="function"==typeof Object.defineProperties?Object.defineProperty:function(P,J,da){if(P==Array.prototype||P==Object.prototype)return P;P[J]=da.value;return P};function hb(P){P=["object"==typeof globalThis&&globalThis,P,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var J=0;J<P.length;++J){var da=P[J];if(da&&da.Math==Math)return da}throw Error("Cannot find global object");}var nb=hb(this);
function yb(P,J){if(J)a:{var da=nb;P=P.split(".");for(var ha=0;ha<P.length-1;ha++){var sa=P[ha];if(!(sa in da))break a;da=da[sa]}P=P[P.length-1];ha=da[P];J=J(ha);J!=ha&&null!=J&&Ia(da,P,{configurable:!0,writable:!0,value:J})}}function zb(P){var J=0;return function(){return J<P.length?{done:!1,value:P[J++]}:{done:!0}}}
function Ab(P){var J="undefined"!=typeof Symbol&&Symbol.iterator&&P[Symbol.iterator];if(J)return J.call(P);if("number"==typeof P.length)return{next:zb(P)};throw Error(String(P)+" is not an iterable or ArrayLike");}
yb("Promise",function(P){function J(B){this.S=0;this.$=void 0;this.C=[];this.kc=!1;var L=this.pa();try{B(L.resolve,L.reject)}catch(Y){L.reject(Y)}}function da(){this.C=null}function ha(B){return B instanceof J?B:new J(function(L){L(B)})}if(P)return P;da.prototype.S=function(B){if(null==this.C){this.C=[];var L=this;this.$(function(){L.qa()})}this.C.push(B)};var sa=nb.setTimeout;da.prototype.$=function(B){sa(B,0)};da.prototype.qa=function(){for(;this.C&&this.C.length;){var B=this.C;this.C=[];for(var L=
0;L<B.length;++L){var Y=B[L];B[L]=null;try{Y()}catch(ea){this.pa(ea)}}}this.C=null};da.prototype.pa=function(B){this.$(function(){throw B;})};J.prototype.pa=function(){function B(ea){return function(qa){Y||(Y=!0,ea.call(L,qa))}}var L=this,Y=!1;return{resolve:B(this.Ac),reject:B(this.qa)}};J.prototype.Ac=function(B){if(B===this)this.qa(new TypeError("A Promise cannot resolve to itself"));else if(B instanceof J)this.Cc(B);else{a:switch(typeof B){case "object":var L=null!=B;break a;case "function":L=
!0;break a;default:L=!1}L?this.zc(B):this.hc(B)}};J.prototype.zc=function(B){var L=void 0;try{L=B.then}catch(Y){this.qa(Y);return}"function"==typeof L?this.Dc(L,B):this.hc(B)};J.prototype.qa=function(B){this.xc(2,B)};J.prototype.hc=function(B){this.xc(1,B)};J.prototype.xc=function(B,L){if(0!=this.S)throw Error("Cannot settle("+B+", "+L+"): Promise already settled in state"+this.S);this.S=B;this.$=L;2===this.S&&this.Bc();this.Td()};J.prototype.Bc=function(){var B=this;sa(function(){if(B.yc()){var L=
nb.console;"undefined"!==typeof L&&L.error(B.$)}},1)};J.prototype.yc=function(){if(this.kc)return!1;var B=nb.CustomEvent,L=nb.Event,Y=nb.dispatchEvent;if("undefined"===typeof Y)return!0;"function"===typeof B?B=new B("unhandledrejection",{cancelable:!0}):"function"===typeof L?B=new L("unhandledrejection",{cancelable:!0}):(B=nb.document.createEvent("CustomEvent"),B.initCustomEvent("unhandledrejection",!1,!0,B));B.promise=this;B.reason=this.$;return Y(B)};J.prototype.Td=function(){if(null!=this.C){for(var B=
0;B<this.C.length;++B)Qa.S(this.C[B]);this.C=null}};var Qa=new da;J.prototype.Cc=function(B){var L=this.pa();B.xa(L.resolve,L.reject)};J.prototype.Dc=function(B,L){var Y=this.pa();try{B.call(L,Y.resolve,Y.reject)}catch(ea){Y.reject(ea)}};J.prototype.then=function(B,L){function Y(ka,ya){return"function"==typeof ka?function(Ra){try{ea(ka(Ra))}catch(Ga){qa(Ga)}}:ya}var ea,qa,Ma=new J(function(ka,ya){ea=ka;qa=ya});this.xa(Y(B,ea),Y(L,qa));return Ma};J.prototype.catch=function(B){return this.then(void 0,
B)};J.prototype.xa=function(B,L){function Y(){switch(ea.S){case 1:B(ea.$);break;case 2:L(ea.$);break;default:throw Error("Unexpected state: "+ea.S);}}var ea=this;null==this.C?Qa.S(Y):this.C.push(Y);this.kc=!0};J.resolve=ha;J.reject=function(B){return new J(function(L,Y){Y(B)})};J.race=function(B){return new J(function(L,Y){for(var ea=Ab(B),qa=ea.next();!qa.done;qa=ea.next())ha(qa.value).xa(L,Y)})};J.all=function(B){var L=Ab(B),Y=L.next();return Y.done?ha([]):new J(function(ea,qa){function Ma(Ra){return function(Ga){ka[Ra]=
Ga;ya--;0==ya&&ea(ka)}}var ka=[],ya=0;do ka.push(void 0),ya++,ha(Y.value).xa(Ma(ka.length-1),qa),Y=L.next();while(!Y.done)})};return J});yb("Math.log2",function(P){return P?P:function(J){return Math.log(J)/Math.LN2}});var Bb="function"==typeof Object.assign?Object.assign:function(P,J){for(var da=1;da<arguments.length;da++){var ha=arguments[da];if(ha)for(var sa in ha)Object.prototype.hasOwnProperty.call(ha,sa)&&(P[sa]=ha[sa])}return P};yb("Object.assign",function(P){return P||Bb});
const LOCUS=function(P){function J(b){var c=null,e=null,k=null,l=0,n=this,q=null,r={ra:[],La:"none",lb:!1,Ka:null,grid:null};this.F=function(){this.Kc(q.ra);k.Nd({La:q.La,lb:q.lb,Ka:q.Ka})};this.gd=function(f){return c[f]};this.Sa=function(f){["s32","s34","s27"].forEach(function(m){z.ta(m,[{type:"2f",name:"u21",value:f}])});c&&c.forEach(function(m){m.Sa(f)})};this.Kc=function(f){var m=null;l=f.length;var u=null!==q.grid&&b.grid.length&&!(1===b.grid[0]&&1===b.grid[1]),F=u?q.grid:[1,1];u&&this.Sa(F);
c=f.map(function(A,t){A=Object.assign({},A,{index:t,parent:n,Ma:m,td:t===l-1,na:u,L:F});return m=t=0===t?Cb.instance(A):Db.instance(A)});e=c[0];k=c[l-1];c.forEach(function(A,t){0!==t&&A.xd()})};this.M=function(f){f.h(0);var m=f;c.forEach(function(u){m=u.M(m,!1)});return m};this.fd=function(){return e.ed()};this.jd=function(){return k.D()};this.ma=function(){return k.hd()};this.Wb=function(){return k.Wb()};this.o=function(){c&&(c.forEach(function(f){f.o()}),k=e=c=null,l=0)};"undefined"!==typeof b&&
(q=Object.assign({},r,b),this.F())}var da;function ha(b,c){return b[c>>3]>>7-(c&7)&1}function sa(b,c,e){for(var k=0,l=0;l<e;l++)k=k<<1|ha(b,c+l);return k}function Qa(b){var c=null;b=b.data;"undefined"===typeof btoa&&"undefined"!==typeof Buffer?c=Buffer.from(b,"base64").toString("latin1"):c=atob(b);b=c.length;for(var e=new Uint8Array(b),k=0;k<b;++k)e[k]=c.charCodeAt(k);return e}function B(b){return"string"===typeof b?JSON.parse(b):b}function L(b){if("undefined"===typeof B(b).nb){var c=B(b);b=c.ne;
var e=c.nf,k=c.n;c=Qa(c);for(var l=new Float32Array(k),n=new Float32Array(e),q=b+e+1,r=new Float32Array(e),f=.5,m=0;m<e;m++)r[m]=f,f*=.5;for(f=0;f<k;++f){var u=q*f;m=0===ha(c,u)?1:-1;var F=sa(c,u+1,b),A=c;u=u+1+b;for(var t=n.length,H=0,D=u;D<u+t;++D)n[H]=ha(A,D,!0),++H;for(u=A=0;u<e;++u)A+=n[u]*r[u];l[f]=0===A&&0===F?0:m*(1+A)*Math.pow(2,1+F-Math.pow(2,b-1))}b=l}else if(k=B(b),b=k.nb,0===b)b=new Uint8Array(k.nb);else{e=k.n;k=Qa(k);c=new Uint32Array(e);for(l=0;l<e;++l)c[l]=sa(k,l*b,b);b=c}return b}
function Y(){var b=document.createElement("canvas");b.setAttribute("id","locusCanvas");b.setAttribute("height",512);b.setAttribute("width",512);return b}function ea(){return new Promise(function(b,c){Ya.F({ya:Za,debug:!1,kb:function(){throw Error("GLCONTEXT_LOST");},antialias:!1})?b():c()})}function qa(b,c){for(var e=la.count,k=0;k<e;++k)c[e-1-k]=Math.cos(2*Math.PI*b/la.mc[k])}function Ma(b,c){for(var e=0;e<b.length;++e)b[e]*=c}function ka(b,c,e){return b[c+$a*($a-1-e)]}function ya(b,c,e,k){for(var l=
k.length,n=0;n<l;++n)k[n]=ka(b,c,e),++c===$a&&(c=0,++e)}function Ra(b){if(ka(b,0,0)<Ha.detectionThreshold)Ba.isDetected=!1;else{var c=ka(b,1,0),e=ka(b,2,0),k=ka(b,3,0);c=c/ta.position+ab[0];e=e/ta.position+ab[1];k=k/ta.position+ab[2];Ba.x=c;Ba.y=e;Ba.z=k;if(0!==ta.Fa)for(qa(c,la.x),qa(k,la.z),ya(b,0,2,la.Cb),Ma(la.Cb,1/ta.Fa),ya(b,0,3,la.Db),Ma(la.Db,1/ta.Fa),k=Math.min(la.Kb,Ha.maxHarmonicsErrors.length),c=0;c<k;++c){e=Math.abs(la.x[c]-la.Cb[c]);var l=Math.abs(la.z[c]-la.Db[c]);if(.3535*Math.sqrt(e*
e+l*l)>Ha.maxHarmonicsErrors[c]){Ba.isDetected=!1;return}}Ba.isDetected=!0;k=.5+.5*(ka(b,0,1)/ta.rotation);k=(bb[1]-bb[0])*ib*k+bb[0]*ib;c=ka(b,1,1)/ta.rotation;b=ka(b,2,1)/ta.rotation;b=Math.atan2(Ga.Jb(b,-1,1),Ga.Jb(c,-1,1));Ba.rx=k;Ba.ry=b}}var Ga={xe:function(b){return Math.ceil(Math.log2(b))},Qe:function(b){return Math.log2(b)},Oe:function(b){return 0===Math.log2(b)%1},ae:function(b){var c=[0,0,0,0];b.forEach(function(e){c[0]+=e[0];c[1]+=e[1];c[2]+=e[2];c[3]+=e[3]});return c},Jb:function(b,c,
e){return Math.min(Math.max(b,c),e)},de:function(b){return b*Math.PI/180},Ve:function(b,c){c=Math.pow(10,c);return Math.round(b*c)/c},We:function(b){return Math.round(1E6*b)/1E6},ye:function(b,c){return(100*b/c).toFixed(3)},Re:function(b,c,e){return b*(1-e)+c*e},Se:function(b,c){return b[0]*(1-c)+b[1]*c},Tc:function(b,c){return Ga.Nc(b-c)},Nc:function(b){for(;b>Math.PI;)b-=2*Math.PI;for(;b<=-Math.PI;)b+=2*Math.PI;return b},ie:function(b,c){return Math.abs(Ga.Tc(b,c))},Ud:function(b,c){return Math.atan2(Math.sin(b)+
Math.sin(c),Math.cos(b)+Math.cos(c))}},Eb={create:function(b,c){for(var e=Array(c),k=0;k<c;++k)e[k]=b;return e},ee:function(b,c){for(var e=0;e<b.length;++e)c[e]=b[e]},clone:function(b){for(var c=Array(b.length),e=0;e<b.length;++e)c[e]=b[e];return c},Ye:function(b,c,e){b.forEach(function(k,l){c[l]=k*e})},kf:function(b){for(var c=b.length-1;0<c;--c){var e=Math.floor(Math.random()*(c+1)),k=b[c];b[c]=b[e];b[e]=k}},lf:function(b){return b.sort(function(c,e){return c-e})},Pd:function(b){return Array.isArray(b)||
b.constructor===Float32Array||b.constructor===Uint8Array}},jb={Xa:function(b,c){if(0===c||"object"!==typeof b)return b;b=Object.assign({},b);c=void 0===c||-1===c?-1:c-1;for(var e in b)b[e]=jb.Xa(b[e],c);return b},ge:function(b){return JSON.parse(JSON.stringify(b))}},Fb={Xc:function(b,c,e){switch(b){case "relu":return e+"=max(vec4(0.),"+c+");";case "elu":return e+"=mix(exp(-abs("+c+"))-vec4(1.),"+c+",step(0.,"+c+"));";case "elu01":return e+"=mix(0.1*exp(-abs("+c+"))-vec4(0.1),"+c+",step(0.,"+c+"));";
case "arctan":return e+"=atan(3.14159265359*texture2D(u0,vUV))/3.14159265359;";case "copy":return"";case "gelu":return e+"="+e+";\n vec4 zou="+c+";\n vec4 polyZou=0.7978845608028654*(zou+0.044715*zou*zou*zou);\n vec4 exZou=exp(-abs(polyZou));\n vec4 exZou2=exZou*exZou;\n vec4 tanhZou=sign(polyZou)*(vec4(1.)-exZou2)/(vec4(1.)+exZou2);\n "+e+"=0.5*zou*(vec4(1.)+tanhZou);";default:return!1}}},z=function(){function b(p,d,y){d=p.createShader(d);p.shaderSource(d,
y);p.compileShader(d);return p.getShaderParameter(d,p.COMPILE_STATUS)?d:null}function c(p,d,y){d=b(p,p.VERTEX_SHADER,d);y=b(p,p.FRAGMENT_SHADER,y);p===a&&r.push(d,y);var I=p.createProgram();p.attachShader(I,d);p.attachShader(I,y);p.linkProgram(I);return I}function e(p){return["float","sampler2D","int"].map(function(d){return"precision "+p+" "+d+";\n"}).join("")}function k(p,d){d.m=d.m?!0:!1;if(!d.m){d.Bb=d.Bb||"precision lowp float;attribute vec2 a0;varying vec2 vv0;void main(){gl_Position=vec4(a0,0.,1.),vv0=a0*.5+vec2(.5);}";
d.Gb=d.Gb||["a0"];d.Ua=d.Ua||[2];d.precision=d.precision||A;d.id=u++;void 0!==d.rc&&(d.rc.forEach(function(M,W){d.g=d.g.replace(M,d.Na[W])}),d.rc.splice(0));d.Ab=0;d.Ua.forEach(function(M){d.Ab+=4*M});var y=e(d.precision);d.ea=c(p,y+d.Bb,y+d.g);d.v={};d.i.forEach(function(M){d.v[M]=p.getUniformLocation(d.ea,M)});d.attributes={};d.ja=[];d.Gb.forEach(function(M){var W=p.getAttribLocation(d.ea,M);d.attributes[M]=W;d.ja.push(W)});if(d.j){p.useProgram(d.ea);m=d;f=d.id;for(var I in d.j)p.uniform1i(d.v[I],
d.j[I])}d.gb=!0}}function l(p){va.Id(T);f!==p.id&&(T.K(),f=p.id,m=p,a.useProgram(p.ea),p.ja.forEach(function(d){0!==d&&a.enableVertexAttribArray(d)}))}function n(p,d,y){k(p,d,y);p.useProgram(d.ea);p.enableVertexAttribArray(d.attributes.a0);f=-1;return m=d}function q(){return{g:"uniform sampler2D u1;varying vec2 vv0;void main(){gl_FragColor=texture2D(u1,vv0);}",i:["u1"],j:{u1:0}}}var r=[],f=-1,m=null,u=0,F=!1,A="highp",t=["u1"],H=["u0"],D={u1:0},h={u0:0},K={u1:0,u2:1},R={u1:0,u3:1},X=["u1","u3","u4"],
G=["u5","u6"],g={u5:0},v=["u7","u8","u9","u10"],C={u7:0,u8:1},E={s0:q(),s1:{g:"uniform sampler2D u1;varying vec2 vv0;void main(){gl_FragColor=texture2D(u1,vv0);}",i:t,j:D,precision:"lowp"},s2:{g:"uniform sampler2D u1,u2;varying vec2 vv0;void main(){vec4 a=texture2D(u2,vv0),b=texture2D(u1,vv0);gl_FragColor=a*b;}",i:["u1","u2"],j:K},s3:{g:"uniform sampler2D u1;uniform vec2 u11,u12;varying vec2 vv0;void main(){vec2 a=vv0*u11+u12;gl_FragColor=texture2D(u1,a);}",i:["u1","u11","u12"],j:D,m:!0},s4:{g:"uniform sampler2D u1;varying vec2 vv0;const vec4 f=vec4(1.,1.,1.,1.);void main(){vec4 a=texture2D(u1,vv0);gl_FragColor=a.r*f;}",
i:t,j:D},s5:{g:"uniform sampler2D u1,u2;varying vec2 vv0;const vec4 f=vec4(1.,1.,1.,1.);void main(){vec4 a=texture2D(u2,vv0),b=texture2D(u1,vv0);gl_FragColor=a.a*b.r*f;}",i:["u1","u2"],j:K},s6:{g:"uniform sampler2D u1;varying vec2 vv0;void main(){gl_FragColor=texture2D(u1,vec2(1.-vv0.x,vv0.y));}",i:t,j:D},s7:{g:"uniform sampler2D u1;varying vec2 vv0;void main(){gl_FragColor=texture2D(u1,vec2(vv0.x,1.-vv0.y));}",i:t,j:D},s8:{g:"uniform sampler2D u0;uniform float u11;varying vec2 vv0;void main(){vec4 a=texture2D(u0,vv0);gl_FragColor=a*u11;}",
i:["u0","u11"],j:h},s9:{g:"uniform sampler2D u0;uniform float u11;varying vec2 vv0;const vec4 f=vec4(.25),g=vec4(1.);void main(){vec4 a=texture2D(u0,vv0);float b=dot(a*u11,f);gl_FragColor=b*g;}",i:["u0","u11"],j:h},s10:{g:"uniform sampler2D u1;varying vec2 vv0;const vec4 e=vec4(1.,1.,1.,1.);void main(){float a=.25*dot(e,texture2D(u1,vv0));gl_FragColor=a*e;}",i:t,j:D},s11:{g:"uniform sampler2D u1,u13;uniform float u14;const vec4 f=vec4(1.);varying vec2 vv0;void main(){vec4 a=texture2D(u1,vv0),b=texture2D(u13,vv0);gl_FragColor=mix(b,a,u14*f);}",
i:["u1","u13","u14"],j:{u1:0,u13:1}},s12:{g:"uniform sampler2D u1;uniform vec2 u15;varying vec2 vv0;void main(){gl_FragColor=.25*(texture2D(u1,vv0+u15)+texture2D(u1,vv0+u15*vec2(1.,-1.))+texture2D(u1,vv0+u15*vec2(-1.,-1.))+texture2D(u1,vv0+u15*vec2(-1.,1.)));}",i:["u1","u15"],j:D},s13:{g:"uniform sampler2D u1;varying vec2 vv0;vec4 f(vec3 d){vec3 b=d/65536.,a=clamp(ceil(log2(b)),-128.,127.);float c=max(max(a.r,a.g),a.b),g=exp2(c);vec3 h=clamp(b/g,0.,1.);return vec4(h,(c+128.)/256.);}void main(){vec3 a=texture2D(u1,vv0).rgb;gl_FragColor=f(a);}",
i:t,j:D,m:!0},s14:{g:"uniform sampler2D u1;varying vec2 vv0;vec3 f(vec4 a){float b=a.a*256.-128.;vec3 c=a.rgb;return exp2(b)*c*65536.;}void main(){vec4 a=texture2D(u1,vv0);gl_FragColor=vec4(f(a),1.);}",i:t,j:D,m:!0},s15:{g:"uniform sampler2D u1;uniform vec4 u16;varying vec2 vv0;float g(float a,float b){a=floor(a)+.5;return floor(a/exp2(b));}float h(float a,float b){return floor(a*exp2(b)+.5);}float i(float a,float b){return mod(a,h(1.,b));}float e(float c,float a,float b){a=floor(a+.5),b=floor(b+.5);return i(g(c,a),b-a);}vec4 j(float a){if(a==0.)return vec4(0.,0.,0.,0.);float k=128.*step(a,0.);a=abs(a);float c=floor(log2(a)),l=c+127.,b=(a/exp2(c)-1.)*8388608.,d=l/2.,m=fract(d)*2.,n=floor(d),o=e(b,0.,8.),p=e(b,8.,16.),q=m*128.+e(b,16.,23.),r=k+n;return vec4(o,p,q,r)/255.;}void main(){float a=dot(texture2D(u1,vv0),u16);gl_FragColor=j(a);}",
i:["u1","u16"],j:D},s16:{g:"uniform sampler2D u0;varying vec2 vv0;const vec4 e=vec4(1.);void main(){vec4 a=texture2D(u0,vv0),b=e/(e+exp(-a));gl_FragColor=b;}",i:H,j:h,m:!0},s17:{g:"uniform sampler2D u0;varying vec2 vv0;const vec4 f=vec4(0.);void main(){vec4 a=texture2D(u0,vv0);gl_FragColor=max(f,a);}",i:H,j:h,m:!0},s18:{g:"uniform sampler2D u0;varying vec2 vv0;const vec4 e=vec4(1.);const float g=.797885,h=.044715;vec4 i(vec4 a){vec4 b=exp(-abs(a)),c=b*b,d=sign(a)*(e-c)/(e+c);return d;}void main(){vec4 a=texture2D(u0,vv0),b=a+h*a*a*a,c=i(g*b);gl_FragColor=.5*a*(e+c);}",
i:H,j:h,m:!0},s19:{g:"uniform sampler2D u0;varying vec2 vv0;const vec4 f=vec4(1.);void main(){vec4 a=texture2D(u0,vv0);gl_FragColor=mix(exp(-abs(a))-f,a,step(0.,a));}",i:H,j:h,m:!0},s20:{g:"uniform sampler2D u0;varying vec2 vv0;const vec4 f=vec4(1.);void main(){vec4 a=texture2D(u0,vv0),b=exp(a)-f;gl_FragColor=mix(.1*b,a,step(0.,a));}",i:H,j:h},s21:{g:"uniform sampler2D u0;const float e=3.141593;varying vec2 vv0;void main(){gl_FragColor=atan(e*texture2D(u0,vv0))/e;}",i:H,j:h},s22:{g:"uniform sampler2D u0;const float e=3.141593;varying vec2 vv0;void main(){gl_FragColor=2.*atan(e*texture2D(u0,vv0))/e;}",
i:H,j:h,m:!0},s23:{g:"uniform sampler2D u0,u17;uniform float u18;const vec2 e=vec2(.5);const float f=1e-5;const vec4 g=vec4(1.),i=vec4(0.);varying vec2 vv0;void main(){vec4 a=texture2D(u17,e);float b=u18*u18;vec4 c=max(b*a,f*g);gl_FragColor=texture2D(u0,vv0)/c;}",i:["u0","u17","u18"],j:{u0:0,u17:1},m:!0},s24:{g:"uniform sampler2D u1;uniform vec2 u19;varying vec2 vv0;void main(){float a=u19.x*u19.y;vec2 b=floor(vv0*a)/a,c=fract(vv0*a),d=floor(b*u19.y),f=floor(u19.x*fract(b*u19.y)),g=(f*u19.y+d)/a;gl_FragColor=texture2D(u1,g+c/a);}",
i:["u1","u19"],j:D},s25:{g:"uniform sampler2D u8,u7,u20;varying vec2 vv0;void main(){vec4 a=texture2D(u20,vv0);vec2 b=a.rg,c=a.ba;vec4 d=texture2D(u8,b),f=texture2D(u7,c);gl_FragColor=d*f;}",i:["u8","u7","u20"],j:Object.assign({u20:2},C),m:!0},s26:{g:"uniform float u9,u10;uniform sampler2D u8,u7;varying vec2 vv0;void main(){vec2 b=fract(vv0*u9);float a=u9*u10;vec2 c=(vec2(.5)+floor(a*vv0))/a;vec4 d=texture2D(u8,c),f=texture2D(u7,b);gl_FragColor=d*f;}",i:v,j:C},s27:{g:"uniform float u9,u10;uniform vec2 u21;uniform sampler2D u8,u7;varying vec2 vv0;void main(){float a=u9*u10;vec2 b=mod(vv0*u21,vec2(1.)),c=floor(vv0*u21)/u21,d=c+fract(b*u9)/u21,f=(vec2(.5)+floor(a*b))/a;vec4 g=texture2D(u8,f),h=texture2D(u7,d);gl_FragColor=g*h;}",
i:["u21"].concat(v),j:C,m:!0},s28:{g:"uniform float u9,u10;uniform sampler2D u8,u7,u23,u24,u25,u26;varying vec2 vv0;const vec4 e=vec4(1.,1.,1.,1.),g=vec4(1e-3,1e-3,1e-3,1e-3);void main(){vec2 c=fract(vv0*u9),d=vv0;float h=u9*u10;d=(.5+floor(h*vv0))/h;vec4 l=texture2D(u8,d),m=texture2D(u7,c),a=texture2D(u26,d);a=floor(.5+a*255.);vec4 n=texture2D(u23,c),o=texture2D(u24,c),p=texture2D(u25,c),i=step(-g,-a),b=e-i,j=b*step(-e-g,-a);b*=e-j;vec4 k=b*step(-2.*e-g,-a);b*=e-k;vec4 q=b,r=i*m+j*n+k*o+q*p;gl_FragColor=l*r;}",
i:["u26","u23","u24","u25"].concat(v),j:Object.assign({u26:3,u23:4,u24:5,u25:6},C),m:!0},s29:{g:"uniform sampler2D u8,u7,u3;uniform float u9,u27,u28,u10;uniform vec2 u29;varying vec2 vv0;const vec2 f=vec2(1.),l=vec2(0.);void main(){vec2 c=floor(u27*vv0),d=u27*vv0-c;float g=u9/u27;vec2 h=floor(d*g),i=d*g-h,j=(c+i)/u27;float m=u27*u10/u9;vec2 b=m*h,n=floor(.5*(u10-1.)*(f-u29));b=floor(u29*b+n);vec2 a=(b+i*u28)/u10;a+=.25/u10;vec2 k=step(a,f)*step(l,a);vec4 o=texture2D(u8,j),p=texture2D(u7,a),q=o*p,r=texture2D(u3,j);gl_FragColor=(q*u28*u28+r)*k.x*k.y;}",
i:["u27","u28","u3","u29"].concat(v),j:Object.assign({u3:2},C)},s30:{g:"uniform sampler2D u8,u7;varying vec2 vv0;void main(){vec4 a=texture2D(u8,vv0),b=texture2D(u7,vv0);gl_FragColor=a*b;}",i:["u8","u7"],j:C,m:!0},s31:{g:"uniform sampler2D u1,u3;uniform float u4;varying vec2 vv0;void main(){gl_FragColor=texture2D(u3,vv0)+u4*texture2D(u1,vv0);}",i:X,j:R},s32:{g:"uniform sampler2D u1,u3;uniform vec2 u21;uniform float u4;varying vec2 vv0;void main(){gl_FragColor=texture2D(u3,vv0*u21)+u4*texture2D(u1,vv0);}",
i:["u21"].concat(X),j:R,m:!0},s33:{g:"uniform sampler2D u1,u3;uniform float u4;varying vec2 vv0;const vec4 e=vec4(1.);void main(){vec4 a=texture2D(u3,vv0)+u4*texture2D(u1,vv0);vec2 h=mod(gl_FragCoord.xy,vec2(2.)),d=step(h,vec2(.75));float b=d.x+2.*d.y,c=step(2.5,b),g=(1.-c)*step(1.5,b),i=(1.-c)*(1.-g)*step(.5,b);a=mix(a,a.argb,i*e),a=mix(a,a.barg,g*e),a=mix(a,a.gbar,c*e),gl_FragColor=a;}",i:X,j:R,m:!0},s34:{g:"uniform sampler2D u1,u3;uniform vec2 u21;uniform float u4;varying vec2 vv0;const vec4 e=vec4(1.);void main(){vec4 a=texture2D(u3,vv0*u21)+u4*texture2D(u1,vv0);vec2 h=mod(gl_FragCoord.xy,vec2(2.)),d=step(h,vec2(.75));float b=d.x+2.*d.y,c=step(2.5,b),g=(1.-c)*step(1.5,b),i=(1.-c)*(1.-g)*step(.5,b);a=mix(a,a.argb,i*e),a=mix(a,a.barg,g*e),a=mix(a,a.gbar,c*e),gl_FragColor=a;}",
i:["u21"].concat(X),j:R,m:!0},s35:{g:"uniform sampler2D u1,u3;uniform float u4;varying vec2 vv0;const vec4 h=vec4(1.);void main(){vec4 a=texture2D(u3,vv0)+u4*texture2D(u1,vv0);vec2 b=floor(gl_FragCoord.xy);vec3 d=b.x*vec3(1.)+vec3(0.,1.,2.);float c=mod(b.y,2.);vec4 f=vec4(c,(1.-c)*step(mod(d,vec3(3.)),vec3(.5)));mat4 g=mat4(a.rgba,a.gbar,a.barg,a.argb);gl_FragColor=g*f;}",i:X,j:R,m:!0},s36:{g:"varying vec2 vv0;uniform sampler2D u1;const vec4 f=vec4(1.,1.,1.,1.),g=vec4(.299,.587,.114,0.);void main(){vec4 a=texture2D(u1,vv0);gl_FragColor=dot(a,g)*f;}",
i:t,j:D,precision:"lowp"},s37:{g:"varying vec2 vv0;uniform sampler2D u1;uniform float u30;const vec3 f=vec3(.299,.587,.114);void main(){vec3 a=texture2D(u1,vv0).rgb,b=texture2D(u1,vv0+vec2(0.,u30)).rgb,c=texture2D(u1,vv0+vec2(u30,u30)).rgb,d=texture2D(u1,vv0+vec2(u30,0.)).rgb;gl_FragColor=vec4(dot(a,f),dot(b,f),dot(c,f),dot(d,f));}",i:["u1","u30"],j:D,precision:"lowp"},s38:{g:"varying vec2 vv0;uniform sampler2D u1;uniform float u30;const vec3 f=vec3(.299,.587,.114);void main(){vec3 a=texture2D(u1,vv0).rgb,b=texture2D(u1,vv0+vec2(0.,u30)).rgb,c=texture2D(u1,vv0+vec2(u30,u30)).rgb,d=texture2D(u1,vv0+vec2(u30,0.)).rgb;gl_FragColor=vec4(a.r,b.g,c.b,dot(d,f));}",
i:["u1","u30"],j:D,precision:"lowp"},s39:{g:"varying vec2 vv0;uniform sampler2D u1,u2;uniform float u31;const vec4 f=vec4(1.);void main(){vec4 a=vec4(0.);a-=texture2D(u1,vec2(vv0.x-u31,vv0.y-u31))*1.,a-=texture2D(u1,vec2(vv0.x-u31,vv0.y))*2.,a-=texture2D(u1,vec2(vv0.x-u31,vv0.y+u31))*1.,a+=texture2D(u1,vec2(vv0.x+u31,vv0.y-u31))*1.,a+=texture2D(u1,vec2(vv0.x+u31,vv0.y))*2.,a+=texture2D(u1,vec2(vv0.x+u31,vv0.y+u31))*1.;vec4 b=vec4(0.);b-=texture2D(u1,vec2(vv0.x-u31,vv0.y-u31))*1.,b-=texture2D(u1,vec2(vv0.x,vv0.y-u31))*2.,b-=texture2D(u1,vec2(vv0.x+u31,vv0.y-u31))*1.,b+=texture2D(u1,vec2(vv0.x-u31,vv0.y+u31))*1.,b+=texture2D(u1,vec2(vv0.x,vv0.y+u31))*2.,b+=texture2D(u1,vec2(vv0.x+u31,vv0.y+u31))*1.;vec3 c=sqrt(a.rgb*a.rgb+b.rgb*b.rgb);vec4 e=vec4(c,texture2D(u1,vv0).a),g=texture2D(u2,vv0);gl_FragColor=g.a*e.r*f;}",
i:["u1","u2","u31"],j:K,m:!0},s40:{g:"varying vec2 vv0;uniform sampler2D u1,u2;uniform float u31;const vec4 j=vec4(1.,1.,1.,1.);const vec2 k=vec2(1.,1.);void main(){float h=0.;vec2 l=k*u31,a,b;float c,d,i=0.;for(float e=-4.;e<=4.;e+=1.)for(float f=-4.;f<=4.;f+=1.)a=vec2(e,f),c=length(a)/2.,d=exp(-c*c),b=vv0+l*a,h+=d*texture2D(u1,b).r,i+=d;vec4 m=texture2D(u2,vv0);gl_FragColor=m.a*(texture2D(u1,b).r-h/i)*j;}",i:["u1","u2","u31"],j:K,m:!0},s41:{g:"uniform sampler2D u5;uniform vec2 u6;varying vec2 vv0;const vec2 f=vec2(1.),g=vec2(.5),h=vec2(1.,0.),i=vec2(0.,1.);void main(){vec2 a=f/u6,c=u6/2.,d=floor(vv0*c)+g,j=d/c,b=j-a*.5;vec4 k=texture2D(u5,b),l=texture2D(u5,b+a*h),m=texture2D(u5,b+a*i),n=texture2D(u5,b+a),o=max(k,l),p=max(m,n);gl_FragColor=max(o,p);}",
i:G,j:g,m:!0},s42:{g:"uniform sampler2D u5;uniform vec2 u6;varying vec2 vv0;const vec2 k=vec2(1.),l=vec2(1.,0.),m=vec2(0.,1.),n=vec2(2.,0.),o=vec2(0.,2.);vec4 e(vec2 b,vec2 a){vec4 c=texture2D(u5,a),d=texture2D(u5,a+b*l),f=texture2D(u5,a+b*m),g=texture2D(u5,a+b),h=max(c,d),i=max(f,g);return max(h,i);}void main(){vec2 a=k/u6,c=u6/4.,d=4.*floor(vv0*c),f=d/u6,b=f+a*.5;vec4 g=e(a,b),h=e(a,b+a*n),i=e(a,b+a*2.),p=e(a,b+a*o),q=max(g,h),r=max(i,p);gl_FragColor=max(q,r);}",i:G,j:g,m:!0},s43:{g:"uniform sampler2D u1;varying vec2 vv0;void main(){vec4 a=texture2D(u1,vv0);gl_FragColor=a*a;}",
i:["u1"],j:D,precision:"lowp",m:!0},s44:{g:"uniform sampler2D u1;uniform vec2 u15;varying vec2 vv0;const float e=15444.;void main(){vec4 a=1001./e*texture2D(u1,vv0-3.*u15)+2002./e*texture2D(u1,vv0-2.*u15)+3003./e*texture2D(u1,vv0-u15)+3432./e*texture2D(u1,vv0)+3003./e*texture2D(u1,vv0+u15)+2002./e*texture2D(u1,vv0+2.*u15)+1001./e*texture2D(u1,vv0+3.*u15);gl_FragColor=a;}",i:["u15","u1"],j:D,precision:"lowp",m:!0},s45:{g:"uniform sampler2D u1,u17,u32;varying vec2 vv0;const vec4 f=vec4(1.,1.,1.,1.);const float g=.1;void main(){vec4 a=texture2D(u17,vv0),b=texture2D(u32,vv0),c=texture2D(u1,vv0),d=max(f*g,b-a*a),h=sqrt(d);gl_FragColor=(c-a)/h;}",
i:["u1","u17","u32"],j:{u1:0,u17:1,u32:2},m:!0}},N={s46:{g:"uniform float u9,u33;uniform sampler2D u8,u7,u3;varying vec2 vv0;const vec2 ZERO2=vec2(0.),ONE2=vec2(1.),HALF2=vec2(.5),EPS2=vec2(1e-5);void main(){vec4 sum=texture2D(u3,vv0);float toSparsity=1.1111;vec2 uvFrom,uvWeight,xyPatch=ZERO2,eps2=EPS2/u9,xyTo=floor(vv0*u9+eps2);float weightSize=toSparsity*u9;vec2 halfFromSparsity=ONE2*(toSparsity-1.)/2.;for(float patch_x=0.;patch_x<1.1111;patch_x+=1.){xyPatch.x=patch_x;for(float patch_y=0.;patch_y<1.1111;patch_y+=1.)xyPatch.y=patch_y,uvFrom=(xyTo+HALF2+u33*(xyPatch-halfFromSparsity))/u9,uvFrom+=step(uvFrom,-eps2),uvFrom-=step(ONE2-eps2,uvFrom),uvWeight=(xyTo*toSparsity+xyPatch+HALF2)/weightSize,sum+=texture2D(u8,uvWeight)*texture2D(u7,uvFrom);}gl_FragColor=sum,gl_FragColor*=2.2222;}",
i:["u9","u8","u7","u3","u33"],Na:["1.1111","gl_FragColor\\*=2.2222;"]},s47:{g:"uniform float u9,u33,u10;uniform sampler2D u8,u7,u3;varying vec2 vv0;const vec2 ZERO2=vec2(0.),ONE2=vec2(1.),HALF2=vec2(.5),EPS2=vec2(1e-4);void main(){vec4 sum=texture2D(u3,vv0);float fromSparsity=1.1111,shrinkFactor=3.3333;vec2 uvFrom,uvWeight,xyFrom,xyPatchTo,xyPatch=ZERO2,xyShrink=ZERO2,eps2=EPS2/u10,xyTo=floor(vv0*u9+eps2);float weightSize=fromSparsity*u10;vec2 halfFromSparsity=ONE2*(fromSparsity-1.)/2.;float toSparsity=weightSize/u9;vec2 xyFrom0=xyTo*shrinkFactor;for(float patch_x=0.;patch_x<1.1111;patch_x+=1.){xyPatch.x=patch_x;for(float patch_y=0.;patch_y<1.1111;patch_y+=1.){xyPatch.y=patch_y;for(float shrink_x=0.;shrink_x<3.3333;shrink_x+=1.){xyShrink.x=shrink_x;for(float shrink_y=0.;shrink_y<3.3333;shrink_y+=1.)xyShrink.y=shrink_y,xyFrom=xyFrom0+xyShrink+shrinkFactor*u33*(xyPatch-halfFromSparsity),uvFrom=(xyFrom+HALF2)/u10,uvFrom+=step(uvFrom,-eps2),uvFrom-=step(ONE2-eps2,uvFrom),xyPatchTo=xyPatch*shrinkFactor+xyShrink,uvWeight=(xyTo*toSparsity+xyPatchTo+HALF2)/weightSize,sum+=texture2D(u8,uvWeight)*texture2D(u7,uvFrom);}}}gl_FragColor=sum,gl_FragColor*=2.2222;}",
i:"u9 u10 u8 u7 u3 u33".split(" "),Na:["1.1111","gl_FragColor\\*=2.2222;","3.3333"]}},Z=null,na=null,T={Ia:function(){return F},F:function(){if(!F){Z=jb.Xa(E,2);na=jb.Xa(N,2);A="highp";a.getShaderPrecisionFormat&&(a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.MEDIUM_FLOAT),a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.LOW_FLOAT));for(var p in Z)k(a,Z[p],p);z.set("s0");a.enableVertexAttribArray(0);F=!0}},va:function(p){p.forEach(function(d){T.Fb(d)})},Fb:function(p){Z[p.id]=p;k(a,p,p.id)},md:function(p,
d,y){d||(d=p);Z[d]=Object.create(na[p]);Z[d].sd=!0;na[p].Na&&na[p].Na.forEach(function(I,M){var W="";"gl_Frag"===I.substring(0,7)?(I=new RegExp("[,;]?"+I,"g"),W=";"):I=new RegExp(I,"g");Z[d].g=Z[d].g.replace(I,W+y[M])});k(a,Z[d],d)},set:function(p){var d=Z[p];d.m&&(d.m=!1,k(a,d,p));l(d)},sa:function(p){return n(p,q(),"s48")},sb:function(p){return n(p,{g:"void main(){gl_FragColor=vec4(.5,.5,.5,.5);}",i:[],precision:A},"s49")},Vc:function(p){return"undefined"===typeof Z[p]?!1:Z[p].gb},K:function(){-1!==
f&&(f=-1,m.ja.forEach(function(p){0!==p&&a.disableVertexAttribArray(p)}))},tb:function(){var p=0;m.ja.forEach(function(d,y){y=m.Ua[y];a.vertexAttribPointer(d,y,a.FLOAT,!1,m.Ab,p);p+=4*y})},Uc:function(){a.enableVertexAttribArray(0)},ua:function(){T.Oa(a)},Oa:function(p){p.vertexAttribPointer(m.ja[0],2,p.FLOAT,!1,8,0)},ef:function(p,d){a.uniform1i(m.v[p],d)},T:function(p,d){a.uniform1f(m.v[p],d)},N:function(p,d,y){a.uniform2f(m.v[p],d,y)},Jd:function(p,d){a.uniform2fv(m.v[p],d)},gf:function(p,d){a.uniform3fv(m.v[p],
d)},ff:function(p,d,y,I){a.uniform3f(m.v[p],d,y,I)},Kd:function(p,d,y,I,M){a.uniform4f(m.v[p],d,y,I,M)},vc:function(p,d){a.uniform4fv(m.v[p],d)},Ld:function(p,d){a.uniformMatrix2fv(m.v[p],!1,d)},hf:function(p,d){a.uniformMatrix3fv(m.v[p],!1,d)},jf:function(p,d){a.uniformMatrix4fv(m.v[p],!1,d)},ta:function(p,d){T.set(p);d.forEach(function(y){switch(y.type){case "4f":a.uniform4fv(m.v[y.name],y.value);break;case "3f":a.uniform3fv(m.v[y.name],y.value);break;case "2f":a.uniform2fv(m.v[y.name],y.value);
break;case "1f":a.uniform1f(m.v[y.name],y.value);break;case "1i":a.uniform1i(m.v[y.name],y.value);break;case "mat2":a.uniformMatrix2fv(m.v[y.name],!1,y.value);break;case "mat3":a.uniformMatrix3fv(m.v[y.name],!1,y.value);break;case "mat4":a.uniformMatrix4fv(m.v[y.name],!1,y.value)}})},we:function(){return"lowp"},o:function(){T.K();a.disableVertexAttribArray(0);for(var p in Z){var d=Z[p];d.gb&&(d.gb=!1,a.deleteProgram(d.ea));d.sd&&delete Z[p]}r.forEach(function(y){a.deleteShader(y)});r.splice(0);u=
0;F=!1;m=null;f=-1}};return T}(),a=null,Ya=function(){function b(t){console.log("ERROR in ContextFF: ",t);return!1}function c(){return navigator.userAgent&&-1!==navigator.userAgent.indexOf("forceWebGL1")}function e(t,H,D){t.setAttribute("width",H);t.setAttribute("height",D)}function k(t){if(c())return!1;var H=document.createElement("canvas");e(H,5,5);var D=null;try{D=H.getContext("webgl2",t)}catch(h){return!1}if(!D)return!1;l(D);ba.Nb(D);t=ba.Ya(D);if(!t.Y&&!t.Z)return za.o(),ba.reset(),!1;D=za.Hb(D,
t);za.o();ba.reset();return D?!0:!1}function l(t){t.clearColor(0,0,0,0);t.disable(t.DEPTH_TEST);t.disable(t.BLEND);t.disable(t.DITHER);t.disable(t.STENCIL_TEST);t.disable(t.CULL_FACE);t.GENERATE_MIPMAP_HINT&&t.FASTEST&&t.hint(t.GENERATE_MIPMAP_HINT,t.FASTEST);t.disable(t.SAMPLE_ALPHA_TO_COVERAGE);t.disable(t.SAMPLE_COVERAGE);t.depthFunc(t.LEQUAL);t.clearDepth(1)}var n=null,q=null,r=null,f=!0,m=null,u=null,F=[],A={D:function(){return n.width},R:function(){return n.height},pe:function(){return n},oe:function(){return a},
aa:function(){return f},flush:function(){a.flush()},Fe:function(){Ca.reset();Ca.V();A.Ed()},Ed:function(){aa.reset();U.reset();z.K();z.Uc();a.disable(a.DEPTH_TEST);a.disable(a.BLEND);U.ka();z.ua()},Zc:function(){m||(m=new Uint8Array(n.width*n.height*4));a.readPixels(0,0,n.width,n.height,a.RGBA,a.UNSIGNED_BYTE,m);return m},re:function(){return n.toDataURL("image/jpeg")},se:function(){Ca.I();q||(q=document.createElement("canvas"),r=q.getContext("2d"));e(q,n.width,n.height);for(var t=A.Zc(),H=r.createImageData(q.width,
q.height),D=q.width,h=q.height,K=H.data,R=0;R<h;++R)for(var X=h-R-1,G=0;G<D;++G){var g=4*(R*D+G),v=4*(X*D+G);K[g]=t[v];K[g+1]=t[v+1];K[g+2]=t[v+2];K[g+3]=t[v+3]}r.putImageData(H,0,0);return q.toDataURL("image/png")},qe:function(t){!q&&t&&(q=document.createElement("canvas"),r=q.getContext("2d"));var H=t?q:document.createElement("canvas");e(H,n.width,n.height);(t?r:H.getContext("2d")).drawImage(n,0,0);return H},F:function(t){t=Object.assign({cb:null,kb:null,ya:null,Lb:null,width:512,height:512,premultipliedAlpha:!1,
pd:!0,antialias:!1,debug:!1,fe:!1},t);t.cb?(a=t.cb,n=t.cb.canvas):t.Lb&&!t.ya?n=document.getElementById(t.Lb):t.ya&&(n=t.ya);n||(n=document.createElement("canvas"));n.width=t.width;n.height=t.height;if(a)f=a instanceof WebGL2RenderingContext;else{f=!0;var H={antialias:t.antialias,alpha:!0,preserveDrawingBuffer:!0,premultipliedAlpha:t.premultipliedAlpha,stencil:!1,depth:t.pd,failIfMajorPerformanceCaveat:!0,powerPreference:"high-performance"};navigator&&navigator.userAgent&&-1!==navigator.userAgent.indexOf("noAntialiasing")&&
(H.antialias=!1);var D=k(H);D||!H.antialias||c()||(H.antialias=!1,D=k(H));D&&(a=n.getContext("webgl2",H));a?f=!0:((a=n.getContext("webgl",H))||(a=n.getContext("experimental-webgl",H)),f=!1)}if(!a)return b("WebGL1 and 2 are not enabled");t.kb&&n.addEventListener&&(u=t.kb,n.addEventListener("webglcontextlost",u,!1));if(!ba.F())return b("Not enough GL capabilities");l(a);z.F();U.F();za.Hb(a,ba.Yc());F.forEach(function(h){h(a)});F.splice(0);return!0},Yd:function(){return new Promise(function(t){a?t(a):
F.push(t)})},o:function(){a&&(ba.o(),z.o(),za.o());u&&(n.removeEventListener("webglcontextlost",u,!1),u=null);a=m=r=q=n=null;F.splice(0)}};return A}(),va=function(){function b(){null===c&&("undefined"!==typeof z?c=z:"undefined"!==typeof JEShaders&&(c=JEShaders))}var c=null;return{reset:function(){c=null},Id:function(e){c!==e&&(c&&c.K(),c=e)},Ia:function(){return c.Ia()},ua:function(){return c.ua()},Oa:function(e){return c.Oa(e)},tb:function(){return c.tb()},K:function(){return c.K()},set:function(e){b();
return c.set(e)},sa:function(e){b();return c.sa(e)},sb:function(e){b();return c.sb(e)}}}(),Fa=function(){function b(d){a.bindTexture(a.TEXTURE_2D,d)}function c(){return r?a.NO_ERROR:a.getError()}function e(d){Z[0]=d;d=na[0];var y=d>>16&32768,I=d>>12&2047,M=d>>23&255;return 103>M?y:142<M?y|31744|((255==M?0:1)&&d&8388607):113>M?(I|=2048,y|(I>>114-M)+(I>>113-M&1)):y=(y|M-112<<10|I>>1)+(I&1)}function k(d){var y=new Uint16Array(d.length);d.forEach(function(I,M){y[M]=e(I)});return y}function l(){if(null!==
T.eb)return T.eb;var d=q(k([.5,.5,.5,.5]),!0);return null===d?!0:T.eb=d}function n(){if(null!==T.fb)return T.fb;var d=q(new Uint8Array([127,127,127,127]),!1);return null===d?!0:T.fb=d}function q(d,y){if(!va.Ia()||!K)return null;var I=null,M=Math.sqrt(d.length/4);try{var W=a.getError();if("FUCKING_BIG_ERROR"===W)return!1;I=p.instance({isFloat:!1,J:y,array:d,width:M});W=a.getError();if(W!==a.NO_ERROR)return!1}catch(wa){return!1}pa.I();a.viewport(0,0,M,M);a.clearColor(0,0,0,0);a.clear(a.COLOR_BUFFER_BIT);
va.set("s0");I.wa(0);oa.l(!0,!0);d=4*M*M;y=new Uint8Array(d);a.readPixels(0,0,M,M,a.RGBA,a.UNSIGNED_BYTE,y);M=!0;for(W=0;W<d;++W)M=M&&3>Math.abs(y[W]-127);I.remove();pa.V();return M}var r=!1,f=0,m=null,u=0,F=null,A=null,t=null,H=null,D=null,h=null,K=!1,R=[],X={isFloat:!1,isPot:!0,isLinear:!1,isMipmap:!1,dc:!1,isAnisotropicFiltering:!1,isMirrorX:!1,isMirrorY:!1,isSrgb:!1,isKeepArray:!1,isFlipY:null,width:0,height:0,url:null,array:null,data:null,G:null,Yb:null,rd:!1,J:!1,A:null,Ja:4,hb:0},G=!1,g=null,
v=null,C=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]],E=!1,N=!1,Z=new Float32Array(1),na=new Int32Array(Z.buffer),T={eb:null,fb:null},p={F:function(){K||(D=[a.RGBA,null,a.RGBA,a.RGBA],h=[a.RGBA,null,a.RGBA,a.RGBA],m=[a.TEXTURE0,a.TEXTURE1,a.TEXTURE2,a.TEXTURE3,a.TEXTURE4,a.TEXTURE5,a.TEXTURE6,a.TEXTURE7],E="undefined"!==typeof JEContext,N="undefined"!==typeof ba,E&&JEContext.Pe()&&m.push(a.TEXTURE8,a.TEXTURE9),F=[-1,-1,-1,-1,-1,-1,-1,-1],H=[a.UNSIGNED_BYTE,a.FLOAT,a.FLOAT],K=!0)},af:function(){a.texParameteri(a.TEXTURE_2D,
a.TEXTURE_MAG_FILTER,a.LINEAR);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR)},bf:function(){a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST)},ld:function(){if(!A){for(var d=new Float32Array(16384),y=0;16384>y;++y)d[y]=2*Math.random()-1;A={random:p.instance({isFloat:!0,isPot:!0,array:d,width:64}),wc:p.instance({isFloat:!1,isPot:!0,width:1,array:new Uint8Array([0,0,0,0])})}}p.Sd()},tc:function(d){a.framebufferTexture2D(pa.ab(),
a.COLOR_ATTACHMENT0,a.TEXTURE_2D,d,0)},De:function(){return A.wc},Sd:function(){H[1]=ba.$a(a)},Gd:function(){h=D=[a.RGBA,a.RGBA,a.RGBA,a.RGBA]},qc:function(d){z.set("s1");pa.I();var y=d.D(),I=d.R();a.viewport(0,0,y,I);d.h(0);oa.l(!1,!1)},Te:function(d,y){p.qc(d);a.readPixels(0,0,d.D(),d.R(),a.RGBA,a.UNSIGNED_BYTE,y)},Ue:function(d,y){p.qc(d);return ba.rb(0,0,d.D(),d.R(),y)},Ub:function(d,y,I,M,W,wa,Da){d.activeTexture(d.TEXTURE0);var Na=d.createTexture();d.bindTexture(d.TEXTURE_2D,Na);W=W instanceof
Float32Array?W:new Float32Array(W);d.texParameteri(d.TEXTURE_2D,d.TEXTURE_WRAP_S,d.CLAMP_TO_EDGE);d.texParameteri(d.TEXTURE_2D,d.TEXTURE_WRAP_T,d.CLAMP_TO_EDGE);d.texParameteri(d.TEXTURE_2D,d.TEXTURE_MAG_FILTER,d.NEAREST);d.texParameteri(d.TEXTURE_2D,d.TEXTURE_MIN_FILTER,d.NEAREST);d.pixelStorei(d.UNPACK_FLIP_Y_WEBGL,wa);d.texImage2D(d.TEXTURE_2D,0,d.RGBA,I,M,0,d.RGBA,d.FLOAT,W);d.bindTexture(d.TEXTURE_2D,null);d.pixelStorei(d.UNPACK_FLIP_Y_WEBGL,!1);Da&&(pa.V(),z.sa(d));d.viewport(0,0,I,M);d.framebufferTexture2D(d.FRAMEBUFFER,
d.COLOR_ATTACHMENT0,d.TEXTURE_2D,y,0);d.bindTexture(d.TEXTURE_2D,Na);Da?oa.l(!0,!0):U.Ba(d);d.deleteTexture(Na);K&&(F[0]=-1,t=null,f=0)},Ta:function(d){d!==f&&(a.activeTexture(m[d]),f=d)},cf:function(d){r=d},instance:function(d){var y;function I(){Q=void 0!==w.G.videoWidth?w.G.videoWidth:w.G.width;S=void 0!==w.G.videoHeight?w.G.videoHeight:w.G.height}function M(x){var O=c();if("FUCKING_BIG_ERROR"===O)return!1;a.texImage2D(a.TEXTURE_2D,0,ja,fa,ia,x);O=c();O!==a.NO_ERROR&&fa!==a.RGBA&&(fa=a.RGBA,a.texImage2D(a.TEXTURE_2D,
0,ja,fa,ia,x));return!0}function W(){if(!ob){b(ra);Aa&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,Aa);w.isPot?(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,w.isMirrorX?a.MIRRORED_REPEAT:a.REPEAT),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,w.isMirrorY?a.MIRRORED_REPEAT:a.REPEAT)):(a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE));w.isAnisotropicFiltering&&"undefined"!==typeof JESETTINGS&&a.texParameterf(a.TEXTURE_2D,JEContext.te().TEXTURE_MAX_ANISOTROPY_EXT,
JESETTINGS.Vd);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,w.isLinear?a.LINEAR:a.NEAREST);var x=w.isMipmap&&!Oa;a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,w.dc?a.LINEAR_MIPMAP_LINEAR:w.isLinear?x?a.NEAREST_MIPMAP_LINEAR:a.LINEAR:x?a.NEAREST_MIPMAP_NEAREST:a.NEAREST);fa=D[w.Ja-1];ja=h[w.Ja-1];ia=H[kb];ba.aa()&&(x=ba.$c(),fa===a.RGBA&&ia===a.FLOAT?w.isMipmap||w.isLinear?ja=za.bd(a):ba.Ib()?x&&(ja=x):ja=a.RGBA16F||a.RGBA:fa===a.RGB&&ia===a.FLOAT&&x&&(ja=x,fa=a.RGBA));if(w.J&&!w.isFloat||
w.isFloat&&w.isMipmap&&za.vd())ja=ba.ad(),ia=ba.$a(a);w.hb&&(cb=w.hb);w.isSrgb&&4===w.Ja&&(fa=JEContext.Be());if(w.G)M(w.G);else if(w.url)M(Ja);else if(ua){x=ua;try{"FUCKING_BIG_ERROR"!==a.getError()&&(a.texImage2D(a.TEXTURE_2D,0,ja,Q,S,0,fa,ia,x),c()!==a.NO_ERROR&&(a.texImage2D(a.TEXTURE_2D,0,ja,Q,S,0,fa,ia,null),c()!==a.NO_ERROR&&a.texImage2D(a.TEXTURE_2D,0,a.RGBA,Q,S,0,a.RGBA,a.UNSIGNED_BYTE,null)))}catch(Rb){a.texImage2D(a.TEXTURE_2D,0,ja,Q,S,0,fa,ia,null)}w.isKeepArray||(ua=null)}else x=c(),
"FUCKING_BIG_ERROR"!==x&&(a.texImage2D(a.TEXTURE_2D,0,ja,Q,S,0,fa,ia,null),x=c(),x!==a.NO_ERROR&&(fa=a.RGBA,w.J&&ia!==a.FLOAT&&(ia=a.FLOAT,a.texImage2D(a.TEXTURE_2D,0,ja,Q,S,0,fa,ia,null))));if(w.isMipmap)if(!Oa&&ca)ca.Ca(),db=!0;else if(Oa){x=Math.log2(Math.min(Q,S));Pa=Array(1+x);Pa[0]=ra;for(var O=1;O<=x;++O){var ma=Math.pow(2,O),V=Q/ma;ma=S/ma;var Ka=a.createTexture();b(Ka);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST);
a.texImage2D(a.TEXTURE_2D,0,ja,V,ma,0,fa,ia,null);b(null);Pa[O]=Ka}db=!0}b(null);F[f]=-1;Aa&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1);Sa=!0;w.A&&ca&&(w.A(ca),w.A=null)}}function wa(){for(var x=Q*S,O=2*x,ma=3*x,V=0;V<x;++V)xa[0][V]=Ta[V],xa[1][V]=Ta[V+x],xa[2][V]=Ta[V+O],xa[3][V]=Ta[V+ma]}function Da(){var x=Q*S*4;Ea=[new Uint8Array(x),new Uint8Array(x),new Uint8Array(x),new Uint8Array(x)];xa=[new Float32Array(Ea[0].buffer),new Float32Array(Ea[1].buffer),new Float32Array(Ea[2].buffer),new Float32Array(Ea[3].buffer)];
eb=new Uint8Array(4*x);Ta=new Float32Array(eb.buffer);Ua=!0}function Na(){y=new Uint8Array(Q*S*4);pb=new Float32Array(y.buffer);lb=!0}var w=Object.assign({},X,d),Va=u++;null===w.isFlipY&&(w.isFlipY=w.url?!0:!1);w.data&&(w.array="string"===typeof w.data?L(w.data):w.isFloat?new Float32Array(w.data):new Uint8Array(w.data),w.isFlipY=!1);var kb=0,qb=w.G?!0:!1,Wa=null,mb=null,rb=!1;w.J=w.J||w.isFloat;w.J&&(kb=1);!w.rd&&w.isFloat&&N&&!ba.Ib()&&(w.isFloat=!1);w.isFloat&&(kb=2);w.isAnisotropicFiltering&&E&&
!JEContext.Ie()&&(w.isAnisotropicFiltering=!1);var ra=w.Yb||a.createTexture(),Ja=null,ua=!1,Q=0,S=0,Sa=!1,ob=!1,Ua=!1,xa=null,Ea=null,eb=null,Ta=null,ja=null,fa=null,ia=null,Aa=w.isFlipY,Gb=(d=w.J&&w.isMipmap)&&za.Lc(),Oa=d&&!Gb?!0:!1,Pa=null,cb=-1,sb=-1,db=!1;var lb=!1;var pb=y=null;w.width&&(Q=w.width,S=w.height?w.height:Q);var ca={get:function(){return ra},D:function(){return Q},R:function(){return S},Ee:function(){return w.url},Je:function(){return w.isFloat},Le:function(){return w.J},$e:function(x){ra=
x},Me:function(){return w.isLinear},Ca:function(){a.generateMipmap(a.TEXTURE_2D)},Ic:function(x,O){Oa?(x||(x=ca.Xb()),p.Ta(O),b(Pa[x]),F[O]=-1):ca.h(O)},Xb:function(){-1===cb&&(cb=Math.log2(Q));return cb},uc:function(x){a.TEXTURE_MAX_LEVEL&&a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAX_LEVEL,x)},Wc:function(x){x||(x=ca.Xb());if(Oa){z.set("s12");p.Ta(0);for(var O=Q,ma=S,V=1;V<=x;++V)O/=2,ma/=2,z.N("u15",.25/O,.25/ma),a.viewport(0,0,O,ma),b(Pa[V-1]),a.framebufferTexture2D(pa.ab(),a.COLOR_ATTACHMENT0,a.TEXTURE_2D,
Pa[V],0),oa.l(!1,1===V);F[0]=-1}else x!==sb&&(sb=x,ca.uc(x)),ca.Ca()},df:function(x){(qb=!Eb.Pd(x))?(ua=null,w.G=x,I()):ua=x},h:function(x){if(!Sa)return!1;p.Ta(x);if(F[x]===Va)return!1;b(ra);F[x]=Va;return!0},wa:function(x){a.activeTexture(m[x]);f=x;b(ra);F[x]=Va},u:function(){t=ca;p.tc(ra)},H:function(){a.viewport(0,0,Q,S);t=ca;p.tc(ra)},zb:p.zb,Fd:function(x,O){Q=x;S=O},resize:function(x,O){ca.Fd(x,O);W()},clone:function(x){x=p.instance({width:Q,height:S,J:w.J,isFloat:w.isFloat,isLinear:w.isLinear,
isMirrorY:w.isMirrorY,isFlipY:x?!Aa:Aa,isPot:w.isPot});va.set("s0");pa.V();x.H();ca.h(0);oa.l(!0,!0);return x},Md:function(){a.viewport(0,0,Q,S)},remove:function(){a.deleteTexture(ra);ob=!0;R.splice(R.indexOf(ca),1);ca=null},refresh:function(){ca.wa(0);Aa&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!0);qb?a.texImage2D(a.TEXTURE_2D,0,ja,fa,ia,w.G):a.texImage2D(a.TEXTURE_2D,0,ja,Q,S,0,fa,ia,ua);Aa&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1)},pc:function(){Ua||Da();a.readPixels(0,0,Q,4*S,a.RGBA,a.UNSIGNED_BYTE,
eb);wa();return xa},Ad:function(){Ua||Da();return ba.rb(0,0,Q,4*S,eb).then(function(){wa();return xa})},Cd:function(){lb||Na();a.readPixels(0,0,Q,S,a.RGBA,a.UNSIGNED_BYTE,y);return pb},Bd:function(){lb||Na();return ba.rb(0,0,Q,S,y)},Mb:function(x){pa.I();z.set("s15");ca.h(0);if(x)a.viewport(0,0,Q,S),z.Kd("u16",.25,.25,.25,.25),oa.l(!1,!0);else for(x=0;4>x;++x)a.viewport(0,S*x,Q,S),z.vc("u16",C[x]),oa.l(!1,0===x)},sf:function(x){var O=ia===H[0]&&!n();b(ra);Aa&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!0);
O?(rb||(Wa=document.createElement("canvas"),Wa.width=Q,Wa.height=S,mb=Wa.getContext("2d"),mb.createImageData(Q,S),rb=!0),null.data.set(x),mb.putImageData(null,0,0),a.texImage2D(a.TEXTURE_2D,0,ja,fa,ia,Wa)):a.texImage2D(a.TEXTURE_2D,0,ja,Q,S,0,fa,ia,x);F[f]=Va;Aa&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1)},Rd:function(x,O){b(ra);O&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!0);a.texImage2D(a.TEXTURE_2D,0,ja,fa,ia,x);F[f]=Va;O&&a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1)},Ze:function(x,O){var ma=Q*S,V=4*ma;x=w.J?
x?"RGBE":"JSON":"RGBA";O&&(x=O);O=ba.aa()&&!1;var Ka=null;switch(x){case "RGBE":Ka="s13";break;case "JSON":Ka=O?"s0":"s15";break;case "RGBA":case "RGBAARRAY":Ka="s7"}Ua||("RGBA"===x||"RGBE"===x||"RGBAARRAY"===x?(Ea=new Uint8Array(V),Ua=!0):"JSON"!==x||O||Da());pa.I();z.set(Ka);ca.h(0);V=null;if("RGBA"===x||"RGBE"===x||"RGBAARRAY"===x){a.viewport(0,0,Q,S);oa.l(!0,!0);a.readPixels(0,0,Q,S,a.RGBA,a.UNSIGNED_BYTE,Ea);if("RGBAARRAY"===x)return{data:Ea};G||(g=document.createElement("canvas"),v=g.getContext("2d"),
G=!0);g.width=Q;g.height=S;ma=v.createImageData(Q,S);ma.data.set(Ea);v.putImageData(ma,0,0);V=g.toDataURL("image/png")}else if("JSON"===x)if(O)V=new Float32Array(ma),a.viewport(0,0,Q,S),oa.l(!0,!0),a.readPixels(0,0,Q,S,a.RGBA,a.FLOAT,V);else{for(V=0;4>V;++V)a.viewport(0,S*V,Q,S),z.vc("u16",C[V]),oa.l(!V,!V);ca.pc();V=Array(ma);for(O=0;O<ma;++O)V[4*O]=xa[0][O],V[4*O+1]=xa[1][O],V[4*O+2]=xa[2][O],V[4*O+3]=xa[3][O]}return{format:x,data:V,width:Q,height:S,isMirrorY:w.isMirrorY,isFlipY:"RGBA"===x?w.isFlipY:
!w.isFlipY}}};w.isMipmap&&!Oa&&Sa&&!db&&(ca.Ca(),db=!0);if(w.url)b(ra),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,1,1,0,a.RGBA,a.UNSIGNED_BYTE,null),Ja=new Image,Ja.crossOrigin="anonymous",Ja.src=w.url,Ja.onload=function(){Q=Ja.width;S=Ja.height;W()};else if(w.G){var tb=function(){I();Q?W():setTimeout(tb,1)};tb()}else w.array?(w.J&&!w.isFloat?w.array instanceof Uint16Array?(ua=w.array,W()):l()?(ua=k(w.array),W()):(W(),p.Ub(a,ra,ca.D(),ca.R(),w.array,Aa,!0)):(ua=w.isFloat?w.array instanceof Float32Array?w.array:
new Float32Array(w.array):w.array instanceof Uint8Array?w.array:new Uint8Array(w.array),W()),w.isKeepArray||(ua&&ua!==w.array&&(ua=null),delete w.array)):w.Yb?Sa=!0:W();ca.Ae=ca.D;w.A&&Sa&&(w.A(ca),w.A=null);R.push(ca);return ca},I:function(d){d!==f&&(a.activeTexture(m[d]),f=d);F[d]=-1;b(null)},Xd:function(d){A.random.h(d)},zb:function(){t=null;a.framebufferTexture2D(pa.ab(),a.COLOR_ATTACHMENT0,a.TEXTURE_2D,null,0)},reset:function(){0!==f&&a.activeTexture(m[0]);for(var d=0;d<m.length;++d)F[d]=-1;
f=-1},Xe:function(){f=-1},Qd:function(){for(var d=0;d<m.length;++d)p.I(d)},Vb:function(){A&&(A.random.remove(),A.wc.remove())},rf:function(d,y){if("RGBA"===d.format||"RGBE"===d.format){var I=new Image;I.src=d.data;I.onload=function(){p.instance({isMirrorY:d.isMirrorY,isFlipY:d.isFlipY,isFloat:!1,G:I,A:function(M){if("RGBA"===d.format)y(M);else{var W=d.width,wa=d.height,Da=p.instance({isMirrorY:d.isMirrorY,isFloat:!0,width:W,height:wa,isFlipY:d.isFlipY});pa.V();a.viewport(0,0,W,wa);z.set("s14");Da.u();
M.h(0);oa.l(!0,!0);p.I(0);y(Da);ba.flush();M.remove()}}})}}else"JSON"===d.format?y(p.instance({isFloat:!0,isFlipY:d.isFlipY,width:d.width,height:d.height,array:new Float32Array(d.data)})):y(!1)},Oc:k,o:function(){t&&(Ca.V(),p.zb(),Ca.I());p.Qd();R.slice(0).forEach(function(d){d.remove()});R.splice(0);K=!1;u=0;"undefined"!==typeof za&&za.o();A=null}};return p}(),oa=function(){function b(f){var m={U:null,indices:null};m.U=f.createBuffer();f.bindBuffer(f.ARRAY_BUFFER,m.U);f.bufferData(f.ARRAY_BUFFER,
new Float32Array([-1,-1,3,-1,-1,3]),f.STATIC_DRAW);m.indices=f.createBuffer();f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,m.indices);f.bufferData(f.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2]),f.STATIC_DRAW);return m}var c=null,e=0,k=!1,l=[],n=-2,q=-2,r={reset:function(){q=n=-2},F:function(){k||(c=b(a),r.ka(),k=!0)},instance:function(f){var m=e++,u=f.indices?f.indices.length:0,F="undefined"===typeof f.mode?a.STATIC_DRAW:f.mode,A=a.createBuffer();a.bindBuffer(a.ARRAY_BUFFER,A);a.bufferData(a.ARRAY_BUFFER,
f.U instanceof Float32Array?f.U:new Float32Array(f.U),F);n=m;var t=null,H=null,D=null;if(f.indices){t=a.createBuffer();a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,t);var h=null;65536>f.indices.length?(h=Uint16Array,H=a.UNSIGNED_SHORT,D=2):(h=Uint32Array,H=a.UNSIGNED_INT,D=4);h=f.indices instanceof h?f.indices:new h(f.indices);a.bufferData(a.ELEMENT_ARRAY_BUFFER,h,F);q=m}var K={Jc:function(R){n!==m&&(a.bindBuffer(a.ARRAY_BUFFER,A),n=m);R&&va.tb()},Gc:function(){q!==m&&(a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,
t),q=m)},bind:function(R){K.Jc(R);K.Gc()},je:function(){a.drawElements(a.TRIANGLES,u,H,0)},ke:function(R,X){a.drawElements(a.TRIANGLES,R,H,X*D)},remove:function(){a.deleteBuffer(A);f.indices&&a.deleteBuffer(t);K=null}};l.push(K);return K},ka:function(){-1!==n&&(a.bindBuffer(a.ARRAY_BUFFER,c.U),n=-1);-1!==q&&(a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,c.indices),q=-1)},l:function(f,m){f&&oa.ka();m&&va.ua();a.drawElements(a.TRIANGLES,3,a.UNSIGNED_SHORT,0)},Ba:function(f){f=f||a;var m=b(f);f.bindBuffer(f.ARRAY_BUFFER,
m.U);f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,m.indices);va.Oa(f);f.clear(f.COLOR_BUFFER_BIT);f.drawElements(f.TRIANGLES,3,f.UNSIGNED_SHORT,0);f.flush();f.bindBuffer(f.ARRAY_BUFFER,null);f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,null);f.deleteBuffer(m.U);f.deleteBuffer(m.indices);r.reset();k&&(r.ka(),va.ua())},Vb:function(){var f=a,m=c;f.deleteBuffer(m.U);f.deleteBuffer(m.indices)},o:function(){r.Vb();l.forEach(function(f){f.remove()});a.bindBuffer(a.ARRAY_BUFFER,null);a.bindBuffer(a.ELEMENT_ARRAY_BUFFER,null);
r.reset();k=!1;l.splice(0);e=0}};return r}(),pa=function(){var b=null,c=null,e=null,k=!1,l=[],n={B:-2,Tb:1},q={Ia:function(){return k},F:function(){if(!k){b=a.createFramebuffer();var r=ba.aa();c=r&&a.DRAW_FRAMEBUFFER?a.DRAW_FRAMEBUFFER:a.FRAMEBUFFER;e=r&&a.READ_FRAMEBUFFER?a.READ_FRAMEBUFFER:a.FRAMEBUFFER;k=!0}},ue:function(){return c},cd:function(){return e},ab:function(){return a.FRAMEBUFFER},ze:function(){return n},me:function(){return b},instance:function(r){void 0===r.ac&&(r.ac=!1);var f=r.Qa?
r.Qa:null,m=r.width,u=void 0!==r.height?r.height:r.width,F=b,A=null,t=!1,H=!1,D=0;f&&(m=m?m:f.D(),u=u?u:f.R());var h={sc:function(){t||(F=a.createFramebuffer(),t=!0,D=n.Tb++)},Ec:function(){h.sc();h.u();A=a.createRenderbuffer();a.bindRenderbuffer(a.RENDERBUFFER,A);a.renderbufferStorage(a.RENDERBUFFER,a.DEPTH_COMPONENT16,m,u);a.framebufferRenderbuffer(c,a.DEPTH_ATTACHMENT,a.RENDERBUFFER,A);a.clearDepth(1)},bind:function(K,R){D!==n.B&&(a.bindFramebuffer(c,F),n.B=D);f&&f.u();R&&a.viewport(0,0,m,u);K&&
a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER_BIT)},Wd:function(){D!==n.B&&(a.bindFramebuffer(c,F),n.B=D)},clear:function(){a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER_BIT)},be:function(){a.clear(a.COLOR_BUFFER_BIT)},ce:function(){a.clear(a.DEPTH_BUFFER_BIT)},Md:function(){a.viewport(0,0,m,u)},u:function(){D!==n.B&&(a.bindFramebuffer(c,F),n.B=D)},rtt:function(K){f=K;n.B!==D&&(a.bindFramebuffer(a.FRAMEBUFFER,F),n.B=D);K.u()},I:function(){a.bindFramebuffer(c,null);n.B=-1},resize:function(K,R){m=K;u=R;A&&
(a.bindRenderbuffer(a.RENDERBUFFER,A),a.renderbufferStorage(a.RENDERBUFFER,a.DEPTH_COMPONENT16,m,u))},remove:function(){F===b||H||(a.bindFramebuffer(c,F),a.framebufferTexture2D(c,a.COLOR_ATTACHMENT