",i+20*e,p+60*e),o.fillStyle="#ffffff",o.font=`900 ${100*e}px "JetBrains Mono", monospace`,o.fillText(T.toUpperCase(),i+60*e,p+110*e),o.fillStyle=f,o.font=`bold ${24*e}px "JetBrains Mono", monospace`,o.fillText(`[ ★ STARS: ${d} ] [ ⑂ FORKS: ${y} ]`,i+60*e,p+170*e);const a=p+240*e;o.fillStyle="rgba(255, 255, 255, 0.5)",o.font=`bold ${28*e}px "JetBrains Mono", monospace`,o.fillText("/* PROJECT DESCRIPTION */",i+20*e,a),o.fillStyle="#ffffff",o.font=`${30*e}px "JetBrains Mono", monospace`,go(o,k,i+20*e,a+60*e,l-i*3,45*e);const b=n-i-100*e;o.strokeStyle="#ffffff",o.globalAlpha=.2,o.lineWidth=2*e,o.strokeRect(i+20*e,b,400*e,20*e),o.globalAlpha=1,o.fillStyle=f,o.fillRect(i+20*e,b,400*.75*e,20*e),o.fillStyle="rgba(255, 255, 255, 0.4)",o.font=`bold ${14*e}px "JetBrains Mono", monospace`,o.fillText("SYNCING SYSTEM ASSETS... 75%",i+20*e,b+40*e);const m=l-i-200*e;o.fillStyle=s,o.fillRect(m,b,180*e,60*e),o.fillStyle="#000000",o.textAlign="center",o.font=`bold ${22*e}px "JetBrains Mono", monospace`,o.fillText(S.toUpperCase(),m+90*e,b+38*e),P&&(o.textAlign="right",o.fillStyle="rgba(255, 255, 255, 0.4)",o.font=`bold ${18*e}px "JetBrains Mono", monospace`,o.fillText(`URL: ${P.toUpperCase()}`,l-i-20*e,n-i-10*e))},zr=(o,l,n,e,r)=>{const{primaryColor:f,secondaryColor:s,bgColor:M,repoOwner:g,repoName:T,description:k,language:S,stars:d}=r,y=60*e,P=50;o.fillStyle=M,o.fillRect(0,0,l,n);const i=200*e,t=l*.75,p=n*.3,a=o.createLinearGradient(t,p-i,t,p+i);a.addColorStop(0,f),a.addColorStop(.5,s),a.addColorStop(1,f),o.save(),o.shadowColor=s,o.shadowBlur=P/100*80*e,o.fillStyle=a,o.beginPath(),o.arc(t,p,i,0,Math.PI*2),o.fill(),o.globalCompositeOperation="destination-out";for(let u=p-i;u{o.font=`bold ${24*e}px "JetBrains Mono", monospace`;const R=`${A}: ${B}`,h=o.measureText(R).width+40*e;return o.fillStyle=G,o.globalAlpha=.2,o.roundRect(u,v-30*e,h,60*e,30*e),o.fill(),o.globalAlpha=1,o.strokeStyle=G,o.lineWidth=2*e,o.strokeRect(u,v-30*e,h,60*e,30*e),o.fillStyle="#ffffff",o.fillText(R,u+20*e,v+8*e),h},C=n-y-20*e;let $=y;$+=m($,C,"STARS",d,f)+20*e,m($,C,"LANG",S.toUpperCase(),s)},wr=(o,l,n,e,r)=>{const{primaryColor:f,secondaryColor:s,bgColor:M,repoOwner:g,repoName:T,description:k,language:S,stars:d}=r,y=60*e,P=4;o.fillStyle=M,o.fillRect(0,0,l,n),o.strokeStyle="#ffffff",o.globalAlpha=.05,o.lineWidth=1*e;const i=40*e;for(let $=0;${const{primaryColor:f,secondaryColor:s,bgColor:M,repoOwner:g,repoName:T,description:k,language:S,stars:d}=r,y=60*e,P=4;o.fillStyle=M,o.fillRect(0,0,l,n),o.strokeStyle=s,o.lineWidth=P*e,o.strokeRect(y,y,l-y*2,n-y*2),o.lineWidth=P/2*e;const i=y+80*e;o.beginPath(),o.moveTo(y,i),o.lineTo(l-y,i),o.stroke(),o.textAlign="left",o.textBaseline="middle",o.font=`bold ${32*e}px "Courier New", monospace`,o.fillStyle="#ffffff",o.fillText(`FEZ-BIOS V2.0 // SYSTEM: ${g.toUpperCase()}`,y+30*e,y+42*e),o.textAlign="right",o.fillText("0x2026_INIT",l-y-30*e,y+42*e);const t=y+40*e,p=i+60*e;o.textAlign="left",o.fillStyle=f,o.fillText("C:\\\\PROJECTS\\\\> LIST_DATA --VERBOSE",t,p),o.font=`bold ${100*e}px "Courier New", monospace`,o.fillStyle=f,o.fillText(T.toUpperCase(),t,p+110*e),o.strokeStyle=s,o.lineWidth=1*e,o.beginPath(),o.moveTo(t,p+140*e),o.lineTo(l-y-100*e,p+140*e),o.stroke(),o.font=`${30*e}px "Courier New", monospace`,o.fillStyle="#ffffff",o.fillText("LOG_DESC:",t,p+190*e),go(o,k.toUpperCase(),t,p+240*e,l-y*3,45*e);const a=n-y-60*e;o.font=`bold ${24*e}px "Courier New", monospace`,o.fillStyle="#ffffff",o.fillText("BOOTING_CORE: [",t,a);const b=300*e,m=t+220*e;o.strokeStyle="#ffffff",o.lineWidth=2*e,o.strokeRect(m,a-20*e,b,25*e),o.fillStyle=f,o.fillRect(m+5*e,a-15*e,b*.85*e,15*e),o.fillStyle="#ffffff",o.fillText("] 85%",m+b+15*e,a),o.textAlign="right",o.font=`bold ${22*e}px "Courier New", monospace`,o.fillStyle=s,o.fillText(`★:${d} | ⑂:${d/2} | LANG:${S.toUpperCase()}`,l-y-40*e,a)},Kr=(o,l,n,e,r)=>{const{primaryColor:f,secondaryColor:s,bgColor:M,repoOwner:g,repoName:T,description:k,language:S,stars:d,forks:y,supportUrl:P}=r,i=(N,D,J,U,E,K)=>{N.beginPath(),N.moveTo(D+K,J),N.lineTo(D+U-K,J),N.quadraticCurveTo(D+U,J,D+U,J+K),N.lineTo(D+U,J+E-K),N.quadraticCurveTo(D+U,J+E,D+U-K,J+E),N.lineTo(D+K,J+E),N.quadraticCurveTo(D,J+E,D,J+E-K),N.lineTo(D,J+K),N.quadraticCurveTo(D,J,D+K,J),N.closePath()};o.fillStyle="#1a0d00",o.fillRect(0,0,l,n),o.fillStyle="#2e1a05",o.beginPath(),o.moveTo(0,0),o.lineTo(l,0),o.lineTo(l-30*e,30*e),o.lineTo(30*e,30*e),o.fill(),o.fillStyle="#0a0500",o.beginPath(),o.moveTo(0,n),o.lineTo(l,n),o.lineTo(l-30*e,n-30*e),o.lineTo(30*e,n-30*e),o.fill(),o.fillStyle="#140a00",o.beginPath(),o.moveTo(0,0),o.lineTo(0,n),o.lineTo(30*e,n-30*e),o.lineTo(30*e,30*e),o.fill(),o.fillStyle="#3d240a",o.beginPath(),o.moveTo(l,0),o.lineTo(l,n),o.lineTo(l-30*e,n-30*e),o.lineTo(l-30*e,30*e),o.fill();const t=o.createLinearGradient(0,0,l,n);t.addColorStop(0,"#bf953f"),t.addColorStop(.25,"#fcf6ba"),t.addColorStop(.5,"#b38728"),t.addColorStop(.75,"#fbf5b7"),t.addColorStop(1,"#aa771c"),o.fillStyle=t,o.fillRect(30*e,30*e,l-60*e,20*e),o.fillRect(30*e,n-50*e,l-60*e,20*e),o.fillRect(30*e,30*e,20*e,n-60*e),o.fillRect(l-50*e,30*e,20*e,n-60*e),o.strokeStyle="#5a3f05",o.lineWidth=2*e,o.strokeRect(35*e,35*e,l-70*e,n-70*e),o.strokeRect(45*e,45*e,l-90*e,n-90*e);const p="#1a0d00";o.fillStyle=p,o.fillRect(50*e,50*e,l-100*e,n-100*e),o.fillStyle="#2e1a05",o.beginPath(),o.moveTo(50*e,50*e),o.lineTo(l-50*e,50*e),o.lineTo(l-80*e,80*e),o.lineTo(80*e,80*e),o.fill(),o.fillStyle="#0a0500",o.beginPath(),o.moveTo(50*e,n-50*e),o.lineTo(l-50*e,n-50*e),o.lineTo(l-80*e,n-80*e),o.lineTo(80*e,n-80*e),o.fill(),o.fillStyle="#140a00",o.beginPath(),o.moveTo(50*e,50*e),o.lineTo(50*e,n-50*e),o.lineTo(80*e,n-80*e),o.lineTo(80*e,80*e),o.fill(),o.fillStyle="#3d240a",o.beginPath(),o.moveTo(l-50*e,50*e),o.lineTo(l-50*e,n-50*e),o.lineTo(l-80*e,n-80*e),o.lineTo(l-80*e,80*e),o.fill(),o.save(),o.beginPath(),o.rect(80*e,80*e,l-160*e,n-160*e),o.clip(),o.fillStyle=M,o.fillRect(80*e,80*e,l-160*e,n-160*e);const a=o.createRadialGradient(l/2,n/2,n*.1,l/2,n/2,n*.6);a.addColorStop(0,"rgba(0,0,0,0)"),a.addColorStop(1,"rgba(0,0,0,0.85)"),o.fillStyle=a,o.fillRect(80*e,80*e,l-160*e,n-160*e),o.globalAlpha=.04,o.fillStyle="#ffffff";for(let N=80*e;N{o.save(),o.translate(N,D),o.scale(J,U),o.strokeStyle=t,o.lineWidth=3*e,o.lineCap="round",o.beginPath(),o.moveTo(0,0),o.quadraticCurveTo(80*e,20*e,120*e,120*e),o.stroke(),o.fillStyle=s,o.beginPath(),o.moveTo(40*e,10*e),o.quadraticCurveTo(50*e,-10*e,70*e,0),o.quadraticCurveTo(50*e,20*e,40*e,10*e),o.fill(),o.stroke(),o.beginPath(),o.moveTo(80*e,40*e),o.quadraticCurveTo(100*e,30*e,110*e,50*e),o.quadraticCurveTo(90*e,60*e,80*e,40*e),o.fill(),o.stroke(),o.fillStyle=f,o.beginPath(),o.arc(120*e,120*e,15*e,0,Math.PI*2),o.fill(),o.stroke(),o.fillStyle=t,o.beginPath(),o.arc(120*e,120*e,5*e,0,Math.PI*2),o.fill(),o.restore()};b(80*e,80*e,1,1),b(l-80*e,80*e,-1,1),b(80*e,n-80*e,1,-1),b(l-80*e,n-80*e,-1,-1),o.textAlign="center",o.textBaseline="middle",o.font=`italic ${28*e}px "Georgia", serif`,o.fillStyle="#dddddd",o.shadowColor="rgba(0,0,0,0.8)",o.shadowBlur=6*e,o.shadowOffsetY=3*e,o.fillText(`— Opus by ${g} —`,l/2,160*e);const m=T.charAt(0).toUpperCase(),C=T.slice(1);o.textBaseline="alphabetic",o.font=`bold ${120*e}px "Georgia", serif`;const $=o.measureText(m).width;o.font=`bold ${80*e}px "Georgia", serif`;const u=o.measureText(C).width,v=$+u,A=(l-v)/2,B=290*e;o.fillStyle=f,o.fillRect(A-15*e,B-95*e,$+30*e,110*e),o.strokeStyle=t,o.lineWidth=4*e,o.strokeRect(A-15*e,B-95*e,$+30*e,110*e),o.lineWidth=1*e,o.strokeRect(A-10*e,B-90*e,$+20*e,100*e),o.fillStyle=t,o.font=`bold ${120*e}px "Georgia", serif`,o.textAlign="left",o.shadowColor="rgba(0,0,0,0.9)",o.shadowBlur=10*e,o.shadowOffsetY=5*e,o.fillText(m,A,B),o.fillStyle="#ffffff",o.font=`bold ${80*e}px "Georgia", serif`,o.fillText(C,A+$,B),o.save(),o.beginPath(),o.moveTo(l/2-200*e,340*e),o.quadraticCurveTo(l/2,360*e,l/2+200*e,340*e),o.strokeStyle=t,o.lineWidth=3*e,o.stroke(),o.beginPath(),o.arc(l/2,350*e,6*e,0,Math.PI*2),o.fillStyle=s,o.fill(),o.strokeStyle=t,o.lineWidth=2*e,o.stroke(),o.restore(),o.textAlign="center",o.textBaseline="top",o.font=`italic ${32*e}px "Georgia", serif`,o.fillStyle="#dcdcdc",o.shadowBlur=5*e,o.shadowOffsetY=2*e,go(o,k,l/2,390*e,l-360*e,45*e);const G=S&&S.trim()!=="",R=d&&d.trim()!=="",h=y&&y.trim()!=="",O=P&&P.trim()!=="";if(G||R||h||O){const N=n-160*e;if(o.fillStyle="rgba(10, 5, 0, 0.6)",i(o,l/2-380*e,N,760*e,60*e,15*e),o.fill(),o.strokeStyle=t,o.lineWidth=2*e,o.stroke(),o.textBaseline="middle",o.font=`bold ${22*e}px "Georgia", serif`,G&&(o.textAlign="left",o.fillStyle="#dddddd",o.fillText(`⚔️ ${S.toUpperCase()}`,l/2-340*e,N+30*e)),R||h){o.textAlign="center",o.fillStyle=t;let D="";R&&h?D=`★ ${d} • ⎂ ${y}`:R?D=`★ ${d}`:h&&(D=`⎂ ${y}`),o.fillText(D,l/2,N+30*e)}O&&(o.textAlign="right",o.fillStyle="#dddddd",o.fillText(`✒️ ${P}`,l/2+340*e,N+30*e))}o.restore()},Vr=(o,l,n,e,r)=>{const{repoOwner:f,repoName:s,description:M,language:g,stars:T,forks:k,primaryColor:S,secondaryColor:d,bgColor:y,showPattern:P}=r,i=S||"#00FF41",t=d||"#ffffff",p=y||"#050a05",a=(A,B)=>{const G=parseInt(A.slice(1,3),16),R=parseInt(A.slice(3,5),16),h=parseInt(A.slice(5,7),16);return`rgba(${G}, ${R}, ${h}, ${B})`},b=a(i,.1);if(o.fillStyle=p,o.fillRect(0,0,l,n),P){o.strokeStyle=b,o.lineWidth=1*e;const A=80*e;for(let B=0;B<=l;B+=A)o.beginPath(),o.moveTo(B,0),o.lineTo(B,n),o.stroke();for(let B=0;B<=n;B+=A)o.beginPath(),o.moveTo(0,B),o.lineTo(l,B),o.stroke();o.fillStyle=a(i,.3),o.font=`${10*e}px "JetBrains Mono", monospace`;for(let B=0;B<=l;B+=A*2)o.fillText(`${(B/10).toFixed(0)}°E`,B+5*e,15*e);for(let B=0;B<=n;B+=A*2)o.fillText(`${(B/10).toFixed(0)}°N`,5*e,B+15*e)}const m=l/2,C=n/2,$=100*e;o.shadowBlur=12*e,o.shadowColor=i,s&&(o.fillStyle=i,o.font=`900 ${100*e}px "JetBrains Mono", monospace`,o.textAlign="center",o.fillText(s.toUpperCase(),m,C-30*e)),f&&(o.font=`bold ${22*e}px "JetBrains Mono", monospace`,o.fillText(`USER: ${f.toUpperCase()}`,m,C-140*e)),o.shadowBlur=0,M&&(o.fillStyle=t,o.font=`${26*e}px "JetBrains Mono", monospace`,go(o,M.toUpperCase(),m,C+80*e,l-$*4,38*e)),o.textAlign="left",o.font=`bold ${18*e}px "JetBrains Mono", monospace`,o.fillStyle=i,r.supportUrl?o.fillText(`ADDR: ${r.supportUrl.toUpperCase()}`,$,$):o.fillText(`ADDR: GITHUB.COM/${f.toUpperCase()}`,$,$),o.fillText("SIGNAL: LOCKED",$,$+25*e),o.textAlign="right",o.fillText("LOC: 39.9334° N, 32.8597° E",l-$,$),o.fillText("AZM: 312.4° // ELV: +44.2",l-$,$+25*e),o.textAlign="left";const u=n-$;let v=0;T&&T!=="0"&&(o.fillText(`★ STARS: ${T}`,$,u),v++),k&&k!=="0"&&(o.fillText(`⑂ FORKS: ${k}`,$,u+v*25*e),v++),o.textAlign="right",g&&o.fillText(`LANG: ${g.toUpperCase()}`,l-$,u),o.fillStyle=t,o.globalAlpha=.6,o.font=`normal ${14*e}px "JetBrains Mono", monospace`,o.fillText(`DATE_RECORDED: ${new Date().toLocaleDateString()}`,l-$,u+25*e),o.globalAlpha=1,o.strokeStyle=i,o.lineWidth=1*e,o.globalAlpha=.2,o.beginPath(),o.moveTo(l*.1,n*.85),o.lineTo(l*.25,n*.7),o.lineTo(l*.18,n*.55),o.stroke(),o.beginPath(),o.moveTo(l*.88,n*.15),o.lineTo(l*.75,n*.35),o.lineTo(l*.82,n*.45),o.stroke(),o.globalAlpha=1,o.fillStyle="rgba(0, 0, 0, 0.15)";for(let A=0;A{const{primaryColor:f,secondaryColor:s,bgColor:M,showPattern:g,repoOwner:T,repoName:k,description:S,language:d,stars:y,forks:P,supportUrl:i}=r,t=o.createLinearGradient(0,0,l,n);if(t.addColorStop(0,f),t.addColorStop(.5,s),t.addColorStop(1,f),o.save(),o.globalAlpha=.12,o.filter="blur(80px)",o.beginPath(),o.arc(l*.75,n*.15,320*e,0,Math.PI*2),o.fillStyle=f,o.fill(),o.beginPath(),o.arc(l*.25,n*.85,260*e,0,Math.PI*2),o.fillStyle=s,o.fill(),o.restore(),g){o.save(),o.globalAlpha=.04,o.strokeStyle="#ffffff",o.lineWidth=1*e;const D=60*e;for(let J=-n;J{if(!J)return;o.font=`700 ${18*e}px "JetBrains Mono", monospace`;const E=`${J} ${D}`,V=o.measureText(E).width+24*e,L=32*e;o.save(),o.globalAlpha=.12,o.fillStyle=U,o.beginPath(),o.roundRect($,u-L+6*e,V,L,6*e),o.fill(),o.restore(),o.fillStyle=U,o.font=`700 ${18*e}px "JetBrains Mono", monospace`,o.fillText(E,$+12*e,u),$+=V+14*e};v("Stars",y,f),v("Forks",P,s);const A=320*e,B=200*e,G=l-p-A,R=n*.38;o.save(),o.globalAlpha=.06,o.fillStyle="#ffffff",o.beginPath(),o.roundRect(G,R,A,B,16*e),o.fill(),o.restore(),o.save(),o.globalAlpha=.1,o.strokeStyle="#ffffff",o.lineWidth=1.5*e,o.beginPath(),o.roundRect(G,R,A,B,16*e),o.stroke(),o.restore();const h=36*e,O=G+24*e,N=R+24*e;o.save(),o.fillStyle=M,o.strokeStyle="rgba(255,255,255,0.2)",o.lineWidth=2*e,o.beginPath(),o.roundRect(O,N,h,h,8*e),o.fill(),o.stroke(),o.restore(),o.save(),o.fillStyle=f,o.beginPath(),o.roundRect(O+h+10*e,N,h,h,8*e),o.fill(),o.restore(),o.save(),o.fillStyle=s,o.beginPath(),o.roundRect(O+(h+10*e)*2,N,h,h,8*e),o.fill(),o.restore(),o.fillStyle="rgba(255,255,255,0.35)",o.font=`600 ${12*e}px "JetBrains Mono", monospace`,o.textAlign="left",o.fillText("PALETTE",O,N+h+22*e),o.fillStyle="rgba(255,255,255,0.5)",o.font=`700 ${16*e}px "JetBrains Mono", monospace`,o.fillText(d,O,N+h+50*e),o.fillStyle=g?f:"rgba(255,255,255,0.2)",o.font=`600 ${12*e}px "JetBrains Mono", monospace`,o.fillText(g?"● PATTERN ON":"○ PATTERN OFF",O,N+h+74*e),i&&(o.textAlign="right",o.fillStyle="rgba(255,255,255,0.3)",o.font=`400 ${18*e}px "JetBrains Mono", monospace`,o.fillText(i,l-p,C)),o.save(),o.strokeStyle=t,o.lineWidth=2*e,o.globalAlpha=.4,o.beginPath(),o.moveTo(p-20*e,p-40*e),o.lineTo(p-20*e,p-20*e),o.lineTo(p,p-20*e),o.stroke(),o.beginPath(),o.moveTo(l-p+20*e,n-p+40*e),o.lineTo(l-p+20*e,n-p+20*e),o.lineTo(l-p,n-p+20*e),o.stroke(),o.restore()},Zr=(o,l,n,e,r)=>{const{primaryColor:f,secondaryColor:s,bgColor:M,showPattern:g,repoOwner:T,repoName:k,description:S,language:d,stars:y,forks:P,supportUrl:i}=r;o.save();const t=5;for(let N=0;N{o.save(),o.fillStyle=N,o.beginPath(),o.arc(R+D*(O*2.8),h,O,0,Math.PI*2),o.fill(),o.strokeStyle="rgba(255,255,255,0.15)",o.lineWidth=1*e,o.stroke(),o.restore()}),h+=36*e,o.fillStyle="rgba(255,255,255,0.3)",o.font=`500 ${12*e}px "JetBrains Mono", monospace`,o.textAlign="left",o.fillText("THEME PALETTE",R,h),h+=28*e,o.fillStyle="rgba(255,255,255,0.45)",o.font=`600 ${14*e}px "JetBrains Mono", monospace`,o.fillText(d.toUpperCase(),R,h),h+=26*e,o.fillStyle=g?s:"rgba(255,255,255,0.2)",o.font=`500 ${11*e}px "JetBrains Mono", monospace`,o.fillText(g?"◆ TEXTURE ACTIVE":"◇ TEXTURE OFF",R,h),i&&(o.textAlign="right",o.fillStyle="rgba(255,255,255,0.25)",o.font=`300 ${16*e}px "JetBrains Mono", monospace`,o.fillText(i,l-p,C))},Qr=(o,l,n,e,r)=>{const{primaryColor:f,secondaryColor:s,bgColor:M,showPattern:g,repoOwner:T,repoName:k,description:S,language:d,stars:y,forks:P,supportUrl:i}=r;if(o.save(),o.fillStyle="#f5f0e8",o.fillRect(0,0,l,n),o.restore(),g){o.save(),o.globalAlpha=.03,o.fillStyle=M;const J=137;for(let U=0;U<1200;U++){const E=J*(U+1)*4919%l,K=J*(U+1)*7127%n,V=(U%4+.5)*e;o.beginPath(),o.arc(E,K,V,0,Math.PI*2),o.fill()}o.restore()}const t=80*e,p="#1a1a1a",a="#4a4540",b="#c8c0b0";o.fillStyle=p,o.fillRect(t,t-10*e,l-t*2,4*e),o.fillRect(t,t-2*e,l-t*2,1*e),o.textAlign="left",o.fillStyle=a,o.font=`italic 400 ${14*e}px Georgia, "Times New Roman", serif`,o.fillText("The Open Source Chronicle",t,t+20*e),o.textAlign="right",o.font=`400 ${14*e}px Georgia, "Times New Roman", serif`,o.fillText(`est. ${T}`,l-t,t+20*e),o.fillStyle=b,o.fillRect(t,t+32*e,l-t*2,1*e),o.textAlign="center",o.fillStyle=p,o.font=`900 ${80*e}px Georgia, "Times New Roman", serif`;const m=t+120*e,C=l-t*2;let $=80;for(o.font=`900 ${$*e}px Georgia, "Times New Roman", serif`;o.measureText(k).width>C&&$>40;)$-=4,o.font=`900 ${$*e}px Georgia, "Times New Roman", serif`;o.fillText(k,l/2,m),o.fillStyle=b,o.fillRect(t,m+16*e,l-t*2,1*e),o.textAlign="center",o.fillStyle=a,o.font=`italic 400 ${22*e}px Georgia, "Times New Roman", serif`,o.fillText(`By ${T} · Written in ${d}`,l/2,m+48*e);const u=l*.52,v=m+72*e,A=n-t-40*e;o.fillStyle=b,o.fillRect(u,v,1*e,A-v),o.textAlign="left",o.fillStyle="#2a2520",o.font=`400 ${20*e}px Georgia, "Times New Roman", serif`;const B=t,G=u-t-30*e;if(S.length>0){const J=S[0].toUpperCase(),U=S.slice(1);o.fillStyle=f,o.font=`700 ${64*e}px Georgia, "Times New Roman", serif`,o.fillText(J,B,v+48*e);const E=o.measureText(J).width+6*e;o.fillStyle="#2a2520",o.font=`400 ${20*e}px Georgia, "Times New Roman", serif`,go(o,U,B+E,v+24*e,G-E,28*e),o.fillStyle="#2a2520",go(o,U,B,v+80*e,G,28*e)}const R=u+26*e;let h=v+16*e;o.fillStyle=p,o.font=`700 ${14*e}px Georgia, "Times New Roman", serif`,o.textAlign="left",o.fillText("BY THE NUMBERS",R,h),h+=8*e,o.fillStyle=b,o.fillRect(R,h,160*e,1*e),h+=28*e,y&&(o.fillStyle=f,o.font=`900 ${44*e}px Georgia, "Times New Roman", serif`,o.fillText(y,R,h+10*e),o.fillStyle=a,o.font=`italic 400 ${16*e}px Georgia, "Times New Roman", serif`,o.fillText("stargazers",R+o.measureText(y).width+14*e,h+10*e),o.font=`900 ${44*e}px Georgia, "Times New Roman", serif`,h+=50*e),P&&(o.fillStyle=s,o.font=`900 ${44*e}px Georgia, "Times New Roman", serif`,o.fillText(P,R,h+10*e),o.fillStyle=a,o.font=`italic 400 ${16*e}px Georgia, "Times New Roman", serif`,o.fillText("forks",R+o.measureText(P).width+14*e,h+10*e),o.font=`900 ${44*e}px Georgia, "Times New Roman", serif`,h+=50*e),o.fillStyle=b,o.fillRect(R,h,160*e,1*e),h+=24*e,o.fillStyle=f,o.globalAlpha=.12,o.fillRect(R,h-14*e,160*e,28*e),o.globalAlpha=1,o.fillStyle=f,o.font=`700 ${14*e}px "JetBrains Mono", monospace`,o.fillText(d.toUpperCase(),R+10*e,h+4*e),h+=36*e,o.fillStyle=a,o.font=`italic 400 ${12*e}px Georgia, "Times New Roman", serif`,o.fillText("Color edition",R,h);const O=h+12*e,N=16*e;[M,f,s].forEach((J,U)=>{o.fillStyle=J,o.fillRect(R+U*(N+6*e),O,N,N),o.strokeStyle=b,o.lineWidth=1*e,o.strokeRect(R+U*(N+6*e),O,N,N)});const D=n-t;o.fillStyle=p,o.fillRect(t,D-24*e,l-t*2,2*e),o.fillRect(t,D-18*e,l-t*2,1*e),o.textAlign="left",o.fillStyle=a,o.font=`italic 400 ${14*e}px Georgia, "Times New Roman", serif`,o.fillText(g?"• Textured Edition •":"• Clean Edition •",t,D),i&&(o.textAlign="right",o.fillStyle=a,o.font=`400 ${14*e}px Georgia, "Times New Roman", serif`,o.fillText(i,l-t,D))},xr=(o,l,n,e,r)=>{const{primaryColor:f,secondaryColor:s,bgColor:M,showPattern:g,repoOwner:T,repoName:k,description:S,language:d,stars:y,forks:P,supportUrl:i}=r;if(o.save(),o.globalAlpha=.18,o.fillStyle=f,o.beginPath(),o.moveTo(l*.55,0),o.lineTo(l,0),o.lineTo(l,n*.7),o.lineTo(l*.35,n*.45),o.closePath(),o.fill(),o.restore(),o.save(),o.globalAlpha=.14,o.fillStyle=s,o.beginPath(),o.moveTo(0,n*.5),o.lineTo(l*.4,n),o.lineTo(0,n),o.closePath(),o.fill(),o.restore(),o.save(),o.fillStyle=f,o.globalAlpha=.7,o.translate(l*.78,n*.12),o.rotate(-.12),o.fillRect(0,0,90*e,90*e),o.restore(),o.save(),o.fillStyle=s,o.globalAlpha=.25,o.beginPath(),o.arc(l*.15,n*.25,80*e,0,Math.PI*2),o.fill(),o.restore(),o.save(),o.fillStyle=M,o.globalAlpha=.5,o.fillRect(l-180*e,n-120*e,180*e,120*e),o.restore(),g){o.save(),o.globalAlpha=.06,o.strokeStyle="#ffffff",o.lineWidth=1*e,[.18,.33,.47,.62,.78,.91].forEach(O=>{o.beginPath(),o.moveTo(0,n*O),o.lineTo(l,n*O),o.stroke()}),[.22,.52,.73].forEach(O=>{o.beginPath(),o.moveTo(l*O,0),o.lineTo(l*O,n),o.stroke()}),o.restore(),o.save(),o.globalAlpha=.04,o.fillStyle="#ffffff";for(let O=0;O<30;O++){const N=(O*7919+31)%100/100*l,D=(O*6271+17)%100/100*n;o.fillRect(N,D,3*e,3*e)}o.restore()}const t=80*e;o.save(),o.globalAlpha=.04,o.fillStyle="#ffffff",o.font=`900 ${220*e}px "Inter", sans-serif`,o.translate(l*.5,n*.55),o.rotate(-.08),o.textAlign="center",o.fillText(k.toUpperCase(),0,0),o.restore(),o.save(),o.fillStyle=s,o.font=`600 ${14*e}px "JetBrains Mono", monospace`,o.translate(t-40*e,n*.55),o.rotate(-Math.PI/2),o.textAlign="center",o.fillText(T.toUpperCase(),0,0),o.restore(),o.textAlign="left";const p=k.split(""),a=Math.ceil(p.length/2),b=k.slice(0,a),m=k.slice(a);o.fillStyle="#ffffff",o.font=`900 ${88*e}px "Inter", sans-serif`,o.fillText(b,t,t+80*e),o.fillStyle=f,o.font=`300 ${88*e}px "Inter", sans-serif`;const C=o.measureText(b).width;o.font=`300 ${88*e}px "Inter", sans-serif`,o.fillText(m,t+60*e,t+170*e),o.save(),o.strokeStyle=s,o.lineWidth=3*e,o.globalAlpha=.5,o.beginPath(),o.moveTo(t,t+105*e),o.lineTo(t+C+40*e,t+105*e),o.stroke(),o.restore();const $=t,u=t+210*e,v=l*.48;o.save(),o.fillStyle="#000000",o.globalAlpha=.3,o.fillRect($,u,v,100*e),o.restore(),o.fillStyle="rgba(255,255,255,0.7)",o.font=`300 ${22*e}px "Inter", sans-serif`,go(o,S,$+16*e,u+30*e,v-32*e,32*e),o.save(),o.fillStyle=f,o.globalAlpha=.15,o.font=`900 ${120*e}px "Inter", sans-serif`,o.translate(l*.72,n*.68),o.rotate(.15),o.textAlign="center",o.fillText(d.toUpperCase(),0,0),o.restore(),o.fillStyle="#ffffff",o.font=`600 ${16*e}px "JetBrains Mono", monospace`,o.textAlign="left",o.globalAlpha=.6,o.fillText(`[ ${d} ]`,l*.62,n-t-60*e),o.globalAlpha=1;const A=n-t;if(y&&(o.fillStyle=f,o.font=`900 ${52*e}px "Inter", sans-serif`,o.textAlign="left",o.fillText(y,t,A-10*e),o.fillStyle="rgba(255,255,255,0.35)",o.font=`300 ${16*e}px "JetBrains Mono", monospace`,o.fillText("stars",t+o.measureText(y).width+10*e,A-10*e),o.font=`900 ${52*e}px "Inter", sans-serif`),P){const R=t+220*e;o.fillStyle=s,o.font=`900 ${36*e}px "Inter", sans-serif`,o.fillText(P,R,A-16*e),o.fillStyle="rgba(255,255,255,0.35)",o.font=`300 ${14*e}px "JetBrains Mono", monospace`,o.fillText("forks",R+o.measureText(P).width+8*e,A-16*e),o.font=`900 ${36*e}px "Inter", sans-serif`}const B=l-t-20*e,G=24*e;[M,f,s].forEach((R,h)=>{o.save(),o.fillStyle=R,o.translate(B,t+h*(G+8*e)),o.rotate(.05*(h-1)),o.fillRect(0,0,G,G),o.strokeStyle="rgba(255,255,255,0.15)",o.lineWidth=1*e,o.strokeRect(0,0,G,G),o.restore()}),o.save(),o.fillStyle=g?f:"rgba(255,255,255,0.15)",o.font=`600 ${10*e}px "JetBrains Mono", monospace`,o.translate(l-t+10*e,n*.45),o.rotate(Math.PI/2),o.textAlign="center",o.fillText(g?"TEXTURE:ON":"TEXTURE:OFF",0,0),o.restore(),i&&(o.textAlign="right",o.fillStyle="rgba(255,255,255,0.2)",o.font=`300 ${15*e}px "JetBrains Mono", monospace`,o.fillText(i,l-t,A)),o.save(),o.strokeStyle=s,o.lineWidth=2*e,o.globalAlpha=.3;for(let R=0;R<4;R++){const h=t+10*e+R*14*e;o.beginPath(),o.moveTo(h,t+190*e),o.lineTo(h+10*e,t+205*e),o.stroke()}o.restore()},dl=(o,l)=>{const n=Math.sin(o*12.9898+l*78.233)*43758.5453;return n-Math.floor(n)},Dl=(o,l,n)=>{const e=o*n,r=l*n,f=Math.floor(e),s=Math.floor(r),M=e-f,g=r-s,T=dl(f,s),k=dl(f+1,s),S=dl(f,s+1),d=dl(f+1,s+1),y=T+M*(k-T),P=S+M*(d-S);return y+g*(P-y)},Yl=(o,l,n,e)=>{const r=o/n,f=l/e;return Dl(r,f,3)*.5+Dl(r,f,6)*.3+Dl(r,f,12)*.2},cr=(o,l,n,e,r)=>{const{primaryColor:f,secondaryColor:s,bgColor:M,showPattern:g,repoOwner:T,repoName:k,description:S,language:d,stars:y,forks:P,supportUrl:i}=r;o.save(),o.fillStyle="#0d1117",o.fillRect(0,0,l,n),o.restore();const t=14,p=4*e;for(let W=0;W.6&&(o.fillStyle=s,o.globalAlpha=.35,o.fillRect(W-4*e,j-.5*e,8*e,1*e),o.fillRect(W-.5*e,j-4*e,1*e,8*e),o.globalAlpha=.2,o.fillText(`${(q*1e3).toFixed(0)}m`,W,j+14*e))}o.restore();const b=80*e;o.save(),o.strokeStyle=f,o.globalAlpha=.15,o.lineWidth=1.5*e,o.strokeRect(b*.4,b*.4,l-b*.8,n-b*.8),o.restore(),o.save(),o.strokeStyle=s,o.lineWidth=2*e,o.globalAlpha=.3;const m=20*e,C=b*.4;o.beginPath(),o.moveTo(C,C+m),o.lineTo(C,C),o.lineTo(C+m,C),o.stroke(),o.beginPath(),o.moveTo(l-C-m,C),o.lineTo(l-C,C),o.lineTo(l-C,C+m),o.stroke(),o.beginPath(),o.moveTo(C,n-C-m),o.lineTo(C,n-C),o.lineTo(C+m,n-C),o.stroke(),o.beginPath(),o.moveTo(l-C-m,n-C),o.lineTo(l-C,n-C),o.lineTo(l-C,n-C-m),o.stroke(),o.restore();const $=24*e,u=520*e,v=260*e;o.save(),o.fillStyle="#000000",o.globalAlpha=.65,o.fillRect(b,b,u,v),o.restore(),o.save(),o.strokeStyle=f,o.globalAlpha=.4,o.lineWidth=1.5*e,o.strokeRect(b,b,u,v),o.restore(),o.textAlign="left",o.fillStyle=s,o.globalAlpha=.5,o.font=`500 ${12*e}px "JetBrains Mono", monospace`,o.fillText("GEOLOGICAL SURVEY — OPEN SOURCE REGISTRY",b+$,b+28*e),o.globalAlpha=1,o.fillStyle=f,o.globalAlpha=.3,o.fillRect(b+$,b+40*e,u-$*2,1*e),o.globalAlpha=1,o.fillStyle=f,o.font=`600 ${18*e}px "JetBrains Mono", monospace`,o.fillText(T,b+$,b+68*e),o.fillStyle="#ffffff",o.font=`800 ${52*e}px "Inter", sans-serif`;let A=52;for(;o.measureText(k).width>u-$*2&&A>28;)A-=2,o.font=`800 ${A*e}px "Inter", sans-serif`;o.fillText(k,b+$,b+124*e),o.fillStyle=s,o.font=`400 ${14*e}px "JetBrains Mono", monospace`,o.fillText(`DATUM: ${d.toUpperCase()} | PROJECTION: OPEN-SRC`,b+$,b+156*e);const B=b+195*e;o.fillStyle="rgba(255,255,255,0.35)",o.font=`500 ${11*e}px "JetBrains Mono", monospace`,o.fillText("LEGEND:",b+$,B);const G=14*e,R=[{color:M,label:"BASE"},{color:f,label:"CONTOUR"},{color:s,label:"MARKER"}];let h=b+$+75*e;R.forEach(({color:W,label:j})=>{o.fillStyle=W,o.fillRect(h,B-10*e,G,G),o.strokeStyle="rgba(255,255,255,0.2)",o.lineWidth=1*e,o.strokeRect(h,B-10*e,G,G),o.fillStyle="rgba(255,255,255,0.35)",o.font=`500 ${11*e}px "JetBrains Mono", monospace`,o.fillText(j,h+G+6*e,B),h+=o.measureText(j).width+G+24*e});const O=20*e,N=130*e,D=l*.5,J=n-b-N;o.save(),o.fillStyle="#000000",o.globalAlpha=.5,o.fillRect(b,J,D,N),o.restore(),o.save(),o.strokeStyle=f,o.globalAlpha=.2,o.lineWidth=1*e,o.setLineDash([3*e,3*e]),o.strokeRect(b,J,D,N),o.setLineDash([]),o.restore(),o.fillStyle="rgba(255,255,255,0.18)",o.font=`500 ${11*e}px "JetBrains Mono", monospace`,o.fillText("FIELD NOTES",b+O,J+24*e),o.fillStyle="rgba(255,255,255,0.55)",o.font=`300 ${19*e}px "Inter", sans-serif`,go(o,S,b+O,J+52*e,D-O*2,28*e);const U=20*e,E=240*e,K=130*e,V=l-b-E,L=n-b-K;o.save(),o.fillStyle="#000000",o.globalAlpha=.5,o.fillRect(V,L,E,K),o.restore(),o.save(),o.strokeStyle=s,o.globalAlpha=.2,o.lineWidth=1*e,o.strokeRect(V,L,E,K),o.restore(),o.fillStyle="rgba(255,255,255,0.18)",o.font=`500 ${11*e}px "JetBrains Mono", monospace`,o.textAlign="left",o.fillText("SURVEY METRICS",V+U,L+24*e);let F=L+58*e;if(y){o.fillStyle=f,o.font=`800 ${30*e}px "Inter", sans-serif`,o.fillText(y,V+U,F);const W=o.measureText(y).width;o.fillStyle="rgba(255,255,255,0.3)",o.font=`400 ${13*e}px "JetBrains Mono", monospace`,o.fillText("STARS",V+U+W+10*e,F),F+=36*e}if(P){o.fillStyle=s,o.font=`800 ${30*e}px "Inter", sans-serif`,o.fillText(P,V+U,F);const W=o.measureText(P).width;o.fillStyle="rgba(255,255,255,0.3)",o.font=`400 ${13*e}px "JetBrains Mono", monospace`,o.fillText("FORKS",V+U+W+10*e,F)}o.fillStyle=g?s:"rgba(255,255,255,0.15)",o.font=`500 ${10*e}px "JetBrains Mono", monospace`,o.textAlign="right",o.fillText(g?"GRID: ACTIVE":"GRID: HIDDEN",l-b,b+18*e),i&&(o.textAlign="right",o.fillStyle="rgba(255,255,255,0.18)",o.font=`400 ${13*e}px "JetBrains Mono", monospace`,o.fillText(`REF: ${i}`,l-b,n-b*.5+4*e))},Hl=o=>{let l=o^3735928559;return l=Math.imul(l^l>>>16,2246822507),l=Math.imul(l^l>>>13,3266489909),((l^l>>>16)>>>0)/4294967296},o0=(o,l,n,e,r)=>{const{primaryColor:f,secondaryColor:s,bgColor:M,showPattern:g,repoOwner:T,repoName:k,description:S,language:d,stars:y,forks:P,supportUrl:i}=r;o.save(),o.fillStyle="#06060e",o.fillRect(0,0,l,n),o.restore(),o.save(),o.filter="blur(60px)",o.globalAlpha=.06,o.fillStyle=f,o.beginPath(),o.ellipse(l*.3,n*.4,280*e,160*e,.4,0,Math.PI*2),o.fill(),o.fillStyle=s,o.beginPath(),o.ellipse(l*.72,n*.6,220*e,130*e,-.3,0,Math.PI*2),o.fill(),o.globalAlpha=.03,o.fillStyle=M,o.beginPath(),o.ellipse(l*.5,n*.2,350*e,100*e,.1,0,Math.PI*2),o.fill(),o.restore();const t=320,p=[];for(let Y=0;YY.mag<.2);o.save(),o.strokeStyle=s,o.globalAlpha=.12,o.lineWidth=1*e,o.setLineDash([3*e,5*e]);const b=new Set;for(let Y=0;Y0?"+":""}${X.toFixed(0)}°`,6*e,I-4*e)}o.restore()}const m=80*e,C=24*e,$=520*e,u=260*e;o.save(),o.fillStyle="#06060e",o.globalAlpha=.85,o.beginPath(),o.roundRect(m,m,$,u,6*e),o.fill(),o.restore(),o.save(),o.strokeStyle=f,o.globalAlpha=.25,o.lineWidth=1*e,o.beginPath(),o.roundRect(m,m,$,u,6*e),o.stroke(),o.restore(),o.textAlign="left",o.fillStyle=s,o.globalAlpha=.4,o.font=`500 ${12*e}px "JetBrains Mono", monospace`,o.fillText("STELLAR OBJECT CATALOG — OPEN SOURCE REGISTRY",m+C,m+28*e),o.globalAlpha=1,o.fillStyle=f,o.globalAlpha=.2,o.fillRect(m+C,m+40*e,$-C*2,1*e),o.globalAlpha=1,o.fillStyle=f,o.font=`600 ${16*e}px "JetBrains Mono", monospace`,o.fillText(`${T.toUpperCase()} ⟩`,m+C,m+68*e),o.fillStyle="#ffffff",o.font=`800 ${52*e}px "Inter", sans-serif`;let v=52;for(;o.measureText(k).width>$-C*2&&v>28;)v-=2,o.font=`800 ${v*e}px "Inter", sans-serif`;o.fillText(k,m+C,m+124*e),o.fillStyle=s,o.globalAlpha=.5,o.font=`400 ${13*e}px "JetBrains Mono", monospace`,o.fillText(`CLASS: ${d.toUpperCase()} · TYPE: OPEN-SOURCE · STATUS: ACTIVE`,m+C,m+156*e),o.globalAlpha=1;const A=m+186*e;o.fillStyle="rgba(255,255,255,0.18)",o.font=`500 ${10*e}px "JetBrains Mono", monospace`,o.fillText("SPECTRUM",m+C,A);const B=m+C+85*e,G=260*e,R=10*e,h=o.createLinearGradient(B,0,B+G,0);h.addColorStop(0,M),h.addColorStop(.5,f),h.addColorStop(1,s),o.fillStyle=h,o.fillRect(B,A-8*e,G,R),o.strokeStyle="rgba(255,255,255,0.3)",o.lineWidth=1*e;for(let Y=0;Y<=4;Y++){const w=B+Y/4*G;o.beginPath(),o.moveTo(w,A-8*e),o.lineTo(w,A-14*e),o.stroke()}o.fillStyle=g?f:"rgba(255,255,255,0.15)",o.font=`500 ${11*e}px "JetBrains Mono", monospace`,o.fillText(g?"◉ GRID OVERLAY":"○ GRID HIDDEN",m+C,m+228*e);const O=20*e,N=l*.5,D=130*e,J=m,U=n-m-D;o.save(),o.fillStyle="#06060e",o.globalAlpha=.8,o.beginPath(),o.roundRect(J,U,N,D,6*e),o.fill(),o.restore(),o.save(),o.strokeStyle=s,o.globalAlpha=.15,o.lineWidth=1*e,o.setLineDash([2*e,4*e]),o.beginPath(),o.roundRect(J,U,N,D,6*e),o.stroke(),o.setLineDash([]),o.restore(),o.fillStyle="rgba(255,255,255,0.15)",o.font=`500 ${11*e}px "JetBrains Mono", monospace`,o.textAlign="left",o.fillText("OBSERVATION NOTES",J+O,U+26*e),o.fillStyle="rgba(255,255,255,0.5)",o.font=`300 ${19*e}px "Inter", sans-serif`,go(o,S,J+O,U+54*e,N-O*2,28*e);const E=20*e,K=240*e,V=130*e,L=l-m-K,F=n-m-V;o.save(),o.fillStyle="#06060e",o.globalAlpha=.8,o.beginPath(),o.roundRect(L,F,K,V,6*e),o.fill(),o.restore(),o.save(),o.strokeStyle=f,o.globalAlpha=.15,o.lineWidth=1*e,o.beginPath(),o.roundRect(L,F,K,V,6*e),o.stroke(),o.restore(),o.fillStyle="rgba(255,255,255,0.15)",o.font=`500 ${11*e}px "JetBrains Mono", monospace`,o.textAlign="left",o.fillText("MAGNITUDE",L+E,F+26*e);let W=F+58*e;if(y){o.fillStyle=f,o.font=`800 ${30*e}px "Inter", sans-serif`,o.fillText(y,L+E,W);const Y=o.measureText(y).width;o.fillStyle="rgba(255,255,255,0.3)",o.font=`400 ${13*e}px "JetBrains Mono", monospace`,o.fillText("★ obs",L+E+Y+10*e,W),W+=36*e}if(P){o.fillStyle=s,o.font=`800 ${30*e}px "Inter", sans-serif`,o.fillText(P,L+E,W);const Y=o.measureText(P).width;o.fillStyle="rgba(255,255,255,0.3)",o.font=`400 ${13*e}px "JetBrains Mono", monospace`,o.fillText("⑂ forks",L+E+Y+10*e,W)}i&&(o.textAlign="right",o.fillStyle="rgba(255,255,255,0.12)",o.font=`400 ${12*e}px "JetBrains Mono", monospace`,o.fillText(`CATALOG: ${i}`,l-m,m+16*e)),o.save(),o.strokeStyle=s,o.lineWidth=1*e,o.globalAlpha=.2;const j=16*e,q=m*.5,_=(Y,w)=>{o.beginPath(),o.moveTo(Y-j,w),o.lineTo(Y+j,w),o.stroke(),o.beginPath(),o.moveTo(Y,w-j),o.lineTo(Y,w+j),o.stroke(),o.beginPath(),o.arc(Y,w,j*.6,0,Math.PI*2),o.stroke()};_(q,q),_(l-q,q),_(q,n-q),_(l-q,n-q),o.restore()},e0=(o,l,n,e,r)=>{const{primaryColor:f,secondaryColor:s,bgColor:M,showPattern:g,repoOwner:T,repoName:k,description:S,language:d,stars:y,forks:P,supportUrl:i}=r;o.save(),o.fillStyle=M,o.fillRect(0,0,l,n),o.restore(),o.save();const t=o.createRadialGradient(l/2,n/2,n*.2,l/2,n/2,n*.75);t.addColorStop(0,"transparent"),t.addColorStop(1,"rgba(0,0,0,0.6)"),o.fillStyle=t,o.fillRect(0,0,l,n),o.restore();const p=l/2,a=n/2,b=n*.42,m=6;for(let J=1;J<=m;J++){const U=J/m*b;o.save(),o.strokeStyle=f,o.globalAlpha=J===m?.25:.08,o.lineWidth=J===m?2*e:1*e,o.beginPath(),o.arc(p,a,U,0,Math.PI*2),o.stroke(),o.restore(),o.save(),o.fillStyle=f,o.globalAlpha=.2,o.font=`400 ${10*e}px "JetBrains Mono", monospace`,o.textAlign="left",o.fillText(`${J*100}`,p+U+6*e,a+4*e),o.restore()}for(let J=0;J<360;J+=30){const U=J*Math.PI/180,E=J%90===0;if(o.save(),o.strokeStyle=f,o.globalAlpha=E?.15:.04,o.lineWidth=1*e,E||o.setLineDash([2*e,6*e]),o.beginPath(),o.moveTo(p,a),o.lineTo(p+Math.cos(U)*b,a+Math.sin(U)*b),o.stroke(),o.setLineDash([]),o.restore(),E){const K=b+18*e,V=p+Math.cos(U)*K,L=a+Math.sin(U)*K;o.save(),o.fillStyle=f,o.globalAlpha=.3,o.font=`600 ${12*e}px "JetBrains Mono", monospace`,o.textAlign="center",o.textBaseline="middle",o.fillText(`${J}°`,V,L),o.restore()}}o.save(),o.strokeStyle=f,o.globalAlpha=.12,o.lineWidth=1*e;for(let J=0;J<360;J+=10){if(J%30===0)continue;const U=J*Math.PI/180,E=b-6*e;o.beginPath(),o.moveTo(p+Math.cos(U)*E,a+Math.sin(U)*E),o.lineTo(p+Math.cos(U)*b,a+Math.sin(U)*b),o.stroke()}o.restore(),o.save();const C=-.4,$=.35,u=o.createConicGradient(C-$,p,a);if(u.addColorStop(0,"transparent"),u.addColorStop(.08,f),u.addColorStop(.12,"transparent"),o.globalAlpha=.12,o.fillStyle=u,o.beginPath(),o.moveTo(p,a),o.arc(p,a,b,C-$,C+.02),o.closePath(),o.fill(),o.strokeStyle=f,o.globalAlpha=.5,o.lineWidth=2*e,o.beginPath(),o.moveTo(p,a),o.lineTo(p+Math.cos(C)*b,a+Math.sin(C)*b),o.stroke(),o.restore(),o.save(),o.fillStyle=f,o.globalAlpha=.6,o.beginPath(),o.arc(p,a,4*e,0,Math.PI*2),o.fill(),o.globalAlpha=.15,o.beginPath(),o.arc(p,a,10*e,0,Math.PI*2),o.fill(),o.restore(),g){o.save(),o.globalAlpha=.015,o.fillStyle=f;for(let J=0;J<500;J++){const U=J*7919+31,E=U%1280/1280*l,K=U*6271%640/640*n;Math.hypot(E-p,K-a){const F=J*Math.PI/180,W=U/600*b,j=p+Math.cos(F)*W,q=a+Math.sin(F)*W;o.save(),o.fillStyle=K,o.globalAlpha=.08,o.beginPath(),o.arc(j,q,E*4*e,0,Math.PI*2),o.fill(),o.restore(),o.save(),o.fillStyle=K,o.globalAlpha=.8,o.beginPath(),o.arc(j,q,E*e,0,Math.PI*2),o.fill(),o.restore(),o.save(),o.strokeStyle=K,o.globalAlpha=.2,o.lineWidth=1*e,o.beginPath(),o.arc(j,q,E*2.5*e,0,Math.PI*2),o.stroke(),o.restore(),V&&(o.save(),o.fillStyle=K,o.globalAlpha=.6,o.font=`600 ${11*e}px "JetBrains Mono", monospace`,o.textAlign="left",o.fillText(V,j+E*3*e,q-6*e),L&&(o.globalAlpha=.35,o.font=`400 ${10*e}px "JetBrains Mono", monospace`,o.fillText(L,j+E*3*e,q+8*e)),o.restore())};y&&v(225,320,6,f,`★ ${y}`,"STARGAZERS"),P&&v(45,400,5,s,`⑂ ${P}`,"FORKS"),v(350,250,4,f,d,"CLASSIFICATION"),v(120,480,2,f,null,null),v(170,350,1.5,f,null,null),v(280,520,1.5,s,null,null),v(70,200,1,f,null,null),v(310,440,1,f,null,null),o.save(),o.textAlign="center",o.fillStyle=s,o.font=`800 ${42*e}px "Inter", sans-serif`;let A=42;const B=b*1.4;for(;o.measureText(k).width>B&&A>24;)A-=2,o.font=`800 ${A*e}px "Inter", sans-serif`;o.fillText(k,p,a+50*e),o.fillStyle=f,o.globalAlpha=.5,o.font=`500 ${14*e}px "JetBrains Mono", monospace`,o.fillText(`${T} //`,p,a+22*e),o.restore();const G=30*e;o.save(),o.textAlign="left",o.fillStyle=f,o.globalAlpha=.35,o.font=`500 ${11*e}px "JetBrains Mono", monospace`,o.fillText("SONAR ACTIVE",G,G+14*e),o.fillText(`SIG: ${k.toUpperCase()}`,G,G+30*e),o.fillText("RANGE: 600m",G,G+46*e),o.fillStyle=g?f:"rgba(255,255,255,0.15)",o.fillText(g?"● NOISE FILTER: ON":"○ NOISE FILTER: OFF",G,G+62*e),o.restore(),o.save(),o.textAlign="right",o.fillStyle=f,o.globalAlpha=.3,o.font=`500 ${11*e}px "JetBrains Mono", monospace`,o.fillText("SIGNAL SPECTRUM",l-G,G+14*e);const R=60*e,h=8*e,O=l-G-R;[{color:M,label:"BASE"},{color:f,label:"PRI"},{color:s,label:"SEC"}].forEach(({color:J,label:U},E)=>{const K=G+24*e+E*18*e;o.fillStyle=J,o.globalAlpha=.7,o.fillRect(O,K,R,h),o.globalAlpha=.25,o.fillStyle=f,o.font=`400 ${9*e}px "JetBrains Mono", monospace`,o.textAlign="right",o.fillText(U,O-8*e,K+7*e)}),o.restore(),o.save(),o.textAlign="left",o.fillStyle=f,o.globalAlpha=.2,o.font=`500 ${10*e}px "JetBrains Mono", monospace`,o.fillText("// INTERCEPT LOG",G,n-G-52*e),o.globalAlpha=.4,o.fillStyle=s,o.font=`300 ${15*e}px "Inter", sans-serif`;const N=l*.38;let D=S;for(;o.measureText(D).width>N&&D.length>10;)D=D.slice(0,-4)+"...";if(o.fillText(D,G,n-G-32*e),S.length>D.length){let J=S.slice(D.length-3);for(;o.measureText(J).width>N&&J.length>10;)J=J.slice(0,-4)+"...";o.fillText(J,G,n-G-14*e)}o.restore(),i&&(o.save(),o.textAlign="right",o.fillStyle=f,o.globalAlpha=.2,o.font=`400 ${11*e}px "JetBrains Mono", monospace`,o.fillText(`NET: ${i}`,l-G,n-G-14*e),o.restore()),o.save(),o.globalAlpha=.03,o.fillStyle="#000000";for(let J=0;J{o.beginPath(),o.roundRect(l,n,e,r,f)},l0=(o,l,n,e,r)=>{const{primaryColor:f,secondaryColor:s,bgColor:M,showPattern:g,repoOwner:T,repoName:k,description:S,language:d,stars:y,forks:P,supportUrl:i}=r;if(o.save(),o.fillStyle=M,o.fillRect(0,0,l,n),o.filter="blur(120px)",o.globalAlpha=.5,o.fillStyle=f,o.beginPath(),o.ellipse(l*.2,n*.3,400*e,300*e,.3,0,Math.PI*2),o.fill(),o.fillStyle=s,o.beginPath(),o.ellipse(l*.75,n*.25,350*e,250*e,-.2,0,Math.PI*2),o.fill(),o.fillStyle=f,o.globalAlpha=.35,o.beginPath(),o.ellipse(l*.5,n*.85,450*e,200*e,0,0,Math.PI*2),o.fill(),o.fillStyle=s,o.globalAlpha=.25,o.beginPath(),o.ellipse(l*.85,n*.7,300*e,250*e,.5,0,Math.PI*2),o.fill(),o.restore(),g){o.save(),o.globalAlpha=.03,o.strokeStyle="#ffffff",o.lineWidth=1*e;const H=50*e;for(let I=0;I