var T=1e-6,N=typeof Float32Array!="undefined"?Float32Array:Array,V=Math.PI/180;function $(r){return r*V}Math.hypot||(Math.hypot=function(){for(var r=0,n=arguments.length;n--;)r+=arguments[n]*arguments[n];return Math.sqrt(r)});function d(){var r=new N(16);return N!=Float32Array&&(r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[11]=0,r[12]=0,r[13]=0,r[14]=0),r[0]=1,r[5]=1,r[10]=1,r[15]=1,r}function B(r,n){return r[0]=n[0],r[1]=n[1],r[2]=n[2],r[3]=n[3],r[4]=n[4],r[5]=n[5],r[6]=n[6],r[7]=n[7],r[8]=n[8],r[9]=n[9],r[10]=n[10],r[11]=n[11],r[12]=n[12],r[13]=n[13],r[14]=n[14],r[15]=n[15],r}function C(r){return r[0]=1,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=0,r[9]=0,r[10]=1,r[11]=0,r[12]=0,r[13]=0,r[14]=0,r[15]=1,r}function D(r,n,s){var v=s[0],e=s[1],i=s[2],a,c,h,M,f,l,b,y,p,g,x,z;return n===r?(r[12]=n[0]*v+n[4]*e+n[8]*i+n[12],r[13]=n[1]*v+n[5]*e+n[9]*i+n[13],r[14]=n[2]*v+n[6]*e+n[10]*i+n[14],r[15]=n[3]*v+n[7]*e+n[11]*i+n[15]):(a=n[0],c=n[1],h=n[2],M=n[3],f=n[4],l=n[5],b=n[6],y=n[7],p=n[8],g=n[9],x=n[10],z=n[11],r[0]=a,r[1]=c,r[2]=h,r[3]=M,r[4]=f,r[5]=l,r[6]=b,r[7]=y,r[8]=p,r[9]=g,r[10]=x,r[11]=z,r[12]=a*v+f*e+p*i+n[12],r[13]=c*v+l*e+g*i+n[13],r[14]=h*v+b*e+x*i+n[14],r[15]=M*v+y*e+z*i+n[15]),r}function G(r,n,s){var v=s[0],e=s[1],i=s[2];return r[0]=n[0]*v,r[1]=n[1]*v,r[2]=n[2]*v,r[3]=n[3]*v,r[4]=n[4]*e,r[5]=n[5]*e,r[6]=n[6]*e,r[7]=n[7]*e,r[8]=n[8]*i,r[9]=n[9]*i,r[10]=n[10]*i,r[11]=n[11]*i,r[12]=n[12],r[13]=n[13],r[14]=n[14],r[15]=n[15],r}function H(r,n,s,v){var e=v[0],i=v[1],a=v[2],c=Math.hypot(e,i,a),h,M,f,l,b,y,p,g,x,z,O,j,k,L,S,A,w,F,q,I,P,R,Y,E;return c0&&(i=1/Math.sqrt(i)),r[0]=n[0]*i,r[1]=n[1]*i,r[2]=n[2]*i,r}function t(r,n,s){var v=n[0],e=n[1],i=n[2],a=s[0],c=s[1],h=s[2];return r[0]=e*h-i*c,r[1]=i*a-v*h,r[2]=v*c-e*a,r}function u(r,n,s){var v=n[0],e=n[1],i=n[2],a=s[3]*v+s[7]*e+s[11]*i+s[15];return a=a||1,r[0]=(s[0]*v+s[4]*e+s[8]*i+s[12])/a,r[1]=(s[1]*v+s[5]*e+s[9]*i+s[13])/a,r[2]=(s[2]*v+s[6]*e+s[10]*i+s[14])/a,r}function o(r,n){var s=r[0],v=r[1],e=r[2],i=n[0],a=n[1],c=n[2];return Math.abs(s-i)<=T*Math.max(1,Math.abs(s),Math.abs(i))&&Math.abs(v-a)<=T*Math.max(1,Math.abs(v),Math.abs(a))&&Math.abs(e-c)<=T*Math.max(1,Math.abs(e),Math.abs(c))}(function(){var r=_();return function(n,s,v,e,i,a){var c,h;for(s||(s=3),v||(v=0),e?h=Math.min(e*s+v,n.length):h=n.length,c=v;c