<!-- SOLID CITY · part 3392 -->
(1. - vK); vec3 c = mix(vC.rgb * 2.6, vC.rgb * .5, vK); gl_FragColor = vec4(c * a * vC.a, 1.); }",blending:Wt,depthWrite:!1,transparent:!0}),s=new Ui(e,n);return s.frustumCulled=!1,s.renderOrder=5,et.add(s),{p:s,g:e,n:i,i:0,dirty:!1}}var Ti=Vv(Qt?520:900);function vr(i,e,t,n,s,r,a=1){let o=i.i,l=i.g;i.i=(i.i+1)%i.n,l.attributes.position.setXYZ(o,e.x,e.y,e.z),l.attributes.aV.setXYZ(o,t.x,t.y,t.z),l.attributes.aC.setXYZW(o,n.r,n.g,n.b,a),l.attributes.aInfo.setXYZ(o,Dt.time.value,s,r),i.dirty=!0}function np(i){if(i.dirty){for(let e of["position","aV","aC","aInfo"])i.g.attributes[e].needsUpdate=!0;i.dirty=!1}}var pu=70,mc=[],mu=new ft,dr=new Float32Array(pu*3);mu.setAttribute("position",new wt(dr,3).setUsage(Vl));var gc=new Ui(mu,new It({uniforms:{uScale:{value:400},uT:Dt.time},vertexShader:"uniform float uScale; uniform float uT; void main(){ vec4 mv = modelViewMatrix * vec4(position, 1.); gl_PointSize = clamp((7. + sin(uT*30.)) * uScale / -mv.z, 0., 160.); gl_Position = projectionMatrix * mv; }",fragmentShader:"void main(){ vec2 p = gl_PointCoord - .5; float r = length(p); float a = smoothstep(.5, .1, r); float core = smoothstep(.22, .0, r); gl_FragColor = vec4(vec3(.4, 3., 1.2) * a + vec3(2.5) * core, 1.); }",blending:Wt,depthWrite:!1,transparent:!0}));gc.frustumCulled=!1;gc.renderOrder=6;et.add(gc);for(let i=0;i<pu;i++)mc.push({on:!1,pos:new $e,prev:new $e,vel:new $e,life:0}),dr[i*3+1]=-1e6;var gu=[];for(let i=0;i<12;i++){let e=i%2===1,t=new Zs(new rs({map:e?Cv:jf,color:new ge(3,2,1),blending:Wt,depthWrite:!1,transparent:!0}));t.visible=!1,et.add(t),gu.push({s:t,t:1,life:1,size:0,ring:e})}function au(i,e,t,n){let s=gu.filter(a=>a.ring===t),r=s.find(a=>a.t>=a.life)||s.reduce((a,o)=>a.t/a.life>o.t/o.life?a:o);r.s.position.copy(i),r.t=0,r.life=t?.7:.35,r.size=e,r.s.visible=!0,r.s.material.color.copy(n||(t?Bt.ringC:Bt.flashC))}var Bt={fire:new ge(1,.45,.12),gold:new ge(1,.8,.35),green:new ge(.25,1,.5),white:new ge(1,1,1),smoke:new ge(.25,.22,.24),red:new ge(1,.15,.2),magenta:new ge(.9,.3,1),ringC:new ge(1.6,1.4,1),flashC:new ge(3,2,1),muzzle:new ge(3,.6,.5)},Je=new $e,Nt=new $e,Ot=new $e,Ji=new $e;function oc(i,e,t){let n=Math.round((Qt?34:54)*Math.min(e,2.4));for(let s=0;s<n;s++)Ji.set(Math.random()-.5,Math.random()-.5,Math.random()-.5).normalize().multiplyScalar((40+Math.random()*90)*e),vr(Ti,i,Ji,s%3===0?t||Bt.green:s%3===1?Bt.fire:Bt.gold,.5+Math.random()*.8,(2.2+Math.random()*3)*e);for(let s=0;s<8;s++)Ji.set(Math.random()-.5,Math.random()-.5,Math.random()-.5).multiplyScalar(26*e),vr(Ti,i,Ji,Bt.smoke,1.4+Math.random(),7*e,.5);au(i,46*e,!1),au(i,30*e,!0)}function ip(i,e){for(let t=0;t<7;t++)Ji.set(Math.random()-.5,Math.random()-.5,Math.random()-.5).normalize().multiplyScalar(30+Math.random()*50),vr(Ti,i,Ji,t%2?Bt.gold:e||Bt.white,.3+Math.random()*.25,1.6)}var Zi=(()=>{let i=new os;i.moveTo(0,3.2),i.lineTo(2.2,.6),i.lineTo(.8,.6),i.lineTo(.8,-2.6),i.lineTo(-.8,-2.6),i.lineTo(-.8,.6),i.lineTo(-2.2,.6),i.closePath();let e=new Qs(i,{depth:.6,bevelEnabled:!0,bevelSize:.15,bevelThickness:.15,bevelSegments:1});e.translate(0,0,-.3),e.rotateX(Math.PI/2);let t=new Dn;t.add(new Ze(e,new Ft({color:new ge(3,2.1,.7)})));let n=new Ze(e,new Ft({color:new ge(1.6,.5,.1),transparent:!0,opacity:.5,blending:Wt,depthWrite:!1}));return n.scale.setScalar(1.35),t.add(n),t.visible=!1,t.renderOrder=8,et.add(t),t})(),ct={ctx:null,muted:(()=>{try{return localStorage.getItem("space-muted")==="1"}catch{return!1}})()};function _c(){if(ct.ctx){ct.ctx.state!=="running"&&ct.ctx.resume();return}try{let i=new(window.AudioContext||window.webkitAudioContext);ct.ctx=i,ct.master=i.createGain(),ct.master.gain.value=ct.muted?0:.55,ct.master.connect(i.destination);let e=i.createBuffer(1,i.sampleRate*2,i.sampleRate),t=e.getChannelData(0);for(let h=0;h<t.length;h++)t[h]=Math.random()*2-1;ct.noise=e;let n=i.createOscillator(),s=i.createOscillator();n.type="sawtooth",s.type="sawtooth",n.frequency.value=48,s.frequency.value=48.7;let r=i.createBiquadFilter();r.type="lowpass",r.frequency.value=300;let a=i.createGain();a.gain.value=0,n.connect(r),s.connect(r),r.connect(a),a.connect(ct.master),n.start(),s.start();let o=i.createBufferSource();o.buffer=e,o.loop=!0;let l=i.createBiquadFilter();l.type="bandpass",l.frequency.value=700,l.Q.value=.7;let c=i.createGain();c.gain.value=0,o.connect(l),l.connect(c),c.connect(ct.master),o.start(),ct.eng={o1:n,o2:s,lp:r,eg:a,bp:l,ng:c},i.state!=="running"&&i.resume()}catch{ct.ctx=null}}function tu(i,e,t){if(!ct.ctx||!ct.eng)return;let n=ct.ctx.currentTime,s=ct.eng;s.o1.frequency.setTargetAtTime(40+e*70,n,.1),s.o2.frequency.setTargetAtTime(40.8+e*71,n,.1),s.lp.frequency.setTargetAtTime(220+e*1500,n,.1),s.eg.gain.setTargetAtTime(i*.16,n,.1),s.bp.frequency.setTargetAtTime(500+e*1800,n,.1),s.ng.gain.setTargetAtTime(i*.08+t*.32,n,.12)}function In(i){if(!ct.ctx||ct.muted||ct.ctx.state!=="running")return;let e=ct.ctx,t=e.currentTime,n=(a,o,l,c)=>{let h=e.createGain();return h.gain.setValueAtTime(1e