@quake2ts/engine 0.0.780 → 0.0.781

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.
@@ -779,7 +779,7 @@ void main() {
779
779
 
780
780
  gl_FragColor = vec4(color, 1.0);
781
781
  }
782
- `;function ac(t){return C.fromValues(t.x,t.y,t.z)}function tr(t){return{x:t[0],y:t[1],z:t[2]}}var oc=class{constructor(e){this.vertices=[];this.solidVertices=[];this.labels=[];this.gl=e,this.shader=le.create(e,{vertex:Gx,fragment:Wx}),this.vao=new Ee(e),this.vbo=new Ae(e,e.DYNAMIC_DRAW),this.vao.configureAttributes([{index:0,size:3,type:e.FLOAT,stride:24,offset:0},{index:1,size:3,type:e.FLOAT,stride:24,offset:12}],this.vbo),this.shaderSolid=le.create(e,{vertex:Xx,fragment:Kx}),this.vaoSolid=new Ee(e),this.vboSolid=new Ae(e,e.DYNAMIC_DRAW),this.vaoSolid.configureAttributes([{index:0,size:3,type:e.FLOAT,stride:36,offset:0},{index:1,size:3,type:e.FLOAT,stride:36,offset:12},{index:2,size:3,type:e.FLOAT,stride:36,offset:24}],this.vboSolid)}get shaderSize(){return this.shader.sourceSize+this.shaderSolid.sourceSize}drawLine(e,r,n){this.vertices.push(e.x,e.y,e.z,n.r,n.g,n.b,r.x,r.y,r.z,n.r,n.g,n.b)}drawBoundingBox(e,r,n){let{x:i,y:a,z:o}=e,{x:s,y:c,z:l}=r;this.drawLine({x:i,y:a,z:o},{x:s,y:a,z:o},n),this.drawLine({x:s,y:a,z:o},{x:s,y:c,z:o},n),this.drawLine({x:s,y:c,z:o},{x:i,y:c,z:o},n),this.drawLine({x:i,y:c,z:o},{x:i,y:a,z:o},n),this.drawLine({x:i,y:a,z:l},{x:s,y:a,z:l},n),this.drawLine({x:s,y:a,z:l},{x:s,y:c,z:l},n),this.drawLine({x:s,y:c,z:l},{x:i,y:c,z:l},n),this.drawLine({x:i,y:c,z:l},{x:i,y:a,z:l},n),this.drawLine({x:i,y:a,z:o},{x:i,y:a,z:l},n),this.drawLine({x:s,y:a,z:o},{x:s,y:a,z:l},n),this.drawLine({x:s,y:c,z:o},{x:s,y:c,z:l},n),this.drawLine({x:i,y:c,z:o},{x:i,y:c,z:l},n)}drawPoint(e,r,n){let i=r/2;this.drawBoundingBox({x:e.x-i,y:e.y-i,z:e.z-i},{x:e.x+i,y:e.y+i,z:e.z+i},n)}drawAxes(e,r){this.drawLine(e,{x:e.x+r,y:e.y,z:e.z},{r:1,g:0,b:0}),this.drawLine(e,{x:e.x,y:e.y+r,z:e.z},{r:0,g:1,b:0}),this.drawLine(e,{x:e.x,y:e.y,z:e.z+r},{r:0,g:0,b:1})}drawText3D(e,r){this.labels.push({text:e,position:r})}addTriangle(e,r,n,i,a){this.solidVertices.push(e.x,e.y,e.z),this.solidVertices.push(a.r,a.g,a.b),this.solidVertices.push(i.x,i.y,i.z),this.solidVertices.push(r.x,r.y,r.z),this.solidVertices.push(a.r,a.g,a.b),this.solidVertices.push(i.x,i.y,i.z),this.solidVertices.push(n.x,n.y,n.z),this.solidVertices.push(a.r,a.g,a.b),this.solidVertices.push(i.x,i.y,i.z)}addCone(e,r,n,i){let o=ac(e),s=ac(r),c=C.create();C.subtract(c,o,s),C.normalize(c,c);let l=C.fromValues(0,0,1);Math.abs(C.dot(c,l))>.99&&(l=C.fromValues(0,1,0));let d=C.create();C.cross(d,l,c),C.normalize(d,d);let f=C.create();C.cross(f,c,d);let u=[];for(let p=0;p<16;p++){let y=p/16*Math.PI*2,v=Math.cos(y)*n,x=Math.sin(y)*n,b=C.clone(s);C.scaleAndAdd(b,b,d,v),C.scaleAndAdd(b,b,f,x),u.push(b)}let h=C.clone(c);C.scale(h,h,-1);let m=tr(h),g=r;for(let p=0;p<16;p++){let y=tr(u[p]),v=tr(u[(p+1)%16]);this.addTriangle(g,v,y,m,i)}for(let p=0;p<16;p++){let y=u[p],v=u[(p+1)%16],x=tr(y),b=tr(v),_=C.create();C.subtract(_,v,y);let w=C.create();C.subtract(w,o,y);let S=C.create();C.cross(S,_,w),C.normalize(S,S);let E=tr(S);this.addTriangle(x,b,e,E,i)}}addTorus(e,r,n,i,a={x:0,y:0,z:1}){let c=ac(a);C.normalize(c,c);let l=ac(e),d=C.fromValues(0,0,1),f=j.create();if(Math.abs(C.dot(c,d))>.999)c[2]<0&&j.rotateX(f,f,Math.PI);else{let m=C.create();C.cross(m,d,c),C.normalize(m,m);let g=Math.acos(C.dot(d,c));j.fromRotation(f,g,m)}let u=[],h=[];for(let m=0;m<=16;m++){let g=m/16*Math.PI*2,p=Math.cos(g),y=Math.sin(g),v=[],x=[];for(let b=0;b<=8;b++){let _=b/8*Math.PI*2,w=Math.cos(_),S=Math.sin(_),E=(r+n*w)*p,L=(r+n*w)*y,M=n*S,R=C.fromValues(E,L,M),I=w*p,B=w*y,F=S,U=C.fromValues(I,B,F);C.transformMat4(R,R,f),C.transformMat4(U,U,f),C.add(R,R,l),v.push(R),x.push(U)}u.push(v),h.push(x)}for(let m=0;m<16;m++)for(let g=0;g<8;g++){let p=u[m][g],y=u[m+1][g],v=u[m+1][g+1],x=u[m][g+1],b=tr(p),_=tr(y),w=tr(v),S=tr(x),E=C.create();C.subtract(E,y,p);let L=C.create();C.subtract(L,v,p);let M=C.create();C.cross(M,E,L),C.normalize(M,M),this.addTriangle(b,_,w,tr(M),i);let R=C.create();C.subtract(R,v,p);let I=C.create();C.subtract(I,x,p);let B=C.create();C.cross(B,R,I),C.normalize(B,B),this.addTriangle(b,w,S,tr(B),i)}}render(e,r=!1){if(r&&this.gl.disable(this.gl.DEPTH_TEST),this.vertices.length>0){this.shader.use();let n=this.shader.getUniformLocation("u_viewProjection");n&&this.gl.uniformMatrix4fv(n,!1,e),this.vbo.upload(new Float32Array(this.vertices)),this.vao.bind(),this.gl.drawArrays(this.gl.LINES,0,this.vertices.length/6)}if(this.solidVertices.length>0){this.shaderSolid.use();let n=this.shaderSolid.getUniformLocation("u_viewProjection");n&&this.gl.uniformMatrix4fv(n,!1,e);let i=this.shaderSolid.getUniformLocation("u_lightingEnabled");i&&this.gl.uniform1i(i,1),this.vboSolid.upload(new Float32Array(this.solidVertices)),this.vaoSolid.bind(),this.gl.drawArrays(this.gl.TRIANGLES,0,this.solidVertices.length/9)}r&&this.gl.enable(this.gl.DEPTH_TEST)}getLabels(e,r,n){let i=[];for(let a of this.labels){let o=ga.fromValues(a.position.x,a.position.y,a.position.z,1),s=ga.create(),l=e,d=o[0],f=o[1],u=o[2],h=o[3];if(s[0]=l[0]*d+l[4]*f+l[8]*u+l[12]*h,s[1]=l[1]*d+l[5]*f+l[9]*u+l[13]*h,s[2]=l[2]*d+l[6]*f+l[10]*u+l[14]*h,s[3]=l[3]*d+l[7]*f+l[11]*u+l[15]*h,s[3]>0){let m=s[0]/s[3],g=s[1]/s[3],p=(m+1)*.5*r,y=(1-g)*.5*n;p>=0&&p<=r&&y>=0&&y<=n&&i.push({text:a.text,x:p,y})}}return i}clear(){this.vertices=[],this.solidVertices=[],this.labels=[]}};function Im(t,e,r,n=32){let i=[];for(let s of t){let c=!0;for(let l of e)if(l.normal.x*s.origin.x+l.normal.y*s.origin.y+l.normal.z*s.origin.z+l.distance<-s.intensity){c=!1;break}if(c){let l=0;if(r){let d=s.origin.x-r.x,f=s.origin.y-r.y,u=s.origin.z-r.z;l=d*d+f*f+u*u}i.push({light:s,distSq:l})}}r&&i.sort((s,c)=>s.distSq-c.distSq);let a=[],o=Math.min(i.length,n);for(let s=0;s<o;s++)a.push(i[s].light);return a}function mu(t){let e=(t*1664525+1013904223>>>0)/4294967296,r=(t*25214903917+11>>>0)/4294967296,n=(t*69069+1>>>0)/4294967296;return[e,r,n,1]}var Bm=t=>{let e=new fa(t),r=new ha(t),n=new pa(t),i=new va(t),a=new wa(t),o=new nc(t),s=new oc(t),c=new ic(t),l=new uf({seed:Date.now()}),d=new _a(4096,l),f=new Sa(t,d),u=e.shaderSize+r.shaderSize+n.shaderSize+i.shaderSize+a.shaderSize+o.shaderSize+s.shaderSize+f.shaderSize;c.trackShaderMemory(u);let h=new Map,m=new Map,g=new Map,p=new Map,y=0,v=600,x=300,b=null,_={drawCalls:0,vertexCount:0,batches:0,shaderSwitches:0,visibleSurfaces:0,culledSurfaces:0,visibleEntities:0,culledEntities:0},w=new Map,S=new Map,E=0,L=1,M=1,R=!1,I=0,B=new Map,F=!1,U=!1,ce=.5,Nt=1,Ct=new Array(1024).fill(!0),zr=Tm(t,e,r),on=1e4,dt=[],et=0,Ht=Jl.create(),Gn=C.create(),sn=C.create();for(let A=0;A<on;A++){let K={id:-1,model:void 0,transform:new Float32Array(16),type:"md3",blend:{frame0:0,frame1:0,lerp:0},tint:[1,1,1,1],lighting:{ambient:[.5,.5,.5],dynamicLights:[],modelMatrix:void 0}};K.lighting&&(K.lighting.modelMatrix=K.transform),dt.push(K)}let Or=[],Ur,Nr,k,oe=(A,K)=>{if(A.type==="md2"){let ie=A.model;if(!ie.lods||ie.lods.length===0)return{model:A.model,type:A.type};let de=A.transform[12]-K.x,re=A.transform[13]-K.y,pe=A.transform[14]-K.z,Ke=Math.sqrt(de*de+re*re+pe*pe),Pt=Math.floor(Ke*Nt/500);if(Pt<=0)return{model:A.model,type:A.type};let Pe=ie.lods,Wt=Math.min(Pt-1,Pe.length-1);return{model:Pe[Wt],type:A.type}}return{model:A.model,type:A.type}},Ce=(A,K,ie)=>{c.startFrame(),y++;let de=Or.length>0?[...K,...Or]:K;Or.length=0,et=0,A.deltaTime&&d.update(A.deltaTime),t.disable(t.BLEND),t.enable(t.DEPTH_TEST),t.depthMask(!0);let pe=A.renderMode,Ke=!1;ie?.wireframe||E===6?pe={mode:"wireframe",applyToAll:!0,color:[1,1,1,1]}:E===5&&(Ke=!0);let Pt=A.sky;ie?.showSkybox===!1&&(Pt=void 0);let Pe=new Float32Array(A.camera.viewProjectionMatrix),Wt=kn(Pe),It=A.dlights?Im(A.dlights,Wt,{x:A.camera.position[0],y:A.camera.position[1],z:A.camera.position[2]},32):void 0,za={...A,sky:Pt,renderMode:pe,disableLightmaps:ie?.showLightmaps===!1&&E!==5,dlights:It,lightmapOnly:Ke,brightness:L,gamma:M,fullbright:R,ambient:I,lightStyleOverrides:B,underwaterWarp:F,bloom:U,bloomIntensity:ce,portalState:Ct},Rs=zr.renderFrame(za),tf=Rs.facesDrawn||0,rf=0;A.world&&A.world.map&&A.world.map.faces&&(rf=A.world.map.faces.length);let mp=rf-tf,Cc=-1,Pc=-1,Ic=null;if(A.world&&ie?.cullingEnabled!==!1){let z={x:A.camera.position[0],y:A.camera.position[1],z:A.camera.position[2]},ke=bi(A.world.map,z);if(ke>=0){let ut=A.world.map.leafs[ke];Cc=ut.cluster,Pc=ut.area,Pc>=0&&A.world.map.areas.length>0&&(Ic=kd(A.world.map,Pc,Ct))}}let Cs,Oa=0,Bc=0,nf=0,Ps=0,pp={x:A.camera.position[0],y:A.camera.position[1],z:A.camera.position[2]};if(y%v===0)for(let[z,ke]of p)y-ke.lastFrameSeen>x&&p.delete(z);for(let z of de){if(A.world&&Cc>=0){let Q={x:z.transform[12],y:z.transform[13],z:z.transform[14]},O=-1;if(z.id!==void 0){let Y=p.get(z.id);Y&&Y.position[12]===z.transform[12]&&Y.position[13]===z.transform[13]&&Y.position[14]===z.transform[14]?(O=Y.leafIndex,Y.lastFrameSeen=y):(O=bi(A.world.map,Q),O>=0&&p.set(z.id,{leafIndex:O,position:new Float32Array(z.transform),lastFrameSeen:y}))}else O=bi(A.world.map,Q);if(O>=0){let Y=A.world.map.leafs[O],Xt=Y.cluster,ze=Y.area;if(Ic&&ze>=0&&!Ic.has(ze)){Ps++;continue}if(!Fd(A.world.map.visibility,Cc,Xt)){Ps++;continue}}}let{model:ke,type:ut}=oe(z,pp),De,ve;if(ut==="md2"){let Q=ke,O=Q.frames[z.blend.frame0%Q.frames.length],Y=Q.frames[z.blend.frame1%Q.frames.length];O&&Y&&(De={x:Math.min(O.minBounds.x,Y.minBounds.x),y:Math.min(O.minBounds.y,Y.minBounds.y),z:Math.min(O.minBounds.z,Y.minBounds.z)},ve={x:Math.max(O.maxBounds.x,Y.maxBounds.x),y:Math.max(O.maxBounds.y,Y.maxBounds.y),z:Math.max(O.maxBounds.z,Y.maxBounds.z)})}else if(ut==="md3"){let Q=ke,O=Q.frames[z.blend.frame0%Q.frames.length],Y=Q.frames[z.blend.frame1%Q.frames.length];O&&Y?(De={x:Math.min(O.minBounds.x,Y.minBounds.x),y:Math.min(O.minBounds.y,Y.minBounds.y),z:Math.min(O.minBounds.z,Y.minBounds.z)},ve={x:Math.max(O.maxBounds.x,Y.maxBounds.x),y:Math.max(O.maxBounds.y,Y.maxBounds.y),z:Math.max(O.maxBounds.z,Y.maxBounds.z)}):(De={x:-32,y:-32,z:-32},ve={x:32,y:32,z:32})}if(De&&ve){let Q=Ch(De,ve,z.transform);if(!yi(Q.mins,Q.maxs,Wt)){Ps++;continue}}nf++;let ar={x:z.transform[12],y:z.transform[13],z:z.transform[14]},Ye=Rm(A.world?.map,ar),Le=z.id!==void 0?w.get(z.id):void 0;switch(ut){case"md2":{let Q=ke,O=m.get(Q);if(O)O.update(Q,z.blend);else{O=new ma(t,Q,z.blend),m.set(Q,O);let Oe=O.geometry.vertices.length*8*4,cn=O.geometry.indices.length*2;c.trackBufferMemory(Oe+cn)}let Y=Oc(Pe,z.transform),Xt=z.skin,ze=Xt?A.world?.textures?.get(Xt):void 0;ze&&ze!==Cs&&(ze.bind(0),Cs=ze);let Kt=pe;if(Kt&&!Kt.applyToAll&&ze&&(Kt=void 0),Kt?.generateRandomColor&&z.id!==void 0){let Oe=mu(z.id);Kt={...Kt,color:Oe}}if(n.bind({modelViewProjection:Y,modelMatrix:z.transform,ambientLight:Ye,dlights:A.dlights,renderMode:Kt,tint:z.tint,brightness:L,gamma:M,fullbright:R,ambient:I}),n.draw(O,Kt),Oa++,Bc+=O.geometry.vertices.length,Le){let Oe={mode:"wireframe",applyToAll:!0,color:Le};n.bind({modelViewProjection:Y,modelMatrix:z.transform,ambientLight:1,renderMode:Oe,tint:[1,1,1,1],brightness:1,gamma:1,fullbright:!0,ambient:0}),n.draw(O,Oe),Oa++}}break;case"md3":{let Q=ke,O=h.get(Q),Y=z,Xt=A.dlights?A.dlights.map(Oe=>({origin:Oe.origin,color:[Oe.color.x,Oe.color.y,Oe.color.z],radius:Oe.intensity})):void 0,ze={...Y.lighting,ambient:[Ye,Ye,Ye],dynamicLights:Xt,modelMatrix:z.transform};O?O.update(z.blend,ze):(O=new xa(t,Q,z.blend,ze),h.set(Q,O));let Kt=Oc(Pe,z.transform);i.bind(Kt);for(let Oe of Q.surfaces){let cn=O.surfaces.get(Oe.name);if(cn){let of=Y.skins?.get(Oe.name),Ua=of?A.world?.textures?.get(of):void 0;Ua&&Ua!==Cs&&(Ua.bind(0),Cs=Ua);let Kn=pe;if(Kn&&!Kn.applyToAll&&Ua&&(Kn=void 0),Kn?.generateRandomColor&&z.id!==void 0){let sf=mu(z.id);Kn={...Kn,color:sf}}let gp={renderMode:Kn,brightness:L,gamma:M,fullbright:R,globalAmbient:I};if(i.drawSurface(cn,gp),Oa++,Bc+=cn.geometry.vertices.length,Le){let yp={renderMode:{mode:"wireframe",applyToAll:!0,color:Le},brightness:1,gamma:1,fullbright:!0,globalAmbient:0};i.drawSurface(cn,yp),Oa++}}}}break}}let Xn=A.camera.viewMatrix;if(Xn){let z={x:Xn[0],y:Xn[4],z:Xn[8]},ke={x:Xn[1],y:Xn[5],z:Xn[9]};f.render({viewProjection:Pe,viewRight:z,viewUp:ke})}if(za.waterTint&&(Ur(),k(0,0,t.canvas.width,t.canvas.height,za.waterTint),Nr()),o.render(Pe),o.clear(),A.world&&(S.size>0||E===3)){let z=new Map(S);if(E===3&&A.world){let ke=kn(Pe),ut={x:A.camera.position[0],y:A.camera.position[1],z:A.camera.position[2]},De=xi(A.world.map,ut,ke,Ct);for(let{faceIndex:ve,leafIndex:ar}of De){let Ye=A.world.map.leafs[ar];Ye&&!z.has(ve)&&z.set(ve,mu(Ye.cluster))}}for(let[ke,ut]of z){let De=A.world.surfaces[ke];if(De&&De.vertexCount>0){let ve=[];for(let Le=0;Le<De.vertexCount;Le++)ve.push({x:De.vertexData[Le*7],y:De.vertexData[Le*7+1],z:De.vertexData[Le*7+2]});let Ye={r:ut[0],g:ut[1],b:ut[2]};for(let Le=0;Le<ve.length;Le++){let Q=ve[Le],O=ve[(Le+1)%ve.length];s.drawLine(Q,O,Ye)}s.drawLine(ve[0],ve[ve.length/2|0],Ye)}}}if((ie?.showNormals||E===2)&&A.world){let z=kn(Pe),ke={x:A.camera.position[0],y:A.camera.position[1],z:A.camera.position[2]},ut=xi(A.world.map,ke,z,Ct);for(let{faceIndex:De}of ut){let ve=A.world.map.faces[De],ar=A.world.map.planes[ve.planeIndex],Ye=A.world.surfaces[De];if(!Ye)continue;let Le=0,Q=0,O=0,Y=Ye.vertexCount;for(let Xt=0;Xt<Y;Xt++){let ze=Xt*7;Le+=Ye.vertexData[ze],Q+=Ye.vertexData[ze+1],O+=Ye.vertexData[ze+2]}if(Y>0){Le/=Y,Q/=Y,O/=Y;let Xt=ve.side===0?ar.normal[0]:-ar.normal[0],ze=ve.side===0?ar.normal[1]:-ar.normal[1],Kt=ve.side===0?ar.normal[2]:-ar.normal[2],Oe={x:Le,y:Q,z:O},cn={x:Le+Xt*8,y:Q+ze*8,z:O+Kt*8};s.drawLine(Oe,cn,{r:1,g:1,b:0})}}}s.render(Pe);let af=s.getLabels(Pe,t.canvas.width,t.canvas.height);if(af.length>0){Ur();for(let z of af)Ti(z.x,z.y,z.text,[1,1,1,1]);Nr()}s.clear(),_={drawCalls:Rs.drawCalls+Oa,vertexCount:Rs.vertexCount+Bc,batches:Rs.batches,shaderSwitches:0,visibleSurfaces:tf,culledSurfaces:mp,visibleEntities:nf,culledEntities:Ps},c.endFrame()},Re=async(A,K)=>{if(g.has(A))return g.get(A);let ie=new Blob([K]),de=await createImageBitmap(ie),re=new Je(t);return re.upload(de.width,de.height,de),g.set(A,re),c.trackTextureMemory(de.width*de.height*4),A.includes("conchars")&&(b=re),re},ir=(A,K)=>{if(g.has(A))return g.get(A);let ie=new Je(t),de=K.levels[0];return ie.upload(de.width,de.height,de.rgba),g.set(A,ie),c.trackTextureMemory(de.width*de.height*4),A.includes("conchars")&&(b=ie),ie};Ur=()=>{t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),t.disable(t.DEPTH_TEST),t.depthMask(!1);let A=j.create();j.ortho(A,0,t.canvas.width,t.canvas.height,0,-1,1),a.begin(A)},Nr=()=>{t.disable(t.BLEND),t.enable(t.DEPTH_TEST),t.depthMask(!0)};let Vt=(A,K,ie,de)=>{ie.bind(0),a.draw(A,K,ie.width,ie.height,0,0,1,1,de)},ln=(A,K,ie,de)=>{if(!b)return;let re=8,pe=8,Ke=b.width/re,Pt=ie&255,Pe=Pt%Ke*re/b.width,Wt=Math.floor(Pt/Ke)*pe/b.height,It=Pe+re/b.width,za=Wt+pe/b.height;b.bind(0),a.draw(A,K,re,pe,Pe,Wt,It,za,de)},Ti=(A,K,ie,de)=>{let re=Pm(ie),pe=A,Ke=8;for(let Pt of re){let Pe=Pt.color||de;for(let Wt=0;Wt<Pt.text.length;Wt++)ln(pe,K,Pt.text.charCodeAt(Wt),Pe),pe+=Ke}},Gt=(A,K)=>{let re=K.replace(/\^[0-9]/g,"").length*8,pe=(t.canvas.width-re)/2;Ti(pe,A,K)};return k=(A,K,ie,de,re)=>{a.drawRect(A,K,ie,de,re)},{get width(){return t.canvas.width},get height(){return t.canvas.height},get collisionVis(){return o},get debug(){return s},get particleSystem(){return d},getPerformanceReport:()=>c.getPerformanceReport(_),getMemoryUsage:()=>c.getMemoryUsage(),renderFrame:Ce,registerPic:Re,registerTexture:ir,begin2D:Ur,end2D:Nr,drawPic:Vt,drawString:Ti,drawCenterString:Gt,drawfillRect:k,setEntityHighlight:(A,K)=>{w.set(A,K)},clearEntityHighlight:A=>{w.delete(A)},highlightSurface:(A,K)=>{S.set(A,K)},removeSurfaceHighlight:A=>{S.delete(A)},setDebugMode:A=>{E=A},setBrightness:A=>{L=Math.max(0,Math.min(2,A))},setGamma:A=>{M=Math.max(.5,Math.min(3,A))},setFullbright:A=>{R=A},setAmbient:A=>{I=Math.max(0,Math.min(1,A))},setLightStyle:(A,K)=>{K===null?B.delete(A):B.set(A,K)},setUnderwaterWarp:A=>{F=A},setBloom:A=>{U=A},setBloomIntensity:A=>{ce=A},setLodBias:A=>{Nt=Math.max(0,Math.min(2,A))},setAreaPortalState:(A,K)=>{A>=0&&A<Ct.length&&(Ct[A]=K)},renderInstanced:(A,K)=>{let ie="glCommands"in A,de=ie?"md2":"md3";for(let re of K){if(et>=on){console.warn("Max instances reached");break}let pe=dt[et++];pe.model=A,pe.type=de;let Ke=pe.blend;re.frame!==void 0?(Ke.frame0=re.frame,Ke.frame1=re.frame,Ke.lerp=0):(Ke.frame0=re.frame0||0,Ke.frame1=re.frame1||0,Ke.lerp=re.lerp||0),ie&&(pe.skin=re.skin!==void 0?"skin"+re.skin:void 0);let Pt=re.rotation,Pe=re.position,Wt=re.scale||{x:1,y:1,z:1};j.fromRotationTranslationScale(pe.transform,Ht,Gn,sn);let It=pe.lighting;It&&(It.dynamicLights?It.dynamicLights.length=0:It.dynamicLights=[],It.ambient?(It.ambient[0]=.5,It.ambient[1]=.5,It.ambient[2]=.5):It.ambient=[.5,.5,.5]),Or.push(pe)}},dispose:()=>{c.dispose()}}};var fr=class{constructor(e){this.messageOffsets=[];this.currentBlock=null;this.buffer=e,this.view=new DataView(e),this.offset=0,this.scan()}scan(){let e=0;for(this.messageOffsets=[];e+4<=this.buffer.byteLength;){let r=this.view.getInt32(e,!0);if(r===-1)break;if(r<0||r>2097152){console.warn(`DemoReader: Invalid block length ${r} at offset ${e} during scan`);break}if(e+4+r>this.buffer.byteLength){console.warn(`DemoReader: Incomplete block at offset ${e} during scan`);break}this.messageOffsets.push(e),e+=4+r}}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(e===-1||e<0||this.offset+4+e>this.buffer.byteLength)return null;this.offset+=4;let r=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new mn(r)}}nextBlock(){let e=this.readNextBlock();return e?(this.currentBlock=e,!0):(this.currentBlock=null,!1)}getBlock(){if(!this.currentBlock)throw new Error("No current block. Call nextBlock() first.");return this.currentBlock}readAllBlocksToBuffer(){let e=0,r=this.offset,n=[],i=this.offset;for(;i+4<=this.buffer.byteLength;){let c=this.view.getInt32(i,!0);if(c===-1||c<0||i+4+c>this.buffer.byteLength)break;n.push({offset:i+4,length:c}),e+=c,i+=4+c}let a=new Uint8Array(e),o=0,s=new Uint8Array(this.buffer);for(let c of n)a.set(s.subarray(c.offset,c.offset+c.length),o),o+=c.length;return this.offset=i,a.buffer}reset(){this.offset=0,this.currentBlock=null}seekToMessage(e){return e<0||e>=this.messageOffsets.length?!1:(this.offset=this.messageOffsets[e],this.currentBlock=null,!0)}getMessageCount(){return this.messageOffsets.length}getOffset(){return this.offset}getProgress(){let e=this.offset,r=this.buffer.byteLength;return{current:e,total:r,percent:r>0?e/r*100:0}}};function Ra(t){let e=t.length;for(;--e>=0;)t[e]=0}var Yx=0,b0=1,$x=2,qx=3,Zx=258,Ou=29,xs=256,us=xs+1+Ou,Ea=30,Uu=19,x0=2*us+1,vi=15,pu=16,jx=7,Nu=256,v0=16,_0=17,S0=18,Ru=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]),fc=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]),Qx=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),w0=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Jx=512,nn=new Array((us+2)*2);Ra(nn);var ls=new Array(Ea*2);Ra(ls);var fs=new Array(Jx);Ra(fs);var hs=new Array(Zx-qx+1);Ra(hs);var Hu=new Array(Ou);Ra(Hu);var hc=new Array(Ea);Ra(hc);function gu(t,e,r,n,i){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=t&&t.length}var M0,A0,E0;function yu(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}var L0=t=>t<256?fs[t]:fs[256+(t>>>7)],ms=(t,e)=>{t.pending_buf[t.pending++]=e&255,t.pending_buf[t.pending++]=e>>>8&255},Rt=(t,e,r)=>{t.bi_valid>pu-r?(t.bi_buf|=e<<t.bi_valid&65535,ms(t,t.bi_buf),t.bi_buf=e>>pu-t.bi_valid,t.bi_valid+=r-pu):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=r)},Ir=(t,e,r)=>{Rt(t,r[e*2],r[e*2+1])},T0=(t,e)=>{let r=0;do r|=t&1,t>>>=1,r<<=1;while(--e>0);return r>>>1},ev=t=>{t.bi_valid===16?(ms(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=t.bi_buf&255,t.bi_buf>>=8,t.bi_valid-=8)},tv=(t,e)=>{let r=e.dyn_tree,n=e.max_code,i=e.stat_desc.static_tree,a=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,s=e.stat_desc.extra_base,c=e.stat_desc.max_length,l,d,f,u,h,m,g=0;for(u=0;u<=vi;u++)t.bl_count[u]=0;for(r[t.heap[t.heap_max]*2+1]=0,l=t.heap_max+1;l<x0;l++)d=t.heap[l],u=r[r[d*2+1]*2+1]+1,u>c&&(u=c,g++),r[d*2+1]=u,!(d>n)&&(t.bl_count[u]++,h=0,d>=s&&(h=o[d-s]),m=r[d*2],t.opt_len+=m*(u+h),a&&(t.static_len+=m*(i[d*2+1]+h)));if(g!==0){do{for(u=c-1;t.bl_count[u]===0;)u--;t.bl_count[u]--,t.bl_count[u+1]+=2,t.bl_count[c]--,g-=2}while(g>0);for(u=c;u!==0;u--)for(d=t.bl_count[u];d!==0;)f=t.heap[--l],!(f>n)&&(r[f*2+1]!==u&&(t.opt_len+=(u-r[f*2+1])*r[f*2],r[f*2+1]=u),d--)}},R0=(t,e,r)=>{let n=new Array(vi+1),i=0,a,o;for(a=1;a<=vi;a++)i=i+r[a-1]<<1,n[a]=i;for(o=0;o<=e;o++){let s=t[o*2+1];s!==0&&(t[o*2]=T0(n[s]++,s))}},rv=()=>{let t,e,r,n,i,a=new Array(vi+1);for(r=0,n=0;n<Ou-1;n++)for(Hu[n]=r,t=0;t<1<<Ru[n];t++)hs[r++]=n;for(hs[r-1]=n,i=0,n=0;n<16;n++)for(hc[n]=i,t=0;t<1<<fc[n];t++)fs[i++]=n;for(i>>=7;n<Ea;n++)for(hc[n]=i<<7,t=0;t<1<<fc[n]-7;t++)fs[256+i++]=n;for(e=0;e<=vi;e++)a[e]=0;for(t=0;t<=143;)nn[t*2+1]=8,t++,a[8]++;for(;t<=255;)nn[t*2+1]=9,t++,a[9]++;for(;t<=279;)nn[t*2+1]=7,t++,a[7]++;for(;t<=287;)nn[t*2+1]=8,t++,a[8]++;for(R0(nn,us+1,a),t=0;t<Ea;t++)ls[t*2+1]=5,ls[t*2]=T0(t,5);M0=new gu(nn,Ru,xs+1,us,vi),A0=new gu(ls,fc,0,Ea,vi),E0=new gu(new Array(0),Qx,0,Uu,jx)},C0=t=>{let e;for(e=0;e<us;e++)t.dyn_ltree[e*2]=0;for(e=0;e<Ea;e++)t.dyn_dtree[e*2]=0;for(e=0;e<Uu;e++)t.bl_tree[e*2]=0;t.dyn_ltree[Nu*2]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},P0=t=>{t.bi_valid>8?ms(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},Fm=(t,e,r,n)=>{let i=e*2,a=r*2;return t[i]<t[a]||t[i]===t[a]&&n[e]<=n[r]},bu=(t,e,r)=>{let n=t.heap[r],i=r<<1;for(;i<=t.heap_len&&(i<t.heap_len&&Fm(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!Fm(e,n,t.heap[i],t.depth));)t.heap[r]=t.heap[i],r=i,i<<=1;t.heap[r]=n},km=(t,e,r)=>{let n,i,a=0,o,s;if(t.sym_next!==0)do n=t.pending_buf[t.sym_buf+a++]&255,n+=(t.pending_buf[t.sym_buf+a++]&255)<<8,i=t.pending_buf[t.sym_buf+a++],n===0?Ir(t,i,e):(o=hs[i],Ir(t,o+xs+1,e),s=Ru[o],s!==0&&(i-=Hu[o],Rt(t,i,s)),n--,o=L0(n),Ir(t,o,r),s=fc[o],s!==0&&(n-=hc[o],Rt(t,n,s)));while(a<t.sym_next);Ir(t,Nu,e)},Cu=(t,e)=>{let r=e.dyn_tree,n=e.stat_desc.static_tree,i=e.stat_desc.has_stree,a=e.stat_desc.elems,o,s,c=-1,l;for(t.heap_len=0,t.heap_max=x0,o=0;o<a;o++)r[o*2]!==0?(t.heap[++t.heap_len]=c=o,t.depth[o]=0):r[o*2+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=c<2?++c:0,r[l*2]=1,t.depth[l]=0,t.opt_len--,i&&(t.static_len-=n[l*2+1]);for(e.max_code=c,o=t.heap_len>>1;o>=1;o--)bu(t,r,o);l=a;do o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],bu(t,r,1),s=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=s,r[l*2]=r[o*2]+r[s*2],t.depth[l]=(t.depth[o]>=t.depth[s]?t.depth[o]:t.depth[s])+1,r[o*2+1]=r[s*2+1]=l,t.heap[1]=l++,bu(t,r,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],tv(t,e),R0(r,c,t.bl_count)},Dm=(t,e,r)=>{let n,i=-1,a,o=e[1],s=0,c=7,l=4;for(o===0&&(c=138,l=3),e[(r+1)*2+1]=65535,n=0;n<=r;n++)a=o,o=e[(n+1)*2+1],!(++s<c&&a===o)&&(s<l?t.bl_tree[a*2]+=s:a!==0?(a!==i&&t.bl_tree[a*2]++,t.bl_tree[v0*2]++):s<=10?t.bl_tree[_0*2]++:t.bl_tree[S0*2]++,s=0,i=a,o===0?(c=138,l=3):a===o?(c=6,l=3):(c=7,l=4))},zm=(t,e,r)=>{let n,i=-1,a,o=e[1],s=0,c=7,l=4;for(o===0&&(c=138,l=3),n=0;n<=r;n++)if(a=o,o=e[(n+1)*2+1],!(++s<c&&a===o)){if(s<l)do Ir(t,a,t.bl_tree);while(--s!==0);else a!==0?(a!==i&&(Ir(t,a,t.bl_tree),s--),Ir(t,v0,t.bl_tree),Rt(t,s-3,2)):s<=10?(Ir(t,_0,t.bl_tree),Rt(t,s-3,3)):(Ir(t,S0,t.bl_tree),Rt(t,s-11,7));s=0,i=a,o===0?(c=138,l=3):a===o?(c=6,l=3):(c=7,l=4)}},nv=t=>{let e;for(Dm(t,t.dyn_ltree,t.l_desc.max_code),Dm(t,t.dyn_dtree,t.d_desc.max_code),Cu(t,t.bl_desc),e=Uu-1;e>=3&&t.bl_tree[w0[e]*2+1]===0;e--);return t.opt_len+=3*(e+1)+5+5+4,e},iv=(t,e,r,n)=>{let i;for(Rt(t,e-257,5),Rt(t,r-1,5),Rt(t,n-4,4),i=0;i<n;i++)Rt(t,t.bl_tree[w0[i]*2+1],3);zm(t,t.dyn_ltree,e-1),zm(t,t.dyn_dtree,r-1)},av=t=>{let e=4093624447,r;for(r=0;r<=31;r++,e>>>=1)if(e&1&&t.dyn_ltree[r*2]!==0)return 0;if(t.dyn_ltree[18]!==0||t.dyn_ltree[20]!==0||t.dyn_ltree[26]!==0)return 1;for(r=32;r<xs;r++)if(t.dyn_ltree[r*2]!==0)return 1;return 0},Om=!1,ov=t=>{Om||(rv(),Om=!0),t.l_desc=new yu(t.dyn_ltree,M0),t.d_desc=new yu(t.dyn_dtree,A0),t.bl_desc=new yu(t.bl_tree,E0),t.bi_buf=0,t.bi_valid=0,C0(t)},I0=(t,e,r,n)=>{Rt(t,(Yx<<1)+(n?1:0),3),P0(t),ms(t,r),ms(t,~r),r&&t.pending_buf.set(t.window.subarray(e,e+r),t.pending),t.pending+=r},sv=t=>{Rt(t,b0<<1,3),Ir(t,Nu,nn),ev(t)},lv=(t,e,r,n)=>{let i,a,o=0;t.level>0?(t.strm.data_type===2&&(t.strm.data_type=av(t)),Cu(t,t.l_desc),Cu(t,t.d_desc),o=nv(t),i=t.opt_len+3+7>>>3,a=t.static_len+3+7>>>3,a<=i&&(i=a)):i=a=r+5,r+4<=i&&e!==-1?I0(t,e,r,n):t.strategy===4||a===i?(Rt(t,(b0<<1)+(n?1:0),3),km(t,nn,ls)):(Rt(t,($x<<1)+(n?1:0),3),iv(t,t.l_desc.max_code+1,t.d_desc.max_code+1,o+1),km(t,t.dyn_ltree,t.dyn_dtree)),C0(t),n&&P0(t)},cv=(t,e,r)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=r,e===0?t.dyn_ltree[r*2]++:(t.matches++,e--,t.dyn_ltree[(hs[r]+xs+1)*2]++,t.dyn_dtree[L0(e)*2]++),t.sym_next===t.sym_end),dv=ov,uv=I0,fv=lv,hv=cv,mv=sv,pv={_tr_init:dv,_tr_stored_block:uv,_tr_flush_block:fv,_tr_tally:hv,_tr_align:mv},gv=(t,e,r,n)=>{let i=t&65535|0,a=t>>>16&65535|0,o=0;for(;r!==0;){o=r>2e3?2e3:r,r-=o;do i=i+e[n++]|0,a=a+i|0;while(--o);i%=65521,a%=65521}return i|a<<16|0},ps=gv,yv=()=>{let t,e=[];for(var r=0;r<256;r++){t=r;for(var n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;e[r]=t}return e},bv=new Uint32Array(yv()),xv=(t,e,r,n)=>{let i=bv,a=n+r;t^=-1;for(let o=n;o<a;o++)t=t>>>8^i[(t^e[o])&255];return t^-1},Fe=xv,wi={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"},Ei={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:vv,_tr_stored_block:Pu,_tr_flush_block:_v,_tr_tally:Un,_tr_align:Sv}=pv,{Z_NO_FLUSH:Nn,Z_PARTIAL_FLUSH:wv,Z_FULL_FLUSH:Mv,Z_FINISH:rr,Z_BLOCK:Um,Z_OK:Xe,Z_STREAM_END:Nm,Z_STREAM_ERROR:Br,Z_DATA_ERROR:Av,Z_BUF_ERROR:xu,Z_DEFAULT_COMPRESSION:Ev,Z_FILTERED:Lv,Z_HUFFMAN_ONLY:sc,Z_RLE:Tv,Z_FIXED:Rv,Z_DEFAULT_STRATEGY:Cv,Z_UNKNOWN:Pv,Z_DEFLATED:gc}=Ei,Iv=9,Bv=15,Fv=8,kv=29,Dv=256,Iu=Dv+1+kv,zv=30,Ov=19,Uv=2*Iu+1,Nv=15,Z=3,On=258,Fr=On+Z+1,Hv=32,La=42,Vu=57,Bu=69,Fu=73,ku=91,Du=103,_i=113,os=666,lt=1,Ca=2,Mi=3,Pa=4,Vv=3,Si=(t,e)=>(t.msg=wi[e],e),Hm=t=>t*2-(t>4?9:0),zn=t=>{let e=t.length;for(;--e>=0;)t[e]=0},Gv=t=>{let e,r,n,i=t.w_size;e=t.hash_size,n=e;do r=t.head[--n],t.head[n]=r>=i?r-i:0;while(--e);e=i,n=e;do r=t.prev[--n],t.prev[n]=r>=i?r-i:0;while(--e)},Wv=(t,e,r)=>(e<<t.hash_shift^r)&t.hash_mask,Hn=Wv,Ot=t=>{let e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),r!==0&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+r),t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,e.pending===0&&(e.pending_out=0))},Ut=(t,e)=>{_v(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Ot(t.strm)},ne=(t,e)=>{t.pending_buf[t.pending++]=e},as=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=e&255},zu=(t,e,r,n)=>{let i=t.avail_in;return i>n&&(i=n),i===0?0:(t.avail_in-=i,e.set(t.input.subarray(t.next_in,t.next_in+i),r),t.state.wrap===1?t.adler=ps(t.adler,e,i,r):t.state.wrap===2&&(t.adler=Fe(t.adler,e,i,r)),t.next_in+=i,t.total_in+=i,i)},B0=(t,e)=>{let r=t.max_chain_length,n=t.strstart,i,a,o=t.prev_length,s=t.nice_match,c=t.strstart>t.w_size-Fr?t.strstart-(t.w_size-Fr):0,l=t.window,d=t.w_mask,f=t.prev,u=t.strstart+On,h=l[n+o-1],m=l[n+o];t.prev_length>=t.good_match&&(r>>=2),s>t.lookahead&&(s=t.lookahead);do if(i=e,!(l[i+o]!==m||l[i+o-1]!==h||l[i]!==l[n]||l[++i]!==l[n+1])){n+=2,i++;do;while(l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&n<u);if(a=On-(u-n),n=u-On,a>o){if(t.match_start=e,o=a,a>=s)break;h=l[n+o-1],m=l[n+o]}}while((e=f[e&d])>c&&--r!==0);return o<=t.lookahead?o:t.lookahead},Ta=t=>{let e=t.w_size,r,n,i;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-Fr)&&(t.window.set(t.window.subarray(e,e+e-n),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),Gv(t),n+=e),t.strm.avail_in===0)break;if(r=zu(t.strm,t.window,t.strstart+t.lookahead,n),t.lookahead+=r,t.lookahead+t.insert>=Z)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=Hn(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=Hn(t,t.ins_h,t.window[i+Z-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert<Z)););}while(t.lookahead<Fr&&t.strm.avail_in!==0)},F0=(t,e)=>{let r=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,n,i,a,o=0,s=t.strm.avail_in;do{if(n=65535,a=t.bi_valid+42>>3,t.strm.avail_out<a||(a=t.strm.avail_out-a,i=t.strstart-t.block_start,n>i+t.strm.avail_in&&(n=i+t.strm.avail_in),n>a&&(n=a),n<r&&(n===0&&e!==rr||e===Nn||n!==i+t.strm.avail_in)))break;o=e===rr&&n===i+t.strm.avail_in?1:0,Pu(t,0,0,o),t.pending_buf[t.pending-4]=n,t.pending_buf[t.pending-3]=n>>8,t.pending_buf[t.pending-2]=~n,t.pending_buf[t.pending-1]=~n>>8,Ot(t.strm),i&&(i>n&&(i=n),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,n-=i),n&&(zu(t.strm,t.strm.output,t.strm.next_out,n),t.strm.next_out+=n,t.strm.avail_out-=n,t.strm.total_out+=n)}while(o===0);return s-=t.strm.avail_in,s&&(s>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=s&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-s,t.strm.next_in),t.strstart),t.strstart+=s,t.insert+=s>t.w_size-t.insert?t.w_size-t.insert:s),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),o?Pa:e!==Nn&&e!==rr&&t.strm.avail_in===0&&t.strstart===t.block_start?Ca:(a=t.window_size-t.strstart,t.strm.avail_in>a&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,a+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),a>t.strm.avail_in&&(a=t.strm.avail_in),a&&(zu(t.strm,t.window,t.strstart,a),t.strstart+=a,t.insert+=a>t.w_size-t.insert?t.w_size-t.insert:a),t.high_water<t.strstart&&(t.high_water=t.strstart),a=t.bi_valid+42>>3,a=t.pending_buf_size-a>65535?65535:t.pending_buf_size-a,r=a>t.w_size?t.w_size:a,i=t.strstart-t.block_start,(i>=r||(i||e===rr)&&e!==Nn&&t.strm.avail_in===0&&i<=a)&&(n=i>a?a:i,o=e===rr&&t.strm.avail_in===0&&n===i?1:0,Pu(t,t.block_start,n,o),t.block_start+=n,Ot(t.strm)),o?Mi:lt)},vu=(t,e)=>{let r,n;for(;;){if(t.lookahead<Fr){if(Ta(t),t.lookahead<Fr&&e===Nn)return lt;if(t.lookahead===0)break}if(r=0,t.lookahead>=Z&&(t.ins_h=Hn(t,t.ins_h,t.window[t.strstart+Z-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),r!==0&&t.strstart-r<=t.w_size-Fr&&(t.match_length=B0(t,r)),t.match_length>=Z)if(n=Un(t,t.strstart-t.match_start,t.match_length-Z),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=Z){t.match_length--;do t.strstart++,t.ins_h=Hn(t,t.ins_h,t.window[t.strstart+Z-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart;while(--t.match_length!==0);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Hn(t,t.ins_h,t.window[t.strstart+1]);else n=Un(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(Ut(t,!1),t.strm.avail_out===0))return lt}return t.insert=t.strstart<Z-1?t.strstart:Z-1,e===rr?(Ut(t,!0),t.strm.avail_out===0?Mi:Pa):t.sym_next&&(Ut(t,!1),t.strm.avail_out===0)?lt:Ca},Ma=(t,e)=>{let r,n,i;for(;;){if(t.lookahead<Fr){if(Ta(t),t.lookahead<Fr&&e===Nn)return lt;if(t.lookahead===0)break}if(r=0,t.lookahead>=Z&&(t.ins_h=Hn(t,t.ins_h,t.window[t.strstart+Z-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=Z-1,r!==0&&t.prev_length<t.max_lazy_match&&t.strstart-r<=t.w_size-Fr&&(t.match_length=B0(t,r),t.match_length<=5&&(t.strategy===Lv||t.match_length===Z&&t.strstart-t.match_start>4096)&&(t.match_length=Z-1)),t.prev_length>=Z&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-Z,n=Un(t,t.strstart-1-t.prev_match,t.prev_length-Z),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=i&&(t.ins_h=Hn(t,t.ins_h,t.window[t.strstart+Z-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart);while(--t.prev_length!==0);if(t.match_available=0,t.match_length=Z-1,t.strstart++,n&&(Ut(t,!1),t.strm.avail_out===0))return lt}else if(t.match_available){if(n=Un(t,0,t.window[t.strstart-1]),n&&Ut(t,!1),t.strstart++,t.lookahead--,t.strm.avail_out===0)return lt}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=Un(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<Z-1?t.strstart:Z-1,e===rr?(Ut(t,!0),t.strm.avail_out===0?Mi:Pa):t.sym_next&&(Ut(t,!1),t.strm.avail_out===0)?lt:Ca},Xv=(t,e)=>{let r,n,i,a,o=t.window;for(;;){if(t.lookahead<=On){if(Ta(t),t.lookahead<=On&&e===Nn)return lt;if(t.lookahead===0)break}if(t.match_length=0,t.lookahead>=Z&&t.strstart>0&&(i=t.strstart-1,n=o[i],n===o[++i]&&n===o[++i]&&n===o[++i])){a=t.strstart+On;do;while(n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&i<a);t.match_length=On-(a-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=Z?(r=Un(t,1,t.match_length-Z),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=Un(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(Ut(t,!1),t.strm.avail_out===0))return lt}return t.insert=0,e===rr?(Ut(t,!0),t.strm.avail_out===0?Mi:Pa):t.sym_next&&(Ut(t,!1),t.strm.avail_out===0)?lt:Ca},Kv=(t,e)=>{let r;for(;;){if(t.lookahead===0&&(Ta(t),t.lookahead===0)){if(e===Nn)return lt;break}if(t.match_length=0,r=Un(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(Ut(t,!1),t.strm.avail_out===0))return lt}return t.insert=0,e===rr?(Ut(t,!0),t.strm.avail_out===0?Mi:Pa):t.sym_next&&(Ut(t,!1),t.strm.avail_out===0)?lt:Ca};function Pr(t,e,r,n,i){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=n,this.func=i}var ss=[new Pr(0,0,0,0,F0),new Pr(4,4,8,4,vu),new Pr(4,5,16,8,vu),new Pr(4,6,32,32,vu),new Pr(4,4,16,16,Ma),new Pr(8,16,32,32,Ma),new Pr(8,16,128,128,Ma),new Pr(8,32,128,256,Ma),new Pr(32,128,258,1024,Ma),new Pr(32,258,258,4096,Ma)],Yv=t=>{t.window_size=2*t.w_size,zn(t.head),t.max_lazy_match=ss[t.level].max_lazy,t.good_match=ss[t.level].good_length,t.nice_match=ss[t.level].nice_length,t.max_chain_length=ss[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=Z-1,t.match_available=0,t.ins_h=0};function $v(){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=gc,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(Uv*2),this.dyn_dtree=new Uint16Array((2*zv+1)*2),this.bl_tree=new Uint16Array((2*Ov+1)*2),zn(this.dyn_ltree),zn(this.dyn_dtree),zn(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Nv+1),this.heap=new Uint16Array(2*Iu+1),zn(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Iu+1),zn(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 vs=t=>{if(!t)return 1;let e=t.state;return!e||e.strm!==t||e.status!==La&&e.status!==Vu&&e.status!==Bu&&e.status!==Fu&&e.status!==ku&&e.status!==Du&&e.status!==_i&&e.status!==os?1:0},k0=t=>{if(vs(t))return Si(t,Br);t.total_in=t.total_out=0,t.data_type=Pv;let e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap===2?Vu:e.wrap?La:_i,t.adler=e.wrap===2?0:1,e.last_flush=-2,vv(e),Xe},D0=t=>{let e=k0(t);return e===Xe&&Yv(t.state),e},qv=(t,e)=>vs(t)||t.state.wrap!==2?Br:(t.state.gzhead=e,Xe),z0=(t,e,r,n,i,a)=>{if(!t)return Br;let o=1;if(e===Ev&&(e=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),i<1||i>Iv||r!==gc||n<8||n>15||e<0||e>9||a<0||a>Rv||n===8&&o!==1)return Si(t,Br);n===8&&(n=9);let s=new $v;return t.state=s,s.strm=t,s.status=La,s.wrap=o,s.gzhead=null,s.w_bits=n,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=i+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+Z-1)/Z),s.window=new Uint8Array(s.w_size*2),s.head=new Uint16Array(s.hash_size),s.prev=new Uint16Array(s.w_size),s.lit_bufsize=1<<i+6,s.pending_buf_size=s.lit_bufsize*4,s.pending_buf=new Uint8Array(s.pending_buf_size),s.sym_buf=s.lit_bufsize,s.sym_end=(s.lit_bufsize-1)*3,s.level=e,s.strategy=a,s.method=r,D0(t)},Zv=(t,e)=>z0(t,e,gc,Bv,Fv,Cv),jv=(t,e)=>{if(vs(t)||e>Um||e<0)return t?Si(t,Br):Br;let r=t.state;if(!t.output||t.avail_in!==0&&!t.input||r.status===os&&e!==rr)return Si(t,t.avail_out===0?xu:Br);let n=r.last_flush;if(r.last_flush=e,r.pending!==0){if(Ot(t),t.avail_out===0)return r.last_flush=-1,Xe}else if(t.avail_in===0&&Hm(e)<=Hm(n)&&e!==rr)return Si(t,xu);if(r.status===os&&t.avail_in!==0)return Si(t,xu);if(r.status===La&&r.wrap===0&&(r.status=_i),r.status===La){let i=gc+(r.w_bits-8<<4)<<8,a=-1;if(r.strategy>=sc||r.level<2?a=0:r.level<6?a=1:r.level===6?a=2:a=3,i|=a<<6,r.strstart!==0&&(i|=Hv),i+=31-i%31,as(r,i),r.strstart!==0&&(as(r,t.adler>>>16),as(r,t.adler&65535)),t.adler=1,r.status=_i,Ot(t),r.pending!==0)return r.last_flush=-1,Xe}if(r.status===Vu){if(t.adler=0,ne(r,31),ne(r,139),ne(r,8),r.gzhead)ne(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),ne(r,r.gzhead.time&255),ne(r,r.gzhead.time>>8&255),ne(r,r.gzhead.time>>16&255),ne(r,r.gzhead.time>>24&255),ne(r,r.level===9?2:r.strategy>=sc||r.level<2?4:0),ne(r,r.gzhead.os&255),r.gzhead.extra&&r.gzhead.extra.length&&(ne(r,r.gzhead.extra.length&255),ne(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=Fe(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=Bu;else if(ne(r,0),ne(r,0),ne(r,0),ne(r,0),ne(r,0),ne(r,r.level===9?2:r.strategy>=sc||r.level<2?4:0),ne(r,Vv),r.status=_i,Ot(t),r.pending!==0)return r.last_flush=-1,Xe}if(r.status===Bu){if(r.gzhead.extra){let i=r.pending,a=(r.gzhead.extra.length&65535)-r.gzindex;for(;r.pending+a>r.pending_buf_size;){let s=r.pending_buf_size-r.pending;if(r.pending_buf.set(r.gzhead.extra.subarray(r.gzindex,r.gzindex+s),r.pending),r.pending=r.pending_buf_size,r.gzhead.hcrc&&r.pending>i&&(t.adler=Fe(t.adler,r.pending_buf,r.pending-i,i)),r.gzindex+=s,Ot(t),r.pending!==0)return r.last_flush=-1,Xe;i=0,a-=s}let o=new Uint8Array(r.gzhead.extra);r.pending_buf.set(o.subarray(r.gzindex,r.gzindex+a),r.pending),r.pending+=a,r.gzhead.hcrc&&r.pending>i&&(t.adler=Fe(t.adler,r.pending_buf,r.pending-i,i)),r.gzindex=0}r.status=Fu}if(r.status===Fu){if(r.gzhead.name){let i=r.pending,a;do{if(r.pending===r.pending_buf_size){if(r.gzhead.hcrc&&r.pending>i&&(t.adler=Fe(t.adler,r.pending_buf,r.pending-i,i)),Ot(t),r.pending!==0)return r.last_flush=-1,Xe;i=0}r.gzindex<r.gzhead.name.length?a=r.gzhead.name.charCodeAt(r.gzindex++)&255:a=0,ne(r,a)}while(a!==0);r.gzhead.hcrc&&r.pending>i&&(t.adler=Fe(t.adler,r.pending_buf,r.pending-i,i)),r.gzindex=0}r.status=ku}if(r.status===ku){if(r.gzhead.comment){let i=r.pending,a;do{if(r.pending===r.pending_buf_size){if(r.gzhead.hcrc&&r.pending>i&&(t.adler=Fe(t.adler,r.pending_buf,r.pending-i,i)),Ot(t),r.pending!==0)return r.last_flush=-1,Xe;i=0}r.gzindex<r.gzhead.comment.length?a=r.gzhead.comment.charCodeAt(r.gzindex++)&255:a=0,ne(r,a)}while(a!==0);r.gzhead.hcrc&&r.pending>i&&(t.adler=Fe(t.adler,r.pending_buf,r.pending-i,i))}r.status=Du}if(r.status===Du){if(r.gzhead.hcrc){if(r.pending+2>r.pending_buf_size&&(Ot(t),r.pending!==0))return r.last_flush=-1,Xe;ne(r,t.adler&255),ne(r,t.adler>>8&255),t.adler=0}if(r.status=_i,Ot(t),r.pending!==0)return r.last_flush=-1,Xe}if(t.avail_in!==0||r.lookahead!==0||e!==Nn&&r.status!==os){let i=r.level===0?F0(r,e):r.strategy===sc?Kv(r,e):r.strategy===Tv?Xv(r,e):ss[r.level].func(r,e);if((i===Mi||i===Pa)&&(r.status=os),i===lt||i===Mi)return t.avail_out===0&&(r.last_flush=-1),Xe;if(i===Ca&&(e===wv?Sv(r):e!==Um&&(Pu(r,0,0,!1),e===Mv&&(zn(r.head),r.lookahead===0&&(r.strstart=0,r.block_start=0,r.insert=0))),Ot(t),t.avail_out===0))return r.last_flush=-1,Xe}return e!==rr?Xe:r.wrap<=0?Nm:(r.wrap===2?(ne(r,t.adler&255),ne(r,t.adler>>8&255),ne(r,t.adler>>16&255),ne(r,t.adler>>24&255),ne(r,t.total_in&255),ne(r,t.total_in>>8&255),ne(r,t.total_in>>16&255),ne(r,t.total_in>>24&255)):(as(r,t.adler>>>16),as(r,t.adler&65535)),Ot(t),r.wrap>0&&(r.wrap=-r.wrap),r.pending!==0?Xe:Nm)},Qv=t=>{if(vs(t))return Br;let e=t.state.status;return t.state=null,e===_i?Si(t,Av):Xe},Jv=(t,e)=>{let r=e.length;if(vs(t))return Br;let n=t.state,i=n.wrap;if(i===2||i===1&&n.status!==La||n.lookahead)return Br;if(i===1&&(t.adler=ps(t.adler,e,r,0)),n.wrap=0,r>=n.w_size){i===0&&(zn(n.head),n.strstart=0,n.block_start=0,n.insert=0);let c=new Uint8Array(n.w_size);c.set(e.subarray(r-n.w_size,r),0),e=c,r=n.w_size}let a=t.avail_in,o=t.next_in,s=t.input;for(t.avail_in=r,t.next_in=0,t.input=e,Ta(n);n.lookahead>=Z;){let c=n.strstart,l=n.lookahead-(Z-1);do n.ins_h=Hn(n,n.ins_h,n.window[c+Z-1]),n.prev[c&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=c,c++;while(--l);n.strstart=c,n.lookahead=Z-1,Ta(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=Z-1,n.match_available=0,t.next_in=o,t.input=s,t.avail_in=a,n.wrap=i,Xe},e_=Zv,t_=z0,r_=D0,n_=k0,i_=qv,a_=jv,o_=Qv,s_=Jv,l_="pako deflate (from Nodeca project)",cs={deflateInit:e_,deflateInit2:t_,deflateReset:r_,deflateResetKeep:n_,deflateSetHeader:i_,deflate:a_,deflateEnd:o_,deflateSetDictionary:s_,deflateInfo:l_},c_=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),d_=function(t){let e=Array.prototype.slice.call(arguments,1);for(;e.length;){let r=e.shift();if(r){if(typeof r!="object")throw new TypeError(r+"must be non-object");for(let n in r)c_(r,n)&&(t[n]=r[n])}}return t},u_=t=>{let e=0;for(let n=0,i=t.length;n<i;n++)e+=t[n].length;let r=new Uint8Array(e);for(let n=0,i=0,a=t.length;n<a;n++){let o=t[n];r.set(o,i),i+=o.length}return r},yc={assign:d_,flattenChunks:u_},O0=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{O0=!1}var gs=new Uint8Array(256);for(let t=0;t<256;t++)gs[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;gs[254]=gs[254]=1;var f_=t=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(t);let e,r,n,i,a,o=t.length,s=0;for(i=0;i<o;i++)r=t.charCodeAt(i),(r&64512)===55296&&i+1<o&&(n=t.charCodeAt(i+1),(n&64512)===56320&&(r=65536+(r-55296<<10)+(n-56320),i++)),s+=r<128?1:r<2048?2:r<65536?3:4;for(e=new Uint8Array(s),a=0,i=0;a<s;i++)r=t.charCodeAt(i),(r&64512)===55296&&i+1<o&&(n=t.charCodeAt(i+1),(n&64512)===56320&&(r=65536+(r-55296<<10)+(n-56320),i++)),r<128?e[a++]=r:r<2048?(e[a++]=192|r>>>6,e[a++]=128|r&63):r<65536?(e[a++]=224|r>>>12,e[a++]=128|r>>>6&63,e[a++]=128|r&63):(e[a++]=240|r>>>18,e[a++]=128|r>>>12&63,e[a++]=128|r>>>6&63,e[a++]=128|r&63);return e},h_=(t,e)=>{if(e<65534&&t.subarray&&O0)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let r="";for(let n=0;n<e;n++)r+=String.fromCharCode(t[n]);return r},m_=(t,e)=>{let r=e||t.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(t.subarray(0,e));let n,i,a=new Array(r*2);for(i=0,n=0;n<r;){let o=t[n++];if(o<128){a[i++]=o;continue}let s=gs[o];if(s>4){a[i++]=65533,n+=s-1;continue}for(o&=s===2?31:s===3?15:7;s>1&&n<r;)o=o<<6|t[n++]&63,s--;if(s>1){a[i++]=65533;continue}o<65536?a[i++]=o:(o-=65536,a[i++]=55296|o>>10&1023,a[i++]=56320|o&1023)}return h_(a,i)},p_=(t,e)=>{e=e||t.length,e>t.length&&(e=t.length);let r=e-1;for(;r>=0&&(t[r]&192)===128;)r--;return r<0||r===0?e:r+gs[t[r]]>e?r:e},ys={string2buf:f_,buf2string:m_,utf8border:p_};function g_(){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 U0=g_,N0=Object.prototype.toString,{Z_NO_FLUSH:y_,Z_SYNC_FLUSH:b_,Z_FULL_FLUSH:x_,Z_FINISH:v_,Z_OK:mc,Z_STREAM_END:__,Z_DEFAULT_COMPRESSION:S_,Z_DEFAULT_STRATEGY:w_,Z_DEFLATED:M_}=Ei;function _s(t){this.options=yc.assign({level:S_,method:M_,chunkSize:16384,windowBits:15,memLevel:8,strategy:w_},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new U0,this.strm.avail_out=0;let r=cs.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==mc)throw new Error(wi[r]);if(e.header&&cs.deflateSetHeader(this.strm,e.header),e.dictionary){let n;if(typeof e.dictionary=="string"?n=ys.string2buf(e.dictionary):N0.call(e.dictionary)==="[object ArrayBuffer]"?n=new Uint8Array(e.dictionary):n=e.dictionary,r=cs.deflateSetDictionary(this.strm,n),r!==mc)throw new Error(wi[r]);this._dict_set=!0}}_s.prototype.push=function(t,e){let r=this.strm,n=this.options.chunkSize,i,a;if(this.ended)return!1;for(e===~~e?a=e:a=e===!0?v_:y_,typeof t=="string"?r.input=ys.string2buf(t):N0.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;){if(r.avail_out===0&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),(a===b_||a===x_)&&r.avail_out<=6){this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;continue}if(i=cs.deflate(r,a),i===__)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),i=cs.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===mc;if(r.avail_out===0){this.onData(r.output);continue}if(a>0&&r.next_out>0){this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;continue}if(r.avail_in===0)break}return!0};_s.prototype.onData=function(t){this.chunks.push(t)};_s.prototype.onEnd=function(t){t===mc&&(this.result=yc.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Gu(t,e){let r=new _s(e);if(r.push(t,!0),r.err)throw r.msg||wi[r.err];return r.result}function A_(t,e){return e=e||{},e.raw=!0,Gu(t,e)}function E_(t,e){return e=e||{},e.gzip=!0,Gu(t,e)}var L_=_s,T_=Gu,R_=A_,C_=E_,P_=Ei,I_={Deflate:L_,deflate:T_,deflateRaw:R_,gzip:C_,constants:P_},lc=16209,B_=16191,F_=function(e,r){let n,i,a,o,s,c,l,d,f,u,h,m,g,p,y,v,x,b,_,w,S,E,L,M,R=e.state;n=e.next_in,L=e.input,i=n+(e.avail_in-5),a=e.next_out,M=e.output,o=a-(r-e.avail_out),s=a+(e.avail_out-257),c=R.dmax,l=R.wsize,d=R.whave,f=R.wnext,u=R.window,h=R.hold,m=R.bits,g=R.lencode,p=R.distcode,y=(1<<R.lenbits)-1,v=(1<<R.distbits)-1;e:do{m<15&&(h+=L[n++]<<m,m+=8,h+=L[n++]<<m,m+=8),x=g[h&y];t:for(;;){if(b=x>>>24,h>>>=b,m-=b,b=x>>>16&255,b===0)M[a++]=x&65535;else if(b&16){_=x&65535,b&=15,b&&(m<b&&(h+=L[n++]<<m,m+=8),_+=h&(1<<b)-1,h>>>=b,m-=b),m<15&&(h+=L[n++]<<m,m+=8,h+=L[n++]<<m,m+=8),x=p[h&v];r:for(;;){if(b=x>>>24,h>>>=b,m-=b,b=x>>>16&255,b&16){if(w=x&65535,b&=15,m<b&&(h+=L[n++]<<m,m+=8,m<b&&(h+=L[n++]<<m,m+=8)),w+=h&(1<<b)-1,w>c){e.msg="invalid distance too far back",R.mode=lc;break e}if(h>>>=b,m-=b,b=a-o,w>b){if(b=w-b,b>d&&R.sane){e.msg="invalid distance too far back",R.mode=lc;break e}if(S=0,E=u,f===0){if(S+=l-b,b<_){_-=b;do M[a++]=u[S++];while(--b);S=a-w,E=M}}else if(f<b){if(S+=l+f-b,b-=f,b<_){_-=b;do M[a++]=u[S++];while(--b);if(S=0,f<_){b=f,_-=b;do M[a++]=u[S++];while(--b);S=a-w,E=M}}}else if(S+=f-b,b<_){_-=b;do M[a++]=u[S++];while(--b);S=a-w,E=M}for(;_>2;)M[a++]=E[S++],M[a++]=E[S++],M[a++]=E[S++],_-=3;_&&(M[a++]=E[S++],_>1&&(M[a++]=E[S++]))}else{S=a-w;do M[a++]=M[S++],M[a++]=M[S++],M[a++]=M[S++],_-=3;while(_>2);_&&(M[a++]=M[S++],_>1&&(M[a++]=M[S++]))}}else if((b&64)===0){x=p[(x&65535)+(h&(1<<b)-1)];continue r}else{e.msg="invalid distance code",R.mode=lc;break e}break}}else if((b&64)===0){x=g[(x&65535)+(h&(1<<b)-1)];continue t}else if(b&32){R.mode=B_;break e}else{e.msg="invalid literal/length code",R.mode=lc;break e}break}}while(n<i&&a<s);_=m>>3,n-=_,m-=_<<3,h&=(1<<m)-1,e.next_in=n,e.next_out=a,e.avail_in=n<i?5+(i-n):5-(n-i),e.avail_out=a<s?257+(s-a):257-(a-s),R.hold=h,R.bits=m},Aa=15,Vm=852,Gm=592,Wm=0,_u=1,Xm=2,k_=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]),D_=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]),z_=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]),O_=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]),U_=(t,e,r,n,i,a,o,s)=>{let c=s.bits,l=0,d=0,f=0,u=0,h=0,m=0,g=0,p=0,y=0,v=0,x,b,_,w,S,E=null,L,M=new Uint16Array(Aa+1),R=new Uint16Array(Aa+1),I=null,B,F,U;for(l=0;l<=Aa;l++)M[l]=0;for(d=0;d<n;d++)M[e[r+d]]++;for(h=c,u=Aa;u>=1&&M[u]===0;u--);if(h>u&&(h=u),u===0)return i[a++]=1<<24|64<<16|0,i[a++]=1<<24|64<<16|0,s.bits=1,0;for(f=1;f<u&&M[f]===0;f++);for(h<f&&(h=f),p=1,l=1;l<=Aa;l++)if(p<<=1,p-=M[l],p<0)return-1;if(p>0&&(t===Wm||u!==1))return-1;for(R[1]=0,l=1;l<Aa;l++)R[l+1]=R[l]+M[l];for(d=0;d<n;d++)e[r+d]!==0&&(o[R[e[r+d]]++]=d);if(t===Wm?(E=I=o,L=20):t===_u?(E=k_,I=D_,L=257):(E=z_,I=O_,L=0),v=0,d=0,l=f,S=a,m=h,g=0,_=-1,y=1<<h,w=y-1,t===_u&&y>Vm||t===Xm&&y>Gm)return 1;for(;;){B=l-g,o[d]+1<L?(F=0,U=o[d]):o[d]>=L?(F=I[o[d]-L],U=E[o[d]-L]):(F=96,U=0),x=1<<l-g,b=1<<m,f=b;do b-=x,i[S+(v>>g)+b]=B<<24|F<<16|U|0;while(b!==0);for(x=1<<l-1;v&x;)x>>=1;if(x!==0?(v&=x-1,v+=x):v=0,d++,--M[l]===0){if(l===u)break;l=e[r+o[d]]}if(l>h&&(v&w)!==_){for(g===0&&(g=h),S+=f,m=l-g,p=1<<m;m+g<u&&(p-=M[m+g],!(p<=0));)m++,p<<=1;if(y+=1<<m,t===_u&&y>Vm||t===Xm&&y>Gm)return 1;_=v&w,i[_]=h<<24|m<<16|S-a|0}}return v!==0&&(i[S+v]=l-g<<24|64<<16|0),s.bits=h,0},ds=U_,N_=0,H0=1,V0=2,{Z_FINISH:Km,Z_BLOCK:H_,Z_TREES:cc,Z_OK:Ai,Z_STREAM_END:V_,Z_NEED_DICT:G_,Z_STREAM_ERROR:nr,Z_DATA_ERROR:G0,Z_MEM_ERROR:W0,Z_BUF_ERROR:W_,Z_DEFLATED:Ym}=Ei,bc=16180,$m=16181,qm=16182,Zm=16183,jm=16184,Qm=16185,Jm=16186,e0=16187,t0=16188,r0=16189,pc=16190,rn=16191,Su=16192,n0=16193,wu=16194,i0=16195,a0=16196,o0=16197,s0=16198,dc=16199,uc=16200,l0=16201,c0=16202,d0=16203,u0=16204,f0=16205,Mu=16206,h0=16207,m0=16208,be=16209,X0=16210,K0=16211,X_=852,K_=592,Y_=15,$_=Y_,p0=t=>(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24);function q_(){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 Li=t=>{if(!t)return 1;let e=t.state;return!e||e.strm!==t||e.mode<bc||e.mode>K0?1:0},Y0=t=>{if(Li(t))return nr;let e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=bc,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(X_),e.distcode=e.distdyn=new Int32Array(K_),e.sane=1,e.back=-1,Ai},$0=t=>{if(Li(t))return nr;let e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Y0(t)},q0=(t,e)=>{let r;if(Li(t))return nr;let n=t.state;return e<0?(r=0,e=-e):(r=(e>>4)+5,e<48&&(e&=15)),e&&(e<8||e>15)?nr:(n.window!==null&&n.wbits!==e&&(n.window=null),n.wrap=r,n.wbits=e,$0(t))},Z0=(t,e)=>{if(!t)return nr;let r=new q_;t.state=r,r.strm=t,r.window=null,r.mode=bc;let n=q0(t,e);return n!==Ai&&(t.state=null),n},Z_=t=>Z0(t,$_),g0=!0,Au,Eu,j_=t=>{if(g0){Au=new Int32Array(512),Eu=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(ds(H0,t.lens,0,288,Au,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;ds(V0,t.lens,0,32,Eu,0,t.work,{bits:5}),g0=!1}t.lencode=Au,t.lenbits=9,t.distcode=Eu,t.distbits=5},j0=(t,e,r,n)=>{let i,a=t.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),n>=a.wsize?(a.window.set(e.subarray(r-a.wsize,r),0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>n&&(i=n),a.window.set(e.subarray(r-n,r-n+i),a.wnext),n-=i,n?(a.window.set(e.subarray(r-n,r),0),a.wnext=n,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0},Q_=(t,e)=>{let r,n,i,a,o,s,c,l,d,f,u,h,m,g,p=0,y,v,x,b,_,w,S,E,L=new Uint8Array(4),M,R,I=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Li(t)||!t.output||!t.input&&t.avail_in!==0)return nr;r=t.state,r.mode===rn&&(r.mode=Su),o=t.next_out,i=t.output,c=t.avail_out,a=t.next_in,n=t.input,s=t.avail_in,l=r.hold,d=r.bits,f=s,u=c,E=Ai;e:for(;;)switch(r.mode){case bc:if(r.wrap===0){r.mode=Su;break}for(;d<16;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(r.wrap&2&&l===35615){r.wbits===0&&(r.wbits=15),r.check=0,L[0]=l&255,L[1]=l>>>8&255,r.check=Fe(r.check,L,2,0),l=0,d=0,r.mode=$m;break}if(r.head&&(r.head.done=!1),!(r.wrap&1)||(((l&255)<<8)+(l>>8))%31){t.msg="incorrect header check",r.mode=be;break}if((l&15)!==Ym){t.msg="unknown compression method",r.mode=be;break}if(l>>>=4,d-=4,S=(l&15)+8,r.wbits===0&&(r.wbits=S),S>15||S>r.wbits){t.msg="invalid window size",r.mode=be;break}r.dmax=1<<r.wbits,r.flags=0,t.adler=r.check=1,r.mode=l&512?r0:rn,l=0,d=0;break;case $m:for(;d<16;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(r.flags=l,(r.flags&255)!==Ym){t.msg="unknown compression method",r.mode=be;break}if(r.flags&57344){t.msg="unknown header flags set",r.mode=be;break}r.head&&(r.head.text=l>>8&1),r.flags&512&&r.wrap&4&&(L[0]=l&255,L[1]=l>>>8&255,r.check=Fe(r.check,L,2,0)),l=0,d=0,r.mode=qm;case qm:for(;d<32;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}r.head&&(r.head.time=l),r.flags&512&&r.wrap&4&&(L[0]=l&255,L[1]=l>>>8&255,L[2]=l>>>16&255,L[3]=l>>>24&255,r.check=Fe(r.check,L,4,0)),l=0,d=0,r.mode=Zm;case Zm:for(;d<16;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}r.head&&(r.head.xflags=l&255,r.head.os=l>>8),r.flags&512&&r.wrap&4&&(L[0]=l&255,L[1]=l>>>8&255,r.check=Fe(r.check,L,2,0)),l=0,d=0,r.mode=jm;case jm:if(r.flags&1024){for(;d<16;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}r.length=l,r.head&&(r.head.extra_len=l),r.flags&512&&r.wrap&4&&(L[0]=l&255,L[1]=l>>>8&255,r.check=Fe(r.check,L,2,0)),l=0,d=0}else r.head&&(r.head.extra=null);r.mode=Qm;case Qm:if(r.flags&1024&&(h=r.length,h>s&&(h=s),h&&(r.head&&(S=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(n.subarray(a,a+h),S)),r.flags&512&&r.wrap&4&&(r.check=Fe(r.check,n,h,a)),s-=h,a+=h,r.length-=h),r.length))break e;r.length=0,r.mode=Jm;case Jm:if(r.flags&2048){if(s===0)break e;h=0;do S=n[a+h++],r.head&&S&&r.length<65536&&(r.head.name+=String.fromCharCode(S));while(S&&h<s);if(r.flags&512&&r.wrap&4&&(r.check=Fe(r.check,n,h,a)),s-=h,a+=h,S)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=e0;case e0:if(r.flags&4096){if(s===0)break e;h=0;do S=n[a+h++],r.head&&S&&r.length<65536&&(r.head.comment+=String.fromCharCode(S));while(S&&h<s);if(r.flags&512&&r.wrap&4&&(r.check=Fe(r.check,n,h,a)),s-=h,a+=h,S)break e}else r.head&&(r.head.comment=null);r.mode=t0;case t0:if(r.flags&512){for(;d<16;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(r.wrap&4&&l!==(r.check&65535)){t.msg="header crc mismatch",r.mode=be;break}l=0,d=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=rn;break;case r0:for(;d<32;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}t.adler=r.check=p0(l),l=0,d=0,r.mode=pc;case pc:if(r.havedict===0)return t.next_out=o,t.avail_out=c,t.next_in=a,t.avail_in=s,r.hold=l,r.bits=d,G_;t.adler=r.check=1,r.mode=rn;case rn:if(e===H_||e===cc)break e;case Su:if(r.last){l>>>=d&7,d-=d&7,r.mode=Mu;break}for(;d<3;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}switch(r.last=l&1,l>>>=1,d-=1,l&3){case 0:r.mode=n0;break;case 1:if(j_(r),r.mode=dc,e===cc){l>>>=2,d-=2;break e}break;case 2:r.mode=a0;break;case 3:t.msg="invalid block type",r.mode=be}l>>>=2,d-=2;break;case n0:for(l>>>=d&7,d-=d&7;d<32;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if((l&65535)!==(l>>>16^65535)){t.msg="invalid stored block lengths",r.mode=be;break}if(r.length=l&65535,l=0,d=0,r.mode=wu,e===cc)break e;case wu:r.mode=i0;case i0:if(h=r.length,h){if(h>s&&(h=s),h>c&&(h=c),h===0)break e;i.set(n.subarray(a,a+h),o),s-=h,a+=h,c-=h,o+=h,r.length-=h;break}r.mode=rn;break;case a0:for(;d<14;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(r.nlen=(l&31)+257,l>>>=5,d-=5,r.ndist=(l&31)+1,l>>>=5,d-=5,r.ncode=(l&15)+4,l>>>=4,d-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=be;break}r.have=0,r.mode=o0;case o0:for(;r.have<r.ncode;){for(;d<3;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}r.lens[I[r.have++]]=l&7,l>>>=3,d-=3}for(;r.have<19;)r.lens[I[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,M={bits:r.lenbits},E=ds(N_,r.lens,0,19,r.lencode,0,r.work,M),r.lenbits=M.bits,E){t.msg="invalid code lengths set",r.mode=be;break}r.have=0,r.mode=s0;case s0:for(;r.have<r.nlen+r.ndist;){for(;p=r.lencode[l&(1<<r.lenbits)-1],y=p>>>24,v=p>>>16&255,x=p&65535,!(y<=d);){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(x<16)l>>>=y,d-=y,r.lens[r.have++]=x;else{if(x===16){for(R=y+2;d<R;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(l>>>=y,d-=y,r.have===0){t.msg="invalid bit length repeat",r.mode=be;break}S=r.lens[r.have-1],h=3+(l&3),l>>>=2,d-=2}else if(x===17){for(R=y+3;d<R;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}l>>>=y,d-=y,S=0,h=3+(l&7),l>>>=3,d-=3}else{for(R=y+7;d<R;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}l>>>=y,d-=y,S=0,h=11+(l&127),l>>>=7,d-=7}if(r.have+h>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=be;break}for(;h--;)r.lens[r.have++]=S}}if(r.mode===be)break;if(r.lens[256]===0){t.msg="invalid code -- missing end-of-block",r.mode=be;break}if(r.lenbits=9,M={bits:r.lenbits},E=ds(H0,r.lens,0,r.nlen,r.lencode,0,r.work,M),r.lenbits=M.bits,E){t.msg="invalid literal/lengths set",r.mode=be;break}if(r.distbits=6,r.distcode=r.distdyn,M={bits:r.distbits},E=ds(V0,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,M),r.distbits=M.bits,E){t.msg="invalid distances set",r.mode=be;break}if(r.mode=dc,e===cc)break e;case dc:r.mode=uc;case uc:if(s>=6&&c>=258){t.next_out=o,t.avail_out=c,t.next_in=a,t.avail_in=s,r.hold=l,r.bits=d,F_(t,u),o=t.next_out,i=t.output,c=t.avail_out,a=t.next_in,n=t.input,s=t.avail_in,l=r.hold,d=r.bits,r.mode===rn&&(r.back=-1);break}for(r.back=0;p=r.lencode[l&(1<<r.lenbits)-1],y=p>>>24,v=p>>>16&255,x=p&65535,!(y<=d);){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(v&&(v&240)===0){for(b=y,_=v,w=x;p=r.lencode[w+((l&(1<<b+_)-1)>>b)],y=p>>>24,v=p>>>16&255,x=p&65535,!(b+y<=d);){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}l>>>=b,d-=b,r.back+=b}if(l>>>=y,d-=y,r.back+=y,r.length=x,v===0){r.mode=f0;break}if(v&32){r.back=-1,r.mode=rn;break}if(v&64){t.msg="invalid literal/length code",r.mode=be;break}r.extra=v&15,r.mode=l0;case l0:if(r.extra){for(R=r.extra;d<R;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}r.length+=l&(1<<r.extra)-1,l>>>=r.extra,d-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=c0;case c0:for(;p=r.distcode[l&(1<<r.distbits)-1],y=p>>>24,v=p>>>16&255,x=p&65535,!(y<=d);){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if((v&240)===0){for(b=y,_=v,w=x;p=r.distcode[w+((l&(1<<b+_)-1)>>b)],y=p>>>24,v=p>>>16&255,x=p&65535,!(b+y<=d);){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}l>>>=b,d-=b,r.back+=b}if(l>>>=y,d-=y,r.back+=y,v&64){t.msg="invalid distance code",r.mode=be;break}r.offset=x,r.extra=v&15,r.mode=d0;case d0:if(r.extra){for(R=r.extra;d<R;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}r.offset+=l&(1<<r.extra)-1,l>>>=r.extra,d-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=be;break}r.mode=u0;case u0:if(c===0)break e;if(h=u-c,r.offset>h){if(h=r.offset-h,h>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=be;break}h>r.wnext?(h-=r.wnext,m=r.wsize-h):m=r.wnext-h,h>r.length&&(h=r.length),g=r.window}else g=i,m=o-r.offset,h=r.length;h>c&&(h=c),c-=h,r.length-=h;do i[o++]=g[m++];while(--h);r.length===0&&(r.mode=uc);break;case f0:if(c===0)break e;i[o++]=r.length,c--,r.mode=uc;break;case Mu:if(r.wrap){for(;d<32;){if(s===0)break e;s--,l|=n[a++]<<d,d+=8}if(u-=c,t.total_out+=u,r.total+=u,r.wrap&4&&u&&(t.adler=r.check=r.flags?Fe(r.check,i,u,o-u):ps(r.check,i,u,o-u)),u=c,r.wrap&4&&(r.flags?l:p0(l))!==r.check){t.msg="incorrect data check",r.mode=be;break}l=0,d=0}r.mode=h0;case h0:if(r.wrap&&r.flags){for(;d<32;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(r.wrap&4&&l!==(r.total&4294967295)){t.msg="incorrect length check",r.mode=be;break}l=0,d=0}r.mode=m0;case m0:E=V_;break e;case be:E=G0;break e;case X0:return W0;case K0:default:return nr}return t.next_out=o,t.avail_out=c,t.next_in=a,t.avail_in=s,r.hold=l,r.bits=d,(r.wsize||u!==t.avail_out&&r.mode<be&&(r.mode<Mu||e!==Km))&&j0(t,t.output,t.next_out,u-t.avail_out),f-=t.avail_in,u-=t.avail_out,t.total_in+=f,t.total_out+=u,r.total+=u,r.wrap&4&&u&&(t.adler=r.check=r.flags?Fe(r.check,i,u,t.next_out-u):ps(r.check,i,u,t.next_out-u)),t.data_type=r.bits+(r.last?64:0)+(r.mode===rn?128:0)+(r.mode===dc||r.mode===wu?256:0),(f===0&&u===0||e===Km)&&E===Ai&&(E=W_),E},J_=t=>{if(Li(t))return nr;let e=t.state;return e.window&&(e.window=null),t.state=null,Ai},eS=(t,e)=>{if(Li(t))return nr;let r=t.state;return(r.wrap&2)===0?nr:(r.head=e,e.done=!1,Ai)},tS=(t,e)=>{let r=e.length,n,i,a;return Li(t)||(n=t.state,n.wrap!==0&&n.mode!==pc)?nr:n.mode===pc&&(i=1,i=ps(i,e,r,0),i!==n.check)?G0:(a=j0(t,e,r,r),a?(n.mode=X0,W0):(n.havedict=1,Ai))},rS=$0,nS=q0,iS=Y0,aS=Z_,oS=Z0,sS=Q_,lS=J_,cS=eS,dS=tS,uS="pako inflate (from Nodeca project)",an={inflateReset:rS,inflateReset2:nS,inflateResetKeep:iS,inflateInit:aS,inflateInit2:oS,inflate:sS,inflateEnd:lS,inflateGetHeader:cS,inflateSetDictionary:dS,inflateInfo:uS};function fS(){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 hS=fS,Q0=Object.prototype.toString,{Z_NO_FLUSH:mS,Z_FINISH:pS,Z_OK:bs,Z_STREAM_END:Lu,Z_NEED_DICT:Tu,Z_STREAM_ERROR:gS,Z_DATA_ERROR:y0,Z_MEM_ERROR:yS}=Ei;function Ss(t){this.options=yc.assign({chunkSize:1024*64,windowBits:15,to:""},t||{});let e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new U0,this.strm.avail_out=0;let r=an.inflateInit2(this.strm,e.windowBits);if(r!==bs)throw new Error(wi[r]);if(this.header=new hS,an.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=ys.string2buf(e.dictionary):Q0.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=an.inflateSetDictionary(this.strm,e.dictionary),r!==bs)))throw new Error(wi[r])}Ss.prototype.push=function(t,e){let r=this.strm,n=this.options.chunkSize,i=this.options.dictionary,a,o,s;if(this.ended)return!1;for(e===~~e?o=e:o=e===!0?pS:mS,Q0.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;){for(r.avail_out===0&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),a=an.inflate(r,o),a===Tu&&i&&(a=an.inflateSetDictionary(r,i),a===bs?a=an.inflate(r,o):a===y0&&(a=Tu));r.avail_in>0&&a===Lu&&r.state.wrap>0&&t[r.next_in]!==0;)an.inflateReset(r),a=an.inflate(r,o);switch(a){case gS:case y0:case Tu:case yS:return this.onEnd(a),this.ended=!0,!1}if(s=r.avail_out,r.next_out&&(r.avail_out===0||a===Lu))if(this.options.to==="string"){let c=ys.utf8border(r.output,r.next_out),l=r.next_out-c,d=ys.buf2string(r.output,c);r.next_out=l,r.avail_out=n-l,l&&r.output.set(r.output.subarray(c,c+l),0),this.onData(d)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(!(a===bs&&s===0)){if(a===Lu)return a=an.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(r.avail_in===0)break}}return!0};Ss.prototype.onData=function(t){this.chunks.push(t)};Ss.prototype.onEnd=function(t){t===bs&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=yc.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Wu(t,e){let r=new Ss(e);if(r.push(t),r.err)throw r.msg||wi[r.err];return r.result}function bS(t,e){return e=e||{},e.raw=!0,Wu(t,e)}var xS=Ss,vS=Wu,_S=bS,SS=Wu,wS=Ei,MS={Inflate:xS,inflate:vS,inflateRaw:_S,ungzip:SS,constants:wS},{Deflate:AS,deflate:ES,deflateRaw:LS,gzip:TS}=I_,{Inflate:RS,inflate:CS,inflateRaw:PS,ungzip:IS}=MS,BS=AS,FS=ES,kS=LS,DS=TS,zS=RS,OS=CS,US=PS,NS=IS,HS=Ei,Xu={Deflate:BS,deflate:FS,deflateRaw:kS,gzip:DS,Inflate:zS,inflate:OS,inflateRaw:US,ungzip:NS,constants:HS};var Ia=class Ia{constructor(e=Ia.INITIAL_SIZE){this.buffer=new Uint8Array(e),this.readOffset=0,this.writeOffset=0}append(e){let r=e instanceof Uint8Array?e:new Uint8Array(e),n=this.writeOffset+r.length;n>this.buffer.length&&this.grow(n),this.buffer.set(r,this.writeOffset),this.writeOffset+=r.length}hasBytes(e){return this.writeOffset-this.readOffset>=e}available(){return this.writeOffset-this.readOffset}readByte(){if(!this.hasBytes(1))throw new Error("Buffer underflow");return this.buffer[this.readOffset++]}readShort(){if(!this.hasBytes(2))throw new Error("Buffer underflow");let e=this.buffer[this.readOffset]|this.buffer[this.readOffset+1]<<8;return this.readOffset+=2,e>32767?e-65536:e}readLong(){if(!this.hasBytes(4))throw new Error("Buffer underflow");let e=this.buffer[this.readOffset]|this.buffer[this.readOffset+1]<<8|this.buffer[this.readOffset+2]<<16|this.buffer[this.readOffset+3]<<24;return this.readOffset+=4,e}readFloat(){if(!this.hasBytes(4))throw new Error("Buffer underflow");let r=new DataView(this.buffer.buffer,this.buffer.byteOffset+this.readOffset,4).getFloat32(0,!0);return this.readOffset+=4,r}readString(){let e=Math.min(Ia.MAX_STRING_LENGTH,this.writeOffset-this.readOffset),r=0;for(;r<e&&this.buffer[this.readOffset+r]!==0;)r++;if(r>=e)throw this.writeOffset-this.readOffset<=e?new Error("Buffer underflow"):new Error("String exceeds max length");let n=this.buffer.slice(this.readOffset,this.readOffset+r);return this.readOffset+=r+1,new TextDecoder("latin1").decode(n)}peekBytes(e){if(!this.hasBytes(e))throw new Error("Buffer underflow");return this.buffer.slice(this.readOffset,this.readOffset+e)}readBytes(e){if(!this.hasBytes(e))throw new Error("Buffer underflow");let r=this.buffer.slice(this.readOffset,this.readOffset+e);return this.readOffset+=e,r}readData(e){return this.readBytes(e)}getReadPosition(){return this.readOffset}getWritePosition(){return this.writeOffset}setReadPosition(e){if(e<0||e>this.writeOffset)throw new Error("Invalid read position");this.readOffset=e}grow(e){let r=e?Math.max(e,this.buffer.length*2):this.buffer.length*2,n=new Uint8Array(r);n.set(this.buffer),this.buffer=n}compact(){if(this.readOffset===0)return;let e=this.writeOffset-this.readOffset;if(e===0){this.readOffset=0,this.writeOffset=0;return}this.buffer.copyWithin(0,this.readOffset,this.writeOffset),this.readOffset=0,this.writeOffset=e}getCapacity(){return this.buffer.length}reset(){this.readOffset=0,this.writeOffset=0}};Ia.INITIAL_SIZE=64*1024,Ia.MAX_STRING_LENGTH=2048;var Vn=Ia;var kr=()=>({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}),hr=()=>({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,watertype:0});var J0={0:T.bad,1:T.nop,2:T.disconnect,3:T.reconnect,4:T.download,5:T.frame,6:T.inventory,7:T.layout,8:T.muzzleflash,9:T.temp_entity,10:T.sound,11:T.print,12:T.stufftext,13:T.serverdata,14:T.configstring,15:T.spawnbaseline,16:T.centerprint,17:T.playerinfo,18:T.packetentities,19:T.deltapacketentities,20:T.muzzleflash2},xc=class{constructor(){this.protocolVersion=34}translateCommand(e){return J0[e]!==void 0?J0[e]:T.bad}parseServerData(e){let r=e.readLong(),n=e.readLong(),i=e.readByte(),a=e.readString(),o=e.readShort(),s=e.readString();return{protocol:r,serverCount:n,attractLoop:i,gameDir:a,playerNum:o,levelName:s}}parseEntityBits(e){let r=e.readByte();r&gr&&(r|=e.readByte()<<8),r&br&&(r|=e.readByte()<<16),r&xr&&(r|=e.readByte()<<24);let n;return r&Zn?n=e.readShort():n=e.readByte(),{number:n,bits:r,bitsHigh:0}}parseDelta(e,r,n,i,a,o){r.number=e.number,r.modelindex=e.modelindex,r.modelindex2=e.modelindex2,r.modelindex3=e.modelindex3,r.modelindex4=e.modelindex4,r.frame=e.frame,r.skinnum=e.skinnum,r.effects=e.effects,r.renderfx=e.renderfx,r.origin.x=e.origin.x,r.origin.y=e.origin.y,r.origin.z=e.origin.z,r.old_origin.x=e.origin.x,r.old_origin.y=e.origin.y,r.old_origin.z=e.origin.z,r.angles.x=e.angles.x,r.angles.y=e.angles.y,r.angles.z=e.angles.z,r.sound=e.sound,r.event=e.event,r.solid=e.solid,r.number=n,r.bits=i,i&vt&&(r.modelindex=o.readByte()),i&St&&(r.modelindex2=o.readByte()),i&wt&&(r.modelindex3=o.readByte()),i&Mt&&(r.modelindex4=o.readByte()),i&gt&&(r.frame=o.readByte()),i&_t&&(r.frame=o.readShort()),i&He&&i&We?r.skinnum=o.readLong():i&He?r.skinnum=o.readByte():i&We&&(r.skinnum=o.readShort()),i&Ne&&i&Ge?r.effects=o.readLong():i&Ne?r.effects=o.readByte():i&Ge&&(r.effects=o.readShort()),i&Ue&&i&Ve?r.renderfx=o.readLong():i&Ue?r.renderfx=o.readByte():i&Ve&&(r.renderfx=o.readShort()),i&ft&&(r.origin.x=o.readShort()*.125),i&ht&&(r.origin.y=o.readShort()*.125),i&bt&&(r.origin.z=o.readShort()*.125),i&xt&&(r.angles.x=o.readByte()*(360/256)),i&mt&&(r.angles.y=o.readByte()*(360/256)),i&pt&&(r.angles.z=o.readByte()*(360/256)),i&sr&&(r.old_origin.x=o.readShort()*.125,r.old_origin.y=o.readShort()*.125,r.old_origin.z=o.readShort()*.125),i&At&&(r.sound=o.readByte()),i&yt?r.event=o.readByte():r.event=0,i&Et&&(r.solid=o.readShort())}parsePlayerState(e){let r=hr(),n=e.readShort();n&1&&(r.pm_type=e.readByte()),n&2&&(r.origin.x=e.readShort()*.125,r.origin.y=e.readShort()*.125,r.origin.z=e.readShort()*.125),n&4&&(r.velocity.x=e.readShort()*.125,r.velocity.y=e.readShort()*.125,r.velocity.z=e.readShort()*.125),n&8&&(r.pm_time=e.readByte()),n&16&&(r.pm_flags=e.readByte()),n&32&&(r.gravity=e.readShort()),n&64&&(r.delta_angles.x=e.readShort()*(180/32768),r.delta_angles.y=e.readShort()*(180/32768),r.delta_angles.z=e.readShort()*(180/32768)),n&128&&(r.viewoffset.x=(e.readByte()<<24>>24)*.25,r.viewoffset.y=(e.readByte()<<24>>24)*.25,r.viewoffset.z=(e.readByte()<<24>>24)*.25),n&256&&(r.viewangles.x=e.readShort()*(360/65536),r.viewangles.y=e.readShort()*(360/65536),r.viewangles.z=e.readShort()*(360/65536)),n&512&&(r.kick_angles.x=(e.readByte()<<24>>24)*.25,r.kick_angles.y=(e.readByte()<<24>>24)*.25,r.kick_angles.z=(e.readByte()<<24>>24)*.25),n&4096&&(r.gun_index=e.readByte()),n&8192&&(r.gun_frame=e.readByte(),r.gun_offset.x=(e.readByte()<<24>>24)*.25,r.gun_offset.y=(e.readByte()<<24>>24)*.25,r.gun_offset.z=(e.readByte()<<24>>24)*.25,r.gun_angles.x=(e.readByte()<<24>>24)*.25,r.gun_angles.y=(e.readByte()<<24>>24)*.25,r.gun_angles.z=(e.readByte()<<24>>24)*.25),n&1024&&(r.blend[0]=e.readByte(),r.blend[1]=e.readByte(),r.blend[2]=e.readByte(),r.blend[3]=e.readByte()),n&2048&&(r.fov=e.readByte()),n&16384&&(r.rdflags=e.readByte()),n&32768&&(r.watertype=e.readByte());let i=e.readLong();for(let a=0;a<32;a++)i&1<<a&&(r.stats[a]=e.readShort());return r}};var Dr=2023,vc=class{constructor(){this.protocolVersion=Dr}translateCommand(e){return e}parseServerData(e){let r=e.readLong(),n=e.readLong(),i=e.readByte(),a=e.readByte(),o=e.readString(),s=e.readShort();if(s===-2){let l=e.readShort();for(let d=0;d<l;d++)e.readShort();s=0}else s===-1&&(s=-1);let c=e.readString();return{protocol:r,serverCount:n,spawnCount:n,attractLoop:0,gameDir:o,playerNum:s,levelName:c,tickRate:a,demoType:i}}parseEntityBits(e){let r=e.readByte();r&gr&&(r|=e.readByte()<<8),r&br&&(r|=e.readByte()<<16),r&xr&&(r|=e.readByte()<<24);let n=0;r&Ii&&(n=e.readByte());let i;return r&Zn?i=e.readShort():i=e.readByte(),{number:i,bits:r,bitsHigh:n}}parseDelta(e,r,n,i,a,o){Object.assign(r,e),r.origin={...e.origin},r.old_origin={...e.old_origin},r.angles={...e.angles},r.number=n,r.bits=i,r.bitsHigh=a,i&vt&&(r.modelindex=o.readByte()),i&St&&(r.modelindex2=o.readByte()),i&wt&&(r.modelindex3=o.readByte()),i&Mt&&(r.modelindex4=o.readByte()),i&gt&&(r.frame=o.readByte()),i&_t&&(r.frame=o.readShort()),i&He&&i&We?r.skinnum=o.readLong():i&He?r.skinnum=o.readByte():i&We&&(r.skinnum=o.readShort()),i&Ne&&i&Ge?r.effects=o.readLong():i&Ne?r.effects=o.readByte():i&Ge&&(r.effects=o.readShort()),i&Ue&&i&Ve?r.renderfx=o.readLong():i&Ue?r.renderfx=o.readByte():i&Ve&&(r.renderfx=o.readShort()),i&ft&&(r.origin.x=o.readShort()*.125),i&ht&&(r.origin.y=o.readShort()*.125),i&bt&&(r.origin.z=o.readShort()*.125),i&xt&&(r.angles.x=o.readByte()*(360/256)),i&mt&&(r.angles.y=o.readByte()*(360/256)),i&pt&&(r.angles.z=o.readByte()*(360/256)),i&sr&&(r.old_origin.x=o.readShort()*.125,r.old_origin.y=o.readShort()*.125,r.old_origin.z=o.readShort()*.125),i&At&&(r.sound=o.readByte()),i&yt?r.event=o.readByte():r.event=0,i&Et&&(r.solid=o.readShort()),i&yr&&(r.alpha=o.readByte()/255),i&vr&&(r.scale=o.readFloat()),i&_r&&(r.instanceBits=o.readLong()),i&Sr&&(r.loopVolume=o.readByte()/255),a&un&&(r.loopAttenuation=o.readByte()/255),a&fn&&(r.owner=o.readShort()),a&hn&&(r.oldFrame=o.readShort())}parsePlayerState(e){let r=hr(),n=e.readShort();n&1&&(r.pm_type=e.readByte()),n&2&&(r.origin.x=e.readShort()*.125,r.origin.y=e.readShort()*.125,r.origin.z=e.readShort()*.125),n&4&&(r.velocity.x=e.readShort()*.125,r.velocity.y=e.readShort()*.125,r.velocity.z=e.readShort()*.125),n&8&&(r.pm_time=e.readByte()),n&16&&(r.pm_flags=e.readByte()),n&32&&(r.gravity=e.readShort()),n&64&&(r.delta_angles.x=e.readShort()*(180/32768),r.delta_angles.y=e.readShort()*(180/32768),r.delta_angles.z=e.readShort()*(180/32768)),n&128&&(r.viewoffset.x=(e.readByte()<<24>>24)*.25,r.viewoffset.y=(e.readByte()<<24>>24)*.25,r.viewoffset.z=(e.readByte()<<24>>24)*.25),n&256&&(r.viewangles.x=e.readShort()*(360/65536),r.viewangles.y=e.readShort()*(360/65536),r.viewangles.z=e.readShort()*(360/65536)),n&512&&(r.kick_angles.x=(e.readByte()<<24>>24)*.25,r.kick_angles.y=(e.readByte()<<24>>24)*.25,r.kick_angles.z=(e.readByte()<<24>>24)*.25),n&4096&&(r.gun_index=e.readByte()),n&8192&&(r.gun_frame=e.readByte(),r.gun_offset.x=(e.readByte()<<24>>24)*.25,r.gun_offset.y=(e.readByte()<<24>>24)*.25,r.gun_offset.z=(e.readByte()<<24>>24)*.25,r.gun_angles.x=(e.readByte()<<24>>24)*.25,r.gun_angles.y=(e.readByte()<<24>>24)*.25,r.gun_angles.z=(e.readByte()<<24>>24)*.25),n&1024&&(r.blend[0]=e.readByte(),r.blend[1]=e.readByte(),r.blend[2]=e.readByte(),r.blend[3]=e.readByte()),n&2048&&(r.fov=e.readByte()),n&16384&&(r.rdflags=e.readByte()),n&32768&&(r.watertype=e.readByte());let i=e.readLong();for(let a=0;a<32;a++)i&1<<a&&(r.stats[a]=e.readShort());return r}};var _c=class{constructor(e=0){this.protocolVersion=e}translateCommand(e){return e}parseServerData(e){let r=e.readLong(),n=e.readLong(),i=e.readByte(),a=e.readString(),o=e.readShort(),s=e.readString();return{protocol:r,serverCount:n,attractLoop:i,gameDir:a,playerNum:o,levelName:s}}parseEntityBits(e){let r=e.readByte();r&gr&&(r|=e.readByte()<<8),r&br&&(r|=e.readByte()<<16),r&xr&&(r|=e.readByte()<<24);let n;return r&Zn?n=e.readShort():n=e.readByte(),{number:n,bits:r,bitsHigh:0}}parseDelta(e,r,n,i,a,o){r.number=e.number,r.modelindex=e.modelindex,r.modelindex2=e.modelindex2,r.modelindex3=e.modelindex3,r.modelindex4=e.modelindex4,r.frame=e.frame,r.skinnum=e.skinnum,r.effects=e.effects,r.renderfx=e.renderfx,r.origin.x=e.origin.x,r.origin.y=e.origin.y,r.origin.z=e.origin.z,r.old_origin.x=e.origin.x,r.old_origin.y=e.origin.y,r.old_origin.z=e.origin.z,r.angles.x=e.angles.x,r.angles.y=e.angles.y,r.angles.z=e.angles.z,r.sound=e.sound,r.event=e.event,r.solid=e.solid,r.number=n,r.bits=i,i&vt&&(r.modelindex=o.readByte()),i&St&&(r.modelindex2=o.readByte()),i&wt&&(r.modelindex3=o.readByte()),i&Mt&&(r.modelindex4=o.readByte()),i&gt&&(r.frame=o.readByte()),i&_t&&(r.frame=o.readShort()),i&He&&i&We?r.skinnum=o.readLong():i&He?r.skinnum=o.readByte():i&We&&(r.skinnum=o.readShort()),i&Ne&&i&Ge?r.effects=o.readLong():i&Ne?r.effects=o.readByte():i&Ge&&(r.effects=o.readShort()),i&Ue&&i&Ve?r.renderfx=o.readLong():i&Ue?r.renderfx=o.readByte():i&Ve&&(r.renderfx=o.readShort()),i&ft&&(r.origin.x=o.readShort()*.125),i&ht&&(r.origin.y=o.readShort()*.125),i&bt&&(r.origin.z=o.readShort()*.125),i&xt&&(r.angles.x=o.readByte()*(360/256)),i&mt&&(r.angles.y=o.readByte()*(360/256)),i&pt&&(r.angles.z=o.readByte()*(360/256)),i&sr&&(r.old_origin.x=o.readShort()*.125,r.old_origin.y=o.readShort()*.125,r.old_origin.z=o.readShort()*.125),i&At&&(r.sound=o.readByte()),i&yt?r.event=o.readByte():r.event=0,i&Et&&(r.solid=o.readShort())}parsePlayerState(e){let r=hr(),n=e.readShort();n&1&&(r.pm_type=e.readByte()),n&2&&(r.origin.x=e.readShort()*.125,r.origin.y=e.readShort()*.125,r.origin.z=e.readShort()*.125),n&4&&(r.velocity.x=e.readShort()*.125,r.velocity.y=e.readShort()*.125,r.velocity.z=e.readShort()*.125),n&8&&(r.pm_time=e.readByte()),n&16&&(r.pm_flags=e.readByte()),n&32&&(r.gravity=e.readShort()),n&64&&(r.delta_angles.x=e.readShort()*(180/32768),r.delta_angles.y=e.readShort()*(180/32768),r.delta_angles.z=e.readShort()*(180/32768)),n&128&&(r.viewoffset.x=(e.readByte()<<24>>24)*.25,r.viewoffset.y=(e.readByte()<<24>>24)*.25,r.viewoffset.z=(e.readByte()<<24>>24)*.25),n&256&&(r.viewangles.x=e.readShort()*(360/65536),r.viewangles.y=e.readShort()*(360/65536),r.viewangles.z=e.readShort()*(360/65536)),n&512&&(r.kick_angles.x=(e.readByte()<<24>>24)*.25,r.kick_angles.y=(e.readByte()<<24>>24)*.25,r.kick_angles.z=(e.readByte()<<24>>24)*.25),n&4096&&(r.gun_index=e.readByte()),n&8192&&(r.gun_frame=e.readByte(),r.gun_offset.x=(e.readByte()<<24>>24)*.25,r.gun_offset.y=(e.readByte()<<24>>24)*.25,r.gun_offset.z=(e.readByte()<<24>>24)*.25,r.gun_angles.x=(e.readByte()<<24>>24)*.25,r.gun_angles.y=(e.readByte()<<24>>24)*.25,r.gun_angles.z=(e.readByte()<<24>>24)*.25),n&1024&&(r.blend[0]=e.readByte(),r.blend[1]=e.readByte(),r.blend[2]=e.readByte(),r.blend[3]=e.readByte()),n&2048&&(r.fov=e.readByte()),n&16384&&(r.rdflags=e.readByte()),n&32768&&(r.watertype=e.readByte());let i=e.readLong();for(let a=0;a<32;a++)i&1<<a&&(r.stats[a]=e.readShort());return r}};var ws=class{constructor(){this.protocolVersion=0}translateCommand(e){return e===7?T.serverdata:e===12?T.serverdata:e===13?T.serverdata:e===T.stufftext?T.stufftext:T.bad}parseServerData(e){let r=e.readLong();if(r===Dr){let n=e.readLong(),i=e.readByte(),a=e.readByte(),o=e.readString(),s=e.readShort();if(s===-2){let l=e.readShort();for(let d=0;d<l;d++)e.readShort();s=0}else s===-1&&(s=-1);let c=e.readString();return{protocol:r,serverCount:n,spawnCount:n,attractLoop:0,gameDir:o,playerNum:s,levelName:c,tickRate:a,demoType:i}}else{let n=e.readLong(),i=e.readByte(),a=e.readString(),o=e.readShort(),s=e.readString();return{protocol:r,serverCount:n,attractLoop:i,gameDir:a,playerNum:o,levelName:s}}}parseEntityBits(e){throw new Error("Bootstrap handler cannot parse entities")}parseDelta(e,r,n,i,a,o){throw new Error("Bootstrap handler cannot parse delta")}parsePlayerState(e){throw new Error("Bootstrap handler cannot parse player state")}};function ep(t){return t===0?new ws:t===Dr?new vc:t===34?new xc:new _c(t)}var tp=1,VS=2,GS=128,Ku=class extends Vn{constructor(r){super(0);this.stream=r}readByte(){return this.stream.readByte()}readShort(){return this.stream.readShort()}readLong(){return this.stream.readLong()}readFloat(){return this.stream.readFloat()}readString(){return this.stream.readString()}readData(r){return this.stream.readData(r)}hasBytes(r){return this.stream.hasMore()}available(){return this.stream.getRemaining()}getReadPosition(){return this.stream.getPosition()}peekBytes(r){throw new Error("peekBytes not implemented for BinaryStreamAdapter")}},ct=class t{constructor(e,r,n=!1){this.strictMode=!1;this.errorCount=0;this.isDemo=tp;e instanceof mn?this.stream=new Ku(e):this.stream=e,this.handler=r,this.strictMode=n,this.protocolHandler=new ws}setProtocolVersion(e){this.protocolHandler.protocolVersion!==e&&(this.protocolHandler=ep(e))}getProtocolVersion(){return this.protocolHandler.protocolVersion}getErrorCount(){return this.errorCount}parseMessage(){for(;this.stream.hasBytes(1);){let e=this.stream.getReadPosition(),r=-1;try{if(r=this.stream.readByte(),r===-1)break;let n=r,i=this.protocolHandler.translateCommand(r);switch(i){case T.bad:if(n===0)return;let a=`Unknown server command: ${n} (translated: ${i}) at offset ${e} (Protocol: ${this.getProtocolVersion()})`;if(this.strictMode)throw new Error(a);console.warn(a),this.errorCount++;return;case T.nop:break;case T.disconnect:this.handler?.onDisconnect&&this.handler.onDisconnect();break;case T.reconnect:this.handler?.onReconnect&&this.handler.onReconnect();break;case T.print:this.parsePrint();break;case T.serverdata:this.parseServerData();break;case T.configstring:this.parseConfigString();break;case T.spawnbaseline:this.parseSpawnBaseline();break;case T.centerprint:this.parseCenterPrint();break;case T.download:this.parseDownload();break;case T.frame:this.parseFrame();break;case T.packetentities:this.parsePacketEntities(!1);break;case T.deltapacketentities:this.parsePacketEntities(!0);break;case T.playerinfo:this.parsePlayerState();break;case T.stufftext:this.parseStuffText();break;case T.layout:this.parseLayout();break;case T.inventory:this.parseInventory();break;case T.sound:this.parseSound();break;case T.muzzleflash:this.parseMuzzleFlash();break;case T.muzzleflash2:this.parseMuzzleFlash2();break;case T.temp_entity:this.parseTempEntity();break;case T.splitclient:this.parseSplitClient();break;case T.configblast:this.parseConfigBlast();break;case T.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case T.level_restart:this.handler?.onLevelRestart&&this.handler.onLevelRestart();break;case T.damage:this.parseDamage();break;case T.locprint:this.parseLocPrint();break;case T.fog:this.parseFog();break;case T.waitingforplayers:this.parseWaitingForPlayers();break;case T.bot_chat:this.parseBotChat();break;case T.poi:this.parsePoi();break;case T.help_path:this.parseHelpPath();break;case T.muzzleflash3:this.parseMuzzleFlash3();break;case T.achievement:this.parseAchievement();break;default:let o=`Unknown server command: ${n} (translated: ${i}) at offset ${e}`;if(this.strictMode)throw new Error(o);console.warn(o),this.errorCount++;return}}catch(n){let i=n.message;if(i==="Buffer underflow"||i.includes("StreamingBuffer")){try{this.stream.setReadPosition(e)}catch(o){console.error("Failed to rollback stream position",o)}return}let a=`offset ${e}, cmd ${r}, protocol ${this.getProtocolVersion()}`;if(console.warn(`Error parsing command ${r} (${a}): ${i}`),this.errorCount++,this.strictMode)throw n;return}}}readAngle16(){return this.stream.readShort()*(360/65536)}readCoord(){return this.stream.readShort()*.125}readAngle(){return this.stream.readByte()*(360/256)}readPos(e){e.x=this.stream.readShort()*.125,e.y=this.stream.readShort()*.125,e.z=this.stream.readShort()*.125}readDir(e){let r=this.stream.readByte();if(r>=or.length)e.x=0,e.y=0,e.z=0;else{let n=or[r];e.x=n[0],e.y=n[1],e.z=n[2]}}parsePrint(){let e=this.stream.readByte(),r=this.stream.readString();this.handler&&this.handler.onPrint(e,r)}parseStuffText(){let e=this.stream.readString();this.handler&&this.handler.onStuffText(e)}parseLayout(){let e=this.stream.readString();this.handler&&this.handler.onLayout(e)}parseCenterPrint(){let e=this.stream.readString();this.handler&&this.handler.onCenterPrint(e)}parseServerData(){let e=this.protocolHandler.parseServerData(this.stream);this.setProtocolVersion(e.protocol),this.handler&&this.handler.onServerData(e.protocol,e.serverCount,e.attractLoop,e.gameDir,e.playerNum,e.levelName,e.tickRate,e.demoType),e.protocol===Dr?this.isDemo=e.demoType??tp:this.isDemo=e.attractLoop}parseConfigString(){let e=this.stream.readShort(),r=this.stream.readString();this.handler&&this.handler.onConfigString(e,r)}parseSplitClient(){let e=this.stream.readByte();this.handler?.onSplitClient&&this.handler.onSplitClient(e)}parseConfigBlast(){let e=this.stream.readShort(),r=this.stream.readShort(),n=this.stream.readData(e);try{let i=Xu.inflate(n),a=new mn(i.buffer);for(;a.hasMore();){let o=a.readUShort(),s=a.readString();this.handler&&this.handler.onConfigString(o,s)}}catch(i){console.error("svc_configblast error",i)}}parseSpawnBaselineBlast(){let e=this.stream.readShort(),r=this.stream.readShort(),n=this.stream.readData(e);try{let i=Xu.inflate(n),a=new mn(i.buffer),o=new t(a,this.handler,this.strictMode);for(o.setProtocolVersion(this.getProtocolVersion());a.hasMore();)o.parseSpawnBaseline()}catch(i){console.error("svc_spawnbaselineblast error",i)}}parseLocPrint(){let e=this.stream.readByte(),r=this.stream.readString(),n=this.stream.readByte(),i=[];for(let a=0;a<n;a++)i.push(this.stream.readString());this.handler?.onLocPrint&&this.handler.onLocPrint(e,r,i)}parseWaitingForPlayers(){let e=this.stream.readByte();this.handler?.onWaitingForPlayers&&this.handler.onWaitingForPlayers(e)}parseBotChat(){let e=this.stream.readString(),r=this.stream.readShort(),n=this.stream.readString();this.handler?.onBotChat&&this.handler.onBotChat(n)}parsePoi(){let e=this.stream.readShort(),r=this.stream.readShort(),n={x:0,y:0,z:0};this.readPos(n);let i=this.stream.readShort(),a=this.stream.readByte(),o=this.stream.readByte();this.handler?.onPoi&&this.handler.onPoi(o,n)}parseHelpPath(){let e=this.stream.readByte(),r={x:0,y:0,z:0};this.readPos(r);let n={x:0,y:0,z:0};this.readDir(n),this.handler?.onHelpPath&&this.handler.onHelpPath(r)}parseAchievement(){let e=this.stream.readString();this.handler?.onAchievement&&this.handler.onAchievement(e)}parseDownload(){let e=this.stream.readShort(),r=this.stream.readByte(),n;e>0&&(n=this.stream.readData(e)),this.handler&&this.handler.onDownload(e,r,n)}parseInventory(){let r=new Array(256);for(let n=0;n<256;n++)r[n]=this.stream.readShort();this.handler&&this.handler.onInventory(r)}parseSound(){let e=this.stream.readByte(),r=this.stream.readByte(),n,i,a,o,s;if(e&1&&(n=this.stream.readByte()),e&2&&(i=this.stream.readByte()),e&16&&(a=this.stream.readByte()),e&8&&(o=this.stream.readShort()),e&4){let c={x:0,y:0,z:0};this.readPos(c),s=c}this.handler&&this.handler.onSound(e,r,n,i,a,o,s)}parseMuzzleFlash(){let e=this.stream.readShort(),r=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(e,r)}parseMuzzleFlash2(){let e=this.stream.readShort(),r=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(e,r)}parseMuzzleFlash3(){let e=this.stream.readShort(),r=this.stream.readShort();this.handler?.onMuzzleFlash3&&this.handler.onMuzzleFlash3(e,r)}parseFog(){let e=this.stream.readByte();if(e&128){let n=this.stream.readByte();e|=n<<8}let r={};e&1&&(r.density=this.stream.readFloat(),r.skyfactor=this.stream.readByte()),e&2&&(r.red=this.stream.readByte()),e&4&&(r.green=this.stream.readByte()),e&8&&(r.blue=this.stream.readByte()),e&16&&(r.time=this.stream.readShort()),e&32&&(r.hf_falloff=this.stream.readFloat()),e&64&&(r.hf_density=this.stream.readFloat()),e&256&&(r.hf_start_r=this.stream.readByte()),e&512&&(r.hf_start_g=this.stream.readByte()),e&1024&&(r.hf_start_b=this.stream.readByte()),e&2048&&(r.hf_start_dist=this.stream.readLong()),e&4096&&(r.hf_end_r=this.stream.readByte()),e&8192&&(r.hf_end_g=this.stream.readByte()),e&16384&&(r.hf_end_b=this.stream.readByte()),e&32768&&(r.hf_end_dist=this.stream.readLong()),this.handler?.onFog&&this.handler.onFog(r)}parseDamage(){let e=this.stream.readByte(),r=[];for(let n=0;n<e;n++){let i=this.stream.readByte(),a={x:0,y:0,z:0};this.readDir(a);let o=i&31,s=(i&32)!==0,c=(i&64)!==0,l=(i&128)!==0;r.push({damage:o,health:s,armor:c,power:l,dir:a})}this.handler?.onDamage&&this.handler.onDamage(r)}parseTempEntity(){let e=this.stream.readByte(),r={x:0,y:0,z:0},n={x:0,y:0,z:0},i={x:0,y:0,z:0},a,o,s,c,l;switch(e){case D.EXPLOSION1:case D.EXPLOSION2:case D.ROCKET_EXPLOSION:case D.GRENADE_EXPLOSION:case D.ROCKET_EXPLOSION_WATER:case D.GRENADE_EXPLOSION_WATER:case D.BFG_EXPLOSION:case D.BFG_BIGEXPLOSION:case D.BOSSTPORT:case D.PLASMA_EXPLOSION:case D.PLAIN_EXPLOSION:case D.CHAINFIST_SMOKE:case D.TRACKER_EXPLOSION:case D.TELEPORT_EFFECT:case D.DBALL_GOAL:case D.NUKEBLAST:case D.WIDOWSPLASH:case D.EXPLOSION1_BIG:case D.EXPLOSION1_NP:this.readPos(r);break;case D.GUNSHOT:case D.BLOOD:case D.BLASTER:case D.SHOTGUN:case D.SPARKS:case D.BULLET_SPARKS:case D.SCREEN_SPARKS:case D.SHIELD_SPARKS:case D.BLASTER2:case D.FLECHETTE:case D.MOREBLOOD:case D.ELECTRIC_SPARKS:case D.HEATBEAM_SPARKS:case D.HEATBEAM_STEAM:this.readPos(r),this.readDir(i);break;case D.SPLASH:case D.LASER_SPARKS:case D.WELDING_SPARKS:case D.TUNNEL_SPARKS:a=this.stream.readByte(),this.readPos(r),this.readDir(i),o=this.stream.readByte();break;case D.BLUEHYPERBLASTER:this.getProtocolVersion()>=32?(this.readPos(r),this.readPos(n)):(this.readPos(r),this.readDir(i));break;case D.GREENBLOOD:this.getProtocolVersion()>=32?(this.readPos(r),this.readDir(i)):(this.readPos(r),this.readPos(n));break;case D.RAILTRAIL:case D.BUBBLETRAIL:case D.BFG_LASER:case D.DEBUGTRAIL:case D.BUBBLETRAIL2:this.readPos(r),this.readPos(n);break;case D.PARASITE_ATTACK:case D.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.readPos(r),this.readPos(n);break;case D.GRAPPLE_CABLE:s=this.stream.readShort(),this.readPos(r),this.readPos(n),this.readPos(i);break;case D.LIGHTNING:c=this.stream.readShort(),l=this.stream.readShort(),this.readPos(r),this.readPos(n);break;case D.FLASHLIGHT:this.readPos(r),s=this.stream.readShort();break;case D.FORCEWALL:this.readPos(r),this.readPos(n),o=this.stream.readByte();break;case D.STEAM:let d=this.stream.readShort();a=this.stream.readByte(),this.readPos(r),this.readDir(i),o=this.stream.readByte(),this.stream.readShort(),d!==-1&&this.stream.readLong();break;case D.WIDOWBEAMOUT:this.stream.readShort();case D.HEATBEAM:case D.MONSTER_HEATBEAM:s=this.stream.readShort(),this.readPos(r),this.readPos(n),this.readDir(i);break}this.handler&&this.handler.onTempEntity(e,r,n,i,a,o,s,c,l)}parseSpawnBaseline(){let e=this.protocolHandler.parseEntityBits(this.stream),r=kr();this.protocolHandler.parseDelta(kr(),r,e.number,e.bits,e.bitsHigh,this.stream),this.handler&&this.handler.onSpawnBaseline(r)}parseFrame(){let e=this.stream.readLong(),r=this.stream.readLong(),n=0;this.getProtocolVersion()!==26&&this.getProtocolVersion()!==25&&(n=this.stream.readByte());let i=this.stream.readByte(),a=this.stream.readData(i),o=this.stream.readByte();if(o=this.protocolHandler.translateCommand(o),o!==T.playerinfo){if(this.strictMode)throw new Error(`Expected svc_playerinfo after svc_frame, got ${o}`);return}let s=this.parsePlayerState(),c=this.stream.readByte();if(c=this.protocolHandler.translateCommand(c),c!==T.packetentities&&c!==T.deltapacketentities){if(this.strictMode)throw new Error(`Expected svc_packetentities after svc_playerinfo, got ${c}`);return}let l=this.collectPacketEntities();if(this.isDemo===GS){let d=this.stream.readByte();for(let f=0;f<d;f++)this.stream.readByte()}this.isDemo===VS&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:e,deltaFrame:r,surpressCount:n,areaBytes:i,areaBits:a,playerState:s,packetEntities:{delta:!0,entities:l}})}parsePlayerState(){return this.protocolHandler.parsePlayerState(this.stream)}parsePacketEntities(e){let r=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:hr(),packetEntities:{delta:e,entities:r}})}collectPacketEntities(){let e=[];for(;;){let r=this.protocolHandler.parseEntityBits(this.stream);if(r.bits&Xa){if(r.number===0)break;continue}let n=kr();if(r.number===0)break;this.protocolHandler.parseDelta(kr(),n,r.number,r.bits,r.bitsHigh,this.stream),e.push(n)}return e}};var Yu=(d=>(d.WeaponFire="weapon_fire",d.DamageDealt="damage_dealt",d.DamageReceived="damage_received",d.Pickup="pickup",d.Death="death",d.Kill="kill",d.Spawn="spawn",d.PlayerInfo="player_info",d.Chat="chat",d.Objective="objective",d))(Yu||{});var Ba=class{constructor(e){this.events=[];this.summary={totalKills:0,totalDeaths:0,damageDealt:0,damageReceived:0,weaponUsage:new Map};this.header=null;this.configStrings=new Map;this.serverInfo={};this.statistics=null;this.playerStats=new Map;this.weaponStats=new Map;this.activeEntities=new Set;this.buffer=e}analyze(){let e=new fr(this.buffer),r=-1,n=0,i=.1,a=0,o={onServerData:(s,c,l,d,f,u,h,m)=>{a=s,this.header={protocolVersion:s,gameDir:d,levelName:u,playerNum:f,serverCount:c,spawnCount:c,tickRate:h,demoType:m},h&&h>0&&(i=1/h)},onConfigString:(s,c)=>{this.configStrings.set(s,c),s===0&&this.parseServerInfo(c)},onSpawnBaseline:s=>{},onFrame:s=>{let c=new Set;if(s.packetEntities&&s.packetEntities.entities)for(let l of s.packetEntities.entities)c.add(l.number),this.activeEntities.has(l.number)||this.recordEvent({type:"spawn",frame:r,time:n,entityId:l.number,position:{x:l.origin.x,y:l.origin.y,z:l.origin.z},description:`Entity ${l.number} spawned`});this.activeEntities=c,s.playerState&&this.header},onPrint:(s,c)=>{let l=c.replace(/\n/g," ").trim();l.includes("died")||l.includes("killed")||l.includes("suicide")?(this.summary.totalDeaths++,this.recordEvent({type:"death",frame:r,time:n,description:l})):l.startsWith("You got the ")?this.recordEvent({type:"pickup",frame:r,time:n,description:l}):(s===3||s===2)&&this.recordEvent({type:"chat",frame:r,time:n,description:l,data:{level:s}})},onCenterPrint:s=>{this.recordEvent({type:"objective",frame:r,time:n,description:s.trim()})},onStuffText:()=>{},onSound:()=>{},onTempEntity:()=>{},onLayout:()=>{},onInventory:()=>{},onMuzzleFlash:(s,c)=>{this.handleWeaponFire(s,c,r,n)},onMuzzleFlash2:(s,c)=>{this.handleWeaponFire(s,c,r,n)},onMuzzleFlash3:(s,c)=>{this.handleWeaponFire(s,c,r,n)},onDisconnect:()=>{},onReconnect:()=>{},onDownload:()=>{},onDamage:s=>{for(let c of s)if(this.recordEvent({type:"damage_received",frame:r,time:n,value:c.damage,position:c.dir,description:`Took ${c.damage} damage`}),this.summary.damageReceived+=c.damage,this.header){let l=this.getOrCreatePlayerStats(this.header.playerNum);l.damageReceived+=c.damage}}};for(;e.hasMore();){let s=e.readNextBlock();if(!s)break;r++,n=r*i;let c=new ct(s.data,o);c.setProtocolVersion(a),c.parseMessage(),a=c.getProtocolVersion()}return this.statistics={duration:n,frameCount:r+1,averageFps:(r+1)/(n||1),mapName:this.header?.levelName||"unknown",playerCount:1},{events:this.events,summary:this.summary,header:this.header,configStrings:this.configStrings,serverInfo:this.serverInfo,statistics:this.statistics,playerStats:this.playerStats,weaponStats:this.weaponStats}}handleWeaponFire(e,r,n,i){this.recordEvent({type:"weapon_fire",frame:n,time:i,entityId:e,value:r,description:`Weapon ${r} fired by ${e}`});let a=this.summary.weaponUsage.get(r)||0;this.summary.weaponUsage.set(r,a+1);let o=this.getOrCreateWeaponStat(e,r);o.shotsFired++}recordEvent(e){this.events.push(e)}parseServerInfo(e){let r=e.split("\\");for(let n=1;n<r.length;n+=2)n+1<r.length&&(this.serverInfo[r[n]]=r[n+1])}getOrCreatePlayerStats(e){let r=this.playerStats.get(e);return r||(r={kills:0,deaths:0,damageDealt:0,damageReceived:0,suicides:0},this.playerStats.set(e,r)),r}getOrCreateWeaponStat(e,r){let n=this.weaponStats.get(e);n||(n=[],this.weaponStats.set(e,n));let i=n.find(a=>a.weaponId===r);return i||(i={weaponId:r,shotsFired:0,hits:0,kills:0},n.push(i)),i}};var $u=(i=>(i[i.FirstPerson=0]="FirstPerson",i[i.ThirdPerson=1]="ThirdPerson",i[i.Free=2]="Free",i[i.Follow=3]="Follow",i))($u||{});var Sc=(i=>(i[i.Stopped=0]="Stopped",i[i.Playing=1]="Playing",i[i.Paused=2]="Paused",i[i.Finished=3]="Finished",i))(Sc||{}),WS=()=>({onServerData:()=>{},onConfigString:()=>{},onSpawnBaseline:()=>{},onFrame:()=>{},onCenterPrint:()=>{},onStuffText:()=>{},onPrint:()=>{},onSound:()=>{},onTempEntity:()=>{},onLayout:()=>{},onInventory:()=>{},onMuzzleFlash:()=>{},onMuzzleFlash2:()=>{},onDisconnect:()=>{},onReconnect:()=>{},onDownload:()=>{}}),Ms=class{constructor(){this.reader=null;this.buffer=null;this.state=0;this.playbackSpeed=1;this.currentProtocolVersion=0;this.currentFrameIndex=-1;this.lastFrameData=null;this.accumulatedTime=0;this.frameDuration=100;this.snapshotInterval=100;this.snapshots=new Map;this.cachedEvents=null;this.cachedSummary=null;this.cachedHeader=null;this.cachedConfigStrings=null;this.cachedServerInfo=null;this.cachedStatistics=null;this.cachedPlayerStats=null;this.cachedWeaponStats=null;this.tracker=null;this.cameraMode=0;this.thirdPersonDistance=80;this.thirdPersonOffset={x:0,y:0,z:0}}setHandler(e){this.handler=e}setCallbacks(e){this.callbacks=e}loadDemo(e){this.buffer=e,this.reader=new fr(e),this.transitionState(0),this.accumulatedTime=0,this.currentProtocolVersion=0,this.currentFrameIndex=-1,this.snapshots.clear(),this.lastFrameData=null,this.cachedEvents=null,this.cachedSummary=null,this.cachedHeader=null,this.cachedConfigStrings=null,this.cachedServerInfo=null,this.cachedStatistics=null,this.cachedPlayerStats=null,this.cachedWeaponStats=null}play(){this.reader&&this.state!==1&&this.transitionState(1)}pause(){this.state===1&&this.transitionState(2)}stop(){this.transitionState(0),this.reader&&this.reader.reset(),this.accumulatedTime=0,this.currentProtocolVersion=0,this.currentFrameIndex=-1,this.lastFrameData=null}transitionState(e){this.state!==e&&(this.state=e,this.callbacks?.onPlaybackStateChange&&this.callbacks.onPlaybackStateChange(e))}setFrameDuration(e){this.frameDuration=e}setSpeed(e){this.playbackSpeed=Math.max(.1,Math.min(e,16))}getSpeed(){return this.playbackSpeed}getPlaybackSpeed(){return this.playbackSpeed}getInterpolationFactor(){return this.frameDuration<=0?0:Math.max(0,Math.min(1,this.accumulatedTime/this.frameDuration))}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,this.callbacks?.onTimeUpdate&&this.callbacks.onTimeUpdate(this.getCurrentTime())}}stepForward(){this.reader&&(this.processNextFrame(),this.callbacks?.onTimeUpdate&&this.callbacks.onTimeUpdate(this.getCurrentTime()))}stepBackward(){this.reader&&this.currentFrameIndex>0&&this.seek(this.currentFrameIndex-1)}seekToTime(e){let r=this.timeToFrame(e);this.seek(r)}seekToFrame(e){this.seek(e)}frameToTime(e){return e*this.frameDuration/1e3}timeToFrame(e){return Math.floor(e*1e3/this.frameDuration)}playFrom(e){if(e.type==="frame")this.seek(e.frame);else if(e.type==="time")this.seekToTime(e.seconds);else throw new Error(`Invalid offset type: ${e.type}`);this.play()}playRange(e,r){let n=e.type==="frame"?e.frame:this.timeToFrame(e.seconds),i=r.type==="frame"?r.frame:this.timeToFrame(r.seconds),a=this.getTotalFrames(),o=Math.max(0,a-1);if(n<0)throw new Error(`Invalid start offset: ${n}`);if(i<n)throw new Error(`End offset (${i}) cannot be before start offset (${n})`);this.playFrom(e);let s=this.callbacks?.onFrameUpdate,c={...this.callbacks,onFrameUpdate:l=>{s&&s(l),this.currentFrameIndex>=i&&(this.pause(),this.callbacks===c&&this.setCallbacks({...this.callbacks,onFrameUpdate:s}),this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete())}};this.setCallbacks(c)}seek(e){if(!this.reader)return;let r=this.getTotalFrames();if(r>0&&e>=r&&(e=r-1),e<0&&(e=0),e===this.currentFrameIndex+1){this.processNextFrame(),this.callbacks?.onSeekComplete&&this.callbacks.onSeekComplete();return}if(e===this.currentFrameIndex){this.callbacks?.onSeekComplete&&this.callbacks.onSeekComplete();return}let n=-1,i=null;if(e>this.currentFrameIndex&&this.currentFrameIndex!==-1&&(n=this.currentFrameIndex),this.callbacks?.onRestoreSnapshot)for(let[a,o]of this.snapshots)a<=e&&a>n&&(n=a,i=o);for(n===-1&&this.currentFrameIndex>e?(this.reader.reset(),this.currentFrameIndex=-1,this.currentProtocolVersion=0):n===-1&&(this.reader.reset(),this.currentFrameIndex=-1,this.currentProtocolVersion=0),i&&this.callbacks?.onRestoreSnapshot&&(this.callbacks.onRestoreSnapshot(i),this.reader.seekToMessage(n+1)?this.currentFrameIndex=n:(this.reader.reset(),this.currentFrameIndex=-1,this.currentProtocolVersion=0));this.currentFrameIndex<e&&(this.callbacks?.onCaptureSnapshot&&(this.currentFrameIndex+1)%this.snapshotInterval,!!this.processNextFrame()););this.accumulatedTime=0,this.callbacks?.onSeekComplete&&this.callbacks.onSeekComplete(),this.callbacks?.onTimeUpdate&&this.callbacks.onTimeUpdate(this.getCurrentTime())}processNextFrame(){if(!this.reader||!this.reader.hasMore())return this.transitionState(3),this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),!1;let e=this.reader.readNextBlock();if(!e)return this.transitionState(3),this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),!1;this.currentFrameIndex++,this.tracker&&(this.tracker.setCurrentFrame(this.currentFrameIndex),this.tracker.setCurrentTime(this.getCurrentTime()));try{let r={...this.handler||WS(),onFrame:i=>{this.lastFrameData=i,this.handler?.onFrame&&this.handler.onFrame(i),this.callbacks?.onFrameUpdate&&this.callbacks.onFrameUpdate(i)}},n=new ct(e.data,r);if(n.setProtocolVersion(this.currentProtocolVersion),n.parseMessage(),this.currentProtocolVersion=n.getProtocolVersion(),this.callbacks?.onCaptureSnapshot&&this.currentFrameIndex%this.snapshotInterval===0&&this.currentFrameIndex>0){let i=this.callbacks.onCaptureSnapshot(this.currentFrameIndex);i&&this.snapshots.set(this.currentFrameIndex,i)}}catch(r){return console.error("Error processing demo frame",r),this.callbacks?.onPlaybackError&&this.callbacks.onPlaybackError(r instanceof Error?r:new Error(String(r))),!1}return!0}getState(){return this.state}getCurrentTime(){return this.currentFrameIndex<0?this.accumulatedTime:this.currentFrameIndex*this.frameDuration+this.accumulatedTime}getFrameCount(){return this.reader?this.reader.getMessageCount():0}getTotalFrames(){return this.getFrameCount()}getCurrentFrame(){return this.currentFrameIndex<0?0:this.currentFrameIndex}getDuration(){return this.getFrameCount()*this.frameDuration/1e3}getTotalBytes(){return this.reader?this.reader.getProgress().total:0}getProcessedBytes(){return this.reader?this.reader.getOffset():0}getFrameData(e){if(e===this.currentFrameIndex&&this.lastFrameData)return this.lastFrameData;let r=this.state;return this.pause(),this.seek(e),r===1&&this.play(),this.lastFrameData}getFramePlayerState(e){if(e===this.currentFrameIndex&&this.handler?.getPlayerState){let n=this.handler.getPlayerState();if(n)return n}let r=this.getFrameData(e);return r?r.playerState:null}getFrameEntities(e){if(e===this.currentFrameIndex&&this.handler?.getEntities){let r=this.handler.getEntities();if(r)return Array.from(r.values())}if(this.seek(e),this.handler?.getEntities){let r=this.handler.getEntities();return r?Array.from(r.values()):[]}return[]}compareFrames(e,r){let n=this.getFramePlayerState(e),i=this.getFrameEntities(e),a=new Map;i.forEach(d=>a.set(d.number,d));let o=this.getFramePlayerState(r),s=this.getFrameEntities(r),c=new Map;s.forEach(d=>c.set(d.number,d));let l={frameA:e,frameB:r,playerStateDiff:{origin:null,viewangles:null,health:null,ammo:null},entityDiffs:{added:[],removed:[],moved:[]}};n&&o&&((n.origin.x!==o.origin.x||n.origin.y!==o.origin.y||n.origin.z!==o.origin.z)&&(l.playerStateDiff.origin={x:o.origin.x-n.origin.x,y:o.origin.y-n.origin.y,z:o.origin.z-n.origin.z}),n.stats[1]!==o.stats[1]&&(l.playerStateDiff.health=o.stats[1]-n.stats[1]),n.stats[2]!==o.stats[2]&&(l.playerStateDiff.ammo=o.stats[2]-n.stats[2]));for(let[d,f]of c){let u=a.get(d);u?(u.origin.x!==f.origin.x||u.origin.y!==f.origin.y||u.origin.z!==f.origin.z)&&l.entityDiffs.moved.push({id:d,delta:{x:f.origin.x-u.origin.x,y:f.origin.y-u.origin.y,z:f.origin.z-u.origin.z}}):l.entityDiffs.added.push(d)}for(let[d,f]of a)c.has(d)||l.entityDiffs.removed.push(d);return l}getEntityTrajectory(e,r,n){let i=[],a=this.getCurrentFrame();for(this.seek(r);this.getCurrentFrame()<=n&&this.state!==3;){let o=null;if(e===-1){let s=this.getFramePlayerState(this.getCurrentFrame());s&&(o={...s.origin})}else if(this.handler?.getEntities){let s=this.handler.getEntities().get(e);s&&(o={...s.origin})}if(o&&i.push(o),this.getCurrentFrame()===n)break;this.stepForward()}return this.seek(a),i}getEvents(){return this.ensureAnalysis(),this.cachedEvents||[]}getDemoEvents(){return this.getEvents()}filterEvents(e,r){return this.getDemoEvents().filter(i=>!(i.type!==e||r!==void 0&&i.entityId!==r))}getEventSummary(){return this.ensureAnalysis(),this.cachedSummary||{totalKills:0,totalDeaths:0,damageDealt:0,damageReceived:0,weaponUsage:new Map}}getMetadata(){let e=this.getDemoHeader();if(!e)return null;let r=this.getDemoServerInfo(),n="Unknown";return this.cachedConfigStrings,{mapName:e.levelName,playerName:n,serverName:r.hostname,demoVersion:e.protocolVersion,tickRate:e.tickRate||10}}getDemoHeader(){return this.ensureAnalysis(),this.cachedHeader}getDemoConfigStrings(){return this.ensureAnalysis(),this.cachedConfigStrings||new Map}getDemoServerInfo(){return this.ensureAnalysis(),this.cachedServerInfo||{}}getDemoStatistics(){return this.ensureAnalysis(),this.cachedStatistics}getPlayerStatistics(e){return this.ensureAnalysis(),this.cachedPlayerStats?.get(e)||null}getWeaponStatistics(e){return this.ensureAnalysis(),this.cachedWeaponStats?.get(e)||null}ensureAnalysis(){if(!this.cachedEvents&&this.buffer){let r=new Ba(this.buffer).analyze();this.cachedEvents=r.events,this.cachedSummary=r.summary,this.cachedHeader=r.header,this.cachedConfigStrings=r.configStrings,this.cachedServerInfo=r.serverInfo,this.cachedStatistics=r.statistics,this.cachedPlayerStats=r.playerStats,this.cachedWeaponStats=r.weaponStats}}setCameraMode(e){this.cameraMode=e}getCameraMode(){return this.cameraMode}setThirdPersonDistance(e){this.thirdPersonDistance=e}setThirdPersonOffset(e){this.thirdPersonOffset=e}async playWithTracking(e,r={}){if(this.tracker=e,e.startTracking(),r.fastForward)try{this.state===0&&this.reader,this.transitionState(1);let n=100,i=async()=>{if(this.state!==1)throw new Error("Playback stopped unexpectedly during fast forward");let a=0;for(;a<n;){if(!this.processNextFrame()){let o=e.stopTracking();return this.tracker=null,this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),o}a++}return await new Promise(o=>setTimeout(o,0)),i()};return await i()}catch(n){throw e.stopTracking(),this.tracker=null,n}else return new Promise((n,i)=>{let a=this.callbacks?.onPlaybackComplete,o=this.callbacks?.onPlaybackError,s=()=>{this.setCallbacks({...this.callbacks,onPlaybackComplete:a,onPlaybackError:o}),this.tracker=null};this.setCallbacks({...this.callbacks,onPlaybackComplete:()=>{let c=e.stopTracking();a&&a(),s(),n(c)},onPlaybackError:c=>{e.stopTracking(),o&&o(c),s(),i(c)}}),this.play()})}async playRangeWithTracking(e,r,n,i={}){this.tracker=n,n.startTracking();let a=e.type==="frame"?e.frame:this.timeToFrame(e.seconds),o=r.type==="frame"?r.frame:this.timeToFrame(r.seconds);if(i.fastForward)try{this.playFrom(e),this.transitionState(1);let s=100,c=async()=>{if(this.state!==1)throw new Error("Playback stopped unexpectedly during fast forward");let l=0;for(;l<s;){if(this.currentFrameIndex>=o||!this.processNextFrame()){let d=n.stopTracking();return this.tracker=null,this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),d}l++}return await new Promise(d=>setTimeout(d,0)),c()};return await c()}catch(s){throw n.stopTracking(),this.tracker=null,s}else return new Promise((s,c)=>{let l=this.callbacks?.onPlaybackComplete,d=this.callbacks?.onPlaybackError,f=()=>{this.setCallbacks({...this.callbacks,onPlaybackComplete:l,onPlaybackError:d}),this.tracker=null};this.setCallbacks({...this.callbacks,onPlaybackComplete:()=>{let u=n.stopTracking();l&&l(),f(),s(u)},onPlaybackError:u=>{n.stopTracking(),d&&d(u),f(),c(u)}}),this.playRange(e,r)})}};var As=class{constructor(){this.isRecording=!1;this.startTime=0;this.frameCount=0;this.filename=null;this.lastMessageSize=-1;this.messageBuffer=new jn(1024*1024)}startRecording(e,r=0){this.isRecording||(this.isRecording=!0,this.filename=e,this.startTime=r,this.frameCount=0,this.messageBuffer.reset(),console.log(`DemoRecorder: Started recording to ${e}`))}recordMessage(e){if(this.isRecording){this.messageBuffer.writeLong(e.byteLength);for(let r=0;r<e.length;r++)this.messageBuffer.writeByte(e[r]);this.frameCount++}}stopRecording(){return this.isRecording?(this.isRecording=!1,this.messageBuffer.writeLong(-1),console.log(`DemoRecorder: Stopped recording. Frames: ${this.frameCount}, Size: ${this.messageBuffer.getOffset()} bytes`),this.messageBuffer.getData()):null}getIsRecording(){return this.isRecording}};var wc=class{constructor(e,r=34){this.writer=e||new jn(new Uint8Array(64*1024)),this.protocol=r}getData(){return this.writer.getData()}getOpcode(e){if(this.protocol===34)switch(e){case T.serverdata:return 13;case T.frame:return 5;case T.playerinfo:return 17;case T.packetentities:return 18;case T.deltapacketentities:return 19;case T.print:return 11;case T.centerprint:return 16;case T.stufftext:return 12;case T.sound:return 10;case T.temp_entity:return 9;case T.configstring:return 14;case T.spawnbaseline:return 15;case T.layout:return 7;case T.inventory:return 6;case T.muzzleflash:return 8;case T.muzzleflash2:return 20}return e}writeCommand(e,r){let n=r??this.protocol;n===34||n===0?this.writer.writeByte(this.getOpcode(e)):this.writer.writeByte(e)}writeServerData(e,r,n,i,a,o){this.writeCommand(T.serverdata),this.writer.writeLong(e),this.writer.writeLong(r),this.writer.writeByte(n),this.writer.writeString(i),this.writer.writeShort(a),this.writer.writeString(o)}writeConfigString(e,r){this.writeCommand(T.configstring),this.writer.writeShort(e),this.writer.writeString(r)}writeStuffText(e){this.writeCommand(T.stufftext),this.writer.writeString(e)}writeCenterPrint(e){this.writeCommand(T.centerprint),this.writer.writeString(e)}writePrint(e,r){this.writeCommand(T.print),this.writer.writeByte(e),this.writer.writeString(r)}writeLayout(e){this.writeCommand(T.layout),this.writer.writeString(e)}writeInventory(e){this.writeCommand(T.inventory);for(let r of e)this.writer.writeShort(r);for(let r=e.length;r<256;r++)this.writer.writeShort(0)}writeMuzzleFlash(e,r){this.writeCommand(T.muzzleflash),this.writer.writeShort(e),this.writer.writeByte(r)}writeMuzzleFlash2(e,r){this.writeCommand(T.muzzleflash2),this.writer.writeShort(e),this.writer.writeByte(r)}writeSound(e,r,n,i,a,o,s,c){this.writeCommand(T.sound),this.writer.writeByte(e),this.writer.writeByte(r),e&1&&this.writer.writeByte(n),e&2&&this.writer.writeByte(i),e&16&&this.writer.writeByte(a),e&8&&this.writer.writeShort(o),e&4&&(this.writer.writeCoord(s.x),this.writer.writeCoord(s.y),this.writer.writeCoord(s.z))}writeTempEntity(e,r,n,i,a,o,s,c,l){this.writeCommand(T.temp_entity),this.writer.writeByte(e),r&&this.writer.writePos(r)}writePlayerState(e){this.writeCommand(T.playerinfo);let r=0;e.pm_type!==0&&(r|=1),(e.origin.x!==0||e.origin.y!==0||e.origin.z!==0)&&(r|=2),(e.velocity.x!==0||e.velocity.y!==0||e.velocity.z!==0)&&(r|=4),e.pm_time!==0&&(r|=8),e.pm_flags!==0&&(r|=16),e.gravity!==0&&(r|=32),(e.delta_angles.x!==0||e.delta_angles.y!==0||e.delta_angles.z!==0)&&(r|=64),(e.viewoffset.x!==0||e.viewoffset.y!==0||e.viewoffset.z!==0)&&(r|=128),(e.viewangles.x!==0||e.viewangles.y!==0||e.viewangles.z!==0)&&(r|=256),(e.kick_angles.x!==0||e.kick_angles.y!==0||e.kick_angles.z!==0)&&(r|=512),e.gun_index!==0&&(r|=4096),(e.gun_frame!==0||e.gun_offset.x!==0||e.gun_offset.y!==0||e.gun_offset.z!==0||e.gun_angles.x!==0||e.gun_angles.y!==0||e.gun_angles.z!==0)&&(r|=8192),(e.blend[0]!==0||e.blend[1]!==0||e.blend[2]!==0||e.blend[3]!==0)&&(r|=1024),e.fov!==0&&(r|=2048),e.rdflags!==0&&(r|=16384),e.watertype!==0&&(r|=32768),this.writer.writeShort(r),r&1&&this.writer.writeByte(e.pm_type),r&2&&(this.writer.writeShort(e.origin.x/.125),this.writer.writeShort(e.origin.y/.125),this.writer.writeShort(e.origin.z/.125)),r&4&&(this.writer.writeShort(e.velocity.x/.125),this.writer.writeShort(e.velocity.y/.125),this.writer.writeShort(e.velocity.z/.125)),r&8&&this.writer.writeByte(e.pm_time),r&16&&this.writer.writeByte(e.pm_flags),r&32&&this.writer.writeShort(e.gravity),r&64&&(this.writer.writeShort(e.delta_angles.x/(180/32768)),this.writer.writeShort(e.delta_angles.y/(180/32768)),this.writer.writeShort(e.delta_angles.z/(180/32768))),r&128&&(this.writer.writeByte(e.viewoffset.x/.25),this.writer.writeByte(e.viewoffset.y/.25),this.writer.writeByte(e.viewoffset.z/.25)),r&256&&(this.writer.writeShort(e.viewangles.x/(360/65536)),this.writer.writeShort(e.viewangles.y/(360/65536)),this.writer.writeShort(e.viewangles.z/(360/65536))),r&512&&(this.writer.writeByte(e.kick_angles.x/.25),this.writer.writeByte(e.kick_angles.y/.25),this.writer.writeByte(e.kick_angles.z/.25)),r&4096&&this.writer.writeByte(e.gun_index),r&8192&&(this.writer.writeByte(e.gun_frame),this.writer.writeByte(e.gun_offset.x/.25),this.writer.writeByte(e.gun_offset.y/.25),this.writer.writeByte(e.gun_offset.z/.25),this.writer.writeByte(e.gun_angles.x/.25),this.writer.writeByte(e.gun_angles.y/.25),this.writer.writeByte(e.gun_angles.z/.25)),r&1024&&(this.writer.writeByte(e.blend[0]),this.writer.writeByte(e.blend[1]),this.writer.writeByte(e.blend[2]),this.writer.writeByte(e.blend[3])),r&2048&&this.writer.writeByte(e.fov),r&16384&&this.writer.writeByte(e.rdflags),r&32768&&this.writer.writeByte(e.watertype);let n=0;for(let i=0;i<32;i++)e.stats[i]!==0&&(n|=1<<i);this.writer.writeLong(n);for(let i=0;i<32;i++)n&1<<i&&this.writer.writeShort(e.stats[i])}writePacketEntities(e,r,n){this.writeCommand(r?T.deltapacketentities:T.packetentities);for(let i of e)this.writeDeltaEntity(kr(),i,!0);this.writer.writeShort(0)}writeFrame(e,r){this.writeCommand(T.frame),this.writer.writeLong(e.serverFrame),this.writer.writeLong(e.deltaFrame),r!==26&&r!==25&&this.writer.writeByte(e.surpressCount),this.writer.writeByte(e.areaBytes),this.writer.writeBytes(e.areaBits),this.writePlayerState(e.playerState),this.writePacketEntities(e.packetEntities.entities,e.packetEntities.delta,r)}writeDeltaEntity(e,r,n){let i=0,a=0;(r.modelindex!==e.modelindex||n)&&(i|=vt),(r.modelindex2!==e.modelindex2||n)&&(i|=St),(r.modelindex3!==e.modelindex3||n)&&(i|=wt),(r.modelindex4!==e.modelindex4||n)&&(i|=Mt),(r.frame!==e.frame||n)&&(r.frame>=256?i|=_t:i|=gt),(r.skinnum!==e.skinnum||n)&&(r.skinnum>=256?i|=We:i|=He),(r.effects!==e.effects||n)&&(r.effects>=256?i|=Ge:i|=Ne),(r.renderfx!==e.renderfx||n)&&(r.renderfx>=256?i|=Ve:i|=Ue),(r.origin.x!==e.origin.x||n)&&r.origin.x!==0&&(i|=ft),(r.origin.y!==e.origin.y||n)&&r.origin.y!==0&&(i|=ht),(r.origin.z!==e.origin.z||n)&&r.origin.z!==0&&(i|=bt),(r.angles.x!==e.angles.x||n)&&r.angles.x!==0&&(i|=xt),(r.angles.y!==e.angles.y||n)&&r.angles.y!==0&&(i|=mt),(r.angles.z!==e.angles.z||n)&&r.angles.z!==0&&(i|=pt),(r.sound!==e.sound||n)&&(i|=At),(r.event!==e.event||n)&&(i|=yt),(r.solid!==e.solid||n)&&(i|=Et),this.protocol!==34&&((r.alpha!==e.alpha||n)&&(i|=yr),(r.scale!==e.scale||n)&&(i|=vr),(r.instanceBits!==e.instanceBits||n)&&(i|=_r),(r.loopVolume!==e.loopVolume||n)&&(i|=Sr),(r.loopAttenuation!==e.loopAttenuation||n)&&(a|=un),(r.owner!==e.owner||n)&&(a|=fn),(r.oldFrame!==e.oldFrame||n)&&(a|=hn)),a>0&&(i|=Ii),i&4278190080&&(i|=xr),i&4294901760&&(i|=br),i&4294967040&&(i|=gr),this.writer.writeByte(i&255),i&gr&&this.writer.writeByte(i>>8&255),i&br&&this.writer.writeByte(i>>16&255),i&xr&&this.writer.writeByte(i>>24&255),i&Ii&&this.writer.writeByte(a&255),r.number>=256?this.writer.writeShort(r.number):this.writer.writeByte(r.number),i&vt&&this.writer.writeByte(r.modelindex),i&St&&this.writer.writeByte(r.modelindex2),i&wt&&this.writer.writeByte(r.modelindex3),i&Mt&&this.writer.writeByte(r.modelindex4),i&gt&&this.writer.writeByte(r.frame),i&_t&&this.writer.writeShort(r.frame),i&He&&this.writer.writeByte(r.skinnum),i&We&&this.writer.writeShort(r.skinnum),i&Ne&&this.writer.writeByte(r.effects),i&Ge&&this.writer.writeShort(r.effects),i&Ue&&this.writer.writeByte(r.renderfx),i&Ve&&this.writer.writeShort(r.renderfx),i&ft&&this.writer.writeCoord(r.origin.x),i&ht&&this.writer.writeCoord(r.origin.y),i&bt&&this.writer.writeCoord(r.origin.z),i&xt&&this.writer.writeAngle(r.angles.x),i&mt&&this.writer.writeAngle(r.angles.y),i&pt&&this.writer.writeAngle(r.angles.z),i&At&&this.writer.writeByte(r.sound??0),i&yt&&this.writer.writeByte(r.event??0),i&Et&&this.writer.writeShort(r.solid),this.protocol!==34&&(i&yr&&this.writer.writeByte(r.alpha*255),i&vr&&this.writer.writeFloat(r.scale),i&_r&&this.writer.writeLong(r.instanceBits),i&Sr&&this.writer.writeByte(r.loopVolume*255),a&un&&this.writer.writeByte(r.loopAttenuation*255),a&fn&&this.writer.writeShort(r.owner),a&hn&&this.writer.writeShort(r.oldFrame))}};var Mc=class{static validate(e,r){if(r&&!r.toLowerCase().endsWith(".dm2"))return{valid:!1,error:"Invalid file extension (expected .dm2)"};if(e.byteLength<5)return{valid:!1,error:"File too small to be a valid demo"};let n=new DataView(e),i=n.getInt32(0,!0);if(i<=0||i>e.byteLength-4)return{valid:!1,error:`Invalid first block length: ${i}`};let a=n.getUint8(4);if(a!==T.serverdata)return{valid:!1,error:`First command is not svc_serverdata (expected ${T.serverdata}, got ${a})`};let o=-1;return i>=5&&(o=n.getInt32(5,!0)),{valid:!0,version:o}}};var Ac=class{constructor(e){this.frames=[];this.configStrings=new Map;this.baselines=new Map;this.currentEntities=new Map;if(e){let r=new Vn(e.byteLength);r.append(new Uint8Array(e)),r.setReadPosition(0),this.parser=new ct(r,this)}else this.parser=new ct(new Vn,this)}extractClip(e,r,n,i){let a=new fr(e.buffer),o=[],s=0,c=r.frame??-1,l=n.frame??Number.MAX_SAFE_INTEGER,d=0,f=0;for(;a.nextBlock();){let p=a.getBlock().data,y=!1,v=-1,x=!1,b={onServerData:S=>{d=S,y=!0,x=!0},onConfigString:()=>{y=!0,x=!0},onSpawnBaseline:()=>{y=!0,x=!0},onFrame:S=>{v=S.serverFrame,x=!0,v>=c&&v<=l&&(y=!0)},onCenterPrint:()=>{x=!0},onStuffText:()=>{x=!0},onPrint:()=>{x=!0},onSound:()=>{x=!0},onTempEntity:()=>{x=!0},onLayout:()=>{x=!0},onInventory:()=>{x=!0},onMuzzleFlash:()=>{x=!0},onMuzzleFlash2:()=>{x=!0},onDisconnect:()=>{x=!0},onReconnect:()=>{x=!0},onDownload:()=>{x=!0}},_=new Vn(p.getLength());_.append(p.readData(p.getLength())),_.setReadPosition(0),p.seek(0);let w=new ct(_,b);d>0&&w.setProtocolVersion(d);try{w.parseMessage()}catch{}if(x||f>=c&&f<=l&&(y=!0),y){let S=new Uint8Array(4);new DataView(S.buffer).setUint32(0,p.getLength(),!0),o.push(S);let L=p.readData(p.getLength());o.push(L),s+=4+L.length}f++}let u=new Uint8Array(4);new DataView(u.buffer).setInt32(0,-1,!0),o.push(u),s+=4;let h=new Uint8Array(s),m=0;for(let g of o)h.set(g,m),m+=g.length;return h}extractDemoRange(e,r,n){return this.extractClip(e,{frame:r},{frame:n})}onServerData(e,r,n,i,a,o){this.serverData={protocol:e,serverCount:r,attractLoop:n,gameDir:i,playerNum:a,levelName:o}}onConfigString(e,r){this.configStrings.set(e,r)}onSpawnBaseline(e){this.baselines.set(e.number,e)}onFrame(e){this.frames.push(e)}onCenterPrint(e){}onStuffText(e){}onPrint(e,r){}onSound(e,r,n,i,a,o,s){}onTempEntity(e,r,n,i,a,o,s,c,l){}onLayout(e){}onInventory(e){}onMuzzleFlash(e,r){}onMuzzleFlash2(e,r){}onDisconnect(){}onReconnect(){}onDownload(e,r,n){}};function rp(t,e){let r=e.bits;t.bits=r,t.number=e.number,r&vt&&(t.modelindex=e.modelindex),r&St&&(t.modelindex2=e.modelindex2),r&wt&&(t.modelindex3=e.modelindex3),r&Mt&&(t.modelindex4=e.modelindex4),r&gt&&(t.frame=e.frame),r&_t&&(t.frame=e.frame),r&He&&(t.skinnum=e.skinnum),r&We&&(t.skinnum=e.skinnum),r&Ne&&(t.effects=e.effects),r&Ge&&(t.effects=e.effects),r&Ue&&(t.renderfx=e.renderfx),r&Ve&&(t.renderfx=e.renderfx),r&ft&&(t.origin.x=e.origin.x),r&ht&&(t.origin.y=e.origin.y),r&bt&&(t.origin.z=e.origin.z),r&xt&&(t.angles.x=e.angles.x),r&mt&&(t.angles.y=e.angles.y),r&pt&&(t.angles.z=e.angles.z),r&sr&&(t.old_origin.x=e.old_origin.x,t.old_origin.y=e.old_origin.y,t.old_origin.z=e.old_origin.z),r&At&&(t.sound=e.sound),r&yt&&(t.event=e.event),r&Et&&(t.solid=e.solid),r&yr&&(t.alpha=e.alpha),r&vr&&(t.scale=e.scale),r&_r&&(t.instanceBits=e.instanceBits),r&Sr&&(t.loopVolume=e.loopVolume)}var qu=(u=>(u.Unknown="unknown",u.BSP="bsp",u.MD2="md2",u.MD3="md3",u.WAL="wal",u.PCX="pcx",u.TGA="tga",u.WAV="wav",u.OGG="ogg",u.TXT="txt",u.CFG="cfg",u.DEM="dem",u))(qu||{}),np={".bsp":"bsp",".md2":"md2",".md3":"md3",".wal":"wal",".pcx":"pcx",".tga":"tga",".wav":"wav",".ogg":"ogg",".txt":"txt",".cfg":"cfg",".dm2":"dem"};function Es(t,e){if(t.length<e.length)return!1;for(let r=0;r<e.length;r++)if(t[r]!==e[r])return!1;return!0}var XS=[73,66,83,80],KS=[73,68,80,50],YS=[73,68,80,51];var $S=[82,73,70,70];var qS=[79,103,103,83];function Zu(t,e){let r=t.slice(t.lastIndexOf(".")).toLowerCase();if(e){if(Es(e,XS))return"bsp";if(Es(e,KS))return"md2";if(Es(e,YS))return"md3";if(Es(e,qS))return"ogg";if(e.length>128&&e[0]===10&&e[1]<6)return"pcx";if(Es(e,$S)&&e.length>=12&&e[8]===87&&e[9]===65&&e[10]===86&&e[11]===69)return"wav"}return np[r]?np[r]:"unknown"}function ju(t){let e=Zu(t);return e==="txt"||e==="cfg"}function ip(t){return!ju(t)}function ZS(t,e,r,n,i){let a=new Uint8ClampedArray(n*i*4),o=e/n,s=r/i;for(let c=0;c<i;c++)for(let l=0;l<n;l++){let d=l*o,f=c*s,u=Math.floor(d),h=Math.floor(f),m=d-u,g=f-h,p=Math.min(u+1,e-1),y=Math.min(h+1,r-1),v=(h*e+u)*4,x=(h*e+p)*4,b=(y*e+u)*4,_=(y*e+p)*4,w=(c*n+l)*4;for(let S=0;S<4;S++){let E=t[v+S],L=t[x+S],M=t[b+S],R=t[_+S],I=E*(1-m)+L*m,B=M*(1-m)+R*m,F=I*(1-g)+B*g;a[w+S]=F}}return a}function jS(t,e,r,n,i,a,o,s,c,l,d){n=Math.floor(n),i=Math.floor(i),a=Math.floor(a),o=Math.floor(o);let f=Math.abs(a-n),u=Math.abs(o-i),h=n<a?1:-1,m=i<o?1:-1,g=f-u;for(;;){if(n>=0&&n<e&&i>=0&&i<r){let y=(i*e+n)*4,v=1-d/255;t[y]=s*(d/255)+t[y]*v,t[y+1]=c*(d/255)+t[y+1]*v,t[y+2]=l*(d/255)+t[y+2]*v,t[y+3]=255}if(n===a&&i===o)break;let p=2*g;p>-u&&(g-=u,n+=h),p<f&&(g+=f,i+=m)}}function ap(t,e,r,n,i){let s=(t.x-n.x)*.707-(t.y-n.y)*.707,c=(t.x-n.x)*.707+(t.y-n.y)*.707,l=t.z-n.z,d=.866,f=.5,u=c*d-l*f,h=c*f+l*d,m=e/2+s*i,g=r/2-h*i;return{x:m,y:g}}var Ec=class{constructor(e){this.assetManager=e}async generateTextureThumbnail(e,r){try{let n=await this.assetManager.loadTexture(e);if(!n||n.levels.length===0)return null;let i=n.levels[0],a=i.width/i.height,o=r,s=r;a>1?s=Math.floor(r/a):o=Math.floor(r*a),o=Math.max(1,o),s=Math.max(1,s);let c=ZS(i.rgba,i.width,i.height,o,s);return new ImageData(c,o,s)}catch(n){return console.error(`Failed to generate thumbnail for ${e}`,n),null}}async generateModelThumbnail(e,r){try{let n=[],i=[],a=e.split(".").pop()?.toLowerCase();if(a==="md2"){let p=await this.assetManager.loadMd2Model(e);if(!p||p.frames.length===0)return null;n=p.frames[0].vertices.map(v=>v.position);for(let v of p.triangles)i.push(v.vertexIndices[0],v.vertexIndices[1]),i.push(v.vertexIndices[1],v.vertexIndices[2]),i.push(v.vertexIndices[2],v.vertexIndices[0])}else if(a==="md3"){let p=await this.assetManager.loadMd3Model(e);if(!p||p.surfaces.length===0)return null;let y=0;for(let v of p.surfaces){if(v.vertices.length===0)continue;let x=v.vertices[0];n.push(...x.map(b=>({x:b.position.x,y:b.position.y,z:b.position.z})));for(let b of v.triangles)i.push(y+b.indices[0],y+b.indices[1]),i.push(y+b.indices[1],y+b.indices[2]),i.push(y+b.indices[2],y+b.indices[0]);y+=x.length}}else return null;if(n.length===0)return null;let o={x:1/0,y:1/0,z:1/0},s={x:-1/0,y:-1/0,z:-1/0};for(let p of n)o.x=Math.min(o.x,p.x),o.y=Math.min(o.y,p.y),o.z=Math.min(o.z,p.z),s.x=Math.max(s.x,p.x),s.y=Math.max(s.y,p.y),s.z=Math.max(s.z,p.z);let c={x:(o.x+s.x)/2,y:(o.y+s.y)/2,z:(o.z+s.z)/2},l=s.x-o.x,d=s.y-o.y,f=s.z-o.z,u=Math.max(l,d,f),h=Math.max(u,.001),m=r*.8/h,g=new Uint8ClampedArray(r*r*4);for(let p=0;p<i.length;p+=2){let y=i[p],v=i[p+1],x=n[y],b=n[v],_=ap(x,r,r,c,m),w=ap(b,r,r,c,m);jS(g,r,r,_.x,_.y,w.x,w.y,0,255,0,255)}return new ImageData(g,r,r)}catch(n){return console.error(`Failed to generate model thumbnail for ${e}`,n),null}}async getMapBounds(e,r){try{let n=ja(r);if(n.models.length>0){let i=n.models[0];return{mins:{x:i.mins[0],y:i.mins[1],z:i.mins[2]},maxs:{x:i.maxs[0],y:i.maxs[1],z:i.maxs[2]}}}return null}catch(n){return console.error("Failed to get map bounds",n),null}}async extractMapScreenshot(e){return null}};var Lc=class{constructor(e){this.loader=e}async getMapStatistics(e){let r=await this.loader.load(e),n=r.faces.filter(o=>o.lightOffset!==-1).length,i=r.models[0],a=i?{mins:i.mins,maxs:i.maxs}:{mins:[0,0,0],maxs:[0,0,0]};return{entityCount:r.entities.entities.length,surfaceCount:r.faces.length,lightmapCount:n,vertexCount:r.vertices.length,bounds:a}}async getUsedTextures(e){let r=await this.loader.load(e),n=new Set;for(let i of r.texInfo)i.texture&&n.add(i.texture);return Array.from(n).sort()}async getUsedModels(e){let r=await this.loader.load(e),n=new Set;for(let i of r.entities.entities)i.properties.model&&!i.properties.model.startsWith("*")&&n.add(i.properties.model);return Array.from(n).sort()}async getUsedSounds(e){let r=await this.loader.load(e),n=new Set;for(let i of r.entities.entities){i.properties.noise&&n.add(i.properties.noise);for(let[a,o]of Object.entries(i.properties))(a==="noise"||a.endsWith("_sound")||a==="sound")&&typeof o=="string"&&n.add(o)}return Array.from(n).sort()}};function op(t){let e=[],r=0,n=t.length;function i(){for(;r<n&&/\s/.test(t[r]);)r++}function a(){if(i(),r>=n)return null;if(t[r]==='"'){r++;let o=r;for(;r<n&&t[r]!=='"';)t[r],r++;let s=t.substring(o,r);return r++,s}else{if(t[r]==="{"||t[r]==="}")return t[r++];{if(t.startsWith("//",r)){for(;r<n&&t[r]!==`
782
+ `;function ac(t){return C.fromValues(t.x,t.y,t.z)}function tr(t){return{x:t[0],y:t[1],z:t[2]}}var oc=class{constructor(e){this.vertices=[];this.solidVertices=[];this.labels=[];this.gl=e,this.shader=le.create(e,{vertex:Gx,fragment:Wx}),this.vao=new Ee(e),this.vbo=new Ae(e,e.DYNAMIC_DRAW),this.vao.configureAttributes([{index:0,size:3,type:e.FLOAT,stride:24,offset:0},{index:1,size:3,type:e.FLOAT,stride:24,offset:12}],this.vbo),this.shaderSolid=le.create(e,{vertex:Xx,fragment:Kx}),this.vaoSolid=new Ee(e),this.vboSolid=new Ae(e,e.DYNAMIC_DRAW),this.vaoSolid.configureAttributes([{index:0,size:3,type:e.FLOAT,stride:36,offset:0},{index:1,size:3,type:e.FLOAT,stride:36,offset:12},{index:2,size:3,type:e.FLOAT,stride:36,offset:24}],this.vboSolid)}get shaderSize(){return this.shader.sourceSize+this.shaderSolid.sourceSize}drawLine(e,r,n){this.vertices.push(e.x,e.y,e.z,n.r,n.g,n.b,r.x,r.y,r.z,n.r,n.g,n.b)}drawBoundingBox(e,r,n){let{x:i,y:a,z:o}=e,{x:s,y:c,z:l}=r;this.drawLine({x:i,y:a,z:o},{x:s,y:a,z:o},n),this.drawLine({x:s,y:a,z:o},{x:s,y:c,z:o},n),this.drawLine({x:s,y:c,z:o},{x:i,y:c,z:o},n),this.drawLine({x:i,y:c,z:o},{x:i,y:a,z:o},n),this.drawLine({x:i,y:a,z:l},{x:s,y:a,z:l},n),this.drawLine({x:s,y:a,z:l},{x:s,y:c,z:l},n),this.drawLine({x:s,y:c,z:l},{x:i,y:c,z:l},n),this.drawLine({x:i,y:c,z:l},{x:i,y:a,z:l},n),this.drawLine({x:i,y:a,z:o},{x:i,y:a,z:l},n),this.drawLine({x:s,y:a,z:o},{x:s,y:a,z:l},n),this.drawLine({x:s,y:c,z:o},{x:s,y:c,z:l},n),this.drawLine({x:i,y:c,z:o},{x:i,y:c,z:l},n)}drawPoint(e,r,n){let i=r/2;this.drawBoundingBox({x:e.x-i,y:e.y-i,z:e.z-i},{x:e.x+i,y:e.y+i,z:e.z+i},n)}drawAxes(e,r){this.drawLine(e,{x:e.x+r,y:e.y,z:e.z},{r:1,g:0,b:0}),this.drawLine(e,{x:e.x,y:e.y+r,z:e.z},{r:0,g:1,b:0}),this.drawLine(e,{x:e.x,y:e.y,z:e.z+r},{r:0,g:0,b:1})}drawText3D(e,r){this.labels.push({text:e,position:r})}addTriangle(e,r,n,i,a){this.solidVertices.push(e.x,e.y,e.z),this.solidVertices.push(a.r,a.g,a.b),this.solidVertices.push(i.x,i.y,i.z),this.solidVertices.push(r.x,r.y,r.z),this.solidVertices.push(a.r,a.g,a.b),this.solidVertices.push(i.x,i.y,i.z),this.solidVertices.push(n.x,n.y,n.z),this.solidVertices.push(a.r,a.g,a.b),this.solidVertices.push(i.x,i.y,i.z)}addCone(e,r,n,i){let o=ac(e),s=ac(r),c=C.create();C.subtract(c,o,s),C.normalize(c,c);let l=C.fromValues(0,0,1);Math.abs(C.dot(c,l))>.99&&(l=C.fromValues(0,1,0));let d=C.create();C.cross(d,l,c),C.normalize(d,d);let f=C.create();C.cross(f,c,d);let u=[];for(let p=0;p<16;p++){let y=p/16*Math.PI*2,v=Math.cos(y)*n,x=Math.sin(y)*n,b=C.clone(s);C.scaleAndAdd(b,b,d,v),C.scaleAndAdd(b,b,f,x),u.push(b)}let h=C.clone(c);C.scale(h,h,-1);let m=tr(h),g=r;for(let p=0;p<16;p++){let y=tr(u[p]),v=tr(u[(p+1)%16]);this.addTriangle(g,v,y,m,i)}for(let p=0;p<16;p++){let y=u[p],v=u[(p+1)%16],x=tr(y),b=tr(v),_=C.create();C.subtract(_,v,y);let w=C.create();C.subtract(w,o,y);let S=C.create();C.cross(S,_,w),C.normalize(S,S);let E=tr(S);this.addTriangle(x,b,e,E,i)}}addTorus(e,r,n,i,a={x:0,y:0,z:1}){let c=ac(a);C.normalize(c,c);let l=ac(e),d=C.fromValues(0,0,1),f=j.create();if(Math.abs(C.dot(c,d))>.999)c[2]<0&&j.rotateX(f,f,Math.PI);else{let m=C.create();C.cross(m,d,c),C.normalize(m,m);let g=Math.acos(C.dot(d,c));j.fromRotation(f,g,m)}let u=[],h=[];for(let m=0;m<=16;m++){let g=m/16*Math.PI*2,p=Math.cos(g),y=Math.sin(g),v=[],x=[];for(let b=0;b<=8;b++){let _=b/8*Math.PI*2,w=Math.cos(_),S=Math.sin(_),E=(r+n*w)*p,L=(r+n*w)*y,M=n*S,R=C.fromValues(E,L,M),I=w*p,B=w*y,F=S,U=C.fromValues(I,B,F);C.transformMat4(R,R,f),C.transformMat4(U,U,f),C.add(R,R,l),v.push(R),x.push(U)}u.push(v),h.push(x)}for(let m=0;m<16;m++)for(let g=0;g<8;g++){let p=u[m][g],y=u[m+1][g],v=u[m+1][g+1],x=u[m][g+1],b=tr(p),_=tr(y),w=tr(v),S=tr(x),E=C.create();C.subtract(E,y,p);let L=C.create();C.subtract(L,v,p);let M=C.create();C.cross(M,E,L),C.normalize(M,M),this.addTriangle(b,_,w,tr(M),i);let R=C.create();C.subtract(R,v,p);let I=C.create();C.subtract(I,x,p);let B=C.create();C.cross(B,R,I),C.normalize(B,B),this.addTriangle(b,w,S,tr(B),i)}}render(e,r=!1){if(r&&this.gl.disable(this.gl.DEPTH_TEST),this.vertices.length>0){this.shader.use();let n=this.shader.getUniformLocation("u_viewProjection");n&&this.gl.uniformMatrix4fv(n,!1,e),this.vbo.upload(new Float32Array(this.vertices)),this.vao.bind(),this.gl.drawArrays(this.gl.LINES,0,this.vertices.length/6)}if(this.solidVertices.length>0){this.shaderSolid.use();let n=this.shaderSolid.getUniformLocation("u_viewProjection");n&&this.gl.uniformMatrix4fv(n,!1,e);let i=this.shaderSolid.getUniformLocation("u_lightingEnabled");i&&this.gl.uniform1i(i,1),this.vboSolid.upload(new Float32Array(this.solidVertices)),this.vaoSolid.bind(),this.gl.drawArrays(this.gl.TRIANGLES,0,this.solidVertices.length/9)}r&&this.gl.enable(this.gl.DEPTH_TEST)}getLabels(e,r,n){let i=[];for(let a of this.labels){let o=ga.fromValues(a.position.x,a.position.y,a.position.z,1),s=ga.create(),l=e,d=o[0],f=o[1],u=o[2],h=o[3];if(s[0]=l[0]*d+l[4]*f+l[8]*u+l[12]*h,s[1]=l[1]*d+l[5]*f+l[9]*u+l[13]*h,s[2]=l[2]*d+l[6]*f+l[10]*u+l[14]*h,s[3]=l[3]*d+l[7]*f+l[11]*u+l[15]*h,s[3]>0){let m=s[0]/s[3],g=s[1]/s[3],p=(m+1)*.5*r,y=(1-g)*.5*n;p>=0&&p<=r&&y>=0&&y<=n&&i.push({text:a.text,x:p,y})}}return i}clear(){this.vertices=[],this.solidVertices=[],this.labels=[]}};function Im(t,e,r,n=32){let i=[];for(let s of t){let c=!0;for(let l of e)if(l.normal.x*s.origin.x+l.normal.y*s.origin.y+l.normal.z*s.origin.z+l.distance<-s.intensity){c=!1;break}if(c){let l=0;if(r){let d=s.origin.x-r.x,f=s.origin.y-r.y,u=s.origin.z-r.z;l=d*d+f*f+u*u}i.push({light:s,distSq:l})}}r&&i.sort((s,c)=>s.distSq-c.distSq);let a=[],o=Math.min(i.length,n);for(let s=0;s<o;s++)a.push(i[s].light);return a}function mu(t){let e=(t*1664525+1013904223>>>0)/4294967296,r=(t*25214903917+11>>>0)/4294967296,n=(t*69069+1>>>0)/4294967296;return[e,r,n,1]}var Bm=t=>{let e=new fa(t),r=new ha(t),n=new pa(t),i=new va(t),a=new wa(t),o=new nc(t),s=new oc(t),c=new ic(t),l=new uf({seed:Date.now()}),d=new _a(4096,l),f=new Sa(t,d),u=e.shaderSize+r.shaderSize+n.shaderSize+i.shaderSize+a.shaderSize+o.shaderSize+s.shaderSize+f.shaderSize;c.trackShaderMemory(u);let h=new Map,m=new Map,g=new Map,p=new Map,y=0,v=600,x=300,b=null,_={drawCalls:0,vertexCount:0,batches:0,shaderSwitches:0,visibleSurfaces:0,culledSurfaces:0,visibleEntities:0,culledEntities:0},w=new Map,S=new Map,E=0,L=1,M=1,R=!1,I=0,B=new Map,F=!1,U=!1,ce=.5,Nt=1,Ct=new Array(1024).fill(!0),zr=Tm(t,e,r),on=1e4,dt=[],et=0,Ht=Jl.create(),Gn=C.create(),sn=C.create();for(let A=0;A<on;A++){let K={id:-1,model:void 0,transform:new Float32Array(16),type:"md3",blend:{frame0:0,frame1:0,lerp:0},tint:[1,1,1,1],lighting:{ambient:[.5,.5,.5],dynamicLights:[],modelMatrix:void 0}};K.lighting&&(K.lighting.modelMatrix=K.transform),dt.push(K)}let Or=[],Ur,Nr,k,oe=(A,K)=>{if(A.type==="md2"){let ie=A.model;if(!ie.lods||ie.lods.length===0)return{model:A.model,type:A.type};let de=A.transform[12]-K.x,re=A.transform[13]-K.y,pe=A.transform[14]-K.z,Ke=Math.sqrt(de*de+re*re+pe*pe),Pt=Math.floor(Ke*Nt/500);if(Pt<=0)return{model:A.model,type:A.type};let Pe=ie.lods,Wt=Math.min(Pt-1,Pe.length-1);return{model:Pe[Wt],type:A.type}}return{model:A.model,type:A.type}},Ce=(A,K,ie)=>{c.startFrame(),y++;let de=Or.length>0?[...K,...Or]:K;Or.length=0,et=0,A.deltaTime&&d.update(A.deltaTime),t.disable(t.BLEND),t.enable(t.DEPTH_TEST),t.depthMask(!0);let pe=A.renderMode,Ke=!1;ie?.wireframe||E===6?pe={mode:"wireframe",applyToAll:!0,color:[1,1,1,1]}:E===5&&(Ke=!0);let Pt=A.sky;ie?.showSkybox===!1&&(Pt=void 0);let Pe=new Float32Array(A.camera.viewProjectionMatrix),Wt=kn(Pe),It=A.dlights?Im(A.dlights,Wt,{x:A.camera.position[0],y:A.camera.position[1],z:A.camera.position[2]},32):void 0,za={...A,sky:Pt,renderMode:pe,disableLightmaps:ie?.showLightmaps===!1&&E!==5,dlights:It,lightmapOnly:Ke,brightness:L,gamma:M,fullbright:R,ambient:I,lightStyleOverrides:B,underwaterWarp:F,bloom:U,bloomIntensity:ce,portalState:Ct},Rs=zr.renderFrame(za),tf=Rs.facesDrawn||0,rf=0;A.world&&A.world.map&&A.world.map.faces&&(rf=A.world.map.faces.length);let mp=rf-tf,Cc=-1,Pc=-1,Ic=null;if(A.world&&ie?.cullingEnabled!==!1){let z={x:A.camera.position[0],y:A.camera.position[1],z:A.camera.position[2]},ke=bi(A.world.map,z);if(ke>=0){let ut=A.world.map.leafs[ke];Cc=ut.cluster,Pc=ut.area,Pc>=0&&A.world.map.areas.length>0&&(Ic=kd(A.world.map,Pc,Ct))}}let Cs,Oa=0,Bc=0,nf=0,Ps=0,pp={x:A.camera.position[0],y:A.camera.position[1],z:A.camera.position[2]};if(y%v===0)for(let[z,ke]of p)y-ke.lastFrameSeen>x&&p.delete(z);for(let z of de){if(A.world&&Cc>=0){let Q={x:z.transform[12],y:z.transform[13],z:z.transform[14]},O=-1;if(z.id!==void 0){let Y=p.get(z.id);Y&&Y.position[12]===z.transform[12]&&Y.position[13]===z.transform[13]&&Y.position[14]===z.transform[14]?(O=Y.leafIndex,Y.lastFrameSeen=y):(O=bi(A.world.map,Q),O>=0&&p.set(z.id,{leafIndex:O,position:new Float32Array(z.transform),lastFrameSeen:y}))}else O=bi(A.world.map,Q);if(O>=0){let Y=A.world.map.leafs[O],Xt=Y.cluster,ze=Y.area;if(Ic&&ze>=0&&!Ic.has(ze)){Ps++;continue}if(!Fd(A.world.map.visibility,Cc,Xt)){Ps++;continue}}}let{model:ke,type:ut}=oe(z,pp),De,ve;if(ut==="md2"){let Q=ke,O=Q.frames[z.blend.frame0%Q.frames.length],Y=Q.frames[z.blend.frame1%Q.frames.length];O&&Y&&(De={x:Math.min(O.minBounds.x,Y.minBounds.x),y:Math.min(O.minBounds.y,Y.minBounds.y),z:Math.min(O.minBounds.z,Y.minBounds.z)},ve={x:Math.max(O.maxBounds.x,Y.maxBounds.x),y:Math.max(O.maxBounds.y,Y.maxBounds.y),z:Math.max(O.maxBounds.z,Y.maxBounds.z)})}else if(ut==="md3"){let Q=ke,O=Q.frames[z.blend.frame0%Q.frames.length],Y=Q.frames[z.blend.frame1%Q.frames.length];O&&Y?(De={x:Math.min(O.minBounds.x,Y.minBounds.x),y:Math.min(O.minBounds.y,Y.minBounds.y),z:Math.min(O.minBounds.z,Y.minBounds.z)},ve={x:Math.max(O.maxBounds.x,Y.maxBounds.x),y:Math.max(O.maxBounds.y,Y.maxBounds.y),z:Math.max(O.maxBounds.z,Y.maxBounds.z)}):(De={x:-32,y:-32,z:-32},ve={x:32,y:32,z:32})}if(De&&ve){let Q=Ch(De,ve,z.transform);if(!yi(Q.mins,Q.maxs,Wt)){Ps++;continue}}nf++;let ar={x:z.transform[12],y:z.transform[13],z:z.transform[14]},Ye=Rm(A.world?.map,ar),Le=z.id!==void 0?w.get(z.id):void 0;switch(ut){case"md2":{let Q=ke,O=m.get(Q);if(O)O.update(Q,z.blend);else{O=new ma(t,Q,z.blend),m.set(Q,O);let Oe=O.geometry.vertices.length*8*4,cn=O.geometry.indices.length*2;c.trackBufferMemory(Oe+cn)}let Y=Oc(Pe,z.transform),Xt=z.skin,ze=Xt?A.world?.textures?.get(Xt):void 0;ze&&ze!==Cs&&(ze.bind(0),Cs=ze);let Kt=pe;if(Kt&&!Kt.applyToAll&&ze&&(Kt=void 0),Kt?.generateRandomColor&&z.id!==void 0){let Oe=mu(z.id);Kt={...Kt,color:Oe}}if(n.bind({modelViewProjection:Y,modelMatrix:z.transform,ambientLight:Ye,dlights:A.dlights,renderMode:Kt,tint:z.tint,brightness:L,gamma:M,fullbright:R,ambient:I}),n.draw(O,Kt),Oa++,Bc+=O.geometry.vertices.length,Le){let Oe={mode:"wireframe",applyToAll:!0,color:Le};n.bind({modelViewProjection:Y,modelMatrix:z.transform,ambientLight:1,renderMode:Oe,tint:[1,1,1,1],brightness:1,gamma:1,fullbright:!0,ambient:0}),n.draw(O,Oe),Oa++}}break;case"md3":{let Q=ke,O=h.get(Q),Y=z,Xt=A.dlights?A.dlights.map(Oe=>({origin:Oe.origin,color:[Oe.color.x,Oe.color.y,Oe.color.z],radius:Oe.intensity})):void 0,ze={...Y.lighting,ambient:[Ye,Ye,Ye],dynamicLights:Xt,modelMatrix:z.transform};O?O.update(z.blend,ze):(O=new xa(t,Q,z.blend,ze),h.set(Q,O));let Kt=Oc(Pe,z.transform);i.bind(Kt);for(let Oe of Q.surfaces){let cn=O.surfaces.get(Oe.name);if(cn){let of=Y.skins?.get(Oe.name),Ua=of?A.world?.textures?.get(of):void 0;Ua&&Ua!==Cs&&(Ua.bind(0),Cs=Ua);let Kn=pe;if(Kn&&!Kn.applyToAll&&Ua&&(Kn=void 0),Kn?.generateRandomColor&&z.id!==void 0){let sf=mu(z.id);Kn={...Kn,color:sf}}let gp={renderMode:Kn,brightness:L,gamma:M,fullbright:R,globalAmbient:I};if(i.drawSurface(cn,gp),Oa++,Bc+=cn.geometry.vertices.length,Le){let yp={renderMode:{mode:"wireframe",applyToAll:!0,color:Le},brightness:1,gamma:1,fullbright:!0,globalAmbient:0};i.drawSurface(cn,yp),Oa++}}}}break}}let Xn=A.camera.viewMatrix;if(Xn){let z={x:Xn[0],y:Xn[4],z:Xn[8]},ke={x:Xn[1],y:Xn[5],z:Xn[9]};f.render({viewProjection:Pe,viewRight:z,viewUp:ke})}if(za.waterTint&&(Ur(),k(0,0,t.canvas.width,t.canvas.height,za.waterTint),Nr()),o.render(Pe),o.clear(),A.world&&(S.size>0||E===3)){let z=new Map(S);if(E===3&&A.world){let ke=kn(Pe),ut={x:A.camera.position[0],y:A.camera.position[1],z:A.camera.position[2]},De=xi(A.world.map,ut,ke,Ct);for(let{faceIndex:ve,leafIndex:ar}of De){let Ye=A.world.map.leafs[ar];Ye&&!z.has(ve)&&z.set(ve,mu(Ye.cluster))}}for(let[ke,ut]of z){let De=A.world.surfaces[ke];if(De&&De.vertexCount>0){let ve=[];for(let Le=0;Le<De.vertexCount;Le++)ve.push({x:De.vertexData[Le*7],y:De.vertexData[Le*7+1],z:De.vertexData[Le*7+2]});let Ye={r:ut[0],g:ut[1],b:ut[2]};for(let Le=0;Le<ve.length;Le++){let Q=ve[Le],O=ve[(Le+1)%ve.length];s.drawLine(Q,O,Ye)}s.drawLine(ve[0],ve[ve.length/2|0],Ye)}}}if((ie?.showNormals||E===2)&&A.world){let z=kn(Pe),ke={x:A.camera.position[0],y:A.camera.position[1],z:A.camera.position[2]},ut=xi(A.world.map,ke,z,Ct);for(let{faceIndex:De}of ut){let ve=A.world.map.faces[De],ar=A.world.map.planes[ve.planeIndex],Ye=A.world.surfaces[De];if(!Ye)continue;let Le=0,Q=0,O=0,Y=Ye.vertexCount;for(let Xt=0;Xt<Y;Xt++){let ze=Xt*7;Le+=Ye.vertexData[ze],Q+=Ye.vertexData[ze+1],O+=Ye.vertexData[ze+2]}if(Y>0){Le/=Y,Q/=Y,O/=Y;let Xt=ve.side===0?ar.normal[0]:-ar.normal[0],ze=ve.side===0?ar.normal[1]:-ar.normal[1],Kt=ve.side===0?ar.normal[2]:-ar.normal[2],Oe={x:Le,y:Q,z:O},cn={x:Le+Xt*8,y:Q+ze*8,z:O+Kt*8};s.drawLine(Oe,cn,{r:1,g:1,b:0})}}}s.render(Pe);let af=s.getLabels(Pe,t.canvas.width,t.canvas.height);if(af.length>0){Ur();for(let z of af)Ti(z.x,z.y,z.text,[1,1,1,1]);Nr()}s.clear(),_={drawCalls:Rs.drawCalls+Oa,vertexCount:Rs.vertexCount+Bc,batches:Rs.batches,shaderSwitches:0,visibleSurfaces:tf,culledSurfaces:mp,visibleEntities:nf,culledEntities:Ps},c.endFrame()},Re=async(A,K)=>{if(g.has(A))return g.get(A);let ie=new Blob([K]),de=await createImageBitmap(ie),re=new Je(t);return re.upload(de.width,de.height,de),g.set(A,re),c.trackTextureMemory(de.width*de.height*4),A.includes("conchars")&&(b=re),re},ir=(A,K)=>{if(g.has(A))return g.get(A);let ie=new Je(t),de=K.levels[0];return ie.upload(de.width,de.height,de.rgba),g.set(A,ie),c.trackTextureMemory(de.width*de.height*4),A.includes("conchars")&&(b=ie),ie};Ur=()=>{t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),t.disable(t.DEPTH_TEST),t.depthMask(!1);let A=j.create();j.ortho(A,0,t.canvas.width,t.canvas.height,0,-1,1),a.begin(A)},Nr=()=>{t.disable(t.BLEND),t.enable(t.DEPTH_TEST),t.depthMask(!0)};let Vt=(A,K,ie,de)=>{ie.bind(0),a.draw(A,K,ie.width,ie.height,0,0,1,1,de)},ln=(A,K,ie,de)=>{if(!b)return;let re=8,pe=8,Ke=b.width/re,Pt=ie&255,Pe=Pt%Ke*re/b.width,Wt=Math.floor(Pt/Ke)*pe/b.height,It=Pe+re/b.width,za=Wt+pe/b.height;b.bind(0),a.draw(A,K,re,pe,Pe,Wt,It,za,de)},Ti=(A,K,ie,de)=>{let re=Pm(ie),pe=A,Ke=8;for(let Pt of re){let Pe=Pt.color||de;for(let Wt=0;Wt<Pt.text.length;Wt++)ln(pe,K,Pt.text.charCodeAt(Wt),Pe),pe+=Ke}},Gt=(A,K)=>{let re=K.replace(/\^[0-9]/g,"").length*8,pe=(t.canvas.width-re)/2;Ti(pe,A,K)};return k=(A,K,ie,de,re)=>{a.drawRect(A,K,ie,de,re)},{get width(){return t.canvas.width},get height(){return t.canvas.height},get collisionVis(){return o},get debug(){return s},get particleSystem(){return d},getPerformanceReport:()=>c.getPerformanceReport(_),getMemoryUsage:()=>c.getMemoryUsage(),renderFrame:Ce,registerPic:Re,registerTexture:ir,begin2D:Ur,end2D:Nr,drawPic:Vt,drawString:Ti,drawCenterString:Gt,drawfillRect:k,setEntityHighlight:(A,K)=>{w.set(A,K)},clearEntityHighlight:A=>{w.delete(A)},highlightSurface:(A,K)=>{S.set(A,K)},removeSurfaceHighlight:A=>{S.delete(A)},setDebugMode:A=>{E=A},setBrightness:A=>{L=Math.max(0,Math.min(2,A))},setGamma:A=>{M=Math.max(.5,Math.min(3,A))},setFullbright:A=>{R=A},setAmbient:A=>{I=Math.max(0,Math.min(1,A))},setLightStyle:(A,K)=>{K===null?B.delete(A):B.set(A,K)},setUnderwaterWarp:A=>{F=A},setBloom:A=>{U=A},setBloomIntensity:A=>{ce=A},setLodBias:A=>{Nt=Math.max(0,Math.min(2,A))},setAreaPortalState:(A,K)=>{A>=0&&A<Ct.length&&(Ct[A]=K)},renderInstanced:(A,K)=>{let ie="glCommands"in A,de=ie?"md2":"md3";for(let re of K){if(et>=on){console.warn("Max instances reached");break}let pe=dt[et++];pe.model=A,pe.type=de;let Ke=pe.blend;re.frame!==void 0?(Ke.frame0=re.frame,Ke.frame1=re.frame,Ke.lerp=0):(Ke.frame0=re.frame0||0,Ke.frame1=re.frame1||0,Ke.lerp=re.lerp||0),ie&&(pe.skin=re.skin!==void 0?"skin"+re.skin:void 0);let Pt=re.rotation,Pe=re.position,Wt=re.scale||{x:1,y:1,z:1};j.fromRotationTranslationScale(pe.transform,Ht,Gn,sn);let It=pe.lighting;It&&(It.dynamicLights?It.dynamicLights.length=0:It.dynamicLights=[],It.ambient?(It.ambient[0]=.5,It.ambient[1]=.5,It.ambient[2]=.5):It.ambient=[.5,.5,.5]),Or.push(pe)}},dispose:()=>{c.dispose()}}};var fr=class{constructor(e){this.messageOffsets=[];this.currentBlock=null;this.buffer=e,this.view=new DataView(e),this.offset=0,this.scan()}scan(){let e=0;for(this.messageOffsets=[];e+4<=this.buffer.byteLength;){let r=this.view.getInt32(e,!0);if(r===-1)break;if(r<0||r>2097152){console.warn(`DemoReader: Invalid block length ${r} at offset ${e} during scan`);break}if(e+4+r>this.buffer.byteLength){console.warn(`DemoReader: Incomplete block at offset ${e} during scan`);break}this.messageOffsets.push(e),e+=4+r}}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(e===-1||e<0||this.offset+4+e>this.buffer.byteLength)return null;this.offset+=4;let r=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new mn(r)}}nextBlock(){let e=this.readNextBlock();return e?(this.currentBlock=e,!0):(this.currentBlock=null,!1)}getBlock(){if(!this.currentBlock)throw new Error("No current block. Call nextBlock() first.");return this.currentBlock}readAllBlocksToBuffer(){let e=0,r=this.offset,n=[],i=this.offset;for(;i+4<=this.buffer.byteLength;){let c=this.view.getInt32(i,!0);if(c===-1||c<0||i+4+c>this.buffer.byteLength)break;n.push({offset:i+4,length:c}),e+=c,i+=4+c}let a=new Uint8Array(e),o=0,s=new Uint8Array(this.buffer);for(let c of n)a.set(s.subarray(c.offset,c.offset+c.length),o),o+=c.length;return this.offset=i,a.buffer}reset(){this.offset=0,this.currentBlock=null}seekToMessage(e){return e<0||e>=this.messageOffsets.length?!1:(this.offset=this.messageOffsets[e],this.currentBlock=null,!0)}getMessageCount(){return this.messageOffsets.length}getOffset(){return this.offset}getProgress(){let e=this.offset,r=this.buffer.byteLength;return{current:e,total:r,percent:r>0?e/r*100:0}}};function Ra(t){let e=t.length;for(;--e>=0;)t[e]=0}var Yx=0,b0=1,$x=2,qx=3,Zx=258,Ou=29,xs=256,us=xs+1+Ou,Ea=30,Uu=19,x0=2*us+1,vi=15,pu=16,jx=7,Nu=256,v0=16,_0=17,S0=18,Ru=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]),fc=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]),Qx=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),w0=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Jx=512,nn=new Array((us+2)*2);Ra(nn);var ls=new Array(Ea*2);Ra(ls);var fs=new Array(Jx);Ra(fs);var hs=new Array(Zx-qx+1);Ra(hs);var Hu=new Array(Ou);Ra(Hu);var hc=new Array(Ea);Ra(hc);function gu(t,e,r,n,i){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=t&&t.length}var M0,A0,E0;function yu(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}var L0=t=>t<256?fs[t]:fs[256+(t>>>7)],ms=(t,e)=>{t.pending_buf[t.pending++]=e&255,t.pending_buf[t.pending++]=e>>>8&255},Rt=(t,e,r)=>{t.bi_valid>pu-r?(t.bi_buf|=e<<t.bi_valid&65535,ms(t,t.bi_buf),t.bi_buf=e>>pu-t.bi_valid,t.bi_valid+=r-pu):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=r)},Ir=(t,e,r)=>{Rt(t,r[e*2],r[e*2+1])},T0=(t,e)=>{let r=0;do r|=t&1,t>>>=1,r<<=1;while(--e>0);return r>>>1},ev=t=>{t.bi_valid===16?(ms(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=t.bi_buf&255,t.bi_buf>>=8,t.bi_valid-=8)},tv=(t,e)=>{let r=e.dyn_tree,n=e.max_code,i=e.stat_desc.static_tree,a=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,s=e.stat_desc.extra_base,c=e.stat_desc.max_length,l,d,f,u,h,m,g=0;for(u=0;u<=vi;u++)t.bl_count[u]=0;for(r[t.heap[t.heap_max]*2+1]=0,l=t.heap_max+1;l<x0;l++)d=t.heap[l],u=r[r[d*2+1]*2+1]+1,u>c&&(u=c,g++),r[d*2+1]=u,!(d>n)&&(t.bl_count[u]++,h=0,d>=s&&(h=o[d-s]),m=r[d*2],t.opt_len+=m*(u+h),a&&(t.static_len+=m*(i[d*2+1]+h)));if(g!==0){do{for(u=c-1;t.bl_count[u]===0;)u--;t.bl_count[u]--,t.bl_count[u+1]+=2,t.bl_count[c]--,g-=2}while(g>0);for(u=c;u!==0;u--)for(d=t.bl_count[u];d!==0;)f=t.heap[--l],!(f>n)&&(r[f*2+1]!==u&&(t.opt_len+=(u-r[f*2+1])*r[f*2],r[f*2+1]=u),d--)}},R0=(t,e,r)=>{let n=new Array(vi+1),i=0,a,o;for(a=1;a<=vi;a++)i=i+r[a-1]<<1,n[a]=i;for(o=0;o<=e;o++){let s=t[o*2+1];s!==0&&(t[o*2]=T0(n[s]++,s))}},rv=()=>{let t,e,r,n,i,a=new Array(vi+1);for(r=0,n=0;n<Ou-1;n++)for(Hu[n]=r,t=0;t<1<<Ru[n];t++)hs[r++]=n;for(hs[r-1]=n,i=0,n=0;n<16;n++)for(hc[n]=i,t=0;t<1<<fc[n];t++)fs[i++]=n;for(i>>=7;n<Ea;n++)for(hc[n]=i<<7,t=0;t<1<<fc[n]-7;t++)fs[256+i++]=n;for(e=0;e<=vi;e++)a[e]=0;for(t=0;t<=143;)nn[t*2+1]=8,t++,a[8]++;for(;t<=255;)nn[t*2+1]=9,t++,a[9]++;for(;t<=279;)nn[t*2+1]=7,t++,a[7]++;for(;t<=287;)nn[t*2+1]=8,t++,a[8]++;for(R0(nn,us+1,a),t=0;t<Ea;t++)ls[t*2+1]=5,ls[t*2]=T0(t,5);M0=new gu(nn,Ru,xs+1,us,vi),A0=new gu(ls,fc,0,Ea,vi),E0=new gu(new Array(0),Qx,0,Uu,jx)},C0=t=>{let e;for(e=0;e<us;e++)t.dyn_ltree[e*2]=0;for(e=0;e<Ea;e++)t.dyn_dtree[e*2]=0;for(e=0;e<Uu;e++)t.bl_tree[e*2]=0;t.dyn_ltree[Nu*2]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},P0=t=>{t.bi_valid>8?ms(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},Fm=(t,e,r,n)=>{let i=e*2,a=r*2;return t[i]<t[a]||t[i]===t[a]&&n[e]<=n[r]},bu=(t,e,r)=>{let n=t.heap[r],i=r<<1;for(;i<=t.heap_len&&(i<t.heap_len&&Fm(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!Fm(e,n,t.heap[i],t.depth));)t.heap[r]=t.heap[i],r=i,i<<=1;t.heap[r]=n},km=(t,e,r)=>{let n,i,a=0,o,s;if(t.sym_next!==0)do n=t.pending_buf[t.sym_buf+a++]&255,n+=(t.pending_buf[t.sym_buf+a++]&255)<<8,i=t.pending_buf[t.sym_buf+a++],n===0?Ir(t,i,e):(o=hs[i],Ir(t,o+xs+1,e),s=Ru[o],s!==0&&(i-=Hu[o],Rt(t,i,s)),n--,o=L0(n),Ir(t,o,r),s=fc[o],s!==0&&(n-=hc[o],Rt(t,n,s)));while(a<t.sym_next);Ir(t,Nu,e)},Cu=(t,e)=>{let r=e.dyn_tree,n=e.stat_desc.static_tree,i=e.stat_desc.has_stree,a=e.stat_desc.elems,o,s,c=-1,l;for(t.heap_len=0,t.heap_max=x0,o=0;o<a;o++)r[o*2]!==0?(t.heap[++t.heap_len]=c=o,t.depth[o]=0):r[o*2+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=c<2?++c:0,r[l*2]=1,t.depth[l]=0,t.opt_len--,i&&(t.static_len-=n[l*2+1]);for(e.max_code=c,o=t.heap_len>>1;o>=1;o--)bu(t,r,o);l=a;do o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],bu(t,r,1),s=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=s,r[l*2]=r[o*2]+r[s*2],t.depth[l]=(t.depth[o]>=t.depth[s]?t.depth[o]:t.depth[s])+1,r[o*2+1]=r[s*2+1]=l,t.heap[1]=l++,bu(t,r,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],tv(t,e),R0(r,c,t.bl_count)},Dm=(t,e,r)=>{let n,i=-1,a,o=e[1],s=0,c=7,l=4;for(o===0&&(c=138,l=3),e[(r+1)*2+1]=65535,n=0;n<=r;n++)a=o,o=e[(n+1)*2+1],!(++s<c&&a===o)&&(s<l?t.bl_tree[a*2]+=s:a!==0?(a!==i&&t.bl_tree[a*2]++,t.bl_tree[v0*2]++):s<=10?t.bl_tree[_0*2]++:t.bl_tree[S0*2]++,s=0,i=a,o===0?(c=138,l=3):a===o?(c=6,l=3):(c=7,l=4))},zm=(t,e,r)=>{let n,i=-1,a,o=e[1],s=0,c=7,l=4;for(o===0&&(c=138,l=3),n=0;n<=r;n++)if(a=o,o=e[(n+1)*2+1],!(++s<c&&a===o)){if(s<l)do Ir(t,a,t.bl_tree);while(--s!==0);else a!==0?(a!==i&&(Ir(t,a,t.bl_tree),s--),Ir(t,v0,t.bl_tree),Rt(t,s-3,2)):s<=10?(Ir(t,_0,t.bl_tree),Rt(t,s-3,3)):(Ir(t,S0,t.bl_tree),Rt(t,s-11,7));s=0,i=a,o===0?(c=138,l=3):a===o?(c=6,l=3):(c=7,l=4)}},nv=t=>{let e;for(Dm(t,t.dyn_ltree,t.l_desc.max_code),Dm(t,t.dyn_dtree,t.d_desc.max_code),Cu(t,t.bl_desc),e=Uu-1;e>=3&&t.bl_tree[w0[e]*2+1]===0;e--);return t.opt_len+=3*(e+1)+5+5+4,e},iv=(t,e,r,n)=>{let i;for(Rt(t,e-257,5),Rt(t,r-1,5),Rt(t,n-4,4),i=0;i<n;i++)Rt(t,t.bl_tree[w0[i]*2+1],3);zm(t,t.dyn_ltree,e-1),zm(t,t.dyn_dtree,r-1)},av=t=>{let e=4093624447,r;for(r=0;r<=31;r++,e>>>=1)if(e&1&&t.dyn_ltree[r*2]!==0)return 0;if(t.dyn_ltree[18]!==0||t.dyn_ltree[20]!==0||t.dyn_ltree[26]!==0)return 1;for(r=32;r<xs;r++)if(t.dyn_ltree[r*2]!==0)return 1;return 0},Om=!1,ov=t=>{Om||(rv(),Om=!0),t.l_desc=new yu(t.dyn_ltree,M0),t.d_desc=new yu(t.dyn_dtree,A0),t.bl_desc=new yu(t.bl_tree,E0),t.bi_buf=0,t.bi_valid=0,C0(t)},I0=(t,e,r,n)=>{Rt(t,(Yx<<1)+(n?1:0),3),P0(t),ms(t,r),ms(t,~r),r&&t.pending_buf.set(t.window.subarray(e,e+r),t.pending),t.pending+=r},sv=t=>{Rt(t,b0<<1,3),Ir(t,Nu,nn),ev(t)},lv=(t,e,r,n)=>{let i,a,o=0;t.level>0?(t.strm.data_type===2&&(t.strm.data_type=av(t)),Cu(t,t.l_desc),Cu(t,t.d_desc),o=nv(t),i=t.opt_len+3+7>>>3,a=t.static_len+3+7>>>3,a<=i&&(i=a)):i=a=r+5,r+4<=i&&e!==-1?I0(t,e,r,n):t.strategy===4||a===i?(Rt(t,(b0<<1)+(n?1:0),3),km(t,nn,ls)):(Rt(t,($x<<1)+(n?1:0),3),iv(t,t.l_desc.max_code+1,t.d_desc.max_code+1,o+1),km(t,t.dyn_ltree,t.dyn_dtree)),C0(t),n&&P0(t)},cv=(t,e,r)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=r,e===0?t.dyn_ltree[r*2]++:(t.matches++,e--,t.dyn_ltree[(hs[r]+xs+1)*2]++,t.dyn_dtree[L0(e)*2]++),t.sym_next===t.sym_end),dv=ov,uv=I0,fv=lv,hv=cv,mv=sv,pv={_tr_init:dv,_tr_stored_block:uv,_tr_flush_block:fv,_tr_tally:hv,_tr_align:mv},gv=(t,e,r,n)=>{let i=t&65535|0,a=t>>>16&65535|0,o=0;for(;r!==0;){o=r>2e3?2e3:r,r-=o;do i=i+e[n++]|0,a=a+i|0;while(--o);i%=65521,a%=65521}return i|a<<16|0},ps=gv,yv=()=>{let t,e=[];for(var r=0;r<256;r++){t=r;for(var n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;e[r]=t}return e},bv=new Uint32Array(yv()),xv=(t,e,r,n)=>{let i=bv,a=n+r;t^=-1;for(let o=n;o<a;o++)t=t>>>8^i[(t^e[o])&255];return t^-1},Fe=xv,wi={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"},Ei={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:vv,_tr_stored_block:Pu,_tr_flush_block:_v,_tr_tally:Un,_tr_align:Sv}=pv,{Z_NO_FLUSH:Nn,Z_PARTIAL_FLUSH:wv,Z_FULL_FLUSH:Mv,Z_FINISH:rr,Z_BLOCK:Um,Z_OK:Xe,Z_STREAM_END:Nm,Z_STREAM_ERROR:Br,Z_DATA_ERROR:Av,Z_BUF_ERROR:xu,Z_DEFAULT_COMPRESSION:Ev,Z_FILTERED:Lv,Z_HUFFMAN_ONLY:sc,Z_RLE:Tv,Z_FIXED:Rv,Z_DEFAULT_STRATEGY:Cv,Z_UNKNOWN:Pv,Z_DEFLATED:gc}=Ei,Iv=9,Bv=15,Fv=8,kv=29,Dv=256,Iu=Dv+1+kv,zv=30,Ov=19,Uv=2*Iu+1,Nv=15,Z=3,On=258,Fr=On+Z+1,Hv=32,La=42,Vu=57,Bu=69,Fu=73,ku=91,Du=103,_i=113,os=666,lt=1,Ca=2,Mi=3,Pa=4,Vv=3,Si=(t,e)=>(t.msg=wi[e],e),Hm=t=>t*2-(t>4?9:0),zn=t=>{let e=t.length;for(;--e>=0;)t[e]=0},Gv=t=>{let e,r,n,i=t.w_size;e=t.hash_size,n=e;do r=t.head[--n],t.head[n]=r>=i?r-i:0;while(--e);e=i,n=e;do r=t.prev[--n],t.prev[n]=r>=i?r-i:0;while(--e)},Wv=(t,e,r)=>(e<<t.hash_shift^r)&t.hash_mask,Hn=Wv,Ot=t=>{let e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),r!==0&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+r),t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,e.pending===0&&(e.pending_out=0))},Ut=(t,e)=>{_v(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Ot(t.strm)},ne=(t,e)=>{t.pending_buf[t.pending++]=e},as=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=e&255},zu=(t,e,r,n)=>{let i=t.avail_in;return i>n&&(i=n),i===0?0:(t.avail_in-=i,e.set(t.input.subarray(t.next_in,t.next_in+i),r),t.state.wrap===1?t.adler=ps(t.adler,e,i,r):t.state.wrap===2&&(t.adler=Fe(t.adler,e,i,r)),t.next_in+=i,t.total_in+=i,i)},B0=(t,e)=>{let r=t.max_chain_length,n=t.strstart,i,a,o=t.prev_length,s=t.nice_match,c=t.strstart>t.w_size-Fr?t.strstart-(t.w_size-Fr):0,l=t.window,d=t.w_mask,f=t.prev,u=t.strstart+On,h=l[n+o-1],m=l[n+o];t.prev_length>=t.good_match&&(r>>=2),s>t.lookahead&&(s=t.lookahead);do if(i=e,!(l[i+o]!==m||l[i+o-1]!==h||l[i]!==l[n]||l[++i]!==l[n+1])){n+=2,i++;do;while(l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&n<u);if(a=On-(u-n),n=u-On,a>o){if(t.match_start=e,o=a,a>=s)break;h=l[n+o-1],m=l[n+o]}}while((e=f[e&d])>c&&--r!==0);return o<=t.lookahead?o:t.lookahead},Ta=t=>{let e=t.w_size,r,n,i;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-Fr)&&(t.window.set(t.window.subarray(e,e+e-n),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),Gv(t),n+=e),t.strm.avail_in===0)break;if(r=zu(t.strm,t.window,t.strstart+t.lookahead,n),t.lookahead+=r,t.lookahead+t.insert>=Z)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=Hn(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=Hn(t,t.ins_h,t.window[i+Z-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert<Z)););}while(t.lookahead<Fr&&t.strm.avail_in!==0)},F0=(t,e)=>{let r=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,n,i,a,o=0,s=t.strm.avail_in;do{if(n=65535,a=t.bi_valid+42>>3,t.strm.avail_out<a||(a=t.strm.avail_out-a,i=t.strstart-t.block_start,n>i+t.strm.avail_in&&(n=i+t.strm.avail_in),n>a&&(n=a),n<r&&(n===0&&e!==rr||e===Nn||n!==i+t.strm.avail_in)))break;o=e===rr&&n===i+t.strm.avail_in?1:0,Pu(t,0,0,o),t.pending_buf[t.pending-4]=n,t.pending_buf[t.pending-3]=n>>8,t.pending_buf[t.pending-2]=~n,t.pending_buf[t.pending-1]=~n>>8,Ot(t.strm),i&&(i>n&&(i=n),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,n-=i),n&&(zu(t.strm,t.strm.output,t.strm.next_out,n),t.strm.next_out+=n,t.strm.avail_out-=n,t.strm.total_out+=n)}while(o===0);return s-=t.strm.avail_in,s&&(s>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=s&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-s,t.strm.next_in),t.strstart),t.strstart+=s,t.insert+=s>t.w_size-t.insert?t.w_size-t.insert:s),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),o?Pa:e!==Nn&&e!==rr&&t.strm.avail_in===0&&t.strstart===t.block_start?Ca:(a=t.window_size-t.strstart,t.strm.avail_in>a&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,a+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),a>t.strm.avail_in&&(a=t.strm.avail_in),a&&(zu(t.strm,t.window,t.strstart,a),t.strstart+=a,t.insert+=a>t.w_size-t.insert?t.w_size-t.insert:a),t.high_water<t.strstart&&(t.high_water=t.strstart),a=t.bi_valid+42>>3,a=t.pending_buf_size-a>65535?65535:t.pending_buf_size-a,r=a>t.w_size?t.w_size:a,i=t.strstart-t.block_start,(i>=r||(i||e===rr)&&e!==Nn&&t.strm.avail_in===0&&i<=a)&&(n=i>a?a:i,o=e===rr&&t.strm.avail_in===0&&n===i?1:0,Pu(t,t.block_start,n,o),t.block_start+=n,Ot(t.strm)),o?Mi:lt)},vu=(t,e)=>{let r,n;for(;;){if(t.lookahead<Fr){if(Ta(t),t.lookahead<Fr&&e===Nn)return lt;if(t.lookahead===0)break}if(r=0,t.lookahead>=Z&&(t.ins_h=Hn(t,t.ins_h,t.window[t.strstart+Z-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),r!==0&&t.strstart-r<=t.w_size-Fr&&(t.match_length=B0(t,r)),t.match_length>=Z)if(n=Un(t,t.strstart-t.match_start,t.match_length-Z),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=Z){t.match_length--;do t.strstart++,t.ins_h=Hn(t,t.ins_h,t.window[t.strstart+Z-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart;while(--t.match_length!==0);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Hn(t,t.ins_h,t.window[t.strstart+1]);else n=Un(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(Ut(t,!1),t.strm.avail_out===0))return lt}return t.insert=t.strstart<Z-1?t.strstart:Z-1,e===rr?(Ut(t,!0),t.strm.avail_out===0?Mi:Pa):t.sym_next&&(Ut(t,!1),t.strm.avail_out===0)?lt:Ca},Ma=(t,e)=>{let r,n,i;for(;;){if(t.lookahead<Fr){if(Ta(t),t.lookahead<Fr&&e===Nn)return lt;if(t.lookahead===0)break}if(r=0,t.lookahead>=Z&&(t.ins_h=Hn(t,t.ins_h,t.window[t.strstart+Z-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=Z-1,r!==0&&t.prev_length<t.max_lazy_match&&t.strstart-r<=t.w_size-Fr&&(t.match_length=B0(t,r),t.match_length<=5&&(t.strategy===Lv||t.match_length===Z&&t.strstart-t.match_start>4096)&&(t.match_length=Z-1)),t.prev_length>=Z&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-Z,n=Un(t,t.strstart-1-t.prev_match,t.prev_length-Z),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=i&&(t.ins_h=Hn(t,t.ins_h,t.window[t.strstart+Z-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart);while(--t.prev_length!==0);if(t.match_available=0,t.match_length=Z-1,t.strstart++,n&&(Ut(t,!1),t.strm.avail_out===0))return lt}else if(t.match_available){if(n=Un(t,0,t.window[t.strstart-1]),n&&Ut(t,!1),t.strstart++,t.lookahead--,t.strm.avail_out===0)return lt}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=Un(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<Z-1?t.strstart:Z-1,e===rr?(Ut(t,!0),t.strm.avail_out===0?Mi:Pa):t.sym_next&&(Ut(t,!1),t.strm.avail_out===0)?lt:Ca},Xv=(t,e)=>{let r,n,i,a,o=t.window;for(;;){if(t.lookahead<=On){if(Ta(t),t.lookahead<=On&&e===Nn)return lt;if(t.lookahead===0)break}if(t.match_length=0,t.lookahead>=Z&&t.strstart>0&&(i=t.strstart-1,n=o[i],n===o[++i]&&n===o[++i]&&n===o[++i])){a=t.strstart+On;do;while(n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&i<a);t.match_length=On-(a-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=Z?(r=Un(t,1,t.match_length-Z),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=Un(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(Ut(t,!1),t.strm.avail_out===0))return lt}return t.insert=0,e===rr?(Ut(t,!0),t.strm.avail_out===0?Mi:Pa):t.sym_next&&(Ut(t,!1),t.strm.avail_out===0)?lt:Ca},Kv=(t,e)=>{let r;for(;;){if(t.lookahead===0&&(Ta(t),t.lookahead===0)){if(e===Nn)return lt;break}if(t.match_length=0,r=Un(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(Ut(t,!1),t.strm.avail_out===0))return lt}return t.insert=0,e===rr?(Ut(t,!0),t.strm.avail_out===0?Mi:Pa):t.sym_next&&(Ut(t,!1),t.strm.avail_out===0)?lt:Ca};function Pr(t,e,r,n,i){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=n,this.func=i}var ss=[new Pr(0,0,0,0,F0),new Pr(4,4,8,4,vu),new Pr(4,5,16,8,vu),new Pr(4,6,32,32,vu),new Pr(4,4,16,16,Ma),new Pr(8,16,32,32,Ma),new Pr(8,16,128,128,Ma),new Pr(8,32,128,256,Ma),new Pr(32,128,258,1024,Ma),new Pr(32,258,258,4096,Ma)],Yv=t=>{t.window_size=2*t.w_size,zn(t.head),t.max_lazy_match=ss[t.level].max_lazy,t.good_match=ss[t.level].good_length,t.nice_match=ss[t.level].nice_length,t.max_chain_length=ss[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=Z-1,t.match_available=0,t.ins_h=0};function $v(){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=gc,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(Uv*2),this.dyn_dtree=new Uint16Array((2*zv+1)*2),this.bl_tree=new Uint16Array((2*Ov+1)*2),zn(this.dyn_ltree),zn(this.dyn_dtree),zn(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Nv+1),this.heap=new Uint16Array(2*Iu+1),zn(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Iu+1),zn(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 vs=t=>{if(!t)return 1;let e=t.state;return!e||e.strm!==t||e.status!==La&&e.status!==Vu&&e.status!==Bu&&e.status!==Fu&&e.status!==ku&&e.status!==Du&&e.status!==_i&&e.status!==os?1:0},k0=t=>{if(vs(t))return Si(t,Br);t.total_in=t.total_out=0,t.data_type=Pv;let e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap===2?Vu:e.wrap?La:_i,t.adler=e.wrap===2?0:1,e.last_flush=-2,vv(e),Xe},D0=t=>{let e=k0(t);return e===Xe&&Yv(t.state),e},qv=(t,e)=>vs(t)||t.state.wrap!==2?Br:(t.state.gzhead=e,Xe),z0=(t,e,r,n,i,a)=>{if(!t)return Br;let o=1;if(e===Ev&&(e=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),i<1||i>Iv||r!==gc||n<8||n>15||e<0||e>9||a<0||a>Rv||n===8&&o!==1)return Si(t,Br);n===8&&(n=9);let s=new $v;return t.state=s,s.strm=t,s.status=La,s.wrap=o,s.gzhead=null,s.w_bits=n,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=i+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+Z-1)/Z),s.window=new Uint8Array(s.w_size*2),s.head=new Uint16Array(s.hash_size),s.prev=new Uint16Array(s.w_size),s.lit_bufsize=1<<i+6,s.pending_buf_size=s.lit_bufsize*4,s.pending_buf=new Uint8Array(s.pending_buf_size),s.sym_buf=s.lit_bufsize,s.sym_end=(s.lit_bufsize-1)*3,s.level=e,s.strategy=a,s.method=r,D0(t)},Zv=(t,e)=>z0(t,e,gc,Bv,Fv,Cv),jv=(t,e)=>{if(vs(t)||e>Um||e<0)return t?Si(t,Br):Br;let r=t.state;if(!t.output||t.avail_in!==0&&!t.input||r.status===os&&e!==rr)return Si(t,t.avail_out===0?xu:Br);let n=r.last_flush;if(r.last_flush=e,r.pending!==0){if(Ot(t),t.avail_out===0)return r.last_flush=-1,Xe}else if(t.avail_in===0&&Hm(e)<=Hm(n)&&e!==rr)return Si(t,xu);if(r.status===os&&t.avail_in!==0)return Si(t,xu);if(r.status===La&&r.wrap===0&&(r.status=_i),r.status===La){let i=gc+(r.w_bits-8<<4)<<8,a=-1;if(r.strategy>=sc||r.level<2?a=0:r.level<6?a=1:r.level===6?a=2:a=3,i|=a<<6,r.strstart!==0&&(i|=Hv),i+=31-i%31,as(r,i),r.strstart!==0&&(as(r,t.adler>>>16),as(r,t.adler&65535)),t.adler=1,r.status=_i,Ot(t),r.pending!==0)return r.last_flush=-1,Xe}if(r.status===Vu){if(t.adler=0,ne(r,31),ne(r,139),ne(r,8),r.gzhead)ne(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),ne(r,r.gzhead.time&255),ne(r,r.gzhead.time>>8&255),ne(r,r.gzhead.time>>16&255),ne(r,r.gzhead.time>>24&255),ne(r,r.level===9?2:r.strategy>=sc||r.level<2?4:0),ne(r,r.gzhead.os&255),r.gzhead.extra&&r.gzhead.extra.length&&(ne(r,r.gzhead.extra.length&255),ne(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=Fe(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=Bu;else if(ne(r,0),ne(r,0),ne(r,0),ne(r,0),ne(r,0),ne(r,r.level===9?2:r.strategy>=sc||r.level<2?4:0),ne(r,Vv),r.status=_i,Ot(t),r.pending!==0)return r.last_flush=-1,Xe}if(r.status===Bu){if(r.gzhead.extra){let i=r.pending,a=(r.gzhead.extra.length&65535)-r.gzindex;for(;r.pending+a>r.pending_buf_size;){let s=r.pending_buf_size-r.pending;if(r.pending_buf.set(r.gzhead.extra.subarray(r.gzindex,r.gzindex+s),r.pending),r.pending=r.pending_buf_size,r.gzhead.hcrc&&r.pending>i&&(t.adler=Fe(t.adler,r.pending_buf,r.pending-i,i)),r.gzindex+=s,Ot(t),r.pending!==0)return r.last_flush=-1,Xe;i=0,a-=s}let o=new Uint8Array(r.gzhead.extra);r.pending_buf.set(o.subarray(r.gzindex,r.gzindex+a),r.pending),r.pending+=a,r.gzhead.hcrc&&r.pending>i&&(t.adler=Fe(t.adler,r.pending_buf,r.pending-i,i)),r.gzindex=0}r.status=Fu}if(r.status===Fu){if(r.gzhead.name){let i=r.pending,a;do{if(r.pending===r.pending_buf_size){if(r.gzhead.hcrc&&r.pending>i&&(t.adler=Fe(t.adler,r.pending_buf,r.pending-i,i)),Ot(t),r.pending!==0)return r.last_flush=-1,Xe;i=0}r.gzindex<r.gzhead.name.length?a=r.gzhead.name.charCodeAt(r.gzindex++)&255:a=0,ne(r,a)}while(a!==0);r.gzhead.hcrc&&r.pending>i&&(t.adler=Fe(t.adler,r.pending_buf,r.pending-i,i)),r.gzindex=0}r.status=ku}if(r.status===ku){if(r.gzhead.comment){let i=r.pending,a;do{if(r.pending===r.pending_buf_size){if(r.gzhead.hcrc&&r.pending>i&&(t.adler=Fe(t.adler,r.pending_buf,r.pending-i,i)),Ot(t),r.pending!==0)return r.last_flush=-1,Xe;i=0}r.gzindex<r.gzhead.comment.length?a=r.gzhead.comment.charCodeAt(r.gzindex++)&255:a=0,ne(r,a)}while(a!==0);r.gzhead.hcrc&&r.pending>i&&(t.adler=Fe(t.adler,r.pending_buf,r.pending-i,i))}r.status=Du}if(r.status===Du){if(r.gzhead.hcrc){if(r.pending+2>r.pending_buf_size&&(Ot(t),r.pending!==0))return r.last_flush=-1,Xe;ne(r,t.adler&255),ne(r,t.adler>>8&255),t.adler=0}if(r.status=_i,Ot(t),r.pending!==0)return r.last_flush=-1,Xe}if(t.avail_in!==0||r.lookahead!==0||e!==Nn&&r.status!==os){let i=r.level===0?F0(r,e):r.strategy===sc?Kv(r,e):r.strategy===Tv?Xv(r,e):ss[r.level].func(r,e);if((i===Mi||i===Pa)&&(r.status=os),i===lt||i===Mi)return t.avail_out===0&&(r.last_flush=-1),Xe;if(i===Ca&&(e===wv?Sv(r):e!==Um&&(Pu(r,0,0,!1),e===Mv&&(zn(r.head),r.lookahead===0&&(r.strstart=0,r.block_start=0,r.insert=0))),Ot(t),t.avail_out===0))return r.last_flush=-1,Xe}return e!==rr?Xe:r.wrap<=0?Nm:(r.wrap===2?(ne(r,t.adler&255),ne(r,t.adler>>8&255),ne(r,t.adler>>16&255),ne(r,t.adler>>24&255),ne(r,t.total_in&255),ne(r,t.total_in>>8&255),ne(r,t.total_in>>16&255),ne(r,t.total_in>>24&255)):(as(r,t.adler>>>16),as(r,t.adler&65535)),Ot(t),r.wrap>0&&(r.wrap=-r.wrap),r.pending!==0?Xe:Nm)},Qv=t=>{if(vs(t))return Br;let e=t.state.status;return t.state=null,e===_i?Si(t,Av):Xe},Jv=(t,e)=>{let r=e.length;if(vs(t))return Br;let n=t.state,i=n.wrap;if(i===2||i===1&&n.status!==La||n.lookahead)return Br;if(i===1&&(t.adler=ps(t.adler,e,r,0)),n.wrap=0,r>=n.w_size){i===0&&(zn(n.head),n.strstart=0,n.block_start=0,n.insert=0);let c=new Uint8Array(n.w_size);c.set(e.subarray(r-n.w_size,r),0),e=c,r=n.w_size}let a=t.avail_in,o=t.next_in,s=t.input;for(t.avail_in=r,t.next_in=0,t.input=e,Ta(n);n.lookahead>=Z;){let c=n.strstart,l=n.lookahead-(Z-1);do n.ins_h=Hn(n,n.ins_h,n.window[c+Z-1]),n.prev[c&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=c,c++;while(--l);n.strstart=c,n.lookahead=Z-1,Ta(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=Z-1,n.match_available=0,t.next_in=o,t.input=s,t.avail_in=a,n.wrap=i,Xe},e_=Zv,t_=z0,r_=D0,n_=k0,i_=qv,a_=jv,o_=Qv,s_=Jv,l_="pako deflate (from Nodeca project)",cs={deflateInit:e_,deflateInit2:t_,deflateReset:r_,deflateResetKeep:n_,deflateSetHeader:i_,deflate:a_,deflateEnd:o_,deflateSetDictionary:s_,deflateInfo:l_},c_=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),d_=function(t){let e=Array.prototype.slice.call(arguments,1);for(;e.length;){let r=e.shift();if(r){if(typeof r!="object")throw new TypeError(r+"must be non-object");for(let n in r)c_(r,n)&&(t[n]=r[n])}}return t},u_=t=>{let e=0;for(let n=0,i=t.length;n<i;n++)e+=t[n].length;let r=new Uint8Array(e);for(let n=0,i=0,a=t.length;n<a;n++){let o=t[n];r.set(o,i),i+=o.length}return r},yc={assign:d_,flattenChunks:u_},O0=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{O0=!1}var gs=new Uint8Array(256);for(let t=0;t<256;t++)gs[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;gs[254]=gs[254]=1;var f_=t=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(t);let e,r,n,i,a,o=t.length,s=0;for(i=0;i<o;i++)r=t.charCodeAt(i),(r&64512)===55296&&i+1<o&&(n=t.charCodeAt(i+1),(n&64512)===56320&&(r=65536+(r-55296<<10)+(n-56320),i++)),s+=r<128?1:r<2048?2:r<65536?3:4;for(e=new Uint8Array(s),a=0,i=0;a<s;i++)r=t.charCodeAt(i),(r&64512)===55296&&i+1<o&&(n=t.charCodeAt(i+1),(n&64512)===56320&&(r=65536+(r-55296<<10)+(n-56320),i++)),r<128?e[a++]=r:r<2048?(e[a++]=192|r>>>6,e[a++]=128|r&63):r<65536?(e[a++]=224|r>>>12,e[a++]=128|r>>>6&63,e[a++]=128|r&63):(e[a++]=240|r>>>18,e[a++]=128|r>>>12&63,e[a++]=128|r>>>6&63,e[a++]=128|r&63);return e},h_=(t,e)=>{if(e<65534&&t.subarray&&O0)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let r="";for(let n=0;n<e;n++)r+=String.fromCharCode(t[n]);return r},m_=(t,e)=>{let r=e||t.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(t.subarray(0,e));let n,i,a=new Array(r*2);for(i=0,n=0;n<r;){let o=t[n++];if(o<128){a[i++]=o;continue}let s=gs[o];if(s>4){a[i++]=65533,n+=s-1;continue}for(o&=s===2?31:s===3?15:7;s>1&&n<r;)o=o<<6|t[n++]&63,s--;if(s>1){a[i++]=65533;continue}o<65536?a[i++]=o:(o-=65536,a[i++]=55296|o>>10&1023,a[i++]=56320|o&1023)}return h_(a,i)},p_=(t,e)=>{e=e||t.length,e>t.length&&(e=t.length);let r=e-1;for(;r>=0&&(t[r]&192)===128;)r--;return r<0||r===0?e:r+gs[t[r]]>e?r:e},ys={string2buf:f_,buf2string:m_,utf8border:p_};function g_(){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 U0=g_,N0=Object.prototype.toString,{Z_NO_FLUSH:y_,Z_SYNC_FLUSH:b_,Z_FULL_FLUSH:x_,Z_FINISH:v_,Z_OK:mc,Z_STREAM_END:__,Z_DEFAULT_COMPRESSION:S_,Z_DEFAULT_STRATEGY:w_,Z_DEFLATED:M_}=Ei;function _s(t){this.options=yc.assign({level:S_,method:M_,chunkSize:16384,windowBits:15,memLevel:8,strategy:w_},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new U0,this.strm.avail_out=0;let r=cs.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==mc)throw new Error(wi[r]);if(e.header&&cs.deflateSetHeader(this.strm,e.header),e.dictionary){let n;if(typeof e.dictionary=="string"?n=ys.string2buf(e.dictionary):N0.call(e.dictionary)==="[object ArrayBuffer]"?n=new Uint8Array(e.dictionary):n=e.dictionary,r=cs.deflateSetDictionary(this.strm,n),r!==mc)throw new Error(wi[r]);this._dict_set=!0}}_s.prototype.push=function(t,e){let r=this.strm,n=this.options.chunkSize,i,a;if(this.ended)return!1;for(e===~~e?a=e:a=e===!0?v_:y_,typeof t=="string"?r.input=ys.string2buf(t):N0.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;){if(r.avail_out===0&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),(a===b_||a===x_)&&r.avail_out<=6){this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;continue}if(i=cs.deflate(r,a),i===__)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),i=cs.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===mc;if(r.avail_out===0){this.onData(r.output);continue}if(a>0&&r.next_out>0){this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;continue}if(r.avail_in===0)break}return!0};_s.prototype.onData=function(t){this.chunks.push(t)};_s.prototype.onEnd=function(t){t===mc&&(this.result=yc.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Gu(t,e){let r=new _s(e);if(r.push(t,!0),r.err)throw r.msg||wi[r.err];return r.result}function A_(t,e){return e=e||{},e.raw=!0,Gu(t,e)}function E_(t,e){return e=e||{},e.gzip=!0,Gu(t,e)}var L_=_s,T_=Gu,R_=A_,C_=E_,P_=Ei,I_={Deflate:L_,deflate:T_,deflateRaw:R_,gzip:C_,constants:P_},lc=16209,B_=16191,F_=function(e,r){let n,i,a,o,s,c,l,d,f,u,h,m,g,p,y,v,x,b,_,w,S,E,L,M,R=e.state;n=e.next_in,L=e.input,i=n+(e.avail_in-5),a=e.next_out,M=e.output,o=a-(r-e.avail_out),s=a+(e.avail_out-257),c=R.dmax,l=R.wsize,d=R.whave,f=R.wnext,u=R.window,h=R.hold,m=R.bits,g=R.lencode,p=R.distcode,y=(1<<R.lenbits)-1,v=(1<<R.distbits)-1;e:do{m<15&&(h+=L[n++]<<m,m+=8,h+=L[n++]<<m,m+=8),x=g[h&y];t:for(;;){if(b=x>>>24,h>>>=b,m-=b,b=x>>>16&255,b===0)M[a++]=x&65535;else if(b&16){_=x&65535,b&=15,b&&(m<b&&(h+=L[n++]<<m,m+=8),_+=h&(1<<b)-1,h>>>=b,m-=b),m<15&&(h+=L[n++]<<m,m+=8,h+=L[n++]<<m,m+=8),x=p[h&v];r:for(;;){if(b=x>>>24,h>>>=b,m-=b,b=x>>>16&255,b&16){if(w=x&65535,b&=15,m<b&&(h+=L[n++]<<m,m+=8,m<b&&(h+=L[n++]<<m,m+=8)),w+=h&(1<<b)-1,w>c){e.msg="invalid distance too far back",R.mode=lc;break e}if(h>>>=b,m-=b,b=a-o,w>b){if(b=w-b,b>d&&R.sane){e.msg="invalid distance too far back",R.mode=lc;break e}if(S=0,E=u,f===0){if(S+=l-b,b<_){_-=b;do M[a++]=u[S++];while(--b);S=a-w,E=M}}else if(f<b){if(S+=l+f-b,b-=f,b<_){_-=b;do M[a++]=u[S++];while(--b);if(S=0,f<_){b=f,_-=b;do M[a++]=u[S++];while(--b);S=a-w,E=M}}}else if(S+=f-b,b<_){_-=b;do M[a++]=u[S++];while(--b);S=a-w,E=M}for(;_>2;)M[a++]=E[S++],M[a++]=E[S++],M[a++]=E[S++],_-=3;_&&(M[a++]=E[S++],_>1&&(M[a++]=E[S++]))}else{S=a-w;do M[a++]=M[S++],M[a++]=M[S++],M[a++]=M[S++],_-=3;while(_>2);_&&(M[a++]=M[S++],_>1&&(M[a++]=M[S++]))}}else if((b&64)===0){x=p[(x&65535)+(h&(1<<b)-1)];continue r}else{e.msg="invalid distance code",R.mode=lc;break e}break}}else if((b&64)===0){x=g[(x&65535)+(h&(1<<b)-1)];continue t}else if(b&32){R.mode=B_;break e}else{e.msg="invalid literal/length code",R.mode=lc;break e}break}}while(n<i&&a<s);_=m>>3,n-=_,m-=_<<3,h&=(1<<m)-1,e.next_in=n,e.next_out=a,e.avail_in=n<i?5+(i-n):5-(n-i),e.avail_out=a<s?257+(s-a):257-(a-s),R.hold=h,R.bits=m},Aa=15,Vm=852,Gm=592,Wm=0,_u=1,Xm=2,k_=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]),D_=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]),z_=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]),O_=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]),U_=(t,e,r,n,i,a,o,s)=>{let c=s.bits,l=0,d=0,f=0,u=0,h=0,m=0,g=0,p=0,y=0,v=0,x,b,_,w,S,E=null,L,M=new Uint16Array(Aa+1),R=new Uint16Array(Aa+1),I=null,B,F,U;for(l=0;l<=Aa;l++)M[l]=0;for(d=0;d<n;d++)M[e[r+d]]++;for(h=c,u=Aa;u>=1&&M[u]===0;u--);if(h>u&&(h=u),u===0)return i[a++]=1<<24|64<<16|0,i[a++]=1<<24|64<<16|0,s.bits=1,0;for(f=1;f<u&&M[f]===0;f++);for(h<f&&(h=f),p=1,l=1;l<=Aa;l++)if(p<<=1,p-=M[l],p<0)return-1;if(p>0&&(t===Wm||u!==1))return-1;for(R[1]=0,l=1;l<Aa;l++)R[l+1]=R[l]+M[l];for(d=0;d<n;d++)e[r+d]!==0&&(o[R[e[r+d]]++]=d);if(t===Wm?(E=I=o,L=20):t===_u?(E=k_,I=D_,L=257):(E=z_,I=O_,L=0),v=0,d=0,l=f,S=a,m=h,g=0,_=-1,y=1<<h,w=y-1,t===_u&&y>Vm||t===Xm&&y>Gm)return 1;for(;;){B=l-g,o[d]+1<L?(F=0,U=o[d]):o[d]>=L?(F=I[o[d]-L],U=E[o[d]-L]):(F=96,U=0),x=1<<l-g,b=1<<m,f=b;do b-=x,i[S+(v>>g)+b]=B<<24|F<<16|U|0;while(b!==0);for(x=1<<l-1;v&x;)x>>=1;if(x!==0?(v&=x-1,v+=x):v=0,d++,--M[l]===0){if(l===u)break;l=e[r+o[d]]}if(l>h&&(v&w)!==_){for(g===0&&(g=h),S+=f,m=l-g,p=1<<m;m+g<u&&(p-=M[m+g],!(p<=0));)m++,p<<=1;if(y+=1<<m,t===_u&&y>Vm||t===Xm&&y>Gm)return 1;_=v&w,i[_]=h<<24|m<<16|S-a|0}}return v!==0&&(i[S+v]=l-g<<24|64<<16|0),s.bits=h,0},ds=U_,N_=0,H0=1,V0=2,{Z_FINISH:Km,Z_BLOCK:H_,Z_TREES:cc,Z_OK:Ai,Z_STREAM_END:V_,Z_NEED_DICT:G_,Z_STREAM_ERROR:nr,Z_DATA_ERROR:G0,Z_MEM_ERROR:W0,Z_BUF_ERROR:W_,Z_DEFLATED:Ym}=Ei,bc=16180,$m=16181,qm=16182,Zm=16183,jm=16184,Qm=16185,Jm=16186,e0=16187,t0=16188,r0=16189,pc=16190,rn=16191,Su=16192,n0=16193,wu=16194,i0=16195,a0=16196,o0=16197,s0=16198,dc=16199,uc=16200,l0=16201,c0=16202,d0=16203,u0=16204,f0=16205,Mu=16206,h0=16207,m0=16208,be=16209,X0=16210,K0=16211,X_=852,K_=592,Y_=15,$_=Y_,p0=t=>(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24);function q_(){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 Li=t=>{if(!t)return 1;let e=t.state;return!e||e.strm!==t||e.mode<bc||e.mode>K0?1:0},Y0=t=>{if(Li(t))return nr;let e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=bc,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(X_),e.distcode=e.distdyn=new Int32Array(K_),e.sane=1,e.back=-1,Ai},$0=t=>{if(Li(t))return nr;let e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Y0(t)},q0=(t,e)=>{let r;if(Li(t))return nr;let n=t.state;return e<0?(r=0,e=-e):(r=(e>>4)+5,e<48&&(e&=15)),e&&(e<8||e>15)?nr:(n.window!==null&&n.wbits!==e&&(n.window=null),n.wrap=r,n.wbits=e,$0(t))},Z0=(t,e)=>{if(!t)return nr;let r=new q_;t.state=r,r.strm=t,r.window=null,r.mode=bc;let n=q0(t,e);return n!==Ai&&(t.state=null),n},Z_=t=>Z0(t,$_),g0=!0,Au,Eu,j_=t=>{if(g0){Au=new Int32Array(512),Eu=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(ds(H0,t.lens,0,288,Au,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;ds(V0,t.lens,0,32,Eu,0,t.work,{bits:5}),g0=!1}t.lencode=Au,t.lenbits=9,t.distcode=Eu,t.distbits=5},j0=(t,e,r,n)=>{let i,a=t.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),n>=a.wsize?(a.window.set(e.subarray(r-a.wsize,r),0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>n&&(i=n),a.window.set(e.subarray(r-n,r-n+i),a.wnext),n-=i,n?(a.window.set(e.subarray(r-n,r),0),a.wnext=n,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0},Q_=(t,e)=>{let r,n,i,a,o,s,c,l,d,f,u,h,m,g,p=0,y,v,x,b,_,w,S,E,L=new Uint8Array(4),M,R,I=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Li(t)||!t.output||!t.input&&t.avail_in!==0)return nr;r=t.state,r.mode===rn&&(r.mode=Su),o=t.next_out,i=t.output,c=t.avail_out,a=t.next_in,n=t.input,s=t.avail_in,l=r.hold,d=r.bits,f=s,u=c,E=Ai;e:for(;;)switch(r.mode){case bc:if(r.wrap===0){r.mode=Su;break}for(;d<16;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(r.wrap&2&&l===35615){r.wbits===0&&(r.wbits=15),r.check=0,L[0]=l&255,L[1]=l>>>8&255,r.check=Fe(r.check,L,2,0),l=0,d=0,r.mode=$m;break}if(r.head&&(r.head.done=!1),!(r.wrap&1)||(((l&255)<<8)+(l>>8))%31){t.msg="incorrect header check",r.mode=be;break}if((l&15)!==Ym){t.msg="unknown compression method",r.mode=be;break}if(l>>>=4,d-=4,S=(l&15)+8,r.wbits===0&&(r.wbits=S),S>15||S>r.wbits){t.msg="invalid window size",r.mode=be;break}r.dmax=1<<r.wbits,r.flags=0,t.adler=r.check=1,r.mode=l&512?r0:rn,l=0,d=0;break;case $m:for(;d<16;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(r.flags=l,(r.flags&255)!==Ym){t.msg="unknown compression method",r.mode=be;break}if(r.flags&57344){t.msg="unknown header flags set",r.mode=be;break}r.head&&(r.head.text=l>>8&1),r.flags&512&&r.wrap&4&&(L[0]=l&255,L[1]=l>>>8&255,r.check=Fe(r.check,L,2,0)),l=0,d=0,r.mode=qm;case qm:for(;d<32;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}r.head&&(r.head.time=l),r.flags&512&&r.wrap&4&&(L[0]=l&255,L[1]=l>>>8&255,L[2]=l>>>16&255,L[3]=l>>>24&255,r.check=Fe(r.check,L,4,0)),l=0,d=0,r.mode=Zm;case Zm:for(;d<16;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}r.head&&(r.head.xflags=l&255,r.head.os=l>>8),r.flags&512&&r.wrap&4&&(L[0]=l&255,L[1]=l>>>8&255,r.check=Fe(r.check,L,2,0)),l=0,d=0,r.mode=jm;case jm:if(r.flags&1024){for(;d<16;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}r.length=l,r.head&&(r.head.extra_len=l),r.flags&512&&r.wrap&4&&(L[0]=l&255,L[1]=l>>>8&255,r.check=Fe(r.check,L,2,0)),l=0,d=0}else r.head&&(r.head.extra=null);r.mode=Qm;case Qm:if(r.flags&1024&&(h=r.length,h>s&&(h=s),h&&(r.head&&(S=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(n.subarray(a,a+h),S)),r.flags&512&&r.wrap&4&&(r.check=Fe(r.check,n,h,a)),s-=h,a+=h,r.length-=h),r.length))break e;r.length=0,r.mode=Jm;case Jm:if(r.flags&2048){if(s===0)break e;h=0;do S=n[a+h++],r.head&&S&&r.length<65536&&(r.head.name+=String.fromCharCode(S));while(S&&h<s);if(r.flags&512&&r.wrap&4&&(r.check=Fe(r.check,n,h,a)),s-=h,a+=h,S)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=e0;case e0:if(r.flags&4096){if(s===0)break e;h=0;do S=n[a+h++],r.head&&S&&r.length<65536&&(r.head.comment+=String.fromCharCode(S));while(S&&h<s);if(r.flags&512&&r.wrap&4&&(r.check=Fe(r.check,n,h,a)),s-=h,a+=h,S)break e}else r.head&&(r.head.comment=null);r.mode=t0;case t0:if(r.flags&512){for(;d<16;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(r.wrap&4&&l!==(r.check&65535)){t.msg="header crc mismatch",r.mode=be;break}l=0,d=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=rn;break;case r0:for(;d<32;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}t.adler=r.check=p0(l),l=0,d=0,r.mode=pc;case pc:if(r.havedict===0)return t.next_out=o,t.avail_out=c,t.next_in=a,t.avail_in=s,r.hold=l,r.bits=d,G_;t.adler=r.check=1,r.mode=rn;case rn:if(e===H_||e===cc)break e;case Su:if(r.last){l>>>=d&7,d-=d&7,r.mode=Mu;break}for(;d<3;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}switch(r.last=l&1,l>>>=1,d-=1,l&3){case 0:r.mode=n0;break;case 1:if(j_(r),r.mode=dc,e===cc){l>>>=2,d-=2;break e}break;case 2:r.mode=a0;break;case 3:t.msg="invalid block type",r.mode=be}l>>>=2,d-=2;break;case n0:for(l>>>=d&7,d-=d&7;d<32;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if((l&65535)!==(l>>>16^65535)){t.msg="invalid stored block lengths",r.mode=be;break}if(r.length=l&65535,l=0,d=0,r.mode=wu,e===cc)break e;case wu:r.mode=i0;case i0:if(h=r.length,h){if(h>s&&(h=s),h>c&&(h=c),h===0)break e;i.set(n.subarray(a,a+h),o),s-=h,a+=h,c-=h,o+=h,r.length-=h;break}r.mode=rn;break;case a0:for(;d<14;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(r.nlen=(l&31)+257,l>>>=5,d-=5,r.ndist=(l&31)+1,l>>>=5,d-=5,r.ncode=(l&15)+4,l>>>=4,d-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=be;break}r.have=0,r.mode=o0;case o0:for(;r.have<r.ncode;){for(;d<3;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}r.lens[I[r.have++]]=l&7,l>>>=3,d-=3}for(;r.have<19;)r.lens[I[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,M={bits:r.lenbits},E=ds(N_,r.lens,0,19,r.lencode,0,r.work,M),r.lenbits=M.bits,E){t.msg="invalid code lengths set",r.mode=be;break}r.have=0,r.mode=s0;case s0:for(;r.have<r.nlen+r.ndist;){for(;p=r.lencode[l&(1<<r.lenbits)-1],y=p>>>24,v=p>>>16&255,x=p&65535,!(y<=d);){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(x<16)l>>>=y,d-=y,r.lens[r.have++]=x;else{if(x===16){for(R=y+2;d<R;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(l>>>=y,d-=y,r.have===0){t.msg="invalid bit length repeat",r.mode=be;break}S=r.lens[r.have-1],h=3+(l&3),l>>>=2,d-=2}else if(x===17){for(R=y+3;d<R;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}l>>>=y,d-=y,S=0,h=3+(l&7),l>>>=3,d-=3}else{for(R=y+7;d<R;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}l>>>=y,d-=y,S=0,h=11+(l&127),l>>>=7,d-=7}if(r.have+h>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=be;break}for(;h--;)r.lens[r.have++]=S}}if(r.mode===be)break;if(r.lens[256]===0){t.msg="invalid code -- missing end-of-block",r.mode=be;break}if(r.lenbits=9,M={bits:r.lenbits},E=ds(H0,r.lens,0,r.nlen,r.lencode,0,r.work,M),r.lenbits=M.bits,E){t.msg="invalid literal/lengths set",r.mode=be;break}if(r.distbits=6,r.distcode=r.distdyn,M={bits:r.distbits},E=ds(V0,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,M),r.distbits=M.bits,E){t.msg="invalid distances set",r.mode=be;break}if(r.mode=dc,e===cc)break e;case dc:r.mode=uc;case uc:if(s>=6&&c>=258){t.next_out=o,t.avail_out=c,t.next_in=a,t.avail_in=s,r.hold=l,r.bits=d,F_(t,u),o=t.next_out,i=t.output,c=t.avail_out,a=t.next_in,n=t.input,s=t.avail_in,l=r.hold,d=r.bits,r.mode===rn&&(r.back=-1);break}for(r.back=0;p=r.lencode[l&(1<<r.lenbits)-1],y=p>>>24,v=p>>>16&255,x=p&65535,!(y<=d);){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(v&&(v&240)===0){for(b=y,_=v,w=x;p=r.lencode[w+((l&(1<<b+_)-1)>>b)],y=p>>>24,v=p>>>16&255,x=p&65535,!(b+y<=d);){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}l>>>=b,d-=b,r.back+=b}if(l>>>=y,d-=y,r.back+=y,r.length=x,v===0){r.mode=f0;break}if(v&32){r.back=-1,r.mode=rn;break}if(v&64){t.msg="invalid literal/length code",r.mode=be;break}r.extra=v&15,r.mode=l0;case l0:if(r.extra){for(R=r.extra;d<R;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}r.length+=l&(1<<r.extra)-1,l>>>=r.extra,d-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=c0;case c0:for(;p=r.distcode[l&(1<<r.distbits)-1],y=p>>>24,v=p>>>16&255,x=p&65535,!(y<=d);){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if((v&240)===0){for(b=y,_=v,w=x;p=r.distcode[w+((l&(1<<b+_)-1)>>b)],y=p>>>24,v=p>>>16&255,x=p&65535,!(b+y<=d);){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}l>>>=b,d-=b,r.back+=b}if(l>>>=y,d-=y,r.back+=y,v&64){t.msg="invalid distance code",r.mode=be;break}r.offset=x,r.extra=v&15,r.mode=d0;case d0:if(r.extra){for(R=r.extra;d<R;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}r.offset+=l&(1<<r.extra)-1,l>>>=r.extra,d-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=be;break}r.mode=u0;case u0:if(c===0)break e;if(h=u-c,r.offset>h){if(h=r.offset-h,h>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=be;break}h>r.wnext?(h-=r.wnext,m=r.wsize-h):m=r.wnext-h,h>r.length&&(h=r.length),g=r.window}else g=i,m=o-r.offset,h=r.length;h>c&&(h=c),c-=h,r.length-=h;do i[o++]=g[m++];while(--h);r.length===0&&(r.mode=uc);break;case f0:if(c===0)break e;i[o++]=r.length,c--,r.mode=uc;break;case Mu:if(r.wrap){for(;d<32;){if(s===0)break e;s--,l|=n[a++]<<d,d+=8}if(u-=c,t.total_out+=u,r.total+=u,r.wrap&4&&u&&(t.adler=r.check=r.flags?Fe(r.check,i,u,o-u):ps(r.check,i,u,o-u)),u=c,r.wrap&4&&(r.flags?l:p0(l))!==r.check){t.msg="incorrect data check",r.mode=be;break}l=0,d=0}r.mode=h0;case h0:if(r.wrap&&r.flags){for(;d<32;){if(s===0)break e;s--,l+=n[a++]<<d,d+=8}if(r.wrap&4&&l!==(r.total&4294967295)){t.msg="incorrect length check",r.mode=be;break}l=0,d=0}r.mode=m0;case m0:E=V_;break e;case be:E=G0;break e;case X0:return W0;case K0:default:return nr}return t.next_out=o,t.avail_out=c,t.next_in=a,t.avail_in=s,r.hold=l,r.bits=d,(r.wsize||u!==t.avail_out&&r.mode<be&&(r.mode<Mu||e!==Km))&&j0(t,t.output,t.next_out,u-t.avail_out),f-=t.avail_in,u-=t.avail_out,t.total_in+=f,t.total_out+=u,r.total+=u,r.wrap&4&&u&&(t.adler=r.check=r.flags?Fe(r.check,i,u,t.next_out-u):ps(r.check,i,u,t.next_out-u)),t.data_type=r.bits+(r.last?64:0)+(r.mode===rn?128:0)+(r.mode===dc||r.mode===wu?256:0),(f===0&&u===0||e===Km)&&E===Ai&&(E=W_),E},J_=t=>{if(Li(t))return nr;let e=t.state;return e.window&&(e.window=null),t.state=null,Ai},eS=(t,e)=>{if(Li(t))return nr;let r=t.state;return(r.wrap&2)===0?nr:(r.head=e,e.done=!1,Ai)},tS=(t,e)=>{let r=e.length,n,i,a;return Li(t)||(n=t.state,n.wrap!==0&&n.mode!==pc)?nr:n.mode===pc&&(i=1,i=ps(i,e,r,0),i!==n.check)?G0:(a=j0(t,e,r,r),a?(n.mode=X0,W0):(n.havedict=1,Ai))},rS=$0,nS=q0,iS=Y0,aS=Z_,oS=Z0,sS=Q_,lS=J_,cS=eS,dS=tS,uS="pako inflate (from Nodeca project)",an={inflateReset:rS,inflateReset2:nS,inflateResetKeep:iS,inflateInit:aS,inflateInit2:oS,inflate:sS,inflateEnd:lS,inflateGetHeader:cS,inflateSetDictionary:dS,inflateInfo:uS};function fS(){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 hS=fS,Q0=Object.prototype.toString,{Z_NO_FLUSH:mS,Z_FINISH:pS,Z_OK:bs,Z_STREAM_END:Lu,Z_NEED_DICT:Tu,Z_STREAM_ERROR:gS,Z_DATA_ERROR:y0,Z_MEM_ERROR:yS}=Ei;function Ss(t){this.options=yc.assign({chunkSize:1024*64,windowBits:15,to:""},t||{});let e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new U0,this.strm.avail_out=0;let r=an.inflateInit2(this.strm,e.windowBits);if(r!==bs)throw new Error(wi[r]);if(this.header=new hS,an.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=ys.string2buf(e.dictionary):Q0.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=an.inflateSetDictionary(this.strm,e.dictionary),r!==bs)))throw new Error(wi[r])}Ss.prototype.push=function(t,e){let r=this.strm,n=this.options.chunkSize,i=this.options.dictionary,a,o,s;if(this.ended)return!1;for(e===~~e?o=e:o=e===!0?pS:mS,Q0.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;){for(r.avail_out===0&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),a=an.inflate(r,o),a===Tu&&i&&(a=an.inflateSetDictionary(r,i),a===bs?a=an.inflate(r,o):a===y0&&(a=Tu));r.avail_in>0&&a===Lu&&r.state.wrap>0&&t[r.next_in]!==0;)an.inflateReset(r),a=an.inflate(r,o);switch(a){case gS:case y0:case Tu:case yS:return this.onEnd(a),this.ended=!0,!1}if(s=r.avail_out,r.next_out&&(r.avail_out===0||a===Lu))if(this.options.to==="string"){let c=ys.utf8border(r.output,r.next_out),l=r.next_out-c,d=ys.buf2string(r.output,c);r.next_out=l,r.avail_out=n-l,l&&r.output.set(r.output.subarray(c,c+l),0),this.onData(d)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(!(a===bs&&s===0)){if(a===Lu)return a=an.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(r.avail_in===0)break}}return!0};Ss.prototype.onData=function(t){this.chunks.push(t)};Ss.prototype.onEnd=function(t){t===bs&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=yc.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Wu(t,e){let r=new Ss(e);if(r.push(t),r.err)throw r.msg||wi[r.err];return r.result}function bS(t,e){return e=e||{},e.raw=!0,Wu(t,e)}var xS=Ss,vS=Wu,_S=bS,SS=Wu,wS=Ei,MS={Inflate:xS,inflate:vS,inflateRaw:_S,ungzip:SS,constants:wS},{Deflate:AS,deflate:ES,deflateRaw:LS,gzip:TS}=I_,{Inflate:RS,inflate:CS,inflateRaw:PS,ungzip:IS}=MS,BS=AS,FS=ES,kS=LS,DS=TS,zS=RS,OS=CS,US=PS,NS=IS,HS=Ei,Xu={Deflate:BS,deflate:FS,deflateRaw:kS,gzip:DS,Inflate:zS,inflate:OS,inflateRaw:US,ungzip:NS,constants:HS};var Ia=class Ia{constructor(e=Ia.INITIAL_SIZE){this.buffer=new Uint8Array(e),this.readOffset=0,this.writeOffset=0}append(e){let r=e instanceof Uint8Array?e:new Uint8Array(e),n=this.writeOffset+r.length;n>this.buffer.length&&this.grow(n),this.buffer.set(r,this.writeOffset),this.writeOffset+=r.length}hasBytes(e){return this.writeOffset-this.readOffset>=e}available(){return this.writeOffset-this.readOffset}readByte(){if(!this.hasBytes(1))throw new Error("Buffer underflow");return this.buffer[this.readOffset++]}readShort(){if(!this.hasBytes(2))throw new Error("Buffer underflow");let e=this.buffer[this.readOffset]|this.buffer[this.readOffset+1]<<8;return this.readOffset+=2,e>32767?e-65536:e}readLong(){if(!this.hasBytes(4))throw new Error("Buffer underflow");let e=this.buffer[this.readOffset]|this.buffer[this.readOffset+1]<<8|this.buffer[this.readOffset+2]<<16|this.buffer[this.readOffset+3]<<24;return this.readOffset+=4,e}readFloat(){if(!this.hasBytes(4))throw new Error("Buffer underflow");let r=new DataView(this.buffer.buffer,this.buffer.byteOffset+this.readOffset,4).getFloat32(0,!0);return this.readOffset+=4,r}readString(){let e=Math.min(Ia.MAX_STRING_LENGTH,this.writeOffset-this.readOffset),r=0;for(;r<e&&this.buffer[this.readOffset+r]!==0;)r++;if(r>=e)throw this.writeOffset-this.readOffset<=e?new Error("Buffer underflow"):new Error("String exceeds max length");let n=this.buffer.slice(this.readOffset,this.readOffset+r);return this.readOffset+=r+1,new TextDecoder("latin1").decode(n)}peekBytes(e){if(!this.hasBytes(e))throw new Error("Buffer underflow");return this.buffer.slice(this.readOffset,this.readOffset+e)}readBytes(e){if(!this.hasBytes(e))throw new Error("Buffer underflow");let r=this.buffer.slice(this.readOffset,this.readOffset+e);return this.readOffset+=e,r}readData(e){return this.readBytes(e)}getReadPosition(){return this.readOffset}getWritePosition(){return this.writeOffset}setReadPosition(e){if(e<0||e>this.writeOffset)throw new Error("Invalid read position");this.readOffset=e}grow(e){let r=e?Math.max(e,this.buffer.length*2):this.buffer.length*2,n=new Uint8Array(r);n.set(this.buffer),this.buffer=n}compact(){if(this.readOffset===0)return;let e=this.writeOffset-this.readOffset;if(e===0){this.readOffset=0,this.writeOffset=0;return}this.buffer.copyWithin(0,this.readOffset,this.writeOffset),this.readOffset=0,this.writeOffset=e}getCapacity(){return this.buffer.length}reset(){this.readOffset=0,this.writeOffset=0}};Ia.INITIAL_SIZE=64*1024,Ia.MAX_STRING_LENGTH=2048;var Vn=Ia;var kr=()=>({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}),hr=()=>({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,watertype:0});var J0={0:T.bad,1:T.nop,2:T.disconnect,3:T.reconnect,4:T.download,5:T.frame,6:T.inventory,7:T.layout,8:T.muzzleflash,9:T.temp_entity,10:T.sound,11:T.print,12:T.stufftext,13:T.serverdata,14:T.configstring,15:T.spawnbaseline,16:T.centerprint,17:T.playerinfo,18:T.packetentities,19:T.deltapacketentities,20:T.muzzleflash2},xc=class{constructor(){this.protocolVersion=34}translateCommand(e){return J0[e]!==void 0?J0[e]:T.bad}parseServerData(e){let r=e.readLong(),n=e.readLong(),i=e.readByte(),a=e.readString(),o=e.readShort(),s=e.readString();return{protocol:r,serverCount:n,attractLoop:i,gameDir:a,playerNum:o,levelName:s}}parseEntityBits(e){let r=e.readByte();r&gr&&(r|=e.readByte()<<8),r&br&&(r|=e.readByte()<<16),r&xr&&(r|=e.readByte()<<24);let n;return r&Zn?n=e.readShort():n=e.readByte(),{number:n,bits:r,bitsHigh:0}}parseDelta(e,r,n,i,a,o){r.number=e.number,r.modelindex=e.modelindex,r.modelindex2=e.modelindex2,r.modelindex3=e.modelindex3,r.modelindex4=e.modelindex4,r.frame=e.frame,r.skinnum=e.skinnum,r.effects=e.effects,r.renderfx=e.renderfx,r.origin.x=e.origin.x,r.origin.y=e.origin.y,r.origin.z=e.origin.z,r.old_origin.x=e.origin.x,r.old_origin.y=e.origin.y,r.old_origin.z=e.origin.z,r.angles.x=e.angles.x,r.angles.y=e.angles.y,r.angles.z=e.angles.z,r.sound=e.sound,r.event=e.event,r.solid=e.solid,r.number=n,r.bits=i,i&vt&&(r.modelindex=o.readByte()),i&St&&(r.modelindex2=o.readByte()),i&wt&&(r.modelindex3=o.readByte()),i&Mt&&(r.modelindex4=o.readByte()),i&gt&&(r.frame=o.readByte()),i&_t&&(r.frame=o.readShort()),i&He&&i&We?r.skinnum=o.readLong():i&He?r.skinnum=o.readByte():i&We&&(r.skinnum=o.readShort()),i&Ne&&i&Ge?r.effects=o.readLong():i&Ne?r.effects=o.readByte():i&Ge&&(r.effects=o.readShort()),i&Ue&&i&Ve?r.renderfx=o.readLong():i&Ue?r.renderfx=o.readByte():i&Ve&&(r.renderfx=o.readShort()),i&ft&&(r.origin.x=o.readShort()*.125),i&ht&&(r.origin.y=o.readShort()*.125),i&bt&&(r.origin.z=o.readShort()*.125),i&xt&&(r.angles.x=o.readByte()*(360/256)),i&mt&&(r.angles.y=o.readByte()*(360/256)),i&pt&&(r.angles.z=o.readByte()*(360/256)),i&sr&&(r.old_origin.x=o.readShort()*.125,r.old_origin.y=o.readShort()*.125,r.old_origin.z=o.readShort()*.125),i&At&&(r.sound=o.readByte()),i&yt?r.event=o.readByte():r.event=0,i&Et&&(r.solid=o.readShort())}parsePlayerState(e){let r=hr(),n=e.readShort();n&1&&(r.pm_type=e.readByte()),n&2&&(r.origin.x=e.readShort()*.125,r.origin.y=e.readShort()*.125,r.origin.z=e.readShort()*.125),n&4&&(r.velocity.x=e.readShort()*.125,r.velocity.y=e.readShort()*.125,r.velocity.z=e.readShort()*.125),n&8&&(r.pm_time=e.readByte()),n&16&&(r.pm_flags=e.readByte()),n&32&&(r.gravity=e.readShort()),n&64&&(r.delta_angles.x=e.readShort()*(180/32768),r.delta_angles.y=e.readShort()*(180/32768),r.delta_angles.z=e.readShort()*(180/32768)),n&128&&(r.viewoffset.x=(e.readByte()<<24>>24)*.25,r.viewoffset.y=(e.readByte()<<24>>24)*.25,r.viewoffset.z=(e.readByte()<<24>>24)*.25),n&256&&(r.viewangles.x=e.readShort()*(360/65536),r.viewangles.y=e.readShort()*(360/65536),r.viewangles.z=e.readShort()*(360/65536)),n&512&&(r.kick_angles.x=(e.readByte()<<24>>24)*.25,r.kick_angles.y=(e.readByte()<<24>>24)*.25,r.kick_angles.z=(e.readByte()<<24>>24)*.25),n&4096&&(r.gun_index=e.readByte()),n&8192&&(r.gun_frame=e.readByte(),r.gun_offset.x=(e.readByte()<<24>>24)*.25,r.gun_offset.y=(e.readByte()<<24>>24)*.25,r.gun_offset.z=(e.readByte()<<24>>24)*.25,r.gun_angles.x=(e.readByte()<<24>>24)*.25,r.gun_angles.y=(e.readByte()<<24>>24)*.25,r.gun_angles.z=(e.readByte()<<24>>24)*.25),n&1024&&(r.blend[0]=e.readByte(),r.blend[1]=e.readByte(),r.blend[2]=e.readByte(),r.blend[3]=e.readByte()),n&2048&&(r.fov=e.readByte()),n&16384&&(r.rdflags=e.readByte()),n&32768&&(r.watertype=e.readByte());let i=e.readLong();for(let a=0;a<32;a++)i&1<<a&&(r.stats[a]=e.readShort());return r}};var Dr=2023,vc=class{constructor(){this.protocolVersion=Dr}translateCommand(e){return e}parseServerData(e){let r=e.readLong(),n=e.readLong(),i=e.readByte(),a=e.readByte(),o=e.readString(),s=e.readShort();if(s===-2){let l=e.readShort();for(let d=0;d<l;d++)e.readShort();s=0}else s===-1&&(s=-1);let c=e.readString();return{protocol:r,serverCount:n,spawnCount:n,attractLoop:0,gameDir:o,playerNum:s,levelName:c,tickRate:a,demoType:i}}parseEntityBits(e){let r=e.readByte();r&gr&&(r|=e.readByte()<<8),r&br&&(r|=e.readByte()<<16),r&xr&&(r|=e.readByte()<<24);let n=0;r&Ii&&(n=e.readByte());let i;return r&Zn?i=e.readShort():i=e.readByte(),{number:i,bits:r,bitsHigh:n}}parseDelta(e,r,n,i,a,o){Object.assign(r,e),r.origin={...e.origin},r.old_origin={...e.old_origin},r.angles={...e.angles},r.number=n,r.bits=i,r.bitsHigh=a,i&vt&&(r.modelindex=o.readByte()),i&St&&(r.modelindex2=o.readByte()),i&wt&&(r.modelindex3=o.readByte()),i&Mt&&(r.modelindex4=o.readByte()),i&gt&&(r.frame=o.readByte()),i&_t&&(r.frame=o.readShort()),i&He&&i&We?r.skinnum=o.readLong():i&He?r.skinnum=o.readByte():i&We&&(r.skinnum=o.readShort()),i&Ne&&i&Ge?r.effects=o.readLong():i&Ne?r.effects=o.readByte():i&Ge&&(r.effects=o.readShort()),i&Ue&&i&Ve?r.renderfx=o.readLong():i&Ue?r.renderfx=o.readByte():i&Ve&&(r.renderfx=o.readShort()),i&ft&&(r.origin.x=o.readShort()*.125),i&ht&&(r.origin.y=o.readShort()*.125),i&bt&&(r.origin.z=o.readShort()*.125),i&xt&&(r.angles.x=o.readByte()*(360/256)),i&mt&&(r.angles.y=o.readByte()*(360/256)),i&pt&&(r.angles.z=o.readByte()*(360/256)),i&sr&&(r.old_origin.x=o.readShort()*.125,r.old_origin.y=o.readShort()*.125,r.old_origin.z=o.readShort()*.125),i&At&&(r.sound=o.readByte()),i&yt?r.event=o.readByte():r.event=0,i&Et&&(r.solid=o.readShort()),i&yr&&(r.alpha=o.readByte()/255),i&vr&&(r.scale=o.readFloat()),i&_r&&(r.instanceBits=o.readLong()),i&Sr&&(r.loopVolume=o.readByte()/255),a&un&&(r.loopAttenuation=o.readByte()/255),a&fn&&(r.owner=o.readShort()),a&hn&&(r.oldFrame=o.readShort())}parsePlayerState(e){let r=hr(),n=e.readShort();n&1&&(r.pm_type=e.readByte()),n&2&&(r.origin.x=e.readShort()*.125,r.origin.y=e.readShort()*.125,r.origin.z=e.readShort()*.125),n&4&&(r.velocity.x=e.readShort()*.125,r.velocity.y=e.readShort()*.125,r.velocity.z=e.readShort()*.125),n&8&&(r.pm_time=e.readByte()),n&16&&(r.pm_flags=e.readByte()),n&32&&(r.gravity=e.readShort()),n&64&&(r.delta_angles.x=e.readShort()*(180/32768),r.delta_angles.y=e.readShort()*(180/32768),r.delta_angles.z=e.readShort()*(180/32768)),n&128&&(r.viewoffset.x=(e.readByte()<<24>>24)*.25,r.viewoffset.y=(e.readByte()<<24>>24)*.25,r.viewoffset.z=(e.readByte()<<24>>24)*.25),n&256&&(r.viewangles.x=e.readShort()*(360/65536),r.viewangles.y=e.readShort()*(360/65536),r.viewangles.z=e.readShort()*(360/65536)),n&512&&(r.kick_angles.x=(e.readByte()<<24>>24)*.25,r.kick_angles.y=(e.readByte()<<24>>24)*.25,r.kick_angles.z=(e.readByte()<<24>>24)*.25),n&4096&&(r.gun_index=e.readByte()),n&8192&&(r.gun_frame=e.readByte(),r.gun_offset.x=(e.readByte()<<24>>24)*.25,r.gun_offset.y=(e.readByte()<<24>>24)*.25,r.gun_offset.z=(e.readByte()<<24>>24)*.25,r.gun_angles.x=(e.readByte()<<24>>24)*.25,r.gun_angles.y=(e.readByte()<<24>>24)*.25,r.gun_angles.z=(e.readByte()<<24>>24)*.25),n&1024&&(r.blend[0]=e.readByte(),r.blend[1]=e.readByte(),r.blend[2]=e.readByte(),r.blend[3]=e.readByte()),n&2048&&(r.fov=e.readByte()),n&16384&&(r.rdflags=e.readByte()),n&32768&&(r.watertype=e.readByte());let i=e.readLong();for(let a=0;a<32;a++)i&1<<a&&(r.stats[a]=e.readShort());return r}};var _c=class{constructor(e=0){this.protocolVersion=e}translateCommand(e){return e}parseServerData(e){let r=e.readLong(),n=e.readLong(),i=e.readByte(),a=e.readString(),o=e.readShort(),s=e.readString();return{protocol:r,serverCount:n,attractLoop:i,gameDir:a,playerNum:o,levelName:s}}parseEntityBits(e){let r=e.readByte();r&gr&&(r|=e.readByte()<<8),r&br&&(r|=e.readByte()<<16),r&xr&&(r|=e.readByte()<<24);let n;return r&Zn?n=e.readShort():n=e.readByte(),{number:n,bits:r,bitsHigh:0}}parseDelta(e,r,n,i,a,o){r.number=e.number,r.modelindex=e.modelindex,r.modelindex2=e.modelindex2,r.modelindex3=e.modelindex3,r.modelindex4=e.modelindex4,r.frame=e.frame,r.skinnum=e.skinnum,r.effects=e.effects,r.renderfx=e.renderfx,r.origin.x=e.origin.x,r.origin.y=e.origin.y,r.origin.z=e.origin.z,r.old_origin.x=e.origin.x,r.old_origin.y=e.origin.y,r.old_origin.z=e.origin.z,r.angles.x=e.angles.x,r.angles.y=e.angles.y,r.angles.z=e.angles.z,r.sound=e.sound,r.event=e.event,r.solid=e.solid,r.number=n,r.bits=i,i&vt&&(r.modelindex=o.readByte()),i&St&&(r.modelindex2=o.readByte()),i&wt&&(r.modelindex3=o.readByte()),i&Mt&&(r.modelindex4=o.readByte()),i&gt&&(r.frame=o.readByte()),i&_t&&(r.frame=o.readShort()),i&He&&i&We?r.skinnum=o.readLong():i&He?r.skinnum=o.readByte():i&We&&(r.skinnum=o.readShort()),i&Ne&&i&Ge?r.effects=o.readLong():i&Ne?r.effects=o.readByte():i&Ge&&(r.effects=o.readShort()),i&Ue&&i&Ve?r.renderfx=o.readLong():i&Ue?r.renderfx=o.readByte():i&Ve&&(r.renderfx=o.readShort()),i&ft&&(r.origin.x=o.readShort()*.125),i&ht&&(r.origin.y=o.readShort()*.125),i&bt&&(r.origin.z=o.readShort()*.125),i&xt&&(r.angles.x=o.readByte()*(360/256)),i&mt&&(r.angles.y=o.readByte()*(360/256)),i&pt&&(r.angles.z=o.readByte()*(360/256)),i&sr&&(r.old_origin.x=o.readShort()*.125,r.old_origin.y=o.readShort()*.125,r.old_origin.z=o.readShort()*.125),i&At&&(r.sound=o.readByte()),i&yt?r.event=o.readByte():r.event=0,i&Et&&(r.solid=o.readShort())}parsePlayerState(e){let r=hr(),n=e.readShort();n&1&&(r.pm_type=e.readByte()),n&2&&(r.origin.x=e.readShort()*.125,r.origin.y=e.readShort()*.125,r.origin.z=e.readShort()*.125),n&4&&(r.velocity.x=e.readShort()*.125,r.velocity.y=e.readShort()*.125,r.velocity.z=e.readShort()*.125),n&8&&(r.pm_time=e.readByte()),n&16&&(r.pm_flags=e.readByte()),n&32&&(r.gravity=e.readShort()),n&64&&(r.delta_angles.x=e.readShort()*(180/32768),r.delta_angles.y=e.readShort()*(180/32768),r.delta_angles.z=e.readShort()*(180/32768)),n&128&&(r.viewoffset.x=(e.readByte()<<24>>24)*.25,r.viewoffset.y=(e.readByte()<<24>>24)*.25,r.viewoffset.z=(e.readByte()<<24>>24)*.25),n&256&&(r.viewangles.x=e.readShort()*(360/65536),r.viewangles.y=e.readShort()*(360/65536),r.viewangles.z=e.readShort()*(360/65536)),n&512&&(r.kick_angles.x=(e.readByte()<<24>>24)*.25,r.kick_angles.y=(e.readByte()<<24>>24)*.25,r.kick_angles.z=(e.readByte()<<24>>24)*.25),n&4096&&(r.gun_index=e.readByte()),n&8192&&(r.gun_frame=e.readByte(),r.gun_offset.x=(e.readByte()<<24>>24)*.25,r.gun_offset.y=(e.readByte()<<24>>24)*.25,r.gun_offset.z=(e.readByte()<<24>>24)*.25,r.gun_angles.x=(e.readByte()<<24>>24)*.25,r.gun_angles.y=(e.readByte()<<24>>24)*.25,r.gun_angles.z=(e.readByte()<<24>>24)*.25),n&1024&&(r.blend[0]=e.readByte(),r.blend[1]=e.readByte(),r.blend[2]=e.readByte(),r.blend[3]=e.readByte()),n&2048&&(r.fov=e.readByte()),n&16384&&(r.rdflags=e.readByte()),n&32768&&(r.watertype=e.readByte());let i=e.readLong();for(let a=0;a<32;a++)i&1<<a&&(r.stats[a]=e.readShort());return r}};var ws=class{constructor(){this.protocolVersion=0}translateCommand(e){return e===7?T.serverdata:e===12?T.serverdata:e===13?T.serverdata:e===T.stufftext?T.stufftext:T.bad}parseServerData(e){let r=e.readLong();if(r===Dr){let n=e.readLong(),i=e.readByte(),a=e.readByte(),o=e.readString(),s=e.readShort();if(s===-2){let l=e.readShort();for(let d=0;d<l;d++)e.readShort();s=0}else s===-1&&(s=-1);let c=e.readString();return{protocol:r,serverCount:n,spawnCount:n,attractLoop:0,gameDir:o,playerNum:s,levelName:c,tickRate:a,demoType:i}}else{let n=e.readLong(),i=e.readByte(),a=e.readString(),o=e.readShort(),s=e.readString();return{protocol:r,serverCount:n,attractLoop:i,gameDir:a,playerNum:o,levelName:s}}}parseEntityBits(e){throw new Error("Bootstrap handler cannot parse entities")}parseDelta(e,r,n,i,a,o){throw new Error("Bootstrap handler cannot parse delta")}parsePlayerState(e){throw new Error("Bootstrap handler cannot parse player state")}};function ep(t){return t===0?new ws:t===Dr?new vc:t===34?new xc:new _c(t)}var tp=1,VS=2,GS=128,Ku=class extends Vn{constructor(r){super(0);this.stream=r}readByte(){return this.stream.readByte()}readShort(){return this.stream.readShort()}readLong(){return this.stream.readLong()}readFloat(){return this.stream.readFloat()}readString(){return this.stream.readString()}readData(r){return this.stream.readData(r)}hasBytes(r){return this.stream.hasMore()}available(){return this.stream.getRemaining()}getReadPosition(){return this.stream.getPosition()}peekBytes(r){throw new Error("peekBytes not implemented for BinaryStreamAdapter")}},ct=class t{constructor(e,r,n=!1){this.strictMode=!1;this.errorCount=0;this.isDemo=tp;e instanceof mn?this.stream=new Ku(e):this.stream=e,this.handler=r,this.strictMode=n,this.protocolHandler=new ws}setProtocolVersion(e){this.protocolHandler.protocolVersion!==e&&(this.protocolHandler=ep(e))}getProtocolVersion(){return this.protocolHandler.protocolVersion}getErrorCount(){return this.errorCount}parseMessage(){for(;this.stream.hasBytes(1);){let e=this.stream.getReadPosition(),r=-1;try{if(r=this.stream.readByte(),r===-1)break;let n=r,i=this.protocolHandler.translateCommand(r);switch(i){case T.bad:if(n===0)return;let a=`Unknown server command: ${n} (translated: ${i}) at offset ${e} (Protocol: ${this.getProtocolVersion()})`;if(this.strictMode)throw new Error(a);console.warn(a),this.errorCount++;return;case T.nop:break;case T.disconnect:this.handler?.onDisconnect&&this.handler.onDisconnect();break;case T.reconnect:this.handler?.onReconnect&&this.handler.onReconnect();break;case T.print:this.parsePrint();break;case T.serverdata:this.parseServerData();break;case T.configstring:this.parseConfigString();break;case T.spawnbaseline:this.parseSpawnBaseline();break;case T.centerprint:this.parseCenterPrint();break;case T.download:this.parseDownload();break;case T.frame:this.parseFrame();break;case T.packetentities:this.parsePacketEntities(!1);break;case T.deltapacketentities:this.parsePacketEntities(!0);break;case T.playerinfo:this.parsePlayerState();break;case T.stufftext:this.parseStuffText();break;case T.layout:this.parseLayout();break;case T.inventory:this.parseInventory();break;case T.sound:this.parseSound();break;case T.muzzleflash:this.parseMuzzleFlash();break;case T.muzzleflash2:this.parseMuzzleFlash2();break;case T.temp_entity:this.parseTempEntity();break;case T.splitclient:this.parseSplitClient();break;case T.configblast:this.parseConfigBlast();break;case T.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case T.level_restart:this.handler?.onLevelRestart&&this.handler.onLevelRestart();break;case T.damage:this.parseDamage();break;case T.locprint:this.parseLocPrint();break;case T.fog:this.parseFog();break;case T.waitingforplayers:this.parseWaitingForPlayers();break;case T.bot_chat:this.parseBotChat();break;case T.poi:this.parsePoi();break;case T.help_path:this.parseHelpPath();break;case T.muzzleflash3:this.parseMuzzleFlash3();break;case T.achievement:this.parseAchievement();break;default:let o=`Unknown server command: ${n} (translated: ${i}) at offset ${e}`;if(this.strictMode)throw new Error(o);console.warn(o),this.errorCount++;return}}catch(n){let i=n.message;if(i==="Buffer underflow"||i.includes("StreamingBuffer")){try{this.stream.setReadPosition(e)}catch(o){console.error("Failed to rollback stream position",o)}return}let a=`offset ${e}, cmd ${r}, protocol ${this.getProtocolVersion()}`;if(console.warn(`Error parsing command ${r} (${a}): ${i}`),this.errorCount++,this.strictMode)throw n;return}}}readAngle16(){return this.stream.readShort()*(360/65536)}readCoord(){return this.stream.readShort()*.125}readAngle(){return this.stream.readByte()*(360/256)}readPos(e){e.x=this.stream.readShort()*.125,e.y=this.stream.readShort()*.125,e.z=this.stream.readShort()*.125}readDir(e){let r=this.stream.readByte();if(r>=or.length)e.x=0,e.y=0,e.z=0;else{let n=or[r];e.x=n[0],e.y=n[1],e.z=n[2]}}parsePrint(){let e=this.stream.readByte(),r=this.stream.readString();this.handler&&this.handler.onPrint(e,r)}parseStuffText(){let e=this.stream.readString();this.handler&&this.handler.onStuffText(e)}parseLayout(){let e=this.stream.readString();this.handler&&this.handler.onLayout(e)}parseCenterPrint(){let e=this.stream.readString();this.handler&&this.handler.onCenterPrint(e)}parseServerData(){let e=this.protocolHandler.parseServerData(this.stream);this.setProtocolVersion(e.protocol),this.handler&&this.handler.onServerData(e.protocol,e.serverCount,e.attractLoop,e.gameDir,e.playerNum,e.levelName,e.tickRate,e.demoType),e.protocol===Dr?this.isDemo=e.demoType??tp:this.isDemo=e.attractLoop}parseConfigString(){let e=this.stream.readShort(),r=this.stream.readString();this.handler&&this.handler.onConfigString(e,r)}parseSplitClient(){let e=this.stream.readByte();this.handler?.onSplitClient&&this.handler.onSplitClient(e)}parseConfigBlast(){let e=this.stream.readShort(),r=this.stream.readShort(),n=this.stream.readData(e);try{let i=Xu.inflate(n),a=new mn(i.buffer);for(;a.hasMore();){let o=a.readUShort(),s=a.readString();this.handler&&this.handler.onConfigString(o,s)}}catch(i){console.error("svc_configblast error",i)}}parseSpawnBaselineBlast(){let e=this.stream.readShort(),r=this.stream.readShort(),n=this.stream.readData(e);try{let i=Xu.inflate(n),a=new mn(i.buffer),o=new t(a,this.handler,this.strictMode);for(o.setProtocolVersion(this.getProtocolVersion());a.hasMore();)o.parseSpawnBaseline()}catch(i){console.error("svc_spawnbaselineblast error",i)}}parseLocPrint(){let e=this.stream.readByte(),r=this.stream.readString(),n=this.stream.readByte(),i=[];for(let a=0;a<n;a++)i.push(this.stream.readString());this.handler?.onLocPrint&&this.handler.onLocPrint(e,r,i)}parseWaitingForPlayers(){let e=this.stream.readByte();this.handler?.onWaitingForPlayers&&this.handler.onWaitingForPlayers(e)}parseBotChat(){let e=this.stream.readString(),r=this.stream.readShort(),n=this.stream.readString();this.handler?.onBotChat&&this.handler.onBotChat(n)}parsePoi(){let e=this.stream.readShort(),r=this.stream.readShort(),n={x:0,y:0,z:0};this.readPos(n);let i=this.stream.readShort(),a=this.stream.readByte(),o=this.stream.readByte();this.handler?.onPoi&&this.handler.onPoi(o,n)}parseHelpPath(){let e=this.stream.readByte(),r={x:0,y:0,z:0};this.readPos(r);let n={x:0,y:0,z:0};this.readDir(n),this.handler?.onHelpPath&&this.handler.onHelpPath(r)}parseAchievement(){let e=this.stream.readString();this.handler?.onAchievement&&this.handler.onAchievement(e)}parseDownload(){let e=this.stream.readShort(),r=this.stream.readByte(),n;e>0&&(n=this.stream.readData(e)),this.handler&&this.handler.onDownload(e,r,n)}parseInventory(){let r=new Array(256);for(let n=0;n<256;n++)r[n]=this.stream.readShort();this.handler&&this.handler.onInventory(r)}parseSound(){let e=this.stream.readByte(),r=this.stream.readByte(),n,i,a,o,s;if(e&1&&(n=this.stream.readByte()),e&2&&(i=this.stream.readByte()),e&16&&(a=this.stream.readByte()),e&8&&(o=this.stream.readShort()),e&4){let c={x:0,y:0,z:0};this.readPos(c),s=c}this.handler&&this.handler.onSound(e,r,n,i,a,o,s)}parseMuzzleFlash(){let e=this.stream.readShort(),r=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(e,r)}parseMuzzleFlash2(){let e=this.stream.readShort(),r=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(e,r)}parseMuzzleFlash3(){let e=this.stream.readShort(),r=this.stream.readShort();this.handler?.onMuzzleFlash3&&this.handler.onMuzzleFlash3(e,r)}parseFog(){let e=this.stream.readByte();if(e&128){let n=this.stream.readByte();e|=n<<8}let r={};e&1&&(r.density=this.stream.readFloat(),r.skyfactor=this.stream.readByte()),e&2&&(r.red=this.stream.readByte()),e&4&&(r.green=this.stream.readByte()),e&8&&(r.blue=this.stream.readByte()),e&16&&(r.time=this.stream.readShort()),e&32&&(r.hf_falloff=this.stream.readFloat()),e&64&&(r.hf_density=this.stream.readFloat()),e&256&&(r.hf_start_r=this.stream.readByte()),e&512&&(r.hf_start_g=this.stream.readByte()),e&1024&&(r.hf_start_b=this.stream.readByte()),e&2048&&(r.hf_start_dist=this.stream.readLong()),e&4096&&(r.hf_end_r=this.stream.readByte()),e&8192&&(r.hf_end_g=this.stream.readByte()),e&16384&&(r.hf_end_b=this.stream.readByte()),e&32768&&(r.hf_end_dist=this.stream.readLong()),this.handler?.onFog&&this.handler.onFog(r)}parseDamage(){let e=this.stream.readByte(),r=[];for(let n=0;n<e;n++){let i=this.stream.readByte(),a={x:0,y:0,z:0};this.readDir(a);let o=i&31,s=(i&32)!==0,c=(i&64)!==0,l=(i&128)!==0;r.push({damage:o,health:s,armor:c,power:l,dir:a})}this.handler?.onDamage&&this.handler.onDamage(r)}parseTempEntity(){let e=this.stream.readByte(),r={x:0,y:0,z:0},n={x:0,y:0,z:0},i={x:0,y:0,z:0},a,o,s,c,l;switch(e){case D.EXPLOSION1:case D.EXPLOSION2:case D.ROCKET_EXPLOSION:case D.GRENADE_EXPLOSION:case D.ROCKET_EXPLOSION_WATER:case D.GRENADE_EXPLOSION_WATER:case D.BFG_EXPLOSION:case D.BFG_BIGEXPLOSION:case D.BOSSTPORT:case D.PLASMA_EXPLOSION:case D.PLAIN_EXPLOSION:case D.CHAINFIST_SMOKE:case D.TRACKER_EXPLOSION:case D.TELEPORT_EFFECT:case D.DBALL_GOAL:case D.NUKEBLAST:case D.WIDOWSPLASH:case D.EXPLOSION1_BIG:case D.EXPLOSION1_NP:this.readPos(r);break;case D.GUNSHOT:case D.BLOOD:case D.BLASTER:case D.SHOTGUN:case D.SPARKS:case D.BULLET_SPARKS:case D.SCREEN_SPARKS:case D.SHIELD_SPARKS:case D.BLASTER2:case D.FLECHETTE:case D.MOREBLOOD:case D.ELECTRIC_SPARKS:case D.HEATBEAM_SPARKS:case D.HEATBEAM_STEAM:this.readPos(r),this.readDir(i);break;case D.SPLASH:case D.LASER_SPARKS:case D.WELDING_SPARKS:case D.TUNNEL_SPARKS:a=this.stream.readByte(),this.readPos(r),this.readDir(i),o=this.stream.readByte();break;case D.BLUEHYPERBLASTER:this.getProtocolVersion()>=32?(this.readPos(r),this.readPos(n)):(this.readPos(r),this.readDir(i));break;case D.GREENBLOOD:this.getProtocolVersion()>=32?(this.readPos(r),this.readDir(i)):(this.readPos(r),this.readPos(n));break;case D.RAILTRAIL:case D.BUBBLETRAIL:case D.BFG_LASER:case D.DEBUGTRAIL:case D.BUBBLETRAIL2:this.readPos(r),this.readPos(n);break;case D.PARASITE_ATTACK:case D.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.readPos(r),this.readPos(n);break;case D.GRAPPLE_CABLE:s=this.stream.readShort(),this.readPos(r),this.readPos(n),this.readPos(i);break;case D.LIGHTNING:c=this.stream.readShort(),l=this.stream.readShort(),this.readPos(r),this.readPos(n);break;case D.FLASHLIGHT:this.readPos(r),s=this.stream.readShort();break;case D.FORCEWALL:this.readPos(r),this.readPos(n),o=this.stream.readByte();break;case D.STEAM:let d=this.stream.readShort();a=this.stream.readByte(),this.readPos(r),this.readDir(i),o=this.stream.readByte(),this.stream.readShort(),d!==-1&&this.stream.readLong();break;case D.WIDOWBEAMOUT:this.stream.readShort();case D.HEATBEAM:case D.MONSTER_HEATBEAM:s=this.stream.readShort(),this.readPos(r),this.readPos(n),this.readDir(i);break}this.handler&&this.handler.onTempEntity(e,r,n,i,a,o,s,c,l)}parseSpawnBaseline(){let e=this.protocolHandler.parseEntityBits(this.stream),r=kr();this.protocolHandler.parseDelta(kr(),r,e.number,e.bits,e.bitsHigh,this.stream),this.handler&&this.handler.onSpawnBaseline(r)}parseFrame(){let e=this.stream.readLong(),r=this.stream.readLong(),n=0;this.getProtocolVersion()!==26&&this.getProtocolVersion()!==25&&(n=this.stream.readByte());let i=this.stream.readByte(),a=this.stream.readData(i),o=this.stream.readByte();if(o=this.protocolHandler.translateCommand(o),o!==T.playerinfo){if(this.strictMode)throw new Error(`Expected svc_playerinfo after svc_frame, got ${o}`);return}let s=this.parsePlayerState(),c=this.stream.readByte();if(c=this.protocolHandler.translateCommand(c),c!==T.packetentities&&c!==T.deltapacketentities){if(this.strictMode)throw new Error(`Expected svc_packetentities after svc_playerinfo, got ${c}`);return}let l=this.collectPacketEntities();if(this.isDemo===GS){let d=this.stream.readByte();for(let f=0;f<d;f++)this.stream.readByte()}this.isDemo===VS&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:e,deltaFrame:r,surpressCount:n,areaBytes:i,areaBits:a,playerState:s,packetEntities:{delta:!0,entities:l}})}parsePlayerState(){return this.protocolHandler.parsePlayerState(this.stream)}parsePacketEntities(e){let r=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:hr(),packetEntities:{delta:e,entities:r}})}collectPacketEntities(){let e=[];for(;;){let r=this.protocolHandler.parseEntityBits(this.stream);if(r.bits&Xa){if(r.number===0)break;continue}let n=kr();if(r.number===0)break;this.protocolHandler.parseDelta(kr(),n,r.number,r.bits,r.bitsHigh,this.stream),e.push(n)}return e}};var Yu=(d=>(d.WeaponFire="weapon_fire",d.DamageDealt="damage_dealt",d.DamageReceived="damage_received",d.Pickup="pickup",d.Death="death",d.Kill="kill",d.Spawn="spawn",d.PlayerInfo="player_info",d.Chat="chat",d.Objective="objective",d))(Yu||{});var Ba=class{constructor(e){this.events=[];this.summary={totalKills:0,totalDeaths:0,damageDealt:0,damageReceived:0,weaponUsage:new Map};this.header=null;this.configStrings=new Map;this.serverInfo={};this.statistics=null;this.playerStats=new Map;this.weaponStats=new Map;this.activeEntities=new Set;this.buffer=e}analyze(){let e=new fr(this.buffer),r=-1,n=0,i=.1,a=0,o={onServerData:(s,c,l,d,f,u,h,m)=>{a=s,this.header={protocolVersion:s,gameDir:d,levelName:u,playerNum:f,serverCount:c,spawnCount:c,tickRate:h,demoType:m},h&&h>0&&(i=1/h)},onConfigString:(s,c)=>{this.configStrings.set(s,c),s===0&&this.parseServerInfo(c)},onSpawnBaseline:s=>{},onFrame:s=>{let c=new Set;if(s.packetEntities&&s.packetEntities.entities)for(let l of s.packetEntities.entities)c.add(l.number),this.activeEntities.has(l.number)||this.recordEvent({type:"spawn",frame:r,time:n,entityId:l.number,position:{x:l.origin.x,y:l.origin.y,z:l.origin.z},description:`Entity ${l.number} spawned`});this.activeEntities=c,s.playerState&&this.header},onPrint:(s,c)=>{let l=c.replace(/\n/g," ").trim();l.includes("died")||l.includes("killed")||l.includes("suicide")?(this.summary.totalDeaths++,this.recordEvent({type:"death",frame:r,time:n,description:l})):l.startsWith("You got the ")?this.recordEvent({type:"pickup",frame:r,time:n,description:l}):(s===3||s===2)&&this.recordEvent({type:"chat",frame:r,time:n,description:l,data:{level:s}})},onCenterPrint:s=>{this.recordEvent({type:"objective",frame:r,time:n,description:s.trim()})},onStuffText:()=>{},onSound:()=>{},onTempEntity:()=>{},onLayout:()=>{},onInventory:()=>{},onMuzzleFlash:(s,c)=>{this.handleWeaponFire(s,c,r,n)},onMuzzleFlash2:(s,c)=>{this.handleWeaponFire(s,c,r,n)},onMuzzleFlash3:(s,c)=>{this.handleWeaponFire(s,c,r,n)},onDisconnect:()=>{},onReconnect:()=>{},onDownload:()=>{},onDamage:s=>{for(let c of s)if(this.recordEvent({type:"damage_received",frame:r,time:n,value:c.damage,position:c.dir,description:`Took ${c.damage} damage`}),this.summary.damageReceived+=c.damage,this.header){let l=this.getOrCreatePlayerStats(this.header.playerNum);l.damageReceived+=c.damage}}};for(;e.hasMore();){let s=e.readNextBlock();if(!s)break;r++,n=r*i;let c=new ct(s.data,o);c.setProtocolVersion(a),c.parseMessage(),a=c.getProtocolVersion()}return this.statistics={duration:n,frameCount:r+1,averageFps:(r+1)/(n||1),mapName:this.header?.levelName||"unknown",playerCount:1},{events:this.events,summary:this.summary,header:this.header,configStrings:this.configStrings,serverInfo:this.serverInfo,statistics:this.statistics,playerStats:this.playerStats,weaponStats:this.weaponStats}}handleWeaponFire(e,r,n,i){this.recordEvent({type:"weapon_fire",frame:n,time:i,entityId:e,value:r,description:`Weapon ${r} fired by ${e}`});let a=this.summary.weaponUsage.get(r)||0;this.summary.weaponUsage.set(r,a+1);let o=this.getOrCreateWeaponStat(e,r);o.shotsFired++}recordEvent(e){this.events.push(e)}parseServerInfo(e){let r=e.split("\\");for(let n=1;n<r.length;n+=2)n+1<r.length&&(this.serverInfo[r[n]]=r[n+1])}getOrCreatePlayerStats(e){let r=this.playerStats.get(e);return r||(r={kills:0,deaths:0,damageDealt:0,damageReceived:0,suicides:0},this.playerStats.set(e,r)),r}getOrCreateWeaponStat(e,r){let n=this.weaponStats.get(e);n||(n=[],this.weaponStats.set(e,n));let i=n.find(a=>a.weaponId===r);return i||(i={weaponId:r,shotsFired:0,hits:0,kills:0},n.push(i)),i}};var $u=(i=>(i[i.FirstPerson=0]="FirstPerson",i[i.ThirdPerson=1]="ThirdPerson",i[i.Free=2]="Free",i[i.Follow=3]="Follow",i))($u||{});var Sc=(i=>(i[i.Stopped=0]="Stopped",i[i.Playing=1]="Playing",i[i.Paused=2]="Paused",i[i.Finished=3]="Finished",i))(Sc||{}),WS=()=>({onServerData:()=>{},onConfigString:()=>{},onSpawnBaseline:()=>{},onFrame:()=>{},onCenterPrint:()=>{},onStuffText:()=>{},onPrint:()=>{},onSound:()=>{},onTempEntity:()=>{},onLayout:()=>{},onInventory:()=>{},onMuzzleFlash:()=>{},onMuzzleFlash2:()=>{},onDisconnect:()=>{},onReconnect:()=>{},onDownload:()=>{}}),Ms=class{constructor(){this.reader=null;this.buffer=null;this.state=0;this.playbackSpeed=1;this.currentProtocolVersion=0;this.currentFrameIndex=-1;this.lastFrameData=null;this.accumulatedTime=0;this.frameDuration=100;this.snapshotInterval=100;this.snapshots=new Map;this.cachedEvents=null;this.cachedSummary=null;this.cachedHeader=null;this.cachedConfigStrings=null;this.cachedServerInfo=null;this.cachedStatistics=null;this.cachedPlayerStats=null;this.cachedWeaponStats=null;this.tracker=null;this.cameraMode=0;this.thirdPersonDistance=80;this.thirdPersonOffset={x:0,y:0,z:0}}setHandler(e){this.handler=e}setCallbacks(e){this.callbacks=e}loadDemo(e){this.buffer=e,this.reader=new fr(e),this.transitionState(0),this.accumulatedTime=0,this.currentProtocolVersion=0,this.currentFrameIndex=-1,this.snapshots.clear(),this.lastFrameData=null,this.cachedEvents=null,this.cachedSummary=null,this.cachedHeader=null,this.cachedConfigStrings=null,this.cachedServerInfo=null,this.cachedStatistics=null,this.cachedPlayerStats=null,this.cachedWeaponStats=null}play(){this.reader&&this.state!==1&&this.transitionState(1)}pause(){this.state===1&&this.transitionState(2)}stop(){this.transitionState(0),this.reader&&this.reader.reset(),this.accumulatedTime=0,this.currentProtocolVersion=0,this.currentFrameIndex=-1,this.lastFrameData=null}transitionState(e){this.state!==e&&(this.state=e,this.callbacks?.onPlaybackStateChange&&this.callbacks.onPlaybackStateChange(e))}setFrameDuration(e){this.frameDuration=e}setSpeed(e){this.playbackSpeed=Math.max(.1,Math.min(e,16))}getSpeed(){return this.playbackSpeed}getPlaybackSpeed(){return this.playbackSpeed}getInterpolationFactor(){return this.frameDuration<=0?0:Math.max(0,Math.min(1,this.accumulatedTime/this.frameDuration))}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,this.callbacks?.onTimeUpdate&&this.callbacks.onTimeUpdate(this.getCurrentTime())}}stepForward(){this.reader&&(this.processNextFrame(),this.callbacks?.onTimeUpdate&&this.callbacks.onTimeUpdate(this.getCurrentTime()))}stepBackward(){this.reader&&this.currentFrameIndex>0&&this.seek(this.currentFrameIndex-1)}seekToTime(e){let r=this.timeToFrame(e);this.seek(r)}seekToFrame(e){this.seek(e)}frameToTime(e){return e*this.frameDuration/1e3}timeToFrame(e){return Math.floor(e*1e3/this.frameDuration)}playFrom(e){if(e.type==="frame")this.seek(e.frame);else if(e.type==="time")this.seekToTime(e.seconds);else throw new Error(`Invalid offset type: ${e.type}`);this.play()}playRange(e,r){let n=e.type==="frame"?e.frame:this.timeToFrame(e.seconds),i=r.type==="frame"?r.frame:this.timeToFrame(r.seconds),a=this.getTotalFrames(),o=Math.max(0,a-1);if(n<0)throw new Error(`Invalid start offset: ${n}`);if(i<n)throw new Error(`End offset (${i}) cannot be before start offset (${n})`);this.playFrom(e);let s=this.callbacks?.onFrameUpdate,c={...this.callbacks,onFrameUpdate:l=>{if(s&&s(l),this.currentFrameIndex>=i){this.pause();let d=this.callbacks?.onPlaybackComplete;this.callbacks===c&&this.setCallbacks({...this.callbacks,onFrameUpdate:s}),d&&d()}}};this.setCallbacks(c)}seek(e){if(!this.reader)return;let r=this.getTotalFrames();if(r>0&&e>=r&&(e=r-1),e<0&&(e=0),e===this.currentFrameIndex+1){this.processNextFrame(),this.callbacks?.onSeekComplete&&this.callbacks.onSeekComplete();return}if(e===this.currentFrameIndex){this.callbacks?.onSeekComplete&&this.callbacks.onSeekComplete();return}let n=-1,i=null;if(e>this.currentFrameIndex&&this.currentFrameIndex!==-1&&(n=this.currentFrameIndex),this.callbacks?.onRestoreSnapshot)for(let[a,o]of this.snapshots)a<=e&&a>n&&(n=a,i=o);for(n===-1&&this.currentFrameIndex>e?(this.reader.reset(),this.currentFrameIndex=-1,this.currentProtocolVersion=0):n===-1&&(this.reader.reset(),this.currentFrameIndex=-1,this.currentProtocolVersion=0),i&&this.callbacks?.onRestoreSnapshot&&(this.callbacks.onRestoreSnapshot(i),this.reader.seekToMessage(n+1)?this.currentFrameIndex=n:(this.reader.reset(),this.currentFrameIndex=-1,this.currentProtocolVersion=0));this.currentFrameIndex<e&&(this.callbacks?.onCaptureSnapshot&&(this.currentFrameIndex+1)%this.snapshotInterval,!!this.processNextFrame()););this.accumulatedTime=0,this.callbacks?.onSeekComplete&&this.callbacks.onSeekComplete(),this.callbacks?.onTimeUpdate&&this.callbacks.onTimeUpdate(this.getCurrentTime())}processNextFrame(){if(!this.reader||!this.reader.hasMore())return this.transitionState(3),this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),!1;let e=this.reader.readNextBlock();if(!e)return this.transitionState(3),this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),!1;this.currentFrameIndex++,this.tracker&&(this.tracker.setCurrentFrame(this.currentFrameIndex),this.tracker.setCurrentTime(this.getCurrentTime()));try{let r={...this.handler||WS(),onFrame:i=>{this.lastFrameData=i,this.handler?.onFrame&&this.handler.onFrame(i),this.callbacks?.onFrameUpdate&&this.callbacks.onFrameUpdate(i)}},n=new ct(e.data,r);if(n.setProtocolVersion(this.currentProtocolVersion),n.parseMessage(),this.currentProtocolVersion=n.getProtocolVersion(),this.callbacks?.onCaptureSnapshot&&this.currentFrameIndex%this.snapshotInterval===0&&this.currentFrameIndex>0){let i=this.callbacks.onCaptureSnapshot(this.currentFrameIndex);i&&this.snapshots.set(this.currentFrameIndex,i)}}catch(r){return console.error("Error processing demo frame",r),this.callbacks?.onPlaybackError&&this.callbacks.onPlaybackError(r instanceof Error?r:new Error(String(r))),!1}return!0}getState(){return this.state}getCurrentTime(){return this.currentFrameIndex<0?this.accumulatedTime/1e3:(this.currentFrameIndex*this.frameDuration+this.accumulatedTime)/1e3}getFrameCount(){return this.reader?this.reader.getMessageCount():0}getTotalFrames(){return this.getFrameCount()}getCurrentFrame(){return this.currentFrameIndex<0?0:this.currentFrameIndex}getDuration(){return this.getFrameCount()*this.frameDuration/1e3}getTotalBytes(){return this.reader?this.reader.getProgress().total:0}getProcessedBytes(){return this.reader?this.reader.getOffset():0}getFrameData(e){if(e===this.currentFrameIndex&&this.lastFrameData)return this.lastFrameData;let r=this.state;return this.pause(),this.seek(e),r===1&&this.play(),this.lastFrameData}getFramePlayerState(e){if(e===this.currentFrameIndex&&this.handler?.getPlayerState){let n=this.handler.getPlayerState();if(n)return n}let r=this.getFrameData(e);return r?r.playerState:null}getFrameEntities(e){if(e===this.currentFrameIndex&&this.handler?.getEntities){let r=this.handler.getEntities();if(r)return Array.from(r.values())}if(this.seek(e),this.handler?.getEntities){let r=this.handler.getEntities();return r?Array.from(r.values()):[]}return[]}compareFrames(e,r){let n=this.getFramePlayerState(e),i=this.getFrameEntities(e),a=new Map;i.forEach(d=>a.set(d.number,d));let o=this.getFramePlayerState(r),s=this.getFrameEntities(r),c=new Map;s.forEach(d=>c.set(d.number,d));let l={frameA:e,frameB:r,playerStateDiff:{origin:null,viewangles:null,health:null,ammo:null},entityDiffs:{added:[],removed:[],moved:[]}};n&&o&&((n.origin.x!==o.origin.x||n.origin.y!==o.origin.y||n.origin.z!==o.origin.z)&&(l.playerStateDiff.origin={x:o.origin.x-n.origin.x,y:o.origin.y-n.origin.y,z:o.origin.z-n.origin.z}),n.stats[1]!==o.stats[1]&&(l.playerStateDiff.health=o.stats[1]-n.stats[1]),n.stats[2]!==o.stats[2]&&(l.playerStateDiff.ammo=o.stats[2]-n.stats[2]));for(let[d,f]of c){let u=a.get(d);u?(u.origin.x!==f.origin.x||u.origin.y!==f.origin.y||u.origin.z!==f.origin.z)&&l.entityDiffs.moved.push({id:d,delta:{x:f.origin.x-u.origin.x,y:f.origin.y-u.origin.y,z:f.origin.z-u.origin.z}}):l.entityDiffs.added.push(d)}for(let[d,f]of a)c.has(d)||l.entityDiffs.removed.push(d);return l}getEntityTrajectory(e,r,n){let i=[],a=this.getCurrentFrame();for(this.seek(r);this.getCurrentFrame()<=n&&this.state!==3;){let o=null;if(e===-1){let s=this.getFramePlayerState(this.getCurrentFrame());s&&(o={...s.origin})}else if(this.handler?.getEntities){let s=this.handler.getEntities().get(e);s&&(o={...s.origin})}if(o&&i.push(o),this.getCurrentFrame()===n)break;this.stepForward()}return this.seek(a),i}getEvents(){return this.ensureAnalysis(),this.cachedEvents||[]}getDemoEvents(){return this.getEvents()}filterEvents(e,r){return this.getDemoEvents().filter(i=>!(i.type!==e||r!==void 0&&i.entityId!==r))}getEventSummary(){return this.ensureAnalysis(),this.cachedSummary||{totalKills:0,totalDeaths:0,damageDealt:0,damageReceived:0,weaponUsage:new Map}}getMetadata(){let e=this.getDemoHeader();if(!e)return null;let r=this.getDemoServerInfo(),n="Unknown";return this.cachedConfigStrings,{mapName:e.levelName,playerName:n,serverName:r.hostname,demoVersion:e.protocolVersion,tickRate:e.tickRate||10}}getDemoHeader(){return this.ensureAnalysis(),this.cachedHeader}getDemoConfigStrings(){return this.ensureAnalysis(),this.cachedConfigStrings||new Map}getDemoServerInfo(){return this.ensureAnalysis(),this.cachedServerInfo||{}}getDemoStatistics(){return this.ensureAnalysis(),this.cachedStatistics}getPlayerStatistics(e){return this.ensureAnalysis(),this.cachedPlayerStats?.get(e)||null}getWeaponStatistics(e){return this.ensureAnalysis(),this.cachedWeaponStats?.get(e)||null}ensureAnalysis(){if(!this.cachedEvents&&this.buffer){let r=new Ba(this.buffer).analyze();this.cachedEvents=r.events,this.cachedSummary=r.summary,this.cachedHeader=r.header,this.cachedConfigStrings=r.configStrings,this.cachedServerInfo=r.serverInfo,this.cachedStatistics=r.statistics,this.cachedPlayerStats=r.playerStats,this.cachedWeaponStats=r.weaponStats}}setCameraMode(e){this.cameraMode=e}getCameraMode(){return this.cameraMode}setThirdPersonDistance(e){this.thirdPersonDistance=e}setThirdPersonOffset(e){this.thirdPersonOffset=e}async playWithTracking(e,r={}){if(this.tracker=e,e.startTracking(),r.fastForward)try{this.state===0&&this.reader,this.transitionState(1);let n=100,i=async()=>{if(this.state!==1)throw new Error("Playback stopped unexpectedly during fast forward");let a=0;for(;a<n;){if(!this.processNextFrame()){this.transitionState(0);let o=e.stopTracking();return this.tracker=null,this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),o}a++}return await new Promise(o=>setTimeout(o,0)),i()};return await i()}catch(n){throw this.transitionState(0),e.stopTracking(),this.tracker=null,n}else return new Promise((n,i)=>{let a=this.callbacks?.onPlaybackComplete,o=this.callbacks?.onPlaybackError,s=()=>{this.setCallbacks({...this.callbacks,onPlaybackComplete:a,onPlaybackError:o}),this.tracker=null};this.setCallbacks({...this.callbacks,onPlaybackComplete:()=>{let c=e.stopTracking();a&&a(),s(),n(c)},onPlaybackError:c=>{e.stopTracking(),o&&o(c),s(),i(c)}}),this.play()})}async playRangeWithTracking(e,r,n,i={}){this.tracker=n,n.startTracking();let a=e.type==="frame"?e.frame:this.timeToFrame(e.seconds),o=r.type==="frame"?r.frame:this.timeToFrame(r.seconds);if(i.fastForward)try{this.playFrom(e),this.transitionState(1);let s=100,c=async()=>{if(this.state!==1)throw new Error("Playback stopped unexpectedly during fast forward");let l=0;for(;l<s;){if(this.currentFrameIndex>=o||!this.processNextFrame()){this.transitionState(0);let d=n.stopTracking();return this.tracker=null,this.callbacks?.onPlaybackComplete&&this.callbacks.onPlaybackComplete(),d}l++}return await new Promise(d=>setTimeout(d,0)),c()};return await c()}catch(s){throw this.transitionState(0),n.stopTracking(),this.tracker=null,s}else return new Promise((s,c)=>{let l=this.callbacks?.onPlaybackComplete,d=this.callbacks?.onPlaybackError,f=()=>{this.setCallbacks({...this.callbacks,onPlaybackComplete:l,onPlaybackError:d}),this.tracker=null};this.setCallbacks({...this.callbacks,onPlaybackComplete:()=>{let u=n.stopTracking();l&&l(),f(),s(u)},onPlaybackError:u=>{n.stopTracking(),d&&d(u),f(),c(u)}}),this.playRange(e,r)})}};var As=class{constructor(){this.isRecording=!1;this.startTime=0;this.frameCount=0;this.filename=null;this.lastMessageSize=-1;this.messageBuffer=new jn(1024*1024)}startRecording(e,r=0){this.isRecording||(this.isRecording=!0,this.filename=e,this.startTime=r,this.frameCount=0,this.messageBuffer.reset(),console.log(`DemoRecorder: Started recording to ${e}`))}recordMessage(e){if(this.isRecording){this.messageBuffer.writeLong(e.byteLength);for(let r=0;r<e.length;r++)this.messageBuffer.writeByte(e[r]);this.frameCount++}}stopRecording(){return this.isRecording?(this.isRecording=!1,this.messageBuffer.writeLong(-1),console.log(`DemoRecorder: Stopped recording. Frames: ${this.frameCount}, Size: ${this.messageBuffer.getOffset()} bytes`),this.messageBuffer.getData()):null}getIsRecording(){return this.isRecording}};var wc=class{constructor(e,r=34){this.writer=e||new jn(new Uint8Array(64*1024)),this.protocol=r}getData(){return this.writer.getData()}getOpcode(e){if(this.protocol===34)switch(e){case T.serverdata:return 13;case T.frame:return 5;case T.playerinfo:return 17;case T.packetentities:return 18;case T.deltapacketentities:return 19;case T.print:return 11;case T.centerprint:return 16;case T.stufftext:return 12;case T.sound:return 10;case T.temp_entity:return 9;case T.configstring:return 14;case T.spawnbaseline:return 15;case T.layout:return 7;case T.inventory:return 6;case T.muzzleflash:return 8;case T.muzzleflash2:return 20}return e}writeCommand(e,r){let n=r??this.protocol;n===34||n===0?this.writer.writeByte(this.getOpcode(e)):this.writer.writeByte(e)}writeServerData(e,r,n,i,a,o){this.writeCommand(T.serverdata),this.writer.writeLong(e),this.writer.writeLong(r),this.writer.writeByte(n),this.writer.writeString(i),this.writer.writeShort(a),this.writer.writeString(o)}writeConfigString(e,r){this.writeCommand(T.configstring),this.writer.writeShort(e),this.writer.writeString(r)}writeStuffText(e){this.writeCommand(T.stufftext),this.writer.writeString(e)}writeCenterPrint(e){this.writeCommand(T.centerprint),this.writer.writeString(e)}writePrint(e,r){this.writeCommand(T.print),this.writer.writeByte(e),this.writer.writeString(r)}writeLayout(e){this.writeCommand(T.layout),this.writer.writeString(e)}writeInventory(e){this.writeCommand(T.inventory);for(let r of e)this.writer.writeShort(r);for(let r=e.length;r<256;r++)this.writer.writeShort(0)}writeMuzzleFlash(e,r){this.writeCommand(T.muzzleflash),this.writer.writeShort(e),this.writer.writeByte(r)}writeMuzzleFlash2(e,r){this.writeCommand(T.muzzleflash2),this.writer.writeShort(e),this.writer.writeByte(r)}writeSound(e,r,n,i,a,o,s,c){this.writeCommand(T.sound),this.writer.writeByte(e),this.writer.writeByte(r),e&1&&this.writer.writeByte(n),e&2&&this.writer.writeByte(i),e&16&&this.writer.writeByte(a),e&8&&this.writer.writeShort(o),e&4&&(this.writer.writeCoord(s.x),this.writer.writeCoord(s.y),this.writer.writeCoord(s.z))}writeTempEntity(e,r,n,i,a,o,s,c,l){this.writeCommand(T.temp_entity),this.writer.writeByte(e),r&&this.writer.writePos(r)}writePlayerState(e){this.writeCommand(T.playerinfo);let r=0;e.pm_type!==0&&(r|=1),(e.origin.x!==0||e.origin.y!==0||e.origin.z!==0)&&(r|=2),(e.velocity.x!==0||e.velocity.y!==0||e.velocity.z!==0)&&(r|=4),e.pm_time!==0&&(r|=8),e.pm_flags!==0&&(r|=16),e.gravity!==0&&(r|=32),(e.delta_angles.x!==0||e.delta_angles.y!==0||e.delta_angles.z!==0)&&(r|=64),(e.viewoffset.x!==0||e.viewoffset.y!==0||e.viewoffset.z!==0)&&(r|=128),(e.viewangles.x!==0||e.viewangles.y!==0||e.viewangles.z!==0)&&(r|=256),(e.kick_angles.x!==0||e.kick_angles.y!==0||e.kick_angles.z!==0)&&(r|=512),e.gun_index!==0&&(r|=4096),(e.gun_frame!==0||e.gun_offset.x!==0||e.gun_offset.y!==0||e.gun_offset.z!==0||e.gun_angles.x!==0||e.gun_angles.y!==0||e.gun_angles.z!==0)&&(r|=8192),(e.blend[0]!==0||e.blend[1]!==0||e.blend[2]!==0||e.blend[3]!==0)&&(r|=1024),e.fov!==0&&(r|=2048),e.rdflags!==0&&(r|=16384),e.watertype!==0&&(r|=32768),this.writer.writeShort(r),r&1&&this.writer.writeByte(e.pm_type),r&2&&(this.writer.writeShort(e.origin.x/.125),this.writer.writeShort(e.origin.y/.125),this.writer.writeShort(e.origin.z/.125)),r&4&&(this.writer.writeShort(e.velocity.x/.125),this.writer.writeShort(e.velocity.y/.125),this.writer.writeShort(e.velocity.z/.125)),r&8&&this.writer.writeByte(e.pm_time),r&16&&this.writer.writeByte(e.pm_flags),r&32&&this.writer.writeShort(e.gravity),r&64&&(this.writer.writeShort(e.delta_angles.x/(180/32768)),this.writer.writeShort(e.delta_angles.y/(180/32768)),this.writer.writeShort(e.delta_angles.z/(180/32768))),r&128&&(this.writer.writeByte(e.viewoffset.x/.25),this.writer.writeByte(e.viewoffset.y/.25),this.writer.writeByte(e.viewoffset.z/.25)),r&256&&(this.writer.writeShort(e.viewangles.x/(360/65536)),this.writer.writeShort(e.viewangles.y/(360/65536)),this.writer.writeShort(e.viewangles.z/(360/65536))),r&512&&(this.writer.writeByte(e.kick_angles.x/.25),this.writer.writeByte(e.kick_angles.y/.25),this.writer.writeByte(e.kick_angles.z/.25)),r&4096&&this.writer.writeByte(e.gun_index),r&8192&&(this.writer.writeByte(e.gun_frame),this.writer.writeByte(e.gun_offset.x/.25),this.writer.writeByte(e.gun_offset.y/.25),this.writer.writeByte(e.gun_offset.z/.25),this.writer.writeByte(e.gun_angles.x/.25),this.writer.writeByte(e.gun_angles.y/.25),this.writer.writeByte(e.gun_angles.z/.25)),r&1024&&(this.writer.writeByte(e.blend[0]),this.writer.writeByte(e.blend[1]),this.writer.writeByte(e.blend[2]),this.writer.writeByte(e.blend[3])),r&2048&&this.writer.writeByte(e.fov),r&16384&&this.writer.writeByte(e.rdflags),r&32768&&this.writer.writeByte(e.watertype);let n=0;for(let i=0;i<32;i++)e.stats[i]!==0&&(n|=1<<i);this.writer.writeLong(n);for(let i=0;i<32;i++)n&1<<i&&this.writer.writeShort(e.stats[i])}writePacketEntities(e,r,n){this.writeCommand(r?T.deltapacketentities:T.packetentities);for(let i of e)this.writeDeltaEntity(kr(),i,!0);this.writer.writeShort(0)}writeFrame(e,r){this.writeCommand(T.frame),this.writer.writeLong(e.serverFrame),this.writer.writeLong(e.deltaFrame),r!==26&&r!==25&&this.writer.writeByte(e.surpressCount),this.writer.writeByte(e.areaBytes),this.writer.writeBytes(e.areaBits),this.writePlayerState(e.playerState),this.writePacketEntities(e.packetEntities.entities,e.packetEntities.delta,r)}writeDeltaEntity(e,r,n){let i=0,a=0;(r.modelindex!==e.modelindex||n)&&(i|=vt),(r.modelindex2!==e.modelindex2||n)&&(i|=St),(r.modelindex3!==e.modelindex3||n)&&(i|=wt),(r.modelindex4!==e.modelindex4||n)&&(i|=Mt),(r.frame!==e.frame||n)&&(r.frame>=256?i|=_t:i|=gt),(r.skinnum!==e.skinnum||n)&&(r.skinnum>=256?i|=We:i|=He),(r.effects!==e.effects||n)&&(r.effects>=256?i|=Ge:i|=Ne),(r.renderfx!==e.renderfx||n)&&(r.renderfx>=256?i|=Ve:i|=Ue),(r.origin.x!==e.origin.x||n)&&r.origin.x!==0&&(i|=ft),(r.origin.y!==e.origin.y||n)&&r.origin.y!==0&&(i|=ht),(r.origin.z!==e.origin.z||n)&&r.origin.z!==0&&(i|=bt),(r.angles.x!==e.angles.x||n)&&r.angles.x!==0&&(i|=xt),(r.angles.y!==e.angles.y||n)&&r.angles.y!==0&&(i|=mt),(r.angles.z!==e.angles.z||n)&&r.angles.z!==0&&(i|=pt),(r.sound!==e.sound||n)&&(i|=At),(r.event!==e.event||n)&&(i|=yt),(r.solid!==e.solid||n)&&(i|=Et),this.protocol!==34&&((r.alpha!==e.alpha||n)&&(i|=yr),(r.scale!==e.scale||n)&&(i|=vr),(r.instanceBits!==e.instanceBits||n)&&(i|=_r),(r.loopVolume!==e.loopVolume||n)&&(i|=Sr),(r.loopAttenuation!==e.loopAttenuation||n)&&(a|=un),(r.owner!==e.owner||n)&&(a|=fn),(r.oldFrame!==e.oldFrame||n)&&(a|=hn)),a>0&&(i|=Ii),i&4278190080&&(i|=xr),i&4294901760&&(i|=br),i&4294967040&&(i|=gr),this.writer.writeByte(i&255),i&gr&&this.writer.writeByte(i>>8&255),i&br&&this.writer.writeByte(i>>16&255),i&xr&&this.writer.writeByte(i>>24&255),i&Ii&&this.writer.writeByte(a&255),r.number>=256?this.writer.writeShort(r.number):this.writer.writeByte(r.number),i&vt&&this.writer.writeByte(r.modelindex),i&St&&this.writer.writeByte(r.modelindex2),i&wt&&this.writer.writeByte(r.modelindex3),i&Mt&&this.writer.writeByte(r.modelindex4),i&gt&&this.writer.writeByte(r.frame),i&_t&&this.writer.writeShort(r.frame),i&He&&this.writer.writeByte(r.skinnum),i&We&&this.writer.writeShort(r.skinnum),i&Ne&&this.writer.writeByte(r.effects),i&Ge&&this.writer.writeShort(r.effects),i&Ue&&this.writer.writeByte(r.renderfx),i&Ve&&this.writer.writeShort(r.renderfx),i&ft&&this.writer.writeCoord(r.origin.x),i&ht&&this.writer.writeCoord(r.origin.y),i&bt&&this.writer.writeCoord(r.origin.z),i&xt&&this.writer.writeAngle(r.angles.x),i&mt&&this.writer.writeAngle(r.angles.y),i&pt&&this.writer.writeAngle(r.angles.z),i&At&&this.writer.writeByte(r.sound??0),i&yt&&this.writer.writeByte(r.event??0),i&Et&&this.writer.writeShort(r.solid),this.protocol!==34&&(i&yr&&this.writer.writeByte(r.alpha*255),i&vr&&this.writer.writeFloat(r.scale),i&_r&&this.writer.writeLong(r.instanceBits),i&Sr&&this.writer.writeByte(r.loopVolume*255),a&un&&this.writer.writeByte(r.loopAttenuation*255),a&fn&&this.writer.writeShort(r.owner),a&hn&&this.writer.writeShort(r.oldFrame))}};var Mc=class{static validate(e,r){if(r&&!r.toLowerCase().endsWith(".dm2"))return{valid:!1,error:"Invalid file extension (expected .dm2)"};if(e.byteLength<5)return{valid:!1,error:"File too small to be a valid demo"};let n=new DataView(e),i=n.getInt32(0,!0);if(i<=0||i>e.byteLength-4)return{valid:!1,error:`Invalid first block length: ${i}`};let a=n.getUint8(4);if(a!==T.serverdata)return{valid:!1,error:`First command is not svc_serverdata (expected ${T.serverdata}, got ${a})`};let o=-1;return i>=5&&(o=n.getInt32(5,!0)),{valid:!0,version:o}}};var Ac=class{constructor(e){this.frames=[];this.configStrings=new Map;this.baselines=new Map;this.currentEntities=new Map;if(e){let r=new Vn(e.byteLength);r.append(new Uint8Array(e)),r.setReadPosition(0),this.parser=new ct(r,this)}else this.parser=new ct(new Vn,this)}extractClip(e,r,n,i){let a=new fr(e.buffer),o=[],s=0,c=r.frame??-1,l=n.frame??Number.MAX_SAFE_INTEGER,d=0,f=0;for(;a.nextBlock();){let p=a.getBlock().data,y=!1,v=-1,x=!1,b={onServerData:S=>{d=S,y=!0,x=!0},onConfigString:()=>{y=!0,x=!0},onSpawnBaseline:()=>{y=!0,x=!0},onFrame:S=>{v=S.serverFrame,x=!0,v>=c&&v<=l&&(y=!0)},onCenterPrint:()=>{x=!0},onStuffText:()=>{x=!0},onPrint:()=>{x=!0},onSound:()=>{x=!0},onTempEntity:()=>{x=!0},onLayout:()=>{x=!0},onInventory:()=>{x=!0},onMuzzleFlash:()=>{x=!0},onMuzzleFlash2:()=>{x=!0},onDisconnect:()=>{x=!0},onReconnect:()=>{x=!0},onDownload:()=>{x=!0}},_=new Vn(p.getLength());_.append(p.readData(p.getLength())),_.setReadPosition(0),p.seek(0);let w=new ct(_,b);d>0&&w.setProtocolVersion(d);try{w.parseMessage()}catch{}if(x||f>=c&&f<=l&&(y=!0),y){let S=new Uint8Array(4);new DataView(S.buffer).setUint32(0,p.getLength(),!0),o.push(S);let L=p.readData(p.getLength());o.push(L),s+=4+L.length}f++}let u=new Uint8Array(4);new DataView(u.buffer).setInt32(0,-1,!0),o.push(u),s+=4;let h=new Uint8Array(s),m=0;for(let g of o)h.set(g,m),m+=g.length;return h}extractDemoRange(e,r,n){return this.extractClip(e,{frame:r},{frame:n})}onServerData(e,r,n,i,a,o){this.serverData={protocol:e,serverCount:r,attractLoop:n,gameDir:i,playerNum:a,levelName:o}}onConfigString(e,r){this.configStrings.set(e,r)}onSpawnBaseline(e){this.baselines.set(e.number,e)}onFrame(e){this.frames.push(e)}onCenterPrint(e){}onStuffText(e){}onPrint(e,r){}onSound(e,r,n,i,a,o,s){}onTempEntity(e,r,n,i,a,o,s,c,l){}onLayout(e){}onInventory(e){}onMuzzleFlash(e,r){}onMuzzleFlash2(e,r){}onDisconnect(){}onReconnect(){}onDownload(e,r,n){}};function rp(t,e){let r=e.bits;t.bits=r,t.number=e.number,r&vt&&(t.modelindex=e.modelindex),r&St&&(t.modelindex2=e.modelindex2),r&wt&&(t.modelindex3=e.modelindex3),r&Mt&&(t.modelindex4=e.modelindex4),r&gt&&(t.frame=e.frame),r&_t&&(t.frame=e.frame),r&He&&(t.skinnum=e.skinnum),r&We&&(t.skinnum=e.skinnum),r&Ne&&(t.effects=e.effects),r&Ge&&(t.effects=e.effects),r&Ue&&(t.renderfx=e.renderfx),r&Ve&&(t.renderfx=e.renderfx),r&ft&&(t.origin.x=e.origin.x),r&ht&&(t.origin.y=e.origin.y),r&bt&&(t.origin.z=e.origin.z),r&xt&&(t.angles.x=e.angles.x),r&mt&&(t.angles.y=e.angles.y),r&pt&&(t.angles.z=e.angles.z),r&sr&&(t.old_origin.x=e.old_origin.x,t.old_origin.y=e.old_origin.y,t.old_origin.z=e.old_origin.z),r&At&&(t.sound=e.sound),r&yt&&(t.event=e.event),r&Et&&(t.solid=e.solid),r&yr&&(t.alpha=e.alpha),r&vr&&(t.scale=e.scale),r&_r&&(t.instanceBits=e.instanceBits),r&Sr&&(t.loopVolume=e.loopVolume)}var qu=(u=>(u.Unknown="unknown",u.BSP="bsp",u.MD2="md2",u.MD3="md3",u.WAL="wal",u.PCX="pcx",u.TGA="tga",u.WAV="wav",u.OGG="ogg",u.TXT="txt",u.CFG="cfg",u.DEM="dem",u))(qu||{}),np={".bsp":"bsp",".md2":"md2",".md3":"md3",".wal":"wal",".pcx":"pcx",".tga":"tga",".wav":"wav",".ogg":"ogg",".txt":"txt",".cfg":"cfg",".dm2":"dem"};function Es(t,e){if(t.length<e.length)return!1;for(let r=0;r<e.length;r++)if(t[r]!==e[r])return!1;return!0}var XS=[73,66,83,80],KS=[73,68,80,50],YS=[73,68,80,51];var $S=[82,73,70,70];var qS=[79,103,103,83];function Zu(t,e){let r=t.slice(t.lastIndexOf(".")).toLowerCase();if(e){if(Es(e,XS))return"bsp";if(Es(e,KS))return"md2";if(Es(e,YS))return"md3";if(Es(e,qS))return"ogg";if(e.length>128&&e[0]===10&&e[1]<6)return"pcx";if(Es(e,$S)&&e.length>=12&&e[8]===87&&e[9]===65&&e[10]===86&&e[11]===69)return"wav"}return np[r]?np[r]:"unknown"}function ju(t){let e=Zu(t);return e==="txt"||e==="cfg"}function ip(t){return!ju(t)}function ZS(t,e,r,n,i){let a=new Uint8ClampedArray(n*i*4),o=e/n,s=r/i;for(let c=0;c<i;c++)for(let l=0;l<n;l++){let d=l*o,f=c*s,u=Math.floor(d),h=Math.floor(f),m=d-u,g=f-h,p=Math.min(u+1,e-1),y=Math.min(h+1,r-1),v=(h*e+u)*4,x=(h*e+p)*4,b=(y*e+u)*4,_=(y*e+p)*4,w=(c*n+l)*4;for(let S=0;S<4;S++){let E=t[v+S],L=t[x+S],M=t[b+S],R=t[_+S],I=E*(1-m)+L*m,B=M*(1-m)+R*m,F=I*(1-g)+B*g;a[w+S]=F}}return a}function jS(t,e,r,n,i,a,o,s,c,l,d){n=Math.floor(n),i=Math.floor(i),a=Math.floor(a),o=Math.floor(o);let f=Math.abs(a-n),u=Math.abs(o-i),h=n<a?1:-1,m=i<o?1:-1,g=f-u;for(;;){if(n>=0&&n<e&&i>=0&&i<r){let y=(i*e+n)*4,v=1-d/255;t[y]=s*(d/255)+t[y]*v,t[y+1]=c*(d/255)+t[y+1]*v,t[y+2]=l*(d/255)+t[y+2]*v,t[y+3]=255}if(n===a&&i===o)break;let p=2*g;p>-u&&(g-=u,n+=h),p<f&&(g+=f,i+=m)}}function ap(t,e,r,n,i){let s=(t.x-n.x)*.707-(t.y-n.y)*.707,c=(t.x-n.x)*.707+(t.y-n.y)*.707,l=t.z-n.z,d=.866,f=.5,u=c*d-l*f,h=c*f+l*d,m=e/2+s*i,g=r/2-h*i;return{x:m,y:g}}var Ec=class{constructor(e){this.assetManager=e}async generateTextureThumbnail(e,r){try{let n=await this.assetManager.loadTexture(e);if(!n||n.levels.length===0)return null;let i=n.levels[0],a=i.width/i.height,o=r,s=r;a>1?s=Math.floor(r/a):o=Math.floor(r*a),o=Math.max(1,o),s=Math.max(1,s);let c=ZS(i.rgba,i.width,i.height,o,s);return new ImageData(c,o,s)}catch(n){return console.error(`Failed to generate thumbnail for ${e}`,n),null}}async generateModelThumbnail(e,r){try{let n=[],i=[],a=e.split(".").pop()?.toLowerCase();if(a==="md2"){let p=await this.assetManager.loadMd2Model(e);if(!p||p.frames.length===0)return null;n=p.frames[0].vertices.map(v=>v.position);for(let v of p.triangles)i.push(v.vertexIndices[0],v.vertexIndices[1]),i.push(v.vertexIndices[1],v.vertexIndices[2]),i.push(v.vertexIndices[2],v.vertexIndices[0])}else if(a==="md3"){let p=await this.assetManager.loadMd3Model(e);if(!p||p.surfaces.length===0)return null;let y=0;for(let v of p.surfaces){if(v.vertices.length===0)continue;let x=v.vertices[0];n.push(...x.map(b=>({x:b.position.x,y:b.position.y,z:b.position.z})));for(let b of v.triangles)i.push(y+b.indices[0],y+b.indices[1]),i.push(y+b.indices[1],y+b.indices[2]),i.push(y+b.indices[2],y+b.indices[0]);y+=x.length}}else return null;if(n.length===0)return null;let o={x:1/0,y:1/0,z:1/0},s={x:-1/0,y:-1/0,z:-1/0};for(let p of n)o.x=Math.min(o.x,p.x),o.y=Math.min(o.y,p.y),o.z=Math.min(o.z,p.z),s.x=Math.max(s.x,p.x),s.y=Math.max(s.y,p.y),s.z=Math.max(s.z,p.z);let c={x:(o.x+s.x)/2,y:(o.y+s.y)/2,z:(o.z+s.z)/2},l=s.x-o.x,d=s.y-o.y,f=s.z-o.z,u=Math.max(l,d,f),h=Math.max(u,.001),m=r*.8/h,g=new Uint8ClampedArray(r*r*4);for(let p=0;p<i.length;p+=2){let y=i[p],v=i[p+1],x=n[y],b=n[v],_=ap(x,r,r,c,m),w=ap(b,r,r,c,m);jS(g,r,r,_.x,_.y,w.x,w.y,0,255,0,255)}return new ImageData(g,r,r)}catch(n){return console.error(`Failed to generate model thumbnail for ${e}`,n),null}}async getMapBounds(e,r){try{let n=ja(r);if(n.models.length>0){let i=n.models[0];return{mins:{x:i.mins[0],y:i.mins[1],z:i.mins[2]},maxs:{x:i.maxs[0],y:i.maxs[1],z:i.maxs[2]}}}return null}catch(n){return console.error("Failed to get map bounds",n),null}}async extractMapScreenshot(e){return null}};var Lc=class{constructor(e){this.loader=e}async getMapStatistics(e){let r=await this.loader.load(e),n=r.faces.filter(o=>o.lightOffset!==-1).length,i=r.models[0],a=i?{mins:i.mins,maxs:i.maxs}:{mins:[0,0,0],maxs:[0,0,0]};return{entityCount:r.entities.entities.length,surfaceCount:r.faces.length,lightmapCount:n,vertexCount:r.vertices.length,bounds:a}}async getUsedTextures(e){let r=await this.loader.load(e),n=new Set;for(let i of r.texInfo)i.texture&&n.add(i.texture);return Array.from(n).sort()}async getUsedModels(e){let r=await this.loader.load(e),n=new Set;for(let i of r.entities.entities)i.properties.model&&!i.properties.model.startsWith("*")&&n.add(i.properties.model);return Array.from(n).sort()}async getUsedSounds(e){let r=await this.loader.load(e),n=new Set;for(let i of r.entities.entities){i.properties.noise&&n.add(i.properties.noise);for(let[a,o]of Object.entries(i.properties))(a==="noise"||a.endsWith("_sound")||a==="sound")&&typeof o=="string"&&n.add(o)}return Array.from(n).sort()}};function op(t){let e=[],r=0,n=t.length;function i(){for(;r<n&&/\s/.test(t[r]);)r++}function a(){if(i(),r>=n)return null;if(t[r]==='"'){r++;let o=r;for(;r<n&&t[r]!=='"';)t[r],r++;let s=t.substring(o,r);return r++,s}else{if(t[r]==="{"||t[r]==="}")return t[r++];{if(t.startsWith("//",r)){for(;r<n&&t[r]!==`
783
783
  `;)r++;return a()}let o=r;for(;r<n&&!/\s/.test(t[r])&&t[r]!=="}"&&t[r]!=="{";)r++;return t.substring(o,r)}}}for(;r<n;){let o=a();if(o===null)break;if(o==="{"){let s={};for(;;){let c=r,l=a();if(l==="}"||l===null)break;if(l==="{"){r=c;break}let d=a();if(d===null||d==="}"||d==="{"){d==="}"&&r--,d==="{"&&r--;break}s[l]=d}e.push({classname:s.classname,properties:s})}}return e}function sp(t){let e="";for(let r of t){e+=`{
784
784
  `;let i=Object.keys(r.properties).sort((a,o)=>a==="classname"?-1:o==="classname"?1:a==="origin"?-1:o==="origin"?1:a.localeCompare(o));for(let a of i){let o=r.properties[a];e+=`"${a}" "${o}"
785
785
  `}e+=`}