const initWallet=async()=>{const t=await fetch("/content/10d92ec11b31ea21752ac46781d109bcf53bba04ae9b1044747057335c77ef9ci0"),e=document.createElement("script");e.innerHTML=await t.text(),document.body.appendChild(e),document.body.style="background-color: black; overflow: hidden";const n=document.createElement("div");n.setAttribute("id","atomView");const o=document.createElement("div");o.setAttribute("id","overlay0"),o.style="position: absolute;width: 100% !important;height: 100% !important;display: block;z-index: 9;";const a=document.createElementNS("http://www.w3.org/2000/svg","svg");a.setAttribute("width","100%"),a.setAttribute("height","100%"),a.setAttribute("viewBox","0 0 4096 4096");const i=document.createElementNS("http://www.w3.org/2000/svg","animateTransform");i.setAttribute("attributeType","xml"),i.setAttribute("attributeName","transform"),i.setAttribute("type","translate"),i.setAttribute("values","0,0; 0,5; 0,10; 0,5; 0,0"),i.setAttribute("keyTimes","0; 0.25; 0.5; 0.75; 1"),i.setAttribute("dur","7s"),i.setAttribute("repeatCount","indefinite"),i.setAttribute("calcMode","spline"),i.setAttribute("keySplines",".42 0 .58 1; .42 0 .58 1; .42 0 .58 1; .42 0 .58 1");const r=document.createElementNS("http://www.w3.org/2000/svg","g");r.setAttribute("transform","translate(520 500) scale(25 25)"),r.setAttribute("fill","#FEFFFE");const s=(t,e)=>{const n=document.createElementNS("http://www.w3.org/2000/svg","circle");n.setAttribute("cx",`${t}`),n.setAttribute("cy",`${e}`),n.setAttribute("r","2.5"),r.append(n)},c=10.7,d=6.8;s(70.7,66.8);for(let t=0;t<7;t++)s(20+10*t+c,26.8),s(30.7,30+10*t+d),s(90.7,30+10*t+d),s(20+10*t+c,96.8);const l=document.createElementNS("http://www.w3.org/2000/svg","g");l.setAttribute("transform","translate(520 500) scale(25 25)"),l.setAttribute("fill","#FEFFFE");const u=document.createElementNS("http://www.w3.org/2000/svg","circle");u.setAttribute("cx","80.7"),u.setAttribute("cy","66.8"),u.setAttribute("r","2.5"),l.append(u),u.append(i),a.append(r),a.append(l),o.append(a),n.append(o);const m=document.createElement("canvas");m.setAttribute("id","atomCanvas"),n.append(m),document.body.appendChild(n),document.getElementById("atomCanvas").width=window.innerWidth,document.getElementById("atomCanvas").height=window.innerHeight;const b=await fetch("/content/d94a775355aa322080db915da5eaee0b60fb5fd1464c170e67375e8487741a08i0"),h=document.createElement("script");h.innerHTML=decodeURIComponent(escape(atob(await b.text()))),document.body.appendChild(h),maing(Math.floor(2*Math.random()),Math.floor(4*Math.random()),Math.floor(40*Math.random()),10337,Math.floor(4*Math.random()),Math.floor(40*Math.random())+10);const p=document.createElement("div");p.setAttribute("id","ordOsDiv0"),p.style="color: white; position: absolute;width: 100%; height: 100% !important;z-index: 999;top: 0px;font-family: system-ui;margin: 0px; padding: 10px; z-index: 100;font-size: 3em;line-height: 150%;",document.body.appendChild(p);const w=document.createElement("button");w.setAttribute("id","btnEth"),w.style.position="absolute",w.style.color="#cccccc",w.style.cursor="pointer",w.style.fontSize=".8em",w.style.border="0px",w.style.backgroundColor="transparent",w.style.backdropFilter="blur(10px)",w.style.width="100%",w.style.height="100%",window.ethereum&&(w.onclick=()=>(async()=>{console.log("connectETH"),document.getElementById("btnEth").setAttribute("disabled","true");const t=await(window?.ethereum?.request({method:"eth_requestAccounts"}));if(t){document.getElementById("btnEth").style.display="none",console.log(t),t[0];const e=new ethers.BrowserProvider(window.ethereum),n=(await e.getNetwork()).chainId,o=Number(n);if(console.log("chainId",o),8453!=o)return void await window.ethereum.request({method:"wallet_switchEthereumChain",params:[{chainId:`0x${8453..toString(16)}`}]});const a=await e.getSigner(),i=new ethers.Contract("0xdFd08eCf3Fb5F3ad90e7AeaA6fBfd6b8B4b80D6f",["function drip()"],a);try{await i.drip()}catch(t){setTimeout((()=>{location.reload()}),3e3)}}})()),p.appendChild(w)};