!function(t){"use strict";function e(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t)for(const i in t)if("default"!==i){const s=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,s.get?s:{enumerable:!0,get:()=>t[i]})}return e.default=t,Object.freeze(e)}const i=e(THREE),s=(t,e)=>1==t&&e?.5:.25,n=[2,1,1,1,1,1,1,1,1,1,1,1,1,1,1],h=[1,2,2,2,1,2,1,1,1,2],r=[.2,.2,.15,.2,.25],a=[.45,.25,.15,.1,.05],o=[.45,0,.25,0,.1],c=.5,l=[.75,.5,.25],u=[.5,.5,.5],_=[.5,.3,.2],p=[25,25,100],f=[[0,6],[0,4],[2,3]],g=[0,-6,-12,-18,-24];const m={root:1,second:Math.pow(2,2/12),minor_third:Math.pow(2,.25),major_third:Math.pow(2,4/12),fourth:Math.pow(2,5/12),fifth:Math.pow(2,7/12),minor_sixth:Math.pow(2,8/12),major_sixth:Math.pow(2,.75),minor_seventh:Math.pow(2,10/12),major_seventh:Math.pow(2,11/12),octave:2};function d(t){return Math.pow(10,t/20)}function v(t,e,i){return new AudioBuffer({numberOfChannels:t,length:e,sampleRate:i})}function C(t,e,i,s,n){const h=t.createBiquadFilter();return h.type=e,h.frequency.value=i,h.Q.value=s,"lowshelf"!==e&&"highshelf"!==e||(h.gain.value=n),h}function w(t,e=1){const i=t.createGain();return i.gain.value=e,i}function x(t,e,i,s){const n=t.createOscillator();return n.type=e,n.frequency.value=i,n.detune.value=s,n}function I(t,e){const i=t.createStereoPanner();return i.pan.value=e,i}function A(t,e,i,s){const n=t.createBufferSource();return n.buffer=e,n.playbackRate.value=i,n.loop=s,n}function y(t,e,i,s){if(navigator.userAgent.includes("Firefox"))M(t,e,i,s);else{const n=t.currentTime,h=s-n;if(h<=0)throw new Error("linearRampToValueAtTime: Duration is negative");e.cancelScheduledValues(n);const r=e.value;e.setValueCurveAtTime([r,i],n,h)}}function M(t,e,i,s){const n=t.currentTime,h=s-n;if(h<=0)throw new Error("exponentialRampToValueAtTime: Duration is negative");e.cancelScheduledValues(n),e.setTargetAtTime(i,n,h/2.5)}class b{constructor(t,e,i){this.ctx=t,this.pitch_hz=e,this.decay_time=i,this.input=t.createGain(),this.output=t.createGain(),this.delay=t.createDelay(),this.setPitch(e),this.feedback=t.createGain(),this.setDecayTime(i),this.fb_filter=C(t,"allpass",e,1,0),this.input.connect(this.delay).connect(this.output),this.delay.connect(this.feedback).connect(this.fb_filter).connect(this.delay)}pitchToDelay(t){return 1/t}setPitch(t,e=.01){this.delay_time=this.pitchToDelay(t),this.delay.delayTime.setValueAtTime(this.delay_time,this.ctx.currentTime+e)}setDecayTime(t){this.decay_time=t;const e=Math.exp(Math.log(.001)*this.delay_time/t);y(this.ctx,this.feedback.gain,e,this.ctx.currentTime+.01)}setVolume(t){y(this.ctx,this.output.gain,d(t),this.ctx.currentTime+.01)}connect(t){this.output.connect(t)}}class T{constructor(t,e,i,s=-1,n=1){this.ctx=t,this.R=e,this.rate_time=1/i,this.timerID,this.sla=5*this.rate_time,this.tla=1e3*this.rate_time,this.min_val=s,this.max_val=n,this.next_value=0,this.next_time=0,this.output=t.createConstantSource(),this.output.offset.value=s,this.running=!1}step(t,e,i){return(i-e)*t.r()+e}run(){for(;this.next_time<this.ctx.currentTime+this.sla;)this.output.offset.setTargetAtTime(this.next_value,this.next_time,.5*this.rate_time),this.next_time+=this.rate_time,this.next_value=this.step(this.R,this.min_val,this.max_val)}start(){this.output.start(),this.running||(clearTimeout(this.timerID),this.running=!0,this.next_time=this.ctx.currentTime,this.next_value=this.step(this.R,this.min_val,this.max_val),this.run(),this.timerID=setInterval((()=>{this.run()}),this.tla))}stop(){this.running=!1,this.output.offset.cancelScheduledValues(this.ctx.currentTime),clearTimeout(this.timerID),this.output.stop()}connect(t){this.output.connect(t)}}class G{constructor(t,e,i,s=.3,n=.2,h=.1,r=-1,a=-2){this.ctx=t,this.input=t.createGain(),this.output=t.createGain(),this.delay=t.createDelay(i+.1),this.feedback=w(t,s),this.eq_low=C(t,"lowshelf",500,1,r),this.eq_high=C(t,"highshelf",2e3,1,a),this.saturator=t.createWaveShaper(),this.saturator.curve=this.HTDC(0,1.5),this.saturator.oversample="4x",this.diffuser=C(t,"allpass",500,1,0),this.input.connect(this.eq_low).connect(this.eq_high).connect(this.saturator).connect(this.diffuser).connect(this.delay),this.delay.connect(this.feedback),this.feedback.connect(this.eq_low),this.delay.connect(this.output),this.pan_left=I(t,-1),this.pan_right=I(t,1),this.wl=C(t,"allpass",1e3,1,0),this.wr=C(t,"allpass",2e3,1,0),this.output.connect(this.wl).connect(this.pan_left),this.output.connect(this.wr).connect(this.pan_right);const o=10*n,c=.04*h;this.dlm=new T(t,e,o,i,i+c),this.dlm.connect(this.delay.delayTime)}setOutputGain(t){M(this.ctx,this.output.gain,d(t),this.ctx.currentTime+.001)}HTDC(t=0,e=3,i=512){const s=new Float32Array(i);let n=Math.pow(10,t/20),h=Math.pow(10,e/20);for(let r=0;r<i;r++){const t=2*r/i-1;s[r]=n*Math.tanh(h*t)}return s}connect(t){this.pan_left.connect(t),this.pan_right.connect(t)}start(){this.dlm.start()}}const F=(t,e,i)=>t*(1-i)+e*i,k=(t,e,i,s,n)=>{return F(s,n,(t-(h=e))/(i-h));var h},V=(t,e,i)=>Math.max(Math.min(i,e),t),R=t=>V(0,1,t),D=(t,e)=>t%e/e,B=t=>1-Math.pow(1-t,4),W=(t,e,i=3)=>{const s=D(t,e),n=Math.floor(t/e%2),h=s+n-2*s*n;return 1-Math.pow(Math.abs(h),i)};class S{constructor(t,e,i,s,n=0,h=.01){if(n<0)throw new Error("Invalid chord variation value!");this.ctx=t,this.current_variation=n,this.transition_time=h,this.chn=[m.root,m.major_third,m.fourth,m.major_sixth];const r=new Float32Array(4),a=new Float32Array(4);r[0]=0,a[0]=0,r[1]=1,a[1]=0,r[2]=d(-12),a[2]=0,r[3]=d(-16),a[3]=0;const o=this.ctx.createPeriodicWave(r,a);t.currentTime,this.v1=x(this.ctx,"sine",e,10),this.v1.setPeriodicWave(o),this.v2=x(this.ctx,"sine",e,5),this.v2.setPeriodicWave(o),this.v3=x(this.ctx,"sine",e,1),this.v3.setPeriodicWave(o),this.v4=x(this.ctx,"sine",e,7),this.v4.setPeriodicWave(o),this.filt=C(this.ctx,"highpass",i,1,0),this.out=w(this.ctx,1),this.v1_pan=I(this.ctx,0),this.v2_pan=I(this.ctx,0),this.v3_pan=I(this.ctx,0),this.v4_pan=I(this.ctx,0),this.setWidth(.35),this.v1.connect(this.v1_pan).connect(this.filt),this.v2.connect(this.v2_pan).connect(this.filt),this.v3.connect(this.v3_pan).connect(this.filt),this.v4.connect(this.v4_pan).connect(this.filt),this.filt.connect(this.out),this.setChord(e,n)}setWF(t){this.v1.setPeriodicWave(t),this.v2.setPeriodicWave(t),this.v3.setPeriodicWave(t),this.v4.setPeriodicWave(t)}setWT(t){this.v1.type=t,this.v2.type=t,this.v3.type=t,this.v4.type=t}setOV(t){y(this.ctx,this.out.gain,d(t),this.ctx.currentTime+.01)}setFcQ(t,e=.25){y(this.ctx,this.filt.frequency,t,this.ctx.currentTime+.01),y(this.ctx,this.filt.Q,e,this.ctx.currentTime+.01)}setFilterType(t){this.filt.type=t}setChordNotes(t){4==t.length&&(this.chn=t)}setChord(t,e){if(e<0||t<20)throw new Error("Invalid chord variation value!");this.current_variation=e;const i=Math.floor(e/4)+1;e%=4;const s=[0,1,1,1],n=t*i*this.chn[e],h=t*(i+s[1%(e+1)])*this.chn[(e+1)%4],r=t*(i+s[2%(e+1)])*this.chn[(e+2)%4],a=t*(i+s[3%(e+1)])*this.chn[(e+3)%4],o=this.ctx.currentTime;this.v1.frequency.cancelScheduledValues(o),this.v2.frequency.cancelScheduledValues(o),this.v3.frequency.cancelScheduledValues(o),this.v4.frequency.cancelScheduledValues(o),y(this.ctx,this.v1.frequency,n,o+this.transition_time),y(this.ctx,this.v2.frequency,h,o+this.transition_time),y(this.ctx,this.v3.frequency,r,o+this.transition_time),y(this.ctx,this.v4.frequency,a,o+this.transition_time)}start(){this.v1.start(),this.v2.start(),this.v3.start(),this.v4.start()}setWidth(t){let e=-t,i=t,s=2*t/4;y(this.ctx,this.v1_pan.pan,e,this.ctx.currentTime+.01),y(this.ctx,this.v2_pan.pan,e+s,this.ctx.currentTime+.01),y(this.ctx,this.v3_pan.pan,e+2*s,this.ctx.currentTime+.01),y(this.ctx,this.v4_pan.pan,i,this.ctx.currentTime+.01)}}class q{CreateNoiseSource(t){const e=2*t.sampleRate,i=v(1,e,t.sampleRate),s=i.getChannelData(0);for(let n=0;n<e;n++)s[n]=2*Math.random()-1;return i}constructor(t){this.ctx=t,this.nbf=t.createBufferSource(),this.filter=t.createBiquadFilter(),this.filter.type="lowpass",this.filter.frequency.setValueAtTime(t.sampleRate/2,t.currentTime),this.nbf.buffer=this.CreateNoiseSource(t),this.nbf.loop=!0,this.output=t.createGain(),this.nbf.connect(this.filter).connect(this.output)}setFcQ(t,e=1){y(this.ctx,this.filter.frequency,t,this.ctx.currentTime+.01),y(this.ctx,this.filter.Q,e,this.ctx.currentTime+.01)}setFilterType(t){this.filter.type=t}setPlaybackRate(t){t>1&&(t=1),this.nbf.playbackRate.setValueAtTime(t,this.ctx.currentTime)}setOutputGain(t){y(this.ctx,this.output.gain,d(t),this.ctx.currentTime+.01)}connect(t){this.output.connect(t)}start(){this.nbf.start()}stop(){this.nbf.stop()}}class P{constructor(t,e,i=800,s=-14,n=2400){this.noise=new q(t),this.noise.setOutputGain(-40),this.noise.setFcQ(i,1),this.noise.setFilterType("highpass");const h=C(t,"highshelf",6e3,1,s),r=C(t,"notch",n,.45,0);this.noise.output.connect(h).connect(r).connect(e)}start(){this.noise.start()}setOutputGain(t){this.noise.setOutputGain(t)}}class z{CreatePulseLoop(t,e,i,s=0,n=0,h=1){const r=1/e*t.sampleRate,a=v(1,r,t.sampleRate),o=a.getChannelData(0),c=Math.floor(r*i),l=Math.floor(s*r);for(let u=0;u<c;u++)o[u]=h,u>c-l&&(o[u]=h-(u-(c-l))/l*(h-n));for(let u=c;u<r;++u)o[u]=n,u>r-l&&(o[u]=(u-(r-l))/l*(h-n)+n);return a}constructor(t,e,i,s,n,h,r,a){this.ctx=t;const o=Math.floor(-13*a-3);this.min_scale=(1-d(-3))/(1-d(o)),this.ch=new S(t,i,0,10,0),this.ch.setOV(-18),this.ch.setFcQ(h,6),this.ch.setFilterType("bandpass"),this.ch.setChordNotes(s),this.ch.setChord(i,n);const c=1/(60/(8*r));this.am=w(t,0),this.am_t=w(t,1),this.am_d=w(t,1),this.am_o=t.createConstantSource(),this.am_o.offset.value=0,this.pulse_lfo=A(t,this.CreatePulseLoop(t,c,.9,.0015,d(o),1),1,!0),this.pulse_lfo.connect(this.am_d).connect(this.am_t).connect(this.am.gain),this.am_o.connect(this.am.gain),this.output_gain=t.createGain(),this.fade_in_gain=w(t,1e-4),this.noise=new P(t,this.am),this.ch.out.connect(this.am),this.am.connect(this.output_gain).connect(this.fade_in_gain)}connect(t){this.fade_in_gain.connect(t)}start(){this.ch.start(),this.noise.start(),this.pulse_lfo.start(),this.am_o.start(),this.fade_in_gain.gain.exponentialRampToValueAtTime(1,this.ctx.currentTime+.5)}getFreq(){return this.ch.filt.frequency}setNoiseVolume(t){this.noise.setOutputGain(t)}setAmplitudeModDepth(t){t=k(t,0,1,this.min_scale,1),M(this.ctx,this.am_d.gain,t,this.ctx.currentTime+.01),M(this.ctx,this.am_o.offset,1-t,this.ctx.currentTime+.01)}toggleAmpMod(t){const e=t?1:0;this.am_t.gain.value=e,this.am.gain.value=1-e}}class X{CreateCircleLFO(t,e,i=0,s=1){const n=1/e*t.sampleRate,h=v(1,n,t.sampleRate),r=h.getChannelData(0),a=s-i;for(let o=0;o<n;o++)r[o]=i+a/2*(1+Math.sin(2*Math.PI*(o/n)));return h}constructor(t,e,i,s,n,h,r,a){this.ctx=t;const o=Math.floor(-12*a-2);this.min_scale=(1-d(-2))/(1-d(o)),this.ch=new S(this.ctx,i,0,10,0),this.ch.setOV(-24),this.ch.setFcQ(h,2),this.ch.setChordNotes(s),this.ch.setChord(i,n);const c=r<40?1/(60/(4*r)):1/(60/(8*r));this.am=w(t,0),this.am_t=w(t,1),this.am_d=w(t,1),this.am_o=t.createConstantSource(),this.am_o.offset.value=0,this.ch_amp_mod_lfo=A(t,this.CreateCircleLFO(t,c,d(o),d(0)),1,!0),this.ch_amp_mod_lfo.connect(this.am_d).connect(this.am_t).connect(this.am.gain),this.am_o.connect(this.am.gain),this.output_gain=w(this.ctx,1e-4),this.noise=new P(t,this.am),this.ch.out.connect(this.am).connect(this.output_gain)}connect(t){this.output_gain.connect(t)}start(){this.ch.start(),this.ch_amp_mod_lfo.start(),this.noise.start(),this.am_o.start(),this.output_gain.gain.exponentialRampToValueAtTime(1,this.ctx.currentTime+1)}getFreq(){return this.ch.filt.frequency}setNoiseVolume(t){this.noise.setOutputGain(t)}setAmplitudeModDepth(t){t=k(t,0,1,this.min_scale,1),M(this.ctx,this.am_d.gain,t,this.ctx.currentTime+.01),M(this.ctx,this.am_o.offset,1-t,this.ctx.currentTime+.01)}toggleAmpMod(t){const e=t?1:0;this.am_t.gain.value=e,this.am.gain.value=1-e}}class Z{CreateRingsLFO(t,e,i=0,s=1){const n=1/e*t.sampleRate,h=4*n,r=v(1,h,t.sampleRate),a=r.getChannelData(0),o=s-i;for(let c=0;c<h;c++)a[c]=i+o*Math.sin(Math.PI*(c/h))*Math.abs(Math.sin(Math.PI*c/n));return r}constructor(t,e,i,s,n,h,r,a){this.ctx=t,this.default_noise_gain_dB=-12;const o=Math.floor(-16*a-2);this.min_scale=(1-d(-2))/(1-d(o)),this.ch=new S(t,i,0,10,0),this.ch.setOV(-21),this.ch.setFcQ(h,2),this.ch.setChordNotes(s),this.ch.setChord(i,n);const c=new Float32Array(7),l=new Float32Array(7);c[0]=0,l[0]=0;for(let p=1;p<7;++p)c[p]=1/(p*p),l[p]=0;const u=t.createPeriodicWave(c,l);this.ch.setWF(u),this.am=w(t,0),this.am_t=w(t,1),this.am_d=w(t,1),this.am_o=t.createConstantSource(),this.am_o.offset.value=0;const _=r<40?1/(60/(8*r)):1/(60/(4*r));this.wave_lfo=A(t,this.CreateRingsLFO(t,_,d(o),d(0)),1,!0),this.wave_lfo.connect(this.am_d).connect(this.am_t).connect(this.am.gain),this.am_o.connect(this.am.gain),this.output_gain=t.createGain(),this.output_gain.gain.value=1e-4,this.noise=new P(t,this.am),this.ch.out.connect(this.am).connect(this.output_gain)}connect(t){this.output_gain.connect(t)}start(){this.ch.start(),this.wave_lfo.start(),this.noise.start(),this.am_o.start(),this.output_gain.gain.exponentialRampToValueAtTime(1,this.ctx.currentTime+1)}getFreq(){return this.ch.filt.frequency}setNoiseVolume(t){this.noise.setOutputGain(t)}setAmplitudeModDepth(t){t=k(t,0,1,this.min_scale,1),M(this.ctx,this.am_d.gain,t,this.ctx.currentTime+.01),M(this.ctx,this.am_o.offset,1-t,this.ctx.currentTime+.01)}toggleAmpMod(t){const e=t?1:0;this.am_t.gain.value=e,this.am.gain.value=1-e}}class H{CreateCVLoop(t,e,i,s,n,h){const r=t.sampleRate*s,a=v(1,r,t.sampleRate),o=1/i*t.sampleRate;let c=0,l=0,u=n[l];const _=a.getChannelData(0);for(let p=0;p<r;p++)c>=o&&e.r()>h&&(l++,l>=n.length&&(l=0),u=n[l],c=0),_[p]=u,c++;return a}constructor(t,e,i,s,n,h){this.ctx=t,this.cv_loop=A(t,this.CreateCVLoop(t,e,i,s,n,h),1,!0),this.output=w(t,1),this.cv_loop.connect(this.output)}setOutputRange(t){y(this.ctx,this.output.gain,t,this.ctx.currentTime+.01)}connect(t){this.output.connect(t)}start(){this.cv_loop.start()}stop(){this.cv_loop.stop()}}class O{constructor(t,e,i,s){this.ctx=t,this.lfo=t.createOscillator(),this.gain=t.createGain(),this.offset=t.createConstantSource(),this.output=w(t,0),this.setRate(e),this.setRange(i,s),this.setShape("sine"),this.lfo.connect(this.gain).connect(this.output),this.offset.connect(this.output)}setShape(t){this.lfo.type=t}setRate(t,e=.01){y(this.ctx,this.lfo.frequency,t,this.ctx.currentTime+e)}setRange(t,e){let i=e-t,s=i/2+t;this.gain.gain.setValueAtTime(i/2,this.ctx.currentTime+.01),this.offset.offset.setValueAtTime(s,this.ctx.currentTime+.01)}start(){this.offset.start(),this.lfo.start(),y(this.ctx,this.output.gain,1,this.ctx.currentTime+.01)}stop(){y(this.ctx,this.output.gain,0,this.ctx.currentTime+.01),this.offset.stop(),this.lfo.stop()}connect(t){t.setValueAtTime(0,this.ctx.currentTime+.01),this.output.connect(t)}}class K{constructor(t,e,i,s,n){this.ctx=t,this.fc_hz=e,this.depth=n;const h=1/e;this.input=t.createGain(),this.output=t.createGain(),this.delay=t.createDelay(),this.delay.delayTime.value=h,this.delay_gain=w(t,-i),this.input.connect(this.output),this.input.connect(this.delay).connect(this.delay_gain).connect(this.output)}connect(t){this.output.connect(t)}start(){}setIntensity(t){y(this.ctx,this.delay_gain.gain,-t,this.ctx.currentTime+.01)}setFrequencyScaled(t,e){const i=1/(this.fc_hz-this.depth/2),s=1/(this.fc_hz+this.depth/2),n=k(t,0,1,i,s);y(this.ctx,this.delay.delayTime,n,this.ctx.currentTime+e)}}class Y{constructor(t,e,i,s,n,h){this.ctx=t,this.input=t.createGain(),this.output=t.createGain(),this.noise=new q(this.ctx);const r=w(t,d(s+h));this.gain=t.createGain(),this.noise.setPlaybackRate(i),this.noise.connect(r),r.connect(this.gain.gain),this.wobble_lfo=new T(this.ctx,e,n,d(s+h),d(s)),this.wobble_ramp_gain=w(t,0),this.wobble_lfo.output.connect(this.wobble_ramp_gain).connect(r.gain),this.input.connect(this.gain).connect(this.output)}connect(t){this.output.connect(t)}start(){this.wobble_lfo.start(!0,this.ctx.currentTime+3),this.noise.start(),y(this.ctx,this.wobble_ramp_gain.gain,1,this.ctx.currentTime+10)}bypass(t){t?(this.input.disconnect(),this.input.connect(this.gain).connect(this.output)):(this.input.disconnect(),this.input.connect(this.output))}}const j=[20,28,30,32,35,37,40,42,45,48,50,55,60,65,70,75,80,90],N=j,L=[10,20,28,30,32,35,37,40,42,45,48,50,55,60,65,70],U=2;class Q{constructor(t,e,i,s={}){this.R=t,this.set_type(i);let n=0===i?0:V(25,85,t.rg(55,20));3!==i&&4!==i||(n=85);let h=1==i?[1,5]:[2,6];s.f&&s.f<=h[1]?this.f=s.f:this.f=1==i?t.rcw([1,2,3,4,5],a):2==i?t.rcw([2,3,4,5,6],o):t.ri(3,6);let r=1;if(i>=3){if(this.r_vals=[],3==i){let e=-1;for(let i=0;i<this.f;i++){let i=t.r();for(;Math.abs(i-e)<.1;)i=t.r();this.r_vals.push(i),e=i}}else if(4==i){const e=t.rb(.5),i=t.r()*Math.PI;for(let t=0;t<this.f;t++){let s=.5;s=e?Math.abs(Math.sin(.5*t+i)):Math.abs(Math.sin(i+t*Math.PI/(2*(this.f-1)))),this.r_vals.push(s)}}r=Math.max(...this.r_vals.map((t=>Math.abs(2*(t-.5)))))}this.set_amt(n,r),this.add_r=t.rb(.25),this.add_r&&(this.r_amt=t.rn(.05,.15))}set_r_amt(t){this.r_amt=t}set_type(t){this.type=t}set_amt(t,e=1){this.amt_mult=1,this.amt=t,this.audio_amt=k(t*e,0,85,0,1)}update(t){if(0!==this.type){const i=.01*t,s=2*i-Math.cos(i);this.amt_mult=Math.sin(2*Math.PI*s+Math.PI/2),this.type>=3&&(this.flip=(e=0,Math.sin(Math.PI*s+Math.PI/4)<e?0:1))}var e}shaped_offset(t,e){t=Math.min(t,e-.001);let i,s=e/this.f;if(0==this.type)i=.5;else if(1==this.type)i=D(t,s);else if(2==this.type)i=((t,e)=>Math.floor(t/e)%2==0?0:1)(t,s);else if(this.type>=3){let n=this.flip?e-t:t,h=V(0,this.r_vals.length-1,Math.floor(n/s));i=this.r_vals[h]}else i=.5;this.add_r&&(i+=this.R.rn(-.5,.5)*this.r_amt);const n=1.1*this.amt*this.amt_mult*.5;return k(i,0,1,-n,n)}}class J{constructor(t,e){this.type=e,2==e?this.f=t.rc([.05,.1]):3==e?this.f=.05:4==e?this.angle=0:5==e&&(this.f=t.rn(.002,.01))}parallel(){return 1==this.type||4==this.type}max_size(){return this.parallel()?50:100}rotation_at_time(t,e,i,s,n,h,r,a,o){let c,l=this.type;return 1==l?c=n:2==l?c=n+t*this.f:3==l?c=n+e*this.f:4==l?c=this.angle:5==l?c=o(i*this.f,s*this.f,n):6==l&&(c=k(h,r,a,0,2*Math.PI)),c}}const E=(t,e,i,s=0,n=0)=>{let h={};return e.getHSL(h),h.h+=t.rn(-i,i),h.s+=t.rn(-s,s),h.l+=t.rn(-n,n),h};class ${constructor(t,e,s,n=0,h=0){this.main_color=e;let r=[];for(let a=0;a<25;a++){let a=E(t,e,s,n,h),o=new i.Color;o.setHSL(a.h,a.s,a.l),r.push(o)}this.vars=r}main(){return this.main_color}var(t){return t.rc(this.vars)}}const tt=[[2237476,16777215,14500656,16767186,16747373,16760757],[2107705,4900043,12044499,13479865,15791866,13558253],[1182736,16459325,16763639,16777215,1785744,16763639],[1251613,6414253,16508862,15644129,16776685],[5603839,16643839,16751067,15577599,11854335,14545407],[],[3157945,15329769,16733696,9621247,16745861,9621247],[15159915,16777215,10937087,16768767,16757247,16768767],[6992294,15269885,15460820,16765387,16770272,16770272],[],[15365984,16768200,11524588,14087391,14087391,14087391],[1645334,8761296,16317439,11187905,13487816,16317439],[2237476,2993368,16083329,16759692,16306892,15398911],[],[],[18798,12316404,54251,14742515,16569828,16575217],[0,16768201,16750658,16734726,10562304,16768201],[398871,16764143,7330559,16643837,7336424,16771576],[6713740,14014950,16775672,14873087,16770019,16770019]],et=[1,0,1,0,1,1,3,3,0,1,2,0,1,1,2,2,1,3,1],it=[0,1,3,4,11,12,15,16,17,18],st=[0,1,2,3,4,6,7,8,10,11,12,15,16,17,18],nt=[4,7,8,10,14],ht=[0,1,11,16,17],rt=[4,7,8,9,10,13],at=[.9994,.9991],ot=[.999,.9985];class ct{constructor(t,e){this.idx=e<=2?t.rcw(st,n):t.rcw(it,h),this.colors=tt[this.idx]}h_idx(){return et[this.idx]}h_range(){return nt.includes(this.idx)?2:ht.includes(this.idx)?.5:1}n_thresh(t){return rt.includes(this.idx)?ot[t]:at[t]}}const lt=[[1.055,-7.041],[1.055,-6.036],[1.055,-5.046],[1.055,-4.037],[1.055,-3.049],[1.055,-2.038],[1.055,-1.04],[1.055,-.045],[1.724,-.285],[1.724,-1.284],[1.724,-2.291],[2.351,-2.661],[3.341,-2.661],[4.313,-2.86],[5.095,-3.477],[5.477,-4.382],[5.466,-5.381],[5.047,-6.291],[4.264,-6.868],[3.285,-7.046],[2.275,-7.046],[1.279,-7.046],[1.728,-6.45],[2.729,-6.45],[3.723,-6.384],[4.543,-5.864],[4.838,-4.924],[4.616,-3.952],[3.845,-3.358],[2.861,-3.257],[1.855,-3.257],[1.724,-4.129],[1.724,-5.114],[1.724,-6.132],[11.611,-.605],[10.628,-.605],[9.624,-.605],[8.623,-.605],[8.188,-1.177],[8.188,-2.165],[8.188,-3.169],[8.188,-4.165],[8.188,-5.166],[8.188,-6.177],[8.06,-7.046],[7.524,-6.584],[7.524,-5.586],[7.524,-4.582],[7.524,-3.585],[7.524,-2.584],[7.524,-1.581],[7.524,-.577],[7.932,0],[8.934,0],[9.943,0],[10.945,0],[11.621,-.317],[17.43,0],[18.006,-.303],[17.695,-1.243],[17.383,-2.191],[17.066,-3.152],[16.753,-4.099],[16.441,-5.046],[16.124,-6.006],[15.814,-6.946],[15.05,-6.811],[14.738,-5.867],[14.423,-4.913],[14.111,-3.966],[13.795,-3.009],[13.488,-2.076],[13.171,-1.116],[12.86,-.174],[13.532,-.142],[13.831,-1.079],[14.138,-2.042],[15.041,-2.158],[16.048,-2.158],[16.829,-1.858],[17.134,-.903],[15.454,-6.172],[15.758,-5.233],[16.063,-4.272],[16.367,-3.318],[16.17,-2.734],[15.174,-2.734],[14.414,-2.919],[14.714,-3.86],[15.017,-4.813],[15.324,-5.778],[21.968,-.009],[21.968,-.998],[21.968,-1.998],[21.968,-2.994],[22.456,-3.866],[22.964,-4.72],[23.477,-5.58],[23.989,-6.439],[24.056,-7.046],[23.317,-6.584],[22.815,-5.715],[22.315,-4.85],[21.816,-3.986],[21.29,-4.274],[20.787,-5.143],[20.284,-6.014],[19.791,-6.867],[18.936,-7.02],[19.45,-6.158],[19.959,-5.304],[20.47,-4.446],[20.982,-3.586],[21.304,-2.673],[21.304,-1.666],[21.304,-.661],[21.636,0]],ut={x:1.0546875,y:-7.0458984375,h:7.0458984375,w:23.2958984375,advance:1.0546875},_t=.08;class pt{constructor(t,e){this.mesh=t,this.cam=e;let i=lt,s=ut,n=[s.w/2,-s.h/2];this.text_pos=[],this.text_rot=[];let h=0,r=0;for(let a=0;a<i.length;a+=2){let t=i[a];t[0]-=n[0],t[1]-=n[1],t[0]*=_t,t[1]*=-.08,this.text_pos.push(t);let e=[t[0]-h,t[1]-r],s=Math.atan2(e[1],e[0])+Math.PI/2;this.text_rot.push(s),h=t[0],r=t[1]}this.text_bounds={x:-n[0]*_t,y:n[1]*_t,w:s.w*_t,h:s.h*_t}}gen(t){let e=[],i=[];for(let p=0;p<this.text_pos.length;p++){let s=this.text_pos[p],n=s[0]+.2+.02*t.rn(-1,1),h=s[1]+-5.3+.02*t.rn(-1,1);e.push([n,h]),i.push(this.text_rot[p])}let s=.68/3,n=this.text_bounds.y+-5.3,h=n+this.text_bounds.h,r=this.text_bounds.x-.5,a=r+.5+this.text_bounds.w+.05,o=.68,c=n;for(;c<=h;)e.push([r-s,c+.1*t.rn(-1,1)]),i.push(0),c+=.12;let l=1.73205,u=r-s;for(;c>=(n+h)/2;){let s=.05*t.rn(-1,1);e.push([u+s,c-s/l]),i.push(Math.PI/3),u+=.12,c-=.12/l}for(u=r-s,c=n;c<=(n+h)/2;){let s=.05*t.rn(-1,1);e.push([u+s,c+s/l]),i.push(-Math.PI/3),u+=.12,c+=.12/l}let _=o/1.5;for(c=n-_;c<=h+_;)e.push([r-o,c+.1*t.rn(-1,1)]),i.push(0),c+=.12;for(c=n-_;c<=h+_;)e.push([a+o,c+.1*t.rn(-1,1)]),i.push(0),c+=.12;for(u=r-o+.12;u<=a+o;)e.push([u+.1*t.rn(-1,1),n-_]),i.push(Math.PI/2),u+=.12;for(u=r-o+.12;u<a+o;)e.push([u+.1*t.rn(-1,1),h+_]),i.push(Math.PI/2),u+=.12;this.positions=e,this.rotations=i}render(t,e,i,s,n,h,r){this.gen(t);let a=i.clone();h.in_rev?a.lerp(s,1-h.rev_v):a.lerp(s,h.op_t);let o=0,c=150;for(let l=0;l<this.positions.length&&!(o>=r);l++){if(e.position.set(this.positions[l][0],this.positions[l][1],-2),e.rotation.set(0,0,this.rotations[l]),0==n||1==n){let i=t.rn(1,1.5)*_t;e.scale.set(c*i,c*i,1)}else{let i=t.rn(.05,.2)*_t,s=t.rn(.5,.75)*_t;e.scale.set(c*i,c*s,1)}e.updateMatrix(),this.mesh.setMatrixAt(o,e.matrix),this.mesh.setColorAt(o,a),o++}this.mesh.instanceMatrix.needsUpdate=!0,this.mesh.instanceColor&&(this.mesh.instanceColor.needsUpdate=!0),this.mesh.count=o}}const ft=.5*(Math.sqrt(3)-1),gt=(3-Math.sqrt(3))/6,mt=1/3,dt=1/6,vt=t=>0|Math.floor(t),Ct=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),wt=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function xt(t){const e=512,i=new Uint8Array(e);for(let s=0;s<256;s++)i[s]=s;for(let s=0;s<255;s++){const e=s+~~(t()*(256-s)),n=i[s];i[s]=i[e],i[e]=n}for(let s=256;s<e;s++)i[s]=i[s-256];return i}class It{constructor(t,e={}){this.n_f=e.n_f??t.rn(.1,.5),t
↓ show full (23,900 bytes)