Couldn't come up with anything on topic but thought this was pretty neat and might inspire someone.
_='GJJEW;GKKEHBXJ72BYK72^L[];COnew PZh2D(N|cO029 PI$(}(`Q\'black\';`Rect(0,0JKreque~AnimZionFrame(}@# < 120!?x;yY;r;++;@r > -j0.05;@ <j0L.splice(i1?}}L[i];GlineW4;$Q"hsla("N"100%50%"N")";C(NxNyNr?!xJ^yK^2&_360^V PI720^UJ7 floor((16)6Yfor 20TL.push({xx,yy,ri*2,,YY,U,,_i910,1 - abs( cos(V9i))}?(ircle&)9L[i]. jfor#Tfunction v| opacity MZh.idtKeightupdZe) {ct|get);vel, + Cs(~|tspeedwindow.(i0; i < draw(8) - 4;: hue +j!creZeC(#L.length$G~roke& random(7 / 9 * ?}}@if (B;centerEinnerGc.JwKhLsN.O(xyrQStyleT; i++U_sizeV_~epZat^;`Gfillj= |ar~stX';for(Y in $='~|j`^ZVUTQONLKJGEB@?97&$#! ')with(_.split($[Y]))_=join(pop());eval(_)
Xz0nR0oESkVXCztHSwRLRUgMQlgESjcyQlkESzcyXkwEW107BhtDAU8PBxAEbmV3IFBaaDJEKBJOfGNPFDAUMjkJUEkSJCgQEn0GDigPYFFcJ2JsYWNrXCc7YFJlY3QoMCwwFEoUSxIXFhIOFhIbFhIZcmVxdWV+QW5pbVppb25GcmFtZSgOEn0GFxYPQCMgPCAxMjAPIT8GDgUDeB9/OwN5HxNZOwNyHxg7Ax4rKztAA3IgPiADEQ8DCCAtajAuMDU7QAMIIDxqMA9MLnNwbGljZShpFDE/fX0GGwUHEARMW2ldO0dsaW5lVwsENDskUSJoc2xhKCIVTh4VIhQxMDAlFDUwJRQiFU4IFSIpIjsbQwEoTngUTnkUTnI/BiEPB3gEAkpeeQQCS14YBDIVJhIHHl8XBAIzNjBeVgQJUEk3MjBeVQRKNwlmbG9vcigoAjE2KRU2Egd/HAcTWRxmb3IgGjIwVEwucHVzaCh7eB14LHkdeSxyHWkqMix/HX8sE1kdE1ksER1VLBgdGCweHR5fFxVpOTEwLAgdMSAtIAlhYnMoCWNvcyhWOWkpKX0/DigSAWlyY2xlAiYpOQNMW2ldLgQgagUWD2ZvchojVAZmdW5jdGlvbiAHdnwgCG9wYWNpdHkJTVpoLgtpZHRLZWlnaHQOdXBkWmUPKSB7EGMBEXR8Z2V0Eik7E3ZlbBQsIBUgKyAWQwFzKBd+fHQYc3BlZWQZd2luZG93LhooB2kEMDsgaSA8IBtkcmF3HAQoAjgpIC0gNDsdOiAeaHVlHyAragMhY3JlWmVDASgjTC5sZW5ndGgkR35yb2tlJglyYW5kb20oNyAvIDkgKiA/En19QGlmIChCO2NlbnRlckUEGWlubmVyR2MuSncLS2gMTBBzThAuTyh4FHkUclFTdHlsZQRUOyBpKysPVRFfc2l6ZVYIX35lcFphdF47B2BHZmlsbGo9IHxhcn5zdH8TWCc7Zm9yKFkgaW4gJD0nf358amBeWlZVVFFPTkxLSkdFQkA/OTcmJCMhHx4dHBsaGRgXFhUUExIREA8ODAsJCAcGBQQDAgEnKXdpdGgoXy5zcGxpdCgkW1ldKSlfPWpvaW4ocG9wKCkpO2V2YWwoXyk=
c.width = width = window.innerWidth;
c.height = height = window.innerHeight;
centerX = width / 2;
centerY = height / 2;
var circles = [];
function drawCircle(x, y, r) {
var circle = new Path2D();
circle.arc(x, y, r, 0, 2 * Math.PI);
c.stroke(circle);
}
function update() {
c.fillStyle = 'black';
c.fillRect(0,0, width, height);
startCircles();
updateCircles();
drawCircles();
window.requestAnimationFrame(update);
}
function startCircles() {
if (circles.length < 120) {
createCircle();
}
}
function updateCircles() {
for(var i = 0; i < circles.length; i++) {
circles[i].x += circles[i].velX;
circles[i].y += circles[i].velY;
circles[i].r += circles[i].speed;
circles[i].hue++;
if (circles[i].r > circles[i].target) {
circles[i].opacity -= 0.05;
if (circles[i].opacity <= 0) {
circles.splice(i, 1);
}
}
}
}
function drawCircles() {
for(var i = 0; i < circles.length; i++) {
var circle = circles[i];
c.lineWidth = 4;
c.strokeStyle = "hsla(" + circle.hue + ", 100%, 50%, " + circle.opacity + ")";
drawCircle(circle.x, circle.y, circle.r);
}
}
function createCircle() {
var x = Math.random() * width;
var y = Math.random() * height;
var speed = 2 + Math.random();
var hue_start = Math.random() * 360;
var opacity_step = Math.PI / 20;
var target_size = width / Math.floor((Math.random() * 16) + 6);
var velX = (Math.random() * 8) - 4;
var velY = (Math.random() * 8) - 4;
for (var i = 0; i < 20; i++) {
circles.push({
x: x,
y: y,
r: i*2,
velX: velX,
velY: velY,
target: target_size,
speed: speed,
hue: hue_start + i * 10,
opacity: 1 - Math.abs(Math.cos(opacity_step * i))
});
}
}
update();