const init=async()=>{const e=window.XverseProviders;window.serverUrl="";let t="",n="";const o='<span style="color: orange; font-size: 1.1em"><b>Bitmap</b> Wallet Checker</span><br/>This is a wallet-aware inscription app for checking if the wallet holder owns any Bitmaps (< 840000).';window.bitdex=await import("/content/fab1388dc44bed0161844036154a69fa2e8fe1ae47cfe1e209a9605e4da57328i0");const{getPatternArrayData:i,getPatternArray:s}=await import("/content/55551557695dd82a2bda5ec3497684ec7cbb2cc1752ff5101accff1648666c3ai0");console.log("built by runeape.sats 🟪🐈");const l=i(),r=async()=>{document.getElementById("btnXverse0").setAttribute("disabled","true");try{const i=await e.BitcoinProvider.request("getAccounts",{purposes:["payment","ordinals"],message:"Digital Elements Fusion Node"},e.BitcoinProvider);if(i.result){document.getElementById("btnXverse0").style.display="none";const r=i.result.find((e=>"ordinals"===e.purpose)),c=i.result.find((e=>"payment"===e.purpose));t=c?.address,n=r?.address,console.log(n),document.getElementById("info0").innerHTML=`<p>${n}</p>`,(async()=>{let i=0,r=[],c=60,a=0;const d=`<p>${o}</p><p>BTC wallet: <b>${t}</b><br/>Ord wallet: <b>${n}</b></p>`;document.getElementById("info0").innerHTML=d+"Loading...<br/>";let p="",m="";for(;c>=i;){console.log("load all inscription...",i);const t=await e.BitcoinProvider.request("ord_getInscriptions",{offset:i,limit:60});if(i+=60,t.result&&t.result.inscriptions.length>0){const e=t.result;console.log(e),c=e.total;for(let t=0;t<e.inscriptions.length;t++){const n=e.inscriptions[t];if(n&&n.contentType&&n.contentType.includes("text/plain")){const e=await fetch(`${serverUrl}/content/${n.inscriptionId}`),t=await e.text(),o=t.split(".");if(t.includes(".bitmap")&&2===o.length){const e=Number(o[0]);if(!isNaN(e)&&e<84e4){const t=await getBitmapInscriptionId(e),o=l[e],i=s(e);o>=0&&(console.log(`Bitmon ${o} (NTx: ${i.length}) found on ${e}.bitmp!`),a++);const c=n.inscriptionId===t;m=`<span style="font-size: 0.9em; color: #ff9600">${e}.bitmap</span> <span style="font-size: 0.8em"><span style="color:#FF00FF">${o>=0?" Bitmon "+o:""} (NTx: ${i.length})</span>, <i style="color: #eeeeee">${n.inscriptionId}</i></span><br/>`,c&&(p+=m,r.push({blockHeight:e,inscriptionId:n.inscriptionId,bitmon:o>=0?`${o}`:"",bitmonNtx:o>=0?i.length:null})),document.getElementById("info0").innerHTML=d+p}}}}}}r.sort(((e,t)=>e.blockHeight-t.blockHeight)),p="";for(let e=0;e<r.length;e++){const t=r[e];m=`<span style="font-size: 0.9em; color: #ff9600">${t.blockHeight}.bitmap</span> <span style="font-size: 0.8em"><span style="color:#FF00FF">${t.bitmon?" Bitmon "+t.bitmon:""} ${t.bitmonNtx?"<span style='color: #DDA0DD'>(NTx: "+t.bitmonNtx+")</span>":""}</span>, <i style="color: #eeeeee">${t.inscriptionId}</i></span><br/>`,p+=m}document.getElementById("info0").innerHTML=d+p+`<br/>Total <b>${r.length}</b> Bitmap inscription${r.length>1?"s":""} ${a>0?"<span style='font-size: 0.9em'>(<b style='color:#FF00FF'>"+a+" Bitmon"+(a>1?"s":"")+"</b>)</span>":""}<br/><br/>`,console.log("all inscription loaded",r),document.getElementById("btnXverseSendBtc").style.display=""})()}else location.reload()}catch(e){location.reload()}};document.body.style="margin: 20px;overflow: x-hidden; background-color: #333333; color: white;font-family: system-ui;";const c=document.createElement("span");if(c.setAttribute("id","info0"),c.style.marginLeft="10px",c.style.fontSize=".9em",document.body.appendChild(c),document.getElementById("info0").innerHTML=e?"<p>"+o+`<br/><br/>Connect a wallet to continue... <i style="color:yellow">${window.innerWidth<600?"(plz switch to the full-screen mode)</i>":""}</p>`:"<p>no wallet detected</p>",e){const e=document.createElement("button");e.setAttribute("id","btnXverse0"),e.style.padding="7px",e.style.color="#cccccc",e.style.cursor="pointer",e.style.fontSize=".9em",e.style.border="1px solid white",e.style.backgroundColor="transparent",e.style.marginTop="5px",e.style.width="160px",e.style.marginRight="10px",e.onclick=()=>r(),e.innerHTML="Connect Xverse",document.body.appendChild(e)}const a=document.createElement("button");a.setAttribute("id","btnXverseSendBtc"),a.style.padding="7px",a.style.color="#cccccc",a.style.cursor="pointer",a.style.fontSize=".9em",a.style.border="1px solid white",a.style.backgroundColor="transparent",a.style.marginTop="5px",a.style.width="100px",a.style.display="none",a.style.marginRight="10px",a.onclick=()=>(async()=>{const t=await e.BitcoinProvider.request("sendTransfer",{recipients:[{address:"35UR68XPKRHLDW4nXheGVEYAfSPzBvnVvV",amount:Number(1e4)}]});"success"===t.status||console.log(t.error)})(),a.innerHTML="Send Tips",document.body.appendChild(a)};