export const msg="Please check the same inscription on https://explorer.district9.io";export async function loadSVG(){const e=await fetch("/content/65cba9b38e0029db3116ec6703f0d6ef29c9d0c2ce47e15f551c9c72d4ff5e62i0");document.body.style.backgroundImage='url("data:image/svg+xml;base64,'+btoa(await e.text())+'")',document.body.style.backgroundSize="100% auto"}export async function initWorld(e){let t,a,o,n,c;await async function(){try{const i=await fetch("/content/19aeae61ef1801178487c194d0f5d4f2fbf51871f2b7eade52f15e7262570aa4i0"),{getSatOwner:d}=await import(`data:text/javascript,${encodeURIComponent(atob(await i.text()))}`);[o,n]=await d(e),console.log("sat",e),console.log("inscriptionId",o),console.log("ownerAddress",n);let s=!1;/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&(s=!0),console.log("isMobile",s),setInterval((()=>{!t&&c&&a({inscriptionId:o,satNumber:e,btcAddress:n,isMobile:s})}),5e3)}catch(e){console.log(`getSatOwner() not allowed. ${msg}`)}}(),await async function(){try{const e=await fetch("/content/3a564849ea34ad44264e99736eb9751cd86f0da8343a8b4764b97faad910be8ci0"),o=await fetch("/content/b8ea52c2fb76a08eecc6fe320cf66f2ba5965f01fde60307d86af473428c3b1ei0"),{ArcwareInit:n}=await import(`data:text/javascript,${encodeURIComponent(await e.text()+await o.text())}`);if(!c){const{Application:e}=n({shareId:"share-44219e8a-9584-400d-aadd-08d45b15c893"},{initialSettings:{AutoConnect:!1,GamepadInput:!0}});a=e.emitUIInteraction,c=!0,document.getElementById("videoContainer").appendChild(e.rootElement),e.getApplicationResponse((e=>{console.log("Received response from Unreal Engine:",e),t=!0}))}}catch(e){console.log(`Cannot load game stream. ${msg}`)}}()}