(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const n of o.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&r(n)}).observe(document,{childList:!0,subtree:!0});function t(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?o.credentials="include":s.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(s){if(s.ep)return;s.ep=!0;const o=t(s);fetch(s.href,o)}})();const a=10,u=7.5,g=4,M=17,m=300,d={night:"#10414F",day:"#D3E4DD"};class C{constructor(i,t,r){this.position={x:i,y:t},this.size={width:a,height:a},this.color=r}update(i){}draw(i){i.fillStyle=d[this.color],i.beginPath(),i.rect(this.position.x*this.size.width,this.position.y*this.size.height,this.size.width,this.size.height),i.fill()}}class b{constructor(i,t,r,s,o){this.position={x:t.x,y:t.y},this.radius=u,this.levelBounds=i,this.velocity={x:r.x,y:r.y},this.color=s,this.oppositeColor=o,this.drawCollisions=!1}update(i){this.position.x,this.position.y,this.position.x+=this.velocity.x,this.position.y+=this.velocity.y,this.position.xthis.levelBounds.width-this.radius&&(this.position.x=this.levelBounds.width-this.radius,this.velocity.x*=-1),this.position.y>this.levelBounds.height-this.radius&&(this.position.y=this.levelBounds.height-this.radius,this.velocity.y*=-1);const t={x:Math.floor(this.position.x/a),y:Math.floor(this.position.y/a)},r=i.filter(n=>n instanceof C).filter(n=>n.color==this.color).sort(n=>2*Math.random()).filter(n=>n.position.x>t.x-2&&n.position.xt.y-2&&n.position.y0?s=h.position.x*h.size.width-(this.position.x+this.radius):this.velocity.x<0&&(s=h.position.x*h.size.width+h.size.width-(this.position.x-this.radius)),this.velocity.y>0?o=h.position.y*h.size.height-(this.position.y+this.radius):this.velocity.y<0&&(o=h.position.y*h.size.height+h.size.height-(this.position.y-this.radius)),Math.abs(s)t.position.x*t.size.width&&i.x-this.radiust.position.y*t.size.height&&i.y-this.radius{T(),F()});window.addEventListener("resize",T);window.addEventListener("keydown",e=>{switch(e.code){case"F9":E=!E,E?v():w();break;case"Equal":y=Math.max(M,y-30),v(),w();break;case"Minus":y=y+30,v(),w();break;default:console.log(e.code);break}});function N(e,i){return e>=l.width/a/2?ie.text(),e=>{console.error("Could not retrieve RSS feed for color contrasts.")}).then(e=>new DOMParser().parseFromString(e,"text/xml")).then(e=>{let i=[...e.getElementsByTagName("item")];for(let t=0;te.x-t&&i.xe.y-t&&i.ye.update(c))}function W(e){c.forEach(i=>i.draw(e))}function R(){z.clearRect(0,0,l.width,l.height),W(z),window.requestAnimationFrame(R)}function T(e){const i=x.getBoundingClientRect();x.width=i.width,x.height=i.height,z.width=i.width,z.height=i.height}