for(_='g[~~v+QQ3]PcilO&&(N/=mL~y+K7]NJ==KJnG~v]F(iE[0]D*ED-FCD+Q1]Bfor(A)=>{A@*i(a+2),,W*W[o]=*oQ2][2]*E-)c.fillreturn=[-M*n0,,1=0;,i,t=(E)=> 255*xMath.sqrt(dp(],window.inneroo<3;o++)[1]w=Width,d=50b=d*d,W=1e3,S=150a=l=ngd2*b,0dbdbW,2*W,b,1,1,1,21W,1dp iD*tD+i*t+i*tu=E=>{m=i))DLLL})t=(E,o,r@u(os=-1=r,vv<40;v+=8)t=(-FB++P)/(FB+0==QJeF-i[0Q1]-i,-ip=e,o)=p-P-e,e)+p*p)2==QJp=1-o,q=oD-oC)=-(oDC)+o+P*p-q*q))/p)>.1&&t<rNr=t,s=v);[s,r]}O {var r.4,.4,.5];if(I=itEID>=0){Ay=I[0ii+t*I,ni-Kol~2-o]-i-S;A1G-1,0K5]=E/W|0)%22G=0u(nH=itE,lM=2*nrxtD[0tM=f=HD<0Nf=rx,lf=f<0?0:pow(f,9M=n,l)rK4+o]*M+f;AR=OE,rxr(r+R)/2} r}setInterval((@i=2;i>i--)~8]=l=S*sin~8+2]=lD=S*cos)+S;A;i<Height;i+=6)Ahh<w;h+=6)x=O([02*-S[w/2-h-w/6,S-w/6]Style="rgb("+[D|||0]+")",Rect(h,6,6);a+=.02},10);';G=/[^ -?HIMR-}]/.exec(_);)with(_.split(G))_=join(shift());eval(_)
w=window.innerWidth
K=500
J=K*K
E=1000
D=1500
G=0
l=n=[]
O = [0, K, 0, J*2, 1, 0, 0, 0,
0, K, 0, J, 0, 0, 1, 0,
0, K, 0, J, 0, 1, 0, 0,
0, E, E*2, J, 1, 1, 1, 2,
0, 1, 0, E, 1, 0, 0, 1]
dp = (u,v) => u[0]*v[0]+u[1]*v[1]+u[2]*v[2]
u = v => {
m = Math.sqrt(dp(v,v))
v[0]/=m
v[1]/=m
v[2]/=m
}
it = (o, d, T) => {
u(d)
s = -1
t = T
for(z=0;z<40;z+=8){
t=(-O[z] * o[0] + O[z + 1] * o[1] + O[z + 2] * o[2] + O[z + 3])/(O[z] * d[0] + O[z + 1] * d[1] + O[z + 2] * d[2])
if(O[z+7] == 0) {
e=[O[z] - o[0],
O[z + 1] - o[1],
O[z + 2] - o[2]]
p=dp(e,d)
t=p-Math.sqrt(O[z+3]-dp(e,e)+p*p)
}
if(O[z+7] == 2) {
p=1-d[1]*d[1]
q=d[0]*(o[2]-O[z + 2]) - d[2]*(o[0]-O[z])
t=-(d[0]*(o[0]-O[z]) + d[2]*(o[2]-O[z + 2])+Math.sqrt(O[z + 3]*p-q*q))/p
}
if(t>.1&&t<T) {
T = t
s = z
}
}
return [s, T]
}
cil = (o,d) => {
var r=[.4,.4,.5]
I = it(o, d, E*E)
if(I[0]>=0) {
y=I[0]
for(k=0;k<3;k++) {
o[k]=o[k] + d[k] * I[1]
n[k]=o[k] - O[y+k]
l[k]=O[2-k]-o[k]-D*k
}
if(O[y+7]==1) {
n=[0,-1,0]
O[y + 5]=(o[2]/E|0)%2
}
if(O[y+7]==2) n[1] = 0
u(n)
H=it(o, l, E*E)
A=2*dp(n,d)
rx=[d[0] - A * n[0], d[1] - A * n[1], d[2] - A * n[2]]
A=L=0
if(H[0]<0) {
L=dp(rx,l)
L=L<0?0:Math.pow(L,9)
A=dp(n,l)
}
for(k=0;k<3;k++) r[k]=O[y+4+k]*A+L
R = cil(o, rx)
for(k=0;k<3;k++) r[k]=(r[k] + R[k])/2
}
return r
}
setInterval(() => {
for(i=2;i>=0;i--) {
O[i*8] = l[2] = D*Math.sin(G + i*2)
O[i*8 + 2] = l[0] = D*Math.cos(G + i*2) + D;
}
for(;i<window.innerHeight;i+=6) {
for(j=0;j<w;j+=6) {
x=cil([0,0,-D*2], [w/2-j, i-w/6, D-w/6])
c.fillStyle='rgb('+[x[0]*255|0,x[1]*255|0,x[2]*255|0]+')'
c.fillRect(j, i, 6, 6)
}
}
G+=.02
}, 10)