quake2ts 0.0.303 → 0.0.307
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/client/dist/browser/index.global.js +13 -13
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +17 -1
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +17 -1
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/client/dist/types/index.d.ts.map +1 -1
- package/packages/game/dist/browser/index.global.js +4 -4
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +1310 -21
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +1309 -21
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/ai/constants.d.ts +1 -0
- package/packages/game/dist/types/ai/constants.d.ts.map +1 -1
- package/packages/game/dist/types/entities/gibs.d.ts +4 -0
- package/packages/game/dist/types/entities/gibs.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/attack.d.ts +1 -0
- package/packages/game/dist/types/entities/monsters/attack.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/common.d.ts +3 -0
- package/packages/game/dist/types/entities/monsters/common.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/guardian.d.ts +5 -0
- package/packages/game/dist/types/entities/monsters/guardian.d.ts.map +1 -0
- package/packages/game/dist/types/entities/monsters/gunnerCommander.d.ts +5 -0
- package/packages/game/dist/types/entities/monsters/gunnerCommander.d.ts.map +1 -0
- package/packages/game/dist/types/entities/monsters/index.d.ts.map +1 -1
- package/packages/game/dist/types/index.d.ts +5 -0
- package/packages/game/dist/types/index.d.ts.map +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Quake2Client=(()=>{var Ls=Object.defineProperty;var Mg=Object.getOwnPropertyDescriptor;var Rg=Object.getOwnPropertyNames;var Lg=Object.prototype.hasOwnProperty;var zs=(e,t)=>{for(var n in t)Ls(e,n,{get:t[n],enumerable:!0})},zg=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Rg(t))!Lg.call(e,r)&&r!==n&&Ls(e,r,{get:()=>t[r],enumerable:!(i=Mg(t,r))||i.enumerable});return e};var Ng=e=>zg(Ls({},"__esModule",{value:!0}),e);var eC={};zs(eC,{ClientConfigStrings:()=>vi,ClientMode:()=>bg,ClientPrediction:()=>fa,InputAction:()=>Ts,InputBindings:()=>Tn,InputCommandBuffer:()=>Ms,InputController:()=>pi,ViewEffects:()=>ma,createClient:()=>QI,createDefaultBindings:()=>Eg,interpolatePredictionState:()=>gn,normalizeCommand:()=>Mr,normalizeInputCode:()=>ou});var de=1e-6,je=typeof Float32Array<"u"?Float32Array:Array,Ns=Math.random;function Lr(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var nC=Math.PI/180,iC=180/Math.PI;var me={};zs(me,{add:()=>vv,adjoint:()=>Bg,clone:()=>Ig,copy:()=>Cg,create:()=>Og,decompose:()=>iv,determinant:()=>Gg,equals:()=>Av,exactEquals:()=>wv,frob:()=>gv,fromQuat:()=>sv,fromQuat2:()=>ev,fromRotation:()=>Zg,fromRotationTranslation:()=>mu,fromRotationTranslationScale:()=>rv,fromRotationTranslationScaleOrigin:()=>av,fromScaling:()=>qg,fromTranslation:()=>Yg,fromValues:()=>Pg,fromXRotation:()=>jg,fromYRotation:()=>Jg,fromZRotation:()=>Qg,frustum:()=>ov,getRotation:()=>nv,getScaling:()=>fu,getTranslation:()=>tv,identity:()=>uu,invert:()=>Ug,lookAt:()=>fv,mul:()=>Sv,multiply:()=>du,multiplyScalar:()=>pv,multiplyScalarAndAdd:()=>yv,ortho:()=>dv,orthoNO:()=>_u,orthoZO:()=>mv,perspective:()=>cv,perspectiveFromFieldOfView:()=>uv,perspectiveNO:()=>hu,perspectiveZO:()=>lv,rotate:()=>Wg,rotateX:()=>Kg,rotateY:()=>$g,rotateZ:()=>Xg,scale:()=>Vg,set:()=>Fg,str:()=>_v,sub:()=>Ev,subtract:()=>gu,targetTo:()=>hv,translate:()=>Hg,transpose:()=>Dg});function Og(){var e=new je(16);return je!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Ig(e){var t=new je(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Cg(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Pg(e,t,n,i,r,a,s,o,l,c,u,m,d,f,_,p){var v=new je(16);return v[0]=e,v[1]=t,v[2]=n,v[3]=i,v[4]=r,v[5]=a,v[6]=s,v[7]=o,v[8]=l,v[9]=c,v[10]=u,v[11]=m,v[12]=d,v[13]=f,v[14]=_,v[15]=p,v}function Fg(e,t,n,i,r,a,s,o,l,c,u,m,d,f,_,p,v){return e[0]=t,e[1]=n,e[2]=i,e[3]=r,e[4]=a,e[5]=s,e[6]=o,e[7]=l,e[8]=c,e[9]=u,e[10]=m,e[11]=d,e[12]=f,e[13]=_,e[14]=p,e[15]=v,e}function uu(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Dg(e,t){if(e===t){var n=t[1],i=t[2],r=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=i,e[9]=a,e[11]=t[14],e[12]=r,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function Ug(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],m=t[9],d=t[10],f=t[11],_=t[12],p=t[13],v=t[14],y=t[15],S=n*o-i*s,E=n*l-r*s,w=n*c-a*s,k=i*l-r*o,T=i*c-a*o,x=r*c-a*l,L=u*p-m*_,N=u*v-d*_,A=u*y-f*_,O=m*v-d*p,W=m*y-f*p,ee=d*y-f*v,J=S*ee-E*W+w*O+k*A-T*N+x*L;return J?(J=1/J,e[0]=(o*ee-l*W+c*O)*J,e[1]=(r*W-i*ee-a*O)*J,e[2]=(p*x-v*T+y*k)*J,e[3]=(d*T-m*x-f*k)*J,e[4]=(l*A-s*ee-c*N)*J,e[5]=(n*ee-r*A+a*N)*J,e[6]=(v*w-_*x-y*E)*J,e[7]=(u*x-d*w+f*E)*J,e[8]=(s*W-o*A+c*L)*J,e[9]=(i*A-n*W-a*L)*J,e[10]=(_*T-p*w+y*S)*J,e[11]=(m*w-u*T-f*S)*J,e[12]=(o*N-s*O-l*L)*J,e[13]=(n*O-i*N+r*L)*J,e[14]=(p*E-_*k-v*S)*J,e[15]=(u*k-m*E+d*S)*J,e):null}function Bg(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],m=t[9],d=t[10],f=t[11],_=t[12],p=t[13],v=t[14],y=t[15],S=n*o-i*s,E=n*l-r*s,w=n*c-a*s,k=i*l-r*o,T=i*c-a*o,x=r*c-a*l,L=u*p-m*_,N=u*v-d*_,A=u*y-f*_,O=m*v-d*p,W=m*y-f*p,ee=d*y-f*v;return e[0]=o*ee-l*W+c*O,e[1]=r*W-i*ee-a*O,e[2]=p*x-v*T+y*k,e[3]=d*T-m*x-f*k,e[4]=l*A-s*ee-c*N,e[5]=n*ee-r*A+a*N,e[6]=v*w-_*x-y*E,e[7]=u*x-d*w+f*E,e[8]=s*W-o*A+c*L,e[9]=i*A-n*W-a*L,e[10]=_*T-p*w+y*S,e[11]=m*w-u*T-f*S,e[12]=o*N-s*O-l*L,e[13]=n*O-i*N+r*L,e[14]=p*E-_*k-v*S,e[15]=u*k-m*E+d*S,e}function Gg(e){var t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],c=e[8],u=e[9],m=e[10],d=e[11],f=e[12],_=e[13],p=e[14],v=e[15],y=t*s-n*a,S=t*o-i*a,E=n*o-i*s,w=c*_-u*f,k=c*p-m*f,T=u*p-m*_,x=t*T-n*k+i*w,L=a*T-s*k+o*w,N=c*E-u*S+m*y,A=f*E-_*S+p*y;return l*x-r*L+v*N-d*A}function du(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],m=t[8],d=t[9],f=t[10],_=t[11],p=t[12],v=t[13],y=t[14],S=t[15],E=n[0],w=n[1],k=n[2],T=n[3];return e[0]=E*i+w*o+k*m+T*p,e[1]=E*r+w*l+k*d+T*v,e[2]=E*a+w*c+k*f+T*y,e[3]=E*s+w*u+k*_+T*S,E=n[4],w=n[5],k=n[6],T=n[7],e[4]=E*i+w*o+k*m+T*p,e[5]=E*r+w*l+k*d+T*v,e[6]=E*a+w*c+k*f+T*y,e[7]=E*s+w*u+k*_+T*S,E=n[8],w=n[9],k=n[10],T=n[11],e[8]=E*i+w*o+k*m+T*p,e[9]=E*r+w*l+k*d+T*v,e[10]=E*a+w*c+k*f+T*y,e[11]=E*s+w*u+k*_+T*S,E=n[12],w=n[13],k=n[14],T=n[15],e[12]=E*i+w*o+k*m+T*p,e[13]=E*r+w*l+k*d+T*v,e[14]=E*a+w*c+k*f+T*y,e[15]=E*s+w*u+k*_+T*S,e}function Hg(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,l,c,u,m,d,f,_,p,v,y;return t===e?(e[12]=t[0]*i+t[4]*r+t[8]*a+t[12],e[13]=t[1]*i+t[5]*r+t[9]*a+t[13],e[14]=t[2]*i+t[6]*r+t[10]*a+t[14],e[15]=t[3]*i+t[7]*r+t[11]*a+t[15]):(s=t[0],o=t[1],l=t[2],c=t[3],u=t[4],m=t[5],d=t[6],f=t[7],_=t[8],p=t[9],v=t[10],y=t[11],e[0]=s,e[1]=o,e[2]=l,e[3]=c,e[4]=u,e[5]=m,e[6]=d,e[7]=f,e[8]=_,e[9]=p,e[10]=v,e[11]=y,e[12]=s*i+u*r+_*a+t[12],e[13]=o*i+m*r+p*a+t[13],e[14]=l*i+d*r+v*a+t[14],e[15]=c*i+f*r+y*a+t[15]),e}function Vg(e,t,n){var i=n[0],r=n[1],a=n[2];return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Wg(e,t,n,i){var r=i[0],a=i[1],s=i[2],o=Math.sqrt(r*r+a*a+s*s),l,c,u,m,d,f,_,p,v,y,S,E,w,k,T,x,L,N,A,O,W,ee,J,Re;return o<de?null:(o=1/o,r*=o,a*=o,s*=o,l=Math.sin(n),c=Math.cos(n),u=1-c,m=t[0],d=t[1],f=t[2],_=t[3],p=t[4],v=t[5],y=t[6],S=t[7],E=t[8],w=t[9],k=t[10],T=t[11],x=r*r*u+c,L=a*r*u+s*l,N=s*r*u-a*l,A=r*a*u-s*l,O=a*a*u+c,W=s*a*u+r*l,ee=r*s*u+a*l,J=a*s*u-r*l,Re=s*s*u+c,e[0]=m*x+p*L+E*N,e[1]=d*x+v*L+w*N,e[2]=f*x+y*L+k*N,e[3]=_*x+S*L+T*N,e[4]=m*A+p*O+E*W,e[5]=d*A+v*O+w*W,e[6]=f*A+y*O+k*W,e[7]=_*A+S*O+T*W,e[8]=m*ee+p*J+E*Re,e[9]=d*ee+v*J+w*Re,e[10]=f*ee+y*J+k*Re,e[11]=_*ee+S*J+T*Re,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Kg(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],u=t[9],m=t[10],d=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*r+c*i,e[5]=s*r+u*i,e[6]=o*r+m*i,e[7]=l*r+d*i,e[8]=c*r-a*i,e[9]=u*r-s*i,e[10]=m*r-o*i,e[11]=d*r-l*i,e}function $g(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[8],u=t[9],m=t[10],d=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r-c*i,e[1]=s*r-u*i,e[2]=o*r-m*i,e[3]=l*r-d*i,e[8]=a*i+c*r,e[9]=s*i+u*r,e[10]=o*i+m*r,e[11]=l*i+d*r,e}function Xg(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[4],u=t[5],m=t[6],d=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r+c*i,e[1]=s*r+u*i,e[2]=o*r+m*i,e[3]=l*r+d*i,e[4]=c*r-a*i,e[5]=u*r-s*i,e[6]=m*r-o*i,e[7]=d*r-l*i,e}function Yg(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function qg(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Zg(e,t,n){var i=n[0],r=n[1],a=n[2],s=Math.sqrt(i*i+r*r+a*a),o,l,c;return s<de?null:(s=1/s,i*=s,r*=s,a*=s,o=Math.sin(t),l=Math.cos(t),c=1-l,e[0]=i*i*c+l,e[1]=r*i*c+a*o,e[2]=a*i*c-r*o,e[3]=0,e[4]=i*r*c-a*o,e[5]=r*r*c+l,e[6]=a*r*c+i*o,e[7]=0,e[8]=i*a*c+r*o,e[9]=r*a*c-i*o,e[10]=a*a*c+l,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function jg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Jg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=0,e[2]=-n,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=n,e[9]=0,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Qg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function mu(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=i+i,l=r+r,c=a+a,u=i*o,m=i*l,d=i*c,f=r*l,_=r*c,p=a*c,v=s*o,y=s*l,S=s*c;return e[0]=1-(f+p),e[1]=m+S,e[2]=d-y,e[3]=0,e[4]=m-S,e[5]=1-(u+p),e[6]=_+v,e[7]=0,e[8]=d+y,e[9]=_-v,e[10]=1-(u+f),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function ev(e,t){var n=new je(3),i=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],m=i*i+r*r+a*a+s*s;return m>0?(n[0]=(o*s+u*i+l*a-c*r)*2/m,n[1]=(l*s+u*r+c*i-o*a)*2/m,n[2]=(c*s+u*a+o*r-l*i)*2/m):(n[0]=(o*s+u*i+l*a-c*r)*2,n[1]=(l*s+u*r+c*i-o*a)*2,n[2]=(c*s+u*a+o*r-l*i)*2),mu(e,t,n),e}function tv(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function fu(e,t){var n=t[0],i=t[1],r=t[2],a=t[4],s=t[5],o=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.sqrt(n*n+i*i+r*r),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(l*l+c*c+u*u),e}function nv(e,t){var n=new je(3);fu(n,t);var i=1/n[0],r=1/n[1],a=1/n[2],s=t[0]*i,o=t[1]*r,l=t[2]*a,c=t[4]*i,u=t[5]*r,m=t[6]*a,d=t[8]*i,f=t[9]*r,_=t[10]*a,p=s+u+_,v=0;return p>0?(v=Math.sqrt(p+1)*2,e[3]=.25*v,e[0]=(m-f)/v,e[1]=(d-l)/v,e[2]=(o-c)/v):s>u&&s>_?(v=Math.sqrt(1+s-u-_)*2,e[3]=(m-f)/v,e[0]=.25*v,e[1]=(o+c)/v,e[2]=(d+l)/v):u>_?(v=Math.sqrt(1+u-s-_)*2,e[3]=(d-l)/v,e[0]=(o+c)/v,e[1]=.25*v,e[2]=(m+f)/v):(v=Math.sqrt(1+_-s-u)*2,e[3]=(o-c)/v,e[0]=(d+l)/v,e[1]=(m+f)/v,e[2]=.25*v),e}function iv(e,t,n,i){t[0]=i[12],t[1]=i[13],t[2]=i[14];var r=i[0],a=i[1],s=i[2],o=i[4],l=i[5],c=i[6],u=i[8],m=i[9],d=i[10];n[0]=Math.sqrt(r*r+a*a+s*s),n[1]=Math.sqrt(o*o+l*l+c*c),n[2]=Math.sqrt(u*u+m*m+d*d);var f=1/n[0],_=1/n[1],p=1/n[2],v=r*f,y=a*_,S=s*p,E=o*f,w=l*_,k=c*p,T=u*f,x=m*_,L=d*p,N=v+w+L,A=0;return N>0?(A=Math.sqrt(N+1)*2,e[3]=.25*A,e[0]=(k-x)/A,e[1]=(T-S)/A,e[2]=(y-E)/A):v>w&&v>L?(A=Math.sqrt(1+v-w-L)*2,e[3]=(k-x)/A,e[0]=.25*A,e[1]=(y+E)/A,e[2]=(T+S)/A):w>L?(A=Math.sqrt(1+w-v-L)*2,e[3]=(T-S)/A,e[0]=(y+E)/A,e[1]=.25*A,e[2]=(k+x)/A):(A=Math.sqrt(1+L-v-w)*2,e[3]=(y-E)/A,e[0]=(T+S)/A,e[1]=(k+x)/A,e[2]=.25*A),e}function rv(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=t[3],l=r+r,c=a+a,u=s+s,m=r*l,d=r*c,f=r*u,_=a*c,p=a*u,v=s*u,y=o*l,S=o*c,E=o*u,w=i[0],k=i[1],T=i[2];return e[0]=(1-(_+v))*w,e[1]=(d+E)*w,e[2]=(f-S)*w,e[3]=0,e[4]=(d-E)*k,e[5]=(1-(m+v))*k,e[6]=(p+y)*k,e[7]=0,e[8]=(f+S)*T,e[9]=(p-y)*T,e[10]=(1-(m+_))*T,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function av(e,t,n,i,r){var a=t[0],s=t[1],o=t[2],l=t[3],c=a+a,u=s+s,m=o+o,d=a*c,f=a*u,_=a*m,p=s*u,v=s*m,y=o*m,S=l*c,E=l*u,w=l*m,k=i[0],T=i[1],x=i[2],L=r[0],N=r[1],A=r[2],O=(1-(p+y))*k,W=(f+w)*k,ee=(_-E)*k,J=(f-w)*T,Re=(1-(d+y))*T,R=(v+S)*T,G=(_+E)*x,ie=(v-S)*x,St=(1-(d+p))*x;return e[0]=O,e[1]=W,e[2]=ee,e[3]=0,e[4]=J,e[5]=Re,e[6]=R,e[7]=0,e[8]=G,e[9]=ie,e[10]=St,e[11]=0,e[12]=n[0]+L-(O*L+J*N+G*A),e[13]=n[1]+N-(W*L+Re*N+ie*A),e[14]=n[2]+A-(ee*L+R*N+St*A),e[15]=1,e}function sv(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=n+n,o=i+i,l=r+r,c=n*s,u=i*s,m=i*o,d=r*s,f=r*o,_=r*l,p=a*s,v=a*o,y=a*l;return e[0]=1-m-_,e[1]=u+y,e[2]=d-v,e[3]=0,e[4]=u-y,e[5]=1-c-_,e[6]=f+p,e[7]=0,e[8]=d+v,e[9]=f-p,e[10]=1-c-m,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function ov(e,t,n,i,r,a,s){var o=1/(n-t),l=1/(r-i),c=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*l,e[6]=0,e[7]=0,e[8]=(n+t)*o,e[9]=(r+i)*l,e[10]=(s+a)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*c,e[15]=0,e}function hu(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(i-r);e[10]=(r+i)*s,e[14]=2*r*i*s}else e[10]=-1,e[14]=-2*i;return e}var cv=hu;function lv(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(i-r);e[10]=r*s,e[14]=r*i*s}else e[10]=-1,e[14]=-i;return e}function uv(e,t,n,i){var r=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),l=2/(s+o),c=2/(r+a);return e[0]=l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=-((s-o)*l*.5),e[9]=(r-a)*c*.5,e[10]=i/(n-i),e[11]=-1,e[12]=0,e[13]=0,e[14]=i*n/(n-i),e[15]=0,e}function _u(e,t,n,i,r,a,s){var o=1/(t-n),l=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*l,e[14]=(s+a)*c,e[15]=1,e}var dv=_u;function mv(e,t,n,i,r,a,s){var o=1/(t-n),l=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*l,e[14]=a*c,e[15]=1,e}function fv(e,t,n,i){var r,a,s,o,l,c,u,m,d,f,_=t[0],p=t[1],v=t[2],y=i[0],S=i[1],E=i[2],w=n[0],k=n[1],T=n[2];return Math.abs(_-w)<de&&Math.abs(p-k)<de&&Math.abs(v-T)<de?uu(e):(u=_-w,m=p-k,d=v-T,f=1/Math.sqrt(u*u+m*m+d*d),u*=f,m*=f,d*=f,r=S*d-E*m,a=E*u-y*d,s=y*m-S*u,f=Math.sqrt(r*r+a*a+s*s),f?(f=1/f,r*=f,a*=f,s*=f):(r=0,a=0,s=0),o=m*s-d*a,l=d*r-u*s,c=u*a-m*r,f=Math.sqrt(o*o+l*l+c*c),f?(f=1/f,o*=f,l*=f,c*=f):(o=0,l=0,c=0),e[0]=r,e[1]=o,e[2]=u,e[3]=0,e[4]=a,e[5]=l,e[6]=m,e[7]=0,e[8]=s,e[9]=c,e[10]=d,e[11]=0,e[12]=-(r*_+a*p+s*v),e[13]=-(o*_+l*p+c*v),e[14]=-(u*_+m*p+d*v),e[15]=1,e)}function hv(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=i[0],l=i[1],c=i[2],u=r-n[0],m=a-n[1],d=s-n[2],f=u*u+m*m+d*d;f>0&&(f=1/Math.sqrt(f),u*=f,m*=f,d*=f);var _=l*d-c*m,p=c*u-o*d,v=o*m-l*u;return f=_*_+p*p+v*v,f>0&&(f=1/Math.sqrt(f),_*=f,p*=f,v*=f),e[0]=_,e[1]=p,e[2]=v,e[3]=0,e[4]=m*v-d*p,e[5]=d*_-u*v,e[6]=u*p-m*_,e[7]=0,e[8]=u,e[9]=m,e[10]=d,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function _v(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function gv(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function vv(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e[9]=t[9]+n[9],e[10]=t[10]+n[10],e[11]=t[11]+n[11],e[12]=t[12]+n[12],e[13]=t[13]+n[13],e[14]=t[14]+n[14],e[15]=t[15]+n[15],e}function gu(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e[9]=t[9]-n[9],e[10]=t[10]-n[10],e[11]=t[11]-n[11],e[12]=t[12]-n[12],e[13]=t[13]-n[13],e[14]=t[14]-n[14],e[15]=t[15]-n[15],e}function pv(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12]*n,e[13]=t[13]*n,e[14]=t[14]*n,e[15]=t[15]*n,e}function yv(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e[3]=t[3]+n[3]*i,e[4]=t[4]+n[4]*i,e[5]=t[5]+n[5]*i,e[6]=t[6]+n[6]*i,e[7]=t[7]+n[7]*i,e[8]=t[8]+n[8]*i,e[9]=t[9]+n[9]*i,e[10]=t[10]+n[10]*i,e[11]=t[11]+n[11]*i,e[12]=t[12]+n[12]*i,e[13]=t[13]+n[13]*i,e[14]=t[14]+n[14]*i,e[15]=t[15]+n[15]*i,e}function wv(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function Av(e,t){var n=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8],m=e[9],d=e[10],f=e[11],_=e[12],p=e[13],v=e[14],y=e[15],S=t[0],E=t[1],w=t[2],k=t[3],T=t[4],x=t[5],L=t[6],N=t[7],A=t[8],O=t[9],W=t[10],ee=t[11],J=t[12],Re=t[13],R=t[14],G=t[15];return Math.abs(n-S)<=de*Math.max(1,Math.abs(n),Math.abs(S))&&Math.abs(i-E)<=de*Math.max(1,Math.abs(i),Math.abs(E))&&Math.abs(r-w)<=de*Math.max(1,Math.abs(r),Math.abs(w))&&Math.abs(a-k)<=de*Math.max(1,Math.abs(a),Math.abs(k))&&Math.abs(s-T)<=de*Math.max(1,Math.abs(s),Math.abs(T))&&Math.abs(o-x)<=de*Math.max(1,Math.abs(o),Math.abs(x))&&Math.abs(l-L)<=de*Math.max(1,Math.abs(l),Math.abs(L))&&Math.abs(c-N)<=de*Math.max(1,Math.abs(c),Math.abs(N))&&Math.abs(u-A)<=de*Math.max(1,Math.abs(u),Math.abs(A))&&Math.abs(m-O)<=de*Math.max(1,Math.abs(m),Math.abs(O))&&Math.abs(d-W)<=de*Math.max(1,Math.abs(d),Math.abs(W))&&Math.abs(f-ee)<=de*Math.max(1,Math.abs(f),Math.abs(ee))&&Math.abs(_-J)<=de*Math.max(1,Math.abs(_),Math.abs(J))&&Math.abs(p-Re)<=de*Math.max(1,Math.abs(p),Math.abs(Re))&&Math.abs(v-R)<=de*Math.max(1,Math.abs(v),Math.abs(R))&&Math.abs(y-G)<=de*Math.max(1,Math.abs(y),Math.abs(G))}var Sv=du,Ev=gu;var _e={};zs(_e,{add:()=>Mv,angle:()=>jv,bezier:()=>Vv,ceil:()=>Rv,clone:()=>bv,copy:()=>xv,create:()=>vu,cross:()=>Uv,dist:()=>ap,distance:()=>Su,div:()=>rp,divide:()=>Au,dot:()=>Os,equals:()=>tp,exactEquals:()=>ep,floor:()=>Lv,forEach:()=>lp,fromValues:()=>kv,hermite:()=>Hv,inverse:()=>Fv,len:()=>op,length:()=>pu,lerp:()=>Bv,max:()=>Nv,min:()=>zv,mul:()=>ip,multiply:()=>wu,negate:()=>Pv,normalize:()=>Dv,random:()=>Wv,rotateX:()=>Yv,rotateY:()=>qv,rotateZ:()=>Zv,round:()=>Ov,scale:()=>Iv,scaleAndAdd:()=>Cv,set:()=>Tv,slerp:()=>Gv,sqrDist:()=>sp,sqrLen:()=>cp,squaredDistance:()=>Eu,squaredLength:()=>bu,str:()=>Qv,sub:()=>np,subtract:()=>yu,transformMat3:()=>$v,transformMat4:()=>Kv,transformQuat:()=>Xv,zero:()=>Jv});function vu(){var e=new je(3);return je!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function bv(e){var t=new je(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function pu(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function kv(e,t,n){var i=new je(3);return i[0]=e,i[1]=t,i[2]=n,i}function xv(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Tv(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function Mv(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function yu(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function wu(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Au(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function Rv(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function Lv(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function zv(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function Nv(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function Ov(e,t){return e[0]=Lr(t[0]),e[1]=Lr(t[1]),e[2]=Lr(t[2]),e}function Iv(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function Cv(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function Su(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function Eu(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function bu(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function Pv(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Fv(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Dv(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function Os(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Uv(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=r*l-a*o,e[1]=a*s-i*l,e[2]=i*o-r*s,e}function Bv(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function Gv(e,t,n,i){var r=Math.acos(Math.min(Math.max(Os(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function Hv(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,l=s*(a-2)+a,c=s*(a-1),u=s*(3-2*a);return e[0]=t[0]*o+n[0]*l+i[0]*c+r[0]*u,e[1]=t[1]*o+n[1]*l+i[1]*c+r[1]*u,e[2]=t[2]*o+n[2]*l+i[2]*c+r[2]*u,e}function Vv(e,t,n,i,r,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,m=3*l*s,d=l*a;return e[0]=t[0]*c+n[0]*u+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*u+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*u+i[2]*m+r[2]*d,e}function Wv(e,t){t=t===void 0?1:t;var n=Ns()*2*Math.PI,i=Ns()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function Kv(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function $v(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function Xv(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=r*c-a*l,m=a*o-i*c,d=i*l-r*o;return u=u+u,m=m+m,d=d+d,e[0]=o+s*u+r*d-a*m,e[1]=l+s*m+a*u-i*d,e[2]=c+s*d+i*m-r*u,e}function Yv(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function qv(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Zv(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function jv(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=l&&Os(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function Jv(e){return e[0]=0,e[1]=0,e[2]=0,e}function Qv(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function ep(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function tp(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=de*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=de*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=de*Math.max(1,Math.abs(r),Math.abs(o))}var np=yu,ip=wu,rp=Au,ap=Su,sp=Eu,op=pu,cp=bu,lp=(function(){var e=vu();return function(t,n,i,r,a,s){var o,l;for(n||(n=3),i||(i=0),r?l=Math.min(r*n+i,t.length):l=t.length,o=i;o<l;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var up=Object.defineProperty,fd=(e,t)=>{for(var n in t)up(e,n,{get:t[n],enumerable:!0})};var aC=Math.PI/180;var dp=Math.PI/180,sC=180/Math.PI,yi=dp,Zs=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var ft=1,Ht=2;var co=8,lo=16,mp=32;var fp=16384;var Xr=65536,hd=1<<17,hp=1<<18,_p=1<<19,gp=1<<20,vp=1<<21,pp=1<<22,yp=1<<23,oC=1<<24,Yr=1<<25,wp=1<<26,cC=1<<27,lC=1<<28,uC=1<<29,qr=1<<30,dC=1<<31;var mC=1<<25,fC=1<<28,hC=1<<29,_C=1<<30,gC=1<<31,vC=ft|Ht,pC=ft|Xr|Ht|Yr|qr,yC=ft|Xr|Ht,wC=ft|hd|Ht|Yr|qr,AC=mp|co|lo,SC=ft|lo|co,Ap=ft|Yr|qr|Ht|wp,EC=hp|_p|gp|vp|pp|yp,bC=ft|co|lo|Yr|qr,kC=ft|Xr|Ht,xC=ft|Ht,TC=ft|Xr|Ht|hd,MC=Ap|fp,RC=Number.MAX_SAFE_INTEGER-1;var _d=256,Sp=256,Ep=8192,bp=2048,kp=512,xp=256,Tp=_d*2,Mp=256,Is=32;var gd=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+Ep]="Sounds",e[e.Images=e.Sounds+bp]="Images",e[e.Lights=e.Images+kp]="Lights",e[e.ShadowLights=e.Lights+Sp]="ShadowLights",e[e.Items=e.ShadowLights+Mp]="Items",e[e.PlayerSkins=e.Items+xp]="PlayerSkins",e[e.General=e.PlayerSkins+_d]="General",e[e.WheelWeapons=e.General+Tp]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Is]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Is]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Is]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(gd||{}),LC=gd.MaxConfigStrings;var Rp={};fd(Rp,{addReplayFrame:()=>Op,createReplaySession:()=>Np,deserializeReplay:()=>zp,serializeReplay:()=>Lp});function Lp(e){return JSON.stringify(e,null,2)}function zp(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function Np(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Op(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var Q=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(Q||{}),H=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(H||{}),Ip=12,Cp=9,zC=Math.ceil(Ip*Cp/16),Pp=23,Fp=2,NC=Math.ceil(Pp*Fp/16),Dp={};fd(Dp,{U_ANGLE1:()=>Kp,U_ANGLE2:()=>$p,U_ANGLE3:()=>Xp,U_EFFECTS:()=>Zp,U_EVENT:()=>Qp,U_FRAME:()=>Yp,U_MODEL:()=>Bp,U_MODEL2:()=>ty,U_MODEL3:()=>ny,U_MODEL4:()=>iy,U_MOREBITS:()=>ey,U_NUMBER:()=>Up,U_ORIGIN1:()=>Hp,U_ORIGIN2:()=>Vp,U_ORIGIN3:()=>Wp,U_REMOVE:()=>ry,U_RENDERFX:()=>jp,U_SKIN:()=>qp,U_SOLID:()=>Jp,U_SOUND:()=>Gp});var Up=1,Bp=2,Gp=4,Hp=8,Vp=16,Wp=32,Kp=64,$p=128,Xp=256,Yp=512,qp=1024,Zp=2048,jp=4096,Jp=8192,Qp=16384,ey=32768,ty=1,ny=2,iy=4,ry=32768,js=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=Zs[t];e.x=n[0],e.y=n[1],e.z=n[2]}},ay=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<Zs.length;i++){let r=Zs[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},In=class Ne{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new ay(Ne.MAX_RELIABLE_BUFFER);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=0,i=!1,r=0;this.reliableLength>0&&(this.reliableLength>Ne.FRAGMENT_SIZE?(i=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),n=this.reliableLength-this.fragmentSendOffset,n>Ne.FRAGMENT_SIZE&&(n=Ne.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=n):n=this.reliableLength);let a=Ne.PACKET_HEADER,s=n>0?2+(i?8:0):0,o=t?t.length:0;a+s+n+o>Ne.MAX_MSGLEN&&(o=Ne.MAX_MSGLEN-a-s-n,o<0&&(o=0));let l=new ArrayBuffer(a+s+n+o),c=new DataView(l),u=new Uint8Array(l),m=this.outgoingSequence;n>0&&(m|=2147483648,(this.outgoingReliableSequence&1)!==0&&(m|=1073741824)),c.setUint32(0,m,!0);let d=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(d|=2147483648),c.setUint32(4,d,!0),c.setUint16(8,this.qport,!0);let f=a;if(n>0){let _=n;i&&(_|=32768),c.setUint16(f,_,!0),f+=2,i&&(c.setUint32(f,r,!0),f+=4,c.setUint32(f,this.reliableLength,!0),f+=4);let v=this.reliableMessage.getBuffer().subarray(r,r+n);u.set(v,f),f+=n}if(t&&o>0){let _=t.slice(0,o);u.set(_,f)}return u}process(t){if(t.length<Ne.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,l=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let _=l?1:0,p=this.outgoingReliableSequence&1;_!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}let c=(i&2147483648)!==0,u=(i&1073741824)!==0?1:0,m=Ne.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let _=n.getUint16(m,!0);m+=2;let p=(_&32768)!==0;_&=32767;let v=this.incomingReliableSequence&1;if(u===v)if(p){if(m+8>t.byteLength)return null;let y=n.getUint32(m,!0);m+=4;let S=n.getUint32(m,!0);if(m+=4,S>Ne.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${S} > ${Ne.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==S)&&(this.fragmentBuffer=new Uint8Array(S),this.fragmentLength=S,this.fragmentReceived=0),m+_>t.byteLength)return null;let E=t.subarray(m,m+_);y===this.fragmentReceived&&y+_<=S&&(this.fragmentBuffer.set(E,y),this.fragmentReceived+=_,this.fragmentReceived>=S&&(d=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,m+_>t.byteLength)return null;d=t.slice(m,m+_)}m+=_}let f=t.slice(m);if(d&&d.length>0){let _=d.length+f.length,p=new Uint8Array(_);return p.set(d,0),p.set(f,d.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Ne.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Ne.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Ne.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>Ne.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}};In.MAX_MSGLEN=1400;In.FRAGMENT_SIZE=1024;In.PACKET_HEADER=10;In.HEADER_OVERHEAD=In.PACKET_HEADER+2;In.MAX_RELIABLE_BUFFER=262144;var vd=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(vd||{}),OC=Object.keys(vd).length/2;function sy(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let i=0;i<8;i+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var IC=sy();var CC=Object.freeze([{name:"pak0.pak",checksum:2378051181,description:"Base game assets"},{name:"pak0.pak@baseq2",checksum:2378051181,description:"Base game assets (baseq2)"},{name:"pak0.pak@rogue",checksum:3373211245,description:"Ground Zero (rogue) mission pack"},{name:"pak0.pak@xatrix",checksum:1358269824,description:"The Reckoning (xatrix) mission pack"}]);var oy=19,PC=8+oy*8;var Js=4,Cs=7*Js,FC=[{index:0,size:3,type:5126,stride:Cs,offset:0},{index:1,size:2,type:5126,stride:Cs,offset:3*Js},{index:2,size:2,type:5126,stride:Cs,offset:5*Js}];var pd=32;var DC=`#version 300 es
|
|
1
|
+
"use strict";var Quake2Client=(()=>{var so=Object.defineProperty;var Xv=Object.getOwnPropertyDescriptor;var Yv=Object.getOwnPropertyNames;var qv=Object.prototype.hasOwnProperty;var oo=(e,t)=>{for(var n in t)so(e,n,{get:t[n],enumerable:!0})},Zv=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Yv(t))!qv.call(e,r)&&r!==n&&so(e,r,{get:()=>t[r],enumerable:!(i=Xv(t,r))||i.enumerable});return e};var jv=e=>Zv(so({},"__esModule",{value:!0}),e);var JP={};oo(JP,{ClientConfigStrings:()=>Ii,ClientMode:()=>Vv,ClientPrediction:()=>za,InputAction:()=>io,InputBindings:()=>Vn,InputCommandBuffer:()=>ro,InputController:()=>Ci,ViewEffects:()=>Ra,createClient:()=>jP,createDefaultBindings:()=>Hv,interpolatePredictionState:()=>Ln,normalizeCommand:()=>Kr,normalizeInputCode:()=>Kd});var ge=1e-6,ct=typeof Float32Array<"u"?Float32Array:Array,co=Math.random;function Xr(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var eF=Math.PI/180,tF=180/Math.PI;var ve={};oo(ve,{add:()=>Pp,adjoint:()=>ap,clone:()=>Qv,copy:()=>ep,create:()=>Jv,decompose:()=>Sp,determinant:()=>sp,equals:()=>Bp,exactEquals:()=>Up,frob:()=>Cp,fromQuat:()=>bp,fromQuat2:()=>yp,fromRotation:()=>_p,fromRotationTranslation:()=>Zd,fromRotationTranslationScale:()=>kp,fromRotationTranslationScaleOrigin:()=>Ep,fromScaling:()=>hp,fromTranslation:()=>fp,fromValues:()=>tp,fromXRotation:()=>gp,fromYRotation:()=>vp,fromZRotation:()=>pp,frustum:()=>xp,getRotation:()=>Ap,getScaling:()=>jd,getTranslation:()=>wp,identity:()=>Yd,invert:()=>rp,lookAt:()=>Np,mul:()=>Gp,multiply:()=>qd,multiplyScalar:()=>Fp,multiplyScalarAndAdd:()=>Dp,ortho:()=>zp,orthoNO:()=>Qd,orthoZO:()=>Lp,perspective:()=>Mp,perspectiveFromFieldOfView:()=>Rp,perspectiveNO:()=>Jd,perspectiveZO:()=>Tp,rotate:()=>up,rotateX:()=>dp,rotateY:()=>lp,rotateZ:()=>mp,scale:()=>cp,set:()=>np,str:()=>Ip,sub:()=>Hp,subtract:()=>el,targetTo:()=>Op,translate:()=>op,transpose:()=>ip});function Jv(){var e=new ct(16);return ct!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Qv(e){var t=new ct(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function ep(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function tp(e,t,n,i,r,a,s,o,u,c,d,m,l,f,_,p){var v=new ct(16);return v[0]=e,v[1]=t,v[2]=n,v[3]=i,v[4]=r,v[5]=a,v[6]=s,v[7]=o,v[8]=u,v[9]=c,v[10]=d,v[11]=m,v[12]=l,v[13]=f,v[14]=_,v[15]=p,v}function np(e,t,n,i,r,a,s,o,u,c,d,m,l,f,_,p,v){return e[0]=t,e[1]=n,e[2]=i,e[3]=r,e[4]=a,e[5]=s,e[6]=o,e[7]=u,e[8]=c,e[9]=d,e[10]=m,e[11]=l,e[12]=f,e[13]=_,e[14]=p,e[15]=v,e}function Yd(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function ip(e,t){if(e===t){var n=t[1],i=t[2],r=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=i,e[9]=a,e[11]=t[14],e[12]=r,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function rp(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],u=t[6],c=t[7],d=t[8],m=t[9],l=t[10],f=t[11],_=t[12],p=t[13],v=t[14],y=t[15],S=n*o-i*s,k=n*u-r*s,w=n*c-a*s,b=i*u-r*o,T=i*c-a*o,x=r*c-a*u,N=d*p-m*_,O=d*v-l*_,A=d*y-f*_,P=m*v-l*p,W=m*y-f*p,ie=l*y-f*v,ee=S*ie-k*W+w*P+b*A-T*O+x*N;return ee?(ee=1/ee,e[0]=(o*ie-u*W+c*P)*ee,e[1]=(r*W-i*ie-a*P)*ee,e[2]=(p*x-v*T+y*b)*ee,e[3]=(l*T-m*x-f*b)*ee,e[4]=(u*A-s*ie-c*O)*ee,e[5]=(n*ie-r*A+a*O)*ee,e[6]=(v*w-_*x-y*k)*ee,e[7]=(d*x-l*w+f*k)*ee,e[8]=(s*W-o*A+c*N)*ee,e[9]=(i*A-n*W-a*N)*ee,e[10]=(_*T-p*w+y*S)*ee,e[11]=(m*w-d*T-f*S)*ee,e[12]=(o*O-s*P-u*N)*ee,e[13]=(n*P-i*O+r*N)*ee,e[14]=(p*k-_*b-v*S)*ee,e[15]=(d*b-m*k+l*S)*ee,e):null}function ap(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],u=t[6],c=t[7],d=t[8],m=t[9],l=t[10],f=t[11],_=t[12],p=t[13],v=t[14],y=t[15],S=n*o-i*s,k=n*u-r*s,w=n*c-a*s,b=i*u-r*o,T=i*c-a*o,x=r*c-a*u,N=d*p-m*_,O=d*v-l*_,A=d*y-f*_,P=m*v-l*p,W=m*y-f*p,ie=l*y-f*v;return e[0]=o*ie-u*W+c*P,e[1]=r*W-i*ie-a*P,e[2]=p*x-v*T+y*b,e[3]=l*T-m*x-f*b,e[4]=u*A-s*ie-c*O,e[5]=n*ie-r*A+a*O,e[6]=v*w-_*x-y*k,e[7]=d*x-l*w+f*k,e[8]=s*W-o*A+c*N,e[9]=i*A-n*W-a*N,e[10]=_*T-p*w+y*S,e[11]=m*w-d*T-f*S,e[12]=o*O-s*P-u*N,e[13]=n*P-i*O+r*N,e[14]=p*k-_*b-v*S,e[15]=d*b-m*k+l*S,e}function sp(e){var t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],u=e[7],c=e[8],d=e[9],m=e[10],l=e[11],f=e[12],_=e[13],p=e[14],v=e[15],y=t*s-n*a,S=t*o-i*a,k=n*o-i*s,w=c*_-d*f,b=c*p-m*f,T=d*p-m*_,x=t*T-n*b+i*w,N=a*T-s*b+o*w,O=c*k-d*S+m*y,A=f*k-_*S+p*y;return u*x-r*N+v*O-l*A}function qd(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=t[4],u=t[5],c=t[6],d=t[7],m=t[8],l=t[9],f=t[10],_=t[11],p=t[12],v=t[13],y=t[14],S=t[15],k=n[0],w=n[1],b=n[2],T=n[3];return e[0]=k*i+w*o+b*m+T*p,e[1]=k*r+w*u+b*l+T*v,e[2]=k*a+w*c+b*f+T*y,e[3]=k*s+w*d+b*_+T*S,k=n[4],w=n[5],b=n[6],T=n[7],e[4]=k*i+w*o+b*m+T*p,e[5]=k*r+w*u+b*l+T*v,e[6]=k*a+w*c+b*f+T*y,e[7]=k*s+w*d+b*_+T*S,k=n[8],w=n[9],b=n[10],T=n[11],e[8]=k*i+w*o+b*m+T*p,e[9]=k*r+w*u+b*l+T*v,e[10]=k*a+w*c+b*f+T*y,e[11]=k*s+w*d+b*_+T*S,k=n[12],w=n[13],b=n[14],T=n[15],e[12]=k*i+w*o+b*m+T*p,e[13]=k*r+w*u+b*l+T*v,e[14]=k*a+w*c+b*f+T*y,e[15]=k*s+w*d+b*_+T*S,e}function op(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,u,c,d,m,l,f,_,p,v,y;return t===e?(e[12]=t[0]*i+t[4]*r+t[8]*a+t[12],e[13]=t[1]*i+t[5]*r+t[9]*a+t[13],e[14]=t[2]*i+t[6]*r+t[10]*a+t[14],e[15]=t[3]*i+t[7]*r+t[11]*a+t[15]):(s=t[0],o=t[1],u=t[2],c=t[3],d=t[4],m=t[5],l=t[6],f=t[7],_=t[8],p=t[9],v=t[10],y=t[11],e[0]=s,e[1]=o,e[2]=u,e[3]=c,e[4]=d,e[5]=m,e[6]=l,e[7]=f,e[8]=_,e[9]=p,e[10]=v,e[11]=y,e[12]=s*i+d*r+_*a+t[12],e[13]=o*i+m*r+p*a+t[13],e[14]=u*i+l*r+v*a+t[14],e[15]=c*i+f*r+y*a+t[15]),e}function cp(e,t,n){var i=n[0],r=n[1],a=n[2];return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function up(e,t,n,i){var r=i[0],a=i[1],s=i[2],o=Math.sqrt(r*r+a*a+s*s),u,c,d,m,l,f,_,p,v,y,S,k,w,b,T,x,N,O,A,P,W,ie,ee,De;return o<ge?null:(o=1/o,r*=o,a*=o,s*=o,u=Math.sin(n),c=Math.cos(n),d=1-c,m=t[0],l=t[1],f=t[2],_=t[3],p=t[4],v=t[5],y=t[6],S=t[7],k=t[8],w=t[9],b=t[10],T=t[11],x=r*r*d+c,N=a*r*d+s*u,O=s*r*d-a*u,A=r*a*d-s*u,P=a*a*d+c,W=s*a*d+r*u,ie=r*s*d+a*u,ee=a*s*d-r*u,De=s*s*d+c,e[0]=m*x+p*N+k*O,e[1]=l*x+v*N+w*O,e[2]=f*x+y*N+b*O,e[3]=_*x+S*N+T*O,e[4]=m*A+p*P+k*W,e[5]=l*A+v*P+w*W,e[6]=f*A+y*P+b*W,e[7]=_*A+S*P+T*W,e[8]=m*ie+p*ee+k*De,e[9]=l*ie+v*ee+w*De,e[10]=f*ie+y*ee+b*De,e[11]=_*ie+S*ee+T*De,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function dp(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[4],s=t[5],o=t[6],u=t[7],c=t[8],d=t[9],m=t[10],l=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*r+c*i,e[5]=s*r+d*i,e[6]=o*r+m*i,e[7]=u*r+l*i,e[8]=c*r-a*i,e[9]=d*r-s*i,e[10]=m*r-o*i,e[11]=l*r-u*i,e}function lp(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],u=t[3],c=t[8],d=t[9],m=t[10],l=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r-c*i,e[1]=s*r-d*i,e[2]=o*r-m*i,e[3]=u*r-l*i,e[8]=a*i+c*r,e[9]=s*i+d*r,e[10]=o*i+m*r,e[11]=u*i+l*r,e}function mp(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],u=t[3],c=t[4],d=t[5],m=t[6],l=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r+c*i,e[1]=s*r+d*i,e[2]=o*r+m*i,e[3]=u*r+l*i,e[4]=c*r-a*i,e[5]=d*r-s*i,e[6]=m*r-o*i,e[7]=l*r-u*i,e}function fp(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function hp(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function _p(e,t,n){var i=n[0],r=n[1],a=n[2],s=Math.sqrt(i*i+r*r+a*a),o,u,c;return s<ge?null:(s=1/s,i*=s,r*=s,a*=s,o=Math.sin(t),u=Math.cos(t),c=1-u,e[0]=i*i*c+u,e[1]=r*i*c+a*o,e[2]=a*i*c-r*o,e[3]=0,e[4]=i*r*c-a*o,e[5]=r*r*c+u,e[6]=a*r*c+i*o,e[7]=0,e[8]=i*a*c+r*o,e[9]=r*a*c-i*o,e[10]=a*a*c+u,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function gp(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function vp(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=0,e[2]=-n,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=n,e[9]=0,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function pp(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Zd(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=i+i,u=r+r,c=a+a,d=i*o,m=i*u,l=i*c,f=r*u,_=r*c,p=a*c,v=s*o,y=s*u,S=s*c;return e[0]=1-(f+p),e[1]=m+S,e[2]=l-y,e[3]=0,e[4]=m-S,e[5]=1-(d+p),e[6]=_+v,e[7]=0,e[8]=l+y,e[9]=_-v,e[10]=1-(d+f),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function yp(e,t){var n=new ct(3),i=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],u=t[5],c=t[6],d=t[7],m=i*i+r*r+a*a+s*s;return m>0?(n[0]=(o*s+d*i+u*a-c*r)*2/m,n[1]=(u*s+d*r+c*i-o*a)*2/m,n[2]=(c*s+d*a+o*r-u*i)*2/m):(n[0]=(o*s+d*i+u*a-c*r)*2,n[1]=(u*s+d*r+c*i-o*a)*2,n[2]=(c*s+d*a+o*r-u*i)*2),Zd(e,t,n),e}function wp(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function jd(e,t){var n=t[0],i=t[1],r=t[2],a=t[4],s=t[5],o=t[6],u=t[8],c=t[9],d=t[10];return e[0]=Math.sqrt(n*n+i*i+r*r),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(u*u+c*c+d*d),e}function Ap(e,t){var n=new ct(3);jd(n,t);var i=1/n[0],r=1/n[1],a=1/n[2],s=t[0]*i,o=t[1]*r,u=t[2]*a,c=t[4]*i,d=t[5]*r,m=t[6]*a,l=t[8]*i,f=t[9]*r,_=t[10]*a,p=s+d+_,v=0;return p>0?(v=Math.sqrt(p+1)*2,e[3]=.25*v,e[0]=(m-f)/v,e[1]=(l-u)/v,e[2]=(o-c)/v):s>d&&s>_?(v=Math.sqrt(1+s-d-_)*2,e[3]=(m-f)/v,e[0]=.25*v,e[1]=(o+c)/v,e[2]=(l+u)/v):d>_?(v=Math.sqrt(1+d-s-_)*2,e[3]=(l-u)/v,e[0]=(o+c)/v,e[1]=.25*v,e[2]=(m+f)/v):(v=Math.sqrt(1+_-s-d)*2,e[3]=(o-c)/v,e[0]=(l+u)/v,e[1]=(m+f)/v,e[2]=.25*v),e}function Sp(e,t,n,i){t[0]=i[12],t[1]=i[13],t[2]=i[14];var r=i[0],a=i[1],s=i[2],o=i[4],u=i[5],c=i[6],d=i[8],m=i[9],l=i[10];n[0]=Math.sqrt(r*r+a*a+s*s),n[1]=Math.sqrt(o*o+u*u+c*c),n[2]=Math.sqrt(d*d+m*m+l*l);var f=1/n[0],_=1/n[1],p=1/n[2],v=r*f,y=a*_,S=s*p,k=o*f,w=u*_,b=c*p,T=d*f,x=m*_,N=l*p,O=v+w+N,A=0;return O>0?(A=Math.sqrt(O+1)*2,e[3]=.25*A,e[0]=(b-x)/A,e[1]=(T-S)/A,e[2]=(y-k)/A):v>w&&v>N?(A=Math.sqrt(1+v-w-N)*2,e[3]=(b-x)/A,e[0]=.25*A,e[1]=(y+k)/A,e[2]=(T+S)/A):w>N?(A=Math.sqrt(1+w-v-N)*2,e[3]=(T-S)/A,e[0]=(y+k)/A,e[1]=.25*A,e[2]=(b+x)/A):(A=Math.sqrt(1+N-v-w)*2,e[3]=(y-k)/A,e[0]=(T+S)/A,e[1]=(b+x)/A,e[2]=.25*A),e}function kp(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=t[3],u=r+r,c=a+a,d=s+s,m=r*u,l=r*c,f=r*d,_=a*c,p=a*d,v=s*d,y=o*u,S=o*c,k=o*d,w=i[0],b=i[1],T=i[2];return e[0]=(1-(_+v))*w,e[1]=(l+k)*w,e[2]=(f-S)*w,e[3]=0,e[4]=(l-k)*b,e[5]=(1-(m+v))*b,e[6]=(p+y)*b,e[7]=0,e[8]=(f+S)*T,e[9]=(p-y)*T,e[10]=(1-(m+_))*T,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Ep(e,t,n,i,r){var a=t[0],s=t[1],o=t[2],u=t[3],c=a+a,d=s+s,m=o+o,l=a*c,f=a*d,_=a*m,p=s*d,v=s*m,y=o*m,S=u*c,k=u*d,w=u*m,b=i[0],T=i[1],x=i[2],N=r[0],O=r[1],A=r[2],P=(1-(p+y))*b,W=(f+w)*b,ie=(_-k)*b,ee=(f-w)*T,De=(1-(l+y))*T,R=(v+S)*T,V=(_+k)*x,oe=(v-S)*x,Ct=(1-(l+p))*x;return e[0]=P,e[1]=W,e[2]=ie,e[3]=0,e[4]=ee,e[5]=De,e[6]=R,e[7]=0,e[8]=V,e[9]=oe,e[10]=Ct,e[11]=0,e[12]=n[0]+N-(P*N+ee*O+V*A),e[13]=n[1]+O-(W*N+De*O+oe*A),e[14]=n[2]+A-(ie*N+R*O+Ct*A),e[15]=1,e}function bp(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=n+n,o=i+i,u=r+r,c=n*s,d=i*s,m=i*o,l=r*s,f=r*o,_=r*u,p=a*s,v=a*o,y=a*u;return e[0]=1-m-_,e[1]=d+y,e[2]=l-v,e[3]=0,e[4]=d-y,e[5]=1-c-_,e[6]=f+p,e[7]=0,e[8]=l+v,e[9]=f-p,e[10]=1-c-m,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function xp(e,t,n,i,r,a,s){var o=1/(n-t),u=1/(r-i),c=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*u,e[6]=0,e[7]=0,e[8]=(n+t)*o,e[9]=(r+i)*u,e[10]=(s+a)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*c,e[15]=0,e}function Jd(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(i-r);e[10]=(r+i)*s,e[14]=2*r*i*s}else e[10]=-1,e[14]=-2*i;return e}var Mp=Jd;function Tp(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(i-r);e[10]=r*s,e[14]=r*i*s}else e[10]=-1,e[14]=-i;return e}function Rp(e,t,n,i){var r=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),u=2/(s+o),c=2/(r+a);return e[0]=u,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=-((s-o)*u*.5),e[9]=(r-a)*c*.5,e[10]=i/(n-i),e[11]=-1,e[12]=0,e[13]=0,e[14]=i*n/(n-i),e[15]=0,e}function Qd(e,t,n,i,r,a,s){var o=1/(t-n),u=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*u,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*u,e[14]=(s+a)*c,e[15]=1,e}var zp=Qd;function Lp(e,t,n,i,r,a,s){var o=1/(t-n),u=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*u,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*u,e[14]=a*c,e[15]=1,e}function Np(e,t,n,i){var r,a,s,o,u,c,d,m,l,f,_=t[0],p=t[1],v=t[2],y=i[0],S=i[1],k=i[2],w=n[0],b=n[1],T=n[2];return Math.abs(_-w)<ge&&Math.abs(p-b)<ge&&Math.abs(v-T)<ge?Yd(e):(d=_-w,m=p-b,l=v-T,f=1/Math.sqrt(d*d+m*m+l*l),d*=f,m*=f,l*=f,r=S*l-k*m,a=k*d-y*l,s=y*m-S*d,f=Math.sqrt(r*r+a*a+s*s),f?(f=1/f,r*=f,a*=f,s*=f):(r=0,a=0,s=0),o=m*s-l*a,u=l*r-d*s,c=d*a-m*r,f=Math.sqrt(o*o+u*u+c*c),f?(f=1/f,o*=f,u*=f,c*=f):(o=0,u=0,c=0),e[0]=r,e[1]=o,e[2]=d,e[3]=0,e[4]=a,e[5]=u,e[6]=m,e[7]=0,e[8]=s,e[9]=c,e[10]=l,e[11]=0,e[12]=-(r*_+a*p+s*v),e[13]=-(o*_+u*p+c*v),e[14]=-(d*_+m*p+l*v),e[15]=1,e)}function Op(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=i[0],u=i[1],c=i[2],d=r-n[0],m=a-n[1],l=s-n[2],f=d*d+m*m+l*l;f>0&&(f=1/Math.sqrt(f),d*=f,m*=f,l*=f);var _=u*l-c*m,p=c*d-o*l,v=o*m-u*d;return f=_*_+p*p+v*v,f>0&&(f=1/Math.sqrt(f),_*=f,p*=f,v*=f),e[0]=_,e[1]=p,e[2]=v,e[3]=0,e[4]=m*v-l*p,e[5]=l*_-d*v,e[6]=d*p-m*_,e[7]=0,e[8]=d,e[9]=m,e[10]=l,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function Ip(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function Cp(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function Pp(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e[9]=t[9]+n[9],e[10]=t[10]+n[10],e[11]=t[11]+n[11],e[12]=t[12]+n[12],e[13]=t[13]+n[13],e[14]=t[14]+n[14],e[15]=t[15]+n[15],e}function el(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e[9]=t[9]-n[9],e[10]=t[10]-n[10],e[11]=t[11]-n[11],e[12]=t[12]-n[12],e[13]=t[13]-n[13],e[14]=t[14]-n[14],e[15]=t[15]-n[15],e}function Fp(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12]*n,e[13]=t[13]*n,e[14]=t[14]*n,e[15]=t[15]*n,e}function Dp(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e[3]=t[3]+n[3]*i,e[4]=t[4]+n[4]*i,e[5]=t[5]+n[5]*i,e[6]=t[6]+n[6]*i,e[7]=t[7]+n[7]*i,e[8]=t[8]+n[8]*i,e[9]=t[9]+n[9]*i,e[10]=t[10]+n[10]*i,e[11]=t[11]+n[11]*i,e[12]=t[12]+n[12]*i,e[13]=t[13]+n[13]*i,e[14]=t[14]+n[14]*i,e[15]=t[15]+n[15]*i,e}function Up(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function Bp(e,t){var n=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],u=e[6],c=e[7],d=e[8],m=e[9],l=e[10],f=e[11],_=e[12],p=e[13],v=e[14],y=e[15],S=t[0],k=t[1],w=t[2],b=t[3],T=t[4],x=t[5],N=t[6],O=t[7],A=t[8],P=t[9],W=t[10],ie=t[11],ee=t[12],De=t[13],R=t[14],V=t[15];return Math.abs(n-S)<=ge*Math.max(1,Math.abs(n),Math.abs(S))&&Math.abs(i-k)<=ge*Math.max(1,Math.abs(i),Math.abs(k))&&Math.abs(r-w)<=ge*Math.max(1,Math.abs(r),Math.abs(w))&&Math.abs(a-b)<=ge*Math.max(1,Math.abs(a),Math.abs(b))&&Math.abs(s-T)<=ge*Math.max(1,Math.abs(s),Math.abs(T))&&Math.abs(o-x)<=ge*Math.max(1,Math.abs(o),Math.abs(x))&&Math.abs(u-N)<=ge*Math.max(1,Math.abs(u),Math.abs(N))&&Math.abs(c-O)<=ge*Math.max(1,Math.abs(c),Math.abs(O))&&Math.abs(d-A)<=ge*Math.max(1,Math.abs(d),Math.abs(A))&&Math.abs(m-P)<=ge*Math.max(1,Math.abs(m),Math.abs(P))&&Math.abs(l-W)<=ge*Math.max(1,Math.abs(l),Math.abs(W))&&Math.abs(f-ie)<=ge*Math.max(1,Math.abs(f),Math.abs(ie))&&Math.abs(_-ee)<=ge*Math.max(1,Math.abs(_),Math.abs(ee))&&Math.abs(p-De)<=ge*Math.max(1,Math.abs(p),Math.abs(De))&&Math.abs(v-R)<=ge*Math.max(1,Math.abs(v),Math.abs(R))&&Math.abs(y-V)<=ge*Math.max(1,Math.abs(y),Math.abs(V))}var Gp=qd,Hp=el;var ye={};oo(ye,{add:()=>Xp,angle:()=>gy,bezier:()=>cy,ceil:()=>Yp,clone:()=>Vp,copy:()=>Kp,create:()=>tl,cross:()=>ry,dist:()=>Ey,distance:()=>sl,div:()=>ky,divide:()=>al,dot:()=>uo,equals:()=>wy,exactEquals:()=>yy,floor:()=>qp,forEach:()=>Ty,fromValues:()=>Wp,hermite:()=>oy,inverse:()=>ny,len:()=>xy,length:()=>nl,lerp:()=>ay,max:()=>jp,min:()=>Zp,mul:()=>Sy,multiply:()=>rl,negate:()=>ty,normalize:()=>iy,random:()=>uy,rotateX:()=>fy,rotateY:()=>hy,rotateZ:()=>_y,round:()=>Jp,scale:()=>Qp,scaleAndAdd:()=>ey,set:()=>$p,slerp:()=>sy,sqrDist:()=>by,sqrLen:()=>My,squaredDistance:()=>ol,squaredLength:()=>cl,str:()=>py,sub:()=>Ay,subtract:()=>il,transformMat3:()=>ly,transformMat4:()=>dy,transformQuat:()=>my,zero:()=>vy});function tl(){var e=new ct(3);return ct!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Vp(e){var t=new ct(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function nl(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function Wp(e,t,n){var i=new ct(3);return i[0]=e,i[1]=t,i[2]=n,i}function Kp(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function $p(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function Xp(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function il(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function rl(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function al(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function Yp(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function qp(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Zp(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function jp(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function Jp(e,t){return e[0]=Xr(t[0]),e[1]=Xr(t[1]),e[2]=Xr(t[2]),e}function Qp(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function ey(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function sl(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function ol(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function cl(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function ty(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function ny(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function iy(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function uo(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function ry(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],u=n[2];return e[0]=r*u-a*o,e[1]=a*s-i*u,e[2]=i*o-r*s,e}function ay(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function sy(e,t,n,i){var r=Math.acos(Math.min(Math.max(uo(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function oy(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,u=s*(a-2)+a,c=s*(a-1),d=s*(3-2*a);return e[0]=t[0]*o+n[0]*u+i[0]*c+r[0]*d,e[1]=t[1]*o+n[1]*u+i[1]*c+r[1]*d,e[2]=t[2]*o+n[2]*u+i[2]*c+r[2]*d,e}function cy(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,d=3*a*o,m=3*u*s,l=u*a;return e[0]=t[0]*c+n[0]*d+i[0]*m+r[0]*l,e[1]=t[1]*c+n[1]*d+i[1]*m+r[1]*l,e[2]=t[2]*c+n[2]*d+i[2]*m+r[2]*l,e}function uy(e,t){t=t===void 0?1:t;var n=co()*2*Math.PI,i=co()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function dy(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function ly(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function my(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],u=t[1],c=t[2],d=r*c-a*u,m=a*o-i*c,l=i*u-r*o;return d=d+d,m=m+m,l=l+l,e[0]=o+s*d+r*l-a*m,e[1]=u+s*m+a*d-i*l,e[2]=c+s*l+i*m-r*d,e}function fy(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function hy(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function _y(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function gy(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],u=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=u&&uo(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function vy(e){return e[0]=0,e[1]=0,e[2]=0,e}function py(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function yy(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function wy(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=ge*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=ge*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=ge*Math.max(1,Math.abs(r),Math.abs(o))}var Ay=il,Sy=rl,ky=al,Ey=sl,by=ol,xy=nl,My=cl,Ty=(function(){var e=tl();return function(t,n,i,r,a,s){var o,u;for(n||(n=3),i||(i=0),r?u=Math.min(r*n+i,t.length):u=t.length,o=i;o<u;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var Ry=Object.defineProperty,jl=(e,t)=>{for(var n in t)Ry(e,n,{get:t[n],enumerable:!0})};var iF=Math.PI/180;var zy=Math.PI/180,rF=180/Math.PI,Pi=zy,Mo=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var xt=1,tn=2;var Uo=8,Bo=16,Ly=32;var Ny=16384;var da=65536,Jl=1<<17,Oy=1<<18,Iy=1<<19,Cy=1<<20,Py=1<<21,Fy=1<<22,Dy=1<<23,aF=1<<24,la=1<<25,Uy=1<<26,sF=1<<27,oF=1<<28,cF=1<<29,ma=1<<30,uF=1<<31;var dF=1<<25,lF=1<<28,mF=1<<29,fF=1<<30,hF=1<<31,_F=xt|tn,gF=xt|da|tn|la|ma,vF=xt|da|tn,pF=xt|Jl|tn|la|ma,yF=Ly|Uo|Bo,wF=xt|Bo|Uo,By=xt|la|ma|tn|Uy,AF=Oy|Iy|Cy|Py|Fy|Dy,SF=xt|Uo|Bo|la|ma,kF=xt|da|tn,EF=xt|tn,bF=xt|da|tn|Jl,xF=By|Ny,MF=Number.MAX_SAFE_INTEGER-1;var Ql=256,Gy=256,Hy=8192,Vy=2048,Wy=512,Ky=256,$y=Ql*2,Xy=256,lo=32;var em=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+Hy]="Sounds",e[e.Images=e.Sounds+Vy]="Images",e[e.Lights=e.Images+Wy]="Lights",e[e.ShadowLights=e.Lights+Gy]="ShadowLights",e[e.Items=e.ShadowLights+Xy]="Items",e[e.PlayerSkins=e.Items+Ky]="PlayerSkins",e[e.General=e.PlayerSkins+Ql]="General",e[e.WheelWeapons=e.General+$y]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+lo]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+lo]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+lo]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(em||{}),TF=em.MaxConfigStrings;var Yy={};jl(Yy,{addReplayFrame:()=>Jy,createReplaySession:()=>jy,deserializeReplay:()=>Zy,serializeReplay:()=>qy});function qy(e){return JSON.stringify(e,null,2)}function Zy(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function jy(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Jy(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var te=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(te||{}),K=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(K||{}),Qy=12,ew=9,RF=Math.ceil(Qy*ew/16),tw=23,nw=2,zF=Math.ceil(tw*nw/16),iw={};jl(iw,{U_ANGLE1:()=>dw,U_ANGLE2:()=>lw,U_ANGLE3:()=>mw,U_EFFECTS:()=>_w,U_EVENT:()=>pw,U_FRAME:()=>fw,U_MODEL:()=>aw,U_MODEL2:()=>ww,U_MODEL3:()=>Aw,U_MODEL4:()=>Sw,U_MOREBITS:()=>yw,U_NUMBER:()=>rw,U_ORIGIN1:()=>ow,U_ORIGIN2:()=>cw,U_ORIGIN3:()=>uw,U_REMOVE:()=>kw,U_RENDERFX:()=>gw,U_SKIN:()=>hw,U_SOLID:()=>vw,U_SOUND:()=>sw});var rw=1,aw=2,sw=4,ow=8,cw=16,uw=32,dw=64,lw=128,mw=256,fw=512,hw=1024,_w=2048,gw=4096,vw=8192,pw=16384,yw=32768,ww=1,Aw=2,Sw=4,kw=32768,To=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=Mo[t];e.x=n[0],e.y=n[1],e.z=n[2]}},Ew=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<Mo.length;i++){let r=Mo[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},qn=class He{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new Ew(He.MAX_RELIABLE_BUFFER);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=0,i=!1,r=0;this.reliableLength>0&&(this.reliableLength>He.FRAGMENT_SIZE?(i=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),n=this.reliableLength-this.fragmentSendOffset,n>He.FRAGMENT_SIZE&&(n=He.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=n):n=this.reliableLength);let a=He.PACKET_HEADER,s=n>0?2+(i?8:0):0,o=t?t.length:0;a+s+n+o>He.MAX_MSGLEN&&(o=He.MAX_MSGLEN-a-s-n,o<0&&(o=0));let u=new ArrayBuffer(a+s+n+o),c=new DataView(u),d=new Uint8Array(u),m=this.outgoingSequence;n>0&&(m|=2147483648,(this.outgoingReliableSequence&1)!==0&&(m|=1073741824)),c.setUint32(0,m,!0);let l=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(l|=2147483648),c.setUint32(4,l,!0),c.setUint16(8,this.qport,!0);let f=a;if(n>0){let _=n;i&&(_|=32768),c.setUint16(f,_,!0),f+=2,i&&(c.setUint32(f,r,!0),f+=4,c.setUint32(f,this.reliableLength,!0),f+=4);let v=this.reliableMessage.getBuffer().subarray(r,r+n);d.set(v,f),f+=n}if(t&&o>0){let _=t.slice(0,o);d.set(_,f)}return d}process(t){if(t.length<He.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,u=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let _=u?1:0,p=this.outgoingReliableSequence&1;_!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}let c=(i&2147483648)!==0,d=(i&1073741824)!==0?1:0,m=He.PACKET_HEADER,l=null;if(c){if(m+2>t.byteLength)return null;let _=n.getUint16(m,!0);m+=2;let p=(_&32768)!==0;_&=32767;let v=this.incomingReliableSequence&1;if(d===v)if(p){if(m+8>t.byteLength)return null;let y=n.getUint32(m,!0);m+=4;let S=n.getUint32(m,!0);if(m+=4,S>He.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${S} > ${He.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==S)&&(this.fragmentBuffer=new Uint8Array(S),this.fragmentLength=S,this.fragmentReceived=0),m+_>t.byteLength)return null;let k=t.subarray(m,m+_);y===this.fragmentReceived&&y+_<=S&&(this.fragmentBuffer.set(k,y),this.fragmentReceived+=_,this.fragmentReceived>=S&&(l=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,m+_>t.byteLength)return null;l=t.slice(m,m+_)}m+=_}let f=t.slice(m);if(l&&l.length>0){let _=l.length+f.length,p=new Uint8Array(_);return p.set(l,0),p.set(f,l.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>He.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>He.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>He.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>He.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}};qn.MAX_MSGLEN=1400;qn.FRAGMENT_SIZE=1024;qn.PACKET_HEADER=10;qn.HEADER_OVERHEAD=qn.PACKET_HEADER+2;qn.MAX_RELIABLE_BUFFER=262144;var tm=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(tm||{}),LF=Object.keys(tm).length/2;function bw(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let i=0;i<8;i+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var NF=bw();var OF=Object.freeze([{name:"pak0.pak",checksum:2378051181,description:"Base game assets"},{name:"pak0.pak@baseq2",checksum:2378051181,description:"Base game assets (baseq2)"},{name:"pak0.pak@rogue",checksum:3373211245,description:"Ground Zero (rogue) mission pack"},{name:"pak0.pak@xatrix",checksum:1358269824,description:"The Reckoning (xatrix) mission pack"}]);var xw=19,IF=8+xw*8;var Ro=4,mo=7*Ro,CF=[{index:0,size:3,type:5126,stride:mo,offset:0},{index:1,size:2,type:5126,stride:mo,offset:3*Ro},{index:2,size:2,type:5126,stride:mo,offset:5*Ro}];var nm=32;var PF=`#version 300 es
|
|
2
2
|
precision highp float;
|
|
3
3
|
|
|
4
4
|
struct DLight {
|
|
@@ -7,7 +7,7 @@ struct DLight {
|
|
|
7
7
|
float intensity;
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
-
const int MAX_DLIGHTS = ${
|
|
10
|
+
const int MAX_DLIGHTS = ${nm};
|
|
11
11
|
|
|
12
12
|
in vec2 v_texCoord;
|
|
13
13
|
in vec2 v_lightmapCoord;
|
|
@@ -114,7 +114,7 @@ void main() {
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
o_color = finalColor;
|
|
117
|
-
}`;var
|
|
117
|
+
}`;var FF=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1]);var DF=`#version 300 es
|
|
118
118
|
precision highp float;
|
|
119
119
|
|
|
120
120
|
layout(location = 0) in vec3 a_position;
|
|
@@ -127,7 +127,7 @@ struct DLight {
|
|
|
127
127
|
float intensity;
|
|
128
128
|
};
|
|
129
129
|
|
|
130
|
-
const int MAX_DLIGHTS = ${
|
|
130
|
+
const int MAX_DLIGHTS = ${nm};
|
|
131
131
|
|
|
132
132
|
uniform mat4 u_modelViewProjection;
|
|
133
133
|
uniform mat4 u_modelMatrix;
|
|
@@ -166,15 +166,15 @@ void main() {
|
|
|
166
166
|
v_texCoord = a_texCoord;
|
|
167
167
|
v_position = worldPos.xyz;
|
|
168
168
|
gl_Position = u_modelViewProjection * vec4(a_position, 1.0);
|
|
169
|
-
}`;var yd=class{constructor(){this._position=_e.create(),this._angles=_e.create(),this._bobAngles=_e.create(),this._bobOffset=_e.create(),this._kickAngles=_e.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=me.create(),this._projectionMatrix=me.create(),this._viewProjectionMatrix=me.create(),this._dirty=!0}get position(){return this._position}set position(e){_e.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){_e.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){_e.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){_e.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){_e.copy(this._bobOffset,e),this._dirty=!0}get rollAngle(){return this._rollAngle}set rollAngle(e){this._rollAngle=e,this._dirty=!0}get fov(){return this._fov}set fov(e){this._fov=e,this._dirty=!0}get aspect(){return this._aspect}set aspect(e){this._aspect=e,this._dirty=!0}get viewMatrix(){return this.updateMatrices(),this._viewMatrix}get projectionMatrix(){return this.updateMatrices(),this._projectionMatrix}get viewProjectionMatrix(){return this.updateMatrices(),this._viewProjectionMatrix}getViewmodelProjectionMatrix(e){let t=me.create();return me.perspective(t,e*yi,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;me.perspective(this._projectionMatrix,this._fov*yi,this._aspect,this._near,this._far);let e=me.fromValues(0,-1,0,0,0,0,1,0,-1,0,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],n=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],i=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,r=t*yi,a=n*yi,s=i*yi,o=me.create();me.identity(o),me.rotateZ(o,o,-a),me.rotateY(o,o,-r),me.rotateX(o,o,-s);let l=me.create();me.multiply(l,e,o);let c=_e.add(_e.create(),this._position,this._bobOffset),u=_e.negate(_e.create(),c),m=_e.create();_e.transformMat4(m,u,o);let d=_e.fromValues(m[1]||0,m[2]||0,m[0]||0);me.copy(this._viewMatrix,l),this._viewMatrix[12]=d[0],this._viewMatrix[13]=d[1],this._viewMatrix[14]=d[2],me.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var cy=class{constructor(e){this.buffer=e,this.view=new DataView(e),this.offset=0}hasMore(){return this.offset<this.buffer.byteLength}readNextBlock(){if(this.offset+4>this.buffer.byteLength)return null;let e=this.view.getInt32(this.offset,!0);if(this.offset+=4,e<0||e>2097152)return console.warn(`DemoReader: Invalid block length ${e} at offset ${this.offset-4}`),null;if(this.offset+e>this.buffer.byteLength)return console.warn(`DemoReader: Incomplete block. Expected ${e} bytes, but only ${this.buffer.byteLength-this.offset} remain.`),null;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new js(t)}}reset(){this.offset=0}getOffset(){return this.offset}},ly=4,ku=0,xu=1,uy=2;function Fn(e){let t=e.length;for(;--t>=0;)e[t]=0}var dy=0,wd=1,my=2,fy=3,hy=258,uo=29,Ii=256,xi=Ii+1+uo,On=30,mo=19,Ad=2*xi+1,an=15,Ps=16,_y=7,fo=256,Sd=16,Ed=17,bd=18,Qs=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Pr=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),gy=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),kd=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),vy=512,kt=new Array((xi+2)*2);Fn(kt);var Ei=new Array(On*2);Fn(Ei);var Ti=new Array(vy);Fn(Ti);var Mi=new Array(hy-fy+1);Fn(Mi);var ho=new Array(uo);Fn(ho);var Fr=new Array(On);Fn(Fr);function Fs(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}var xd,Td,Md;function Ds(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var Rd=e=>e<256?Ti[e]:Ti[256+(e>>>7)],Ri=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Ge=(e,t,n)=>{e.bi_valid>Ps-n?(e.bi_buf|=t<<e.bi_valid&65535,Ri(e,e.bi_buf),e.bi_buf=t>>Ps-e.bi_valid,e.bi_valid+=n-Ps):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},ut=(e,t,n)=>{Ge(e,n[t*2],n[t*2+1])},Ld=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},py=e=>{e.bi_valid===16?(Ri(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},yy=(e,t)=>{let n=t.dyn_tree,i=t.max_code,r=t.stat_desc.static_tree,a=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,o=t.stat_desc.extra_base,l=t.stat_desc.max_length,c,u,m,d,f,_,p=0;for(d=0;d<=an;d++)e.bl_count[d]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<Ad;c++)u=e.heap[c],d=n[n[u*2+1]*2+1]+1,d>l&&(d=l,p++),n[u*2+1]=d,!(u>i)&&(e.bl_count[d]++,f=0,u>=o&&(f=s[u-o]),_=n[u*2],e.opt_len+=_*(d+f),a&&(e.static_len+=_*(r[u*2+1]+f)));if(p!==0){do{for(d=l-1;e.bl_count[d]===0;)d--;e.bl_count[d]--,e.bl_count[d+1]+=2,e.bl_count[l]--,p-=2}while(p>0);for(d=l;d!==0;d--)for(u=e.bl_count[d];u!==0;)m=e.heap[--c],!(m>i)&&(n[m*2+1]!==d&&(e.opt_len+=(d-n[m*2+1])*n[m*2],n[m*2+1]=d),u--)}},zd=(e,t,n)=>{let i=new Array(an+1),r=0,a,s;for(a=1;a<=an;a++)r=r+n[a-1]<<1,i[a]=r;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=Ld(i[o]++,o))}},wy=()=>{let e,t,n,i,r,a=new Array(an+1);for(n=0,i=0;i<uo-1;i++)for(ho[i]=n,e=0;e<1<<Qs[i];e++)Mi[n++]=i;for(Mi[n-1]=i,r=0,i=0;i<16;i++)for(Fr[i]=r,e=0;e<1<<Pr[i];e++)Ti[r++]=i;for(r>>=7;i<On;i++)for(Fr[i]=r<<7,e=0;e<1<<Pr[i]-7;e++)Ti[256+r++]=i;for(t=0;t<=an;t++)a[t]=0;for(e=0;e<=143;)kt[e*2+1]=8,e++,a[8]++;for(;e<=255;)kt[e*2+1]=9,e++,a[9]++;for(;e<=279;)kt[e*2+1]=7,e++,a[7]++;for(;e<=287;)kt[e*2+1]=8,e++,a[8]++;for(zd(kt,xi+1,a),e=0;e<On;e++)Ei[e*2+1]=5,Ei[e*2]=Ld(e,5);xd=new Fs(kt,Qs,Ii+1,xi,an),Td=new Fs(Ei,Pr,0,On,an),Md=new Fs(new Array(0),gy,0,mo,_y)},Nd=e=>{let t;for(t=0;t<xi;t++)e.dyn_ltree[t*2]=0;for(t=0;t<On;t++)e.dyn_dtree[t*2]=0;for(t=0;t<mo;t++)e.bl_tree[t*2]=0;e.dyn_ltree[fo*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Od=e=>{e.bi_valid>8?Ri(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Tu=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},Us=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&Tu(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!Tu(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},Mu=(e,t,n)=>{let i,r,a=0,s,o;if(e.sym_next!==0)do i=e.pending_buf[e.sym_buf+a++]&255,i+=(e.pending_buf[e.sym_buf+a++]&255)<<8,r=e.pending_buf[e.sym_buf+a++],i===0?ut(e,r,t):(s=Mi[r],ut(e,s+Ii+1,t),o=Qs[s],o!==0&&(r-=ho[s],Ge(e,r,o)),i--,s=Rd(i),ut(e,s,n),o=Pr[s],o!==0&&(i-=Fr[s],Ge(e,i,o)));while(a<e.sym_next);ut(e,fo,t)},eo=(e,t)=>{let n=t.dyn_tree,i=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,l=-1,c;for(e.heap_len=0,e.heap_max=Ad,s=0;s<a;s++)n[s*2]!==0?(e.heap[++e.heap_len]=l=s,e.depth[s]=0):n[s*2+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=l<2?++l:0,n[c*2]=1,e.depth[c]=0,e.opt_len--,r&&(e.static_len-=i[c*2+1]);for(t.max_code=l,s=e.heap_len>>1;s>=1;s--)Us(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Us(e,n,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,n[c*2]=n[s*2]+n[o*2],e.depth[c]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,n[s*2+1]=n[o*2+1]=c,e.heap[1]=c++,Us(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],yy(e,t),zd(n,l,e.bl_count)},Ru=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),t[(n+1)*2+1]=65535,i=0;i<=n;i++)a=s,s=t[(i+1)*2+1],!(++o<l&&a===s)&&(o<c?e.bl_tree[a*2]+=o:a!==0?(a!==r&&e.bl_tree[a*2]++,e.bl_tree[Sd*2]++):o<=10?e.bl_tree[Ed*2]++:e.bl_tree[bd*2]++,o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4))},Lu=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),i=0;i<=n;i++)if(a=s,s=t[(i+1)*2+1],!(++o<l&&a===s)){if(o<c)do ut(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(ut(e,a,e.bl_tree),o--),ut(e,Sd,e.bl_tree),Ge(e,o-3,2)):o<=10?(ut(e,Ed,e.bl_tree),Ge(e,o-3,3)):(ut(e,bd,e.bl_tree),Ge(e,o-11,7));o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4)}},Ay=e=>{let t;for(Ru(e,e.dyn_ltree,e.l_desc.max_code),Ru(e,e.dyn_dtree,e.d_desc.max_code),eo(e,e.bl_desc),t=mo-1;t>=3&&e.bl_tree[kd[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},Sy=(e,t,n,i)=>{let r;for(Ge(e,t-257,5),Ge(e,n-1,5),Ge(e,i-4,4),r=0;r<i;r++)Ge(e,e.bl_tree[kd[r]*2+1],3);Lu(e,e.dyn_ltree,t-1),Lu(e,e.dyn_dtree,n-1)},Ey=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return ku;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return xu;for(n=32;n<Ii;n++)if(e.dyn_ltree[n*2]!==0)return xu;return ku},zu=!1,by=e=>{zu||(wy(),zu=!0),e.l_desc=new Ds(e.dyn_ltree,xd),e.d_desc=new Ds(e.dyn_dtree,Td),e.bl_desc=new Ds(e.bl_tree,Md),e.bi_buf=0,e.bi_valid=0,Nd(e)},Id=(e,t,n,i)=>{Ge(e,(dy<<1)+(i?1:0),3),Od(e),Ri(e,n),Ri(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},ky=e=>{Ge(e,wd<<1,3),ut(e,fo,kt),py(e)},xy=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===uy&&(e.strm.data_type=Ey(e)),eo(e,e.l_desc),eo(e,e.d_desc),s=Ay(e),r=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=r&&(r=a)):r=a=n+5,n+4<=r&&t!==-1?Id(e,t,n,i):e.strategy===ly||a===r?(Ge(e,(wd<<1)+(i?1:0),3),Mu(e,kt,Ei)):(Ge(e,(my<<1)+(i?1:0),3),Sy(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),Mu(e,e.dyn_ltree,e.dyn_dtree)),Nd(e),i&&Od(e)},Ty=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(Mi[n]+Ii+1)*2]++,e.dyn_dtree[Rd(t)*2]++),e.sym_next===e.sym_end),My=by,Ry=Id,Ly=xy,zy=Ty,Ny=ky,Oy={_tr_init:My,_tr_stored_block:Ry,_tr_flush_block:Ly,_tr_tally:zy,_tr_align:Ny},Iy=(e,t,n,i)=>{let r=e&65535|0,a=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do r=r+t[i++]|0,a=a+r|0;while(--s);r%=65521,a%=65521}return r|a<<16|0},Li=Iy,Cy=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},Py=new Uint32Array(Cy()),Fy=(e,t,n,i)=>{let r=Py,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},xe=Fy,cn={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},dn={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},{_tr_init:Dy,_tr_stored_block:to,_tr_flush_block:Uy,_tr_tally:Ut,_tr_align:By}=Oy,{Z_NO_FLUSH:Bt,Z_PARTIAL_FLUSH:Gy,Z_FULL_FLUSH:Hy,Z_FINISH:Je,Z_BLOCK:Nu,Z_OK:ze,Z_STREAM_END:Ou,Z_STREAM_ERROR:dt,Z_DATA_ERROR:Vy,Z_BUF_ERROR:Bs,Z_DEFAULT_COMPRESSION:Wy,Z_FILTERED:Ky,Z_HUFFMAN_ONLY:zr,Z_RLE:$y,Z_FIXED:Xy,Z_DEFAULT_STRATEGY:Yy,Z_UNKNOWN:qy,Z_DEFLATED:Zr}=dn,Zy=9,jy=15,Jy=8,Qy=29,ew=256,no=ew+1+Qy,tw=30,nw=19,iw=2*no+1,rw=15,te=3,Dt=258,mt=Dt+te+1,aw=32,Cn=42,_o=57,io=69,ro=73,ao=91,so=103,sn=113,Ai=666,Pe=1,Dn=2,ln=3,Un=4,sw=3,on=(e,t)=>(e.msg=cn[t],t),Iu=e=>e*2-(e>4?9:0),Ft=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ow=e=>{let t,n,i,r=e.w_size;t=e.hash_size,i=t;do n=e.head[--i],e.head[i]=n>=r?n-r:0;while(--t);t=r,i=t;do n=e.prev[--i],e.prev[i]=n>=r?n-r:0;while(--t)},cw=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,Gt=cw,We=e=>{let t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},Ke=(e,t)=>{Uy(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,We(e.strm)},se=(e,t)=>{e.pending_buf[e.pending++]=t},wi=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},oo=(e,t,n,i)=>{let r=e.avail_in;return r>i&&(r=i),r===0?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),n),e.state.wrap===1?e.adler=Li(e.adler,t,r,n):e.state.wrap===2&&(e.adler=xe(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},Cd=(e,t)=>{let n=e.max_chain_length,i=e.strstart,r,a,s=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-mt?e.strstart-(e.w_size-mt):0,c=e.window,u=e.w_mask,m=e.prev,d=e.strstart+Dt,f=c[i+s-1],_=c[i+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(c[r+s]!==_||c[r+s-1]!==f||c[r]!==c[i]||c[++r]!==c[i+1])){i+=2,r++;do;while(c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&i<d);if(a=Dt-(d-i),i=d-Dt,a>s){if(e.match_start=t,s=a,a>=o)break;f=c[i+s-1],_=c[i+s]}}while((t=m[t&u])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},Pn=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-mt)&&(e.window.set(e.window.subarray(t,t+t-i),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),ow(e),i+=t),e.strm.avail_in===0)break;if(n=oo(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=te)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=Gt(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=Gt(e,e.ins_h,e.window[r+te-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<te)););}while(e.lookahead<mt&&e.strm.avail_in!==0)},Pd=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,i,r,a,s=0,o=e.strm.avail_in;do{if(i=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,r=e.strstart-e.block_start,i>r+e.strm.avail_in&&(i=r+e.strm.avail_in),i>a&&(i=a),i<n&&(i===0&&t!==Je||t===Bt||i!==r+e.strm.avail_in)))break;s=t===Je&&i===r+e.strm.avail_in?1:0,to(e,0,0,s),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,We(e.strm),r&&(r>i&&(r=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,i-=r),i&&(oo(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(s===0);return o-=e.strm.avail_in,o&&(o>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=o&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-o,e.strm.next_in),e.strstart),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),s?Un:t!==Bt&&t!==Je&&e.strm.avail_in===0&&e.strstart===e.block_start?Dn:(a=e.window_size-e.strstart,e.strm.avail_in>a&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(oo(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water<e.strstart&&(e.high_water=e.strstart),a=e.bi_valid+42>>3,a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a,n=a>e.w_size?e.w_size:a,r=e.strstart-e.block_start,(r>=n||(r||t===Je)&&t!==Bt&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===Je&&e.strm.avail_in===0&&i===r?1:0,to(e,e.block_start,i,s),e.block_start+=i,We(e.strm)),s?ln:Pe)},Gs=(e,t)=>{let n,i;for(;;){if(e.lookahead<mt){if(Pn(e),e.lookahead<mt&&t===Bt)return Pe;if(e.lookahead===0)break}if(n=0,e.lookahead>=te&&(e.ins_h=Gt(e,e.ins_h,e.window[e.strstart+te-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-mt&&(e.match_length=Cd(e,n)),e.match_length>=te)if(i=Ut(e,e.strstart-e.match_start,e.match_length-te),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=te){e.match_length--;do e.strstart++,e.ins_h=Gt(e,e.ins_h,e.window[e.strstart+te-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Gt(e,e.ins_h,e.window[e.strstart+1]);else i=Ut(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Ke(e,!1),e.strm.avail_out===0))return Pe}return e.insert=e.strstart<te-1?e.strstart:te-1,t===Je?(Ke(e,!0),e.strm.avail_out===0?ln:Un):e.sym_next&&(Ke(e,!1),e.strm.avail_out===0)?Pe:Dn},Ln=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<mt){if(Pn(e),e.lookahead<mt&&t===Bt)return Pe;if(e.lookahead===0)break}if(n=0,e.lookahead>=te&&(e.ins_h=Gt(e,e.ins_h,e.window[e.strstart+te-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=te-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-mt&&(e.match_length=Cd(e,n),e.match_length<=5&&(e.strategy===Ky||e.match_length===te&&e.strstart-e.match_start>4096)&&(e.match_length=te-1)),e.prev_length>=te&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-te,i=Ut(e,e.strstart-1-e.prev_match,e.prev_length-te),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=Gt(e,e.ins_h,e.window[e.strstart+te-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=te-1,e.strstart++,i&&(Ke(e,!1),e.strm.avail_out===0))return Pe}else if(e.match_available){if(i=Ut(e,0,e.window[e.strstart-1]),i&&Ke(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Pe}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=Ut(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<te-1?e.strstart:te-1,t===Je?(Ke(e,!0),e.strm.avail_out===0?ln:Un):e.sym_next&&(Ke(e,!1),e.strm.avail_out===0)?Pe:Dn},lw=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=Dt){if(Pn(e),e.lookahead<=Dt&&t===Bt)return Pe;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=te&&e.strstart>0&&(r=e.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=e.strstart+Dt;do;while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&r<a);e.match_length=Dt-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=te?(n=Ut(e,1,e.match_length-te),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Ut(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Ke(e,!1),e.strm.avail_out===0))return Pe}return e.insert=0,t===Je?(Ke(e,!0),e.strm.avail_out===0?ln:Un):e.sym_next&&(Ke(e,!1),e.strm.avail_out===0)?Pe:Dn},uw=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(Pn(e),e.lookahead===0)){if(t===Bt)return Pe;break}if(e.match_length=0,n=Ut(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Ke(e,!1),e.strm.avail_out===0))return Pe}return e.insert=0,t===Je?(Ke(e,!0),e.strm.avail_out===0?ln:Un):e.sym_next&&(Ke(e,!1),e.strm.avail_out===0)?Pe:Dn};function lt(e,t,n,i,r){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=i,this.func=r}var Si=[new lt(0,0,0,0,Pd),new lt(4,4,8,4,Gs),new lt(4,5,16,8,Gs),new lt(4,6,32,32,Gs),new lt(4,4,16,16,Ln),new lt(8,16,32,32,Ln),new lt(8,16,128,128,Ln),new lt(8,32,128,256,Ln),new lt(32,128,258,1024,Ln),new lt(32,258,258,4096,Ln)],dw=e=>{e.window_size=2*e.w_size,Ft(e.head),e.max_lazy_match=Si[e.level].max_lazy,e.good_match=Si[e.level].good_length,e.nice_match=Si[e.level].nice_length,e.max_chain_length=Si[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=te-1,e.match_available=0,e.ins_h=0};function mw(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Zr,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(iw*2),this.dyn_dtree=new Uint16Array((2*tw+1)*2),this.bl_tree=new Uint16Array((2*nw+1)*2),Ft(this.dyn_ltree),Ft(this.dyn_dtree),Ft(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(rw+1),this.heap=new Uint16Array(2*no+1),Ft(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*no+1),Ft(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var Ci=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==Cn&&t.status!==_o&&t.status!==io&&t.status!==ro&&t.status!==ao&&t.status!==so&&t.status!==sn&&t.status!==Ai?1:0},Fd=e=>{if(Ci(e))return on(e,dt);e.total_in=e.total_out=0,e.data_type=qy;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?_o:t.wrap?Cn:sn,e.adler=t.wrap===2?0:1,t.last_flush=-2,Dy(t),ze},Dd=e=>{let t=Fd(e);return t===ze&&dw(e.state),t},fw=(e,t)=>Ci(e)||e.state.wrap!==2?dt:(e.state.gzhead=t,ze),Ud=(e,t,n,i,r,a)=>{if(!e)return dt;let s=1;if(t===Wy&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>Zy||n!==Zr||i<8||i>15||t<0||t>9||a<0||a>Xy||i===8&&s!==1)return on(e,dt);i===8&&(i=9);let o=new mw;return e.state=o,o.strm=e,o.status=Cn,o.wrap=s,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=r+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+te-1)/te),o.window=new Uint8Array(o.w_size*2),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<r+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=(o.lit_bufsize-1)*3,o.level=t,o.strategy=a,o.method=n,Dd(e)},hw=(e,t)=>Ud(e,t,Zr,jy,Jy,Yy),_w=(e,t)=>{if(Ci(e)||t>Nu||t<0)return e?on(e,dt):dt;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===Ai&&t!==Je)return on(e,e.avail_out===0?Bs:dt);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(We(e),e.avail_out===0)return n.last_flush=-1,ze}else if(e.avail_in===0&&Iu(t)<=Iu(i)&&t!==Je)return on(e,Bs);if(n.status===Ai&&e.avail_in!==0)return on(e,Bs);if(n.status===Cn&&n.wrap===0&&(n.status=sn),n.status===Cn){let r=Zr+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=zr||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=aw),r+=31-r%31,wi(n,r),n.strstart!==0&&(wi(n,e.adler>>>16),wi(n,e.adler&65535)),e.adler=1,n.status=sn,We(e),n.pending!==0)return n.last_flush=-1,ze}if(n.status===_o){if(e.adler=0,se(n,31),se(n,139),se(n,8),n.gzhead)se(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),se(n,n.gzhead.time&255),se(n,n.gzhead.time>>8&255),se(n,n.gzhead.time>>16&255),se(n,n.gzhead.time>>24&255),se(n,n.level===9?2:n.strategy>=zr||n.level<2?4:0),se(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(se(n,n.gzhead.extra.length&255),se(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=xe(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=io;else if(se(n,0),se(n,0),se(n,0),se(n,0),se(n,0),se(n,n.level===9?2:n.strategy>=zr||n.level<2?4:0),se(n,sw),n.status=sn,We(e),n.pending!==0)return n.last_flush=-1,ze}if(n.status===io){if(n.gzhead.extra){let r=n.pending,a=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+a>n.pending_buf_size;){let o=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>r&&(e.adler=xe(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex+=o,We(e),n.pending!==0)return n.last_flush=-1,ze;r=0,a-=o}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending+=a,n.gzhead.hcrc&&n.pending>r&&(e.adler=xe(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=ro}if(n.status===ro){if(n.gzhead.name){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=xe(e.adler,n.pending_buf,n.pending-r,r)),We(e),n.pending!==0)return n.last_flush=-1,ze;r=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,se(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=xe(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=ao}if(n.status===ao){if(n.gzhead.comment){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=xe(e.adler,n.pending_buf,n.pending-r,r)),We(e),n.pending!==0)return n.last_flush=-1,ze;r=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,se(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=xe(e.adler,n.pending_buf,n.pending-r,r))}n.status=so}if(n.status===so){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(We(e),n.pending!==0))return n.last_flush=-1,ze;se(n,e.adler&255),se(n,e.adler>>8&255),e.adler=0}if(n.status=sn,We(e),n.pending!==0)return n.last_flush=-1,ze}if(e.avail_in!==0||n.lookahead!==0||t!==Bt&&n.status!==Ai){let r=n.level===0?Pd(n,t):n.strategy===zr?uw(n,t):n.strategy===$y?lw(n,t):Si[n.level].func(n,t);if((r===ln||r===Un)&&(n.status=Ai),r===Pe||r===ln)return e.avail_out===0&&(n.last_flush=-1),ze;if(r===Dn&&(t===Gy?By(n):t!==Nu&&(to(n,0,0,!1),t===Hy&&(Ft(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),We(e),e.avail_out===0))return n.last_flush=-1,ze}return t!==Je?ze:n.wrap<=0?Ou:(n.wrap===2?(se(n,e.adler&255),se(n,e.adler>>8&255),se(n,e.adler>>16&255),se(n,e.adler>>24&255),se(n,e.total_in&255),se(n,e.total_in>>8&255),se(n,e.total_in>>16&255),se(n,e.total_in>>24&255)):(wi(n,e.adler>>>16),wi(n,e.adler&65535)),We(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?ze:Ou)},gw=e=>{if(Ci(e))return dt;let t=e.state.status;return e.state=null,t===sn?on(e,Vy):ze},vw=(e,t)=>{let n=t.length;if(Ci(e))return dt;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==Cn||i.lookahead)return dt;if(r===1&&(e.adler=Li(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(Ft(i.head),i.strstart=0,i.block_start=0,i.insert=0);let l=new Uint8Array(i.w_size);l.set(t.subarray(n-i.w_size,n),0),t=l,n=i.w_size}let a=e.avail_in,s=e.next_in,o=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,Pn(i);i.lookahead>=te;){let l=i.strstart,c=i.lookahead-(te-1);do i.ins_h=Gt(i,i.ins_h,i.window[l+te-1]),i.prev[l&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=l,l++;while(--c);i.strstart=l,i.lookahead=te-1,Pn(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=te-1,i.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,i.wrap=r,ze},pw=hw,yw=Ud,ww=Dd,Aw=Fd,Sw=fw,Ew=_w,bw=gw,kw=vw,xw="pako deflate (from Nodeca project)",bi={deflateInit:pw,deflateInit2:yw,deflateReset:ww,deflateResetKeep:Aw,deflateSetHeader:Sw,deflate:Ew,deflateEnd:bw,deflateSetDictionary:kw,deflateInfo:xw},Tw=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Mw=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(let i in n)Tw(n,i)&&(e[i]=n[i])}}return e},Rw=e=>{let t=0;for(let i=0,r=e.length;i<r;i++)t+=e[i].length;let n=new Uint8Array(t);for(let i=0,r=0,a=e.length;i<a;i++){let s=e[i];n.set(s,r),r+=s.length}return n},jr={assign:Mw,flattenChunks:Rw},Bd=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Bd=!1}var zi=new Uint8Array(256);for(let e=0;e<256;e++)zi[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;zi[254]=zi[254]=1;var Lw=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,i,r,a,s=e.length,o=0;for(r=0;r<s;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),o+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(o),a=0,r=0;a<o;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t},zw=(e,t)=>{if(t<65534&&e.subarray&&Bd)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let i=0;i<t;i++)n+=String.fromCharCode(e[i]);return n},Nw=(e,t)=>{let n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let i,r,a=new Array(n*2);for(r=0,i=0;i<n;){let s=e[i++];if(s<128){a[r++]=s;continue}let o=zi[s];if(o>4){a[r++]=65533,i+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&i<n;)s=s<<6|e[i++]&63,o--;if(o>1){a[r++]=65533;continue}s<65536?a[r++]=s:(s-=65536,a[r++]=55296|s>>10&1023,a[r++]=56320|s&1023)}return zw(a,r)},Ow=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+zi[e[n]]>t?n:t},Ni={string2buf:Lw,buf2string:Nw,utf8border:Ow};function Iw(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var Gd=Iw,Hd=Object.prototype.toString,{Z_NO_FLUSH:Cw,Z_SYNC_FLUSH:Pw,Z_FULL_FLUSH:Fw,Z_FINISH:Dw,Z_OK:Dr,Z_STREAM_END:Uw,Z_DEFAULT_COMPRESSION:Bw,Z_DEFAULT_STRATEGY:Gw,Z_DEFLATED:Hw}=dn;function Pi(e){this.options=jr.assign({level:Bw,method:Hw,chunkSize:16384,windowBits:15,memLevel:8,strategy:Gw},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Gd,this.strm.avail_out=0;let n=bi.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Dr)throw new Error(cn[n]);if(t.header&&bi.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=Ni.string2buf(t.dictionary):Hd.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=bi.deflateSetDictionary(this.strm,i),n!==Dr)throw new Error(cn[n]);this._dict_set=!0}}Pi.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?Dw:Cw,typeof e=="string"?n.input=Ni.string2buf(e):Hd.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),(a===Pw||a===Fw)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=bi.deflate(n,a),r===Uw)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=bi.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===Dr;if(n.avail_out===0){this.onData(n.output);continue}if(a>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};Pi.prototype.onData=function(e){this.chunks.push(e)};Pi.prototype.onEnd=function(e){e===Dr&&(this.result=jr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function go(e,t){let n=new Pi(t);if(n.push(e,!0),n.err)throw n.msg||cn[n.err];return n.result}function Vw(e,t){return t=t||{},t.raw=!0,go(e,t)}function Ww(e,t){return t=t||{},t.gzip=!0,go(e,t)}var Kw=Pi,$w=go,Xw=Vw,Yw=Ww,qw=dn,Zw={Deflate:Kw,deflate:$w,deflateRaw:Xw,gzip:Yw,constants:qw},Nr=16209,jw=16191,Jw=function(t,n){let i,r,a,s,o,l,c,u,m,d,f,_,p,v,y,S,E,w,k,T,x,L,N,A,O=t.state;i=t.next_in,N=t.input,r=i+(t.avail_in-5),a=t.next_out,A=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),l=O.dmax,c=O.wsize,u=O.whave,m=O.wnext,d=O.window,f=O.hold,_=O.bits,p=O.lencode,v=O.distcode,y=(1<<O.lenbits)-1,S=(1<<O.distbits)-1;e:do{_<15&&(f+=N[i++]<<_,_+=8,f+=N[i++]<<_,_+=8),E=p[f&y];t:for(;;){if(w=E>>>24,f>>>=w,_-=w,w=E>>>16&255,w===0)A[a++]=E&65535;else if(w&16){k=E&65535,w&=15,w&&(_<w&&(f+=N[i++]<<_,_+=8),k+=f&(1<<w)-1,f>>>=w,_-=w),_<15&&(f+=N[i++]<<_,_+=8,f+=N[i++]<<_,_+=8),E=v[f&S];n:for(;;){if(w=E>>>24,f>>>=w,_-=w,w=E>>>16&255,w&16){if(T=E&65535,w&=15,_<w&&(f+=N[i++]<<_,_+=8,_<w&&(f+=N[i++]<<_,_+=8)),T+=f&(1<<w)-1,T>l){t.msg="invalid distance too far back",O.mode=Nr;break e}if(f>>>=w,_-=w,w=a-s,T>w){if(w=T-w,w>u&&O.sane){t.msg="invalid distance too far back",O.mode=Nr;break e}if(x=0,L=d,m===0){if(x+=c-w,w<k){k-=w;do A[a++]=d[x++];while(--w);x=a-T,L=A}}else if(m<w){if(x+=c+m-w,w-=m,w<k){k-=w;do A[a++]=d[x++];while(--w);if(x=0,m<k){w=m,k-=w;do A[a++]=d[x++];while(--w);x=a-T,L=A}}}else if(x+=m-w,w<k){k-=w;do A[a++]=d[x++];while(--w);x=a-T,L=A}for(;k>2;)A[a++]=L[x++],A[a++]=L[x++],A[a++]=L[x++],k-=3;k&&(A[a++]=L[x++],k>1&&(A[a++]=L[x++]))}else{x=a-T;do A[a++]=A[x++],A[a++]=A[x++],A[a++]=A[x++],k-=3;while(k>2);k&&(A[a++]=A[x++],k>1&&(A[a++]=A[x++]))}}else if((w&64)===0){E=v[(E&65535)+(f&(1<<w)-1)];continue n}else{t.msg="invalid distance code",O.mode=Nr;break e}break}}else if((w&64)===0){E=p[(E&65535)+(f&(1<<w)-1)];continue t}else if(w&32){O.mode=jw;break e}else{t.msg="invalid literal/length code",O.mode=Nr;break e}break}}while(i<r&&a<o);k=_>>3,i-=k,_-=k<<3,f&=(1<<_)-1,t.next_in=i,t.next_out=a,t.avail_in=i<r?5+(r-i):5-(i-r),t.avail_out=a<o?257+(o-a):257-(a-o),O.hold=f,O.bits=_},zn=15,Cu=852,Pu=592,Fu=0,Hs=1,Du=2,Qw=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),eA=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),tA=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),nA=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),iA=(e,t,n,i,r,a,s,o)=>{let l=o.bits,c=0,u=0,m=0,d=0,f=0,_=0,p=0,v=0,y=0,S=0,E,w,k,T,x,L=null,N,A=new Uint16Array(zn+1),O=new Uint16Array(zn+1),W=null,ee,J,Re;for(c=0;c<=zn;c++)A[c]=0;for(u=0;u<i;u++)A[t[n+u]]++;for(f=l,d=zn;d>=1&&A[d]===0;d--);if(f>d&&(f=d),d===0)return r[a++]=1<<24|64<<16|0,r[a++]=1<<24|64<<16|0,o.bits=1,0;for(m=1;m<d&&A[m]===0;m++);for(f<m&&(f=m),v=1,c=1;c<=zn;c++)if(v<<=1,v-=A[c],v<0)return-1;if(v>0&&(e===Fu||d!==1))return-1;for(O[1]=0,c=1;c<zn;c++)O[c+1]=O[c]+A[c];for(u=0;u<i;u++)t[n+u]!==0&&(s[O[t[n+u]]++]=u);if(e===Fu?(L=W=s,N=20):e===Hs?(L=Qw,W=eA,N=257):(L=tA,W=nA,N=0),S=0,u=0,c=m,x=a,_=f,p=0,k=-1,y=1<<f,T=y-1,e===Hs&&y>Cu||e===Du&&y>Pu)return 1;for(;;){ee=c-p,s[u]+1<N?(J=0,Re=s[u]):s[u]>=N?(J=W[s[u]-N],Re=L[s[u]-N]):(J=96,Re=0),E=1<<c-p,w=1<<_,m=w;do w-=E,r[x+(S>>p)+w]=ee<<24|J<<16|Re|0;while(w!==0);for(E=1<<c-1;S&E;)E>>=1;if(E!==0?(S&=E-1,S+=E):S=0,u++,--A[c]===0){if(c===d)break;c=t[n+s[u]]}if(c>f&&(S&T)!==k){for(p===0&&(p=f),x+=m,_=c-p,v=1<<_;_+p<d&&(v-=A[_+p],!(v<=0));)_++,v<<=1;if(y+=1<<_,e===Hs&&y>Cu||e===Du&&y>Pu)return 1;k=S&T,r[k]=f<<24|_<<16|x-a|0}}return S!==0&&(r[x+S]=c-p<<24|64<<16|0),o.bits=f,0},ki=iA,rA=0,Vd=1,Wd=2,{Z_FINISH:Uu,Z_BLOCK:aA,Z_TREES:Or,Z_OK:un,Z_STREAM_END:sA,Z_NEED_DICT:oA,Z_STREAM_ERROR:Qe,Z_DATA_ERROR:Kd,Z_MEM_ERROR:$d,Z_BUF_ERROR:cA,Z_DEFLATED:Bu}=dn,Jr=16180,Gu=16181,Hu=16182,Vu=16183,Wu=16184,Ku=16185,$u=16186,Xu=16187,Yu=16188,qu=16189,Ur=16190,bt=16191,Vs=16192,Zu=16193,Ws=16194,ju=16195,Ju=16196,Qu=16197,ed=16198,Ir=16199,Cr=16200,td=16201,nd=16202,id=16203,rd=16204,ad=16205,Ks=16206,sd=16207,od=16208,ge=16209,Xd=16210,Yd=16211,lA=852,uA=592,dA=15,mA=dA,cd=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function fA(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var mn=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<Jr||t.mode>Yd?1:0},qd=e=>{if(mn(e))return Qe;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=Jr,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(lA),t.distcode=t.distdyn=new Int32Array(uA),t.sane=1,t.back=-1,un},Zd=e=>{if(mn(e))return Qe;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,qd(e)},jd=(e,t)=>{let n;if(mn(e))return Qe;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Qe:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,Zd(e))},Jd=(e,t)=>{if(!e)return Qe;let n=new fA;e.state=n,n.strm=e,n.window=null,n.mode=Jr;let i=jd(e,t);return i!==un&&(e.state=null),i},hA=e=>Jd(e,mA),ld=!0,$s,Xs,_A=e=>{if(ld){$s=new Int32Array(512),Xs=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(ki(Vd,e.lens,0,288,$s,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;ki(Wd,e.lens,0,32,Xs,0,e.work,{bits:5}),ld=!1}e.lencode=$s,e.lenbits=9,e.distcode=Xs,e.distbits=5},Qd=(e,t,n,i)=>{let r,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),i>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(r=a.wsize-a.wnext,r>i&&(r=i),a.window.set(t.subarray(n-i,n-i+r),a.wnext),i-=r,i?(a.window.set(t.subarray(n-i,n),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=r))),0},gA=(e,t)=>{let n,i,r,a,s,o,l,c,u,m,d,f,_,p,v=0,y,S,E,w,k,T,x,L,N=new Uint8Array(4),A,O,W=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(mn(e)||!e.output||!e.input&&e.avail_in!==0)return Qe;n=e.state,n.mode===bt&&(n.mode=Vs),s=e.next_out,r=e.output,l=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,u=n.bits,m=o,d=l,L=un;e:for(;;)switch(n.mode){case Jr:if(n.wrap===0){n.mode=Vs;break}for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&2&&c===35615){n.wbits===0&&(n.wbits=15),n.check=0,N[0]=c&255,N[1]=c>>>8&255,n.check=xe(n.check,N,2,0),c=0,u=0,n.mode=Gu;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=ge;break}if((c&15)!==Bu){e.msg="unknown compression method",n.mode=ge;break}if(c>>>=4,u-=4,x=(c&15)+8,n.wbits===0&&(n.wbits=x),x>15||x>n.wbits){e.msg="invalid window size",n.mode=ge;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?qu:bt,c=0,u=0;break;case Gu:for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.flags=c,(n.flags&255)!==Bu){e.msg="unknown compression method",n.mode=ge;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=ge;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(N[0]=c&255,N[1]=c>>>8&255,n.check=xe(n.check,N,2,0)),c=0,u=0,n.mode=Hu;case Hu:for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.head&&(n.head.time=c),n.flags&512&&n.wrap&4&&(N[0]=c&255,N[1]=c>>>8&255,N[2]=c>>>16&255,N[3]=c>>>24&255,n.check=xe(n.check,N,4,0)),c=0,u=0,n.mode=Vu;case Vu:for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.head&&(n.head.xflags=c&255,n.head.os=c>>8),n.flags&512&&n.wrap&4&&(N[0]=c&255,N[1]=c>>>8&255,n.check=xe(n.check,N,2,0)),c=0,u=0,n.mode=Wu;case Wu:if(n.flags&1024){for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.length=c,n.head&&(n.head.extra_len=c),n.flags&512&&n.wrap&4&&(N[0]=c&255,N[1]=c>>>8&255,n.check=xe(n.check,N,2,0)),c=0,u=0}else n.head&&(n.head.extra=null);n.mode=Ku;case Ku:if(n.flags&1024&&(f=n.length,f>o&&(f=o),f&&(n.head&&(x=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(i.subarray(a,a+f),x)),n.flags&512&&n.wrap&4&&(n.check=xe(n.check,i,f,a)),o-=f,a+=f,n.length-=f),n.length))break e;n.length=0,n.mode=$u;case $u:if(n.flags&2048){if(o===0)break e;f=0;do x=i[a+f++],n.head&&x&&n.length<65536&&(n.head.name+=String.fromCharCode(x));while(x&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=xe(n.check,i,f,a)),o-=f,a+=f,x)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Xu;case Xu:if(n.flags&4096){if(o===0)break e;f=0;do x=i[a+f++],n.head&&x&&n.length<65536&&(n.head.comment+=String.fromCharCode(x));while(x&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=xe(n.check,i,f,a)),o-=f,a+=f,x)break e}else n.head&&(n.head.comment=null);n.mode=Yu;case Yu:if(n.flags&512){for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=ge;break}c=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=bt;break;case qu:for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}e.adler=n.check=cd(c),c=0,u=0,n.mode=Ur;case Ur:if(n.havedict===0)return e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,oA;e.adler=n.check=1,n.mode=bt;case bt:if(t===aA||t===Or)break e;case Vs:if(n.last){c>>>=u&7,u-=u&7,n.mode=Ks;break}for(;u<3;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}switch(n.last=c&1,c>>>=1,u-=1,c&3){case 0:n.mode=Zu;break;case 1:if(_A(n),n.mode=Ir,t===Or){c>>>=2,u-=2;break e}break;case 2:n.mode=Ju;break;case 3:e.msg="invalid block type",n.mode=ge}c>>>=2,u-=2;break;case Zu:for(c>>>=u&7,u-=u&7;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=ge;break}if(n.length=c&65535,c=0,u=0,n.mode=Ws,t===Or)break e;case Ws:n.mode=ju;case ju:if(f=n.length,f){if(f>o&&(f=o),f>l&&(f=l),f===0)break e;r.set(i.subarray(a,a+f),s),o-=f,a+=f,l-=f,s+=f,n.length-=f;break}n.mode=bt;break;case Ju:for(;u<14;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.nlen=(c&31)+257,c>>>=5,u-=5,n.ndist=(c&31)+1,c>>>=5,u-=5,n.ncode=(c&15)+4,c>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=ge;break}n.have=0,n.mode=Qu;case Qu:for(;n.have<n.ncode;){for(;u<3;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.lens[W[n.have++]]=c&7,c>>>=3,u-=3}for(;n.have<19;)n.lens[W[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,A={bits:n.lenbits},L=ki(rA,n.lens,0,19,n.lencode,0,n.work,A),n.lenbits=A.bits,L){e.msg="invalid code lengths set",n.mode=ge;break}n.have=0,n.mode=ed;case ed:for(;n.have<n.nlen+n.ndist;){for(;v=n.lencode[c&(1<<n.lenbits)-1],y=v>>>24,S=v>>>16&255,E=v&65535,!(y<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(E<16)c>>>=y,u-=y,n.lens[n.have++]=E;else{if(E===16){for(O=y+2;u<O;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(c>>>=y,u-=y,n.have===0){e.msg="invalid bit length repeat",n.mode=ge;break}x=n.lens[n.have-1],f=3+(c&3),c>>>=2,u-=2}else if(E===17){for(O=y+3;u<O;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=y,u-=y,x=0,f=3+(c&7),c>>>=3,u-=3}else{for(O=y+7;u<O;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=y,u-=y,x=0,f=11+(c&127),c>>>=7,u-=7}if(n.have+f>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=ge;break}for(;f--;)n.lens[n.have++]=x}}if(n.mode===ge)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=ge;break}if(n.lenbits=9,A={bits:n.lenbits},L=ki(Vd,n.lens,0,n.nlen,n.lencode,0,n.work,A),n.lenbits=A.bits,L){e.msg="invalid literal/lengths set",n.mode=ge;break}if(n.distbits=6,n.distcode=n.distdyn,A={bits:n.distbits},L=ki(Wd,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,A),n.distbits=A.bits,L){e.msg="invalid distances set",n.mode=ge;break}if(n.mode=Ir,t===Or)break e;case Ir:n.mode=Cr;case Cr:if(o>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,Jw(e,d),s=e.next_out,r=e.output,l=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,u=n.bits,n.mode===bt&&(n.back=-1);break}for(n.back=0;v=n.lencode[c&(1<<n.lenbits)-1],y=v>>>24,S=v>>>16&255,E=v&65535,!(y<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(S&&(S&240)===0){for(w=y,k=S,T=E;v=n.lencode[T+((c&(1<<w+k)-1)>>w)],y=v>>>24,S=v>>>16&255,E=v&65535,!(w+y<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=w,u-=w,n.back+=w}if(c>>>=y,u-=y,n.back+=y,n.length=E,S===0){n.mode=ad;break}if(S&32){n.back=-1,n.mode=bt;break}if(S&64){e.msg="invalid literal/length code",n.mode=ge;break}n.extra=S&15,n.mode=td;case td:if(n.extra){for(O=n.extra;u<O;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.length+=c&(1<<n.extra)-1,c>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=nd;case nd:for(;v=n.distcode[c&(1<<n.distbits)-1],y=v>>>24,S=v>>>16&255,E=v&65535,!(y<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if((S&240)===0){for(w=y,k=S,T=E;v=n.distcode[T+((c&(1<<w+k)-1)>>w)],y=v>>>24,S=v>>>16&255,E=v&65535,!(w+y<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=w,u-=w,n.back+=w}if(c>>>=y,u-=y,n.back+=y,S&64){e.msg="invalid distance code",n.mode=ge;break}n.offset=E,n.extra=S&15,n.mode=id;case id:if(n.extra){for(O=n.extra;u<O;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.offset+=c&(1<<n.extra)-1,c>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=ge;break}n.mode=rd;case rd:if(l===0)break e;if(f=d-l,n.offset>f){if(f=n.offset-f,f>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=ge;break}f>n.wnext?(f-=n.wnext,_=n.wsize-f):_=n.wnext-f,f>n.length&&(f=n.length),p=n.window}else p=r,_=s-n.offset,f=n.length;f>l&&(f=l),l-=f,n.length-=f;do r[s++]=p[_++];while(--f);n.length===0&&(n.mode=Cr);break;case ad:if(l===0)break e;r[s++]=n.length,l--,n.mode=Cr;break;case Ks:if(n.wrap){for(;u<32;){if(o===0)break e;o--,c|=i[a++]<<u,u+=8}if(d-=l,e.total_out+=d,n.total+=d,n.wrap&4&&d&&(e.adler=n.check=n.flags?xe(n.check,r,d,s-d):Li(n.check,r,d,s-d)),d=l,n.wrap&4&&(n.flags?c:cd(c))!==n.check){e.msg="incorrect data check",n.mode=ge;break}c=0,u=0}n.mode=sd;case sd:if(n.wrap&&n.flags){for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=ge;break}c=0,u=0}n.mode=od;case od:L=sA;break e;case ge:L=Kd;break e;case Xd:return $d;case Yd:default:return Qe}return e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,(n.wsize||d!==e.avail_out&&n.mode<ge&&(n.mode<Ks||t!==Uu))&&Qd(e,e.output,e.next_out,d-e.avail_out),m-=e.avail_in,d-=e.avail_out,e.total_in+=m,e.total_out+=d,n.total+=d,n.wrap&4&&d&&(e.adler=n.check=n.flags?xe(n.check,r,d,e.next_out-d):Li(n.check,r,d,e.next_out-d)),e.data_type=n.bits+(n.last?64:0)+(n.mode===bt?128:0)+(n.mode===Ir||n.mode===Ws?256:0),(m===0&&d===0||t===Uu)&&L===un&&(L=cA),L},vA=e=>{if(mn(e))return Qe;let t=e.state;return t.window&&(t.window=null),e.state=null,un},pA=(e,t)=>{if(mn(e))return Qe;let n=e.state;return(n.wrap&2)===0?Qe:(n.head=t,t.done=!1,un)},yA=(e,t)=>{let n=t.length,i,r,a;return mn(e)||(i=e.state,i.wrap!==0&&i.mode!==Ur)?Qe:i.mode===Ur&&(r=1,r=Li(r,t,n,0),r!==i.check)?Kd:(a=Qd(e,t,n,n),a?(i.mode=Xd,$d):(i.havedict=1,un))},wA=Zd,AA=jd,SA=qd,EA=hA,bA=Jd,kA=gA,xA=vA,TA=pA,MA=yA,RA="pako inflate (from Nodeca project)",xt={inflateReset:wA,inflateReset2:AA,inflateResetKeep:SA,inflateInit:EA,inflateInit2:bA,inflate:kA,inflateEnd:xA,inflateGetHeader:TA,inflateSetDictionary:MA,inflateInfo:RA};function LA(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var zA=LA,em=Object.prototype.toString,{Z_NO_FLUSH:NA,Z_FINISH:OA,Z_OK:Oi,Z_STREAM_END:Ys,Z_NEED_DICT:qs,Z_STREAM_ERROR:IA,Z_DATA_ERROR:ud,Z_MEM_ERROR:CA}=dn;function Fi(e){this.options=jr.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15)===0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Gd,this.strm.avail_out=0;let n=xt.inflateInit2(this.strm,t.windowBits);if(n!==Oi)throw new Error(cn[n]);if(this.header=new zA,xt.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Ni.string2buf(t.dictionary):em.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=xt.inflateSetDictionary(this.strm,t.dictionary),n!==Oi)))throw new Error(cn[n])}Fi.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?OA:NA,em.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),a=xt.inflate(n,s),a===qs&&r&&(a=xt.inflateSetDictionary(n,r),a===Oi?a=xt.inflate(n,s):a===ud&&(a=qs));n.avail_in>0&&a===Ys&&n.state.wrap>0&&e[n.next_in]!==0;)xt.inflateReset(n),a=xt.inflate(n,s);switch(a){case IA:case ud:case qs:case CA:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===Ys))if(this.options.to==="string"){let l=Ni.utf8border(n.output,n.next_out),c=n.next_out-l,u=Ni.buf2string(n.output,l);n.next_out=c,n.avail_out=i-c,c&&n.output.set(n.output.subarray(l,l+c),0),this.onData(u)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===Oi&&o===0)){if(a===Ys)return a=xt.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};Fi.prototype.onData=function(e){this.chunks.push(e)};Fi.prototype.onEnd=function(e){e===Oi&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=jr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function vo(e,t){let n=new Fi(t);if(n.push(e),n.err)throw n.msg||cn[n.err];return n.result}function PA(e,t){return t=t||{},t.raw=!0,vo(e,t)}var FA=Fi,DA=vo,UA=PA,BA=vo,GA=dn,HA={Inflate:FA,inflate:DA,inflateRaw:UA,ungzip:BA,constants:GA},{Deflate:VA,deflate:WA,deflateRaw:KA,gzip:$A}=Zw,{Inflate:XA,inflate:YA,inflateRaw:qA,ungzip:ZA}=HA,jA=VA,JA=WA,QA=KA,eS=$A,tS=XA,nS=YA,iS=qA,rS=ZA,aS=dn,dd={Deflate:jA,deflate:JA,deflateRaw:QA,gzip:eS,Inflate:tS,inflate:nS,inflateRaw:iS,ungzip:rS,constants:aS},Br=2023,po=1,yo=2,wo=4,Ao=8,So=16,Eo=32,tm=64,sS=128,oS=256,bo=512,ko=1024,xo=2048,Gr=4096,To=8192,Hr=16384,cS=32768,Vr=65536,Mo=1<<17,Wr=1<<18,Kr=1<<19,Ro=1<<20,Lo=1<<21,zo=1<<22,lS=1<<23,No=1<<24,$r=1<<25,Oo=1<<26,Io=1<<27,Co=1<<28,Po=1<<29,Fo=1<<30,uS=-2147483648,Do=1,Uo=2,Bo=4,dS=1,mS=2,fS=128,Nn=()=>({number:0,modelindex:0,modelindex2:0,modelindex3:0,modelindex4:0,frame:0,skinnum:0,effects:0,renderfx:0,origin:{x:0,y:0,z:0},old_origin:{x:0,y:0,z:0},angles:{x:0,y:0,z:0},sound:0,event:0,solid:0,bits:0,bitsHigh:0,alpha:0,scale:0,instanceBits:0,loopVolume:0,loopAttenuation:0,owner:0,oldFrame:0}),md=()=>({pm_type:0,origin:{x:0,y:0,z:0},velocity:{x:0,y:0,z:0},pm_time:0,pm_flags:0,gravity:0,delta_angles:{x:0,y:0,z:0},viewoffset:{x:0,y:0,z:0},viewangles:{x:0,y:0,z:0},kick_angles:{x:0,y:0,z:0},gun_index:0,gun_frame:0,gun_offset:{x:0,y:0,z:0},gun_angles:{x:0,y:0,z:0},blend:[0,0,0,0],fov:0,rdflags:0,stats:new Array(32).fill(0),gunskin:0,gunrate:0,damage_blend:[0,0,0,0],team_id:0}),Go=class nm{constructor(t,n){this.protocolVersion=0,this.isDemo=dS,this.stream=t,this.handler=n}setProtocolVersion(t){this.protocolVersion=t}getProtocolVersion(){return this.protocolVersion}translateCommand(t){return this.protocolVersion===0&&(t===7||t===12)?Q.serverdata:this.protocolVersion===Br?t:this.protocolVersion===34||this.protocolVersion===25?t<=Q.frame?t:t===22?Q.playerinfo:t===23?Q.packetentities:Q.bad:(this.protocolVersion===0,t)}parseMessage(){for(;this.stream.hasMore();){let t=this.stream.readByte();if(t===-1)break;let n=t;t=this.translateCommand(t);try{switch(t){case Q.bad:return;case Q.nop:break;case Q.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case Q.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case Q.print:this.parsePrint();break;case Q.serverdata:this.parseServerData();break;case Q.configstring:this.parseConfigString();break;case Q.spawnbaseline:this.parseSpawnBaseline();break;case Q.centerprint:this.parseCenterPrint();break;case Q.download:this.parseDownload();break;case Q.frame:this.parseFrame();break;case Q.packetentities:this.parsePacketEntities(!1);break;case Q.deltapacketentities:this.parsePacketEntities(!0);break;case Q.playerinfo:this.parsePlayerState();break;case Q.stufftext:this.parseStuffText();break;case Q.layout:this.parseLayout();break;case Q.inventory:this.parseInventory();break;case Q.sound:this.parseSound();break;case Q.muzzleflash:this.parseMuzzleFlash();break;case Q.muzzleflash2:this.parseMuzzleFlash2();break;case Q.temp_entity:this.parseTempEntity();break;case Q.splitclient:this.parseSplitClient();break;case Q.configblast:this.parseConfigBlast();break;case Q.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case Q.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case Q.damage:this.parseDamage();break;case Q.locprint:this.parseLocPrint();break;case Q.fog:this.parseFog();break;case Q.waitingforplayers:this.parseWaitingForPlayers();break;case Q.bot_chat:this.parseBotChat();break;case Q.poi:this.parsePoi();break;case Q.help_path:this.parseHelpPath();break;case Q.muzzleflash3:this.parseMuzzleFlash3();break;case Q.achievement:this.parseAchievement();break;default:console.warn(`Unknown server command: ${n} (translated: ${t}) at offset ${this.stream.getPosition()-1}`);return}}catch(i){console.warn(`Error parsing command ${t}: ${i.message}`);return}}}parsePrint(){let t=this.stream.readByte(),n=this.stream.readString();this.handler&&this.handler.onPrint(t,n)}parseStuffText(){let t=this.stream.readString();this.handler&&this.handler.onStuffText(t)}parseLayout(){let t=this.stream.readString();this.handler&&this.handler.onLayout(t)}parseCenterPrint(){let t=this.stream.readString();this.handler&&this.handler.onCenterPrint(t)}parseServerData(){if(this.protocolVersion=this.stream.readLong(),this.protocolVersion===Br){let t=this.stream.readLong(),n=this.stream.readByte();this.isDemo=n;let i=this.stream.readByte(),r=this.stream.readString(),a=this.stream.readShort();if(a===-2){let o=this.stream.readShort();for(let l=0;l<o;l++)this.stream.readShort();a=0}else a===-1&&(a=-1);let s=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,0,r,a,s,i,n):console.log(`Server Data (Rerelease): Protocol ${this.protocolVersion}, Level ${s}, Tick ${i}`)}else{let t=this.stream.readLong();this.isDemo=this.stream.readByte();let n=0,i=this.stream.readString(),r=this.stream.readShort(),a=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,n,i,r,a):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${a}, GameDir ${i}`)}}parseConfigString(){let t=this.stream.readShort(),n=this.stream.readString();this.handler&&this.handler.onConfigString(t,n)}parseSplitClient(){let t=this.stream.readByte();this.handler&&this.handler.onSplitClient&&this.handler.onSplitClient(t)}parseConfigBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=dd.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new js(r.buffer);for(;a.hasMore();){let s=a.readUShort(),o=a.readString();this.handler&&this.handler.onConfigString(s,o)}}catch(r){console.error("svc_configblast: Failed to decompress data",r)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=dd.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new js(r.buffer),s=new nm(a,this.handler);for(;a.hasMore();)s.parseSpawnBaseline()}catch(r){console.error("svc_spawnbaselineblast: Failed to decompress data",r)}}parseLocPrint(){let t=this.stream.readByte(),n=this.stream.readString(),i=this.stream.readByte(),r=[];for(let a=0;a<i;a++)r.push(this.stream.readString());this.handler&&this.handler.onLocPrint&&this.handler.onLocPrint(t,n,r)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler&&this.handler.onWaitingForPlayers&&this.handler.onWaitingForPlayers(t)}parseBotChat(){let t=this.stream.readString(),n=this.stream.readShort(),i=this.stream.readString();this.handler&&this.handler.onBotChat&&this.handler.onBotChat(i)}parsePoi(){let t=this.stream.readUShort(),n=this.stream.readUShort(),i={x:0,y:0,z:0};this.stream.readPos(i);let r=this.stream.readUShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler&&this.handler.onPoi&&this.handler.onPoi(s,i)}parseHelpPath(){let t=this.stream.readByte(),n={x:0,y:0,z:0};this.stream.readPos(n);let i={x:0,y:0,z:0};this.stream.readDir(i),this.handler&&this.handler.onHelpPath&&this.handler.onHelpPath(n)}parseAchievement(){let t=this.stream.readString();this.handler&&this.handler.onAchievement&&this.handler.onAchievement(t)}parseDownload(){let t=this.stream.readShort(),n=this.stream.readByte(),i;t>0&&(i=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,n,i)}parseInventory(){let n=new Array(256);for(let i=0;i<256;i++)n[i]=this.stream.readShort();this.handler&&this.handler.onInventory(n)}parseSound(){let t=this.stream.readByte(),n=this.stream.readByte(),i,r,a,s,o;if(t&1&&(i=this.stream.readByte()),t&2&&(r=this.stream.readByte()),t&16&&(a=this.stream.readByte()),t&8&&(s=this.stream.readShort()),t&4){let l={x:0,y:0,z:0};this.stream.readPos(l),o=l}this.handler&&this.handler.onSound(t,n,i,r,a,s,o)}parseMuzzleFlash(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(t,n)}parseMuzzleFlash2(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(t,n)}parseMuzzleFlash3(){let t=this.stream.readShort(),n=this.stream.readShort();this.handler&&this.handler.onMuzzleFlash3&&this.handler.onMuzzleFlash3(t,n)}parseFog(){let t=this.stream.readByte();if(t&128){let i=this.stream.readByte();t|=i<<8}let n={};t&1&&(n.density=this.stream.readFloat(),n.skyfactor=this.stream.readByte()),t&2&&(n.red=this.stream.readByte()),t&4&&(n.green=this.stream.readByte()),t&8&&(n.blue=this.stream.readByte()),t&16&&(n.time=this.stream.readShort()),t&32&&(n.hf_falloff=this.stream.readFloat()),t&64&&(n.hf_density=this.stream.readFloat()),t&256&&(n.hf_start_r=this.stream.readByte()),t&512&&(n.hf_start_g=this.stream.readByte()),t&1024&&(n.hf_start_b=this.stream.readByte()),t&2048&&(n.hf_start_dist=this.stream.readLong()),t&4096&&(n.hf_end_r=this.stream.readByte()),t&8192&&(n.hf_end_g=this.stream.readByte()),t&16384&&(n.hf_end_b=this.stream.readByte()),t&32768&&(n.hf_end_dist=this.stream.readLong()),this.handler&&this.handler.onFog&&this.handler.onFog(n)}parseDamage(){let t=this.stream.readByte(),n=[];for(let i=0;i<t;i++){let r=this.stream.readByte(),a={x:0,y:0,z:0};this.stream.readDir(a);let s=r&31,o=(r&32)!==0,l=(r&64)!==0,c=(r&128)!==0;n.push({damage:s,health:o,armor:l,power:c,dir:a})}this.handler&&this.handler.onDamage&&this.handler.onDamage(n)}parseTempEntity(){let t=this.stream.readByte(),n={x:0,y:0,z:0},i={x:0,y:0,z:0},r={x:0,y:0,z:0},a,s,o,l,c;switch(t){case H.EXPLOSION1:case H.EXPLOSION2:case H.ROCKET_EXPLOSION:case H.GRENADE_EXPLOSION:case H.ROCKET_EXPLOSION_WATER:case H.GRENADE_EXPLOSION_WATER:case H.BFG_EXPLOSION:case H.BFG_BIGEXPLOSION:case H.BOSSTPORT:case H.PLASMA_EXPLOSION:case H.PLAIN_EXPLOSION:case H.CHAINFIST_SMOKE:case H.TRACKER_EXPLOSION:case H.TELEPORT_EFFECT:case H.DBALL_GOAL:case H.NUKEBLAST:case H.WIDOWSPLASH:case H.EXPLOSION1_BIG:case H.EXPLOSION1_NP:this.stream.readPos(n);break;case H.GUNSHOT:case H.BLOOD:case H.BLASTER:case H.SHOTGUN:case H.SPARKS:case H.BULLET_SPARKS:case H.SCREEN_SPARKS:case H.SHIELD_SPARKS:case H.BLASTER2:case H.FLECHETTE:case H.MOREBLOOD:case H.ELECTRIC_SPARKS:case H.HEATBEAM_SPARKS:case H.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(r);break;case H.SPLASH:case H.LASER_SPARKS:case H.WELDING_SPARKS:case H.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte();break;case H.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(i)):(this.stream.readPos(n),this.stream.readDir(r));break;case H.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(r)):(this.stream.readPos(n),this.stream.readPos(i));break;case H.RAILTRAIL:case H.BUBBLETRAIL:case H.BFG_LASER:case H.DEBUGTRAIL:case H.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(i);break;case H.PARASITE_ATTACK:case H.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case H.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;case H.LIGHTNING:l=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case H.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case H.FORCEWALL:this.stream.readPos(n),this.stream.readPos(i),s=this.stream.readByte();break;case H.STEAM:let u=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte(),this.stream.readShort(),u!==-1&&this.stream.readLong();break;case H.WIDOWBEAMOUT:this.stream.readShort();case H.HEATBEAM:case H.MONSTER_HEATBEAM:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;default:break}this.handler&&this.handler.onTempEntity(t,n,i,r,a,s,o,l,c)}parseSpawnBaseline(){let t=this.parseEntityBits(),n=Nn();this.parseDelta(Nn(),n,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(n)}parseFrame(){let t=this.stream.readLong(),n=this.stream.readLong(),i=this.stream.readByte(),r=this.stream.readByte(),a=this.stream.readData(r),s=this.stream.readByte();if(s=this.translateCommand(s),s!==Q.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s} (translated)`);let o=this.parsePlayerState(),l=this.stream.readByte();if(l=this.translateCommand(l),l!==Q.packetentities)throw new Error(`Expected svc_packetentities after svc_playerinfo, got ${l} (translated)`);let c=this.collectPacketEntities();if(this.isDemo===fS){let u=this.stream.readByte();for(let m=0;m<u;m++)this.stream.readByte()}this.isDemo===mS&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:i,areaBytes:r,areaBits:a,playerState:o,packetEntities:{delta:!0,entities:c}})}parsePlayerState(){let t=md(),n=this.stream.readShort();n&1&&(t.pm_type=this.stream.readByte()),n&2&&(t.origin.x=this.stream.readShort()*.125,t.origin.y=this.stream.readShort()*.125,t.origin.z=this.stream.readShort()*.125),n&4&&(t.velocity.x=this.stream.readShort()*.125,t.velocity.y=this.stream.readShort()*.125,t.velocity.z=this.stream.readShort()*.125),n&8&&(t.pm_time=this.stream.readByte()),n&16&&(t.pm_flags=this.stream.readByte()),n&32&&(t.gravity=this.stream.readShort()),n&64&&(t.delta_angles.x=this.stream.readShort()*(180/32768),t.delta_angles.y=this.stream.readShort()*(180/32768),t.delta_angles.z=this.stream.readShort()*(180/32768)),n&128&&(t.viewoffset.x=this.stream.readChar()*.25,t.viewoffset.y=this.stream.readChar()*.25,t.viewoffset.z=this.stream.readChar()*.25),n&256&&(t.viewangles.x=this.stream.readAngle16(),t.viewangles.y=this.stream.readAngle16(),t.viewangles.z=this.stream.readAngle16()),n&512&&(t.kick_angles.x=this.stream.readChar()*.25,t.kick_angles.y=this.stream.readChar()*.25,t.kick_angles.z=this.stream.readChar()*.25),n&4096&&(t.gun_index=this.stream.readByte()),n&8192&&(t.gun_frame=this.stream.readByte(),t.gun_offset.x=this.stream.readChar()*.25,t.gun_offset.y=this.stream.readChar()*.25,t.gun_offset.z=this.stream.readChar()*.25,t.gun_angles.x=this.stream.readChar()*.25,t.gun_angles.y=this.stream.readChar()*.25,t.gun_angles.z=this.stream.readChar()*.25),n&1024&&(t.blend[0]=this.stream.readByte(),t.blend[1]=this.stream.readByte(),t.blend[2]=this.stream.readByte(),t.blend[3]=this.stream.readByte()),n&2048&&(t.fov=this.stream.readByte()),n&16384&&(t.rdflags=this.stream.readByte());let i=this.stream.readLong();for(let r=0;r<32;r++)i&1<<r&&(t.stats[r]=this.stream.readShort());return t}parsePacketEntities(t){let n=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:md(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=Nn();this.parseDelta(Nn(),i,n.number,n.bits,n.bitsHigh),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&sS&&(t|=this.stream.readByte()<<8),t&cS&&(t|=this.stream.readByte()<<16),t&lS&&(t|=this.stream.readByte()<<24);let n=0;t&uS&&(n=this.stream.readByte());let i;return t&oS?i=this.stream.readShort():i=this.stream.readByte(),{number:i,bits:t,bitsHigh:n}}parseDelta(t,n,i,r,a=0){n.number=t.number,n.modelindex=t.modelindex,n.modelindex2=t.modelindex2,n.modelindex3=t.modelindex3,n.modelindex4=t.modelindex4,n.frame=t.frame,n.skinnum=t.skinnum,n.effects=t.effects,n.renderfx=t.renderfx,n.origin.x=t.origin.x,n.origin.y=t.origin.y,n.origin.z=t.origin.z,n.old_origin.x=t.origin.x,n.old_origin.y=t.origin.y,n.old_origin.z=t.origin.z,n.angles.x=t.angles.x,n.angles.y=t.angles.y,n.angles.z=t.angles.z,n.sound=t.sound,n.event=t.event,n.solid=t.solid,n.alpha=t.alpha,n.scale=t.scale,n.instanceBits=t.instanceBits,n.loopVolume=t.loopVolume,n.loopAttenuation=t.loopAttenuation,n.owner=t.owner,n.oldFrame=t.oldFrame,n.number=i,n.bits=r,n.bitsHigh=a,r&xo&&(n.modelindex=this.stream.readByte()),r&Ro&&(n.modelindex2=this.stream.readByte()),r&Lo&&(n.modelindex3=this.stream.readByte()),r&zo&&(n.modelindex4=this.stream.readByte()),r&So&&(n.frame=this.stream.readByte()),r&Mo&&(n.frame=this.stream.readShort()),r&Vr&&r&$r?n.skinnum=this.stream.readLong():r&Vr?n.skinnum=this.stream.readByte():r&$r&&(n.skinnum=this.stream.readShort()),r&Hr&&r&Kr?n.effects=this.stream.readLong():r&Hr?n.effects=this.stream.readByte():r&Kr&&(n.effects=this.stream.readShort()),r&Gr&&r&Wr?n.renderfx=this.stream.readLong():r&Gr?n.renderfx=this.stream.readByte():r&Wr&&(n.renderfx=this.stream.readShort()),r&po&&(n.origin.x=this.stream.readCoord()),r&yo&&(n.origin.y=this.stream.readCoord()),r&bo&&(n.origin.z=this.stream.readCoord()),r&ko&&(n.angles.x=this.stream.readAngle()),r&wo&&(n.angles.y=this.stream.readAngle()),r&Ao&&(n.angles.z=this.stream.readAngle()),r&No&&this.stream.readPos(n.old_origin),r&Oo&&(n.sound=this.stream.readByte()),r&Eo?n.event=this.stream.readByte():n.event=0,r&Io&&(n.solid=this.stream.readShort()),r&To&&(n.alpha=this.stream.readByte()/255),r&Co&&(n.scale=this.stream.readFloat()),r&Po&&(n.instanceBits=this.stream.readLong()),r&Fo&&(n.loopVolume=this.stream.readByte()/255),a&Do&&(n.loopAttenuation=this.stream.readByte()/255),a&Uo&&(n.owner=this.stream.readShort()),a&Bo&&(n.oldFrame=this.stream.readShort())}},Di=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(Di||{}),im=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.currentProtocolVersion=0,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new cy(e),this.state=0,this.accumulatedTime=0,this.currentProtocolVersion=0}play(){this.reader&&(this.state=1)}pause(){this.state===1&&(this.state=2)}stop(){this.state=0,this.reader&&this.reader.reset(),this.accumulatedTime=0,this.currentProtocolVersion=0}setFrameDuration(e){this.frameDuration=e}setSpeed(e){this.playbackSpeed=Math.max(.1,Math.min(e,16))}getSpeed(){return this.playbackSpeed}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.processNextFrame())return;this.accumulatedTime-=this.frameDuration}}stepForward(){this.reader&&this.processNextFrame()}stepBackward(){console.warn("stepBackward not implemented")}processNextFrame(){if(!this.reader||!this.reader.hasMore())return this.state=3,!1;let e=this.reader.readNextBlock();if(!e)return this.state=3,!1;let t=new Go(e.data,this.handler);return t.setProtocolVersion(this.currentProtocolVersion),t.parseMessage(),this.currentProtocolVersion=t.getProtocolVersion(),!0}getState(){return this.state}getCurrentTime(){return this.accumulatedTime}};var hS=Object.defineProperty,rm=(e,t)=>{for(var n in t)hS(e,n,{get:t[n],enumerable:!0})},Vt={x:0,y:0,z:0};var YC=Math.PI/180;function Qr(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function am(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function Hn(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Bi(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function _S(e){return Bi(e,e)}function hn(e){return Math.sqrt(_S(e))}function sm(e){let t=hn(e);return t===0?e:Hn(e,1/t)}var om=0,cm=1,lm=2,gS=Math.PI/180,qC=180/Math.PI;function Ho(e,t){switch(t){case om:return e.x;case cm:return e.y;case lm:default:return e.z}}function Vo(e){return e*gS}function Gn(e){let t=e%360;return t<0?360+t:t}function ta(e){let t=Vo(Ho(e,cm)),n=Vo(Ho(e,om)),i=Vo(Ho(e,lm)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(i),c=Math.cos(i),u={x:o*a,y:o*r,z:-s},m={x:-l*s*a-c*-r,y:-l*s*r-c*a,z:-l*o},d={x:c*s*a-l*-r,y:c*s*r-l*a,z:c*o};return{forward:u,right:m,up:d}}var Bn=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var ht=1,Wt=2;var $o=8,Xo=16,vS=32;var pS=16384;var na=65536,um=1<<17,yS=1<<18,wS=1<<19,AS=1<<20,SS=1<<21,ES=1<<22,bS=1<<23,ZC=1<<24,ia=1<<25,kS=1<<26,jC=1<<27,JC=1<<28,QC=1<<29,ra=1<<30,e7=1<<31;var t7=1<<25,n7=1<<28,i7=1<<29,r7=1<<30,a7=1<<31;var s7=ht|Wt,o7=ht|na|Wt|ia|ra,c7=ht|na|Wt,l7=ht|um|Wt|ia|ra,u7=vS|$o|Xo,d7=ht|Xo|$o,xS=ht|ia|ra|Wt|kS,m7=yS|wS|AS|SS|ES|bS,f7=ht|$o|Xo|ia|ra,h7=ht|na|Wt,_7=ht|Wt,g7=ht|na|Wt|um,v7=xS|pS;var p7=Number.MAX_SAFE_INTEGER-1;var Gi=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(Gi||{});var dm=256;var TS=256,Hi=8192,Vi=2048,Wi=512,MS=256,RS=dm*2,LS=256,Wo=32;var we=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+Hi]="Sounds",e[e.Images=e.Sounds+Vi]="Images",e[e.Lights=e.Images+Wi]="Lights",e[e.ShadowLights=e.Lights+TS]="ShadowLights",e[e.Items=e.ShadowLights+LS]="Items",e[e.PlayerSkins=e.Items+MS]="PlayerSkins",e[e.General=e.PlayerSkins+dm]="General",e[e.WheelWeapons=e.General+RS]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Wo]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Wo]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Wo]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(we||{}),y7=we.MaxConfigStrings;var zS={};rm(zS,{addReplayFrame:()=>CS,createReplaySession:()=>IS,deserializeReplay:()=>OS,serializeReplay:()=>NS});function NS(e){return JSON.stringify(e,null,2)}function OS(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function IS(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function CS(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var Ki=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(Ki||{});var Tt=(e=>(e[e.Ducked=1]="Ducked",e[e.JumpHeld=2]="JumpHeld",e[e.OnGround=4]="OnGround",e[e.TimeWaterJump=8]="TimeWaterJump",e[e.TimeLand=16]="TimeLand",e[e.TimeTeleport=32]="TimeTeleport",e[e.NoPositionalPrediction=64]="NoPositionalPrediction",e[e.OnLadder=128]="OnLadder",e[e.NoAngularPrediction=256]="NoAngularPrediction",e[e.IgnorePlayerCollision=512]="IgnorePlayerCollision",e[e.TimeTrick=1024]="TimeTrick",e))(Tt||{});function Vn(e,t){return(e&t)!==0}var aa=(e=>(e[e.Normal=0]="Normal",e[e.Grapple=1]="Grapple",e[e.NoClip=2]="NoClip",e[e.Spectator=3]="Spectator",e[e.Dead=4]="Dead",e[e.Gib=5]="Gib",e[e.Freeze=6]="Freeze",e))(aa||{}),_t=(e=>(e[e.None=0]="None",e[e.Attack=1]="Attack",e[e.Use=2]="Use",e[e.Holster=4]="Holster",e[e.Jump=8]="Jump",e[e.Crouch=16]="Crouch",e[e.Any=128]="Any",e))(_t||{});function PS(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=hn(t);if(u<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let _=u<l?l:u;m+=_*o*n}s>0&&!a&&(m+=u*c*s*n);let d=u-m;if(d<0&&(d=0),d===u)return t;let f=d/u;return Hn(t,f)}function FS(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=Bi(t,n),o=i-s;if(o<=0)return t;let l=r*a*i;return l>o&&(l=o),{x:t.x+n.x*l,y:t.y+n.y*l,z:t.z+n.z*l}}function DS(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=hn(a);if(s>r){let o=r/s;a=Hn(a,o),s=r}return{wishdir:s===0?a:sm(a),wishspeed:s}}function US(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=Qr(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=Qr(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=Qr(a,{x:0,y:0,z:-60}):a=Qr(a,{x:0,y:0,z:10});let s=hn(a);if(s>r){let o=r/s;a=Hn(a,o),s=r}return s*=.5,{wishdir:s===0?a:sm(a),wishspeed:s}}function BS(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function GS(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function Yo(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=BS(n,i),r={...r,x:GS(r.x)});let a=ta(r);return{viewangles:r,...a}}var mm=200,fm=200,hm=200,_m=140,gm=150,vm=3;function HS(e){let t=Gn(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function pm(e,t){return{x:HS(e.x+t.x),y:Gn(e.y+t.y),z:Gn(e.z+t.z)}}function ym(e,t){let n=t.sensitivityX??t.sensitivity,i=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*i,y:e.deltaX*n,z:0}}var _n=(e=>(e[e.bad=0]="bad",e[e.nop=1]="nop",e[e.move=2]="move",e[e.userinfo=3]="userinfo",e[e.stringcmd=4]="stringcmd",e))(_n||{});var wm=64;var Am=0,Sm=1,Em=2,bm=3,km=4,xm=5,Tm=6,Mm=7,Rm=8;var Lm=11,zm=12,Nm=13;function VS(e,t,n){let i=Math.floor(n/2),r=n%2!==0,a=t+i,s=e[a]||0;if(r){let o=e[a+1]||0,l=s>>>8&255;return(o&255)<<8|l}else return s&65535}function Om(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return(VS(e,t,a)&o)>>>s}var $i=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))($i||{}),Fe=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(Fe||{}),Im=12,Cm=9,w7=Math.ceil(Im*Cm/16),Pm=23,Fm=2,A7=Math.ceil(Pm*Fm/16),WS={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,bandolier:10,ammo_pack:10,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22,tag_token:-1};function Dm(e,t){return t<0||t>=Im?0:Om(e,34,t,Cm)}function sa(e,t){let n;return typeof t=="number"?n=t:n=WS[t],n===void 0||n<0||n>=Pm?0:Om(e,41,n,Fm)}function Um(e,t){e.writeByte(t.msec),e.writeByte(t.buttons),e.writeAngle16(t.angles.x),e.writeAngle16(t.angles.y),e.writeAngle16(t.angles.z),e.writeShort(t.forwardmove),e.writeShort(t.sidemove),e.writeShort(t.upmove),e.writeByte(0),e.writeByte(0)}var et=(e=>(e[e.MinLight=1]="MinLight",e[e.ViewerModel=2]="ViewerModel",e[e.WeaponModel=4]="WeaponModel",e[e.FullBright=8]="FullBright",e[e.DepthHack=16]="DepthHack",e[e.Translucent=32]="Translucent",e[e.FrameLerp=64]="FrameLerp",e[e.Beam=128]="Beam",e[e.CustomLight=256]="CustomLight",e[e.Glow=512]="Glow",e[e.ShellRed=1024]="ShellRed",e[e.ShellGreen=2048]="ShellGreen",e[e.ShellBlue=4096]="ShellBlue",e[e.IrVisible=32768]="IrVisible",e[e.ShellDouble=65536]="ShellDouble",e[e.ShellHalfDam=131072]="ShellHalfDam",e[e.MinLightPlus=262144]="MinLightPlus",e[e.ExtraLight=524288]="ExtraLight",e[e.BeamLightning=1048576]="BeamLightning",e))(et||{});var KS={};rm(KS,{U_ANGLE1:()=>JS,U_ANGLE2:()=>QS,U_ANGLE3:()=>e2,U_EFFECTS:()=>i2,U_EVENT:()=>s2,U_FRAME:()=>t2,U_MODEL:()=>XS,U_MODEL2:()=>c2,U_MODEL3:()=>l2,U_MODEL4:()=>u2,U_MOREBITS:()=>o2,U_NUMBER:()=>$S,U_ORIGIN1:()=>qS,U_ORIGIN2:()=>ZS,U_ORIGIN3:()=>jS,U_REMOVE:()=>d2,U_RENDERFX:()=>r2,U_SKIN:()=>n2,U_SOLID:()=>a2,U_SOUND:()=>YS});var $S=1,XS=2,YS=4,qS=8,ZS=16,jS=32,JS=64,QS=128,e2=256,t2=512,n2=1024,i2=2048,r2=4096,a2=8192,s2=16384,o2=32768,c2=1,l2=2,u2=4,d2=32768,Ui=.025,Ko=33554432,ea={None:0,Feet:1,Waist:2,Under:3},m2=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},f2=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&Ko))return{...e,waterLevel:ea.None};let s=ea.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&Ko){s=ea.Waist;let c=e.origin.z+22;n.z=c,t(n)&Ko&&(s=ea.Under)}return{...e,waterLevel:s}},qo=(e,t,n,i)=>{let r={...e};r=m2(r,n),r=f2(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:l,viewAngles:c}=r,u=l>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:d}=ta(u),f=PS({velocity:s,frametime:Ui,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:l,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),_=l>=2?US({forward:m,right:d,cmd:t,maxSpeed:320}):DS({forward:m,right:d,cmd:t,maxSpeed:320}),p=FS({velocity:f,wishdir:_.wishdir,wishspeed:_.wishspeed,accel:o||l>=2?10:1,frametime:Ui}),v=n(a,{x:a.x+p.x*Ui,y:a.y+p.y*Ui,z:a.z+p.z*Ui});return{...r,origin:v.endpos,velocity:p}},Bm=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=Bn[t];e.x=n[0],e.y=n[1],e.z=n[2]}},Zo=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<Bn.length;i++){let r=Bn[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},Xi=class{constructor(e=1024){this.buffer=new Uint8Array(e),this.view=new DataView(this.buffer.buffer),this.offset=0}ensureCapacity(e){if(this.offset+e>this.buffer.length){let t=Math.max(this.buffer.length*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer)}}getData(){return this.buffer.slice(0,this.offset)}writeByte(e){this.ensureCapacity(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureCapacity(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureCapacity(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeUShort(e){this.ensureCapacity(2),this.view.setUint16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureCapacity(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureCapacity(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length+1;this.ensureCapacity(t);for(let n=0;n<e.length;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+e.length,0),this.offset+=t}writeData(e){this.ensureCapacity(e.length),this.buffer.set(e,this.offset),this.offset+=e.length}writeCoord(e){this.writeShort(Math.round(e*8))}writeAngle(e){this.writeByte(Math.round(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.round(e*65536/360))}writeDir(e,t,n){let i=0,r=-999999,a=Math.sqrt(e*e+t*t+n*n);if(a>0){e/=a,t/=a,n/=a;for(let s=0;s<162;s++){let o=e*Bn[s][0]+t*Bn[s][1]+n*Bn[s][2];o>r&&(r=o,i=s)}}this.writeByte(i)}},fn=class Oe{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new Zo(Oe.MAX_RELIABLE_BUFFER);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=0,i=!1,r=0;this.reliableLength>0&&(this.reliableLength>Oe.FRAGMENT_SIZE?(i=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),n=this.reliableLength-this.fragmentSendOffset,n>Oe.FRAGMENT_SIZE&&(n=Oe.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=n):n=this.reliableLength);let a=Oe.PACKET_HEADER,s=n>0?2+(i?8:0):0,o=t?t.length:0;a+s+n+o>Oe.MAX_MSGLEN&&(o=Oe.MAX_MSGLEN-a-s-n,o<0&&(o=0));let l=new ArrayBuffer(a+s+n+o),c=new DataView(l),u=new Uint8Array(l),m=this.outgoingSequence;n>0&&(m|=2147483648,(this.outgoingReliableSequence&1)!==0&&(m|=1073741824)),c.setUint32(0,m,!0);let d=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(d|=2147483648),c.setUint32(4,d,!0),c.setUint16(8,this.qport,!0);let f=a;if(n>0){let _=n;i&&(_|=32768),c.setUint16(f,_,!0),f+=2,i&&(c.setUint32(f,r,!0),f+=4,c.setUint32(f,this.reliableLength,!0),f+=4);let v=this.reliableMessage.getBuffer().subarray(r,r+n);u.set(v,f),f+=n}if(t&&o>0){let _=t.slice(0,o);u.set(_,f)}return u}process(t){if(t.length<Oe.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,l=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let _=l?1:0,p=this.outgoingReliableSequence&1;_!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}let c=(i&2147483648)!==0,u=(i&1073741824)!==0?1:0,m=Oe.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let _=n.getUint16(m,!0);m+=2;let p=(_&32768)!==0;_&=32767;let v=this.incomingReliableSequence&1;if(u===v)if(p){if(m+8>t.byteLength)return null;let y=n.getUint32(m,!0);m+=4;let S=n.getUint32(m,!0);if(m+=4,S>Oe.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${S} > ${Oe.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==S)&&(this.fragmentBuffer=new Uint8Array(S),this.fragmentLength=S,this.fragmentReceived=0),m+_>t.byteLength)return null;let E=t.subarray(m,m+_);y===this.fragmentReceived&&y+_<=S&&(this.fragmentBuffer.set(E,y),this.fragmentReceived+=_,this.fragmentReceived>=S&&(d=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,m+_>t.byteLength)return null;d=t.slice(m,m+_)}m+=_}let f=t.slice(m);if(d&&d.length>0){let _=d.length+f.length,p=new Uint8Array(_);return p.set(d,0),p.set(f,d.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Oe.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Oe.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Oe.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>Oe.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}};fn.MAX_MSGLEN=1400;fn.FRAGMENT_SIZE=1024;fn.PACKET_HEADER=10;fn.HEADER_OVERHEAD=fn.PACKET_HEADER+2;fn.MAX_RELIABLE_BUFFER=262144;var Gm=fn;var Hm=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(Hm||{}),S7=Object.keys(Hm).length/2;var oa=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],Vm={blaster:null,shotgun:1,supershotgun:1,machinegun:0,chaingun:0,grenades:3,grenadelauncher:3,rocketlauncher:2,hyperblaster:4,railgun:5,bfg10k:4,grapple:null,chainfist:null,etf_rifle:8,prox_launcher:11,ionripper:4,plasmabeam:4,phalanx:6,disruptor:10,trap:7};var h2=Object.defineProperty,_2=(e,t)=>{for(var n in t)h2(e,n,{get:t[n],enumerable:!0})},la=null,ca=[1,1,1,1],Wm=["ch1","ch2","ch3"],jo=[null,null,null],g2=e=>{for(let t=0;t<Wm.length;t++){let n=Wm[t];try{jo[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{jo[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
170
|
-
`)}}}
|
|
171
|
-
`)}},
|
|
172
|
-
`)}},
|
|
173
|
-
`)}
|
|
174
|
-
`),u=n.height/2-c.length*10;for(let m of c)ke.SCR_DrawCenterString(u,m),u+=16}ac.drawCenterPrint(ke,o,l),ac.drawNotifications(ke,o),Jm.drawSubtitles(ke,o),v2(ke,n.width,n.height)}function da(){return ac}function I2(){return Jm}function C2(e,t,n){t>=we.Models&&t<we.Models+Hi?e.RegisterModel(n):t>=we.Sounds&&t<we.Sounds+Vi?e.RegisterSound(n):t>=we.Images&&t<we.Images+Wi&&e.Draw_RegisterPic(n)}var ec=1e-6,ua=typeof Float32Array<"u"?Float32Array:Array,Ym=Math.random;function tc(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var P2={};_2(P2,{add:()=>G2,angle:()=>u5,bezier:()=>n5,ceil:()=>H2,clone:()=>F2,copy:()=>U2,create:()=>Qm,cross:()=>J2,dist:()=>p5,distance:()=>r0,div:()=>v5,divide:()=>i0,dot:()=>oc,equals:()=>h5,exactEquals:()=>f5,floor:()=>V2,forEach:()=>S5,fromValues:()=>D2,hermite:()=>t5,inverse:()=>Z2,len:()=>w5,length:()=>e0,lerp:()=>Q2,max:()=>K2,min:()=>W2,mul:()=>g5,multiply:()=>n0,negate:()=>q2,normalize:()=>j2,random:()=>i5,rotateX:()=>o5,rotateY:()=>c5,rotateZ:()=>l5,round:()=>$2,scale:()=>X2,scaleAndAdd:()=>Y2,set:()=>B2,slerp:()=>e5,sqrDist:()=>y5,sqrLen:()=>A5,squaredDistance:()=>a0,squaredLength:()=>s0,str:()=>m5,sub:()=>_5,subtract:()=>t0,transformMat3:()=>a5,transformMat4:()=>r5,transformQuat:()=>s5,zero:()=>d5});function Qm(){var e=new ua(3);return ua!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function F2(e){var t=new ua(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function e0(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function D2(e,t,n){var i=new ua(3);return i[0]=e,i[1]=t,i[2]=n,i}function U2(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function B2(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function G2(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function t0(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function n0(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function i0(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function H2(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function V2(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function W2(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function K2(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function $2(e,t){return e[0]=tc(t[0]),e[1]=tc(t[1]),e[2]=tc(t[2]),e}function X2(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function Y2(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function r0(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function a0(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function s0(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function q2(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Z2(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function j2(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function oc(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function J2(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=r*l-a*o,e[1]=a*s-i*l,e[2]=i*o-r*s,e}function Q2(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function e5(e,t,n,i){var r=Math.acos(Math.min(Math.max(oc(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function t5(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,l=s*(a-2)+a,c=s*(a-1),u=s*(3-2*a);return e[0]=t[0]*o+n[0]*l+i[0]*c+r[0]*u,e[1]=t[1]*o+n[1]*l+i[1]*c+r[1]*u,e[2]=t[2]*o+n[2]*l+i[2]*c+r[2]*u,e}function n5(e,t,n,i,r,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,m=3*l*s,d=l*a;return e[0]=t[0]*c+n[0]*u+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*u+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*u+i[2]*m+r[2]*d,e}function i5(e,t){t=t===void 0?1:t;var n=Ym()*2*Math.PI,i=Ym()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function r5(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function a5(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function s5(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=r*c-a*l,m=a*o-i*c,d=i*l-r*o;return u=u+u,m=m+m,d=d+d,e[0]=o+s*u+r*d-a*m,e[1]=l+s*m+a*u-i*d,e[2]=c+s*d+i*m-r*u,e}function o5(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function c5(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function l5(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function u5(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=l&&oc(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function d5(e){return e[0]=0,e[1]=0,e[2]=0,e}function m5(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function f5(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function h5(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=ec*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=ec*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=ec*Math.max(1,Math.abs(r),Math.abs(o))}var _5=t0,g5=n0,v5=i0,p5=r0,y5=a0,w5=e0,A5=s0,S5=(function(){var e=Qm();return function(t,n,i,r,a,s){var o,l;for(n||(n=3),i||(i=0),r?l=Math.min(r*n+i,t.length):l=t.length,o=i;o<l;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var E5={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function b5(e){return{x:Math.max(-14,Math.min(14,e.x)),y:Math.max(-14,Math.min(14,e.y)),z:Math.max(-22,Math.min(30,e.z))}}function k5(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function x5(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=k5(t,i,r),s=e+a,l=Vn(n,Tt.Ducked)&&i?s*4:s;return{bobTime:s,bobCycle:Math.floor(l),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(l*Math.PI))}}var ma=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...E5,...e}}addKick(e){e.durationMs<=0||(this.kick={...e,remainingMs:e.durationMs})}get last(){return this.lastSample}sample(e,t){let{forward:n,right:i}=ta(Yo({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??Vt}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=Vn(e.pmFlags,Tt.OnGround),s=x5(this.bobTime,r,e.pmFlags,a,t);this.bobTime=s.bobTime,this.bobCycle=s.bobCycle,this.bobCycleRun=s.bobCycleRun,this.bobFracSin=s.bobFracSin;let o=Bi(e.velocity,n)*this.settings.runPitch,l=Bi(e.velocity,i),c=l<0?-1:1,m=Math.abs(l)*this.settings.runRoll;m>2&&(m=2),m*=c;let d=this.bobFracSin*this.settings.bobPitch*r,f=this.bobFracSin*this.settings.bobRoll*r;Vn(e.pmFlags,Tt.Ducked)&&a&&(d*=6,f*=6),o+=Math.min(d,this.settings.maxBobAngle),f=Math.min(f,this.settings.maxBobAngle),this.bobCycle&1&&(f=-f),m+=f;let _=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),p=0,v=0,y=0,S=0,E=0;if(this.kick&&this.kick.remainingMs>0){let x=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));p+=x*this.kick.pitch,v+=x*this.kick.roll,this.kick.origin&&(y+=x*this.kick.origin.x,S+=x*this.kick.origin.y,E+=x*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let w={x:o+p,y:0,z:m+v},k={x:y,y:S,z:_+E},T={angles:w,offset:b5(k),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=T,T}},T5={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},M5=800,Ve={x:0,y:0,z:0},R5=64;function Mt(){return{origin:Ve,velocity:Ve,viewAngles:Ve,onGround:!1,pmFlags:Tt.OnGround,pmType:aa.Normal,waterLevel:Ki.None,gravity:M5,deltaAngles:Ve,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:0,damageIndicators:[],blend:[0,0,0,0],stats:[],kick_angles:Ve,kick_origin:Ve,gunoffset:Ve,gunangles:Ve,gunindex:0,pm_time:0,pm_type:aa.Normal,pm_flags:Tt.OnGround,gun_frame:0,rdflags:0,fov:90,pickupIcon:void 0,centerPrint:void 0,notify:void 0,client:void 0,health:0,armor:0,ammo:0}}function nc(e){return e?{...Mt(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:Ve,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:Mt()}function He(e,t,n){return e+(t-e)*n}function ic(e,t,n){let i=Gn(t-e);return i>180&&(i-=360),Gn(e+i*n)}function gn(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:He(e.origin.x,t.origin.x,i),y:He(e.origin.y,t.origin.y,i),z:He(e.origin.z,t.origin.z,i)},velocity:{x:He(e.velocity.x,t.velocity.x,i),y:He(e.velocity.y,t.velocity.y,i),z:He(e.velocity.z,t.velocity.z,i)},viewAngles:{x:ic(e.viewAngles.x,t.viewAngles.x,i),y:ic(e.viewAngles.y,t.viewAngles.y,i),z:ic(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:He(e.damageAlpha,t.damageAlpha,i),blend:[He(e.blend[0],t.blend[0],i),He(e.blend[1],t.blend[1],i),He(e.blend[2],t.blend[2],i),He(e.blend[3],t.blend[3],i)],health:He(e.health||0,t.health||0,i),armor:He(e.armor||0,t.armor||0,i),ammo:He(e.ammo||0,t.ammo||0,i)}}function qm(e,t,n,i,r){let a={forwardmove:t.forwardmove,sidemove:t.sidemove,upmove:t.upmove,buttons:t.buttons,angles:t.angles},s=qo(e,a,i,r),{viewangles:o}=Yo({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??Ve});return{...s,viewAngles:o}}var fa=class{constructor(e,t,n={}){this.baseFrame={frame:0,timeMs:0,state:Mt()},this.commands=[],this.predicted=Mt(),this.predictionError=Ve,this.settings={...T5,...n},this.trace=e,this.pointContents=t,this.predicted=this.baseFrame.state??Mt()}setAuthoritative(e){let t=nc(e.state);if(e.frame<=this.baseFrame.frame)return this.predicted;let n,i=this.commands.filter(r=>r.sequence<=e.frame&&r.sequence>this.baseFrame.frame);if(i.length>0||this.baseFrame.frame===e.frame){let r=nc(this.baseFrame.state);for(let a of i)r=qm(r,a,this.settings,this.trace,this.pointContents);n=r}if(n){let r=am(n.origin,t.origin),a=hn(r);a>10?this.predictionError=Ve:a>.1?this.predictionError=r:this.predictionError=Ve}else this.predictionError=Ve;return this.baseFrame={...e,state:t},this.commands=this.commands.filter(r=>r.sequence>e.frame),this.recompute()}getPredictionError(){return this.predictionError}decayError(e){let t=hn(this.predictionError);if(t>0){let n=t*10*e,i=Math.max(0,t-n)/t;this.predictionError=Hn(this.predictionError,i)}}enqueueCommand(e){return this.commands.push(e),this.commands.length>R5&&this.commands.shift(),this.recompute()}getCommand(e){return this.commands.find(t=>t.sequence===e)}getPredictedState(){return this.predicted}recompute(){let e=nc(this.baseFrame.state);for(let t of this.commands)e=qm(e,t,this.settings,this.trace,this.pointContents);return this.predicted=e,e}},Ae=null,sc=null;function L5(){if(!Ae){console.error("CGame Init: cgame imports not set");return}Ae.Com_Print(`===== CGame Initialization =====
|
|
175
|
-
`),
|
|
176
|
-
`)}function
|
|
177
|
-
`),Ae=null}function N5(e,t,n,i,r,a,s){O2(e,t,n,i,r,a,s)}function O5(){N2()}function I5(e){return 0}function C5(e){return e.stats[Fe.STAT_ACTIVE_WHEEL_WEAPON]??0}function P5(e){let t=[],n=e.stats[Fe.STAT_WEAPONS_OWNED_1]||0,i=e.stats[Fe.STAT_WEAPONS_OWNED_2]||0,r=n|i<<16;for(let a=0;a<oa.length;a++)r&1<<a&&t.push(a);return t}function F5(e,t){if(t<0||t>=oa.length)return 0;let n=oa[t],i=Vm[n];return i===null?-1:Dm(e.stats,i)}function D5(e){let t=0,n=Object.values($i);for(let i of n)sa(e.stats,i)>0&&t++;return t}function U5(e){return e.stats[Fe.STAT_HIT_MARKER]??0}function B5(e){let t=e;if(!t||!t.s||!t.cmd||!Ae||sc&&sc.value===0)return;let n=(a,s,o,l)=>{let c={x:0,y:0,z:0};return Ae.PM_Trace(a,s,o||c,l||c)},i=a=>{let s={x:0,y:0,z:0};return Ae.PM_Trace(a,a,s,s).contents||0},r=qo(t.s,t.cmd,n,i);t.s.origin=r.origin,t.s.velocity=r.velocity,t.s.onGround=r.onGround,t.s.waterLevel=r.waterLevel}function G5(e,t){Ae&&C2(Ae,e,t)}function H5(e,t,n){if(!Ae)return;da().setCenterPrint(e,Ae.CL_ClientTime())}function V5(e,t,n){if(!Ae)return;da().addNotification(t,n,Ae.CL_ClientTime())}function W5(e){da().clearNotifications()}function K5(e){da().clearCenterPrint()}function $5(e,t){if(!Ae)return;I2().addSubtitle(e,Ae.CL_ClientTime())}function X5(e){return{x:0,y:0,z:0}}function Y5(e){return null}function o0(e){return Ae=e,{Init:L5,Shutdown:z5,DrawHUD:N5,TouchPics:O5,LayoutFlags:I5,GetActiveWeaponWheelWeapon:C5,GetOwnedWeaponWheelWeapons:P5,GetWeaponWheelAmmoCount:F5,GetPowerupWheelCount:D5,GetHitMarkerDamage:U5,Pmove:B5,ParseConfigString:G5,ParseCenterPrint:H5,NotifyMessage:V5,ShowSubtitle:$5,ClearNotify:W5,ClearCenterprint:K5,GetMonsterFlashOffset:X5,GetExtension:Y5}}function c0(e,t){let n=new Map,i=new Set,r=()=>e.engine.renderer;return{get tick_rate(){return t.tickRate},get frame_time_s(){return t.frameTimeMs/1e3},get frame_time_ms(){return t.frameTimeMs},Com_Print:a=>{console.log(`[CGAME] ${a}`)},Com_Error:a=>{console.error(`[CGAME ERROR] ${a}`)},get_configstring:a=>t.configStrings.get(a)||"",TagMalloc:(a,s)=>({}),TagFree:a=>{},FreeTags:a=>{},cvar:(a,s,o)=>{if(!e.host||!e.host.cvars)return null;let l=e.host.cvars.get(a);return l||e.host.cvars.register({name:a,defaultValue:s,flags:o})},Cvar_Get:(a,s,o)=>{if(!e.host||!e.host.cvars)return{value:parseInt(s)||0};let l=e.host.cvars.get(a);return l||(l=e.host.cvars.register({name:a,defaultValue:s,flags:o})),{get value(){return l.number}}},cvar_set:(a,s)=>{e.host?.cvars?.setValue(a,s)},cvar_forceset:(a,s)=>{e.host?.cvars?.setValue(a,s)},CL_FrameValid:()=>!0,CL_FrameTime:()=>t.frameTimeMs,CL_ClientTime:()=>t.frameTimeMs,CL_ServerFrame:()=>t.serverFrame,CL_ServerProtocol:()=>t.serverProtocol,CL_GetClientName:a=>t.getClientName(a),CL_GetClientPic:a=>"",CL_GetClientDogtag:a=>"",CL_GetKeyBinding:a=>t.getKeyBinding(a),RegisterModel:a=>{if(!e.engine.assets)return;let s=a.split(".").pop()?.toLowerCase();s==="md2"?e.engine.assets.loadMd2Model(a).catch(o=>console.warn(`Failed to precache MD2 ${a}`,o)):s==="sp2"?e.engine.assets.loadSprite(a).catch(o=>console.warn(`Failed to precache Sprite ${a}`,o)):s==="md3"&&e.engine.assets.loadMd3Model(a).catch(o=>console.warn(`Failed to precache MD3 ${a}`,o))},RegisterSound:a=>{e.engine.assets&&e.engine.assets.loadSound(a).catch(s=>console.warn(`Failed to precache sound ${a}`,s))},Draw_RegisterPic:a=>(n.has(a)||i.has(a)||(i.add(a),e.engine.assets&&e.engine.assets.loadTexture(a).then(s=>{if(e.engine.renderer){let o=e.engine.renderer.registerTexture(a,s);n.set(a,o)}i.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),i.delete(a)})),a),Draw_GetPicSize:a=>{let s=a,o=n.get(s);return o?{width:o.width,height:o.height}:{width:0,height:0}},SCR_DrawChar:(a,s,o)=>{r()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let l=o,c=n.get(l);c&&r()?.drawPic(a,s,c)},SCR_DrawColorPic:(a,s,o,l,c)=>{let u=o,m=n.get(u);m&&r()?.drawPic(a,s,m,[l.x,l.y,l.z,c])},SCR_DrawFontString:(a,s,o)=>{r()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{r()?.drawCenterString(a,s)},SCR_MeasureFontString:a=>a.replace(/\^[0-9]/g,"").length*8,SCR_FontLineHeight:()=>8,SCR_SetAltTypeface:a=>{},SCR_DrawBind:(a,s,o)=>{let l=t.getKeyBinding(o);r()?.drawString(a,s,`[${o}]`)},Localize:a=>a,CL_GetTextInput:()=>"",CL_GetWarnAmmoCount:()=>5,CL_InAutoDemoLoop:()=>t.inAutoDemo,PM_Trace:(a,s,o,l)=>e.engine.trace(a,s,o,l)}}var Kn=null,Kt=0;var Yi=!0,qi=["ch1","ch2","ch3"],$n=[null,null,null],l0=async(e,t)=>{for(let n=0;n<qi.length;n++){let i=qi[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);$n[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");$n[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}Kn=$n[0]};var u0=()=>{if(Yi?(Kt++,Kt>=qi.length&&(Yi=!1,Kt=0)):(Yi=!0,Kt=0),Yi){if(Kn=$n[Kt],!Kn){let e=!1;for(let t=0;t<qi.length;t++){let n=(Kt+t)%qi.length;if($n[n]){Kt=n,Kn=$n[n],e=!0;break}}e||(Kn=null)}}else Kn=null;return Yi?Kt:-1};var q5=Object.defineProperty,Z5=Object.getOwnPropertyNames,An=(e,t)=>function(){return e&&(t=(0,e[Z5(e)[0]])(e=0)),t},j5=(e,t)=>{for(var n in t)q5(e,n,{get:t[n],enumerable:!0})};function ri(e){return{x:e.x,y:e.y,z:e.z}}function U(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function P(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function F(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Ta(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function J5(e){return Ta(e,e)}function Ue(e){return Math.sqrt(J5(e))}function B(e){let t=Ue(e);return t===0?e:F(e,1/t)}function Q5(e,t,n){return{x:e.x<t.x?t.x:e.x>n.x?n.x:e.x,y:e.y<t.y?t.y:e.y>n.y?n.y:e.y,z:e.z<t.z?t.z:e.z>n.z?n.z:e.z}}function eE(e,t,n,i){let r=0;if(t.x<n.x){let a=t.x-n.x;r+=a*a}else if(e.x>i.x){let a=e.x-i.x;r+=a*a}if(t.y<n.y){let a=t.y-n.y;r+=a*a}else if(e.y>i.y){let a=e.y-i.y;r+=a*a}if(t.z<n.z){let a=t.z-n.z;r+=a*a}else if(e.z>i.z){let a=e.z-i.z;r+=a*a}return r}function Qi(e,t){switch(t){case Ma:return e.x;case Ra:return e.y;case Ic:default:return e.z}}function ya(e){return e*Rf}function pc(e){return e*Lf}function yc(e){let t=e%360;return t<0?360+t:t}function j(e){let t=ya(Qi(e,Ra)),n=ya(Qi(e,Ma)),i=ya(Qi(e,Ic)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(i),c=Math.cos(i),u={x:o*a,y:o*r,z:-s},m={x:-l*s*a-c*-r,y:-l*s*r-c*a,z:-l*o},d={x:c*s*a-l*-r,y:c*s*r-l*a,z:c*o};return{forward:u,right:m,up:d}}function or(e){let t=Qi(e,Ma),n=Qi(e,Ra);if(t===0)return n===0?0:n>0?90:270;let i=pc(Math.atan2(n,t));return i<0?i+360:i}function ai(e){let t=e.x,n=e.y,i=e.z;if(n===0&&t===0)return{x:i>0?-90:-270,y:0,z:0};let r;t?r=pc(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=pc(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}function cr(e){return new Cc(e)}function tE(e){return JSON.stringify(e,null,2)}function nE(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function iE(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function rE(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}function aE(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=Ue(t);if(u<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let _=u<l?l:u;m+=_*o*n}s>0&&!a&&(m+=u*c*s*n);let d=u-m;if(d<0&&(d=0),d===u)return t;let f=d/u;return F(t,f)}function sE(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=Ta(t,n),o=i-s;if(o<=0)return t;let l=r*a*i;return l>o&&(l=o),{x:t.x+n.x*l,y:t.y+n.y*l,z:t.z+n.z*l}}function oE(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=Ue(a);if(s>r){let o=r/s;a=F(a,o),s=r}return{wishdir:s===0?a:B(a),wishspeed:s}}function cE(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=U(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=U(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=U(a,{x:0,y:0,z:-60}):a=U(a,{x:0,y:0,z:10});let s=Ue(a);if(s>r){let o=r/s;a=F(a,o),s=r}return s*=.5,{wishdir:s===0?a:B(a),wishspeed:s}}var d0,cc,K,lE,uE,Ma,Ra,Ic,Rf,Lf,lc,tt,m0,f0,h0,_0,ha,g0,Cc,De,Rt,dE,_a,ga,v0,mE,fE,p0,hE,Zi,uc,y0,w0,A0,S0,E0,b0,_E,qt,tr,gE,vE,pE,yn,yE,wE,AE,SE,EE,bE,kE,xE,TE,ME,RE,LE,zE,NE,Pc,OE,IE,Zt,zf,CE,Ot,PE,FE,DE,UE,BE,GE,HE,k0,dc,x0,T0,M0,R0,L0,z0,N0,va,mc,VE,O0,I0,WE,ae,ye,Nf,Of,If,Cf,Pf,Ff,Df,Uf,Bf,Gf,re,C0,P0,F0,KE,D0,U0,$E,XE,ei,B0,G0,H0,V0,W0,K0,$0,X0,Y0,q0,Z0,j0,J0,Q0,ef,tf,nf,rf,af,sf,of,Xn,pa,ji,cf,lf,YE,uf,vn,V,I,qE,fe,ZE,df,jE,JE,D=An({"../shared/dist/esm/index.js"(){"use strict";d0=Object.defineProperty,cc=(e,t)=>{for(var n in t)d0(e,n,{get:t[n],enumerable:!0})},K={x:0,y:0,z:0},lE=.1,uE=Math.PI/180,Ma=0,Ra=1,Ic=2,Rf=Math.PI/180,Lf=180/Math.PI,lc=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]],tt=624,m0=397,f0=2567483615,h0=2147483648,_0=2147483647,ha=4294967296,g0=class{constructor(e=5489){this.state=new Uint32Array(tt),this.index=tt,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<tt;t++){let n=this.state[t-1]^this.state[t-1]>>>30,i=Math.imul(n>>>0,1812433253)+t;this.state[t]=i>>>0}this.index=tt}nextUint32(){this.index>=tt&&this.twist();let e=this.state[this.index++];return e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0}twist(){for(let e=0;e<tt;e++){let t=this.state[e]&h0|this.state[(e+1)%tt]&_0,n=this.state[(e+m0)%tt]^t>>>1;(t&1)!==0&&(n^=f0),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==tt)throw new Error(`Expected ${tt} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},Cc=class{constructor(e={}){this.mt=new g0(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/ha}frandomRange(e,t){return e+(t-e)*this.frandom()}frandomMax(e){return this.frandomRange(0,e)}crandom(){return this.frandomRange(-1,1)}crandomOpen(){let e=Number.EPSILON;return this.frandomRange(-1+e,1)}irandomUint32(){return this.mt.nextUint32()}irandomRange(e,t){if(t-e<=1)return e;let n=t-e,i=ha-ha%n,r;do r=this.mt.nextUint32();while(r>=i);return e+r%n}irandom(e){return e<=0?0:this.irandomRange(0,e)}randomTimeRange(e,t){return t<=e?e:this.irandomRange(e,t)}randomTime(e){return this.irandom(e)}randomIndex(e){return this.irandom(e.length)}getState(){return{mt:this.mt.getState()}}setState(e){this.mt.setState(e.mt)}},De=1,Rt=2,dE=4,_a=8,ga=16,v0=32,mE=64,fE=8192,p0=16384,hE=32768,Zi=65536,uc=1<<17,y0=1<<18,w0=1<<19,A0=1<<20,S0=1<<21,E0=1<<22,b0=1<<23,_E=1<<24,qt=1<<25,tr=1<<26,gE=1<<27,vE=1<<28,pE=1<<29,yn=1<<30,yE=1<<31,wE=1,AE=2,SE=4,EE=8,bE=16,kE=32,xE=64,TE=128,ME=1<<25,RE=1<<28,LE=1<<29,zE=1<<30,NE=1<<31,Pc=De|Rt,OE=De|Zi|Rt|qt|yn,IE=De|Zi|Rt,Zt=De|uc|Rt|qt|yn,zf=v0|_a|ga,CE=De|ga|_a,Ot=De|qt|yn|Rt|tr,PE=y0|w0|A0|S0|E0|b0,FE=De|_a|ga|qt|yn,DE=De|Zi|Rt,UE=De|Rt,BE=De|Zi|Rt|uc,GE=Ot|p0,HE=Number.MAX_SAFE_INTEGER-1,k0=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(k0||{}),dc=256,x0=256,T0=8192,M0=2048,R0=512,L0=256,z0=dc*2,N0=256,va=32,mc=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+T0]="Sounds",e[e.Images=e.Sounds+M0]="Images",e[e.Lights=e.Images+R0]="Lights",e[e.ShadowLights=e.Lights+x0]="ShadowLights",e[e.Items=e.ShadowLights+N0]="Items",e[e.PlayerSkins=e.Items+L0]="PlayerSkins",e[e.General=e.PlayerSkins+dc]="General",e[e.WheelWeapons=e.General+z0]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+va]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+va]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+va]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(mc||{}),VE=mc.MaxConfigStrings,O0={},cc(O0,{addReplayFrame:()=>rE,createReplaySession:()=>iE,deserializeReplay:()=>nE,serializeReplay:()=>tE}),I0=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(I0||{}),WE=1080,ae=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(ae||{}),ye=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(ye||{}),Nf=0,Of=1,If=2,Cf=3,Pf=6,Ff=7,Df=8,Uf=11,Bf=12,Gf=13,re=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(re||{}),C0=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(C0||{}),P0=12,F0=9,KE=Math.ceil(P0*F0/16),D0=23,U0=2,$E=Math.ceil(D0*U0/16),XE={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,bandolier:10,ammo_pack:10,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22,tag_token:-1},ei=(e=>(e[e.MinLight=1]="MinLight",e[e.ViewerModel=2]="ViewerModel",e[e.WeaponModel=4]="WeaponModel",e[e.FullBright=8]="FullBright",e[e.DepthHack=16]="DepthHack",e[e.Translucent=32]="Translucent",e[e.FrameLerp=64]="FrameLerp",e[e.Beam=128]="Beam",e[e.CustomLight=256]="CustomLight",e[e.Glow=512]="Glow",e[e.ShellRed=1024]="ShellRed",e[e.ShellGreen=2048]="ShellGreen",e[e.ShellBlue=4096]="ShellBlue",e[e.IrVisible=32768]="IrVisible",e[e.ShellDouble=65536]="ShellDouble",e[e.ShellHalfDam=131072]="ShellHalfDam",e[e.MinLightPlus=262144]="MinLightPlus",e[e.ExtraLight=524288]="ExtraLight",e[e.BeamLightning=1048576]="BeamLightning",e))(ei||{}),B0={},cc(B0,{U_ANGLE1:()=>X0,U_ANGLE2:()=>Y0,U_ANGLE3:()=>q0,U_EFFECTS:()=>J0,U_EVENT:()=>tf,U_FRAME:()=>Z0,U_MODEL:()=>H0,U_MODEL2:()=>rf,U_MODEL3:()=>af,U_MODEL4:()=>sf,U_MOREBITS:()=>nf,U_NUMBER:()=>G0,U_ORIGIN1:()=>W0,U_ORIGIN2:()=>K0,U_ORIGIN3:()=>$0,U_REMOVE:()=>of,U_RENDERFX:()=>Q0,U_SKIN:()=>j0,U_SOLID:()=>ef,U_SOUND:()=>V0}),G0=1,H0=2,V0=4,W0=8,K0=16,$0=32,X0=64,Y0=128,q0=256,Z0=512,j0=1024,J0=2048,Q0=4096,ef=8192,tf=16384,nf=32768,rf=1,af=2,sf=4,of=32768,Xn=.025,pa=33554432,ji={None:0,Feet:1,Waist:2,Under:3},cf=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},lf=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&pa))return{...e,waterLevel:ji.None};let s=ji.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&pa){s=ji.Waist;let c=e.origin.z+22;n.z=c,t(n)&pa&&(s=ji.Under)}return{...e,waterLevel:s}},YE=(e,t,n,i)=>{let r={...e};r=cf(r,n),r=lf(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:l,viewAngles:c}=r,u=l>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:d}=j(u),f=aE({velocity:s,frametime:Xn,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:l,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),_=l>=2?cE({forward:m,right:d,cmd:t,maxSpeed:320}):oE({forward:m,right:d,cmd:t,maxSpeed:320}),p=sE({velocity:f,wishdir:_.wishdir,wishspeed:_.wishspeed,accel:o||l>=2?10:1,frametime:Xn}),v=n(a,{x:a.x+p.x*Xn,y:a.y+p.y*Xn,z:a.z+p.z*Xn});return{...r,origin:v.endpos,velocity:p}},uf=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<lc.length;i++){let r=lc[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},vn=class Ie{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new uf(Ie.MAX_RELIABLE_BUFFER);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=0,i=!1,r=0;this.reliableLength>0&&(this.reliableLength>Ie.FRAGMENT_SIZE?(i=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),n=this.reliableLength-this.fragmentSendOffset,n>Ie.FRAGMENT_SIZE&&(n=Ie.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=n):n=this.reliableLength);let a=Ie.PACKET_HEADER,s=n>0?2+(i?8:0):0,o=t?t.length:0;a+s+n+o>Ie.MAX_MSGLEN&&(o=Ie.MAX_MSGLEN-a-s-n,o<0&&(o=0));let l=new ArrayBuffer(a+s+n+o),c=new DataView(l),u=new Uint8Array(l),m=this.outgoingSequence;n>0&&(m|=2147483648,(this.outgoingReliableSequence&1)!==0&&(m|=1073741824)),c.setUint32(0,m,!0);let d=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(d|=2147483648),c.setUint32(4,d,!0),c.setUint16(8,this.qport,!0);let f=a;if(n>0){let _=n;i&&(_|=32768),c.setUint16(f,_,!0),f+=2,i&&(c.setUint32(f,r,!0),f+=4,c.setUint32(f,this.reliableLength,!0),f+=4);let v=this.reliableMessage.getBuffer().subarray(r,r+n);u.set(v,f),f+=n}if(t&&o>0){let _=t.slice(0,o);u.set(_,f)}return u}process(t){if(t.length<Ie.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,l=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let _=l?1:0,p=this.outgoingReliableSequence&1;_!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}let c=(i&2147483648)!==0,u=(i&1073741824)!==0?1:0,m=Ie.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let _=n.getUint16(m,!0);m+=2;let p=(_&32768)!==0;_&=32767;let v=this.incomingReliableSequence&1;if(u===v)if(p){if(m+8>t.byteLength)return null;let y=n.getUint32(m,!0);m+=4;let S=n.getUint32(m,!0);if(m+=4,S>Ie.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${S} > ${Ie.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==S)&&(this.fragmentBuffer=new Uint8Array(S),this.fragmentLength=S,this.fragmentReceived=0),m+_>t.byteLength)return null;let E=t.subarray(m,m+_);y===this.fragmentReceived&&y+_<=S&&(this.fragmentBuffer.set(E,y),this.fragmentReceived+=_,this.fragmentReceived>=S&&(d=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,m+_>t.byteLength)return null;d=t.slice(m,m+_)}m+=_}let f=t.slice(m);if(d&&d.length>0){let _=d.length+f.length,p=new Uint8Array(_);return p.set(d,0),p.set(f,d.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Ie.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Ie.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Ie.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>Ie.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}},vn.MAX_MSGLEN=1400,vn.FRAGMENT_SIZE=1024,vn.PACKET_HEADER=10,vn.HEADER_OVERHEAD=vn.PACKET_HEADER+2,vn.MAX_RELIABLE_BUFFER=262144,V=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="supershotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.HandGrenade="grenades",e.GrenadeLauncher="grenadelauncher",e.RocketLauncher="rocketlauncher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.Grapple="grapple",e.ChainFist="chainfist",e.EtfRifle="etf_rifle",e.ProxLauncher="prox_launcher",e.IonRipper="ionripper",e.PlasmaBeam="plasmabeam",e.Phalanx="phalanx",e.Disruptor="disruptor",e.Trap="trap",e))(V||{}),I=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(I||{}),qE=Object.keys(I).length/2,fe=(e=>(e.Shells="ammo_shells",e.Bullets="ammo_bullets",e.Rockets="ammo_rockets",e.Grenades="ammo_grenades",e.Cells="ammo_cells",e.Slugs="ammo_slugs",e.MagSlugs="ammo_magslug",e.Flechettes="ammo_flechettes",e.Disruptor="ammo_disruptor",e.Tesla="ammo_tesla",e.Trap="ammo_trap",e.Prox="ammo_prox",e))(fe||{}),ZE=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],df=(e=>(e[e.Auto=0]="Auto",e[e.Weapon=1]="Weapon",e[e.Voice=2]="Voice",e[e.Item=3]="Item",e[e.Body=4]="Body",e[e.Aux=5]="Aux",e[e.Footstep=6]="Footstep",e[e.Aux3=7]="Aux3",e[e.NoPhsAdd=8]="NoPhsAdd",e[e.Reliable=16]="Reliable",e[e.ForcePos=32]="ForcePos",e))(df||{}),jE=1,JE=2}});var QE,Sn=An({"src/inventory/ammo.ts"(){"use strict";D(),QE={[fe.Shells]:{id:fe.Shells,ammoType:I.Shells,quantity:10,weaponAmmo:!1},[fe.Bullets]:{id:fe.Bullets,ammoType:I.Bullets,quantity:50,weaponAmmo:!1},[fe.Rockets]:{id:fe.Rockets,ammoType:I.Rockets,quantity:5,weaponAmmo:!1},[fe.Grenades]:{id:fe.Grenades,ammoType:I.Grenades,quantity:5,weaponAmmo:!0},[fe.Cells]:{id:fe.Cells,ammoType:I.Cells,quantity:50,weaponAmmo:!1},[fe.Slugs]:{id:fe.Slugs,ammoType:I.Slugs,quantity:10,weaponAmmo:!1},[fe.MagSlugs]:{id:fe.MagSlugs,ammoType:I.MagSlugs,quantity:10,weaponAmmo:!1},[fe.Flechettes]:{id:fe.Flechettes,ammoType:I.Flechettes,quantity:50,weaponAmmo:!1},[fe.Disruptor]:{id:fe.Disruptor,ammoType:I.Disruptor,quantity:15,weaponAmmo:!1},[fe.Tesla]:{id:fe.Tesla,ammoType:I.Tesla,quantity:5,weaponAmmo:!1},[fe.Trap]:{id:fe.Trap,ammoType:I.Trap,quantity:5,weaponAmmo:!1},[fe.Prox]:{id:fe.Prox,ammoType:I.Prox,quantity:5,weaponAmmo:!1}}}});function jt(e,t){return(e&t)!==0}var mf,Hf=An({"src/combat/damageFlags.ts"(){"use strict";mf=(e=>(e[e.NONE=0]="NONE",e[e.RADIUS=1]="RADIUS",e[e.NO_ARMOR=2]="NO_ARMOR",e[e.ENERGY=4]="ENERGY",e[e.NO_KNOCKBACK=8]="NO_KNOCKBACK",e[e.BULLET=16]="BULLET",e[e.NO_PROTECTION=32]="NO_PROTECTION",e[e.DESTROY_ARMOR=64]="DESTROY_ARMOR",e[e.NO_REG_ARMOR=128]="NO_REG_ARMOR",e[e.NO_POWER_ARMOR=256]="NO_POWER_ARMOR",e[e.NO_INDICATOR=512]="NO_INDICATOR",e[e.NO_DAMAGE_EFFECTS=1024]="NO_DAMAGE_EFFECTS",e))(mf||{})}});function eb(e,t,n){if(e<=0||jt(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=Vf[n.armorType],r=jt(t,4)?i.energyProtection:i.normalProtection,a=Math.ceil(r*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function tb(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(jt(t,258))return{saved:0,remainingCells:r.cellCount};if(!r.type||r.cellCount<=0)return{saved:0,remainingCells:r.cellCount};let{forward:s}=j(r.angles),o={x:n.x-r.origin.x,y:n.y-r.origin.y,z:n.z-r.origin.z},l=Math.hypot(o.x,o.y,o.z);if(r.type==="screen"&&l>0){let v={x:o.x/l,y:o.y/l,z:o.z/l};if(v.x*s.x+v.y*s.y+v.z*s.z<=.3)return{saved:0,remainingCells:r.cellCount}}let c=a.ctfMode??!1,u=r.type==="screen"||c?1:2,m=r.type==="screen"?e/3:2*e/3;m=Math.max(1,m);let d=r.cellCount*u;jt(t,4)&&(d=Math.max(1,Math.floor(d/2))),d>m&&(d=Math.floor(m));let f=d/u;jt(t,4)&&(f*=2),f=Math.max(1,Math.floor(f));let _=Math.max(u,f),p=Math.max(0,r.cellCount-_);return{saved:d,remainingCells:p}}var wn,Vf,Wf=An({"src/combat/armor.ts"(){"use strict";D(),Hf(),wn=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(wn||{}),Vf={jacket:{baseCount:25,maxCount:50,normalProtection:.3,energyProtection:0},combat:{baseCount:50,maxCount:100,normalProtection:.6,energyProtection:.3},body:{baseCount:100,maxCount:200,normalProtection:.8,energyProtection:.6}}}});function Kf(e,t){return e.ownedWeapons.has(t)?(e.currentWeapon=t,!0):!1}var be,en=An({"src/inventory/playerInventory.ts"(){"use strict";Sn(),D(),Wf(),be=(e=>(e.Blue="key_blue",e.Red="key_red",e.Green="key_green",e.Yellow="key_yellow",e.DataCD="key_data_cd",e.PowerCube="key_power_cube",e.ExplosiveCharges="key_explosive_charges",e.PowerCore="key_power_core",e.Pyramid="key_pyramid",e.DataSpinner="key_data_spinner",e.Pass="key_pass",e.CommanderHead="key_commander_head",e.Airstrike="key_airstrike",e.NukeContainer="key_nuke_container",e.Nuke="key_nuke",e.RedFlag="key_red_flag",e.BlueFlag="key_blue_flag",e))(be||{})}});function $f(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var ff,Xf=An({"src/combat/weapons/state.ts"(){"use strict";ff=(e=>(e[e.WEAPON_READY=0]="WEAPON_READY",e[e.WEAPON_ACTIVATING=1]="WEAPON_ACTIVATING",e[e.WEAPON_DROPPING=2]="WEAPON_DROPPING",e[e.WEAPON_FIRING=3]="WEAPON_FIRING",e))(ff||{})}}),Yf={};j5(Yf,{ChangeWeapon:()=>ib,NoAmmoWeaponChange:()=>rb,setInstantSwitch:()=>nb,switchToBestWeapon:()=>qf});function nb(e){La=e}function ib(e,t){if(!e.client)return;let n=e.client;if(n.weaponstate!==2&&t){if(Kf(n.inventory,t),n.weaponstate=1,n.gun_frame=0,La){n.weaponstate=0,n.weapon_think_time=0;return}n.weapon_think_time=0}}function rb(e){e.client&&qf(e)}function qf(e){if(!e.client)return;let t=e.client.inventory,n=null;t.ownedWeapons.has(V.BFG10K)&&t.ammo.counts[I.Cells]>=50?n=V.BFG10K:t.ownedWeapons.has(V.RocketLauncher)&&t.ammo.counts[I.Rockets]>=1?n=V.RocketLauncher:t.ownedWeapons.has(V.Railgun)&&t.ammo.counts[I.Slugs]>=1?n=V.Railgun:t.ownedWeapons.has(V.Chaingun)&&t.ammo.counts[I.Bullets]>=1?n=V.Chaingun:t.ownedWeapons.has(V.SuperShotgun)&&t.ammo.counts[I.Shells]>=2?n=V.SuperShotgun:t.ownedWeapons.has(V.Machinegun)&&t.ammo.counts[I.Bullets]>=1?n=V.Machinegun:t.ownedWeapons.has(V.Shotgun)&&t.ammo.counts[I.Shells]>=1?n=V.Shotgun:n=V.Blaster,n&&n!==t.currentWeapon&&(Kf(t,n),e.client.weaponstate=1,e.client.gun_frame=0,La&&(e.client.weaponstate=0),e.client.weapon_think_time=0)}var La,ab=An({"src/combat/weapons/switching.ts"(){"use strict";en(),Sn(),La=!1}});D();en();Sn();var sb={...K};var C7=Object.freeze({aiflags:0,last_sighting:sb,trail_time:0,pausetime:0});var Fc=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"spawn_count",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"random",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"last_move_time",type:"float",save:!0},{name:"damage_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}];D();D();D();D();var ob=20,cb=440,lb=940,fc=32,ub=1<<24,Aa=1;D();D();function hf(e){return{mins:{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},maxs:{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}}}function tn(e,t){let n=hf(e),i=hf(t),r=eE(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function db(e){return e<=ob?"melee":e<=cb?"near":e<=lb?"mid":"far"}function nr(e,t){let{forward:n}=j(e.angles),i=B(P(t.origin,e.origin)),r=Ta(i,n);return(e.spawnflags&Aa)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function En(e,t,n,i){if((t.flags&ub)!==0)return!1;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},a={x:t.origin.x,y:t.origin.y,z:t.origin.z+t.viewheight},s=i?.throughGlass?1:3,o=n(r,null,null,a,e,s);return o.fraction===1||o.ent===t}D();function mb(e,t){let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=or(n)}function Zf(e){e.angles.y=yc(e.ideal_yaw)}function fb(e,t,n){e.enemy&&(e.goalentity=e.enemy,mb(e,e.enemy),Zf(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function hb(e,t,n,i){if(!e.enemy)return;(e.enemy.svflags&8)!==0&&(t.sightEntity=e,t.sightEntityFrame=t.frameNumber,e.light_level=128),e.show_hostile=t.timeSeconds+1;let r=e.monsterinfo.last_sighting;if(r.x=e.enemy.origin.x,r.y=e.enemy.origin.y,r.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){fb(e,t,n);return}let a=i?.pickTarget,s=a?.(e.combattarget)??e.enemy;e.goalentity=s,e.movetarget=s,e.combattarget=void 0,e.monsterinfo.aiflags|=4096,e.movetarget&&(e.movetarget.targetname=void 0),e.monsterinfo.pausetime=0,e.monsterinfo.run?.(e,n)}function _b(e,t,n,i){let r=tn(e,t),a=db(r);return a==="far"||t.light_level<=5||!En(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||nr(e,t):a==="mid"?nr(e,t):!0}function gb(e,t,n,i,r){if((e.spawnflags&Aa)!==0){if(!En(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=P(t.origin,e.origin);return Ue(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=or(a),Zf(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function vb(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&Aa)===0?t.sightEntity.enemy!==e.enemy?{candidate:t.sightEntity,heardit:!1}:{candidate:null,heardit:!1}:t.soundEntity&&t.soundEntityFrame>=t.frameNumber-1?{candidate:t.soundEntity,heardit:!0}:!e.enemy&&t.sound2Entity&&t.sound2EntityFrame>=t.frameNumber-1&&(e.spawnflags&Aa)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function pb(e){return(e.flags&fc)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&fc)!==0:!!(e.enemy&&(e.enemy.flags&fc)!==0)}function Dc(e,t,n,i,r={}){if((e.monsterinfo.aiflags&256)!==0)return e.goalentity?.classname==="target_actor",!1;if((e.monsterinfo.aiflags&4096)!==0)return!1;let{candidate:a,heardit:s}=vb(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(pb(a))return!1;if(s){if(!gb(e,a,t,r,i))return!1}else{if(!_b(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return hb(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}var hc=18;function jf(e,t){if(t===0)return{x:0,y:0,z:0};let n=ya(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function za(e,t,n){let i=jf(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function si(e,t){let n=yc(e.angles.y),i=e.ideal_yaw;if(n===i){e.angles.y=n;return}let r=e.yaw_speed*t*10,a=i-n;i>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>r?a=r:a<-r&&(a=-r),e.angles.y=yc(n+a)}function g(e,t){za(e,e.angles.y,t)}function Na(e,t){if(!t)return;let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=or(n)}function M(e,t,n){Dc(e,n.targetAwareness,n,n.trace)||si(e,t)}function z(e,t,n,i){if(!Dc(e,i.targetAwareness,i,i.trace)&&(Na(e,e.goalentity),si(e,n),t!==0&&za(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&tn(e,e.goalentity)<64&&e.goalentity.target)){let a=i.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function oe(e,t,n){t!==0&&za(e,e.angles.y,t),(e.monsterinfo.aiflags&32768)===0&&si(e,n)}function ce(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}Dc(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&Na(e,e.enemy??e.goalentity),si(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Jf(e,e.angles.y,t,i)}function yb(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&Na(e,t),si(e,i),n!==0&&za(e,e.angles.y,n)}function ue(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&Na(e,e.enemy),si(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Jf(e,e.angles.y,t,i)}function _f(e,t){if(e.movetype===1)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.mins.z-1},i=t.trace(e.origin,e.mins,e.maxs,n,e,Zt);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&zf?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function gf(e,t){let n={x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},i={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},r={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?r={x:n.x,y:n.y,z:0}:r={x:i.x,y:n.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,Zt).fraction<1)||(s===1?r={x:n.x,y:i.y,z:0}:r={x:i.x,y:i.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0)||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,Zt).fraction<1))return!0;return!1}function Jf(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=jf(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+r.x,y:e.origin.y+r.y,z:e.origin.z+r.z};if(i.trace(e.origin,e.mins,e.maxs,a,e,Zt).fraction===1){let v={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!gf(e,i)?(e.origin.x=v.x,e.origin.y=v.y,e.origin.z=v.z,!1):((e.flags&3)===0&&_f(e,i),!0)}if((e.flags&3)!==0)return!1;let o={...e.origin},l={...e.origin,z:e.origin.z+hc},c=i.trace(e.origin,e.mins,e.maxs,l,e,Zt);if(c.startsolid||c.allsolid)return!1;let u={x:l.x+r.x,y:l.y+r.y,z:l.z};if(i.trace(l,e.mins,e.maxs,u,e,Zt).fraction<1)return!1;let d={x:u.x,y:u.y,z:u.z-hc},f={x:d.x,y:d.y,z:d.z-hc},_=i.trace(u,e.mins,e.maxs,d,e,Zt);if(_.startsolid||_.allsolid)return!1;let p=_.endpos;return e.origin.x=p.x,e.origin.y=p.y,e.origin.z=p.z,gf(e,i)?(_f(e,i),!0):(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1)}D();D();var wb=Fc.filter(e=>e.save||e.type==="callback"),P7=new Map(wb.map(e=>[e.name,e]));D();D();Wf();Hf();D();function Ab(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let i=1;return n.quad_time&&n.quad_time>t&&(i*=4),n.double_time&&n.double_time>t&&(i*=2),i}function Sb(e,t,n,i,r){if(jt(r,8)||((e.flags??0)&4)!==0||i===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=B(n),c=F(o,(t===e?1600:500)*i/s);return e.velocity=U(e.velocity,c),c}function Eb(e,t,n,i,r){let a=i,s=0,o=0,l,c;if(e.powerArmor){let u=tb(i,r,t,n,e.powerArmor);s=u.saved,l=u.remainingCells,a-=s}if(e.regularArmor){let u=eb(a,r,e.regularArmor);o=u.saved,c=u.remainingArmor,a-=o}return[Math.max(0,a),s,o,l,c]}function vf(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function he(e,t,n,i,r,a,s,o,l,c,u,m){if(!e.takedamage)return null;let d=Ab(n,u),f=s*d,_=o*d;if(!jt(l,32)&&((e.flags??0)&1)!==0&&f>0)return{take:0,psave:0,asave:f,knocked:{x:0,y:0,z:0},killed:!1};let v=Sb(e,n,i,_,l),[y,S,E,w,k]=Eb(e,r,a,f,l);e.monsterinfo&&e.monsterinfo.freeze_time>u&&f>0&&(y=e.health+100,S=0,E=0),e.powerArmor&&w!==void 0&&(e.powerArmor.cellCount=w),e.regularArmor&&(e.regularArmor.armorCount=k??e.regularArmor.armorCount);let T=y;T>0&&(e.health-=T,m&&!jt(l,1024)&&(e.classname==="player"||e.monsterinfo)&&m(r,1,ae.temp_entity,ye.BLOOD,r,a));let x=e.health<=0;return x?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,T,r,c):T>0&&e.pain&&e.pain(e,n,o,T,c),{take:T,psave:S,asave:E,knocked:v,killed:x,remainingCells:w,remainingArmor:k}}function Uc(e,t,n,i,r,a,s,o,l,c={},u){let m=[],d=vf(t),f=c.canDamage??(()=>!0);for(let _ of e){if(_===r||!_.takedamage||!f(_,t))continue;let p=_.mins&&_.maxs?Q5(d,U(_.origin,_.mins),U(_.origin,_.maxs)):vf(_),v=P(d,p),y=Ue(v);if(a>0&&y>a)continue;let S=i-.5*y;if(S<=0)continue;let E=_===n?S*.5:S,w=B(P(_.origin,d)),k=he(_,t,n,w,p,w,E,E,s|1,o,l,u);m.push({target:_,result:k,appliedDamage:E})}return m}var F7=cr();D();D();D();function Qf(e,t,n,i,r,a,s,o=0){let l=e.spawn();l.classname="rocket",l.movetype=8,l.solid=2,l.owner=t,l.origin={...n},l.velocity={x:i.x*s,y:i.y*s,z:i.z*s},l.mins={x:-4,y:-4,z:-4},l.maxs={x:4,y:4,z:4},l.touch=(c,u,m,d)=>{if(u===c.owner)return;u&&u.takedamage&&he(u,c,c.owner,c.velocity,c.origin,m?m.normal:K,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let f=e.findByRadius(c.origin,120);Uc(f,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,ae.temp_entity,ye.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(l)}function Bc(e,t,n,i,r,a,s=2.5){let o=e.spawn();o.classname="grenade",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=9,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("models/objects/grenade/tris.md2"),o.mins={x:-4,y:-4,z:-4},o.maxs={x:4,y:4,z:4},o.avelocity={x:300,y:300,z:300};let l=c=>{let u=e.findByRadius(c.origin,120);Uc(u,c,c.owner,r,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,ae.temp_entity,ye.GRENADE_EXPLOSION,c.origin),e.free(c)};o.touch=(c,u,m,d)=>{if(u!==c.owner){if(u&&u.takedamage){l(c);return}c.groundentity||e.sound(c,0,"weapons/grenlb1b.wav",1,1,0)}},o.think=c=>{l(c)},e.scheduleThink(o,e.timeSeconds+s),e.finalizeSpawn(o)}function lr(e,t,n,i,r,a,s){let o=e.spawn();return s===10?o.classname="hyperblaster_bolt":s===58?(o.classname="blueblaster_bolt",o.modelindex=e.modelIndex("models/objects/laser/tris.md2"),o.skin=1):o.classname="blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(l,c,u,m)=>{if(c!==l.owner){if(c&&c.takedamage)he(c,l,l.owner,l.velocity,l.origin,u?u.normal:K,r,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(u){let d=ye.BLASTER;s===58&&(d=ye.BLUEHYPERBLASTER),e.multicast(l.origin,1,ae.temp_entity,d,l.origin,u.normal)}e.free(l)}},e.finalizeSpawn(o),o}function bb(e,t,n,i,r,a){let s=e.spawn();s.classname="ionripper",s.owner=t,s.origin={...n},s.velocity={x:i.x*a,y:i.y*a,z:i.z*a},s.movetype=10,s.solid=2,s.modelindex=e.modelIndex("models/objects/boomrang/tris.md2"),s.mins={x:-2,y:-2,z:-2},s.maxs={x:2,y:2,z:2},s.touch=(o,l,c,u)=>{if(l!==o.owner){if(l&&l.takedamage){he(l,o,o.owner,o.velocity,o.origin,c?c.normal:K,r,1,4,35,e.timeSeconds,e.multicast.bind(e)),e.free(o);return}if(o.count=(o.count||0)+1,o.count>5){e.multicast(o.origin,1,ae.temp_entity,ye.WELDING_SPARKS,o.origin,K,228),e.free(o);return}e.sound(o,0,"weapons/ripphit.wav",1,1,0),c&&e.multicast(o.origin,1,ae.temp_entity,ye.WELDING_SPARKS,o.origin,c.normal,228)}},s.think=o=>{e.multicast(o.origin,1,ae.temp_entity,ye.WELDING_SPARKS,o.origin,K,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function kb(e,t,n,i,r,a){lr(e,t,n,i,r,a,58)}function xb(e,t,n,i){let r={...t.origin},a={x:(n.absmin.x+n.absmax.x)*.5,y:(n.absmin.y+n.absmax.y)*.5,z:(n.absmin.z+n.absmax.z)*.5},s=B(P(a,r)),o={x:r.x+s.x*2048,y:r.y+s.y*2048,z:r.z+s.z*2048},l=16,c=[],u=[],m={...r};try{for(let f=0;f<l;f++){let _=e.trace(m,null,null,o,t,De|qt|yn|tr);if(!_.ent||_.fraction>=1||(_.ent.takedamage&&_.ent!==t.owner&&he(_.ent,t,t.owner,s,_.endpos,K,i,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(_.ent.svflags&4)&&!_.ent.client&&_.ent.classname!=="misc_explobox"))break;c.push(_.ent),u.push(_.ent.solid),_.ent.solid=0,m={..._.endpos}}let d=e.trace(r,null,null,o,t,De);e.multicast(t.origin,2,ae.temp_entity,ye.BFG_LASER,r,d.endpos)}finally{for(let d=0;d<c.length;d++)c[d].solid=u[d]}}function Tb(e,t){let n=t.deathmatch?5:10,i=t.findByRadius(e.origin,256);for(let r of i){if(r===e||r===e.owner||!r.takedamage||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let a={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5};t.trace(e.origin,null,null,a,null,Pc).fraction<1||xb(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function Mb(e,t){if((e.frame===void 0||e.frame<0)&&(e.frame=0),e.frame===0){let n=t.findByRadius(e.origin,e.dmg_radius||100);for(let i of n){if(!i.takedamage||i===e.owner||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let r={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5},a=P(e.origin,r),s=Ue(a),o=e.dmg_radius||100,l=(e.radius_dmg||200)*(1-Math.sqrt(s/o));l>0&&he(i,e,e.owner,e.velocity,r,K,Math.floor(l),0,4,14,t.timeSeconds,t.multicast.bind(t))}}if(e.frame++,e.frame>=5){t.free(e);return}t.scheduleThink(e,t.timeSeconds+.1)}function eh(e,t,n,i,r,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=r,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(l,c,u,m)=>{if(c===l.owner)return;c&&c.takedamage&&he(c,l,l.owner,l.velocity,l.origin,u?u.normal:K,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let d=e.findByRadius(l.origin,100);Uc(d,l,l.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(l.origin,2,ae.temp_entity,ye.BFG_BIGEXPLOSION,l.origin),l.solid=0,l.touch=void 0,l.velocity=K,l.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),l.frame=0,l.enemy=c,l.think=(f,_)=>Mb(f,_),e.scheduleThink(l,e.timeSeconds+.1)},o.think=(l,c)=>Tb(l,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}D();var D7=1/40;Sn();en();Xf();en();var Rb=1;en();Xf();en();Sn();D();D();var Lb=22;function pt(e,t,n,i,r,a){let s=ri(t.origin),o={...s,z:s.z+(t.viewheight??Lb)},l=F(i,n.x),c=F(r,n.y),u=F(a,n.z),m=U(U(U(o,l),c),u),d=e.trace(o,null,null,m,t,Pc);return d.fraction<1?{x:d.endpos.x-i.x,y:d.endpos.y-i.y,z:d.endpos.z-i.z}:m}var zb=7,Nb=18,Ob=36,Ib=39,Cb=5,Pb=28,Fb=52,Db=57,Ub=3,Bb=23,Gb=52,Hb=61,Vb=4,Wb=21,Kb=52,$b=61,Xb=3,Yb=18,qb=51,Zb=56,jb=3,Jb=12,Qb=34,ek=38,tk=5,nk=9,ik=28,rk=32,ak=8,sk=32,ok=54,ck=58,lk=5,uk=16,dk=36,mk=39,fk=4,hk=8,_k=52,gk=55;var vk=46,pk=53;var yk=109,wk=117;var Ak=1;var Jt=cr();function yt(e,t,n=0,i=0){e.client&&(e.client.kick_angles={x:t,y:n,z:0},e.client.kick_origin={x:i,y:0,z:0})}function wt(e){if(!e.client)return;let t=(e.client.pm_flags&2)!==0;e.client.anim_priority=Ak,t?(e.frame=yk-1,e.client.anim_end=wk):(e.frame=vk-1,e.client.anim_end=pk)}function th(e,t,n,i,r,a,s){let o={x:n.x+i.x*8192,y:n.y+i.y*8192,z:n.z+i.z*8192},l=e.trace(n,null,null,o,t,0);l.ent&&l.ent.takedamage?he(l.ent,t,t,K,l.endpos,l.plane?l.plane.normal:K,r,a,16,s,e.time,e.multicast):l.plane&&e.multicast(l.endpos,1,ae.temp_entity,ye.GUNSHOT,l.endpos,l.plane.normal)}function wc(e,t,n,i,r,a,s,o,l,c,u,m){for(let d=0;d<s;d++){let f=U(F(r,Jt.crandom()*c),F(a,Jt.crandom()*u)),_=U(i,f),p={x:n.x+_.x*8192,y:n.y+_.y*8192,z:n.z+_.z*8192},v=e.trace(n,null,null,p,t,0);v.ent&&v.ent.takedamage?he(v.ent,t,t,K,v.endpos,v.plane?v.plane.normal:K,o,l,16,m,e.time,e.multicast):v.plane&&Jt.frandom()>.9&&e.multicast(v.endpos,1,ae.temp_entity,ye.GUNSHOT,v.endpos,v.plane.normal)}}function Sk(e,t,n,i,r,a){let s={...n},o={...n},l={x:n.x+i.x*8192,y:n.y+i.y*8192,z:n.z+i.z*8192},c=t,u=0,m=l;for(;u<16;){u++;let d=e.trace(o,null,null,l,c,0);if(m=d.endpos,d.fraction>=1||(d.ent&&d.ent.takedamage&&he(d.ent,t,t,K,d.endpos,d.plane?d.plane.normal:K,r,a,4,11,e.time,e.multicast),c=d.ent,o=d.endpos,!d.ent||d.ent===e.entities.world))break}e.multicast(s,2,ae.temp_entity,ye.RAILTRAIL,s,m)}function Ek(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Shells]<1)return;n.ammo.counts[I.Shells]--,e.multicast(t.origin,1,ae.muzzleflash,t.index,If),yt(t,-2,0,-2),wt(t);let{forward:i,right:r,up:a}=j(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a);wc(e,t,s,i,r,a,12,4,1,500,500,2)}function bk(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Shells]<2)return;n.ammo.counts[I.Shells]-=2,e.multicast(t.origin,1,ae.muzzleflash,t.index,Uf),yt(t,-4,0,-4),wt(t);let{forward:i,right:r,up:a}=j(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a),{forward:o,right:l,up:c}=j({...t.angles,y:t.angles.y-5});wc(e,t,s,o,l,c,10,6,1,700,700,3);let{forward:u,right:m,up:d}=j({...t.angles,y:t.angles.y+5});wc(e,t,s,u,m,d,10,6,1,700,700,3)}function kk(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Bullets]<1)return;n.ammo.counts[I.Bullets]--,e.multicast(t.origin,1,ae.muzzleflash,t.index,Of),yt(t,-1,Jt.crandom()*.5,0),wt(t);let{forward:i,right:r,up:a}=j(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a);th(e,t,s,i,8,1,4)}function xk(e,t){if(!t.client)return;let n=t.client.inventory,i=$f(t.client.weaponStates,V.Chaingun);e.time-i.lastFireTime>200&&(i.spinupCount=0);let r=(i.spinupCount||0)+1;i.spinupCount=r;let a;if(r<=5?(a=1,r===1&&e.sound(t,0,"weapons/chngnu1a.wav",1,0,0)):(r<=10?a=2:a=3,e.sound(t,0,"weapons/chngnl1a.wav",1,0,0)),n.ammo.counts[I.Bullets]<a&&(a=n.ammo.counts[I.Bullets]),a===0)return;n.ammo.counts[I.Bullets]-=a;let s=e.deathmatch?6:8,o=1;yt(t,-.5,Jt.crandom()*(.5+a*.15),0),wt(t);let{forward:l,right:c,up:u}=j(t.angles),m=pt(e,t,{x:8,y:8,z:-8},l,c,u);for(let f=0;f<a;f++){let _=U(F(c,Jt.crandom()*4),F(u,Jt.crandom()*4)),p=U(l,_);th(e,t,m,p,s,o,5)}let d=Cf+a-1;e.multicast(t.origin,1,ae.muzzleflash,t.index,d)}function Tk(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Slugs]<1)return;n.ammo.counts[I.Slugs]--,e.multicast(t.origin,1,ae.muzzleflash,t.index,Pf),yt(t,-3,0,-3),wt(t);let{forward:i,right:r,up:a}=j(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?100:125,l=e.deathmatch?200:225;Sk(e,t,s,i,o,l)}function Mk(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Cells]<1)return;n.ammo.counts[I.Cells]--,e.multicast(t.origin,1,ae.muzzleflash,t.index,Gf),yt(t,-.5,0,0),wt(t);let{forward:i,right:r,up:a}=j(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?15:20;lr(e.entities,t,s,i,o,1e3,10)}function Rk(e,t){if(!t.client)return;e.multicast(t.origin,1,ae.muzzleflash,t.index,Nf),yt(t,-.5,0,0),wt(t);let{forward:n,right:i,up:r}=j(t.angles),a=pt(e,t,{x:8,y:8,z:-8},n,i,r);lr(e.entities,t,a,n,15,1500,1)}function Lk(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Rockets]<1)return;n.ammo.counts[I.Rockets]--,e.multicast(t.origin,1,ae.muzzleflash,t.index,Ff),yt(t,-2,0,-2),wt(t);let{forward:i,right:r,up:a}=j(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a),o=100+e.random.irandom(21);Qf(e.entities,t,s,i,o,120,650)}function zk(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Grenades]<1)return;n.ammo.counts[I.Grenades]--,e.multicast(t.origin,1,ae.muzzleflash,t.index,Df),yt(t,-2,0,-2),wt(t);let{forward:i,right:r,up:a}=j(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a);Bc(e.entities,t,s,i,120,600)}function Nk(e,t){if(!t.client)return;let n=t.client.inventory,i=t.client.gun_frame,r=i===9||i===0||i===void 0,a=i===22||i===0||i===void 0;if(r){if(n.ammo.counts[I.Cells]<50)return;n.ammo.counts[I.Cells]-=50,e.sound(t,0,"weapons/bfg__f1y.wav",1,0,0)}if(a){e.multicast(t.origin,1,ae.muzzleflash,t.index,Bf),yt(t,-5,0,-2),wt(t);let{forward:s,right:o,up:l}=j(t.angles),c=pt(e,t,{x:8,y:8,z:-8},s,o,l),u=e.deathmatch?200:500;eh(e.entities,t,c,s,u,400,200)}}function Xt(e){let t=.1;return e.client?.inventory.powerups.has(re.TechHaste)&&(t*=.5),e.client?.inventory.powerups.has(re.QuadFire)&&(t*=.25),t}function It(e,t,n,i,r,a,s,o,l){if(!e.client)return;let c=e.client,u=l.timeSeconds;if(c.weapon_think_time&&c.weapon_think_time<=u&&(c.weapon_think_time=0),!(c.weapon_think_time&&c.weapon_think_time>u)){if(c.weaponstate===1){if(c.gun_frame<t){c.gun_frame++,c.weapon_think_time=u+Xt(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=u+Xt(e);return}if(c.weaponstate===2){if(c.gun_frame<r){c.gun_frame++,c.weapon_think_time=u+Xt(e);return}Promise.resolve().then(()=>(ab(),Yf)).then(({ChangeWeapon:m})=>{m(e)});return}if(c.weaponstate===0){if(c.buttons&1){c.weaponstate=3,c.gun_frame=t+1;return}if(c.gun_frame<i){if(c.gun_frame++,c.weapon_think_time=u+Xt(e),a){for(let m of a)if(c.gun_frame===m&&Jt.frandom()<.9375)return}return}c.gun_frame=n+1,c.weapon_think_time=u+Xt(e);return}if(c.weaponstate===3){if(s){for(let m of s)if(c.gun_frame===m){o&&o(e);break}}if(c.gun_frame<n){c.gun_frame++,c.weapon_think_time=u+Xt(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=u+Xt(e);return}}}function Gc(e,t,n,i,r,a,s,o){if(!e.client)return;let l=e.client,c=t+1;l.weaponstate===3?(l.gun_frame===n||l.gun_frame===i?l.gun_frame=c:l.gun_frame++,s&&s(e),l.buttons&1||(l.gun_frame=i+1,l.weaponstate=0),l.weapon_think_time=o.timeSeconds+Xt(e)):It(e,t,n,i,r,a,null,s,o)}var Ok=[38,43,51,61];function Ik(e,t){let n=$f(e.client.weaponStates,V.Chaingun);!(e.client.buttons&Rb)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0),Gc(e,Vb,Wb,Kb,$b,Ok,i=>xk(t.game,i),t)}var Ck=[22,28,34],Pk=[8];function Fk(e,t){It(e,zb,Nb,Ob,Ib,Ck,Pk,n=>Ek(t.game,n),t)}var Dk=[29,42,57],Uk=[22,28];function Bk(e,t){It(e,Cb,Pb,Fb,Db,Dk,Uk,n=>bk(t.game,n),t)}var Gk=[23,45],Hk=[4,5,30,31];function Vk(e,t){It(e,Ub,Bb,Gb,Hb,Gk,Hk,n=>kk(t.game,n),t)}var Wk=[25,33],Kk=[4];function $k(e,t){It(e,jb,Jb,Qb,ek,Wk,Kk,n=>Lk(t.game,n),t)}function Xk(e,t){Gc(e,tk,nk,ik,rk,null,n=>Mk(t.game,n),t)}var Yk=[56],qk=[4];function Zk(e,t){It(e,Xb,Yb,qb,Zb,Yk,qk,n=>Tk(t.game,n),t)}var jk=[39,45,50,54],Jk=[9,22];function Qk(e,t){It(e,ak,sk,ok,ck,jk,Jk,n=>Nk(t.game,n),t)}var ex=[34,51,59],tx=[6];function nx(e,t){It(e,lk,uk,dk,mk,ex,tx,n=>zk(t.game,n),t)}var ix=[19,32],rx=[5];function ax(e,t){It(e,fk,hk,_k,gk,ix,rx,n=>Rk(t.game,n),t)}D();function sx(e,t,n=0,i=0){e.client&&(e.client.kick_angles={x:t,y:n,z:0},e.client.kick_origin={x:i,y:0,z:0})}var ox=24;function cx(e,t){if(!e.inUse||!e.takedamage||e===t.self)return!1;let n=(c,u,m)=>({x:Math.max(u.x,Math.min(c.x,m.x)),y:Math.max(u.y,Math.min(c.y,m.y)),z:Math.max(u.z,Math.min(c.z,m.z))}),i=n(t.start,{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}),r=n(i,{x:t.self.origin.x+t.self.mins.x,y:t.self.origin.y+t.self.mins.y,z:t.self.origin.z+t.self.mins.z},{x:t.self.origin.x+t.self.maxs.x,y:t.self.origin.y+t.self.maxs.y,z:t.self.origin.z+t.self.maxs.z}),a=P(i,r),s=Ue(a);if(s>t.reach)return!1;let o={x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5},l=B(P(o,t.start));return!(Ta(l,t.aim)<.7&&s>1)}function lx(e,t,n,i,r,a,s,o){let l={x:r,y:r,z:r},c={x:t.origin.x+t.mins.x-r,y:t.origin.y+t.mins.y-r,z:t.origin.z+t.mins.z-r},u={x:t.origin.x+t.maxs.x+r,y:t.origin.y+t.maxs.y+r,z:t.origin.z+t.maxs.z+r},m=e.entities.findInBox(c,u),d={self:t,start:n,aim:i,reach:r},f=!1,_=(p,v,y)=>({x:Math.max(v.x,Math.min(p.x,y.x)),y:Math.max(v.y,Math.min(p.y,y.y)),z:Math.max(v.z,Math.min(p.z,y.z))});for(let p of m){if(!cx(p,d))continue;let v={x:p.origin.x+p.mins.x,y:p.origin.y+p.mins.y,z:p.origin.z+p.mins.z},y={x:p.origin.x+p.maxs.x,y:p.origin.y+p.maxs.y,z:p.origin.z+p.maxs.z},S=_(n,v,y);he(p,t,t,i,S,F(i,-1),a,s/2,8,o,e.time,e.multicast),f=!0}return f}function ux(e,t){let n={x:0,y:0,z:0},i={x:0,y:0,z:0},r={x:0,y:0,z:0},a=t.client?t.client.v_angle:t.angles,s=j(a||{x:0,y:0,z:0}),o={x:8,y:8,z:-4},l={x:t.origin.x+t.viewheight*0+s.forward.x*o.x+s.right.x*o.y+s.up.x*o.z,y:t.origin.y+t.viewheight*0+s.forward.y*o.x+s.right.y*o.y+s.up.y*o.z,z:t.origin.z+t.viewheight*1+s.forward.z*o.x+s.right.z*o.y+s.up.z*o.z};e.multicast(l,1,ae.temp_entity,ye.CHAINFIST_SMOKE,l)}function dx(e,t,n,i,r,a){let s=7;e.deathmatch&&(s=15),t.client&&t.client.quad_time&&t.client.quad_time>e.time&&(s*=4);let o=lx(e,t,r,a,ox,s,100,41);sx(t,-.5,0,0)}function mx(e,t){let n=t.game;if(Gc(e,4,32,57,60,[],a=>{let s=a.client?a.client.v_angle:a.angles,l=j(s||{x:0,y:0,z:0}).forward,c={x:a.origin.x,y:a.origin.y,z:a.origin.z+(a.viewheight||0)},u=a.client?a.client.inventory:{ammo:{counts:[]}};if(dx(n,a,u,{},c,l),a.client){let d=a.client;d.buttons&1?d.gun_frame===12?d.gun_frame=14:d.gun_frame===22?d.gun_frame=24:d.gun_frame>=32&&(d.gun_frame=7):(d.gun_frame===13||d.gun_frame===23||d.gun_frame>=32)&&(d.gun_frame=33)}},t),e.client){let a=e.client.gun_frame;(a===42||a===51)&&Math.random()<.125&&Math.random()<.4&&ux(n,e)}}var U7={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:V.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5,think:ax},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:V.Shotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Fk},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:V.SuperShotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Bk},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:V.Machinegun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Vk},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:V.Chaingun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Ik},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:V.HandGrenade,ammoType:I.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:V.GrenadeLauncher,ammoType:I.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1,think:nx},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:V.RocketLauncher,ammoType:I.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1,think:$k},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:V.HyperBlaster,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Xk},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:V.Railgun,ammoType:I.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5,think:Zk},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:V.BFG10K,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1,think:Qk},weapon_chainfist:{type:"weapon",id:"weapon_chainfist",name:"Chainfist",weaponId:V.ChainFist,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.1,think:mx},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:V.IonRipper,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:V.Phalanx,ammoType:I.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:V.PlasmaBeam,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:V.EtfRifle,ammoType:I.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:V.ProxLauncher,ammoType:I.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};Sn();Sn();D();D();var Xe=cr(),Ac=0,fx=1;function nh(e){let t=100*Xe.crandom(),n=100*Xe.crandom(),i=200+100*Xe.frandom();return e<50?(t*=.7,n*=.7,i*=.7):(t*=1.2,n*=1.2,i*=1.2),{x:t,y:n,z:i}}function ih(e){let{x:t,y:n,z:i}=e.velocity;t<-300?t=-300:t>300&&(t=300),n<-300?n=-300:n>300&&(n=300),i<200?i=200:i>500&&(i=500),e.velocity={x:t,y:n,z:i}}function rh(e,t,n,i,r){e.groundentity&&(e.touch=void 0,n&&r.sound(e,0,"misc/fhit3.wav",1,1,0))}function nt(e,t,n,i,r=Ac){let a=e.spawn();a.classname="gib",a.origin={x:t.x+Xe.crandom()*20,y:t.y+Xe.crandom()*20,z:t.z+Xe.crandom()*20};let s=i||"models/objects/gibs/sm_meat/tris.md2";a.modelindex=e.modelIndex(s),a.mins={x:-2,y:-2,z:-2},a.maxs={x:2,y:2,z:2},a.solid=0,a.takedamage=!0,a.die=(c,u,m,d,f,_)=>{e.free(c)},a.clipmask=1;let o=1;r===Ac?(a.movetype=7,a.touch=(c,u,m,d)=>rh(c,u,m,d,e),o=.5):(a.movetype=9,o=1);let l=nh(n);return a.velocity={x:l.x*o,y:l.y*o,z:l.z*o},ih(a),a.avelocity={x:Xe.frandom()*600,y:Xe.frandom()*600,z:Xe.frandom()*600},a.think=c=>{e.free(c)},e.scheduleThink(a,e.timeSeconds+10+Xe.frandom()*10),e.finalizeSpawn(a),a}function hx(e,t,n){let i=e.spawn(),r;Xe.irandom(2)===1?(r="models/objects/gibs/head2/tris.md2",i.skin=1):(r="models/objects/gibs/skull/tris.md2",i.skin=0),i.frame=0,i.modelindex=e.modelIndex(r),i.mins={x:-16,y:-16,z:0},i.maxs={x:16,y:16,z:16},i.origin={x:t.x,y:t.y,z:t.z+32},i.solid=0,i.takedamage=!0,i.die=(o,l,c,u,m,d)=>{e.free(o)};let a=.5;i.movetype=7,i.touch=(o,l,c,u)=>rh(o,l,c,u,e);let s=nh(n);return i.velocity={x:s.x*a,y:s.y*a,z:s.z*a},ih(i),i.avelocity={x:0,y:Xe.crandom()*600,z:0},i.think=o=>{e.free(o)},e.scheduleThink(i,e.timeSeconds+10+Xe.frandom()*10),e.finalizeSpawn(i),i}function ah(e,t,n,i=Ac){if(typeof n=="number"){let r=n;i===fx?(nt(e,t,r,"models/objects/debris1/tris.md2",i),nt(e,t,r,"models/objects/debris2/tris.md2",i),nt(e,t,r,"models/objects/debris3/tris.md2",i),nt(e,t,r,"models/objects/debris2/tris.md2",i)):(nt(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),nt(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),nt(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),nt(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),nt(e,t,r,"models/objects/gibs/meat/tris.md2",i),nt(e,t,r,"models/objects/gibs/bone/tris.md2",i),hx(e,t,r))}else{let r=n;for(let a of r)for(let s=0;s<a.count;s++)nt(e,t,0,a.model,a.flags)}}D();D();function _x(e,t){let n=e.monsterinfo.current_move;if(!n||((e.frame<n.firstframe||e.frame>n.lastframe)&&(e.monsterinfo.aiflags&=-129,e.frame=n.firstframe),(e.monsterinfo.aiflags&128)!==0))return;let i=e.frame-n.firstframe,r=n.frames[i];r.ai&&r.ai(e,r.dist,t),r.think&&r.think(e,t),e.inUse&&(e.frame++,e.frame>n.lastframe&&n.endfunc&&(n.endfunc(e,t),e.monsterinfo.current_move))}function gx(e,t){if(e.monsterinfo.freeze_time)if(e.monsterinfo.freeze_time>t.timeSeconds){e.renderfx|=ei.ShellBlue|ei.ShellGreen,e.nextthink=t.timeSeconds+.1;return}else e.monsterinfo.freeze_time=0,e.renderfx&=~(ei.ShellBlue|ei.ShellGreen);_x(e,t),e.nextthink<=t.timeSeconds&&(e.nextthink=t.timeSeconds+.1)}var Oa=.1,er=80;var sh=cr();function vx(){return sh.frandom()}function oh(e,t){return Math.floor(sh.frandom()*(t-e+1)+e)}function Jn(e,t,n){M(e,Oa,n)}function it(e,t,n){z(e,t,Oa,n)}function Yn(e,t,n){ce(e,t,Oa,n)}function pe(e,t,n){ue(e,t,Oa,n)}function Z(e,t,n){g(e,t)}var ir={pain:"berserk/berpain2.wav",die:"berserk/berdeth2.wav",idle:"berserk/beridle1.wav",idle2:"berserk/idle.wav",punch:"berserk/attack.wav",search:"berserk/bersrch1.wav",sight:"berserk/sight.wav",thud:"mutant/thud1.wav",explod:"world/explod2.wav",jump:"berserk/jump.wav",footstep:"misc/step1.wav"};function ot(e,t){t.sound(e,2,ir.footstep,1,1,0)}function Sa(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function px(e,t){}var Hc,ch,yx,lh,wx,Ax,Sx,Ex,bx,uh,kx;function xx(e,t){Sa(e,Hc)}function Tx(e,t){e.monsterinfo.aiflags&1||e.enemy||vx()>.15||(Sa(e,ch),t.sound(e,1,ir.idle,1,2,0))}var Mx=[{ai:Jn,dist:0,think:Tx},{ai:Jn,dist:0},{ai:Jn,dist:0},{ai:Jn,dist:0},{ai:Jn,dist:0}];Hc={firstframe:0,lastframe:4,frames:Mx,endfunc:null};var Rx=Array.from({length:20},()=>({ai:Jn,dist:0}));ch={firstframe:5,lastframe:24,frames:Rx,endfunc:xx};var Lx=[{ai:it,dist:9.1},{ai:it,dist:6.3},{ai:it,dist:4.9},{ai:it,dist:6.7,think:ot},{ai:it,dist:6},{ai:it,dist:8.2},{ai:it,dist:7.2},{ai:it,dist:6.1},{ai:it,dist:4.9},{ai:it,dist:4.7,think:ot},{ai:it,dist:4.7}];yx={firstframe:25,lastframe:35,frames:Lx,endfunc:null};var zx=[{ai:Yn,dist:21},{ai:Yn,dist:11,think:ot},{ai:Yn,dist:21},{ai:Yn,dist:25,think:px},{ai:Yn,dist:18,think:ot},{ai:Yn,dist:19}];lh={firstframe:36,lastframe:41,frames:zx,endfunc:null};function ur(e,t){e.monsterinfo.aiflags&1?Sa(e,Hc):Sa(e,lh)}function dh(e,t,n,i,r){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=j(e.angles).forward,o={x:a.x+s.x+t.x,y:a.y+s.y+t.y,z:a.z+s.z+t.z},l={x:a.x+s.x*er,y:a.y+s.y*er,z:a.z+s.z*er},c=r.trace(a,null,null,l,e,536870913);return!c.ent||!c.ent.takedamage?!1:(he(c.ent,e,e,s,c.endpos,c.plane?.normal||K,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function Nx(e,t){dh(e,{x:er,y:0,z:-24},oh(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function mh(e,t){t.sound(e,1,ir.punch,1,1,0)}var Ox=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:mh},{ai:pe,dist:0,think:Nx},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];wx={firstframe:67,lastframe:74,frames:Ox,endfunc:ur};function Ix(e,t){dh(e,{x:er,y:0,z:-4},oh(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var Cx=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:ot},{ai:pe,dist:0},{ai:pe,dist:0,think:mh},{ai:pe,dist:0},{ai:pe,dist:0,think:Ix},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];Ax={firstframe:75,lastframe:86,frames:Cx,endfunc:ur};function Px(e,t,n,i,r,a){let s=a.findByRadius(e.origin,i);for(let o of s){if(o===e||!o.takedamage)continue;let l=Math.sqrt(Math.pow(o.origin.x-e.origin.x,2)+Math.pow(o.origin.y-e.origin.y,2)+Math.pow(o.origin.z-e.origin.z,2)),c=Math.max(0,1-l/i);if(c<=0)continue;let u=Math.max(1,n*c*c),m=r*c*c,d=B(P(o.origin,e.origin));he(o,e,t,d,o.origin,d,u,m,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Vc(e,t){t.sound(e,1,ir.thud,1,1,0),t.sound(e,2,ir.explod,.75,1,0);let{forward:n,right:i}=j(e.angles),r={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*r.x+i.x*r.y,y:e.origin.y+n.y*r.x+i.y*r.y,z:e.origin.z+n.z*r.x+i.z*r.y+r.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,ae.temp_entity,ye.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},Px(e,e,8,165,300,t)}function Fx(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Vc(e,r))}function Wc(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function Dx(e,t){if(!e.enemy)return;let n=P(e.enemy.origin,e.origin),r=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=B({x:n.x,y:n.y,z:0}),s=ai(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(l,c,u,m)=>{Fx(l,c,u,m,t),l.groundentity&&(l.frame=104,Vc(l,t),l.touch=void 0)},Wc(e,t)}function Ux(e,t){if(Wc(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Vc(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var Bx=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:Z,dist:0,think:Dx},{ai:Z,dist:0,think:Wc},{ai:Z,dist:0,think:Ux},{ai:Z,dist:0,think:ot},{ai:Z,dist:0},{ai:Z,dist:0,think:ot},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:ot}];Sx={firstframe:87,lastframe:109,frames:Bx,endfunc:ur};var Gx=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0}];Ex={firstframe:149,lastframe:152,frames:Gx,endfunc:ur};var Hx=Array.from({length:20},(e,t)=>({ai:Z,dist:0,think:t%5===4?ot:void 0}));bx={firstframe:153,lastframe:172,frames:Hx,endfunc:ur};function fh(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=uh.lastframe,e.nextthink=-1,e.deadflag=2}var Vx=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:ot},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0}];uh={firstframe:173,lastframe:185,frames:Vx,endfunc:fh};var Wx=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:ot},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0}];kx={firstframe:186,lastframe:193,frames:Wx,endfunc:fh};D();function pf(){return 2*Math.random()-1}function Ea(e,t,n,i,r,a,s,o,l,c=0){let u=n;if(a>0||s>0){let f=ai(n),{right:_,up:p}=j(f),v=pf()*a,y=pf()*s;u={x:n.x+_.x*v+p.x*y,y:n.y+_.y*v+p.y*y,z:n.z+_.z*v+p.z*y},u=B(u)}let m=U(t,F(u,8192)),d=l.trace(t,m,K,K,e,Ot);!d.ent||d.fraction===1||he(d.ent,e,e,u,d.endpos,d.plane?.normal||K,i,r,18,c,l.timeSeconds)}var Qt=Ea;function Kx(e,t,n,i,r,a,s,o,l,c,u=2){for(let m=0;m<o;m++)Qt(e,t,n,i,r,a,s,l,c,u)}function At(e,t,n,i,r,a,s,o,l=1){lr(o,e,t,n,i,r,l)}function $x(e,t,n,i,r,a,s,o){kb(o,e,t,n,i,r)}function Xx(e,t,n,i,r,a,s,o){bb(o,e,t,n,i,r)}function Yx(e,t,n,i,r,a,s){Bc(s,e,t,n,i,r)}function dr(e,t,n,i,r,a,s){Qf(s,e,t,n,i,120,r)}function hh(e,t,n,i,r,a,s,o,l){eh(l,e,t,n,i,r,s)}function _h(e,t,n,i,r,a,s){let o=U(t,F(n,8192)),l=s.trace(t,o,K,K,e,Ot);s.multicast(t,2,ae.temp_entity,ye.RAILTRAIL,t,l.endpos),l.ent&&l.ent.takedamage&&he(l.ent,e,e,n,l.endpos,K,i,r,6,11,s.timeSeconds)}function mr(e,t,n,i,r){if(!e.enemy)return!1;let{forward:a}=j(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,l=U(s,F(a,o)),c=r.trace(s,l,K,K,e,Ot);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let u=B(P(c.endpos,s));return he(c.ent,e,e,u,c.endpos,c.plane?.normal||K,n,i,0,0,r.timeSeconds),!0}return!1}function qx(e,t,n,i,r,a,s,o){dr(e,t,n,i,r,a,o)}function yf(e,t){let n={...e.origin},i=U(n,F(e.movedir,2048)),r={...n},a=16,s=[],o=[];try{for(let l=0;l<a;l++){let c=t.trace(r,i,K,K,e,De|qt|yn|tr);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&he(c.ent,e,e.owner,e.movedir,c.endpos,K,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,ae.temp_entity,ye.LASER_SPARKS,10,c.endpos,c.plane?.normal||K,e.skin);break}if(c.ent&&(c.ent.takedamage||c.ent.client)){s.push(c.ent),o.push(c.ent.solid),c.ent.solid=0,r={...c.endpos};continue}break}}finally{for(let l=0;l<s.length;l++)s[l].solid=o[l]}t.linkentity(e)}function Zx(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function Sc(e,t,n,i,r){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=r.spawn(),a.classname="laser_beam",a.movetype=0,a.solid=0,a.renderfx|=8,a.modelindex=1,a.owner=e,a.dmg=t,a.frame=2,a.skin=4076007664,a.think=(s,o)=>{s.postthink&&s.postthink(s,o),o.timeSeconds>=s.timestamp?Zx(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),yf(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),yf(a,r)}D();var Kc=.1,jx={x:0,y:30,z:-15},Jx={x:0,y:15,z:0},Qx={x:0,y:-15,z:0},e6={x:0,y:-30,z:-15},t6={x:30,y:20,z:0},n6={x:30,y:-20,z:0};function i6(e,t,n){M(e,Kc,n)}function r6(e,t,n){z(e,t,Kc,n)}function Ia(e,t,n){ue(e,t,Kc,n)}function $c(e,t,n){g(e,t)}var Xc,gh,vh,a6,ph,yh,s6,o6,c6,wh;function l6(e){e.monsterinfo.current_move=Xc}function u6(e){e.monsterinfo.current_move=gh}function fr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=vh:e.monsterinfo.current_move=Xc}function Ah(e){e.monsterinfo.current_move=ph}function d6(e){e.enemy&&nr(e,e.enemy)&&Math.random()<=.7?Ah(e):e.monsterinfo.current_move=yh}function Ec(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=F(n,t.x),o=F(i,t.y),l=F(r,t.z);return U(U(U(a,s),o),l)}function m6(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=Ec(e,t6),i=B(P(e.enemy.origin,n));Qt(e,n,i,6,4,.1,.05,0,t,4);let r=Ec(e,n6),a=B(P(e.enemy.origin,r));Qt(e,r,a,6,4,.1,.05,0,t,4)}function f6(e,t){if(!e.enemy)return;let n=[jx,Jx,Qx,e6],i=n[Math.floor(Math.random()*n.length)],r=Ec(e,i),a=B(P(e.enemy.origin,r));dr(e,r,a,50,500,0,t)}function h6(e){e.monsterinfo.nextframe=wh.lastframe,e.nextthink=-1}var Sh=Array.from({length:20},()=>({ai:r6,dist:10}));gh={firstframe:0,lastframe:19,frames:Sh,endfunc:u6};vh={firstframe:0,lastframe:19,frames:Sh,endfunc:fr};var _6=Array.from({length:21},()=>({ai:i6,dist:0}));Xc={firstframe:29,lastframe:49,frames:_6,endfunc:l6};var g6=Array.from({length:9},(e,t)=>({ai:Ia,dist:2,think:t===8?Ah:null}));a6={firstframe:50,lastframe:58,frames:g6,endfunc:null};var v6=Array.from({length:6},()=>({ai:Ia,dist:2,think:m6}));ph={firstframe:59,lastframe:64,frames:v6,endfunc:d6};var p6=Array.from({length:4},()=>({ai:Ia,dist:2}));yh={firstframe:65,lastframe:68,frames:p6,endfunc:fr};var y6=Array.from({length:21},(e,t)=>({ai:Ia,dist:2,think:t===12?f6:null}));s6={firstframe:69,lastframe:89,frames:y6,endfunc:fr};var w6=Array.from({length:18},()=>({ai:$c,dist:0}));o6={firstframe:90,lastframe:107,frames:w6,endfunc:fr};var A6=Array.from({length:4},()=>({ai:$c,dist:0}));c6={firstframe:108,lastframe:111,frames:A6,endfunc:fr};var S6=Array.from({length:49},()=>({ai:$c,dist:0}));wh={firstframe:112,lastframe:160,frames:S6,endfunc:h6};D();var Ca=.1,Yc=80,Pa=Math.random;function Eh(e,t,n){M(e,Ca,n)}function rt(e,t,n){z(e,t,Ca,n)}function at(e,t,n){ce(e,t,Ca,n)}function C(e,t,n){ue(e,t,Ca,n)}function Y(e,t,n){g(e,t)}var qc,E6,b6,bh,kh,k6,x6,T6,M6,R6,L6,z6,N6,O6;function xh(e){e.monsterinfo.current_move=qc}function nn(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=qc:e.monsterinfo.current_move=bh}function I6(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function C6(e,t){let n={x:Yc,y:e.maxs.x,z:8};mr(e,n,15+Math.floor(Pa()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function P6(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function F6(e,t){let n={x:Yc,y:e.mins.x,z:8};mr(e,n,15+Math.floor(Pa()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function Th(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function Mh(e,t){mr(e,{x:Yc,y:0,z:8},10+Math.floor(Pa()*5),-600,t)?e.count=1:e.monsterinfo.melee_debounce_time=t.timeSeconds+3,t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0)}function Rh(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=kh)}function wf(e,t){if(!e.enemy)return;let n=j(e.angles).forward,i={...e.origin};i.z+=24;let r={...e.enemy.origin};if(t.trace(i,r,K,K,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,ae.temp_entity,ye.PARASITE_ATTACK,e,i,r);let s=P(i,r);he(e.enemy,e,e,s,e.enemy.origin,K,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=j(e.angles).forward;e.enemy.velocity=F(o,-1200)}var Af=[{x:.7467,y:.23837,z:34.16769},{x:-1.07639,y:.23837,z:33.386372},{x:-1.3355,y:5.3343,z:32.17717},{x:-.17536,y:8.84637,z:30.635479},{x:-2.75759,y:7.80461,z:30.15086},{x:-5.57509,y:5.15284,z:30.05616},{x:-7.01755,y:3.26247,z:30.552521},{x:-7.91574,y:.6388,z:33.176189},{x:-3.91539,y:8.28573,z:33.976349},{x:-.91354,y:10.93303,z:34.141811},{x:-.3699,y:8.9239,z:34.189079}],Sf=[{x:-3.36471,y:.32775,z:33.938381},{x:-5.14045,y:.49348,z:32.659851},{x:-5.34198,y:5.64698,z:31.277901},{x:-4.13448,y:9.27744,z:29.925621},{x:-6.59834,y:6.81509,z:29.32262},{x:-8.61084,y:2.52965,z:29.251591},{x:-9.23136,y:.09328,z:29.747959},{x:-11.00411,y:1.93693,z:32.39526},{x:-7.87831,y:7.64819,z:33.148151},{x:-4.94737,y:11.43005,z:33.31361},{x:-4.33282,y:9.44457,z:33.52634}];function D6(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=j(n.angles),s=n.frame-0;(s<0||s>=Af.length)&&(s=0);let o=Af[s],l=U(n.origin,F(r,o.x));l=U(l,F(i,o.y)),l=U(l,F(a,o.z));let c=B(P(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function U6(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=j(n.angles),s=n.frame-0;(s<0||s>=Sf.length)&&(s=0);let o=Sf[s],l=U(n.origin,F(r,o.x));l=U(l,F(i,o.y)),l=U(l,F(a,o.z));let c=B(P(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function gt(e,t){Sc(e,1,!1,D6,t),Sc(e,1,!0,U6,t)}function B6(e){Pa()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function G6(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function H6(e){}function V6(e){e.monsterinfo.aiflags&=-17}var W6=Array.from({length:30},()=>({ai:Eh,dist:0}));qc={firstframe:162,lastframe:191,frames:W6,endfunc:xh};var K6=Array.from({length:30},()=>({ai:Eh,dist:0}));E6={firstframe:192,lastframe:221,frames:K6,endfunc:xh};var $6=[{ai:rt,dist:7},{ai:rt,dist:2},{ai:rt,dist:3},{ai:rt,dist:3},{ai:rt,dist:1},{ai:rt,dist:0},{ai:rt,dist:0},{ai:rt,dist:9},{ai:rt,dist:-4},{ai:rt,dist:-1},{ai:rt,dist:2}];b6={firstframe:0,lastframe:10,frames:$6,endfunc:null};var X6=[{ai:at,dist:9},{ai:at,dist:2},{ai:at,dist:3},{ai:at,dist:3},{ai:at,dist:1},{ai:at,dist:0},{ai:at,dist:0},{ai:at,dist:10},{ai:at,dist:-4},{ai:at,dist:-1},{ai:at,dist:2}];bh={firstframe:0,lastframe:10,frames:X6,endfunc:null};var Y6=[{ai:C,dist:8},{ai:C,dist:3},{ai:C,dist:5},{ai:C,dist:0},{ai:C,dist:-3,think:I6},{ai:C,dist:0},{ai:C,dist:-5},{ai:C,dist:-7,think:C6},{ai:C,dist:0},{ai:C,dist:6,think:P6},{ai:C,dist:1},{ai:C,dist:2,think:F6},{ai:C,dist:-3},{ai:C,dist:6},{ai:C,dist:-1},{ai:C,dist:-3},{ai:C,dist:2},{ai:C,dist:-11}];kh={firstframe:53,lastframe:70,frames:Y6,endfunc:nn};var q6=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:Th},{ai:C,dist:0},{ai:C,dist:13,think:Mh},{ai:C,dist:0},{ai:C,dist:2},{ai:C,dist:0},{ai:C,dist:-9,think:Rh},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];k6={firstframe:71,lastframe:87,frames:q6,endfunc:nn};var Z6=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:Th},{ai:C,dist:0,think:wf},{ai:C,dist:13},{ai:C,dist:0,think:Mh},{ai:C,dist:2},{ai:C,dist:0,think:wf},{ai:C,dist:-9,think:Rh},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];x6={firstframe:71,lastframe:87,frames:Z6,endfunc:nn};var j6=[{ai:C,dist:9,think:gt},{ai:C,dist:2,think:gt},{ai:C,dist:3,think:gt},{ai:C,dist:3,think:gt},{ai:C,dist:1,think:gt},{ai:C,dist:0,think:gt},{ai:C,dist:0,think:gt},{ai:C,dist:10,think:gt},{ai:C,dist:-4,think:gt},{ai:C,dist:-1,think:gt},{ai:C,dist:2,think:B6}];T6={firstframe:0,lastframe:10,frames:j6,endfunc:nn};var J6=[{ai:Y,dist:-6},{ai:Y,dist:-2},{ai:Y,dist:-6},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:2},{ai:Y,dist:0},{ai:Y,dist:2},{ai:Y,dist:1},{ai:Y,dist:7},{ai:Y,dist:0},{ai:Y,dist:3},{ai:Y,dist:-1}];M6={firstframe:88,lastframe:108,frames:J6,endfunc:nn};var Q6=[{ai:Y,dist:-2},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:3},{ai:Y,dist:1},{ai:Y,dist:-2}];R6={firstframe:109,lastframe:116,frames:Q6,endfunc:nn};var e3=[{ai:Y,dist:-2},{ai:Y,dist:2},{ai:Y,dist:1},{ai:Y,dist:3},{ai:Y,dist:0},{ai:Y,dist:-4}];L6={firstframe:117,lastframe:122,frames:e3,endfunc:nn};var t3=Array.from({length:18},()=>({ai:Y,dist:0}));z6={firstframe:123,lastframe:140,frames:t3,endfunc:Lh};var n3=[{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:9},{ai:Y,dist:0}];N6={firstframe:141,lastframe:145,frames:n3,endfunc:Lh};var i3=[{ai:Y,dist:0},{ai:Y,dist:-2,think:G6},{ai:Y,dist:17,think:H6},{ai:Y,dist:-3},{ai:Y,dist:-1,think:V6},{ai:Y,dist:-5},{ai:Y,dist:-6},{ai:Y,dist:-6}];O6={firstframe:146,lastframe:153,frames:i3,endfunc:nn};function Lh(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}D();var Fa=.1,r3=80,oi=Math.random;function zh(e,t,n){M(e,Fa,n)}function a3(e,t,n){z(e,t,Fa,n)}function s3(e,t,n){ce(e,t,Fa,n)}function q(e,t,n){ue(e,t,Fa,n)}function ci(e,t,n){g(e,t)}var Zc,Nh,Oh,o3,jc,bc,c3,Jc,Ih,l3,u3,d3,m3,f3,h3,Ch;function Ph(e){e.monsterinfo.current_move=Zc}function _3(e){e.monsterinfo.current_move=Nh}function bn(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Zc;return}e.monsterinfo.current_move=Oh}function g3(e){e.monsterinfo.aiflags&4||e.enemy||oi()<=.3&&(e.monsterinfo.current_move=Ch)}function v3(e,t){oi()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function p3(e,t){let n={x:r3,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),mr(e,n,10+Math.floor(oi()*6),100,t)}function y3(e,t){let{forward:n,right:i}=j(e.angles),r={x:0,y:20,z:40},a=U(e.origin,F(n,r.x)),s=F(i,r.y),o=U(a,s),l={...o,z:o.z+r.z},c=e.skin>1?500:650,u=!!e.monsterinfo.blindfire,m=K;if(u&&e.monsterinfo.blind_fire_target)m=e.monsterinfo.blind_fire_target;else if(e.enemy)m=e.enemy.origin;else return;let d=P(m,l);!u&&e.enemy&&(oi()<.33||l.z<e.enemy.absmin.z?d={...d,z:d.z+e.enemy.viewheight}:d={...d,z:e.enemy.absmin.z+1-l.z});let f=B(d);e.skin>1?qx(e,l,f,50,c,0,.075,t):dr(e,l,f,50,c,0,t)}function w3(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=P(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=ai(n).y}}function A3(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function S3(e){e.monsterinfo.current_move=jc}function E3(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=bc;return}if(e.enemy&&e.enemy.health>0&&oi()<=.6){e.monsterinfo.current_move=jc;return}e.monsterinfo.current_move=bc}function b3(e){if(e.enemy&&e.enemy.health>0&&oi()<=.9){e.monsterinfo.current_move=Jc;return}e.monsterinfo.current_move=Ih}function k3(e){e.monsterinfo.current_move=Jc}var x3=Array.from({length:30},(e,t)=>({ai:zh,dist:0,think:t===8?(n,i)=>v3(n,i):null}));Ch={firstframe:201,lastframe:230,frames:x3,endfunc:Ph};var T3=Array.from({length:30},(e,t)=>({ai:zh,dist:0,think:t===29?g3:null}));Zc={firstframe:101,lastframe:130,frames:T3,endfunc:Ph};var M3=Array.from({length:10},()=>({ai:a3,dist:6}));Nh={firstframe:171,lastframe:180,frames:M3,endfunc:_3};var R3=Array.from({length:10},()=>({ai:s3,dist:12}));Oh={firstframe:171,lastframe:180,frames:R3,endfunc:bn};var L3=Array.from({length:5},()=>({ai:ci,dist:0}));l3={firstframe:90,lastframe:94,frames:L3,endfunc:bn};var z3=Array.from({length:5},()=>({ai:ci,dist:0}));u3={firstframe:95,lastframe:99,frames:z3,endfunc:bn};var N3=Array.from({length:21},()=>({ai:ci,dist:0}));d3={firstframe:100,lastframe:120,frames:N3,endfunc:bn};var O3=Array.from({length:12},()=>({ai:ci,dist:0}));m3={firstframe:48,lastframe:59,frames:O3,endfunc:Fh};var I3=Array.from({length:23},()=>({ai:ci,dist:0}));f3={firstframe:60,lastframe:82,frames:I3,endfunc:Fh};function Fh(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var C3=[{ai:q,dist:0,think:w3},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:4},{ai:q,dist:0},{ai:q,dist:-3},{ai:q,dist:3},{ai:q,dist:5},{ai:q,dist:7},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0,think:S3}];o3={firstframe:0,lastframe:12,frames:C3,endfunc:null};var P3=[{ai:q,dist:19,think:y3},{ai:q,dist:-6},{ai:q,dist:-5},{ai:q,dist:-2},{ai:q,dist:-7},{ai:q,dist:0},{ai:q,dist:1},{ai:q,dist:10,think:A3},{ai:q,dist:4},{ai:q,dist:5},{ai:q,dist:6},{ai:q,dist:6},{ai:q,dist:4},{ai:q,dist:3,think:E3}];jc={firstframe:13,lastframe:26,frames:P3,endfunc:null};var F3=[{ai:q,dist:-3},{ai:q,dist:0},{ai:q,dist:-6},{ai:q,dist:-4},{ai:q,dist:-2}];bc={firstframe:27,lastframe:31,frames:F3,endfunc:bn};var D3=[{ai:q,dist:1},{ai:q,dist:8},{ai:q,dist:3}];c3={firstframe:32,lastframe:34,frames:D3,endfunc:k3};var U3=[{ai:q,dist:1},{ai:q,dist:7,think:p3},{ai:q,dist:-7},{ai:q,dist:1},{ai:q,dist:-1},{ai:q,dist:1},{ai:q,dist:0},{ai:q,dist:1},{ai:q,dist:-2,think:b3}];Jc={firstframe:35,lastframe:43,frames:U3,endfunc:null};var B3=[{ai:q,dist:-6},{ai:q,dist:-1},{ai:q,dist:-6},{ai:q,dist:0}];Ih={firstframe:44,lastframe:47,frames:B3,endfunc:bn};var G3=Array.from({length:7},()=>({ai:ci,dist:0}));h3={firstframe:83,lastframe:89,frames:G3,endfunc:bn};var Da=.1,H3=80,V3=24;function W3(e,t,n){M(e,Da,n)}function K3(e,t,n){z(e,t,Da,n)}function Dh(e,t,n){ce(e,t,Da,n)}function Se(e,t,n){ue(e,t,Da,n)}function Qc(e,t,n){g(e,t)}var $3,X3,Uh,Bh,Y3,q3,Z3,j3;function J3(e){e.monsterinfo.current_move=Bh}function el(e){e.monsterinfo.current_move=Uh}function Ef(e,t){mr(e,{x:H3,y:0,z:0},5,0,t)}function Q3(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var e8=[{ai:W3,dist:0}];$3={firstframe:41,lastframe:41,frames:e8,endfunc:null};var t8=Array.from({length:24},()=>({ai:Dh,dist:V3}));Bh={firstframe:70,lastframe:93,frames:t8,endfunc:null};var n8=Array.from({length:6},()=>({ai:Dh,dist:8}));Uh={firstframe:65,lastframe:70,frames:n8,endfunc:J3};var i8=Array.from({length:24},()=>({ai:K3,dist:4}));X3={firstframe:41,lastframe:64,frames:i8,endfunc:null};var r8=Array.from({length:5},()=>({ai:Qc,dist:0}));q3={firstframe:99,lastframe:103,frames:r8,endfunc:el};var a8=Array.from({length:5},()=>({ai:Qc,dist:0}));Z3={firstframe:94,lastframe:98,frames:a8,endfunc:el};var s8=[{ai:Se,dist:0,think:Q3},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0,think:Ef},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0,think:Ef},{ai:Se,dist:0}];Y3={firstframe:0,lastframe:19,frames:s8,endfunc:el};function o8(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var c8=Array.from({length:56},()=>({ai:Qc,dist:0}));j3={firstframe:104,lastframe:159,frames:c8,endfunc:o8};D();var Ua=.1;function l8(e,t,n){M(e,Ua,n)}function u8(e,t,n){z(e,t,Ua,n)}function d8(e,t,n){ce(e,t,Ua,n)}function m8(e,t,n){ue(e,t,Ua,n)}function Gh(e,t,n){g(e,t)}var tl,Hh,Vh,f8,h8,Wh;function _8(e){e.monsterinfo.current_move=tl}function g8(e){e.monsterinfo.current_move=Hh}function nl(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Vh:e.monsterinfo.current_move=tl}function v8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n));At(e,n,i,5,1e3,0,0,t,1)}function p8(e){e.monsterinfo.nextframe=Wh.lastframe,e.nextthink=-1}var y8=Array.from({length:46},()=>({ai:l8,dist:0}));tl={firstframe:0,lastframe:45,frames:y8,endfunc:_8};var w8=Array.from({length:46},()=>({ai:u8,dist:5}));Hh={firstframe:0,lastframe:45,frames:w8,endfunc:g8};var A8=Array.from({length:46},()=>({ai:d8,dist:10}));Vh={firstframe:0,lastframe:45,frames:A8,endfunc:nl};var S8=Array.from({length:20},(e,t)=>({ai:m8,dist:0,think:t===10?v8:null}));f8={firstframe:46,lastframe:65,frames:S8,endfunc:nl};var E8=Array.from({length:6},()=>({ai:Gh,dist:0}));h8={firstframe:66,lastframe:71,frames:E8,endfunc:nl};var b8=Array.from({length:10},()=>({ai:Gh,dist:0}));Wh={firstframe:84,lastframe:93,frames:b8,endfunc:p8};D();var Ba=.1;function k8(e,t,n){M(e,Ba,n)}function x8(e,t,n){z(e,t,Ba,n)}function T8(e,t,n){ce(e,t,Ba,n)}function M8(e,t,n){ue(e,t,Ba,n)}function Kh(e,t,n){g(e,t)}var il,$h,Xh,R8,L8,Yh;function z8(e){e.monsterinfo.current_move=il}function N8(e){e.monsterinfo.current_move=$h}function rl(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Xh:e.monsterinfo.current_move=il}function O8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n));At(e,n,i,5,1e3,0,0,t,1)}function I8(e,t){if(!e.enemy)return;let n=5+Math.random()*5;tn(e,e.enemy)<=80&&nr(e,e.enemy)&&he(e.enemy,e,e,B(P(e.enemy.origin,e.origin)),e.enemy.origin,K,n,5,2,0,t.timeSeconds)}function C8(e){e.monsterinfo.nextframe=Yh.lastframe,e.nextthink=-1}var P8=Array.from({length:46},()=>({ai:k8,dist:0}));il={firstframe:0,lastframe:45,frames:P8,endfunc:z8};var F8=Array.from({length:46},()=>({ai:x8,dist:5}));$h={firstframe:0,lastframe:45,frames:F8,endfunc:N8};var D8=Array.from({length:46},()=>({ai:T8,dist:10}));Xh={firstframe:0,lastframe:45,frames:D8,endfunc:rl};var U8=Array.from({length:20},(e,t)=>({ai:M8,dist:0,think:t===10?O8:t===12?I8:null}));R8={firstframe:46,lastframe:65,frames:U8,endfunc:rl};var B8=Array.from({length:6},()=>({ai:Kh,dist:0}));L8={firstframe:66,lastframe:71,frames:B8,endfunc:rl};var G8=Array.from({length:10},()=>({ai:Kh,dist:0}));Yh={firstframe:84,lastframe:93,frames:G8,endfunc:C8};D();var Ga=.1;function H8(e,t,n){M(e,Ga,n)}function V8(e,t,n){z(e,t,Ga,n)}function W8(e,t,n){ce(e,t,Ga,n)}function qh(e,t,n){ue(e,t,Ga,n)}function Zh(e,t,n){g(e,t)}var al,jh,Jh,K8,$8,X8,Qh;function Y8(e){e.monsterinfo.current_move=al}function q8(e){e.monsterinfo.current_move=jh}function Ha(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Jh:e.monsterinfo.current_move=al}function Z8(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function j8(e,t){if(!e.enemy||!nr(e,e.enemy))return;let n=tn(e,e.enemy);if(Z8(n)!=="melee")return;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=B(P(e.enemy.origin,i));he(e.enemy,e,e,r,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function J8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=B(P(e.enemy.origin,n));_h(e,n,i,50,100,0,t)}function Q8(e){e.monsterinfo.nextframe=Qh.lastframe,e.nextthink=-1}var eT=Array.from({length:30},()=>({ai:H8,dist:0}));al={firstframe:0,lastframe:29,frames:eT,endfunc:Y8};var tT=Array.from({length:40},()=>({ai:V8,dist:3}));jh={firstframe:30,lastframe:69,frames:tT,endfunc:q8};var nT=Array.from({length:20},()=>({ai:W8,dist:12}));Jh={firstframe:70,lastframe:89,frames:nT,endfunc:Ha};var iT=Array.from({length:10},(e,t)=>({ai:qh,dist:0,think:t===5?j8:null}));K8={firstframe:90,lastframe:99,frames:iT,endfunc:Ha};var rT=Array.from({length:12},(e,t)=>({ai:qh,dist:0,think:t===6?J8:null}));$8={firstframe:100,lastframe:111,frames:rT,endfunc:Ha};var aT=Array.from({length:6},()=>({ai:Zh,dist:0}));X8={firstframe:112,lastframe:117,frames:aT,endfunc:Ha};var sT=Array.from({length:12},()=>({ai:Zh,dist:0}));Qh={firstframe:118,lastframe:129,frames:sT,endfunc:Q8};D();var Va=.1;function e1(e,t,n){M(e,Va,n)}function oT(e,t,n){z(e,t,Va,n)}function t1(e,t,n){ce(e,t,Va,n)}function Wa(e,t,n){ue(e,t,Va,n)}function Ee(e,t,n){g(e,t)}var sl,n1,cT,i1,lT,uT,dT,ol,r1,mT,fT,hT,a1,_T,s1;function gT(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function vT(e){e.monsterinfo.current_move=sl}function pT(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=n1)}function kn(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=sl:e.monsterinfo.current_move=i1}function yT(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function wT(e,t){e.monsterinfo.current_move=ol}function AT(e,t){if(e.enemy&&e.enemy.health>0&&En(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=ol;return}e.monsterinfo.current_move=r1}function ST(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},i=B(P(e.enemy.origin,n)),r=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),Qt(e,n,i,r,a,300,500,0,t,5)}function o1(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n)),r=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),Bc(t,e,n,i,r,a)}function ET(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&o1(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function bT(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function kT(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function xT(e,t){if(!e.enemy)return;let n=P(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),r=600,a=B({x:n.x,y:n.y,z:0}),s=ai(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:270},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3}function TT(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049;return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=214:e.monsterinfo.nextframe=212}function MT(e,t){if(e.spawnflags&16||!e.enemy||!e.groundentity)return;Math.sqrt(Math.pow(e.enemy.origin.x-e.origin.x,2)+Math.pow(e.enemy.origin.y-e.origin.y,2))>256&&Math.random()<.02&&(t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),e.monsterinfo.current_move=s1)}var RT=Array.from({length:30},(e,t)=>({ai:e1,dist:0,think:t===29?pT:null}));sl={firstframe:0,lastframe:29,frames:RT,endfunc:null};var LT=Array.from({length:40},(e,t)=>({ai:e1,dist:0,think:t===7?gT:null}));n1={firstframe:30,lastframe:69,frames:LT,endfunc:vT};var zT=[0,3,4,5,7,2,6,4,2,7,5,7,4],NT=zT.map(e=>({ai:oT,dist:e}));cT={firstframe:76,lastframe:88,frames:NT,endfunc:null};var OT=[26,9,9,9,15,10,13,6],IT=OT.map((e,t)=>({ai:t1,dist:e,think:t%4===0?MT:null}));i1={firstframe:94,lastframe:101,frames:IT,endfunc:null};var CT=[32,15,10,18,8,20],PT=CT.map(e=>({ai:t1,dist:e}));lT={firstframe:102,lastframe:107,frames:PT,endfunc:null};var FT=Array.from({length:21},(e,t)=>({ai:Wa,dist:0,think:[4,7,10,13].includes(t)?o1:null}));dT={firstframe:108,lastframe:128,frames:FT,endfunc:kn};var DT=Array.from({length:7},(e,t)=>({ai:Wa,dist:0,think:t===0?yT:null}));uT={firstframe:137,lastframe:143,frames:DT,endfunc:wT};var UT=Array.from({length:8},()=>({ai:Wa,dist:0,think:ST}));ol={firstframe:144,lastframe:151,frames:UT,endfunc:AT};var BT=Array.from({length:7},()=>({ai:Wa,dist:0}));r1={firstframe:152,lastframe:158,frames:BT,endfunc:kn};var GT=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],HT=GT.map(e=>({ai:Ee,dist:e}));mT={firstframe:159,lastframe:176,frames:HT,endfunc:kn};var VT=[-2,11,6,2,-1,-7,-2,-7],WT=VT.map(e=>({ai:Ee,dist:e}));fT={firstframe:177,lastframe:184,frames:WT,endfunc:kn};var KT=[-3,1,1,0,1],$T=KT.map(e=>({ai:Ee,dist:e}));hT={firstframe:185,lastframe:189,frames:$T,endfunc:kn};var XT=[0,0,0,-7,-3,-5,8,6,0,0,0],YT=XT.map(e=>({ai:Ee,dist:e}));function qT(e){e.monsterinfo.nextframe=a1.lastframe,e.nextthink=-1,e.solid=0}a1={firstframe:190,lastframe:200,frames:YT,endfunc:qT};var ZT=[{ai:Ee,dist:1,think:ET},{ai:Ee,dist:1},{ai:Ee,dist:1,think:bT},{ai:Ee,dist:0},{ai:Ee,dist:-1},{ai:Ee,dist:-1},{ai:Ee,dist:0,think:kT},{ai:Ee,dist:-1}];_T={firstframe:201,lastframe:208,frames:ZT,endfunc:kn};var jT=[{ai:Ee,dist:0,think:xT},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0,think:TT},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0}];s1={firstframe:209,lastframe:216,frames:jT,endfunc:kn};D();var Ka=.1;function JT(e,t,n){M(e,Ka,n)}function QT(e,t,n){z(e,t,Ka,n)}function eM(e,t,n){ce(e,t,Ka,n)}function tM(e,t,n){ue(e,t,Ka,n)}function c1(e,t,n){g(e,t)}var cl,l1,u1,nM,iM,d1;function rM(e){e.monsterinfo.current_move=cl}function aM(e){e.monsterinfo.current_move=l1}function ll(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=u1:e.monsterinfo.current_move=cl}function sM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n));At(e,n,i,5,1e3,0,0,t,1)}function oM(e){e.monsterinfo.nextframe=d1.lastframe,e.nextthink=-1}var cM=Array.from({length:46},()=>({ai:JT,dist:0}));cl={firstframe:0,lastframe:45,frames:cM,endfunc:rM};var lM=Array.from({length:46},()=>({ai:QT,dist:5}));l1={firstframe:0,lastframe:45,frames:lM,endfunc:aM};var uM=Array.from({length:46},()=>({ai:eM,dist:10}));u1={firstframe:0,lastframe:45,frames:uM,endfunc:ll};var dM=Array.from({length:20},(e,t)=>({ai:tM,dist:0,think:t===10?sM:null}));nM={firstframe:46,lastframe:65,frames:dM,endfunc:ll};var mM=Array.from({length:6},()=>({ai:c1,dist:0}));iM={firstframe:66,lastframe:71,frames:mM,endfunc:ll};var fM=Array.from({length:10},()=>({ai:c1,dist:0}));d1={firstframe:84,lastframe:93,frames:fM,endfunc:oM};D();var $a=.1;function hM(e,t,n){M(e,$a,n)}function _M(e,t,n){z(e,t,$a,n)}function gM(e,t,n){ce(e,t,$a,n)}function vM(e,t,n){ue(e,t,$a,n)}function m1(e,t,n){g(e,t)}var ul,f1,h1,pM,yM,_1;function wM(e){e.monsterinfo.current_move=ul}function AM(e){e.monsterinfo.current_move=f1}function dl(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=h1:e.monsterinfo.current_move=ul}function SM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n));At(e,n,i,5,1e3,0,0,t,1)}function EM(e){e.monsterinfo.nextframe=_1.lastframe,e.nextthink=-1}var bM=Array.from({length:46},()=>({ai:hM,dist:0}));ul={firstframe:0,lastframe:45,frames:bM,endfunc:wM};var kM=Array.from({length:46},()=>({ai:_M,dist:5}));f1={firstframe:0,lastframe:45,frames:kM,endfunc:AM};var xM=Array.from({length:46},()=>({ai:gM,dist:10}));h1={firstframe:0,lastframe:45,frames:xM,endfunc:dl};var TM=Array.from({length:20},(e,t)=>({ai:vM,dist:0,think:t===10?SM:null}));pM={firstframe:46,lastframe:65,frames:TM,endfunc:dl};var MM=Array.from({length:6},()=>({ai:m1,dist:0}));yM={firstframe:66,lastframe:71,frames:MM,endfunc:dl};var RM=Array.from({length:10},()=>({ai:m1,dist:0}));_1={firstframe:84,lastframe:93,frames:RM,endfunc:EM};D();var Xa=.1;function LM(e,t,n){M(e,Xa,n)}function zM(e,t,n){z(e,t,Xa,n)}function NM(e,t,n){ce(e,t,Xa,n)}function OM(e,t,n){ue(e,t,Xa,n)}function ml(e,t,n){g(e,t)}var fl,g1,v1,IM,CM,p1,PM;function FM(e){e.monsterinfo.current_move=fl}function DM(e){e.monsterinfo.current_move=g1}function Ya(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=v1:e.monsterinfo.current_move=fl}function UM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},r=B(P(i,n));Qt(e,n,r,5,2,.05,.05,0,t,4)}var BM=Array.from({length:22},()=>({ai:LM,dist:0}));fl={firstframe:0,lastframe:21,frames:BM,endfunc:FM};var GM=Array.from({length:15},()=>({ai:zM,dist:4}));g1={firstframe:22,lastframe:36,frames:GM,endfunc:DM};var HM=Array.from({length:8},()=>({ai:NM,dist:12}));v1={firstframe:37,lastframe:44,frames:HM,endfunc:Ya};var VM=Array.from({length:15},(e,t)=>({ai:OM,dist:0,think:t>=5&&t<=7?UM:null}));IM={firstframe:45,lastframe:59,frames:VM,endfunc:Ya};var WM=Array.from({length:10},()=>({ai:ml,dist:0}));CM={firstframe:60,lastframe:69,frames:WM,endfunc:Ya};var KM=Array.from({length:20},()=>({ai:ml,dist:0}));function $M(e){e.monsterinfo.nextframe=p1.lastframe,e.nextthink=-1}p1={firstframe:70,lastframe:89,frames:KM,endfunc:$M};var XM=Array.from({length:5},()=>({ai:ml,dist:0}));PM={firstframe:90,lastframe:94,frames:XM,endfunc:Ya};D();var hr=.1,YM={x:30,y:28,z:24},qM={x:26,y:16,z:24},ZM={x:26,y:-14,z:24};function jM(e,t,n){M(e,hr,n)}function JM(e,t,n){z(e,t,hr,n)}function QM(e,t,n){ce(e,t,hr,n)}function y1(e,t,n){ue(e,t,hr,n)}function li(e,t,n){g(e,t)}var hl,w1,A1,S1,_l,E1,b1,k1,x1,gl,kc;function T1(e){e.monsterinfo.current_move=hl}function M1(e){e.monsterinfo.current_move=w1}function Ct(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=A1:e.monsterinfo.current_move=hl}function e4(e){if(!e.enemy)return;let t=Math.random();t<=.3?e.monsterinfo.current_move=S1:t<=.6?e.monsterinfo.current_move=_l:e.monsterinfo.current_move=E1}function vl(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=F(n,t.x),o=F(i,t.y),l=F(r,t.z);return U(U(U(a,s),o),l)}function t4(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=vl(e,YM),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=B(P(i,n));hh(e,n,r,50,300,100,300,0,t)}function n4(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=vl(e,ZM),i=B(P(e.pos1,n));_h(e,n,i,50,100,0,t)}function i4(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function r4(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=vl(e,qM),i=(e.monsterinfo.nextframe||0)-_l.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=P(s,n),c={...ai(o)};i<=12?c.y-=5*(i-4):c.y-=40-5*(i-12),a=j(c).forward}else{let{forward:s}=j(e.angles);a=s}At(e,n,a,15,1e3,0,0,t,1)}function a4(e,t,n,i,r){e.health<e.max_health/2&&(e.skin=1),!(e.timestamp<(e.pain_finished_time||0))&&(i<=25&&Math.random()<.2||(e.pain_finished_time=e.timestamp+3,i<=40?(r.engine.sound?.(e,0,"makron/pain1.wav",1,1,0),e.monsterinfo.current_move=b1):i<=110?(r.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=k1):Math.random()<=.45&&(r.engine.sound?.(e,0,"makron/pain3.wav",1,1,0),e.monsterinfo.current_move=x1)))}function s4(e,t){++e.frame>=365&&(e.frame=346),e.nextthink=t.timeSeconds+.1,e.angles.x>0&&(e.angles={...e.angles,x:Math.max(0,e.angles.x-15)})}function o4(e,t){e.frame=346,e.model="models/monsters/boss3/rider/tris.md2",e.skin=1,e.think=s4,e.nextthink=t.timeSeconds+.1,t.sound(e,0,"makron/spine.wav",1,1,0),e.movetype=7;let{forward:n,up:i}=j(e.angles),r=F(i,120),a=F(n,-120);e.velocity=U(U(e.velocity,r),a),e.origin=U(e.origin,F(n,-10)),e.angles={...e.angles,x:90},e.avelocity=K,t.linkentity(e)}function c4(e,t){let n=t.spawn();n.classname="makron_torso",n.origin={...e.origin},n.angles={...e.angles},n.origin.z+=e.maxs.z-15,o4(n,t)}function l4(e,t){t.engine.sound?.(e,0,"makron/death.wav",1,1,0),c4(e,t),e.monsterinfo.current_move=gl,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function u4(e){e.monsterinfo.nextframe=gl.lastframe,e.nextthink=-1}var d4=Array.from({length:60},()=>({ai:jM,dist:0}));hl={firstframe:0,lastframe:59,frames:d4,endfunc:T1};var m4=Array.from({length:10},()=>({ai:JM,dist:8}));w1={firstframe:60,lastframe:69,frames:m4,endfunc:M1};var f4=Array.from({length:10},()=>({ai:QM,dist:8}));A1={firstframe:60,lastframe:69,frames:f4,endfunc:Ct};var h4=Array.from({length:8},(e,t)=>({ai:y1,dist:0,think:t===3?t4:null}));S1={firstframe:70,lastframe:77,frames:h4,endfunc:Ct};var _4=Array.from({length:26},(e,t)=>({ai:li,dist:0,think:t>=4&&t<=20?r4:null}));_l={firstframe:78,lastframe:103,frames:_4,endfunc:Ct};var g4=Array.from({length:16},(e,t)=>({ai:y1,dist:0,think:t===7?i4:t===8?n4:null}));E1={firstframe:104,lastframe:119,frames:g4,endfunc:Ct};var v4=Array.from({length:4},()=>({ai:li,dist:0}));b1={firstframe:120,lastframe:123,frames:v4,endfunc:Ct};var p4=Array.from({length:4},()=>({ai:li,dist:0}));k1={firstframe:124,lastframe:127,frames:p4,endfunc:Ct};var y4=Array.from({length:27},()=>({ai:li,dist:0}));x1={firstframe:128,lastframe:154,frames:y4,endfunc:Ct};var w4=Array.from({length:95},()=>({ai:li,dist:0}));gl={firstframe:155,lastframe:249,frames:w4,endfunc:u4};var A4=Array.from({length:13},()=>({ai:li,dist:0}));kc={firstframe:250,lastframe:262,frames:A4,endfunc:Ct};function S4(e,t){e.classname="monster_makron",e.model="models/monsters/boss3/rider/tris.md2",e.mins={x:-30,y:-30,z:0},e.maxs={x:30,y:30,z:90},e.movetype=5,e.solid=2,e.health=3e3,e.max_health=3e3,e.mass=500,e.takedamage=!0,e.viewheight=90,e.pain=(n,i,r,a)=>a4(n,i,r,a,t.entities),e.die=(n,i,r,a,s)=>{if(n.health<=-2e3){ah(t.entities,n.origin,a),t.entities.free(n);return}n.deadflag=2,n.solid=0,l4(n,t.entities)},e.monsterinfo.stand=T1,e.monsterinfo.walk=M1,e.monsterinfo.run=Ct,e.monsterinfo.attack=e4,e.monsterinfo.sight=(n,i)=>{t.entities.sound?.(n,0,"makron/sight.wav",1,1,0),n.monsterinfo.current_move=kc},e.think=gx,e.monsterinfo.current_move=kc,e.nextthink=e.timestamp+hr}D();var qa=.1,E4={x:40,y:-20,z:20},b4={x:40,y:20,z:20},k4={x:30,y:0,z:40};function x4(e,t,n){M(e,qa,n)}function T4(e,t,n){z(e,t,qa,n)}function M4(e,t,n){ce(e,t,qa,n)}function pl(e,t,n){ue(e,t,qa,n)}function _r(e,t,n){g(e,t)}var yl,R1,L1,wl,xc,R4,L4,z4,N4,z1;function O4(e){e.monsterinfo.current_move=yl}function I4(e){e.monsterinfo.current_move=R1}function ui(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=L1:e.monsterinfo.current_move=yl}function C4(e,t){let n=(i,r,a,s,o,l)=>{let c=t.trace(i,r,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&En(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=wl:e.monsterinfo.current_move=xc}function Tc(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=F(n,t.x),o=F(i,t.y),l=F(r,t.z);return U(U(U(a,s),o),l)}function P4(e,t){if(!e.enemy)return;let n=Tc(e,b4),i=B(P(e.enemy.origin,n));Ea(e,n,i,6,4,.05,.05,0,t,4);let r=Tc(e,E4),a=B(P(e.enemy.origin,r));Ea(e,r,a,6,4,.05,.05,0,t,4)}function F4(e,t){if(!e.enemy)return;let n=Tc(e,k4),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=B(P(i,n));hh(e,n,r,50,300,100,200,0,t)}function D4(e){e.monsterinfo.nextframe=z1.lastframe,e.nextthink=-1}function U4(e,t){let n=t.spawn();if(n.classname="monster_makron",n.origin={...e.origin},n.target=e.target,n.enemy=e.enemy,S4(n,{entities:t}),n.enemy&&n.enemy.health>0){let r=P(n.enemy.origin,n.origin);n.angles={...n.angles,y:or(r)};let a=B(r),s=F(a,400);n.velocity={x:s.x,y:s.y,z:200},n.groundentity=null,n.monsterinfo.sight&&n.monsterinfo.sight(n,n.enemy)}}var B4=Array.from({length:51},()=>({ai:x4,dist:0}));yl={firstframe:0,lastframe:50,frames:B4,endfunc:O4};var G4=Array.from({length:14},()=>({ai:T4,dist:10}));R1={firstframe:51,lastframe:64,frames:G4,endfunc:I4};var H4=Array.from({length:14},()=>({ai:M4,dist:10}));L1={firstframe:51,lastframe:64,frames:H4,endfunc:ui};var V4=Array.from({length:8},()=>({ai:pl,dist:0})),W4={firstframe:65,lastframe:72,frames:V4,endfunc:null},K4=Array.from({length:6},()=>({ai:pl,dist:0,think:P4}));wl={firstframe:73,lastframe:78,frames:K4,endfunc:C4};W4.endfunc=e=>{e.monsterinfo.current_move=wl};var $4=Array.from({length:4},()=>({ai:_r,dist:0}));xc={firstframe:79,lastframe:82,frames:$4,endfunc:ui};var X4=Array.from({length:13},(e,t)=>({ai:pl,dist:0,think:t===6?F4:null}));R4={firstframe:83,lastframe:95,frames:X4,endfunc:ui};var Y4=Array.from({length:3},()=>({ai:_r,dist:0}));L4={firstframe:96,lastframe:98,frames:Y4,endfunc:ui};var q4=Array.from({length:3},()=>({ai:_r,dist:0}));z4={firstframe:99,lastframe:101,frames:q4,endfunc:ui};var Z4=Array.from({length:25},()=>({ai:_r,dist:0}));N4={firstframe:102,lastframe:126,frames:Z4,endfunc:ui};var j4=Array.from({length:50},(e,t)=>({ai:_r,dist:0,think:t===49?((n,i)=>{}):t===48?U4:null}));z1={firstframe:127,lastframe:176,frames:j4,endfunc:D4};var Al=.1,Za=4,N1=8,ja=16,J4=32,Sl=64,Q4=0,eR=39,tR=40,nR=58,iR=59,O1=64,rR=93,aR=95,El=99,I1=159,C1=160,P1=172,F1=173,D1=198,sR=199,oR=209,cR=210,lR=226,bl=227,kl=235,U1=236,ba=244,uR=245,dR=251,mR=252,fR=266,hR=267,_R=281,B1,G1,H1,V1,W1,gr,K1,$1,X1,Y1,gR,vR,q1,Z1,pR,yR,xl,j1,wR="insane/insane11.wav",AR="insane/insane5.wav",SR="insane/insane7.wav",bf=["insane/insane1.wav","insane/insane2.wav","insane/insane3.wav","insane/insane4.wav","insane/insane6.wav","insane/insane8.wav","insane/insane9.wav","insane/insane10.wav"];function Mc(e,t){t.sound(e,2,wR,1,1,0)}function ER(e,t){(e.spawnflags&Sl)===0&&t.sound(e,2,AR,1,1,0)}function Tl(e,t){e.spawnflags&Sl||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,SR,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function rn(e,t){if(!(e.spawnflags&Sl)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=bf[Math.floor(Math.random()*bf.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function qe(e,t){}function J1(e,t){e.spawnflags&J4||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=H1:e.monsterinfo.current_move=W1)}function bR(e,t){e.spawnflags&Za&&e.spawnflags&ja||Math.random()<.5&&(e.monsterinfo.current_move=V1)}function Ml(e,t){e.monsterinfo.current_move=gr}function Q1(e,t){Math.random()<.8?e.monsterinfo.current_move=xl:e.monsterinfo.current_move=j1}function Rl(e,t){e.spawnflags&N1?(e.monsterinfo.current_move=xl,e.monsterinfo.aiflags|=1):e.spawnflags&Za&&e.spawnflags&ja?e.monsterinfo.current_move=gr:Math.random()<.5?e.monsterinfo.current_move=B1:e.monsterinfo.current_move=G1}function Ll(e,t){if(e.spawnflags&ja&&e.frame===ba){e.monsterinfo.current_move=gr;return}e.spawnflags&Za?e.monsterinfo.current_move=q1:Math.random()<=.5?e.monsterinfo.current_move=K1:e.monsterinfo.current_move=X1}function vr(e,t){if(e.spawnflags&ja&&e.frame===ba){e.monsterinfo.current_move=gr;return}let n=e.frame;e.spawnflags&Za||n>=U1&&n<=ba||n>=bl&&n<=kl||n>=El&&n<=I1?e.monsterinfo.current_move=Z1:Math.random()<=.5?e.monsterinfo.current_move=$1:e.monsterinfo.current_move=Y1}function e_(e,t){e.spawnflags&N1?e.flags|=1:(e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,t.linkentity(e)),e.nextthink=-1}function h(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,Al,a)},dist:t}}var kR=[h(M),h(M),h(M),h(M),h(M),h(M,0,J1)];B1={firstframe:iR,lastframe:O1,frames:kR,endfunc:Rl};var xR=[h(M,0,ER),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M,0,J1)];G1={firstframe:O1,lastframe:rR,frames:xR,endfunc:Rl};var TR=[h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,0,Tl),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,2.7),h(g,4.1),h(g,6),h(g,7.6),h(g,3.6),h(g),h(g),h(g,0,Mc),h(g),h(g),h(g),h(g),h(g),h(g,0,Mc),h(g),h(g),h(g),h(g),h(g),h(g)];H1={firstframe:Q4,lastframe:eR,frames:TR,endfunc:Ml};var MR=[h(g,-.7),h(g,-1.2),h(g,-1.5),h(g,-4.5),h(g,-3.5),h(g,-.2),h(g),h(g,-1.3),h(g,-3),h(g,-2),h(g),h(g),h(g),h(g,-3.3),h(g,-1.6),h(g,-.3),h(g),h(g),h(g)];V1={firstframe:tR,lastframe:nR,frames:MR,endfunc:Rl};var RR=[h(g,.2),h(g,11.5),h(g,5.1),h(g,7.1),h(g)];W1={firstframe:aR,lastframe:El,frames:RR,endfunc:Ml};var LR=[h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,-1.7),h(g,-1.6),h(g),h(g),h(g),h(g,0,Mc),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,0,Tl),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,.5),h(g),h(g,-.2,rn),h(g),h(g,.2),h(g,.4),h(g,.6),h(g,.8),h(g,.7),h(g,0,bR)];gr={firstframe:El,lastframe:I1,frames:LR,endfunc:Ml};var Rc=[h(z,0,rn),h(z,2.5),h(z,3.5),h(z,1.7),h(z,2.3),h(z,2.4),h(z,2.2,qe),h(z,4.2),h(z,5.6),h(z,3.3),h(z,2.4),h(z,.9),h(z,0,qe)];K1={firstframe:C1,lastframe:P1,frames:Rc,endfunc:Ll};$1={firstframe:C1,lastframe:P1,frames:Rc.map(e=>({ai:(t,n,i)=>{e.ai===Rc[0].ai&&rn(t,i),ce(t,n,Al,i)},dist:e.dist})),endfunc:vr};var Lc=[h(z,0,rn),h(z,3.4),h(z,3.6),h(z,2.9),h(z,2.2),h(z,2.6,qe),h(z),h(z,.7),h(z,4.8),h(z,5.3),h(z,1.1),h(z,2,qe),h(z,.5),h(z),h(z),h(z,4.9),h(z,6.7),h(z,3.8),h(z,2,qe),h(z,.2),h(z),h(z,3.4),h(z,6.4),h(z,5),h(z,1.8,qe),h(z)];X1={firstframe:F1,lastframe:D1,frames:Lc,endfunc:Ll};Y1={firstframe:F1,lastframe:D1,frames:Lc.map(e=>({ai:(t,n,i)=>{e.ai===Lc[0].ai&&rn(t,i),ce(t,n,Al,i)},dist:e.dist})),endfunc:vr};var zR=[h(g),h(g),h(g),h(g),h(g,0,qe),h(g),h(g),h(g),h(g),h(g),h(g,0,qe)];gR={firstframe:sR,lastframe:oR,frames:zR,endfunc:vr};var NR=[h(g),h(g),h(g),h(g),h(g,0,qe),h(g),h(g),h(g),h(g),h(g),h(g,0,qe),h(g),h(g,0,qe),h(g),h(g),h(g),h(g)];vR={firstframe:cR,lastframe:lR,frames:NR,endfunc:e_};var t_=[h(z,0,rn),h(z,1.5),h(z,2.1),h(z,3.6),h(z,2,qe),h(z,.9),h(z,3),h(z,3.4),h(z,2.4,qe)];q1={firstframe:bl,lastframe:kl,frames:t_,endfunc:Ll};Z1={firstframe:bl,lastframe:kl,frames:t_,endfunc:vr};var OR=[h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g)];pR={firstframe:U1,lastframe:ba,frames:OR,endfunc:vr};var IR=[h(g),h(g),h(g),h(g),h(g,0,rn),h(g),h(g)];yR={firstframe:uR,lastframe:dR,frames:IR,endfunc:e_};var CR=[h(g,0,Tl),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g)];xl={firstframe:mR,lastframe:fR,frames:CR,endfunc:Q1};var PR=[h(g,0,rn),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g)];j1={firstframe:hR,lastframe:_R,frames:PR,endfunc:Q1};D();D();var FR=.1,DR=0;var zc=0,n_=39,UR=40,BR=47,GR=48,HR=53,VR=54,WR=56,KR=57,$R=59,XR=60,YR=62,qR=63,ZR=76,jR=77,JR=93,QR=94,eL=100,tL=101,nL=113,iL=114,rL=117,i_,r_,a_,aL,sL,oL,cL,lL,uL,dL,mL;function b(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,FR,a)},dist:t}}function kf(e,t){e.monsterinfo.current_move=i_,t.timeSeconds<1&&(e.frame=zc+Math.floor(Math.random()*(n_-zc+1)))}function fL(e,t){e.monsterinfo.current_move=r_}function di(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?fL(e,t):kf(e,t);return}if(e.monsterinfo.aiflags&1){kf(e,t);return}e.monsterinfo.current_move=a_}function hL(e,t){let n={x:0,y:0,z:0},r=j(e.angles).forward,a=ri(e.origin);a.z+=e.viewheight;let s;if(e.enemy){let o;e.enemy.health>0?(o=P(e.enemy.origin,F(e.enemy.velocity,.2)),o.z+=e.enemy.viewheight):(o=ri(e.enemy.absmin),o.z+=e.enemy.size.z/2+1),s=P(o,a),s=B(s)}else s=r;Qt(e,a,s,3,4,0,0,DR,t)}function s_(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.svflags|=1,e.nextthink=-1,t.linkentity(e)}function _L(e,t){hL(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var gL=[b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M),b(M)];i_={firstframe:zc,lastframe:n_,frames:gL,endfunc:null};var vL=[b(z),b(z,6),b(z,10),b(z,3),b(z,2),b(z,7),b(z,10),b(z,1)];r_={firstframe:UR,lastframe:BR,frames:vL,endfunc:null};var pL=[b(ce,4),b(ce,15),b(ce,15),b(ce,8),b(ce,20),b(ce,15)];a_={firstframe:GR,lastframe:HR,frames:pL,endfunc:null};var yL=[b(g,-5),b(g,4),b(g,1)];aL={firstframe:VR,lastframe:WR,frames:yL,endfunc:di};var wL=[b(g,-4),b(g,4),b(g)];sL={firstframe:KR,lastframe:$R,frames:wL,endfunc:di};var AL=[b(g,-1),b(g,1),b(g,0)];oL={firstframe:XR,lastframe:YR,frames:AL,endfunc:di};var SL=[b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe)];cL={firstframe:qR,lastframe:ZR,frames:SL,endfunc:di};var EL=[b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe),b(oe)];lL={firstframe:jR,lastframe:JR,frames:EL,endfunc:di};var bL=[b(g),b(g),b(g,-13),b(g,14),b(g,3),b(g,-2),b(g,1)];uL={firstframe:QR,lastframe:eL,frames:bL,endfunc:s_};var kL=[b(g),b(g,7),b(g,-6),b(g,-5),b(g,1),b(g),b(g,-1),b(g,-2),b(g,-1),b(g,-9),b(g,-13),b(g,-13),b(g)];dL={firstframe:tL,lastframe:nL,frames:kL,endfunc:s_};var xL=[b(ue,-2,_L),b(ue,-2),b(ue,3),b(ue,2)];mL={firstframe:iL,lastframe:rL,frames:xL,endfunc:di};D();D();var rr=.1;function TL(e,t,n){if(e.classname==="monster_medic"&&u_(e,n)){e.monsterinfo.current_move=pr;return}M(e,rr,n)}function ML(e,t,n){z(e,t,rr,n)}function RL(e,t,n){e.classname==="monster_medic"&&u_(e,n)?e.monsterinfo.current_move=pr:ce(e,t,rr,n)}function vt(e,t,n){ue(e,t,rr,n)}function zl(e,t,n){g(e,t)}var Nl,o_,pr,LL,c_,zL,NL,l_;function OL(e){e.monsterinfo.current_move=Nl}function IL(e){e.monsterinfo.current_move=o_}function yr(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&tn(e,e.enemy)<80){e.monsterinfo.current_move=c_;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=pr:e.monsterinfo.current_move=Nl}function CL(e,t){if(!e.enemy||e.enemy.health<=0)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n));At(e,n,i,2,1e3,0,0,t,10)}function Yt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(tn(e,e.enemy)>400){e.monsterinfo.current_move=pr;return}let i=j(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},l=U(e.origin,U(F(r,o.x),U(F(a,o.y),F(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,ae.temp_entity,{te:ye.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:l,end:c})}function PL(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),Yt(e,t)}function FL(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if(tn(e,n)>400){e.enemy=null;return}if(!i)n.deadflag=0,n.health=n.max_health,n.takedamage=!0,n.solid=2,n.nextthink=t.timeSeconds+.1,n.monsterinfo&&n.monsterinfo.stand&&n.monsterinfo.stand(n,t),n.bad_medic=e;else{let r={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};i(n,r),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function u_(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,i=1024,r=(a,s,o,l,c,u)=>{let m=t.trace(a,s,o,l,c,u);return{fraction:m.fraction,ent:m.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!En(e,a,r))return;let s=tn(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function DL(e,t){let n=Math.random(),i="monster_soldier_light";n>.8?i="monster_soldier_ssg":n>.5&&(i="monster_soldier");let r=t.getSpawnFunction(i);if(r){let a=j(e.angles),s=F(a.forward,64),o=U(e.origin,s),l={...o,z:o.z+8},c=t.trace(e.origin,{x:-16,y:-16,z:-24},{x:16,y:16,z:32},l,e,De|qt|tr);if(c.fraction<1||c.startsolid||c.allsolid)return;let u=t.spawn();u.origin=l,u.angles={...e.angles},r(u,{entities:t,keyValues:{classname:i},warn:()=>{},free:d=>t.free(d)}),u.enemy=e.enemy,t.multicast(l,1,ae.muzzleflash,{entId:u.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function UL(e){e.monsterinfo.nextframe=l_.lastframe,e.nextthink=-1}var BL=Array.from({length:30},()=>({ai:TL,dist:0}));Nl={firstframe:0,lastframe:29,frames:BL,endfunc:OL};var GL=Array.from({length:40},()=>({ai:ML,dist:3}));o_={firstframe:30,lastframe:69,frames:GL,endfunc:IL};var HL=Array.from({length:20},()=>({ai:RL,dist:12}));pr={firstframe:70,lastframe:89,frames:HL,endfunc:yr};var VL=Array.from({length:16},(e,t)=>({ai:vt,dist:0,think:t>=4&&t<=13?CL:null}));LL={firstframe:90,lastframe:105,frames:VL,endfunc:yr};var WL=[{ai:vt,dist:0,think:PL},{ai:vt,dist:0,think:Yt},{ai:vt,dist:0,think:Yt},{ai:vt,dist:0,think:Yt},{ai:vt,dist:0,think:Yt},{ai:vt,dist:0,think:Yt},{ai:vt,dist:0,think:Yt},{ai:vt,dist:0,think:Yt},{ai:vt,dist:0,think:FL}];c_={firstframe:106,lastframe:114,frames:WL,endfunc:yr};var KL=Array.from({length:6},()=>({ai:zl,dist:0}));NL={firstframe:116,lastframe:121,frames:KL,endfunc:yr};var $L=Array.from({length:23},(e,t)=>({ai:zl,dist:0,think:t===11?DL:null}));zL={firstframe:122,lastframe:144,frames:$L,endfunc:yr};var XL=Array.from({length:30},()=>({ai:zl,dist:0}));l_={firstframe:161,lastframe:190,frames:XL,endfunc:UL};D();var wr=.1;function $(e,t,n){M(e,wr,n)}function $e(e,t,n){z(e,t,wr,n)}function qn(e,t,n){ce(e,t,wr,n)}function $t(e,t,n){ue(e,t,wr,n)}function le(e,t,n){g(e,t)}function _c(e,t,n){yb(e,null,t,wr)}var d_,m_,ka,YL,qL,ZL,jL,f_,h_;function JL(e){e.monsterinfo.current_move=m_}function QL(e){e.monsterinfo.current_move=d_}function mi(e){e.monsterinfo.current_move=ka}function __(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let i=P(e.enemy.origin,e.origin);if(Ue(i)>100)return;let a=B(i);he(e.enemy,e,e,a,e.enemy.origin,K,t,0,0,0,n.timeSeconds)}function ez(e,t){__(e,30,t)}function xf(e,t){__(e,30,t)}function Qn(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=ka),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=ka)}function tz(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),he(t,e,e,B(e.velocity),e.origin,K,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function nz(e,t){let n=j(e.angles).forward;e.movetype=7,e.touch=tz,e.velocity=U(F(n,300),{x:0,y:0,z:300}),e.velocity=U(F(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function iz(e){e.monsterinfo.nextframe=f_.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var rz=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0}];d_={firstframe:0,lastframe:50,frames:rz,endfunc:QL};var az=[{ai:$e,dist:3},{ai:$e,dist:1},{ai:$e,dist:5},{ai:$e,dist:10},{ai:$e,dist:13},{ai:$e,dist:12},{ai:$e,dist:0},{ai:$e,dist:0},{ai:$e,dist:5},{ai:$e,dist:6},{ai:$e,dist:16},{ai:$e,dist:15},{ai:$e,dist:6}];m_={firstframe:51,lastframe:63,frames:az,endfunc:JL};var sz=[{ai:qn,dist:20},{ai:qn,dist:15},{ai:qn,dist:35},{ai:qn,dist:20},{ai:qn,dist:10},{ai:qn,dist:20}];ka={firstframe:64,lastframe:69,frames:sz,endfunc:mi};var oz=[{ai:$t,dist:0},{ai:$t,dist:0},{ai:$t,dist:0,think:xf},{ai:$t,dist:0},{ai:$t,dist:0,think:ez},{ai:$t,dist:0},{ai:$t,dist:0,think:xf},{ai:$t,dist:0}];YL={firstframe:70,lastframe:77,frames:oz,endfunc:mi};var cz=[{ai:_c,dist:0},{ai:_c,dist:0},{ai:_c,dist:0,think:nz},{ai:le,dist:0,think:Qn},{ai:le,dist:0,think:Qn},{ai:le,dist:0,think:Qn},{ai:le,dist:0,think:Qn},{ai:le,dist:0,think:Qn}];h_={firstframe:93,lastframe:100,frames:cz,endfunc:mi};h_.frames[3].ai=(e,t,n)=>{Qn(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var lz=[{ai:le,dist:4},{ai:le,dist:-3},{ai:le,dist:-8},{ai:le,dist:2},{ai:le,dist:5}];qL={firstframe:78,lastframe:82,frames:lz,endfunc:mi};var uz=[{ai:le,dist:-24},{ai:le,dist:11},{ai:le,dist:5},{ai:le,dist:-2}];ZL={firstframe:83,lastframe:86,frames:uz,endfunc:mi};var dz=[{ai:le,dist:11},{ai:le,dist:0},{ai:le,dist:-2},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0}];jL={firstframe:87,lastframe:92,frames:dz,endfunc:mi};var mz=[{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0}];f_={firstframe:101,lastframe:109,frames:mz,endfunc:iz};D();var Ja=.1,fz=()=>Math.random();function ne(e,t,n){M(e,Ja,n)}function Lt(e,t,n){z(e,t,Ja,n)}function zt(e,t,n){ce(e,t,Ja,n)}function Te(e,t,n){ue(e,t,Ja,n)}function Me(e,t,n){g(e,t)}var Ol,g_,v_,hz,_z,p_,y_,gz,vz,Il,w_;function pz(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function yz(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function Zn(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function Nc(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function wz(e){e.monsterinfo.current_move=Il}function Az(e){fz()<=.8?e.monsterinfo.current_move=Il:e.monsterinfo.current_move=w_}function A_(e){e.monsterinfo.current_move=Ol}function Cl(e){e.monsterinfo.current_move=g_}function S_(e){e.monsterinfo.current_move=y_}function E_(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Ol:e.monsterinfo.current_move=v_}function gc(e,t){let n=P(t,e);if(Ue(n)>256)return!1;let a=ai(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function st(e,t){if(!e.enemy)return;let n=j(e.angles),i=n.forward,r=n.right,a=n.up,s={x:24,y:0,z:6},o=U(e.origin,U(F(i,s.x),U(F(r,s.y),F(a,s.z)))),l=ri(e.enemy.origin);if(!gc(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.maxs.z-8},!gc(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.mins.z+8},!gc(o,l)))||t.trace(o,l,K,K,e,Ot).ent!==e.enemy)return;let u=2,m=e.frame;m===41?(u=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(m===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),u=2),t.multicast(e.origin,0,ae.temp_entity,{te:ye.PARASITE_ATTACK,entId:e.index,start:o,end:l});let d=B(P(o,l));he(e.enemy,e,e,d,e.enemy.origin,K,u,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=u,e.health>e.max_health&&(e.health=e.max_health))}function Sz(e){e.monsterinfo.nextframe=p_.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var Ez=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Zn},{ai:ne,dist:0},{ai:ne,dist:0,think:Zn},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Zn},{ai:ne,dist:0},{ai:ne,dist:0,think:Zn},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Zn},{ai:ne,dist:0},{ai:ne,dist:0,think:Zn}];Ol={firstframe:83,lastframe:99,frames:Ez,endfunc:A_};var bz=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];vz={firstframe:100,lastframe:103,frames:bz,endfunc:wz};var kz=[{ai:ne,dist:0,think:Nc},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Nc},{ai:ne,dist:0},{ai:ne,dist:0}];Il={firstframe:104,lastframe:109,frames:kz,endfunc:Az};var xz=[{ai:ne,dist:0,think:Nc},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];w_={firstframe:110,lastframe:117,frames:xz,endfunc:A_};var Tz=[{ai:zt,dist:0},{ai:zt,dist:30}];y_={firstframe:68,lastframe:69,frames:Tz,endfunc:E_};var Mz=[{ai:zt,dist:30},{ai:zt,dist:30},{ai:zt,dist:22},{ai:zt,dist:19},{ai:zt,dist:24},{ai:zt,dist:28},{ai:zt,dist:25}];v_={firstframe:70,lastframe:76,frames:Mz,endfunc:E_};var Rz=[{ai:Lt,dist:0},{ai:Lt,dist:30,think:Cl}];gz={firstframe:68,lastframe:69,frames:Rz,endfunc:Cl};var Lz=[{ai:Lt,dist:30},{ai:Lt,dist:30},{ai:Lt,dist:22},{ai:Lt,dist:19},{ai:Lt,dist:24},{ai:Lt,dist:28},{ai:Lt,dist:25}];g_={firstframe:70,lastframe:76,frames:Lz,endfunc:Cl};var zz=[{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:6},{ai:Me,dist:16},{ai:Me,dist:-6},{ai:Me,dist:-7},{ai:Me,dist:0}];_z={firstframe:57,lastframe:67,frames:zz,endfunc:S_};var Nz=[{ai:Te,dist:0,think:pz},{ai:Te,dist:0},{ai:Te,dist:15,think:st},{ai:Te,dist:0,think:st},{ai:Te,dist:0,think:st},{ai:Te,dist:0,think:st},{ai:Te,dist:0,think:st},{ai:Te,dist:-2,think:st},{ai:Te,dist:-2,think:st},{ai:Te,dist:-3,think:st},{ai:Te,dist:-2,think:st},{ai:Te,dist:0,think:st},{ai:Te,dist:-1,think:st},{ai:Te,dist:0,think:yz},{ai:Te,dist:-2},{ai:Te,dist:-2},{ai:Te,dist:-3},{ai:Te,dist:0}];hz={firstframe:39,lastframe:56,frames:Nz,endfunc:S_};var Oz=[{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0}];p_={firstframe:32,lastframe:38,frames:Oz,endfunc:Sz};D();var Qa=.1;var Iz=2,Cz=4;function Pz(e,t,n){M(e,Qa,n)}function Fz(e,t,n){z(e,t,Qa,n)}function Dz(e,t,n){ce(e,t,Qa,n)}function b_(e,t,n){ue(e,t,Qa,n)}function k_(e,t,n){g(e,t)}var Pl,x_,T_,Uz,Bz,Gz,M_;function Hz(e){e.monsterinfo.current_move=Pl}function Vz(e){e.monsterinfo.current_move=x_}function es(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=T_:e.monsterinfo.current_move=Pl}function Ar(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function Sr(e,t){if(!e.enemy){let{forward:i}=j(e.angles);return i}let n={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)};return B(P(n,t))}function Wz(e,t){if(!e.enemy)return;let n=Ar(e),i=Sr(e,n);At(e,n,i,5,600,0,0,t,1)}function Kz(e,t){if(!e.enemy)return;let n=Ar(e),i=Sr(e,n),r=2,a=4,s=20,o=.15,l=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),Kx(e,n,i,r,a,o,l,s,0,t,3)}function $z(e,t){if(!e.enemy)return;let n=Ar(e),i=Sr(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),Qt(e,n,i,r,a,s,o,0,t,4)}function Xz(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:i,right:r,up:a}=j(n.angles),s={...n.origin};s=U(s,F(i,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let l=B(P(o,s));e.origin=s,e.movedir=l,t.linkentity(e)}function Yz(e,t){if(!e.enemy)return;let n=Ar(e),i=Sr(e,n);Xx(e,n,i,5,600,0,0,t)}function qz(e,t){if(!e.enemy)return;let n=Ar(e),i=Sr(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),$x(e,n,i,r,a,0,0,t)}function Zz(e,t){e.enemy&&Sc(e,1,!1,Xz,t)}function jz(e,t){e.count<2?Yz(e,t):e.count<4?qz(e,t):Zz(e,t)}function R_(e,t){if(e.style===1){jz(e,t);return}e.spawnflags&Iz?Kz(e,t):e.spawnflags&Cz?$z(e,t):Wz(e,t)}var Jz=Array.from({length:30},()=>({ai:Pz,dist:0}));Pl={firstframe:0,lastframe:29,frames:Jz,endfunc:Hz};var Qz=Array.from({length:40},()=>({ai:Fz,dist:2}));x_={firstframe:30,lastframe:69,frames:Qz,endfunc:Vz};var eN=Array.from({length:20},()=>({ai:Dz,dist:10}));T_={firstframe:70,lastframe:89,frames:eN,endfunc:es};var tN=Array.from({length:10},(e,t)=>({ai:b_,dist:0,think:t===5?R_:null}));Uz={firstframe:90,lastframe:99,frames:tN,endfunc:es};var nN=Array.from({length:10},(e,t)=>({ai:b_,dist:0,think:t>=4&&t<=8?R_:null}));Bz={firstframe:90,lastframe:99,frames:nN,endfunc:es};var iN=Array.from({length:6},()=>({ai:k_,dist:0}));Gz={firstframe:100,lastframe:105,frames:iN,endfunc:es};var rN=Array.from({length:10},()=>({ai:k_,dist:0}));function aN(e){e.monsterinfo.nextframe=M_.lastframe,e.nextthink=-1}M_={firstframe:106,lastframe:115,frames:rN,endfunc:aN};D();var L_=.1,sN={x:30,y:30,z:40},oN={x:30,y:-30,z:40},cN={x:20,y:0,z:70};function lN(e,t,n){M(e,L_,n)}function uN(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Dl:e.monsterinfo.current_move=ts}function Fl(e,t,n){ue(e,t,L_,n)}function Er(e,t,n){g(e,t)}var ts,Dl,dN,mN,z_,N_,fN,hN,_N,O_;function gN(e){e.monsterinfo.current_move=ts}function xn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Dl:e.monsterinfo.current_move=ts}function Ul(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=F(n,t.x),o=F(i,t.y),l=F(r,t.z);return U(U(U(a,s),o),l)}function vN(e,t){if(!e.enemy)return;let n=Ul(e,oN),i=B(P(e.enemy.origin,n));dr(e,n,i,50,650,0,t)}function pN(e,t){if(!e.enemy)return;let n=Ul(e,cN),i=B(P(e.enemy.origin,n));Yx(e,n,i,50,600,0,t)}function yN(e,t){if(!e.enemy)return;let n=Ul(e,sN),i=B(P(e.enemy.origin,n));Ea(e,n,i,6,4,.05,.05,0,t,4)}function wN(e,t){let n=(i,r,a,s,o,l)=>{let c=t.trace(i,r,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&En(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=z_:e.monsterinfo.current_move=N_}function AN(e){e.monsterinfo.nextframe=O_.lastframe,e.nextthink=-1}var SN=Array.from({length:60},()=>({ai:lN,dist:0}));ts={firstframe:0,lastframe:59,frames:SN,endfunc:gN};var EN=Array.from({length:18},()=>({ai:uN,dist:12}));Dl={firstframe:60,lastframe:77,frames:EN,endfunc:xn};var bN=Array.from({length:4},()=>({ai:Er,dist:0}));_N={firstframe:78,lastframe:81,frames:bN,endfunc:xn};var kN=Array.from({length:4},()=>({ai:Er,dist:0}));hN={firstframe:82,lastframe:85,frames:kN,endfunc:xn};var xN=Array.from({length:4},()=>({ai:Er,dist:0}));fN={firstframe:86,lastframe:89,frames:xN,endfunc:xn};var TN=Array.from({length:24},()=>({ai:Er,dist:0}));O_={firstframe:90,lastframe:113,frames:TN,endfunc:AN};var MN=Array.from({length:6},(e,t)=>({ai:Fl,dist:0,think:t===0||t===3?pN:null}));mN={firstframe:114,lastframe:119,frames:MN,endfunc:xn};var RN=Array.from({length:27},(e,t)=>({ai:Fl,dist:0,think:t===7||t===10||t===13?vN:null}));dN={firstframe:120,lastframe:146,frames:RN,endfunc:xn};var LN=Array.from({length:6},()=>({ai:Fl,dist:0,think:yN}));z_={firstframe:147,lastframe:152,frames:LN,endfunc:wN};var zN=Array.from({length:14},()=>({ai:Er,dist:0}));N_={firstframe:153,lastframe:166,frames:zN,endfunc:xn};D();var Bl=.1;function I_(e,t,n,i,r){let a=r.trace(t,n,K,K,e,Ot);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return B(P(n,t));let s=U(n,F(i,-20)),o=r.trace(t,s,K,K,e,Ot);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return B(P(s,t));let l=U(n,F(i,20)),c=r.trace(t,l,K,K,e,Ot);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?B(P(l,t)):null}function C_(e,t){if(e.monsterinfo.aiflags&32768&&e.monsterinfo.blind_fire_target){let n=P(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=or(n)}}function NN(e,t,n){M(e,Bl,n)}function ON(e,t,n){z(e,t,Bl,n)}function IN(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Hl:e.monsterinfo.current_move=ns}function Gl(e,t,n){ue(e,t,Bl,n)}function P_(e,t,n){g(e,t)}var ns,F_,Hl,CN,PN,FN,DN,D_;function UN(e){e.monsterinfo.current_move=ns}function BN(e){e.monsterinfo.current_move=F_}function br(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Hl:e.monsterinfo.current_move=ns}function GN(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=j(o),c=e.monsterinfo.blind_fire_target,u=I_(e,n,c,l,t);if(!u)return;i=u}else i=B(P(e.enemy.origin,n));At(e,n,i,30,1e3,0,0,t,1)}function HN(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=B(P(e.enemy.origin,n));Qt(e,n,i,20,2,.05,.05,0,t,4)}function VN(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=j(o),c=e.monsterinfo.blind_fire_target,u=I_(e,n,c,l,t);if(!u)return;i=u}else i=B(P(e.enemy.origin,n));dr(e,n,i,50,650,0,t)}function WN(e){e.monsterinfo.nextframe=D_.lastframe,e.nextthink=-1}function KN(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),br(e)}var $N=Array.from({length:30},()=>({ai:NN,dist:0}));ns={firstframe:0,lastframe:29,frames:$N,endfunc:UN};var XN=Array.from({length:16},()=>({ai:ON,dist:5}));F_={firstframe:30,lastframe:45,frames:XN,endfunc:BN};var YN=Array.from({length:16},()=>({ai:IN,dist:10}));Hl={firstframe:46,lastframe:61,frames:YN,endfunc:br};var qN=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=C_:t>5&&t<12&&(n=GN),{ai:Gl,dist:0,think:n}});CN={firstframe:62,lastframe:77,frames:qN,endfunc:br};var ZN=Array.from({length:20},(e,t)=>({ai:Gl,dist:0,think:t%2===0&&t>5?HN:null}));PN={firstframe:78,lastframe:97,frames:ZN,endfunc:br};var jN=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=C_:(t===8||t===12||t===16)&&(n=VN),{ai:Gl,dist:0,think:n}});FN={firstframe:98,lastframe:115,frames:jN,endfunc:KN};var JN=Array.from({length:6},()=>({ai:P_,dist:0}));DN={firstframe:116,lastframe:121,frames:JN,endfunc:br};var QN=Array.from({length:16},()=>({ai:P_,dist:0}));D_={firstframe:122,lastframe:137,frames:QN,endfunc:WN};D();var Vl=.1;function eO(e,t,n){M(e,Vl,n)}function Wl(e,t,n){ce(e,t,Vl,n)}function tO(e,t,n){ue(e,t,Vl,n)}var Kl,U_,nO,iO,B_;function rO(e){e.monsterinfo.current_move=Kl}function $l(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=U_:e.monsterinfo.current_move=Kl}function aO(e,t){if(!e.enemy)return;let n=j(e.angles).forward,i={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,i));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),At(e,i,r,2,1e3,1,0,t)}var sO=Array.from({length:1},()=>({ai:eO,dist:0}));Kl={firstframe:0,lastframe:0,frames:sO,endfunc:rO};var oO=Array.from({length:1},()=>({ai:Wl,dist:0}));U_={firstframe:0,lastframe:0,frames:oO,endfunc:$l};var cO=Array.from({length:8},(e,t)=>({ai:tO,dist:0,think:t===4?aO:void 0}));nO={firstframe:1,lastframe:8,frames:cO,endfunc:$l};var lO=Array.from({length:2},()=>({ai:Wl,dist:0}));iO={firstframe:9,lastframe:10,frames:lO,endfunc:$l};var uO=Array.from({length:4},()=>({ai:Wl,dist:0}));function dO(e){e.monsterinfo.nextframe=B_.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}B_={firstframe:11,lastframe:14,frames:uO,endfunc:dO};D();var is=.1;var ar=()=>Math.random(),rs=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;function fi(e,t,n){M(e,is,n)}function jn(e,t,n){z(e,t,is,n)}function Ye(e,t,n){ce(e,t,is,n)}function X(e,t,n){ue(e,t,is,n)}function Be(e,t,n){g(e,t)}var Xl,G_,H_,as,Yl,mO,V_,fO,W_,K_,$_,X_,Y_,hO,_O,gO,vO,pO,yO,wO,AO,SO,EO,ss=2,q_=80,bO=100;var kO=8;var ql=32;function hi(e,t){!(e.spawnflags&ql)&&e.waterlevel>=ss&&DO(e)}function xO(e){e.waterlevel>=ss?(e.flags|=2,e.monsterinfo.current_move=G_):e.monsterinfo.current_move!==Yl&&(e.monsterinfo.current_move=Xl)}function Z_(e){e.flags|=2,e.monsterinfo.current_move=H_}function os(e,t){if(!e.enemy)return;let n=rs(5,10),i=100,r=P(e.enemy.origin,e.origin);Ue(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck2.wav",1,1,0),he(e.enemy,e,e,B(r),e.enemy.origin,K,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function Zl(e,t){if(!e.enemy)return;let n=rs(5,10),i=100,r=P(e.enemy.origin,e.origin);Ue(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck3.wav",1,1,0),he(e.enemy,e,e,B(r),e.enemy.origin,K,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function jl(e,t){if(!e.enemy)return;let n=5,i=q_,r=P(e.enemy.origin,e.origin);Ue(r)<=i&&he(e.enemy,e,e,B(r),e.enemy.origin,K,n,0,0,0,t.timeSeconds)}function TO(e){e.monsterinfo.current_move=Yl}function j_(e){ar()>.75&&e.health<e.max_health&&(e.monsterinfo.nextframe=0)}function J_(e,t){let n=rs(0,2),i=["gek/gk_step1.wav","gek/gk_step2.wav","gek/gk_step3.wav"];t.engine.sound?.(e,0,i[n],1,1,0)}function Q_(e,t){if(e.spawnflags&kO){let n=ar();n<.33?t.engine.sound?.(e,0,"gek/gek_low.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"gek/gek_mid.wav",1,1,0):t.engine.sound?.(e,0,"gek/gek_high.wav",1,1,0)}else t.engine.sound?.(e,0,"gek/gk_idle1.wav",1,1,0);e.health+=rs(10,20),e.health>e.max_health&&(e.health=e.max_health),e.health<e.max_health/4?e.skin=2:e.health<e.max_health/2?e.skin=1:e.skin=0}function Pt(e){!(e.spawnflags&ql)&&e.waterlevel>=ss?e.monsterinfo.current_move=as:e.monsterinfo.current_move=K_}function MO(e){!(e.spawnflags&ql)&&e.waterlevel>=ss?e.monsterinfo.current_move=as:e.monsterinfo.current_move=W_}function eg(e){if(!e.enemy||e.enemy.health<=0)return;Ue(P(e.enemy.origin,e.origin))<=q_&&(e.frame===114?e.monsterinfo.current_move=X_:e.frame===123&&(e.monsterinfo.current_move=$_))}function RO(e,t,n,i,r,a){let s=lr(a,e,t,n,i,r,0);s.model="models/objects/loogy/tris.md2"}function LO(e,t){if(!e.enemy||e.enemy.health<=0)return;let n=j(e.angles),i=n.forward,r=n.right,a=n.up,s={x:-18,y:-.8,z:24},o=U(e.origin,U(F(i,s.x),U(F(r,s.y),F(a,s.z))));o.z+=2;let l=ri(e.enemy.origin);l.z+=e.enemy.viewheight||0;let c=B(P(l,o));RO(e,o,c,5,550,t),t.engine.sound?.(e,0,"gek/gk_atck4.wav",1,1,0)}function zO(e){if(ar()>.8&&e.health<e.max_health){e.monsterinfo.current_move=V_;return}if(e.enemy&&e.enemy.health>0){let t=Ue(P(e.enemy.origin,e.origin));ar()>.7&&t<=bO&&(e.monsterinfo.current_move=Y_)}}function NO(e,t,n,i){if(e.health<=0){e.touch=void 0;return}e.touch=void 0}function OO(e,t){let i=j(e.angles).forward;t.engine.sound?.(e,0,"gek/gk_sght1.wav",1,1,0),e.origin.z+=1,e.velocity=U(F(i,700),{x:0,y:0,z:250}),e.groundentity=null,e.touch=NO}function IO(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.velocity=K;return}}function pn(e){e.groundentity&&(e.velocity=K)}function CO(e,t){}function cs(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.nextthink=-1}function tg(e,t){ah(t,e.origin,20),e.deadflag=2}function PO(e,t){ar()>.9&&tg(e,t)}function FO(e){e.maxs.z=0}function DO(e){e.flags|=2,e.yaw_speed=10,e.viewheight=10,e.monsterinfo.current_move=as,e.mins={x:-18,y:-18,z:-24},e.maxs={x:18,y:18,z:16}}var ng=Array(38).fill({ai:fi,dist:0});ng[38]={ai:fi,dist:0,think:hi};Xl={firstframe:0,lastframe:38,frames:ng,endfunc:null};var UO=Array(32).fill({ai:fi,dist:14});G_={firstframe:39,lastframe:70,frames:UO,endfunc:null};var BO=Array(32).fill({ai:Ye,dist:14});H_={firstframe:39,lastframe:70,frames:BO,endfunc:Z_};var ls=Array(32).fill({ai:Ye,dist:14});ls[8]={ai:Ye,dist:18,think:os};ls[14]={ai:Ye,dist:24,think:Zl};ls[20]={ai:Ye,dist:22,think:jl};as={firstframe:39,lastframe:70,frames:ls,endfunc:Z_};var Jl=Array(32).fill({ai:fi,dist:0});Jl[0]={ai:fi,dist:0,think:Q_};Jl[31]={ai:fi,dist:0,think:j_};mO={firstframe:71,lastframe:102,frames:Jl,endfunc:xO};var us=Array(32).fill({ai:Be,dist:0});us[0]={ai:Be,dist:0,think:Q_};us[31]={ai:Be,dist:0,think:j_};V_={firstframe:71,lastframe:102,frames:us,endfunc:e=>qO(e,Xl)};Yl={firstframe:71,lastframe:102,frames:us,endfunc:TO};var GO=[{ai:jn,dist:3.8,think:hi},{ai:jn,dist:19.6},{ai:jn,dist:25.5},{ai:jn,dist:34.6,think:J_},{ai:jn,dist:27.3},{ai:jn,dist:28.4}];fO={firstframe:103,lastframe:108,frames:GO,endfunc:null};var HO=[{ai:Ye,dist:3.8,think:hi},{ai:Ye,dist:19.6},{ai:Ye,dist:25.5},{ai:Ye,dist:34.6,think:J_},{ai:Ye,dist:27.3},{ai:Ye,dist:28.4}];W_={firstframe:103,lastframe:108,frames:HO,endfunc:null};var VO=[{ai:Ye,dist:.2},{ai:Ye,dist:19.7}];K_={firstframe:0,lastframe:1,frames:VO,endfunc:MO};var WO=[{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0,think:LO},{ai:X,dist:0,think:zO}];Y_={firstframe:133,lastframe:139,frames:WO,endfunc:Pt};var KO=[{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0,think:os},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0,think:eg}];$_={firstframe:109,lastframe:117,frames:KO,endfunc:Pt};var $O=[{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0,think:os},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0,think:Zl},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0,think:eg}];X_={firstframe:118,lastframe:126,frames:$O,endfunc:Pt};var ig=[{ai:X,dist:0},{ai:X,dist:-.3},{ai:X,dist:-1.1},{ai:X,dist:-.2},{ai:X,dist:6.7,think:OO},{ai:X,dist:6.4},{ai:X,dist:.1},{ai:X,dist:28.3},{ai:X,dist:24.1},{ai:X,dist:31.7},{ai:X,dist:35.9,think:IO},{ai:X,dist:12.3,think:pn},{ai:X,dist:20.1,think:pn},{ai:X,dist:-1,think:pn},{ai:X,dist:2.5,think:pn},{ai:X,dist:.5,think:pn},{ai:X,dist:1.8,think:pn},{ai:X,dist:1.2,think:pn},{ai:X,dist:-.4,think:hi}];hO={firstframe:140,lastframe:158,frames:ig,endfunc:Pt};_O={firstframe:140,lastframe:158,frames:ig,endfunc:Pt};var _i=Array(21).fill({ai:X,dist:16});_i[0]={ai:X,dist:16,think:CO};_i[4]={ai:X,dist:16,think:jl};_i[9]={ai:X,dist:16,think:jl};_i[13]={ai:X,dist:16,think:os};_i[18]={ai:X,dist:16,think:Zl};gO={firstframe:159,lastframe:179,frames:_i,endfunc:Pt};var XO=Array(6).fill({ai:Be,dist:0});vO={firstframe:180,lastframe:185,frames:XO,endfunc:Pt};var rg=Array(11).fill({ai:Be,dist:0});rg[10]={ai:Be,dist:0,think:hi};pO={firstframe:186,lastframe:196,frames:rg,endfunc:Pt};var ag=Array(13).fill({ai:Be,dist:0});ag[12]={ai:Be,dist:0,think:hi};yO={firstframe:197,lastframe:209,frames:ag,endfunc:Pt};var sg=Array(10).fill({ai:Be,dist:0});sg[5]={ai:Be,dist:-7,think:FO};wO={firstframe:210,lastframe:219,frames:sg,endfunc:cs};var og=Array(7).fill({ai:Be,dist:0});og[5]={ai:Be,dist:-7,think:PO};AO={firstframe:220,lastframe:226,frames:og,endfunc:cs};var cg=Array(35).fill({ai:Be,dist:0});cg[34]={ai:Be,dist:0,think:tg};SO={firstframe:227,lastframe:261,frames:cg,endfunc:cs};var YO=Array(45).fill({ai:Be,dist:0});EO={firstframe:262,lastframe:306,frames:YO,endfunc:cs};function qO(e,t){e.monsterinfo.current_move=t}D();var Ql=.1,ZO=()=>Math.random(),Tf=()=>Math.random();function jO(e,t,n){z(e,t,Ql,n)}function JO(e,t,n){ce(e,t,Ql,n)}function ds(e,t,n){ue(e,t,Ql,n)}function ct(e,t,n){g(e,t)}var sr,QO,eu,lg,ug,eI,tI,nI,iI,rI,aI,sI,oI=1;function cI(e,t){let i=t.findByRadius(e.origin,1024),r=null;for(let a of i)if(a!==e&&a.monsterinfo&&!(a.monsterinfo.aiflags&256)&&!(a.health>0)&&!(a.nextthink&&a.think===t.free)&&!(a.health<=-40)&&En(e,a,t.trace)){if(!r){r=a;continue}a.max_health<=r.max_health||(r=a)}return r}function lI(e,t){if(e.enemy)return;let n=cI(e,t);n?(e.enemy=n,e.monsterinfo.aiflags|=8192,kr(e),void 0):ZO()<.1&&t.engine.sound?.(e,0,"flyer/flysght1.wav",1,1,0)}function uI(e,t){if(!e.enemy||!e.enemy.inUse){e.monsterinfo.current_move=eu;return}let n=j(e.angles),i=U(e.origin,U(F(n.forward,0),U(F(n.right,0),F(n.up,0)))),r=ri(e.enemy.origin);r.z+=e.enemy.viewheight||0;let a=B(P(r,i));At(e,i,a,15,1e3,oI,0,t)}function dI(e,t){if(!e.enemy||!e.enemy.inUse||e.enemy.health<=-40){e.monsterinfo.current_move=sr,e.monsterinfo.aiflags&=-8193;return}e.enemy.health<e.enemy.max_health?(e.enemy.health+=5,e.enemy.health>e.enemy.max_health&&(e.enemy.health=e.enemy.max_health)):(e.enemy.deadflag===2&&(e.enemy.deadflag=0,e.enemy.solid=2,e.enemy.takedamage=!0,e.enemy.health=e.enemy.max_health,e.enemy.monsterinfo.aiflags&=-129),e.monsterinfo.current_move=sr,e.monsterinfo.aiflags&=-8193,e.enemy=null)}function mI(e,t){if(Tf()>.8){let n=Tf();n<.33?t.engine.sound?.(e,0,"misc/welder1.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"misc/welder2.wav",1,1,0):t.engine.sound?.(e,0,"misc/welder3.wav",1,1,0)}}function kr(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=sr:e.monsterinfo.current_move=eu}function fI(e){e.monsterinfo.aiflags&8192?e.monsterinfo.current_move=ug:e.monsterinfo.current_move=lg}function tu(e){e.goalentity&&e.goalentity.health>0||(e.monsterinfo.current_move=sr)}var dg=Array(19).fill({ai:ct,dist:0});dg[18]={ai:ct,dist:0,think:lI};sr={firstframe:58,lastframe:76,frames:dg,endfunc:null};var hI=[{ai:jO,dist:5}];QO={firstframe:0,lastframe:0,frames:hI,endfunc:null};var _I=[{ai:JO,dist:10}];eu={firstframe:0,lastframe:0,frames:_I,endfunc:null};var mg=Array(31).fill({ai:ds,dist:0});mg[20]={ai:ds,dist:0,think:uI};lg={firstframe:121,lastframe:151,frames:mg,endfunc:kr};var gI=Array(6).fill({ai:ds,dist:0,think:dI});ug={firstframe:115,lastframe:120,frames:gI,endfunc:null};var fg=Array(10).fill({ai:ct,dist:0});fg[9]={ai:ct,dist:0,think:tu};eI={firstframe:77,lastframe:86,frames:fg,endfunc:null};var hg=Array(7).fill({ai:ct,dist:0,think:mI});hg[6]={ai:ct,dist:0,think:tu};tI={firstframe:87,lastframe:93,frames:hg,endfunc:null};var _g=Array(7).fill({ai:ct,dist:-2});_g[6]={ai:ct,dist:-2,think:tu};nI={firstframe:94,lastframe:100,frames:_g,endfunc:null};var vI=[{ai:ds,dist:0}];iI={firstframe:0,lastframe:0,frames:vI,endfunc:fI};var pI=[{ai:ct,dist:-1}];rI={firstframe:0,lastframe:0,frames:pI,endfunc:kr};var yI=Array(8).fill({ai:ct,dist:0});aI={firstframe:107,lastframe:114,frames:yI,endfunc:kr};var wI=Array(6).fill({ai:ct,dist:0});sI={firstframe:101,lastframe:106,frames:wI,endfunc:kr};D();D();var nu=.1;function AI(e,t,n){M(e,nu,n)}function SI(e,t,n){z(e,t,nu,n)}function EI(e,t,n){ce(e,t,nu,n)}var B7=Array.from({length:1},()=>({ai:AI,dist:0})),G7=Array.from({length:1},()=>({ai:SI,dist:5})),H7=Array.from({length:1},()=>({ai:EI,dist:10}));var V7=new Map(Fc.map(e=>[e.name,e]));D();var bI=2166136261,kI=16777619;function gg(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,kI)>>>0;return n>>>0}function ti(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return gg(e,r)}function Oc(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return gg(e,n)}var vc=2,xI=1;function Ze(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function ve(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function ni(e,t,n){return e===void 0?n:ve(e,t)}function xa(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function wa(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)ve(n,`${t} element`);return e}function TI(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Ze(e,"level");return{frameNumber:ni(t.frameNumber,"level.frameNumber",0),timeSeconds:ni(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:ni(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:ni(t.deltaSeconds,"level.deltaSeconds",0)}}function MI(e){if(e===void 0)return new Cc().getState();let t=Ze(e,"rng"),n=Ze(t.mt,"rng.mt"),i=wa(n.state,"rng.mt.state");return{mt:{index:ve(n.index,"rng.mt.index"),state:i}}}function RI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let i=Ze(t,`thinks[${n}]`);return{time:ve(i.time,`thinks[${n}].time`),entityIndex:ve(i.entityIndex,`thinks[${n}].entityIndex`)}})}function LI(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=Ze(e,"awareness"),n=(i,r)=>i===null?null:ve(i,r);return{frameNumber:ve(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:ve(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:ve(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:ve(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function zI(e){if(e===void 0)return{};let t=Ze(e,"entity.fields"),n={};for(let[i,r]of Object.entries(t)){if(r===null){n[i]=null;continue}switch(typeof r){case"number":case"string":case"boolean":n[i]=r;break;default:{if(!Array.isArray(r)){let a=Ze(r,i),s={};for(let[o,l]of Object.entries(a))s[o]=ve(l,`${i}.${o}`);n[i]=s;break}if(Array.isArray(r)&&r.length===3){let[a,s,o]=r;n[i]=[ve(a,`${i}[0]`),ve(s,`${i}[1]`),ve(o,`${i}[2]`)];break}throw new Error(`Unsupported entity field value for ${i}`)}}}return n}function NI(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let i=Ze(t,`entities[${n}]`);return{index:ve(i.index,`entities[${n}].index`),fields:zI(i.fields)}})}function OI(e){let t=Ze(e,"pool");return{capacity:ve(t.capacity,"pool.capacity"),activeOrder:wa(t.activeOrder,"pool.activeOrder"),freeList:wa(t.freeList,"pool.freeList"),pendingFree:wa(t.pendingFree,"pool.pendingFree")}}function II(e){let t=Ze(e,"entities");return{timeSeconds:ve(t.timeSeconds,"entities.timeSeconds"),pool:OI(t.pool),entities:NI(t.entities),thinks:RI(t.thinks),awareness:LI(t.awareness),crossLevelFlags:ni(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:ni(t.crossUnitFlags,"entities.crossUnitFlags",0),level:{next_auto_save:0,health_bar_entities:[null,null,null,null]}}}function CI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let i=Ze(t,`cvars[${n}]`);return{name:xa(i.name,`cvars[${n}].name`),value:xa(i.value,`cvars[${n}].value`),flags:ve(i.flags,`cvars[${n}].flags`)}})}function PI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>xa(t,`configstrings[${n}]`))}function FI(e){return e===void 0?{}:Ze(e,"gameState")}function Nt(e,t){if(t==null)return e;if(typeof t=="number")return ti(e,t);if(typeof t=="string")return Oc(e,t);if(typeof t=="boolean")return ti(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=Nt(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=Oc(n,r),n=Nt(n,t[r]);return n}return e}function DI(e){let t=bI;return t=ti(t,e.version),t=ti(t,e.timestamp),t=Oc(t,e.map),t=ti(t,e.difficulty),t=ti(t,e.playtimeSeconds),t=Nt(t,e.gameState),t=Nt(t,e.level),t=Nt(t,e.rng),t=Nt(t,e.entities),t=Nt(t,e.cvars),t=Nt(t,e.configstrings),e.player&&(t=Nt(t,e.player)),t>>>0}function vg(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=Ze(i,"save"),a=r.version??vc,s=ve(a,"version");if(s<xI)throw new Error(`Unsupported save version ${s}`);if(s>vc&&!n)throw new Error(`Save version ${s} is newer than supported ${vc}`);let o={version:s,timestamp:ve(r.timestamp,"timestamp"),map:xa(r.map,"map"),difficulty:ve(r.difficulty,"difficulty"),playtimeSeconds:ve(r.playtimeSeconds,"playtimeSeconds"),gameState:FI(r.gameState),level:TI(r.level),rng:MI(r.rng),entities:II(r.entities),cvars:CI(r.cvars),configstrings:PI(r.configstrings),player:r.player?r.player:void 0,checksum:r.checksum!==void 0?ve(r.checksum,"checksum"):void 0};if(o.checksum!==void 0){let l=DI(o);if(l!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${l}`)}return o}D();var W7=new Set(Fc.filter(e=>e.save).map(e=>e.name));var Mf=globalThis.TextEncoder;function ii(e){return vg({...e},{allowNewerVersion:!0})}function UI(e){return Mf?new Mf().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var BI=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:ii(e.save)};this.records.set(e.id,t)}async get(e){let t=this.records.get(e);return t?{id:t.id,metadata:{...t.metadata},save:ii(t.save)}:null}async delete(e){return this.records.delete(e)}async list(){return Array.from(this.records.values()).map(e=>({id:e.id,metadata:{...e.metadata},save:ii(e.save)}))}},GI=class{constructor(e,t,n){this.indexedDB=e,this.dbName=t,this.storeName=n,this.db=null}async init(){this.db||(this.db=await new Promise((e,t)=>{let n=this.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{n.result.createObjectStore(this.storeName,{keyPath:"id"})},n.onerror=()=>t(n.error??new Error("Failed to open IndexedDB")),n.onsuccess=()=>e(n.result)}))}async runTransaction(e,t){await this.init();let n=this.db;return new Promise((i,r)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>i(o.result),o.onerror=()=>r(o.error??new Error("IndexedDB request failed"))})}async put(e){await this.runTransaction("readwrite",t=>t.put(e))}async get(e){let t=await this.runTransaction("readonly",n=>n.get(e));return t?{id:t.id,metadata:{...t.metadata},save:ii(t.save)}:null}async delete(e){return await this.get(e)?(await this.runTransaction("readwrite",n=>n.delete(e)),!0):!1}async list(){return(await this.runTransaction("readonly",t=>t.getAll())).map(t=>({id:t.id,metadata:{...t.metadata},save:ii(t.save)}))}},iu=class Ji{constructor(t={}){let{dbName:n=Ji.DEFAULT_DB_NAME,storeName:i=Ji.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new GI(r,n,i):this.adapter=new BI}async save(t,n,i={}){let r=ii(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:UI(r)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:r}),a}async load(t,n={}){await this.adapter.init();let i=await this.adapter.get(t);if(!i)throw new Error(`Save slot ${t} not found`);return vg(i.save,n)}async delete(t){return await this.adapter.init(),this.adapter.delete(t)}async list(){return await this.adapter.init(),(await this.adapter.list()).map(n=>({...n.metadata})).sort((n,i)=>i.timestamp-n.timestamp||n.id.localeCompare(i.id))}async quickSave(t){return this.save(Ji.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(Ji.QUICK_SLOT,t)}};iu.DEFAULT_DB_NAME="quake2ts-saves";iu.DEFAULT_STORE="saves";iu.QUICK_SLOT="quicksave";D();en();D();D();var K7=cr();D();en();var $7=[{id:re.QuadDamage,priority:1},{id:re.Invulnerability,priority:2},{id:re.EnviroSuit,priority:3},{id:re.Rebreather,priority:4},{id:re.Silencer,priority:5}];D();D();var HI=new Map,VI=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],pg=async(e,t)=>{for(let n of VI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);HI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var WI=new Map,KI=["d_left","d_right","d_up","d_down"],yg=async(e,t)=>{for(let n of KI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);WI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var ru=[],$I=0,wg=async(e,t)=>{for(let n=0;n<10;n++)try{let i=await t.loadTexture(`pics/hud/num_${n}.pcx`),r=e.registerTexture(`hud_num_${n}`,i);ru.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}ru.length>0&&($I=ru[0].width),await l0(e,t),await pg(e,t),await yg(e,t)};var au=[{type:"null"},{type:"armor",id:wn.BODY},{type:"armor",id:wn.COMBAT},{type:"armor",id:wn.JACKET},{type:"armor",id:wn.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:V.Grapple},{type:"weapon",id:V.Blaster},{type:"weapon",id:V.ChainFist},{type:"weapon",id:V.Shotgun},{type:"weapon",id:V.SuperShotgun},{type:"weapon",id:V.Machinegun},{type:"weapon",id:V.EtfRifle},{type:"weapon",id:V.Chaingun},{type:"ammo",id:I.Grenades},{type:"ammo",id:I.Trap},{type:"ammo",id:I.Tesla},{type:"weapon",id:V.GrenadeLauncher},{type:"weapon",id:V.ProxLauncher},{type:"weapon",id:V.RocketLauncher},{type:"weapon",id:V.HyperBlaster},{type:"weapon",id:V.IonRipper},{type:"weapon",id:V.PlasmaBeam},{type:"weapon",id:V.Railgun},{type:"weapon",id:V.Phalanx},{type:"weapon",id:V.BFG10K},{type:"weapon",id:V.Disruptor},{type:"ammo",id:I.Shells},{type:"ammo",id:I.Bullets},{type:"ammo",id:I.Cells},{type:"ammo",id:I.Rockets},{type:"ammo",id:I.Slugs},{type:"ammo",id:I.MagSlugs},{type:"ammo",id:I.Flechettes},{type:"ammo",id:I.Prox},{type:"ammo",id:I.Nuke},{type:"ammo",id:I.Rounds},{type:"powerup",id:re.QuadDamage},{type:"powerup",id:re.QuadFire},{type:"powerup",id:re.Invulnerability},{type:"powerup",id:re.Invisibility},{type:"powerup",id:re.Silencer},{type:"powerup",id:re.Rebreather},{type:"powerup",id:re.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:re.Bandolier},{type:"powerup",id:re.AmmoPack},{type:"powerup",id:re.IRGoggles},{type:"powerup",id:re.DoubleDamage},{type:"powerup",id:re.SphereVengeance},{type:"powerup",id:re.SphereHunter},{type:"powerup",id:re.SphereDefender},{type:"powerup",id:re.Doppelganger},{type:"powerup",id:re.TagToken},{type:"key",id:be.DataCD},{type:"key",id:be.PowerCube},{type:"key",id:be.ExplosiveCharges},{type:"key",id:be.Yellow},{type:"key",id:be.PowerCore},{type:"key",id:be.Pyramid},{type:"key",id:be.DataSpinner},{type:"key",id:be.Pass},{type:"key",id:be.Blue},{type:"key",id:be.Red},{type:"key",id:be.Green},{type:"key",id:be.CommanderHead},{type:"key",id:be.Airstrike},{type:"key",id:be.NukeContainer},{type:"key",id:be.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:be.RedFlag},{type:"key",id:be.BlueFlag},{type:"powerup",id:re.TechResistance},{type:"powerup",id:re.TechStrength},{type:"powerup",id:re.TechHaste},{type:"powerup",id:re.TechRegeneration},{type:"powerup",id:re.Flashlight},{type:"powerup",id:re.Compass}];function gi(e,t,n){return e+(t-e)*n}function su(e,t,n){return gi(e,t,n)}function ms(e,t,n,i,r){let a=[],s=r.engine.assets;if(!s)return a;let o;t instanceof Map?o=t:o=new Map(t.map(l=>[l.number,l]));for(let l of e){let c=o.get(l.number)??l,u=l.modelIndex??l.modelindex,m=l.skinNum??l.skinnum;if(u===void 0)continue;let d=i.getModelName(u);if(!d)continue;let f=s.getMd2Model(d)||s.getMd3Model(d);if(!f)continue;let _={x:gi(c.origin.x,l.origin.x,n),y:gi(c.origin.y,l.origin.y,n),z:gi(c.origin.z,l.origin.z,n)},p={x:su(c.angles.x,l.angles.x,n),y:su(c.angles.y,l.angles.y,n),z:su(c.angles.z,l.angles.z,n)},v=l.frame,y=c.frame,S=c.scale!==void 0?c.scale:1,E=l.scale!==void 0?l.scale:1,w=gi(S,E,n),k=J=>J===void 0||J===0?255:J,T=k(c.alpha),x=k(l.alpha),N=gi(T,x,n)/255,A=me.create();me.translate(A,A,[_.x,_.y,_.z]),me.rotateZ(A,A,p.z*Math.PI/180),me.rotateY(A,A,p.y*Math.PI/180),me.rotateX(A,A,p.x*Math.PI/180),me.scale(A,A,[w,w,w]);let O=m!==void 0&&m>0?i.getImageName(m):void 0,W,ee=l.renderfx??0;(ee&(et.ShellGreen|et.ShellBlue))===(et.ShellGreen|et.ShellBlue)?W=[0,1,1,1]:ee&et.ShellRed?W=[1,0,0,1]:ee&et.ShellGreen?W=[0,1,0,1]:ee&et.ShellBlue?W=[0,0,1,1]:ee&et.ShellDouble?W=[1,1,0,1]:ee&et.ShellHalfDam&&(W=[.5,.5,.5,1]),f.header.magic===844121161?a.push({type:"md2",model:f,blend:{frame0:y,frame1:v,lerp:n},transform:A,skin:O,alpha:N,tint:W}):f.header.magic===860898377&&a.push({type:"md3",model:f,blend:{frame0:y,frame1:v,lerp:n},transform:A,alpha:N,tint:W})}return a}var XI=32768,fs=class{constructor(t,n){this.configstrings=new Array(XI).fill("");this.entities=new Map;this.previousEntities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.playerNum=0;this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}setView(t){this.view=t}onServerData(t,n,i,r,a,s,o,l){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}, Tick: ${o??10}`),this.configstrings.fill(""),this.entities.clear(),this.previousEntities.clear(),this.baselines.clear(),this.latestFrame=null,this.previousFrame=null,this.playerNum=a,this.callbacks?.onServerData&&this.callbacks.onServerData(t,o)}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame,this.previousEntities=this.entities),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,i=new Map;if(n.delta)for(let[r,a]of this.entities)i.set(r,structuredClone(a));for(let r of n.entities){if(r.bits&tm){i.delete(r.number);continue}let a=r.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=Nn();let o=structuredClone(s);this.applyDelta(o,r),i.set(a,o)}this.entities=i}applyDelta(t,n){let i=n.bits,r=n.bitsHigh;t.number=n.number,i&xo&&(t.modelindex=n.modelindex),i&Ro&&(t.modelindex2=n.modelindex2),i&Lo&&(t.modelindex3=n.modelindex3),i&zo&&(t.modelindex4=n.modelindex4),i&So&&(t.frame=n.frame),i&Mo&&(t.frame=n.frame),(i&Vr||i&$r)&&(t.skinnum=n.skinnum),(i&Hr||i&Kr)&&(t.effects=n.effects),(i&Gr||i&Wr)&&(t.renderfx=n.renderfx),i&po&&(t.origin.x=n.origin.x),i&yo&&(t.origin.y=n.origin.y),i&bo&&(t.origin.z=n.origin.z),i&ko&&(t.angles.x=n.angles.x),i&wo&&(t.angles.y=n.angles.y),i&Ao&&(t.angles.z=n.angles.z),i&No&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),i&Oo&&(t.sound=n.sound),i&Eo&&(t.event=n.event),i&Io&&(t.solid=n.solid),i&To&&(t.alpha=n.alpha),i&Co&&(t.scale=n.scale),i&Po&&(t.instanceBits=n.instanceBits),i&Fo&&(t.loopVolume=n.loopVolume),r&Do&&(t.loopAttenuation=n.loopAttenuation),r&Uo&&(t.owner=n.owner),r&Bo&&(t.oldFrame=n.oldFrame)}onCenterPrint(t){this.callbacks?.onCenterPrint?this.callbacks.onCenterPrint(t):console.log(`[Center]: ${t}`)}onStuffText(t){this.imports?.engine.cmd&&this.imports.engine.cmd.executeText(t)}onPrint(t,n){this.callbacks?.onPrint?this.callbacks.onPrint(t,n):console.log(`[Print ${t}]: ${n}`)}onSound(t,n,i,r,a,s,o){if(!this.imports?.engine.audio)return;let l=i??1,c=r??1,u=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,l,c,u):o&&this.imports.engine.audio.positioned_sound(o,n,l,c)}onTempEntity(t,n,i,r,a,s,o,l,c){}onLayout(t){}onInventory(t){this.inventory=[...t]}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onMuzzleFlash3(t,n){if(t===this.playerNum+1&&this.view){let r=0,a=0,s=0,o=Vt,c=sa(this.stats,$i.QuadDamage)?4:1;switch(n){case Em:r=-2,o={x:-2,y:0,z:0};break;case Lm:r=-4,o={x:-4,y:0,z:0};break;case Sm:r=-1,a=Math.random()-.5;break;case bm:case km:case xm:r=-.5,a=Math.random()-.5;break;case Tm:r=-3,o={x:-3,y:0,z:0};break;case Mm:case Rm:r=-2,o={x:-2,y:0,z:0};break;case zm:r=-5,o={x:-2,y:0,z:0};break;case Nm:case Am:r=-.5;break}(r!==0||a!==0||s!==0)&&this.view.addKick({pitch:r*c,roll:s*c,durationMs:200,origin:o})}this.callbacks?.onMuzzleFlash3&&this.callbacks.onMuzzleFlash3(t,n)}onFog(t){this.callbacks?.onFog&&this.callbacks.onFog(t)}onDamage(t){this.callbacks?.onDamage&&this.callbacks.onDamage(t)}onLocPrint(t,n,i){this.callbacks?.onLocPrint&&this.callbacks.onLocPrint(t,n,i)}onLevelRestart(){this.callbacks?.onLevelRestart&&this.callbacks.onLevelRestart()}onWaitingForPlayers(t){this.callbacks?.onWaitingForPlayers&&this.callbacks.onWaitingForPlayers()}onDisconnect(){console.log("Demo disconnected")}onReconnect(){console.log("Demo reconnect")}onDownload(t,n,i){}convertFrameToPredictionState(t){let n=t.playerState,i={ammo:{caps:[],counts:[]},ownedWeapons:new Set,armor:null,powerups:new Map,keys:new Set,items:new Set};for(let l=0;l<this.inventory.length;l++){let c=this.inventory[l];if(c<=0)continue;if(l>=au.length)break;let u=au[l];switch(u.type){case"weapon":i.ownedWeapons.add(u.id);break;case"ammo":i.ammo.counts[u.id]||(i.ammo.counts[u.id]=0),i.ammo.counts[u.id]=c;break;case"armor":i.armor={armorType:u.id,armorCount:c};break;case"powerup":i.powerups.set(u.id,c);break;case"key":i.keys.add(u.id);break;case"health":break;case"item":i.items.add(u.id);break}}let r={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:r,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:Ki.None,gravity:n.gravity,deltaAngles:o,client:{inventory:i,weaponStates:{states:new Map},buttons:0,pm_type:n.pm_type,pm_time:n.pm_time,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov},health:n.stats[1],armor:n.stats[4],ammo:n.stats[2],blend:[0,0,0,0],damageAlpha:0,damageIndicators:[],stats:[...n.stats],kick_angles:Vt,kick_origin:Vt,gunoffset:Vt,gunangles:Vt,gunindex:0,onGround:!1,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},pm_time:n.pm_time,pm_type:n.pm_type,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov}}getPredictionState(t){if(!this.latestFrame)return Mt();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let i=this.latestFrame.serverFrame*100,r=this.previousFrame.serverFrame*100;if(t<=1){let a=this.convertFrameToPredictionState(this.previousFrame);return gn(a,n,Math.max(0,Math.min(1,t)))}else if(t>=r&&t<=i){let a=(t-r)/(i-r),s=this.convertFrameToPredictionState(this.previousFrame);return gn(s,n,Math.max(0,Math.min(1,a)))}}return n}getRenderableEntities(t,n){if(!this.latestFrame)return[];if(!this.imports)return[];let i=Array.from(this.entities.values()),r=this.previousEntities.size>0?this.previousEntities:i;return ms(i,r,t,n,this.imports)}getDemoCamera(t){let n=this.getPredictionState(t);return{origin:n.origin,angles:n.viewAngles,fov:n.fov??90}}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var vi=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=we.Models&&t<we.Models+Hi){let i=t-we.Models;this.models[i]=n}else if(t>=we.Sounds&&t<we.Sounds+Vi){let i=t-we.Sounds;this.sounds[i]=n}else if(t>=we.Images&&t<we.Images+Wi){let i=t-we.Images;this.images[i]=n}}get(t){return this.strings.get(t)}getModelName(t){return this.models[t]}getSoundName(t){return this.sounds[t]}getImageName(t){return this.images[t]}clear(){this.strings.clear(),this.models.length=0,this.sounds.length=0,this.images.length=0}};var hs=class{constructor(t,n,i){this.menuSystem=t;this.saveLoadFactory=n;this.options=i}createMainMenu(){let t=[{label:"New Game",action:()=>{this.menuSystem.pushMenu(this.createDifficultyMenu())}},{label:"Multiplayer",action:()=>{this.options.multiplayerFactory?this.menuSystem.pushMenu(this.options.multiplayerFactory.createMultiplayerMenu()):console.warn("Multiplayer factory not configured")}},{label:"Load Game",action:()=>{this.saveLoadFactory.createLoadMenu().then(n=>{this.menuSystem.pushMenu(n)})}}];return this.options.showSaveOption!==!1&&t.push({label:"Save Game",action:()=>{this.saveLoadFactory.createSaveMenu().then(n=>{this.menuSystem.pushMenu(n)})}}),t.push({label:"Options",action:()=>{this.menuSystem.pushMenu(this.options.optionsFactory.createOptionsMenu())}},{label:"Quit",action:()=>{this.options.onQuit()}}),{title:"Main Menu",items:t}}createDifficultyMenu(){return{title:"Select Difficulty",items:[{label:"Easy",action:()=>this.startNewGame(0)},{label:"Medium",action:()=>this.startNewGame(1)},{label:"Hard",action:()=>this.startNewGame(2)},{label:"Map Select...",action:()=>{this.menuSystem.pushMenu(this.options.mapsFactory.createMapsMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}startNewGame(t){this.options.onSetDifficulty&&this.options.onSetDifficulty(t),this.options.onNewGame()}};var _s=class{constructor(t,n,i,r,a){this.menuSystem=t;this.storage=n;this.onSave=i;this.onLoad=r;this.onDelete=a}async createSaveMenu(){let t=await this.storage.list(),n=[];return n.push({label:"New Save...",action:()=>{this.menuSystem.pushMenu(this.createNewSaveInputMenu())}}),t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${Ag(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(i))}})}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Save Game",items:n}}async createLoadMenu(){let t=await this.storage.list(),n=[];return t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${Ag(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(i))}})}),t.length===0&&n.push({label:"No saves found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Load Game",items:n}}createLoadActionMenu(t){return{title:`Slot: ${t.name}`,items:[{label:"Load Game",action:()=>{this.onLoad(t.id).then(()=>{this.menuSystem.closeAll()})}},{label:"Delete Save",action:()=>{this.menuSystem.pushMenu(this.createConfirmDeleteMenu(t))}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createConfirmDeleteMenu(t){return{title:`Delete ${t.name}?`,items:[{label:"Yes, Delete",action:()=>{this.onDelete(t.id).then(()=>{this.menuSystem.popMenu(),this.menuSystem.popMenu(),this.menuSystem.popMenu()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}createNewSaveInputMenu(){let t={name:`Save ${new Date().toLocaleString()}`};return{title:"Enter Save Name",items:[{label:"Name",type:"input",getValue:()=>t.name,onUpdate:n=>{t.name=n}},{label:"Save",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"Cancel",action:()=>this.menuSystem.popMenu()}]}}createConfirmOverwriteMenu(t){return{title:`Overwrite ${t.name}?`,items:[{label:"Yes, Overwrite",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}};function Ag(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),i=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`}var gs=class{constructor(){this.activeMenu=null;this.selectedIndex=0;this.menuStack=[]}pushMenu(t){this.activeMenu&&(this.menuStack.push(this.activeMenu),t.parent||(t.parent=this.activeMenu)),this.activeMenu=t,this.selectedIndex=0}popMenu(){this.menuStack.length>0?(this.activeMenu=this.menuStack.pop(),this.selectedIndex=0):this.activeMenu=null}closeAll(){this.activeMenu=null,this.menuStack=[],this.selectedIndex=0}handleInput(t,n){if(!this.activeMenu)return!1;let i=this.activeMenu.items[this.selectedIndex];if(t==="up")return this.selectedIndex=(this.selectedIndex-1+this.activeMenu.items.length)%this.activeMenu.items.length,!0;if(t==="down")return this.selectedIndex=(this.selectedIndex+1)%this.activeMenu.items.length,!0;if(t==="select")return i.action&&i.action(),!0;if(t==="back")return this.popMenu(),!0;if(i.type==="input"&&i.onUpdate&&i.getValue){let r=i.getValue();if(t==="char"&&n){let a=(r||"")+n;i.onUpdate(a)}else if(t==="left"){let a=String(r||"");a.length>0&&i.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var xr=class{constructor(t,n){this.menuSystem=t;this.host=n}createOptionsMenu(){return{title:"Options",items:[{label:"Video Options",action:()=>{this.menuSystem.pushMenu(this.createVideoMenu())}},{label:"Audio Options",action:()=>{this.menuSystem.pushMenu(this.createAudioMenu())}},{label:"Controls",action:()=>{this.menuSystem.pushMenu(this.createControlsMenu())}},{label:"Gameplay",action:()=>{this.menuSystem.pushMenu(this.createGameplayMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createVideoMenu(){let t=this.host.cvars;return{title:"Video Options",items:[{label:"Field of View",type:"input",getValue:()=>t?.get("fov")?.string??"90",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("fov",n)}},{label:"Fullscreen",type:"toggle",getValue:()=>document.fullscreenElement?"On":"Off",onUpdate:()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(n=>{console.error(`Error attempting to enable fullscreen: ${n.message}`)})}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createAudioMenu(){let t=this.host.cvars;return{title:"Audio Options",items:[{label:"Master Volume",type:"input",getValue:()=>t?.get("s_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("ogg_volume",n)}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createControlsMenu(){let t=this.host.cvars;return{title:"Controls",items:[{label:"Sensitivity",type:"input",getValue:()=>t?.get("sensitivity")?.string??"3",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("sensitivity",n)}},{label:"Invert Mouse",type:"toggle",getValue:()=>t?.get("m_pitch")?.string.startsWith("-")?"Yes":"No",onUpdate:()=>{let n=parseFloat(t?.get("m_pitch")?.string??"0.022");t?.setValue("m_pitch",(-n).toString())}},{label:"Always Run",type:"toggle",getValue:()=>t?.get("cl_run")?.integer?"Yes":"No",onUpdate:()=>{let n=t?.get("cl_run")?.integer??1;t?.setValue("cl_run",n?"0":"1")}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createGameplayMenu(){let t=this.host.cvars;return{title:"Gameplay Options",items:[{label:"Crosshair",type:"toggle",getValue:()=>t?.get("crosshair")?.integer?"On":"Off",onUpdate:()=>{let n=t?.get("crosshair")?.integer??1;t?.setValue("crosshair",n?"0":"1")}},{label:"Handedness",type:"toggle",getValue:()=>t?.get("hand")?.integer===1?"Left":t?.get("hand")?.integer===2?"Center":"Right",onUpdate:()=>{let i=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",i.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var vs=class{constructor(t,n,i){this.menuSystem=t;this.vfs=n;this.onStartMap=i}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(i=>({label:i.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(i.path.replace(/^maps\//,"").replace(/\.bsp$/,"")),this.menuSystem.closeAll()}}));return n.length===0&&n.push({label:"No maps found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Select Map",items:n}}};var ps=class{constructor(t,n,i){this.menuSystem=t;this.optionsFactory=n;this.host=i}createPauseMenu(){return{title:"Game Paused",items:[{label:"Resume Game",action:()=>{this.menuSystem.closeAll()}},{label:"Options",action:()=>{this.menuSystem.pushMenu(this.optionsFactory.createOptionsMenu())}},{label:"Restart Level",action:()=>{this.host?.commands.execute("restart"),this.menuSystem.closeAll()}},{label:"Quit to Main Menu",action:()=>{this.host?.commands.execute("disconnect"),this.menuSystem.closeAll()}}]}}};var ys=class{constructor(t,n){this.menuSystem=t;this.connection=n}createMultiplayerMenu(t="localhost:27910",n=""){let i=t,r=[];return n&&r.push({label:n,action:()=>{}}),r.push({label:"Address: "+i,action:()=>{if(typeof window<"u"){let a=window.prompt("Enter Server Address",i);a&&(i=a,this.refreshMenu(i))}}},{label:"Connect",action:()=>{this.refreshMenu(i,"Connecting..."),this.connection.connect("ws://"+i).then(()=>{this.menuSystem.closeAll()}).catch(a=>{console.error(a);let s="Failed: "+(a.message||"Unknown error");this.refreshMenu(i,s)})}},{label:"Disconnect",action:()=>{this.connection.disconnect(),this.refreshMenu(i,"Disconnected")}},{label:"Back",action:()=>{this.menuSystem.popMenu()}}),{title:"Multiplayer",items:r}}refreshMenu(t,n=""){this.menuSystem.popMenu(),this.menuSystem.pushMenu(this.createMultiplayerMenu(t,n))}};function Sg(e,t,n,i){if(!t.activeMenu)return;let r=t.activeMenu,a=n/2,s=i/2,o=20,l=r.items.length*o+40,c=s-l/2;e.drawfillRect(0,0,n,i,[0,0,0,.7]),e.drawCenterString(c,r.title),r.items.forEach((u,m)=>{let d=c+40+m*o,f=u.label;if(u.type==="input"&&u.getValue){if(f+=`: ${u.getValue()}`,m===t.selectedIndex){let _=Date.now();Math.floor(_/500)%2===0&&(f+="_")}}else u.type==="toggle"&&u.getValue&&(f+=`: ${u.getValue()}`);if(m===t.selectedIndex){let y=f.replace(/\^[0-9]/g,"").length*8,S=(n-y)/2;e.drawString(S-16,d,"\r")}e.drawCenterString(d,f)})}var Tr=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let i=JSON.parse(n);for(let[r,a]of Object.entries(i)){let s=t.get(r);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let i of t)i.flags&Gi.Archive&&(n[i.name]=i.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(i){console.warn("Failed to save settings",i)}}};var ws=class{getItem(t){try{return localStorage.getItem(t)}catch(n){return console.warn("localStorage not available",n),null}}setItem(t,n){try{localStorage.setItem(t,n)}catch(i){console.warn("Failed to write to localStorage",i)}}};var As=class{constructor(){this.total=0;this.current=0;this.message="";this.active=!1}start(t,n="Loading..."){this.total=t,this.current=0,this.message=n,this.active=!0}update(t,n){this.current=t,n&&(this.message=n)}finish(){this.active=!1,this.current=this.total}render(t){if(!this.active)return;let n=t.width,i=t.height;t.drawfillRect(0,0,n,i,[.1,.1,.1,1]);let r=n*.6,a=20,s=(n-r)/2,o=i*.7;t.drawfillRect(s,o,r,a,[.3,.3,.3,1]);let l=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,r*l,a,[.8,.5,.1,1]),t.drawCenterString(o-30,this.message);let c=Math.floor(l*100);t.drawCenterString(o+a+10,`${c}%`)}};var Ss=class{constructor(){this.state={active:!1,title:"",message:""}}show(t,n){this.state={active:!0,title:t,message:n}}hide(){this.state.active=!1}render(t){if(!this.state.active)return;let n=t.width,i=t.height,r=n/2,a=i/2,s=400,o=200;t.drawfillRect(0,0,n,i,[0,0,0,.5]),t.drawfillRect(r-s/2,a-o/2,s,o,[.2,0,0,1]),t.drawCenterString(a-40,`^1${this.state.title}`),t.drawCenterString(a,this.state.message),t.drawCenterString(a+60,"Press ESC to close")}};var Es=class{constructor(){this.state={active:!1,type:"weapon",selectedIndex:-1}}open(t){this.state.active=!0,this.state.type=t}close(){this.state.active=!1}isOpen(){return this.state.active}handleInput(t,n){this.state.active}render(t,n,i,r){if(!this.state.active)return;let a=n/2,s=i/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};var bs=class{constructor(){this.socket=null;this.messageCallback=null;this.closeCallback=null;this.errorCallback=null}async connect(t){return new Promise((n,i)=>{try{this.socket=new WebSocket(t),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{n()},this.socket.onerror=r=>{let a=new Error("WebSocket connection error");this.errorCallback&&this.errorCallback(a),i(a)},this.socket.onclose=()=>{this.closeCallback&&this.closeCallback(),this.socket=null},this.socket.onmessage=r=>{this.messageCallback&&(r.data instanceof ArrayBuffer?this.messageCallback(new Uint8Array(r.data)):console.warn("Received non-binary message from server"))}}catch(r){i(r)}})}disconnect(){this.socket&&(this.socket.close(),this.socket=null)}send(t){this.socket&&this.socket.readyState===WebSocket.OPEN?this.socket.send(t):console.warn("Attempted to send data on closed or connecting socket")}onMessage(t){this.messageCallback=t}onClose(t){this.closeCallback=t}onError(t){this.errorCallback=t}isConnected(){return this.socket!==null&&this.socket.readyState===WebSocket.OPEN}};var ks=class{constructor(t){this.state=0;this.parser=null;this.serverProtocol=0;this.serverCount=0;this.gameDir="";this.playerNum=0;this.levelName="";this.configStrings=new Map;this.baselines=new Map;this.challenge=0;this.connectPacketCount=0;this.connectPacketTime=0;this.latestServerFrame=0;this.commandHistory=[];this.prediction=null;this.driver=new bs,this.options=t,this.netchan=new Gm,this.driver.onMessage(n=>this.handleMessage(n)),this.driver.onClose(()=>this.handleDisconnect()),this.driver.onError(n=>console.error("Network Error:",n))}setPrediction(t){this.prediction=t}async connect(t){this.state!==0&&this.disconnect(),console.log(`Connecting to ${t}...`),this.state=1,this.netchan.reset();try{await this.driver.connect(t),console.log("WebSocket connected."),this.state=2,this.sendChallenge()}catch(n){throw console.error("Connection failed:",n),this.state=0,n}}disconnect(){this.state!==0&&(this.driver.disconnect(),this.state=0,this.configStrings.clear(),this.baselines.clear(),this.commandHistory=[],this.latestServerFrame=0)}sendCommand(t){if(this.state!==5)return;let n={...t,serverFrame:t.serverFrame??this.latestServerFrame};this.commandHistory.push(n),this.commandHistory.length>wm&&this.commandHistory.shift(),this.prediction&&this.prediction.enqueueCommand(n);let i=new Zo;i.writeByte(_n.move),i.writeByte(0),i.writeLong(this.latestServerFrame),Um(i,n);let r=this.netchan.transmit(i.getData());this.driver.send(r)}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let r=new ArrayBuffer(t.byteLength);new Uint8Array(r).set(t),n=r}let i=this.netchan.process(new Uint8Array(n));if(i&&i.byteLength>0){let r=new Bm(i.buffer);this.parser=new Go(r,this),this.parser.parseMessage()}}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new Xi;t.writeByte(_n.stringcmd),t.writeString("getchallenge");let n=this.netchan.transmit(t.getData());this.driver.send(n)}sendConnect(t){let n=new Xi;n.writeByte(_n.stringcmd);let i=`\\name\\${this.options.username}\\model\\${this.options.model}\\skin\\${this.options.skin}\\hand\\${this.options.hand??0}\\fov\\${this.options.fov??90}`;n.writeString(`connect ${Br} ${t} ${i}`);let r=this.netchan.transmit(n.getData());this.driver.send(r)}isConnected(){return this.state===5}onServerData(t,n,i,r,a,s){console.log(`Server Data: Protocol ${t}, Level ${s}`),this.serverProtocol=t,this.serverCount=n,this.gameDir=r,this.playerNum=a,this.levelName=s,this.state=3;let o=new Xi;o.writeByte(_n.stringcmd),o.writeString("new");let l=this.netchan.transmit(o.getData());this.driver.send(l),this.state=4}onConfigString(t,n){this.configStrings.set(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,t)}onStuffText(t){if(console.log(`Server StuffText: ${t}`),t.startsWith("precache")&&this.finishLoading(),t.startsWith("challenge ")){let n=t.split(" ");n.length>1&&(this.challenge=parseInt(n[1],10),this.sendConnect(this.challenge))}}finishLoading(){console.log("Finished loading, sending begin...");let t=new Xi;t.writeByte(_n.stringcmd),t.writeString("begin");let n=this.netchan.transmit(t.getData());this.driver.send(n),this.state=5}onFrame(t){if(t.serverFrame>this.latestServerFrame&&(this.latestServerFrame=t.serverFrame),this.prediction&&t.playerState){let n=t.playerState,i={...Mt(),origin:{x:n.origin.x,y:n.origin.y,z:n.origin.z},velocity:{x:n.velocity.x,y:n.velocity.y,z:n.velocity.z},viewAngles:{x:n.viewangles.x,y:n.viewangles.y,z:n.viewangles.z},deltaAngles:{x:n.delta_angles.x,y:n.delta_angles.y,z:n.delta_angles.z},pmFlags:n.pm_flags,pmType:n.pm_type,gravity:n.gravity,health:n.stats[0]},r={frame:t.serverFrame,timeMs:0,state:i};this.prediction.setAuthoritative(r)}}onCenterPrint(t){}onPrint(t,n){}onSound(t,n,i,r,a,s,o){}onTempEntity(t,n,i,r,a,s,o,l,c){}onLayout(t){}onInventory(t){}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){this.disconnect()}onReconnect(){}onDownload(t,n,i){}};var xs=class{constructor(t){this.isVisible=!0;this.playback=t}render(t,n,i){if(!this.isVisible)return;let a=this.playback.getState()===Di.Playing,s=60,o=i-s;t.drawfillRect(0,o,n,s,[0,0,0,.5]);let c=o+(s-24)/2,u=20,m=a?"PAUSE":"PLAY";t.drawString(u,c,m);let f=`Speed: ${this.playback.getSpeed()}x`;t.drawCenterString(c,f);let _=this.playback.getCurrentTime(),y=`${this.formatTime(_)} / --:--`,S=n-150;t.drawString(S,c,y);let E=o+5,w=4,k=n-40,T=20;t.drawfillRect(T,E,k,w,[.3,.3,.3,1]);let L=k*0;t.drawfillRect(T,E,L,w,[1,1,1,1]);let N=T+L;t.drawfillRect(N-2,E-2,4,w+4,[1,0,0,1]),t.drawCenterString(o+35,"[Space] Toggle [< >] Step [ [ ] ] Speed [Esc] Stop")}handleInput(t,n){if(!n)return!1;switch(t.toLowerCase()){case" ":return this.playback.getState()===Di.Playing?this.playback.pause():this.playback.getState()===Di.Paused&&this.playback.play(),!0;case"arrowright":return this.playback.stepForward(),!0;case"arrowleft":return this.playback.stepBackward(),!0;case"]":return this.changeSpeed(2),!0;case"[":return this.changeSpeed(.5),!0;case"escape":return this.playback.stop(),!0}return!1}changeSpeed(t){let i=this.playback.getSpeed()*t;i<.1&&(i=.1),i>16&&(i=16),this.playback.setSpeed(i)}formatTime(t){let n=Math.floor(t/1e3),i=Math.floor(n/60),r=n%60;return`${i.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}};var YI=[{code:"KeyW",command:"+forward"},{code:"ArrowUp",command:"+forward"},{code:"KeyS",command:"+back"},{code:"ArrowDown",command:"+back"},{code:"KeyA",command:"+moveleft"},{code:"KeyD",command:"+moveright"},{code:"Space",command:"+jump"},{code:"ControlLeft",command:"+crouch"},{code:"ShiftLeft",command:"+speed"},{code:"Mouse1",command:"+attack"},{code:"Mouse2",command:"+use"},{code:"Mouse3",command:"+zoom"},{code:"ArrowLeft",command:"+left"},{code:"ArrowRight",command:"+right"},{code:"PageUp",command:"+lookup"},{code:"PageDown",command:"+lookdown"},{code:"Gamepad0-Button7",command:"+attack"},{code:"Gamepad0-Button6",command:"+zoom"},{code:"Gamepad0-Button0",command:"+jump"},{code:"Gamepad0-Button1",command:"+crouch"},{code:"Gamepad0-Button2",command:"+use"},{code:"Gamepad0-Button4",command:"prevweapon"},{code:"Gamepad0-Button5",command:"nextweapon"},{code:"Digit1",command:"weapon 1"},{code:"Digit2",command:"weapon 2"},{code:"Digit3",command:"weapon 3"},{code:"Digit4",command:"weapon 4"},{code:"Digit5",command:"weapon 5"},{code:"Digit6",command:"weapon 6"},{code:"Digit7",command:"weapon 7"},{code:"Digit8",command:"weapon 8"},{code:"Digit9",command:"weapon 9"},{code:"Digit0",command:"weapon 10"}],Tn=class{constructor(t=YI){this.bindings=new Map;for(let n of t)this.bind(n.code,n.command)}bind(t,n){this.bindings.set(t,n)}unbind(t){this.bindings.delete(t)}getBinding(t){return this.bindings.get(t)}entries(){return new Map(this.bindings.entries())}};function Eg(){return new Tn}function ou(e){return e}function Mr(e){return e.trim().toLowerCase()}var qI=250,cu=class{constructor(){this.activeCodes=new Set;this.downTime=0;this.msec=0;this.pressed=!1}press(t,n){return this.activeCodes.has(t)?!1:(this.activeCodes.add(t),this.pressed=!0,this.activeCodes.size===1?(this.downTime=n,!0):!1)}release(t,n){return this.activeCodes.delete(t)&&this.activeCodes.size===0?(this.msec+=n-this.downTime,this.downTime=0,!0):!1}sample(t,n){if(t<=0)return{active:this.activeCodes.size>0,wasPressed:this.pressed,fraction:0};let i=this.msec;this.activeCodes.size>0&&(i+=n-this.downTime,this.downTime=n),this.msec=0;let r=Math.min(i/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:r}}},Ts=(y=>(y.Forward="+forward",y.Back="+back",y.MoveLeft="+moveleft",y.MoveRight="+moveright",y.MoveUp="+moveup",y.MoveDown="+movedown",y.Jump="+jump",y.Crouch="+crouch",y.Attack="+attack",y.Use="+use",y.Holster="+holster",y.TurnLeft="+left",y.TurnRight="+right",y.LookUp="+lookup",y.LookDown="+lookdown",y.SpeedModifier="+speed",y.Zoom="+zoom",y))(Ts||{}),ZI={"+attack":_t.Attack,"+use":_t.Use,"+holster":_t.Holster,"+jump":_t.Jump,"+crouch":_t.Crouch},jI=new Map(Object.values(Ts).map(e=>[Mr(e),e]));function JI(e){return jI.get(Mr(e))}function Rr(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var pi=class{constructor(t={},n=new Tn){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.sequence=0;this.bindings=n,this.forwardSpeed=t.forwardSpeed??mm,this.sideSpeed=t.sideSpeed??fm,this.upSpeed=t.upSpeed??hm,this.yawSpeed=t.yawSpeed??_m,this.pitchSpeed=t.pitchSpeed??gm,this.sensitivity=t.sensitivity??vm,this.sensitivityX=t.sensitivityX,this.sensitivityY=t.sensitivityY,this.invertMouseY=t.invertMouseY??!1,this.runByDefault=t.runByDefault??!0,this.requirePointerLock=t.requirePointerLock??!0,this.jumpAddsUpMove=t.jumpAddsUpMove??!0,this.crouchAddsDownMove=t.crouchAddsDownMove??!0,this.mouseFilter=t.mouseFilter??!1,this.getGamepads=t.getGamepads,this.gamepadDeadZone=t.gamepadDeadZone??.15,this.gamepadLookScale=t.gamepadLookScale??1,this.invertGamepadY=t.invertGamepadY??this.invertMouseY}handleKeyDown(t,n=Rr()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!0,i,n)}handleKeyUp(t,n=Rr()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!1,i,n)}handleMouseButtonDown(t,n=Rr()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!0,i,n)}handleMouseButtonUp(t,n=Rr()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!1,i,n)}handleMouseMove(t,n){this.requirePointerLock&&!this.pointerLocked||(this.mouseDelta={deltaX:this.mouseDelta.deltaX+t,deltaY:this.mouseDelta.deltaY+n})}setPointerLocked(t){this.pointerLocked=t}setGamepadState(t){this.pendingGamepads=t}setTouchState(t){this.pendingTouchState=t}buildCommand(t,n=Rr(),i){this.pollGamepads(n),this.applyTouchState(n);let r=this.yawSpeed*t/1e3,a=this.pitchSpeed*t/1e3,s=this.sample("+left",t,n),o=this.sample("+right",t,n),l=this.sample("+lookup",t,n),u={x:(this.sample("+lookdown",t,n).fraction-l.fraction)*a,y:(o.fraction-s.fraction)*r,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let O=this.gamepadLook.y*(this.invertGamepadY?-1:1);u={x:u.x+O*a*this.gamepadLookScale,y:u.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let O=this.touchLook.y*(this.invertMouseY?-1:1);u={x:u.x+O*a,y:u.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let O=this.sampleMouseDelta(),W=ym(O,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});u={x:u.x+W.x,y:u.y+W.y,z:0}}let m=pm(this.viewAngles,u);this.viewAngles=m;let d=this.sample("+forward",t,n),f=this.sample("+back",t,n),_=this.sample("+moveleft",t,n),p=this.sample("+moveright",t,n),v=this.sample("+moveup",t,n),y=this.sample("+movedown",t,n),S=this.sample("+speed",t,n),E=this.sample("+jump",t,n),w=this.sample("+crouch",t,n),k=this.runByDefault?S.active?.5:1:S.active?1:.5,T=this.forwardSpeed*(d.fraction-f.fraction)*k,x=this.sideSpeed*(p.fraction-_.fraction)*k,L=this.upSpeed*(v.fraction-y.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(T+=this.forwardSpeed*this.gamepadMove.y*k,x+=this.sideSpeed*this.gamepadMove.x*k),(this.touchMove.x!==0||this.touchMove.y!==0)&&(T+=this.forwardSpeed*this.touchMove.y*k,x+=this.sideSpeed*this.touchMove.x*k),this.jumpAddsUpMove&&E.fraction>0&&(L+=this.upSpeed*E.fraction),this.crouchAddsDownMove&&w.fraction>0&&(L-=this.upSpeed*w.fraction),T=this.clampMove(T,this.forwardSpeed),x=this.clampMove(x,this.sideSpeed),L=this.clampMove(L,this.upSpeed);let N=this.collectButtonBits(t,n),A=Math.min(Math.max(Math.round(t),1),qI);return(this.anyPressed||N!==_t.None)&&(N|=_t.Any),this.anyPressed=!1,this.sequence++,{msec:A,buttons:N,angles:{...this.viewAngles},forwardmove:T,sidemove:x,upmove:L,serverFrame:i,sequence:this.sequence,lightlevel:0,impulse:0}}consumeConsoleCommands(){let t=this.commandQueue;return this.commandQueue=[],t}pollGamepads(t){let n=this.getGamepads?.()??this.pendingGamepads??[];this.pendingGamepads=void 0,this.gamepadMove={x:0,y:0},this.gamepadLook={x:0,y:0};let i=new Set;for(let r of n){if(!r||r.connected===!1)continue;let a=r.index??0,s=r.axes??[];this.gamepadMove={x:this.mergeAnalog(this.gamepadMove.x,this.applyDeadZone(s[0]??0)),y:this.mergeAnalog(this.gamepadMove.y,-this.applyDeadZone(s[1]??0))},this.gamepadLook={x:this.mergeAnalog(this.gamepadLook.x,this.applyDeadZone(s[2]??0)),y:this.mergeAnalog(this.gamepadLook.y,this.applyDeadZone(s[3]??0))};let o=r.buttons??[];for(let l=0;l<o.length;l++){let c=o[l];if(!c)continue;let u=c.pressed||c.value>this.gamepadDeadZone,m=this.gamepadButtonCode(a,l);u&&i.add(m);let d=this.gamepadButtons.get(m)??!1;u!==d&&(this.applyCommand(this.bindings.getBinding(m),u,m,t),this.gamepadButtons.set(m,u))}}for(let[r,a]of this.gamepadButtons.entries())a&&!i.has(r)&&(this.applyCommand(this.bindings.getBinding(r),!1,r,t),this.gamepadButtons.set(r,!1))}applyTouchState(t){let n=this.pendingTouchState;if(n&&(this.pendingTouchState=void 0,n.move&&(this.touchMove={x:this.clampAnalog(n.move.x),y:this.clampAnalog(n.move.y)}),n.look&&(this.touchLook={x:this.clampAnalog(n.look.x),y:this.clampAnalog(n.look.y)}),n.buttons))for(let[i,r]of Object.entries(n.buttons)){if(r===void 0)continue;let a=this.touchButtons.get(i)??!1;r!==a&&(this.applyCommand(i,r,this.touchButtonCode(i),t),this.touchButtons.set(i,r))}}applyCommand(t,n,i,r){if(!t)return;let a=JI(t);if(a){let s=this.lookupButton(a);n?(s.press(i,r)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(i,r)&&this.commandQueue.push(a.replace("+","-"))}else n&&this.commandQueue.push(t)}sampleMouseDelta(){let t=this.mouseDelta;if(this.mouseDelta={deltaX:0,deltaY:0},!this.mouseFilter)return this.previousMouseDelta=t,t;let n={deltaX:(t.deltaX+this.previousMouseDelta.deltaX)*.5,deltaY:(t.deltaY+this.previousMouseDelta.deltaY)*.5};return this.previousMouseDelta=t,n}collectButtonBits(t,n){let i=_t.None;for(let[r,a]of Object.entries(ZI)){let s=this.sample(r,t,n);(s.fraction>0||s.active||s.wasPressed)&&(i|=a)}return i}lookupButton(t){let n=this.buttons.get(t);return n||(n=new cu,this.buttons.set(t,n)),n}mouseButtonToCode(t){return t===0?"Mouse1":t===1?"Mouse3":t===2?"Mouse2":`Mouse${t+1}`}mouseButtonToCommand(t){return this.bindings.getBinding(t)}sample(t,n,i){return this.lookupButton(t).sample(n,i)}gamepadButtonCode(t,n){return`Gamepad${t}-Button${n}`}touchButtonCode(t){return`Touch-${t}`}clampAnalog(t){return Math.max(-1,Math.min(1,t))}applyDeadZone(t){return Math.abs(t)<this.gamepadDeadZone?0:t}mergeAnalog(t,n){return Math.abs(n)>Math.abs(t)?n:t}clampMove(t,n){return Math.max(-n,Math.min(n,t))}};var Ms=class{constructor(t,n=new pi(t)){this.queued=[];this.controller=n}captureFrame(t,n,i){let r=this.controller.buildCommand(t,n,i),a=this.controller.consumeConsoleCommands(),s={command:r,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var Rs={x:0,y:0,z:0},bg=(i=>(i[i.Normal=0]="Normal",i[i.DemoPlayback=1]="DemoPlayback",i[i.Multiplayer=2]="Multiplayer",i))(bg||{});function QI(e){let t=R=>{let G={x:0,y:0,z:0};return e.engine.trace(R,R,G,G).contents||0},n=new fa(e.engine.trace,t),i=new ma,r=new im,a=new xs(r),s=new fs(e);s.setView(i);let o=!1,l=null,c=0,u=new gs,m=new As,d=new Ss,f=new Es,_=new Tr(new ws),p,v,y=new vi,S,E=0,w=!1,T=c0(e,{get tickRate(){return 10},get frameTimeMs(){return S?.timeMs??0},get serverFrame(){return s.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return y},getClientName:R=>`Player ${R}`,getKeyBinding:R=>`[${R}]`,get inAutoDemo(){return w}}),x=o0(T),L=new ks({get username(){return e.host?.cvars?.get("name")?.string||"Player"},get model(){return e.host?.cvars?.get("model")?.string||"male"},get skin(){return e.host?.cvars?.get("skin")?.string||"grunt"},get fov(){return ee}}),N=new ys(u,L);s.setCallbacks({onCenterPrint:R=>x.ParseCenterPrint(R,0,!1),onPrint:(R,G)=>x.NotifyMessage(0,G,!1),onConfigString:(R,G)=>{y.set(R,G),x.ParseConfigString(R,G)},onServerData:(R,G)=>{G&&G>0?r.setFrameDuration(1e3/G):r.setFrameDuration(100)}}),r.setHandler(s);let A,O,W,ee=90,J=!1;if(e.host){v=new xr(u,e.host),p=new ps(u,v,e.host);let R=new Map;if(e.host.cvars){for(let G of e.host.cvars.list())R.set(G.name,{value:G.string,setValue:ie=>e.host.cvars.setValue(G.name,ie)});_.loadCvars(R)}}if(e.host?.commands&&(e.host.commands.register("playdemo",R=>{if(R.length<1){console.log("usage: playdemo <filename>");return}let G=R[0];console.log(`playdemo: ${G}`),console.log("Note: Demo loading requires VFS access which is not yet fully integrated into this console command.")},"Play a recorded demo"),e.host.commands.register("crosshair",()=>{let R=u0();console.log(`Crosshair changed to index ${R}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{J=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{J=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{u.isActive()?u.closeAll():p&&u.pushMenu(p.createPauseMenu())},"Toggle the main/pause menu"),e.host.commands.register("connect",R=>{if(R.length<1){console.log("usage: connect <address>");return}let G=R[0];console.log(`Connecting to ${G}...`),L.connect(G).catch(ie=>{console.error("Failed to connect:",ie),d.show("Connection Failed",ie instanceof Error?ie.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{L.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Gi.Archive,onChange:G=>{let ie=G.number;isNaN(ie)||(ee=Math.max(1,Math.min(179,ie)))},description:"Field of view"});let R=e.host.cvars.get("fov");if(R){let G=R.number;isNaN(G)||(ee=Math.max(1,Math.min(179,G)))}}return{loadingScreen:m,errorDialog:d,init(R){this.Init(R)},Init(R){S=R,R?.state&&n.setAuthoritative(R),x.Init(),e.engine.assets&&e.engine.renderer&&(m.start(100,"Loading assets..."),wg(e.engine.renderer,e.engine.assets).then(()=>{m.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(u.isActive()||document.body.requestPointerLock?.())})},predict(R){return u.isActive(),L.isConnected()&&L.sendCommand(R),n.enqueueCommand(R)},handleInput(R,G){if(o&&a.handleInput(R,G))return!0;if(!u.isActive())return!1;if(!G)return!0;let ie=R.toLowerCase();return ie==="arrowup"||ie==="w"?u.handleInput("up"):ie==="arrowdown"||ie==="s"?u.handleInput("down"):ie==="arrowleft"||ie==="a"?u.handleInput("left"):ie==="arrowright"||ie==="d"?u.handleInput("right"):ie==="enter"||ie===" "?u.handleInput("select"):ie==="escape"?u.getState().activeMenu?.parent?u.handleInput("back"):!1:R.length===1?u.handleInput("char",R):R==="Backspace"?u.handleInput("left"):!0},toggleMenu(){if(u.isActive()){if(u.closeAll(),e.host?.cvars){let R=e.host.cvars.list().map(G=>({name:G.name,value:G.string,flags:G.flags}));_.saveCvars(R)}}else p&&u.pushMenu(p.createPauseMenu())},createMainMenu(R,G,ie,St,Ce){let Le=new _s(u,G,ie,St,Ce),Et=v;if(!Et){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");Et=new xr(u,e.host)}let Mn=e.engine.assets,kg={findByExtension:Rn=>Mn?Mn.listFiles(Rn):[]},xg=new vs(u,kg,Rn=>{console.log(`Starting map: ${Rn}`),e.host?.commands.execute(`map ${Rn}`)}),Tg=new hs(u,Le,{...R,optionsFactory:Et,mapsFactory:xg,multiplayerFactory:N,onSetDifficulty:Rn=>{e.host?.cvars&&e.host.cvars.setValue("skill",Rn.toString())}});return{menuSystem:u,factory:Tg}},render(R){let G=[];if(o){let Ce=R.nowMs,Le=E>0?Math.max(0,Ce-E):0;E=Ce,r.update(Le),A=s.getPredictionState(r.getCurrentTime())}else E=R.nowMs,R.latest?.state&&(n.setAuthoritative(R.latest),S=R.latest),R.previous?.state&&R.latest?.state?(A=gn(R.previous.state,R.latest.state,R.alpha),R.latest.state.packetEntities&&R.previous.state.packetEntities&&(G=ms(R.latest.state.packetEntities,R.previous.state.packetEntities,R.alpha,y,e))):A=R.latest?.state??R.previous?.state??n.getPredictedState();let ie=R.latest&&R.previous?Math.max(0,R.latest.timeMs-R.previous.timeMs):0;O=i.sample(A,ie);let St={};if(A){let{origin:Ce,viewAngles:Le}=A;W=new yd,W.position=_e.fromValues(Ce.x,Ce.y,Ce.z);let Et=O?.offset??{x:0,y:0,z:0};_e.add(W.position,W.position,[Et.x,Et.y,Et.z]);let Mn=O?.angles??{x:0,y:0,z:0};W.angles=_e.fromValues(Le.x+Mn.x,Le.y+Mn.y,Le.z+Mn.z),W.fov=J?40:ee,W.aspect=4/3,e.engine.renderer&&(W.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&W){let Ce;if(e.engine.assets){let Le=y.getModelName(1);if(Le){let Et=e.engine.assets.getMap(Le)}}e.engine.renderer.renderFrame({camera:W,world:Ce,dlights:[]},G)}if(e.engine.renderer&&A&&A.client){let Ce=e.engine.renderer.stats?{...e.engine.renderer.stats,batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0}:{batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0},Le=R.latest?.timeMs??0;this.DrawHUD(Ce,Le)}return St},DrawHUD(R,G){if(!e.engine.renderer)return;let ie=e.engine.renderer,St=ie.width,Ce=ie.height;if(A&&A.client){let Le={origin:A.origin,velocity:A.velocity,viewAngles:A.viewAngles,onGround:Vn(A.pmFlags,Tt.OnGround),waterLevel:A.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:A.damageAlpha??0,damageIndicators:A.damageIndicators??[],blend:A.blend??[0,0,0,0],pickupIcon:A.pickupIcon,centerPrint:void 0,notify:void 0,stats:A.stats?[...A.stats]:new Array(32).fill(0),kick_angles:Rs,kick_origin:Rs,gunoffset:Rs,gunangles:Rs,gunindex:0,pm_type:A.pm_type??0,pm_time:A.pm_time??0,pm_flags:A.pmFlags,gun_frame:A.gun_frame??0,rdflags:A.rdflags??0,fov:A.fov??90};Le.stats[Fe.STAT_HEALTH]=A.health??0,Le.stats[Fe.STAT_AMMO]=A.ammo??0,Le.stats[Fe.STAT_ARMOR]=A.armor??0,ie.begin2D(),x.DrawHUD(0,null,{x:0,y:0,width:St,height:Ce},{x:0,y:0,width:St,height:Ce},1,0,Le),ie.end2D()}u.isActive()&&Sg(e.engine.renderer,u.getState(),e.engine.renderer.width,e.engine.renderer.height),o&&a.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height),A&&A.client&&f.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,A.client),d.render(e.engine.renderer),m.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(x.Shutdown(),S=void 0,A=void 0,e.host?.cvars){let R=e.host.cvars.list().map(G=>({name:G.name,value:G.string,flags:G.flags}));_.saveCvars(R)}},get prediction(){return n},get lastRendered(){return A},get view(){return i},get lastView(){return O},get camera(){return W},demoPlayback:r,get isDemoPlaying(){return o},get currentDemoName(){return l},get mode(){return c},startDemoPlayback(R,G){r.loadDemo(R),r.setHandler(s),o=!0,l=G,c=1,E=0,y.clear()},stopDemoPlayback(){r.stop(),o=!1,l=null,c=0},ParseCenterPrint(R){x.ParseCenterPrint(R,0,!1)},ParseNotify(R){x.NotifyMessage(0,R,!1)},showSubtitle(R,G){x.ShowSubtitle(R,G)},ParseConfigString(R,G){y.set(R,G),x.ParseConfigString(R,G)},demoHandler:s,multiplayer:L,configStrings:y}}return Ng(eC);})();
|
|
169
|
+
}`;var im=class{constructor(){this._position=ye.create(),this._angles=ye.create(),this._bobAngles=ye.create(),this._bobOffset=ye.create(),this._kickAngles=ye.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=ve.create(),this._projectionMatrix=ve.create(),this._viewProjectionMatrix=ve.create(),this._dirty=!0}get position(){return this._position}set position(e){ye.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){ye.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){ye.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){ye.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){ye.copy(this._bobOffset,e),this._dirty=!0}get rollAngle(){return this._rollAngle}set rollAngle(e){this._rollAngle=e,this._dirty=!0}get fov(){return this._fov}set fov(e){this._fov=e,this._dirty=!0}get aspect(){return this._aspect}set aspect(e){this._aspect=e,this._dirty=!0}get viewMatrix(){return this.updateMatrices(),this._viewMatrix}get projectionMatrix(){return this.updateMatrices(),this._projectionMatrix}get viewProjectionMatrix(){return this.updateMatrices(),this._viewProjectionMatrix}getViewmodelProjectionMatrix(e){let t=ve.create();return ve.perspective(t,e*Pi,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;ve.perspective(this._projectionMatrix,this._fov*Pi,this._aspect,this._near,this._far);let e=ve.fromValues(0,-1,0,0,0,0,1,0,-1,0,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],n=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],i=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,r=t*Pi,a=n*Pi,s=i*Pi,o=ve.create();ve.identity(o),ve.rotateZ(o,o,-a),ve.rotateY(o,o,-r),ve.rotateX(o,o,-s);let u=ve.create();ve.multiply(u,e,o);let c=ye.add(ye.create(),this._position,this._bobOffset),d=ye.negate(ye.create(),c),m=ye.create();ye.transformMat4(m,d,o);let l=ye.fromValues(m[1]||0,m[2]||0,m[0]||0);ve.copy(this._viewMatrix,u),this._viewMatrix[12]=l[0],this._viewMatrix[13]=l[1],this._viewMatrix[14]=l[2],ve.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var Mw=class{constructor(e){this.buffer=e,this.view=new DataView(e),this.offset=0}hasMore(){return this.offset<this.buffer.byteLength}readNextBlock(){if(this.offset+4>this.buffer.byteLength)return null;let e=this.view.getInt32(this.offset,!0);if(this.offset+=4,e<0||e>2097152)return console.warn(`DemoReader: Invalid block length ${e} at offset ${this.offset-4}`),null;if(this.offset+e>this.buffer.byteLength)return console.warn(`DemoReader: Incomplete block. Expected ${e} bytes, but only ${this.buffer.byteLength-this.offset} remain.`),null;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new To(t)}}reset(){this.offset=0}getOffset(){return this.offset}},Tw=4,ul=0,dl=1,Rw=2;function Jn(e){let t=e.length;for(;--t>=0;)e[t]=0}var zw=0,rm=1,Lw=2,Nw=3,Ow=258,Go=29,ji=256,Vi=ji+1+Go,Yn=30,Ho=19,am=2*Vi+1,wn=15,fo=16,Iw=7,Vo=256,sm=16,om=17,cm=18,zo=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Qr=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Cw=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),um=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Pw=512,Ft=new Array((Vi+2)*2);Jn(Ft);var Bi=new Array(Yn*2);Jn(Bi);var Wi=new Array(Pw);Jn(Wi);var Ki=new Array(Ow-Nw+1);Jn(Ki);var Wo=new Array(Go);Jn(Wo);var ea=new Array(Yn);Jn(ea);function ho(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}var dm,lm,mm;function _o(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var fm=e=>e<256?Wi[e]:Wi[256+(e>>>7)],$i=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Ze=(e,t,n)=>{e.bi_valid>fo-n?(e.bi_buf|=t<<e.bi_valid&65535,$i(e,e.bi_buf),e.bi_buf=t>>fo-e.bi_valid,e.bi_valid+=n-fo):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},kt=(e,t,n)=>{Ze(e,n[t*2],n[t*2+1])},hm=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},Fw=e=>{e.bi_valid===16?($i(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},Dw=(e,t)=>{let n=t.dyn_tree,i=t.max_code,r=t.stat_desc.static_tree,a=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,o=t.stat_desc.extra_base,u=t.stat_desc.max_length,c,d,m,l,f,_,p=0;for(l=0;l<=wn;l++)e.bl_count[l]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<am;c++)d=e.heap[c],l=n[n[d*2+1]*2+1]+1,l>u&&(l=u,p++),n[d*2+1]=l,!(d>i)&&(e.bl_count[l]++,f=0,d>=o&&(f=s[d-o]),_=n[d*2],e.opt_len+=_*(l+f),a&&(e.static_len+=_*(r[d*2+1]+f)));if(p!==0){do{for(l=u-1;e.bl_count[l]===0;)l--;e.bl_count[l]--,e.bl_count[l+1]+=2,e.bl_count[u]--,p-=2}while(p>0);for(l=u;l!==0;l--)for(d=e.bl_count[l];d!==0;)m=e.heap[--c],!(m>i)&&(n[m*2+1]!==l&&(e.opt_len+=(l-n[m*2+1])*n[m*2],n[m*2+1]=l),d--)}},_m=(e,t,n)=>{let i=new Array(wn+1),r=0,a,s;for(a=1;a<=wn;a++)r=r+n[a-1]<<1,i[a]=r;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=hm(i[o]++,o))}},Uw=()=>{let e,t,n,i,r,a=new Array(wn+1);for(n=0,i=0;i<Go-1;i++)for(Wo[i]=n,e=0;e<1<<zo[i];e++)Ki[n++]=i;for(Ki[n-1]=i,r=0,i=0;i<16;i++)for(ea[i]=r,e=0;e<1<<Qr[i];e++)Wi[r++]=i;for(r>>=7;i<Yn;i++)for(ea[i]=r<<7,e=0;e<1<<Qr[i]-7;e++)Wi[256+r++]=i;for(t=0;t<=wn;t++)a[t]=0;for(e=0;e<=143;)Ft[e*2+1]=8,e++,a[8]++;for(;e<=255;)Ft[e*2+1]=9,e++,a[9]++;for(;e<=279;)Ft[e*2+1]=7,e++,a[7]++;for(;e<=287;)Ft[e*2+1]=8,e++,a[8]++;for(_m(Ft,Vi+1,a),e=0;e<Yn;e++)Bi[e*2+1]=5,Bi[e*2]=hm(e,5);dm=new ho(Ft,zo,ji+1,Vi,wn),lm=new ho(Bi,Qr,0,Yn,wn),mm=new ho(new Array(0),Cw,0,Ho,Iw)},gm=e=>{let t;for(t=0;t<Vi;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Yn;t++)e.dyn_dtree[t*2]=0;for(t=0;t<Ho;t++)e.bl_tree[t*2]=0;e.dyn_ltree[Vo*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},vm=e=>{e.bi_valid>8?$i(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},ll=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},go=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&ll(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!ll(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},ml=(e,t,n)=>{let i,r,a=0,s,o;if(e.sym_next!==0)do i=e.pending_buf[e.sym_buf+a++]&255,i+=(e.pending_buf[e.sym_buf+a++]&255)<<8,r=e.pending_buf[e.sym_buf+a++],i===0?kt(e,r,t):(s=Ki[r],kt(e,s+ji+1,t),o=zo[s],o!==0&&(r-=Wo[s],Ze(e,r,o)),i--,s=fm(i),kt(e,s,n),o=Qr[s],o!==0&&(i-=ea[s],Ze(e,i,o)));while(a<e.sym_next);kt(e,Vo,t)},Lo=(e,t)=>{let n=t.dyn_tree,i=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,u=-1,c;for(e.heap_len=0,e.heap_max=am,s=0;s<a;s++)n[s*2]!==0?(e.heap[++e.heap_len]=u=s,e.depth[s]=0):n[s*2+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=u<2?++u:0,n[c*2]=1,e.depth[c]=0,e.opt_len--,r&&(e.static_len-=i[c*2+1]);for(t.max_code=u,s=e.heap_len>>1;s>=1;s--)go(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],go(e,n,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,n[c*2]=n[s*2]+n[o*2],e.depth[c]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,n[s*2+1]=n[o*2+1]=c,e.heap[1]=c++,go(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],Dw(e,t),_m(n,u,e.bl_count)},fl=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,u=7,c=4;for(s===0&&(u=138,c=3),t[(n+1)*2+1]=65535,i=0;i<=n;i++)a=s,s=t[(i+1)*2+1],!(++o<u&&a===s)&&(o<c?e.bl_tree[a*2]+=o:a!==0?(a!==r&&e.bl_tree[a*2]++,e.bl_tree[sm*2]++):o<=10?e.bl_tree[om*2]++:e.bl_tree[cm*2]++,o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4))},hl=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,u=7,c=4;for(s===0&&(u=138,c=3),i=0;i<=n;i++)if(a=s,s=t[(i+1)*2+1],!(++o<u&&a===s)){if(o<c)do kt(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(kt(e,a,e.bl_tree),o--),kt(e,sm,e.bl_tree),Ze(e,o-3,2)):o<=10?(kt(e,om,e.bl_tree),Ze(e,o-3,3)):(kt(e,cm,e.bl_tree),Ze(e,o-11,7));o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4)}},Bw=e=>{let t;for(fl(e,e.dyn_ltree,e.l_desc.max_code),fl(e,e.dyn_dtree,e.d_desc.max_code),Lo(e,e.bl_desc),t=Ho-1;t>=3&&e.bl_tree[um[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},Gw=(e,t,n,i)=>{let r;for(Ze(e,t-257,5),Ze(e,n-1,5),Ze(e,i-4,4),r=0;r<i;r++)Ze(e,e.bl_tree[um[r]*2+1],3);hl(e,e.dyn_ltree,t-1),hl(e,e.dyn_dtree,n-1)},Hw=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return ul;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return dl;for(n=32;n<ji;n++)if(e.dyn_ltree[n*2]!==0)return dl;return ul},_l=!1,Vw=e=>{_l||(Uw(),_l=!0),e.l_desc=new _o(e.dyn_ltree,dm),e.d_desc=new _o(e.dyn_dtree,lm),e.bl_desc=new _o(e.bl_tree,mm),e.bi_buf=0,e.bi_valid=0,gm(e)},pm=(e,t,n,i)=>{Ze(e,(zw<<1)+(i?1:0),3),vm(e),$i(e,n),$i(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},Ww=e=>{Ze(e,rm<<1,3),kt(e,Vo,Ft),Fw(e)},Kw=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===Rw&&(e.strm.data_type=Hw(e)),Lo(e,e.l_desc),Lo(e,e.d_desc),s=Bw(e),r=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=r&&(r=a)):r=a=n+5,n+4<=r&&t!==-1?pm(e,t,n,i):e.strategy===Tw||a===r?(Ze(e,(rm<<1)+(i?1:0),3),ml(e,Ft,Bi)):(Ze(e,(Lw<<1)+(i?1:0),3),Gw(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),ml(e,e.dyn_ltree,e.dyn_dtree)),gm(e),i&&vm(e)},$w=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(Ki[n]+ji+1)*2]++,e.dyn_dtree[fm(t)*2]++),e.sym_next===e.sym_end),Xw=Vw,Yw=pm,qw=Kw,Zw=$w,jw=Ww,Jw={_tr_init:Xw,_tr_stored_block:Yw,_tr_flush_block:qw,_tr_tally:Zw,_tr_align:jw},Qw=(e,t,n,i)=>{let r=e&65535|0,a=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do r=r+t[i++]|0,a=a+r|0;while(--s);r%=65521,a%=65521}return r|a<<16|0},Xi=Qw,eA=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},tA=new Uint32Array(eA()),nA=(e,t,n,i)=>{let r=tA,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},Ce=nA,kn={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},xn={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},{_tr_init:iA,_tr_stored_block:No,_tr_flush_block:rA,_tr_tally:Jt,_tr_align:aA}=Jw,{Z_NO_FLUSH:Qt,Z_PARTIAL_FLUSH:sA,Z_FULL_FLUSH:oA,Z_FINISH:ut,Z_BLOCK:gl,Z_OK:Be,Z_STREAM_END:vl,Z_STREAM_ERROR:Et,Z_DATA_ERROR:cA,Z_BUF_ERROR:vo,Z_DEFAULT_COMPRESSION:uA,Z_FILTERED:dA,Z_HUFFMAN_ONLY:Yr,Z_RLE:lA,Z_FIXED:mA,Z_DEFAULT_STRATEGY:fA,Z_UNKNOWN:hA,Z_DEFLATED:fa}=xn,_A=9,gA=15,vA=8,pA=29,yA=256,Oo=yA+1+pA,wA=30,AA=19,SA=2*Oo+1,kA=15,re=3,jt=258,bt=jt+re+1,EA=32,Zn=42,Ko=57,Io=69,Co=73,Po=91,Fo=103,An=113,Di=666,$e=1,Qn=2,En=3,ei=4,bA=3,Sn=(e,t)=>(e.msg=kn[t],t),pl=e=>e*2-(e>4?9:0),Zt=e=>{let t=e.length;for(;--t>=0;)e[t]=0},xA=e=>{let t,n,i,r=e.w_size;t=e.hash_size,i=t;do n=e.head[--i],e.head[i]=n>=r?n-r:0;while(--t);t=r,i=t;do n=e.prev[--i],e.prev[i]=n>=r?n-r:0;while(--t)},MA=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,en=MA,Qe=e=>{let t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},et=(e,t)=>{rA(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Qe(e.strm)},de=(e,t)=>{e.pending_buf[e.pending++]=t},Fi=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},Do=(e,t,n,i)=>{let r=e.avail_in;return r>i&&(r=i),r===0?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),n),e.state.wrap===1?e.adler=Xi(e.adler,t,r,n):e.state.wrap===2&&(e.adler=Ce(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},ym=(e,t)=>{let n=e.max_chain_length,i=e.strstart,r,a,s=e.prev_length,o=e.nice_match,u=e.strstart>e.w_size-bt?e.strstart-(e.w_size-bt):0,c=e.window,d=e.w_mask,m=e.prev,l=e.strstart+jt,f=c[i+s-1],_=c[i+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(c[r+s]!==_||c[r+s-1]!==f||c[r]!==c[i]||c[++r]!==c[i+1])){i+=2,r++;do;while(c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&i<l);if(a=jt-(l-i),i=l-jt,a>s){if(e.match_start=t,s=a,a>=o)break;f=c[i+s-1],_=c[i+s]}}while((t=m[t&d])>u&&--n!==0);return s<=e.lookahead?s:e.lookahead},jn=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-bt)&&(e.window.set(e.window.subarray(t,t+t-i),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),xA(e),i+=t),e.strm.avail_in===0)break;if(n=Do(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=re)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=en(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=en(e,e.ins_h,e.window[r+re-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<re)););}while(e.lookahead<bt&&e.strm.avail_in!==0)},wm=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,i,r,a,s=0,o=e.strm.avail_in;do{if(i=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,r=e.strstart-e.block_start,i>r+e.strm.avail_in&&(i=r+e.strm.avail_in),i>a&&(i=a),i<n&&(i===0&&t!==ut||t===Qt||i!==r+e.strm.avail_in)))break;s=t===ut&&i===r+e.strm.avail_in?1:0,No(e,0,0,s),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,Qe(e.strm),r&&(r>i&&(r=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,i-=r),i&&(Do(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(s===0);return o-=e.strm.avail_in,o&&(o>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=o&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-o,e.strm.next_in),e.strstart),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),s?ei:t!==Qt&&t!==ut&&e.strm.avail_in===0&&e.strstart===e.block_start?Qn:(a=e.window_size-e.strstart,e.strm.avail_in>a&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(Do(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water<e.strstart&&(e.high_water=e.strstart),a=e.bi_valid+42>>3,a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a,n=a>e.w_size?e.w_size:a,r=e.strstart-e.block_start,(r>=n||(r||t===ut)&&t!==Qt&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===ut&&e.strm.avail_in===0&&i===r?1:0,No(e,e.block_start,i,s),e.block_start+=i,Qe(e.strm)),s?En:$e)},po=(e,t)=>{let n,i;for(;;){if(e.lookahead<bt){if(jn(e),e.lookahead<bt&&t===Qt)return $e;if(e.lookahead===0)break}if(n=0,e.lookahead>=re&&(e.ins_h=en(e,e.ins_h,e.window[e.strstart+re-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-bt&&(e.match_length=ym(e,n)),e.match_length>=re)if(i=Jt(e,e.strstart-e.match_start,e.match_length-re),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=re){e.match_length--;do e.strstart++,e.ins_h=en(e,e.ins_h,e.window[e.strstart+re-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=en(e,e.ins_h,e.window[e.strstart+1]);else i=Jt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(et(e,!1),e.strm.avail_out===0))return $e}return e.insert=e.strstart<re-1?e.strstart:re-1,t===ut?(et(e,!0),e.strm.avail_out===0?En:ei):e.sym_next&&(et(e,!1),e.strm.avail_out===0)?$e:Qn},Kn=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<bt){if(jn(e),e.lookahead<bt&&t===Qt)return $e;if(e.lookahead===0)break}if(n=0,e.lookahead>=re&&(e.ins_h=en(e,e.ins_h,e.window[e.strstart+re-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=re-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-bt&&(e.match_length=ym(e,n),e.match_length<=5&&(e.strategy===dA||e.match_length===re&&e.strstart-e.match_start>4096)&&(e.match_length=re-1)),e.prev_length>=re&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-re,i=Jt(e,e.strstart-1-e.prev_match,e.prev_length-re),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=en(e,e.ins_h,e.window[e.strstart+re-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=re-1,e.strstart++,i&&(et(e,!1),e.strm.avail_out===0))return $e}else if(e.match_available){if(i=Jt(e,0,e.window[e.strstart-1]),i&&et(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return $e}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=Jt(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<re-1?e.strstart:re-1,t===ut?(et(e,!0),e.strm.avail_out===0?En:ei):e.sym_next&&(et(e,!1),e.strm.avail_out===0)?$e:Qn},TA=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=jt){if(jn(e),e.lookahead<=jt&&t===Qt)return $e;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=re&&e.strstart>0&&(r=e.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=e.strstart+jt;do;while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&r<a);e.match_length=jt-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=re?(n=Jt(e,1,e.match_length-re),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Jt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(et(e,!1),e.strm.avail_out===0))return $e}return e.insert=0,t===ut?(et(e,!0),e.strm.avail_out===0?En:ei):e.sym_next&&(et(e,!1),e.strm.avail_out===0)?$e:Qn},RA=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(jn(e),e.lookahead===0)){if(t===Qt)return $e;break}if(e.match_length=0,n=Jt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(et(e,!1),e.strm.avail_out===0))return $e}return e.insert=0,t===ut?(et(e,!0),e.strm.avail_out===0?En:ei):e.sym_next&&(et(e,!1),e.strm.avail_out===0)?$e:Qn};function St(e,t,n,i,r){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=i,this.func=r}var Ui=[new St(0,0,0,0,wm),new St(4,4,8,4,po),new St(4,5,16,8,po),new St(4,6,32,32,po),new St(4,4,16,16,Kn),new St(8,16,32,32,Kn),new St(8,16,128,128,Kn),new St(8,32,128,256,Kn),new St(32,128,258,1024,Kn),new St(32,258,258,4096,Kn)],zA=e=>{e.window_size=2*e.w_size,Zt(e.head),e.max_lazy_match=Ui[e.level].max_lazy,e.good_match=Ui[e.level].good_length,e.nice_match=Ui[e.level].nice_length,e.max_chain_length=Ui[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=re-1,e.match_available=0,e.ins_h=0};function LA(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=fa,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(SA*2),this.dyn_dtree=new Uint16Array((2*wA+1)*2),this.bl_tree=new Uint16Array((2*AA+1)*2),Zt(this.dyn_ltree),Zt(this.dyn_dtree),Zt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(kA+1),this.heap=new Uint16Array(2*Oo+1),Zt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Oo+1),Zt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var Ji=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==Zn&&t.status!==Ko&&t.status!==Io&&t.status!==Co&&t.status!==Po&&t.status!==Fo&&t.status!==An&&t.status!==Di?1:0},Am=e=>{if(Ji(e))return Sn(e,Et);e.total_in=e.total_out=0,e.data_type=hA;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?Ko:t.wrap?Zn:An,e.adler=t.wrap===2?0:1,t.last_flush=-2,iA(t),Be},Sm=e=>{let t=Am(e);return t===Be&&zA(e.state),t},NA=(e,t)=>Ji(e)||e.state.wrap!==2?Et:(e.state.gzhead=t,Be),km=(e,t,n,i,r,a)=>{if(!e)return Et;let s=1;if(t===uA&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>_A||n!==fa||i<8||i>15||t<0||t>9||a<0||a>mA||i===8&&s!==1)return Sn(e,Et);i===8&&(i=9);let o=new LA;return e.state=o,o.strm=e,o.status=Zn,o.wrap=s,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=r+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+re-1)/re),o.window=new Uint8Array(o.w_size*2),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<r+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=(o.lit_bufsize-1)*3,o.level=t,o.strategy=a,o.method=n,Sm(e)},OA=(e,t)=>km(e,t,fa,gA,vA,fA),IA=(e,t)=>{if(Ji(e)||t>gl||t<0)return e?Sn(e,Et):Et;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===Di&&t!==ut)return Sn(e,e.avail_out===0?vo:Et);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(Qe(e),e.avail_out===0)return n.last_flush=-1,Be}else if(e.avail_in===0&&pl(t)<=pl(i)&&t!==ut)return Sn(e,vo);if(n.status===Di&&e.avail_in!==0)return Sn(e,vo);if(n.status===Zn&&n.wrap===0&&(n.status=An),n.status===Zn){let r=fa+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=Yr||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=EA),r+=31-r%31,Fi(n,r),n.strstart!==0&&(Fi(n,e.adler>>>16),Fi(n,e.adler&65535)),e.adler=1,n.status=An,Qe(e),n.pending!==0)return n.last_flush=-1,Be}if(n.status===Ko){if(e.adler=0,de(n,31),de(n,139),de(n,8),n.gzhead)de(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),de(n,n.gzhead.time&255),de(n,n.gzhead.time>>8&255),de(n,n.gzhead.time>>16&255),de(n,n.gzhead.time>>24&255),de(n,n.level===9?2:n.strategy>=Yr||n.level<2?4:0),de(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(de(n,n.gzhead.extra.length&255),de(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=Ce(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Io;else if(de(n,0),de(n,0),de(n,0),de(n,0),de(n,0),de(n,n.level===9?2:n.strategy>=Yr||n.level<2?4:0),de(n,bA),n.status=An,Qe(e),n.pending!==0)return n.last_flush=-1,Be}if(n.status===Io){if(n.gzhead.extra){let r=n.pending,a=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+a>n.pending_buf_size;){let o=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>r&&(e.adler=Ce(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex+=o,Qe(e),n.pending!==0)return n.last_flush=-1,Be;r=0,a-=o}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending+=a,n.gzhead.hcrc&&n.pending>r&&(e.adler=Ce(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=Co}if(n.status===Co){if(n.gzhead.name){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=Ce(e.adler,n.pending_buf,n.pending-r,r)),Qe(e),n.pending!==0)return n.last_flush=-1,Be;r=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,de(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=Ce(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=Po}if(n.status===Po){if(n.gzhead.comment){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=Ce(e.adler,n.pending_buf,n.pending-r,r)),Qe(e),n.pending!==0)return n.last_flush=-1,Be;r=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,de(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=Ce(e.adler,n.pending_buf,n.pending-r,r))}n.status=Fo}if(n.status===Fo){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Qe(e),n.pending!==0))return n.last_flush=-1,Be;de(n,e.adler&255),de(n,e.adler>>8&255),e.adler=0}if(n.status=An,Qe(e),n.pending!==0)return n.last_flush=-1,Be}if(e.avail_in!==0||n.lookahead!==0||t!==Qt&&n.status!==Di){let r=n.level===0?wm(n,t):n.strategy===Yr?RA(n,t):n.strategy===lA?TA(n,t):Ui[n.level].func(n,t);if((r===En||r===ei)&&(n.status=Di),r===$e||r===En)return e.avail_out===0&&(n.last_flush=-1),Be;if(r===Qn&&(t===sA?aA(n):t!==gl&&(No(n,0,0,!1),t===oA&&(Zt(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Qe(e),e.avail_out===0))return n.last_flush=-1,Be}return t!==ut?Be:n.wrap<=0?vl:(n.wrap===2?(de(n,e.adler&255),de(n,e.adler>>8&255),de(n,e.adler>>16&255),de(n,e.adler>>24&255),de(n,e.total_in&255),de(n,e.total_in>>8&255),de(n,e.total_in>>16&255),de(n,e.total_in>>24&255)):(Fi(n,e.adler>>>16),Fi(n,e.adler&65535)),Qe(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?Be:vl)},CA=e=>{if(Ji(e))return Et;let t=e.state.status;return e.state=null,t===An?Sn(e,cA):Be},PA=(e,t)=>{let n=t.length;if(Ji(e))return Et;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==Zn||i.lookahead)return Et;if(r===1&&(e.adler=Xi(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(Zt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let u=new Uint8Array(i.w_size);u.set(t.subarray(n-i.w_size,n),0),t=u,n=i.w_size}let a=e.avail_in,s=e.next_in,o=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,jn(i);i.lookahead>=re;){let u=i.strstart,c=i.lookahead-(re-1);do i.ins_h=en(i,i.ins_h,i.window[u+re-1]),i.prev[u&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=u,u++;while(--c);i.strstart=u,i.lookahead=re-1,jn(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=re-1,i.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,i.wrap=r,Be},FA=OA,DA=km,UA=Sm,BA=Am,GA=NA,HA=IA,VA=CA,WA=PA,KA="pako deflate (from Nodeca project)",Gi={deflateInit:FA,deflateInit2:DA,deflateReset:UA,deflateResetKeep:BA,deflateSetHeader:GA,deflate:HA,deflateEnd:VA,deflateSetDictionary:WA,deflateInfo:KA},$A=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),XA=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(let i in n)$A(n,i)&&(e[i]=n[i])}}return e},YA=e=>{let t=0;for(let i=0,r=e.length;i<r;i++)t+=e[i].length;let n=new Uint8Array(t);for(let i=0,r=0,a=e.length;i<a;i++){let s=e[i];n.set(s,r),r+=s.length}return n},ha={assign:XA,flattenChunks:YA},Em=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Em=!1}var Yi=new Uint8Array(256);for(let e=0;e<256;e++)Yi[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Yi[254]=Yi[254]=1;var qA=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,i,r,a,s=e.length,o=0;for(r=0;r<s;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),o+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(o),a=0,r=0;a<o;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t},ZA=(e,t)=>{if(t<65534&&e.subarray&&Em)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let i=0;i<t;i++)n+=String.fromCharCode(e[i]);return n},jA=(e,t)=>{let n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let i,r,a=new Array(n*2);for(r=0,i=0;i<n;){let s=e[i++];if(s<128){a[r++]=s;continue}let o=Yi[s];if(o>4){a[r++]=65533,i+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&i<n;)s=s<<6|e[i++]&63,o--;if(o>1){a[r++]=65533;continue}s<65536?a[r++]=s:(s-=65536,a[r++]=55296|s>>10&1023,a[r++]=56320|s&1023)}return ZA(a,r)},JA=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+Yi[e[n]]>t?n:t},qi={string2buf:qA,buf2string:jA,utf8border:JA};function QA(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var bm=QA,xm=Object.prototype.toString,{Z_NO_FLUSH:e2,Z_SYNC_FLUSH:t2,Z_FULL_FLUSH:n2,Z_FINISH:i2,Z_OK:ta,Z_STREAM_END:r2,Z_DEFAULT_COMPRESSION:a2,Z_DEFAULT_STRATEGY:s2,Z_DEFLATED:o2}=xn;function Qi(e){this.options=ha.assign({level:a2,method:o2,chunkSize:16384,windowBits:15,memLevel:8,strategy:s2},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new bm,this.strm.avail_out=0;let n=Gi.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==ta)throw new Error(kn[n]);if(t.header&&Gi.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=qi.string2buf(t.dictionary):xm.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=Gi.deflateSetDictionary(this.strm,i),n!==ta)throw new Error(kn[n]);this._dict_set=!0}}Qi.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?i2:e2,typeof e=="string"?n.input=qi.string2buf(e):xm.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),(a===t2||a===n2)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=Gi.deflate(n,a),r===r2)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=Gi.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===ta;if(n.avail_out===0){this.onData(n.output);continue}if(a>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};Qi.prototype.onData=function(e){this.chunks.push(e)};Qi.prototype.onEnd=function(e){e===ta&&(this.result=ha.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function $o(e,t){let n=new Qi(t);if(n.push(e,!0),n.err)throw n.msg||kn[n.err];return n.result}function c2(e,t){return t=t||{},t.raw=!0,$o(e,t)}function u2(e,t){return t=t||{},t.gzip=!0,$o(e,t)}var d2=Qi,l2=$o,m2=c2,f2=u2,h2=xn,_2={Deflate:d2,deflate:l2,deflateRaw:m2,gzip:f2,constants:h2},qr=16209,g2=16191,v2=function(t,n){let i,r,a,s,o,u,c,d,m,l,f,_,p,v,y,S,k,w,b,T,x,N,O,A,P=t.state;i=t.next_in,O=t.input,r=i+(t.avail_in-5),a=t.next_out,A=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),u=P.dmax,c=P.wsize,d=P.whave,m=P.wnext,l=P.window,f=P.hold,_=P.bits,p=P.lencode,v=P.distcode,y=(1<<P.lenbits)-1,S=(1<<P.distbits)-1;e:do{_<15&&(f+=O[i++]<<_,_+=8,f+=O[i++]<<_,_+=8),k=p[f&y];t:for(;;){if(w=k>>>24,f>>>=w,_-=w,w=k>>>16&255,w===0)A[a++]=k&65535;else if(w&16){b=k&65535,w&=15,w&&(_<w&&(f+=O[i++]<<_,_+=8),b+=f&(1<<w)-1,f>>>=w,_-=w),_<15&&(f+=O[i++]<<_,_+=8,f+=O[i++]<<_,_+=8),k=v[f&S];n:for(;;){if(w=k>>>24,f>>>=w,_-=w,w=k>>>16&255,w&16){if(T=k&65535,w&=15,_<w&&(f+=O[i++]<<_,_+=8,_<w&&(f+=O[i++]<<_,_+=8)),T+=f&(1<<w)-1,T>u){t.msg="invalid distance too far back",P.mode=qr;break e}if(f>>>=w,_-=w,w=a-s,T>w){if(w=T-w,w>d&&P.sane){t.msg="invalid distance too far back",P.mode=qr;break e}if(x=0,N=l,m===0){if(x+=c-w,w<b){b-=w;do A[a++]=l[x++];while(--w);x=a-T,N=A}}else if(m<w){if(x+=c+m-w,w-=m,w<b){b-=w;do A[a++]=l[x++];while(--w);if(x=0,m<b){w=m,b-=w;do A[a++]=l[x++];while(--w);x=a-T,N=A}}}else if(x+=m-w,w<b){b-=w;do A[a++]=l[x++];while(--w);x=a-T,N=A}for(;b>2;)A[a++]=N[x++],A[a++]=N[x++],A[a++]=N[x++],b-=3;b&&(A[a++]=N[x++],b>1&&(A[a++]=N[x++]))}else{x=a-T;do A[a++]=A[x++],A[a++]=A[x++],A[a++]=A[x++],b-=3;while(b>2);b&&(A[a++]=A[x++],b>1&&(A[a++]=A[x++]))}}else if((w&64)===0){k=v[(k&65535)+(f&(1<<w)-1)];continue n}else{t.msg="invalid distance code",P.mode=qr;break e}break}}else if((w&64)===0){k=p[(k&65535)+(f&(1<<w)-1)];continue t}else if(w&32){P.mode=g2;break e}else{t.msg="invalid literal/length code",P.mode=qr;break e}break}}while(i<r&&a<o);b=_>>3,i-=b,_-=b<<3,f&=(1<<_)-1,t.next_in=i,t.next_out=a,t.avail_in=i<r?5+(r-i):5-(i-r),t.avail_out=a<o?257+(o-a):257-(a-o),P.hold=f,P.bits=_},$n=15,yl=852,wl=592,Al=0,yo=1,Sl=2,p2=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),y2=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),w2=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),A2=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),S2=(e,t,n,i,r,a,s,o)=>{let u=o.bits,c=0,d=0,m=0,l=0,f=0,_=0,p=0,v=0,y=0,S=0,k,w,b,T,x,N=null,O,A=new Uint16Array($n+1),P=new Uint16Array($n+1),W=null,ie,ee,De;for(c=0;c<=$n;c++)A[c]=0;for(d=0;d<i;d++)A[t[n+d]]++;for(f=u,l=$n;l>=1&&A[l]===0;l--);if(f>l&&(f=l),l===0)return r[a++]=1<<24|64<<16|0,r[a++]=1<<24|64<<16|0,o.bits=1,0;for(m=1;m<l&&A[m]===0;m++);for(f<m&&(f=m),v=1,c=1;c<=$n;c++)if(v<<=1,v-=A[c],v<0)return-1;if(v>0&&(e===Al||l!==1))return-1;for(P[1]=0,c=1;c<$n;c++)P[c+1]=P[c]+A[c];for(d=0;d<i;d++)t[n+d]!==0&&(s[P[t[n+d]]++]=d);if(e===Al?(N=W=s,O=20):e===yo?(N=p2,W=y2,O=257):(N=w2,W=A2,O=0),S=0,d=0,c=m,x=a,_=f,p=0,b=-1,y=1<<f,T=y-1,e===yo&&y>yl||e===Sl&&y>wl)return 1;for(;;){ie=c-p,s[d]+1<O?(ee=0,De=s[d]):s[d]>=O?(ee=W[s[d]-O],De=N[s[d]-O]):(ee=96,De=0),k=1<<c-p,w=1<<_,m=w;do w-=k,r[x+(S>>p)+w]=ie<<24|ee<<16|De|0;while(w!==0);for(k=1<<c-1;S&k;)k>>=1;if(k!==0?(S&=k-1,S+=k):S=0,d++,--A[c]===0){if(c===l)break;c=t[n+s[d]]}if(c>f&&(S&T)!==b){for(p===0&&(p=f),x+=m,_=c-p,v=1<<_;_+p<l&&(v-=A[_+p],!(v<=0));)_++,v<<=1;if(y+=1<<_,e===yo&&y>yl||e===Sl&&y>wl)return 1;b=S&T,r[b]=f<<24|_<<16|x-a|0}}return S!==0&&(r[x+S]=c-p<<24|64<<16|0),o.bits=f,0},Hi=S2,k2=0,Mm=1,Tm=2,{Z_FINISH:kl,Z_BLOCK:E2,Z_TREES:Zr,Z_OK:bn,Z_STREAM_END:b2,Z_NEED_DICT:x2,Z_STREAM_ERROR:dt,Z_DATA_ERROR:Rm,Z_MEM_ERROR:zm,Z_BUF_ERROR:M2,Z_DEFLATED:El}=xn,_a=16180,bl=16181,xl=16182,Ml=16183,Tl=16184,Rl=16185,zl=16186,Ll=16187,Nl=16188,Ol=16189,na=16190,Pt=16191,wo=16192,Il=16193,Ao=16194,Cl=16195,Pl=16196,Fl=16197,Dl=16198,jr=16199,Jr=16200,Ul=16201,Bl=16202,Gl=16203,Hl=16204,Vl=16205,So=16206,Wl=16207,Kl=16208,we=16209,Lm=16210,Nm=16211,T2=852,R2=592,z2=15,L2=z2,$l=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function N2(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var Mn=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<_a||t.mode>Nm?1:0},Om=e=>{if(Mn(e))return dt;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=_a,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(T2),t.distcode=t.distdyn=new Int32Array(R2),t.sane=1,t.back=-1,bn},Im=e=>{if(Mn(e))return dt;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Om(e)},Cm=(e,t)=>{let n;if(Mn(e))return dt;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?dt:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,Im(e))},Pm=(e,t)=>{if(!e)return dt;let n=new N2;e.state=n,n.strm=e,n.window=null,n.mode=_a;let i=Cm(e,t);return i!==bn&&(e.state=null),i},O2=e=>Pm(e,L2),Xl=!0,ko,Eo,I2=e=>{if(Xl){ko=new Int32Array(512),Eo=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Hi(Mm,e.lens,0,288,ko,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Hi(Tm,e.lens,0,32,Eo,0,e.work,{bits:5}),Xl=!1}e.lencode=ko,e.lenbits=9,e.distcode=Eo,e.distbits=5},Fm=(e,t,n,i)=>{let r,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),i>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(r=a.wsize-a.wnext,r>i&&(r=i),a.window.set(t.subarray(n-i,n-i+r),a.wnext),i-=r,i?(a.window.set(t.subarray(n-i,n),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=r))),0},C2=(e,t)=>{let n,i,r,a,s,o,u,c,d,m,l,f,_,p,v=0,y,S,k,w,b,T,x,N,O=new Uint8Array(4),A,P,W=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Mn(e)||!e.output||!e.input&&e.avail_in!==0)return dt;n=e.state,n.mode===Pt&&(n.mode=wo),s=e.next_out,r=e.output,u=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,d=n.bits,m=o,l=u,N=bn;e:for(;;)switch(n.mode){case _a:if(n.wrap===0){n.mode=wo;break}for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.wrap&2&&c===35615){n.wbits===0&&(n.wbits=15),n.check=0,O[0]=c&255,O[1]=c>>>8&255,n.check=Ce(n.check,O,2,0),c=0,d=0,n.mode=bl;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=we;break}if((c&15)!==El){e.msg="unknown compression method",n.mode=we;break}if(c>>>=4,d-=4,x=(c&15)+8,n.wbits===0&&(n.wbits=x),x>15||x>n.wbits){e.msg="invalid window size",n.mode=we;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?Ol:Pt,c=0,d=0;break;case bl:for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.flags=c,(n.flags&255)!==El){e.msg="unknown compression method",n.mode=we;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=we;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,n.check=Ce(n.check,O,2,0)),c=0,d=0,n.mode=xl;case xl:for(;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.head&&(n.head.time=c),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,O[2]=c>>>16&255,O[3]=c>>>24&255,n.check=Ce(n.check,O,4,0)),c=0,d=0,n.mode=Ml;case Ml:for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.head&&(n.head.xflags=c&255,n.head.os=c>>8),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,n.check=Ce(n.check,O,2,0)),c=0,d=0,n.mode=Tl;case Tl:if(n.flags&1024){for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.length=c,n.head&&(n.head.extra_len=c),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,n.check=Ce(n.check,O,2,0)),c=0,d=0}else n.head&&(n.head.extra=null);n.mode=Rl;case Rl:if(n.flags&1024&&(f=n.length,f>o&&(f=o),f&&(n.head&&(x=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(i.subarray(a,a+f),x)),n.flags&512&&n.wrap&4&&(n.check=Ce(n.check,i,f,a)),o-=f,a+=f,n.length-=f),n.length))break e;n.length=0,n.mode=zl;case zl:if(n.flags&2048){if(o===0)break e;f=0;do x=i[a+f++],n.head&&x&&n.length<65536&&(n.head.name+=String.fromCharCode(x));while(x&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=Ce(n.check,i,f,a)),o-=f,a+=f,x)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Ll;case Ll:if(n.flags&4096){if(o===0)break e;f=0;do x=i[a+f++],n.head&&x&&n.length<65536&&(n.head.comment+=String.fromCharCode(x));while(x&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=Ce(n.check,i,f,a)),o-=f,a+=f,x)break e}else n.head&&(n.head.comment=null);n.mode=Nl;case Nl:if(n.flags&512){for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=we;break}c=0,d=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=Pt;break;case Ol:for(;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}e.adler=n.check=$l(c),c=0,d=0,n.mode=na;case na:if(n.havedict===0)return e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=d,x2;e.adler=n.check=1,n.mode=Pt;case Pt:if(t===E2||t===Zr)break e;case wo:if(n.last){c>>>=d&7,d-=d&7,n.mode=So;break}for(;d<3;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}switch(n.last=c&1,c>>>=1,d-=1,c&3){case 0:n.mode=Il;break;case 1:if(I2(n),n.mode=jr,t===Zr){c>>>=2,d-=2;break e}break;case 2:n.mode=Pl;break;case 3:e.msg="invalid block type",n.mode=we}c>>>=2,d-=2;break;case Il:for(c>>>=d&7,d-=d&7;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=we;break}if(n.length=c&65535,c=0,d=0,n.mode=Ao,t===Zr)break e;case Ao:n.mode=Cl;case Cl:if(f=n.length,f){if(f>o&&(f=o),f>u&&(f=u),f===0)break e;r.set(i.subarray(a,a+f),s),o-=f,a+=f,u-=f,s+=f,n.length-=f;break}n.mode=Pt;break;case Pl:for(;d<14;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.nlen=(c&31)+257,c>>>=5,d-=5,n.ndist=(c&31)+1,c>>>=5,d-=5,n.ncode=(c&15)+4,c>>>=4,d-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=we;break}n.have=0,n.mode=Fl;case Fl:for(;n.have<n.ncode;){for(;d<3;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.lens[W[n.have++]]=c&7,c>>>=3,d-=3}for(;n.have<19;)n.lens[W[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,A={bits:n.lenbits},N=Hi(k2,n.lens,0,19,n.lencode,0,n.work,A),n.lenbits=A.bits,N){e.msg="invalid code lengths set",n.mode=we;break}n.have=0,n.mode=Dl;case Dl:for(;n.have<n.nlen+n.ndist;){for(;v=n.lencode[c&(1<<n.lenbits)-1],y=v>>>24,S=v>>>16&255,k=v&65535,!(y<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(k<16)c>>>=y,d-=y,n.lens[n.have++]=k;else{if(k===16){for(P=y+2;d<P;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(c>>>=y,d-=y,n.have===0){e.msg="invalid bit length repeat",n.mode=we;break}x=n.lens[n.have-1],f=3+(c&3),c>>>=2,d-=2}else if(k===17){for(P=y+3;d<P;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=y,d-=y,x=0,f=3+(c&7),c>>>=3,d-=3}else{for(P=y+7;d<P;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=y,d-=y,x=0,f=11+(c&127),c>>>=7,d-=7}if(n.have+f>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=we;break}for(;f--;)n.lens[n.have++]=x}}if(n.mode===we)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=we;break}if(n.lenbits=9,A={bits:n.lenbits},N=Hi(Mm,n.lens,0,n.nlen,n.lencode,0,n.work,A),n.lenbits=A.bits,N){e.msg="invalid literal/lengths set",n.mode=we;break}if(n.distbits=6,n.distcode=n.distdyn,A={bits:n.distbits},N=Hi(Tm,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,A),n.distbits=A.bits,N){e.msg="invalid distances set",n.mode=we;break}if(n.mode=jr,t===Zr)break e;case jr:n.mode=Jr;case Jr:if(o>=6&&u>=258){e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=d,v2(e,l),s=e.next_out,r=e.output,u=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,d=n.bits,n.mode===Pt&&(n.back=-1);break}for(n.back=0;v=n.lencode[c&(1<<n.lenbits)-1],y=v>>>24,S=v>>>16&255,k=v&65535,!(y<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(S&&(S&240)===0){for(w=y,b=S,T=k;v=n.lencode[T+((c&(1<<w+b)-1)>>w)],y=v>>>24,S=v>>>16&255,k=v&65535,!(w+y<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=w,d-=w,n.back+=w}if(c>>>=y,d-=y,n.back+=y,n.length=k,S===0){n.mode=Vl;break}if(S&32){n.back=-1,n.mode=Pt;break}if(S&64){e.msg="invalid literal/length code",n.mode=we;break}n.extra=S&15,n.mode=Ul;case Ul:if(n.extra){for(P=n.extra;d<P;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.length+=c&(1<<n.extra)-1,c>>>=n.extra,d-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Bl;case Bl:for(;v=n.distcode[c&(1<<n.distbits)-1],y=v>>>24,S=v>>>16&255,k=v&65535,!(y<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if((S&240)===0){for(w=y,b=S,T=k;v=n.distcode[T+((c&(1<<w+b)-1)>>w)],y=v>>>24,S=v>>>16&255,k=v&65535,!(w+y<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=w,d-=w,n.back+=w}if(c>>>=y,d-=y,n.back+=y,S&64){e.msg="invalid distance code",n.mode=we;break}n.offset=k,n.extra=S&15,n.mode=Gl;case Gl:if(n.extra){for(P=n.extra;d<P;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.offset+=c&(1<<n.extra)-1,c>>>=n.extra,d-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=we;break}n.mode=Hl;case Hl:if(u===0)break e;if(f=l-u,n.offset>f){if(f=n.offset-f,f>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=we;break}f>n.wnext?(f-=n.wnext,_=n.wsize-f):_=n.wnext-f,f>n.length&&(f=n.length),p=n.window}else p=r,_=s-n.offset,f=n.length;f>u&&(f=u),u-=f,n.length-=f;do r[s++]=p[_++];while(--f);n.length===0&&(n.mode=Jr);break;case Vl:if(u===0)break e;r[s++]=n.length,u--,n.mode=Jr;break;case So:if(n.wrap){for(;d<32;){if(o===0)break e;o--,c|=i[a++]<<d,d+=8}if(l-=u,e.total_out+=l,n.total+=l,n.wrap&4&&l&&(e.adler=n.check=n.flags?Ce(n.check,r,l,s-l):Xi(n.check,r,l,s-l)),l=u,n.wrap&4&&(n.flags?c:$l(c))!==n.check){e.msg="incorrect data check",n.mode=we;break}c=0,d=0}n.mode=Wl;case Wl:if(n.wrap&&n.flags){for(;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=we;break}c=0,d=0}n.mode=Kl;case Kl:N=b2;break e;case we:N=Rm;break e;case Lm:return zm;case Nm:default:return dt}return e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=d,(n.wsize||l!==e.avail_out&&n.mode<we&&(n.mode<So||t!==kl))&&Fm(e,e.output,e.next_out,l-e.avail_out),m-=e.avail_in,l-=e.avail_out,e.total_in+=m,e.total_out+=l,n.total+=l,n.wrap&4&&l&&(e.adler=n.check=n.flags?Ce(n.check,r,l,e.next_out-l):Xi(n.check,r,l,e.next_out-l)),e.data_type=n.bits+(n.last?64:0)+(n.mode===Pt?128:0)+(n.mode===jr||n.mode===Ao?256:0),(m===0&&l===0||t===kl)&&N===bn&&(N=M2),N},P2=e=>{if(Mn(e))return dt;let t=e.state;return t.window&&(t.window=null),e.state=null,bn},F2=(e,t)=>{if(Mn(e))return dt;let n=e.state;return(n.wrap&2)===0?dt:(n.head=t,t.done=!1,bn)},D2=(e,t)=>{let n=t.length,i,r,a;return Mn(e)||(i=e.state,i.wrap!==0&&i.mode!==na)?dt:i.mode===na&&(r=1,r=Xi(r,t,n,0),r!==i.check)?Rm:(a=Fm(e,t,n,n),a?(i.mode=Lm,zm):(i.havedict=1,bn))},U2=Im,B2=Cm,G2=Om,H2=O2,V2=Pm,W2=C2,K2=P2,$2=F2,X2=D2,Y2="pako inflate (from Nodeca project)",Dt={inflateReset:U2,inflateReset2:B2,inflateResetKeep:G2,inflateInit:H2,inflateInit2:V2,inflate:W2,inflateEnd:K2,inflateGetHeader:$2,inflateSetDictionary:X2,inflateInfo:Y2};function q2(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var Z2=q2,Dm=Object.prototype.toString,{Z_NO_FLUSH:j2,Z_FINISH:J2,Z_OK:Zi,Z_STREAM_END:bo,Z_NEED_DICT:xo,Z_STREAM_ERROR:Q2,Z_DATA_ERROR:Yl,Z_MEM_ERROR:eS}=xn;function er(e){this.options=ha.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15)===0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new bm,this.strm.avail_out=0;let n=Dt.inflateInit2(this.strm,t.windowBits);if(n!==Zi)throw new Error(kn[n]);if(this.header=new Z2,Dt.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=qi.string2buf(t.dictionary):Dm.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=Dt.inflateSetDictionary(this.strm,t.dictionary),n!==Zi)))throw new Error(kn[n])}er.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?J2:j2,Dm.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),a=Dt.inflate(n,s),a===xo&&r&&(a=Dt.inflateSetDictionary(n,r),a===Zi?a=Dt.inflate(n,s):a===Yl&&(a=xo));n.avail_in>0&&a===bo&&n.state.wrap>0&&e[n.next_in]!==0;)Dt.inflateReset(n),a=Dt.inflate(n,s);switch(a){case Q2:case Yl:case xo:case eS:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===bo))if(this.options.to==="string"){let u=qi.utf8border(n.output,n.next_out),c=n.next_out-u,d=qi.buf2string(n.output,u);n.next_out=c,n.avail_out=i-c,c&&n.output.set(n.output.subarray(u,u+c),0),this.onData(d)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===Zi&&o===0)){if(a===bo)return a=Dt.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};er.prototype.onData=function(e){this.chunks.push(e)};er.prototype.onEnd=function(e){e===Zi&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=ha.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Xo(e,t){let n=new er(t);if(n.push(e),n.err)throw n.msg||kn[n.err];return n.result}function tS(e,t){return t=t||{},t.raw=!0,Xo(e,t)}var nS=er,iS=Xo,rS=tS,aS=Xo,sS=xn,oS={Inflate:nS,inflate:iS,inflateRaw:rS,ungzip:aS,constants:sS},{Deflate:cS,deflate:uS,deflateRaw:dS,gzip:lS}=_2,{Inflate:mS,inflate:fS,inflateRaw:hS,ungzip:_S}=oS,gS=cS,vS=uS,pS=dS,yS=lS,wS=mS,AS=fS,SS=hS,kS=_S,ES=xn,ql={Deflate:gS,deflate:vS,deflateRaw:pS,gzip:yS,Inflate:wS,inflate:AS,inflateRaw:SS,ungzip:kS,constants:ES},ia=2023,Yo=1,qo=2,Zo=4,jo=8,Jo=16,Qo=32,Um=64,bS=128,xS=256,ec=512,tc=1024,nc=2048,ra=4096,ic=8192,aa=16384,MS=32768,sa=65536,rc=1<<17,oa=1<<18,ca=1<<19,ac=1<<20,sc=1<<21,oc=1<<22,TS=1<<23,cc=1<<24,ua=1<<25,uc=1<<26,dc=1<<27,lc=1<<28,mc=1<<29,fc=1<<30,RS=-2147483648,hc=1,_c=2,gc=4,zS=1,LS=2,NS=128,Xn=()=>({number:0,modelindex:0,modelindex2:0,modelindex3:0,modelindex4:0,frame:0,skinnum:0,effects:0,renderfx:0,origin:{x:0,y:0,z:0},old_origin:{x:0,y:0,z:0},angles:{x:0,y:0,z:0},sound:0,event:0,solid:0,bits:0,bitsHigh:0,alpha:0,scale:0,instanceBits:0,loopVolume:0,loopAttenuation:0,owner:0,oldFrame:0}),Zl=()=>({pm_type:0,origin:{x:0,y:0,z:0},velocity:{x:0,y:0,z:0},pm_time:0,pm_flags:0,gravity:0,delta_angles:{x:0,y:0,z:0},viewoffset:{x:0,y:0,z:0},viewangles:{x:0,y:0,z:0},kick_angles:{x:0,y:0,z:0},gun_index:0,gun_frame:0,gun_offset:{x:0,y:0,z:0},gun_angles:{x:0,y:0,z:0},blend:[0,0,0,0],fov:0,rdflags:0,stats:new Array(32).fill(0),gunskin:0,gunrate:0,damage_blend:[0,0,0,0],team_id:0}),vc=class Bm{constructor(t,n){this.protocolVersion=0,this.isDemo=zS,this.stream=t,this.handler=n}setProtocolVersion(t){this.protocolVersion=t}getProtocolVersion(){return this.protocolVersion}translateCommand(t){return this.protocolVersion===0&&(t===7||t===12)?te.serverdata:this.protocolVersion===ia?t:this.protocolVersion===34||this.protocolVersion===25?t<=te.frame?t:t===22?te.playerinfo:t===23?te.packetentities:te.bad:(this.protocolVersion===0,t)}parseMessage(){for(;this.stream.hasMore();){let t=this.stream.readByte();if(t===-1)break;let n=t;t=this.translateCommand(t);try{switch(t){case te.bad:return;case te.nop:break;case te.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case te.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case te.print:this.parsePrint();break;case te.serverdata:this.parseServerData();break;case te.configstring:this.parseConfigString();break;case te.spawnbaseline:this.parseSpawnBaseline();break;case te.centerprint:this.parseCenterPrint();break;case te.download:this.parseDownload();break;case te.frame:this.parseFrame();break;case te.packetentities:this.parsePacketEntities(!1);break;case te.deltapacketentities:this.parsePacketEntities(!0);break;case te.playerinfo:this.parsePlayerState();break;case te.stufftext:this.parseStuffText();break;case te.layout:this.parseLayout();break;case te.inventory:this.parseInventory();break;case te.sound:this.parseSound();break;case te.muzzleflash:this.parseMuzzleFlash();break;case te.muzzleflash2:this.parseMuzzleFlash2();break;case te.temp_entity:this.parseTempEntity();break;case te.splitclient:this.parseSplitClient();break;case te.configblast:this.parseConfigBlast();break;case te.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case te.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case te.damage:this.parseDamage();break;case te.locprint:this.parseLocPrint();break;case te.fog:this.parseFog();break;case te.waitingforplayers:this.parseWaitingForPlayers();break;case te.bot_chat:this.parseBotChat();break;case te.poi:this.parsePoi();break;case te.help_path:this.parseHelpPath();break;case te.muzzleflash3:this.parseMuzzleFlash3();break;case te.achievement:this.parseAchievement();break;default:console.warn(`Unknown server command: ${n} (translated: ${t}) at offset ${this.stream.getPosition()-1}`);return}}catch(i){console.warn(`Error parsing command ${t}: ${i.message}`);return}}}parsePrint(){let t=this.stream.readByte(),n=this.stream.readString();this.handler&&this.handler.onPrint(t,n)}parseStuffText(){let t=this.stream.readString();this.handler&&this.handler.onStuffText(t)}parseLayout(){let t=this.stream.readString();this.handler&&this.handler.onLayout(t)}parseCenterPrint(){let t=this.stream.readString();this.handler&&this.handler.onCenterPrint(t)}parseServerData(){if(this.protocolVersion=this.stream.readLong(),this.protocolVersion===ia){let t=this.stream.readLong(),n=this.stream.readByte();this.isDemo=n;let i=this.stream.readByte(),r=this.stream.readString(),a=this.stream.readShort();if(a===-2){let o=this.stream.readShort();for(let u=0;u<o;u++)this.stream.readShort();a=0}else a===-1&&(a=-1);let s=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,0,r,a,s,i,n):console.log(`Server Data (Rerelease): Protocol ${this.protocolVersion}, Level ${s}, Tick ${i}`)}else{let t=this.stream.readLong();this.isDemo=this.stream.readByte();let n=0,i=this.stream.readString(),r=this.stream.readShort(),a=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,n,i,r,a):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${a}, GameDir ${i}`)}}parseConfigString(){let t=this.stream.readShort(),n=this.stream.readString();this.handler&&this.handler.onConfigString(t,n)}parseSplitClient(){let t=this.stream.readByte();this.handler&&this.handler.onSplitClient&&this.handler.onSplitClient(t)}parseConfigBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=ql.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new To(r.buffer);for(;a.hasMore();){let s=a.readUShort(),o=a.readString();this.handler&&this.handler.onConfigString(s,o)}}catch(r){console.error("svc_configblast: Failed to decompress data",r)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=ql.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new To(r.buffer),s=new Bm(a,this.handler);for(;a.hasMore();)s.parseSpawnBaseline()}catch(r){console.error("svc_spawnbaselineblast: Failed to decompress data",r)}}parseLocPrint(){let t=this.stream.readByte(),n=this.stream.readString(),i=this.stream.readByte(),r=[];for(let a=0;a<i;a++)r.push(this.stream.readString());this.handler&&this.handler.onLocPrint&&this.handler.onLocPrint(t,n,r)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler&&this.handler.onWaitingForPlayers&&this.handler.onWaitingForPlayers(t)}parseBotChat(){let t=this.stream.readString(),n=this.stream.readShort(),i=this.stream.readString();this.handler&&this.handler.onBotChat&&this.handler.onBotChat(i)}parsePoi(){let t=this.stream.readUShort(),n=this.stream.readUShort(),i={x:0,y:0,z:0};this.stream.readPos(i);let r=this.stream.readUShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler&&this.handler.onPoi&&this.handler.onPoi(s,i)}parseHelpPath(){let t=this.stream.readByte(),n={x:0,y:0,z:0};this.stream.readPos(n);let i={x:0,y:0,z:0};this.stream.readDir(i),this.handler&&this.handler.onHelpPath&&this.handler.onHelpPath(n)}parseAchievement(){let t=this.stream.readString();this.handler&&this.handler.onAchievement&&this.handler.onAchievement(t)}parseDownload(){let t=this.stream.readShort(),n=this.stream.readByte(),i;t>0&&(i=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,n,i)}parseInventory(){let n=new Array(256);for(let i=0;i<256;i++)n[i]=this.stream.readShort();this.handler&&this.handler.onInventory(n)}parseSound(){let t=this.stream.readByte(),n=this.stream.readByte(),i,r,a,s,o;if(t&1&&(i=this.stream.readByte()),t&2&&(r=this.stream.readByte()),t&16&&(a=this.stream.readByte()),t&8&&(s=this.stream.readShort()),t&4){let u={x:0,y:0,z:0};this.stream.readPos(u),o=u}this.handler&&this.handler.onSound(t,n,i,r,a,s,o)}parseMuzzleFlash(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(t,n)}parseMuzzleFlash2(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(t,n)}parseMuzzleFlash3(){let t=this.stream.readShort(),n=this.stream.readShort();this.handler&&this.handler.onMuzzleFlash3&&this.handler.onMuzzleFlash3(t,n)}parseFog(){let t=this.stream.readByte();if(t&128){let i=this.stream.readByte();t|=i<<8}let n={};t&1&&(n.density=this.stream.readFloat(),n.skyfactor=this.stream.readByte()),t&2&&(n.red=this.stream.readByte()),t&4&&(n.green=this.stream.readByte()),t&8&&(n.blue=this.stream.readByte()),t&16&&(n.time=this.stream.readShort()),t&32&&(n.hf_falloff=this.stream.readFloat()),t&64&&(n.hf_density=this.stream.readFloat()),t&256&&(n.hf_start_r=this.stream.readByte()),t&512&&(n.hf_start_g=this.stream.readByte()),t&1024&&(n.hf_start_b=this.stream.readByte()),t&2048&&(n.hf_start_dist=this.stream.readLong()),t&4096&&(n.hf_end_r=this.stream.readByte()),t&8192&&(n.hf_end_g=this.stream.readByte()),t&16384&&(n.hf_end_b=this.stream.readByte()),t&32768&&(n.hf_end_dist=this.stream.readLong()),this.handler&&this.handler.onFog&&this.handler.onFog(n)}parseDamage(){let t=this.stream.readByte(),n=[];for(let i=0;i<t;i++){let r=this.stream.readByte(),a={x:0,y:0,z:0};this.stream.readDir(a);let s=r&31,o=(r&32)!==0,u=(r&64)!==0,c=(r&128)!==0;n.push({damage:s,health:o,armor:u,power:c,dir:a})}this.handler&&this.handler.onDamage&&this.handler.onDamage(n)}parseTempEntity(){let t=this.stream.readByte(),n={x:0,y:0,z:0},i={x:0,y:0,z:0},r={x:0,y:0,z:0},a,s,o,u,c;switch(t){case K.EXPLOSION1:case K.EXPLOSION2:case K.ROCKET_EXPLOSION:case K.GRENADE_EXPLOSION:case K.ROCKET_EXPLOSION_WATER:case K.GRENADE_EXPLOSION_WATER:case K.BFG_EXPLOSION:case K.BFG_BIGEXPLOSION:case K.BOSSTPORT:case K.PLASMA_EXPLOSION:case K.PLAIN_EXPLOSION:case K.CHAINFIST_SMOKE:case K.TRACKER_EXPLOSION:case K.TELEPORT_EFFECT:case K.DBALL_GOAL:case K.NUKEBLAST:case K.WIDOWSPLASH:case K.EXPLOSION1_BIG:case K.EXPLOSION1_NP:this.stream.readPos(n);break;case K.GUNSHOT:case K.BLOOD:case K.BLASTER:case K.SHOTGUN:case K.SPARKS:case K.BULLET_SPARKS:case K.SCREEN_SPARKS:case K.SHIELD_SPARKS:case K.BLASTER2:case K.FLECHETTE:case K.MOREBLOOD:case K.ELECTRIC_SPARKS:case K.HEATBEAM_SPARKS:case K.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(r);break;case K.SPLASH:case K.LASER_SPARKS:case K.WELDING_SPARKS:case K.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte();break;case K.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(i)):(this.stream.readPos(n),this.stream.readDir(r));break;case K.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(r)):(this.stream.readPos(n),this.stream.readPos(i));break;case K.RAILTRAIL:case K.BUBBLETRAIL:case K.BFG_LASER:case K.DEBUGTRAIL:case K.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(i);break;case K.PARASITE_ATTACK:case K.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case K.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;case K.LIGHTNING:u=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case K.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case K.FORCEWALL:this.stream.readPos(n),this.stream.readPos(i),s=this.stream.readByte();break;case K.STEAM:let d=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte(),this.stream.readShort(),d!==-1&&this.stream.readLong();break;case K.WIDOWBEAMOUT:this.stream.readShort();case K.HEATBEAM:case K.MONSTER_HEATBEAM:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;default:break}this.handler&&this.handler.onTempEntity(t,n,i,r,a,s,o,u,c)}parseSpawnBaseline(){let t=this.parseEntityBits(),n=Xn();this.parseDelta(Xn(),n,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(n)}parseFrame(){let t=this.stream.readLong(),n=this.stream.readLong(),i=this.stream.readByte(),r=this.stream.readByte(),a=this.stream.readData(r),s=this.stream.readByte();if(s=this.translateCommand(s),s!==te.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s} (translated)`);let o=this.parsePlayerState(),u=this.stream.readByte();if(u=this.translateCommand(u),u!==te.packetentities)throw new Error(`Expected svc_packetentities after svc_playerinfo, got ${u} (translated)`);let c=this.collectPacketEntities();if(this.isDemo===NS){let d=this.stream.readByte();for(let m=0;m<d;m++)this.stream.readByte()}this.isDemo===LS&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:i,areaBytes:r,areaBits:a,playerState:o,packetEntities:{delta:!0,entities:c}})}parsePlayerState(){let t=Zl(),n=this.stream.readShort();n&1&&(t.pm_type=this.stream.readByte()),n&2&&(t.origin.x=this.stream.readShort()*.125,t.origin.y=this.stream.readShort()*.125,t.origin.z=this.stream.readShort()*.125),n&4&&(t.velocity.x=this.stream.readShort()*.125,t.velocity.y=this.stream.readShort()*.125,t.velocity.z=this.stream.readShort()*.125),n&8&&(t.pm_time=this.stream.readByte()),n&16&&(t.pm_flags=this.stream.readByte()),n&32&&(t.gravity=this.stream.readShort()),n&64&&(t.delta_angles.x=this.stream.readShort()*(180/32768),t.delta_angles.y=this.stream.readShort()*(180/32768),t.delta_angles.z=this.stream.readShort()*(180/32768)),n&128&&(t.viewoffset.x=this.stream.readChar()*.25,t.viewoffset.y=this.stream.readChar()*.25,t.viewoffset.z=this.stream.readChar()*.25),n&256&&(t.viewangles.x=this.stream.readAngle16(),t.viewangles.y=this.stream.readAngle16(),t.viewangles.z=this.stream.readAngle16()),n&512&&(t.kick_angles.x=this.stream.readChar()*.25,t.kick_angles.y=this.stream.readChar()*.25,t.kick_angles.z=this.stream.readChar()*.25),n&4096&&(t.gun_index=this.stream.readByte()),n&8192&&(t.gun_frame=this.stream.readByte(),t.gun_offset.x=this.stream.readChar()*.25,t.gun_offset.y=this.stream.readChar()*.25,t.gun_offset.z=this.stream.readChar()*.25,t.gun_angles.x=this.stream.readChar()*.25,t.gun_angles.y=this.stream.readChar()*.25,t.gun_angles.z=this.stream.readChar()*.25),n&1024&&(t.blend[0]=this.stream.readByte(),t.blend[1]=this.stream.readByte(),t.blend[2]=this.stream.readByte(),t.blend[3]=this.stream.readByte()),n&2048&&(t.fov=this.stream.readByte()),n&16384&&(t.rdflags=this.stream.readByte());let i=this.stream.readLong();for(let r=0;r<32;r++)i&1<<r&&(t.stats[r]=this.stream.readShort());return t}parsePacketEntities(t){let n=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:Zl(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=Xn();this.parseDelta(Xn(),i,n.number,n.bits,n.bitsHigh),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&bS&&(t|=this.stream.readByte()<<8),t&MS&&(t|=this.stream.readByte()<<16),t&TS&&(t|=this.stream.readByte()<<24);let n=0;t&RS&&(n=this.stream.readByte());let i;return t&xS?i=this.stream.readShort():i=this.stream.readByte(),{number:i,bits:t,bitsHigh:n}}parseDelta(t,n,i,r,a=0){n.number=t.number,n.modelindex=t.modelindex,n.modelindex2=t.modelindex2,n.modelindex3=t.modelindex3,n.modelindex4=t.modelindex4,n.frame=t.frame,n.skinnum=t.skinnum,n.effects=t.effects,n.renderfx=t.renderfx,n.origin.x=t.origin.x,n.origin.y=t.origin.y,n.origin.z=t.origin.z,n.old_origin.x=t.origin.x,n.old_origin.y=t.origin.y,n.old_origin.z=t.origin.z,n.angles.x=t.angles.x,n.angles.y=t.angles.y,n.angles.z=t.angles.z,n.sound=t.sound,n.event=t.event,n.solid=t.solid,n.alpha=t.alpha,n.scale=t.scale,n.instanceBits=t.instanceBits,n.loopVolume=t.loopVolume,n.loopAttenuation=t.loopAttenuation,n.owner=t.owner,n.oldFrame=t.oldFrame,n.number=i,n.bits=r,n.bitsHigh=a,r&nc&&(n.modelindex=this.stream.readByte()),r&ac&&(n.modelindex2=this.stream.readByte()),r&sc&&(n.modelindex3=this.stream.readByte()),r&oc&&(n.modelindex4=this.stream.readByte()),r&Jo&&(n.frame=this.stream.readByte()),r&rc&&(n.frame=this.stream.readShort()),r&sa&&r&ua?n.skinnum=this.stream.readLong():r&sa?n.skinnum=this.stream.readByte():r&ua&&(n.skinnum=this.stream.readShort()),r&aa&&r&ca?n.effects=this.stream.readLong():r&aa?n.effects=this.stream.readByte():r&ca&&(n.effects=this.stream.readShort()),r&ra&&r&oa?n.renderfx=this.stream.readLong():r&ra?n.renderfx=this.stream.readByte():r&oa&&(n.renderfx=this.stream.readShort()),r&Yo&&(n.origin.x=this.stream.readCoord()),r&qo&&(n.origin.y=this.stream.readCoord()),r&ec&&(n.origin.z=this.stream.readCoord()),r&tc&&(n.angles.x=this.stream.readAngle()),r&Zo&&(n.angles.y=this.stream.readAngle()),r&jo&&(n.angles.z=this.stream.readAngle()),r&cc&&this.stream.readPos(n.old_origin),r&uc&&(n.sound=this.stream.readByte()),r&Qo?n.event=this.stream.readByte():n.event=0,r&dc&&(n.solid=this.stream.readShort()),r&ic&&(n.alpha=this.stream.readByte()/255),r&lc&&(n.scale=this.stream.readFloat()),r&mc&&(n.instanceBits=this.stream.readLong()),r&fc&&(n.loopVolume=this.stream.readByte()/255),a&hc&&(n.loopAttenuation=this.stream.readByte()/255),a&_c&&(n.owner=this.stream.readShort()),a&gc&&(n.oldFrame=this.stream.readShort())}},tr=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(tr||{}),Gm=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.currentProtocolVersion=0,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new Mw(e),this.state=0,this.accumulatedTime=0,this.currentProtocolVersion=0}play(){this.reader&&(this.state=1)}pause(){this.state===1&&(this.state=2)}stop(){this.state=0,this.reader&&this.reader.reset(),this.accumulatedTime=0,this.currentProtocolVersion=0}setFrameDuration(e){this.frameDuration=e}setSpeed(e){this.playbackSpeed=Math.max(.1,Math.min(e,16))}getSpeed(){return this.playbackSpeed}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.processNextFrame())return;this.accumulatedTime-=this.frameDuration}}stepForward(){this.reader&&this.processNextFrame()}stepBackward(){console.warn("stepBackward not implemented")}processNextFrame(){if(!this.reader||!this.reader.hasMore())return this.state=3,!1;let e=this.reader.readNextBlock();if(!e)return this.state=3,!1;let t=new vc(e.data,this.handler);return t.setProtocolVersion(this.currentProtocolVersion),t.parseMessage(),this.currentProtocolVersion=t.getProtocolVersion(),!0}getState(){return this.state}getCurrentTime(){return this.accumulatedTime}};var OS=Object.defineProperty,Hm=(e,t)=>{for(var n in t)OS(e,n,{get:t[n],enumerable:!0})},nn={x:0,y:0,z:0};var $F=Math.PI/180;function ga(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function Vm(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function ii(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function ir(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function IS(e){return ir(e,e)}function Rn(e){return Math.sqrt(IS(e))}function Wm(e){let t=Rn(e);return t===0?e:ii(e,1/t)}var Km=0,$m=1,Xm=2,CS=Math.PI/180,XF=180/Math.PI;function pc(e,t){switch(t){case Km:return e.x;case $m:return e.y;case Xm:default:return e.z}}function yc(e){return e*CS}function ni(e){let t=e%360;return t<0?360+t:t}function pa(e){let t=yc(pc(e,$m)),n=yc(pc(e,Km)),i=yc(pc(e,Xm)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),u=Math.sin(i),c=Math.cos(i),d={x:o*a,y:o*r,z:-s},m={x:-u*s*a-c*-r,y:-u*s*r-c*a,z:-u*o},l={x:c*s*a-u*-r,y:c*s*r-u*a,z:c*o};return{forward:d,right:m,up:l}}var ti=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var Mt=1,rn=2;var Sc=8,kc=16,PS=32;var FS=16384;var ya=65536,Ym=1<<17,DS=1<<18,US=1<<19,BS=1<<20,GS=1<<21,HS=1<<22,VS=1<<23,YF=1<<24,wa=1<<25,WS=1<<26,qF=1<<27,ZF=1<<28,jF=1<<29,Aa=1<<30,JF=1<<31;var QF=1<<25,eD=1<<28,tD=1<<29,nD=1<<30,iD=1<<31;var rD=Mt|rn,aD=Mt|ya|rn|wa|Aa,sD=Mt|ya|rn,oD=Mt|Ym|rn|wa|Aa,cD=PS|Sc|kc,uD=Mt|kc|Sc,KS=Mt|wa|Aa|rn|WS,dD=DS|US|BS|GS|HS|VS,lD=Mt|Sc|kc|wa|Aa,mD=Mt|ya|rn,fD=Mt|rn,hD=Mt|ya|rn|Ym,_D=KS|FS;var gD=Number.MAX_SAFE_INTEGER-1;var rr=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(rr||{});var qm=256;var $S=256,ar=8192,sr=2048,or=512,XS=256,YS=qm*2,qS=256,wc=32;var be=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+ar]="Sounds",e[e.Images=e.Sounds+sr]="Images",e[e.Lights=e.Images+or]="Lights",e[e.ShadowLights=e.Lights+$S]="ShadowLights",e[e.Items=e.ShadowLights+qS]="Items",e[e.PlayerSkins=e.Items+XS]="PlayerSkins",e[e.General=e.PlayerSkins+qm]="General",e[e.WheelWeapons=e.General+YS]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+wc]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+wc]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+wc]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(be||{}),vD=be.MaxConfigStrings;var ZS={};Hm(ZS,{addReplayFrame:()=>ek,createReplaySession:()=>QS,deserializeReplay:()=>JS,serializeReplay:()=>jS});function jS(e){return JSON.stringify(e,null,2)}function JS(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function QS(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function ek(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var cr=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(cr||{});var Ut=(e=>(e[e.Ducked=1]="Ducked",e[e.JumpHeld=2]="JumpHeld",e[e.OnGround=4]="OnGround",e[e.TimeWaterJump=8]="TimeWaterJump",e[e.TimeLand=16]="TimeLand",e[e.TimeTeleport=32]="TimeTeleport",e[e.NoPositionalPrediction=64]="NoPositionalPrediction",e[e.OnLadder=128]="OnLadder",e[e.NoAngularPrediction=256]="NoAngularPrediction",e[e.IgnorePlayerCollision=512]="IgnorePlayerCollision",e[e.TimeTrick=1024]="TimeTrick",e))(Ut||{});function ri(e,t){return(e&t)!==0}var Sa=(e=>(e[e.Normal=0]="Normal",e[e.Grapple=1]="Grapple",e[e.NoClip=2]="NoClip",e[e.Spectator=3]="Spectator",e[e.Dead=4]="Dead",e[e.Gib=5]="Gib",e[e.Freeze=6]="Freeze",e))(Sa||{}),Tt=(e=>(e[e.None=0]="None",e[e.Attack=1]="Attack",e[e.Use=2]="Use",e[e.Holster=4]="Holster",e[e.Jump=8]="Jump",e[e.Crouch=16]="Crouch",e[e.Any=128]="Any",e))(Tt||{});function tk(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:u,pmWaterFriction:c}=e,d=Rn(t);if(d<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let _=d<u?u:d;m+=_*o*n}s>0&&!a&&(m+=d*c*s*n);let l=d-m;if(l<0&&(l=0),l===d)return t;let f=l/d;return ii(t,f)}function nk(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=ir(t,n),o=i-s;if(o<=0)return t;let u=r*a*i;return u>o&&(u=o),{x:t.x+n.x*u,y:t.y+n.y*u,z:t.z+n.z*u}}function ik(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=Rn(a);if(s>r){let o=r/s;a=ii(a,o),s=r}return{wishdir:s===0?a:Wm(a),wishspeed:s}}function rk(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=ga(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=ga(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=ga(a,{x:0,y:0,z:-60}):a=ga(a,{x:0,y:0,z:10});let s=Rn(a);if(s>r){let o=r/s;a=ii(a,o),s=r}return s*=.5,{wishdir:s===0?a:Wm(a),wishspeed:s}}function ak(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function sk(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function Ec(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=ak(n,i),r={...r,x:sk(r.x)});let a=pa(r);return{viewangles:r,...a}}var Zm=200,jm=200,Jm=200,Qm=140,e0=150,t0=3;function ok(e){let t=ni(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function n0(e,t){return{x:ok(e.x+t.x),y:ni(e.y+t.y),z:ni(e.z+t.z)}}function i0(e,t){let n=t.sensitivityX??t.sensitivity,i=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*i,y:e.deltaX*n,z:0}}var zn=(e=>(e[e.bad=0]="bad",e[e.nop=1]="nop",e[e.move=2]="move",e[e.userinfo=3]="userinfo",e[e.stringcmd=4]="stringcmd",e))(zn||{});var r0=64;var a0=0,s0=1,o0=2,c0=3,u0=4,d0=5,l0=6,m0=7,f0=8;var h0=11,_0=12,g0=13;function ck(e,t,n){let i=Math.floor(n/2),r=n%2!==0,a=t+i,s=e[a]||0;if(r){let o=e[a+1]||0,u=s>>>8&255;return(o&255)<<8|u}else return s&65535}function v0(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return(ck(e,t,a)&o)>>>s}var ur=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(ur||{}),Xe=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(Xe||{}),p0=12,y0=9,pD=Math.ceil(p0*y0/16),w0=23,A0=2,yD=Math.ceil(w0*A0/16),uk={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,bandolier:10,ammo_pack:10,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22,tag_token:-1};function S0(e,t){return t<0||t>=p0?0:v0(e,34,t,y0)}function ka(e,t){let n;return typeof t=="number"?n=t:n=uk[t],n===void 0||n<0||n>=w0?0:v0(e,41,n,A0)}function k0(e,t){e.writeByte(t.msec),e.writeByte(t.buttons),e.writeAngle16(t.angles.x),e.writeAngle16(t.angles.y),e.writeAngle16(t.angles.z),e.writeShort(t.forwardmove),e.writeShort(t.sidemove),e.writeShort(t.upmove),e.writeByte(0),e.writeByte(0)}var lt=(e=>(e[e.MinLight=1]="MinLight",e[e.ViewerModel=2]="ViewerModel",e[e.WeaponModel=4]="WeaponModel",e[e.FullBright=8]="FullBright",e[e.DepthHack=16]="DepthHack",e[e.Translucent=32]="Translucent",e[e.FrameLerp=64]="FrameLerp",e[e.Beam=128]="Beam",e[e.CustomLight=256]="CustomLight",e[e.Glow=512]="Glow",e[e.ShellRed=1024]="ShellRed",e[e.ShellGreen=2048]="ShellGreen",e[e.ShellBlue=4096]="ShellBlue",e[e.IrVisible=32768]="IrVisible",e[e.ShellDouble=65536]="ShellDouble",e[e.ShellHalfDam=131072]="ShellHalfDam",e[e.MinLightPlus=262144]="MinLightPlus",e[e.ExtraLight=524288]="ExtraLight",e[e.BeamLightning=1048576]="BeamLightning",e))(lt||{});var dk={};Hm(dk,{U_ANGLE1:()=>vk,U_ANGLE2:()=>pk,U_ANGLE3:()=>yk,U_EFFECTS:()=>Sk,U_EVENT:()=>bk,U_FRAME:()=>wk,U_MODEL:()=>mk,U_MODEL2:()=>Mk,U_MODEL3:()=>Tk,U_MODEL4:()=>Rk,U_MOREBITS:()=>xk,U_NUMBER:()=>lk,U_ORIGIN1:()=>hk,U_ORIGIN2:()=>_k,U_ORIGIN3:()=>gk,U_REMOVE:()=>zk,U_RENDERFX:()=>kk,U_SKIN:()=>Ak,U_SOLID:()=>Ek,U_SOUND:()=>fk});var lk=1,mk=2,fk=4,hk=8,_k=16,gk=32,vk=64,pk=128,yk=256,wk=512,Ak=1024,Sk=2048,kk=4096,Ek=8192,bk=16384,xk=32768,Mk=1,Tk=2,Rk=4,zk=32768,nr=.025,Ac=33554432,va={None:0,Feet:1,Waist:2,Under:3},Lk=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},Nk=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&Ac))return{...e,waterLevel:va.None};let s=va.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&Ac){s=va.Waist;let c=e.origin.z+22;n.z=c,t(n)&Ac&&(s=va.Under)}return{...e,waterLevel:s}},bc=(e,t,n,i)=>{let r={...e};r=Lk(r,n),r=Nk(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:u,viewAngles:c}=r,d=u>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:l}=pa(d),f=tk({velocity:s,frametime:nr,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:u,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),_=u>=2?rk({forward:m,right:l,cmd:t,maxSpeed:320}):ik({forward:m,right:l,cmd:t,maxSpeed:320}),p=nk({velocity:f,wishdir:_.wishdir,wishspeed:_.wishspeed,accel:o||u>=2?10:1,frametime:nr}),v=n(a,{x:a.x+p.x*nr,y:a.y+p.y*nr,z:a.z+p.z*nr});return{...r,origin:v.endpos,velocity:p}},E0=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=ti[t];e.x=n[0],e.y=n[1],e.z=n[2]}},xc=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<ti.length;i++){let r=ti[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},dr=class{constructor(e=1024){this.buffer=new Uint8Array(e),this.view=new DataView(this.buffer.buffer),this.offset=0}ensureCapacity(e){if(this.offset+e>this.buffer.length){let t=Math.max(this.buffer.length*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer)}}getData(){return this.buffer.slice(0,this.offset)}writeByte(e){this.ensureCapacity(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureCapacity(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureCapacity(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeUShort(e){this.ensureCapacity(2),this.view.setUint16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureCapacity(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureCapacity(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length+1;this.ensureCapacity(t);for(let n=0;n<e.length;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+e.length,0),this.offset+=t}writeData(e){this.ensureCapacity(e.length),this.buffer.set(e,this.offset),this.offset+=e.length}writeCoord(e){this.writeShort(Math.round(e*8))}writeAngle(e){this.writeByte(Math.round(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.round(e*65536/360))}writeDir(e,t,n){let i=0,r=-999999,a=Math.sqrt(e*e+t*t+n*n);if(a>0){e/=a,t/=a,n/=a;for(let s=0;s<162;s++){let o=e*ti[s][0]+t*ti[s][1]+n*ti[s][2];o>r&&(r=o,i=s)}}this.writeByte(i)}},Tn=class Ve{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new xc(Ve.MAX_RELIABLE_BUFFER);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=0,i=!1,r=0;this.reliableLength>0&&(this.reliableLength>Ve.FRAGMENT_SIZE?(i=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),n=this.reliableLength-this.fragmentSendOffset,n>Ve.FRAGMENT_SIZE&&(n=Ve.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=n):n=this.reliableLength);let a=Ve.PACKET_HEADER,s=n>0?2+(i?8:0):0,o=t?t.length:0;a+s+n+o>Ve.MAX_MSGLEN&&(o=Ve.MAX_MSGLEN-a-s-n,o<0&&(o=0));let u=new ArrayBuffer(a+s+n+o),c=new DataView(u),d=new Uint8Array(u),m=this.outgoingSequence;n>0&&(m|=2147483648,(this.outgoingReliableSequence&1)!==0&&(m|=1073741824)),c.setUint32(0,m,!0);let l=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(l|=2147483648),c.setUint32(4,l,!0),c.setUint16(8,this.qport,!0);let f=a;if(n>0){let _=n;i&&(_|=32768),c.setUint16(f,_,!0),f+=2,i&&(c.setUint32(f,r,!0),f+=4,c.setUint32(f,this.reliableLength,!0),f+=4);let v=this.reliableMessage.getBuffer().subarray(r,r+n);d.set(v,f),f+=n}if(t&&o>0){let _=t.slice(0,o);d.set(_,f)}return d}process(t){if(t.length<Ve.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,u=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let _=u?1:0,p=this.outgoingReliableSequence&1;_!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}let c=(i&2147483648)!==0,d=(i&1073741824)!==0?1:0,m=Ve.PACKET_HEADER,l=null;if(c){if(m+2>t.byteLength)return null;let _=n.getUint16(m,!0);m+=2;let p=(_&32768)!==0;_&=32767;let v=this.incomingReliableSequence&1;if(d===v)if(p){if(m+8>t.byteLength)return null;let y=n.getUint32(m,!0);m+=4;let S=n.getUint32(m,!0);if(m+=4,S>Ve.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${S} > ${Ve.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==S)&&(this.fragmentBuffer=new Uint8Array(S),this.fragmentLength=S,this.fragmentReceived=0),m+_>t.byteLength)return null;let k=t.subarray(m,m+_);y===this.fragmentReceived&&y+_<=S&&(this.fragmentBuffer.set(k,y),this.fragmentReceived+=_,this.fragmentReceived>=S&&(l=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,m+_>t.byteLength)return null;l=t.slice(m,m+_)}m+=_}let f=t.slice(m);if(l&&l.length>0){let _=l.length+f.length,p=new Uint8Array(_);return p.set(l,0),p.set(f,l.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Ve.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Ve.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Ve.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>Ve.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}};Tn.MAX_MSGLEN=1400;Tn.FRAGMENT_SIZE=1024;Tn.PACKET_HEADER=10;Tn.HEADER_OVERHEAD=Tn.PACKET_HEADER+2;Tn.MAX_RELIABLE_BUFFER=262144;var b0=Tn;var x0=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(x0||{}),wD=Object.keys(x0).length/2;var Ea=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],M0={blaster:null,shotgun:1,supershotgun:1,machinegun:0,chaingun:0,grenades:3,grenadelauncher:3,rocketlauncher:2,hyperblaster:4,railgun:5,bfg10k:4,grapple:null,chainfist:null,etf_rifle:8,prox_launcher:11,ionripper:4,plasmabeam:4,phalanx:6,disruptor:10,trap:7};var Ok=Object.defineProperty,Ik=(e,t)=>{for(var n in t)Ok(e,n,{get:t[n],enumerable:!0})},xa=null,ba=[1,1,1,1],T0=["ch1","ch2","ch3"],Mc=[null,null,null],Ck=e=>{for(let t=0;t<T0.length;t++){let n=T0[t];try{Mc[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{Mc[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
170
|
+
`)}}}xa=Mc[0]},Pk=(e,t,n)=>{if(xa){let i=e.Draw_GetPicSize(xa),r=(t-i.width)/2,a=(n-i.height)/2;e.SCR_DrawColorPic(r,a,xa,{x:ba[0],y:ba[1],z:ba[2]},ba[3])}},I0=new Map,Fk=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],Dk=e=>{for(let t of Fk)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);I0.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
171
|
+
`)}},Uk=new Map,Bk=["d_left","d_right","d_up","d_down"],Gk=e=>{for(let t of Bk)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);Uk.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
172
|
+
`)}},Hk=(e,t,n,i)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},R0=3e3,z0=5e3,L0=4,Vk=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:R0}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:z0}),this.notifyMessages.length>L0&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:R0}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:z0}),this.notifyMessages.length>L0&&this.notifyMessages.shift()}clearNotifications(){this.notifyMessages=[]}clearCenterPrint(){this.centerPrintMsg=null}drawCenterPrint(e,t,n){if(!this.centerPrintMsg)return;if(t>this.centerPrintMsg.startTime+this.centerPrintMsg.duration){this.centerPrintMsg=null;return}let i=n.CENTER_PRINT_Y;e.SCR_DrawCenterString(i,this.centerPrintMsg.text)}drawNotifications(e,t){for(;this.notifyMessages.length>0&&t>this.notifyMessages[0].startTime+this.notifyMessages[0].duration;)this.notifyMessages.shift();let n=10;for(let i of this.notifyMessages)e.SCR_DrawFontString(10,n,i.text),n+=10}},Wk=3e3,Kk=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:Wk}}drawSubtitles(e,t){if(!this.subtitle)return;if(t>this.subtitle.startTime+this.subtitle.duration){this.subtitle=null;return}e.SCR_DrawCenterString(200,this.subtitle.text)}},$k=(e,t,n,i)=>{if(!t.blend)return;let[r,a,s,o]=t.blend},Xk=(e,t,n,i)=>{if(!t.pickupIcon)return;let r=I0.get(t.pickupIcon);if(r){let a=e.Draw_GetPicSize(r),s=n-a.width-10,o=i-a.height-10;e.SCR_DrawPic(s,o,r)}},Tc=(e,t,n,i,r,a,s)=>{let o=Math.abs(i).toString();for(let u=0;u<o.length;u++){let c=parseInt(o[u]),d=r[c];d&&(s?e.SCR_DrawColorPic(t+u*a,n,d,{x:s[0],y:s[1],z:s[2]},s[3]):e.SCR_DrawPic(t+u*a,n,d))}},Yk=(e,t,n,i,r,a)=>{let s=t.stats[Xe.STAT_HEALTH]||0,o=t.stats[Xe.STAT_ARMOR]||0,u=t.stats[Xe.STAT_AMMO]||0,c=t.stats[Xe.STAT_ARMOR_ICON]||0,d;if(s<=25&&(d=[1,0,0,1]),n.length>0&&(Tc(e,a.HEALTH_X,a.HEALTH_Y,s,n,i,d),Tc(e,a.ARMOR_X,a.ARMOR_Y,o,n,i),Tc(e,a.AMMO_X,a.AMMO_Y,u,n,i)),c>0){let m=e.get_configstring(be.Images+c);if(m){let l=e.Draw_RegisterPic(m);l&&e.SCR_DrawPic(a.ARMOR_X-24,a.ARMOR_Y-2,l)}}if(t.pickupIcon){let m=e.Draw_RegisterPic(t.pickupIcon);m&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,m)}else{let m=t.stats[Xe.STAT_SELECTED_ICON]||0;if(m>0){let l=e.get_configstring(be.Images+m);if(l){let f=e.Draw_RegisterPic(l);f&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,f)}}}},Rc=640,ai=480,qk=(e,t)=>{let n=e/Rc,i=t/ai,r=Math.min(n,i);return{HEALTH_X:100*r,HEALTH_Y:t-(ai-450)*r,ARMOR_X:200*r,ARMOR_Y:t-(ai-450)*r,AMMO_X:e-(Rc-540)*r,AMMO_Y:t-(ai-450)*r,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*r,WEAPON_ICON_X:10*r,WEAPON_ICON_Y:t-(ai-450)*r,POWERUP_X:e-(Rc-610)*r,POWERUP_Y:t-(ai-450)*r,scale:r}},Le=null,Ic=[],C0=0,Cc=new Vk,P0=new Kk;function Zk(e){Le=e}function jk(){if(Le){Ic.length=0;for(let e=0;e<10;e++)try{let t=Le.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);Ic.push(t),e===0&&(C0=Le.Draw_GetPicSize(t).width)}catch{Le.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
|
|
173
|
+
`)}Ck(Le),Dk(Le),Gk(Le)}}function Jk(e,t,n,i,r,a,s){if(!Le){console.error("CG_DrawHUD: cgame imports not initialized");return}let o=Le.CL_ClientTime(),u=qk(n.width,n.height);if($k(Le,s,n.width,n.height),Yk(Le,s,Ic,C0,o,u),Xk(Le,s,n.width,n.height),Hk(Le,s,n.width,n.height),s.centerPrint){let c=s.centerPrint.split(`
|
|
174
|
+
`),d=n.height/2-c.length*10;for(let m of c)Le.SCR_DrawCenterString(d,m),d+=16}Cc.drawCenterPrint(Le,o,u),Cc.drawNotifications(Le,o),P0.drawSubtitles(Le,o),Pk(Le,n.width,n.height)}function Ta(){return Cc}function Qk(){return P0}function e5(e,t,n){t>=be.Models&&t<be.Models+ar?e.RegisterModel(n):t>=be.Sounds&&t<be.Sounds+sr?e.RegisterSound(n):t>=be.Images&&t<be.Images+or&&e.Draw_RegisterPic(n)}var zc=1e-6,Ma=typeof Float32Array<"u"?Float32Array:Array,N0=Math.random;function Lc(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var t5={};Ik(t5,{add:()=>s5,angle:()=>R5,bezier:()=>A5,ceil:()=>o5,clone:()=>n5,copy:()=>r5,create:()=>F0,cross:()=>v5,dist:()=>F5,distance:()=>H0,div:()=>P5,divide:()=>G0,dot:()=>Fc,equals:()=>O5,exactEquals:()=>N5,floor:()=>c5,forEach:()=>G5,fromValues:()=>i5,hermite:()=>w5,inverse:()=>_5,len:()=>U5,length:()=>D0,lerp:()=>p5,max:()=>d5,min:()=>u5,mul:()=>C5,multiply:()=>B0,negate:()=>h5,normalize:()=>g5,random:()=>S5,rotateX:()=>x5,rotateY:()=>M5,rotateZ:()=>T5,round:()=>l5,scale:()=>m5,scaleAndAdd:()=>f5,set:()=>a5,slerp:()=>y5,sqrDist:()=>D5,sqrLen:()=>B5,squaredDistance:()=>V0,squaredLength:()=>W0,str:()=>L5,sub:()=>I5,subtract:()=>U0,transformMat3:()=>E5,transformMat4:()=>k5,transformQuat:()=>b5,zero:()=>z5});function F0(){var e=new Ma(3);return Ma!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function n5(e){var t=new Ma(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function D0(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function i5(e,t,n){var i=new Ma(3);return i[0]=e,i[1]=t,i[2]=n,i}function r5(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function a5(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function s5(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function U0(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function B0(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function G0(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function o5(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function c5(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function u5(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function d5(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function l5(e,t){return e[0]=Lc(t[0]),e[1]=Lc(t[1]),e[2]=Lc(t[2]),e}function m5(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function f5(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function H0(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function V0(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function W0(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function h5(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function _5(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function g5(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function Fc(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function v5(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],u=n[2];return e[0]=r*u-a*o,e[1]=a*s-i*u,e[2]=i*o-r*s,e}function p5(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function y5(e,t,n,i){var r=Math.acos(Math.min(Math.max(Fc(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function w5(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,u=s*(a-2)+a,c=s*(a-1),d=s*(3-2*a);return e[0]=t[0]*o+n[0]*u+i[0]*c+r[0]*d,e[1]=t[1]*o+n[1]*u+i[1]*c+r[1]*d,e[2]=t[2]*o+n[2]*u+i[2]*c+r[2]*d,e}function A5(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,d=3*a*o,m=3*u*s,l=u*a;return e[0]=t[0]*c+n[0]*d+i[0]*m+r[0]*l,e[1]=t[1]*c+n[1]*d+i[1]*m+r[1]*l,e[2]=t[2]*c+n[2]*d+i[2]*m+r[2]*l,e}function S5(e,t){t=t===void 0?1:t;var n=N0()*2*Math.PI,i=N0()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function k5(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function E5(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function b5(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],u=t[1],c=t[2],d=r*c-a*u,m=a*o-i*c,l=i*u-r*o;return d=d+d,m=m+m,l=l+l,e[0]=o+s*d+r*l-a*m,e[1]=u+s*m+a*d-i*l,e[2]=c+s*l+i*m-r*d,e}function x5(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function M5(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function T5(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function R5(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],u=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=u&&Fc(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function z5(e){return e[0]=0,e[1]=0,e[2]=0,e}function L5(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function N5(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function O5(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=zc*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=zc*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=zc*Math.max(1,Math.abs(r),Math.abs(o))}var I5=U0,C5=B0,P5=G0,F5=H0,D5=V0,U5=D0,B5=W0,G5=(function(){var e=F0();return function(t,n,i,r,a,s){var o,u;for(n||(n=3),i||(i=0),r?u=Math.min(r*n+i,t.length):u=t.length,o=i;o<u;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var H5={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function V5(e){return{x:Math.max(-14,Math.min(14,e.x)),y:Math.max(-14,Math.min(14,e.y)),z:Math.max(-22,Math.min(30,e.z))}}function W5(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function K5(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=W5(t,i,r),s=e+a,u=ri(n,Ut.Ducked)&&i?s*4:s;return{bobTime:s,bobCycle:Math.floor(u),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(u*Math.PI))}}var Ra=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...H5,...e}}addKick(e){e.durationMs<=0||(this.kick={...e,remainingMs:e.durationMs})}get last(){return this.lastSample}sample(e,t){let{forward:n,right:i}=pa(Ec({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??nn}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=ri(e.pmFlags,Ut.OnGround),s=K5(this.bobTime,r,e.pmFlags,a,t);this.bobTime=s.bobTime,this.bobCycle=s.bobCycle,this.bobCycleRun=s.bobCycleRun,this.bobFracSin=s.bobFracSin;let o=ir(e.velocity,n)*this.settings.runPitch,u=ir(e.velocity,i),c=u<0?-1:1,m=Math.abs(u)*this.settings.runRoll;m>2&&(m=2),m*=c;let l=this.bobFracSin*this.settings.bobPitch*r,f=this.bobFracSin*this.settings.bobRoll*r;ri(e.pmFlags,Ut.Ducked)&&a&&(l*=6,f*=6),o+=Math.min(l,this.settings.maxBobAngle),f=Math.min(f,this.settings.maxBobAngle),this.bobCycle&1&&(f=-f),m+=f;let _=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),p=0,v=0,y=0,S=0,k=0;if(this.kick&&this.kick.remainingMs>0){let x=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));p+=x*this.kick.pitch,v+=x*this.kick.roll,this.kick.origin&&(y+=x*this.kick.origin.x,S+=x*this.kick.origin.y,k+=x*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let w={x:o+p,y:0,z:m+v},b={x:y,y:S,z:_+k},T={angles:w,offset:V5(b),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=T,T}},$5={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},X5=800,Je={x:0,y:0,z:0},Y5=64;function Bt(){return{origin:Je,velocity:Je,viewAngles:Je,onGround:!1,pmFlags:Ut.OnGround,pmType:Sa.Normal,waterLevel:cr.None,gravity:X5,deltaAngles:Je,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:0,damageIndicators:[],blend:[0,0,0,0],stats:[],kick_angles:Je,kick_origin:Je,gunoffset:Je,gunangles:Je,gunindex:0,pm_time:0,pm_type:Sa.Normal,pm_flags:Ut.OnGround,gun_frame:0,rdflags:0,fov:90,pickupIcon:void 0,centerPrint:void 0,notify:void 0,client:void 0,health:0,armor:0,ammo:0}}function Nc(e){return e?{...Bt(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:Je,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:Bt()}function je(e,t,n){return e+(t-e)*n}function Oc(e,t,n){let i=ni(t-e);return i>180&&(i-=360),ni(e+i*n)}function Ln(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:je(e.origin.x,t.origin.x,i),y:je(e.origin.y,t.origin.y,i),z:je(e.origin.z,t.origin.z,i)},velocity:{x:je(e.velocity.x,t.velocity.x,i),y:je(e.velocity.y,t.velocity.y,i),z:je(e.velocity.z,t.velocity.z,i)},viewAngles:{x:Oc(e.viewAngles.x,t.viewAngles.x,i),y:Oc(e.viewAngles.y,t.viewAngles.y,i),z:Oc(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:je(e.damageAlpha,t.damageAlpha,i),blend:[je(e.blend[0],t.blend[0],i),je(e.blend[1],t.blend[1],i),je(e.blend[2],t.blend[2],i),je(e.blend[3],t.blend[3],i)],health:je(e.health||0,t.health||0,i),armor:je(e.armor||0,t.armor||0,i),ammo:je(e.ammo||0,t.ammo||0,i)}}function O0(e,t,n,i,r){let a={forwardmove:t.forwardmove,sidemove:t.sidemove,upmove:t.upmove,buttons:t.buttons,angles:t.angles},s=bc(e,a,i,r),{viewangles:o}=Ec({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??Je});return{...s,viewAngles:o}}var za=class{constructor(e,t,n={}){this.baseFrame={frame:0,timeMs:0,state:Bt()},this.commands=[],this.predicted=Bt(),this.predictionError=Je,this.settings={...$5,...n},this.trace=e,this.pointContents=t,this.predicted=this.baseFrame.state??Bt()}setAuthoritative(e){let t=Nc(e.state);if(e.frame<=this.baseFrame.frame)return this.predicted;let n,i=this.commands.filter(r=>r.sequence<=e.frame&&r.sequence>this.baseFrame.frame);if(i.length>0||this.baseFrame.frame===e.frame){let r=Nc(this.baseFrame.state);for(let a of i)r=O0(r,a,this.settings,this.trace,this.pointContents);n=r}if(n){let r=Vm(n.origin,t.origin),a=Rn(r);a>10?this.predictionError=Je:a>.1?this.predictionError=r:this.predictionError=Je}else this.predictionError=Je;return this.baseFrame={...e,state:t},this.commands=this.commands.filter(r=>r.sequence>e.frame),this.recompute()}getPredictionError(){return this.predictionError}decayError(e){let t=Rn(this.predictionError);if(t>0){let n=t*10*e,i=Math.max(0,t-n)/t;this.predictionError=ii(this.predictionError,i)}}enqueueCommand(e){return this.commands.push(e),this.commands.length>Y5&&this.commands.shift(),this.recompute()}getCommand(e){return this.commands.find(t=>t.sequence===e)}getPredictedState(){return this.predicted}recompute(){let e=Nc(this.baseFrame.state);for(let t of this.commands)e=O0(e,t,this.settings,this.trace,this.pointContents);return this.predicted=e,e}},xe=null,Pc=null;function q5(){if(!xe){console.error("CGame Init: cgame imports not set");return}xe.Com_Print(`===== CGame Initialization =====
|
|
175
|
+
`),Zk(xe),Pc=xe.Cvar_Get("cg_predict","1",0),xe.Cvar_Get("cg_showmiss","0",0),xe.Com_Print(`CGame initialized
|
|
176
|
+
`)}function Z5(){xe&&xe.Com_Print(`CGame shutdown
|
|
177
|
+
`),xe=null}function j5(e,t,n,i,r,a,s){Jk(e,t,n,i,r,a,s)}function J5(){jk()}function Q5(e){return 0}function eE(e){return e.stats[Xe.STAT_ACTIVE_WHEEL_WEAPON]??0}function tE(e){let t=[],n=e.stats[Xe.STAT_WEAPONS_OWNED_1]||0,i=e.stats[Xe.STAT_WEAPONS_OWNED_2]||0,r=n|i<<16;for(let a=0;a<Ea.length;a++)r&1<<a&&t.push(a);return t}function nE(e,t){if(t<0||t>=Ea.length)return 0;let n=Ea[t],i=M0[n];return i===null?-1:S0(e.stats,i)}function iE(e){let t=0,n=Object.values(ur);for(let i of n)ka(e.stats,i)>0&&t++;return t}function rE(e){return e.stats[Xe.STAT_HIT_MARKER]??0}function aE(e){let t=e;if(!t||!t.s||!t.cmd||!xe||Pc&&Pc.value===0)return;let n=(a,s,o,u)=>{let c={x:0,y:0,z:0};return xe.PM_Trace(a,s,o||c,u||c)},i=a=>{let s={x:0,y:0,z:0};return xe.PM_Trace(a,a,s,s).contents||0},r=bc(t.s,t.cmd,n,i);t.s.origin=r.origin,t.s.velocity=r.velocity,t.s.onGround=r.onGround,t.s.waterLevel=r.waterLevel}function sE(e,t){xe&&e5(xe,e,t)}function oE(e,t,n){if(!xe)return;Ta().setCenterPrint(e,xe.CL_ClientTime())}function cE(e,t,n){if(!xe)return;Ta().addNotification(t,n,xe.CL_ClientTime())}function uE(e){Ta().clearNotifications()}function dE(e){Ta().clearCenterPrint()}function lE(e,t){if(!xe)return;Qk().addSubtitle(e,xe.CL_ClientTime())}function mE(e){return{x:0,y:0,z:0}}function fE(e){return null}function K0(e){return xe=e,{Init:q5,Shutdown:Z5,DrawHUD:j5,TouchPics:J5,LayoutFlags:Q5,GetActiveWeaponWheelWeapon:eE,GetOwnedWeaponWheelWeapons:tE,GetWeaponWheelAmmoCount:nE,GetPowerupWheelCount:iE,GetHitMarkerDamage:rE,Pmove:aE,ParseConfigString:sE,ParseCenterPrint:oE,NotifyMessage:cE,ShowSubtitle:lE,ClearNotify:uE,ClearCenterprint:dE,GetMonsterFlashOffset:mE,GetExtension:fE}}function $0(e,t){let n=new Map,i=new Set,r=()=>e.engine.renderer;return{get tick_rate(){return t.tickRate},get frame_time_s(){return t.frameTimeMs/1e3},get frame_time_ms(){return t.frameTimeMs},Com_Print:a=>{console.log(`[CGAME] ${a}`)},Com_Error:a=>{console.error(`[CGAME ERROR] ${a}`)},get_configstring:a=>t.configStrings.get(a)||"",TagMalloc:(a,s)=>({}),TagFree:a=>{},FreeTags:a=>{},cvar:(a,s,o)=>{if(!e.host||!e.host.cvars)return null;let u=e.host.cvars.get(a);return u||e.host.cvars.register({name:a,defaultValue:s,flags:o})},Cvar_Get:(a,s,o)=>{if(!e.host||!e.host.cvars)return{value:parseInt(s)||0};let u=e.host.cvars.get(a);return u||(u=e.host.cvars.register({name:a,defaultValue:s,flags:o})),{get value(){return u.number}}},cvar_set:(a,s)=>{e.host?.cvars?.setValue(a,s)},cvar_forceset:(a,s)=>{e.host?.cvars?.setValue(a,s)},CL_FrameValid:()=>!0,CL_FrameTime:()=>t.frameTimeMs,CL_ClientTime:()=>t.frameTimeMs,CL_ServerFrame:()=>t.serverFrame,CL_ServerProtocol:()=>t.serverProtocol,CL_GetClientName:a=>t.getClientName(a),CL_GetClientPic:a=>"",CL_GetClientDogtag:a=>"",CL_GetKeyBinding:a=>t.getKeyBinding(a),RegisterModel:a=>{if(!e.engine.assets)return;let s=a.split(".").pop()?.toLowerCase();s==="md2"?e.engine.assets.loadMd2Model(a).catch(o=>console.warn(`Failed to precache MD2 ${a}`,o)):s==="sp2"?e.engine.assets.loadSprite(a).catch(o=>console.warn(`Failed to precache Sprite ${a}`,o)):s==="md3"&&e.engine.assets.loadMd3Model(a).catch(o=>console.warn(`Failed to precache MD3 ${a}`,o))},RegisterSound:a=>{e.engine.assets&&e.engine.assets.loadSound(a).catch(s=>console.warn(`Failed to precache sound ${a}`,s))},Draw_RegisterPic:a=>(n.has(a)||i.has(a)||(i.add(a),e.engine.assets&&e.engine.assets.loadTexture(a).then(s=>{if(e.engine.renderer){let o=e.engine.renderer.registerTexture(a,s);n.set(a,o)}i.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),i.delete(a)})),a),Draw_GetPicSize:a=>{let s=a,o=n.get(s);return o?{width:o.width,height:o.height}:{width:0,height:0}},SCR_DrawChar:(a,s,o)=>{r()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let u=o,c=n.get(u);c&&r()?.drawPic(a,s,c)},SCR_DrawColorPic:(a,s,o,u,c)=>{let d=o,m=n.get(d);m&&r()?.drawPic(a,s,m,[u.x,u.y,u.z,c])},SCR_DrawFontString:(a,s,o)=>{r()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{r()?.drawCenterString(a,s)},SCR_MeasureFontString:a=>a.replace(/\^[0-9]/g,"").length*8,SCR_FontLineHeight:()=>8,SCR_SetAltTypeface:a=>{},SCR_DrawBind:(a,s,o)=>{let u=t.getKeyBinding(o);r()?.drawString(a,s,`[${o}]`)},Localize:a=>a,CL_GetTextInput:()=>"",CL_GetWarnAmmoCount:()=>5,CL_InAutoDemoLoop:()=>t.inAutoDemo,PM_Trace:(a,s,o,u)=>e.engine.trace(a,s,o,u)}}var si=null,an=0;var lr=!0,mr=["ch1","ch2","ch3"],oi=[null,null,null],X0=async(e,t)=>{for(let n=0;n<mr.length;n++){let i=mr[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);oi[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");oi[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}si=oi[0]};var Y0=()=>{if(lr?(an++,an>=mr.length&&(lr=!1,an=0)):(lr=!0,an=0),lr){if(si=oi[an],!si){let e=!1;for(let t=0;t<mr.length;t++){let n=(an+t)%mr.length;if(oi[n]){an=n,si=oi[n],e=!0;break}}e||(si=null)}}else si=null;return lr?an:-1};var hE=Object.defineProperty,_E=Object.getOwnPropertyNames,Pn=(e,t)=>function(){return e&&(t=(0,e[_E(e)[0]])(e=0)),t},gE=(e,t)=>{for(var n in t)hE(e,n,{get:t[n],enumerable:!0})};function Ai(e){return{x:e.x,y:e.y,z:e.z}}function C(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function D(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function I(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function qa(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function vE(e){return qa(e,e)}function Ie(e){return Math.sqrt(vE(e))}function G(e){let t=Ie(e);return t===0?e:I(e,1/t)}function pE(e,t,n){return{x:e.x<t.x?t.x:e.x>n.x?n.x:e.x,y:e.y<t.y?t.y:e.y>n.y?n.y:e.y,z:e.z<t.z?t.z:e.z>n.z?n.z:e.z}}function yE(e,t,n,i){let r=0;if(t.x<n.x){let a=t.x-n.x;r+=a*a}else if(e.x>i.x){let a=e.x-i.x;r+=a*a}if(t.y<n.y){let a=t.y-n.y;r+=a*a}else if(e.y>i.y){let a=e.y-i.y;r+=a*a}if(t.z<n.z){let a=t.z-n.z;r+=a*a}else if(e.z>i.z){let a=e.z-i.z;r+=a*a}return r}function gr(e,t){switch(t){case Za:return e.x;case ja:return e.y;case lu:default:return e.z}}function Fa(e){return e*fh}function Yc(e){return e*hh}function qc(e){let t=e%360;return t<0?360+t:t}function Y(e){let t=Fa(gr(e,ja)),n=Fa(gr(e,Za)),i=Fa(gr(e,lu)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),u=Math.sin(i),c=Math.cos(i),d={x:o*a,y:o*r,z:-s},m={x:-u*s*a-c*-r,y:-u*s*r-c*a,z:-u*o},l={x:c*s*a-u*-r,y:c*s*r-u*a,z:c*o};return{forward:d,right:m,up:l}}function Er(e){let t=gr(e,Za),n=gr(e,ja);if(t===0)return n===0?0:n>0?90:270;let i=Yc(Math.atan2(n,t));return i<0?i+360:i}function Fn(e){let t=e.x,n=e.y,i=e.z;if(n===0&&t===0)return{x:i>0?-90:-270,y:0,z:0};let r;t?r=Yc(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=Yc(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}function br(e){return new mu(e)}function wE(e){return JSON.stringify(e,null,2)}function AE(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function SE(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function kE(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}function EE(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:u,pmWaterFriction:c}=e,d=Ie(t);if(d<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let _=d<u?u:d;m+=_*o*n}s>0&&!a&&(m+=d*c*s*n);let l=d-m;if(l<0&&(l=0),l===d)return t;let f=l/d;return I(t,f)}function bE(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=qa(t,n),o=i-s;if(o<=0)return t;let u=r*a*i;return u>o&&(u=o),{x:t.x+n.x*u,y:t.y+n.y*u,z:t.z+n.z*u}}function xE(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=Ie(a);if(s>r){let o=r/s;a=I(a,o),s=r}return{wishdir:s===0?a:G(a),wishspeed:s}}function ME(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=C(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=C(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=C(a,{x:0,y:0,z:-60}):a=C(a,{x:0,y:0,z:10});let s=Ie(a);if(s>r){let o=r/s;a=I(a,o),s=r}return s*=.5,{wishdir:s===0?a:G(a),wishspeed:s}}var q0,Dc,X,TE,RE,Za,ja,lu,fh,hh,Uc,mt,Z0,j0,J0,Q0,La,ef,mu,Ye,Gt,zE,Na,Oa,tf,LE,NE,nf,OE,fr,Bc,rf,af,sf,of,cf,uf,IE,dn,pr,CE,PE,FE,In,DE,UE,BE,GE,HE,VE,WE,KE,$E,XE,YE,qE,ZE,jE,fu,JE,QE,ln,_h,eb,Kt,tb,nb,ib,rb,ab,sb,ob,df,Gc,lf,mf,ff,hf,_f,gf,vf,Ia,Hc,cb,pf,yf,ub,se,Se,gh,vh,ph,yh,wh,Ah,Sh,kh,Eh,bh,ue,wf,Af,Sf,db,kf,Ef,lb,mb,gi,bf,xf,Mf,Tf,Rf,zf,Lf,Nf,Of,If,Cf,Pf,Ff,Df,Uf,Bf,Gf,Hf,Vf,Wf,Kf,ci,Ca,hr,$f,Xf,fb,Yf,Nn,$,F,hb,pe,_b,qf,gb,vb,U=Pn({"../shared/dist/esm/index.js"(){"use strict";q0=Object.defineProperty,Dc=(e,t)=>{for(var n in t)q0(e,n,{get:t[n],enumerable:!0})},X={x:0,y:0,z:0},TE=.1,RE=Math.PI/180,Za=0,ja=1,lu=2,fh=Math.PI/180,hh=180/Math.PI,Uc=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]],mt=624,Z0=397,j0=2567483615,J0=2147483648,Q0=2147483647,La=4294967296,ef=class{constructor(e=5489){this.state=new Uint32Array(mt),this.index=mt,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<mt;t++){let n=this.state[t-1]^this.state[t-1]>>>30,i=Math.imul(n>>>0,1812433253)+t;this.state[t]=i>>>0}this.index=mt}nextUint32(){this.index>=mt&&this.twist();let e=this.state[this.index++];return e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0}twist(){for(let e=0;e<mt;e++){let t=this.state[e]&J0|this.state[(e+1)%mt]&Q0,n=this.state[(e+Z0)%mt]^t>>>1;(t&1)!==0&&(n^=j0),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==mt)throw new Error(`Expected ${mt} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},mu=class{constructor(e={}){this.mt=new ef(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/La}frandomRange(e,t){return e+(t-e)*this.frandom()}frandomMax(e){return this.frandomRange(0,e)}crandom(){return this.frandomRange(-1,1)}crandomOpen(){let e=Number.EPSILON;return this.frandomRange(-1+e,1)}irandomUint32(){return this.mt.nextUint32()}irandomRange(e,t){if(t-e<=1)return e;let n=t-e,i=La-La%n,r;do r=this.mt.nextUint32();while(r>=i);return e+r%n}irandom(e){return e<=0?0:this.irandomRange(0,e)}randomTimeRange(e,t){return t<=e?e:this.irandomRange(e,t)}randomTime(e){return this.irandom(e)}randomIndex(e){return this.irandom(e.length)}getState(){return{mt:this.mt.getState()}}setState(e){this.mt.setState(e.mt)}},Ye=1,Gt=2,zE=4,Na=8,Oa=16,tf=32,LE=64,NE=8192,nf=16384,OE=32768,fr=65536,Bc=1<<17,rf=1<<18,af=1<<19,sf=1<<20,of=1<<21,cf=1<<22,uf=1<<23,IE=1<<24,dn=1<<25,pr=1<<26,CE=1<<27,PE=1<<28,FE=1<<29,In=1<<30,DE=1<<31,UE=1,BE=2,GE=4,HE=8,VE=16,WE=32,KE=64,$E=128,XE=1<<25,YE=1<<28,qE=1<<29,ZE=1<<30,jE=1<<31,fu=Ye|Gt,JE=Ye|fr|Gt|dn|In,QE=Ye|fr|Gt,ln=Ye|Bc|Gt|dn|In,_h=tf|Na|Oa,eb=Ye|Oa|Na,Kt=Ye|dn|In|Gt|pr,tb=rf|af|sf|of|cf|uf,nb=Ye|Na|Oa|dn|In,ib=Ye|fr|Gt,rb=Ye|Gt,ab=Ye|fr|Gt|Bc,sb=Kt|nf,ob=Number.MAX_SAFE_INTEGER-1,df=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(df||{}),Gc=256,lf=256,mf=8192,ff=2048,hf=512,_f=256,gf=Gc*2,vf=256,Ia=32,Hc=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+mf]="Sounds",e[e.Images=e.Sounds+ff]="Images",e[e.Lights=e.Images+hf]="Lights",e[e.ShadowLights=e.Lights+lf]="ShadowLights",e[e.Items=e.ShadowLights+vf]="Items",e[e.PlayerSkins=e.Items+_f]="PlayerSkins",e[e.General=e.PlayerSkins+Gc]="General",e[e.WheelWeapons=e.General+gf]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ia]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ia]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ia]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Hc||{}),cb=Hc.MaxConfigStrings,pf={},Dc(pf,{addReplayFrame:()=>kE,createReplaySession:()=>SE,deserializeReplay:()=>AE,serializeReplay:()=>wE}),yf=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(yf||{}),ub=1080,se=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(se||{}),Se=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(Se||{}),gh=0,vh=1,ph=2,yh=3,wh=6,Ah=7,Sh=8,kh=11,Eh=12,bh=13,ue=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(ue||{}),wf=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(wf||{}),Af=12,Sf=9,db=Math.ceil(Af*Sf/16),kf=23,Ef=2,lb=Math.ceil(kf*Ef/16),mb={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,bandolier:10,ammo_pack:10,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22,tag_token:-1},gi=(e=>(e[e.MinLight=1]="MinLight",e[e.ViewerModel=2]="ViewerModel",e[e.WeaponModel=4]="WeaponModel",e[e.FullBright=8]="FullBright",e[e.DepthHack=16]="DepthHack",e[e.Translucent=32]="Translucent",e[e.FrameLerp=64]="FrameLerp",e[e.Beam=128]="Beam",e[e.CustomLight=256]="CustomLight",e[e.Glow=512]="Glow",e[e.ShellRed=1024]="ShellRed",e[e.ShellGreen=2048]="ShellGreen",e[e.ShellBlue=4096]="ShellBlue",e[e.IrVisible=32768]="IrVisible",e[e.ShellDouble=65536]="ShellDouble",e[e.ShellHalfDam=131072]="ShellHalfDam",e[e.MinLightPlus=262144]="MinLightPlus",e[e.ExtraLight=524288]="ExtraLight",e[e.BeamLightning=1048576]="BeamLightning",e))(gi||{}),bf={},Dc(bf,{U_ANGLE1:()=>Nf,U_ANGLE2:()=>Of,U_ANGLE3:()=>If,U_EFFECTS:()=>Ff,U_EVENT:()=>Bf,U_FRAME:()=>Cf,U_MODEL:()=>Mf,U_MODEL2:()=>Hf,U_MODEL3:()=>Vf,U_MODEL4:()=>Wf,U_MOREBITS:()=>Gf,U_NUMBER:()=>xf,U_ORIGIN1:()=>Rf,U_ORIGIN2:()=>zf,U_ORIGIN3:()=>Lf,U_REMOVE:()=>Kf,U_RENDERFX:()=>Df,U_SKIN:()=>Pf,U_SOLID:()=>Uf,U_SOUND:()=>Tf}),xf=1,Mf=2,Tf=4,Rf=8,zf=16,Lf=32,Nf=64,Of=128,If=256,Cf=512,Pf=1024,Ff=2048,Df=4096,Uf=8192,Bf=16384,Gf=32768,Hf=1,Vf=2,Wf=4,Kf=32768,ci=.025,Ca=33554432,hr={None:0,Feet:1,Waist:2,Under:3},$f=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},Xf=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&Ca))return{...e,waterLevel:hr.None};let s=hr.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&Ca){s=hr.Waist;let c=e.origin.z+22;n.z=c,t(n)&Ca&&(s=hr.Under)}return{...e,waterLevel:s}},fb=(e,t,n,i)=>{let r={...e};r=$f(r,n),r=Xf(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:u,viewAngles:c}=r,d=u>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:l}=Y(d),f=EE({velocity:s,frametime:ci,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:u,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),_=u>=2?ME({forward:m,right:l,cmd:t,maxSpeed:320}):xE({forward:m,right:l,cmd:t,maxSpeed:320}),p=bE({velocity:f,wishdir:_.wishdir,wishspeed:_.wishspeed,accel:o||u>=2?10:1,frametime:ci}),v=n(a,{x:a.x+p.x*ci,y:a.y+p.y*ci,z:a.z+p.z*ci});return{...r,origin:v.endpos,velocity:p}},Yf=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<Uc.length;i++){let r=Uc[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},Nn=class We{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new Yf(We.MAX_RELIABLE_BUFFER);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=0,i=!1,r=0;this.reliableLength>0&&(this.reliableLength>We.FRAGMENT_SIZE?(i=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),n=this.reliableLength-this.fragmentSendOffset,n>We.FRAGMENT_SIZE&&(n=We.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=n):n=this.reliableLength);let a=We.PACKET_HEADER,s=n>0?2+(i?8:0):0,o=t?t.length:0;a+s+n+o>We.MAX_MSGLEN&&(o=We.MAX_MSGLEN-a-s-n,o<0&&(o=0));let u=new ArrayBuffer(a+s+n+o),c=new DataView(u),d=new Uint8Array(u),m=this.outgoingSequence;n>0&&(m|=2147483648,(this.outgoingReliableSequence&1)!==0&&(m|=1073741824)),c.setUint32(0,m,!0);let l=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(l|=2147483648),c.setUint32(4,l,!0),c.setUint16(8,this.qport,!0);let f=a;if(n>0){let _=n;i&&(_|=32768),c.setUint16(f,_,!0),f+=2,i&&(c.setUint32(f,r,!0),f+=4,c.setUint32(f,this.reliableLength,!0),f+=4);let v=this.reliableMessage.getBuffer().subarray(r,r+n);d.set(v,f),f+=n}if(t&&o>0){let _=t.slice(0,o);d.set(_,f)}return d}process(t){if(t.length<We.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,u=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let _=u?1:0,p=this.outgoingReliableSequence&1;_!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}let c=(i&2147483648)!==0,d=(i&1073741824)!==0?1:0,m=We.PACKET_HEADER,l=null;if(c){if(m+2>t.byteLength)return null;let _=n.getUint16(m,!0);m+=2;let p=(_&32768)!==0;_&=32767;let v=this.incomingReliableSequence&1;if(d===v)if(p){if(m+8>t.byteLength)return null;let y=n.getUint32(m,!0);m+=4;let S=n.getUint32(m,!0);if(m+=4,S>We.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${S} > ${We.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==S)&&(this.fragmentBuffer=new Uint8Array(S),this.fragmentLength=S,this.fragmentReceived=0),m+_>t.byteLength)return null;let k=t.subarray(m,m+_);y===this.fragmentReceived&&y+_<=S&&(this.fragmentBuffer.set(k,y),this.fragmentReceived+=_,this.fragmentReceived>=S&&(l=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,m+_>t.byteLength)return null;l=t.slice(m,m+_)}m+=_}let f=t.slice(m);if(l&&l.length>0){let _=l.length+f.length,p=new Uint8Array(_);return p.set(l,0),p.set(f,l.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>We.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>We.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>We.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>We.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}},Nn.MAX_MSGLEN=1400,Nn.FRAGMENT_SIZE=1024,Nn.PACKET_HEADER=10,Nn.HEADER_OVERHEAD=Nn.PACKET_HEADER+2,Nn.MAX_RELIABLE_BUFFER=262144,$=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="supershotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.HandGrenade="grenades",e.GrenadeLauncher="grenadelauncher",e.RocketLauncher="rocketlauncher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.Grapple="grapple",e.ChainFist="chainfist",e.EtfRifle="etf_rifle",e.ProxLauncher="prox_launcher",e.IonRipper="ionripper",e.PlasmaBeam="plasmabeam",e.Phalanx="phalanx",e.Disruptor="disruptor",e.Trap="trap",e))($||{}),F=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(F||{}),hb=Object.keys(F).length/2,pe=(e=>(e.Shells="ammo_shells",e.Bullets="ammo_bullets",e.Rockets="ammo_rockets",e.Grenades="ammo_grenades",e.Cells="ammo_cells",e.Slugs="ammo_slugs",e.MagSlugs="ammo_magslug",e.Flechettes="ammo_flechettes",e.Disruptor="ammo_disruptor",e.Tesla="ammo_tesla",e.Trap="ammo_trap",e.Prox="ammo_prox",e))(pe||{}),_b=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],qf=(e=>(e[e.Auto=0]="Auto",e[e.Weapon=1]="Weapon",e[e.Voice=2]="Voice",e[e.Item=3]="Item",e[e.Body=4]="Body",e[e.Aux=5]="Aux",e[e.Footstep=6]="Footstep",e[e.Aux3=7]="Aux3",e[e.NoPhsAdd=8]="NoPhsAdd",e[e.Reliable=16]="Reliable",e[e.ForcePos=32]="ForcePos",e))(qf||{}),gb=1,vb=2}});var pb,Dn=Pn({"src/inventory/ammo.ts"(){"use strict";U(),pb={[pe.Shells]:{id:pe.Shells,ammoType:F.Shells,quantity:10,weaponAmmo:!1},[pe.Bullets]:{id:pe.Bullets,ammoType:F.Bullets,quantity:50,weaponAmmo:!1},[pe.Rockets]:{id:pe.Rockets,ammoType:F.Rockets,quantity:5,weaponAmmo:!1},[pe.Grenades]:{id:pe.Grenades,ammoType:F.Grenades,quantity:5,weaponAmmo:!0},[pe.Cells]:{id:pe.Cells,ammoType:F.Cells,quantity:50,weaponAmmo:!1},[pe.Slugs]:{id:pe.Slugs,ammoType:F.Slugs,quantity:10,weaponAmmo:!1},[pe.MagSlugs]:{id:pe.MagSlugs,ammoType:F.MagSlugs,quantity:10,weaponAmmo:!1},[pe.Flechettes]:{id:pe.Flechettes,ammoType:F.Flechettes,quantity:50,weaponAmmo:!1},[pe.Disruptor]:{id:pe.Disruptor,ammoType:F.Disruptor,quantity:15,weaponAmmo:!1},[pe.Tesla]:{id:pe.Tesla,ammoType:F.Tesla,quantity:5,weaponAmmo:!1},[pe.Trap]:{id:pe.Trap,ammoType:F.Trap,quantity:5,weaponAmmo:!1},[pe.Prox]:{id:pe.Prox,ammoType:F.Prox,quantity:5,weaponAmmo:!1}}}});function mn(e,t){return(e&t)!==0}var Zf,xh=Pn({"src/combat/damageFlags.ts"(){"use strict";Zf=(e=>(e[e.NONE=0]="NONE",e[e.RADIUS=1]="RADIUS",e[e.NO_ARMOR=2]="NO_ARMOR",e[e.ENERGY=4]="ENERGY",e[e.NO_KNOCKBACK=8]="NO_KNOCKBACK",e[e.BULLET=16]="BULLET",e[e.NO_PROTECTION=32]="NO_PROTECTION",e[e.DESTROY_ARMOR=64]="DESTROY_ARMOR",e[e.NO_REG_ARMOR=128]="NO_REG_ARMOR",e[e.NO_POWER_ARMOR=256]="NO_POWER_ARMOR",e[e.NO_INDICATOR=512]="NO_INDICATOR",e[e.NO_DAMAGE_EFFECTS=1024]="NO_DAMAGE_EFFECTS",e))(Zf||{})}});function yb(e,t,n){if(e<=0||mn(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=Mh[n.armorType],r=mn(t,4)?i.energyProtection:i.normalProtection,a=Math.ceil(r*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function wb(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(mn(t,258))return{saved:0,remainingCells:r.cellCount};if(!r.type||r.cellCount<=0)return{saved:0,remainingCells:r.cellCount};let{forward:s}=Y(r.angles),o={x:n.x-r.origin.x,y:n.y-r.origin.y,z:n.z-r.origin.z},u=Math.hypot(o.x,o.y,o.z);if(r.type==="screen"&&u>0){let v={x:o.x/u,y:o.y/u,z:o.z/u};if(v.x*s.x+v.y*s.y+v.z*s.z<=.3)return{saved:0,remainingCells:r.cellCount}}let c=a.ctfMode??!1,d=r.type==="screen"||c?1:2,m=r.type==="screen"?e/3:2*e/3;m=Math.max(1,m);let l=r.cellCount*d;mn(t,4)&&(l=Math.max(1,Math.floor(l/2))),l>m&&(l=Math.floor(m));let f=l/d;mn(t,4)&&(f*=2),f=Math.max(1,Math.floor(f));let _=Math.max(d,f),p=Math.max(0,r.cellCount-_);return{saved:l,remainingCells:p}}var Cn,Mh,Th=Pn({"src/combat/armor.ts"(){"use strict";U(),xh(),Cn=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(Cn||{}),Mh={jacket:{baseCount:25,maxCount:50,normalProtection:.3,energyProtection:0},combat:{baseCount:50,maxCount:100,normalProtection:.6,energyProtection:.3},body:{baseCount:100,maxCount:200,normalProtection:.8,energyProtection:.6}}}});function Rh(e,t){return e.ownedWeapons.has(t)?(e.currentWeapon=t,!0):!1}var ze,gn=Pn({"src/inventory/playerInventory.ts"(){"use strict";Dn(),U(),Th(),ze=(e=>(e.Blue="key_blue",e.Red="key_red",e.Green="key_green",e.Yellow="key_yellow",e.DataCD="key_data_cd",e.PowerCube="key_power_cube",e.ExplosiveCharges="key_explosive_charges",e.PowerCore="key_power_core",e.Pyramid="key_pyramid",e.DataSpinner="key_data_spinner",e.Pass="key_pass",e.CommanderHead="key_commander_head",e.Airstrike="key_airstrike",e.NukeContainer="key_nuke_container",e.Nuke="key_nuke",e.RedFlag="key_red_flag",e.BlueFlag="key_blue_flag",e))(ze||{})}});function zh(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var jf,Lh=Pn({"src/combat/weapons/state.ts"(){"use strict";jf=(e=>(e[e.WEAPON_READY=0]="WEAPON_READY",e[e.WEAPON_ACTIVATING=1]="WEAPON_ACTIVATING",e[e.WEAPON_DROPPING=2]="WEAPON_DROPPING",e[e.WEAPON_FIRING=3]="WEAPON_FIRING",e))(jf||{})}}),Nh={};gE(Nh,{ChangeWeapon:()=>Sb,NoAmmoWeaponChange:()=>kb,setInstantSwitch:()=>Ab,switchToBestWeapon:()=>Oh});function Ab(e){Ja=e}function Sb(e,t){if(!e.client)return;let n=e.client;if(n.weaponstate!==2&&t){if(Rh(n.inventory,t),n.weaponstate=1,n.gun_frame=0,Ja){n.weaponstate=0,n.weapon_think_time=0;return}n.weapon_think_time=0}}function kb(e){e.client&&Oh(e)}function Oh(e){if(!e.client)return;let t=e.client.inventory,n=null;t.ownedWeapons.has($.BFG10K)&&t.ammo.counts[F.Cells]>=50?n=$.BFG10K:t.ownedWeapons.has($.RocketLauncher)&&t.ammo.counts[F.Rockets]>=1?n=$.RocketLauncher:t.ownedWeapons.has($.Railgun)&&t.ammo.counts[F.Slugs]>=1?n=$.Railgun:t.ownedWeapons.has($.Chaingun)&&t.ammo.counts[F.Bullets]>=1?n=$.Chaingun:t.ownedWeapons.has($.SuperShotgun)&&t.ammo.counts[F.Shells]>=2?n=$.SuperShotgun:t.ownedWeapons.has($.Machinegun)&&t.ammo.counts[F.Bullets]>=1?n=$.Machinegun:t.ownedWeapons.has($.Shotgun)&&t.ammo.counts[F.Shells]>=1?n=$.Shotgun:n=$.Blaster,n&&n!==t.currentWeapon&&(Rh(t,n),e.client.weaponstate=1,e.client.gun_frame=0,Ja&&(e.client.weaponstate=0),e.client.weapon_think_time=0)}var Ja,Eb=Pn({"src/combat/weapons/switching.ts"(){"use strict";gn(),Dn(),Ja=!1}});U();gn();Dn();var bb={...X};var OD=Object.freeze({aiflags:0,last_sighting:bb,trail_time:0,pausetime:0});var hu=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"spawn_count",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"random",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"last_move_time",type:"float",save:!0},{name:"damage_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}];U();U();U();U();var xb=20,Mb=440,Tb=940,Vc=32,Rb=1<<24,Ga=1;var Ih=(e=>(e[e.Straight=0]="Straight",e[e.Sliding=1]="Sliding",e[e.Melee=2]="Melee",e[e.Missile=3]="Missile",e[e.Blind=4]="Blind",e))(Ih||{}),_u=Ih;U();U();function Jf(e){return{mins:{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},maxs:{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}}}function vn(e,t){let n=Jf(e),i=Jf(t),r=yE(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function zb(e){return e<=xb?"melee":e<=Mb?"near":e<=Tb?"mid":"far"}function yr(e,t){let{forward:n}=Y(e.angles),i=G(D(t.origin,e.origin)),r=qa(i,n);return(e.spawnflags&Ga)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function $t(e,t,n,i){if((t.flags&Rb)!==0)return!1;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},a={x:t.origin.x,y:t.origin.y,z:t.origin.z+t.viewheight},s=i?.throughGlass?1:3,o=n(r,null,null,a,e,s);return o.fraction===1||o.ent===t}U();function Lb(e,t){let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=Er(n)}function Ch(e){e.angles.y=qc(e.ideal_yaw)}function Nb(e,t,n){e.enemy&&(e.goalentity=e.enemy,Lb(e,e.enemy),Ch(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function Ob(e,t,n,i){if(!e.enemy)return;(e.enemy.svflags&8)!==0&&(t.sightEntity=e,t.sightEntityFrame=t.frameNumber,e.light_level=128),e.show_hostile=t.timeSeconds+1;let r=e.monsterinfo.last_sighting;if(r.x=e.enemy.origin.x,r.y=e.enemy.origin.y,r.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){Nb(e,t,n);return}let a=i?.pickTarget,s=a?.(e.combattarget)??e.enemy;e.goalentity=s,e.movetarget=s,e.combattarget=void 0,e.monsterinfo.aiflags|=4096,e.movetarget&&(e.movetarget.targetname=void 0),e.monsterinfo.pausetime=0,e.monsterinfo.run?.(e,n)}function Ib(e,t,n,i){let r=vn(e,t),a=zb(r);return a==="far"||t.light_level<=5||!$t(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||yr(e,t):a==="mid"?yr(e,t):!0}function Cb(e,t,n,i,r){if((e.spawnflags&Ga)!==0){if(!$t(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=D(t.origin,e.origin);return Ie(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=Er(a),Ch(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function Pb(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&Ga)===0?t.sightEntity.enemy!==e.enemy?{candidate:t.sightEntity,heardit:!1}:{candidate:null,heardit:!1}:t.soundEntity&&t.soundEntityFrame>=t.frameNumber-1?{candidate:t.soundEntity,heardit:!0}:!e.enemy&&t.sound2Entity&&t.sound2EntityFrame>=t.frameNumber-1&&(e.spawnflags&Ga)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function Fb(e){return(e.flags&Vc)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&Vc)!==0:!!(e.enemy&&(e.enemy.flags&Vc)!==0)}function gu(e,t,n,i,r={}){if((e.monsterinfo.aiflags&256)!==0)return e.goalentity?.classname==="target_actor",!1;if((e.monsterinfo.aiflags&4096)!==0)return!1;let{candidate:a,heardit:s}=Pb(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(Fb(a))return!1;if(s){if(!Cb(e,a,t,r,i))return!1}else{if(!Ib(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return Ob(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}var Wc=18;function Ph(e,t){if(t===0)return{x:0,y:0,z:0};let n=Fa(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Qa(e,t,n){let i=Ph(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function Si(e,t){let n=qc(e.angles.y),i=e.ideal_yaw;if(n===i){e.angles.y=n;return}let r=e.yaw_speed*t*10,a=i-n;i>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>r?a=r:a<-r&&(a=-r),e.angles.y=qc(n+a)}function g(e,t){Qa(e,e.angles.y,t)}function es(e,t){if(!t)return;let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=Er(n)}function M(e,t,n){gu(e,n.targetAwareness,n,n.trace)||Si(e,t)}function z(e,t,n,i){if(!gu(e,i.targetAwareness,i,i.trace)&&(es(e,e.goalentity),Si(e,n),t!==0&&Qa(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&vn(e,e.goalentity)<64&&e.goalentity.target)){let a=i.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function le(e,t,n){t!==0&&Qa(e,e.angles.y,t),(e.monsterinfo.aiflags&32768)===0&&Si(e,n)}function ce(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}gu(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&es(e,e.enemy??e.goalentity),Si(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Fh(e,e.angles.y,t,i)}function Db(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&es(e,t),Si(e,i),n!==0&&Qa(e,e.angles.y,n)}function fe(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&es(e,e.enemy),Si(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Fh(e,e.angles.y,t,i)}function Qf(e,t){if(e.movetype===1)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.mins.z-1},i=t.trace(e.origin,e.mins,e.maxs,n,e,ln);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&_h?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function eh(e,t){let n={x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},i={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},r={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?r={x:n.x,y:n.y,z:0}:r={x:i.x,y:n.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,ln).fraction<1)||(s===1?r={x:n.x,y:i.y,z:0}:r={x:i.x,y:i.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0)||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,ln).fraction<1))return!0;return!1}function Fh(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=Ph(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+r.x,y:e.origin.y+r.y,z:e.origin.z+r.z};if(i.trace(e.origin,e.mins,e.maxs,a,e,ln).fraction===1){let v={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!eh(e,i)?(e.origin.x=v.x,e.origin.y=v.y,e.origin.z=v.z,!1):((e.flags&3)===0&&Qf(e,i),!0)}if((e.flags&3)!==0)return!1;let o={...e.origin},u={...e.origin,z:e.origin.z+Wc},c=i.trace(e.origin,e.mins,e.maxs,u,e,ln);if(c.startsolid||c.allsolid)return!1;let d={x:u.x+r.x,y:u.y+r.y,z:u.z};if(i.trace(u,e.mins,e.maxs,d,e,ln).fraction<1)return!1;let l={x:d.x,y:d.y,z:d.z-Wc},f={x:l.x,y:l.y,z:l.z-Wc},_=i.trace(d,e.mins,e.maxs,l,e,ln);if(_.startsolid||_.allsolid)return!1;let p=_.endpos;return e.origin.x=p.x,e.origin.y=p.y,e.origin.z=p.z,eh(e,i)?(Qf(e,i),!0):(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1)}U();U();var Ub=hu.filter(e=>e.save||e.type==="callback"),ID=new Map(Ub.map(e=>[e.name,e]));U();U();Th();xh();U();function Bb(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let i=1;return n.quad_time&&n.quad_time>t&&(i*=4),n.double_time&&n.double_time>t&&(i*=2),i}function Gb(e,t,n,i,r){if(mn(r,8)||((e.flags??0)&4)!==0||i===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=G(n),c=I(o,(t===e?1600:500)*i/s);return e.velocity=C(e.velocity,c),c}function Hb(e,t,n,i,r){let a=i,s=0,o=0,u,c;if(e.powerArmor){let d=wb(i,r,t,n,e.powerArmor);s=d.saved,u=d.remainingCells,a-=s}if(e.regularArmor){let d=yb(a,r,e.regularArmor);o=d.saved,c=d.remainingArmor,a-=o}return[Math.max(0,a),s,o,u,c]}function th(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function _e(e,t,n,i,r,a,s,o,u,c,d,m){if(!e.takedamage)return null;let l=Bb(n,d),f=s*l,_=o*l;if(!mn(u,32)&&((e.flags??0)&1)!==0&&f>0)return{take:0,psave:0,asave:f,knocked:{x:0,y:0,z:0},killed:!1};let v=Gb(e,n,i,_,u),[y,S,k,w,b]=Hb(e,r,a,f,u);e.monsterinfo&&e.monsterinfo.freeze_time>d&&f>0&&(y=e.health+100,S=0,k=0),e.powerArmor&&w!==void 0&&(e.powerArmor.cellCount=w),e.regularArmor&&(e.regularArmor.armorCount=b??e.regularArmor.armorCount);let T=y;T>0&&(e.health-=T,m&&!mn(u,1024)&&(e.classname==="player"||e.monsterinfo)&&m(r,1,se.temp_entity,Se.BLOOD,r,a));let x=e.health<=0;return x?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,T,r,c):T>0&&e.pain&&e.pain(e,n,o,T,c),{take:T,psave:S,asave:k,knocked:v,killed:x,remainingCells:w,remainingArmor:b}}function vu(e,t,n,i,r,a,s,o,u,c={},d){let m=[],l=th(t),f=c.canDamage??(()=>!0);for(let _ of e){if(_===r||!_.takedamage||!f(_,t))continue;let p=_.mins&&_.maxs?pE(l,C(_.origin,_.mins),C(_.origin,_.maxs)):th(_),v=D(l,p),y=Ie(v);if(a>0&&y>a)continue;let S=i-.5*y;if(S<=0)continue;let k=_===n?S*.5:S,w=G(D(_.origin,l)),b=_e(_,t,n,w,p,w,k,k,s|1,o,u,d);m.push({target:_,result:b,appliedDamage:k})}return m}var CD=br();U();U();U();function Dh(e,t,n,i,r,a,s,o=0){let u=e.spawn();u.classname="rocket",u.movetype=8,u.solid=2,u.owner=t,u.origin={...n},u.velocity={x:i.x*s,y:i.y*s,z:i.z*s},u.mins={x:-4,y:-4,z:-4},u.maxs={x:4,y:4,z:4},u.touch=(c,d,m,l)=>{if(d===c.owner)return;d&&d.takedamage&&_e(d,c,c.owner,c.velocity,c.origin,m?m.normal:X,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let f=e.findByRadius(c.origin,120);vu(f,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,se.temp_entity,Se.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(u)}function ts(e,t,n,i,r,a,s=2.5){let o=e.spawn();o.classname="grenade",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=9,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("models/objects/grenade/tris.md2"),o.mins={x:-4,y:-4,z:-4},o.maxs={x:4,y:4,z:4},o.avelocity={x:300,y:300,z:300};let u=c=>{let d=e.findByRadius(c.origin,120);vu(d,c,c.owner,r,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,se.temp_entity,Se.GRENADE_EXPLOSION,c.origin),e.free(c)};o.touch=(c,d,m,l)=>{if(d!==c.owner){if(d&&d.takedamage){u(c);return}c.groundentity||e.sound(c,0,"weapons/grenlb1b.wav",1,1,0)}},o.think=c=>{u(c)},e.scheduleThink(o,e.timeSeconds+s),e.finalizeSpawn(o)}function xr(e,t,n,i,r,a,s){let o=e.spawn();return s===10?o.classname="hyperblaster_bolt":s===58?(o.classname="blueblaster_bolt",o.modelindex=e.modelIndex("models/objects/laser/tris.md2"),o.skin=1):o.classname="blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(u,c,d,m)=>{if(c!==u.owner){if(c&&c.takedamage)_e(c,u,u.owner,u.velocity,u.origin,d?d.normal:X,r,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(d){let l=Se.BLASTER;s===58&&(l=Se.BLUEHYPERBLASTER),e.multicast(u.origin,1,se.temp_entity,l,u.origin,d.normal)}e.free(u)}},e.finalizeSpawn(o),o}function Vb(e,t,n,i,r,a){let s=e.spawn();s.classname="ionripper",s.owner=t,s.origin={...n},s.velocity={x:i.x*a,y:i.y*a,z:i.z*a},s.movetype=10,s.solid=2,s.modelindex=e.modelIndex("models/objects/boomrang/tris.md2"),s.mins={x:-2,y:-2,z:-2},s.maxs={x:2,y:2,z:2},s.touch=(o,u,c,d)=>{if(u!==o.owner){if(u&&u.takedamage){_e(u,o,o.owner,o.velocity,o.origin,c?c.normal:X,r,1,4,35,e.timeSeconds,e.multicast.bind(e)),e.free(o);return}if(o.count=(o.count||0)+1,o.count>5){e.multicast(o.origin,1,se.temp_entity,Se.WELDING_SPARKS,o.origin,X,228),e.free(o);return}e.sound(o,0,"weapons/ripphit.wav",1,1,0),c&&e.multicast(o.origin,1,se.temp_entity,Se.WELDING_SPARKS,o.origin,c.normal,228)}},s.think=o=>{e.multicast(o.origin,1,se.temp_entity,Se.WELDING_SPARKS,o.origin,X,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function Wb(e,t,n,i,r,a){xr(e,t,n,i,r,a,58)}function Kb(e,t,n,i){let r={...t.origin},a={x:(n.absmin.x+n.absmax.x)*.5,y:(n.absmin.y+n.absmax.y)*.5,z:(n.absmin.z+n.absmax.z)*.5},s=G(D(a,r)),o={x:r.x+s.x*2048,y:r.y+s.y*2048,z:r.z+s.z*2048},u=16,c=[],d=[],m={...r};try{for(let f=0;f<u;f++){let _=e.trace(m,null,null,o,t,Ye|dn|In|pr);if(!_.ent||_.fraction>=1||(_.ent.takedamage&&_.ent!==t.owner&&_e(_.ent,t,t.owner,s,_.endpos,X,i,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(_.ent.svflags&4)&&!_.ent.client&&_.ent.classname!=="misc_explobox"))break;c.push(_.ent),d.push(_.ent.solid),_.ent.solid=0,m={..._.endpos}}let l=e.trace(r,null,null,o,t,Ye);e.multicast(t.origin,2,se.temp_entity,Se.BFG_LASER,r,l.endpos)}finally{for(let l=0;l<c.length;l++)c[l].solid=d[l]}}function $b(e,t){let n=t.deathmatch?5:10,i=t.findByRadius(e.origin,256);for(let r of i){if(r===e||r===e.owner||!r.takedamage||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let a={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5};t.trace(e.origin,null,null,a,null,fu).fraction<1||Kb(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function Xb(e,t){if((e.frame===void 0||e.frame<0)&&(e.frame=0),e.frame===0){let n=t.findByRadius(e.origin,e.dmg_radius||100);for(let i of n){if(!i.takedamage||i===e.owner||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let r={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5},a=D(e.origin,r),s=Ie(a),o=e.dmg_radius||100,u=(e.radius_dmg||200)*(1-Math.sqrt(s/o));u>0&&_e(i,e,e.owner,e.velocity,r,X,Math.floor(u),0,4,14,t.timeSeconds,t.multicast.bind(t))}}if(e.frame++,e.frame>=5){t.free(e);return}t.scheduleThink(e,t.timeSeconds+.1)}function Uh(e,t,n,i,r,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=r,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(u,c,d,m)=>{if(c===u.owner)return;c&&c.takedamage&&_e(c,u,u.owner,u.velocity,u.origin,d?d.normal:X,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let l=e.findByRadius(u.origin,100);vu(l,u,u.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(u.origin,2,se.temp_entity,Se.BFG_BIGEXPLOSION,u.origin),u.solid=0,u.touch=void 0,u.velocity=X,u.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),u.frame=0,u.enemy=c,u.think=(f,_)=>Xb(f,_),e.scheduleThink(u,e.timeSeconds+.1)},o.think=(u,c)=>$b(u,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}function Yb(e,t,n,i,r,a){let s=e.spawn();s.classname="flechette",s.owner=t,s.origin={...n},s.velocity={x:i.x*a,y:i.y*a,z:i.z*a},s.movetype=8,s.solid=2,s.modelindex=e.modelIndex("models/objects/projectile/tris.md2"),s.mins={x:-2,y:-2,z:-2},s.maxs={x:2,y:2,z:2},s.angles=Fn(i),s.touch=(o,u,c,d)=>{if(u!==o.owner){if(u&&u.takedamage){if(_e(u,o,o.owner,o.velocity,o.origin,c?c.normal:X,r,1,0,43,e.timeSeconds,e.multicast?e.multicast.bind(e):void 0),u.monsterinfo){let m=e.timeSeconds||0;u.monsterinfo.freeze_time=m+3}e.free(o);return}c&&e.multicast(o.origin,1,se.temp_entity,Se.SPARKS,o.origin,c.normal),e.free(o)}},e.finalizeSpawn(s)}U();var PD=1/40;Dn();gn();Lh();gn();var qb=1;gn();Lh();gn();Dn();U();U();var Zb=22;function Nt(e,t,n,i,r,a){let s=Ai(t.origin),o={...s,z:s.z+(t.viewheight??Zb)},u=I(i,n.x),c=I(r,n.y),d=I(a,n.z),m=C(C(C(o,u),c),d),l=e.trace(o,null,null,m,t,fu);return l.fraction<1?{x:l.endpos.x-i.x,y:l.endpos.y-i.y,z:l.endpos.z-i.z}:m}var jb=7,Jb=18,Qb=36,ex=39,tx=5,nx=28,ix=52,rx=57,ax=3,sx=23,ox=52,cx=61,ux=4,dx=21,lx=52,mx=61,fx=3,hx=18,_x=51,gx=56,vx=3,px=12,yx=34,wx=38,Ax=5,Sx=9,kx=28,Ex=32,bx=8,xx=32,Mx=54,Tx=58,Rx=5,zx=16,Lx=36,Nx=39,Ox=4,Ix=8,Cx=52,Px=55;var Fx=46,Dx=53;var Ux=109,Bx=117;var Gx=1;var fn=br();function Ot(e,t,n=0,i=0){e.client&&(e.client.kick_angles={x:t,y:n,z:0},e.client.kick_origin={x:i,y:0,z:0})}function It(e){if(!e.client)return;let t=(e.client.pm_flags&2)!==0;e.client.anim_priority=Gx,t?(e.frame=Ux-1,e.client.anim_end=Bx):(e.frame=Fx-1,e.client.anim_end=Dx)}function Bh(e,t,n,i,r,a,s){let o={x:n.x+i.x*8192,y:n.y+i.y*8192,z:n.z+i.z*8192},u=e.trace(n,null,null,o,t,0);u.ent&&u.ent.takedamage?_e(u.ent,t,t,X,u.endpos,u.plane?u.plane.normal:X,r,a,16,s,e.time,e.multicast):u.plane&&e.multicast(u.endpos,1,se.temp_entity,Se.GUNSHOT,u.endpos,u.plane.normal)}function Zc(e,t,n,i,r,a,s,o,u,c,d,m){for(let l=0;l<s;l++){let f=C(I(r,fn.crandom()*c),I(a,fn.crandom()*d)),_=C(i,f),p={x:n.x+_.x*8192,y:n.y+_.y*8192,z:n.z+_.z*8192},v=e.trace(n,null,null,p,t,0);v.ent&&v.ent.takedamage?_e(v.ent,t,t,X,v.endpos,v.plane?v.plane.normal:X,o,u,16,m,e.time,e.multicast):v.plane&&fn.frandom()>.9&&e.multicast(v.endpos,1,se.temp_entity,Se.GUNSHOT,v.endpos,v.plane.normal)}}function Hx(e,t,n,i,r,a){let s={...n},o={...n},u={x:n.x+i.x*8192,y:n.y+i.y*8192,z:n.z+i.z*8192},c=t,d=0,m=u;for(;d<16;){d++;let l=e.trace(o,null,null,u,c,0);if(m=l.endpos,l.fraction>=1||(l.ent&&l.ent.takedamage&&_e(l.ent,t,t,X,l.endpos,l.plane?l.plane.normal:X,r,a,4,11,e.time,e.multicast),c=l.ent,o=l.endpos,!l.ent||l.ent===e.entities.world))break}e.multicast(s,2,se.temp_entity,Se.RAILTRAIL,s,m)}function Vx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[F.Shells]<1)return;n.ammo.counts[F.Shells]--,e.multicast(t.origin,1,se.muzzleflash,t.index,ph),Ot(t,-2,0,-2),It(t);let{forward:i,right:r,up:a}=Y(t.angles),s=Nt(e,t,{x:8,y:8,z:-8},i,r,a);Zc(e,t,s,i,r,a,12,4,1,500,500,2)}function Wx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[F.Shells]<2)return;n.ammo.counts[F.Shells]-=2,e.multicast(t.origin,1,se.muzzleflash,t.index,kh),Ot(t,-4,0,-4),It(t);let{forward:i,right:r,up:a}=Y(t.angles),s=Nt(e,t,{x:8,y:8,z:-8},i,r,a),{forward:o,right:u,up:c}=Y({...t.angles,y:t.angles.y-5});Zc(e,t,s,o,u,c,10,6,1,700,700,3);let{forward:d,right:m,up:l}=Y({...t.angles,y:t.angles.y+5});Zc(e,t,s,d,m,l,10,6,1,700,700,3)}function Kx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[F.Bullets]<1)return;n.ammo.counts[F.Bullets]--,e.multicast(t.origin,1,se.muzzleflash,t.index,vh),Ot(t,-1,fn.crandom()*.5,0),It(t);let{forward:i,right:r,up:a}=Y(t.angles),s=Nt(e,t,{x:8,y:8,z:-8},i,r,a);Bh(e,t,s,i,8,1,4)}function $x(e,t){if(!t.client)return;let n=t.client.inventory,i=zh(t.client.weaponStates,$.Chaingun);e.time-i.lastFireTime>200&&(i.spinupCount=0);let r=(i.spinupCount||0)+1;i.spinupCount=r;let a;if(r<=5?(a=1,r===1&&e.sound(t,0,"weapons/chngnu1a.wav",1,0,0)):(r<=10?a=2:a=3,e.sound(t,0,"weapons/chngnl1a.wav",1,0,0)),n.ammo.counts[F.Bullets]<a&&(a=n.ammo.counts[F.Bullets]),a===0)return;n.ammo.counts[F.Bullets]-=a;let s=e.deathmatch?6:8,o=1;Ot(t,-.5,fn.crandom()*(.5+a*.15),0),It(t);let{forward:u,right:c,up:d}=Y(t.angles),m=Nt(e,t,{x:8,y:8,z:-8},u,c,d);for(let f=0;f<a;f++){let _=C(I(c,fn.crandom()*4),I(d,fn.crandom()*4)),p=C(u,_);Bh(e,t,m,p,s,o,5)}let l=yh+a-1;e.multicast(t.origin,1,se.muzzleflash,t.index,l)}function Xx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[F.Slugs]<1)return;n.ammo.counts[F.Slugs]--,e.multicast(t.origin,1,se.muzzleflash,t.index,wh),Ot(t,-3,0,-3),It(t);let{forward:i,right:r,up:a}=Y(t.angles),s=Nt(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?100:125,u=e.deathmatch?200:225;Hx(e,t,s,i,o,u)}function Yx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[F.Cells]<1)return;n.ammo.counts[F.Cells]--,e.multicast(t.origin,1,se.muzzleflash,t.index,bh),Ot(t,-.5,0,0),It(t);let{forward:i,right:r,up:a}=Y(t.angles),s=Nt(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?15:20;xr(e.entities,t,s,i,o,1e3,10)}function qx(e,t){if(!t.client)return;e.multicast(t.origin,1,se.muzzleflash,t.index,gh),Ot(t,-.5,0,0),It(t);let{forward:n,right:i,up:r}=Y(t.angles),a=Nt(e,t,{x:8,y:8,z:-8},n,i,r);xr(e.entities,t,a,n,15,1500,1)}function Zx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[F.Rockets]<1)return;n.ammo.counts[F.Rockets]--,e.multicast(t.origin,1,se.muzzleflash,t.index,Ah),Ot(t,-2,0,-2),It(t);let{forward:i,right:r,up:a}=Y(t.angles),s=Nt(e,t,{x:8,y:8,z:-8},i,r,a),o=100+e.random.irandom(21);Dh(e.entities,t,s,i,o,120,650)}function jx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[F.Grenades]<1)return;n.ammo.counts[F.Grenades]--,e.multicast(t.origin,1,se.muzzleflash,t.index,Sh),Ot(t,-2,0,-2),It(t);let{forward:i,right:r,up:a}=Y(t.angles),s=Nt(e,t,{x:8,y:8,z:-8},i,r,a);ts(e.entities,t,s,i,120,600)}function Jx(e,t){if(!t.client)return;let n=t.client.inventory,i=t.client.gun_frame,r=i===9||i===0||i===void 0,a=i===22||i===0||i===void 0;if(r){if(n.ammo.counts[F.Cells]<50)return;n.ammo.counts[F.Cells]-=50,e.sound(t,0,"weapons/bfg__f1y.wav",1,0,0)}if(a){e.multicast(t.origin,1,se.muzzleflash,t.index,Eh),Ot(t,-5,0,-2),It(t);let{forward:s,right:o,up:u}=Y(t.angles),c=Nt(e,t,{x:8,y:8,z:-8},s,o,u),d=e.deathmatch?200:500;Uh(e.entities,t,c,s,d,400,200)}}function on(e){let t=.1;return e.client?.inventory.powerups.has(ue.TechHaste)&&(t*=.5),e.client?.inventory.powerups.has(ue.QuadFire)&&(t*=.25),t}function Xt(e,t,n,i,r,a,s,o,u){if(!e.client)return;let c=e.client,d=u.timeSeconds;if(c.weapon_think_time&&c.weapon_think_time<=d&&(c.weapon_think_time=0),!(c.weapon_think_time&&c.weapon_think_time>d)){if(c.weaponstate===1){if(c.gun_frame<t){c.gun_frame++,c.weapon_think_time=d+on(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=d+on(e);return}if(c.weaponstate===2){if(c.gun_frame<r){c.gun_frame++,c.weapon_think_time=d+on(e);return}Promise.resolve().then(()=>(Eb(),Nh)).then(({ChangeWeapon:m})=>{m(e)});return}if(c.weaponstate===0){if(c.buttons&1){c.weaponstate=3,c.gun_frame=t+1;return}if(c.gun_frame<i){if(c.gun_frame++,c.weapon_think_time=d+on(e),a){for(let m of a)if(c.gun_frame===m&&fn.frandom()<.9375)return}return}c.gun_frame=n+1,c.weapon_think_time=d+on(e);return}if(c.weaponstate===3){if(s){for(let m of s)if(c.gun_frame===m){o&&o(e);break}}if(c.gun_frame<n){c.gun_frame++,c.weapon_think_time=d+on(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=d+on(e);return}}}function pu(e,t,n,i,r,a,s,o){if(!e.client)return;let u=e.client,c=t+1;u.weaponstate===3?(u.gun_frame===n||u.gun_frame===i?u.gun_frame=c:u.gun_frame++,s&&s(e),u.buttons&1||(u.gun_frame=i+1,u.weaponstate=0),u.weapon_think_time=o.timeSeconds+on(e)):Xt(e,t,n,i,r,a,null,s,o)}var Qx=[38,43,51,61];function e6(e,t){let n=zh(e.client.weaponStates,$.Chaingun);!(e.client.buttons&qb)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0),pu(e,ux,dx,lx,mx,Qx,i=>$x(t.game,i),t)}var t6=[22,28,34],n6=[8];function i6(e,t){Xt(e,jb,Jb,Qb,ex,t6,n6,n=>Vx(t.game,n),t)}var r6=[29,42,57],a6=[22,28];function s6(e,t){Xt(e,tx,nx,ix,rx,r6,a6,n=>Wx(t.game,n),t)}var o6=[23,45],c6=[4,5,30,31];function u6(e,t){Xt(e,ax,sx,ox,cx,o6,c6,n=>Kx(t.game,n),t)}var d6=[25,33],l6=[4];function m6(e,t){Xt(e,vx,px,yx,wx,d6,l6,n=>Zx(t.game,n),t)}function f6(e,t){pu(e,Ax,Sx,kx,Ex,null,n=>Yx(t.game,n),t)}var h6=[56],_6=[4];function g6(e,t){Xt(e,fx,hx,_x,gx,h6,_6,n=>Xx(t.game,n),t)}var v6=[39,45,50,54],p6=[9,22];function y6(e,t){Xt(e,bx,xx,Mx,Tx,v6,p6,n=>Jx(t.game,n),t)}var w6=[34,51,59],A6=[6];function S6(e,t){Xt(e,Rx,zx,Lx,Nx,w6,A6,n=>jx(t.game,n),t)}var k6=[19,32],E6=[5];function b6(e,t){Xt(e,Ox,Ix,Cx,Px,k6,E6,n=>qx(t.game,n),t)}U();function x6(e,t,n=0,i=0){e.client&&(e.client.kick_angles={x:t,y:n,z:0},e.client.kick_origin={x:i,y:0,z:0})}var M6=24;function T6(e,t){if(!e.inUse||!e.takedamage||e===t.self)return!1;let n=(c,d,m)=>({x:Math.max(d.x,Math.min(c.x,m.x)),y:Math.max(d.y,Math.min(c.y,m.y)),z:Math.max(d.z,Math.min(c.z,m.z))}),i=n(t.start,{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}),r=n(i,{x:t.self.origin.x+t.self.mins.x,y:t.self.origin.y+t.self.mins.y,z:t.self.origin.z+t.self.mins.z},{x:t.self.origin.x+t.self.maxs.x,y:t.self.origin.y+t.self.maxs.y,z:t.self.origin.z+t.self.maxs.z}),a=D(i,r),s=Ie(a);if(s>t.reach)return!1;let o={x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5},u=G(D(o,t.start));return!(qa(u,t.aim)<.7&&s>1)}function R6(e,t,n,i,r,a,s,o){let u={x:r,y:r,z:r},c={x:t.origin.x+t.mins.x-r,y:t.origin.y+t.mins.y-r,z:t.origin.z+t.mins.z-r},d={x:t.origin.x+t.maxs.x+r,y:t.origin.y+t.maxs.y+r,z:t.origin.z+t.maxs.z+r},m=e.entities.findInBox(c,d),l={self:t,start:n,aim:i,reach:r},f=!1,_=(p,v,y)=>({x:Math.max(v.x,Math.min(p.x,y.x)),y:Math.max(v.y,Math.min(p.y,y.y)),z:Math.max(v.z,Math.min(p.z,y.z))});for(let p of m){if(!T6(p,l))continue;let v={x:p.origin.x+p.mins.x,y:p.origin.y+p.mins.y,z:p.origin.z+p.mins.z},y={x:p.origin.x+p.maxs.x,y:p.origin.y+p.maxs.y,z:p.origin.z+p.maxs.z},S=_(n,v,y);_e(p,t,t,i,S,I(i,-1),a,s/2,8,o,e.time,e.multicast),f=!0}return f}function z6(e,t){let n={x:0,y:0,z:0},i={x:0,y:0,z:0},r={x:0,y:0,z:0},a=t.client?t.client.v_angle:t.angles,s=Y(a||{x:0,y:0,z:0}),o={x:8,y:8,z:-4},u={x:t.origin.x+t.viewheight*0+s.forward.x*o.x+s.right.x*o.y+s.up.x*o.z,y:t.origin.y+t.viewheight*0+s.forward.y*o.x+s.right.y*o.y+s.up.y*o.z,z:t.origin.z+t.viewheight*1+s.forward.z*o.x+s.right.z*o.y+s.up.z*o.z};e.multicast(u,1,se.temp_entity,Se.CHAINFIST_SMOKE,u)}function L6(e,t,n,i,r,a){let s=7;e.deathmatch&&(s=15),t.client&&t.client.quad_time&&t.client.quad_time>e.time&&(s*=4);let o=R6(e,t,r,a,M6,s,100,41);x6(t,-.5,0,0)}function N6(e,t){let n=t.game;if(pu(e,4,32,57,60,[],a=>{let s=a.client?a.client.v_angle:a.angles,u=Y(s||{x:0,y:0,z:0}).forward,c={x:a.origin.x,y:a.origin.y,z:a.origin.z+(a.viewheight||0)},d=a.client?a.client.inventory:{ammo:{counts:[]}};if(L6(n,a,d,{},c,u),a.client){let l=a.client;l.buttons&1?l.gun_frame===12?l.gun_frame=14:l.gun_frame===22?l.gun_frame=24:l.gun_frame>=32&&(l.gun_frame=7):(l.gun_frame===13||l.gun_frame===23||l.gun_frame>=32)&&(l.gun_frame=33)}},t),e.client){let a=e.client.gun_frame;(a===42||a===51)&&Math.random()<.125&&Math.random()<.4&&z6(n,e)}}var FD={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:$.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5,think:b6},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:$.Shotgun,ammoType:F.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:i6},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:$.SuperShotgun,ammoType:F.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:s6},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:$.Machinegun,ammoType:F.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:u6},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:$.Chaingun,ammoType:F.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:e6},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:$.HandGrenade,ammoType:F.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:$.GrenadeLauncher,ammoType:F.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1,think:S6},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:$.RocketLauncher,ammoType:F.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1,think:m6},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:$.HyperBlaster,ammoType:F.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:f6},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:$.Railgun,ammoType:F.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5,think:g6},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:$.BFG10K,ammoType:F.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1,think:y6},weapon_chainfist:{type:"weapon",id:"weapon_chainfist",name:"Chainfist",weaponId:$.ChainFist,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.1,think:N6},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:$.IonRipper,ammoType:F.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:$.Phalanx,ammoType:F.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:$.PlasmaBeam,ammoType:F.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:$.EtfRifle,ammoType:F.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:$.ProxLauncher,ammoType:F.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};Dn();Dn();U();U();var nt=br(),jc=0,Gh=1;function Hh(e){let t=100*nt.crandom(),n=100*nt.crandom(),i=200+100*nt.frandom();return e<50?(t*=.7,n*=.7,i*=.7):(t*=1.2,n*=1.2,i*=1.2),{x:t,y:n,z:i}}function Vh(e){let{x:t,y:n,z:i}=e.velocity;t<-300?t=-300:t>300&&(t=300),n<-300?n=-300:n>300&&(n=300),i<200?i=200:i>500&&(i=500),e.velocity={x:t,y:n,z:i}}function Wh(e,t,n,i,r){e.groundentity&&(e.touch=void 0,n&&r.sound(e,0,"misc/fhit3.wav",1,1,0))}function ft(e,t,n,i,r=jc){let a=e.spawn();a.classname="gib",a.origin={x:t.x+nt.crandom()*20,y:t.y+nt.crandom()*20,z:t.z+nt.crandom()*20};let s=i||"models/objects/gibs/sm_meat/tris.md2";a.modelindex=e.modelIndex(s),a.mins={x:-2,y:-2,z:-2},a.maxs={x:2,y:2,z:2},a.solid=0,a.takedamage=!0,a.die=(c,d,m,l,f,_)=>{e.free(c)},a.clipmask=1;let o=1;r===jc?(a.movetype=7,a.touch=(c,d,m,l)=>Wh(c,d,m,l,e),o=.5):(a.movetype=9,o=1);let u=Hh(n);return a.velocity={x:u.x*o,y:u.y*o,z:u.z*o},Vh(a),a.avelocity={x:nt.frandom()*600,y:nt.frandom()*600,z:nt.frandom()*600},a.think=c=>{e.free(c)},e.scheduleThink(a,e.timeSeconds+10+nt.frandom()*10),e.finalizeSpawn(a),a}function O6(e,t,n){let i=e.spawn(),r;nt.irandom(2)===1?(r="models/objects/gibs/head2/tris.md2",i.skin=1):(r="models/objects/gibs/skull/tris.md2",i.skin=0),i.frame=0,i.modelindex=e.modelIndex(r),i.mins={x:-16,y:-16,z:0},i.maxs={x:16,y:16,z:16},i.origin={x:t.x,y:t.y,z:t.z+32},i.solid=0,i.takedamage=!0,i.die=(o,u,c,d,m,l)=>{e.free(o)};let a=.5;i.movetype=7,i.touch=(o,u,c,d)=>Wh(o,u,c,d,e);let s=Hh(n);return i.velocity={x:s.x*a,y:s.y*a,z:s.z*a},Vh(i),i.avelocity={x:0,y:nt.crandom()*600,z:0},i.think=o=>{e.free(o)},e.scheduleThink(i,e.timeSeconds+10+nt.frandom()*10),e.finalizeSpawn(i),i}function yu(e,t,n,i=jc){if(typeof n=="number"){let r=n;i===Gh?(ft(e,t,r,"models/objects/debris1/tris.md2",i),ft(e,t,r,"models/objects/debris2/tris.md2",i),ft(e,t,r,"models/objects/debris3/tris.md2",i),ft(e,t,r,"models/objects/debris2/tris.md2",i)):(ft(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),ft(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),ft(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),ft(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),ft(e,t,r,"models/objects/gibs/meat/tris.md2",i),ft(e,t,r,"models/objects/gibs/bone/tris.md2",i),O6(e,t,r))}else{let r=n;for(let a of r)for(let s=0;s<a.count;s++)ft(e,t,0,a.model,a.flags)}}U();U();function I6(e,t){let n=e.monsterinfo.current_move;if(!n||((e.frame<n.firstframe||e.frame>n.lastframe)&&(e.monsterinfo.aiflags&=-129,e.frame=n.firstframe),(e.monsterinfo.aiflags&128)!==0))return;let i=e.frame-n.firstframe,r=n.frames[i];r.ai&&r.ai(e,r.dist,t),r.think&&r.think(e,t),e.inUse&&(e.frame++,e.frame>n.lastframe&&n.endfunc&&(n.endfunc(e,t),e.monsterinfo.current_move))}function C6(e,t){if(e.monsterinfo.freeze_time)if(e.monsterinfo.freeze_time>t.timeSeconds){e.renderfx|=gi.ShellBlue|gi.ShellGreen,e.nextthink=t.timeSeconds+.1;return}else e.monsterinfo.freeze_time=0,e.renderfx&=~(gi.ShellBlue|gi.ShellGreen);I6(e,t),e.nextthink<=t.timeSeconds&&(e.nextthink=t.timeSeconds+.1)}var ns=.1,vr=80;var Kh=br();function P6(){return Kh.frandom()}function $h(e,t){return Math.floor(Kh.frandom()*(t-e+1)+e)}function hi(e,t,n){M(e,ns,n)}function ht(e,t,n){z(e,t,ns,n)}function ui(e,t,n){ce(e,t,ns,n)}function Ee(e,t,n){fe(e,t,ns,n)}function Q(e,t,n){g(e,t)}var wr={pain:"berserk/berpain2.wav",die:"berserk/berdeth2.wav",idle:"berserk/beridle1.wav",idle2:"berserk/idle.wav",punch:"berserk/attack.wav",search:"berserk/bersrch1.wav",sight:"berserk/sight.wav",thud:"mutant/thud1.wav",explod:"world/explod2.wav",jump:"berserk/jump.wav",footstep:"misc/step1.wav"};function pt(e,t){t.sound(e,2,wr.footstep,1,1,0)}function Ha(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function F6(e,t){}var wu,Xh,D6,Yh,U6,B6,G6,H6,V6,qh,W6;function K6(e,t){Ha(e,wu)}function $6(e,t){e.monsterinfo.aiflags&1||e.enemy||P6()>.15||(Ha(e,Xh),t.sound(e,1,wr.idle,1,2,0))}var X6=[{ai:hi,dist:0,think:$6},{ai:hi,dist:0},{ai:hi,dist:0},{ai:hi,dist:0},{ai:hi,dist:0}];wu={firstframe:0,lastframe:4,frames:X6,endfunc:null};var Y6=Array.from({length:20},()=>({ai:hi,dist:0}));Xh={firstframe:5,lastframe:24,frames:Y6,endfunc:K6};var q6=[{ai:ht,dist:9.1},{ai:ht,dist:6.3},{ai:ht,dist:4.9},{ai:ht,dist:6.7,think:pt},{ai:ht,dist:6},{ai:ht,dist:8.2},{ai:ht,dist:7.2},{ai:ht,dist:6.1},{ai:ht,dist:4.9},{ai:ht,dist:4.7,think:pt},{ai:ht,dist:4.7}];D6={firstframe:25,lastframe:35,frames:q6,endfunc:null};var Z6=[{ai:ui,dist:21},{ai:ui,dist:11,think:pt},{ai:ui,dist:21},{ai:ui,dist:25,think:F6},{ai:ui,dist:18,think:pt},{ai:ui,dist:19}];Yh={firstframe:36,lastframe:41,frames:Z6,endfunc:null};function Mr(e,t){e.monsterinfo.aiflags&1?Ha(e,wu):Ha(e,Yh)}function Zh(e,t,n,i,r){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=Y(e.angles).forward,o={x:a.x+s.x+t.x,y:a.y+s.y+t.y,z:a.z+s.z+t.z},u={x:a.x+s.x*vr,y:a.y+s.y*vr,z:a.z+s.z*vr},c=r.trace(a,null,null,u,e,536870913);return!c.ent||!c.ent.takedamage?!1:(_e(c.ent,e,e,s,c.endpos,c.plane?.normal||X,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function j6(e,t){Zh(e,{x:vr,y:0,z:-24},$h(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function jh(e,t){t.sound(e,1,wr.punch,1,1,0)}var J6=[{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0,think:jh},{ai:Ee,dist:0,think:j6},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0}];U6={firstframe:67,lastframe:74,frames:J6,endfunc:Mr};function Q6(e,t){Zh(e,{x:vr,y:0,z:-4},$h(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var e3=[{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0,think:pt},{ai:Ee,dist:0},{ai:Ee,dist:0,think:jh},{ai:Ee,dist:0},{ai:Ee,dist:0,think:Q6},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0}];B6={firstframe:75,lastframe:86,frames:e3,endfunc:Mr};function t3(e,t,n,i,r,a){let s=a.findByRadius(e.origin,i);for(let o of s){if(o===e||!o.takedamage)continue;let u=Math.sqrt(Math.pow(o.origin.x-e.origin.x,2)+Math.pow(o.origin.y-e.origin.y,2)+Math.pow(o.origin.z-e.origin.z,2)),c=Math.max(0,1-u/i);if(c<=0)continue;let d=Math.max(1,n*c*c),m=r*c*c,l=G(D(o.origin,e.origin));_e(o,e,t,l,o.origin,l,d,m,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Au(e,t){t.sound(e,1,wr.thud,1,1,0),t.sound(e,2,wr.explod,.75,1,0);let{forward:n,right:i}=Y(e.angles),r={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*r.x+i.x*r.y,y:e.origin.y+n.y*r.x+i.y*r.y,z:e.origin.z+n.z*r.x+i.z*r.y+r.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,se.temp_entity,Se.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},t3(e,e,8,165,300,t)}function n3(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Au(e,r))}function Su(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function i3(e,t){if(!e.enemy)return;let n=D(e.enemy.origin,e.origin),r=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=G({x:n.x,y:n.y,z:0}),s=Fn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(u,c,d,m)=>{n3(u,c,d,m,t),u.groundentity&&(u.frame=104,Au(u,t),u.touch=void 0)},Su(e,t)}function r3(e,t){if(Su(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Au(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var a3=[{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Q,dist:0,think:i3},{ai:Q,dist:0,think:Su},{ai:Q,dist:0,think:r3},{ai:Q,dist:0,think:pt},{ai:Q,dist:0},{ai:Q,dist:0,think:pt},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0,think:pt}];G6={firstframe:87,lastframe:109,frames:a3,endfunc:Mr};var s3=[{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0}];H6={firstframe:149,lastframe:152,frames:s3,endfunc:Mr};var o3=Array.from({length:20},(e,t)=>({ai:Q,dist:0,think:t%5===4?pt:void 0}));V6={firstframe:153,lastframe:172,frames:o3,endfunc:Mr};function Jh(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=qh.lastframe,e.nextthink=-1,e.deadflag=2}var c3=[{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0,think:pt},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0}];qh={firstframe:173,lastframe:185,frames:c3,endfunc:Jh};var u3=[{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0,think:pt},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0}];W6={firstframe:186,lastframe:193,frames:u3,endfunc:Jh};U();function nh(){return 2*Math.random()-1}function Va(e,t,n,i,r,a,s,o,u,c=0){let d=n;if(a>0||s>0){let f=Fn(n),{right:_,up:p}=Y(f),v=nh()*a,y=nh()*s;d={x:n.x+_.x*v+p.x*y,y:n.y+_.y*v+p.y*y,z:n.z+_.z*v+p.z*y},d=G(d)}let m=C(t,I(d,8192)),l=u.trace(t,m,X,X,e,Kt);!l.ent||l.fraction===1||_e(l.ent,e,e,d,l.endpos,l.plane?.normal||X,i,r,18,c,u.timeSeconds)}var hn=Va;function d3(e,t,n,i,r,a,s,o,u,c,d=2){for(let m=0;m<o;m++)hn(e,t,n,i,r,a,s,u,c,d)}function yt(e,t,n,i,r,a,s,o,u=1){xr(o,e,t,n,i,r,u)}function l3(e,t,n,i,r,a,s,o){Wb(o,e,t,n,i,r)}function m3(e,t,n,i,r,a,s,o){Vb(o,e,t,n,i,r)}function f3(e,t,n,i,r,a,s){ts(s,e,t,n,i,r)}function Tr(e,t,n,i,r,a,s){Dh(s,e,t,n,i,120,r)}function Qh(e,t,n,i,r,a,s,o,u){Uh(u,e,t,n,i,r,s)}function e1(e,t,n,i,r,a,s){let o=C(t,I(n,8192)),u=s.trace(t,o,X,X,e,Kt);s.multicast(t,2,se.temp_entity,Se.RAILTRAIL,t,u.endpos),u.ent&&u.ent.takedamage&&_e(u.ent,e,e,n,u.endpos,X,i,r,6,11,s.timeSeconds)}function ki(e,t,n,i,r){if(!e.enemy)return!1;let{forward:a}=Y(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,u=C(s,I(a,o)),c=r.trace(s,u,X,X,e,Kt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let d=G(D(c.endpos,s));return _e(c.ent,e,e,d,c.endpos,c.plane?.normal||X,n,i,0,0,r.timeSeconds),!0}return!1}function h3(e,t,n,i,r,a,s,o){Tr(e,t,n,i,r,a,o)}function ih(e,t){let n={...e.origin},i=C(n,I(e.movedir,2048)),r={...n},a=16,s=[],o=[];try{for(let u=0;u<a;u++){let c=t.trace(r,i,X,X,e,Ye|dn|In|pr);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&_e(c.ent,e,e.owner,e.movedir,c.endpos,X,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,se.temp_entity,Se.LASER_SPARKS,10,c.endpos,c.plane?.normal||X,e.skin);break}if(c.ent&&(c.ent.takedamage||c.ent.client)){s.push(c.ent),o.push(c.ent.solid),c.ent.solid=0,r={...c.endpos};continue}break}}finally{for(let u=0;u<s.length;u++)s[u].solid=o[u]}t.linkentity(e)}function _3(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function Wa(e,t,n,i,r){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=r.spawn(),a.classname="laser_beam",a.movetype=0,a.solid=0,a.renderfx|=8,a.modelindex=1,a.owner=e,a.dmg=t,a.frame=2,a.skin=4076007664,a.think=(s,o)=>{s.postthink&&s.postthink(s,o),o.timeSeconds>=s.timestamp?_3(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),ih(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),ih(a,r)}function g3(e,t,n,i,r,a,s){Yb(s,e,t,n,i,r)}U();var ku=.1,v3={x:0,y:30,z:-15},p3={x:0,y:15,z:0},y3={x:0,y:-15,z:0},w3={x:0,y:-30,z:-15},A3={x:30,y:20,z:0},S3={x:30,y:-20,z:0};function k3(e,t,n){M(e,ku,n)}function E3(e,t,n){z(e,t,ku,n)}function is(e,t,n){fe(e,t,ku,n)}function Eu(e,t,n){g(e,t)}var bu,t1,n1,b3,i1,r1,x3,M3,T3,a1;function R3(e){e.monsterinfo.current_move=bu}function z3(e){e.monsterinfo.current_move=t1}function Rr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=n1:e.monsterinfo.current_move=bu}function s1(e){e.monsterinfo.current_move=i1}function L3(e){e.enemy&&yr(e,e.enemy)&&Math.random()<=.7?s1(e):e.monsterinfo.current_move=r1}function Jc(e,t){let{forward:n,right:i,up:r}=Y(e.angles),a={...e.origin},s=I(n,t.x),o=I(i,t.y),u=I(r,t.z);return C(C(C(a,s),o),u)}function N3(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=Jc(e,A3),i=G(D(e.enemy.origin,n));hn(e,n,i,6,4,.1,.05,0,t,4);let r=Jc(e,S3),a=G(D(e.enemy.origin,r));hn(e,r,a,6,4,.1,.05,0,t,4)}function O3(e,t){if(!e.enemy)return;let n=[v3,p3,y3,w3],i=n[Math.floor(Math.random()*n.length)],r=Jc(e,i),a=G(D(e.enemy.origin,r));Tr(e,r,a,50,500,0,t)}function I3(e){e.monsterinfo.nextframe=a1.lastframe,e.nextthink=-1}var o1=Array.from({length:20},()=>({ai:E3,dist:10}));t1={firstframe:0,lastframe:19,frames:o1,endfunc:z3};n1={firstframe:0,lastframe:19,frames:o1,endfunc:Rr};var C3=Array.from({length:21},()=>({ai:k3,dist:0}));bu={firstframe:29,lastframe:49,frames:C3,endfunc:R3};var P3=Array.from({length:9},(e,t)=>({ai:is,dist:2,think:t===8?s1:null}));b3={firstframe:50,lastframe:58,frames:P3,endfunc:null};var F3=Array.from({length:6},()=>({ai:is,dist:2,think:N3}));i1={firstframe:59,lastframe:64,frames:F3,endfunc:L3};var D3=Array.from({length:4},()=>({ai:is,dist:2}));r1={firstframe:65,lastframe:68,frames:D3,endfunc:Rr};var U3=Array.from({length:21},(e,t)=>({ai:is,dist:2,think:t===12?O3:null}));x3={firstframe:69,lastframe:89,frames:U3,endfunc:Rr};var B3=Array.from({length:18},()=>({ai:Eu,dist:0}));M3={firstframe:90,lastframe:107,frames:B3,endfunc:Rr};var G3=Array.from({length:4},()=>({ai:Eu,dist:0}));T3={firstframe:108,lastframe:111,frames:G3,endfunc:Rr};var H3=Array.from({length:49},()=>({ai:Eu,dist:0}));a1={firstframe:112,lastframe:160,frames:H3,endfunc:I3};U();var rs=.1,xu=80,as=Math.random;function c1(e,t,n){M(e,rs,n)}function _t(e,t,n){z(e,t,rs,n)}function gt(e,t,n){ce(e,t,rs,n)}function B(e,t,n){fe(e,t,rs,n)}function j(e,t,n){g(e,t)}var Mu,V3,W3,u1,d1,K3,$3,X3,Y3,q3,Z3,j3,J3,Q3;function l1(e){e.monsterinfo.current_move=Mu}function pn(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=Mu:e.monsterinfo.current_move=u1}function e8(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function t8(e,t){let n={x:xu,y:e.maxs.x,z:8};ki(e,n,15+Math.floor(as()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function n8(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function i8(e,t){let n={x:xu,y:e.mins.x,z:8};ki(e,n,15+Math.floor(as()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function m1(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function f1(e,t){ki(e,{x:xu,y:0,z:8},10+Math.floor(as()*5),-600,t)?e.count=1:e.monsterinfo.melee_debounce_time=t.timeSeconds+3,t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0)}function h1(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=d1)}function rh(e,t){if(!e.enemy)return;let n=Y(e.angles).forward,i={...e.origin};i.z+=24;let r={...e.enemy.origin};if(t.trace(i,r,X,X,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,se.temp_entity,Se.PARASITE_ATTACK,e,i,r);let s=D(i,r);_e(e.enemy,e,e,s,e.enemy.origin,X,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=Y(e.angles).forward;e.enemy.velocity=I(o,-1200)}var ah=[{x:.7467,y:.23837,z:34.16769},{x:-1.07639,y:.23837,z:33.386372},{x:-1.3355,y:5.3343,z:32.17717},{x:-.17536,y:8.84637,z:30.635479},{x:-2.75759,y:7.80461,z:30.15086},{x:-5.57509,y:5.15284,z:30.05616},{x:-7.01755,y:3.26247,z:30.552521},{x:-7.91574,y:.6388,z:33.176189},{x:-3.91539,y:8.28573,z:33.976349},{x:-.91354,y:10.93303,z:34.141811},{x:-.3699,y:8.9239,z:34.189079}],sh=[{x:-3.36471,y:.32775,z:33.938381},{x:-5.14045,y:.49348,z:32.659851},{x:-5.34198,y:5.64698,z:31.277901},{x:-4.13448,y:9.27744,z:29.925621},{x:-6.59834,y:6.81509,z:29.32262},{x:-8.61084,y:2.52965,z:29.251591},{x:-9.23136,y:.09328,z:29.747959},{x:-11.00411,y:1.93693,z:32.39526},{x:-7.87831,y:7.64819,z:33.148151},{x:-4.94737,y:11.43005,z:33.31361},{x:-4.33282,y:9.44457,z:33.52634}];function r8(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=Y(n.angles),s=n.frame-0;(s<0||s>=ah.length)&&(s=0);let o=ah[s],u=C(n.origin,I(r,o.x));u=C(u,I(i,o.y)),u=C(u,I(a,o.z));let c=G(D(n.enemy.origin,u));e.origin=u,e.movedir=c,t.linkentity(e)}function a8(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=Y(n.angles),s=n.frame-0;(s<0||s>=sh.length)&&(s=0);let o=sh[s],u=C(n.origin,I(r,o.x));u=C(u,I(i,o.y)),u=C(u,I(a,o.z));let c=G(D(n.enemy.origin,u));e.origin=u,e.movedir=c,t.linkentity(e)}function Rt(e,t){Wa(e,1,!1,r8,t),Wa(e,1,!0,a8,t)}function s8(e){as()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function o8(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function c8(e){}function u8(e){e.monsterinfo.aiflags&=-17}var d8=Array.from({length:30},()=>({ai:c1,dist:0}));Mu={firstframe:162,lastframe:191,frames:d8,endfunc:l1};var l8=Array.from({length:30},()=>({ai:c1,dist:0}));V3={firstframe:192,lastframe:221,frames:l8,endfunc:l1};var m8=[{ai:_t,dist:7},{ai:_t,dist:2},{ai:_t,dist:3},{ai:_t,dist:3},{ai:_t,dist:1},{ai:_t,dist:0},{ai:_t,dist:0},{ai:_t,dist:9},{ai:_t,dist:-4},{ai:_t,dist:-1},{ai:_t,dist:2}];W3={firstframe:0,lastframe:10,frames:m8,endfunc:null};var f8=[{ai:gt,dist:9},{ai:gt,dist:2},{ai:gt,dist:3},{ai:gt,dist:3},{ai:gt,dist:1},{ai:gt,dist:0},{ai:gt,dist:0},{ai:gt,dist:10},{ai:gt,dist:-4},{ai:gt,dist:-1},{ai:gt,dist:2}];u1={firstframe:0,lastframe:10,frames:f8,endfunc:null};var h8=[{ai:B,dist:8},{ai:B,dist:3},{ai:B,dist:5},{ai:B,dist:0},{ai:B,dist:-3,think:e8},{ai:B,dist:0},{ai:B,dist:-5},{ai:B,dist:-7,think:t8},{ai:B,dist:0},{ai:B,dist:6,think:n8},{ai:B,dist:1},{ai:B,dist:2,think:i8},{ai:B,dist:-3},{ai:B,dist:6},{ai:B,dist:-1},{ai:B,dist:-3},{ai:B,dist:2},{ai:B,dist:-11}];d1={firstframe:53,lastframe:70,frames:h8,endfunc:pn};var _8=[{ai:B,dist:5},{ai:B,dist:-4},{ai:B,dist:-4},{ai:B,dist:-3},{ai:B,dist:0,think:m1},{ai:B,dist:0},{ai:B,dist:13,think:f1},{ai:B,dist:0},{ai:B,dist:2},{ai:B,dist:0},{ai:B,dist:-9,think:h1},{ai:B,dist:0},{ai:B,dist:4},{ai:B,dist:3},{ai:B,dist:2},{ai:B,dist:-3},{ai:B,dist:-6}];K3={firstframe:71,lastframe:87,frames:_8,endfunc:pn};var g8=[{ai:B,dist:5},{ai:B,dist:-4},{ai:B,dist:-4},{ai:B,dist:-3},{ai:B,dist:0,think:m1},{ai:B,dist:0,think:rh},{ai:B,dist:13},{ai:B,dist:0,think:f1},{ai:B,dist:2},{ai:B,dist:0,think:rh},{ai:B,dist:-9,think:h1},{ai:B,dist:0},{ai:B,dist:4},{ai:B,dist:3},{ai:B,dist:2},{ai:B,dist:-3},{ai:B,dist:-6}];$3={firstframe:71,lastframe:87,frames:g8,endfunc:pn};var v8=[{ai:B,dist:9,think:Rt},{ai:B,dist:2,think:Rt},{ai:B,dist:3,think:Rt},{ai:B,dist:3,think:Rt},{ai:B,dist:1,think:Rt},{ai:B,dist:0,think:Rt},{ai:B,dist:0,think:Rt},{ai:B,dist:10,think:Rt},{ai:B,dist:-4,think:Rt},{ai:B,dist:-1,think:Rt},{ai:B,dist:2,think:s8}];X3={firstframe:0,lastframe:10,frames:v8,endfunc:pn};var p8=[{ai:j,dist:-6},{ai:j,dist:-2},{ai:j,dist:-6},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:2},{ai:j,dist:0},{ai:j,dist:2},{ai:j,dist:1},{ai:j,dist:7},{ai:j,dist:0},{ai:j,dist:3},{ai:j,dist:-1}];Y3={firstframe:88,lastframe:108,frames:p8,endfunc:pn};var y8=[{ai:j,dist:-2},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:3},{ai:j,dist:1},{ai:j,dist:-2}];q3={firstframe:109,lastframe:116,frames:y8,endfunc:pn};var w8=[{ai:j,dist:-2},{ai:j,dist:2},{ai:j,dist:1},{ai:j,dist:3},{ai:j,dist:0},{ai:j,dist:-4}];Z3={firstframe:117,lastframe:122,frames:w8,endfunc:pn};var A8=Array.from({length:18},()=>({ai:j,dist:0}));j3={firstframe:123,lastframe:140,frames:A8,endfunc:_1};var S8=[{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:9},{ai:j,dist:0}];J3={firstframe:141,lastframe:145,frames:S8,endfunc:_1};var k8=[{ai:j,dist:0},{ai:j,dist:-2,think:o8},{ai:j,dist:17,think:c8},{ai:j,dist:-3},{ai:j,dist:-1,think:u8},{ai:j,dist:-5},{ai:j,dist:-6},{ai:j,dist:-6}];Q3={firstframe:146,lastframe:153,frames:k8,endfunc:pn};function _1(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}U();var ss=.1,E8=80,Ei=Math.random;function g1(e,t,n){M(e,ss,n)}function b8(e,t,n){z(e,t,ss,n)}function x8(e,t,n){ce(e,t,ss,n)}function J(e,t,n){fe(e,t,ss,n)}function bi(e,t,n){g(e,t)}var Tu,v1,p1,M8,Ru,Qc,T8,zu,y1,R8,z8,L8,N8,O8,I8,w1;function A1(e){e.monsterinfo.current_move=Tu}function C8(e){e.monsterinfo.current_move=v1}function Un(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Tu;return}e.monsterinfo.current_move=p1}function P8(e){e.monsterinfo.aiflags&4||e.enemy||Ei()<=.3&&(e.monsterinfo.current_move=w1)}function F8(e,t){Ei()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function D8(e,t){let n={x:E8,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),ki(e,n,10+Math.floor(Ei()*6),100,t)}function U8(e,t){let{forward:n,right:i}=Y(e.angles),r={x:0,y:20,z:40},a=C(e.origin,I(n,r.x)),s=I(i,r.y),o=C(a,s),u={...o,z:o.z+r.z},c=e.skin>1?500:650,d=!!e.monsterinfo.blindfire,m=X;if(d&&e.monsterinfo.blind_fire_target)m=e.monsterinfo.blind_fire_target;else if(e.enemy)m=e.enemy.origin;else return;let l=D(m,u);!d&&e.enemy&&(Ei()<.33||u.z<e.enemy.absmin.z?l={...l,z:l.z+e.enemy.viewheight}:l={...l,z:e.enemy.absmin.z+1-u.z});let f=G(l);e.skin>1?h3(e,u,f,50,c,0,.075,t):Tr(e,u,f,50,c,0,t)}function B8(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=D(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=Fn(n).y}}function G8(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function H8(e){e.monsterinfo.current_move=Ru}function V8(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=Qc;return}if(e.enemy&&e.enemy.health>0&&Ei()<=.6){e.monsterinfo.current_move=Ru;return}e.monsterinfo.current_move=Qc}function W8(e){if(e.enemy&&e.enemy.health>0&&Ei()<=.9){e.monsterinfo.current_move=zu;return}e.monsterinfo.current_move=y1}function K8(e){e.monsterinfo.current_move=zu}var $8=Array.from({length:30},(e,t)=>({ai:g1,dist:0,think:t===8?(n,i)=>F8(n,i):null}));w1={firstframe:201,lastframe:230,frames:$8,endfunc:A1};var X8=Array.from({length:30},(e,t)=>({ai:g1,dist:0,think:t===29?P8:null}));Tu={firstframe:101,lastframe:130,frames:X8,endfunc:A1};var Y8=Array.from({length:10},()=>({ai:b8,dist:6}));v1={firstframe:171,lastframe:180,frames:Y8,endfunc:C8};var q8=Array.from({length:10},()=>({ai:x8,dist:12}));p1={firstframe:171,lastframe:180,frames:q8,endfunc:Un};var Z8=Array.from({length:5},()=>({ai:bi,dist:0}));R8={firstframe:90,lastframe:94,frames:Z8,endfunc:Un};var j8=Array.from({length:5},()=>({ai:bi,dist:0}));z8={firstframe:95,lastframe:99,frames:j8,endfunc:Un};var J8=Array.from({length:21},()=>({ai:bi,dist:0}));L8={firstframe:100,lastframe:120,frames:J8,endfunc:Un};var Q8=Array.from({length:12},()=>({ai:bi,dist:0}));N8={firstframe:48,lastframe:59,frames:Q8,endfunc:S1};var eM=Array.from({length:23},()=>({ai:bi,dist:0}));O8={firstframe:60,lastframe:82,frames:eM,endfunc:S1};function S1(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var tM=[{ai:J,dist:0,think:B8},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:4},{ai:J,dist:0},{ai:J,dist:-3},{ai:J,dist:3},{ai:J,dist:5},{ai:J,dist:7},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0,think:H8}];M8={firstframe:0,lastframe:12,frames:tM,endfunc:null};var nM=[{ai:J,dist:19,think:U8},{ai:J,dist:-6},{ai:J,dist:-5},{ai:J,dist:-2},{ai:J,dist:-7},{ai:J,dist:0},{ai:J,dist:1},{ai:J,dist:10,think:G8},{ai:J,dist:4},{ai:J,dist:5},{ai:J,dist:6},{ai:J,dist:6},{ai:J,dist:4},{ai:J,dist:3,think:V8}];Ru={firstframe:13,lastframe:26,frames:nM,endfunc:null};var iM=[{ai:J,dist:-3},{ai:J,dist:0},{ai:J,dist:-6},{ai:J,dist:-4},{ai:J,dist:-2}];Qc={firstframe:27,lastframe:31,frames:iM,endfunc:Un};var rM=[{ai:J,dist:1},{ai:J,dist:8},{ai:J,dist:3}];T8={firstframe:32,lastframe:34,frames:rM,endfunc:K8};var aM=[{ai:J,dist:1},{ai:J,dist:7,think:D8},{ai:J,dist:-7},{ai:J,dist:1},{ai:J,dist:-1},{ai:J,dist:1},{ai:J,dist:0},{ai:J,dist:1},{ai:J,dist:-2,think:W8}];zu={firstframe:35,lastframe:43,frames:aM,endfunc:null};var sM=[{ai:J,dist:-6},{ai:J,dist:-1},{ai:J,dist:-6},{ai:J,dist:0}];y1={firstframe:44,lastframe:47,frames:sM,endfunc:Un};var oM=Array.from({length:7},()=>({ai:bi,dist:0}));I8={firstframe:83,lastframe:89,frames:oM,endfunc:Un};var os=.1,cM=80,uM=24;function dM(e,t,n){M(e,os,n)}function lM(e,t,n){z(e,t,os,n)}function k1(e,t,n){ce(e,t,os,n)}function Me(e,t,n){fe(e,t,os,n)}function Lu(e,t,n){g(e,t)}var mM,fM,E1,b1,hM,_M,gM,vM;function pM(e){e.monsterinfo.current_move=b1}function Nu(e){e.monsterinfo.current_move=E1}function oh(e,t){ki(e,{x:cM,y:0,z:0},5,0,t)}function yM(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var wM=[{ai:dM,dist:0}];mM={firstframe:41,lastframe:41,frames:wM,endfunc:null};var AM=Array.from({length:24},()=>({ai:k1,dist:uM}));b1={firstframe:70,lastframe:93,frames:AM,endfunc:null};var SM=Array.from({length:6},()=>({ai:k1,dist:8}));E1={firstframe:65,lastframe:70,frames:SM,endfunc:pM};var kM=Array.from({length:24},()=>({ai:lM,dist:4}));fM={firstframe:41,lastframe:64,frames:kM,endfunc:null};var EM=Array.from({length:5},()=>({ai:Lu,dist:0}));_M={firstframe:99,lastframe:103,frames:EM,endfunc:Nu};var bM=Array.from({length:5},()=>({ai:Lu,dist:0}));gM={firstframe:94,lastframe:98,frames:bM,endfunc:Nu};var xM=[{ai:Me,dist:0,think:yM},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0,think:oh},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0,think:oh},{ai:Me,dist:0}];hM={firstframe:0,lastframe:19,frames:xM,endfunc:Nu};function MM(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var TM=Array.from({length:56},()=>({ai:Lu,dist:0}));vM={firstframe:104,lastframe:159,frames:TM,endfunc:MM};U();var cs=.1;function RM(e,t,n){M(e,cs,n)}function zM(e,t,n){z(e,t,cs,n)}function LM(e,t,n){ce(e,t,cs,n)}function NM(e,t,n){fe(e,t,cs,n)}function x1(e,t,n){g(e,t)}var Ou,M1,T1,OM,IM,R1;function CM(e){e.monsterinfo.current_move=Ou}function PM(e){e.monsterinfo.current_move=M1}function Iu(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=T1:e.monsterinfo.current_move=Ou}function FM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(D(e.enemy.origin,n));yt(e,n,i,5,1e3,0,0,t,1)}function DM(e){e.monsterinfo.nextframe=R1.lastframe,e.nextthink=-1}var UM=Array.from({length:46},()=>({ai:RM,dist:0}));Ou={firstframe:0,lastframe:45,frames:UM,endfunc:CM};var BM=Array.from({length:46},()=>({ai:zM,dist:5}));M1={firstframe:0,lastframe:45,frames:BM,endfunc:PM};var GM=Array.from({length:46},()=>({ai:LM,dist:10}));T1={firstframe:0,lastframe:45,frames:GM,endfunc:Iu};var HM=Array.from({length:20},(e,t)=>({ai:NM,dist:0,think:t===10?FM:null}));OM={firstframe:46,lastframe:65,frames:HM,endfunc:Iu};var VM=Array.from({length:6},()=>({ai:x1,dist:0}));IM={firstframe:66,lastframe:71,frames:VM,endfunc:Iu};var WM=Array.from({length:10},()=>({ai:x1,dist:0}));R1={firstframe:84,lastframe:93,frames:WM,endfunc:DM};U();var us=.1;function KM(e,t,n){M(e,us,n)}function $M(e,t,n){z(e,t,us,n)}function XM(e,t,n){ce(e,t,us,n)}function YM(e,t,n){fe(e,t,us,n)}function z1(e,t,n){g(e,t)}var Cu,L1,N1,qM,ZM,O1;function jM(e){e.monsterinfo.current_move=Cu}function JM(e){e.monsterinfo.current_move=L1}function Pu(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=N1:e.monsterinfo.current_move=Cu}function QM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(D(e.enemy.origin,n));yt(e,n,i,5,1e3,0,0,t,1)}function eT(e,t){if(!e.enemy)return;let n=5+Math.random()*5;vn(e,e.enemy)<=80&&yr(e,e.enemy)&&_e(e.enemy,e,e,G(D(e.enemy.origin,e.origin)),e.enemy.origin,X,n,5,2,0,t.timeSeconds)}function tT(e){e.monsterinfo.nextframe=O1.lastframe,e.nextthink=-1}var nT=Array.from({length:46},()=>({ai:KM,dist:0}));Cu={firstframe:0,lastframe:45,frames:nT,endfunc:jM};var iT=Array.from({length:46},()=>({ai:$M,dist:5}));L1={firstframe:0,lastframe:45,frames:iT,endfunc:JM};var rT=Array.from({length:46},()=>({ai:XM,dist:10}));N1={firstframe:0,lastframe:45,frames:rT,endfunc:Pu};var aT=Array.from({length:20},(e,t)=>({ai:YM,dist:0,think:t===10?QM:t===12?eT:null}));qM={firstframe:46,lastframe:65,frames:aT,endfunc:Pu};var sT=Array.from({length:6},()=>({ai:z1,dist:0}));ZM={firstframe:66,lastframe:71,frames:sT,endfunc:Pu};var oT=Array.from({length:10},()=>({ai:z1,dist:0}));O1={firstframe:84,lastframe:93,frames:oT,endfunc:tT};U();var ds=.1;function cT(e,t,n){M(e,ds,n)}function uT(e,t,n){z(e,t,ds,n)}function dT(e,t,n){ce(e,t,ds,n)}function I1(e,t,n){fe(e,t,ds,n)}function C1(e,t,n){g(e,t)}var Fu,P1,F1,lT,mT,fT,D1;function hT(e){e.monsterinfo.current_move=Fu}function _T(e){e.monsterinfo.current_move=P1}function ls(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=F1:e.monsterinfo.current_move=Fu}function gT(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function vT(e,t){if(!e.enemy||!yr(e,e.enemy))return;let n=vn(e,e.enemy);if(gT(n)!=="melee")return;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=G(D(e.enemy.origin,i));_e(e.enemy,e,e,r,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function pT(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=G(D(e.enemy.origin,n));e1(e,n,i,50,100,0,t)}function yT(e){e.monsterinfo.nextframe=D1.lastframe,e.nextthink=-1}var wT=Array.from({length:30},()=>({ai:cT,dist:0}));Fu={firstframe:0,lastframe:29,frames:wT,endfunc:hT};var AT=Array.from({length:40},()=>({ai:uT,dist:3}));P1={firstframe:30,lastframe:69,frames:AT,endfunc:_T};var ST=Array.from({length:20},()=>({ai:dT,dist:12}));F1={firstframe:70,lastframe:89,frames:ST,endfunc:ls};var kT=Array.from({length:10},(e,t)=>({ai:I1,dist:0,think:t===5?vT:null}));lT={firstframe:90,lastframe:99,frames:kT,endfunc:ls};var ET=Array.from({length:12},(e,t)=>({ai:I1,dist:0,think:t===6?pT:null}));mT={firstframe:100,lastframe:111,frames:ET,endfunc:ls};var bT=Array.from({length:6},()=>({ai:C1,dist:0}));fT={firstframe:112,lastframe:117,frames:bT,endfunc:ls};var xT=Array.from({length:12},()=>({ai:C1,dist:0}));D1={firstframe:118,lastframe:129,frames:xT,endfunc:yT};U();var ms=.1;function U1(e,t,n){M(e,ms,n)}function MT(e,t,n){z(e,t,ms,n)}function B1(e,t,n){ce(e,t,ms,n)}function fs(e,t,n){fe(e,t,ms,n)}function Te(e,t,n){g(e,t)}var Du,G1,TT,H1,RT,zT,LT,Uu,V1,NT,OT,IT,W1,CT,K1;function PT(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function FT(e){e.monsterinfo.current_move=Du}function DT(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=G1)}function Bn(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Du:e.monsterinfo.current_move=H1}function UT(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function BT(e,t){e.monsterinfo.current_move=Uu}function GT(e,t){if(e.enemy&&e.enemy.health>0&&$t(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=Uu;return}e.monsterinfo.current_move=V1}function HT(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},i=G(D(e.enemy.origin,n)),r=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),hn(e,n,i,r,a,300,500,0,t,5)}function $1(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(D(e.enemy.origin,n)),r=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),ts(t,e,n,i,r,a)}function VT(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&$1(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function WT(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function KT(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function $T(e,t){if(!e.enemy)return;let n=D(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),r=600,a=G({x:n.x,y:n.y,z:0}),s=Fn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:270},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3}function XT(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049;return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=214:e.monsterinfo.nextframe=212}function YT(e,t){if(e.spawnflags&16||!e.enemy||!e.groundentity)return;Math.sqrt(Math.pow(e.enemy.origin.x-e.origin.x,2)+Math.pow(e.enemy.origin.y-e.origin.y,2))>256&&Math.random()<.02&&(t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),e.monsterinfo.current_move=K1)}var qT=Array.from({length:30},(e,t)=>({ai:U1,dist:0,think:t===29?DT:null}));Du={firstframe:0,lastframe:29,frames:qT,endfunc:null};var ZT=Array.from({length:40},(e,t)=>({ai:U1,dist:0,think:t===7?PT:null}));G1={firstframe:30,lastframe:69,frames:ZT,endfunc:FT};var jT=[0,3,4,5,7,2,6,4,2,7,5,7,4],JT=jT.map(e=>({ai:MT,dist:e}));TT={firstframe:76,lastframe:88,frames:JT,endfunc:null};var QT=[26,9,9,9,15,10,13,6],e4=QT.map((e,t)=>({ai:B1,dist:e,think:t%4===0?YT:null}));H1={firstframe:94,lastframe:101,frames:e4,endfunc:null};var t4=[32,15,10,18,8,20],n4=t4.map(e=>({ai:B1,dist:e}));RT={firstframe:102,lastframe:107,frames:n4,endfunc:null};var i4=Array.from({length:21},(e,t)=>({ai:fs,dist:0,think:[4,7,10,13].includes(t)?$1:null}));LT={firstframe:108,lastframe:128,frames:i4,endfunc:Bn};var r4=Array.from({length:7},(e,t)=>({ai:fs,dist:0,think:t===0?UT:null}));zT={firstframe:137,lastframe:143,frames:r4,endfunc:BT};var a4=Array.from({length:8},()=>({ai:fs,dist:0,think:HT}));Uu={firstframe:144,lastframe:151,frames:a4,endfunc:GT};var s4=Array.from({length:7},()=>({ai:fs,dist:0}));V1={firstframe:152,lastframe:158,frames:s4,endfunc:Bn};var o4=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],c4=o4.map(e=>({ai:Te,dist:e}));NT={firstframe:159,lastframe:176,frames:c4,endfunc:Bn};var u4=[-2,11,6,2,-1,-7,-2,-7],d4=u4.map(e=>({ai:Te,dist:e}));OT={firstframe:177,lastframe:184,frames:d4,endfunc:Bn};var l4=[-3,1,1,0,1],m4=l4.map(e=>({ai:Te,dist:e}));IT={firstframe:185,lastframe:189,frames:m4,endfunc:Bn};var f4=[0,0,0,-7,-3,-5,8,6,0,0,0],h4=f4.map(e=>({ai:Te,dist:e}));function _4(e){e.monsterinfo.nextframe=W1.lastframe,e.nextthink=-1,e.solid=0}W1={firstframe:190,lastframe:200,frames:h4,endfunc:_4};var g4=[{ai:Te,dist:1,think:VT},{ai:Te,dist:1},{ai:Te,dist:1,think:WT},{ai:Te,dist:0},{ai:Te,dist:-1},{ai:Te,dist:-1},{ai:Te,dist:0,think:KT},{ai:Te,dist:-1}];CT={firstframe:201,lastframe:208,frames:g4,endfunc:Bn};var v4=[{ai:Te,dist:0,think:$T},{ai:Te,dist:0},{ai:Te,dist:0},{ai:Te,dist:0,think:XT},{ai:Te,dist:0},{ai:Te,dist:0},{ai:Te,dist:0},{ai:Te,dist:0}];K1={firstframe:209,lastframe:216,frames:v4,endfunc:Bn};U();var hs=.1;function p4(e,t,n){M(e,hs,n)}function y4(e,t,n){z(e,t,hs,n)}function w4(e,t,n){ce(e,t,hs,n)}function A4(e,t,n){fe(e,t,hs,n)}function X1(e,t,n){g(e,t)}var Bu,Y1,q1,S4,k4,Z1;function E4(e){e.monsterinfo.current_move=Bu}function b4(e){e.monsterinfo.current_move=Y1}function Gu(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=q1:e.monsterinfo.current_move=Bu}function x4(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(D(e.enemy.origin,n));yt(e,n,i,5,1e3,0,0,t,1)}function M4(e){e.monsterinfo.nextframe=Z1.lastframe,e.nextthink=-1}var T4=Array.from({length:46},()=>({ai:p4,dist:0}));Bu={firstframe:0,lastframe:45,frames:T4,endfunc:E4};var R4=Array.from({length:46},()=>({ai:y4,dist:5}));Y1={firstframe:0,lastframe:45,frames:R4,endfunc:b4};var z4=Array.from({length:46},()=>({ai:w4,dist:10}));q1={firstframe:0,lastframe:45,frames:z4,endfunc:Gu};var L4=Array.from({length:20},(e,t)=>({ai:A4,dist:0,think:t===10?x4:null}));S4={firstframe:46,lastframe:65,frames:L4,endfunc:Gu};var N4=Array.from({length:6},()=>({ai:X1,dist:0}));k4={firstframe:66,lastframe:71,frames:N4,endfunc:Gu};var O4=Array.from({length:10},()=>({ai:X1,dist:0}));Z1={firstframe:84,lastframe:93,frames:O4,endfunc:M4};U();var _s=.1;function I4(e,t,n){M(e,_s,n)}function C4(e,t,n){z(e,t,_s,n)}function P4(e,t,n){ce(e,t,_s,n)}function F4(e,t,n){fe(e,t,_s,n)}function j1(e,t,n){g(e,t)}var Hu,J1,Q1,D4,U4,e_;function B4(e){e.monsterinfo.current_move=Hu}function G4(e){e.monsterinfo.current_move=J1}function Vu(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Q1:e.monsterinfo.current_move=Hu}function H4(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(D(e.enemy.origin,n));yt(e,n,i,5,1e3,0,0,t,1)}function V4(e){e.monsterinfo.nextframe=e_.lastframe,e.nextthink=-1}var W4=Array.from({length:46},()=>({ai:I4,dist:0}));Hu={firstframe:0,lastframe:45,frames:W4,endfunc:B4};var K4=Array.from({length:46},()=>({ai:C4,dist:5}));J1={firstframe:0,lastframe:45,frames:K4,endfunc:G4};var $4=Array.from({length:46},()=>({ai:P4,dist:10}));Q1={firstframe:0,lastframe:45,frames:$4,endfunc:Vu};var X4=Array.from({length:20},(e,t)=>({ai:F4,dist:0,think:t===10?H4:null}));D4={firstframe:46,lastframe:65,frames:X4,endfunc:Vu};var Y4=Array.from({length:6},()=>({ai:j1,dist:0}));U4={firstframe:66,lastframe:71,frames:Y4,endfunc:Vu};var q4=Array.from({length:10},()=>({ai:j1,dist:0}));e_={firstframe:84,lastframe:93,frames:q4,endfunc:V4};U();var gs=.1;function Z4(e,t,n){M(e,gs,n)}function j4(e,t,n){z(e,t,gs,n)}function J4(e,t,n){ce(e,t,gs,n)}function Q4(e,t,n){fe(e,t,gs,n)}function Wu(e,t,n){g(e,t)}var Ku,t_,n_,eR,tR,i_,nR;function iR(e){e.monsterinfo.current_move=Ku}function rR(e){e.monsterinfo.current_move=t_}function vs(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=n_:e.monsterinfo.current_move=Ku}function aR(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},r=G(D(i,n));hn(e,n,r,5,2,.05,.05,0,t,4)}var sR=Array.from({length:22},()=>({ai:Z4,dist:0}));Ku={firstframe:0,lastframe:21,frames:sR,endfunc:iR};var oR=Array.from({length:15},()=>({ai:j4,dist:4}));t_={firstframe:22,lastframe:36,frames:oR,endfunc:rR};var cR=Array.from({length:8},()=>({ai:J4,dist:12}));n_={firstframe:37,lastframe:44,frames:cR,endfunc:vs};var uR=Array.from({length:15},(e,t)=>({ai:Q4,dist:0,think:t>=5&&t<=7?aR:null}));eR={firstframe:45,lastframe:59,frames:uR,endfunc:vs};var dR=Array.from({length:10},()=>({ai:Wu,dist:0}));tR={firstframe:60,lastframe:69,frames:dR,endfunc:vs};var lR=Array.from({length:20},()=>({ai:Wu,dist:0}));function mR(e){e.monsterinfo.nextframe=i_.lastframe,e.nextthink=-1}i_={firstframe:70,lastframe:89,frames:lR,endfunc:mR};var fR=Array.from({length:5},()=>({ai:Wu,dist:0}));nR={firstframe:90,lastframe:94,frames:fR,endfunc:vs};U();var zr=.1,hR={x:30,y:28,z:24},_R={x:26,y:16,z:24},gR={x:26,y:-14,z:24};function vR(e,t,n){M(e,zr,n)}function pR(e,t,n){z(e,t,zr,n)}function yR(e,t,n){ce(e,t,zr,n)}function r_(e,t,n){fe(e,t,zr,n)}function xi(e,t,n){g(e,t)}var $u,a_,s_,o_,Xu,c_,u_,d_,l_,Yu,eu;function m_(e){e.monsterinfo.current_move=$u}function f_(e){e.monsterinfo.current_move=a_}function Yt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=s_:e.monsterinfo.current_move=$u}function wR(e){if(!e.enemy)return;let t=Math.random();t<=.3?e.monsterinfo.current_move=o_:t<=.6?e.monsterinfo.current_move=Xu:e.monsterinfo.current_move=c_}function qu(e,t){let{forward:n,right:i,up:r}=Y(e.angles),a={...e.origin},s=I(n,t.x),o=I(i,t.y),u=I(r,t.z);return C(C(C(a,s),o),u)}function AR(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=qu(e,hR),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=G(D(i,n));Qh(e,n,r,50,300,100,300,0,t)}function SR(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=qu(e,gR),i=G(D(e.pos1,n));e1(e,n,i,50,100,0,t)}function kR(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function ER(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=qu(e,_R),i=(e.monsterinfo.nextframe||0)-Xu.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=D(s,n),c={...Fn(o)};i<=12?c.y-=5*(i-4):c.y-=40-5*(i-12),a=Y(c).forward}else{let{forward:s}=Y(e.angles);a=s}yt(e,n,a,15,1e3,0,0,t,1)}function bR(e,t,n,i,r){e.health<e.max_health/2&&(e.skin=1),!(e.timestamp<(e.pain_finished_time||0))&&(i<=25&&Math.random()<.2||(e.pain_finished_time=e.timestamp+3,i<=40?(r.engine.sound?.(e,0,"makron/pain1.wav",1,1,0),e.monsterinfo.current_move=u_):i<=110?(r.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=d_):Math.random()<=.45&&(r.engine.sound?.(e,0,"makron/pain3.wav",1,1,0),e.monsterinfo.current_move=l_)))}function xR(e,t){++e.frame>=365&&(e.frame=346),e.nextthink=t.timeSeconds+.1,e.angles.x>0&&(e.angles={...e.angles,x:Math.max(0,e.angles.x-15)})}function MR(e,t){e.frame=346,e.model="models/monsters/boss3/rider/tris.md2",e.skin=1,e.think=xR,e.nextthink=t.timeSeconds+.1,t.sound(e,0,"makron/spine.wav",1,1,0),e.movetype=7;let{forward:n,up:i}=Y(e.angles),r=I(i,120),a=I(n,-120);e.velocity=C(C(e.velocity,r),a),e.origin=C(e.origin,I(n,-10)),e.angles={...e.angles,x:90},e.avelocity=X,t.linkentity(e)}function TR(e,t){let n=t.spawn();n.classname="makron_torso",n.origin={...e.origin},n.angles={...e.angles},n.origin.z+=e.maxs.z-15,MR(n,t)}function RR(e,t){t.engine.sound?.(e,0,"makron/death.wav",1,1,0),TR(e,t),e.monsterinfo.current_move=Yu,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function zR(e){e.monsterinfo.nextframe=Yu.lastframe,e.nextthink=-1}var LR=Array.from({length:60},()=>({ai:vR,dist:0}));$u={firstframe:0,lastframe:59,frames:LR,endfunc:m_};var NR=Array.from({length:10},()=>({ai:pR,dist:8}));a_={firstframe:60,lastframe:69,frames:NR,endfunc:f_};var OR=Array.from({length:10},()=>({ai:yR,dist:8}));s_={firstframe:60,lastframe:69,frames:OR,endfunc:Yt};var IR=Array.from({length:8},(e,t)=>({ai:r_,dist:0,think:t===3?AR:null}));o_={firstframe:70,lastframe:77,frames:IR,endfunc:Yt};var CR=Array.from({length:26},(e,t)=>({ai:xi,dist:0,think:t>=4&&t<=20?ER:null}));Xu={firstframe:78,lastframe:103,frames:CR,endfunc:Yt};var PR=Array.from({length:16},(e,t)=>({ai:r_,dist:0,think:t===7?kR:t===8?SR:null}));c_={firstframe:104,lastframe:119,frames:PR,endfunc:Yt};var FR=Array.from({length:4},()=>({ai:xi,dist:0}));u_={firstframe:120,lastframe:123,frames:FR,endfunc:Yt};var DR=Array.from({length:4},()=>({ai:xi,dist:0}));d_={firstframe:124,lastframe:127,frames:DR,endfunc:Yt};var UR=Array.from({length:27},()=>({ai:xi,dist:0}));l_={firstframe:128,lastframe:154,frames:UR,endfunc:Yt};var BR=Array.from({length:95},()=>({ai:xi,dist:0}));Yu={firstframe:155,lastframe:249,frames:BR,endfunc:zR};var GR=Array.from({length:13},()=>({ai:xi,dist:0}));eu={firstframe:250,lastframe:262,frames:GR,endfunc:Yt};function HR(e,t){e.classname="monster_makron",e.model="models/monsters/boss3/rider/tris.md2",e.mins={x:-30,y:-30,z:0},e.maxs={x:30,y:30,z:90},e.movetype=5,e.solid=2,e.health=3e3,e.max_health=3e3,e.mass=500,e.takedamage=!0,e.viewheight=90,e.pain=(n,i,r,a)=>bR(n,i,r,a,t.entities),e.die=(n,i,r,a,s)=>{if(n.health<=-2e3){yu(t.entities,n.origin,a),t.entities.free(n);return}n.deadflag=2,n.solid=0,RR(n,t.entities)},e.monsterinfo.stand=m_,e.monsterinfo.walk=f_,e.monsterinfo.run=Yt,e.monsterinfo.attack=wR,e.monsterinfo.sight=(n,i)=>{t.entities.sound?.(n,0,"makron/sight.wav",1,1,0),n.monsterinfo.current_move=eu},e.think=C6,e.monsterinfo.current_move=eu,e.nextthink=e.timestamp+zr}U();var ps=.1,VR={x:40,y:-20,z:20},WR={x:40,y:20,z:20},KR={x:30,y:0,z:40};function $R(e,t,n){M(e,ps,n)}function XR(e,t,n){z(e,t,ps,n)}function YR(e,t,n){ce(e,t,ps,n)}function Zu(e,t,n){fe(e,t,ps,n)}function Lr(e,t,n){g(e,t)}var ju,h_,__,Ju,tu,qR,ZR,jR,JR,g_;function QR(e){e.monsterinfo.current_move=ju}function ez(e){e.monsterinfo.current_move=h_}function Mi(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=__:e.monsterinfo.current_move=ju}function tz(e,t){let n=(i,r,a,s,o,u)=>{let c=t.trace(i,r,a,s,o,u);return{fraction:c.fraction,ent:c.ent}};e.enemy&&$t(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=Ju:e.monsterinfo.current_move=tu}function nu(e,t){let{forward:n,right:i,up:r}=Y(e.angles),a={...e.origin},s=I(n,t.x),o=I(i,t.y),u=I(r,t.z);return C(C(C(a,s),o),u)}function nz(e,t){if(!e.enemy)return;let n=nu(e,WR),i=G(D(e.enemy.origin,n));Va(e,n,i,6,4,.05,.05,0,t,4);let r=nu(e,VR),a=G(D(e.enemy.origin,r));Va(e,r,a,6,4,.05,.05,0,t,4)}function iz(e,t){if(!e.enemy)return;let n=nu(e,KR),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=G(D(i,n));Qh(e,n,r,50,300,100,200,0,t)}function rz(e){e.monsterinfo.nextframe=g_.lastframe,e.nextthink=-1}function az(e,t){let n=t.spawn();if(n.classname="monster_makron",n.origin={...e.origin},n.target=e.target,n.enemy=e.enemy,HR(n,{entities:t}),n.enemy&&n.enemy.health>0){let r=D(n.enemy.origin,n.origin);n.angles={...n.angles,y:Er(r)};let a=G(r),s=I(a,400);n.velocity={x:s.x,y:s.y,z:200},n.groundentity=null,n.monsterinfo.sight&&n.monsterinfo.sight(n,n.enemy)}}var sz=Array.from({length:51},()=>({ai:$R,dist:0}));ju={firstframe:0,lastframe:50,frames:sz,endfunc:QR};var oz=Array.from({length:14},()=>({ai:XR,dist:10}));h_={firstframe:51,lastframe:64,frames:oz,endfunc:ez};var cz=Array.from({length:14},()=>({ai:YR,dist:10}));__={firstframe:51,lastframe:64,frames:cz,endfunc:Mi};var uz=Array.from({length:8},()=>({ai:Zu,dist:0})),dz={firstframe:65,lastframe:72,frames:uz,endfunc:null},lz=Array.from({length:6},()=>({ai:Zu,dist:0,think:nz}));Ju={firstframe:73,lastframe:78,frames:lz,endfunc:tz};dz.endfunc=e=>{e.monsterinfo.current_move=Ju};var mz=Array.from({length:4},()=>({ai:Lr,dist:0}));tu={firstframe:79,lastframe:82,frames:mz,endfunc:Mi};var fz=Array.from({length:13},(e,t)=>({ai:Zu,dist:0,think:t===6?iz:null}));qR={firstframe:83,lastframe:95,frames:fz,endfunc:Mi};var hz=Array.from({length:3},()=>({ai:Lr,dist:0}));ZR={firstframe:96,lastframe:98,frames:hz,endfunc:Mi};var _z=Array.from({length:3},()=>({ai:Lr,dist:0}));jR={firstframe:99,lastframe:101,frames:_z,endfunc:Mi};var gz=Array.from({length:25},()=>({ai:Lr,dist:0}));JR={firstframe:102,lastframe:126,frames:gz,endfunc:Mi};var vz=Array.from({length:50},(e,t)=>({ai:Lr,dist:0,think:t===49?((n,i)=>{}):t===48?az:null}));g_={firstframe:127,lastframe:176,frames:vz,endfunc:rz};var Qu=.1,ys=4,v_=8,ws=16,pz=32,ed=64,yz=0,wz=39,Az=40,Sz=58,kz=59,p_=64,Ez=93,bz=95,td=99,y_=159,w_=160,A_=172,S_=173,k_=198,xz=199,Mz=209,Tz=210,Rz=226,nd=227,id=235,E_=236,Ka=244,zz=245,Lz=251,Nz=252,Oz=266,Iz=267,Cz=281,b_,x_,M_,T_,R_,Nr,z_,L_,N_,O_,Pz,Fz,I_,C_,Dz,Uz,rd,P_,Bz="insane/insane11.wav",Gz="insane/insane5.wav",Hz="insane/insane7.wav",ch=["insane/insane1.wav","insane/insane2.wav","insane/insane3.wav","insane/insane4.wav","insane/insane6.wav","insane/insane8.wav","insane/insane9.wav","insane/insane10.wav"];function iu(e,t){t.sound(e,2,Bz,1,1,0)}function Vz(e,t){(e.spawnflags&ed)===0&&t.sound(e,2,Gz,1,1,0)}function ad(e,t){e.spawnflags&ed||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,Hz,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function yn(e,t){if(!(e.spawnflags&ed)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=ch[Math.floor(Math.random()*ch.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function rt(e,t){}function F_(e,t){e.spawnflags&pz||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=M_:e.monsterinfo.current_move=R_)}function Wz(e,t){e.spawnflags&ys&&e.spawnflags&ws||Math.random()<.5&&(e.monsterinfo.current_move=T_)}function sd(e,t){e.monsterinfo.current_move=Nr}function D_(e,t){Math.random()<.8?e.monsterinfo.current_move=rd:e.monsterinfo.current_move=P_}function od(e,t){e.spawnflags&v_?(e.monsterinfo.current_move=rd,e.monsterinfo.aiflags|=1):e.spawnflags&ys&&e.spawnflags&ws?e.monsterinfo.current_move=Nr:Math.random()<.5?e.monsterinfo.current_move=b_:e.monsterinfo.current_move=x_}function cd(e,t){if(e.spawnflags&ws&&e.frame===Ka){e.monsterinfo.current_move=Nr;return}e.spawnflags&ys?e.monsterinfo.current_move=I_:Math.random()<=.5?e.monsterinfo.current_move=z_:e.monsterinfo.current_move=N_}function Or(e,t){if(e.spawnflags&ws&&e.frame===Ka){e.monsterinfo.current_move=Nr;return}let n=e.frame;e.spawnflags&ys||n>=E_&&n<=Ka||n>=nd&&n<=id||n>=td&&n<=y_?e.monsterinfo.current_move=C_:Math.random()<=.5?e.monsterinfo.current_move=L_:e.monsterinfo.current_move=O_}function U_(e,t){e.spawnflags&v_?e.flags|=1:(e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,t.linkentity(e)),e.nextthink=-1}function h(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,Qu,a)},dist:t}}var Kz=[h(M),h(M),h(M),h(M),h(M),h(M,0,F_)];b_={firstframe:kz,lastframe:p_,frames:Kz,endfunc:od};var $z=[h(M,0,Vz),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M,0,F_)];x_={firstframe:p_,lastframe:Ez,frames:$z,endfunc:od};var Xz=[h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,0,ad),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,2.7),h(g,4.1),h(g,6),h(g,7.6),h(g,3.6),h(g),h(g),h(g,0,iu),h(g),h(g),h(g),h(g),h(g),h(g,0,iu),h(g),h(g),h(g),h(g),h(g),h(g)];M_={firstframe:yz,lastframe:wz,frames:Xz,endfunc:sd};var Yz=[h(g,-.7),h(g,-1.2),h(g,-1.5),h(g,-4.5),h(g,-3.5),h(g,-.2),h(g),h(g,-1.3),h(g,-3),h(g,-2),h(g),h(g),h(g),h(g,-3.3),h(g,-1.6),h(g,-.3),h(g),h(g),h(g)];T_={firstframe:Az,lastframe:Sz,frames:Yz,endfunc:od};var qz=[h(g,.2),h(g,11.5),h(g,5.1),h(g,7.1),h(g)];R_={firstframe:bz,lastframe:td,frames:qz,endfunc:sd};var Zz=[h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,-1.7),h(g,-1.6),h(g),h(g),h(g),h(g,0,iu),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,0,ad),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,.5),h(g),h(g,-.2,yn),h(g),h(g,.2),h(g,.4),h(g,.6),h(g,.8),h(g,.7),h(g,0,Wz)];Nr={firstframe:td,lastframe:y_,frames:Zz,endfunc:sd};var ru=[h(z,0,yn),h(z,2.5),h(z,3.5),h(z,1.7),h(z,2.3),h(z,2.4),h(z,2.2,rt),h(z,4.2),h(z,5.6),h(z,3.3),h(z,2.4),h(z,.9),h(z,0,rt)];z_={firstframe:w_,lastframe:A_,frames:ru,endfunc:cd};L_={firstframe:w_,lastframe:A_,frames:ru.map(e=>({ai:(t,n,i)=>{e.ai===ru[0].ai&&yn(t,i),ce(t,n,Qu,i)},dist:e.dist})),endfunc:Or};var au=[h(z,0,yn),h(z,3.4),h(z,3.6),h(z,2.9),h(z,2.2),h(z,2.6,rt),h(z),h(z,.7),h(z,4.8),h(z,5.3),h(z,1.1),h(z,2,rt),h(z,.5),h(z),h(z),h(z,4.9),h(z,6.7),h(z,3.8),h(z,2,rt),h(z,.2),h(z),h(z,3.4),h(z,6.4),h(z,5),h(z,1.8,rt),h(z)];N_={firstframe:S_,lastframe:k_,frames:au,endfunc:cd};O_={firstframe:S_,lastframe:k_,frames:au.map(e=>({ai:(t,n,i)=>{e.ai===au[0].ai&&yn(t,i),ce(t,n,Qu,i)},dist:e.dist})),endfunc:Or};var jz=[h(g),h(g),h(g),h(g),h(g,0,rt),h(g),h(g),h(g),h(g),h(g),h(g,0,rt)];Pz={firstframe:xz,lastframe:Mz,frames:jz,endfunc:Or};var Jz=[h(g),h(g),h(g),h(g),h(g,0,rt),h(g),h(g),h(g),h(g),h(g),h(g,0,rt),h(g),h(g,0,rt),h(g),h(g),h(g),h(g)];Fz={firstframe:Tz,lastframe:Rz,frames:Jz,endfunc:U_};var B_=[h(z,0,yn),h(z,1.5),h(z,2.1),h(z,3.6),h(z,2,rt),h(z,.9),h(z,3),h(z,3.4),h(z,2.4,rt)];I_={firstframe:nd,lastframe:id,frames:B_,endfunc:cd};C_={firstframe:nd,lastframe:id,frames:B_,endfunc:Or};var Qz=[h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g)];Dz={firstframe:E_,lastframe:Ka,frames:Qz,endfunc:Or};var eL=[h(g),h(g),h(g),h(g),h(g,0,yn),h(g),h(g)];Uz={firstframe:zz,lastframe:Lz,frames:eL,endfunc:U_};var tL=[h(g,0,ad),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g)];rd={firstframe:Nz,lastframe:Oz,frames:tL,endfunc:D_};var nL=[h(g,0,yn),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g)];P_={firstframe:Iz,lastframe:Cz,frames:nL,endfunc:D_};U();U();var iL=.1,rL=0;var su=0,G_=39,aL=40,sL=47,oL=48,cL=53,uL=54,dL=56,lL=57,mL=59,fL=60,hL=62,_L=63,gL=76,vL=77,pL=93,yL=94,wL=100,AL=101,SL=113,kL=114,EL=117,H_,V_,W_,bL,xL,ML,TL,RL,zL,LL,NL;function E(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,iL,a)},dist:t}}function uh(e,t){e.monsterinfo.current_move=H_,t.timeSeconds<1&&(e.frame=su+Math.floor(Math.random()*(G_-su+1)))}function OL(e,t){e.monsterinfo.current_move=V_}function Ti(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?OL(e,t):uh(e,t);return}if(e.monsterinfo.aiflags&1){uh(e,t);return}e.monsterinfo.current_move=W_}function IL(e,t){let n={x:0,y:0,z:0},r=Y(e.angles).forward,a=Ai(e.origin);a.z+=e.viewheight;let s;if(e.enemy){let o;e.enemy.health>0?(o=D(e.enemy.origin,I(e.enemy.velocity,.2)),o.z+=e.enemy.viewheight):(o=Ai(e.enemy.absmin),o.z+=e.enemy.size.z/2+1),s=D(o,a),s=G(s)}else s=r;hn(e,a,s,3,4,0,0,rL,t)}function K_(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.svflags|=1,e.nextthink=-1,t.linkentity(e)}function CL(e,t){IL(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var PL=[E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M)];H_={firstframe:su,lastframe:G_,frames:PL,endfunc:null};var FL=[E(z),E(z,6),E(z,10),E(z,3),E(z,2),E(z,7),E(z,10),E(z,1)];V_={firstframe:aL,lastframe:sL,frames:FL,endfunc:null};var DL=[E(ce,4),E(ce,15),E(ce,15),E(ce,8),E(ce,20),E(ce,15)];W_={firstframe:oL,lastframe:cL,frames:DL,endfunc:null};var UL=[E(g,-5),E(g,4),E(g,1)];bL={firstframe:uL,lastframe:dL,frames:UL,endfunc:Ti};var BL=[E(g,-4),E(g,4),E(g)];xL={firstframe:lL,lastframe:mL,frames:BL,endfunc:Ti};var GL=[E(g,-1),E(g,1),E(g,0)];ML={firstframe:fL,lastframe:hL,frames:GL,endfunc:Ti};var HL=[E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le)];TL={firstframe:_L,lastframe:gL,frames:HL,endfunc:Ti};var VL=[E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le),E(le)];RL={firstframe:vL,lastframe:pL,frames:VL,endfunc:Ti};var WL=[E(g),E(g),E(g,-13),E(g,14),E(g,3),E(g,-2),E(g,1)];zL={firstframe:yL,lastframe:wL,frames:WL,endfunc:K_};var KL=[E(g),E(g,7),E(g,-6),E(g,-5),E(g,1),E(g),E(g,-1),E(g,-2),E(g,-1),E(g,-9),E(g,-13),E(g,-13),E(g)];LL={firstframe:AL,lastframe:SL,frames:KL,endfunc:K_};var $L=[E(fe,-2,CL),E(fe,-2),E(fe,3),E(fe,2)];NL={firstframe:kL,lastframe:EL,frames:$L,endfunc:Ti};U();U();var Ar=.1;function XL(e,t,n){if(e.classname==="monster_medic"&&q_(e,n)){e.monsterinfo.current_move=Ir;return}M(e,Ar,n)}function YL(e,t,n){z(e,t,Ar,n)}function qL(e,t,n){e.classname==="monster_medic"&&q_(e,n)?e.monsterinfo.current_move=Ir:ce(e,t,Ar,n)}function zt(e,t,n){fe(e,t,Ar,n)}function ud(e,t,n){g(e,t)}var dd,$_,Ir,ZL,X_,jL,JL,Y_;function QL(e){e.monsterinfo.current_move=dd}function eN(e){e.monsterinfo.current_move=$_}function Cr(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&vn(e,e.enemy)<80){e.monsterinfo.current_move=X_;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ir:e.monsterinfo.current_move=dd}function tN(e,t){if(!e.enemy||e.enemy.health<=0)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(D(e.enemy.origin,n));yt(e,n,i,2,1e3,0,0,t,10)}function cn(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(vn(e,e.enemy)>400){e.monsterinfo.current_move=Ir;return}let i=Y(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},u=C(e.origin,C(I(r,o.x),C(I(a,o.y),I(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,se.temp_entity,{te:Se.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:u,end:c})}function nN(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),cn(e,t)}function iN(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if(vn(e,n)>400){e.enemy=null;return}if(!i)n.deadflag=0,n.health=n.max_health,n.takedamage=!0,n.solid=2,n.nextthink=t.timeSeconds+.1,n.monsterinfo&&n.monsterinfo.stand&&n.monsterinfo.stand(n,t),n.bad_medic=e;else{let r={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};i(n,r),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function q_(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,i=1024,r=(a,s,o,u,c,d)=>{let m=t.trace(a,s,o,u,c,d);return{fraction:m.fraction,ent:m.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!$t(e,a,r))return;let s=vn(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function rN(e,t){let n=Math.random(),i="monster_soldier_light";n>.8?i="monster_soldier_ssg":n>.5&&(i="monster_soldier");let r=t.getSpawnFunction(i);if(r){let a=Y(e.angles),s=I(a.forward,64),o=C(e.origin,s),u={...o,z:o.z+8},c=t.trace(e.origin,{x:-16,y:-16,z:-24},{x:16,y:16,z:32},u,e,Ye|dn|pr);if(c.fraction<1||c.startsolid||c.allsolid)return;let d=t.spawn();d.origin=u,d.angles={...e.angles},r(d,{entities:t,keyValues:{classname:i},warn:()=>{},free:l=>t.free(l)}),d.enemy=e.enemy,t.multicast(u,1,se.muzzleflash,{entId:d.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function aN(e){e.monsterinfo.nextframe=Y_.lastframe,e.nextthink=-1}var sN=Array.from({length:30},()=>({ai:XL,dist:0}));dd={firstframe:0,lastframe:29,frames:sN,endfunc:QL};var oN=Array.from({length:40},()=>({ai:YL,dist:3}));$_={firstframe:30,lastframe:69,frames:oN,endfunc:eN};var cN=Array.from({length:20},()=>({ai:qL,dist:12}));Ir={firstframe:70,lastframe:89,frames:cN,endfunc:Cr};var uN=Array.from({length:16},(e,t)=>({ai:zt,dist:0,think:t>=4&&t<=13?tN:null}));ZL={firstframe:90,lastframe:105,frames:uN,endfunc:Cr};var dN=[{ai:zt,dist:0,think:nN},{ai:zt,dist:0,think:cn},{ai:zt,dist:0,think:cn},{ai:zt,dist:0,think:cn},{ai:zt,dist:0,think:cn},{ai:zt,dist:0,think:cn},{ai:zt,dist:0,think:cn},{ai:zt,dist:0,think:cn},{ai:zt,dist:0,think:iN}];X_={firstframe:106,lastframe:114,frames:dN,endfunc:Cr};var lN=Array.from({length:6},()=>({ai:ud,dist:0}));JL={firstframe:116,lastframe:121,frames:lN,endfunc:Cr};var mN=Array.from({length:23},(e,t)=>({ai:ud,dist:0,think:t===11?rN:null}));jL={firstframe:122,lastframe:144,frames:mN,endfunc:Cr};var fN=Array.from({length:30},()=>({ai:ud,dist:0}));Y_={firstframe:161,lastframe:190,frames:fN,endfunc:aN};U();var Pr=.1;function q(e,t,n){M(e,Pr,n)}function tt(e,t,n){z(e,t,Pr,n)}function di(e,t,n){ce(e,t,Pr,n)}function sn(e,t,n){fe(e,t,Pr,n)}function me(e,t,n){g(e,t)}function Kc(e,t,n){Db(e,null,t,Pr)}var Z_,j_,$a,hN,_N,gN,vN,J_,Q_;function pN(e){e.monsterinfo.current_move=j_}function yN(e){e.monsterinfo.current_move=Z_}function Ri(e){e.monsterinfo.current_move=$a}function eg(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let i=D(e.enemy.origin,e.origin);if(Ie(i)>100)return;let a=G(i);_e(e.enemy,e,e,a,e.enemy.origin,X,t,0,0,0,n.timeSeconds)}function wN(e,t){eg(e,30,t)}function dh(e,t){eg(e,30,t)}function _i(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=$a),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=$a)}function AN(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),_e(t,e,e,G(e.velocity),e.origin,X,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function SN(e,t){let n=Y(e.angles).forward;e.movetype=7,e.touch=AN,e.velocity=C(I(n,300),{x:0,y:0,z:300}),e.velocity=C(I(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function kN(e){e.monsterinfo.nextframe=J_.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var EN=[{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0}];Z_={firstframe:0,lastframe:50,frames:EN,endfunc:yN};var bN=[{ai:tt,dist:3},{ai:tt,dist:1},{ai:tt,dist:5},{ai:tt,dist:10},{ai:tt,dist:13},{ai:tt,dist:12},{ai:tt,dist:0},{ai:tt,dist:0},{ai:tt,dist:5},{ai:tt,dist:6},{ai:tt,dist:16},{ai:tt,dist:15},{ai:tt,dist:6}];j_={firstframe:51,lastframe:63,frames:bN,endfunc:pN};var xN=[{ai:di,dist:20},{ai:di,dist:15},{ai:di,dist:35},{ai:di,dist:20},{ai:di,dist:10},{ai:di,dist:20}];$a={firstframe:64,lastframe:69,frames:xN,endfunc:Ri};var MN=[{ai:sn,dist:0},{ai:sn,dist:0},{ai:sn,dist:0,think:dh},{ai:sn,dist:0},{ai:sn,dist:0,think:wN},{ai:sn,dist:0},{ai:sn,dist:0,think:dh},{ai:sn,dist:0}];hN={firstframe:70,lastframe:77,frames:MN,endfunc:Ri};var TN=[{ai:Kc,dist:0},{ai:Kc,dist:0},{ai:Kc,dist:0,think:SN},{ai:me,dist:0,think:_i},{ai:me,dist:0,think:_i},{ai:me,dist:0,think:_i},{ai:me,dist:0,think:_i},{ai:me,dist:0,think:_i}];Q_={firstframe:93,lastframe:100,frames:TN,endfunc:Ri};Q_.frames[3].ai=(e,t,n)=>{_i(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var RN=[{ai:me,dist:4},{ai:me,dist:-3},{ai:me,dist:-8},{ai:me,dist:2},{ai:me,dist:5}];_N={firstframe:78,lastframe:82,frames:RN,endfunc:Ri};var zN=[{ai:me,dist:-24},{ai:me,dist:11},{ai:me,dist:5},{ai:me,dist:-2}];gN={firstframe:83,lastframe:86,frames:zN,endfunc:Ri};var LN=[{ai:me,dist:11},{ai:me,dist:0},{ai:me,dist:-2},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0}];vN={firstframe:87,lastframe:92,frames:LN,endfunc:Ri};var NN=[{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0}];J_={firstframe:101,lastframe:109,frames:NN,endfunc:kN};U();var As=.1,ON=()=>Math.random();function ae(e,t,n){M(e,As,n)}function Ht(e,t,n){z(e,t,As,n)}function Vt(e,t,n){ce(e,t,As,n)}function Pe(e,t,n){fe(e,t,As,n)}function Fe(e,t,n){g(e,t)}var ld,tg,ng,IN,CN,ig,rg,PN,FN,md,ag;function DN(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function UN(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function li(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function ou(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function BN(e){e.monsterinfo.current_move=md}function GN(e){ON()<=.8?e.monsterinfo.current_move=md:e.monsterinfo.current_move=ag}function sg(e){e.monsterinfo.current_move=ld}function fd(e){e.monsterinfo.current_move=tg}function og(e){e.monsterinfo.current_move=rg}function cg(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=ld:e.monsterinfo.current_move=ng}function $c(e,t){let n=D(t,e);if(Ie(n)>256)return!1;let a=Fn(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function vt(e,t){if(!e.enemy)return;let n=Y(e.angles),i=n.forward,r=n.right,a=n.up,s={x:24,y:0,z:6},o=C(e.origin,C(I(i,s.x),C(I(r,s.y),I(a,s.z)))),u=Ai(e.enemy.origin);if(!$c(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.maxs.z-8},!$c(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.mins.z+8},!$c(o,u)))||t.trace(o,u,X,X,e,Kt).ent!==e.enemy)return;let d=2,m=e.frame;m===41?(d=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(m===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),d=2),t.multicast(e.origin,0,se.temp_entity,{te:Se.PARASITE_ATTACK,entId:e.index,start:o,end:u});let l=G(D(o,u));_e(e.enemy,e,e,l,e.enemy.origin,X,d,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=d,e.health>e.max_health&&(e.health=e.max_health))}function HN(e){e.monsterinfo.nextframe=ig.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var VN=[{ai:ae,dist:0},{ai:ae,dist:0},{ai:ae,dist:0,think:li},{ai:ae,dist:0},{ai:ae,dist:0,think:li},{ai:ae,dist:0},{ai:ae,dist:0},{ai:ae,dist:0},{ai:ae,dist:0,think:li},{ai:ae,dist:0},{ai:ae,dist:0,think:li},{ai:ae,dist:0},{ai:ae,dist:0},{ai:ae,dist:0},{ai:ae,dist:0,think:li},{ai:ae,dist:0},{ai:ae,dist:0,think:li}];ld={firstframe:83,lastframe:99,frames:VN,endfunc:sg};var WN=[{ai:ae,dist:0},{ai:ae,dist:0},{ai:ae,dist:0},{ai:ae,dist:0}];FN={firstframe:100,lastframe:103,frames:WN,endfunc:BN};var KN=[{ai:ae,dist:0,think:ou},{ai:ae,dist:0},{ai:ae,dist:0},{ai:ae,dist:0,think:ou},{ai:ae,dist:0},{ai:ae,dist:0}];md={firstframe:104,lastframe:109,frames:KN,endfunc:GN};var $N=[{ai:ae,dist:0,think:ou},{ai:ae,dist:0},{ai:ae,dist:0},{ai:ae,dist:0},{ai:ae,dist:0},{ai:ae,dist:0},{ai:ae,dist:0},{ai:ae,dist:0}];ag={firstframe:110,lastframe:117,frames:$N,endfunc:sg};var XN=[{ai:Vt,dist:0},{ai:Vt,dist:30}];rg={firstframe:68,lastframe:69,frames:XN,endfunc:cg};var YN=[{ai:Vt,dist:30},{ai:Vt,dist:30},{ai:Vt,dist:22},{ai:Vt,dist:19},{ai:Vt,dist:24},{ai:Vt,dist:28},{ai:Vt,dist:25}];ng={firstframe:70,lastframe:76,frames:YN,endfunc:cg};var qN=[{ai:Ht,dist:0},{ai:Ht,dist:30,think:fd}];PN={firstframe:68,lastframe:69,frames:qN,endfunc:fd};var ZN=[{ai:Ht,dist:30},{ai:Ht,dist:30},{ai:Ht,dist:22},{ai:Ht,dist:19},{ai:Ht,dist:24},{ai:Ht,dist:28},{ai:Ht,dist:25}];tg={firstframe:70,lastframe:76,frames:ZN,endfunc:fd};var jN=[{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:6},{ai:Fe,dist:16},{ai:Fe,dist:-6},{ai:Fe,dist:-7},{ai:Fe,dist:0}];CN={firstframe:57,lastframe:67,frames:jN,endfunc:og};var JN=[{ai:Pe,dist:0,think:DN},{ai:Pe,dist:0},{ai:Pe,dist:15,think:vt},{ai:Pe,dist:0,think:vt},{ai:Pe,dist:0,think:vt},{ai:Pe,dist:0,think:vt},{ai:Pe,dist:0,think:vt},{ai:Pe,dist:-2,think:vt},{ai:Pe,dist:-2,think:vt},{ai:Pe,dist:-3,think:vt},{ai:Pe,dist:-2,think:vt},{ai:Pe,dist:0,think:vt},{ai:Pe,dist:-1,think:vt},{ai:Pe,dist:0,think:UN},{ai:Pe,dist:-2},{ai:Pe,dist:-2},{ai:Pe,dist:-3},{ai:Pe,dist:0}];IN={firstframe:39,lastframe:56,frames:JN,endfunc:og};var QN=[{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:0}];ig={firstframe:32,lastframe:38,frames:QN,endfunc:HN};U();var Ss=.1;var eO=2,tO=4;function nO(e,t,n){M(e,Ss,n)}function iO(e,t,n){z(e,t,Ss,n)}function rO(e,t,n){ce(e,t,Ss,n)}function ug(e,t,n){fe(e,t,Ss,n)}function dg(e,t,n){g(e,t)}var hd,lg,mg,aO,sO,oO,fg;function cO(e){e.monsterinfo.current_move=hd}function uO(e){e.monsterinfo.current_move=lg}function ks(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=mg:e.monsterinfo.current_move=hd}function Fr(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function Dr(e,t){if(!e.enemy){let{forward:i}=Y(e.angles);return i}let n={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)};return G(D(n,t))}function dO(e,t){if(!e.enemy)return;let n=Fr(e),i=Dr(e,n);yt(e,n,i,5,600,0,0,t,1)}function lO(e,t){if(!e.enemy)return;let n=Fr(e),i=Dr(e,n),r=2,a=4,s=20,o=.15,u=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),d3(e,n,i,r,a,o,u,s,0,t,3)}function mO(e,t){if(!e.enemy)return;let n=Fr(e),i=Dr(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),hn(e,n,i,r,a,s,o,0,t,4)}function fO(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:i,right:r,up:a}=Y(n.angles),s={...n.origin};s=C(s,I(i,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let u=G(D(o,s));e.origin=s,e.movedir=u,t.linkentity(e)}function hO(e,t){if(!e.enemy)return;let n=Fr(e),i=Dr(e,n);m3(e,n,i,5,600,0,0,t)}function _O(e,t){if(!e.enemy)return;let n=Fr(e),i=Dr(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),l3(e,n,i,r,a,0,0,t)}function gO(e,t){e.enemy&&Wa(e,1,!1,fO,t)}function vO(e,t){e.count<2?hO(e,t):e.count<4?_O(e,t):gO(e,t)}function hg(e,t){if(e.style===1){vO(e,t);return}e.spawnflags&eO?lO(e,t):e.spawnflags&tO?mO(e,t):dO(e,t)}var pO=Array.from({length:30},()=>({ai:nO,dist:0}));hd={firstframe:0,lastframe:29,frames:pO,endfunc:cO};var yO=Array.from({length:40},()=>({ai:iO,dist:2}));lg={firstframe:30,lastframe:69,frames:yO,endfunc:uO};var wO=Array.from({length:20},()=>({ai:rO,dist:10}));mg={firstframe:70,lastframe:89,frames:wO,endfunc:ks};var AO=Array.from({length:10},(e,t)=>({ai:ug,dist:0,think:t===5?hg:null}));aO={firstframe:90,lastframe:99,frames:AO,endfunc:ks};var SO=Array.from({length:10},(e,t)=>({ai:ug,dist:0,think:t>=4&&t<=8?hg:null}));sO={firstframe:90,lastframe:99,frames:SO,endfunc:ks};var kO=Array.from({length:6},()=>({ai:dg,dist:0}));oO={firstframe:100,lastframe:105,frames:kO,endfunc:ks};var EO=Array.from({length:10},()=>({ai:dg,dist:0}));function bO(e){e.monsterinfo.nextframe=fg.lastframe,e.nextthink=-1}fg={firstframe:106,lastframe:115,frames:EO,endfunc:bO};U();var _g=.1,xO={x:30,y:30,z:40},MO={x:30,y:-30,z:40},TO={x:20,y:0,z:70};function RO(e,t,n){M(e,_g,n)}function zO(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=gd:e.monsterinfo.current_move=Es}function _d(e,t,n){fe(e,t,_g,n)}function Ur(e,t,n){g(e,t)}var Es,gd,LO,NO,gg,vg,OO,IO,CO,pg;function PO(e){e.monsterinfo.current_move=Es}function Gn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=gd:e.monsterinfo.current_move=Es}function vd(e,t){let{forward:n,right:i,up:r}=Y(e.angles),a={...e.origin},s=I(n,t.x),o=I(i,t.y),u=I(r,t.z);return C(C(C(a,s),o),u)}function FO(e,t){if(!e.enemy)return;let n=vd(e,MO),i=G(D(e.enemy.origin,n));Tr(e,n,i,50,650,0,t)}function DO(e,t){if(!e.enemy)return;let n=vd(e,TO),i=G(D(e.enemy.origin,n));f3(e,n,i,50,600,0,t)}function UO(e,t){if(!e.enemy)return;let n=vd(e,xO),i=G(D(e.enemy.origin,n));Va(e,n,i,6,4,.05,.05,0,t,4)}function BO(e,t){let n=(i,r,a,s,o,u)=>{let c=t.trace(i,r,a,s,o,u);return{fraction:c.fraction,ent:c.ent}};e.enemy&&$t(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=gg:e.monsterinfo.current_move=vg}function GO(e){e.monsterinfo.nextframe=pg.lastframe,e.nextthink=-1}var HO=Array.from({length:60},()=>({ai:RO,dist:0}));Es={firstframe:0,lastframe:59,frames:HO,endfunc:PO};var VO=Array.from({length:18},()=>({ai:zO,dist:12}));gd={firstframe:60,lastframe:77,frames:VO,endfunc:Gn};var WO=Array.from({length:4},()=>({ai:Ur,dist:0}));CO={firstframe:78,lastframe:81,frames:WO,endfunc:Gn};var KO=Array.from({length:4},()=>({ai:Ur,dist:0}));IO={firstframe:82,lastframe:85,frames:KO,endfunc:Gn};var $O=Array.from({length:4},()=>({ai:Ur,dist:0}));OO={firstframe:86,lastframe:89,frames:$O,endfunc:Gn};var XO=Array.from({length:24},()=>({ai:Ur,dist:0}));pg={firstframe:90,lastframe:113,frames:XO,endfunc:GO};var YO=Array.from({length:6},(e,t)=>({ai:_d,dist:0,think:t===0||t===3?DO:null}));NO={firstframe:114,lastframe:119,frames:YO,endfunc:Gn};var qO=Array.from({length:27},(e,t)=>({ai:_d,dist:0,think:t===7||t===10||t===13?FO:null}));LO={firstframe:120,lastframe:146,frames:qO,endfunc:Gn};var ZO=Array.from({length:6},()=>({ai:_d,dist:0,think:UO}));gg={firstframe:147,lastframe:152,frames:ZO,endfunc:BO};var jO=Array.from({length:14},()=>({ai:Ur,dist:0}));vg={firstframe:153,lastframe:166,frames:jO,endfunc:Gn};U();var pd=.1;function yg(e,t,n,i,r){let a=r.trace(t,n,X,X,e,Kt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return G(D(n,t));let s=C(n,I(i,-20)),o=r.trace(t,s,X,X,e,Kt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return G(D(s,t));let u=C(n,I(i,20)),c=r.trace(t,u,X,X,e,Kt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?G(D(u,t)):null}function wg(e,t){if(e.monsterinfo.aiflags&32768&&e.monsterinfo.blind_fire_target){let n=D(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=Er(n)}}function JO(e,t,n){M(e,pd,n)}function QO(e,t,n){z(e,t,pd,n)}function eI(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=wd:e.monsterinfo.current_move=bs}function yd(e,t,n){fe(e,t,pd,n)}function Ag(e,t,n){g(e,t)}var bs,Sg,wd,tI,nI,iI,rI,kg;function aI(e){e.monsterinfo.current_move=bs}function sI(e){e.monsterinfo.current_move=Sg}function Br(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=wd:e.monsterinfo.current_move=bs}function oI(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:u}=Y(o),c=e.monsterinfo.blind_fire_target,d=yg(e,n,c,u,t);if(!d)return;i=d}else i=G(D(e.enemy.origin,n));yt(e,n,i,30,1e3,0,0,t,1)}function cI(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=G(D(e.enemy.origin,n));hn(e,n,i,20,2,.05,.05,0,t,4)}function uI(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:u}=Y(o),c=e.monsterinfo.blind_fire_target,d=yg(e,n,c,u,t);if(!d)return;i=d}else i=G(D(e.enemy.origin,n));Tr(e,n,i,50,650,0,t)}function dI(e){e.monsterinfo.nextframe=kg.lastframe,e.nextthink=-1}function lI(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),Br(e)}var mI=Array.from({length:30},()=>({ai:JO,dist:0}));bs={firstframe:0,lastframe:29,frames:mI,endfunc:aI};var fI=Array.from({length:16},()=>({ai:QO,dist:5}));Sg={firstframe:30,lastframe:45,frames:fI,endfunc:sI};var hI=Array.from({length:16},()=>({ai:eI,dist:10}));wd={firstframe:46,lastframe:61,frames:hI,endfunc:Br};var _I=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=wg:t>5&&t<12&&(n=oI),{ai:yd,dist:0,think:n}});tI={firstframe:62,lastframe:77,frames:_I,endfunc:Br};var gI=Array.from({length:20},(e,t)=>({ai:yd,dist:0,think:t%2===0&&t>5?cI:null}));nI={firstframe:78,lastframe:97,frames:gI,endfunc:Br};var vI=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=wg:(t===8||t===12||t===16)&&(n=uI),{ai:yd,dist:0,think:n}});iI={firstframe:98,lastframe:115,frames:vI,endfunc:lI};var pI=Array.from({length:6},()=>({ai:Ag,dist:0}));rI={firstframe:116,lastframe:121,frames:pI,endfunc:Br};var yI=Array.from({length:16},()=>({ai:Ag,dist:0}));kg={firstframe:122,lastframe:137,frames:yI,endfunc:dI};U();var Ad=.1;function wI(e,t,n){M(e,Ad,n)}function Sd(e,t,n){ce(e,t,Ad,n)}function AI(e,t,n){fe(e,t,Ad,n)}var kd,Eg,SI,kI,bg;function EI(e){e.monsterinfo.current_move=kd}function Ed(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Eg:e.monsterinfo.current_move=kd}function bI(e,t){if(!e.enemy)return;let n=Y(e.angles).forward,i={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},r=G(D(e.enemy.origin,i));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),yt(e,i,r,2,1e3,1,0,t)}var xI=Array.from({length:1},()=>({ai:wI,dist:0}));kd={firstframe:0,lastframe:0,frames:xI,endfunc:EI};var MI=Array.from({length:1},()=>({ai:Sd,dist:0}));Eg={firstframe:0,lastframe:0,frames:MI,endfunc:Ed};var TI=Array.from({length:8},(e,t)=>({ai:AI,dist:0,think:t===4?bI:void 0}));SI={firstframe:1,lastframe:8,frames:TI,endfunc:Ed};var RI=Array.from({length:2},()=>({ai:Sd,dist:0}));kI={firstframe:9,lastframe:10,frames:RI,endfunc:Ed};var zI=Array.from({length:4},()=>({ai:Sd,dist:0}));function LI(e){e.monsterinfo.nextframe=bg.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}bg={firstframe:11,lastframe:14,frames:zI,endfunc:LI};U();var xs=.1;var Sr=()=>Math.random(),Ms=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;function zi(e,t,n){M(e,xs,n)}function mi(e,t,n){z(e,t,xs,n)}function it(e,t,n){ce(e,t,xs,n)}function Z(e,t,n){fe(e,t,xs,n)}function qe(e,t,n){g(e,t)}var bd,xg,Mg,Ts,xd,NI,Tg,OI,Rg,zg,Lg,Ng,Og,II,CI,PI,FI,DI,UI,BI,GI,HI,VI,Rs=2,Ig=80,WI=100;var KI=8;var Md=32;function Li(e,t){!(e.spawnflags&Md)&&e.waterlevel>=Rs&&rC(e)}function $I(e){e.waterlevel>=Rs?(e.flags|=2,e.monsterinfo.current_move=xg):e.monsterinfo.current_move!==xd&&(e.monsterinfo.current_move=bd)}function Cg(e){e.flags|=2,e.monsterinfo.current_move=Mg}function zs(e,t){if(!e.enemy)return;let n=Ms(5,10),i=100,r=D(e.enemy.origin,e.origin);Ie(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck2.wav",1,1,0),_e(e.enemy,e,e,G(r),e.enemy.origin,X,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function Td(e,t){if(!e.enemy)return;let n=Ms(5,10),i=100,r=D(e.enemy.origin,e.origin);Ie(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck3.wav",1,1,0),_e(e.enemy,e,e,G(r),e.enemy.origin,X,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function Rd(e,t){if(!e.enemy)return;let n=5,i=Ig,r=D(e.enemy.origin,e.origin);Ie(r)<=i&&_e(e.enemy,e,e,G(r),e.enemy.origin,X,n,0,0,0,t.timeSeconds)}function XI(e){e.monsterinfo.current_move=xd}function Pg(e){Sr()>.75&&e.health<e.max_health&&(e.monsterinfo.nextframe=0)}function Fg(e,t){let n=Ms(0,2),i=["gek/gk_step1.wav","gek/gk_step2.wav","gek/gk_step3.wav"];t.engine.sound?.(e,0,i[n],1,1,0)}function Dg(e,t){if(e.spawnflags&KI){let n=Sr();n<.33?t.engine.sound?.(e,0,"gek/gek_low.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"gek/gek_mid.wav",1,1,0):t.engine.sound?.(e,0,"gek/gek_high.wav",1,1,0)}else t.engine.sound?.(e,0,"gek/gk_idle1.wav",1,1,0);e.health+=Ms(10,20),e.health>e.max_health&&(e.health=e.max_health),e.health<e.max_health/4?e.skin=2:e.health<e.max_health/2?e.skin=1:e.skin=0}function qt(e){!(e.spawnflags&Md)&&e.waterlevel>=Rs?e.monsterinfo.current_move=Ts:e.monsterinfo.current_move=zg}function YI(e){!(e.spawnflags&Md)&&e.waterlevel>=Rs?e.monsterinfo.current_move=Ts:e.monsterinfo.current_move=Rg}function Ug(e){if(!e.enemy||e.enemy.health<=0)return;Ie(D(e.enemy.origin,e.origin))<=Ig&&(e.frame===114?e.monsterinfo.current_move=Ng:e.frame===123&&(e.monsterinfo.current_move=Lg))}function qI(e,t,n,i,r,a){let s=xr(a,e,t,n,i,r,0);s.model="models/objects/loogy/tris.md2"}function ZI(e,t){if(!e.enemy||e.enemy.health<=0)return;let n=Y(e.angles),i=n.forward,r=n.right,a=n.up,s={x:-18,y:-.8,z:24},o=C(e.origin,C(I(i,s.x),C(I(r,s.y),I(a,s.z))));o.z+=2;let u=Ai(e.enemy.origin);u.z+=e.enemy.viewheight||0;let c=G(D(u,o));qI(e,o,c,5,550,t),t.engine.sound?.(e,0,"gek/gk_atck4.wav",1,1,0)}function jI(e){if(Sr()>.8&&e.health<e.max_health){e.monsterinfo.current_move=Tg;return}if(e.enemy&&e.enemy.health>0){let t=Ie(D(e.enemy.origin,e.origin));Sr()>.7&&t<=WI&&(e.monsterinfo.current_move=Og)}}function JI(e,t,n,i){if(e.health<=0){e.touch=void 0;return}e.touch=void 0}function QI(e,t){let i=Y(e.angles).forward;t.engine.sound?.(e,0,"gek/gk_sght1.wav",1,1,0),e.origin.z+=1,e.velocity=C(I(i,700),{x:0,y:0,z:250}),e.groundentity=null,e.touch=JI}function eC(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.velocity=X;return}}function On(e){e.groundentity&&(e.velocity=X)}function tC(e,t){}function Ls(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.nextthink=-1}function Bg(e,t){yu(t,e.origin,20),e.deadflag=2}function nC(e,t){Sr()>.9&&Bg(e,t)}function iC(e){e.maxs.z=0}function rC(e){e.flags|=2,e.yaw_speed=10,e.viewheight=10,e.monsterinfo.current_move=Ts,e.mins={x:-18,y:-18,z:-24},e.maxs={x:18,y:18,z:16}}var Gg=Array(38).fill({ai:zi,dist:0});Gg[38]={ai:zi,dist:0,think:Li};bd={firstframe:0,lastframe:38,frames:Gg,endfunc:null};var aC=Array(32).fill({ai:zi,dist:14});xg={firstframe:39,lastframe:70,frames:aC,endfunc:null};var sC=Array(32).fill({ai:it,dist:14});Mg={firstframe:39,lastframe:70,frames:sC,endfunc:Cg};var Ns=Array(32).fill({ai:it,dist:14});Ns[8]={ai:it,dist:18,think:zs};Ns[14]={ai:it,dist:24,think:Td};Ns[20]={ai:it,dist:22,think:Rd};Ts={firstframe:39,lastframe:70,frames:Ns,endfunc:Cg};var zd=Array(32).fill({ai:zi,dist:0});zd[0]={ai:zi,dist:0,think:Dg};zd[31]={ai:zi,dist:0,think:Pg};NI={firstframe:71,lastframe:102,frames:zd,endfunc:$I};var Os=Array(32).fill({ai:qe,dist:0});Os[0]={ai:qe,dist:0,think:Dg};Os[31]={ai:qe,dist:0,think:Pg};Tg={firstframe:71,lastframe:102,frames:Os,endfunc:e=>_C(e,bd)};xd={firstframe:71,lastframe:102,frames:Os,endfunc:XI};var oC=[{ai:mi,dist:3.8,think:Li},{ai:mi,dist:19.6},{ai:mi,dist:25.5},{ai:mi,dist:34.6,think:Fg},{ai:mi,dist:27.3},{ai:mi,dist:28.4}];OI={firstframe:103,lastframe:108,frames:oC,endfunc:null};var cC=[{ai:it,dist:3.8,think:Li},{ai:it,dist:19.6},{ai:it,dist:25.5},{ai:it,dist:34.6,think:Fg},{ai:it,dist:27.3},{ai:it,dist:28.4}];Rg={firstframe:103,lastframe:108,frames:cC,endfunc:null};var uC=[{ai:it,dist:.2},{ai:it,dist:19.7}];zg={firstframe:0,lastframe:1,frames:uC,endfunc:YI};var dC=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:ZI},{ai:Z,dist:0,think:jI}];Og={firstframe:133,lastframe:139,frames:dC,endfunc:qt};var lC=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:zs},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:Ug}];Lg={firstframe:109,lastframe:117,frames:lC,endfunc:qt};var mC=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:zs},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:Td},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:Ug}];Ng={firstframe:118,lastframe:126,frames:mC,endfunc:qt};var Hg=[{ai:Z,dist:0},{ai:Z,dist:-.3},{ai:Z,dist:-1.1},{ai:Z,dist:-.2},{ai:Z,dist:6.7,think:QI},{ai:Z,dist:6.4},{ai:Z,dist:.1},{ai:Z,dist:28.3},{ai:Z,dist:24.1},{ai:Z,dist:31.7},{ai:Z,dist:35.9,think:eC},{ai:Z,dist:12.3,think:On},{ai:Z,dist:20.1,think:On},{ai:Z,dist:-1,think:On},{ai:Z,dist:2.5,think:On},{ai:Z,dist:.5,think:On},{ai:Z,dist:1.8,think:On},{ai:Z,dist:1.2,think:On},{ai:Z,dist:-.4,think:Li}];II={firstframe:140,lastframe:158,frames:Hg,endfunc:qt};CI={firstframe:140,lastframe:158,frames:Hg,endfunc:qt};var Ni=Array(21).fill({ai:Z,dist:16});Ni[0]={ai:Z,dist:16,think:tC};Ni[4]={ai:Z,dist:16,think:Rd};Ni[9]={ai:Z,dist:16,think:Rd};Ni[13]={ai:Z,dist:16,think:zs};Ni[18]={ai:Z,dist:16,think:Td};PI={firstframe:159,lastframe:179,frames:Ni,endfunc:qt};var fC=Array(6).fill({ai:qe,dist:0});FI={firstframe:180,lastframe:185,frames:fC,endfunc:qt};var Vg=Array(11).fill({ai:qe,dist:0});Vg[10]={ai:qe,dist:0,think:Li};DI={firstframe:186,lastframe:196,frames:Vg,endfunc:qt};var Wg=Array(13).fill({ai:qe,dist:0});Wg[12]={ai:qe,dist:0,think:Li};UI={firstframe:197,lastframe:209,frames:Wg,endfunc:qt};var Kg=Array(10).fill({ai:qe,dist:0});Kg[5]={ai:qe,dist:-7,think:iC};BI={firstframe:210,lastframe:219,frames:Kg,endfunc:Ls};var $g=Array(7).fill({ai:qe,dist:0});$g[5]={ai:qe,dist:-7,think:nC};GI={firstframe:220,lastframe:226,frames:$g,endfunc:Ls};var Xg=Array(35).fill({ai:qe,dist:0});Xg[34]={ai:qe,dist:0,think:Bg};HI={firstframe:227,lastframe:261,frames:Xg,endfunc:Ls};var hC=Array(45).fill({ai:qe,dist:0});VI={firstframe:262,lastframe:306,frames:hC,endfunc:Ls};function _C(e,t){e.monsterinfo.current_move=t}U();var Ld=.1,gC=()=>Math.random(),lh=()=>Math.random();function vC(e,t,n){z(e,t,Ld,n)}function pC(e,t,n){ce(e,t,Ld,n)}function Is(e,t,n){fe(e,t,Ld,n)}function wt(e,t,n){g(e,t)}var kr,yC,Nd,Yg,qg,wC,AC,SC,kC,EC,bC,xC,MC=1;function TC(e,t){let i=t.findByRadius(e.origin,1024),r=null;for(let a of i)if(a!==e&&a.monsterinfo&&!(a.monsterinfo.aiflags&256)&&!(a.health>0)&&!(a.nextthink&&a.think===t.free)&&!(a.health<=-40)&&$t(e,a,t.trace)){if(!r){r=a;continue}a.max_health<=r.max_health||(r=a)}return r}function RC(e,t){if(e.enemy)return;let n=TC(e,t);n?(e.enemy=n,e.monsterinfo.aiflags|=8192,Gr(e),void 0):gC()<.1&&t.engine.sound?.(e,0,"flyer/flysght1.wav",1,1,0)}function zC(e,t){if(!e.enemy||!e.enemy.inUse){e.monsterinfo.current_move=Nd;return}let n=Y(e.angles),i=C(e.origin,C(I(n.forward,0),C(I(n.right,0),I(n.up,0)))),r=Ai(e.enemy.origin);r.z+=e.enemy.viewheight||0;let a=G(D(r,i));yt(e,i,a,15,1e3,MC,0,t)}function LC(e,t){if(!e.enemy||!e.enemy.inUse||e.enemy.health<=-40){e.monsterinfo.current_move=kr,e.monsterinfo.aiflags&=-8193;return}e.enemy.health<e.enemy.max_health?(e.enemy.health+=5,e.enemy.health>e.enemy.max_health&&(e.enemy.health=e.enemy.max_health)):(e.enemy.deadflag===2&&(e.enemy.deadflag=0,e.enemy.solid=2,e.enemy.takedamage=!0,e.enemy.health=e.enemy.max_health,e.enemy.monsterinfo.aiflags&=-129),e.monsterinfo.current_move=kr,e.monsterinfo.aiflags&=-8193,e.enemy=null)}function NC(e,t){if(lh()>.8){let n=lh();n<.33?t.engine.sound?.(e,0,"misc/welder1.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"misc/welder2.wav",1,1,0):t.engine.sound?.(e,0,"misc/welder3.wav",1,1,0)}}function Gr(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=kr:e.monsterinfo.current_move=Nd}function OC(e){e.monsterinfo.aiflags&8192?e.monsterinfo.current_move=qg:e.monsterinfo.current_move=Yg}function Od(e){e.goalentity&&e.goalentity.health>0||(e.monsterinfo.current_move=kr)}var Zg=Array(19).fill({ai:wt,dist:0});Zg[18]={ai:wt,dist:0,think:RC};kr={firstframe:58,lastframe:76,frames:Zg,endfunc:null};var IC=[{ai:vC,dist:5}];yC={firstframe:0,lastframe:0,frames:IC,endfunc:null};var CC=[{ai:pC,dist:10}];Nd={firstframe:0,lastframe:0,frames:CC,endfunc:null};var jg=Array(31).fill({ai:Is,dist:0});jg[20]={ai:Is,dist:0,think:zC};Yg={firstframe:121,lastframe:151,frames:jg,endfunc:Gr};var PC=Array(6).fill({ai:Is,dist:0,think:LC});qg={firstframe:115,lastframe:120,frames:PC,endfunc:null};var Jg=Array(10).fill({ai:wt,dist:0});Jg[9]={ai:wt,dist:0,think:Od};wC={firstframe:77,lastframe:86,frames:Jg,endfunc:null};var Qg=Array(7).fill({ai:wt,dist:0,think:NC});Qg[6]={ai:wt,dist:0,think:Od};AC={firstframe:87,lastframe:93,frames:Qg,endfunc:null};var ev=Array(7).fill({ai:wt,dist:-2});ev[6]={ai:wt,dist:-2,think:Od};SC={firstframe:94,lastframe:100,frames:ev,endfunc:null};var FC=[{ai:Is,dist:0}];kC={firstframe:0,lastframe:0,frames:FC,endfunc:OC};var DC=[{ai:wt,dist:-1}];EC={firstframe:0,lastframe:0,frames:DC,endfunc:Gr};var UC=Array(8).fill({ai:wt,dist:0});bC={firstframe:107,lastframe:114,frames:UC,endfunc:Gr};var BC=Array(6).fill({ai:wt,dist:0});xC={firstframe:101,lastframe:106,frames:BC,endfunc:Gr};U();U();var Id=.1;function GC(e,t,n){M(e,Id,n)}function HC(e,t,n){z(e,t,Id,n)}function VC(e,t,n){ce(e,t,Id,n)}var DD=Array.from({length:1},()=>({ai:GC,dist:0})),UD=Array.from({length:1},()=>({ai:HC,dist:5})),BD=Array.from({length:1},()=>({ai:VC,dist:10}));function Re(e,t,n){e.monsterinfo.current_move=t}function tv(e,t,n,i){let r=C(e.origin,I(n,t.x)),a=C(r,I(i,t.y));return C(a,{x:0,y:0,z:t.z})}U();var Cs=.1,WC=850,KC=600,nv=1,iv=2,Da=3,rv=4,Ua=5,cu=6,av=7,uu=8,$C=9,XC=10,YC=11,sv={[nv]:{x:37,y:-4,z:12.5},[iv]:{x:37,y:-4,z:12.5},[Da]:{x:14,y:7,z:27.5},[rv]:{x:14,y:7,z:27.5},[Ua]:{x:14,y:7,z:27.5},[cu]:{x:19,y:7,z:13.5},[av]:{x:19,y:7,z:13.5},[uu]:{x:19,y:7,z:13.5},[$C]:{x:19,y:7,z:13.5},[XC]:{x:19,y:7,z:13.5},[YC]:{x:19,y:7,z:13.5}};function Hr(e,t,n){M(e,Cs,n)}function Ae(e,t,n){z(e,t,Cs,n)}function fi(e,t,n){ce(e,t,Cs,n)}function L(e,t,n){fe(e,t,Cs,n)}function ne(e,t,n){g(e,t)}var Ps,Fs,qC,ov,cv,Cd,Pd,uv,dv,Fd,_n,ZC,Xa,jC,JC,QC,e7,t7,n7,i7,r7,a7,s7,Dd,lv,o7,mv,fv,hv,_v,c7,Ud,gv;function vv(e,t){t.engine.sound?.(e,0,"guncmdr/gcdridle1.wav",1,1,0)}function pv(e,t){t.engine.sound?.(e,0,"guncmdr/gcdratck1.wav",1,1,0)}function u7(e,t){e.monsterinfo.aiflags&1||e.enemy||Math.random()<=.05&&Re(e,Fs,t)}function d7(e,t){Re(e,Ps,t)}function Bd(e){e.monsterinfo.aiflags&=-2049}function st(e,t){Bd(e),e.monsterinfo.aiflags&1?Re(e,Ps,t):Re(e,ov,t)}function l7(e,t){if(!(e.monsterinfo.aiflags&1)&&e.enemy&&Ie(D(e.enemy.origin,e.origin))>400&&g(e,8)){Re(e,Pd,t);return}Re(e,Cd,t)}function Ds(e,t){if(Bd(e),e.monsterinfo.attack_state=_u.Straight,e.enemy&&e.enemy.health>0&&$t(e,e.enemy,t.trace)&&Math.random()<=.5){if(!(e.monsterinfo.aiflags&1)&&e.enemy&&Ie(D(e.enemy.origin,e.origin))>400&&g(e,8)){Re(e,Pd,t);return}Re(e,Cd,t);return}Re(e,Fd,t)}function Ge(e,t){if(!e.enemy||!e.enemy.inUse)return;let n;e.monsterinfo.current_move===uv||e.monsterinfo.current_move===dv?n=iv:n=nv;let{forward:i,right:r}=Y(e.angles),a=tv(e,sv[n],i,r),s=G(D(e.enemy.origin,a)),o={...s};for(let u=0;u<3;u++)o.x+=(Math.random()-.5)*.05,o.y+=(Math.random()-.5)*.05,o.z+=(Math.random()-.5)*.05;s=G(o),g3(e,a,s,4,800,n,t)}function yi(e,t){if(!e.enemy||!e.enemy.inUse)return;let n=0,i=0,r=e.frame;if(e.monsterinfo.current_move===_n){let f=r-_n.firstframe;f===4?(n=-.1,i=Da):f===7?(n=0,i=rv):f===10&&(n=.1,i=Ua)}else if(e.monsterinfo.current_move===Xa){let f=r-Xa.firstframe;f===2?(n=-.1,i=cu):f===5?(n=0,i=av):f===8&&(n=.1,i=uu)}if(i===0)return;let{forward:a,right:s,up:o}=Y(e.angles),u=tv(e,sv[i],a,s),c,d=0,m=e.enemy.origin;if(i>=cu&&i<=uu&&(d-=.05),i>=Da&&i<=Ua){let f=D(m,e.origin),_=Ie(f);if(_>512&&f.z<64&&f.z>-64){let v=f.z+(_-512);f={...f,z:v}}f=G(f);let p=f.z;p>.4?p=.4:p<-.5&&(p=-.5),e.enemy.absmin.z-e.absmax.z>16&&(p+=.5),d+=p}c=G(C(C(a,I(s,n)),I(o,d)));let l=i>=Da&&i<=Ua?WC:KC;ts(t,e,u,c,50,l)}function m7(e,t){Re(e,_n,t),e.monsterinfo.attack_state=_u.Straight,e.frame=e.count}function yv(e,t){Re(e,Xa,t),e.monsterinfo.attack_state=_u.Straight,e.frame=e.count}function f7(e,t){e.monsterinfo.melee_debounce_time=t.timeSeconds+3,e.monsterinfo.attack&&e.monsterinfo.attack(e,t)}function h7(e,t){if(!e.enemy)return;Ie(D(e.enemy.origin,e.origin))<100&&e.enemy.client&&e.enemy.velocity.z<270&&(e.enemy.velocity={...e.enemy.velocity,z:270})}function _7(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function g7(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function wv(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function v7(e,t){let{forward:n,up:i}=Y(e.angles);e.velocity=C(e.velocity,I(n,100)),e.velocity=C(e.velocity,I(i,300))}function p7(e,t){let{forward:n,up:i}=Y(e.angles);e.velocity=C(e.velocity,I(n,150)),e.velocity=C(e.velocity,I(i,400))}function Av(e,t){e.groundentity===null?e.monsterinfo.nextframe=e.frame:e.monsterinfo.nextframe=e.frame+1}function y7(e,t){t.engine.sound?.(e,0,"weapons/rocklx1a.wav",1,1,0)}function w7(e,t){e.health<0&&Re(e,mv,t)}function A7(e,t){e.health<0&&Math.random()<.5&&Re(e,fv,t)}function S7(e,t){e.health<0&&Re(e,Ud,t)}function Us(e,t){e.maxs={...e.maxs,z:-4*(e.monsterinfo.scale||1)}}function Hn(e,t){let n=e.monsterinfo.scale||1;e.mins=I({x:-16,y:-16,z:-24},n),e.maxs=I({x:16,y:16,z:-8},n),e.nextthink=-1,e.solid=0}Fs={firstframe:201,lastframe:254,frames:Array(54).fill({ai:Hr,dist:0}),endfunc:d7};Fs.frames[6]={ai:Hr,dist:0,think:vv};Fs.frames[10]={ai:Hr,dist:0,think:vv};Ps={firstframe:101,lastframe:140,frames:Array(40).fill({ai:Hr,dist:0}),endfunc:null};var k7=(e,t)=>u7(e,t);[9,19,29,39].forEach(e=>{Ps.frames[e]={ai:Hr,dist:0,think:k7}});qC={firstframe:101,lastframe:124,frames:[{ai:Ae,dist:1.5},{ai:Ae,dist:2.5},{ai:Ae,dist:3},{ai:Ae,dist:2.5},{ai:Ae,dist:2.3},{ai:Ae,dist:3},{ai:Ae,dist:2.8},{ai:Ae,dist:3.6},{ai:Ae,dist:2.8},{ai:Ae,dist:2.5},{ai:Ae,dist:2.3},{ai:Ae,dist:4.3},{ai:Ae,dist:3},{ai:Ae,dist:1.5},{ai:Ae,dist:2.5},{ai:Ae,dist:3.3},{ai:Ae,dist:2.8},{ai:Ae,dist:3},{ai:Ae,dist:2},{ai:Ae,dist:2},{ai:Ae,dist:3.3},{ai:Ae,dist:3.6},{ai:Ae,dist:3.4},{ai:Ae,dist:2.8}],endfunc:null};ov={firstframe:101,lastframe:106,frames:[{ai:fi,dist:15,think:Bd},{ai:fi,dist:16},{ai:fi,dist:20},{ai:fi,dist:18},{ai:fi,dist:24},{ai:fi,dist:13.5}],endfunc:null};cv={firstframe:101,lastframe:106,frames:Array(6).fill({ai:L,dist:0}),endfunc:l7};cv.frames[4].think=pv;Cd={firstframe:107,lastframe:112,frames:Array(6).fill({ai:L,dist:0,think:Ge}),endfunc:Ds};Pd={firstframe:201,lastframe:206,frames:[{ai:L,dist:15,think:Ge},{ai:L,dist:16,think:Ge},{ai:L,dist:20,think:Ge},{ai:L,dist:18,think:Ge},{ai:L,dist:24,think:Ge},{ai:L,dist:13.5,think:Ge}],endfunc:Ds};uv={firstframe:401,lastframe:405,frames:[{ai:L,dist:10.2,think:Ge},{ai:L,dist:18,think:Ge},{ai:L,dist:7,think:Ge},{ai:L,dist:7.2,think:Ge},{ai:L,dist:-2,think:Ge}],endfunc:Ds};dv={firstframe:501,lastframe:505,frames:[{ai:L,dist:10.2,think:Ge},{ai:L,dist:18,think:Ge},{ai:L,dist:7,think:Ge},{ai:L,dist:7.2,think:Ge},{ai:L,dist:-2,think:Ge}],endfunc:Ds};Fd={firstframe:118,lastframe:124,frames:Array(7).fill({ai:L,dist:0}),endfunc:st};Fd.frames[2].think=pv;_n={firstframe:201,lastframe:221,frames:Array(21).fill({ai:L,dist:0}),endfunc:st};_n.frames[4].think=yi;_n.frames[7].think=yi;_n.frames[10].think=yi;_n.frames[13].think=wv;ZC={firstframe:0,lastframe:5,frames:[{ai:L,dist:11},{ai:L,dist:12},{ai:L,dist:16},{ai:L,dist:16},{ai:L,dist:12},{ai:L,dist:11}],endfunc:m7};Xa={firstframe:302,lastframe:321,frames:[{ai:L,dist:-2},{ai:L,dist:-1.5},{ai:L,dist:-.5,think:yi},{ai:L,dist:-6},{ai:L,dist:-4},{ai:L,dist:-2.5,think:yi},{ai:L,dist:-7},{ai:L,dist:-3.5},{ai:L,dist:-1.1,think:yi},{ai:L,dist:-4.6},{ai:L,dist:1.9},{ai:L,dist:1},{ai:L,dist:-4.5},{ai:L,dist:3.2},{ai:L,dist:4.4},{ai:L,dist:-6.5},{ai:L,dist:-6.1},{ai:L,dist:3},{ai:L,dist:-.7},{ai:L,dist:-1}],endfunc:st};jC={firstframe:601,lastframe:605,frames:[{ai:L,dist:10.2},{ai:L,dist:18},{ai:L,dist:7},{ai:L,dist:7.2},{ai:L,dist:-2}],endfunc:yv};JC={firstframe:701,lastframe:705,frames:[{ai:L,dist:10.2},{ai:L,dist:18},{ai:L,dist:7},{ai:L,dist:7.2},{ai:L,dist:-2}],endfunc:yv};QC={firstframe:801,lastframe:808,frames:[{ai:L,dist:-7.7},{ai:L,dist:-4.9},{ai:L,dist:12.6,think:h7},{ai:L,dist:0},{ai:L,dist:-3},{ai:L,dist:0},{ai:L,dist:-4.1},{ai:L,dist:8.6}],endfunc:f7};e7={firstframe:901,lastframe:919,frames:[{ai:ne,dist:3.6},{ai:ne,dist:5.6,think:_7},{ai:ne,dist:8.4},{ai:ne,dist:2,think:g7},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:9.5,think:y7},{ai:L,dist:-1.5},{ai:L,dist:0},{ai:L,dist:0,think:wv},{ai:L,dist:0},{ai:L,dist:11},{ai:L,dist:2},{ai:L,dist:5.6}],endfunc:st};t7={firstframe:0,lastframe:9,frames:[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:v7},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Av},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}],endfunc:st};n7={firstframe:0,lastframe:9,frames:[{ai:ne,dist:-8},{ai:ne,dist:-4},{ai:ne,dist:-4},{ai:ne,dist:0,think:p7},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Av},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}],endfunc:st};i7={firstframe:101,lastframe:104,frames:Array(4).fill({ai:ne,dist:0}),endfunc:st};r7={firstframe:201,lastframe:204,frames:Array(4).fill({ai:ne,dist:0}),endfunc:st};a7={firstframe:301,lastframe:304,frames:Array(4).fill({ai:ne,dist:0}),endfunc:st};s7={firstframe:401,lastframe:415,frames:Array(15).fill({ai:ne,dist:0}),endfunc:st};Dd={firstframe:501,lastframe:524,frames:Array(24).fill({ai:ne,dist:0}),endfunc:st};Dd.frames[5].think=A7;Dd.frames[8].think=w7;lv={firstframe:601,lastframe:632,frames:Array(32).fill({ai:ne,dist:0}),endfunc:st};lv.frames[6].think=S7;o7={firstframe:701,lastframe:714,frames:Array(14).fill({ai:ne,dist:0}),endfunc:st};mv={firstframe:101,lastframe:118,frames:Array(18).fill({ai:ne,dist:0}),endfunc:Hn};fv={firstframe:201,lastframe:204,frames:Array(4).fill({ai:ne,dist:0}),endfunc:Hn};hv={firstframe:301,lastframe:321,frames:Array(21).fill({ai:ne,dist:0}),endfunc:Hn};hv.frames[2].think=Us;_v={firstframe:401,lastframe:436,frames:Array(36).fill({ai:ne,dist:0}),endfunc:Hn};_v.frames[2].think=Us;c7={firstframe:501,lastframe:528,frames:Array(28).fill({ai:ne,dist:0}),endfunc:Hn};Ud={firstframe:601,lastframe:614,frames:Array(14).fill({ai:ne,dist:0}),endfunc:Hn};Ud.frames[0].think=Us;gv={firstframe:701,lastframe:730,frames:Array(30).fill({ai:ne,dist:0}),endfunc:Hn};gv.frames[2].think=Us;U();var Bs=.1,E7=80,b7=76,x7=127,Sv=160,kv=178,M7=68,T7=75,R7=40,z7=42,Ev=184,L7=195,bv=198,N7=128,O7=130,I7=43,C7=49,P7=199,F7=202,D7=214,U7=225,B7=131,G7=143,H7=14,V7=39,W7="zortemp/step.wav",K7="weapons/hyprbu1a.wav",$7="weapons/laser2.wav",X7,Y7,xv,q7,Mv,Tv,Z7,Rv,zv,j7,J7,Q7,Lv;function eP(e,t,n){M(e,Bs,n)}function Ne(e,t,n){z(e,t,Bs,n)}function Oe(e,t,n){ce(e,t,Bs,n)}function H(e,t,n){fe(e,t,Bs,n)}function he(e,t,n){g(e,t)}var tP=Array(52).fill({ai:eP,dist:0});X7={firstframe:b7,lastframe:x7,frames:tP,endfunc:null};function Lt(e,t){t.sound(e,2,W7,1,1,0)}var nP=[{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8,think:Lt},{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8},{ai:Ne,dist:8,think:Lt},{ai:Ne,dist:8}];Y7={firstframe:Sv,lastframe:kv,frames:nP,endfunc:null};var iP=[{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8,think:Lt},{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8},{ai:Oe,dist:8,think:Lt},{ai:Oe,dist:8}];xv={firstframe:Sv,lastframe:kv,frames:iP,endfunc:null};function Gs(e,t){Re(e,xv,t)}var rP=Array(8).fill({ai:he,dist:0});q7={firstframe:M7,lastframe:T7,frames:rP,endfunc:Gs};var aP=[{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0}];Mv={firstframe:R7,lastframe:z7,frames:aP,endfunc:Gs};function Nv(e,t){Re(e,Mv,t)}function sP(e,t){t.sound(e,1,K7,1,1,0)}function un(e,t){if(!e.enemy)return;let{forward:n,right:i}=Y(e.angles),r=C(e.origin,I(n,20));r.z+=e.viewheight?e.viewheight-10:0,r.x+=i.x*20,r.y+=i.y*20;let a={...e.enemy.origin};a.z+=e.enemy.viewheight||0,a.x+=(Math.random()*2-1)*5,a.y+=(Math.random()*2-1)*5,a.z+=(Math.random()*2-1)*5;let s=G(D(a,r));yt(e,r,s,2,1e3,0,0,t,10)}function oP(e,t){un(e,t),e.enemy&&e.enemy.health>0&&e.frame===L7&&e.timestamp>t.timeSeconds&&$t(e,e.enemy,t.trace)&&Re(e,Lv,t)}var Ov=[{ai:H,dist:0,think:sP},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0,think:un},{ai:H,dist:0,think:un},{ai:H,dist:0,think:un},{ai:H,dist:0,think:un},{ai:H,dist:0,think:un},{ai:H,dist:0,think:un},{ai:H,dist:0,think:un},{ai:H,dist:0,think:oP},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0}];Tv={firstframe:Ev,lastframe:bv,frames:Ov,endfunc:Nv};Lv={firstframe:Ev+4,lastframe:bv,frames:Ov.slice(4),endfunc:Nv};function cP(e,t){Re(e,Tv,t),e.timestamp=t.timeSeconds+.65+Math.random()*1.5}var uP=[{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0}];Z7={firstframe:N7,lastframe:O7,frames:uP,endfunc:cP};var dP=[{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0,think:Lt},{ai:H,dist:0},{ai:H,dist:0}];Rv={firstframe:I7,lastframe:C7,frames:dP,endfunc:Gs};function lP(e,t){Re(e,Rv,t)}var mP=[{x:125,y:-70,z:60},{x:112,y:-62,z:60}];function fP(e,t){let n=e.owner;if(!n||!n.inUse){t.free(e);return}let{forward:i,right:r}=Y(n.angles),a=mP[1-(n.frame&1)],s=C(n.origin,I(i,a.x));if(s.z+=a.z,s.x+=r.x*a.y,s.y+=r.y*a.y,s.z+=r.z*a.y,!n.enemy)return;let o=C(n.enemy.origin,n.enemy.mins);o.x+=Math.random()*n.enemy.size.x,o.y+=Math.random()*n.enemy.size.y,o.z+=Math.random()*n.enemy.size.z;let u=G(D(o,s));e.origin=s,e.movedir=u,t.linkentity(e)}function Pa(e,t){t.sound(e,1,$7,1,1,0),Wa(e,25,e.frame%2!==0,fP,t)}var hP=[{ai:H,dist:0,think:Pa},{ai:H,dist:0,think:Pa},{ai:H,dist:0,think:Pa},{ai:H,dist:0,think:Pa}];zv={firstframe:P7,lastframe:F7,frames:hP,endfunc:lP};function _P(e,t){Re(e,zv,t)}var gP=[{ai:H,dist:0,think:Lt},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0,think:Lt},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0,think:Lt},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0}];j7={firstframe:D7,lastframe:U7,frames:gP,endfunc:_P};function vP(e,t){ki(e,{x:E7,y:0,z:-80},85,700,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1)}var pP=[{ai:H,dist:0},{ai:H,dist:0,think:Lt},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0,think:vP},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0,think:Lt},{ai:H,dist:0},{ai:H,dist:0}];J7={firstframe:B7,lastframe:G7,frames:pP,endfunc:Gs};function Iv(e,t){let n={x:e.origin.x+e.mins.x+Math.random()*e.size.x,y:e.origin.y+e.mins.y+Math.random()*e.size.y,z:e.origin.z+e.mins.z+Math.random()*e.size.z};t.multicast(e.origin,0,se.temp_entity,Se.EXPLOSION1_BIG,n)}function yP(e,t){for(let n=0;n<3;n++)Iv(e,t);yu(t,e.origin,250,Gh),e.nextthink=-1}function wP(e,t){Iv(e,t)}var AP=[{ai:he,dist:0,think:wP},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0}];Q7={firstframe:H7,lastframe:V7,frames:AP,endfunc:yP};var GD=new Map(hu.map(e=>[e.name,e]));U();var SP=2166136261,kP=16777619;function Cv(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,kP)>>>0;return n>>>0}function vi(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return Cv(e,r)}function du(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return Cv(e,n)}var Xc=2,EP=1;function at(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function ke(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function pi(e,t,n){return e===void 0?n:ke(e,t)}function Ya(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function Ba(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)ke(n,`${t} element`);return e}function bP(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=at(e,"level");return{frameNumber:pi(t.frameNumber,"level.frameNumber",0),timeSeconds:pi(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:pi(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:pi(t.deltaSeconds,"level.deltaSeconds",0)}}function xP(e){if(e===void 0)return new mu().getState();let t=at(e,"rng"),n=at(t.mt,"rng.mt"),i=Ba(n.state,"rng.mt.state");return{mt:{index:ke(n.index,"rng.mt.index"),state:i}}}function MP(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let i=at(t,`thinks[${n}]`);return{time:ke(i.time,`thinks[${n}].time`),entityIndex:ke(i.entityIndex,`thinks[${n}].entityIndex`)}})}function TP(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=at(e,"awareness"),n=(i,r)=>i===null?null:ke(i,r);return{frameNumber:ke(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:ke(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:ke(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:ke(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function RP(e){if(e===void 0)return{};let t=at(e,"entity.fields"),n={};for(let[i,r]of Object.entries(t)){if(r===null){n[i]=null;continue}switch(typeof r){case"number":case"string":case"boolean":n[i]=r;break;default:{if(!Array.isArray(r)){let a=at(r,i),s={};for(let[o,u]of Object.entries(a))s[o]=ke(u,`${i}.${o}`);n[i]=s;break}if(Array.isArray(r)&&r.length===3){let[a,s,o]=r;n[i]=[ke(a,`${i}[0]`),ke(s,`${i}[1]`),ke(o,`${i}[2]`)];break}throw new Error(`Unsupported entity field value for ${i}`)}}}return n}function zP(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let i=at(t,`entities[${n}]`);return{index:ke(i.index,`entities[${n}].index`),fields:RP(i.fields)}})}function LP(e){let t=at(e,"pool");return{capacity:ke(t.capacity,"pool.capacity"),activeOrder:Ba(t.activeOrder,"pool.activeOrder"),freeList:Ba(t.freeList,"pool.freeList"),pendingFree:Ba(t.pendingFree,"pool.pendingFree")}}function NP(e){let t=at(e,"entities");return{timeSeconds:ke(t.timeSeconds,"entities.timeSeconds"),pool:LP(t.pool),entities:zP(t.entities),thinks:MP(t.thinks),awareness:TP(t.awareness),crossLevelFlags:pi(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:pi(t.crossUnitFlags,"entities.crossUnitFlags",0),level:{next_auto_save:0,health_bar_entities:[null,null,null,null]}}}function OP(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let i=at(t,`cvars[${n}]`);return{name:Ya(i.name,`cvars[${n}].name`),value:Ya(i.value,`cvars[${n}].value`),flags:ke(i.flags,`cvars[${n}].flags`)}})}function IP(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>Ya(t,`configstrings[${n}]`))}function CP(e){return e===void 0?{}:at(e,"gameState")}function Wt(e,t){if(t==null)return e;if(typeof t=="number")return vi(e,t);if(typeof t=="string")return du(e,t);if(typeof t=="boolean")return vi(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=Wt(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=du(n,r),n=Wt(n,t[r]);return n}return e}function PP(e){let t=SP;return t=vi(t,e.version),t=vi(t,e.timestamp),t=du(t,e.map),t=vi(t,e.difficulty),t=vi(t,e.playtimeSeconds),t=Wt(t,e.gameState),t=Wt(t,e.level),t=Wt(t,e.rng),t=Wt(t,e.entities),t=Wt(t,e.cvars),t=Wt(t,e.configstrings),e.player&&(t=Wt(t,e.player)),t>>>0}function Pv(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=at(i,"save"),a=r.version??Xc,s=ke(a,"version");if(s<EP)throw new Error(`Unsupported save version ${s}`);if(s>Xc&&!n)throw new Error(`Save version ${s} is newer than supported ${Xc}`);let o={version:s,timestamp:ke(r.timestamp,"timestamp"),map:Ya(r.map,"map"),difficulty:ke(r.difficulty,"difficulty"),playtimeSeconds:ke(r.playtimeSeconds,"playtimeSeconds"),gameState:CP(r.gameState),level:bP(r.level),rng:xP(r.rng),entities:NP(r.entities),cvars:OP(r.cvars),configstrings:IP(r.configstrings),player:r.player?r.player:void 0,checksum:r.checksum!==void 0?ke(r.checksum,"checksum"):void 0};if(o.checksum!==void 0){let u=PP(o);if(u!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${u}`)}return o}U();var HD=new Set(hu.filter(e=>e.save).map(e=>e.name));var mh=globalThis.TextEncoder;function wi(e){return Pv({...e},{allowNewerVersion:!0})}function FP(e){return mh?new mh().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var DP=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:wi(e.save)};this.records.set(e.id,t)}async get(e){let t=this.records.get(e);return t?{id:t.id,metadata:{...t.metadata},save:wi(t.save)}:null}async delete(e){return this.records.delete(e)}async list(){return Array.from(this.records.values()).map(e=>({id:e.id,metadata:{...e.metadata},save:wi(e.save)}))}},UP=class{constructor(e,t,n){this.indexedDB=e,this.dbName=t,this.storeName=n,this.db=null}async init(){this.db||(this.db=await new Promise((e,t)=>{let n=this.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{n.result.createObjectStore(this.storeName,{keyPath:"id"})},n.onerror=()=>t(n.error??new Error("Failed to open IndexedDB")),n.onsuccess=()=>e(n.result)}))}async runTransaction(e,t){await this.init();let n=this.db;return new Promise((i,r)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>i(o.result),o.onerror=()=>r(o.error??new Error("IndexedDB request failed"))})}async put(e){await this.runTransaction("readwrite",t=>t.put(e))}async get(e){let t=await this.runTransaction("readonly",n=>n.get(e));return t?{id:t.id,metadata:{...t.metadata},save:wi(t.save)}:null}async delete(e){return await this.get(e)?(await this.runTransaction("readwrite",n=>n.delete(e)),!0):!1}async list(){return(await this.runTransaction("readonly",t=>t.getAll())).map(t=>({id:t.id,metadata:{...t.metadata},save:wi(t.save)}))}},Gd=class _r{constructor(t={}){let{dbName:n=_r.DEFAULT_DB_NAME,storeName:i=_r.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new UP(r,n,i):this.adapter=new DP}async save(t,n,i={}){let r=wi(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:FP(r)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:r}),a}async load(t,n={}){await this.adapter.init();let i=await this.adapter.get(t);if(!i)throw new Error(`Save slot ${t} not found`);return Pv(i.save,n)}async delete(t){return await this.adapter.init(),this.adapter.delete(t)}async list(){return await this.adapter.init(),(await this.adapter.list()).map(n=>({...n.metadata})).sort((n,i)=>i.timestamp-n.timestamp||n.id.localeCompare(i.id))}async quickSave(t){return this.save(_r.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(_r.QUICK_SLOT,t)}};Gd.DEFAULT_DB_NAME="quake2ts-saves";Gd.DEFAULT_STORE="saves";Gd.QUICK_SLOT="quicksave";U();gn();U();U();var VD=br();U();gn();var WD=[{id:ue.QuadDamage,priority:1},{id:ue.Invulnerability,priority:2},{id:ue.EnviroSuit,priority:3},{id:ue.Rebreather,priority:4},{id:ue.Silencer,priority:5}];U();U();var BP=new Map,GP=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],Fv=async(e,t)=>{for(let n of GP)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);BP.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var HP=new Map,VP=["d_left","d_right","d_up","d_down"],Dv=async(e,t)=>{for(let n of VP)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);HP.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Hd=[],WP=0,Uv=async(e,t)=>{for(let n=0;n<10;n++)try{let i=await t.loadTexture(`pics/hud/num_${n}.pcx`),r=e.registerTexture(`hud_num_${n}`,i);Hd.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}Hd.length>0&&(WP=Hd[0].width),await X0(e,t),await Fv(e,t),await Dv(e,t)};var Vd=[{type:"null"},{type:"armor",id:Cn.BODY},{type:"armor",id:Cn.COMBAT},{type:"armor",id:Cn.JACKET},{type:"armor",id:Cn.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:$.Grapple},{type:"weapon",id:$.Blaster},{type:"weapon",id:$.ChainFist},{type:"weapon",id:$.Shotgun},{type:"weapon",id:$.SuperShotgun},{type:"weapon",id:$.Machinegun},{type:"weapon",id:$.EtfRifle},{type:"weapon",id:$.Chaingun},{type:"ammo",id:F.Grenades},{type:"ammo",id:F.Trap},{type:"ammo",id:F.Tesla},{type:"weapon",id:$.GrenadeLauncher},{type:"weapon",id:$.ProxLauncher},{type:"weapon",id:$.RocketLauncher},{type:"weapon",id:$.HyperBlaster},{type:"weapon",id:$.IonRipper},{type:"weapon",id:$.PlasmaBeam},{type:"weapon",id:$.Railgun},{type:"weapon",id:$.Phalanx},{type:"weapon",id:$.BFG10K},{type:"weapon",id:$.Disruptor},{type:"ammo",id:F.Shells},{type:"ammo",id:F.Bullets},{type:"ammo",id:F.Cells},{type:"ammo",id:F.Rockets},{type:"ammo",id:F.Slugs},{type:"ammo",id:F.MagSlugs},{type:"ammo",id:F.Flechettes},{type:"ammo",id:F.Prox},{type:"ammo",id:F.Nuke},{type:"ammo",id:F.Rounds},{type:"powerup",id:ue.QuadDamage},{type:"powerup",id:ue.QuadFire},{type:"powerup",id:ue.Invulnerability},{type:"powerup",id:ue.Invisibility},{type:"powerup",id:ue.Silencer},{type:"powerup",id:ue.Rebreather},{type:"powerup",id:ue.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:ue.Bandolier},{type:"powerup",id:ue.AmmoPack},{type:"powerup",id:ue.IRGoggles},{type:"powerup",id:ue.DoubleDamage},{type:"powerup",id:ue.SphereVengeance},{type:"powerup",id:ue.SphereHunter},{type:"powerup",id:ue.SphereDefender},{type:"powerup",id:ue.Doppelganger},{type:"powerup",id:ue.TagToken},{type:"key",id:ze.DataCD},{type:"key",id:ze.PowerCube},{type:"key",id:ze.ExplosiveCharges},{type:"key",id:ze.Yellow},{type:"key",id:ze.PowerCore},{type:"key",id:ze.Pyramid},{type:"key",id:ze.DataSpinner},{type:"key",id:ze.Pass},{type:"key",id:ze.Blue},{type:"key",id:ze.Red},{type:"key",id:ze.Green},{type:"key",id:ze.CommanderHead},{type:"key",id:ze.Airstrike},{type:"key",id:ze.NukeContainer},{type:"key",id:ze.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:ze.RedFlag},{type:"key",id:ze.BlueFlag},{type:"powerup",id:ue.TechResistance},{type:"powerup",id:ue.TechStrength},{type:"powerup",id:ue.TechHaste},{type:"powerup",id:ue.TechRegeneration},{type:"powerup",id:ue.Flashlight},{type:"powerup",id:ue.Compass}];function Oi(e,t,n){return e+(t-e)*n}function Wd(e,t,n){return Oi(e,t,n)}function Hs(e,t,n,i,r){let a=[],s=r.engine.assets;if(!s)return a;let o;t instanceof Map?o=t:o=new Map(t.map(u=>[u.number,u]));for(let u of e){let c=o.get(u.number)??u,d=u.modelIndex??u.modelindex,m=u.skinNum??u.skinnum;if(d===void 0)continue;let l=i.getModelName(d);if(!l)continue;let f=s.getMd2Model(l)||s.getMd3Model(l);if(!f)continue;let _={x:Oi(c.origin.x,u.origin.x,n),y:Oi(c.origin.y,u.origin.y,n),z:Oi(c.origin.z,u.origin.z,n)},p={x:Wd(c.angles.x,u.angles.x,n),y:Wd(c.angles.y,u.angles.y,n),z:Wd(c.angles.z,u.angles.z,n)},v=u.frame,y=c.frame,S=c.scale!==void 0?c.scale:1,k=u.scale!==void 0?u.scale:1,w=Oi(S,k,n),b=ee=>ee===void 0||ee===0?255:ee,T=b(c.alpha),x=b(u.alpha),O=Oi(T,x,n)/255,A=ve.create();ve.translate(A,A,[_.x,_.y,_.z]),ve.rotateZ(A,A,p.z*Math.PI/180),ve.rotateY(A,A,p.y*Math.PI/180),ve.rotateX(A,A,p.x*Math.PI/180),ve.scale(A,A,[w,w,w]);let P=m!==void 0&&m>0?i.getImageName(m):void 0,W,ie=u.renderfx??0;(ie&(lt.ShellGreen|lt.ShellBlue))===(lt.ShellGreen|lt.ShellBlue)?W=[0,1,1,1]:ie<.ShellRed?W=[1,0,0,1]:ie<.ShellGreen?W=[0,1,0,1]:ie<.ShellBlue?W=[0,0,1,1]:ie<.ShellDouble?W=[1,1,0,1]:ie<.ShellHalfDam&&(W=[.5,.5,.5,1]),f.header.magic===844121161?a.push({type:"md2",model:f,blend:{frame0:y,frame1:v,lerp:n},transform:A,skin:P,alpha:O,tint:W}):f.header.magic===860898377&&a.push({type:"md3",model:f,blend:{frame0:y,frame1:v,lerp:n},transform:A,alpha:O,tint:W})}return a}var KP=32768,Vs=class{constructor(t,n){this.configstrings=new Array(KP).fill("");this.entities=new Map;this.previousEntities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.playerNum=0;this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}setView(t){this.view=t}onServerData(t,n,i,r,a,s,o,u){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}, Tick: ${o??10}`),this.configstrings.fill(""),this.entities.clear(),this.previousEntities.clear(),this.baselines.clear(),this.latestFrame=null,this.previousFrame=null,this.playerNum=a,this.callbacks?.onServerData&&this.callbacks.onServerData(t,o)}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame,this.previousEntities=this.entities),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,i=new Map;if(n.delta)for(let[r,a]of this.entities)i.set(r,structuredClone(a));for(let r of n.entities){if(r.bits&Um){i.delete(r.number);continue}let a=r.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=Xn();let o=structuredClone(s);this.applyDelta(o,r),i.set(a,o)}this.entities=i}applyDelta(t,n){let i=n.bits,r=n.bitsHigh;t.number=n.number,i&nc&&(t.modelindex=n.modelindex),i&ac&&(t.modelindex2=n.modelindex2),i&sc&&(t.modelindex3=n.modelindex3),i&oc&&(t.modelindex4=n.modelindex4),i&Jo&&(t.frame=n.frame),i&rc&&(t.frame=n.frame),(i&sa||i&ua)&&(t.skinnum=n.skinnum),(i&aa||i&ca)&&(t.effects=n.effects),(i&ra||i&oa)&&(t.renderfx=n.renderfx),i&Yo&&(t.origin.x=n.origin.x),i&qo&&(t.origin.y=n.origin.y),i&ec&&(t.origin.z=n.origin.z),i&tc&&(t.angles.x=n.angles.x),i&Zo&&(t.angles.y=n.angles.y),i&jo&&(t.angles.z=n.angles.z),i&cc&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),i&uc&&(t.sound=n.sound),i&Qo&&(t.event=n.event),i&dc&&(t.solid=n.solid),i&ic&&(t.alpha=n.alpha),i&lc&&(t.scale=n.scale),i&mc&&(t.instanceBits=n.instanceBits),i&fc&&(t.loopVolume=n.loopVolume),r&hc&&(t.loopAttenuation=n.loopAttenuation),r&_c&&(t.owner=n.owner),r&gc&&(t.oldFrame=n.oldFrame)}onCenterPrint(t){this.callbacks?.onCenterPrint?this.callbacks.onCenterPrint(t):console.log(`[Center]: ${t}`)}onStuffText(t){this.imports?.engine.cmd&&this.imports.engine.cmd.executeText(t)}onPrint(t,n){this.callbacks?.onPrint?this.callbacks.onPrint(t,n):console.log(`[Print ${t}]: ${n}`)}onSound(t,n,i,r,a,s,o){if(!this.imports?.engine.audio)return;let u=i??1,c=r??1,d=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,u,c,d):o&&this.imports.engine.audio.positioned_sound(o,n,u,c)}onTempEntity(t,n,i,r,a,s,o,u,c){}onLayout(t){}onInventory(t){this.inventory=[...t]}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onMuzzleFlash3(t,n){if(t===this.playerNum+1&&this.view){let r=0,a=0,s=0,o=nn,c=ka(this.stats,ur.QuadDamage)?4:1;switch(n){case o0:r=-2,o={x:-2,y:0,z:0};break;case h0:r=-4,o={x:-4,y:0,z:0};break;case s0:r=-1,a=Math.random()-.5;break;case c0:case u0:case d0:r=-.5,a=Math.random()-.5;break;case l0:r=-3,o={x:-3,y:0,z:0};break;case m0:case f0:r=-2,o={x:-2,y:0,z:0};break;case _0:r=-5,o={x:-2,y:0,z:0};break;case g0:case a0:r=-.5;break}(r!==0||a!==0||s!==0)&&this.view.addKick({pitch:r*c,roll:s*c,durationMs:200,origin:o})}this.callbacks?.onMuzzleFlash3&&this.callbacks.onMuzzleFlash3(t,n)}onFog(t){this.callbacks?.onFog&&this.callbacks.onFog(t)}onDamage(t){this.callbacks?.onDamage&&this.callbacks.onDamage(t)}onLocPrint(t,n,i){this.callbacks?.onLocPrint&&this.callbacks.onLocPrint(t,n,i)}onLevelRestart(){this.callbacks?.onLevelRestart&&this.callbacks.onLevelRestart()}onWaitingForPlayers(t){this.callbacks?.onWaitingForPlayers&&this.callbacks.onWaitingForPlayers()}onDisconnect(){console.log("Demo disconnected")}onReconnect(){console.log("Demo reconnect")}onDownload(t,n,i){}convertFrameToPredictionState(t){let n=t.playerState,i={ammo:{caps:[],counts:[]},ownedWeapons:new Set,armor:null,powerups:new Map,keys:new Set,items:new Set};for(let u=0;u<this.inventory.length;u++){let c=this.inventory[u];if(c<=0)continue;if(u>=Vd.length)break;let d=Vd[u];switch(d.type){case"weapon":i.ownedWeapons.add(d.id);break;case"ammo":i.ammo.counts[d.id]||(i.ammo.counts[d.id]=0),i.ammo.counts[d.id]=c;break;case"armor":i.armor={armorType:d.id,armorCount:c};break;case"powerup":i.powerups.set(d.id,c);break;case"key":i.keys.add(d.id);break;case"health":break;case"item":i.items.add(d.id);break}}let r={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:r,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:cr.None,gravity:n.gravity,deltaAngles:o,client:{inventory:i,weaponStates:{states:new Map},buttons:0,pm_type:n.pm_type,pm_time:n.pm_time,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov},health:n.stats[1],armor:n.stats[4],ammo:n.stats[2],blend:[0,0,0,0],damageAlpha:0,damageIndicators:[],stats:[...n.stats],kick_angles:nn,kick_origin:nn,gunoffset:nn,gunangles:nn,gunindex:0,onGround:!1,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},pm_time:n.pm_time,pm_type:n.pm_type,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov}}getPredictionState(t){if(!this.latestFrame)return Bt();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let i=this.latestFrame.serverFrame*100,r=this.previousFrame.serverFrame*100;if(t<=1){let a=this.convertFrameToPredictionState(this.previousFrame);return Ln(a,n,Math.max(0,Math.min(1,t)))}else if(t>=r&&t<=i){let a=(t-r)/(i-r),s=this.convertFrameToPredictionState(this.previousFrame);return Ln(s,n,Math.max(0,Math.min(1,a)))}}return n}getRenderableEntities(t,n){if(!this.latestFrame)return[];if(!this.imports)return[];let i=Array.from(this.entities.values()),r=this.previousEntities.size>0?this.previousEntities:i;return Hs(i,r,t,n,this.imports)}getDemoCamera(t){let n=this.getPredictionState(t);return{origin:n.origin,angles:n.viewAngles,fov:n.fov??90}}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var Ii=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=be.Models&&t<be.Models+ar){let i=t-be.Models;this.models[i]=n}else if(t>=be.Sounds&&t<be.Sounds+sr){let i=t-be.Sounds;this.sounds[i]=n}else if(t>=be.Images&&t<be.Images+or){let i=t-be.Images;this.images[i]=n}}get(t){return this.strings.get(t)}getModelName(t){return this.models[t]}getSoundName(t){return this.sounds[t]}getImageName(t){return this.images[t]}clear(){this.strings.clear(),this.models.length=0,this.sounds.length=0,this.images.length=0}};var Ws=class{constructor(t,n,i){this.menuSystem=t;this.saveLoadFactory=n;this.options=i}createMainMenu(){let t=[{label:"New Game",action:()=>{this.menuSystem.pushMenu(this.createDifficultyMenu())}},{label:"Multiplayer",action:()=>{this.options.multiplayerFactory?this.menuSystem.pushMenu(this.options.multiplayerFactory.createMultiplayerMenu()):console.warn("Multiplayer factory not configured")}},{label:"Load Game",action:()=>{this.saveLoadFactory.createLoadMenu().then(n=>{this.menuSystem.pushMenu(n)})}}];return this.options.showSaveOption!==!1&&t.push({label:"Save Game",action:()=>{this.saveLoadFactory.createSaveMenu().then(n=>{this.menuSystem.pushMenu(n)})}}),t.push({label:"Options",action:()=>{this.menuSystem.pushMenu(this.options.optionsFactory.createOptionsMenu())}},{label:"Quit",action:()=>{this.options.onQuit()}}),{title:"Main Menu",items:t}}createDifficultyMenu(){return{title:"Select Difficulty",items:[{label:"Easy",action:()=>this.startNewGame(0)},{label:"Medium",action:()=>this.startNewGame(1)},{label:"Hard",action:()=>this.startNewGame(2)},{label:"Map Select...",action:()=>{this.menuSystem.pushMenu(this.options.mapsFactory.createMapsMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}startNewGame(t){this.options.onSetDifficulty&&this.options.onSetDifficulty(t),this.options.onNewGame()}};var Ks=class{constructor(t,n,i,r,a){this.menuSystem=t;this.storage=n;this.onSave=i;this.onLoad=r;this.onDelete=a}async createSaveMenu(){let t=await this.storage.list(),n=[];return n.push({label:"New Save...",action:()=>{this.menuSystem.pushMenu(this.createNewSaveInputMenu())}}),t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${Bv(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(i))}})}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Save Game",items:n}}async createLoadMenu(){let t=await this.storage.list(),n=[];return t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${Bv(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(i))}})}),t.length===0&&n.push({label:"No saves found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Load Game",items:n}}createLoadActionMenu(t){return{title:`Slot: ${t.name}`,items:[{label:"Load Game",action:()=>{this.onLoad(t.id).then(()=>{this.menuSystem.closeAll()})}},{label:"Delete Save",action:()=>{this.menuSystem.pushMenu(this.createConfirmDeleteMenu(t))}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createConfirmDeleteMenu(t){return{title:`Delete ${t.name}?`,items:[{label:"Yes, Delete",action:()=>{this.onDelete(t.id).then(()=>{this.menuSystem.popMenu(),this.menuSystem.popMenu(),this.menuSystem.popMenu()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}createNewSaveInputMenu(){let t={name:`Save ${new Date().toLocaleString()}`};return{title:"Enter Save Name",items:[{label:"Name",type:"input",getValue:()=>t.name,onUpdate:n=>{t.name=n}},{label:"Save",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"Cancel",action:()=>this.menuSystem.popMenu()}]}}createConfirmOverwriteMenu(t){return{title:`Overwrite ${t.name}?`,items:[{label:"Yes, Overwrite",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}};function Bv(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),i=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`}var $s=class{constructor(){this.activeMenu=null;this.selectedIndex=0;this.menuStack=[]}pushMenu(t){this.activeMenu&&(this.menuStack.push(this.activeMenu),t.parent||(t.parent=this.activeMenu)),this.activeMenu=t,this.selectedIndex=0}popMenu(){this.menuStack.length>0?(this.activeMenu=this.menuStack.pop(),this.selectedIndex=0):this.activeMenu=null}closeAll(){this.activeMenu=null,this.menuStack=[],this.selectedIndex=0}handleInput(t,n){if(!this.activeMenu)return!1;let i=this.activeMenu.items[this.selectedIndex];if(t==="up")return this.selectedIndex=(this.selectedIndex-1+this.activeMenu.items.length)%this.activeMenu.items.length,!0;if(t==="down")return this.selectedIndex=(this.selectedIndex+1)%this.activeMenu.items.length,!0;if(t==="select")return i.action&&i.action(),!0;if(t==="back")return this.popMenu(),!0;if(i.type==="input"&&i.onUpdate&&i.getValue){let r=i.getValue();if(t==="char"&&n){let a=(r||"")+n;i.onUpdate(a)}else if(t==="left"){let a=String(r||"");a.length>0&&i.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var Vr=class{constructor(t,n){this.menuSystem=t;this.host=n}createOptionsMenu(){return{title:"Options",items:[{label:"Video Options",action:()=>{this.menuSystem.pushMenu(this.createVideoMenu())}},{label:"Audio Options",action:()=>{this.menuSystem.pushMenu(this.createAudioMenu())}},{label:"Controls",action:()=>{this.menuSystem.pushMenu(this.createControlsMenu())}},{label:"Gameplay",action:()=>{this.menuSystem.pushMenu(this.createGameplayMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createVideoMenu(){let t=this.host.cvars;return{title:"Video Options",items:[{label:"Field of View",type:"input",getValue:()=>t?.get("fov")?.string??"90",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("fov",n)}},{label:"Fullscreen",type:"toggle",getValue:()=>document.fullscreenElement?"On":"Off",onUpdate:()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(n=>{console.error(`Error attempting to enable fullscreen: ${n.message}`)})}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createAudioMenu(){let t=this.host.cvars;return{title:"Audio Options",items:[{label:"Master Volume",type:"input",getValue:()=>t?.get("s_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("ogg_volume",n)}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createControlsMenu(){let t=this.host.cvars;return{title:"Controls",items:[{label:"Sensitivity",type:"input",getValue:()=>t?.get("sensitivity")?.string??"3",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("sensitivity",n)}},{label:"Invert Mouse",type:"toggle",getValue:()=>t?.get("m_pitch")?.string.startsWith("-")?"Yes":"No",onUpdate:()=>{let n=parseFloat(t?.get("m_pitch")?.string??"0.022");t?.setValue("m_pitch",(-n).toString())}},{label:"Always Run",type:"toggle",getValue:()=>t?.get("cl_run")?.integer?"Yes":"No",onUpdate:()=>{let n=t?.get("cl_run")?.integer??1;t?.setValue("cl_run",n?"0":"1")}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createGameplayMenu(){let t=this.host.cvars;return{title:"Gameplay Options",items:[{label:"Crosshair",type:"toggle",getValue:()=>t?.get("crosshair")?.integer?"On":"Off",onUpdate:()=>{let n=t?.get("crosshair")?.integer??1;t?.setValue("crosshair",n?"0":"1")}},{label:"Handedness",type:"toggle",getValue:()=>t?.get("hand")?.integer===1?"Left":t?.get("hand")?.integer===2?"Center":"Right",onUpdate:()=>{let i=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",i.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var Xs=class{constructor(t,n,i){this.menuSystem=t;this.vfs=n;this.onStartMap=i}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(i=>({label:i.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(i.path.replace(/^maps\//,"").replace(/\.bsp$/,"")),this.menuSystem.closeAll()}}));return n.length===0&&n.push({label:"No maps found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Select Map",items:n}}};var Ys=class{constructor(t,n,i){this.menuSystem=t;this.optionsFactory=n;this.host=i}createPauseMenu(){return{title:"Game Paused",items:[{label:"Resume Game",action:()=>{this.menuSystem.closeAll()}},{label:"Options",action:()=>{this.menuSystem.pushMenu(this.optionsFactory.createOptionsMenu())}},{label:"Restart Level",action:()=>{this.host?.commands.execute("restart"),this.menuSystem.closeAll()}},{label:"Quit to Main Menu",action:()=>{this.host?.commands.execute("disconnect"),this.menuSystem.closeAll()}}]}}};var qs=class{constructor(t,n){this.menuSystem=t;this.connection=n}createMultiplayerMenu(t="localhost:27910",n=""){let i=t,r=[];return n&&r.push({label:n,action:()=>{}}),r.push({label:"Address: "+i,action:()=>{if(typeof window<"u"){let a=window.prompt("Enter Server Address",i);a&&(i=a,this.refreshMenu(i))}}},{label:"Connect",action:()=>{this.refreshMenu(i,"Connecting..."),this.connection.connect("ws://"+i).then(()=>{this.menuSystem.closeAll()}).catch(a=>{console.error(a);let s="Failed: "+(a.message||"Unknown error");this.refreshMenu(i,s)})}},{label:"Disconnect",action:()=>{this.connection.disconnect(),this.refreshMenu(i,"Disconnected")}},{label:"Back",action:()=>{this.menuSystem.popMenu()}}),{title:"Multiplayer",items:r}}refreshMenu(t,n=""){this.menuSystem.popMenu(),this.menuSystem.pushMenu(this.createMultiplayerMenu(t,n))}};function Gv(e,t,n,i){if(!t.activeMenu)return;let r=t.activeMenu,a=n/2,s=i/2,o=20,u=r.items.length*o+40,c=s-u/2;e.drawfillRect(0,0,n,i,[0,0,0,.7]),e.drawCenterString(c,r.title),r.items.forEach((d,m)=>{let l=c+40+m*o,f=d.label;if(d.type==="input"&&d.getValue){if(f+=`: ${d.getValue()}`,m===t.selectedIndex){let _=Date.now();Math.floor(_/500)%2===0&&(f+="_")}}else d.type==="toggle"&&d.getValue&&(f+=`: ${d.getValue()}`);if(m===t.selectedIndex){let y=f.replace(/\^[0-9]/g,"").length*8,S=(n-y)/2;e.drawString(S-16,l,"\r")}e.drawCenterString(l,f)})}var Wr=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let i=JSON.parse(n);for(let[r,a]of Object.entries(i)){let s=t.get(r);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let i of t)i.flags&rr.Archive&&(n[i.name]=i.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(i){console.warn("Failed to save settings",i)}}};var Zs=class{getItem(t){try{return localStorage.getItem(t)}catch(n){return console.warn("localStorage not available",n),null}}setItem(t,n){try{localStorage.setItem(t,n)}catch(i){console.warn("Failed to write to localStorage",i)}}};var js=class{constructor(){this.total=0;this.current=0;this.message="";this.active=!1}start(t,n="Loading..."){this.total=t,this.current=0,this.message=n,this.active=!0}update(t,n){this.current=t,n&&(this.message=n)}finish(){this.active=!1,this.current=this.total}render(t){if(!this.active)return;let n=t.width,i=t.height;t.drawfillRect(0,0,n,i,[.1,.1,.1,1]);let r=n*.6,a=20,s=(n-r)/2,o=i*.7;t.drawfillRect(s,o,r,a,[.3,.3,.3,1]);let u=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,r*u,a,[.8,.5,.1,1]),t.drawCenterString(o-30,this.message);let c=Math.floor(u*100);t.drawCenterString(o+a+10,`${c}%`)}};var Js=class{constructor(){this.state={active:!1,title:"",message:""}}show(t,n){this.state={active:!0,title:t,message:n}}hide(){this.state.active=!1}render(t){if(!this.state.active)return;let n=t.width,i=t.height,r=n/2,a=i/2,s=400,o=200;t.drawfillRect(0,0,n,i,[0,0,0,.5]),t.drawfillRect(r-s/2,a-o/2,s,o,[.2,0,0,1]),t.drawCenterString(a-40,`^1${this.state.title}`),t.drawCenterString(a,this.state.message),t.drawCenterString(a+60,"Press ESC to close")}};var Qs=class{constructor(){this.state={active:!1,type:"weapon",selectedIndex:-1}}open(t){this.state.active=!0,this.state.type=t}close(){this.state.active=!1}isOpen(){return this.state.active}handleInput(t,n){this.state.active}render(t,n,i,r){if(!this.state.active)return;let a=n/2,s=i/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};var eo=class{constructor(){this.socket=null;this.messageCallback=null;this.closeCallback=null;this.errorCallback=null}async connect(t){return new Promise((n,i)=>{try{this.socket=new WebSocket(t),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{n()},this.socket.onerror=r=>{let a=new Error("WebSocket connection error");this.errorCallback&&this.errorCallback(a),i(a)},this.socket.onclose=()=>{this.closeCallback&&this.closeCallback(),this.socket=null},this.socket.onmessage=r=>{this.messageCallback&&(r.data instanceof ArrayBuffer?this.messageCallback(new Uint8Array(r.data)):console.warn("Received non-binary message from server"))}}catch(r){i(r)}})}disconnect(){this.socket&&(this.socket.close(),this.socket=null)}send(t){this.socket&&this.socket.readyState===WebSocket.OPEN?this.socket.send(t):console.warn("Attempted to send data on closed or connecting socket")}onMessage(t){this.messageCallback=t}onClose(t){this.closeCallback=t}onError(t){this.errorCallback=t}isConnected(){return this.socket!==null&&this.socket.readyState===WebSocket.OPEN}};var to=class{constructor(t){this.state=0;this.parser=null;this.serverProtocol=0;this.serverCount=0;this.gameDir="";this.playerNum=0;this.levelName="";this.configStrings=new Map;this.baselines=new Map;this.challenge=0;this.connectPacketCount=0;this.connectPacketTime=0;this.latestServerFrame=0;this.commandHistory=[];this.prediction=null;this.driver=new eo,this.options=t,this.netchan=new b0,this.driver.onMessage(n=>this.handleMessage(n)),this.driver.onClose(()=>this.handleDisconnect()),this.driver.onError(n=>console.error("Network Error:",n))}setPrediction(t){this.prediction=t}async connect(t){this.state!==0&&this.disconnect(),console.log(`Connecting to ${t}...`),this.state=1,this.netchan.reset();try{await this.driver.connect(t),console.log("WebSocket connected."),this.state=2,this.sendChallenge()}catch(n){throw console.error("Connection failed:",n),this.state=0,n}}disconnect(){this.state!==0&&(this.driver.disconnect(),this.state=0,this.configStrings.clear(),this.baselines.clear(),this.commandHistory=[],this.latestServerFrame=0)}sendCommand(t){if(this.state!==5)return;let n={...t,serverFrame:t.serverFrame??this.latestServerFrame};this.commandHistory.push(n),this.commandHistory.length>r0&&this.commandHistory.shift(),this.prediction&&this.prediction.enqueueCommand(n);let i=new xc;i.writeByte(zn.move),i.writeByte(0),i.writeLong(this.latestServerFrame),k0(i,n);let r=this.netchan.transmit(i.getData());this.driver.send(r)}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let r=new ArrayBuffer(t.byteLength);new Uint8Array(r).set(t),n=r}let i=this.netchan.process(new Uint8Array(n));if(i&&i.byteLength>0){let r=new E0(i.buffer);this.parser=new vc(r,this),this.parser.parseMessage()}}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new dr;t.writeByte(zn.stringcmd),t.writeString("getchallenge");let n=this.netchan.transmit(t.getData());this.driver.send(n)}sendConnect(t){let n=new dr;n.writeByte(zn.stringcmd);let i=`\\name\\${this.options.username}\\model\\${this.options.model}\\skin\\${this.options.skin}\\hand\\${this.options.hand??0}\\fov\\${this.options.fov??90}`;n.writeString(`connect ${ia} ${t} ${i}`);let r=this.netchan.transmit(n.getData());this.driver.send(r)}isConnected(){return this.state===5}onServerData(t,n,i,r,a,s){console.log(`Server Data: Protocol ${t}, Level ${s}`),this.serverProtocol=t,this.serverCount=n,this.gameDir=r,this.playerNum=a,this.levelName=s,this.state=3;let o=new dr;o.writeByte(zn.stringcmd),o.writeString("new");let u=this.netchan.transmit(o.getData());this.driver.send(u),this.state=4}onConfigString(t,n){this.configStrings.set(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,t)}onStuffText(t){if(console.log(`Server StuffText: ${t}`),t.startsWith("precache")&&this.finishLoading(),t.startsWith("challenge ")){let n=t.split(" ");n.length>1&&(this.challenge=parseInt(n[1],10),this.sendConnect(this.challenge))}}finishLoading(){console.log("Finished loading, sending begin...");let t=new dr;t.writeByte(zn.stringcmd),t.writeString("begin");let n=this.netchan.transmit(t.getData());this.driver.send(n),this.state=5}onFrame(t){if(t.serverFrame>this.latestServerFrame&&(this.latestServerFrame=t.serverFrame),this.prediction&&t.playerState){let n=t.playerState,i={...Bt(),origin:{x:n.origin.x,y:n.origin.y,z:n.origin.z},velocity:{x:n.velocity.x,y:n.velocity.y,z:n.velocity.z},viewAngles:{x:n.viewangles.x,y:n.viewangles.y,z:n.viewangles.z},deltaAngles:{x:n.delta_angles.x,y:n.delta_angles.y,z:n.delta_angles.z},pmFlags:n.pm_flags,pmType:n.pm_type,gravity:n.gravity,health:n.stats[0]},r={frame:t.serverFrame,timeMs:0,state:i};this.prediction.setAuthoritative(r)}}onCenterPrint(t){}onPrint(t,n){}onSound(t,n,i,r,a,s,o){}onTempEntity(t,n,i,r,a,s,o,u,c){}onLayout(t){}onInventory(t){}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){this.disconnect()}onReconnect(){}onDownload(t,n,i){}};var no=class{constructor(t){this.isVisible=!0;this.playback=t}render(t,n,i){if(!this.isVisible)return;let a=this.playback.getState()===tr.Playing,s=60,o=i-s;t.drawfillRect(0,o,n,s,[0,0,0,.5]);let c=o+(s-24)/2,d=20,m=a?"PAUSE":"PLAY";t.drawString(d,c,m);let f=`Speed: ${this.playback.getSpeed()}x`;t.drawCenterString(c,f);let _=this.playback.getCurrentTime(),y=`${this.formatTime(_)} / --:--`,S=n-150;t.drawString(S,c,y);let k=o+5,w=4,b=n-40,T=20;t.drawfillRect(T,k,b,w,[.3,.3,.3,1]);let N=b*0;t.drawfillRect(T,k,N,w,[1,1,1,1]);let O=T+N;t.drawfillRect(O-2,k-2,4,w+4,[1,0,0,1]),t.drawCenterString(o+35,"[Space] Toggle [< >] Step [ [ ] ] Speed [Esc] Stop")}handleInput(t,n){if(!n)return!1;switch(t.toLowerCase()){case" ":return this.playback.getState()===tr.Playing?this.playback.pause():this.playback.getState()===tr.Paused&&this.playback.play(),!0;case"arrowright":return this.playback.stepForward(),!0;case"arrowleft":return this.playback.stepBackward(),!0;case"]":return this.changeSpeed(2),!0;case"[":return this.changeSpeed(.5),!0;case"escape":return this.playback.stop(),!0}return!1}changeSpeed(t){let i=this.playback.getSpeed()*t;i<.1&&(i=.1),i>16&&(i=16),this.playback.setSpeed(i)}formatTime(t){let n=Math.floor(t/1e3),i=Math.floor(n/60),r=n%60;return`${i.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}};var $P=[{code:"KeyW",command:"+forward"},{code:"ArrowUp",command:"+forward"},{code:"KeyS",command:"+back"},{code:"ArrowDown",command:"+back"},{code:"KeyA",command:"+moveleft"},{code:"KeyD",command:"+moveright"},{code:"Space",command:"+jump"},{code:"ControlLeft",command:"+crouch"},{code:"ShiftLeft",command:"+speed"},{code:"Mouse1",command:"+attack"},{code:"Mouse2",command:"+use"},{code:"Mouse3",command:"+zoom"},{code:"ArrowLeft",command:"+left"},{code:"ArrowRight",command:"+right"},{code:"PageUp",command:"+lookup"},{code:"PageDown",command:"+lookdown"},{code:"Gamepad0-Button7",command:"+attack"},{code:"Gamepad0-Button6",command:"+zoom"},{code:"Gamepad0-Button0",command:"+jump"},{code:"Gamepad0-Button1",command:"+crouch"},{code:"Gamepad0-Button2",command:"+use"},{code:"Gamepad0-Button4",command:"prevweapon"},{code:"Gamepad0-Button5",command:"nextweapon"},{code:"Digit1",command:"weapon 1"},{code:"Digit2",command:"weapon 2"},{code:"Digit3",command:"weapon 3"},{code:"Digit4",command:"weapon 4"},{code:"Digit5",command:"weapon 5"},{code:"Digit6",command:"weapon 6"},{code:"Digit7",command:"weapon 7"},{code:"Digit8",command:"weapon 8"},{code:"Digit9",command:"weapon 9"},{code:"Digit0",command:"weapon 10"}],Vn=class{constructor(t=$P){this.bindings=new Map;for(let n of t)this.bind(n.code,n.command)}bind(t,n){this.bindings.set(t,n)}unbind(t){this.bindings.delete(t)}getBinding(t){return this.bindings.get(t)}entries(){return new Map(this.bindings.entries())}};function Hv(){return new Vn}function Kd(e){return e}function Kr(e){return e.trim().toLowerCase()}var XP=250,$d=class{constructor(){this.activeCodes=new Set;this.downTime=0;this.msec=0;this.pressed=!1}press(t,n){return this.activeCodes.has(t)?!1:(this.activeCodes.add(t),this.pressed=!0,this.activeCodes.size===1?(this.downTime=n,!0):!1)}release(t,n){return this.activeCodes.delete(t)&&this.activeCodes.size===0?(this.msec+=n-this.downTime,this.downTime=0,!0):!1}sample(t,n){if(t<=0)return{active:this.activeCodes.size>0,wasPressed:this.pressed,fraction:0};let i=this.msec;this.activeCodes.size>0&&(i+=n-this.downTime,this.downTime=n),this.msec=0;let r=Math.min(i/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:r}}},io=(y=>(y.Forward="+forward",y.Back="+back",y.MoveLeft="+moveleft",y.MoveRight="+moveright",y.MoveUp="+moveup",y.MoveDown="+movedown",y.Jump="+jump",y.Crouch="+crouch",y.Attack="+attack",y.Use="+use",y.Holster="+holster",y.TurnLeft="+left",y.TurnRight="+right",y.LookUp="+lookup",y.LookDown="+lookdown",y.SpeedModifier="+speed",y.Zoom="+zoom",y))(io||{}),YP={"+attack":Tt.Attack,"+use":Tt.Use,"+holster":Tt.Holster,"+jump":Tt.Jump,"+crouch":Tt.Crouch},qP=new Map(Object.values(io).map(e=>[Kr(e),e]));function ZP(e){return qP.get(Kr(e))}function $r(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var Ci=class{constructor(t={},n=new Vn){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.sequence=0;this.bindings=n,this.forwardSpeed=t.forwardSpeed??Zm,this.sideSpeed=t.sideSpeed??jm,this.upSpeed=t.upSpeed??Jm,this.yawSpeed=t.yawSpeed??Qm,this.pitchSpeed=t.pitchSpeed??e0,this.sensitivity=t.sensitivity??t0,this.sensitivityX=t.sensitivityX,this.sensitivityY=t.sensitivityY,this.invertMouseY=t.invertMouseY??!1,this.runByDefault=t.runByDefault??!0,this.requirePointerLock=t.requirePointerLock??!0,this.jumpAddsUpMove=t.jumpAddsUpMove??!0,this.crouchAddsDownMove=t.crouchAddsDownMove??!0,this.mouseFilter=t.mouseFilter??!1,this.getGamepads=t.getGamepads,this.gamepadDeadZone=t.gamepadDeadZone??.15,this.gamepadLookScale=t.gamepadLookScale??1,this.invertGamepadY=t.invertGamepadY??this.invertMouseY}handleKeyDown(t,n=$r()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!0,i,n)}handleKeyUp(t,n=$r()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!1,i,n)}handleMouseButtonDown(t,n=$r()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!0,i,n)}handleMouseButtonUp(t,n=$r()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!1,i,n)}handleMouseMove(t,n){this.requirePointerLock&&!this.pointerLocked||(this.mouseDelta={deltaX:this.mouseDelta.deltaX+t,deltaY:this.mouseDelta.deltaY+n})}setPointerLocked(t){this.pointerLocked=t}setGamepadState(t){this.pendingGamepads=t}setTouchState(t){this.pendingTouchState=t}buildCommand(t,n=$r(),i){this.pollGamepads(n),this.applyTouchState(n);let r=this.yawSpeed*t/1e3,a=this.pitchSpeed*t/1e3,s=this.sample("+left",t,n),o=this.sample("+right",t,n),u=this.sample("+lookup",t,n),d={x:(this.sample("+lookdown",t,n).fraction-u.fraction)*a,y:(o.fraction-s.fraction)*r,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let P=this.gamepadLook.y*(this.invertGamepadY?-1:1);d={x:d.x+P*a*this.gamepadLookScale,y:d.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let P=this.touchLook.y*(this.invertMouseY?-1:1);d={x:d.x+P*a,y:d.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let P=this.sampleMouseDelta(),W=i0(P,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});d={x:d.x+W.x,y:d.y+W.y,z:0}}let m=n0(this.viewAngles,d);this.viewAngles=m;let l=this.sample("+forward",t,n),f=this.sample("+back",t,n),_=this.sample("+moveleft",t,n),p=this.sample("+moveright",t,n),v=this.sample("+moveup",t,n),y=this.sample("+movedown",t,n),S=this.sample("+speed",t,n),k=this.sample("+jump",t,n),w=this.sample("+crouch",t,n),b=this.runByDefault?S.active?.5:1:S.active?1:.5,T=this.forwardSpeed*(l.fraction-f.fraction)*b,x=this.sideSpeed*(p.fraction-_.fraction)*b,N=this.upSpeed*(v.fraction-y.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(T+=this.forwardSpeed*this.gamepadMove.y*b,x+=this.sideSpeed*this.gamepadMove.x*b),(this.touchMove.x!==0||this.touchMove.y!==0)&&(T+=this.forwardSpeed*this.touchMove.y*b,x+=this.sideSpeed*this.touchMove.x*b),this.jumpAddsUpMove&&k.fraction>0&&(N+=this.upSpeed*k.fraction),this.crouchAddsDownMove&&w.fraction>0&&(N-=this.upSpeed*w.fraction),T=this.clampMove(T,this.forwardSpeed),x=this.clampMove(x,this.sideSpeed),N=this.clampMove(N,this.upSpeed);let O=this.collectButtonBits(t,n),A=Math.min(Math.max(Math.round(t),1),XP);return(this.anyPressed||O!==Tt.None)&&(O|=Tt.Any),this.anyPressed=!1,this.sequence++,{msec:A,buttons:O,angles:{...this.viewAngles},forwardmove:T,sidemove:x,upmove:N,serverFrame:i,sequence:this.sequence,lightlevel:0,impulse:0}}consumeConsoleCommands(){let t=this.commandQueue;return this.commandQueue=[],t}pollGamepads(t){let n=this.getGamepads?.()??this.pendingGamepads??[];this.pendingGamepads=void 0,this.gamepadMove={x:0,y:0},this.gamepadLook={x:0,y:0};let i=new Set;for(let r of n){if(!r||r.connected===!1)continue;let a=r.index??0,s=r.axes??[];this.gamepadMove={x:this.mergeAnalog(this.gamepadMove.x,this.applyDeadZone(s[0]??0)),y:this.mergeAnalog(this.gamepadMove.y,-this.applyDeadZone(s[1]??0))},this.gamepadLook={x:this.mergeAnalog(this.gamepadLook.x,this.applyDeadZone(s[2]??0)),y:this.mergeAnalog(this.gamepadLook.y,this.applyDeadZone(s[3]??0))};let o=r.buttons??[];for(let u=0;u<o.length;u++){let c=o[u];if(!c)continue;let d=c.pressed||c.value>this.gamepadDeadZone,m=this.gamepadButtonCode(a,u);d&&i.add(m);let l=this.gamepadButtons.get(m)??!1;d!==l&&(this.applyCommand(this.bindings.getBinding(m),d,m,t),this.gamepadButtons.set(m,d))}}for(let[r,a]of this.gamepadButtons.entries())a&&!i.has(r)&&(this.applyCommand(this.bindings.getBinding(r),!1,r,t),this.gamepadButtons.set(r,!1))}applyTouchState(t){let n=this.pendingTouchState;if(n&&(this.pendingTouchState=void 0,n.move&&(this.touchMove={x:this.clampAnalog(n.move.x),y:this.clampAnalog(n.move.y)}),n.look&&(this.touchLook={x:this.clampAnalog(n.look.x),y:this.clampAnalog(n.look.y)}),n.buttons))for(let[i,r]of Object.entries(n.buttons)){if(r===void 0)continue;let a=this.touchButtons.get(i)??!1;r!==a&&(this.applyCommand(i,r,this.touchButtonCode(i),t),this.touchButtons.set(i,r))}}applyCommand(t,n,i,r){if(!t)return;let a=ZP(t);if(a){let s=this.lookupButton(a);n?(s.press(i,r)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(i,r)&&this.commandQueue.push(a.replace("+","-"))}else n&&this.commandQueue.push(t)}sampleMouseDelta(){let t=this.mouseDelta;if(this.mouseDelta={deltaX:0,deltaY:0},!this.mouseFilter)return this.previousMouseDelta=t,t;let n={deltaX:(t.deltaX+this.previousMouseDelta.deltaX)*.5,deltaY:(t.deltaY+this.previousMouseDelta.deltaY)*.5};return this.previousMouseDelta=t,n}collectButtonBits(t,n){let i=Tt.None;for(let[r,a]of Object.entries(YP)){let s=this.sample(r,t,n);(s.fraction>0||s.active||s.wasPressed)&&(i|=a)}return i}lookupButton(t){let n=this.buttons.get(t);return n||(n=new $d,this.buttons.set(t,n)),n}mouseButtonToCode(t){return t===0?"Mouse1":t===1?"Mouse3":t===2?"Mouse2":`Mouse${t+1}`}mouseButtonToCommand(t){return this.bindings.getBinding(t)}sample(t,n,i){return this.lookupButton(t).sample(n,i)}gamepadButtonCode(t,n){return`Gamepad${t}-Button${n}`}touchButtonCode(t){return`Touch-${t}`}clampAnalog(t){return Math.max(-1,Math.min(1,t))}applyDeadZone(t){return Math.abs(t)<this.gamepadDeadZone?0:t}mergeAnalog(t,n){return Math.abs(n)>Math.abs(t)?n:t}clampMove(t,n){return Math.max(-n,Math.min(n,t))}};var ro=class{constructor(t,n=new Ci(t)){this.queued=[];this.controller=n}captureFrame(t,n,i){let r=this.controller.buildCommand(t,n,i),a=this.controller.consumeConsoleCommands(),s={command:r,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var ao={x:0,y:0,z:0},Vv=(i=>(i[i.Normal=0]="Normal",i[i.DemoPlayback=1]="DemoPlayback",i[i.Multiplayer=2]="Multiplayer",i))(Vv||{});function jP(e){let t=R=>{let V={x:0,y:0,z:0};return e.engine.trace(R,R,V,V).contents||0},n=new za(e.engine.trace,t),i=new Ra,r=new Gm,a=new no(r),s=new Vs(e);s.setView(i);let o=!1,u=null,c=0,d=new $s,m=new js,l=new Js,f=new Qs,_=new Wr(new Zs),p,v,y=new Ii,S,k=0,w=!1,T=$0(e,{get tickRate(){return 10},get frameTimeMs(){return S?.timeMs??0},get serverFrame(){return s.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return y},getClientName:R=>`Player ${R}`,getKeyBinding:R=>`[${R}]`,get inAutoDemo(){return w}}),x=K0(T),N=new to({get username(){return e.host?.cvars?.get("name")?.string||"Player"},get model(){return e.host?.cvars?.get("model")?.string||"male"},get skin(){return e.host?.cvars?.get("skin")?.string||"grunt"},get fov(){return ie}}),O=new qs(d,N);s.setCallbacks({onCenterPrint:R=>x.ParseCenterPrint(R,0,!1),onPrint:(R,V)=>x.NotifyMessage(0,V,!1),onConfigString:(R,V)=>{y.set(R,V),x.ParseConfigString(R,V)},onServerData:(R,V)=>{V&&V>0?r.setFrameDuration(1e3/V):r.setFrameDuration(100)}}),r.setHandler(s);let A,P,W,ie=90,ee=!1;if(e.host){v=new Vr(d,e.host),p=new Ys(d,v,e.host);let R=new Map;if(e.host.cvars){for(let V of e.host.cvars.list())R.set(V.name,{value:V.string,setValue:oe=>e.host.cvars.setValue(V.name,oe)});_.loadCvars(R)}}if(e.host?.commands&&(e.host.commands.register("playdemo",R=>{if(R.length<1){console.log("usage: playdemo <filename>");return}let V=R[0];console.log(`playdemo: ${V}`),console.log("Note: Demo loading requires VFS access which is not yet fully integrated into this console command.")},"Play a recorded demo"),e.host.commands.register("crosshair",()=>{let R=Y0();console.log(`Crosshair changed to index ${R}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{ee=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{ee=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{d.isActive()?d.closeAll():p&&d.pushMenu(p.createPauseMenu())},"Toggle the main/pause menu"),e.host.commands.register("connect",R=>{if(R.length<1){console.log("usage: connect <address>");return}let V=R[0];console.log(`Connecting to ${V}...`),N.connect(V).catch(oe=>{console.error("Failed to connect:",oe),l.show("Connection Failed",oe instanceof Error?oe.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{N.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:rr.Archive,onChange:V=>{let oe=V.number;isNaN(oe)||(ie=Math.max(1,Math.min(179,oe)))},description:"Field of view"});let R=e.host.cvars.get("fov");if(R){let V=R.number;isNaN(V)||(ie=Math.max(1,Math.min(179,V)))}}return{loadingScreen:m,errorDialog:l,init(R){this.Init(R)},Init(R){S=R,R?.state&&n.setAuthoritative(R),x.Init(),e.engine.assets&&e.engine.renderer&&(m.start(100,"Loading assets..."),Uv(e.engine.renderer,e.engine.assets).then(()=>{m.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(d.isActive()||document.body.requestPointerLock?.())})},predict(R){return d.isActive(),N.isConnected()&&N.sendCommand(R),n.enqueueCommand(R)},handleInput(R,V){if(o&&a.handleInput(R,V))return!0;if(!d.isActive())return!1;if(!V)return!0;let oe=R.toLowerCase();return oe==="arrowup"||oe==="w"?d.handleInput("up"):oe==="arrowdown"||oe==="s"?d.handleInput("down"):oe==="arrowleft"||oe==="a"?d.handleInput("left"):oe==="arrowright"||oe==="d"?d.handleInput("right"):oe==="enter"||oe===" "?d.handleInput("select"):oe==="escape"?d.getState().activeMenu?.parent?d.handleInput("back"):!1:R.length===1?d.handleInput("char",R):R==="Backspace"?d.handleInput("left"):!0},toggleMenu(){if(d.isActive()){if(d.closeAll(),e.host?.cvars){let R=e.host.cvars.list().map(V=>({name:V.name,value:V.string,flags:V.flags}));_.saveCvars(R)}}else p&&d.pushMenu(p.createPauseMenu())},createMainMenu(R,V,oe,Ct,Ke){let Ue=new Ks(d,V,oe,Ct,Ke),At=v;if(!At){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");At=new Vr(d,e.host)}let ot=e.engine.assets,Wv={findByExtension:Wn=>ot?ot.listFiles(Wn):[]},Kv=new Xs(d,Wv,Wn=>{console.log(`Starting map: ${Wn}`),e.host?.commands.execute(`map ${Wn}`)}),$v=new Ws(d,Ue,{...R,optionsFactory:At,mapsFactory:Kv,multiplayerFactory:O,onSetDifficulty:Wn=>{e.host?.cvars&&e.host.cvars.setValue("skill",Wn.toString())}});return{menuSystem:d,factory:$v}},render(R){let V=[];if(o){let Ke=R.nowMs,Ue=k>0?Math.max(0,Ke-k):0;k=Ke,r.update(Ue),A=s.getPredictionState(r.getCurrentTime());let At=100;if(V=s.getRenderableEntities(1,y),A){let ot=s.getDemoCamera(1);ot&&(A.origin=ot.origin,A.viewAngles=ot.angles,ot.fov&&(A.fov=ot.fov))}}else k=R.nowMs,R.latest?.state&&(n.setAuthoritative(R.latest),S=R.latest),R.previous?.state&&R.latest?.state?(A=Ln(R.previous.state,R.latest.state,R.alpha),R.latest.state.packetEntities&&R.previous.state.packetEntities&&(V=Hs(R.latest.state.packetEntities,R.previous.state.packetEntities,R.alpha,y,e))):A=R.latest?.state??R.previous?.state??n.getPredictedState();let oe=R.latest&&R.previous?Math.max(0,R.latest.timeMs-R.previous.timeMs):0;P=i.sample(A,oe);let Ct={};if(A){let{origin:Ke,viewAngles:Ue}=A;W=new im,W.position=ye.fromValues(Ke.x,Ke.y,Ke.z);let At=P?.offset??{x:0,y:0,z:0};ye.add(W.position,W.position,[At.x,At.y,At.z]);let ot=P?.angles??{x:0,y:0,z:0};W.angles=ye.fromValues(Ue.x+ot.x,Ue.y+ot.y,Ue.z+ot.z),o&&A.fov?W.fov=A.fov:W.fov=ee?40:ie,W.aspect=4/3,e.engine.renderer&&(W.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&W){let Ke;if(e.engine.assets){let Ue=y.getModelName(1);if(Ue){let At=e.engine.assets.getMap(Ue)}}e.engine.renderer.renderFrame({camera:W,world:Ke,dlights:[]},V)}if(e.engine.renderer&&A&&A.client){let Ke=e.engine.renderer.stats?{...e.engine.renderer.stats,batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0}:{batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0},Ue=R.latest?.timeMs??0;this.DrawHUD(Ke,Ue)}return Ct},DrawHUD(R,V){if(!e.engine.renderer)return;let oe=e.engine.renderer,Ct=oe.width,Ke=oe.height;if(A&&A.client){let Ue={origin:A.origin,velocity:A.velocity,viewAngles:A.viewAngles,onGround:ri(A.pmFlags,Ut.OnGround),waterLevel:A.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:A.damageAlpha??0,damageIndicators:A.damageIndicators??[],blend:A.blend??[0,0,0,0],pickupIcon:A.pickupIcon,centerPrint:void 0,notify:void 0,stats:A.stats?[...A.stats]:new Array(32).fill(0),kick_angles:ao,kick_origin:ao,gunoffset:ao,gunangles:ao,gunindex:0,pm_type:A.pm_type??0,pm_time:A.pm_time??0,pm_flags:A.pmFlags,gun_frame:A.gun_frame??0,rdflags:A.rdflags??0,fov:A.fov??90};Ue.stats[Xe.STAT_HEALTH]=A.health??0,Ue.stats[Xe.STAT_AMMO]=A.ammo??0,Ue.stats[Xe.STAT_ARMOR]=A.armor??0,oe.begin2D(),x.DrawHUD(0,null,{x:0,y:0,width:Ct,height:Ke},{x:0,y:0,width:Ct,height:Ke},1,0,Ue),oe.end2D()}d.isActive()&&Gv(e.engine.renderer,d.getState(),e.engine.renderer.width,e.engine.renderer.height),o&&a.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height),A&&A.client&&f.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,A.client),l.render(e.engine.renderer),m.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(x.Shutdown(),S=void 0,A=void 0,e.host?.cvars){let R=e.host.cvars.list().map(V=>({name:V.name,value:V.string,flags:V.flags}));_.saveCvars(R)}},get prediction(){return n},get lastRendered(){return A},get view(){return i},get lastView(){return P},get camera(){return W},demoPlayback:r,get isDemoPlaying(){return o},get currentDemoName(){return u},get mode(){return c},startDemoPlayback(R,V){r.loadDemo(R),r.setHandler(s),o=!0,u=V,c=1,k=0,y.clear()},stopDemoPlayback(){r.stop(),o=!1,u=null,c=0},ParseCenterPrint(R){x.ParseCenterPrint(R,0,!1)},ParseNotify(R){x.NotifyMessage(0,R,!1)},showSubtitle(R,V){x.ShowSubtitle(R,V)},ParseConfigString(R,V){y.set(R,V),x.ParseConfigString(R,V)},demoHandler:s,multiplayer:N,configStrings:y}}return jv(JP);})();
|
|
178
178
|
/*! Bundled license information:
|
|
179
179
|
|
|
180
180
|
pako/dist/pako.esm.mjs:
|