<!-- SOLID-PLAYTIME · part 66 -->
nts;if(ci.subVectors(t,e),ci.lengthSq()===0)ci.z=1;if(ci.normalize(),ga.crossVectors(n,ci),ga.lengthSq()===0){if(Math.abs(n.z)===1)ci.x+=0.0001;else ci.z+=0.0001;ci.normalize(),ga.crossVectors(n,ci)}return ga.normalize(),Xh.crossVectors(ci,ga),i[0]=ga.x,i[4]=Xh.x,i[8]=ci.x,i[1]=ga.y,i[5]=Xh.y,i[9]=ci.y,i[2]=ga.z,i[6]=Xh.z,i[10]=ci.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let n=t.elements,i=e.elements,s=this.elements,a=n[0],r=n[4],o=n[8],l=n[12],c=n[1],u=n[5],f=n[9],h=n[13],p=n[2],v=n[6],y=n[10],U=n[14],d=n[3],g=n[7],m=n[11],x=n[15],S=i[0],A=i[4],T=i[8],w=i[12],b=i[1],M=i[5],R=i[9],O=i[13],V=i[2],k=i[6],et=i[10],Z=i[14],at=i[3],W=i[7],ht=i[11],mt=i[15];return s[0]=a*S+r*b+o*V+l*at,s[4]=a*A+r*M+o*k+l*W,s[8]=a*T+r*R+o*et+l*ht,s[12]=a*w+r*O+o*Z+l*mt,s[1]=c*S+u*b+f*V+h*at,s[5]=c*A+u*M+f*k+h*W,s[9]=c*T+u*R+f*et+h*ht,s[13]=c*w+u*O+f*Z+h*mt,s[2]=p*S+v*b+y*V+U*at,s[6]=p*A+v*M+y*k+U*W,s[10]=p*T+v*R+y*et+U*ht,s[14]=p*w+v*O+y*Z+U*mt,s[3]=d*S+g*b+m*V+x*at,s[7]=d*A+g*M+m*k+x*W,s[11]=d*T+g*R+m*et+x*ht,s[15]=d*w+g*O+m*Z+x*mt,this}multiplyScalar(t){let e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){let t=this.elements,e=t[0],n=t[4],i=t[8],s=t[12],a=t[1],r=t[5],o=t[9],l=t[13],c=t[2],u=t[6],f=t[10],h=t[14],p=t[3],v=t[7],y=t[11],U=t[15];return p*(+s*o*u-i*l*u-s*r*f+n*l*f+i*r*h-n*o*h)+v*(+e*o*h-e*l*f+s*a*f-i*a*h+i*l*c-s*o*c)+y*(+e*l*u-e*r*h-s*a*u+n*a*h+s*r*c-n*l*c)+U*(-i*r*c-e*o*u+e*r*f+i*a*u-n*a*f+n*o*c)}transpose(){let t=this.elements,e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,n){let i=this.elements;if(t.isVector3)i[12]=t.x,i[13]=t.y,i[14]=t.z;else i[12]=t,i[13]=e,i[14]=n;return this}invert(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],a=t[4],r=t[5],o=t[6],l=t[7],c=t[8],u=t[9],f=t[10],h=t[11],p=t[12],v=t[13],y=t[14],U=t[15],d=u*y*l-v*f*l+v*o*h-r*y*h-u*o*U+r*f*U,g=p*f*l-c*y*l-p*o*h+a*y*h+c*o*U-a*f*U,m=c*v*l-p*u*l+p*r*h-a*v*h-c*r*U+a*u*U,x=p*u*o-c*v*o-p*r*f+a*v*f+c*r*y-a*u*y,S=e*d+n*g+i*m+s*x;if(S===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let A=1/S;return t[0]=d*A,t[1]=(v*f*s-u*y*s-v*i*h+n*y*h+u*i*U-n*f*U)*A,t[2]=(r*y*s-v*o*s+v*i*l-n*y*l-r*i*U+n*o*U)*A,t[3]=(u*o*s-r*f*s-u*i*l+n*f*l+r*i*h-n*o*h)*A,t[4]=g*A,t[5]=(c*y*s-p*f*s+p*i*h-e*y*h-c*i*U+e*f*U)*A,t[6]=(p*o*s-a*y*s-p*i*l+e*y*l+a*i*U-e*o*U)*A,t[7]=(a*f*s-c*o*s+c*i*l-e*f*l-a*i*h+e*o*h)*A,t[8]=m*A,t[9]=(p*u*s-c*v*s-p*n*h+e*v*h+c*n*U-e*u*U)*A,t[10]=(a*v*s-p*r*s+p*n*l-e*v*l-a*n*U+e*r*U)*A,t[11]=(c*r*s-a*u*s-c*n*l+e*u*l+a*n*h-e*r*h)*A,t[12]=x*A,t[13]=(c*v*i-p*u*i+p*n*f-e*v*f-c*n*y+e*u*y)*A,t[14]=(p*r*i-a*v*i-p*n*o+e*v*o+a*n*y-e*r*y)*A,t[15]=(a*u*i-c*r*i+c*n*o-e*u*o-a*n*f+e*r*f)*A,this}scale(t){let e=this.elements,{x:n,y:i,z:s}=t;return e[0]*=n,e[4]*=i,e[8]*=s,e[1]*=n,e[5]*=i,e[9]*=s,e[2]*=n,e[6]*=i,e[10]*=s,e[3]*=n,e[7]*=i,e[11]*=s,this}getMaxScaleOnAxis(){let t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){if(t.isVector3)this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1);else this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1);return this}makeRotationX(t){let e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){let n=Math.cos(e),i=Math.sin(e),s=1-n,{x:a,y:r,z:o}=t,l=s*a,c=s*r;return this.set(l*a+n,l*r-i*o,l*o+i*r,0,l*r+i*o,c*r+n,c*o-i*a,0,l*o-i*r,c*o+i*a,s*o*o+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,s,a){return this.set(1,n,s,0,t,1,a,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){let i=this.elements,{_x:s,_y:a,_z:r,_w:o}=e,l=s+s,c=a+a,u=r+r,f=s*l,h=s*c,p=s*u,v=a*c,y=a*u,U=r*u,d=o*l,g=o*c,m=o*u,{x,y:S,z:A}=n;return i[0]=(1-(v+U))*x,i[1]=(h+m)*x,i[2]=(p-g)*x,i[3]=0,i[4]=(h-m)*S,i[5]=(1-(f+U))*S,i[6]=(y+d)*S,i[7]=0,i[8]=(p+g)*A,i[9]=(y-d)*A,i[10]=(1-(f+v))*A,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){let i=this.elements,s=Mo.set(i[0],i[1],i[2]).length(),a=Mo.set(i[4],i[5],i[6]).length(),r=Mo.set(i[8],i[9],i[10]).length();if(this.determinant()<0)s=-s;t.x=i[12],t.y=i[13],t.z=i[14],Fi.copy(this);let l=1/s,c=1/a,u=1/r;return Fi.elements[0]*=l,Fi.elements[1]*=l,Fi.elements[2]*=l,Fi.elements[4]*=c,Fi.elements[5]*=c,Fi.elements[6]*=c,Fi.elements[8]*=u,Fi.elements[9]*=u,Fi.elements[10]*=u,e.setFromRotationMatrix(Fi),n.x=s,n.y=a,n.z=r,this}makePerspective(t,e,n,i,s,a,r=2000,o=!1){let l=this.elements,c=2*s/(e-t),u=2*s/(n-i),f=(e+t)/(e-t),h=(n+i)/(