M=Math
x=y=t=L=0
O=1.6
F=.1
S=.15
A=[-F,0]
B=[-F,0]
C=[F,0]
D=[F,0]
l=[]
r=[]
u=0
w=a.width;h=a.height
X=0;Y=-6;onmousemove=e=>{X=6*e.clientX/h-3*w/h;Y=(3-6*e.clientY/h)/.707}
l2=(v,a,b,k)=>{v[0]=a[0]+(b[0]-a[0])*k;v[1]=a[1]+(b[1]-a[1])*k}
s3=(v,a,b,c)=>{v[0]=a;v[1]=b;v[2]=c}
U=_=>{t+=.02
if(t>S)t-=S,L=!L
G=.5+.5*M.cos(M.PI*t/S)
G*=G
f=(a,b,m,c,d,s)=>{
o=F*L*2-F
l2(z=[],[x-M.sin(O)*o,y+M.cos(O)*o],a,-(1.25*S-t)/(.75*S+t))
l2(b,a,z,1-G)
s3(m,b[0],b[1],G*u*t/S)
s3(s,c[0]=d[0],c[1]=d[1],0)
}
L?f(A,B,l,C,D,r):f(C,D,r,A,B,l)}
c.translate(w/2,h/2)
c.scale(h/6,-.707*h/6)
c.lineJoin=c.lineCap='round'
setInterval(h=>{h=M.hypot(dx=X-x,dy=Y-y)
h<3?O=M.atan2(-dy,-dx):0
h=(u=M.max(0,3*M.min(.2,3-h)))*.05/h;dx*=h;dy*=h
x-=dx;y-=dy
U()
E=(s,w,p)=>{c.strokeStyle=s;c.lineWidth=w;c.beginPath();p.map(v=>c.lineTo(v[0],v[1]+v[2]));c.stroke()}
E('#bcb',18,[Z=[0,0,0],Z])
E('#9a9',.7,[Z=[x,y,0],Z])
;[l,r].map(l=>E('#eee',.1,[l,[x-5*dx,y-5*dy,u+.9]]))
E('#333',.9,[Z=[x,y,u],Z])
E('#222',.6,[[x,y,u],[x+3*dx,y+3*dy,u+.9]])},20)
TT1NYXRoCng9eT10PUw9MApPPTEuNgpGPS4xClM9LjE1CkE9Wy1GLDBdCkI9Wy1GLDBdCkM9W0YsMF0KRD1bRiwwXQpsPVtdCnI9W10KdT0wCnc9YS53aWR0aDtoPWEuaGVpZ2h0Clg9MDtZPS02O29ubW91c2Vtb3ZlPWU9PntYPTYqZS5jbGllbnRYL2gtMyp3L2g7WT0oMy02KmUuY2xpZW50WS9oKS8uNzA3fQpsMj0odixhLGIsayk9Pnt2WzBdPWFbMF0rKGJbMF0tYVswXSkqazt2WzFdPWFbMV0rKGJbMV0tYVsxXSkqa30KczM9KHYsYSxiLGMpPT57dlswXT1hO3ZbMV09Yjt2WzJdPWN9ClU9Xz0+e3QrPS4wMgppZih0PlMpdC09UyxMPSFMCkc9LjUrLjUqTS5jb3MoTS5QSSp0L1MpCkcqPUcKZj0oYSxiLG0sYyxkLHMpPT57Cm89RipMKjItRgpsMih6PVtdLFt4LU0uc2luKE8pKm8seStNLmNvcyhPKSpvXSxhLC0oMS4yNSpTLXQpLyguNzUqUyt0KSkKbDIoYixhLHosMS1HKQpzMyhtLGJbMF0sYlsxXSxHKnUqdC9TKQpzMyhzLGNbMF09ZFswXSxjWzFdPWRbMV0sMCkKfQpMP2YoQSxCLGwsQyxELHIpOmYoQyxELHIsQSxCLGwpfQpjLnRyYW5zbGF0ZSh3LzIsaC8yKQpjLnNjYWxlKGgvNiwtLjcwNypoLzYpCmMubGluZUpvaW49Yy5saW5lQ2FwPSdyb3VuZCcKc2V0SW50ZXJ2YWwoaD0+e2g9TS5oeXBvdChkeD1YLXgsZHk9WS15KQpoPDM/Tz1NLmF0YW4yKC1keSwtZHgpOjAKaD0odT1NLm1heCgwLDMqTS5taW4oLjIsMy1oKSkpKi4wNS9oO2R4Kj1oO2R5Kj1oCngtPWR4O3ktPWR5ClUoKQpFPShzLHcscCk9PntjLnN0cm9rZVN0eWxlPXM7Yy5saW5lV2lkdGg9dztjLmJlZ2luUGF0aCgpO3AubWFwKHY9PmMubGluZVRvKHZbMF0sdlsxXSt2WzJdKSk7Yy5zdHJva2UoKX0KRSgnI2JjYicsMTgsW1o9WzAsMCwwXSxaXSkKRSgnIzlhOScsLjcsW1o9W3gseSwwXSxaXSkKO1tsLHJdLm1hcChsPT5FKCcjZWVlJywuMSxbbCxbeC01KmR4LHktNSpkeSx1Ky45XV0pKQpFKCcjMzMzJywuOSxbWj1beCx5LHVdLFpdKQpFKCcjMjIyJywuNixbW3gseSx1XSxbeCszKmR4LHkrMypkeSx1Ky45XV0pfSwyMCkK
Original source not submitted