<!-- SOLID CITY · part 3393 -->
-4,t),h.gain.exponentialRampToValueAtTime(c,t+o),h.gain.exponentialRampToValueAtTime(1e-4,t+o+l),a.connect(h),h.connect(ct.master),h},s=(a,o,l,c)=>{let h=e.createBufferSource();h.buffer=ct.noise;let f=e.createBiquadFilter();return f.type=o,f.frequency.value=l,f.Q.value=c||1,h.connect(f),h.start(t,Math.random()),h.stop(t+a+.05),f},r=(a,o,l,c)=>{let h=e.createOscillator();return h.type=a,h.frequency.setValueAtTime(o,t),h.frequency.exponentialRampToValueAtTime(l,t+c),h.start(t),h.stop(t+c+.05),h};i==="laser"?n(r("square",1500+Math.random()*200,180,.12),.004,.11,.08):i==="boom"?(n(s(1.1,"lowpass",900),.005,1,.9),n(r("sine",120,30,.6),.005,.55,.7)):i==="bigboom"?(n(s(2.2,"lowpass",600),.01,2.1,1),n(r("sine",80,20,1.4),.01,1.3,.9)):i==="hit"?n(s(.25,"bandpass",2200,2),.003,.2,.5):i==="ouch"?(n(r("sawtooth",220,60,.35),.005,.32,.35),n(s(.3,"lowpass",500),.005,.28,.6)):i==="zap"?n(r("sine",600,900,.18),.01,.16,.12):i==="boost"?(n(s(.9,"bandpass",1400,.8),.08,.8,.45),n(r("sawtooth",90,260,.7),.05,.6,.12)):i==="beep"?n(r("square",880,880,.12),.005,.12,.12):i==="go"?(n(r("square",1320,1320,.4),.005,.4,.14),n(s(2.5,"lowpass",400),.3,2.2,.9)):i==="chime"?[523,659,784,1046].forEach((a,o)=>{let l=e.createOscillator();l.type="triangle",l.frequency.value=a;let c=e.createGain();c.gain.setValueAtTime(1e-4,t+o*.12),c.gain.exponentialRampToValueAtTime(.16,t+o*.12+.02),c.gain.exponentialRampToValueAtTime(1e-4,t+o*.12+.6),l.connect(c),c.connect(ct.master),l.start(t+o*.12),l.stop(t+o*.12+.7)}):i==="alarm"&&n(r("square",660,440,.25),.005,.24,.08)}function sp(i){ct.muted=i;try{localStorage.setItem("space-muted",i?"1":"0")}catch{}ct.master&&(ct.master.gain.value=i?0:.55),Lt("h-mute").textContent=i?"\u{1F507}":"\u{1F50A}",Lt("h-mute").setAttribute("aria-label",i?"Sound off":"Sound on")}var y={phase:"loading",t:0,phaseT:0,runT:0,running:!1,pos:new $e(0,_s,0),yaw:Zf,pitch:0,roll:0,speed:0,vUp:0,boostMeter:1,boosting:!1,boostLock:0,shields:100,invuln:0,slowT:0,sinceHit:9,kills:0,hits:0,wave:0,waveT:0,topSpeed:0,heat:0,checkpoint:null,fireCd:0,gun:0,lock:null,shake:0,hurt:0,fov:68,cloudFx:0,landing:null,homeShown:!1,result:null,saved:null,board:null,shots:0},Oe={x:0,y:0,firing:!1,boosting:!1,fire:!1,boost:!1,stickX:0,stickY:0,keys:{},mouse:null,mouseAim:!Qn,mouseFire:!1},Pa={on:!1,god:!1},On={pos:new $e(0,8,24),look:new $e,init:!1};function _n(i,e=y.yaw,t=y.pitch){return i.set(-Math.sin(e)*Math.cos(t),Math.sin(t),-Math.cos(e)*Math.cos(t))}var lc=new fn,Hf=new bn(0,0,0,"YXZ"),Ne={};["h-obj","h-time","h-kills","h-shield","h-boost","h-spd","h-alt","h-banner","h-bt","h-bs","h-lock","h-hurt","h-cloud","h-heat","h-mother","h-mbar","h-reticle","b-fire","b-boost","b-launch","h-count","h-perf","h-markers","stick","h-speedo","h-arc"].forEach(i=>{Ne[i]=Lt(i)});var sc=0;function Bn(i,e,t=3){Ne["h-bt"].textContent=i,Ne["h-bs"].textContent=e||"",Ne["h-banner"].hidden=!1,Ne["h-banner"].classList.remove("show"),Ne["h-banner"].offsetWidth,Ne["h-banner"].classList.add("show"),sc=t}var ur=[];for(let i=0;i<8;i++){let e=document.createElement("div");e.className="mk",e.hidden=!0,Ne["h-markers"].appendChild(e),ur.push(e)}var ou=i=>{let e=Math.floor(i/60),t=i-e*60;return e+":"+(t<10?"0":"")+t.toFixed(1)},fr={};function cr(i,e,t){fr[e]!==t&&(fr[e]=t,i.textContent=t)}(function(){let e=Ne.stick,t=e.querySelector("i"),n=null,s=0,r=0;function a(l,c){let h=e.getBoundingClientRect().width*.4,f=Math.hypot(l,c);f>h&&(l*=h/f,c*=h/f),t.style.transform=`translate(${l}px,${c}px)`,Oe.stickX=l/h,Oe.stickY=-c/h}e.addEventListener("pointerdown",l=>{n=l.pointerId;try{e.setPointerCapture(n)}catch{}let c=e.getBoundingClientRect();s=c.left+c.width/2,r=c.top+c.height/2,a(l.clientX-s,l.clientY-r),l.preventDefault()}),e.addEventListener("pointermove",l=>{l.pointerId===n&&a(l.clientX-s,l.clientY-r)});let o=l=>{l.pointerId===n&&(n=null,a(0,0))};e.addEventListener("pointerup",o),e.addEventListener("pointercancel",o),e.addEventListener("lostpointercapture",o)})();function rp(i,e,t){i.addEventListener("pointerdown",s=>{s.preventDefault();try{i.setPointerCapture(s.pointerId)}catch{}i.classList.add("on"),e()});let n=()=>{i.classList.remove("on"),t()};["pointerup","pointercancel","lostpointercapture"].forEach(s=>i.addEventListener(s,n))}rp(Ne["b-fire"],()=>{Oe.fire=!0},()=>{Oe.fire=!1});rp(Ne["b-boost"],()=>{Oe.boost=!0},()=>{Oe.boost=!1});addEventListener("keydown",i=>{i.target&&i.target.tagName==="INPUT"||(Oe.keys[i.code]=!0,["Space","ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(i.code)&&i.preventDefault(),i.code==="KeyM"&&(Oe.mouseAim=!Oe.mouseAim,Bn(Oe.mouseAim?"MOUSE AIM ON":"MOUSE AIM OFF","Press M to toggle",1.5)),(i.code==="Space"||i.code==="Enter")&&y.phase==="pad"&&xc())});addEventListener("keyup",i=>{Oe.keys[i.code]=!1});addEventListener("blur",()=>{Oe.keys={},Oe.fire=Oe.boost=Oe.mouseFire=!1});uc.addEventListener("pointermove",i=>{if(i.pointerType!=="mouse")return;let[e,t]=dc();Oe.mouse={x:i.clientX/e*2-1,y:-(i.clientY/t*2-1)}});uc.addEve