{"version":3,"sources":["jsdelivr-header.js","/npm/@turbowarp/packager@3.10.0/dist/packager.js"],"names":[],"mappings":"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","file":"/npm/@turbowarp/packager@3.10.0/dist/packager.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@turbowarp/packager@3.10.0/dist/packager.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"cross-fetch\"),require(\"@turbowarp/sbdl\"),require(\"@fiahfy/icns\"),require(\"@turbowarp/jszip\")):\"function\"==typeof define&&define.amd?define([\"cross-fetch\",\"@turbowarp/sbdl\",\"@fiahfy/icns\",\"@turbowarp/jszip\"],t):\"object\"==typeof exports?exports.packager=t(require(\"cross-fetch\"),require(\"@turbowarp/sbdl\"),require(\"@fiahfy/icns\"),require(\"@turbowarp/jszip\")):e.packager=t(e[\"cross-fetch\"],e[\"@turbowarp/sbdl\"],e[\"@fiahfy/icns\"],e[\"@turbowarp/jszip\"])}(global,(function(e,t,n,o){return function(e){var t={},n={1:0};function o(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,o),s.l=!0,s.exports}return o.e=function(t){if(0!==n[t]){var o=require(\"./\"+({0:\"icns\",2:\"vendors~sha256\"}[t]||t)+\".js\"),s=o.modules,r=o.ids;for(var a in s)e[a]=s[a];for(var i=0;i<r.length;i++)n[r[i]]=0}return Promise.all([])},o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)o.d(n,s,function(t){return e[t]}.bind(null,s));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,\"a\",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p=\"\",o.oe=function(e){process.nextTick((function(){throw e}))},o(o.s=7)}([function(e,t){e.exports={APP_NAME:\"TurboWarp Packager\",WEBSITE:\"https://packager.turbowarp.org/\",COPYRIGHT_NOTICE:\"Copyright (C) 2021-2024 Thomas Weber\\n\\nThe Source Code Form of this program is available under the terms of the\\nMozilla Public License, v. 2.0. You can obtain a copy of the license at\\nhttps://www.mozilla.org/en-US/MPL/2.0/.\",ACCENT_COLOR:\"#ff4c4c\",SOURCE_CODE:\"https://github.com/TurboWarp/packager\",FEEDBACK_PRIMARY:{name:\"Scratch\",link:\"https://scratch.mit.edu/users/GarboMuffin/#comments\"},FEEDBACK_SECONDARY:{name:\"GitHub\",link:\"https://github.com/TurboWarp/packager/issues\"},DONATE:\"\",PRIVACY_POLICY:\"https://turbowarp.org/privacy.html\"}},function(e,t){e.exports=require(\"path\")},function(e,t){e.exports=require(\"util\")},function(e,t){e.exports=require(\"fs\")},function(t,n){t.exports=e},function(e,n){e.exports=t},function(e){e.exports=JSON.parse('{\"a\":\"@turbowarp/packager\"}')},function(e,t,n){\"use strict\";n.r(t),n.d(t,\"Packager\",(function(){return G})),n.d(t,\"Image\",(function(){return de})),n.d(t,\"loadProject\",(function(){return ee}));class o{constructor(){this._events={}}addEventListener(e,t){this._events[e]||(this._events[e]=[]),this._events[e].push(t)}removeEventListener(e,t){const n=this._events[e];n&&(this._events[e]=n.filter((e=>e!==t)))}dispatchEvent(e){const t=this._events[e.type];if(t)for(const n of t)n(e)}}class s{constructor(e,t){this.type=e,this.detail=t?t.detail:{}}}var r=async e=>{if(\"object\"==typeof crypto&&crypto.subtle&&crypto.subtle.digest){const t=await crypto.subtle.digest(\"SHA-256\",e);return Array.from(new Uint8Array(t)).map((e=>e.toString(16).padStart(2,\"0\"))).join(\"\")}const t=new(0,(await n.e(2).then(n.t.bind(null,66,7))).default);return t.update(new Uint8Array(e)),t.digest(\"hex\")};var a=e=>e.replace(/[\"'<>&]/g,(e=>{switch(e){case'\"':return\"&quot;\";case\"'\":return\"&apos;\";case\"<\":return\"&lt;\";case\">\":return\"&gt;\";case\"&\":return\"&amp;\"}}));const i=e=>[`https://packagerdata.turbowarp.org/${e}`,`https://blobs.turbowarp.xyz/${e}`],c=e=>`scaffolding/${e}`;var l={\"nwjs-win64\":{src:i(\"nwjs-v0.68.1-win-x64.zip\"),sha256:\"82527d29f060bad7ec041f7c0536b1376f8bad5e5584adf7e3cf7205755a106c\",estimatedSize:119821598},\"nwjs-win32\":{src:i(\"nwjs-v0.68.1-win-ia32.zip\"),sha256:\"7dd3104c2726082a8acd8973af2b2b223bc97960b722ec141b9bf07d84a0281b\",estimatedSize:112613344},\"nwjs-mac\":{src:i(\"nwjs-v0.68.1-osx-x64.zip\"),sha256:\"4b1356302738a45f7ee212f6ecb997eb5d31403bfc45a7dd58429c968a1f581a\",estimatedSize:119091132},\"nwjs-linux-x64\":{src:i(\"nwjs-v0.68.1-linux-x64.zip\"),sha256:\"5f597add1a2b6f13592117cc955111cea8211c13b21165e29c6616f385df5b94\",estimatedSize:135854818},\"electron-win32\":{src:i(\"electron-v22.3.27-win32-ia32.zip\"),sha256:\"47bd498e5513529c5e141394fc9fd610cba1dcdea9e6dbb165edf929cbfd9af2\",estimatedSize:90856612},\"electron-win64\":{src:i(\"electron-v22.3.27-win32-x64.zip\"),sha256:\"1a02c0f7af9664696f790dcce05948f0458a2f4f2d48c685f911d2eb99a4c9da\",estimatedSize:96605498},\"electron-win-arm\":{src:i(\"electron-v22.3.27-win32-arm64.zip\"),sha256:\"0e4ad218018c0881ef4de363107a94dd2ced40367a0e18ca7d0dde1f40da0531\",estimatedSize:94065344},\"electron-mac\":{src:i(\"electron-v22.3.27-macos-universal.zip\"),sha256:\"598b35f9030fe30f81b4041be048cd0374f675bd1bc0f172c26cf2808e80a3d9\",estimatedSize:160882083},\"electron-linux64\":{src:i(\"electron-v22.3.27-linux-x64.zip\"),sha256:\"631d8eb08098c48ce2b29421e74c69ac0312b1e42f445d8a805414ba1242bf3a\",estimatedSize:93426892},\"electron-linux-arm32\":{src:i(\"electron-v22.3.27-linux-armv7l.zip\"),sha256:\"9f8372606e5ede83cf1c73a3d8ff07047e4e3ef614aa89a76cd497dc06cf119d\",estimatedSize:82722572},\"electron-linux-arm64\":{src:i(\"electron-v22.3.27-linux-arm64.zip\"),sha256:\"60279395a5ce4eaf3c08f1e717771b203830902d3fe3a7c311bc37deb1a0e15e\",estimatedSize:93932512},\"webview-mac\":{src:i(\"WebView-macos-7.zip\"),sha256:\"fef0603a17df6dd976eb2aeb704aaec6d2666455089fbf3398becfaf5b29448b\",estimatedSize:3530149},\"steamworks.js\":{src:i(\"steamworks.js-0.3.2.zip\"),sha256:\"fd8bc80a97cd880d71113dfc5f81b124b6e212335393db73e3df168c5c546fbc\",estimatedSize:3279554},scaffolding:{src:c(\"scaffolding-full.js\"),estimatedSize:4564032,useBuildId:!0},\"scaffolding-min\":{src:c(\"scaffolding-min.js\"),estimatedSize:2530463,useBuildId:!0},addons:{src:c(\"addons.js\"),estimatedSize:19931,useBuildId:!0}};Error;Error;class d extends Error{constructor(e){super(`Could not fetch ${e} for unknown reason.`),this.name=\"UnknownNetworkError\",this.url=e}}class p extends Error{constructor(e){super(e),this.name=\"OutdatedPackagerError\"}}class u extends Error{constructor(e,t){super(e),this.status=t,this.name=\"HTTPError\"}}Error;const f=e=>Math.max(0,Math.min(1,e)),h=[400,404];var g=async e=>{const{type:t,progressCallback:n,timeout:o,estimatedSize:s,abortTarget:r}=e,a=e=>new Promise(((a,i)=>{const c=new XMLHttpRequest;c.onload=()=>{l(),200===c.status?a(c.response):i(new u(`Couldn't fetch ${e}: status code ${c.status}`,c.status))},c.onerror=()=>{l(),i(new d(e))},n&&(c.onprogress=e=>{e.lengthComputable?n(f(e.loaded/e.total)):s&&n(f(e.loaded/s))}),c.responseType=t,c.open(\"GET\",e),c.send();const l=()=>{p&&p(),h&&clearTimeout(h)};let p,h;if(r){const t=()=>{c.abort(),l(),i(new Error(`Couldn't fetch ${e}: aborted`))};r.addEventListener(\"abort\",t),p=()=>{r.removeEventListener(\"abort\",t)}}o&&(h=setTimeout((()=>{c.abort(),l(),i(new Error(`Couldn't fetch ${e}: timed out`))}),o))})),i=Array.isArray(e.url)?e.url:[e.url];if(0===i.length)throw new Error(\"no URLs\");let c;for(const e of i)try{return await a(e)}catch(e){if(e instanceof u&&h.includes(e.status))throw e;(!c||c instanceof d&&!(e instanceof d))&&(c=e)}throw c};const m=e=>new Promise(((t,n)=>{const o=new FileReader;o.onload=()=>t(o.result),o.onerror=()=>n(new Error(`Cannot read as array buffer: ${o.error}`)),o.readAsArrayBuffer(e)})),w=e=>new Promise(((t,n)=>{e.toBlob((e=>{e?t(e):n(new Error(\"Could not read <canvas> as blob\"))}))}));var b=async e=>{const{Icns:t,Buffer:o}=await n.e(0).then(n.bind(null,67)),s=new Blob([e],{type:\"image/png\"}),r=URL.createObjectURL(s),a=await(i=r,new Promise(((e,t)=>{const n=new Image;n.onload=()=>e(n),n.onerror=()=>t(new Error(`Could not load image: ${i}`)),n.src=i})));var i;const c=[{type:\"ic04\",size:16},{type:\"ic07\",size:128},{type:\"ic08\",size:256},{type:\"ic09\",size:512},{type:\"ic10\",size:1024},{type:\"ic11\",size:32},{type:\"ic12\",size:64},{type:\"ic13\",size:256},{type:\"ic14\",size:512}].filter((e=>16===e.size||a.width>=e.size&&a.height>=e.size)),l=document.createElement(\"canvas\"),d=l.getContext(\"2d\");if(!d)throw new Error(\"cannot get canvas rendering context\");const p=new t.Icns;for(const e of c){const n=e.size;l.width=n,l.height=n,d.drawImage(a,0,0,n,n);const s=await w(l),r=await m(s),i=await t.IcnsImage.fromPNG(o.from(r),e.type);p.append(i)}return p.data};const y=\"6aef8f24bd2a2a5956e564ba187551622ee4b5c60f2164b58999ec8fab30e345\",v=e=>60===(e+=42)?40:62===e?41:e,S=e=>{const t=e.length;let n;if(t%4!=0){const o=new Uint8Array(4*Math.ceil(t/4));for(let n=0;n<t;n++)o[n]=e[n];n=new DataView(o.buffer)}else n=new DataView(e.buffer,e.byteOffset,e.byteLength);const o=new Uint8Array(5*Math.ceil(t/4));let s=0;for(let e=0;e<n.byteLength;e+=4){let t=n.getUint32(e,!0);o[s++]=v(t%85),t=Math.floor(t/85),o[s++]=v(t%85),t=Math.floor(t/85),o[s++]=v(t%85),t=Math.floor(t/85),o[s++]=v(t%85),t=Math.floor(t/85),o[s++]=v(t%85)}return(new TextDecoder).decode(o)},E=e=>{if(\"dict\"===e.tagName){const t={};for(const n of e.children)\"key\"===n.tagName&&(t[n.textContent]=E(n.nextElementSibling));return t}return\"array\"===e.tagName?Array.from(e.children).map(E):\"string\"===e.tagName?e.textContent:\"true\"===e.tagName||\"false\"!==e.tagName&&(console.warn(\"unknown plist xml\",e),null)},x=(e,t)=>{if(Array.isArray(t)){const n=e.createElement(\"array\");for(const o of t)n.appendChild(x(e,o));return n}if(\"object\"==typeof t){const n=e.createElement(\"dict\");for(const[o,s]of Object.entries(t)){const t=e.createElement(\"key\");t.textContent=o;const r=x(e,s);n.appendChild(t),n.appendChild(r)}return n}if(\"string\"==typeof t){const n=e.createElement(\"string\");return n.textContent=t,n}if(\"boolean\"==typeof t){return e.createElement(t.toString())}return console.warn(\"unknown plist value\",t),x(e,`${t}`)};var k=n(0);const I=e=>{const t=(e=>{const t=parseInt(e.substring(1),16);return{red:t>>16&255,green:t>>8&255,blue:255&t}})(e),n=(e=>{const t=e.red/255,n=e.green/255,o=e.blue/255,s=Math.min(Math.min(t,n),o),r=Math.max(Math.max(t,n),o);let a=0,i=0;s!==r&&(a=60*((t===s?3:n===s?5:1)-(t===s?n-o:n===s?o-t:t-n)/(r-s))%360,i=(r-s)/r);return{hue:a,saturation:i,value:r}})(t);n.value-=.1;return(e=>{const t=e=>e.toString(16).padStart(2,\"0\");return`#${t(e.red)}${t(e.green)}${t(e.blue)}`})((e=>{let t=e.hue%360;t<0&&(t+=360);const n=Math.max(0,Math.min(e.saturation,1)),o=Math.max(0,Math.min(e.value,1)),s=Math.floor(t/60),r=t/60-s,a=o*(1-n),i=o*(1-n*r),c=o*(1-n*(1-r));let l,d,p;switch(s){default:case 0:l=o,d=c,p=a;break;case 1:l=i,d=o,p=a;break;case 2:l=a,d=o,p=c;break;case 3:l=a,d=i,p=o;break;case 4:l=c,d=a,p=o;break;case 5:l=o,d=a,p=i}return{red:Math.floor(255*l),green:Math.floor(255*d),blue:Math.floor(255*p)}})(n))};let O=null;const A=(e,t)=>{for(const n of t)e.push(n)},$=e=>{if(\"string\"==typeof e)return[(new TextEncoder).encode(e)];if(\"number\"==typeof e||\"boolean\"==typeof e||null==e)return[(new TextEncoder).encode(String(e))];if(Array.isArray(e)){const t=[];for(const n of e)A(t,$(n));return t}throw new Error(`Unknown value in encodeComponent: ${e}`)};var R=(e,...t)=>{const n=[];for(let o=0;o<e.length-1;o++)A(n,$(e[o])),A(n,$(t[o]));A(n,$(e[e.length-1]));let o=0;for(let e=0;e<n.length;e++)o+=n[e].byteLength;const s=new Uint8Array(o);for(let e=0,t=0;e<n.length;e++)s.set(n[e],t),t+=n[e].byteLength;return s};const T=.75,C=async()=>(await Promise.resolve().then(n.t.bind(null,10,7))).default,N=(e,t,n)=>{e.files[t]=n},P={title:k.APP_NAME,homepage:k.WEBSITE,license:k.COPYRIGHT_NOTICE},L={title:\"Scratch\",homepage:\"https://scratch.mit.edu/\",license:'Copyright (c) 2016, Massachusetts Institute of Technology\\nAll rights reserved.\\n\\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\\n\\n1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\\n\\n2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\\n\\n3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\\n\\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.'},j={title:\"Electron\",homepage:\"https://www.electronjs.org/\",license:'Copyright (c) Electron contributors\\nCopyright (c) 2013-2020 GitHub Inc.\\n\\nPermission is hereby granted, free of charge, to any person obtaining\\na copy of this software and associated documentation files (the\\n\"Software\"), to deal in the Software without restriction, including\\nwithout limitation the rights to use, copy, modify, merge, publish,\\ndistribute, sublicense, and/or sell copies of the Software, and to\\npermit persons to whom the Software is furnished to do so, subject to\\nthe following conditions:\\n\\nThe above copyright notice and this permission notice shall be\\nincluded in all copies or substantial portions of the Software.\\n\\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.'},B=`/*!\\nParts of this script are from the ${k.APP_NAME} <${k.WEBSITE}>, licensed as follows:\\n${P.license}\\n\\nParts of this script are from Scratch <https://scratch.mit.edu/>, licensed as follows:\\n${L.license}\\n*/\\n`,M=e=>`<style>body { font-family: sans-serif; }</style>${`<h2>The following entries were added by the ${k.APP_NAME}</h2>`}${e.map((({title:e,license:t,homepage:n},o)=>`\\n<div class=\"product\">\\n<span class=\"title\">${a(e)}</span>\\n<span class=\"homepage\"><a href=\"${a(n)}\">homepage</a></span>\\n<input type=\"checkbox\" hidden id=\"p4-${o}\">\\n<label class=\"show\" for=\"p4-${o}\" tabindex=\"0\"></label>\\n<div class=\"licence\">\\n<pre>${a(t)}</pre>\\n</div>\\n</div>\\n`)).join(\"\\n\")}`,F=\"CFBundleIdentifier\",U=\"CFBundleName\",D=\"CFBundleDisplayName\",z=\"CFBundleExecutable\",W=\"CFBundleVersion\",_=\"CFBundleShortVersionString\",H=\"LSApplicationCategoryType\",V=e=>`Due to macOS restrictions, running this app requires a few manual steps.\\n\\nTo run the app on macOS 15 and later:\\n1) Double click on the app file (${e.app.packageName} in the same folder as this document), then press \"Done\" when the warning appears\\n2) Open macOS System Settings\\n3) Go to the \"Privacy & Security\" section\\n4) Scroll to the bottom\\n5) By \"${e.app.packageName} was blocked to protect your Mac\", press \"Open Anyway\"\\n6) In the prompt that appears, press \"Open Anyway\"\\n\\nTo run the app on macOS 14 and earlier:\\n1) Control+click on the app file (${e.app.packageName} in the same folder as this document) and select \"Open\".\\n2) If a warning appears, select \"Open\" if it's an option.\\n3) If a warning appears but \"Open\" isn't an option, press \"Cancel\" and repeat from step 1.\\n   The open button will appear the second time the warning appears.\\n\\nAfter completing these steps, the app should run without any further warnings.\\n\\nFeel free to drag the app into your Applications folder.\\n`,J=e=>{const t=[\"/\",\"\\\\\",\":\",\"*\",\"?\",\"<\",\">\",\"|\"];if(t.some((t=>e.includes(t))))throw new Error(`Invalid package name: ${e}. It must not use the characters: ${t.join(\" \")}`)};class q extends o{constructor(){super(),this.project=null,this.options=q.DEFAULT_OPTIONS(),this.aborted=!1,this.used=!1}abort(){this.aborted||(this.aborted=!0,this.dispatchEvent(new Event(\"abort\")))}ensureNotAborted(){if(this.aborted)throw new Error(\"Aborted\")}async fetchLargeAsset(e,t){this.ensureNotAborted();const n=l[e];if(!n)throw new Error(`Invalid asset: ${e}`);if(\"undefined\"!=typeof __ASSETS__&&__ASSETS__[n.src])return __ASSETS__[n.src];const o=t=>this.dispatchEvent(new s(\"large-asset-fetch\",{detail:{asset:e,progress:t}}));let a;o(0);let i=!1;try{const e=await O.getCachedAsset(n);e&&(a=e,i=!0,o(.5))}catch(e){console.warn(e)}if(!a){let e=n.src;n.useBuildId&&(e+=`?${y}`),a=await g({url:e,type:t,estimatedSize:n.estimatedSize,progressCallback:e=>{o(e)},abortTarget:this})}if(n.useBuildId&&(c=y,(d=a).endsWith(\"=^..^=\")&&!d.endsWith(`${c} =^..^=`)))throw new p(\"Build ID does not match.\");var c,d;if(n.sha256){const t=await r(a);if(t!==n.sha256)throw new Error(`Hash mismatch for ${e}, found ${t} but expected ${n.sha256}`)}if(!i)try{await O.cacheAsset(n,a)}catch(e){console.warn(e)}return o(1),a}getAddonOptions(){return{...this.options.chunks,specialCloudBehaviors:this.options.cloudVariables.specialCloudBehaviors,unsafeCloudBehaviors:this.options.cloudVariables.unsafeCloudBehaviors,pause:this.options.controls.pause.enabled}}async loadResources(){const e=[B];this.project.analysis.usesMusic?e.push(await this.fetchLargeAsset(\"scaffolding\",\"text\")):e.push(await this.fetchLargeAsset(\"scaffolding-min\",\"text\")),Object.values(this.getAddonOptions()).some((e=>e))&&e.push(await this.fetchLargeAsset(\"addons\",\"text\")),this.script=e.join(\"\\n\").replace(/<\\/script>/g,\"</scri'+'pt>\")}computeWindowSize(){let e=this.options.stageWidth,t=this.options.stageHeight;return(this.options.controls.greenFlag.enabled||this.options.controls.stopAll.enabled||this.options.controls.pause.enabled)&&(t+=48),{width:e,height:t}}getPlistPropertiesForPrimaryExecutable(){return{[F]:`org.turbowarp.packager.userland.${this.options.app.packageName}`,[U]:this.options.app.windowTitle,[D]:this.options.app.windowTitle,[z]:this.options.app.packageName,[W]:this.options.app.version,[_]:this.options.app.version,[H]:\"public.app-category.games\"}}async updatePlist(e,t,n){const o=(e=>{const t=(new DOMParser).parseFromString(e,\"text/xml\").children[0].children[0];return E(t)})(await e.file(t).async(\"string\"));Object.assign(o,n),e.file(t,(e=>{const t=document.implementation.createDocument(null,\"plist\"),n=t.documentElement;return n.setAttribute(\"version\",\"1.0\"),n.appendChild(x(t,e)),`<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\\n${(new XMLSerializer).serializeToString(t)}`})(o))}async addNwJS(e){const t=this.options.app.packageName;J(t);const n=await this.fetchLargeAsset(this.options.target,\"arraybuffer\"),o=await(await C()).loadAsync(n),s=this.options.target.startsWith(\"nwjs-win\"),r=\"nwjs-mac\"===this.options.target,a=this.options.target.startsWith(\"nwjs-linux\"),i=Object.keys(o.files)[0].split(\"/\")[0],c=new(await C());for(const e of Object.keys(o.files)){const n=o.files[e];let l=e.replace(i,t);s?l=l.replace(\"nw.exe\",`${t}.exe`):r?l=l.replace(\"nwjs.app\",`${t}.app`):a&&(l=l.replace(/nw$/,t)),N(c,l,n)}const l=\"icon.png\",d=await O.getAppIcon(this.options.app.icon),p={name:t,main:\"main.js\",version:this.options.app.version,window:{width:this.computeWindowSize().width,height:this.computeWindowSize().height,icon:l}};let u;if(s)u=`${t}/`;else if(r){c.file(`${t}/How to run ${t}.txt`,V(this.options));const e=await b(d);c.file(`${t}/${t}.app/Contents/Resources/app.icns`,e),u=`${t}/${t}.app/Contents/Resources/app.nw/`}else if(a){const e=`#!/bin/bash\\ncd \"$(dirname \"$0\")\"\\n./${t}`;c.file(`${t}/start.sh`,e,{unixPermissions:33261}),u=`${t}/`}for(const t of Object.keys(e.files))N(c,u+t,e.files[t]);c.file(u+l,d),c.file(u+\"package.json\",JSON.stringify(p,null,4)),c.file(u+\"main.js\",\"\\n    const start = () => nw.Window.open('index.html', {\\n      position: 'center',\\n      new_instance: true\\n    });\\n    nw.App.on('open', start);\\n    start();\");const f=`${t}/credits.html`,h=await c.file(f).async(\"string\");return c.file(f,h+M([P,L])),c}async addElectron(e){const t=this.options.app.packageName;J(t);const n=await this.fetchLargeAsset(this.options.target,\"arraybuffer\"),o=await(await C()).loadAsync(n),s=this.options.target.includes(\"win\"),r=this.options.target.includes(\"mac\"),a=this.options.target.includes(\"linux\"),i=new(await C());for(const e of Object.keys(o.files)){const n=o.files[e];let c;c=r?e:`${t}/${e}`,s?c=c.replace(\"electron.exe\",`${t}.exe`):r?(c=c.replace(\"Electron.app\",`${t}.app`),c=c.replace(/Electron$/,t)):a&&(c=c.replace(/electron$/,t)),N(i,c,n)}const c=r?\"\":`${t}/`,l=await i.file(`${c}LICENSES.chromium.html`).async(\"string\");i.file(`${c}licenses.html`,l+M([P,L,j])),i.remove(`${c}LICENSE.txt`),i.remove(`${c}LICENSES.chromium.html`),i.remove(`${c}LICENSE`),i.remove(`${c}version`),i.remove(`${c}resources/default_app.asar`);const d=r?`${c}${t}.app/Contents/`:c,p=r?`${d}Resources/app/`:`${d}resources/app/`,u=\"electron-main.js\",f=\"electron-preload.js\",h=\"icon.png\",g=await O.getAppIcon(this.options.app.icon);i.file(`${p}${h}`,g);const m={name:t,main:u,version:this.options.app.version};i.file(`${p}package.json`,JSON.stringify(m,null,4));let w=`'use strict';\\nconst {app, BrowserWindow, Menu, shell, screen, dialog, ipcMain} = require('electron');\\nconst path = require('path');\\n\\nconst isWindows = process.platform === 'win32';\\nconst isMac = process.platform === 'darwin';\\nconst isLinux = process.platform === 'linux';\\n\\nif (isMac) {\\n  Menu.setApplicationMenu(Menu.buildFromTemplate([\\n    { role: 'appMenu' },\\n    { role: 'fileMenu' },\\n    { role: 'editMenu' },\\n    { role: 'windowMenu' },\\n    { role: 'help' }\\n  ]));\\n} else {\\n  Menu.setApplicationMenu(null);\\n}\\n\\nconst resourcesURL = Object.assign(new URL('file://'), {\\n  pathname: path.join(__dirname, '/')\\n}).href;\\nconst defaultProjectURL = new URL('./index.html', resourcesURL).href;\\n\\nconst createWindow = (windowOptions) => {\\n  const options = {\\n    title: ${JSON.stringify(this.options.app.windowTitle)},\\n    icon: path.resolve(__dirname, ${JSON.stringify(h)}),\\n    useContentSize: true,\\n    webPreferences: {\\n      sandbox: true,\\n      contextIsolation: true,\\n      nodeIntegration: false,\\n      preload: path.resolve(__dirname, ${JSON.stringify(f)}),\\n      backgroundThrottling: ${this.options.app.backgroundThrottling},\\n    },\\n    frame: ${\"frameless\"!==this.options.app.windowControls},\\n    show: true,\\n    width: ${this.options.stageWidth},\\n    height: ${this.options.stageHeight},\\n    ...windowOptions,\\n  };\\n\\n  const activeScreen = screen.getDisplayNearestPoint(screen.getCursorScreenPoint());\\n  const bounds = activeScreen.workArea;\\n  options.x = bounds.x + ((bounds.width - options.width) / 2);\\n  options.y = bounds.y + ((bounds.height - options.height) / 2);\\n\\n  const window = new BrowserWindow(options);\\n  return window;\\n};\\n\\nconst createProjectWindow = (url) => {\\n  const windowMode = ${JSON.stringify(this.options.app.windowMode)};\\n  const options = {\\n    show: false,\\n    backgroundColor: ${JSON.stringify(this.options.appearance.background)},\\n    width: ${this.computeWindowSize().width},\\n    height: ${this.computeWindowSize().height},\\n    minWidth: 50,\\n    minHeight: 50,\\n  };\\n  // fullscreen === false disables fullscreen on macOS so only set this property when it's true\\n  if (windowMode === 'fullscreen') {\\n    options.fullscreen = true;\\n  }\\n  const window = createWindow(options);\\n  if (windowMode === 'maximize') {\\n    window.maximize();\\n  }\\n  window.loadURL(url);\\n  window.show();\\n};\\n\\nconst createDataWindow = (dataURI) => {\\n  const window = createWindow({});\\n  window.loadURL(dataURI);\\n};\\n\\nconst isResourceURL = (url) => {\\n  try {\\n    const parsedUrl = new URL(url);\\n    return parsedUrl.protocol === 'file:' && parsedUrl.href.startsWith(resourcesURL);\\n  } catch (e) {\\n    // ignore\\n  }\\n  return false;\\n};\\n\\nconst SAFE_PROTOCOLS = [\\n  'https:',\\n  'http:',\\n  'mailto:',\\n];\\n\\nconst isSafeOpenExternal = (url) => {\\n  try {\\n    const parsedUrl = new URL(url);\\n    return SAFE_PROTOCOLS.includes(parsedUrl.protocol);\\n  } catch (e) {\\n    // ignore\\n  }\\n  return false;\\n};\\n\\nconst isDataURL = (url) => {\\n  try {\\n    const parsedUrl = new URL(url);\\n    return parsedUrl.protocol === 'data:';\\n  } catch (e) {\\n    // ignore\\n  }\\n  return false;\\n};\\n\\nconst openLink = (url) => {\\n  if (isDataURL(url)) {\\n    createDataWindow(url);\\n  } else if (isResourceURL(url)) {\\n    createProjectWindow(url);\\n  } else if (isSafeOpenExternal(url)) {\\n    shell.openExternal(url);\\n  }\\n};\\n\\nconst createProcessCrashMessage = (details) => {\\n  let message = details.type ? details.type + ' child process' : 'Renderer process';\\n  message += ' crashed: ' + details.reason + ' (' + details.exitCode + ')\\\\n\\\\n';\\n  if (process.arch === 'ia32') {\\n    message += 'Usually this means the project was too big for the 32-bit Electron environment or your computer is out of memory. Ask the creator to use the 64-bit environment instead.';\\n  } else {\\n    message += 'Usually this means your computer is out of memory.';\\n  }\\n  return message;\\n};\\n\\napp.on('render-process-gone', (event, webContents, details) => {\\n  const window = BrowserWindow.fromWebContents(webContents);\\n  dialog.showMessageBoxSync(window, {\\n    type: 'error',\\n    title: 'Error',\\n    message: createProcessCrashMessage(details)\\n  });\\n});\\n\\napp.on('child-process-gone', (event, details) => {\\n  dialog.showMessageBoxSync({\\n    type: 'error',\\n    title: 'Error',\\n    message: createProcessCrashMessage(details)\\n  });\\n});\\n\\napp.on('web-contents-created', (event, contents) => {\\n  contents.setWindowOpenHandler((details) => {\\n    setImmediate(() => {\\n      openLink(details.url);\\n    });\\n    return {action: 'deny'};\\n  });\\n  contents.on('will-navigate', (e, url) => {\\n    if (!isResourceURL(url)) {\\n      e.preventDefault();\\n      openLink(url);\\n    }\\n  });\\n  contents.on('before-input-event', (e, input) => {\\n    const window = BrowserWindow.fromWebContents(contents);\\n    if (!window || input.type !== \"keyDown\") return;\\n    if (input.key === 'F11' || (input.key === 'Enter' && input.alt)) {\\n      window.setFullScreen(!window.isFullScreen());\\n    } else if (input.key === 'Escape') {\\n      const behavior = ${JSON.stringify(this.options.app.escapeBehavior)};\\n      if (window.isFullScreen() && (behavior === 'unfullscreen-only' || behavior === 'unfullscreen-or-exit')) {\\n        window.setFullScreen(false);\\n      } else if (behavior === 'unfullscreen-or-exit' || behavior === 'exit-only') {\\n        window.close();\\n      }\\n    }\\n  });\\n});\\n\\napp.on('session-created', (session) => {\\n  session.webRequest.onBeforeRequest({\\n    urls: [\"file://*\"]\\n  }, (details, callback) => {\\n    callback({\\n      cancel: !details.url.startsWith(resourcesURL)\\n    });\\n  });\\n\\n  const referer = 'https://packager.turbowarp.org/referer.html#' + app.getName();\\n  session.webRequest.onBeforeSendHeaders((details, callback) => {\\n    callback({\\n      requestHeaders: {\\n        referer\\n      }\\n    });\\n  });\\n});\\n\\napp.on('window-all-closed', () => {\\n  app.quit();\\n});\\n\\napp.whenReady().then(() => {\\n  createProjectWindow(defaultProjectURL);\\n});\\n`,y=\"'use strict';\\nconst {contextBridge, ipcRenderer} = require('electron');\\n\";if(this.project.analysis.usesSteamworks&&[\"electron-win64\",\"electron-linux64\",\"electron-mac\"].includes(this.options.target)){w+=`\\n      const enableSteamworks = () => {\\n        const APP_ID = +${JSON.stringify(this.options.steamworks.appId)};\\n        const steamworks = require('./steamworks.js/');\\n\\n        const client = steamworks.init(APP_ID);\\n\\n        const async = (event, callback) => ipcMain.handle(event, (e, ...args) => {\\n          return callback(...args);\\n        });\\n        const sync = (event, callback) => ipcMain.on(event, (e, ...args) => {\\n          e.returnValue = callback(...args);\\n        });\\n\\n        async('Steamworks.achievement.activate', (achievement) => client.achievement.activate(achievement));\\n        async('Steamworks.achievement.clear', (achievement) => client.achievement.clear(achievement));\\n        sync('Steamworks.achievement.isActivated', (achievement) => client.achievement.isActivated(achievement));\\n        sync('Steamworks.apps.isDlcInstalled', (dlc) => client.apps.isDlcInstalled(dlc));\\n        sync('Steamworks.localplayer.getName', () => client.localplayer.getName());\\n        sync('Steamworks.localplayer.getLevel', () => client.localplayer.getLevel());\\n        sync('Steamworks.localplayer.getIpCountry', () => client.localplayer.getIpCountry());\\n        sync('Steamworks.localplayer.getSteamId', () => client.localplayer.getSteamId());\\n        async('Steamworks.overlay.activateToWebPage', (url) => client.overlay.activateToWebPage(url));\\n\\n        steamworks.electronEnableSteamOverlay();\\n        sync('Steamworks.ok', () => true);\\n      };\\n\\n      try {\\n        enableSteamworks();\\n      } catch (e) {\\n        console.error(e);\\n        ipcMain.on('Steamworks.ok', (e) => {\\n          e.returnValue = false;\\n        });\\n        app.whenReady().then(() => {\\n          const ON_ERROR = ${JSON.stringify(this.options.steamworks.onError)};\\n          const window = BrowserWindow.getAllWindows()[0];\\n          if (ON_ERROR === 'warning') {\\n            dialog.showMessageBox(window, {\\n              type: 'error',\\n              message: 'Error initializing Steamworks: ' + e,\\n            });\\n          } else if (ON_ERROR === 'error') {\\n            dialog.showMessageBoxSync(window, {\\n              type: 'error',\\n              message: 'Error initializing Steamworks: ' + e,\\n            });\\n            app.quit();\\n          }\\n        });\\n      }`,y+=\"\\n      const enableSteamworks = () => {\\n        const sync = (event) => (...args) => ipcRenderer.sendSync(event, ...args);\\n        const async = (event) => (...args) => ipcRenderer.invoke(event, ...args);\\n\\n        contextBridge.exposeInMainWorld('Steamworks', {\\n          ok: sync('Steamworks.ok'),\\n          achievement: {\\n            activate: async('Steamworks.achievement.activate'),\\n            clear: async('Steamworks.achievement.clear'),\\n            isActivated: sync('Steamworks.achievement.isActivated'),\\n          },\\n          apps: {\\n            isDlcInstalled: sync('Steamworks.apps.isDlcInstalled'),\\n          },\\n          leaderboard: {\\n            uploadScore: async('Steamworks.leaderboard.uploadScore'),\\n          },\\n          localplayer: {\\n            getName: sync('Steamworks.localplayer.getName'),\\n            getLevel: sync('Steamworks.localplayer.getLevel'),\\n            getIpCountry: sync('Steamworks.localplayer.getIpCountry'),\\n            getSteamId: sync('Steamworks.localplayer.getSteamId'),\\n          },\\n          overlay: {\\n            activateToWebPage: async('Steamworks.overlay.activateToWebPage'),\\n          },\\n        });\\n      };\\n      enableSteamworks();\";const e=await this.fetchLargeAsset(\"steamworks.js\",\"arraybuffer\"),t=await(await C()).loadAsync(e);for(const[e,n]of Object.entries(t.files)){const t=e.replace(/^package\\//,\"steamworks.js/\");N(i,`${p}${t}`,n)}}i.file(`${p}${u}`,w),i.file(`${p}${f}`,y);for(const[t,n]of Object.entries(e.files))N(i,`${p}${t}`,n);if(s){const e=[\"1) Extract the whole zip\",`2) Open \"${t}.exe\" to start the app.`,'Open \"licenses.html\" for information regarding open source software used by the app.'].join(\"\\n\\n\");i.file(`${c}README.txt`,e)}else if(r){i.file(`How to run ${this.options.app.packageName}.txt`,V(this.options));const e=this.getPlistPropertiesForPrimaryExecutable();await this.updatePlist(i,`${d}Info.plist`,e);const t=[\"Electron Helper\",\"Electron Helper (GPU)\",\"Electron Helper (Renderer)\",\"Electron Helper (Plugin)\"];for(const n of t)await this.updatePlist(i,`${d}Frameworks/${n}.app/Contents/Info.plist`,{[F]:`${e[F]}.helper`,[D]:n.replace(\"Electron\",this.options.app.packageName),[W]:this.options.app.version,[_]:this.options.app.version});const n=await b(g);i.file(`${d}Resources/electron.icns`,n)}else if(a){const e=`#!/bin/bash\\ncd \"$(dirname \"$0\")\"\\n./${t}`;i.file(`${c}start.sh`,e,{unixPermissions:33261})}return i}async addWebViewMac(e){J(this.options.app.packageName);const t=await this.fetchLargeAsset(this.options.target,\"arraybuffer\"),n=await(await C()).loadAsync(t),o=`${this.options.app.packageName}.app`,s=`${o}/Contents/`,r=`${o}/Contents/Resources/`,a=new(await C());for(const[e,t]of Object.entries(n.files)){const n=e.replace(\"WebView.app\",o).replace(/WebView$/,this.options.app.packageName);N(a,n,t)}for(const[t,n]of Object.entries(e.files))N(a,`${r}${t}`,n);const i=await O.getAppIcon(this.options.app.icon),c=await b(i);a.file(`${r}AppIcon.icns`,c),a.remove(`${r}Assets.car`);const l=parseInt(this.options.appearance.background.substr(1),16),d={title:this.options.app.windowTitle,background:[l>>16&255,l>>8&255,255&l,1],width:this.computeWindowSize().width,height:this.computeWindowSize().height};return a.file(`${r}application_config.json`,JSON.stringify(d)),await this.updatePlist(a,`${s}Info.plist`,this.getPlistPropertiesForPrimaryExecutable()),a.file(`How to run ${this.options.app.packageName}.txt`,V(this.options)),a}makeWebSocketProvider(){const e=\"wss://clouddata.turbowarp.org\"===this.options.cloudVariables.cloudHost?[\"wss://clouddata.turbowarp.org\",\"wss://clouddata.turbowarp.xyz\"]:this.options.cloudVariables.cloudHost;return`new Scaffolding.Cloud.WebSocketProvider(${JSON.stringify(e)}, ${JSON.stringify(this.options.projectId)})`}makeLocalStorageProvider(){return`new Scaffolding.Cloud.LocalStorageProvider(${JSON.stringify(`cloudvariables:${this.options.projectId}`)})`}makeCustomProvider(){const e=this.options.cloudVariables.custom;let t=\"{const providers = {};\\n\";for(const n of new Set(Object.values(e)))\"ws\"===n?t+=`providers.ws = ${this.makeWebSocketProvider()};\\n`:\"local\"===n&&(t+=`providers.local = ${this.makeLocalStorageProvider()};\\n`);t+=\"for (const provider of Object.values(providers)) scaffolding.addCloudProvider(provider);\\n\";for(const n of Object.keys(e)){const o=e[n];t+=`scaffolding.addCloudProviderOverride(${JSON.stringify(n)}, providers[${JSON.stringify(o)}] || null);\\n`}return t+=\"}\",t}generateFilename(e){return`${this.options.app.windowTitle}.${e}`}async generateGetProjectData(){const e=[];let t,n,o=\"\",s=!1;if(\"html\"===this.options.target){s=\"blob\"!==this.project.type,t=T,n=.98;const r=new Uint8Array(this.project.arrayBuffer);e.push(`\\n      <script>\\n      const getBase85DecodeValue = (code) => {\\n        if (code === 0x28) code = 0x3c;\\n        if (code === 0x29) code = 0x3e;\\n        return code - 0x2a;\\n      };\\n      const base85decode = (str, outBuffer, outOffset) => {\\n        const view = new DataView(outBuffer, outOffset, Math.floor(str.length / 5 * 4));\\n        for (let i = 0, j = 0; i < str.length; i += 5, j += 4) {\\n          view.setUint32(j, (\\n            getBase85DecodeValue(str.charCodeAt(i + 4)) * 85 * 85 * 85 * 85 +\\n            getBase85DecodeValue(str.charCodeAt(i + 3)) * 85 * 85 * 85 +\\n            getBase85DecodeValue(str.charCodeAt(i + 2)) * 85 * 85 +\\n            getBase85DecodeValue(str.charCodeAt(i + 1)) * 85 +\\n            getBase85DecodeValue(str.charCodeAt(i))\\n          ), true);\\n        }\\n      };\\n      let projectDecodeBuffer = new ArrayBuffer(${4*Math.ceil(r.length/4)});\\n      let projectDecodeIndex = 0;\\n      const decodeChunk = (size) => {\\n        try {\\n          if (document.currentScript.tagName.toUpperCase() !== 'SCRIPT') throw new Error('document.currentScript is not a script');\\n          base85decode(document.currentScript.getAttribute(\"data\"), projectDecodeBuffer, projectDecodeIndex);\\n          document.currentScript.remove();\\n          projectDecodeIndex += size;\\n          setProgress(interpolate(0.1, 0.75, projectDecodeIndex / ${r.length}));\\n        } catch (e) {\\n          handleError(e);\\n        }\\n      };\\n      <\\/script>`);const a=65536;for(let t=0;t<r.length;t+=a){const n=r.subarray(t,t+a),o=S(n);e.push(`<script data=\"${o}\">decodeChunk(${n.length})<\\/script>\\n`)}o=`() => {\\n        const buffer = projectDecodeBuffer;\\n        projectDecodeBuffer = null; // Allow GC\\n        return Promise.resolve(new Uint8Array(buffer, 0, ${r.length}));\\n      }`}else{let e;\"blob\"===this.project.type||\"zip-one-asset\"===this.options.target?(s=\"blob\"!==this.project.type,e=\"./project.zip\",t=T,n=.98):(e=\"./assets/project.json\",t=.2,n=.98),o=`() => new Promise((resolve, reject) => {\\n        const xhr = new XMLHttpRequest();\\n        xhr.onload = () => {\\n          resolve(xhr.response);\\n        };\\n        xhr.onerror = () => {\\n          if (location.protocol === 'file:') {\\n            reject(new Error('Zip environment must be used on a website, not on a local file. To fix this error, use the \"Plain HTML\" environment instead.'));\\n          } else {\\n            reject(new Error('Request to load project data failed.'));\\n          }\\n        };\\n        xhr.onprogress = (e) => {\\n          if (e.lengthComputable) {\\n            setProgress(interpolate(0.1, ${t}, e.loaded / e.total));\\n          }\\n        };\\n        xhr.responseType = 'arraybuffer';\\n        xhr.open('GET', ${JSON.stringify(e)});\\n        xhr.send();\\n      })`}return e.push(`\\n    <script>\\n      const getProjectData = (function() {\\n        const storage = scaffolding.storage;\\n        storage.onprogress = (total, loaded) => {\\n          setProgress(interpolate(${t}, ${n}, loaded / total));\\n        };\\n        ${s?`\\n        let zip;\\n        // Allow zip to be GC'd after project loads\\n        vm.runtime.on('PROJECT_LOADED', () => (zip = null));\\n        const findFileInZip = (path) => zip.file(path) || zip.file(new RegExp(\"^([^/]*/)?\" + path + \"$\"))[0];\\n        storage.addHelper({\\n          load: (assetType, assetId, dataFormat) => {\\n            if (!zip) {\\n              throw new Error('Zip is not loaded or has been closed');\\n            }\\n            const path = assetId + '.' + dataFormat;\\n            const file = findFileInZip(path);\\n            if (!file) {\\n              console.error('Asset is not in zip: ' + path);\\n              return Promise.resolve(null);\\n            }\\n            return file\\n              .async('uint8array')\\n              .then((data) => storage.createAsset(assetType, dataFormat, data, assetId));\\n          }\\n        });\\n        return () => (${o})().then(async (data) => {\\n          zip = await Scaffolding.JSZip.loadAsync(data);\\n          const file = findFileInZip('project.json');\\n          if (!file) {\\n            throw new Error('project.json is not in zip');\\n          }\\n          return file.async('arraybuffer');\\n        });`:`\\n        storage.addWebStore(\\n          [\\n            storage.AssetType.ImageVector,\\n            storage.AssetType.ImageBitmap,\\n            storage.AssetType.Sound,\\n            storage.AssetType.Font\\n          ].filter(i => i),\\n          (asset) => new URL('./assets/' + asset.assetId + '.' + asset.dataFormat, location).href\\n        );\\n        return ${o};`}\\n      })();\\n    <\\/script>`),e}async generateFavicon(){if(null===this.options.app.icon)return\"\";return`<link rel=\"icon\" href=\"${await O.readAsURL(this.options.app.icon,\"app icon\")}\">`}async generateCursor(){if(\"custom\"!==this.options.cursor.type)return this.options.cursor.type;if(!this.options.cursor.custom)return\"auto\";return`url(${await O.readAsURL(this.options.cursor.custom,\"custom cursor\")}) ${this.options.cursor.center.x} ${this.options.cursor.center.y}, auto`}async generateExtensionURLs(){const e=e=>this.dispatchEvent(new s(\"fetch-extensions\",{detail:{progress:e}})),t=e=>{if(!this.options.bakeExtensions)return!1;try{const t=new URL(e);return\"http:\"===t.protocol||\"https:\"===t.protocol}catch(e){return!1}},n=this.options.extensions,o=n.filter((e=>!t(e))),r=n.filter((e=>t(e))),a=[...o];if(0!==r.length){for(let t=0;t<r.length;t++){e(t/r.length);const n=r[t];try{const e=`(function(Scratch) { ${await O.fetchExtensionScript(n)} })(Scratch);`,t=`data:text/javascript;,${encodeURIComponent(e)}`;a.push(t)}catch(e){console.warn(\"Could not bake extension\",n,e),a.push(n)}}e(1)}return a}async package(){if(!O)throw new Error(\"Missing adapter\");if(this.used)throw new Error(\"Packager was already used\");this.used=!0,this.ensureNotAborted(),await this.loadResources(),this.ensureNotAborted();const e=R`<!DOCTYPE html>\n<!-- Created with ${k.WEBSITE} -->\n<html>\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\">\n  <!-- We only include this to explicitly loosen the CSP of various packager environments. It does not provide any security. -->\n  <meta http-equiv=\"Content-Security-Policy\" content=\"default-src * 'self' 'unsafe-inline' 'unsafe-eval' data: blob:\">\n  <title>${a(this.options.app.windowTitle)}</title>\n  <style>\n    body {\n      color: ${this.options.appearance.foreground};\n      font-family: sans-serif;\n      overflow: hidden;\n      margin: 0;\n      padding: 0;\n    }\n    :root, body.is-fullscreen {\n      background-color: ${this.options.appearance.background};\n    }\n    [hidden] {\n      display: none !important;\n    }\n    h1 {\n      font-weight: normal;\n    }\n    a {\n      color: inherit;\n      text-decoration: underline;\n      cursor: pointer;\n    }\n\n    #app, #loading, #error, #launch {\n      position: absolute;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 100%;\n    }\n    .screen {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      text-align: center;\n      cursor: default;\n      user-select: none;\n      -webkit-user-select: none;\n      background-color: ${this.options.appearance.background};\n    }\n    #launch {\n      background-color: rgba(0, 0, 0, 0.7);\n      cursor: pointer;\n    }\n    .green-flag {\n      width: 80px;\n      height: 80px;\n      padding: 16px;\n      border-radius: 100%;\n      background: rgba(255, 255, 255, 0.75);\n      border: 3px solid hsla(0, 100%, 100%, 1);\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      box-sizing: border-box;\n    }\n    #loading {\n      ${this.options.loadingScreen.image&&\"stretch\"===this.options.loadingScreen.imageMode?`background-image: url(${await O.readAsURL(this.options.loadingScreen.image,\"stretched loading screen\")});\\n      background-repeat: no-repeat;\\n      background-size: contain;\\n      background-position: center;`:\"\"}\n    }\n    .progress-bar-outer {\n      border: 1px solid currentColor;\n      height: 10px;\n      width: 200px;\n      max-width: 200px;\n    }\n    .progress-bar-inner {\n      height: 100%;\n      width: 0;\n      background-color: currentColor;\n    }\n    .loading-text, noscript {\n      font-weight: normal;\n      font-size: 36px;\n      margin: 0 0 16px;\n    }\n    .loading-image {\n      margin: 0 0 16px;\n    }\n    #error-message, #error-stack {\n      font-family: monospace;\n      max-width: 600px;\n      white-space: pre-wrap;\n      user-select: text;\n      -webkit-user-select: text;\n    }\n    #error-stack {\n      text-align: left;\n      max-height: 200px;\n      overflow: auto;\n    }\n    .control-button {\n      width: 2rem;\n      height: 2rem;\n      padding: 0.375rem;\n      margin-top: 0.5rem;\n      margin-bottom: 0.5rem;\n      user-select: none;\n      -webkit-user-select: none;\n      cursor: pointer;\n      border: 0;\n      border-radius: 4px;\n    }\n    .control-button-highlight:hover {\n      background: ${this.options.appearance.accent}26;\n    }\n    .control-button-highlight.active {\n      background: ${this.options.appearance.accent}59;\n    }\n    .fullscreen-button {\n      background: white;\n    }\n    .standalone-fullscreen-button {\n      position: absolute;\n      top: 0;\n      right: 0;\n      background-color: rgba(0, 0, 0, 0.5);\n      border-radius: 0 0 0 4px;\n      padding: 4px;\n      cursor: pointer;\n    }\n    .sc-canvas {\n      cursor: ${await this.generateCursor()};\n    }\n    .sc-monitor-root[data-opcode^=\"data_\"] .sc-monitor-value-color {\n      background-color: ${this.options.monitors.variableColor};\n    }\n    .sc-monitor-row-value-outer {\n      background-color: ${this.options.monitors.listColor};\n    }\n    .sc-monitor-row-value-editing .sc-monitor-row-value-outer {\n      background-color: ${I(this.options.monitors.listColor)};\n    }\n    ${this.options.custom.css}\n  </style>\n  <meta name=\"theme-color\" content=\"${this.options.appearance.background}\">\n  ${await this.generateFavicon()}\n</head>\n<body>\n  <div id=\"app\"></div>\n\n  <div id=\"launch\" class=\"screen\" hidden title=\"Click to start\">\n    <div class=\"green-flag\">\n      <svg viewBox=\"0 0 16.63 17.5\" width=\"42\" height=\"44\">\n        <defs><style>.cls-1,.cls-2{fill:#4cbf56;stroke:#45993d;stroke-linecap:round;stroke-linejoin:round;}.cls-2{stroke-width:1.5px;}</style></defs>\n        <path class=\"cls-1\" d=\"M.75,2A6.44,6.44,0,0,1,8.44,2h0a6.44,6.44,0,0,0,7.69,0V12.4a6.44,6.44,0,0,1-7.69,0h0a6.44,6.44,0,0,0-7.69,0\"/>\n        <line class=\"cls-2\" x1=\"0.75\" y1=\"16.75\" x2=\"0.75\" y2=\"0.75\"/>\n      </svg>\n    </div>\n  </div>\n\n  <div id=\"loading\" class=\"screen\">\n    <noscript>Enable JavaScript</noscript>\n    ${this.options.loadingScreen.text?`<h1 class=\"loading-text\">${a(this.options.loadingScreen.text)}</h1>`:\"\"}\n    ${this.options.loadingScreen.image&&\"normal\"===this.options.loadingScreen.imageMode?`<div class=\"loading-image\"><img src=\"${await O.readAsURL(this.options.loadingScreen.image,\"loading-screen\")}\"></div>`:\"\"}\n    ${this.options.loadingScreen.progressBar?'<div class=\"progress-bar-outer\"><div class=\"progress-bar-inner\" id=\"loading-inner\"></div></div>':\"\"}\n  </div>\n\n  <div id=\"error\" class=\"screen\" hidden>\n    <h1>Error</h1>\n    <details>\n      <summary id=\"error-message\"></summary>\n      <p id=\"error-stack\"></p>\n    </details>\n  </div>\n\n  ${\"html\"===this.options.target?`<script>${this.script}<\\/script>`:'<script src=\"script.js\"><\\/script>'}\n  <script>${t=`\\n    const appElement = document.getElementById('app');\\n    const launchScreen = document.getElementById('launch');\\n    const loadingScreen = document.getElementById('loading');\\n    const loadingInner = document.getElementById('loading-inner');\\n    const errorScreen = document.getElementById('error');\\n    const errorScreenMessage = document.getElementById('error-message');\\n    const errorScreenStack = document.getElementById('error-stack');\\n\\n    const handleError = (error) => {\\n      console.error(error);\\n      if (!errorScreen.hidden) return;\\n      errorScreen.hidden = false;\\n      errorScreenMessage.textContent = '' + error;\\n      let debug = error && error.stack || 'no stack';\\n      debug += '\\\\nUser agent: ' + navigator.userAgent;\\n      errorScreenStack.textContent = debug;\\n    };\\n    const setProgress = (progress) => {\\n      if (loadingInner) loadingInner.style.width = progress * 100 + '%';\\n    };\\n    const interpolate = (a, b, t) => a + t * (b - a);\\n\\n    try {\\n      setProgress(0.1);\\n\\n      const scaffolding = new Scaffolding.Scaffolding();\\n      scaffolding.width = ${this.options.stageWidth};\\n      scaffolding.height = ${this.options.stageHeight};\\n      scaffolding.resizeMode = ${JSON.stringify(this.options.resizeMode)};\\n      scaffolding.editableLists = ${this.options.monitors.editableLists};\\n      scaffolding.usePackagedRuntime = ${this.options.packagedRuntime};\\n      scaffolding.setup();\\n      scaffolding.appendTo(appElement);\\n\\n      const vm = scaffolding.vm;\\n      window.scaffolding = scaffolding;\\n      window.vm = scaffolding.vm;\\n      window.Scratch = {\\n        vm,\\n        renderer: vm.renderer,\\n        audioEngine: vm.runtime.audioEngine,\\n        bitmapAdapter: vm.runtime.v2BitmapAdapter,\\n        videoProvider: vm.runtime.ioDevices.video.provider\\n      };\\n\\n      scaffolding.setUsername(${JSON.stringify(this.options.username)}.replace(/#/g, () => Math.floor(Math.random() * 10)));\\n      scaffolding.setAccentColor(${JSON.stringify(this.options.appearance.accent)});\\n\\n      try {\\n        ${\"ws\"===this.options.cloudVariables.mode?`scaffolding.addCloudProvider(${this.makeWebSocketProvider()})`:\"local\"===this.options.cloudVariables.mode?`scaffolding.addCloudProvider(${this.makeLocalStorageProvider()})`:\"custom\"===this.options.cloudVariables.mode?this.makeCustomProvider():\"\"};\\n      } catch (error) {\\n        console.error(error);\\n      }\\n\\n      ${this.options.controls.greenFlag.enabled?'\\n      const greenFlagButton = document.createElement(\\'img\\');\\n      greenFlagButton.src = \\'data:image/svg+xml,\\' + encodeURIComponent(\\'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16.63 17.5\"><path d=\"M.75 2a6.44 6.44 0 017.69 0h0a6.44 6.44 0 007.69 0v10.4a6.44 6.44 0 01-7.69 0h0a6.44 6.44 0 00-7.69 0\" fill=\"#4cbf56\" stroke=\"#45993d\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path stroke-width=\"1.5\" fill=\"#4cbf56\" stroke=\"#45993d\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M.75 16.75v-16\"/></svg>\\');\\n      greenFlagButton.className = \\'control-button control-button-highlight green-flag-button\\';\\n      greenFlagButton.draggable = false;\\n      greenFlagButton.addEventListener(\\'click\\', () => {\\n        scaffolding.greenFlag();\\n      });\\n      scaffolding.addEventListener(\\'PROJECT_RUN_START\\', () => {\\n        greenFlagButton.classList.add(\\'active\\');\\n      });\\n      scaffolding.addEventListener(\\'PROJECT_RUN_STOP\\', () => {\\n        greenFlagButton.classList.remove(\\'active\\');\\n      });\\n      scaffolding.addControlButton({\\n        element: greenFlagButton,\\n        where: \\'top-left\\'\\n      });':\"\"}\\n\\n      ${this.options.controls.pause.enabled?'\\n      const pauseButton = document.createElement(\\'img\\');\\n      pauseButton.className = \\'control-button control-button-highlight pause-button\\';\\n      pauseButton.draggable = false;\\n      let isPaused = false;\\n      pauseButton.addEventListener(\\'click\\', () => {\\n        vm.setPaused(!isPaused);\\n      });\\n      const updatePause = () => {\\n        if (isPaused) {\\n          pauseButton.src = \\'data:image/svg+xml,\\' + encodeURIComponent(\\'<svg width=\"16\" height=\"16\" viewBox=\"0 0 4.2333332 4.2333335\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m3.95163484 2.02835365-1.66643921.9621191-1.66643913.96211911V.10411543l1.66643922.9621191z\" fill=\"#ffae00\"/></svg>\\');\\n        } else {\\n          pauseButton.src = \\'data:image/svg+xml,\\' + encodeURIComponent(\\'<svg width=\"16\" height=\"16\" viewBox=\"0 0 4.2333332 4.2333335\" xmlns=\"http://www.w3.org/2000/svg\"><g fill=\"#ffae00\"><path d=\"M.389.19239126h1.2631972v3.8485508H.389zM2.5810001.19239126h1.2631972v3.8485508H2.5810001z\"/></g></svg>\\');\\n        }\\n      };\\n      vm.runtime.on(\\'RUNTIME_PAUSED\\', () => {\\n        isPaused = true;\\n        updatePause();\\n      });\\n      vm.runtime.on(\\'RUNTIME_UNPAUSED\\', () => {\\n        isPaused = false;\\n        updatePause();\\n      });\\n      updatePause();\\n      scaffolding.addControlButton({\\n        element: pauseButton,\\n        where: \\'top-left\\'\\n      });':\"\"}\\n\\n      ${this.options.controls.stopAll.enabled?'\\n      const stopAllButton = document.createElement(\\'img\\');\\n      stopAllButton.src = \\'data:image/svg+xml,\\' + encodeURIComponent(\\'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 14 14\"><path fill=\"#ec5959\" stroke=\"#b84848\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M4.3.5h5.4l3.8 3.8v5.4l-3.8 3.8H4.3L.5 9.7V4.3z\"/></svg>\\');\\n      stopAllButton.className = \\'control-button control-button-highlight stop-all-button\\';\\n      stopAllButton.draggable = false;\\n      stopAllButton.addEventListener(\\'click\\', () => {\\n        scaffolding.stopAll();\\n      });\\n      scaffolding.addControlButton({\\n        element: stopAllButton,\\n        where: \\'top-left\\'\\n      });':\"\"}\\n\\n      ${this.options.controls.fullscreen.enabled?`\\n      if (document.fullscreenEnabled || document.webkitFullscreenEnabled) {\\n        let isFullScreen = !!(document.fullscreenElement || document.webkitFullscreenElement);\\n        const fullscreenButton = document.createElement('img');\\n        fullscreenButton.draggable = false;\\n        fullscreenButton.className = 'control-button fullscreen-button';\\n        fullscreenButton.addEventListener('click', () => {\\n          if (isFullScreen) {\\n            if (document.exitFullscreen) {\\n              document.exitFullscreen();\\n            } else if (document.webkitExitFullscreen) {\\n              document.webkitExitFullscreen();\\n            }\\n          } else {\\n            if (document.body.requestFullscreen) {\\n              document.body.requestFullscreen();\\n            } else if (document.body.webkitRequestFullscreen) {\\n              document.body.webkitRequestFullscreen();\\n            }\\n          }\\n        });\\n        const otherControlsExist = ${this.options.controls.greenFlag.enabled||this.options.controls.stopAll.enabled};\\n        const fillColor = otherControlsExist ? '#575E75' : '${this.options.appearance.foreground}';\\n        const updateFullScreen = () => {\\n          isFullScreen = !!(document.fullscreenElement || document.webkitFullscreenElement);\\n          document.body.classList.toggle('is-fullscreen', isFullScreen);\\n          if (isFullScreen) {\\n            fullscreenButton.src = 'data:image/svg+xml,' + encodeURIComponent('<svg width=\"20\" height=\"20\" xmlns=\"http://www.w3.org/2000/svg\"><g fill=\"' + fillColor + '\" fill-rule=\"evenodd\"><path d=\"M12.662 3.65l.89.891 3.133-2.374a.815.815 0 011.15.165.819.819 0 010 .986L15.467 6.46l.867.871c.25.25.072.664-.269.664L12.388 8A.397.397 0 0112 7.611V3.92c0-.341.418-.514.662-.27M7.338 16.35l-.89-.89-3.133 2.374a.817.817 0 01-1.15-.166.819.819 0 010-.985l2.37-3.143-.87-.871a.387.387 0 01.27-.664L7.612 12a.397.397 0 01.388.389v3.692a.387.387 0 01-.662.27M7.338 3.65l-.89.891-3.133-2.374a.815.815 0 00-1.15.165.819.819 0 000 .986l2.37 3.142-.87.871a.387.387 0 00.27.664L7.612 8A.397.397 0 008 7.611V3.92a.387.387 0 00-.662-.27M12.662 16.35l.89-.89 3.133 2.374a.817.817 0 001.15-.166.819.819 0 000-.985l-2.368-3.143.867-.871a.387.387 0 00-.269-.664L12.388 12a.397.397 0 00-.388.389v3.692c0 .342.418.514.662.27\"/></g></svg>');\\n          } else {\\n            fullscreenButton.src = 'data:image/svg+xml,' + encodeURIComponent('<svg width=\"20\" height=\"20\" xmlns=\"http://www.w3.org/2000/svg\"><g fill=\"' + fillColor + '\" fill-rule=\"evenodd\"><path d=\"M16.338 7.35l-.89-.891-3.133 2.374a.815.815 0 01-1.15-.165.819.819 0 010-.986l2.368-3.142-.867-.871a.387.387 0 01.269-.664L16.612 3a.397.397 0 01.388.389V7.08a.387.387 0 01-.662.27M3.662 12.65l.89.89 3.133-2.374a.817.817 0 011.15.166.819.819 0 010 .985l-2.37 3.143.87.871c.248.25.071.664-.27.664L3.388 17A.397.397 0 013 16.611V12.92c0-.342.418-.514.662-.27M3.662 7.35l.89-.891 3.133 2.374a.815.815 0 001.15-.165.819.819 0 000-.986L6.465 4.54l.87-.871a.387.387 0 00-.27-.664L3.388 3A.397.397 0 003 3.389V7.08c0 .341.418.514.662.27M16.338 12.65l-.89.89-3.133-2.374a.817.817 0 00-1.15.166.819.819 0 000 .985l2.368 3.143-.867.871a.387.387 0 00.269.664l3.677.005a.397.397 0 00.388-.389V12.92a.387.387 0 00-.662-.27\"/></g></svg>');\\n          }\\n        };\\n        updateFullScreen();\\n        document.addEventListener('fullscreenchange', updateFullScreen);\\n        document.addEventListener('webkitfullscreenchange', updateFullScreen);\\n        if (otherControlsExist) {\\n          fullscreenButton.className = 'control-button fullscreen-button';\\n          scaffolding.addControlButton({\\n            element: fullscreenButton,\\n            where: 'top-right'\\n          });\\n        } else {\\n          fullscreenButton.className = 'standalone-fullscreen-button';\\n          document.body.appendChild(fullscreenButton);\\n        }\\n      }`:\"\"}\\n\\n      vm.setTurboMode(${this.options.turbo});\\n      if (vm.setInterpolation) vm.setInterpolation(${this.options.interpolation});\\n      if (vm.setFramerate) vm.setFramerate(${this.options.framerate});\\n      if (vm.renderer.setUseHighQualityRender) vm.renderer.setUseHighQualityRender(${this.options.highQualityPen});\\n      if (vm.setRuntimeOptions) vm.setRuntimeOptions({\\n        fencing: ${this.options.fencing},\\n        miscLimits: ${this.options.miscLimits},\\n        maxClones: ${this.options.maxClones},\\n      });\\n      if (vm.setCompilerOptions) vm.setCompilerOptions({\\n        enabled: ${this.options.compiler.enabled},\\n        warpTimer: ${this.options.compiler.warpTimer}\\n      });\\n      if (vm.renderer.setMaxTextureDimension) vm.renderer.setMaxTextureDimension(${this.options.maxTextureDimension});\\n\\n      // enforcePrivacy threat model only makes sense in the editor\\n      if (vm.runtime.setEnforcePrivacy) vm.runtime.setEnforcePrivacy(false);\\n\\n      if (typeof ScaffoldingAddons !== 'undefined') {\\n        ScaffoldingAddons.run(scaffolding, ${JSON.stringify(this.getAddonOptions())});\\n      }\\n\\n      scaffolding.setExtensionSecurityManager({\\n        getSandboxMode: () => 'unsandboxed',\\n        canLoadExtensionFromProject: () => true\\n      });\\n      for (const extension of ${JSON.stringify(await this.generateExtensionURLs())}) {\\n        vm.extensionManager.loadExtensionURL(extension);\\n      }\\n\\n      ${this.options.closeWhenStopped?\"\\n      vm.runtime.on('PROJECT_RUN_STOP', () => {\\n        if (!vm.isPaused || !vm.isPaused()) {\\n          window.close();\\n        }\\n      });\":\"\"}\\n\\n      ${this.options.target.startsWith(\"nwjs-\")?\"\\n      if (typeof nw !== 'undefined') {\\n        const win = nw.Window.get();\\n        win.on('new-win-policy', (frame, url, policy) => {\\n          policy.ignore();\\n          nw.Shell.openExternal(url);\\n        });\\n        win.on('navigation', (frame, url, policy) => {\\n          policy.ignore();\\n          nw.Shell.openExternal(url);\\n        });\\n        document.addEventListener('keydown', (e) => {\\n          if (e.key === 'Escape' && document.fullscreenElement) {\\n            document.exitFullscreen();\\n          }\\n        });\\n      }\":\"\"}\\n    } catch (e) {\\n      handleError(e);\\n    }\\n  `,t.split(\"\\n\").filter(((e,t,n)=>0===t||t===n.length-1||0!==e.trim().length||0!==n[t-1].trim().length)).join(\"\\n\")}</script>\n  ${this.options.custom.js?`<script>\\n    try {\\n      ${this.options.custom.js}\\n    } catch (e) {\\n      handleError(e);\\n    }\\n  <\\/script>`:\"\"}\n  ${await this.generateGetProjectData()}\n  <script>\n    const run = async () => {\n      const projectData = await getProjectData();\n      await scaffolding.loadProject(projectData);\n      setProgress(1);\n      loadingScreen.hidden = true;\n      if (${this.options.autoplay}) {\n        scaffolding.start();\n      } else {\n        launchScreen.hidden = false;\n        launchScreen.addEventListener('click', () => {\n          launchScreen.hidden = true;\n          scaffolding.start();\n        });\n        launchScreen.focus();\n      }\n    };\n    run().catch(handleError);\n  </script>\n</body>\n</html>\n`;var t;if(this.ensureNotAborted(),\"html\"!==this.options.target){let t;if(\"sb3\"===this.project.type&&\"zip-one-asset\"!==this.options.target){t=await(await C()).loadAsync(this.project.arrayBuffer);for(const e of Object.keys(t.files))t.files[`assets/${e}`]=t.files[e],delete t.files[e]}else t=new(await C()),t.file(\"project.zip\",this.project.arrayBuffer);return t.file(\"index.html\",e),t.file(\"script.js\",this.script),this.options.target.startsWith(\"nwjs-\")?t=await this.addNwJS(t):this.options.target.startsWith(\"electron-\")?t=await this.addElectron(t):\"webview-mac\"===this.options.target&&(t=await this.addWebViewMac(t)),this.ensureNotAborted(),{data:await t.generateAsync({type:\"uint8array\",compression:\"DEFLATE\",platform:\"UNIX\"},(e=>{this.dispatchEvent(new s(\"zip-progress\",{detail:{progress:e.percent/100}}))})),type:\"application/zip\",filename:this.generateFilename(\"zip\")}}return{data:e,type:\"text/html\",filename:this.generateFilename(\"html\")}}}q.getDefaultPackageNameFromFileName=e=>(e=(e=(e=(e=e.split(\".\")[0]).replace(/[^\\-a-z ]/gi,\"\")).trim()).replace(/ /g,\"-\")).toLowerCase()||\"packaged-project\",q.getWindowTitleFromFileName=e=>{const t=e.split(\".\");return t.length>1&&t.pop(),(e=t.join(\".\").trim())||\"Packaged Project\"},q.usesUnsafeOptions=e=>{const t=q.DEFAULT_OPTIONS(),n=e=>[e.custom,e.extensions,e.cloudVariables.unsafeCloudBehaviors];return JSON.stringify(n(t))!==JSON.stringify(n(e))},q.DEFAULT_OPTIONS=()=>({turbo:!1,interpolation:!1,framerate:30,highQualityPen:!1,maxClones:300,fencing:!0,miscLimits:!0,stageWidth:480,stageHeight:360,resizeMode:\"preserve-ratio\",autoplay:!1,username:\"player####\",closeWhenStopped:!1,projectId:\"\",custom:{css:\"\",js:\"\"},appearance:{background:\"#000000\",foreground:\"#ffffff\",accent:k.ACCENT_COLOR},loadingScreen:{progressBar:!0,text:\"\",imageMode:\"normal\",image:null},controls:{greenFlag:{enabled:!1},stopAll:{enabled:!1},fullscreen:{enabled:!1},pause:{enabled:!1}},monitors:{editableLists:!1,variableColor:\"#ff8c1a\",listColor:\"#fc662c\"},compiler:{enabled:!0,warpTimer:!1},packagedRuntime:!0,target:\"html\",app:{icon:null,packageName:q.getDefaultPackageNameFromFileName(\"\"),windowTitle:q.getWindowTitleFromFileName(\"\"),windowMode:\"window\",version:\"1.0.0\",escapeBehavior:\"unfullscreen-only\",windowControls:\"default\",backgroundThrottling:!1},chunks:{gamepad:!1,pointerlock:!1},cloudVariables:{mode:\"ws\",cloudHost:\"wss://clouddata.turbowarp.org\",custom:{},specialCloudBehaviors:!1,unsafeCloudBehaviors:!1},cursor:{type:\"auto\",custom:null,center:{x:0,y:0}},steamworks:{appId:\"480\",onError:\"warning\"},extensions:[],bakeExtensions:!0,maxTextureDimension:2048});var G=q;const Y=\"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!#%()*+,-./:;=?@[]^_`{|}~\",X=e=>{let t=\"\";for(;e>=0;)t=Y[e%77]+t,e=Math.floor(e/77)-1;return t};class Z{constructor(){this.generatedIds=new Map,this.references=new Map,this.skippedIds=new Set,this.skippedIds.add(\"of\")}skip(e){this.skippedIds.add(e)}addReference(e){const t=this.references.get(e)||0;this.references.set(e,t+1)}generateNewIds(){const e=Array.from(this.references.entries());e.sort(((e,t)=>t[1]-e[1]));let t=0;for(const n of e){const e=n[0];let o=X(t);for(;this.skippedIds.has(o);)t++,o=X(t);this.generatedIds.set(e,o),t++}}getNewId(e){return this.generatedIds.has(e)?this.generatedIds.get(e):e}}var Q=e=>{const t=new Z;for(const n of e.targets)for(const[e,o]of Object.entries(n.blocks))if(t.addReference(e),!Array.isArray(o)&&(o.parent&&t.addReference(o.parent),o.next&&t.addReference(o.next),o.inputs))for(const e of Object.values(o.inputs))for(let n=1;n<e.length;n++){const o=e[n];\"string\"==typeof o&&t.addReference(o)}if(t.generateNewIds(),e.monitors)for(const t of e.monitors)t.value=Array.isArray(t.value)?[]:0;for(const n of e.targets){const e={},o={};for(const[o,s]of Object.entries(n.blocks))if(e[t.getNewId(o)]=s,!Array.isArray(s)){if(s.parent&&(s.parent=t.getNewId(s.parent)),s.next&&(s.next=t.getNewId(s.next)),s.inputs)for(const e of Object.values(s.inputs))for(let n=1;n<e.length;n++){const o=e[n];\"string\"==typeof o&&(e[n]=t.getNewId(o))}s.shadow||delete s.shadow,s.topLevel||delete s.topLevel,delete s.x,delete s.y,delete s.comment}if(n.comments)for(const[e,t]of Object.entries(n.comments)){const n=t.text;(n.includes(\" // _twconfig_\")||n.includes(\" // _gamepad_\"))&&(o[e]=t)}n.blocks=e,n.comments=o}return e.meta&&(delete e.meta.agent,delete e.meta.vm),e},K=n(5);const ee=async(e,t=()=>{},n)=>{let o={stageVariables:[],stageComments:[],usesMusic:!0,usesSteamworks:!1,extensions:[]};const s={signal:n,onProgress(e,n,o){t(e,n,o)},processJSON(e,t){if(\"sb3\"===e)return(e=>{(e=>{const t=e.targets.find((e=>e.isStage));if(t)for(const e of Object.values(t.variables)){const t=e[0];\"string\"==typeof t&&t.startsWith(\"☁\")&&(e[2]=!0)}})(e),(e=>{const t=[\"☁ potential reporters\"],n=e.targets.find((e=>e.isStage));if(n)for(const e of Object.values(n.variables))e[2]&&t.includes(e[0])&&(e[2]=!1)})(e),Q(e)})(t),o=(e=>{const t=e.targets[0];if(!t||!t.isStage)throw new Error(\"Project does not have stage\");return{stageVariables:[],stageComments:[],usesMusic:!0,usesSteamworks:!1,extensions:[],stageVariables:Object.values(t.variables).map((([e,t,n])=>({name:e,isCloud:!!n}))),stageComments:Object.values(t.comments).map((e=>e.text)),usesMusic:e.extensions.includes(\"music\"),usesSteamworks:e.extensions.includes(\"steamworks\"),extensions:e.extensionURLs?Object.values(e.extensionURLs):[]}})(t),t;\"sb2\"===e&&(o=(e=>{const t=(e.variables||[]).map((({name:e,isPersistent:t})=>({name:e,isCloud:t}))),n=JSON.stringify(e);return{stageVariables:[],stageComments:[],usesMusic:!0,usesSteamworks:!1,extensions:[],stageVariables:t,usesMusic:n.includes(\"drum:duration:elapsed:from:\")||n.includes(\"playDrum\")||n.includes(\"noteOn:duration:elapsed:from:\")}})(t))}},r=await Object(K.downloadProjectFromBuffer)(e,s);return\"sb3\"!==r.type&&(r.type=\"blob\"),r.analysis=o,r};var te=n(3),ne=n.n(te),oe=n(1),se=n.n(oe),re=n(2),ae=n(4),ie=n.n(ae),ce=n(6),le=n.p+\"290e09e569a1cab8e61ba93b0d23863f.png\";var de=class{constructor(e,t){this.mimeType=e,this.buffer=Buffer.from(t)}readAsURL(){return`data:${this.mimeType};base64,${this.buffer.toString(\"base64\")}`}readAsBuffer(){return this.buffer}};const pe=Object(re.promisify)(ne.a.readFile),ue=Object(re.promisify)(ne.a.writeFile),fe=Object(re.promisify)(ne.a.mkdir),he=(e,t)=>{e=se.a.join(e,\"/\");const n=se.a.join(e,t);return n.startsWith(e)?n:null},ge=se.a.join(__dirname,\"..\",\".packager-cache\");var me;me=new class{async getCachedAsset(e){const t=e.src,n=Array.isArray(t)?t[0]:t;if(n.startsWith(\"scaffolding/\")){const e=he(__dirname,n);if(e)return pe(e,\"utf-8\")}if(n.startsWith(\"https:\")){const t=await(async e=>{if(!e.sha256)return null;const t=he(ge,e.sha256);return t?(await fe(ge,{recursive:!0}),t):null})(e);if(t)try{return(o=await pe(t)).buffer.slice(o.byteOffset,o.byteOffset+o.byteLength)}catch(e){}console.log(`[${ce.a}]: downloading large asset ${n}; this may take a while`);const s=await ie()(n);if(!s.ok)throw new Error(`Unexpected status code: ${s.status}`);const r=await s.arrayBuffer();return t&&await ue(t,(e=>Buffer.from(e))(r)),r}var o}async cacheAsset(e,t){}async getAppIcon(e){if(!e){const e=await pe(se.a.join(__dirname,le));return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}if(e instanceof de){if(\"image/png\"===e.mimeType)return e.readAsBuffer();throw new Error(\"icon must be of type image/png but found \"+e.mimeType+\" instead.\")}throw new Error(\"file must be an instance of Packager.Image or null but found \"+e+\" instead.\")}readAsURL(e){if(!(e instanceof de))throw new Error(\"file must be an instance of Packager.Image but found \"+e+\" instead.\");return e.readAsURL()}fetchExtensionScript(e){return ie()(e).then((e=>{if(e.ok)return e.text();throw new Error(`Unexpected status code: ${e.status}`)}))}},O=me},function(e,t){e.exports=require(\"buffer\")},function(e,t){e.exports=n},function(e,t){e.exports=o}])}));"]}