<!-- SOLUV · part 551 -->
nt(.5,.5),new nt(-.5,.5),new nt(-.5,-.5),new nt(.5,-.5)]),e={}){super(),this.type="ExtrudeGeometry",this.parameters={shapes:t,options:e},t=Array.isArray(t)?t:[t];let n=this,i=[],r=[];for(let o=0,l=t.length;o<l;o++){let c=t[o];a(c)}this.setAttribute("position",new Tt(i,3)),this.setAttribute("uv",new Tt(r,2)),this.computeVertexNormals();function a(o){let l=[],c=e.curveSegments!==void 0?e.curveSegments:12,h=e.steps!==void 0?e.steps:1,d=e.depth!==void 0?e.depth:1,u=e.bevelEnabled!==void 0?e.bevelEnabled:!0,f=e.bevelThickness!==void 0?e.bevelThickness:.2,p=e.bevelSize!==void 0?e.bevelSize:f-.1,_=e.bevelOffset!==void 0?e.bevelOffset:0,g=e.bevelSegments!==void 0?e.bevelSegments:3,m=e.extrudePath,S=e.UVGenerator!==void 0?e.UVGenerator:E_,b,x=!1,E,T,R,v;if(m){b=m.getSpacedPoints(h),x=!0,u=!1;let tt=m.isCatmullRomCurve3?m.closed:!1;E=m.computeFrenetFrames(h,tt),T=new C,R=new C,v=new C}u||(g=0,f=0,p=0,_=0);let A=o.extractPoints(c),I=A.shape,L=A.holes;if(!bn.isClockWise(I)){I=I.reverse();for(let tt=0,rt=L.length;tt<rt;tt++){let at=L[tt];bn.isClockWise(at)&&(L[tt]=at.reverse())}}function z(tt){let at=10000000000000001e-36,ot=tt[0];for(let ht=1;ht<=tt.length;ht++){let Bt=ht%tt.length,Ot=tt[Bt],Ht=Ot.x-ot.x,qt=Ot.y-ot.y,P=Ht*Ht+qt*qt,ae=Math.max(Math.abs(Ot.x),Math.abs(Ot.y),Math.abs(ot.x),Math.abs(ot.y)),jt=at*ae*ae;if(P<=jt){tt.splice(Bt,1),ht--;continue}ot=Ot}}z(I),L.forEach(z);let D=L.length,B=I;for(let tt=0;tt<D;tt++){let rt=L[tt];I=I.concat(rt)}function X(tt,rt,at){return rt||Lt("ExtrudeGeometry: vec does not exist"),tt.clone().addScaledVector(rt,at)}let W=I.length;function st(tt,rt,at){let ot,ht,Bt,Ot=tt.x-rt.x,Ht=tt.y-rt.y,qt=at.x-tt.x,P=at.y-tt.y,ae=Ot*Ot+Ht*Ht,jt=Ot*P-Ht*qt;if(Math.abs(jt)>Number.EPSILON){let w=Math.sqrt(ae),y=Math.sqrt(qt*qt+P*P),O=rt.x-Ht/w,G=rt.y+Ot/w,Y=at.x-P/y,lt=at.y+qt/y,ct=((Y-O)*P-(lt-G)*qt)/(Ot*P-Ht*qt);ot=O+Ot*ct-tt.x,ht=G+Ht*ct-tt.y;let Z=ot*ot+ht*ht;if(Z<=2)return new nt(ot,ht);Bt=Math.sqrt(Z/2)}else{let w=!1;Ot>Number.EPSILON?qt>Number.EPSILON&&(w=!0):Ot<-Number.EPSILON?qt<-Number.EPSILON&&(w=!0):Math.sign(Ht)===Math.sign(P)&&(w=!0),w?(ot=-Ht,ht=Ot,Bt=Math.sqrt(ae)):(ot=Ot,ht=Ht,Bt=Math.sqrt(ae/2))}return new nt(ot/Bt,ht/Bt)}let q=[];for(let tt=0,rt=B.length,at=rt-1,ot=tt+1;tt<rt;tt++,at++,ot++)at===rt&&(at=0),ot===rt&&(ot=0),q[tt]=st(B[tt],B[at],B[ot]);let Q=[],et,Dt=q.concat();for(let tt=0,rt=D;tt<rt;tt++){let at=L[tt];et=[];for(let ot=0,ht=at.length,Bt=ht-1,Ot=ot+1;ot<ht;ot++,Bt++,Ot++)Bt===ht&&(Bt=0),Ot===ht&&(Ot=0),et[ot]=st(at[ot],at[Bt],at[Ot]);Q.push(et),Dt=Dt.concat(et)}let wt;if(g===0)wt=bn.triangulateShape(B,L);else{let tt=[],rt=[];for(let at=0;at<g;at++){let ot=at/g,ht=f*Math.cos(ot*Math.PI/2),Bt=p*Math.sin(ot*Math.PI/2)+_;for(let Ot=0,Ht=B.length;Ot<Ht;Ot++){let qt=X(B[Ot],q[Ot],Bt);xt(qt.x,qt.y,-ht),ot===0&&tt.push(qt)}for(let Ot=0,Ht=D;Ot<Ht;Ot++){let qt=L[Ot];et=Q[Ot];let P=[];for(let ae=0,jt=qt.length;ae<jt;ae++){let w=X(qt[ae],et[ae],Bt);xt(w.x,w.y,-ht),ot===0&&P.push(w)}ot===0&&rt.push(P)}}wt=bn.triangulateShape(tt,rt)}let se=wt.length,Qt=p+_;for(let tt=0;tt<W;tt++){let rt=u?X(I[tt],Dt[tt],Qt):I[tt];x?(R.copy(E.normals[0]).multiplyScalar(rt.x),T.copy(E.binormals[0]).multiplyScalar(rt.y),v.copy(b[0]).add(R).add(T),xt(v.x,v.y,v.z)):xt(rt.x,rt.y,0)}for(let tt=1;tt<=h;tt++)for(let rt=0;rt<W;rt++){let at=u?X(I[rt],Dt[rt],Qt):I[rt];x?(R.copy(E.normals[tt]).multiplyScalar(at.x),T.copy(E.binormals[tt]).multiplyScalar(at.y),v.copy(b[tt]).add(R).add(T),xt(v.x,v.y,v.z)):xt(at.x,at.y,d/h*tt)}for(let tt=g-1;tt>=0;tt--){let rt=tt/g,at=f*Math.cos(rt*Math.PI/2),ot=p*Math.sin(rt*Math.PI/2)+_;for(let ht=0,Bt=B.length;ht<Bt;ht++){let Ot=X(B[ht],q[ht],ot);xt(Ot.x,Ot.y,d+at)}for(let ht=0,Bt=L.length;ht<Bt;ht++){let Ot=L[ht];et=Q[ht];for(let Ht=0,qt=Ot.length;Ht<qt;Ht++){let P=X(Ot[Ht],et[Ht],ot);x?xt(P.x,P.y+b[h-1].y,b[h-1].x+at):xt(P.x,P.y,d+at)}}}ne(),J();function ne(){let tt=i.length/3;if(u){let rt=0,at=W*rt;for(let ot=0;ot<se;ot++){let ht=wt[ot];Vt(ht[2]+at,ht[1]+at,ht[0]+at)}rt=h+g*2,at=W*rt;for(let ot=0;ot<se;ot++){let ht=wt[ot];Vt(ht[0]+at,ht[1]+at,ht[2]+at)}}else{for(let rt=0;rt<se;rt++){let at=wt[rt];Vt(at[2],at[1],at[0])}for(let rt=0;rt<se;rt++){let at=wt[rt];Vt(at[0]+W*h,at[1]+W*h,at[2]+W*h)}}n.addGroup(tt,i.length/3-tt,0)}function J(){let tt=i.length/3,rt=0;j(B,rt),rt+=B.length;for(let at=0,ot=L.length;at<ot;at++){let ht=L[at];j(ht,rt),rt+=ht.length}n.addGroup(tt,i.length/3-tt,1)}function j(tt,rt){let at=tt.length;for(;--at>=0;){let ot=at,ht=at-1;ht<0&&(ht=tt.length-1);for(let Bt=0,Ot=h+g*2;Bt<Ot;Bt++){let Ht=W*Bt,qt=W*(Bt+1),P=rt+ot+Ht,ae=rt+ht+Ht,jt=rt+ht+qt,w=rt+ot+qt;bt(P,ae,jt,w)}}}function xt(tt,rt,at){l.push(tt),l.push(rt),l.push(at)}function Vt(tt,rt,at){Gt(tt),Gt(rt),Gt(at);let ot=i.length/3,ht=S.generateTopUV(n,i,ot-3,ot-2,ot-1);he(ht[0]),he(ht[1]),he(ht[2])}function bt(tt,rt,at,ot){Gt(tt),Gt(rt),Gt(ot),Gt(rt),Gt(at),Gt(ot);let ht=i.length/3,Bt=S.generateSideWallUV(n,i,ht-6,ht-3,ht-2,ht-1);he(Bt[0]),he(Bt[1]),he(Bt[3]),he(Bt[1]),he(Bt