diff --git a/_headers b/_headers index 7dd9d196..beea035e 100644 --- a/_headers +++ b/_headers @@ -3,7 +3,7 @@ Referrer-Policy: no-referrer Permissions-Policy: camera=(), microphone=(), geolocation=(), accelerometer=(), display-capture=(), browsing-topics=(), screen-wake-lock=() X-Content-Type-Options: nosniff - Content-Security-Policy: base-uri 'self'; font-src 'self'; style-src 'self'; script-src 'self'; worker-src 'self'; manifest-src 'self'; form-action 'self'; fenced-frame-src 'self'; img-src 'self' blob: https://cdn.discordapp.com https://www.googletagmanager.com; media-src 'self' https://cdn.discordapp.com; script-src-elem 'self' https://*.google.com https://*.firebaseio.com https://www.googletagmanager.com; script-src-attr 'self'; style-src-elem 'self' 'unsafe-inline'; style-src-attr 'self' 'unsafe-inline'; sandbox allow-forms allow-modals allow-pointer-lock allow-popups allow-same-origin allow-scripts; upgrade-insecure-requests + Content-Security-Policy: base-uri 'self'; font-src 'self'; style-src 'self'; script-src 'self'; worker-src 'self'; manifest-src 'self'; form-action 'self'; fenced-frame-src 'self'; media-src 'self' https://cdn.discordapp.com; script-src-elem 'self' https://*.google.com https://*.firebaseio.com https://www.googletagmanager.com; script-src-attr 'self'; style-src-elem 'self' 'unsafe-inline'; style-src-attr 'self' 'unsafe-inline'; sandbox allow-forms allow-modals allow-pointer-lock allow-popups allow-same-origin allow-scripts; upgrade-insecure-requests /r/*/ ! Content-Security-Policy diff --git a/common.css b/common.css index 17a9eb52..0888fb99 100644 --- a/common.css +++ b/common.css @@ -17,25 +17,16 @@ } ::-webkit-scrollbar { - height: 10px; width: 10px; } -::-webkit-scrollbar-track { - border-style: solid; - border-width: 1px; - border-color: #d0d0d0; - border-radius: 5px; - background: #ffffff; -} - ::-webkit-scrollbar-thumb { + background: #c0c0c0; border-radius: 5px; - background: #d0d0d0; } ::-webkit-scrollbar-thumb:hover { - background: #c0c0c0; + background: #b0b0b0; } ::-webkit-scrollbar-thumb:active { @@ -51,10 +42,10 @@ body { font-style: normal; font-family: "ubuntu", sans-serif; font-weight: 500; - overflow: hidden; color: #303030; + overflow: hidden; + background: #ffffff; accent-color: #005a5a; - background-color: #ffffff; } input, select, option, textarea, button { diff --git a/d/index.json b/d/index.json index 891e86e2..5603886c 100644 Binary files a/d/index.json and b/d/index.json differ diff --git a/index.css b/index.css index 2d249996..c7490bdf 100644 --- a/index.css +++ b/index.css @@ -1394,7 +1394,6 @@ div.user[vip="diamond"]::after { height: 90px; border: 1px solid #808080; border-radius: 10px; - background: #ffffff; } #ch-avatar { @@ -1445,7 +1444,6 @@ div.user[vip="diamond"]::after { width: fit-content; height: 24px; margin: 0px 5px; - color: #000000; font-size: 13px; font-weight: 600; line-height: 24px; @@ -2076,6 +2074,20 @@ div.user[vip="diamond"]::after { vertical-align: top; } +#dlink, #ecode { + position: relative; + display: block; + width: calc(100% - 20px); + height: fit-content; + padding: 10px; + outline: 1px solid #808080; + font-size: 13px; + font-weight: 400; + font-family: "Ubuntu Mono", monospace; + line-height: 18px; + letter-spacing: 0px; +} + @media all and (max-width: 600px) { #hamb { position: relative; diff --git a/index.dark.css b/index.dark.css index 6702a4f5..6eaf0aa9 100644 --- a/index.dark.css +++ b/index.dark.css @@ -121,14 +121,35 @@ option, optgroup { background-color: #808080; } -#address, #mode>select { +#address, #mode>select, #ac-prof { background: #202020; } -#game { - background: #404040; +#ac-edit { + background-image: url("res/edit-w.svg"); } -#glink, #ulink { +#ac-link { background-image: url("res/link-w.svg"); } + +#install { + border: 1px solid #00c0c0; + background: #202020; +} + +#install:hover { + background: #303030; +} + +#install:active { + background: #404040; +} + +#install>span { + color: #00c0c0; +} + +#game { + background: #404040; +} diff --git a/index.html b/index.html index b27638d0..81dee5c0 100644 --- a/index.html +++ b/index.html @@ -530,12 +530,12 @@

Settings

We are working hard to improve your user experience.
- - - - - - + GitHub + Discord + Reddit + YouTube + Facebook + Instagram
Feedback
@@ -575,29 +575,34 @@

Settings

-

Example

+


Type: - HTML5 +
Tags: - example,game +
Date Added: - 01/01/2023 +
Uploaded by:

About this game

-

Example

+

-

Keyboard input not working?

-
Click anywhere inside the game's frame to focus it, then keyboard input should function properly.
-
If you have other issues with this game, please send a feedback with the link in the footer.
+

Add to your website

+
Direct Link:
+ +
Embed Code:
+
+
+

Comments

+
Coming soon!
diff --git a/main.js b/main.js index ecc707ba..e0e32020 100644 --- a/main.js +++ b/main.js @@ -1,4 +1,4 @@ /*! Copyright (C) 2024 WhiteSpider Dev. All rights reserved. Source: https://whitespider.dev/ !*/ "use strict"; / Created by WhiteSpider Dev. DO NOT remove this comment!!! This will break integrity checks! /; /*! For license information please see out.js.LICENSE.txt */ -(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})}};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var t={};e.r(t),e.d(t,{Decoder:()=>me,Encoder:()=>pe,PacketType:()=>ue,protocol:()=>he});var n={};e.r(n),e.d(n,{decode:()=>rl,encode:()=>tl});const r=Object.create(null);r.open="0",r.close="1",r.ping="2",r.pong="3",r.message="4",r.upgrade="5",r.noop="6";const i=Object.create(null);Object.keys(r).forEach((e=>{i[r[e]]=e}));const s={type:"error",data:"parser error"},o="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),a="function"==typeof ArrayBuffer,c=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,l=({type:e,data:t},n,i)=>o&&t instanceof Blob?n?i(t):d(t,i):a&&(t instanceof ArrayBuffer||c(t))?n?i(t):d(new Blob([t]),i):i(r[e]+(t||"")),d=(e,t)=>{const n=new FileReader;return n.onload=function(){const e=n.result.split(",")[1];t("b"+(e||""))},n.readAsDataURL(e)};function h(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let u;const p="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)p["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(e)]=e;const f="function"==typeof ArrayBuffer,m=(e,t)=>{if("string"!=typeof e)return{type:"message",data:b(e,t)};const n=e.charAt(0);return"b"===n?{type:"message",data:g(e.substring(1),t)}:i[n]?e.length>1?{type:i[n],data:e.substring(1)}:{type:i[n]}:s},g=(e,t)=>{if(f){const n=(e=>{let t,n,r,i,s,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);const l=new ArrayBuffer(o),d=new Uint8Array(l);for(t=0;t>4,d[c++]=(15&r)<<4|i>>2,d[c++]=(3&i)<<6|63&s;return l})(e);return b(n,t)}return{base64:!0,data:e}},b=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,w=String.fromCharCode(30);let y;function v(e){return e.reduce(((e,t)=>e+t.length),0)}function _(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let i=0;i(e.hasOwnProperty(n)&&(t[n]=e[n]),t)),{})}const A=E.setTimeout,C=E.clearTimeout;function T(e,t){t.useNativeTimers?(e.setTimeoutFn=A.bind(E),e.clearTimeoutFn=C.bind(E)):(e.setTimeoutFn=E.setTimeout.bind(E),e.clearTimeoutFn=E.clearTimeout.bind(E))}class S extends Error{constructor(e,t,n){super(e),this.description=t,this.context=n,this.type="TransportError"}}class I extends k{constructor(e){super(),this.writable=!1,T(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,n){return super.emitReserved("error",new S(e,t,n)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=m(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}(e);return t.length?"?"+t:""}}const j="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),L=64,O={};let D,R=0,B=0;function z(e){let t="";do{t=j[e%L]+t,e=Math.floor(e/L)}while(e>0);return t}function N(){const e=z(+new Date);return e!==D?(R=0,D=e):e+"."+z(R++)}for(;B{var e;3===n.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(n)),4===n.readyState&&(200===n.status||1223===n.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof n.status?n.status:0)}),0))},n.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=H.requestsCount++,H.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=F,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete H.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}function q(){for(let e in H.requests)H.requests.hasOwnProperty(e)&&H.requests[e].abort()}H.requestsCount=0,H.requests={},"undefined"!=typeof document&&("function"==typeof attachEvent?attachEvent("onunload",q):"function"==typeof addEventListener&&addEventListener("onpagehide"in E?"pagehide":"unload",q,!1));const V="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),W=E.WebSocket||E.MozWebSocket,Z="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),K={websocket:class extends I{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,n=Z?{}:x(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=Z?new W(e,t,n):t?new W(e,t):new W(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t{try{this.ws.send(e)}catch(e){}r&&V((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=N()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!W}},webtransport:class extends I{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){y||(y=new TextDecoder);const n=[];let r=0,i=-1,o=!1;return new TransformStream({transform(a,c){for(n.push(a);;){if(0===r){if(v(n)<1)break;const e=_(n,1);o=!(128&~e[0]),i=127&e[0],r=i<126?3:126===i?1:2}else if(1===r){if(v(n)<2)break;const e=_(n,2);i=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),r=3}else if(2===r){if(v(n)<8)break;const e=_(n,8),t=new DataView(e.buffer,e.byteOffset,e.length),o=t.getUint32(0);if(o>Math.pow(2,21)-1){c.enqueue(s);break}i=o*Math.pow(2,32)+t.getUint32(4),r=3}else{if(v(n)e){c.enqueue(s);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=e.readable.pipeThrough(t).getReader(),r=new TransformStream({transform(e,t){!function(e,t){o&&e.data instanceof Blob?e.data.arrayBuffer().then(h).then(t):a&&(e.data instanceof ArrayBuffer||c(e.data))?t(h(e.data)):l(e,!1,(e=>{u||(u=new TextEncoder),t(u.encode(e))}))}(e,(n=>{const r=n.length;let i;if(r<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,r);else if(r<65536){i=new Uint8Array(3);const e=new DataView(i.buffer);e.setUint8(0,126),e.setUint16(1,r)}else{i=new Uint8Array(9);const e=new DataView(i.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(r))}e.data&&"string"!=typeof e.data&&(i[0]|=128),t.enqueue(i),t.enqueue(n)}))}});r.readable.pipeTo(e.writable),this.writer=r.writable.getWriter();const i=()=>{n.read().then((({done:e,value:t})=>{e||(this.onPacket(t),i())})).catch((e=>{}))};i();const d={type:"open"};this.query.sid&&(d.data=`{"sid":"${this.query.sid}"}`),this.writer.write(d).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t{r&&V((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends I{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let n=location.port;n||(n=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||n!==e.port}const t=e&&e.forceBase64;this.supportsBinary=$&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const n=e.split(w),r=[];for(let e=0;e{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const n=e.length,r=new Array(n);let i=0;e.forEach(((e,s)=>{l(e,!1,(e=>{r[s]=e,++i===n&&t(r.join(w))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=N()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new H(this.uri(),e)}doWrite(e,t){const n=this.request({method:"POST",data:e});n.on("success",t),n.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},G=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Y=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function J(e){if(e.length>2e3)throw"URI too long";const t=e,n=e.indexOf("["),r=e.indexOf("]");-1!=n&&-1!=r&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let i=G.exec(e||""),s={},o=14;for(;o--;)s[Y[o]]=i[o]||"";return-1!=n&&-1!=r&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(e,t){const n=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||n.splice(0,1),"/"==t.slice(-1)&&n.splice(n.length-1,1),n}(0,s.path),s.queryKey=function(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(n[t]=r)})),n}(0,s.query),s}class X extends k{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=J(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=J(t.host).host),T(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},n=e.split("&");for(let e=0,r=n.length;e{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const n=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new K[e](n)}open(){let e;if(this.opts.rememberUpgrade&&X.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(e){let t=this.createTransport(e),n=!1;X.priorWebsocketSuccess=!1;const r=()=>{n||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!n)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;X.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{n||"closed"!==this.readyState&&(l(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function i(){n||(n=!0,l(),t.close(),t=null)}const s=e=>{const n=new Error("probe error: "+e);n.transport=t.name,i(),this.emitReserved("upgradeError",n)};function o(){s("transport closed")}function a(){s("socket closed")}function c(e){t&&e.name!==t.name&&i()}const l=()=>{t.removeListener("open",r),t.removeListener("error",s),t.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};t.once("open",r),t.once("error",s),t.once("close",o),this.once("close",a),this.once("upgrading",c),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==e?this.setTimeoutFn((()=>{n||t.open()}),200):t.open()}onOpen(){if(this.readyState="open",X.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let n=0;n=57344?n+=3:(r++,n+=4);return n}(t):Math.ceil(1.33*(t.byteLength||t.size))),n>0&&e>this.maxPayload)return this.writeBuffer.slice(0,n);e+=2}var t;return this.writeBuffer}write(e,t,n){return this.sendPacket("message",e,t,n),this}send(e,t,n){return this.sendPacket("message",e,t,n),this}sendPacket(e,t,n,r){if("function"==typeof t&&(r=t,t=void 0),"function"==typeof n&&(r=n,n=null),"closing"===this.readyState||"closed"===this.readyState)return;(n=n||{}).compress=!1!==n.compress;const i={type:e,data:t,options:n};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),r&&this.once("flush",r),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},n=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?n():e()})):this.upgrading?n():e()),this}onError(e){X.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let n=0;const r=e.length;for(;n"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,te=Object.prototype.toString,ne="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===te.call(Blob),re="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===te.call(File);function ie(e){return Q&&(e instanceof ArrayBuffer||ee(e))||ne&&e instanceof Blob||re&&e instanceof File}function se(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,n=e.length;t=0&&e.num{delete this.acks[e];for(let t=0;t{this.io.clearTimeoutFn(i),t.apply(this,e)};s.withError=!0,this.acks[e]=s}emitWithAck(e,...t){return new Promise(((n,r)=>{const i=(e,t)=>e?r(e):n(t);i.withError=!0,t.push(i),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...r)=>{if(n===this._queue[0])return null!==e?n.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...r)),n.pending=!1,this._drainQueue()})),this._queue.push(n),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:ue.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach((e=>{if(!this.sendBuffer.some((t=>String(t.id)===e))){const t=this.acks[e];delete this.acks[e],t.withError&&t.call(this,new Error("socket has been disconnected"))}}))}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case ue.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case ue.EVENT:case ue.BINARY_EVENT:this.onevent(e);break;case ue.ACK:case ue.BINARY_ACK:this.onack(e);break;case ue.DISCONNECT:this.ondisconnect();break;case ue.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const n of t)n.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let n=!1;return function(...r){n||(n=!0,t.packet({type:ue.ACK,id:e,data:r}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:ue.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let n=0;n0&&e.jitter<=1?e.jitter:0,this.attempts=0}ve.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=1&Math.floor(10*t)?e+n:e-n}return 0|Math.min(e,this.max)},ve.prototype.reset=function(){this.attempts=0},ve.prototype.setMin=function(e){this.ms=e},ve.prototype.setMax=function(e){this.max=e},ve.prototype.setJitter=function(e){this.jitter=e};class _e extends k{constructor(e,n){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(n=e,e=void 0),(n=n||{}).path=n.path||"/socket.io",this.opts=n,T(this,n),this.reconnection(!1!==n.reconnection),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=n.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new ve({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==n.timeout?2e4:n.timeout),this._readyState="closed",this.uri=e;const i=n.parser||t;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==n.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new X(this.uri,this.opts);const t=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const r=be(t,"open",(function(){n.onopen(),e&&e()})),i=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},s=be(t,"error",i);if(!1!==this._timeout){const e=this._timeout,n=this.setTimeoutFn((()=>{r(),i(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}return this.subs.push(r),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(be(e,"ping",this.onping.bind(this)),be(e,"data",this.ondata.bind(this)),be(e,"error",this.onerror.bind(this)),be(e,"close",this.onclose.bind(this)),be(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){V((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let n=this.nsps[e];return n?this._autoConnect&&!n.active&&n.connect():(n=new ye(this,e,t),this.nsps[e]=n),n}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return;this._close()}_packet(e){const t=this.encoder.encode(e);for(let n=0;ne())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const ke={};function Ee(e,t){"object"==typeof e&&(t=e,e=void 0);const n=function(e,t="",n){let r=e;n=n||"undefined"!=typeof location&&location,null==e&&(e=n.protocol+"//"+n.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?n.protocol+e:n.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==n?n.protocol+"//"+e:"https://"+e),r=J(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const i=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+i+":"+r.port+t,r.href=r.protocol+"://"+i+(n&&n.port===r.port?"":":"+r.port),r}(e,(t=t||{}).path||"/socket.io"),r=n.source,i=n.id,s=n.path,o=ke[i]&&s in ke[i].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new _e(r,t):(ke[i]||(ke[i]=new _e(r,t)),a=ke[i]),n.query&&!t.query&&(t.query=n.queryKey),a.socket(n.path,t)}Object.assign(Ee,{Manager:_e,Socket:ye,io:Ee,connect:Ee});const xe=function(e){const t=[];let n=0;for(let r=0;r>6|192,t[n++]=63&i|128):55296==(64512&i)&&r+1>18|240,t[n++]=i>>12&63|128,t[n++]=i>>6&63|128,t[n++]=63&i|128):(t[n++]=i>>12|224,t[n++]=i>>6&63|128,t[n++]=63&i|128)}return t},Ae={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray(e,t){if(!Array.isArray(e))throw Error("encodeByteArray takes an array as a parameter");this.init_();const n=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,r=[];for(let t=0;t>2,d=(3&i)<<4|o>>4;let h=(15&o)<<2|c>>6,u=63&c;a||(u=64,s||(h=64)),r.push(n[l],n[d],n[h],n[u])}return r.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(xe(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):function(e){const t=[];let n=0,r=0;for(;n191&&i<224){const s=e[n++];t[r++]=String.fromCharCode((31&i)<<6|63&s)}else if(i>239&&i<365){const s=((7&i)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536;t[r++]=String.fromCharCode(55296+(s>>10)),t[r++]=String.fromCharCode(56320+(1023&s))}else{const s=e[n++],o=e[n++];t[r++]=String.fromCharCode((15&i)<<12|(63&s)<<6|63&o)}}return t.join("")}(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();const n=t?this.charToByteMapWebSafe_:this.charToByteMap_,r=[];for(let t=0;t>4;if(r.push(c),64!==o){const e=s<<4&240|o>>2;if(r.push(e),64!==a){const e=o<<6&192|a;r.push(e)}}}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let e=0;e=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}};class Ce extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const Te=function(e){return function(e){const t=xe(e);return Ae.encodeByteArray(t,!0)}(e).replace(/\./g,"")},Se=()=>{try{return function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==e.g)return e.g;throw new Error("Unable to locate global object.")}().__FIREBASE_DEFAULTS__||(()=>{if("undefined"==typeof process||void 0===process.env)return;const e=process.env.__FIREBASE_DEFAULTS__;return e?JSON.parse(e):void 0})()||(()=>{if("undefined"==typeof document)return;let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(e){return}const t=e&&function(e){try{return Ae.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null}(e[1]);return t&&JSON.parse(t)})()}catch(e){return void console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`)}},Ie=()=>{var e;return null===(e=Se())||void 0===e?void 0:e.config};class je{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}wrapCallback(e){return(t,n)=>{t?this.reject(t):this.resolve(n),"function"==typeof e&&(this.promise.catch((()=>{})),1===e.length?e(t):e(t,n))}}}function Le(){try{return"object"==typeof indexedDB}catch(e){return!1}}function Oe(){return new Promise(((e,t)=>{try{let n=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),n||self.indexedDB.deleteDatabase(r),e(!0)},i.onupgradeneeded=()=>{n=!1},i.onerror=()=>{var e;t((null===(e=i.error)||void 0===e?void 0:e.message)||"")}}catch(e){t(e)}}))}class De extends Error{constructor(e,t,n){super(t),this.code=e,this.customData=n,this.name="FirebaseError",Object.setPrototypeOf(this,De.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,Re.prototype.create)}}class Re{constructor(e,t,n){this.service=e,this.serviceName=t,this.errors=n}create(e,...t){const n=t[0]||{},r=`${this.service}/${e}`,i=this.errors[e],s=i?function(e,t){return e.replace(Be,((e,n)=>{const r=t[n];return null!=r?String(r):`<${n}?>`}))}(i,n):"Error",o=`${this.serviceName}: ${s} (${r}).`;return new De(r,o,n)}}const Be=/\{\$([^}]+)}/g;function ze(e,t){if(e===t)return!0;const n=Object.keys(e),r=Object.keys(t);for(const i of n){if(!r.includes(i))return!1;const n=e[i],s=t[i];if(Ne(n)&&Ne(s)){if(!ze(n,s))return!1}else if(n!==s)return!1}for(const e of r)if(!n.includes(e))return!1;return!0}function Ne(e){return null!==e&&"object"==typeof e}const Pe=1e3,Ue=2,Me=144e5,Fe=.5;function $e(e,t=Pe,n=Ue){const r=t*Math.pow(n,e),i=Math.round(Fe*r*(Math.random()-.5)*2);return Math.min(Me,r+i)}function He(e){return e&&e._delegate?e._delegate:e}class qe{constructor(e,t,n){this.name=e,this.instanceFactory=t,this.type=n,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}const Ve="[DEFAULT]";class We{constructor(e,t){this.name=e,this.container=t,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){const t=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(t)){const e=new je;if(this.instancesDeferred.set(t,e),this.isInitialized(t)||this.shouldAutoInitialize())try{const n=this.getOrInitializeService({instanceIdentifier:t});n&&e.resolve(n)}catch(e){}}return this.instancesDeferred.get(t).promise}getImmediate(e){var t;const n=this.normalizeInstanceIdentifier(null==e?void 0:e.identifier),r=null!==(t=null==e?void 0:e.optional)&&void 0!==t&&t;if(!this.isInitialized(n)&&!this.shouldAutoInitialize()){if(r)return null;throw Error(`Service ${this.name} is not available`)}try{return this.getOrInitializeService({instanceIdentifier:n})}catch(e){if(r)return null;throw e}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,this.shouldAutoInitialize()){if(function(e){return"EAGER"===e.instantiationMode}(e))try{this.getOrInitializeService({instanceIdentifier:Ve})}catch(e){}for(const[e,t]of this.instancesDeferred.entries()){const n=this.normalizeInstanceIdentifier(e);try{const e=this.getOrInitializeService({instanceIdentifier:n});t.resolve(e)}catch(e){}}}}clearInstance(e=Ve){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter((e=>"INTERNAL"in e)).map((e=>e.INTERNAL.delete())),...e.filter((e=>"_delete"in e)).map((e=>e._delete()))])}isComponentSet(){return null!=this.component}isInitialized(e=Ve){return this.instances.has(e)}getOptions(e=Ve){return this.instancesOptions.get(e)||{}}initialize(e={}){const{options:t={}}=e,n=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(n))throw Error(`${this.name}(${n}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const r=this.getOrInitializeService({instanceIdentifier:n,options:t});for(const[e,t]of this.instancesDeferred.entries())n===this.normalizeInstanceIdentifier(e)&&t.resolve(r);return r}onInit(e,t){var n;const r=this.normalizeInstanceIdentifier(t),i=null!==(n=this.onInitCallbacks.get(r))&&void 0!==n?n:new Set;i.add(e),this.onInitCallbacks.set(r,i);const s=this.instances.get(r);return s&&e(s,r),()=>{i.delete(e)}}invokeOnInitCallbacks(e,t){const n=this.onInitCallbacks.get(t);if(n)for(const r of n)try{r(e,t)}catch(e){}}getOrInitializeService({instanceIdentifier:e,options:t={}}){let n=this.instances.get(e);if(!n&&this.component&&(n=this.component.instanceFactory(this.container,{instanceIdentifier:(r=e,r===Ve?void 0:r),options:t}),this.instances.set(e,n),this.instancesOptions.set(e,t),this.invokeOnInitCallbacks(n,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,n)}catch(e){}var r;return n||null}normalizeInstanceIdentifier(e=Ve){return this.component?this.component.multipleInstances?e:Ve:e}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class Ze{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const t=this.getProvider(e.name);if(t.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);const t=new We(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}const Ke=[];var Ge;!function(e){e[e.DEBUG=0]="DEBUG",e[e.VERBOSE=1]="VERBOSE",e[e.INFO=2]="INFO",e[e.WARN=3]="WARN",e[e.ERROR=4]="ERROR",e[e.SILENT=5]="SILENT"}(Ge||(Ge={}));const Ye={debug:Ge.DEBUG,verbose:Ge.VERBOSE,info:Ge.INFO,warn:Ge.WARN,error:Ge.ERROR,silent:Ge.SILENT},Je=Ge.INFO,Xe={[Ge.DEBUG]:"log",[Ge.VERBOSE]:"log",[Ge.INFO]:"info",[Ge.WARN]:"warn",[Ge.ERROR]:"error"},Qe=(e,t,...n)=>{if(tt.some((t=>e instanceof t));let nt,rt;const it=new WeakMap,st=new WeakMap,ot=new WeakMap,at=new WeakMap,ct=new WeakMap;let lt={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return st.get(e);if("objectStoreNames"===t)return e.objectStoreNames||ot.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return ht(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function dt(e){return"function"==typeof e?(t=e)!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(rt||(rt=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(ut(this),e),ht(it.get(this))}:function(...e){return ht(t.apply(ut(this),e))}:function(e,...n){const r=t.call(ut(this),e,...n);return ot.set(r,e.sort?e.sort():[e]),ht(r)}:(e instanceof IDBTransaction&&function(e){if(st.has(e))return;const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("complete",i),e.removeEventListener("error",s),e.removeEventListener("abort",s)},i=()=>{t(),r()},s=()=>{n(e.error||new DOMException("AbortError","AbortError")),r()};e.addEventListener("complete",i),e.addEventListener("error",s),e.addEventListener("abort",s)}));st.set(e,t)}(e),tt(e,nt||(nt=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,lt):e);var t}function ht(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("success",i),e.removeEventListener("error",s)},i=()=>{t(ht(e.result)),r()},s=()=>{n(e.error),r()};e.addEventListener("success",i),e.addEventListener("error",s)}));return t.then((t=>{t instanceof IDBCursor&&it.set(t,e)})).catch((()=>{})),ct.set(t,e),t}(e);if(at.has(e))return at.get(e);const t=dt(e);return t!==e&&(at.set(e,t),ct.set(t,e)),t}const ut=e=>ct.get(e);function pt(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const o=indexedDB.open(e,t),a=ht(o);return r&&o.addEventListener("upgradeneeded",(e=>{r(ht(o.result),e.oldVersion,e.newVersion,ht(o.transaction),e)})),n&&o.addEventListener("blocked",(e=>n(e.oldVersion,e.newVersion,e))),a.then((e=>{s&&e.addEventListener("close",(()=>s())),i&&e.addEventListener("versionchange",(e=>i(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),a}const ft=["get","getKey","getAll","getAllKeys","count"],mt=["put","add","delete","clear"],gt=new Map;function bt(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(gt.get(t))return gt.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=mt.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!i&&!ft.includes(n))return;const s=async function(e,...t){const s=this.transaction(e,i?"readwrite":"readonly");let o=s.store;return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),i&&s.done]))[0]};return gt.set(t,s),s}var wt;wt=lt,lt={...wt,get:(e,t,n)=>bt(e,t)||wt.get(e,t,n),has:(e,t)=>!!bt(e,t)||wt.has(e,t)};class yt{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map((e=>{if(function(e){const t=e.getComponent();return"VERSION"===(null==t?void 0:t.type)}(e)){const t=e.getImmediate();return`${t.library}/${t.version}`}return null})).filter((e=>e)).join(" ")}}const vt="@firebase/app",_t="0.10.4",kt=new et("@firebase/app"),Et="@firebase/app-compat",xt="@firebase/analytics-compat",At="@firebase/analytics",Ct="@firebase/app-check-compat",Tt="@firebase/app-check",St="@firebase/auth",It="@firebase/auth-compat",jt="@firebase/database",Lt="@firebase/database-compat",Ot="@firebase/functions",Dt="@firebase/functions-compat",Rt="@firebase/installations",Bt="@firebase/installations-compat",zt="@firebase/messaging",Nt="@firebase/messaging-compat",Pt="@firebase/performance",Ut="@firebase/performance-compat",Mt="@firebase/remote-config",Ft="@firebase/remote-config-compat",$t="@firebase/storage",Ht="@firebase/storage-compat",qt="@firebase/firestore",Vt="@firebase/vertexai-preview",Wt="@firebase/firestore-compat",Zt="firebase",Kt="[DEFAULT]",Gt={[vt]:"fire-core",[Et]:"fire-core-compat",[At]:"fire-analytics",[xt]:"fire-analytics-compat",[Tt]:"fire-app-check",[Ct]:"fire-app-check-compat",[St]:"fire-auth",[It]:"fire-auth-compat",[jt]:"fire-rtdb",[Lt]:"fire-rtdb-compat",[Ot]:"fire-fn",[Dt]:"fire-fn-compat",[Rt]:"fire-iid",[Bt]:"fire-iid-compat",[zt]:"fire-fcm",[Nt]:"fire-fcm-compat",[Pt]:"fire-perf",[Ut]:"fire-perf-compat",[Mt]:"fire-rc",[Ft]:"fire-rc-compat",[$t]:"fire-gcs",[Ht]:"fire-gcs-compat",[qt]:"fire-fst",[Wt]:"fire-fst-compat",[Vt]:"fire-vertex","fire-js":"fire-js",[Zt]:"fire-js-all"},Yt=new Map,Jt=new Map,Xt=new Map;function Qt(e,t){try{e.container.addComponent(t)}catch(n){kt.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,n)}}function en(e){const t=e.name;if(Xt.has(t))return kt.debug(`There were multiple attempts to register component ${t}.`),!1;Xt.set(t,e);for(const t of Yt.values())Qt(t,e);for(const t of Jt.values())Qt(t,e);return!0}function tn(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}const nn=new Re("app","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}'","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","server-app-deleted":"Firebase Server App has been deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.","finalization-registry-not-supported":"FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.","invalid-server-app-environment":"FirebaseServerApp is not for use in browser environments."});class rn{constructor(e,t,n){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},t),this._name=t.name,this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled,this._container=n,this.container.addComponent(new qe("app",(()=>this),"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw nn.create("app-deleted",{appName:this._name})}}function sn(e,t={}){let n=e;"object"!=typeof t&&(t={name:t});const r=Object.assign({name:Kt,automaticDataCollectionEnabled:!1},t),i=r.name;if("string"!=typeof i||!i)throw nn.create("bad-app-name",{appName:String(i)});if(n||(n=Ie()),!n)throw nn.create("no-options");const s=Yt.get(i);if(s){if(ze(n,s.options)&&ze(r,s.config))return s;throw nn.create("duplicate-app",{appName:i})}const o=new Ze(i);for(const e of Xt.values())o.addComponent(e);const a=new rn(n,r,o);return Yt.set(i,a),a}function on(e,t,n){var r;let i=null!==(r=Gt[e])&&void 0!==r?r:e;n&&(i+=`-${n}`);const s=i.match(/\s|\//),o=t.match(/\s|\//);if(s||o){const e=[`Unable to register library "${i}" with version "${t}":`];return s&&e.push(`library name "${i}" contains illegal characters (whitespace or "/")`),s&&o&&e.push("and"),o&&e.push(`version name "${t}" contains illegal characters (whitespace or "/")`),void kt.warn(e.join(" "))}en(new qe(`${i}-version`,(()=>({library:i,version:t})),"VERSION"))}const an="firebase-heartbeat-database",cn=1,ln="firebase-heartbeat-store";let dn=null;function hn(){return dn||(dn=pt(an,cn,{upgrade:(e,t)=>{if(0===t)try{e.createObjectStore(ln)}catch(e){console.warn(e)}}}).catch((e=>{throw nn.create("idb-open",{originalErrorMessage:e.message})}))),dn}async function un(e,t){try{const n=(await hn()).transaction(ln,"readwrite"),r=n.objectStore(ln);await r.put(t,pn(e)),await n.done}catch(e){if(e instanceof De)kt.warn(e.message);else{const t=nn.create("idb-set",{originalErrorMessage:null==e?void 0:e.message});kt.warn(t.message)}}}function pn(e){return`${e.name}!${e.options.appId}`}class fn{constructor(e){this.container=e,this._heartbeatsCache=null;const t=this.container.getProvider("app").getImmediate();this._storage=new gn(t),this._heartbeatsCachePromise=this._storage.read().then((e=>(this._heartbeatsCache=e,e)))}async triggerHeartbeat(){var e,t;const n=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),r=mn();if((null!=(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)||(this._heartbeatsCache=await this._heartbeatsCachePromise,null!=(null===(t=this._heartbeatsCache)||void 0===t?void 0:t.heartbeats)))&&this._heartbeatsCache.lastSentHeartbeatDate!==r&&!this._heartbeatsCache.heartbeats.some((e=>e.date===r)))return this._heartbeatsCache.heartbeats.push({date:r,agent:n}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter((e=>{const t=new Date(e.date).valueOf();return Date.now()-t<=2592e6})),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){var e;if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,null==(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)||0===this._heartbeatsCache.heartbeats.length)return"";const t=mn(),{heartbeatsToSend:n,unsentEntries:r}=function(e,t=1024){const n=[];let r=e.slice();for(const i of e){const e=n.find((e=>e.agent===i.agent));if(e){if(e.dates.push(i.date),bn(n)>t){e.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),bn(n)>t){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}(this._heartbeatsCache.heartbeats),i=Te(JSON.stringify({version:2,heartbeats:n}));return this._heartbeatsCache.lastSentHeartbeatDate=t,r.length>0?(this._heartbeatsCache.heartbeats=r,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}}function mn(){return(new Date).toISOString().substring(0,10)}class gn{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return!!Le()&&Oe().then((()=>!0)).catch((()=>!1))}async read(){if(await this._canUseIndexedDBPromise){const e=await async function(e){try{const t=(await hn()).transaction(ln),n=await t.objectStore(ln).get(pn(e));return await t.done,n}catch(e){if(e instanceof De)kt.warn(e.message);else{const t=nn.create("idb-get",{originalErrorMessage:null==e?void 0:e.message});kt.warn(t.message)}}}(this.app);return(null==e?void 0:e.heartbeats)?e:{heartbeats:[]}}return{heartbeats:[]}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){const n=await this.read();return un(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:e.heartbeats})}}async add(e){var t;if(await this._canUseIndexedDBPromise){const n=await this.read();return un(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:[...n.heartbeats,...e.heartbeats]})}}}function bn(e){return Te(JSON.stringify({version:2,heartbeats:e})).length}en(new qe("platform-logger",(e=>new yt(e)),"PRIVATE")),en(new qe("heartbeat",(e=>new fn(e)),"PRIVATE")),on(vt,_t,""),on(vt,_t,"esm2017"),on("fire-js",""),on("firebase","10.12.1","app");const wn="@firebase/installations",yn="0.6.7",vn=1e4,_n=`w:${yn}`,kn="FIS_v2",En="https://firebaseinstallations.googleapis.com/v1",xn=36e5,An=new Re("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function Cn(e){return e instanceof De&&e.code.includes("request-failed")}function Tn({projectId:e}){return`${En}/projects/${e}/installations`}function Sn(e){return{token:e.token,requestStatus:2,expiresIn:(t=e.expiresIn,Number(t.replace("s","000"))),creationTime:Date.now()};var t}async function In(e,t){const n=(await t.json()).error;return An.create("request-failed",{requestName:e,serverCode:n.code,serverMessage:n.message,serverStatus:n.status})}function jn({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}async function Ln(e){const t=await e();return t.status>=500&&t.status<600?e():t}function On(e){return new Promise((t=>{setTimeout(t,e)}))}const Dn=/^[cdef][\w-]{21}$/,Rn="";function Bn(){try{const e=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16;const t=function(e){var t;return(t=e,btoa(String.fromCharCode(...t)).replace(/\+/g,"-").replace(/\//g,"_")).substr(0,22)}(e);return Dn.test(t)?t:Rn}catch(e){return Rn}}function zn(e){return`${e.appName}!${e.appId}`}const Nn=new Map;function Pn(e,t){const n=zn(e);Un(n,t),function(e,t){const n=(!Mn&&"BroadcastChannel"in self&&(Mn=new BroadcastChannel("[Firebase] FID Change"),Mn.onmessage=e=>{Un(e.data.key,e.data.fid)}),Mn);n&&n.postMessage({key:e,fid:t}),0===Nn.size&&Mn&&(Mn.close(),Mn=null)}(n,t)}function Un(e,t){const n=Nn.get(e);if(n)for(const e of n)e(t)}let Mn=null;const Fn="firebase-installations-database",$n=1,Hn="firebase-installations-store";let qn=null;function Vn(){return qn||(qn=pt(Fn,$n,{upgrade:(e,t)=>{0===t&&e.createObjectStore(Hn)}})),qn}async function Wn(e,t){const n=zn(e),r=(await Vn()).transaction(Hn,"readwrite"),i=r.objectStore(Hn),s=await i.get(n);return await i.put(t,n),await r.done,s&&s.fid===t.fid||Pn(e,t.fid),t}async function Zn(e){const t=zn(e),n=(await Vn()).transaction(Hn,"readwrite");await n.objectStore(Hn).delete(t),await n.done}async function Kn(e,t){const n=zn(e),r=(await Vn()).transaction(Hn,"readwrite"),i=r.objectStore(Hn),s=await i.get(n),o=t(s);return void 0===o?await i.delete(n):await i.put(o,n),await r.done,!o||s&&s.fid===o.fid||Pn(e,o.fid),o}async function Gn(e){let t;const n=await Kn(e.appConfig,(n=>{const r=function(e){return Xn(e||{fid:Bn(),registrationStatus:0})}(n),i=function(e,t){if(0===t.registrationStatus){if(!navigator.onLine)return{installationEntry:t,registrationPromise:Promise.reject(An.create("app-offline"))};const n={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},r=async function(e,t){try{const n=await async function({appConfig:e,heartbeatServiceProvider:t},{fid:n}){const r=Tn(e),i=jn(e),s=t.getImmediate({optional:!0});if(s){const e=await s.getHeartbeatsHeader();e&&i.append("x-firebase-client",e)}const o={fid:n,authVersion:kn,appId:e.appId,sdkVersion:_n},a={method:"POST",headers:i,body:JSON.stringify(o)},c=await Ln((()=>fetch(r,a)));if(c.ok){const e=await c.json();return{fid:e.fid||n,registrationStatus:2,refreshToken:e.refreshToken,authToken:Sn(e.authToken)}}throw await In("Create Installation",c)}(e,t);return Wn(e.appConfig,n)}catch(n){throw Cn(n)&&409===n.customData.serverCode?await Zn(e.appConfig):await Wn(e.appConfig,{fid:t.fid,registrationStatus:0}),n}}(e,n);return{installationEntry:n,registrationPromise:r}}return 1===t.registrationStatus?{installationEntry:t,registrationPromise:Yn(e)}:{installationEntry:t}}(e,r);return t=i.registrationPromise,i.installationEntry}));return n.fid===Rn?{installationEntry:await t}:{installationEntry:n,registrationPromise:t}}async function Yn(e){let t=await Jn(e.appConfig);for(;1===t.registrationStatus;)await On(100),t=await Jn(e.appConfig);if(0===t.registrationStatus){const{installationEntry:t,registrationPromise:n}=await Gn(e);return n||t}return t}function Jn(e){return Kn(e,(e=>{if(!e)throw An.create("installation-not-found");return Xn(e)}))}function Xn(e){return 1===(t=e).registrationStatus&&t.registrationTime+vnfetch(r,a)));if(c.ok)return Sn(await c.json());throw await In("Generate Auth Token",c)}async function er(e,t=!1){let n;const r=await Kn(e.appConfig,(r=>{if(!nr(r))throw An.create("not-registered");const i=r.authToken;if(!t&&(2===(s=i).requestStatus&&!function(e){const t=Date.now();return t{if(!nr(e))throw An.create("not-registered");return 1===(t=e.authToken).requestStatus&&t.requestTime+vn{const t=e.getProvider("app").getImmediate(),n=function(e){if(!e||!e.options)throw rr("App Configuration");if(!e.name)throw rr("App Name");const t=["projectId","apiKey","appId"];for(const n of t)if(!e.options[n])throw rr(n);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t);return{app:t,appConfig:n,heartbeatServiceProvider:tn(t,"heartbeat"),_delete:()=>Promise.resolve()}}),"PUBLIC")),en(new qe("installations-internal",(e=>{const t=tn(e.getProvider("app").getImmediate(),ir).getImmediate();return{getId:()=>async function(e){const t=e,{installationEntry:n,registrationPromise:r}=await Gn(t);return r?r.catch(console.error):er(t).catch(console.error),n.fid}(t),getToken:e=>async function(e,t=!1){const n=e;return await async function(e){const{registrationPromise:t}=await Gn(e);t&&await t}(n),(await er(n,t)).token}(t,e)}}),"PRIVATE")),on(wn,yn),on(wn,yn,"esm2017");const sr="analytics",or="firebase_id",ar="origin",cr=6e4,lr="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",dr="https://www.googletagmanager.com/gtag/js",hr=new et("@firebase/analytics"),ur=new Re("analytics","Analytics",{"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-intialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',"no-client-id":'The "client_id" field is empty.',"invalid-gtag-resource":"Trusted Types detected an invalid gtag resource: {$gtagURL}."});function pr(e){if(!e.startsWith(dr)){const t=ur.create("invalid-gtag-resource",{gtagURL:e});return hr.warn(t.message),""}return e}function fr(e){return Promise.all(e.map((e=>e.catch((e=>e)))))}const mr=30,gr=new class{constructor(e={},t=1e3){this.throttleMetadata=e,this.intervalMillis=t}getThrottleMetadata(e){return this.throttleMetadata[e]}setThrottleMetadata(e,t){this.throttleMetadata[e]=t}deleteThrottleMetadata(e){delete this.throttleMetadata[e]}};function br(e){return new Headers({Accept:"application/json","x-goog-api-key":e})}async function wr(e,t=gr,n){const{appId:r,apiKey:i,measurementId:s}=e.options;if(!r)throw ur.create("no-app-id");if(!i){if(s)return{measurementId:s,appId:r};throw ur.create("no-api-key")}const o=t.getThrottleMetadata(r)||{backoffCount:0,throttleEndTimeMillis:Date.now()},a=new vr;return setTimeout((async()=>{a.abort()}),void 0!==n?n:cr),yr({appId:r,apiKey:i,measurementId:s},o,a,t)}async function yr(e,{throttleEndTimeMillis:t,backoffCount:n},r,i=gr){var s;const{appId:o,measurementId:a}=e;try{await function(e,t){return new Promise(((n,r)=>{const i=Math.max(t-Date.now(),0),s=setTimeout(n,i);e.addEventListener((()=>{clearTimeout(s),r(ur.create("fetch-throttle",{throttleEndTimeMillis:t}))}))}))}(r,t)}catch(e){if(a)return hr.warn(`Timed out fetching this Firebase app's measurement ID from the server. Falling back to the measurement ID ${a} provided in the "measurementId" field in the local Firebase config. [${null==e?void 0:e.message}]`),{appId:o,measurementId:a};throw e}try{const t=await async function(e){var t;const{appId:n,apiKey:r}=e,i={method:"GET",headers:br(r)},s=lr.replace("{app-id}",n),o=await fetch(s,i);if(200!==o.status&&304!==o.status){let e="";try{const n=await o.json();(null===(t=n.error)||void 0===t?void 0:t.message)&&(e=n.error.message)}catch(e){}throw ur.create("config-fetch-failed",{httpStatus:o.status,responseMessage:e})}return o.json()}(e);return i.deleteThrottleMetadata(o),t}catch(t){const c=t;if(!function(e){if(!(e instanceof De&&e.customData))return!1;const t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}(c)){if(i.deleteThrottleMetadata(o),a)return hr.warn(`Failed to fetch this Firebase app's measurement ID from the server. Falling back to the measurement ID ${a} provided in the "measurementId" field in the local Firebase config. [${null==c?void 0:c.message}]`),{appId:o,measurementId:a};throw t}const l=503===Number(null===(s=null==c?void 0:c.customData)||void 0===s?void 0:s.httpStatus)?$e(n,i.intervalMillis,mr):$e(n,i.intervalMillis),d={throttleEndTimeMillis:Date.now()+l,backoffCount:n+1};return i.setThrottleMetadata(o,d),hr.debug(`Calling attemptFetch again in ${l} millis`),yr(e,d,r,i)}}class vr{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach((e=>e()))}}let _r,kr;async function Er(e,t,n,r,i,s,o){var a;const c=wr(e);c.then((t=>{n[t.measurementId]=t.appId,e.options.measurementId&&t.measurementId!==e.options.measurementId&&hr.warn(`The measurement ID in the local Firebase config (${e.options.measurementId}) does not match the measurement ID fetched from the server (${t.measurementId}). To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.`)})).catch((e=>hr.error(e))),t.push(c);const l=async function(){if(!Le())return hr.warn(ur.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await Oe()}catch(e){return hr.warn(ur.create("indexeddb-unavailable",{errorInfo:null==e?void 0:e.toString()}).message),!1}return!0}().then((e=>e?r.getId():void 0)),[d,h]=await Promise.all([c,l]);(function(e){const t=window.document.getElementsByTagName("script");for(const n of Object.values(t))if(n.src&&n.src.includes(dr)&&n.src.includes(e))return n;return null})(s)||function(e,t){const n=function(e,t){let n;return window.trustedTypes&&(n=window.trustedTypes.createPolicy("firebase-js-sdk-policy",t)),n}(0,{createScriptURL:pr}),r=document.createElement("script"),i=`${dr}?l=${e}&id=${t}`;r.src=n?null==n?void 0:n.createScriptURL(i):i,r.async=!0,document.head.appendChild(r)}(s,d.measurementId),kr&&(i("consent","default",kr),kr=void 0),i("js",new Date);const u=null!==(a=null==o?void 0:o.config)&&void 0!==a?a:{};return u[ar]="firebase",u.update=!0,null!=h&&(u[or]=h),i("config",d.measurementId,u),_r&&(i("set",_r),_r=void 0),d.measurementId}class xr{constructor(e){this.app=e}_delete(){return delete Ar[this.app.options.appId],Promise.resolve()}}let Ar={},Cr=[];const Tr={};let Sr,Ir,jr="dataLayer",Lr=!1;function Or(e,t,n){!function(){const e=[];if(function(){const e="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof e&&void 0!==e.id}()&&e.push("This is a browser extension environment."),"undefined"!=typeof navigator&&navigator.cookieEnabled||e.push("Cookies are not available."),e.length>0){const t=e.map(((e,t)=>`(${t+1}) ${e}`)).join(" "),n=ur.create("invalid-analytics-context",{errorInfo:t});hr.warn(n.message)}}();const r=e.options.appId;if(!r)throw ur.create("no-app-id");if(!e.options.apiKey){if(!e.options.measurementId)throw ur.create("no-api-key");hr.warn(`The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest measurement ID for this Firebase app. Falling back to the measurement ID ${e.options.measurementId} provided in the "measurementId" field in the local Firebase config.`)}if(null!=Ar[r])throw ur.create("already-exists",{id:r});if(!Lr){!function(e){let t=[];Array.isArray(window[e])?t=window[e]:window[e]=t}(jr);const{wrappedGtag:e,gtagCore:t}=function(e,t,n,r,i){let s=function(...e){window[r].push(arguments)};return window[i]&&"function"==typeof window[i]&&(s=window[i]),window[i]=function(e,t,n,r){return async function(i,...s){try{if("event"===i){const[r,i]=s;await async function(e,t,n,r,i){try{let s=[];if(i&&i.send_to){let e=i.send_to;Array.isArray(e)||(e=[e]);const r=await fr(n);for(const n of e){const e=r.find((e=>e.measurementId===n)),i=e&&t[e.appId];if(!i){s=[];break}s.push(i)}}0===s.length&&(s=Object.values(t)),await Promise.all(s),e("event",r,i||{})}catch(e){hr.error(e)}}(e,t,n,r,i)}else if("config"===i){const[i,o]=s;await async function(e,t,n,r,i,s){const o=r[i];try{if(o)await t[o];else{const e=(await fr(n)).find((e=>e.measurementId===i));e&&await t[e.appId]}}catch(e){hr.error(e)}e("config",i,s)}(e,t,n,r,i,o)}else if("consent"===i){const[t,n]=s;e("consent",t,n)}else if("get"===i){const[t,n,r]=s;e("get",t,n,r)}else if("set"===i){const[t]=s;e("set",t)}else e(i,...s)}catch(e){hr.error(e)}}}(s,e,t,n),{gtagCore:s,wrappedGtag:window[i]}}(Ar,Cr,Tr,jr,"gtag");Ir=e,Sr=t,Lr=!0}return Ar[r]=Er(e,Cr,Tr,t,Sr,jr,n),new xr(e)}const Dr="@firebase/analytics",Rr="0.10.4";en(new qe(sr,((e,{options:t})=>Or(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),t)),"PUBLIC")),en(new qe("analytics-internal",(function(e){try{const t=e.getProvider(sr).getImmediate();return{logEvent:(e,n,r)=>function(e,t,n,r){e=He(e),async function(e,t,n,r,i){if(i&&i.global)e("event",n,r);else{const i=await t;e("event",n,Object.assign(Object.assign({},r),{send_to:i}))}}(Ir,Ar[e.app.options.appId],t,n,r).catch((e=>hr.error(e)))}(t,e,n,r)}}catch(e){throw ur.create("interop-component-reg-failed",{reason:e})}}),"PRIVATE")),on(Dr,Rr),on(Dr,Rr,"esm2017");const Br=function(){for(let e=Object.getPrototypeOf(this);null!=e;e=Object.getPrototypeOf(e))try{delete e.constructor}catch(e){}},zr=Object.freeze(Object.create(null));Object.setPrototypeOf(Br,null),Object.defineProperty(Br,"prototype",{value:zr,writable:!1,enumerable:!1,configurable:!1});const Nr=Object.freeze(Br);var Pr,Ur=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Pr=new WeakMap;const Mr=class extends Nr{constructor(){super(...arguments),Pr.set(this,Object.create(null))}get size(){return Object.keys(Ur(this,Pr,"f")).length}has(e){return e in Ur(this,Pr,"f")}get(e){return Ur(this,Pr,"f")[e]||null}set(e,t){Ur(this,Pr,"f")[e]=t}delete(e){return delete Ur(this,Pr,"f")[e]}clear(){const e=Ur(this,Pr,"f");for(const t of Object.keys(e))delete e[t]}keys(){return Object.keys(Ur(this,Pr,"f"))}values(){const e=Ur(this,Pr,"f"),t=[];for(const n of Object.keys(e))t.push(e[n]);return t}entries(){const e=Ur(this,Pr,"f"),t=[];for(const n of Object.keys(e))t.push([n,e[n]]);return t}};var Fr,$r=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Fr=new WeakMap;const Hr=class extends Nr{get size(){return $r(this,Fr,"f").length}constructor(e){super(),Fr.set(this,void 0),function(e,t,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===r?i.call(e,n):i?i.value=n:t.set(e,n)}(this,Fr,e,"f")}has(e){return null!=$r(this,Fr,"f").getItem(e)}get(e){return $r(this,Fr,"f").getItem(e)}set(e,t){$r(this,Fr,"f").setItem(e,t)}delete(e){return $r(this,Fr,"f").removeItem(e),!0}clear(){$r(this,Fr,"f").clear()}keys(){const e=$r(this,Fr,"f"),t=e.length,n=new Array(t);for(let r=0;r>18&63]+Jr[n>>12&63]+Jr[n>>6&63]+Jr[63&n]}const s=r%3;return 1===s?(n="==",t=t.slice(0,-2)):2===s&&(n="=",t=t.slice(0,-1)),t+n},decode:function(e){const t=.75*e.length-(e.endsWith("==")?2:e.endsWith("=")?1:0),n=new ArrayBuffer(t),r=new Uint8Array(n,0,t);let i=0;for(let t=0;t>16&255,r[i++]=n>>8&255,r[i++]=255&n}return n}};Object.setPrototypeOf(Qr,null),Object.freeze(Qr);const ei=Qr,ti={encode:function(e){const t=Array.from(e).map((e=>e.codePointAt(0)||0)),n=[];for(const e of t)e<=127?n.push(e):e<=2047?(n.push(e>>6|192),n.push(63&e|128)):e<=65535?(n.push(e>>12|224),n.push(e>>6&63|128),n.push(63&e|128)):e<=1114111&&(n.push(e>>18|240),n.push(e>>12&63|128),n.push(e>>6&63|128),n.push(63&e|128));return new Uint8Array(n).buffer},decode:function(e){const t=new Uint8Array(e);let n="",r=0;for(;re.unicode))}const wi={},yi={},vi={};function _i(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}function ki(e,t,n,r){return new Promise(((i,s)=>{const o=e.transaction(t,n,{durability:"relaxed"}),a="string"==typeof t?o.objectStore(t):t.map((e=>o.objectStore(e)));let c;r(a,o,(e=>{c=e})),o.oncomplete=()=>i(c),o.onerror=()=>s(o.error)}))}function Ei(e){const t=wi[e],n=t&&t.result;if(n){n.close();const t=vi[e];if(t)for(const e of t)e()}delete wi[e],delete yi[e],delete vi[e]}const xi=new Set([":D","XD",":'D","O:)",":X",":P",";P","XP",":L",":Z",":j","8D","XO","8)",":B",":O",":S",":'o","Dx","X(","D:",":C",">0)",":3","!e.match(/\w/)||xi.has(e)?e.toLowerCase():e.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase())).filter(Boolean)}const Ci=2;function Ti(e){return e.filter(Boolean).map((e=>e.toLowerCase())).filter((e=>e.length>=Ci))}function Si(e,t,n,r){e[t](n).onsuccess=e=>r&&r(e.target.result)}function Ii(e,t,n){Si(e,"get",t,n)}function ji(e,t,n){Si(e,"getAll",t,n)}function Li(e){e.commit&&e.commit()}function Oi(e,t){const n=function(e,t){let n=e[0];for(let r=1;rt(i)&&(n=i)}return n}(e,(e=>e.length)),r=[];for(const i of n)e.some((e=>-1===e.findIndex((e=>t(e)===t(i)))))||r.push(i);return r}async function Di(e,t,n,r){try{const i=function(e){return e.map((({annotation:e,emoticon:t,group:n,order:r,shortcodes:i,skins:s,tags:o,emoji:a,version:c})=>{const l=[...new Set(Ti([...(i||[]).map(Ai).flat(),...o.map(Ai).flat(),...Ai(e),t]))].sort(),d={annotation:e,group:n,order:r,tags:o,tokens:l,unicode:a,version:c};if(t&&(d.emoticon=t),i&&(d.shortcodes=i),s){d.skinTones=[],d.skinUnicodes=[],d.skinVersions=[];for(const{tone:e,emoji:t,version:n}of s)d.skinTones.push(e),d.skinUnicodes.push(t),d.skinVersions.push(n)}return d}))}(t);await ki(e,[si,oi],mi,(([e,t],s)=>{let o,a,c=0;function l(){2==++c&&function(){if(o!==r||a!==n){e.clear();for(const t of i)e.put(t);t.put(r,hi),t.put(n,ui),Li(s)}}()}Ii(t,hi,(e=>{o=e,l()})),Ii(t,ui,(e=>{a=e,l()}))}))}finally{}}async function Ri(e,t){const n=Ti(Ai(t));return n.length?ki(e,si,fi,((e,t,r)=>{const i=[],s=()=>{const e=Oi(i,(e=>e.unicode));r(e.sort(((e,t)=>e.order{i.push(e),i.length===n.length&&s()}))}})):[]}function Bi(e,t,n){return ki(e,t,fi,((e,t,r)=>Ii(e,n,r)))}const zi=["name","url"];function Ni(e){!function(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||zi.some((t=>!(t in e[0]))));if(!t||n)throw new Error("Custom emojis are in the wrong format")}(e);const t=(e,t)=>e.name.toLowerCase()Ai(e))).flat())];for(const r of e){let e=n;for(let t=0;t{let r=n;for(let t=0;te[0]r(e,!0),s=e=>r(e,!1),o=new Map,a=new Map;for(const t of e){a.set(t.name.toLowerCase(),t);for(const e of t.shortcodes||[])o.set(e.toLowerCase(),t)}return{all:n,search:e=>{const n=Ai(e),r=n.map(((e,t)=>(te.name)).sort(t)},byShortcode:e=>o.get(e.toLowerCase()),byName:e=>a.get(e.toLowerCase())}}const Pi="undefined"!=typeof wrappedJSObject;function Ui(e){if(!e)return e;if(Pi&&(e=structuredClone(e)),delete e.tokens,e.skinTones){const t=e.skinTones.length;e.skins=Array(t);for(let n=0;n!(t in e[0]))))throw new Error("Emoji data is in the wrong format")}(r),[n,r]}async function qi(e){let t=function(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),i=-1;++i{const r=indexedDB.open(e,1);wi[e]=r,r.onupgradeneeded=e=>{e.oldVersion<1&&function(e){function t(t,n,r){const i=n?e.createObjectStore(t,{keyPath:n}):e.createObjectStore(t);if(r)for(const[e,[t,n]]of Object.entries(r))i.createIndex(e,t,{multiEntry:n});return i}t(oi),t(si,"unicode",{[ci]:["tokens",!0],[di]:[["group","order"]],[gi]:["skinUnicodes",!0]}),t(ai,void 0,{[li]:[""]})}(r.result)},_i(t,n,r)}));return t.onclose=()=>Ei(e),t}(t)),yi[t]);var t;!function(e,t){let n=vi[e];n||(n=vi[e]=[]),n.push(t)}(this._dbName,this._clear);const n=this.dataSource,r=await async function(e){return!await Bi(e,oi,ui)}(e);r?await async function(e,t){let[n,r]=await Hi(t);n||(n=await qi(r)),await Di(e,r,t,n)}(e,n):this._lazyUpdate=async function(e,t){let n,r=await async function(e){const t=await fetch(e,{method:"HEAD"});$i(t,e);const n=t.headers.get("etag");return Mi(n),n}(t);if(!r){const e=await Hi(t);r=e[0],n=e[1],r||(r=await qi(n))}await async function(e,t,n){const[r,i]=await Promise.all([hi,ui].map((t=>Bi(e,oi,t))));return r===n&&i===t}(e,t,r)||(n||(n=(await Hi(t))[1]),await Di(e,n,t,r))}(e,n)}async ready(){const e=async()=>(this._ready||(this._ready=this._init()),this._ready);await e(),this._db||await e()}async getEmojiByGroup(e){return ii(e),await this.ready(),bi(await async function(e,t){return ki(e,si,fi,((e,n,r)=>{const i=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);ji(e.index(di),i,r)}))}(this._db,e)).map(Ui)}async getEmojiBySearchQuery(e){return ri(e),await this.ready(),[...this._custom.search(e),...bi(await Ri(this._db,e)).map(Ui)]}async getEmojiByShortcode(e){ri(e),await this.ready();return this._custom.byShortcode(e)||Ui(await async function(e,t){const n=await Ri(e,t);if(!n.length){const n=e=>(e.shortcodes||[]).includes(t.toLowerCase());return await async function(e,t){return ki(e,si,fi,((e,n,r)=>{let i;const s=()=>{e.getAll(i&&IDBKeyRange.lowerBound(i,!0),50).onsuccess=e=>{const n=e.target.result;for(const e of n)if(i=e.unicode,t(e))return r(e);if(n.length<50)return r();s()}};s()}))}(e,n)||null}return n.filter((e=>{const n=(e.shortcodes||[]).map((e=>e.toLowerCase()));return n.includes(t.toLowerCase())}))[0]||null}(this._db,e))}async getEmojiByUnicodeOrName(e){ri(e),await this.ready();return this._custom.byName(e)||Ui(await async function(e,t){return ki(e,si,fi,((e,n,r)=>Ii(e,t,(n=>{if(n)return r(n);Ii(e.index(gi),t,(e=>r(e||null)))}))))}(this._db,e))}async getPreferredSkinTone(){return await this.ready(),await Bi(this._db,oi,pi)||0}async setPreferredSkinTone(e){return ii(e),await this.ready(),function(e,t,n,r){return ki(e,t,mi,((e,t)=>{e.put(r,n),Li(t)}))}(this._db,oi,pi,e)}async incrementFavoriteEmojiCount(e){return ri(e),await this.ready(),t=this._db,n=e,ki(t,ai,mi,((e,t)=>Ii(e,n,(r=>{e.put((r||0)+1,n),Li(t)}))));var t,n}async getTopFavoriteEmoji(e){return ii(e),await this.ready(),(await function(e,t,n){return 0===n?[]:ki(e,[ai,si],fi,(([e,r],i,s)=>{const o=[];e.index(li).openCursor(void 0,"prev").onsuccess=e=>{const i=e.target.result;if(!i)return s(o);function a(e){if(o.push(e),o.length===n)return s(o);i.continue()}const c=i.primaryKey,l=t.byName(c);if(l)return a(l);Ii(r,c,(e=>{if(e)return a(e);i.continue()}))}}))}(this._db,this._custom,e)).map(Ui)}set customEmoji(e){this._custom=Ni(e)}get customEmoji(){return this._custom.all}async _shutdown(){await this.ready();try{await this._lazyUpdate}catch(e){}}_clear(){this._db=this._ready=this._lazyUpdate=void 0}async close(){await this._shutdown(),await Ei(this._dbName)}async delete(){var e;await this._shutdown(),await(e=this._dbName,new Promise(((t,n)=>{Ei(e),_i(t,n,indexedDB.deleteDatabase(e))})))}}const Wi=[[-1,"✨","custom"],[0,"😀","smileys-emotion"],[1,"👋","people-body"],[3,"🐱","animals-nature"],[4,"🍎","food-drink"],[5,"🏠️","travel-places"],[6,"⚽","activities"],[7,"📝","objects"],[8,"⛔️","symbols"],[9,"🏁","flags"]].map((([e,t,n])=>({id:e,emoji:t,name:n}))),Zi=Wi.slice(1),Ki="function"==typeof requestIdleCallback?requestIdleCallback:setTimeout;function Gi(e){return e.unicode.includes("‍")}const Yi={"🫨":15.1,"🫠":14,"🥲":13.1,"🥻":12.1,"🥰":11,"🤩":5,"👱‍♀️":4,"🤣":3,"👁️‍🗨️":2,"😀":1,"😐️":.7,"😃":.6},Ji=["😊","😒","❤️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],Xi='"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',Qi=(e,t)=>et?1:0,es=(e,t)=>{const n=document.createElement("canvas");n.width=n.height=1;const r=n.getContext("2d");return r.textBaseline="top",r.font=`100px ${Xi}`,r.fillStyle=t,r.scale(.01,.01),r.fillText(e,0,0),r.getImageData(0,0,1,1).data};function ts(e){const t=es(e,"#000"),n=es(e,"#fff");return t&&n&&((e,t)=>{const n=[...e].join(",");return n===[...t].join(",")&&!n.startsWith("0,0,0,")})(t,n)}let ns;const rs=()=>(ns||(ns=new Promise((e=>Ki((()=>e(function(){const e=Object.entries(Yi);try{for(const[t,n]of e)if(ts(t))return n}catch(e){}return e[0][1]}())))))),ns),is=new Map;function ss(e){e.preventDefault(),e.stopPropagation()}function os(e,t,n){return(t+=e?-1:1)<0?t=n.length-1:t>=n.length&&(t=0),t}function as(e,t){const n=new Set,r=[];for(const i of e){const e=t(i);n.has(e)||(n.add(e),r.push(i))}return r}const cs=requestAnimationFrame;let ls,ds="function"==typeof ResizeObserver;function hs(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}function us(e,t,n){let r=e.get(t);return r||(r=n(),e.set(t,r)),r}function ps(e){return""+e}const fs=new WeakMap,ms=new WeakMap,gs=Symbol("un-keyed"),bs="replaceChildren"in Element.prototype;function ws(e,t){const{targetNode:n}=t;let{targetParentNode:r}=t,i=!1;r?i=function(e,t){let n=e.firstChild,r=0;for(;n;){if(t[r]!==n)return!0;n=n.nextSibling,r++}return r!==t.length}(r,e):(i=!0,t.targetNode=void 0,t.targetParentNode=r=n.parentNode),i&&function(e,t){bs?e.replaceChildren(...t):(e.innerHTML="",e.append(...t))}(r,e)}function ys(e){const{template:t,elementsToBindings:n}=us(fs,e,(()=>function(e){let t="",n=!1,r=!1,i=-1;const s=new Map,o=[];for(let a=0,c=e.length;a":n=!1,r=!1;break;case"=":r=!0}const d=us(s,o[o.length-1],(()=>[]));let h,u,p;if(r){const t=/(\S+)="?([^"=]*)$/.exec(l);h=t[1],u=t[2],p=/^[^">]*/.exec(e[a+1])[0]}const f={attributeName:h,attributeValuePre:u,attributeValuePost:p,expressionIndex:a};d.push(f),n||r||(t+=" ")}const a=function(e){const t=document.createElement("template");return t.innerHTML=e,t}(t);return{template:a,elementsToBindings:s}}(e))),r=t.cloneNode(!0).content.firstElementChild,i=function(e,t){const n=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT);let i=e,s=-1;do{const e=t.get(++s);if(e)for(let t=0;tPromise.resolve().then(e);function _s(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r{if(n)return;const e=[...i];i.clear();try{for(const t of e)t()}finally{s=!1,i.size&&(s=!0,vs(o))}},a=new Proxy({},{get(e,n){if(t){let e=r.get(n);e||(e=new Set,r.set(n,e)),e.add(t)}return e[n]},set(e,t,n){e[t]=n;const a=r.get(t);if(a){for(const e of a)i.add(e);s||(s=!0,vs(o))}return!0}});return e.addEventListener("abort",(()=>{n=!0})),{state:a,createEffect:e=>{const n=()=>{const r=t;t=n;try{return e()}finally{t=r}};return n()}}}(i);Es(s,{skinToneEmoji:void 0,i18n:void 0,database:void 0,customEmoji:void 0,customCategorySorting:void 0,emojiVersion:void 0}),Es(s,t),Es(s,{initialLoad:!0,currentEmojis:[],currentEmojisWithCategories:[],rawSearchText:"",searchText:"",searchMode:!1,activeSearchItem:-1,message:void 0,skinTonePickerExpanded:!1,skinTonePickerExpandedAfterAnimation:!1,currentSkinTone:0,activeSkinTone:0,skinToneButtonText:void 0,pickerStyle:void 0,skinToneButtonLabel:"",skinTones:[],currentFavorites:[],defaultFavoriteEmojis:void 0,numColumns:8,isRtl:!1,scrollbarWidth:0,currentGroupIndex:0,groups:Zi,databaseLoaded:!1,activeSearchItemId:void 0}),o((()=>{s.currentGroup!==s.groups[s.currentGroupIndex]&&(s.currentGroup=s.groups[s.currentGroupIndex])}));const a=t=>{e.getElementById(t).focus()},c=t=>e.getElementById(`emo-${t.id}`),l=(e,t)=>{n.rootElement.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))},d=(e,t)=>e.id===t.id,h=(e,t)=>{const{category:n,emojis:r}=e,{category:i,emojis:s}=t;return n===i&&_s(r,s,d)},u=e=>{_s(s.currentEmojis,e,d)||(s.currentEmojis=e)},p=e=>{s.searchMode!==e&&(s.searchMode=e)},f=(e,t)=>t&&e.skins&&e.skins[t]||e.unicode,m={labelWithSkin:(e,t)=>{return(n=[e.name||f(e,t),e.annotation,...e.shortcodes||ks].filter(Boolean),as(n,(e=>e))).join(", ");var n},titleForEmoji:e=>e.annotation||(e.shortcodes||ks).join(", "),unicodeWithSkin:f},g={onClickSkinToneButton:function(e){s.skinTonePickerExpanded=!s.skinTonePickerExpanded,s.activeSkinTone=s.currentSkinTone,s.skinTonePickerExpanded&&(ss(e),cs((()=>a("skintone-list"))))},onEmojiClick:async function(e){const{target:t}=e;t.classList.contains("emoji")&&(ss(e),E(t.id.substring(4)))},onNavClick:function(e){const{target:t}=e,r=t.closest(".nav-button");if(!r)return;const i=parseInt(r.dataset.groupId,10);n.searchElement.value="",s.rawSearchText="",s.searchText="",s.activeSearchItem=-1,s.currentGroupIndex=s.groups.findIndex((e=>e.id===i))},onNavKeydown:function(e){const{target:t,key:n}=e,r=t=>{t&&(ss(e),t.focus())};switch(n){case"ArrowLeft":return r(t.previousElementSibling);case"ArrowRight":return r(t.nextElementSibling);case"Home":return r(t.parentElement.firstElementChild);case"End":return r(t.parentElement.lastElementChild)}},onSearchKeydown:function(e){if(!s.searchMode||!s.currentEmojis.length)return;const t=t=>{ss(e),s.activeSearchItem=os(t,s.activeSearchItem,s.currentEmojis)};switch(e.key){case"ArrowDown":return t(!1);case"ArrowUp":return t(!0);case"Enter":if(-1!==s.activeSearchItem)return ss(e),E(s.currentEmojis[s.activeSearchItem].id);s.activeSearchItem=0}},onSkinToneOptionsClick:function(e){const{target:{id:t}}=e,n=t&&t.match(/^skintone-(\d)/);n&&(ss(e),x(parseInt(n[1],10)))},onSkinToneOptionsFocusOut:async function(e){const{relatedTarget:t}=e;t&&"skintone-list"===t.id||(s.skinTonePickerExpanded=!1)},onSkinToneOptionsKeydown:function(e){if(!s.skinTonePickerExpanded)return;const t=async t=>{ss(e),s.activeSkinTone=t};switch(e.key){case"ArrowUp":return t(os(!0,s.activeSkinTone,s.skinTones));case"ArrowDown":return t(os(!1,s.activeSkinTone,s.skinTones));case"Home":return t(0);case"End":return t(s.skinTones.length-1);case"Enter":return ss(e),x(s.activeSkinTone);case"Escape":return ss(e),s.skinTonePickerExpanded=!1,a("skintone-button")}},onSkinToneOptionsKeyup:function(e){if(s.skinTonePickerExpanded)return" "===e.key?(ss(e),x(s.activeSkinTone)):void 0},onSearchInput:function(e){s.rawSearchText=e.target.value}},b={calculateEmojiGridStyle:function(e){!function(e,t,n){let r;ds?(r=new ResizeObserver((e=>n(e[0].contentRect.width))),r.observe(e)):cs((()=>n(e.getBoundingClientRect().width))),t.addEventListener("abort",(()=>{r&&r.disconnect()}))}(e,i,(t=>{{const r=getComputedStyle(n.rootElement),i=parseInt(r.getPropertyValue("--num-columns"),10),o="rtl"===r.getPropertyValue("direction"),a=e.parentElement.getBoundingClientRect().width-t;s.numColumns=i,s.scrollbarWidth=a,s.isRtl=o}}))}};let w=!0;function y(){s.database.customEmoji=s.customEmoji||ks}function v(e){return!e.unicode||!Gi(e)||is.get(e.unicode)}async function _(e){const t=s.emojiVersion||await rs();return e.filter((({version:e})=>!e||e<=t))}async function k(e){return function(e,t){const n=e=>{const n={};for(const r of e)"number"==typeof r.tone&&r.version<=t&&(n[r.tone]=r.unicode);return n};return e.map((({unicode:e,skins:t,shortcodes:r,url:i,name:s,category:o,annotation:a})=>({unicode:e,name:s,shortcodes:r,url:i,category:o,annotation:a,id:e||s,skins:t&&n(t)})))}(e,s.emojiVersion||await rs())}async function E(e){const t=await s.database.getEmojiByUnicodeOrName(e),n=[...s.currentEmojis,...s.currentFavorites].find((t=>t.id===e)),r=n.unicode&&f(n,s.currentSkinTone);await s.database.incrementFavoriteEmojiCount(e),l("emoji-click",{emoji:t,skinTone:s.currentSkinTone,...r&&{unicode:r},...n.name&&{name:n.name}})}function x(e){s.currentSkinTone=e,s.skinTonePickerExpanded=!1,a("skintone-button"),l("skin-tone-change",{skinTone:e}),s.database.setPreferredSkinTone(e)}return o((()=>{(function(e,t,n,r,i,s,o,a){const{labelWithSkin:c,titleForEmoji:l,unicodeWithSkin:d}=n,{html:h,map:u}=function(e){const t=us(ms,e,(()=>new Map));let n=gs;return{map:function(e,t,r){return e.map(((e,i)=>{const s=n;n=r(e);try{return t(e,i)}finally{n=s}}))},html:function(e,...r){const i=us(t,e,(()=>new Map));return us(i,n,(()=>ys(e)))(r)}}}(t);function p(e,n,r){return u(e,((e,i)=>h``),(e=>`${r}-${e.id}`))}const f=h`
${t.i18n.searchDescription}
${t.i18n.skinToneDescription}
${u(t.skinTones,((e,n)=>h`
${e}
`),(e=>e))}
${u(t.currentEmojisWithCategories,((e,n)=>h`
${p(e.emojis,t.searchMode,"emo")}
`),(e=>e.category))}
`;if(a){e.appendChild(f);const t=(t,n)=>{for(const r of e.querySelectorAll(`[${t}]`))n(r,r.getAttribute(t))};for(const e of["click","focusout","input","keydown","keyup"])t(`data-on-${e}`,((t,n)=>{t.addEventListener(e,r[n])}));t("data-ref",((e,t)=>{s[t]=e})),t("data-action",((e,t)=>{i[t](e)})),o.addEventListener("abort",(()=>{e.removeChild(f)}))}})(e,s,m,g,b,n,i,w),w=!1})),s.emojiVersion||rs().then((e=>{e||(s.message=s.i18n.emojiUnsupportedMessage)})),o((()=>{s.database&&async function(){let e=!1;const t=setTimeout((()=>{e=!0,s.message=s.i18n.loadingMessage}),1e3);try{await s.database.ready(),s.databaseLoaded=!0}catch(e){console.error(e),s.message=s.i18n.networkErrorMessage}finally{clearTimeout(t),e&&(e=!1,s.message="")}}()})),o((()=>{s.pickerStyle=`\n --num-groups: ${s.groups.length}; \n --indicator-opacity: ${s.searchMode?0:1}; \n --num-skintones: 6;`})),o((()=>{s.customEmoji&&s.database&&y()})),o((()=>{s.customEmoji&&s.customEmoji.length?s.groups!==Wi&&(s.groups=Wi):s.groups!==Zi&&(s.currentGroupIndex&&s.currentGroupIndex--,s.groups=Zi)})),o((()=>{!async function(){s.databaseLoaded&&(s.currentSkinTone=await s.database.getPreferredSkinTone())}()})),o((()=>{s.skinTones=Array(6).fill().map(((e,t)=>function(e,t){if(0===t)return e;const n=e.indexOf("‍");return-1!==n?e.substring(0,n)+String.fromCodePoint(127995+t-1)+e.substring(n):(e.endsWith("️")&&(e=e.substring(0,e.length-1)),e+"\ud83c"+String.fromCodePoint(57339+t-1))}(s.skinToneEmoji,t)))})),o((()=>{s.skinToneButtonText=s.skinTones[s.currentSkinTone]})),o((()=>{s.skinToneButtonLabel=s.i18n.skinToneLabel.replace("{skinTone}",s.i18n.skinTones[s.currentSkinTone])})),o((()=>{s.databaseLoaded&&async function(){const{database:e}=s,t=(await Promise.all(Ji.map((t=>e.getEmojiByUnicodeOrName(t))))).filter(Boolean);s.defaultFavoriteEmojis=t}()})),o((()=>{s.databaseLoaded&&s.defaultFavoriteEmojis&&async function(){y();const{database:e,defaultFavoriteEmojis:t,numColumns:n}=s,r=await e.getTopFavoriteEmoji(n),i=await k(as([...r,...t],(e=>e.unicode||e.name)).slice(0,n));s.currentFavorites=i}()})),o((()=>{!async function(){const{searchText:e,currentGroup:t,databaseLoaded:n,customEmoji:r}=s;if(n)if(e.length>=2){const t=await async function(e){return k(await _(await s.database.getEmojiBySearchQuery(e)))}(e);s.searchText===e&&(u(t),p(!0))}else{const{id:e}=t;if(-1!==e||r&&r.length){const t=await async function(e){const t=-1===e?s.customEmoji:await s.database.getEmojiByGroup(e);return k(await _(t))}(e);s.currentGroup.id===e&&(u(t),p(!1))}}else s.currentEmojis=[],s.searchMode=!1}()})),o((()=>{const{currentEmojis:e,emojiVersion:t}=s,r=e.filter((e=>e.unicode)).filter((e=>Gi(e)&&!is.has(e.unicode)));if(!t&&r.length)u(e),cs((()=>function(e){(function(e,t,n){for(const r of e){const e=hs(n(r));void 0===ls&&(ls=hs(t));const i=e/1.8{var e;(e=n.tabpanelElement)&&(e.scrollTop=0)}))}})),o((()=>{})),o((()=>{var e;e=function(){const{searchMode:e,currentEmojis:t}=s;if(e)return[{category:"",emojis:t}];const n=new Map;for(const e of t){const t=e.category||"";let r=n.get(t);r||(r=[],n.set(t,r)),r.push(e)}return[...n.entries()].map((([e,t])=>({category:e,emojis:t}))).sort(((e,t)=>s.customCategorySorting(e.category,t.category)))}(),_s(s.currentEmojisWithCategories,e,h)||(s.currentEmojisWithCategories=e)})),o((()=>{s.activeSearchItemId=-1!==s.activeSearchItem&&s.currentEmojis[s.activeSearchItem].id})),o((()=>{const{rawSearchText:e}=s;Ki((()=>{s.searchText=(e||"").trim(),s.activeSearchItem=-1}))})),o((()=>{s.skinTonePickerExpanded?n.skinToneDropdown.addEventListener("transitionend",(()=>{s.skinTonePickerExpandedAfterAnimation=!0}),{once:!0}):s.skinTonePickerExpandedAfterAnimation=!1})),{$set(e){Es(s,e)},$destroy(){r.abort()}}}var As={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}};const Cs=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji","emojiVersion"],Ts=`:host{--emoji-font-family:${Xi}}`;class Ss extends HTMLElement{constructor(e){super(),this.attachShadow({mode:"open"});const t=document.createElement("style");t.textContent=":host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){color-scheme:light;--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.custom-emoji,.emoji,button.emoji{height:var(--total-emoji-size);width:var(--total-emoji-size)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;line-height:1;overflow:hidden;font-family:var(--emoji-font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.custom-emoji{padding:var(--emoji-padding);object-fit:contain;pointer-events:none;background-repeat:no-repeat;background-position:center center;background-size:var(--emoji-size) var(--emoji-size)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}"+Ts,this.shadowRoot.appendChild(t),this._ctx={locale:"en",dataSource:"https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",skinToneEmoji:"🖐️",customCategorySorting:Qi,customEmoji:null,i18n:As,emojiVersion:null,...e};for(const e of Cs)"database"!==e&&Object.prototype.hasOwnProperty.call(this,e)&&(this._ctx[e]=this[e],delete this[e]);this._dbFlush()}connectedCallback(){this._cmp||(this._cmp=xs(this.shadowRoot,this._ctx))}disconnectedCallback(){vs((()=>{if(!this.isConnected&&this._cmp){this._cmp.$destroy(),this._cmp=void 0;const{database:e}=this._ctx;e.close().catch((e=>console.error(e)))}}))}static get observedAttributes(){return["locale","data-source","skin-tone-emoji","emoji-version"]}attributeChangedCallback(e,t,n){this._set(e.replace(/-([a-z])/g,((e,t)=>t.toUpperCase())),"emoji-version"===e?parseFloat(n):n)}_set(e,t){this._ctx[e]=t,this._cmp&&this._cmp.$set({[e]:t}),["locale","dataSource"].includes(e)&&this._dbFlush()}_dbCreate(){const{locale:e,dataSource:t,database:n}=this._ctx;n&&n.locale===e&&n.dataSource===t||this._set("database",new Vi({locale:e,dataSource:t}))}_dbFlush(){vs((()=>this._dbCreate()))}}const Is={};for(const e of Cs)Is[e]={get(){return"database"===e&&this._dbCreate(),this._ctx[e]},set(t){if("database"===e)throw new Error("database is read-only");this._set(e,t)}};function js(e){let t=e.length;for(;--t>=0;)e[t]=0}Object.defineProperties(Ss.prototype,Is),customElements.get("emoji-picker")||customElements.define("emoji-picker",Ss);const Ls=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Os=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Ds=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Rs=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Bs=new Array(576);js(Bs);const zs=new Array(60);js(zs);const Ns=new Array(512);js(Ns);const Ps=new Array(256);js(Ps);const Us=new Array(29);js(Us);const Ms=new Array(30);function Fs(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}let $s,Hs,qs;function Vs(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}js(Ms);const Ws=e=>e<256?Ns[e]:Ns[256+(e>>>7)],Zs=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},Ks=(e,t,n)=>{e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<{Ks(e,n[2*t],n[2*t+1])},Ys=(e,t)=>{let n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1},Js=(e,t,n)=>{const r=new Array(16);let i,s,o=0;for(i=1;i<=15;i++)o=o+n[i-1]<<1,r[i]=o;for(s=0;s<=t;s++){let t=e[2*s+1];0!==t&&(e[2*s]=Ys(r[t]++,t))}},Xs=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Qs=e=>{e.bi_valid>8?Zs(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},eo=(e,t,n,r)=>{const i=2*t,s=2*n;return e[i]{const r=e.heap[n];let i=n<<1;for(;i<=e.heap_len&&(i{let r,i,s,o,a=0;if(0!==e.sym_next)do{r=255&e.pending_buf[e.sym_buf+a++],r+=(255&e.pending_buf[e.sym_buf+a++])<<8,i=e.pending_buf[e.sym_buf+a++],0===r?Gs(e,i,t):(s=Ps[i],Gs(e,s+256+1,t),o=Ls[s],0!==o&&(i-=Us[s],Ks(e,i,o)),r--,s=Ws(r),Gs(e,s,n),o=Os[s],0!==o&&(r-=Ms[s],Ks(e,r,o)))}while(a{const n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,s=t.stat_desc.elems;let o,a,c,l=-1;for(e.heap_len=0,e.heap_max=573,o=0;o>1;o>=1;o--)to(e,n,o);c=s;do{o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],to(e,n,1),a=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=a,n[2*c]=n[2*o]+n[2*a],e.depth[c]=(e.depth[o]>=e.depth[a]?e.depth[o]:e.depth[a])+1,n[2*o+1]=n[2*a+1]=c,e.heap[1]=c++,to(e,n,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,s=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,c=t.stat_desc.max_length;let l,d,h,u,p,f,m=0;for(u=0;u<=15;u++)e.bl_count[u]=0;for(n[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)d=e.heap[l],u=n[2*n[2*d+1]+1]+1,u>c&&(u=c,m++),n[2*d+1]=u,d>r||(e.bl_count[u]++,p=0,d>=a&&(p=o[d-a]),f=n[2*d],e.opt_len+=f*(u+p),s&&(e.static_len+=f*(i[2*d+1]+p)));if(0!==m){do{for(u=c-1;0===e.bl_count[u];)u--;e.bl_count[u]--,e.bl_count[u+1]+=2,e.bl_count[c]--,m-=2}while(m>0);for(u=c;0!==u;u--)for(d=e.bl_count[u];0!==d;)h=e.heap[--l],h>r||(n[2*h+1]!==u&&(e.opt_len+=(u-n[2*h+1])*n[2*h],n[2*h+1]=u),d--)}})(e,t),Js(n,l,e.bl_count)},io=(e,t,n)=>{let r,i,s=-1,o=t[1],a=0,c=7,l=4;for(0===o&&(c=138,l=3),t[2*(n+1)+1]=65535,r=0;r<=n;r++)i=o,o=t[2*(r+1)+1],++a{let r,i,s=-1,o=t[1],a=0,c=7,l=4;for(0===o&&(c=138,l=3),r=0;r<=n;r++)if(i=o,o=t[2*(r+1)+1],!(++a{Ks(e,0+(r?1:0),3),Qs(e),Zs(e,n),Zs(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n};var co={_tr_init:e=>{oo||((()=>{let e,t,n,r,i;const s=new Array(16);for(n=0,r=0;r<28;r++)for(Us[r]=n,e=0;e<1<>=7;r<30;r++)for(Ms[r]=i<<7,e=0;e<1<{let i,s,o=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),ro(e,e.l_desc),ro(e,e.d_desc),o=(e=>{let t;for(io(e,e.dyn_ltree,e.l_desc.max_code),io(e,e.dyn_dtree,e.d_desc.max_code),ro(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*Rs[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),i=e.opt_len+3+7>>>3,s=e.static_len+3+7>>>3,s<=i&&(i=s)):i=s=n+5,n+4<=i&&-1!==t?ao(e,t,n,r):4===e.strategy||s===i?(Ks(e,2+(r?1:0),3),no(e,Bs,zs)):(Ks(e,4+(r?1:0),3),((e,t,n,r)=>{let i;for(Ks(e,t-257,5),Ks(e,n-1,5),Ks(e,r-4,4),i=0;i(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(Ps[n]+256+1)]++,e.dyn_dtree[2*Ws(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{Ks(e,2,3),Gs(e,256,Bs),(e=>{16===e.bi_valid?(Zs(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}},lo=(e,t,n,r)=>{let i=65535&e,s=e>>>16&65535,o=0;for(;0!==n;){o=n>2e3?2e3:n,n-=o;do{i=i+t[r++]|0,s=s+i|0}while(--o);i%=65521,s%=65521}return i|s<<16};const ho=new Uint32Array((()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t})());var uo=(e,t,n,r)=>{const i=ho,s=r+n;e^=-1;for(let n=r;n>>8^i[255&(e^t[n])];return~e},po={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},fo={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:mo,_tr_stored_block:go,_tr_flush_block:bo,_tr_tally:wo,_tr_align:yo}=co,{Z_NO_FLUSH:vo,Z_PARTIAL_FLUSH:_o,Z_FULL_FLUSH:ko,Z_FINISH:Eo,Z_BLOCK:xo,Z_OK:Ao,Z_STREAM_END:Co,Z_STREAM_ERROR:To,Z_DATA_ERROR:So,Z_BUF_ERROR:Io,Z_DEFAULT_COMPRESSION:jo,Z_FILTERED:Lo,Z_HUFFMAN_ONLY:Oo,Z_RLE:Do,Z_FIXED:Ro,Z_DEFAULT_STRATEGY:Bo,Z_UNKNOWN:zo,Z_DEFLATED:No}=fo,Po=258,Uo=262,Mo=42,Fo=113,$o=666,Ho=(e,t)=>(e.msg=po[t],t),qo=e=>2*e-(e>4?9:0),Vo=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Wo=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do{n=e.head[--r],e.head[r]=n>=i?n-i:0}while(--t);t=i,r=t;do{n=e.prev[--r],e.prev[r]=n>=i?n-i:0}while(--t)};let Zo=(e,t,n)=>(t<{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))},Go=(e,t)=>{bo(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Ko(e.strm)},Yo=(e,t)=>{e.pending_buf[e.pending++]=t},Jo=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Xo=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),0===i?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),1===e.state.wrap?e.adler=lo(e.adler,t,i,n):2===e.state.wrap&&(e.adler=uo(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},Qo=(e,t)=>{let n,r,i=e.max_chain_length,s=e.strstart,o=e.prev_length,a=e.nice_match;const c=e.strstart>e.w_size-Uo?e.strstart-(e.w_size-Uo):0,l=e.window,d=e.w_mask,h=e.prev,u=e.strstart+Po;let p=l[s+o-1],f=l[s+o];e.prev_length>=e.good_match&&(i>>=2),a>e.lookahead&&(a=e.lookahead);do{if(n=t,l[n+o]===f&&l[n+o-1]===p&&l[n]===l[s]&&l[++n]===l[s+1]){s+=2,n++;do{}while(l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&so){if(e.match_start=t,o=r,r>=a)break;p=l[s+o-1],f=l[s+o]}}}while((t=h[t&d])>c&&0!=--i);return o<=e.lookahead?o:e.lookahead},ea=e=>{const t=e.w_size;let n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Uo)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Wo(e),r+=t),0===e.strm.avail_in)break;if(n=Xo(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=3)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=Zo(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=Zo(e,e.ins_h,e.window[i+3-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead{let n,r,i,s=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,o=0,a=e.strm.avail_in;do{if(n=65535,i=e.bi_valid+42>>3,e.strm.avail_outr+e.strm.avail_in&&(n=r+e.strm.avail_in),n>i&&(n=i),n>8,e.pending_buf[e.pending-2]=~n,e.pending_buf[e.pending-1]=~n>>8,Ko(e.strm),r&&(r>n&&(r=n),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,n-=r),n&&(Xo(e.strm,e.strm.output,e.strm.next_out,n),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n)}while(0===o);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_wateri&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,i+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),i>e.strm.avail_in&&(i=e.strm.avail_in),i&&(Xo(e.strm,e.window,e.strstart,i),e.strstart+=i,e.insert+=i>e.w_size-e.insert?e.w_size-e.insert:i),e.high_water>3,i=e.pending_buf_size-i>65535?65535:e.pending_buf_size-i,s=i>e.w_size?e.w_size:i,r=e.strstart-e.block_start,(r>=s||(r||t===Eo)&&t!==vo&&0===e.strm.avail_in&&r<=i)&&(n=r>i?i:r,o=t===Eo&&0===e.strm.avail_in&&n===r?1:0,go(e,e.block_start,n,o),e.block_start+=n,Ko(e.strm)),o?3:1)},na=(e,t)=>{let n,r;for(;;){if(e.lookahead=3&&(e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==n&&e.strstart-n<=e.w_size-Uo&&(e.match_length=Qo(e,n)),e.match_length>=3)if(r=wo(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+1]);else r=wo(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Go(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2},ra=(e,t)=>{let n,r,i;for(;;){if(e.lookahead=3&&(e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==n&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-3,r=wo(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,r&&(Go(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(r=wo(e,0,e.window[e.strstart-1]),r&&Go(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=wo(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2};function ia(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}const sa=[new ia(0,0,0,0,ta),new ia(4,4,8,4,na),new ia(4,5,16,8,na),new ia(4,6,32,32,na),new ia(4,4,16,16,ra),new ia(8,16,32,32,ra),new ia(8,16,128,128,ra),new ia(8,32,128,256,ra),new ia(32,128,258,1024,ra),new ia(32,258,258,4096,ra)];function oa(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=No,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),Vo(this.dyn_ltree),Vo(this.dyn_dtree),Vo(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),Vo(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),Vo(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const aa=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==Mo&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==Fo&&t.status!==$o?1:0},ca=e=>{if(aa(e))return Ho(e,To);e.total_in=e.total_out=0,e.data_type=zo;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?Mo:Fo,e.adler=2===t.wrap?0:1,t.last_flush=-2,mo(t),Ao},la=e=>{const t=ca(e);var n;return t===Ao&&((n=e.state).window_size=2*n.w_size,Vo(n.head),n.max_lazy_match=sa[n.level].max_lazy,n.good_match=sa[n.level].good_length,n.nice_match=sa[n.level].nice_length,n.max_chain_length=sa[n.level].max_chain,n.strstart=0,n.block_start=0,n.lookahead=0,n.insert=0,n.match_length=n.prev_length=2,n.match_available=0,n.ins_h=0),t},da=(e,t,n,r,i,s)=>{if(!e)return To;let o=1;if(t===jo&&(t=6),r<0?(o=0,r=-r):r>15&&(o=2,r-=16),i<1||i>9||n!==No||r<8||r>15||t<0||t>9||s<0||s>Ro||8===r&&1!==o)return Ho(e,To);8===r&&(r=9);const a=new oa;return e.state=a,a.strm=e,a.status=Mo,a.wrap=o,a.gzhead=null,a.w_bits=r,a.w_size=1<da(e,t,No,15,8,Bo),deflateInit2:da,deflateReset:la,deflateResetKeep:ca,deflateSetHeader:(e,t)=>aa(e)||2!==e.state.wrap?To:(e.state.gzhead=t,Ao),deflate:(e,t)=>{if(aa(e)||t>xo||t<0)return e?Ho(e,To):To;const n=e.state;if(!e.output||0!==e.avail_in&&!e.input||n.status===$o&&t!==Eo)return Ho(e,0===e.avail_out?Io:To);const r=n.last_flush;if(n.last_flush=t,0!==n.pending){if(Ko(e),0===e.avail_out)return n.last_flush=-1,Ao}else if(0===e.avail_in&&qo(t)<=qo(r)&&t!==Eo)return Ho(e,Io);if(n.status===$o&&0!==e.avail_in)return Ho(e,Io);if(n.status===Mo&&0===n.wrap&&(n.status=Fo),n.status===Mo){let t=No+(n.w_bits-8<<4)<<8,r=-1;if(r=n.strategy>=Oo||n.level<2?0:n.level<6?1:6===n.level?2:3,t|=r<<6,0!==n.strstart&&(t|=32),t+=31-t%31,Jo(n,t),0!==n.strstart&&(Jo(n,e.adler>>>16),Jo(n,65535&e.adler)),e.adler=1,n.status=Fo,Ko(e),0!==n.pending)return n.last_flush=-1,Ao}if(57===n.status)if(e.adler=0,Yo(n,31),Yo(n,139),Yo(n,8),n.gzhead)Yo(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Yo(n,255&n.gzhead.time),Yo(n,n.gzhead.time>>8&255),Yo(n,n.gzhead.time>>16&255),Yo(n,n.gzhead.time>>24&255),Yo(n,9===n.level?2:n.strategy>=Oo||n.level<2?4:0),Yo(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(Yo(n,255&n.gzhead.extra.length),Yo(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=uo(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69;else if(Yo(n,0),Yo(n,0),Yo(n,0),Yo(n,0),Yo(n,0),Yo(n,9===n.level?2:n.strategy>=Oo||n.level<2?4:0),Yo(n,3),n.status=Fo,Ko(e),0!==n.pending)return n.last_flush=-1,Ao;if(69===n.status){if(n.gzhead.extra){let t=n.pending,r=(65535&n.gzhead.extra.length)-n.gzindex;for(;n.pending+r>n.pending_buf_size;){let i=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+i),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>t&&(e.adler=uo(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex+=i,Ko(e),0!==n.pending)return n.last_flush=-1,Ao;t=0,r-=i}let i=new Uint8Array(n.gzhead.extra);n.pending_buf.set(i.subarray(n.gzindex,n.gzindex+r),n.pending),n.pending+=r,n.gzhead.hcrc&&n.pending>t&&(e.adler=uo(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex=0}n.status=73}if(73===n.status){if(n.gzhead.name){let t,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r)),Ko(e),0!==n.pending)return n.last_flush=-1,Ao;r=0}t=n.gzindexr&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=91}if(91===n.status){if(n.gzhead.comment){let t,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r)),Ko(e),0!==n.pending)return n.last_flush=-1,Ao;r=0}t=n.gzindexr&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r))}n.status=103}if(103===n.status){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Ko(e),0!==n.pending))return n.last_flush=-1,Ao;Yo(n,255&e.adler),Yo(n,e.adler>>8&255),e.adler=0}if(n.status=Fo,Ko(e),0!==n.pending)return n.last_flush=-1,Ao}if(0!==e.avail_in||0!==n.lookahead||t!==vo&&n.status!==$o){let r=0===n.level?ta(n,t):n.strategy===Oo?((e,t)=>{let n;for(;;){if(0===e.lookahead&&(ea(e),0===e.lookahead)){if(t===vo)return 1;break}if(e.match_length=0,n=wo(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Go(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2})(n,t):n.strategy===Do?((e,t)=>{let n,r,i,s;const o=e.window;for(;;){if(e.lookahead<=Po){if(ea(e),e.lookahead<=Po&&t===vo)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=e.strstart-1,r=o[i],r===o[++i]&&r===o[++i]&&r===o[++i])){s=e.strstart+Po;do{}while(r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=wo(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=wo(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Go(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2})(n,t):sa[n.level].func(n,t);if(3!==r&&4!==r||(n.status=$o),1===r||3===r)return 0===e.avail_out&&(n.last_flush=-1),Ao;if(2===r&&(t===_o?yo(n):t!==xo&&(go(n,0,0,!1),t===ko&&(Vo(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),Ko(e),0===e.avail_out))return n.last_flush=-1,Ao}return t!==Eo?Ao:n.wrap<=0?Co:(2===n.wrap?(Yo(n,255&e.adler),Yo(n,e.adler>>8&255),Yo(n,e.adler>>16&255),Yo(n,e.adler>>24&255),Yo(n,255&e.total_in),Yo(n,e.total_in>>8&255),Yo(n,e.total_in>>16&255),Yo(n,e.total_in>>24&255)):(Jo(n,e.adler>>>16),Jo(n,65535&e.adler)),Ko(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?Ao:Co)},deflateEnd:e=>{if(aa(e))return To;const t=e.state.status;return e.state=null,t===Fo?Ho(e,So):Ao},deflateSetDictionary:(e,t)=>{let n=t.length;if(aa(e))return To;const r=e.state,i=r.wrap;if(2===i||1===i&&r.status!==Mo||r.lookahead)return To;if(1===i&&(e.adler=lo(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){0===i&&(Vo(r.head),r.strstart=0,r.block_start=0,r.insert=0);let e=new Uint8Array(r.w_size);e.set(t.subarray(n-r.w_size,n),0),t=e,n=r.w_size}const s=e.avail_in,o=e.next_in,a=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,ea(r);r.lookahead>=3;){let e=r.strstart,t=r.lookahead-2;do{r.ins_h=Zo(r,r.ins_h,r.window[e+3-1]),r.prev[e&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=e,e++}while(--t);r.strstart=e,r.lookahead=2,ea(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=o,e.input=a,e.avail_in=s,r.wrap=i,Ao},deflateInfo:"pako deflate (from Nodeca project)"};const ua=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var pa={assign:function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const n=t.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const t in n)ua(n,t)&&(e[t]=n[t])}}return e},flattenChunks:e=>{let t=0;for(let n=0,r=e.length;n=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;ma[254]=ma[254]=1;var ga={string2buf:e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,n,r,i,s,o=e.length,a=0;for(i=0;i>>6,t[s++]=128|63&n):n<65536?(t[s++]=224|n>>>12,t[s++]=128|n>>>6&63,t[s++]=128|63&n):(t[s++]=240|n>>>18,t[s++]=128|n>>>12&63,t[s++]=128|n>>>6&63,t[s++]=128|63&n);return t},buf2string:(e,t)=>{const n=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let r,i;const s=new Array(2*n);for(i=0,r=0;r4)s[i++]=65533,r+=o-1;else{for(t&=2===o?31:3===o?15:7;o>1&&r1?s[i++]=65533:t<65536?s[i++]=t:(t-=65536,s[i++]=55296|t>>10&1023,s[i++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&fa)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+ma[e[n]]>t?n:t}},ba=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const wa=Object.prototype.toString,{Z_NO_FLUSH:ya,Z_SYNC_FLUSH:va,Z_FULL_FLUSH:_a,Z_FINISH:ka,Z_OK:Ea,Z_STREAM_END:xa,Z_DEFAULT_COMPRESSION:Aa,Z_DEFAULT_STRATEGY:Ca,Z_DEFLATED:Ta}=fo;function Sa(e){this.options=pa.assign({level:Aa,method:Ta,chunkSize:16384,windowBits:15,memLevel:8,strategy:Ca},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ba,this.strm.avail_out=0;let n=ha.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Ea)throw new Error(po[n]);if(t.header&&ha.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?ga.string2buf(t.dictionary):"[object ArrayBuffer]"===wa.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,n=ha.deflateSetDictionary(this.strm,e),n!==Ea)throw new Error(po[n]);this._dict_set=!0}}function Ia(e,t){const n=new Sa(t);if(n.push(e,!0),n.err)throw n.msg||po[n.err];return n.result}Sa.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize;let i,s;if(this.ended)return!1;for(s=t===~~t?t:!0===t?ka:ya,"string"==typeof e?n.input=ga.string2buf(e):"[object ArrayBuffer]"===wa.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;)if(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(s===va||s===_a)&&n.avail_out<=6)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else{if(i=ha.deflate(n,s),i===xa)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=ha.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Ea;if(0!==n.avail_out){if(s>0&&n.next_out>0)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else if(0===n.avail_in)break}else this.onData(n.output)}return!0},Sa.prototype.onData=function(e){this.chunks.push(e)},Sa.prototype.onEnd=function(e){e===Ea&&(this.result=pa.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ja={Deflate:Sa,deflate:Ia,deflateRaw:function(e,t){return(t=t||{}).raw=!0,Ia(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,Ia(e,t)},constants:fo};const La=16209;var Oa=function(e,t){let n,r,i,s,o,a,c,l,d,h,u,p,f,m,g,b,w,y,v,_,k,E,x,A;const C=e.state;n=e.next_in,x=e.input,r=n+(e.avail_in-5),i=e.next_out,A=e.output,s=i-(t-e.avail_out),o=i+(e.avail_out-257),a=C.dmax,c=C.wsize,l=C.whave,d=C.wnext,h=C.window,u=C.hold,p=C.bits,f=C.lencode,m=C.distcode,g=(1<>>24,u>>>=y,p-=y,y=w>>>16&255,0===y)A[i++]=65535&w;else{if(!(16&y)){if(64&y){if(32&y){C.mode=16191;break e}e.msg="invalid literal/length code",C.mode=La;break e}w=f[(65535&w)+(u&(1<>>=y,p-=y),p<15&&(u+=x[n++]<>>24,u>>>=y,p-=y,y=w>>>16&255,16&y){if(_=65535&w,y&=15,pa){e.msg="invalid distance too far back",C.mode=La;break e}if(u>>>=y,p-=y,y=i-s,_>y){if(y=_-y,y>l&&C.sane){e.msg="invalid distance too far back",C.mode=La;break e}if(k=0,E=h,0===d){if(k+=c-y,y2;)A[i++]=E[k++],A[i++]=E[k++],A[i++]=E[k++],v-=3;v&&(A[i++]=E[k++],v>1&&(A[i++]=E[k++]))}else{k=i-_;do{A[i++]=A[k++],A[i++]=A[k++],A[i++]=A[k++],v-=3}while(v>2);v&&(A[i++]=A[k++],v>1&&(A[i++]=A[k++]))}break}if(64&y){e.msg="invalid distance code",C.mode=La;break e}w=m[(65535&w)+(u&(1<>3,n-=v,p-=v<<3,u&=(1<{const c=a.bits;let l,d,h,u,p,f,m=0,g=0,b=0,w=0,y=0,v=0,_=0,k=0,E=0,x=0,A=null;const C=new Uint16Array(16),T=new Uint16Array(16);let S,I,j,L=null;for(m=0;m<=15;m++)C[m]=0;for(g=0;g=1&&0===C[w];w--);if(y>w&&(y=w),0===w)return i[s++]=20971520,i[s++]=20971520,a.bits=1,0;for(b=1;b0&&(0===e||1!==w))return-1;for(T[1]=0,m=1;m<15;m++)T[m+1]=T[m]+C[m];for(g=0;g852||2===e&&E>592)return 1;for(;;){S=m-_,o[g]+1=f?(I=L[o[g]-f],j=A[o[g]-f]):(I=96,j=0),l=1<>_)+d]=S<<24|I<<16|j}while(0!==d);for(l=1<>=1;if(0!==l?(x&=l-1,x+=l):x=0,g++,0==--C[m]){if(m===w)break;m=t[n+o[g]]}if(m>y&&(x&u)!==h){for(0===_&&(_=y),p+=b,v=m-_,k=1<852||2===e&&E>592)return 1;h=x&u,i[h]=y<<24|v<<16|p-s}}return 0!==x&&(i[p+x]=m-_<<24|64<<16),a.bits=y,0};const{Z_FINISH:Pa,Z_BLOCK:Ua,Z_TREES:Ma,Z_OK:Fa,Z_STREAM_END:$a,Z_NEED_DICT:Ha,Z_STREAM_ERROR:qa,Z_DATA_ERROR:Va,Z_MEM_ERROR:Wa,Z_BUF_ERROR:Za,Z_DEFLATED:Ka}=fo,Ga=16180,Ya=16190,Ja=16191,Xa=16192,Qa=16194,ec=16199,tc=16200,nc=16206,rc=16209,ic=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function sc(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const oc=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode16211?1:0},ac=e=>{if(oc(e))return qa;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Ga,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,Fa},cc=e=>{if(oc(e))return qa;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,ac(e)},lc=(e,t)=>{let n;if(oc(e))return qa;const r=e.state;return t<0?(n=0,t=-t):(n=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?qa:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,cc(e))},dc=(e,t)=>{if(!e)return qa;const n=new sc;e.state=n,n.strm=e,n.window=null,n.mode=Ga;const r=lc(e,t);return r!==Fa&&(e.state=null),r};let hc,uc,pc=!0;const fc=e=>{if(pc){hc=new Int32Array(512),uc=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Na(1,e.lens,0,288,hc,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Na(2,e.lens,0,32,uc,0,e.work,{bits:5}),pc=!1}e.lencode=hc,e.lenbits=9,e.distcode=uc,e.distbits=5},mc=(e,t,n,r)=>{let i;const s=e.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(t.subarray(n-s.wsize,n),0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),s.window.set(t.subarray(n-r,n-r+i),s.wnext),(r-=i)?(s.window.set(t.subarray(n-r,n),0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whavedc(e,15),inflateInit2:dc,inflate:(e,t)=>{let n,r,i,s,o,a,c,l,d,h,u,p,f,m,g,b,w,y,v,_,k,E,x=0;const A=new Uint8Array(4);let C,T;const S=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(oc(e)||!e.output||!e.input&&0!==e.avail_in)return qa;n=e.state,n.mode===Ja&&(n.mode=Xa),o=e.next_out,i=e.output,c=e.avail_out,s=e.next_in,r=e.input,a=e.avail_in,l=n.hold,d=n.bits,h=a,u=c,E=Fa;e:for(;;)switch(n.mode){case Ga:if(0===n.wrap){n.mode=Xa;break}for(;d<16;){if(0===a)break e;a--,l+=r[s++]<>>8&255,n.check=uo(n.check,A,2,0),l=0,d=0,n.mode=16181;break}if(n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&l)<<8)+(l>>8))%31){e.msg="incorrect header check",n.mode=rc;break}if((15&l)!==Ka){e.msg="unknown compression method",n.mode=rc;break}if(l>>>=4,d-=4,k=8+(15&l),0===n.wbits&&(n.wbits=k),k>15||k>n.wbits){e.msg="invalid window size",n.mode=rc;break}n.dmax=1<>8&1),512&n.flags&&4&n.wrap&&(A[0]=255&l,A[1]=l>>>8&255,n.check=uo(n.check,A,2,0)),l=0,d=0,n.mode=16182;case 16182:for(;d<32;){if(0===a)break e;a--,l+=r[s++]<>>8&255,A[2]=l>>>16&255,A[3]=l>>>24&255,n.check=uo(n.check,A,4,0)),l=0,d=0,n.mode=16183;case 16183:for(;d<16;){if(0===a)break e;a--,l+=r[s++]<>8),512&n.flags&&4&n.wrap&&(A[0]=255&l,A[1]=l>>>8&255,n.check=uo(n.check,A,2,0)),l=0,d=0,n.mode=16184;case 16184:if(1024&n.flags){for(;d<16;){if(0===a)break e;a--,l+=r[s++]<>>8&255,n.check=uo(n.check,A,2,0)),l=0,d=0}else n.head&&(n.head.extra=null);n.mode=16185;case 16185:if(1024&n.flags&&(p=n.length,p>a&&(p=a),p&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(s,s+p),k)),512&n.flags&&4&n.wrap&&(n.check=uo(n.check,r,p,s)),a-=p,s+=p,n.length-=p),n.length))break e;n.length=0,n.mode=16186;case 16186:if(2048&n.flags){if(0===a)break e;p=0;do{k=r[s+p++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k))}while(k&&p>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=Ja;break;case 16189:for(;d<32;){if(0===a)break e;a--,l+=r[s++]<>>=7&d,d-=7&d,n.mode=nc;break}for(;d<3;){if(0===a)break e;a--,l+=r[s++]<>>=1,d-=1,3&l){case 0:n.mode=16193;break;case 1:if(fc(n),n.mode=ec,t===Ma){l>>>=2,d-=2;break e}break;case 2:n.mode=16196;break;case 3:e.msg="invalid block type",n.mode=rc}l>>>=2,d-=2;break;case 16193:for(l>>>=7&d,d-=7&d;d<32;){if(0===a)break e;a--,l+=r[s++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=rc;break}if(n.length=65535&l,l=0,d=0,n.mode=Qa,t===Ma)break e;case Qa:n.mode=16195;case 16195:if(p=n.length,p){if(p>a&&(p=a),p>c&&(p=c),0===p)break e;i.set(r.subarray(s,s+p),o),a-=p,s+=p,c-=p,o+=p,n.length-=p;break}n.mode=Ja;break;case 16196:for(;d<14;){if(0===a)break e;a--,l+=r[s++]<>>=5,d-=5,n.ndist=1+(31&l),l>>>=5,d-=5,n.ncode=4+(15&l),l>>>=4,d-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=rc;break}n.have=0,n.mode=16197;case 16197:for(;n.have>>=3,d-=3}for(;n.have<19;)n.lens[S[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,C={bits:n.lenbits},E=Na(0,n.lens,0,19,n.lencode,0,n.work,C),n.lenbits=C.bits,E){e.msg="invalid code lengths set",n.mode=rc;break}n.have=0,n.mode=16198;case 16198:for(;n.have>>24,b=x>>>16&255,w=65535&x,!(g<=d);){if(0===a)break e;a--,l+=r[s++]<>>=g,d-=g,n.lens[n.have++]=w;else{if(16===w){for(T=g+2;d>>=g,d-=g,0===n.have){e.msg="invalid bit length repeat",n.mode=rc;break}k=n.lens[n.have-1],p=3+(3&l),l>>>=2,d-=2}else if(17===w){for(T=g+3;d>>=g,d-=g,k=0,p=3+(7&l),l>>>=3,d-=3}else{for(T=g+7;d>>=g,d-=g,k=0,p=11+(127&l),l>>>=7,d-=7}if(n.have+p>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=rc;break}for(;p--;)n.lens[n.have++]=k}}if(n.mode===rc)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=rc;break}if(n.lenbits=9,C={bits:n.lenbits},E=Na(1,n.lens,0,n.nlen,n.lencode,0,n.work,C),n.lenbits=C.bits,E){e.msg="invalid literal/lengths set",n.mode=rc;break}if(n.distbits=6,n.distcode=n.distdyn,C={bits:n.distbits},E=Na(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,C),n.distbits=C.bits,E){e.msg="invalid distances set",n.mode=rc;break}if(n.mode=ec,t===Ma)break e;case ec:n.mode=tc;case tc:if(a>=6&&c>=258){e.next_out=o,e.avail_out=c,e.next_in=s,e.avail_in=a,n.hold=l,n.bits=d,Oa(e,u),o=e.next_out,i=e.output,c=e.avail_out,s=e.next_in,r=e.input,a=e.avail_in,l=n.hold,d=n.bits,n.mode===Ja&&(n.back=-1);break}for(n.back=0;x=n.lencode[l&(1<>>24,b=x>>>16&255,w=65535&x,!(g<=d);){if(0===a)break e;a--,l+=r[s++]<>y)],g=x>>>24,b=x>>>16&255,w=65535&x,!(y+g<=d);){if(0===a)break e;a--,l+=r[s++]<>>=y,d-=y,n.back+=y}if(l>>>=g,d-=g,n.back+=g,n.length=w,0===b){n.mode=16205;break}if(32&b){n.back=-1,n.mode=Ja;break}if(64&b){e.msg="invalid literal/length code",n.mode=rc;break}n.extra=15&b,n.mode=16201;case 16201:if(n.extra){for(T=n.extra;d>>=n.extra,d-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=16202;case 16202:for(;x=n.distcode[l&(1<>>24,b=x>>>16&255,w=65535&x,!(g<=d);){if(0===a)break e;a--,l+=r[s++]<>y)],g=x>>>24,b=x>>>16&255,w=65535&x,!(y+g<=d);){if(0===a)break e;a--,l+=r[s++]<>>=y,d-=y,n.back+=y}if(l>>>=g,d-=g,n.back+=g,64&b){e.msg="invalid distance code",n.mode=rc;break}n.offset=w,n.extra=15&b,n.mode=16203;case 16203:if(n.extra){for(T=n.extra;d>>=n.extra,d-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=rc;break}n.mode=16204;case 16204:if(0===c)break e;if(p=u-c,n.offset>p){if(p=n.offset-p,p>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=rc;break}p>n.wnext?(p-=n.wnext,f=n.wsize-p):f=n.wnext-p,p>n.length&&(p=n.length),m=n.window}else m=i,f=o-n.offset,p=n.length;p>c&&(p=c),c-=p,n.length-=p;do{i[o++]=m[f++]}while(--p);0===n.length&&(n.mode=tc);break;case 16205:if(0===c)break e;i[o++]=n.length,c--,n.mode=tc;break;case nc:if(n.wrap){for(;d<32;){if(0===a)break e;a--,l|=r[s++]<{if(oc(e))return qa;let t=e.state;return t.window&&(t.window=null),e.state=null,Fa},inflateGetHeader:(e,t)=>{if(oc(e))return qa;const n=e.state;return 2&n.wrap?(n.head=t,t.done=!1,Fa):qa},inflateSetDictionary:(e,t)=>{const n=t.length;let r,i,s;return oc(e)?qa:(r=e.state,0!==r.wrap&&r.mode!==Ya?qa:r.mode===Ya&&(i=1,i=lo(i,t,n,0),i!==r.check)?Va:(s=mc(e,t,n,n),s?(r.mode=16210,Wa):(r.havedict=1,Fa)))},inflateInfo:"pako inflate (from Nodeca project)"},bc=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const wc=Object.prototype.toString,{Z_NO_FLUSH:yc,Z_FINISH:vc,Z_OK:_c,Z_STREAM_END:kc,Z_NEED_DICT:Ec,Z_STREAM_ERROR:xc,Z_DATA_ERROR:Ac,Z_MEM_ERROR:Cc}=fo;function Tc(e){this.options=pa.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ba,this.strm.avail_out=0;let n=gc.inflateInit2(this.strm,t.windowBits);if(n!==_c)throw new Error(po[n]);if(this.header=new bc,gc.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=ga.string2buf(t.dictionary):"[object ArrayBuffer]"===wc.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=gc.inflateSetDictionary(this.strm,t.dictionary),n!==_c)))throw new Error(po[n])}function Sc(e,t){const n=new Tc(t);if(n.push(e),n.err)throw n.msg||po[n.err];return n.result}Tc.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let s,o,a;if(this.ended)return!1;for(o=t===~~t?t:!0===t?vc:yc,"[object ArrayBuffer]"===wc.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),s=gc.inflate(n,o),s===Ec&&i&&(s=gc.inflateSetDictionary(n,i),s===_c?s=gc.inflate(n,o):s===Ac&&(s=Ec));n.avail_in>0&&s===kc&&n.state.wrap>0&&0!==e[n.next_in];)gc.inflateReset(n),s=gc.inflate(n,o);switch(s){case xc:case Ac:case Ec:case Cc:return this.onEnd(s),this.ended=!0,!1}if(a=n.avail_out,n.next_out&&(0===n.avail_out||s===kc))if("string"===this.options.to){let e=ga.utf8border(n.output,n.next_out),t=n.next_out-e,i=ga.buf2string(n.output,e);n.next_out=t,n.avail_out=r-t,t&&n.output.set(n.output.subarray(e,e+t),0),this.onData(i)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(s!==_c||0!==a){if(s===kc)return s=gc.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===n.avail_in)break}}return!0},Tc.prototype.onData=function(e){this.chunks.push(e)},Tc.prototype.onEnd=function(e){e===_c&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=pa.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var Ic={Inflate:Tc,inflate:Sc,inflateRaw:function(e,t){return(t=t||{}).raw=!0,Sc(e,t)},ungzip:Sc,constants:fo};const{Deflate:jc,deflate:Lc,deflateRaw:Oc,gzip:Dc}=ja,{Inflate:Rc,inflate:Bc,inflateRaw:zc,ungzip:Nc}=Ic;var Pc=Lc,Uc=Bc;const Mc={encode:e=>{const t=Array.from(e).map((e=>e.codePointAt(0)||0)),n=[];for(const e of t)e<=127?n.push(e):e<=2047?(n.push(e>>6|192),n.push(63&e|128)):e<=65535?(n.push(e>>12|224),n.push(e>>6&63|128),n.push(63&e|128)):e<=1114111&&(n.push(e>>18|240),n.push(e>>12&63|128),n.push(e>>6&63|128),n.push(63&e|128));return Uint8Array.from(n).buffer},decode:e=>{const t=new Uint8Array(e);let n="",r=0;for(;r=n)return new ArrayBuffer(0);const i=qc(this,Hc,Vc(this,Hc,"f")+e,"f");return i>n?t.slice(r,n):t.slice(r,i)}};var Zc,Kc=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Zc=new WeakMap;const Gc=class{constructor(){Zc.set(this,[])}write(e){const t=Kc(this,Zc,"f");switch(typeof e){case"number":t.push(e);break;case"object":Array.isArray(e)?t.push(Uint8Array.from(e).buffer):ArrayBuffer.isView(e)?t.push(e.buffer):t.push(new DataView(e,0,0).buffer);break;default:throw new Error("Invalid value: "+e)}}toArrayBuffer(e){const t=Kc(this,Zc,"f");if((e||(e=0))<=0)for(const n of t)e+="number"==typeof n?1:n.byteLength;const n=new Uint8Array(new ArrayBuffer(e),0,e);e=0;for(const r of t){if("number"==typeof r){n[e++]=r;continue}const t=r.byteLength;n.set(new Uint8Array(r,0,t),e),e+=t}return n.buffer}};function Yc(e){try{return new DataView(e,0,0),!0}catch(e){return!1}}function Jc(e){const t=e.buffer,n=e.byteOffset,r=e.byteLength;return 0===n&&r===t.byteLength?t:t.slice(n,n+r)}function Xc(e,t){const n=Fc.encode(t),r=new DataView(new ArrayBuffer(4),0,4);r.setUint32(0,n.byteLength,!0),e.write(r),e.write(n)}function Qc(e,t){const n=new DataView(new ArrayBuffer(5),0,5);n.setUint8(0,102),n.setUint32(1,t.byteLength,!0),e.write(n),e.write(t)}function el(e,t){switch(typeof t){case"string":e.write(101),Xc(e,t);break;case"boolean":e.write([10,t?1:0]);break;case"undefined":e.write(0);break;case"number":{if(Number.isSafeInteger(t))if(t>=0){if(t<=255){const n=new DataView(new ArrayBuffer(2),0,2);return n.setUint8(0,10),n.setUint8(1,t),void e.write(n)}if(t<=65535){const n=new DataView(new ArrayBuffer(3),0,3);return n.setUint8(0,11),n.setUint16(1,t,!0),void e.write(n)}if(t<=4294967295){const n=new DataView(new ArrayBuffer(5),0,5);return n.setUint8(0,12),n.setUint32(1,t,!0),void e.write(n)}}else{if(t>=-128&&t<128){const n=new DataView(new ArrayBuffer(2),0,2);return n.setUint8(0,20),n.setInt8(1,t),void e.write(n)}if(t>=-32768&&t<32768){const n=new DataView(new ArrayBuffer(3),0,3);return n.setUint8(0,21),n.setInt16(1,t,!0),void e.write(n)}if(t>=-2147483648&&t<2147483648){const n=new DataView(new ArrayBuffer(5),0,5);return n.setUint8(0,22),n.setInt32(1,t,!0),void e.write(n)}}const n=new DataView(new ArrayBuffer(9),0,9);n.setUint8(0,33),n.setFloat64(1,t,!0),e.write(n)}break;case"bigint":{const n=new DataView(new ArrayBuffer(9),0,9);t>=0n?(n.setUint8(0,13),n.setBigUint64(1,t,!0)):(n.setUint8(0,23),n.setBigUint64(1,t,!0)),e.write(n)}break;case"object":null===t?e.write(255):Array.isArray(t)?function(e,t){const n=new DataView(new ArrayBuffer(5),0,5);n.setUint8(0,99),n.setUint32(1,t.length,!0),e.write(n);for(const n of t)el(e,n)}(e,t):Yc(t)?Qc(e,t):ArrayBuffer.isView(t)?Qc(e,Jc(t)):function(e,t){if("function"==typeof t.toJSON)return void el(e,t.toJSON());const n=Object.keys(t);{const t=new DataView(new ArrayBuffer(5),0,5);t.setUint8(0,100),t.setUint32(1,n.length,!0),e.write(t)}for(const r of n){const n=t[r];switch(typeof n){case"boolean":case"bigint":case"number":case"object":case"string":case"undefined":Xc(e,r),el(e,n)}}}(e,t)}}function tl(e,t){if("object"!=typeof e||null==e)throw new Error("Data must be a non-null object or array.");if("object"!=typeof(t||(t={})))throw new Error("The options parameter must be an object.");{const t=new Gc;el(t,e),e=t.toArrayBuffer()}const n=t.compressMethod||0,r=t.compressLevel||5;switch(n){case 0:break;case 1:e=Pc(e,{raw:!0,level:r,memLevel:9,chunkSize:8192,windowBits:15});break;case 3:e=Pc(e,{gzip:!0,level:r,memLevel:9,chunkSize:8192,windowBits:15});break;case 2:case 4:case 5:case 6:throw new Error("Not implemented");default:throw new Error("Unknown compress method: "+n)}const i=new Uint8Array(new ArrayBuffer(e.byteLength+7));return i[0]=128,i[1]=99,i[2]=98,i[3]=106,i[4]=102,i[5]=1,i[6]=n,i.set(new Uint8Array(e),7),i.buffer}function nl(e){const t=e.read();switch(t){case 0:return;case 255:return null;case 10:return e.read();case 11:return new DataView(e.readNBytes(2),0,2).getUint16(0,!0);case 12:return new DataView(e.readNBytes(4),0,4).getUint32(0,!0);case 13:return new DataView(e.readNBytes(8),0,8).getBigUint64(0,!0);case 20:return e.read()<<8>>8;case 21:return new DataView(e.readNBytes(2),0,2).getInt16(0,!0);case 22:return new DataView(e.readNBytes(4),0,4).getInt32(0,!0);case 23:return new DataView(e.readNBytes(8),0,8).getBigInt64(0,!0);case 32:return new DataView(e.readNBytes(4),0,4).getFloat32(0,!0);case 33:return new DataView(e.readNBytes(8),0,8).getFloat64(0,!0);case 99:return function(e){const t=new DataView(e.readNBytes(4),0,4).getUint32(0,!0),n=new Array(t);for(let r=0;r{function n(e){const n=t.getElementById(e);if(null==n)throw new Error("Element does not exist: "+e);return n}function r(e){const n=t.querySelector(e);if(n instanceof HTMLElement)return n;throw new Error("Failed to query selector: "+e)}function i(e){null!=e?(f.textContent=e,f.style.display="block"):f.style.display="none"}function s(e){m.appendChild(o(e)),g.style.display="block"}function o(n){if(e.crossOriginIsolated){const r=t.createElement("iframe");return r.setAttribute("width","1024"),r.setAttribute("height","768"),r.setAttribute("allowfullscreen","true"),r.setAttribute("allowpaymentrequest","true"),r.setAttribute("name","Frame"),r.setAttribute("allow","fullscreen payment"),r.setAttribute("loading","lazy"),r.setAttribute("frameborder","0"),r.setAttribute("credentialless","true"),r.setAttribute("referrerpolicy","no-referrer"),r.onload=()=>{r.onload=null,r.setAttribute("src","data:application/xhtml+xml;base64,"+ei.encode(ni.encode(`\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tGoogle\n\t\t\n\t\n\t\n\t\t\n\t\n`)))},r}const r=t.createElement("embed");return r.setAttribute("type","text/plain"),r.setAttribute("width","1024"),r.setAttribute("height","768"),r.setAttribute("src",n),r}function a(e){try{return new URL(e)}catch(e){return null}}function c(t){const n=e.open(void 0,"_blank","");if(null==n)return void i("Please allow popups in your browser settings and try again.");n.focus();const r=y.parseFromString(`\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tGoogle\n\t\n\t\n\t\t\x3c!-- dummy --\x3e\n\t\n`,"application/xml");t.remove(),r.body.appendChild(t),n.document.documentElement.replaceWith(r.documentElement)}async function l(t,n){try{const r=await e.fetch(t,{cache:n||"force-cache",method:"GET"});return r.ok?await r.text():null}catch(e){return null}}function d(e,t){return new Promise(((n,r)=>{const i=Date.now().toString(36),s=(e,t,a)=>{e===i&&(C.off("res",s),C.off("disconnect",o),null!=a?r(a):n(t))},o=()=>{C.off("res",s),C.off("disconnect",o),r(new Error("Server connection interrupted"))};C.on("res",s),C.on("disconnect",o),C.emit("fetch",i,e,t)}))}"complete"!==t.readyState&&await new Promise((e=>{const n=()=>{"complete"===t.readyState&&(t.removeEventListener("readystatechange",n),e())};t.addEventListener("readystatechange",n,{passive:!0})})),e.stop(),e.focus(),e.onerror=(e,t,n,r,i)=>{let s="Unhandled error at "+(t||"unknown source ");null!=n&&(s+=n),null!=r&&(s+=":"+r),null!=i&&(s+="\n\n"+i),console.error(s),f.textContent=s,f.style.display="block"},e.onkeydown=e=>{if(e.ctrlKey&&!e.altKey&&!e.metaKey&&!e.shiftKey)switch(e.key){case"q":e.preventDefault(),e.stopPropagation(),h.replace("https://www.google.com/webhp?igu=1");break;case"b":e.preventDefault(),e.stopPropagation();const{body:n}=t;n.hasAttribute("style")?n.removeAttribute("style"):n.setAttribute("style","filter: blur(15px);");break;case"h":e.preventDefault(),e.stopPropagation(),"WhiteSpider"===t.title?(t.title="Google",r("link[rel*='icon']").href="/res/google.ico"):(t.title="WhiteSpider",r("link[rel*='icon']").href="/favicon.ico")}},e.onappinstalled=e=>{e.preventDefault(),e.stopPropagation(),w.style.display="none"},e.onbeforeinstallprompt=e=>{e.preventDefault(),e.stopPropagation(),w.style.display="block",w.onclick=()=>{e.prompt()}};const h=e.location,u=e.history,p=h.pathname,f=n("error"),m=n("frame"),g=n("frame-view"),b=n("status"),w=n("install"),y=new DOMParser,v=r('link[rel="canonical"]'),_=(...t)=>e.console.log(...t);{const{_a:P,_b:U,_d:M,_e:F,_f:$,_g:H,_h:q,_i:V,_j:W,_k:Z,_l:K,_m:G,_n:Y,_o:J,_v:X,_w:Q,_p:ee,_q:te,_r:ne}=ol;if((()=>{_(P,U);const e=new URL(h.href),n=e.hostname,r=e.origin;switch(e.protocol){case"http:":if("localhost"!==n)return e.protocol="https:",e.pathname="/",e.host=n,h.replace(e.href),!1;break;case"https:":break;default:return!0}switch(n){case"whitespider.cf":case"whitespider.tk":case"whitespider.gq":case"whitespider.web.app":case"whitespider.pages.dev":case"whitespider.firebaseapp.com":return e.host="whitespider.dev",e.pathname="/",h.replace(e.href),!1}{const e=t[J](q);if(null==e||e[W](V)!==K)return!0}for(const e of t[G](Y)){switch(e[W]("type")||""){case"":case"text/javascript":case"application/javascript":break;default:return e.remove(),!0}const t=e[W]("src");if(!t||e.textContent)return e.remove(),!0;const n=new URL(t.startsWith("//")?"https:"+t:t,r);if(n.origin!==r){if("https:"===n.protocol){const e=n.host.split("."),t=e.length;if("com"===e[t-1]){const n=e[t-2];if(n.indexOf("google")>=0||n.indexOf("firebase")>=0)continue}}return e.remove(),!0}}return v[W]("href")!==$||null==t[J](ee)||null==t[J](te)||t[ne]!==P.slice(2,13)})()){_(F,Z);const re=y.parseFromString(X,"application/xhtml+xml");re.title=H;const ie=re.body;ie.innerHTML=M;{const se=re.createElement("button");se.innerHTML=Q,se.setAttribute("type","button"),se.addEventListener("click",(()=>{h.replace($)}),{passive:!0}),ie.appendChild(se)}return void t.documentElement.replaceWith(re.documentElement)}for(const oe of Object.getOwnPropertyNames(ol))2===oe.length&&delete ol[oe]}if(e!==e.top){if("null"===h.ancestorOrigins?.item(0)){const ae=t.createElement("div");return ae.textContent="Click here to continue",ae.onclick=()=>c(o("https://whitespider.dev/")),ae.setAttribute("style","padding: 15px;"),t.body.innerHTML="",void t.body.appendChild(ae)}if("https://whitespider.dev"!==h.origin)return void h.replace("https://whitespider.dev/")}const k=t.documentElement.clientWidth<800,E=new Yr(e),{localStorage:x}=E;let A,C,T,S,I,j=null,L=null;const O=[],D=[];if(e.isSecureContext??"https:"===h.protocol){if(E.persistent)try{const ce=await l("/manifest.json","no-cache");if(null!=ce){const le=JSON.parse(ce).version;if(le!==x.get("__mf_version")){t.body.innerHTML="Updating contents...";const de=e.caches;for(const he of await de.keys())await de.delete(he);return x.delete("__new_read"),x.set("__mf_version",le),void h.reload()}n("version").textContent="v"+le}A=x.get("__secrets_")||void 0}catch(ue){}else i("Warning: Cookies are blocked by your browser. Some features might not work properly, and your game data will NOT be saved.");try{const pe=e.navigator.serviceWorker;null!=pe&&(await pe.register("/sw.js",{type:"classic",scope:"/",updateViaCache:"none"}),await pe.ready)}catch(fe){}}try{const me=await e.fetch("/d/index.json",{mode:"same-origin",cache:"no-cache",method:"GET"});if(!me.ok)throw new Error("Remote returned error status code: "+me.status);const ge=il(await me.arrayBuffer());for(const be of ge)O.push(be);for(const we of ge.sort(((e,t)=>t.date-e.date)).slice(0,200))D.push(we)}catch(ye){return void i("Failed to initialize local game list. Message: "+String(ye))}f.onclick=()=>{f.innerHTML="",f.style.display="none"},n("frame-close").onclick=()=>{m.innerHTML="",g.style.display="none",u.replaceState(void 0,"","/"),v.setAttribute("href","https://whitespider.dev/")},n("frame-newtab").onclick=()=>{const e=m.firstElementChild;null!=e&&(m.innerHTML="",g.style.display="none",c(e))};{const ve=r("link[rel*='icon']"),_e=n("backend-url"),ke=n("theme"),xe=n("tab-cloaking");let Ae;function Ce(e){null!=C&&(C.disconnect(),C.close()),C=Ee(e||ll,{path:"/_api_/",secure:!0,upgrade:!0,timeout:1e4,forceNew:!0,multiplex:!1,transports:["polling"],autoConnect:!0,reconnection:!0,rememberUpgrade:!0,reconnectionDelay:5e3,closeOnBeforeunload:!0}),b.innerHTML="Connecting...",b.style.color="#808000",C.io.on("open",(()=>{b.innerHTML="✓Connected",b.style.color="#008000"})),C.io.on("close",(()=>{b.innerHTML="✕Disconnected",b.style.color="#ff0000"})),C.io.on("reconnect_attempt",(()=>{b.innerHTML="Connecting...",b.style.color="#808000"})),C.io.on("reconnect_error",(()=>{b.innerHTML="✕Disconnected",b.style.color="#ff0000"})),C.io.on("reconnect",(()=>{b.innerHTML="✓Connected",b.style.color="#008000",null!=j&&j()}))}function Te(e){switch(null==Ae&&(Ae=t.createElement("link"),Ae.rel="stylesheet",Ae.type="text/css",Ae.href="index.dark.css",t.head.appendChild(Ae)),e){case"light":Ae.disabled=!0,Ae.removeAttribute("media");break;case"dark":Ae.disabled=!1,Ae.removeAttribute("media");break;default:Ae.media="all and (prefers-color-scheme: dark)",Ae.disabled=!1}}function Se(e){switch(e){case"empty":T=!0,t.title="⁠",ve.type="image/x-icon",ve.href="/res/empty.ico";break;case"google":T=!0,t.title="Google",ve.type="image/x-icon",ve.href="/res/google.ico";break;case"classroom":T=!0,t.title="Home",ve.type="image/png",ve.href="/res/classroom.png";break;default:T=!1,t.title="WhiteSpider",ve.type="image/x-icon",ve.href="/favicon.ico"}}_e.onblur=()=>{const e=a(_e.value.trim());if(null!=e){const t=e.href;x.set("__backendURL_",t),Ce(_e.value=t)}else x.delete("__backendURL_"),Ce(_e.value="")},ke.onchange=()=>{const e=ke.value;Te(e),x.set("__set_theme",e)},xe.onchange=()=>{const e=xe.value;Se(e),x.set("__set_tabc",e)};{const Ie=x.get("__backendURL_")||"";Ce(Ie),_e.value=Ie}{const je=x.get("__set_theme")||"default";Te(je),ke.value=je}{const Le=x.get("__set_tabc")||"disabled";Se(Le),xe.value=Le}}{const Oe=n("game-container"),De=n("game-frame"),Re=n("player"),Be=n("name"),ze=n("type"),Ne=n("tags"),Pe=n("date"),Ue=n("user"),Me=n("desc"),Fe=n("gnav-back"),$e=n("gnav-forward"),He=n("gnav-page-no"),qe=n("gnav-page-count"),Ve=[],We=[];let Ze=0,Ke="all",Ge="";d(15).then((e=>{for(const t of Object.keys(e).map((t=>({k:parseInt(t,36),v:e[t]}))).sort(((e,t)=>t.v-e.v)).slice(0,100))for(const e of O)if(e.date===t.k){We.push(e);break}})).catch((e=>{i("Failed to fetch remote game data. Message: "+String(e))}));{const et=n("game-search"),tt=r("#game-search>input");let nt=0;function rt(){Ge=tt.value.toLowerCase().trim(),Je()}et.onsubmit=e=>{e.preventDefault(),e.stopPropagation(),clearTimeout(nt),rt()},tt.onblur=()=>{clearTimeout(nt),rt()},tt.oninput=()=>{clearTimeout(nt),nt=setTimeout((()=>{rt()}),1e3)}}{const it=t.querySelectorAll("#game-category>button");for(const st of it)st.onclick=()=>{for(const e of it)e.removeAttribute("current");st.setAttribute("current","true"),Ke=st.getAttribute("match")||"all",Je()}}{const ot=r('#game-category>button[match="new"]');x.has("__new_read")||(ot.setAttribute("unread","true"),ot.addEventListener("click",(()=>{ot.removeAttribute("unread"),x.set("__new_read","1")}),{once:!0,passive:!0}))}function Ye(){switch(Ke){case"all":return Ge.length>0?O.filter((e=>e.name.toLowerCase().indexOf(Ge)>=0||e.tags.indexOf(Ge)>=0)):O;case"new":return Ge.length>0?D.filter((e=>e.name.toLowerCase().indexOf(Ge)>=0||e.tags.indexOf(Ge)>=0)):D;case"hot":return Ge.length>0?We.filter((e=>e.name.toLowerCase().indexOf(Ge)>=0||e.tags.indexOf(Ge)>=0)):We;case"html5":return O.filter((e=>"html5"===e.type&&(0===Ge.length||e.name.toLowerCase().indexOf(Ge)>=0||e.tags.indexOf(Ge)>=0)));case"flash":return O.filter((e=>"flash"===e.type&&(0===Ge.length||e.name.toLowerCase().indexOf(Ge)>=0||e.tags.indexOf(Ge)>=0)));case"dos":return O.filter((e=>"dos"===e.type&&(0===Ge.length||e.name.toLowerCase().indexOf(Ge)>=0||e.tags.indexOf(Ge)>=0)));default:return O.filter((e=>e.tags.split(",").indexOf(Ke)>=0&&(0===Ge.length||e.name.toLowerCase().indexOf(Ge)>=0)))}}function Je(){Ze=0,Ve.length=0;const e=Ye();if(0===e.length)Fe.disabled=!0,$e.disabled=!0,Oe.innerHTML="No results found :(";else{for(let t=0;t=Ve.length-1?$e.disabled=!0:$e.disabled=!1;for(const e of Ve[Ze]){const{name:n,prev:r,date:i}=e,s=t.createElement("a");s.href=i>0?"/g/"+i.toString(36):"#",s.title="Play "+n,s.target="_self",s.onclick=t=>{t.ctrlKey||(t.preventDefault(),t.stopPropagation(),S(e))},s.style.backgroundImage=null!=r?'url("'+r+'"), url("/res/preview.svg")':'url("/d/'+encodeURIComponent(n)+'.jpg"), url("/res/preview.svg")';{const e=t.createElement("div");e.textContent=n,s.appendChild(e)}switch(e.type){case"html5":{const e=t.createElement("span");e.textContent="HTML5",e.style.background="#c04000",s.appendChild(e)}break;case"flash":{const e=t.createElement("span");e.textContent="Flash",e.style.background="#008000",s.appendChild(e)}break;case"dos":{const e=t.createElement("span");e.textContent="Dos",e.style.background="#0000ff",s.appendChild(e)}break;default:s.style.backgroundImage='url("/res/preview.svg")'}Oe.appendChild(s)}}function Qe(){Re.innerHTML="",De.style.display="none",T||(t.title="WhiteSpider"),u.replaceState(void 0,"","/"),v.setAttribute("href","https://whitespider.dev/")}S=async({name:e,type:n,tags:r,date:i,path:s,desc:a,user:c})=>{if(Re.appendChild(o("/ext/emu/?name="+e+"&type="+n+"&url="+encodeURIComponent(s))),Ue.innerHTML="",Be.textContent=e,ze.textContent=n.toUpperCase(),Ne.textContent=r.replace(/\,/g,", ")||"None",Pe.textContent=new Date(i).toLocaleDateString("POSIX",{month:"2-digit",day:"2-digit",year:"numeric"}),Me.textContent=a||"No information provided by the uploader.",De.style.display="block",i>0){T||(t.title=e+" - WhiteSpider");const n="/g/"+i.toString(36);u.replaceState(void 0,"",n),v.setAttribute("href","https://whitespider.dev"+n)}{const e=await d(1,c||"anonymous");{const n=t.createElement("img");n.alt="Avatar",n.width=40,n.height=40,n.loading="eager",n.decoding="sync",n.draggable=!1,Ue.appendChild(n);{const t=URL.createObjectURL(new Blob([e.avatar],{type:"image/jpeg",endings:"native"}));n.src=t,await n.decode(),URL.revokeObjectURL(t)}}{const n=t.createElement("div");switch(n.className="user",n.textContent=e.id,e.vip){case 3:n.setAttribute("vip","gold");break;case 4:n.setAttribute("vip","diamond")}Ue.appendChild(n)}Ue.onclick=()=>{Qe(),I(e.uid)}}if("localhost"!==h.hostname)try{await d(14,i)}catch(e){}},Fe.onclick=()=>{Ze--,Xe(),Oe.scrollIntoView({behavior:"instant",inline:"start",block:"start"})},$e.onclick=()=>{Ze++,Xe(),Oe.scrollIntoView({behavior:"instant",inline:"start",block:"start"})},He.onblur=()=>{const e=parseInt(He.value.trim(),10)||0;Ze+1!==e&&(e<1||e>Ve.length?(He.value="1",Ze=0):Ze=e-1,Xe(),Oe.scrollIntoView({behavior:"instant",inline:"start",block:"start"}))},He.onchange=()=>{He.blur()},n("game-close").onclick=()=>Qe(),n("game-newtab").onclick=()=>{const e=Re.firstElementChild;null!=e&&(Qe(),c(e))},Je(),Oe.style.height="fit-content",Oe.style.display="flex"}{const at=n("tabs"),ct=n("mode-select"),lt=n("u-frame"),dt=n("address"),ht=n("message"),ut=n("container"),pt=[],ft=["left","middle","right","back","forward"],mt=lt.getContext("bitmaprenderer",{alpha:!1}),gt={width:t.documentElement.clientWidth,height:t.documentElement.clientHeight-120,touch:e.navigator.maxTouchPoints>0},bt=at.children;let wt=-1;{const It=n("prox-btn"),jt=n("unbl-content");ct.value=x.get("__unbl_mode_")||"puppeteer",It.onclick=()=>{null!=L&&L();for(const e of z)e.removeAttribute("current");if(N.checked=!1,It.setAttribute("current","true"),jt.setAttribute("current","true"),"puppeteer"===ct.value){if(null==mt)return void i("Error: Failed to initialize canvas context.");j=()=>{yt("Restoring session..."),St()},L=()=>{yt(null),j=null,L=null,wt=-1,pt.length=0,at.innerHTML="",C.emit("end_session"),C.offAny(Tt)},yt("Requesting new session..."),St()}},ct.onchange=()=>{"puppeteer"===ct.value?(x.set("__unbl_mode_","puppeteer"),It.click()):(null!=L&&L(),x.set("__unbl_mode_","raw-embed"))}}function yt(e){null!=e?(ht.textContent=e,ht.style.display="block"):ht.style.display="none"}function vt(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,C.emit("event",{type:e.type,x:e.offsetX,y:e.offsetY,button:ft[e.button]}),!1}function _t(e){e.preventDefault(),e.stopPropagation(),e.returnValue=!1;const{type:t,touches:n}=e;if(n.length>0){const e=lt.getBoundingClientRect();for(const r of n)C.emit("event",{type:t,x:r.clientX-e.x,y:r.clientY-e.y})}else C.emit("event",{type:t});return!1}function kt(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,C.emit("event",{type:e.type,deltaX:e.deltaX,deltaY:e.deltaY}),!1}function Et(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,C.emit("event",{type:e.type,key:e.key}),!1}function xt(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,lt.focus({preventScroll:!0}),!1}function At(e){e=e.toLowerCase();for(let t=0;t57)&&(n<97||n>122)&&45!==n&&46!==n)return!1}return!0}function Ct(e,t){const n=a(e=e.replace(/\s+/g," ").trim());if(null!=n)return n.href;if(e.includes(" "))return t+encodeURIComponent(e);const r=e.indexOf("/");if(0===r)return t+encodeURIComponent(e);if(r>0){if(At(e.substring(0,r)))return"https://"+e}else if(At(e)&&e.includes("."))return"https://"+e;return t+encodeURIComponent(e)}function Tt(e,...n){switch(e){case"url":{const e=n[0];if("string"==typeof e){const n=pt[wt];null!=n&&(n.url=e),t.activeElement!==dt&&(dt.value=e)}}break;case"frame":createImageBitmap(new Blob(n,{type:"image/jpeg",endings:"native"}),0,0,lt.width,lt.height,{resizeQuality:"pixelated",imageOrientation:"none",premultiplyAlpha:"none",colorSpaceConversion:"none"}).then((e=>{mt.transferFromImageBitmap(e),e.close()}));break;case"tabinfo":{const e=(n=n[0]).id,t=bt[e],r=pt[e];r.title=t.querySelector("div").textContent=n.title||"Untitled",r.favicon=t.querySelector("img").src=n.favicon||"/res/empty.ico"}break;case"tabopen":const e=t.createElement("div");e.innerHTML='Site Icon
Untitled
',e.onclick=()=>{for(const e of bt)e.removeAttribute("current");e.setAttribute("current","true"),C.emit("focustab",wt=pt.indexOf(i))};const r=t.createElement("button");r.type="button",r.title="Close",r.onclick=()=>{C.emit("closetab",pt.indexOf(i))},e.appendChild(r);for(const e of bt)e.removeAttribute("current");e.setAttribute("current","true");const i={url:"",title:"",favicon:""};Object.setPrototypeOf(i,null),Object.preventExtensions(i),wt=pt.length,pt.push(i),at.appendChild(e);break;case"tabclose":const s=n[0];s>=0&&s1?bt[wt=s-1].setAttribute("current","true"):bt[wt=0].setAttribute("current","true")),bt[s].remove(),pt.splice(s,1))}}async function St(){C.offAny(Tt),C.emit("ns",gt);{const{width:e,height:t}=await new Promise((e=>{C.once("session_ready",e)}));ut.style.width=e+"px",ut.style.height=t+"px",gt.width=e,gt.height=t,lt.width=e,lt.height=t}for(const e of pt)C.emit("newtab"),await new Promise((e=>{C.once("tabopen",e)})),C.emit("navigate",e.url),await new Promise((t=>{C.once("tabinfo",(n=>{const r=at.children[n.id];e.title=r.querySelector("div").textContent=n.title||"Untitled",e.favicon=r.querySelector("img").src=n.favicon||"/res/empty.ico",t()}))}));C.onAny(Tt),-1===wt?C.emit("newtab"):C.emit("focustab",wt),yt(null),lt.autofocus=!0,lt.focus({preventScroll:!0})}n("back").onclick=()=>C.emit("goback"),n("forward").onclick=()=>C.emit("goforward"),n("refresh").onclick=()=>C.emit("refresh"),n("new-tab").onclick=()=>C.emit("newtab"),dt.onfocus=()=>{dt.select()},dt.onblur=()=>{const e=pt[wt];null!=e&&(dt.value=e.url)},dt.onkeydown=e=>{if("Enter"===e.key){e.preventDefault(),e.stopPropagation();const t=dt.value.trim();t.length>0&&("puppeteer"===ct.value?(lt.focus({preventScroll:!0}),C.emit("navigate",Ct(t,"https://www.google.com/search?q="))):s(Ct(t,"https://www.bing.com/search?q=")))}},dt.ondragstart=e=>{e.preventDefault(),e.stopPropagation(),dt.selectionEnd=dt.selectionStart||=0},lt.addEventListener("mousedown",vt,{passive:!1}),lt.addEventListener("mouseup",vt,{passive:!1}),lt.addEventListener("mousemove",vt,{passive:!1}),lt.addEventListener("touchstart",_t,{passive:!1}),lt.addEventListener("touchend",_t,{passive:!1}),lt.addEventListener("touchmove",_t,{passive:!1}),lt.addEventListener("wheel",kt,{passive:!1}),lt.addEventListener("keydown",Et,{passive:!1}),lt.addEventListener("keyup",Et,{passive:!1}),lt.addEventListener("click",xt,{passive:!1}),lt.addEventListener("contextmenu",xt,{passive:!1})}{const Lt=r("#history>div"),Ot=n("cg-messages"),Dt=r("#chatgpt>input"),Rt=r("#chatgpt>button");{const Mt=n("history"),Ft=n("cg-chat"),$t=n("cg-menu");$t.onclick=()=>{$t.style.display="none",Mt.removeAttribute("style"),Ft.removeAttribute("style")},n("cg-close").onclick=()=>{$t.style.display="block",Mt.style.display="none",Ft.style.width="100%"},k&&($t.style.display="block",Mt.style.display="none",Ft.style.width="100%")}let Bt=null;const zt=JSON.parse(x.get("__chats")||"[]");function Nt(e,n){const r=t.createElement("div");{const n=t.createElement("img");n.width=32,n.height=32,n.loading="lazy",n.decoding="async",n.draggable=!1,"u"===e?(n.src="/res/user.svg",n.alt="User"):(n.src="/res/bot.svg",n.alt="Assistant"),r.appendChild(n)}{const e=t.createElement("div");e.textContent=n,r.appendChild(e)}return Ot.appendChild(r),r}function Pt(e){const n=t.createElement("div");n.onclick=()=>{for(const e of Lt.children)e.removeAttribute("current");n.setAttribute("current","true"),Ot.innerHTML="",Bt=e.msgs;for(const e of Bt)Nt(e.role,e.text);Ot.scrollIntoView({behavior:"instant",block:"end",inline:"end"})};const r=t.createElement("div");r.textContent=e.title,n.appendChild(r);const i=t.createElement("button");i.type="button",i.title="Delete",i.onclick=t=>{t.preventDefault(),t.stopPropagation();const r=zt.indexOf(e);r>=0&&(Bt=null,n.remove(),zt.splice(r,1),Ot.innerHTML="",x.set("__chats",JSON.stringify(zt,void 0,0)))},n.appendChild(i),Lt.prepend(n)}function Ut(){Dt.disabled=!1,Rt.disabled=!1,C.removeAllListeners("gptres"),C.removeAllListeners("gptend"),C.removeAllListeners("gpterr")}for(const Ht of zt)Pt(Ht);n("chatgpt").onsubmit=e=>{e.preventDefault(),e.stopPropagation();const t=Dt.value.trim();if(t.length<2)return void i("The message must contain at least 2 characters.");if(!C.connected)return void i("Error: Disconnected from the backend server.");if(Dt.value="",Dt.disabled=!0,Rt.disabled=!0,Nt("u",t),null==Bt){const e={title:t.slice(0,100),msgs:Bt=[]};Pt(e),zt.push(e)}Bt.push({role:"u",text:t});const n=Nt("a","Processing..."),r=n.lastElementChild;let s;C.on("gptres",(e=>{r.textContent=s=e,r.scrollIntoView({block:"nearest",inline:"nearest",behavior:"instant"})})),C.on("gptend",(()=>{Ut(),Bt.push({role:"a",text:r.textContent=s}),x.set("__chats",JSON.stringify(zt,void 0,0))})),C.on("gpterr",(e=>{Ut(),Bt.pop(),n.remove(),i("Failed to process the request. Message: "+e)})),C.emit("gptreq",Bt)},n("new-chat").onclick=()=>{for(const e of Lt.children)e.removeAttribute("current");Bt=null,Ot.innerHTML=""}}{const qt=n("yt-search"),Vt=r("#yt-search>input"),Wt=r("#yt-search>button"),Zt=n("yt-api-key"),Kt=n("yt-order"),Gt=n("yt-results"),Yt=n("yt-load-more"),Jt=n("yt-max-results");let Xt;function Qt(n){const r=t.createElement("iframe");r.setAttribute("width","1024"),r.setAttribute("height","768"),r.setAttribute("allowfullscreen","true"),r.setAttribute("allowpaymentrequest","true"),r.setAttribute("name","Frame"),r.setAttribute("allow","fullscreen payment"),r.setAttribute("loading","lazy"),r.setAttribute("scrolling","no"),r.setAttribute("frameborder","0"),r.setAttribute("credentialless","true"),r.setAttribute("referrerpolicy","no-referrer"),r.setAttribute("src","data:application/xhtml+xml;base64,"+ei.encode(ni.encode(`\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tGoogle\n\t\n\t\n\t\t\n\t\n`))),m.appendChild(r),g.style.display="block"}function en(e){switch(e.host){case"youtube.com":case"youtube-nocookie.com":case"www.youtube.com":case"www.youtube-nocookie.com":const t=e.pathname;return"/watch"===t?e.searchParams.get("v")||null:t.startsWith("/embed/")&&t.substring(7)||null;case"youtu.be":return e.pathname.substring(1)||null;default:return null}}async function tn(){const t=new URL("https://youtube.googleapis.com/youtube/v3/search"),n=t.searchParams;n.set("q",Vt.value),n.set("key",Zt.value||"AIzaSyARuwknsJhvP-ysM8-DwbqqJ5e-EaTL-UY"),n.set("type","video"),n.set("part","snippet"),n.set("order",Kt.value),n.set("maxResults",Jt.value),n.set("safeSearch","none"),n.set("videoEmbeddable","true"),null!=Xt&&n.set("pageToken",Xt);const r=await e.fetch(t,{cache:"no-cache",method:"GET",headers:{Accept:"application/json"}});return"application/json"===(r.headers.get("content-type")||"").split(";",2)[0].trim()?await r.json():null}async function nn(){i(null),Wt.disabled=!0,Vt.disabled=!0,Yt.style.display="none";const e=await tn();if(null==e)return void i("API server returned invalid data.");if("error"in e){const{message:t,code:n}=e.error;return void i(t+" (Code: "+n+")")}const n=e.items;if(0==n.length)return void i("No results match your search.");for(const e of n){const n=e.id.videoId,r=e.snippet,i=t.createElement("div");i.onclick=()=>Qt("https://www.youtube-nocookie.com/embed/"+n+"?autoplay=1&controls=1&rel=0&color=white");const s=t.createElement("img");s.width=160,s.height=90,s.title="Video Preview",s.draggable=!1,s.src=r.thumbnails.medium.url,i.appendChild(s);const o=t.createElement("div");i.appendChild(o);const a=t.createElement("div");a.className="title",a.textContent=r.title,o.appendChild(a);const c=t.createElement("div");c.className="desc",c.textContent=r.description,o.appendChild(c);const l=t.createElement("div");l.className="time",l.textContent=r.publishTime,o.appendChild(l),Gt.appendChild(i)}const r=e.nextPageToken;null!=r&&(Yt.style.display="block",Yt.onclick=()=>{Xt=r,nn().then((()=>{Wt.disabled=!1,Vt.disabled=!1}))})}Zt.value=x.get("__yt_apikey")||"",qt.onsubmit=e=>{e.preventDefault(),e.stopPropagation(),Xt=null,Gt.innerHTML="";const t=a(Vt.value);if(null==t)return void nn().then((()=>{Wt.disabled=!1,Vt.disabled=!1}));i(null),Yt.style.display="none";const n=en(t);null!=n?Qt("https://www.youtube-nocookie.com/embed/"+n+"?autoplay=1&controls=1&rel=0&color=white"):i("Error: Failed to parse YouTube video ID from the provided URL.")},Zt.onblur=()=>{const e=Zt.value.trim();return 0===e.length?(x.delete("__yt_apikey"),void(Zt.value="")):e.length<30?(i("Invalid API key."),void(Zt.value="")):void x.set("__yt_apikey",Zt.value=e)},Jt.onblur=()=>{const e=parseInt(Jt.value.trim(),10);isNaN(e)?Jt.value="10":e<1?Jt.value="1":e>30&&(Jt.value="30")}}{const rn=n("emulator"),sn=n("core"),on=n("bios"),an=n("game-rom");rn.onchange=()=>{switch(rn.value){case"flash":sn.disabled=!0,on.disabled=!0,an.accept=".swf";break;case"dos":sn.disabled=!0,on.disabled=!0,an.accept=".jsdos, .zip";break;default:rn.value="emu",sn.disabled=!1,on.disabled=!1,an.accept="*/*"}},n("startemu").onclick=()=>{const e=an.files?.item(0);if(null==e)return void i("Please choose a valid game ROM file.");const t=rn.value,n=new URLSearchParams("");if(n.set("name",e.name),n.set("type",t),n.set("url",URL.createObjectURL(e)),"emu"===t){n.set("core",sn.value);const e=on.files?.item(0);null!=e&&n.set("bios",URL.createObjectURL(e))}s("player.html?"+n.toString())}}{const cn=n("game-name"),ln=n("game-type"),dn=n("game-file"),hn=n("game-labels"),un=n("game-description"),pn=n("upload"),fn=n("upload-message");ln.onchange=()=>{switch(ln.value){case"html5":dn.accept=".zip";break;case"flash":dn.accept=".swf";break;case"dos":dn.accept=".jsdos";break;default:dn.accept="*/*"}},fn.onclick=()=>{fn.innerHTML="",fn.style.display="none"},pn.onclick=async()=>{const e=cn.value.replace(/\s+/g," ").trim();if(0===e.length)return void i("Game name must not be empty.");if(e.length>256)return void i("Game name must be less than 256 characters.");const t=dn.files?.item(0);if(null==t)return void i("Please choose a valid game file.");if(0===t.size)return void i("Uploading empty game files is not allowed.");if(t.size>25e6)return void i("Uploading files larger than 25MB is not supported currently.");if(null==A)return void i("Invalid session. Please refresh this page and try again.");if(!C.connected)return void i("Error: Disconnected from the backend server.");pn.disabled=!0,fn.innerHTML="Processing...",fn.style.color="#808080",fn.style.display="block";const n=un.value.replace(/\s+/g," ").trim(),r=hn.value.trim().toLowerCase().split(",").map((e=>e.replace(/\s+/g," ").trim())).join(",");if(r.length>300)i("The game tags list must be less than 300 characters in total.");else if(n.length>5e3)i("The game description text must be less than 5000 characters.");else{try{await d(13,[A,e,ln.value,r,n,await t.arrayBuffer()]),fn.innerHTML="✓Success!",fn.style.color="#008000",fn.style.display="block"}catch(e){fn.innerHTML="✕Error",fn.style.color="#ff0000",fn.style.display="block",i("Failed to upload the game. Message: "+e)}cn.value="",dn.value="",hn.value="",un.value="",pn.disabled=!1}}}{const mn=n("picker"),gn=n("ufile"),bn=n("messages"),wn=t.querySelectorAll("#channels>div"),yn=n("sendmsg");let vn="";{const En=n("chat"),xn=n("menu"),An=n("sidemenu");xn.onclick=()=>{En.removeAttribute("style"),xn.style.display="none",An.style.display="block"},n("close-sm").onclick=()=>{En.style.width="100%",xn.style.display="block",An.style.display="none"},k&&(En.style.width="100%",xn.style.display="block",An.style.display="none")}{const Cn=n("chat-btn"),Tn=n("community-page");Cn.onclick=()=>{null!=L&&L();for(const e of z)e.removeAttribute("current");N.checked=!1,Cn.setAttribute("current","true"),Tn.setAttribute("current","true"),C.on("msg",((e,t)=>{if(e===vn){const e=_n(t),n=bn.scrollHeight-bn.clientHeight;bn.appendChild(e),n===bn.scrollTop&&e.scrollIntoView({behavior:"instant",block:"end",inline:"end"})}})),C.on("msgdel",((e,t)=>{if(e===vn)for(const e of bn.children)if(e.getAttribute("_id")===t){e.remove();break}})),C.on("msgupd",((e,t,n)=>{if(e===vn)for(const e of bn.children)if(e.getAttribute("_id")===t){const r=e.querySelector("div>span");null!=r?r.textContent=n:i("Failed to update message: "+t);break}})),j=()=>{C.emit("ncs")},L=()=>{j=null,L=null,C.emit("end_session"),C.removeAllListeners("msg"),C.removeAllListeners("msgdel"),C.removeAllListeners("msgupd")},C.emit("ncs"),wn[0].dispatchEvent(new Event("click"))}}function _n({id:e,msg:n,uid:r,vip:i,user:o,icon:a,files:c}){const l=t.createElement("div");l.setAttribute("_id",e);const d=t.createElement("img");if(d.alt="Avatar",d.width=32,d.height=32,d.loading="lazy",d.decoding="async",d.draggable=!1,"string"!=typeof a){const e=URL.createObjectURL(new Blob([a],{type:"image/jpeg",endings:"native"}));d.addEventListener("load",(()=>URL.revokeObjectURL(e)),{once:!0,passive:!0}),d.src=e}else d.src=a;const h=t.createElement("div");switch(h.className="user",h.textContent=o,i){case 3:h.setAttribute("vip","gold");break;case 4:h.setAttribute("vip","diamond")}null!=r&&(d.style.cursor="pointer",h.style.cursor="pointer",d.onclick=h.onclick=()=>{I(r)});{const e=t.createElement("div"),r=t.createElement("span");r.textContent=n,e.appendChild(h),e.appendChild(r);for(const{name:n,type:r,url:i}of c)if(r.startsWith("image/")){const n=t.createElement("img");n.src=i,n.alt="Attachment",n.width=500,n.height=500,n.loading="lazy",n.decoding="async",n.draggable=!1,n.onclick=()=>s(i),e.appendChild(n)}else if(r.startsWith("audio/")){const n=t.createElement("audio");n.src=i,n.muted=!1,n.preload="metadata",n.controls=!0,e.appendChild(n)}else if(r.startsWith("video/")){const n=t.createElement("video");n.src=i,n.muted=!0,n.width=500,n.height=500,n.autoplay=!0,n.controls=!0,e.appendChild(n)}else{const r=t.createElement("a");r.rel="noopener nofollow",r.href=i,r.target="_blank",r.download="",r.textContent=n,e.appendChild(r)}l.appendChild(d),l.appendChild(e)}return l}async function kn(e){const t=await d(7,[vn=e]);let n=t[t.length-1]?.id,r=!1;bn.innerHTML="",bn.onscroll=async()=>{if(0===bn.scrollTop&&!r){r=!0;try{const t=await d(7,[e,n]);if(t.length>0){const e=bn.scrollHeight;for(const e of t)bn.prepend(_n(e));n=t[t.length-1].id,bn.scrollTo({behavior:"instant",left:0,top:bn.scrollHeight-e})}}catch(e){i("Failed to fetch messages. Reason: "+e)}r=!1}};for(const e of t)bn.prepend(_n(e));bn.scrollTo({behavior:"instant",left:0,top:bn.scrollHeight})}{const Sn=n("channel-name");let In=!1;for(const jn of wn){const Ln=jn.getAttribute("id")||"";jn.onclick=async()=>{if(!In){In=!0;try{await kn(Ln)}catch(e){i("Failed to initialize channel. Message: "+e)}for(const e of wn)e.removeAttribute("current");jn.hasAttribute("q")?gn.style.display="block":gn.style.display="none",jn.setAttribute("current","true"),Sn.innerHTML=jn.innerHTML,In=!1}}}}yn.onfocus=()=>{null==A&&(yn.blur(),R.click())},yn.onkeydown=e=>{if("Enter"===e.key){if(e.preventDefault(),e.stopPropagation(),null==A)return void R.click();const t=yn.value.trim();if(t.length<2)return void i("The message must contain at least 2 characters.");if(t.length>1e3)return void i("The message should not be longer than 1000 characters.");if(!C.connected)return void i("Error: Disconnected from the backend server.");yn.value="",yn.disabled=!0,d(8,[A,vn,t]).then((()=>{yn.disabled=!1})).catch((e=>{i("Failed to post text message. Message: "+e),yn.disabled=!1}))}},n("emoji").onclick=()=>{if("block"!==mn.style.display){if(null==mn.firstElementChild){const e=new Ss({locale:"POSIX",emojiVersion:1e3});e.addEventListener("emoji-click",(e=>{e.preventDefault(),e.stopPropagation();const t=e.detail.unicode;null!=t&&yn.setRangeText(t,yn.selectionStart||0,yn.selectionEnd||0,"end")})),mn.appendChild(e)}mn.style.display="block"}else mn.style.display="none"},gn.onclick=()=>{const e=t.createElement("input");e.type="file",e.accept="*/*",e.multiple=!0,e.onchange=async()=>{const t=e.files;if(null!=t&&t.length>0){if(t.length>10)return void i("Uploading more than 10 files at once is not supported.");if(!C.connected)return void i("Error: Disconnected from the backend server.");const e=[];for(const n of t){if(n.size<1)return void i("Uploading empty files is not allowed.");if(n.size>1e7)return void i("Uploading files larger than 10MB is not supported.");e.push({name:n.name,attachment:await n.arrayBuffer()})}gn.disabled=!0;try{await d(12,[A,vn,e])}catch(e){i("Failed to upload file. Message: "+e)}gn.disabled=!1}},e.click()},n("discord").onclick=async()=>{const t=await l("https://discord.com/api/guilds/998658232207814667/widget.json","no-cache");null!=t?e.location.href=JSON.parse(t).instant_invite:i("Error: Failed to fetch invite link.")}}const R=n("accn-btn"),B=n("chat-profile"),z=t.querySelectorAll("#nav-bar>button, #content>div:not(#footer), #unbl-content"),N=n("side-menu");{const On=n("home-btn"),Dn=n("unbl-btn"),Rn=n("apps-btn"),Bn=n("settings"),zn=n("home-page"),Nn=n("site-blocked-page"),Pn=n("services-page"),Un=n("uploadgames-page"),Mn=n("accountinfo-page"),Fn=n("profile-page"),$n=n("settings-page");n("logo").onclick=On.onclick=()=>{null!=L&&L();for(const e of z)e.removeAttribute("current");N.checked=!1,On.setAttribute("current","true"),zn.setAttribute("current","true")},Rn.onclick=()=>{null!=L&&L();for(const e of z)e.removeAttribute("current");N.checked=!1,Rn.setAttribute("current","true"),Pn.setAttribute("current","true")},Dn.onclick=()=>{null!=L&&L();for(const e of z)e.removeAttribute("current");N.checked=!1,Dn.setAttribute("current","true"),Nn.setAttribute("current","true")},n("ug").onclick=()=>{null!=L&&L();for(const e of z)e.removeAttribute("current");N.checked=!1,Un.setAttribute("current","true")},n("chat-login").onclick=B.onclick=R.onclick=()=>{null!=L&&L();for(const e of z)e.removeAttribute("current");N.checked=!1,R.setAttribute("current","true"),Mn.setAttribute("current","true")},Bn.onclick=e=>{if(e.preventDefault(),e.stopPropagation(),null!=L&&L(),$n.hasAttribute("current")){for(const e of z)e.removeAttribute("current");On.setAttribute("current","true"),zn.setAttribute("current","true")}else{for(const e of z)e.removeAttribute("current");$n.setAttribute("current","true")}N.checked=!1};{const Hn=n("avatar"),qn=n("userid"),Vn=n("af"),Wn=n("dm");I=async e=>{try{e=await d(1,e)}catch(t){return void i("Failed to open user profile: "+e)}{const t="/u/"+e.uid;qn.textContent=e.id,u.replaceState(void 0,"",t),v.setAttribute("href","https://whitespider.dev"+t)}switch(e.vip){case 3:qn.setAttribute("vip","gold");break;case 4:qn.setAttribute("vip","diamond");break;default:qn.removeAttribute("vip")}Vn.onclick=Wn.onclick=()=>{i("Function not yet implemented.")},null!=L&&L();for(const e of z)e.removeAttribute("current");N.checked=!1,Fn.setAttribute("current","true");{const t=URL.createObjectURL(new Blob([e.avatar],{type:"image/jpeg",endings:"native"}));Hn.src=t,await Hn.decode(),URL.revokeObjectURL(t)}}}switch(p.slice(0,3)){case"/g/":{const Zn=parseInt(p.slice(3),36);if(Number.isSafeInteger(Zn)&&Zn>0)for(const Kn of O)if(Kn.date===Zn){S(Kn);break}}break;case"/u/":{const Gn=p.slice(3);Gn.length>0&&Gn.length<30&&I(Gn)}break;default:u.replaceState(void 0,"","/"),v.setAttribute("href","https://whitespider.dev/")}n("loading").remove(),n("content").style.display="block"}{const Yn=async()=>{R.innerHTML="My Account",n("ac-prof").style.display="block",n("chat-login").remove(),n("login-dialog").remove();const r=n("ac-un"),s=n("ac-edit"),o=n("ac-link"),a=n("ch-avatar"),c=a.firstElementChild,l=t.createElement("img");l.alt="Avatar",l.title="Change avatar",l.width=40,l.height=40,l.loading="eager",l.decoding="sync",l.draggable=!1,B.appendChild(l);const h=t.createElement("div");h.className="user",B.appendChild(h),B.style.display="block";const u=await d(2,A);switch(n("ac-un").textContent=h.textContent=u.id,n("ac-uid").textContent=u.uid,n("ac-name").textContent=u.name||"Not set",n("ac-email").textContent=u.email||"Not set",n("account-settings").style.display="block",u.vip){case 3:n("ac-membership").textContent="Gold 👑",r.setAttribute("vip","gold"),h.setAttribute("vip","gold");break;case 4:n("ac-membership").textContent="Diamond 💎",r.setAttribute("vip","diamond"),h.setAttribute("vip","diamond");break;default:n("ac-membership").textContent="None"}{const e=URL.createObjectURL(new Blob([u.avatar],{type:"image/jpeg",endings:"native"}));c.src=l.src=e,await c.decode(),await l.decode(),URL.revokeObjectURL(e)}a.onclick=()=>{const e=t.createElement("input");e.type="file",e.accept="image/*",e.onchange=async()=>{const t=e.files?.item(0);if(null!=t){const e=URL.createObjectURL(t),n=new Image(512,512);n.src=e,n.loading="eager",n.decoding="sync";try{await n.decode(),URL.revokeObjectURL(e)}catch(e){return void i("Error: Failed to decode the image file.")}const r=Math.min(n.naturalWidth,n.naturalHeight),s=Math.min(r,512),o=new OffscreenCanvas(s,s),a=o.getContext("2d",{alpha:!1});if(null==a)throw new Error("Internal Error: Canvas context is null before accessing.");a.imageSmoothingEnabled=!0,a.imageSmoothingQuality="high",a.fillStyle="#ffffff",a.fillRect(0,0,s,s),a.drawImage(n,0,0,r,r,0,0,s,s);try{const e=await o.convertToBlob({type:"image/jpeg",quality:100});await d(4,[A,await e.arrayBuffer()]);const t=URL.createObjectURL(e);c.src=l.src=t,await c.decode(),await l.decode(),URL.revokeObjectURL(t)}catch(e){i("Failed to upload the image file. Message+ "+String(e))}}},e.click()},s.onclick=()=>{const e=t.createElement("div"),n=t.createElement("input");n.type="text",n.value=r.innerHTML,n.minLength=4,n.maxLength=20,n.spellcheck=!1,n.placeholder="Username",n.autocomplete="off",n.setAttribute("style","position:relative;display:inline-block;width:fit-content;height:fit-content;margin:0px 10px;padding:5px;"),e.appendChild(n);const o=t.createElement("button");o.type="button",o.title="Save",o.textContent="✓",e.appendChild(o);const a=t.createElement("button");a.type="button",a.title="Cancel",a.textContent="✕",e.appendChild(a),n.onblur=()=>{n.value=n.value.trim().toLowerCase()},o.onclick=()=>{const t=n.value.trim().toLowerCase();t.length<4||t.length>20?i("The username must have 4 to 20 characters."):/^[\-a-z0-9]+$/.test(t)?d(3,[A,t]).then((()=>{e.replaceWith(r),r.textContent=t,h.textContent=t,s.removeAttribute("style")})).catch((e=>{i("Error: Failed to change username. Message: "+e)})):i("The username must contain only hyphens, a-z, 0-9")},a.onclick=()=>{e.replaceWith(r),s.removeAttribute("style")},s.style.display="none",r.replaceWith(e),n.select()},o.onclick=()=>{const n=t.createElement("span"),r=e.origin+"/u/"+u.uid;n.textContent=r,o.replaceWith(n),navigator.clipboard.writeText(r)}};{const Jn=n("cp");Jn.onclick=()=>{const e=t.createElement("div"),n=t.createElement("div");n.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),n.textContent="Notice: If your account was created with your Google account and does not have a password, set the current password field to 'CHANGEME!'.",e.appendChild(n);const r=t.createElement("input");r.type="password",r.minLength=8,r.maxLength=30,r.spellcheck=!1,r.placeholder="Current password",r.autocomplete="off",r.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),e.appendChild(r);const s=t.createElement("input");s.type="password",s.minLength=8,s.maxLength=30,s.spellcheck=!1,s.placeholder="New password",s.autocomplete="off",s.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),e.appendChild(s);const o=t.createElement("input");o.type="password",o.minLength=8,o.maxLength=30,o.spellcheck=!1,o.placeholder="Confirm password",o.autocomplete="off",o.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),e.appendChild(o);const a=t.createElement("button");a.type="button",a.title="Change",a.textContent="✓",e.appendChild(a);const c=t.createElement("button");c.type="button",c.title="Cancel",c.textContent="✕",e.appendChild(c),a.onclick=()=>{const t=r.value;if(t.length<8||t.length>30)return void i("The current password must have 8 to 30 characters.");const n=s.value;n.length<8||n.length>30?i("The new password must have 8 to 30 characters."):n===o.value?d(9,[A,t,n]).then((()=>{e.replaceWith(Jn)})).catch((e=>{i("Error: Failed to change password. Message: "+e)})):i("The new password does not match the confirm password.")},c.onclick=()=>{e.replaceWith(Jn)},Jn.replaceWith(e)}}if(n("fa").onclick=()=>{i("Function not yet implemented.")},n("so").onclick=()=>{x.delete("__secrets_"),setTimeout((()=>h.reload()),200)},n("da").onclick=()=>{i("Error: Operation not permitted.")},null==A){const Xn=r("#login-dialog>h3"),Qn=n("login"),er=n("register"),tr=n("username"),nr=n("password"),rr=n("2fa-otp"),ir=n("c-password");rr.style.display="none",ir.style.display="none",er.onclick=()=>{"Register"===Xn.innerHTML?(Xn.innerHTML="Login",Qn.innerHTML="Login",er.innerHTML="Register",ir.style.display="none"):(Xn.innerHTML="Register",Qn.innerHTML="Register",er.innerHTML="Login",ir.style.display="block")},tr.onblur=()=>{tr.value=tr.value.trim().toLowerCase()},Qn.onclick=()=>{const e=tr.value.trim().toLowerCase();if(e.length<4||e.length>20)return void i("The username must have 4 to 20 characters.");if(!/^[\-a-z0-9]+$/.test(e))return void i("The username must contain only hyphens, a-z, 0-9");const t=nr.value;if(t.length<8||t.length>30)i("The password must have 8 to 30 characters.");else if("Register"===Xn.innerHTML){if(t!==ir.value)return void i("Confirm password does not match.");d(11,[e,t]).then((e=>{x.set("__secrets_",A=e),Yn()})).catch((e=>{i("Error: Failed to register. Message: "+e)}))}else d(10,[e,t]).then((e=>{x.set("__secrets_",A=e),Yn()})).catch((e=>{i("Error: Failed to login. Message: "+e)}))},n("login-google").onclick=()=>{const t=e.open(void 0,"_blank","width="+screen.availWidth+",height="+screen.availHeight+",left=0,top=0,popup");if(null==t)return void i("Please allow popups in your browser settings and try again.");t.stop(),t.focus();const n=new URLSearchParams;n.set("client_id","176227430389-qkdboctmfhe9jnvnk2vmarafc5p8amuf.apps.googleusercontent.com"),n.set("redirect_uri",e.origin+"/auth.xht"),n.set("response_type","token"),n.set("state","12"),n.set("scope","email profile"),n.set("include_granted_scopes","true"),n.set("enable_granular_consent","true"),t.location.replace("https://accounts.google.com/o/oauth2/v2/auth?"+n.toString())};{const sr=e=>{(e=new URLSearchParams(e).get("access_token")||"").length>0&&d(0,e).then((e=>{x.set("__secrets_",A=e),Yn()})).catch((e=>{i("Failed to retrieve login tokens. Message: "+String(e))}))},or=x.get("_cre_");null==or?e.addEventListener("message",(t=>{if(t.origin===e.origin){const e=t.data;"string"==typeof e&&e.length>0&&sr(e)}}),{once:!1,passive:!0}):(sr(or),x.delete("_cre_"))}}else await Yn()}})(window)})(); \ No newline at end of file +(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})}};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var t={};e.r(t),e.d(t,{Decoder:()=>me,Encoder:()=>pe,PacketType:()=>ue,protocol:()=>he});var n={};e.r(n),e.d(n,{decode:()=>rl,encode:()=>tl});const r=Object.create(null);r.open="0",r.close="1",r.ping="2",r.pong="3",r.message="4",r.upgrade="5",r.noop="6";const i=Object.create(null);Object.keys(r).forEach((e=>{i[r[e]]=e}));const s={type:"error",data:"parser error"},o="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),a="function"==typeof ArrayBuffer,c=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,l=({type:e,data:t},n,i)=>o&&t instanceof Blob?n?i(t):d(t,i):a&&(t instanceof ArrayBuffer||c(t))?n?i(t):d(new Blob([t]),i):i(r[e]+(t||"")),d=(e,t)=>{const n=new FileReader;return n.onload=function(){const e=n.result.split(",")[1];t("b"+(e||""))},n.readAsDataURL(e)};function h(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let u;const p="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)p["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(e)]=e;const f="function"==typeof ArrayBuffer,m=(e,t)=>{if("string"!=typeof e)return{type:"message",data:b(e,t)};const n=e.charAt(0);return"b"===n?{type:"message",data:g(e.substring(1),t)}:i[n]?e.length>1?{type:i[n],data:e.substring(1)}:{type:i[n]}:s},g=(e,t)=>{if(f){const n=(e=>{let t,n,r,i,s,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);const l=new ArrayBuffer(o),d=new Uint8Array(l);for(t=0;t>4,d[c++]=(15&r)<<4|i>>2,d[c++]=(3&i)<<6|63&s;return l})(e);return b(n,t)}return{base64:!0,data:e}},b=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,w=String.fromCharCode(30);let y;function v(e){return e.reduce(((e,t)=>e+t.length),0)}function _(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let i=0;i(e.hasOwnProperty(n)&&(t[n]=e[n]),t)),{})}const A=E.setTimeout,C=E.clearTimeout;function T(e,t){t.useNativeTimers?(e.setTimeoutFn=A.bind(E),e.clearTimeoutFn=C.bind(E)):(e.setTimeoutFn=E.setTimeout.bind(E),e.clearTimeoutFn=E.clearTimeout.bind(E))}class S extends Error{constructor(e,t,n){super(e),this.description=t,this.context=n,this.type="TransportError"}}class I extends k{constructor(e){super(),this.writable=!1,T(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,n){return super.emitReserved("error",new S(e,t,n)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=m(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}(e);return t.length?"?"+t:""}}const j="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),L=64,O={};let D,R=0,B=0;function z(e){let t="";do{t=j[e%L]+t,e=Math.floor(e/L)}while(e>0);return t}function N(){const e=z(+new Date);return e!==D?(R=0,D=e):e+"."+z(R++)}for(;B{var e;3===n.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(n)),4===n.readyState&&(200===n.status||1223===n.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof n.status?n.status:0)}),0))},n.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=H.requestsCount++,H.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=F,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete H.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}function V(){for(let e in H.requests)H.requests.hasOwnProperty(e)&&H.requests[e].abort()}H.requestsCount=0,H.requests={},"undefined"!=typeof document&&("function"==typeof attachEvent?attachEvent("onunload",V):"function"==typeof addEventListener&&addEventListener("onpagehide"in E?"pagehide":"unload",V,!1));const q="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),W=E.WebSocket||E.MozWebSocket,Z="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),K={websocket:class extends I{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,n=Z?{}:x(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=Z?new W(e,t,n):t?new W(e,t):new W(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t{try{this.ws.send(e)}catch(e){}r&&q((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=N()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!W}},webtransport:class extends I{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){y||(y=new TextDecoder);const n=[];let r=0,i=-1,o=!1;return new TransformStream({transform(a,c){for(n.push(a);;){if(0===r){if(v(n)<1)break;const e=_(n,1);o=!(128&~e[0]),i=127&e[0],r=i<126?3:126===i?1:2}else if(1===r){if(v(n)<2)break;const e=_(n,2);i=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),r=3}else if(2===r){if(v(n)<8)break;const e=_(n,8),t=new DataView(e.buffer,e.byteOffset,e.length),o=t.getUint32(0);if(o>Math.pow(2,21)-1){c.enqueue(s);break}i=o*Math.pow(2,32)+t.getUint32(4),r=3}else{if(v(n)e){c.enqueue(s);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=e.readable.pipeThrough(t).getReader(),r=new TransformStream({transform(e,t){!function(e,t){o&&e.data instanceof Blob?e.data.arrayBuffer().then(h).then(t):a&&(e.data instanceof ArrayBuffer||c(e.data))?t(h(e.data)):l(e,!1,(e=>{u||(u=new TextEncoder),t(u.encode(e))}))}(e,(n=>{const r=n.length;let i;if(r<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,r);else if(r<65536){i=new Uint8Array(3);const e=new DataView(i.buffer);e.setUint8(0,126),e.setUint16(1,r)}else{i=new Uint8Array(9);const e=new DataView(i.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(r))}e.data&&"string"!=typeof e.data&&(i[0]|=128),t.enqueue(i),t.enqueue(n)}))}});r.readable.pipeTo(e.writable),this.writer=r.writable.getWriter();const i=()=>{n.read().then((({done:e,value:t})=>{e||(this.onPacket(t),i())})).catch((e=>{}))};i();const d={type:"open"};this.query.sid&&(d.data=`{"sid":"${this.query.sid}"}`),this.writer.write(d).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t{r&&q((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends I{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let n=location.port;n||(n=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||n!==e.port}const t=e&&e.forceBase64;this.supportsBinary=$&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const n=e.split(w),r=[];for(let e=0;e{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const n=e.length,r=new Array(n);let i=0;e.forEach(((e,s)=>{l(e,!1,(e=>{r[s]=e,++i===n&&t(r.join(w))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=N()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new H(this.uri(),e)}doWrite(e,t){const n=this.request({method:"POST",data:e});n.on("success",t),n.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},G=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Y=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function J(e){if(e.length>2e3)throw"URI too long";const t=e,n=e.indexOf("["),r=e.indexOf("]");-1!=n&&-1!=r&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let i=G.exec(e||""),s={},o=14;for(;o--;)s[Y[o]]=i[o]||"";return-1!=n&&-1!=r&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(e,t){const n=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||n.splice(0,1),"/"==t.slice(-1)&&n.splice(n.length-1,1),n}(0,s.path),s.queryKey=function(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(n[t]=r)})),n}(0,s.query),s}class X extends k{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=J(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=J(t.host).host),T(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},n=e.split("&");for(let e=0,r=n.length;e{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const n=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new K[e](n)}open(){let e;if(this.opts.rememberUpgrade&&X.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(e){let t=this.createTransport(e),n=!1;X.priorWebsocketSuccess=!1;const r=()=>{n||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!n)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;X.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{n||"closed"!==this.readyState&&(l(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function i(){n||(n=!0,l(),t.close(),t=null)}const s=e=>{const n=new Error("probe error: "+e);n.transport=t.name,i(),this.emitReserved("upgradeError",n)};function o(){s("transport closed")}function a(){s("socket closed")}function c(e){t&&e.name!==t.name&&i()}const l=()=>{t.removeListener("open",r),t.removeListener("error",s),t.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};t.once("open",r),t.once("error",s),t.once("close",o),this.once("close",a),this.once("upgrading",c),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==e?this.setTimeoutFn((()=>{n||t.open()}),200):t.open()}onOpen(){if(this.readyState="open",X.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let n=0;n=57344?n+=3:(r++,n+=4);return n}(t):Math.ceil(1.33*(t.byteLength||t.size))),n>0&&e>this.maxPayload)return this.writeBuffer.slice(0,n);e+=2}var t;return this.writeBuffer}write(e,t,n){return this.sendPacket("message",e,t,n),this}send(e,t,n){return this.sendPacket("message",e,t,n),this}sendPacket(e,t,n,r){if("function"==typeof t&&(r=t,t=void 0),"function"==typeof n&&(r=n,n=null),"closing"===this.readyState||"closed"===this.readyState)return;(n=n||{}).compress=!1!==n.compress;const i={type:e,data:t,options:n};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),r&&this.once("flush",r),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},n=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?n():e()})):this.upgrading?n():e()),this}onError(e){X.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let n=0;const r=e.length;for(;n"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,te=Object.prototype.toString,ne="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===te.call(Blob),re="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===te.call(File);function ie(e){return Q&&(e instanceof ArrayBuffer||ee(e))||ne&&e instanceof Blob||re&&e instanceof File}function se(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,n=e.length;t=0&&e.num{delete this.acks[e];for(let t=0;t{this.io.clearTimeoutFn(i),t.apply(this,e)};s.withError=!0,this.acks[e]=s}emitWithAck(e,...t){return new Promise(((n,r)=>{const i=(e,t)=>e?r(e):n(t);i.withError=!0,t.push(i),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...r)=>{if(n===this._queue[0])return null!==e?n.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...r)),n.pending=!1,this._drainQueue()})),this._queue.push(n),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:ue.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach((e=>{if(!this.sendBuffer.some((t=>String(t.id)===e))){const t=this.acks[e];delete this.acks[e],t.withError&&t.call(this,new Error("socket has been disconnected"))}}))}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case ue.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case ue.EVENT:case ue.BINARY_EVENT:this.onevent(e);break;case ue.ACK:case ue.BINARY_ACK:this.onack(e);break;case ue.DISCONNECT:this.ondisconnect();break;case ue.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const n of t)n.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let n=!1;return function(...r){n||(n=!0,t.packet({type:ue.ACK,id:e,data:r}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:ue.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let n=0;n0&&e.jitter<=1?e.jitter:0,this.attempts=0}ve.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=1&Math.floor(10*t)?e+n:e-n}return 0|Math.min(e,this.max)},ve.prototype.reset=function(){this.attempts=0},ve.prototype.setMin=function(e){this.ms=e},ve.prototype.setMax=function(e){this.max=e},ve.prototype.setJitter=function(e){this.jitter=e};class _e extends k{constructor(e,n){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(n=e,e=void 0),(n=n||{}).path=n.path||"/socket.io",this.opts=n,T(this,n),this.reconnection(!1!==n.reconnection),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=n.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new ve({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==n.timeout?2e4:n.timeout),this._readyState="closed",this.uri=e;const i=n.parser||t;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==n.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new X(this.uri,this.opts);const t=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const r=be(t,"open",(function(){n.onopen(),e&&e()})),i=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},s=be(t,"error",i);if(!1!==this._timeout){const e=this._timeout,n=this.setTimeoutFn((()=>{r(),i(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}return this.subs.push(r),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(be(e,"ping",this.onping.bind(this)),be(e,"data",this.ondata.bind(this)),be(e,"error",this.onerror.bind(this)),be(e,"close",this.onclose.bind(this)),be(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){q((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let n=this.nsps[e];return n?this._autoConnect&&!n.active&&n.connect():(n=new ye(this,e,t),this.nsps[e]=n),n}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return;this._close()}_packet(e){const t=this.encoder.encode(e);for(let n=0;ne())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const ke={};function Ee(e,t){"object"==typeof e&&(t=e,e=void 0);const n=function(e,t="",n){let r=e;n=n||"undefined"!=typeof location&&location,null==e&&(e=n.protocol+"//"+n.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?n.protocol+e:n.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==n?n.protocol+"//"+e:"https://"+e),r=J(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const i=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+i+":"+r.port+t,r.href=r.protocol+"://"+i+(n&&n.port===r.port?"":":"+r.port),r}(e,(t=t||{}).path||"/socket.io"),r=n.source,i=n.id,s=n.path,o=ke[i]&&s in ke[i].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new _e(r,t):(ke[i]||(ke[i]=new _e(r,t)),a=ke[i]),n.query&&!t.query&&(t.query=n.queryKey),a.socket(n.path,t)}Object.assign(Ee,{Manager:_e,Socket:ye,io:Ee,connect:Ee});const xe=function(e){const t=[];let n=0;for(let r=0;r>6|192,t[n++]=63&i|128):55296==(64512&i)&&r+1>18|240,t[n++]=i>>12&63|128,t[n++]=i>>6&63|128,t[n++]=63&i|128):(t[n++]=i>>12|224,t[n++]=i>>6&63|128,t[n++]=63&i|128)}return t},Ae={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray(e,t){if(!Array.isArray(e))throw Error("encodeByteArray takes an array as a parameter");this.init_();const n=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,r=[];for(let t=0;t>2,d=(3&i)<<4|o>>4;let h=(15&o)<<2|c>>6,u=63&c;a||(u=64,s||(h=64)),r.push(n[l],n[d],n[h],n[u])}return r.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(xe(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):function(e){const t=[];let n=0,r=0;for(;n191&&i<224){const s=e[n++];t[r++]=String.fromCharCode((31&i)<<6|63&s)}else if(i>239&&i<365){const s=((7&i)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536;t[r++]=String.fromCharCode(55296+(s>>10)),t[r++]=String.fromCharCode(56320+(1023&s))}else{const s=e[n++],o=e[n++];t[r++]=String.fromCharCode((15&i)<<12|(63&s)<<6|63&o)}}return t.join("")}(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();const n=t?this.charToByteMapWebSafe_:this.charToByteMap_,r=[];for(let t=0;t>4;if(r.push(c),64!==o){const e=s<<4&240|o>>2;if(r.push(e),64!==a){const e=o<<6&192|a;r.push(e)}}}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let e=0;e=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}};class Ce extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const Te=function(e){return function(e){const t=xe(e);return Ae.encodeByteArray(t,!0)}(e).replace(/\./g,"")},Se=()=>{try{return function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==e.g)return e.g;throw new Error("Unable to locate global object.")}().__FIREBASE_DEFAULTS__||(()=>{if("undefined"==typeof process||void 0===process.env)return;const e=process.env.__FIREBASE_DEFAULTS__;return e?JSON.parse(e):void 0})()||(()=>{if("undefined"==typeof document)return;let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(e){return}const t=e&&function(e){try{return Ae.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null}(e[1]);return t&&JSON.parse(t)})()}catch(e){return void console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`)}},Ie=()=>{var e;return null===(e=Se())||void 0===e?void 0:e.config};class je{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}wrapCallback(e){return(t,n)=>{t?this.reject(t):this.resolve(n),"function"==typeof e&&(this.promise.catch((()=>{})),1===e.length?e(t):e(t,n))}}}function Le(){try{return"object"==typeof indexedDB}catch(e){return!1}}function Oe(){return new Promise(((e,t)=>{try{let n=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),n||self.indexedDB.deleteDatabase(r),e(!0)},i.onupgradeneeded=()=>{n=!1},i.onerror=()=>{var e;t((null===(e=i.error)||void 0===e?void 0:e.message)||"")}}catch(e){t(e)}}))}class De extends Error{constructor(e,t,n){super(t),this.code=e,this.customData=n,this.name="FirebaseError",Object.setPrototypeOf(this,De.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,Re.prototype.create)}}class Re{constructor(e,t,n){this.service=e,this.serviceName=t,this.errors=n}create(e,...t){const n=t[0]||{},r=`${this.service}/${e}`,i=this.errors[e],s=i?function(e,t){return e.replace(Be,((e,n)=>{const r=t[n];return null!=r?String(r):`<${n}?>`}))}(i,n):"Error",o=`${this.serviceName}: ${s} (${r}).`;return new De(r,o,n)}}const Be=/\{\$([^}]+)}/g;function ze(e,t){if(e===t)return!0;const n=Object.keys(e),r=Object.keys(t);for(const i of n){if(!r.includes(i))return!1;const n=e[i],s=t[i];if(Ne(n)&&Ne(s)){if(!ze(n,s))return!1}else if(n!==s)return!1}for(const e of r)if(!n.includes(e))return!1;return!0}function Ne(e){return null!==e&&"object"==typeof e}const Pe=1e3,Ue=2,Me=144e5,Fe=.5;function $e(e,t=Pe,n=Ue){const r=t*Math.pow(n,e),i=Math.round(Fe*r*(Math.random()-.5)*2);return Math.min(Me,r+i)}function He(e){return e&&e._delegate?e._delegate:e}class Ve{constructor(e,t,n){this.name=e,this.instanceFactory=t,this.type=n,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}const qe="[DEFAULT]";class We{constructor(e,t){this.name=e,this.container=t,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){const t=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(t)){const e=new je;if(this.instancesDeferred.set(t,e),this.isInitialized(t)||this.shouldAutoInitialize())try{const n=this.getOrInitializeService({instanceIdentifier:t});n&&e.resolve(n)}catch(e){}}return this.instancesDeferred.get(t).promise}getImmediate(e){var t;const n=this.normalizeInstanceIdentifier(null==e?void 0:e.identifier),r=null!==(t=null==e?void 0:e.optional)&&void 0!==t&&t;if(!this.isInitialized(n)&&!this.shouldAutoInitialize()){if(r)return null;throw Error(`Service ${this.name} is not available`)}try{return this.getOrInitializeService({instanceIdentifier:n})}catch(e){if(r)return null;throw e}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,this.shouldAutoInitialize()){if(function(e){return"EAGER"===e.instantiationMode}(e))try{this.getOrInitializeService({instanceIdentifier:qe})}catch(e){}for(const[e,t]of this.instancesDeferred.entries()){const n=this.normalizeInstanceIdentifier(e);try{const e=this.getOrInitializeService({instanceIdentifier:n});t.resolve(e)}catch(e){}}}}clearInstance(e=qe){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter((e=>"INTERNAL"in e)).map((e=>e.INTERNAL.delete())),...e.filter((e=>"_delete"in e)).map((e=>e._delete()))])}isComponentSet(){return null!=this.component}isInitialized(e=qe){return this.instances.has(e)}getOptions(e=qe){return this.instancesOptions.get(e)||{}}initialize(e={}){const{options:t={}}=e,n=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(n))throw Error(`${this.name}(${n}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const r=this.getOrInitializeService({instanceIdentifier:n,options:t});for(const[e,t]of this.instancesDeferred.entries())n===this.normalizeInstanceIdentifier(e)&&t.resolve(r);return r}onInit(e,t){var n;const r=this.normalizeInstanceIdentifier(t),i=null!==(n=this.onInitCallbacks.get(r))&&void 0!==n?n:new Set;i.add(e),this.onInitCallbacks.set(r,i);const s=this.instances.get(r);return s&&e(s,r),()=>{i.delete(e)}}invokeOnInitCallbacks(e,t){const n=this.onInitCallbacks.get(t);if(n)for(const r of n)try{r(e,t)}catch(e){}}getOrInitializeService({instanceIdentifier:e,options:t={}}){let n=this.instances.get(e);if(!n&&this.component&&(n=this.component.instanceFactory(this.container,{instanceIdentifier:(r=e,r===qe?void 0:r),options:t}),this.instances.set(e,n),this.instancesOptions.set(e,t),this.invokeOnInitCallbacks(n,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,n)}catch(e){}var r;return n||null}normalizeInstanceIdentifier(e=qe){return this.component?this.component.multipleInstances?e:qe:e}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class Ze{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const t=this.getProvider(e.name);if(t.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);const t=new We(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}const Ke=[];var Ge;!function(e){e[e.DEBUG=0]="DEBUG",e[e.VERBOSE=1]="VERBOSE",e[e.INFO=2]="INFO",e[e.WARN=3]="WARN",e[e.ERROR=4]="ERROR",e[e.SILENT=5]="SILENT"}(Ge||(Ge={}));const Ye={debug:Ge.DEBUG,verbose:Ge.VERBOSE,info:Ge.INFO,warn:Ge.WARN,error:Ge.ERROR,silent:Ge.SILENT},Je=Ge.INFO,Xe={[Ge.DEBUG]:"log",[Ge.VERBOSE]:"log",[Ge.INFO]:"info",[Ge.WARN]:"warn",[Ge.ERROR]:"error"},Qe=(e,t,...n)=>{if(tt.some((t=>e instanceof t));let nt,rt;const it=new WeakMap,st=new WeakMap,ot=new WeakMap,at=new WeakMap,ct=new WeakMap;let lt={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return st.get(e);if("objectStoreNames"===t)return e.objectStoreNames||ot.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return ht(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function dt(e){return"function"==typeof e?(t=e)!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(rt||(rt=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(ut(this),e),ht(it.get(this))}:function(...e){return ht(t.apply(ut(this),e))}:function(e,...n){const r=t.call(ut(this),e,...n);return ot.set(r,e.sort?e.sort():[e]),ht(r)}:(e instanceof IDBTransaction&&function(e){if(st.has(e))return;const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("complete",i),e.removeEventListener("error",s),e.removeEventListener("abort",s)},i=()=>{t(),r()},s=()=>{n(e.error||new DOMException("AbortError","AbortError")),r()};e.addEventListener("complete",i),e.addEventListener("error",s),e.addEventListener("abort",s)}));st.set(e,t)}(e),tt(e,nt||(nt=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,lt):e);var t}function ht(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("success",i),e.removeEventListener("error",s)},i=()=>{t(ht(e.result)),r()},s=()=>{n(e.error),r()};e.addEventListener("success",i),e.addEventListener("error",s)}));return t.then((t=>{t instanceof IDBCursor&&it.set(t,e)})).catch((()=>{})),ct.set(t,e),t}(e);if(at.has(e))return at.get(e);const t=dt(e);return t!==e&&(at.set(e,t),ct.set(t,e)),t}const ut=e=>ct.get(e);function pt(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const o=indexedDB.open(e,t),a=ht(o);return r&&o.addEventListener("upgradeneeded",(e=>{r(ht(o.result),e.oldVersion,e.newVersion,ht(o.transaction),e)})),n&&o.addEventListener("blocked",(e=>n(e.oldVersion,e.newVersion,e))),a.then((e=>{s&&e.addEventListener("close",(()=>s())),i&&e.addEventListener("versionchange",(e=>i(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),a}const ft=["get","getKey","getAll","getAllKeys","count"],mt=["put","add","delete","clear"],gt=new Map;function bt(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(gt.get(t))return gt.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=mt.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!i&&!ft.includes(n))return;const s=async function(e,...t){const s=this.transaction(e,i?"readwrite":"readonly");let o=s.store;return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),i&&s.done]))[0]};return gt.set(t,s),s}var wt;wt=lt,lt={...wt,get:(e,t,n)=>bt(e,t)||wt.get(e,t,n),has:(e,t)=>!!bt(e,t)||wt.has(e,t)};class yt{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map((e=>{if(function(e){const t=e.getComponent();return"VERSION"===(null==t?void 0:t.type)}(e)){const t=e.getImmediate();return`${t.library}/${t.version}`}return null})).filter((e=>e)).join(" ")}}const vt="@firebase/app",_t="0.10.4",kt=new et("@firebase/app"),Et="@firebase/app-compat",xt="@firebase/analytics-compat",At="@firebase/analytics",Ct="@firebase/app-check-compat",Tt="@firebase/app-check",St="@firebase/auth",It="@firebase/auth-compat",jt="@firebase/database",Lt="@firebase/database-compat",Ot="@firebase/functions",Dt="@firebase/functions-compat",Rt="@firebase/installations",Bt="@firebase/installations-compat",zt="@firebase/messaging",Nt="@firebase/messaging-compat",Pt="@firebase/performance",Ut="@firebase/performance-compat",Mt="@firebase/remote-config",Ft="@firebase/remote-config-compat",$t="@firebase/storage",Ht="@firebase/storage-compat",Vt="@firebase/firestore",qt="@firebase/vertexai-preview",Wt="@firebase/firestore-compat",Zt="firebase",Kt="[DEFAULT]",Gt={[vt]:"fire-core",[Et]:"fire-core-compat",[At]:"fire-analytics",[xt]:"fire-analytics-compat",[Tt]:"fire-app-check",[Ct]:"fire-app-check-compat",[St]:"fire-auth",[It]:"fire-auth-compat",[jt]:"fire-rtdb",[Lt]:"fire-rtdb-compat",[Ot]:"fire-fn",[Dt]:"fire-fn-compat",[Rt]:"fire-iid",[Bt]:"fire-iid-compat",[zt]:"fire-fcm",[Nt]:"fire-fcm-compat",[Pt]:"fire-perf",[Ut]:"fire-perf-compat",[Mt]:"fire-rc",[Ft]:"fire-rc-compat",[$t]:"fire-gcs",[Ht]:"fire-gcs-compat",[Vt]:"fire-fst",[Wt]:"fire-fst-compat",[qt]:"fire-vertex","fire-js":"fire-js",[Zt]:"fire-js-all"},Yt=new Map,Jt=new Map,Xt=new Map;function Qt(e,t){try{e.container.addComponent(t)}catch(n){kt.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,n)}}function en(e){const t=e.name;if(Xt.has(t))return kt.debug(`There were multiple attempts to register component ${t}.`),!1;Xt.set(t,e);for(const t of Yt.values())Qt(t,e);for(const t of Jt.values())Qt(t,e);return!0}function tn(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}const nn=new Re("app","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}'","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","server-app-deleted":"Firebase Server App has been deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.","finalization-registry-not-supported":"FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.","invalid-server-app-environment":"FirebaseServerApp is not for use in browser environments."});class rn{constructor(e,t,n){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},t),this._name=t.name,this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled,this._container=n,this.container.addComponent(new Ve("app",(()=>this),"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw nn.create("app-deleted",{appName:this._name})}}function sn(e,t={}){let n=e;"object"!=typeof t&&(t={name:t});const r=Object.assign({name:Kt,automaticDataCollectionEnabled:!1},t),i=r.name;if("string"!=typeof i||!i)throw nn.create("bad-app-name",{appName:String(i)});if(n||(n=Ie()),!n)throw nn.create("no-options");const s=Yt.get(i);if(s){if(ze(n,s.options)&&ze(r,s.config))return s;throw nn.create("duplicate-app",{appName:i})}const o=new Ze(i);for(const e of Xt.values())o.addComponent(e);const a=new rn(n,r,o);return Yt.set(i,a),a}function on(e,t,n){var r;let i=null!==(r=Gt[e])&&void 0!==r?r:e;n&&(i+=`-${n}`);const s=i.match(/\s|\//),o=t.match(/\s|\//);if(s||o){const e=[`Unable to register library "${i}" with version "${t}":`];return s&&e.push(`library name "${i}" contains illegal characters (whitespace or "/")`),s&&o&&e.push("and"),o&&e.push(`version name "${t}" contains illegal characters (whitespace or "/")`),void kt.warn(e.join(" "))}en(new Ve(`${i}-version`,(()=>({library:i,version:t})),"VERSION"))}const an="firebase-heartbeat-database",cn=1,ln="firebase-heartbeat-store";let dn=null;function hn(){return dn||(dn=pt(an,cn,{upgrade:(e,t)=>{if(0===t)try{e.createObjectStore(ln)}catch(e){console.warn(e)}}}).catch((e=>{throw nn.create("idb-open",{originalErrorMessage:e.message})}))),dn}async function un(e,t){try{const n=(await hn()).transaction(ln,"readwrite"),r=n.objectStore(ln);await r.put(t,pn(e)),await n.done}catch(e){if(e instanceof De)kt.warn(e.message);else{const t=nn.create("idb-set",{originalErrorMessage:null==e?void 0:e.message});kt.warn(t.message)}}}function pn(e){return`${e.name}!${e.options.appId}`}class fn{constructor(e){this.container=e,this._heartbeatsCache=null;const t=this.container.getProvider("app").getImmediate();this._storage=new gn(t),this._heartbeatsCachePromise=this._storage.read().then((e=>(this._heartbeatsCache=e,e)))}async triggerHeartbeat(){var e,t;const n=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),r=mn();if((null!=(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)||(this._heartbeatsCache=await this._heartbeatsCachePromise,null!=(null===(t=this._heartbeatsCache)||void 0===t?void 0:t.heartbeats)))&&this._heartbeatsCache.lastSentHeartbeatDate!==r&&!this._heartbeatsCache.heartbeats.some((e=>e.date===r)))return this._heartbeatsCache.heartbeats.push({date:r,agent:n}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter((e=>{const t=new Date(e.date).valueOf();return Date.now()-t<=2592e6})),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){var e;if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,null==(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)||0===this._heartbeatsCache.heartbeats.length)return"";const t=mn(),{heartbeatsToSend:n,unsentEntries:r}=function(e,t=1024){const n=[];let r=e.slice();for(const i of e){const e=n.find((e=>e.agent===i.agent));if(e){if(e.dates.push(i.date),bn(n)>t){e.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),bn(n)>t){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}(this._heartbeatsCache.heartbeats),i=Te(JSON.stringify({version:2,heartbeats:n}));return this._heartbeatsCache.lastSentHeartbeatDate=t,r.length>0?(this._heartbeatsCache.heartbeats=r,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}}function mn(){return(new Date).toISOString().substring(0,10)}class gn{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return!!Le()&&Oe().then((()=>!0)).catch((()=>!1))}async read(){if(await this._canUseIndexedDBPromise){const e=await async function(e){try{const t=(await hn()).transaction(ln),n=await t.objectStore(ln).get(pn(e));return await t.done,n}catch(e){if(e instanceof De)kt.warn(e.message);else{const t=nn.create("idb-get",{originalErrorMessage:null==e?void 0:e.message});kt.warn(t.message)}}}(this.app);return(null==e?void 0:e.heartbeats)?e:{heartbeats:[]}}return{heartbeats:[]}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){const n=await this.read();return un(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:e.heartbeats})}}async add(e){var t;if(await this._canUseIndexedDBPromise){const n=await this.read();return un(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:[...n.heartbeats,...e.heartbeats]})}}}function bn(e){return Te(JSON.stringify({version:2,heartbeats:e})).length}en(new Ve("platform-logger",(e=>new yt(e)),"PRIVATE")),en(new Ve("heartbeat",(e=>new fn(e)),"PRIVATE")),on(vt,_t,""),on(vt,_t,"esm2017"),on("fire-js",""),on("firebase","10.12.1","app");const wn="@firebase/installations",yn="0.6.7",vn=1e4,_n=`w:${yn}`,kn="FIS_v2",En="https://firebaseinstallations.googleapis.com/v1",xn=36e5,An=new Re("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function Cn(e){return e instanceof De&&e.code.includes("request-failed")}function Tn({projectId:e}){return`${En}/projects/${e}/installations`}function Sn(e){return{token:e.token,requestStatus:2,expiresIn:(t=e.expiresIn,Number(t.replace("s","000"))),creationTime:Date.now()};var t}async function In(e,t){const n=(await t.json()).error;return An.create("request-failed",{requestName:e,serverCode:n.code,serverMessage:n.message,serverStatus:n.status})}function jn({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}async function Ln(e){const t=await e();return t.status>=500&&t.status<600?e():t}function On(e){return new Promise((t=>{setTimeout(t,e)}))}const Dn=/^[cdef][\w-]{21}$/,Rn="";function Bn(){try{const e=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16;const t=function(e){var t;return(t=e,btoa(String.fromCharCode(...t)).replace(/\+/g,"-").replace(/\//g,"_")).substr(0,22)}(e);return Dn.test(t)?t:Rn}catch(e){return Rn}}function zn(e){return`${e.appName}!${e.appId}`}const Nn=new Map;function Pn(e,t){const n=zn(e);Un(n,t),function(e,t){const n=(!Mn&&"BroadcastChannel"in self&&(Mn=new BroadcastChannel("[Firebase] FID Change"),Mn.onmessage=e=>{Un(e.data.key,e.data.fid)}),Mn);n&&n.postMessage({key:e,fid:t}),0===Nn.size&&Mn&&(Mn.close(),Mn=null)}(n,t)}function Un(e,t){const n=Nn.get(e);if(n)for(const e of n)e(t)}let Mn=null;const Fn="firebase-installations-database",$n=1,Hn="firebase-installations-store";let Vn=null;function qn(){return Vn||(Vn=pt(Fn,$n,{upgrade:(e,t)=>{0===t&&e.createObjectStore(Hn)}})),Vn}async function Wn(e,t){const n=zn(e),r=(await qn()).transaction(Hn,"readwrite"),i=r.objectStore(Hn),s=await i.get(n);return await i.put(t,n),await r.done,s&&s.fid===t.fid||Pn(e,t.fid),t}async function Zn(e){const t=zn(e),n=(await qn()).transaction(Hn,"readwrite");await n.objectStore(Hn).delete(t),await n.done}async function Kn(e,t){const n=zn(e),r=(await qn()).transaction(Hn,"readwrite"),i=r.objectStore(Hn),s=await i.get(n),o=t(s);return void 0===o?await i.delete(n):await i.put(o,n),await r.done,!o||s&&s.fid===o.fid||Pn(e,o.fid),o}async function Gn(e){let t;const n=await Kn(e.appConfig,(n=>{const r=function(e){return Xn(e||{fid:Bn(),registrationStatus:0})}(n),i=function(e,t){if(0===t.registrationStatus){if(!navigator.onLine)return{installationEntry:t,registrationPromise:Promise.reject(An.create("app-offline"))};const n={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},r=async function(e,t){try{const n=await async function({appConfig:e,heartbeatServiceProvider:t},{fid:n}){const r=Tn(e),i=jn(e),s=t.getImmediate({optional:!0});if(s){const e=await s.getHeartbeatsHeader();e&&i.append("x-firebase-client",e)}const o={fid:n,authVersion:kn,appId:e.appId,sdkVersion:_n},a={method:"POST",headers:i,body:JSON.stringify(o)},c=await Ln((()=>fetch(r,a)));if(c.ok){const e=await c.json();return{fid:e.fid||n,registrationStatus:2,refreshToken:e.refreshToken,authToken:Sn(e.authToken)}}throw await In("Create Installation",c)}(e,t);return Wn(e.appConfig,n)}catch(n){throw Cn(n)&&409===n.customData.serverCode?await Zn(e.appConfig):await Wn(e.appConfig,{fid:t.fid,registrationStatus:0}),n}}(e,n);return{installationEntry:n,registrationPromise:r}}return 1===t.registrationStatus?{installationEntry:t,registrationPromise:Yn(e)}:{installationEntry:t}}(e,r);return t=i.registrationPromise,i.installationEntry}));return n.fid===Rn?{installationEntry:await t}:{installationEntry:n,registrationPromise:t}}async function Yn(e){let t=await Jn(e.appConfig);for(;1===t.registrationStatus;)await On(100),t=await Jn(e.appConfig);if(0===t.registrationStatus){const{installationEntry:t,registrationPromise:n}=await Gn(e);return n||t}return t}function Jn(e){return Kn(e,(e=>{if(!e)throw An.create("installation-not-found");return Xn(e)}))}function Xn(e){return 1===(t=e).registrationStatus&&t.registrationTime+vnfetch(r,a)));if(c.ok)return Sn(await c.json());throw await In("Generate Auth Token",c)}async function er(e,t=!1){let n;const r=await Kn(e.appConfig,(r=>{if(!nr(r))throw An.create("not-registered");const i=r.authToken;if(!t&&(2===(s=i).requestStatus&&!function(e){const t=Date.now();return t{if(!nr(e))throw An.create("not-registered");return 1===(t=e.authToken).requestStatus&&t.requestTime+vn{const t=e.getProvider("app").getImmediate(),n=function(e){if(!e||!e.options)throw rr("App Configuration");if(!e.name)throw rr("App Name");const t=["projectId","apiKey","appId"];for(const n of t)if(!e.options[n])throw rr(n);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t);return{app:t,appConfig:n,heartbeatServiceProvider:tn(t,"heartbeat"),_delete:()=>Promise.resolve()}}),"PUBLIC")),en(new Ve("installations-internal",(e=>{const t=tn(e.getProvider("app").getImmediate(),ir).getImmediate();return{getId:()=>async function(e){const t=e,{installationEntry:n,registrationPromise:r}=await Gn(t);return r?r.catch(console.error):er(t).catch(console.error),n.fid}(t),getToken:e=>async function(e,t=!1){const n=e;return await async function(e){const{registrationPromise:t}=await Gn(e);t&&await t}(n),(await er(n,t)).token}(t,e)}}),"PRIVATE")),on(wn,yn),on(wn,yn,"esm2017");const sr="analytics",or="firebase_id",ar="origin",cr=6e4,lr="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",dr="https://www.googletagmanager.com/gtag/js",hr=new et("@firebase/analytics"),ur=new Re("analytics","Analytics",{"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-intialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',"no-client-id":'The "client_id" field is empty.',"invalid-gtag-resource":"Trusted Types detected an invalid gtag resource: {$gtagURL}."});function pr(e){if(!e.startsWith(dr)){const t=ur.create("invalid-gtag-resource",{gtagURL:e});return hr.warn(t.message),""}return e}function fr(e){return Promise.all(e.map((e=>e.catch((e=>e)))))}const mr=30,gr=new class{constructor(e={},t=1e3){this.throttleMetadata=e,this.intervalMillis=t}getThrottleMetadata(e){return this.throttleMetadata[e]}setThrottleMetadata(e,t){this.throttleMetadata[e]=t}deleteThrottleMetadata(e){delete this.throttleMetadata[e]}};function br(e){return new Headers({Accept:"application/json","x-goog-api-key":e})}async function wr(e,t=gr,n){const{appId:r,apiKey:i,measurementId:s}=e.options;if(!r)throw ur.create("no-app-id");if(!i){if(s)return{measurementId:s,appId:r};throw ur.create("no-api-key")}const o=t.getThrottleMetadata(r)||{backoffCount:0,throttleEndTimeMillis:Date.now()},a=new vr;return setTimeout((async()=>{a.abort()}),void 0!==n?n:cr),yr({appId:r,apiKey:i,measurementId:s},o,a,t)}async function yr(e,{throttleEndTimeMillis:t,backoffCount:n},r,i=gr){var s;const{appId:o,measurementId:a}=e;try{await function(e,t){return new Promise(((n,r)=>{const i=Math.max(t-Date.now(),0),s=setTimeout(n,i);e.addEventListener((()=>{clearTimeout(s),r(ur.create("fetch-throttle",{throttleEndTimeMillis:t}))}))}))}(r,t)}catch(e){if(a)return hr.warn(`Timed out fetching this Firebase app's measurement ID from the server. Falling back to the measurement ID ${a} provided in the "measurementId" field in the local Firebase config. [${null==e?void 0:e.message}]`),{appId:o,measurementId:a};throw e}try{const t=await async function(e){var t;const{appId:n,apiKey:r}=e,i={method:"GET",headers:br(r)},s=lr.replace("{app-id}",n),o=await fetch(s,i);if(200!==o.status&&304!==o.status){let e="";try{const n=await o.json();(null===(t=n.error)||void 0===t?void 0:t.message)&&(e=n.error.message)}catch(e){}throw ur.create("config-fetch-failed",{httpStatus:o.status,responseMessage:e})}return o.json()}(e);return i.deleteThrottleMetadata(o),t}catch(t){const c=t;if(!function(e){if(!(e instanceof De&&e.customData))return!1;const t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}(c)){if(i.deleteThrottleMetadata(o),a)return hr.warn(`Failed to fetch this Firebase app's measurement ID from the server. Falling back to the measurement ID ${a} provided in the "measurementId" field in the local Firebase config. [${null==c?void 0:c.message}]`),{appId:o,measurementId:a};throw t}const l=503===Number(null===(s=null==c?void 0:c.customData)||void 0===s?void 0:s.httpStatus)?$e(n,i.intervalMillis,mr):$e(n,i.intervalMillis),d={throttleEndTimeMillis:Date.now()+l,backoffCount:n+1};return i.setThrottleMetadata(o,d),hr.debug(`Calling attemptFetch again in ${l} millis`),yr(e,d,r,i)}}class vr{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach((e=>e()))}}let _r,kr;async function Er(e,t,n,r,i,s,o){var a;const c=wr(e);c.then((t=>{n[t.measurementId]=t.appId,e.options.measurementId&&t.measurementId!==e.options.measurementId&&hr.warn(`The measurement ID in the local Firebase config (${e.options.measurementId}) does not match the measurement ID fetched from the server (${t.measurementId}). To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.`)})).catch((e=>hr.error(e))),t.push(c);const l=async function(){if(!Le())return hr.warn(ur.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await Oe()}catch(e){return hr.warn(ur.create("indexeddb-unavailable",{errorInfo:null==e?void 0:e.toString()}).message),!1}return!0}().then((e=>e?r.getId():void 0)),[d,h]=await Promise.all([c,l]);(function(e){const t=window.document.getElementsByTagName("script");for(const n of Object.values(t))if(n.src&&n.src.includes(dr)&&n.src.includes(e))return n;return null})(s)||function(e,t){const n=function(e,t){let n;return window.trustedTypes&&(n=window.trustedTypes.createPolicy("firebase-js-sdk-policy",t)),n}(0,{createScriptURL:pr}),r=document.createElement("script"),i=`${dr}?l=${e}&id=${t}`;r.src=n?null==n?void 0:n.createScriptURL(i):i,r.async=!0,document.head.appendChild(r)}(s,d.measurementId),kr&&(i("consent","default",kr),kr=void 0),i("js",new Date);const u=null!==(a=null==o?void 0:o.config)&&void 0!==a?a:{};return u[ar]="firebase",u.update=!0,null!=h&&(u[or]=h),i("config",d.measurementId,u),_r&&(i("set",_r),_r=void 0),d.measurementId}class xr{constructor(e){this.app=e}_delete(){return delete Ar[this.app.options.appId],Promise.resolve()}}let Ar={},Cr=[];const Tr={};let Sr,Ir,jr="dataLayer",Lr=!1;function Or(e,t,n){!function(){const e=[];if(function(){const e="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof e&&void 0!==e.id}()&&e.push("This is a browser extension environment."),"undefined"!=typeof navigator&&navigator.cookieEnabled||e.push("Cookies are not available."),e.length>0){const t=e.map(((e,t)=>`(${t+1}) ${e}`)).join(" "),n=ur.create("invalid-analytics-context",{errorInfo:t});hr.warn(n.message)}}();const r=e.options.appId;if(!r)throw ur.create("no-app-id");if(!e.options.apiKey){if(!e.options.measurementId)throw ur.create("no-api-key");hr.warn(`The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest measurement ID for this Firebase app. Falling back to the measurement ID ${e.options.measurementId} provided in the "measurementId" field in the local Firebase config.`)}if(null!=Ar[r])throw ur.create("already-exists",{id:r});if(!Lr){!function(e){let t=[];Array.isArray(window[e])?t=window[e]:window[e]=t}(jr);const{wrappedGtag:e,gtagCore:t}=function(e,t,n,r,i){let s=function(...e){window[r].push(arguments)};return window[i]&&"function"==typeof window[i]&&(s=window[i]),window[i]=function(e,t,n,r){return async function(i,...s){try{if("event"===i){const[r,i]=s;await async function(e,t,n,r,i){try{let s=[];if(i&&i.send_to){let e=i.send_to;Array.isArray(e)||(e=[e]);const r=await fr(n);for(const n of e){const e=r.find((e=>e.measurementId===n)),i=e&&t[e.appId];if(!i){s=[];break}s.push(i)}}0===s.length&&(s=Object.values(t)),await Promise.all(s),e("event",r,i||{})}catch(e){hr.error(e)}}(e,t,n,r,i)}else if("config"===i){const[i,o]=s;await async function(e,t,n,r,i,s){const o=r[i];try{if(o)await t[o];else{const e=(await fr(n)).find((e=>e.measurementId===i));e&&await t[e.appId]}}catch(e){hr.error(e)}e("config",i,s)}(e,t,n,r,i,o)}else if("consent"===i){const[t,n]=s;e("consent",t,n)}else if("get"===i){const[t,n,r]=s;e("get",t,n,r)}else if("set"===i){const[t]=s;e("set",t)}else e(i,...s)}catch(e){hr.error(e)}}}(s,e,t,n),{gtagCore:s,wrappedGtag:window[i]}}(Ar,Cr,Tr,jr,"gtag");Ir=e,Sr=t,Lr=!0}return Ar[r]=Er(e,Cr,Tr,t,Sr,jr,n),new xr(e)}const Dr="@firebase/analytics",Rr="0.10.4";en(new Ve(sr,((e,{options:t})=>Or(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),t)),"PUBLIC")),en(new Ve("analytics-internal",(function(e){try{const t=e.getProvider(sr).getImmediate();return{logEvent:(e,n,r)=>function(e,t,n,r){e=He(e),async function(e,t,n,r,i){if(i&&i.global)e("event",n,r);else{const i=await t;e("event",n,Object.assign(Object.assign({},r),{send_to:i}))}}(Ir,Ar[e.app.options.appId],t,n,r).catch((e=>hr.error(e)))}(t,e,n,r)}}catch(e){throw ur.create("interop-component-reg-failed",{reason:e})}}),"PRIVATE")),on(Dr,Rr),on(Dr,Rr,"esm2017");const Br=function(){for(let e=Object.getPrototypeOf(this);null!=e;e=Object.getPrototypeOf(e))try{delete e.constructor}catch(e){}},zr=Object.freeze(Object.create(null));Object.defineProperty(Br,"prototype",{value:zr,writable:!1,enumerable:!1,configurable:!1}),Object.setPrototypeOf(Br,null),Object.freeze(Br);const Nr=Br;var Pr,Ur=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Pr=new WeakMap;const Mr=class extends Nr{constructor(){super(...arguments),Pr.set(this,Object.create(null))}get size(){return Object.keys(Ur(this,Pr,"f")).length}has(e){return e in Ur(this,Pr,"f")}get(e){return Ur(this,Pr,"f")[e]||null}set(e,t){Ur(this,Pr,"f")[e]=t}delete(e){return delete Ur(this,Pr,"f")[e]}clear(){const e=Ur(this,Pr,"f");for(const t of Object.keys(e))delete e[t]}keys(){return Object.keys(Ur(this,Pr,"f"))}values(){const e=Ur(this,Pr,"f"),t=[];for(const n of Object.keys(e))t.push(e[n]);return t}entries(){const e=Ur(this,Pr,"f"),t=[];for(const n of Object.keys(e))t.push([n,e[n]]);return t}};var Fr,$r=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Fr=new WeakMap;const Hr=class extends Nr{get size(){return $r(this,Fr,"f").length}constructor(e){super(),Fr.set(this,void 0),function(e,t,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===r?i.call(e,n):i?i.value=n:t.set(e,n)}(this,Fr,e,"f")}has(e){return null!=$r(this,Fr,"f").getItem(e)}get(e){return $r(this,Fr,"f").getItem(e)}set(e,t){$r(this,Fr,"f").setItem(e,t)}delete(e){return $r(this,Fr,"f").removeItem(e),!0}clear(){$r(this,Fr,"f").clear()}keys(){const e=$r(this,Fr,"f"),t=e.length,n=new Array(t);for(let r=0;r>18&63]+Jr[n>>12&63]+Jr[n>>6&63]+Jr[63&n]}const s=r%3;return 1===s?(n="==",t=t.slice(0,-2)):2===s&&(n="=",t=t.slice(0,-1)),t+n},decode:function(e){const t=.75*e.length-(e.endsWith("==")?2:e.endsWith("=")?1:0),n=new ArrayBuffer(t),r=new Uint8Array(n,0,t);let i=0;for(let t=0;t>16&255,r[i++]=n>>8&255,r[i++]=255&n}return n}};Object.setPrototypeOf(Qr,null),Object.freeze(Qr);const ei=Qr,ti={encode:function(e){const t=Array.from(e).map((e=>e.codePointAt(0)||0)),n=[];for(const e of t)e<=127?n.push(e):e<=2047?(n.push(e>>6|192),n.push(63&e|128)):e<=65535?(n.push(e>>12|224),n.push(e>>6&63|128),n.push(63&e|128)):e<=1114111&&(n.push(e>>18|240),n.push(e>>12&63|128),n.push(e>>6&63|128),n.push(63&e|128));return new Uint8Array(n).buffer},decode:function(e){const t=new Uint8Array(e);let n="",r=0;for(;re.unicode))}const wi={},yi={},vi={};function _i(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}function ki(e,t,n,r){return new Promise(((i,s)=>{const o=e.transaction(t,n,{durability:"relaxed"}),a="string"==typeof t?o.objectStore(t):t.map((e=>o.objectStore(e)));let c;r(a,o,(e=>{c=e})),o.oncomplete=()=>i(c),o.onerror=()=>s(o.error)}))}function Ei(e){const t=wi[e],n=t&&t.result;if(n){n.close();const t=vi[e];if(t)for(const e of t)e()}delete wi[e],delete yi[e],delete vi[e]}const xi=new Set([":D","XD",":'D","O:)",":X",":P",";P","XP",":L",":Z",":j","8D","XO","8)",":B",":O",":S",":'o","Dx","X(","D:",":C",">0)",":3","!e.match(/\w/)||xi.has(e)?e.toLowerCase():e.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase())).filter(Boolean)}const Ci=2;function Ti(e){return e.filter(Boolean).map((e=>e.toLowerCase())).filter((e=>e.length>=Ci))}function Si(e,t,n,r){e[t](n).onsuccess=e=>r&&r(e.target.result)}function Ii(e,t,n){Si(e,"get",t,n)}function ji(e,t,n){Si(e,"getAll",t,n)}function Li(e){e.commit&&e.commit()}function Oi(e,t){const n=function(e,t){let n=e[0];for(let r=1;rt(i)&&(n=i)}return n}(e,(e=>e.length)),r=[];for(const i of n)e.some((e=>-1===e.findIndex((e=>t(e)===t(i)))))||r.push(i);return r}async function Di(e,t,n,r){try{const i=function(e){return e.map((({annotation:e,emoticon:t,group:n,order:r,shortcodes:i,skins:s,tags:o,emoji:a,version:c})=>{const l=[...new Set(Ti([...(i||[]).map(Ai).flat(),...o.map(Ai).flat(),...Ai(e),t]))].sort(),d={annotation:e,group:n,order:r,tags:o,tokens:l,unicode:a,version:c};if(t&&(d.emoticon=t),i&&(d.shortcodes=i),s){d.skinTones=[],d.skinUnicodes=[],d.skinVersions=[];for(const{tone:e,emoji:t,version:n}of s)d.skinTones.push(e),d.skinUnicodes.push(t),d.skinVersions.push(n)}return d}))}(t);await ki(e,[si,oi],mi,(([e,t],s)=>{let o,a,c=0;function l(){2==++c&&function(){if(o!==r||a!==n){e.clear();for(const t of i)e.put(t);t.put(r,hi),t.put(n,ui),Li(s)}}()}Ii(t,hi,(e=>{o=e,l()})),Ii(t,ui,(e=>{a=e,l()}))}))}finally{}}async function Ri(e,t){const n=Ti(Ai(t));return n.length?ki(e,si,fi,((e,t,r)=>{const i=[],s=()=>{const e=Oi(i,(e=>e.unicode));r(e.sort(((e,t)=>e.order{i.push(e),i.length===n.length&&s()}))}})):[]}function Bi(e,t,n){return ki(e,t,fi,((e,t,r)=>Ii(e,n,r)))}const zi=["name","url"];function Ni(e){!function(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||zi.some((t=>!(t in e[0]))));if(!t||n)throw new Error("Custom emojis are in the wrong format")}(e);const t=(e,t)=>e.name.toLowerCase()Ai(e))).flat())];for(const r of e){let e=n;for(let t=0;t{let r=n;for(let t=0;te[0]r(e,!0),s=e=>r(e,!1),o=new Map,a=new Map;for(const t of e){a.set(t.name.toLowerCase(),t);for(const e of t.shortcodes||[])o.set(e.toLowerCase(),t)}return{all:n,search:e=>{const n=Ai(e),r=n.map(((e,t)=>(te.name)).sort(t)},byShortcode:e=>o.get(e.toLowerCase()),byName:e=>a.get(e.toLowerCase())}}const Pi="undefined"!=typeof wrappedJSObject;function Ui(e){if(!e)return e;if(Pi&&(e=structuredClone(e)),delete e.tokens,e.skinTones){const t=e.skinTones.length;e.skins=Array(t);for(let n=0;n!(t in e[0]))))throw new Error("Emoji data is in the wrong format")}(r),[n,r]}async function Vi(e){let t=function(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),i=-1;++i{const r=indexedDB.open(e,1);wi[e]=r,r.onupgradeneeded=e=>{e.oldVersion<1&&function(e){function t(t,n,r){const i=n?e.createObjectStore(t,{keyPath:n}):e.createObjectStore(t);if(r)for(const[e,[t,n]]of Object.entries(r))i.createIndex(e,t,{multiEntry:n});return i}t(oi),t(si,"unicode",{[ci]:["tokens",!0],[di]:[["group","order"]],[gi]:["skinUnicodes",!0]}),t(ai,void 0,{[li]:[""]})}(r.result)},_i(t,n,r)}));return t.onclose=()=>Ei(e),t}(t)),yi[t]);var t;!function(e,t){let n=vi[e];n||(n=vi[e]=[]),n.push(t)}(this._dbName,this._clear);const n=this.dataSource,r=await async function(e){return!await Bi(e,oi,ui)}(e);r?await async function(e,t){let[n,r]=await Hi(t);n||(n=await Vi(r)),await Di(e,r,t,n)}(e,n):this._lazyUpdate=async function(e,t){let n,r=await async function(e){const t=await fetch(e,{method:"HEAD"});$i(t,e);const n=t.headers.get("etag");return Mi(n),n}(t);if(!r){const e=await Hi(t);r=e[0],n=e[1],r||(r=await Vi(n))}await async function(e,t,n){const[r,i]=await Promise.all([hi,ui].map((t=>Bi(e,oi,t))));return r===n&&i===t}(e,t,r)||(n||(n=(await Hi(t))[1]),await Di(e,n,t,r))}(e,n)}async ready(){const e=async()=>(this._ready||(this._ready=this._init()),this._ready);await e(),this._db||await e()}async getEmojiByGroup(e){return ii(e),await this.ready(),bi(await async function(e,t){return ki(e,si,fi,((e,n,r)=>{const i=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);ji(e.index(di),i,r)}))}(this._db,e)).map(Ui)}async getEmojiBySearchQuery(e){return ri(e),await this.ready(),[...this._custom.search(e),...bi(await Ri(this._db,e)).map(Ui)]}async getEmojiByShortcode(e){ri(e),await this.ready();return this._custom.byShortcode(e)||Ui(await async function(e,t){const n=await Ri(e,t);if(!n.length){const n=e=>(e.shortcodes||[]).includes(t.toLowerCase());return await async function(e,t){return ki(e,si,fi,((e,n,r)=>{let i;const s=()=>{e.getAll(i&&IDBKeyRange.lowerBound(i,!0),50).onsuccess=e=>{const n=e.target.result;for(const e of n)if(i=e.unicode,t(e))return r(e);if(n.length<50)return r();s()}};s()}))}(e,n)||null}return n.filter((e=>{const n=(e.shortcodes||[]).map((e=>e.toLowerCase()));return n.includes(t.toLowerCase())}))[0]||null}(this._db,e))}async getEmojiByUnicodeOrName(e){ri(e),await this.ready();return this._custom.byName(e)||Ui(await async function(e,t){return ki(e,si,fi,((e,n,r)=>Ii(e,t,(n=>{if(n)return r(n);Ii(e.index(gi),t,(e=>r(e||null)))}))))}(this._db,e))}async getPreferredSkinTone(){return await this.ready(),await Bi(this._db,oi,pi)||0}async setPreferredSkinTone(e){return ii(e),await this.ready(),function(e,t,n,r){return ki(e,t,mi,((e,t)=>{e.put(r,n),Li(t)}))}(this._db,oi,pi,e)}async incrementFavoriteEmojiCount(e){return ri(e),await this.ready(),t=this._db,n=e,ki(t,ai,mi,((e,t)=>Ii(e,n,(r=>{e.put((r||0)+1,n),Li(t)}))));var t,n}async getTopFavoriteEmoji(e){return ii(e),await this.ready(),(await function(e,t,n){return 0===n?[]:ki(e,[ai,si],fi,(([e,r],i,s)=>{const o=[];e.index(li).openCursor(void 0,"prev").onsuccess=e=>{const i=e.target.result;if(!i)return s(o);function a(e){if(o.push(e),o.length===n)return s(o);i.continue()}const c=i.primaryKey,l=t.byName(c);if(l)return a(l);Ii(r,c,(e=>{if(e)return a(e);i.continue()}))}}))}(this._db,this._custom,e)).map(Ui)}set customEmoji(e){this._custom=Ni(e)}get customEmoji(){return this._custom.all}async _shutdown(){await this.ready();try{await this._lazyUpdate}catch(e){}}_clear(){this._db=this._ready=this._lazyUpdate=void 0}async close(){await this._shutdown(),await Ei(this._dbName)}async delete(){var e;await this._shutdown(),await(e=this._dbName,new Promise(((t,n)=>{Ei(e),_i(t,n,indexedDB.deleteDatabase(e))})))}}const Wi=[[-1,"✨","custom"],[0,"😀","smileys-emotion"],[1,"👋","people-body"],[3,"🐱","animals-nature"],[4,"🍎","food-drink"],[5,"🏠️","travel-places"],[6,"⚽","activities"],[7,"📝","objects"],[8,"⛔️","symbols"],[9,"🏁","flags"]].map((([e,t,n])=>({id:e,emoji:t,name:n}))),Zi=Wi.slice(1),Ki="function"==typeof requestIdleCallback?requestIdleCallback:setTimeout;function Gi(e){return e.unicode.includes("‍")}const Yi={"🫨":15.1,"🫠":14,"🥲":13.1,"🥻":12.1,"🥰":11,"🤩":5,"👱‍♀️":4,"🤣":3,"👁️‍🗨️":2,"😀":1,"😐️":.7,"😃":.6},Ji=["😊","😒","❤️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],Xi='"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',Qi=(e,t)=>et?1:0,es=(e,t)=>{const n=document.createElement("canvas");n.width=n.height=1;const r=n.getContext("2d");return r.textBaseline="top",r.font=`100px ${Xi}`,r.fillStyle=t,r.scale(.01,.01),r.fillText(e,0,0),r.getImageData(0,0,1,1).data};function ts(e){const t=es(e,"#000"),n=es(e,"#fff");return t&&n&&((e,t)=>{const n=[...e].join(",");return n===[...t].join(",")&&!n.startsWith("0,0,0,")})(t,n)}let ns;const rs=()=>(ns||(ns=new Promise((e=>Ki((()=>e(function(){const e=Object.entries(Yi);try{for(const[t,n]of e)if(ts(t))return n}catch(e){}return e[0][1]}())))))),ns),is=new Map;function ss(e){e.preventDefault(),e.stopPropagation()}function os(e,t,n){return(t+=e?-1:1)<0?t=n.length-1:t>=n.length&&(t=0),t}function as(e,t){const n=new Set,r=[];for(const i of e){const e=t(i);n.has(e)||(n.add(e),r.push(i))}return r}const cs=requestAnimationFrame;let ls,ds="function"==typeof ResizeObserver;function hs(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}function us(e,t,n){let r=e.get(t);return r||(r=n(),e.set(t,r)),r}function ps(e){return""+e}const fs=new WeakMap,ms=new WeakMap,gs=Symbol("un-keyed"),bs="replaceChildren"in Element.prototype;function ws(e,t){const{targetNode:n}=t;let{targetParentNode:r}=t,i=!1;r?i=function(e,t){let n=e.firstChild,r=0;for(;n;){if(t[r]!==n)return!0;n=n.nextSibling,r++}return r!==t.length}(r,e):(i=!0,t.targetNode=void 0,t.targetParentNode=r=n.parentNode),i&&function(e,t){bs?e.replaceChildren(...t):(e.innerHTML="",e.append(...t))}(r,e)}function ys(e){const{template:t,elementsToBindings:n}=us(fs,e,(()=>function(e){let t="",n=!1,r=!1,i=-1;const s=new Map,o=[];for(let a=0,c=e.length;a":n=!1,r=!1;break;case"=":r=!0}const d=us(s,o[o.length-1],(()=>[]));let h,u,p;if(r){const t=/(\S+)="?([^"=]*)$/.exec(l);h=t[1],u=t[2],p=/^[^">]*/.exec(e[a+1])[0]}const f={attributeName:h,attributeValuePre:u,attributeValuePost:p,expressionIndex:a};d.push(f),n||r||(t+=" ")}const a=function(e){const t=document.createElement("template");return t.innerHTML=e,t}(t);return{template:a,elementsToBindings:s}}(e))),r=t.cloneNode(!0).content.firstElementChild,i=function(e,t){const n=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT);let i=e,s=-1;do{const e=t.get(++s);if(e)for(let t=0;tPromise.resolve().then(e);function _s(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r{if(n)return;const e=[...i];i.clear();try{for(const t of e)t()}finally{s=!1,i.size&&(s=!0,vs(o))}},a=new Proxy({},{get(e,n){if(t){let e=r.get(n);e||(e=new Set,r.set(n,e)),e.add(t)}return e[n]},set(e,t,n){e[t]=n;const a=r.get(t);if(a){for(const e of a)i.add(e);s||(s=!0,vs(o))}return!0}});return e.addEventListener("abort",(()=>{n=!0})),{state:a,createEffect:e=>{const n=()=>{const r=t;t=n;try{return e()}finally{t=r}};return n()}}}(i);Es(s,{skinToneEmoji:void 0,i18n:void 0,database:void 0,customEmoji:void 0,customCategorySorting:void 0,emojiVersion:void 0}),Es(s,t),Es(s,{initialLoad:!0,currentEmojis:[],currentEmojisWithCategories:[],rawSearchText:"",searchText:"",searchMode:!1,activeSearchItem:-1,message:void 0,skinTonePickerExpanded:!1,skinTonePickerExpandedAfterAnimation:!1,currentSkinTone:0,activeSkinTone:0,skinToneButtonText:void 0,pickerStyle:void 0,skinToneButtonLabel:"",skinTones:[],currentFavorites:[],defaultFavoriteEmojis:void 0,numColumns:8,isRtl:!1,scrollbarWidth:0,currentGroupIndex:0,groups:Zi,databaseLoaded:!1,activeSearchItemId:void 0}),o((()=>{s.currentGroup!==s.groups[s.currentGroupIndex]&&(s.currentGroup=s.groups[s.currentGroupIndex])}));const a=t=>{e.getElementById(t).focus()},c=t=>e.getElementById(`emo-${t.id}`),l=(e,t)=>{n.rootElement.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))},d=(e,t)=>e.id===t.id,h=(e,t)=>{const{category:n,emojis:r}=e,{category:i,emojis:s}=t;return n===i&&_s(r,s,d)},u=e=>{_s(s.currentEmojis,e,d)||(s.currentEmojis=e)},p=e=>{s.searchMode!==e&&(s.searchMode=e)},f=(e,t)=>t&&e.skins&&e.skins[t]||e.unicode,m={labelWithSkin:(e,t)=>{return(n=[e.name||f(e,t),e.annotation,...e.shortcodes||ks].filter(Boolean),as(n,(e=>e))).join(", ");var n},titleForEmoji:e=>e.annotation||(e.shortcodes||ks).join(", "),unicodeWithSkin:f},g={onClickSkinToneButton:function(e){s.skinTonePickerExpanded=!s.skinTonePickerExpanded,s.activeSkinTone=s.currentSkinTone,s.skinTonePickerExpanded&&(ss(e),cs((()=>a("skintone-list"))))},onEmojiClick:async function(e){const{target:t}=e;t.classList.contains("emoji")&&(ss(e),E(t.id.substring(4)))},onNavClick:function(e){const{target:t}=e,r=t.closest(".nav-button");if(!r)return;const i=parseInt(r.dataset.groupId,10);n.searchElement.value="",s.rawSearchText="",s.searchText="",s.activeSearchItem=-1,s.currentGroupIndex=s.groups.findIndex((e=>e.id===i))},onNavKeydown:function(e){const{target:t,key:n}=e,r=t=>{t&&(ss(e),t.focus())};switch(n){case"ArrowLeft":return r(t.previousElementSibling);case"ArrowRight":return r(t.nextElementSibling);case"Home":return r(t.parentElement.firstElementChild);case"End":return r(t.parentElement.lastElementChild)}},onSearchKeydown:function(e){if(!s.searchMode||!s.currentEmojis.length)return;const t=t=>{ss(e),s.activeSearchItem=os(t,s.activeSearchItem,s.currentEmojis)};switch(e.key){case"ArrowDown":return t(!1);case"ArrowUp":return t(!0);case"Enter":if(-1!==s.activeSearchItem)return ss(e),E(s.currentEmojis[s.activeSearchItem].id);s.activeSearchItem=0}},onSkinToneOptionsClick:function(e){const{target:{id:t}}=e,n=t&&t.match(/^skintone-(\d)/);n&&(ss(e),x(parseInt(n[1],10)))},onSkinToneOptionsFocusOut:async function(e){const{relatedTarget:t}=e;t&&"skintone-list"===t.id||(s.skinTonePickerExpanded=!1)},onSkinToneOptionsKeydown:function(e){if(!s.skinTonePickerExpanded)return;const t=async t=>{ss(e),s.activeSkinTone=t};switch(e.key){case"ArrowUp":return t(os(!0,s.activeSkinTone,s.skinTones));case"ArrowDown":return t(os(!1,s.activeSkinTone,s.skinTones));case"Home":return t(0);case"End":return t(s.skinTones.length-1);case"Enter":return ss(e),x(s.activeSkinTone);case"Escape":return ss(e),s.skinTonePickerExpanded=!1,a("skintone-button")}},onSkinToneOptionsKeyup:function(e){if(s.skinTonePickerExpanded)return" "===e.key?(ss(e),x(s.activeSkinTone)):void 0},onSearchInput:function(e){s.rawSearchText=e.target.value}},b={calculateEmojiGridStyle:function(e){!function(e,t,n){let r;ds?(r=new ResizeObserver((e=>n(e[0].contentRect.width))),r.observe(e)):cs((()=>n(e.getBoundingClientRect().width))),t.addEventListener("abort",(()=>{r&&r.disconnect()}))}(e,i,(t=>{{const r=getComputedStyle(n.rootElement),i=parseInt(r.getPropertyValue("--num-columns"),10),o="rtl"===r.getPropertyValue("direction"),a=e.parentElement.getBoundingClientRect().width-t;s.numColumns=i,s.scrollbarWidth=a,s.isRtl=o}}))}};let w=!0;function y(){s.database.customEmoji=s.customEmoji||ks}function v(e){return!e.unicode||!Gi(e)||is.get(e.unicode)}async function _(e){const t=s.emojiVersion||await rs();return e.filter((({version:e})=>!e||e<=t))}async function k(e){return function(e,t){const n=e=>{const n={};for(const r of e)"number"==typeof r.tone&&r.version<=t&&(n[r.tone]=r.unicode);return n};return e.map((({unicode:e,skins:t,shortcodes:r,url:i,name:s,category:o,annotation:a})=>({unicode:e,name:s,shortcodes:r,url:i,category:o,annotation:a,id:e||s,skins:t&&n(t)})))}(e,s.emojiVersion||await rs())}async function E(e){const t=await s.database.getEmojiByUnicodeOrName(e),n=[...s.currentEmojis,...s.currentFavorites].find((t=>t.id===e)),r=n.unicode&&f(n,s.currentSkinTone);await s.database.incrementFavoriteEmojiCount(e),l("emoji-click",{emoji:t,skinTone:s.currentSkinTone,...r&&{unicode:r},...n.name&&{name:n.name}})}function x(e){s.currentSkinTone=e,s.skinTonePickerExpanded=!1,a("skintone-button"),l("skin-tone-change",{skinTone:e}),s.database.setPreferredSkinTone(e)}return o((()=>{(function(e,t,n,r,i,s,o,a){const{labelWithSkin:c,titleForEmoji:l,unicodeWithSkin:d}=n,{html:h,map:u}=function(e){const t=us(ms,e,(()=>new Map));let n=gs;return{map:function(e,t,r){return e.map(((e,i)=>{const s=n;n=r(e);try{return t(e,i)}finally{n=s}}))},html:function(e,...r){const i=us(t,e,(()=>new Map));return us(i,n,(()=>ys(e)))(r)}}}(t);function p(e,n,r){return u(e,((e,i)=>h``),(e=>`${r}-${e.id}`))}const f=h`
${t.i18n.searchDescription}
${t.i18n.skinToneDescription}
${u(t.skinTones,((e,n)=>h`
${e}
`),(e=>e))}
${u(t.currentEmojisWithCategories,((e,n)=>h`
${p(e.emojis,t.searchMode,"emo")}
`),(e=>e.category))}
`;if(a){e.appendChild(f);const t=(t,n)=>{for(const r of e.querySelectorAll(`[${t}]`))n(r,r.getAttribute(t))};for(const e of["click","focusout","input","keydown","keyup"])t(`data-on-${e}`,((t,n)=>{t.addEventListener(e,r[n])}));t("data-ref",((e,t)=>{s[t]=e})),t("data-action",((e,t)=>{i[t](e)})),o.addEventListener("abort",(()=>{e.removeChild(f)}))}})(e,s,m,g,b,n,i,w),w=!1})),s.emojiVersion||rs().then((e=>{e||(s.message=s.i18n.emojiUnsupportedMessage)})),o((()=>{s.database&&async function(){let e=!1;const t=setTimeout((()=>{e=!0,s.message=s.i18n.loadingMessage}),1e3);try{await s.database.ready(),s.databaseLoaded=!0}catch(e){console.error(e),s.message=s.i18n.networkErrorMessage}finally{clearTimeout(t),e&&(e=!1,s.message="")}}()})),o((()=>{s.pickerStyle=`\n --num-groups: ${s.groups.length}; \n --indicator-opacity: ${s.searchMode?0:1}; \n --num-skintones: 6;`})),o((()=>{s.customEmoji&&s.database&&y()})),o((()=>{s.customEmoji&&s.customEmoji.length?s.groups!==Wi&&(s.groups=Wi):s.groups!==Zi&&(s.currentGroupIndex&&s.currentGroupIndex--,s.groups=Zi)})),o((()=>{!async function(){s.databaseLoaded&&(s.currentSkinTone=await s.database.getPreferredSkinTone())}()})),o((()=>{s.skinTones=Array(6).fill().map(((e,t)=>function(e,t){if(0===t)return e;const n=e.indexOf("‍");return-1!==n?e.substring(0,n)+String.fromCodePoint(127995+t-1)+e.substring(n):(e.endsWith("️")&&(e=e.substring(0,e.length-1)),e+"\ud83c"+String.fromCodePoint(57339+t-1))}(s.skinToneEmoji,t)))})),o((()=>{s.skinToneButtonText=s.skinTones[s.currentSkinTone]})),o((()=>{s.skinToneButtonLabel=s.i18n.skinToneLabel.replace("{skinTone}",s.i18n.skinTones[s.currentSkinTone])})),o((()=>{s.databaseLoaded&&async function(){const{database:e}=s,t=(await Promise.all(Ji.map((t=>e.getEmojiByUnicodeOrName(t))))).filter(Boolean);s.defaultFavoriteEmojis=t}()})),o((()=>{s.databaseLoaded&&s.defaultFavoriteEmojis&&async function(){y();const{database:e,defaultFavoriteEmojis:t,numColumns:n}=s,r=await e.getTopFavoriteEmoji(n),i=await k(as([...r,...t],(e=>e.unicode||e.name)).slice(0,n));s.currentFavorites=i}()})),o((()=>{!async function(){const{searchText:e,currentGroup:t,databaseLoaded:n,customEmoji:r}=s;if(n)if(e.length>=2){const t=await async function(e){return k(await _(await s.database.getEmojiBySearchQuery(e)))}(e);s.searchText===e&&(u(t),p(!0))}else{const{id:e}=t;if(-1!==e||r&&r.length){const t=await async function(e){const t=-1===e?s.customEmoji:await s.database.getEmojiByGroup(e);return k(await _(t))}(e);s.currentGroup.id===e&&(u(t),p(!1))}}else s.currentEmojis=[],s.searchMode=!1}()})),o((()=>{const{currentEmojis:e,emojiVersion:t}=s,r=e.filter((e=>e.unicode)).filter((e=>Gi(e)&&!is.has(e.unicode)));if(!t&&r.length)u(e),cs((()=>function(e){(function(e,t,n){for(const r of e){const e=hs(n(r));void 0===ls&&(ls=hs(t));const i=e/1.8{var e;(e=n.tabpanelElement)&&(e.scrollTop=0)}))}})),o((()=>{})),o((()=>{var e;e=function(){const{searchMode:e,currentEmojis:t}=s;if(e)return[{category:"",emojis:t}];const n=new Map;for(const e of t){const t=e.category||"";let r=n.get(t);r||(r=[],n.set(t,r)),r.push(e)}return[...n.entries()].map((([e,t])=>({category:e,emojis:t}))).sort(((e,t)=>s.customCategorySorting(e.category,t.category)))}(),_s(s.currentEmojisWithCategories,e,h)||(s.currentEmojisWithCategories=e)})),o((()=>{s.activeSearchItemId=-1!==s.activeSearchItem&&s.currentEmojis[s.activeSearchItem].id})),o((()=>{const{rawSearchText:e}=s;Ki((()=>{s.searchText=(e||"").trim(),s.activeSearchItem=-1}))})),o((()=>{s.skinTonePickerExpanded?n.skinToneDropdown.addEventListener("transitionend",(()=>{s.skinTonePickerExpandedAfterAnimation=!0}),{once:!0}):s.skinTonePickerExpandedAfterAnimation=!1})),{$set(e){Es(s,e)},$destroy(){r.abort()}}}var As={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}};const Cs=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji","emojiVersion"],Ts=`:host{--emoji-font-family:${Xi}}`;class Ss extends HTMLElement{constructor(e){super(),this.attachShadow({mode:"open"});const t=document.createElement("style");t.textContent=":host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){color-scheme:light;--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.custom-emoji,.emoji,button.emoji{height:var(--total-emoji-size);width:var(--total-emoji-size)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;line-height:1;overflow:hidden;font-family:var(--emoji-font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.custom-emoji{padding:var(--emoji-padding);object-fit:contain;pointer-events:none;background-repeat:no-repeat;background-position:center center;background-size:var(--emoji-size) var(--emoji-size)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}"+Ts,this.shadowRoot.appendChild(t),this._ctx={locale:"en",dataSource:"https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",skinToneEmoji:"🖐️",customCategorySorting:Qi,customEmoji:null,i18n:As,emojiVersion:null,...e};for(const e of Cs)"database"!==e&&Object.prototype.hasOwnProperty.call(this,e)&&(this._ctx[e]=this[e],delete this[e]);this._dbFlush()}connectedCallback(){this._cmp||(this._cmp=xs(this.shadowRoot,this._ctx))}disconnectedCallback(){vs((()=>{if(!this.isConnected&&this._cmp){this._cmp.$destroy(),this._cmp=void 0;const{database:e}=this._ctx;e.close().catch((e=>console.error(e)))}}))}static get observedAttributes(){return["locale","data-source","skin-tone-emoji","emoji-version"]}attributeChangedCallback(e,t,n){this._set(e.replace(/-([a-z])/g,((e,t)=>t.toUpperCase())),"emoji-version"===e?parseFloat(n):n)}_set(e,t){this._ctx[e]=t,this._cmp&&this._cmp.$set({[e]:t}),["locale","dataSource"].includes(e)&&this._dbFlush()}_dbCreate(){const{locale:e,dataSource:t,database:n}=this._ctx;n&&n.locale===e&&n.dataSource===t||this._set("database",new qi({locale:e,dataSource:t}))}_dbFlush(){vs((()=>this._dbCreate()))}}const Is={};for(const e of Cs)Is[e]={get(){return"database"===e&&this._dbCreate(),this._ctx[e]},set(t){if("database"===e)throw new Error("database is read-only");this._set(e,t)}};function js(e){let t=e.length;for(;--t>=0;)e[t]=0}Object.defineProperties(Ss.prototype,Is),customElements.get("emoji-picker")||customElements.define("emoji-picker",Ss);const Ls=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Os=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Ds=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Rs=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Bs=new Array(576);js(Bs);const zs=new Array(60);js(zs);const Ns=new Array(512);js(Ns);const Ps=new Array(256);js(Ps);const Us=new Array(29);js(Us);const Ms=new Array(30);function Fs(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}let $s,Hs,Vs;function qs(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}js(Ms);const Ws=e=>e<256?Ns[e]:Ns[256+(e>>>7)],Zs=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},Ks=(e,t,n)=>{e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<{Ks(e,n[2*t],n[2*t+1])},Ys=(e,t)=>{let n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1},Js=(e,t,n)=>{const r=new Array(16);let i,s,o=0;for(i=1;i<=15;i++)o=o+n[i-1]<<1,r[i]=o;for(s=0;s<=t;s++){let t=e[2*s+1];0!==t&&(e[2*s]=Ys(r[t]++,t))}},Xs=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Qs=e=>{e.bi_valid>8?Zs(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},eo=(e,t,n,r)=>{const i=2*t,s=2*n;return e[i]{const r=e.heap[n];let i=n<<1;for(;i<=e.heap_len&&(i{let r,i,s,o,a=0;if(0!==e.sym_next)do{r=255&e.pending_buf[e.sym_buf+a++],r+=(255&e.pending_buf[e.sym_buf+a++])<<8,i=e.pending_buf[e.sym_buf+a++],0===r?Gs(e,i,t):(s=Ps[i],Gs(e,s+256+1,t),o=Ls[s],0!==o&&(i-=Us[s],Ks(e,i,o)),r--,s=Ws(r),Gs(e,s,n),o=Os[s],0!==o&&(r-=Ms[s],Ks(e,r,o)))}while(a{const n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,s=t.stat_desc.elems;let o,a,c,l=-1;for(e.heap_len=0,e.heap_max=573,o=0;o>1;o>=1;o--)to(e,n,o);c=s;do{o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],to(e,n,1),a=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=a,n[2*c]=n[2*o]+n[2*a],e.depth[c]=(e.depth[o]>=e.depth[a]?e.depth[o]:e.depth[a])+1,n[2*o+1]=n[2*a+1]=c,e.heap[1]=c++,to(e,n,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,s=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,c=t.stat_desc.max_length;let l,d,h,u,p,f,m=0;for(u=0;u<=15;u++)e.bl_count[u]=0;for(n[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)d=e.heap[l],u=n[2*n[2*d+1]+1]+1,u>c&&(u=c,m++),n[2*d+1]=u,d>r||(e.bl_count[u]++,p=0,d>=a&&(p=o[d-a]),f=n[2*d],e.opt_len+=f*(u+p),s&&(e.static_len+=f*(i[2*d+1]+p)));if(0!==m){do{for(u=c-1;0===e.bl_count[u];)u--;e.bl_count[u]--,e.bl_count[u+1]+=2,e.bl_count[c]--,m-=2}while(m>0);for(u=c;0!==u;u--)for(d=e.bl_count[u];0!==d;)h=e.heap[--l],h>r||(n[2*h+1]!==u&&(e.opt_len+=(u-n[2*h+1])*n[2*h],n[2*h+1]=u),d--)}})(e,t),Js(n,l,e.bl_count)},io=(e,t,n)=>{let r,i,s=-1,o=t[1],a=0,c=7,l=4;for(0===o&&(c=138,l=3),t[2*(n+1)+1]=65535,r=0;r<=n;r++)i=o,o=t[2*(r+1)+1],++a{let r,i,s=-1,o=t[1],a=0,c=7,l=4;for(0===o&&(c=138,l=3),r=0;r<=n;r++)if(i=o,o=t[2*(r+1)+1],!(++a{Ks(e,0+(r?1:0),3),Qs(e),Zs(e,n),Zs(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n};var co={_tr_init:e=>{oo||((()=>{let e,t,n,r,i;const s=new Array(16);for(n=0,r=0;r<28;r++)for(Us[r]=n,e=0;e<1<>=7;r<30;r++)for(Ms[r]=i<<7,e=0;e<1<{let i,s,o=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),ro(e,e.l_desc),ro(e,e.d_desc),o=(e=>{let t;for(io(e,e.dyn_ltree,e.l_desc.max_code),io(e,e.dyn_dtree,e.d_desc.max_code),ro(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*Rs[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),i=e.opt_len+3+7>>>3,s=e.static_len+3+7>>>3,s<=i&&(i=s)):i=s=n+5,n+4<=i&&-1!==t?ao(e,t,n,r):4===e.strategy||s===i?(Ks(e,2+(r?1:0),3),no(e,Bs,zs)):(Ks(e,4+(r?1:0),3),((e,t,n,r)=>{let i;for(Ks(e,t-257,5),Ks(e,n-1,5),Ks(e,r-4,4),i=0;i(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(Ps[n]+256+1)]++,e.dyn_dtree[2*Ws(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{Ks(e,2,3),Gs(e,256,Bs),(e=>{16===e.bi_valid?(Zs(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}},lo=(e,t,n,r)=>{let i=65535&e,s=e>>>16&65535,o=0;for(;0!==n;){o=n>2e3?2e3:n,n-=o;do{i=i+t[r++]|0,s=s+i|0}while(--o);i%=65521,s%=65521}return i|s<<16};const ho=new Uint32Array((()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t})());var uo=(e,t,n,r)=>{const i=ho,s=r+n;e^=-1;for(let n=r;n>>8^i[255&(e^t[n])];return~e},po={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},fo={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:mo,_tr_stored_block:go,_tr_flush_block:bo,_tr_tally:wo,_tr_align:yo}=co,{Z_NO_FLUSH:vo,Z_PARTIAL_FLUSH:_o,Z_FULL_FLUSH:ko,Z_FINISH:Eo,Z_BLOCK:xo,Z_OK:Ao,Z_STREAM_END:Co,Z_STREAM_ERROR:To,Z_DATA_ERROR:So,Z_BUF_ERROR:Io,Z_DEFAULT_COMPRESSION:jo,Z_FILTERED:Lo,Z_HUFFMAN_ONLY:Oo,Z_RLE:Do,Z_FIXED:Ro,Z_DEFAULT_STRATEGY:Bo,Z_UNKNOWN:zo,Z_DEFLATED:No}=fo,Po=258,Uo=262,Mo=42,Fo=113,$o=666,Ho=(e,t)=>(e.msg=po[t],t),Vo=e=>2*e-(e>4?9:0),qo=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Wo=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do{n=e.head[--r],e.head[r]=n>=i?n-i:0}while(--t);t=i,r=t;do{n=e.prev[--r],e.prev[r]=n>=i?n-i:0}while(--t)};let Zo=(e,t,n)=>(t<{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))},Go=(e,t)=>{bo(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Ko(e.strm)},Yo=(e,t)=>{e.pending_buf[e.pending++]=t},Jo=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Xo=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),0===i?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),1===e.state.wrap?e.adler=lo(e.adler,t,i,n):2===e.state.wrap&&(e.adler=uo(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},Qo=(e,t)=>{let n,r,i=e.max_chain_length,s=e.strstart,o=e.prev_length,a=e.nice_match;const c=e.strstart>e.w_size-Uo?e.strstart-(e.w_size-Uo):0,l=e.window,d=e.w_mask,h=e.prev,u=e.strstart+Po;let p=l[s+o-1],f=l[s+o];e.prev_length>=e.good_match&&(i>>=2),a>e.lookahead&&(a=e.lookahead);do{if(n=t,l[n+o]===f&&l[n+o-1]===p&&l[n]===l[s]&&l[++n]===l[s+1]){s+=2,n++;do{}while(l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&so){if(e.match_start=t,o=r,r>=a)break;p=l[s+o-1],f=l[s+o]}}}while((t=h[t&d])>c&&0!=--i);return o<=e.lookahead?o:e.lookahead},ea=e=>{const t=e.w_size;let n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Uo)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Wo(e),r+=t),0===e.strm.avail_in)break;if(n=Xo(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=3)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=Zo(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=Zo(e,e.ins_h,e.window[i+3-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead{let n,r,i,s=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,o=0,a=e.strm.avail_in;do{if(n=65535,i=e.bi_valid+42>>3,e.strm.avail_outr+e.strm.avail_in&&(n=r+e.strm.avail_in),n>i&&(n=i),n>8,e.pending_buf[e.pending-2]=~n,e.pending_buf[e.pending-1]=~n>>8,Ko(e.strm),r&&(r>n&&(r=n),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,n-=r),n&&(Xo(e.strm,e.strm.output,e.strm.next_out,n),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n)}while(0===o);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_wateri&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,i+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),i>e.strm.avail_in&&(i=e.strm.avail_in),i&&(Xo(e.strm,e.window,e.strstart,i),e.strstart+=i,e.insert+=i>e.w_size-e.insert?e.w_size-e.insert:i),e.high_water>3,i=e.pending_buf_size-i>65535?65535:e.pending_buf_size-i,s=i>e.w_size?e.w_size:i,r=e.strstart-e.block_start,(r>=s||(r||t===Eo)&&t!==vo&&0===e.strm.avail_in&&r<=i)&&(n=r>i?i:r,o=t===Eo&&0===e.strm.avail_in&&n===r?1:0,go(e,e.block_start,n,o),e.block_start+=n,Ko(e.strm)),o?3:1)},na=(e,t)=>{let n,r;for(;;){if(e.lookahead=3&&(e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==n&&e.strstart-n<=e.w_size-Uo&&(e.match_length=Qo(e,n)),e.match_length>=3)if(r=wo(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+1]);else r=wo(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Go(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2},ra=(e,t)=>{let n,r,i;for(;;){if(e.lookahead=3&&(e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==n&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-3,r=wo(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,r&&(Go(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(r=wo(e,0,e.window[e.strstart-1]),r&&Go(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=wo(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2};function ia(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}const sa=[new ia(0,0,0,0,ta),new ia(4,4,8,4,na),new ia(4,5,16,8,na),new ia(4,6,32,32,na),new ia(4,4,16,16,ra),new ia(8,16,32,32,ra),new ia(8,16,128,128,ra),new ia(8,32,128,256,ra),new ia(32,128,258,1024,ra),new ia(32,258,258,4096,ra)];function oa(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=No,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),qo(this.dyn_ltree),qo(this.dyn_dtree),qo(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),qo(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),qo(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const aa=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==Mo&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==Fo&&t.status!==$o?1:0},ca=e=>{if(aa(e))return Ho(e,To);e.total_in=e.total_out=0,e.data_type=zo;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?Mo:Fo,e.adler=2===t.wrap?0:1,t.last_flush=-2,mo(t),Ao},la=e=>{const t=ca(e);var n;return t===Ao&&((n=e.state).window_size=2*n.w_size,qo(n.head),n.max_lazy_match=sa[n.level].max_lazy,n.good_match=sa[n.level].good_length,n.nice_match=sa[n.level].nice_length,n.max_chain_length=sa[n.level].max_chain,n.strstart=0,n.block_start=0,n.lookahead=0,n.insert=0,n.match_length=n.prev_length=2,n.match_available=0,n.ins_h=0),t},da=(e,t,n,r,i,s)=>{if(!e)return To;let o=1;if(t===jo&&(t=6),r<0?(o=0,r=-r):r>15&&(o=2,r-=16),i<1||i>9||n!==No||r<8||r>15||t<0||t>9||s<0||s>Ro||8===r&&1!==o)return Ho(e,To);8===r&&(r=9);const a=new oa;return e.state=a,a.strm=e,a.status=Mo,a.wrap=o,a.gzhead=null,a.w_bits=r,a.w_size=1<da(e,t,No,15,8,Bo),deflateInit2:da,deflateReset:la,deflateResetKeep:ca,deflateSetHeader:(e,t)=>aa(e)||2!==e.state.wrap?To:(e.state.gzhead=t,Ao),deflate:(e,t)=>{if(aa(e)||t>xo||t<0)return e?Ho(e,To):To;const n=e.state;if(!e.output||0!==e.avail_in&&!e.input||n.status===$o&&t!==Eo)return Ho(e,0===e.avail_out?Io:To);const r=n.last_flush;if(n.last_flush=t,0!==n.pending){if(Ko(e),0===e.avail_out)return n.last_flush=-1,Ao}else if(0===e.avail_in&&Vo(t)<=Vo(r)&&t!==Eo)return Ho(e,Io);if(n.status===$o&&0!==e.avail_in)return Ho(e,Io);if(n.status===Mo&&0===n.wrap&&(n.status=Fo),n.status===Mo){let t=No+(n.w_bits-8<<4)<<8,r=-1;if(r=n.strategy>=Oo||n.level<2?0:n.level<6?1:6===n.level?2:3,t|=r<<6,0!==n.strstart&&(t|=32),t+=31-t%31,Jo(n,t),0!==n.strstart&&(Jo(n,e.adler>>>16),Jo(n,65535&e.adler)),e.adler=1,n.status=Fo,Ko(e),0!==n.pending)return n.last_flush=-1,Ao}if(57===n.status)if(e.adler=0,Yo(n,31),Yo(n,139),Yo(n,8),n.gzhead)Yo(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Yo(n,255&n.gzhead.time),Yo(n,n.gzhead.time>>8&255),Yo(n,n.gzhead.time>>16&255),Yo(n,n.gzhead.time>>24&255),Yo(n,9===n.level?2:n.strategy>=Oo||n.level<2?4:0),Yo(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(Yo(n,255&n.gzhead.extra.length),Yo(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=uo(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69;else if(Yo(n,0),Yo(n,0),Yo(n,0),Yo(n,0),Yo(n,0),Yo(n,9===n.level?2:n.strategy>=Oo||n.level<2?4:0),Yo(n,3),n.status=Fo,Ko(e),0!==n.pending)return n.last_flush=-1,Ao;if(69===n.status){if(n.gzhead.extra){let t=n.pending,r=(65535&n.gzhead.extra.length)-n.gzindex;for(;n.pending+r>n.pending_buf_size;){let i=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+i),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>t&&(e.adler=uo(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex+=i,Ko(e),0!==n.pending)return n.last_flush=-1,Ao;t=0,r-=i}let i=new Uint8Array(n.gzhead.extra);n.pending_buf.set(i.subarray(n.gzindex,n.gzindex+r),n.pending),n.pending+=r,n.gzhead.hcrc&&n.pending>t&&(e.adler=uo(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex=0}n.status=73}if(73===n.status){if(n.gzhead.name){let t,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r)),Ko(e),0!==n.pending)return n.last_flush=-1,Ao;r=0}t=n.gzindexr&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=91}if(91===n.status){if(n.gzhead.comment){let t,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r)),Ko(e),0!==n.pending)return n.last_flush=-1,Ao;r=0}t=n.gzindexr&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r))}n.status=103}if(103===n.status){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Ko(e),0!==n.pending))return n.last_flush=-1,Ao;Yo(n,255&e.adler),Yo(n,e.adler>>8&255),e.adler=0}if(n.status=Fo,Ko(e),0!==n.pending)return n.last_flush=-1,Ao}if(0!==e.avail_in||0!==n.lookahead||t!==vo&&n.status!==$o){let r=0===n.level?ta(n,t):n.strategy===Oo?((e,t)=>{let n;for(;;){if(0===e.lookahead&&(ea(e),0===e.lookahead)){if(t===vo)return 1;break}if(e.match_length=0,n=wo(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Go(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2})(n,t):n.strategy===Do?((e,t)=>{let n,r,i,s;const o=e.window;for(;;){if(e.lookahead<=Po){if(ea(e),e.lookahead<=Po&&t===vo)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=e.strstart-1,r=o[i],r===o[++i]&&r===o[++i]&&r===o[++i])){s=e.strstart+Po;do{}while(r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=wo(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=wo(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Go(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2})(n,t):sa[n.level].func(n,t);if(3!==r&&4!==r||(n.status=$o),1===r||3===r)return 0===e.avail_out&&(n.last_flush=-1),Ao;if(2===r&&(t===_o?yo(n):t!==xo&&(go(n,0,0,!1),t===ko&&(qo(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),Ko(e),0===e.avail_out))return n.last_flush=-1,Ao}return t!==Eo?Ao:n.wrap<=0?Co:(2===n.wrap?(Yo(n,255&e.adler),Yo(n,e.adler>>8&255),Yo(n,e.adler>>16&255),Yo(n,e.adler>>24&255),Yo(n,255&e.total_in),Yo(n,e.total_in>>8&255),Yo(n,e.total_in>>16&255),Yo(n,e.total_in>>24&255)):(Jo(n,e.adler>>>16),Jo(n,65535&e.adler)),Ko(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?Ao:Co)},deflateEnd:e=>{if(aa(e))return To;const t=e.state.status;return e.state=null,t===Fo?Ho(e,So):Ao},deflateSetDictionary:(e,t)=>{let n=t.length;if(aa(e))return To;const r=e.state,i=r.wrap;if(2===i||1===i&&r.status!==Mo||r.lookahead)return To;if(1===i&&(e.adler=lo(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){0===i&&(qo(r.head),r.strstart=0,r.block_start=0,r.insert=0);let e=new Uint8Array(r.w_size);e.set(t.subarray(n-r.w_size,n),0),t=e,n=r.w_size}const s=e.avail_in,o=e.next_in,a=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,ea(r);r.lookahead>=3;){let e=r.strstart,t=r.lookahead-2;do{r.ins_h=Zo(r,r.ins_h,r.window[e+3-1]),r.prev[e&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=e,e++}while(--t);r.strstart=e,r.lookahead=2,ea(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=o,e.input=a,e.avail_in=s,r.wrap=i,Ao},deflateInfo:"pako deflate (from Nodeca project)"};const ua=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var pa={assign:function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const n=t.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const t in n)ua(n,t)&&(e[t]=n[t])}}return e},flattenChunks:e=>{let t=0;for(let n=0,r=e.length;n=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;ma[254]=ma[254]=1;var ga={string2buf:e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,n,r,i,s,o=e.length,a=0;for(i=0;i>>6,t[s++]=128|63&n):n<65536?(t[s++]=224|n>>>12,t[s++]=128|n>>>6&63,t[s++]=128|63&n):(t[s++]=240|n>>>18,t[s++]=128|n>>>12&63,t[s++]=128|n>>>6&63,t[s++]=128|63&n);return t},buf2string:(e,t)=>{const n=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let r,i;const s=new Array(2*n);for(i=0,r=0;r4)s[i++]=65533,r+=o-1;else{for(t&=2===o?31:3===o?15:7;o>1&&r1?s[i++]=65533:t<65536?s[i++]=t:(t-=65536,s[i++]=55296|t>>10&1023,s[i++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&fa)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+ma[e[n]]>t?n:t}},ba=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const wa=Object.prototype.toString,{Z_NO_FLUSH:ya,Z_SYNC_FLUSH:va,Z_FULL_FLUSH:_a,Z_FINISH:ka,Z_OK:Ea,Z_STREAM_END:xa,Z_DEFAULT_COMPRESSION:Aa,Z_DEFAULT_STRATEGY:Ca,Z_DEFLATED:Ta}=fo;function Sa(e){this.options=pa.assign({level:Aa,method:Ta,chunkSize:16384,windowBits:15,memLevel:8,strategy:Ca},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ba,this.strm.avail_out=0;let n=ha.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Ea)throw new Error(po[n]);if(t.header&&ha.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?ga.string2buf(t.dictionary):"[object ArrayBuffer]"===wa.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,n=ha.deflateSetDictionary(this.strm,e),n!==Ea)throw new Error(po[n]);this._dict_set=!0}}function Ia(e,t){const n=new Sa(t);if(n.push(e,!0),n.err)throw n.msg||po[n.err];return n.result}Sa.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize;let i,s;if(this.ended)return!1;for(s=t===~~t?t:!0===t?ka:ya,"string"==typeof e?n.input=ga.string2buf(e):"[object ArrayBuffer]"===wa.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;)if(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(s===va||s===_a)&&n.avail_out<=6)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else{if(i=ha.deflate(n,s),i===xa)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=ha.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Ea;if(0!==n.avail_out){if(s>0&&n.next_out>0)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else if(0===n.avail_in)break}else this.onData(n.output)}return!0},Sa.prototype.onData=function(e){this.chunks.push(e)},Sa.prototype.onEnd=function(e){e===Ea&&(this.result=pa.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ja={Deflate:Sa,deflate:Ia,deflateRaw:function(e,t){return(t=t||{}).raw=!0,Ia(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,Ia(e,t)},constants:fo};const La=16209;var Oa=function(e,t){let n,r,i,s,o,a,c,l,d,h,u,p,f,m,g,b,w,y,v,_,k,E,x,A;const C=e.state;n=e.next_in,x=e.input,r=n+(e.avail_in-5),i=e.next_out,A=e.output,s=i-(t-e.avail_out),o=i+(e.avail_out-257),a=C.dmax,c=C.wsize,l=C.whave,d=C.wnext,h=C.window,u=C.hold,p=C.bits,f=C.lencode,m=C.distcode,g=(1<>>24,u>>>=y,p-=y,y=w>>>16&255,0===y)A[i++]=65535&w;else{if(!(16&y)){if(64&y){if(32&y){C.mode=16191;break e}e.msg="invalid literal/length code",C.mode=La;break e}w=f[(65535&w)+(u&(1<>>=y,p-=y),p<15&&(u+=x[n++]<>>24,u>>>=y,p-=y,y=w>>>16&255,16&y){if(_=65535&w,y&=15,pa){e.msg="invalid distance too far back",C.mode=La;break e}if(u>>>=y,p-=y,y=i-s,_>y){if(y=_-y,y>l&&C.sane){e.msg="invalid distance too far back",C.mode=La;break e}if(k=0,E=h,0===d){if(k+=c-y,y2;)A[i++]=E[k++],A[i++]=E[k++],A[i++]=E[k++],v-=3;v&&(A[i++]=E[k++],v>1&&(A[i++]=E[k++]))}else{k=i-_;do{A[i++]=A[k++],A[i++]=A[k++],A[i++]=A[k++],v-=3}while(v>2);v&&(A[i++]=A[k++],v>1&&(A[i++]=A[k++]))}break}if(64&y){e.msg="invalid distance code",C.mode=La;break e}w=m[(65535&w)+(u&(1<>3,n-=v,p-=v<<3,u&=(1<{const c=a.bits;let l,d,h,u,p,f,m=0,g=0,b=0,w=0,y=0,v=0,_=0,k=0,E=0,x=0,A=null;const C=new Uint16Array(16),T=new Uint16Array(16);let S,I,j,L=null;for(m=0;m<=15;m++)C[m]=0;for(g=0;g=1&&0===C[w];w--);if(y>w&&(y=w),0===w)return i[s++]=20971520,i[s++]=20971520,a.bits=1,0;for(b=1;b0&&(0===e||1!==w))return-1;for(T[1]=0,m=1;m<15;m++)T[m+1]=T[m]+C[m];for(g=0;g852||2===e&&E>592)return 1;for(;;){S=m-_,o[g]+1=f?(I=L[o[g]-f],j=A[o[g]-f]):(I=96,j=0),l=1<>_)+d]=S<<24|I<<16|j}while(0!==d);for(l=1<>=1;if(0!==l?(x&=l-1,x+=l):x=0,g++,0==--C[m]){if(m===w)break;m=t[n+o[g]]}if(m>y&&(x&u)!==h){for(0===_&&(_=y),p+=b,v=m-_,k=1<852||2===e&&E>592)return 1;h=x&u,i[h]=y<<24|v<<16|p-s}}return 0!==x&&(i[p+x]=m-_<<24|64<<16),a.bits=y,0};const{Z_FINISH:Pa,Z_BLOCK:Ua,Z_TREES:Ma,Z_OK:Fa,Z_STREAM_END:$a,Z_NEED_DICT:Ha,Z_STREAM_ERROR:Va,Z_DATA_ERROR:qa,Z_MEM_ERROR:Wa,Z_BUF_ERROR:Za,Z_DEFLATED:Ka}=fo,Ga=16180,Ya=16190,Ja=16191,Xa=16192,Qa=16194,ec=16199,tc=16200,nc=16206,rc=16209,ic=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function sc(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const oc=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode16211?1:0},ac=e=>{if(oc(e))return Va;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Ga,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,Fa},cc=e=>{if(oc(e))return Va;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,ac(e)},lc=(e,t)=>{let n;if(oc(e))return Va;const r=e.state;return t<0?(n=0,t=-t):(n=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?Va:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,cc(e))},dc=(e,t)=>{if(!e)return Va;const n=new sc;e.state=n,n.strm=e,n.window=null,n.mode=Ga;const r=lc(e,t);return r!==Fa&&(e.state=null),r};let hc,uc,pc=!0;const fc=e=>{if(pc){hc=new Int32Array(512),uc=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Na(1,e.lens,0,288,hc,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Na(2,e.lens,0,32,uc,0,e.work,{bits:5}),pc=!1}e.lencode=hc,e.lenbits=9,e.distcode=uc,e.distbits=5},mc=(e,t,n,r)=>{let i;const s=e.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(t.subarray(n-s.wsize,n),0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),s.window.set(t.subarray(n-r,n-r+i),s.wnext),(r-=i)?(s.window.set(t.subarray(n-r,n),0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whavedc(e,15),inflateInit2:dc,inflate:(e,t)=>{let n,r,i,s,o,a,c,l,d,h,u,p,f,m,g,b,w,y,v,_,k,E,x=0;const A=new Uint8Array(4);let C,T;const S=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(oc(e)||!e.output||!e.input&&0!==e.avail_in)return Va;n=e.state,n.mode===Ja&&(n.mode=Xa),o=e.next_out,i=e.output,c=e.avail_out,s=e.next_in,r=e.input,a=e.avail_in,l=n.hold,d=n.bits,h=a,u=c,E=Fa;e:for(;;)switch(n.mode){case Ga:if(0===n.wrap){n.mode=Xa;break}for(;d<16;){if(0===a)break e;a--,l+=r[s++]<>>8&255,n.check=uo(n.check,A,2,0),l=0,d=0,n.mode=16181;break}if(n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&l)<<8)+(l>>8))%31){e.msg="incorrect header check",n.mode=rc;break}if((15&l)!==Ka){e.msg="unknown compression method",n.mode=rc;break}if(l>>>=4,d-=4,k=8+(15&l),0===n.wbits&&(n.wbits=k),k>15||k>n.wbits){e.msg="invalid window size",n.mode=rc;break}n.dmax=1<>8&1),512&n.flags&&4&n.wrap&&(A[0]=255&l,A[1]=l>>>8&255,n.check=uo(n.check,A,2,0)),l=0,d=0,n.mode=16182;case 16182:for(;d<32;){if(0===a)break e;a--,l+=r[s++]<>>8&255,A[2]=l>>>16&255,A[3]=l>>>24&255,n.check=uo(n.check,A,4,0)),l=0,d=0,n.mode=16183;case 16183:for(;d<16;){if(0===a)break e;a--,l+=r[s++]<>8),512&n.flags&&4&n.wrap&&(A[0]=255&l,A[1]=l>>>8&255,n.check=uo(n.check,A,2,0)),l=0,d=0,n.mode=16184;case 16184:if(1024&n.flags){for(;d<16;){if(0===a)break e;a--,l+=r[s++]<>>8&255,n.check=uo(n.check,A,2,0)),l=0,d=0}else n.head&&(n.head.extra=null);n.mode=16185;case 16185:if(1024&n.flags&&(p=n.length,p>a&&(p=a),p&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(s,s+p),k)),512&n.flags&&4&n.wrap&&(n.check=uo(n.check,r,p,s)),a-=p,s+=p,n.length-=p),n.length))break e;n.length=0,n.mode=16186;case 16186:if(2048&n.flags){if(0===a)break e;p=0;do{k=r[s+p++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k))}while(k&&p>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=Ja;break;case 16189:for(;d<32;){if(0===a)break e;a--,l+=r[s++]<>>=7&d,d-=7&d,n.mode=nc;break}for(;d<3;){if(0===a)break e;a--,l+=r[s++]<>>=1,d-=1,3&l){case 0:n.mode=16193;break;case 1:if(fc(n),n.mode=ec,t===Ma){l>>>=2,d-=2;break e}break;case 2:n.mode=16196;break;case 3:e.msg="invalid block type",n.mode=rc}l>>>=2,d-=2;break;case 16193:for(l>>>=7&d,d-=7&d;d<32;){if(0===a)break e;a--,l+=r[s++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=rc;break}if(n.length=65535&l,l=0,d=0,n.mode=Qa,t===Ma)break e;case Qa:n.mode=16195;case 16195:if(p=n.length,p){if(p>a&&(p=a),p>c&&(p=c),0===p)break e;i.set(r.subarray(s,s+p),o),a-=p,s+=p,c-=p,o+=p,n.length-=p;break}n.mode=Ja;break;case 16196:for(;d<14;){if(0===a)break e;a--,l+=r[s++]<>>=5,d-=5,n.ndist=1+(31&l),l>>>=5,d-=5,n.ncode=4+(15&l),l>>>=4,d-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=rc;break}n.have=0,n.mode=16197;case 16197:for(;n.have>>=3,d-=3}for(;n.have<19;)n.lens[S[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,C={bits:n.lenbits},E=Na(0,n.lens,0,19,n.lencode,0,n.work,C),n.lenbits=C.bits,E){e.msg="invalid code lengths set",n.mode=rc;break}n.have=0,n.mode=16198;case 16198:for(;n.have>>24,b=x>>>16&255,w=65535&x,!(g<=d);){if(0===a)break e;a--,l+=r[s++]<>>=g,d-=g,n.lens[n.have++]=w;else{if(16===w){for(T=g+2;d>>=g,d-=g,0===n.have){e.msg="invalid bit length repeat",n.mode=rc;break}k=n.lens[n.have-1],p=3+(3&l),l>>>=2,d-=2}else if(17===w){for(T=g+3;d>>=g,d-=g,k=0,p=3+(7&l),l>>>=3,d-=3}else{for(T=g+7;d>>=g,d-=g,k=0,p=11+(127&l),l>>>=7,d-=7}if(n.have+p>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=rc;break}for(;p--;)n.lens[n.have++]=k}}if(n.mode===rc)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=rc;break}if(n.lenbits=9,C={bits:n.lenbits},E=Na(1,n.lens,0,n.nlen,n.lencode,0,n.work,C),n.lenbits=C.bits,E){e.msg="invalid literal/lengths set",n.mode=rc;break}if(n.distbits=6,n.distcode=n.distdyn,C={bits:n.distbits},E=Na(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,C),n.distbits=C.bits,E){e.msg="invalid distances set",n.mode=rc;break}if(n.mode=ec,t===Ma)break e;case ec:n.mode=tc;case tc:if(a>=6&&c>=258){e.next_out=o,e.avail_out=c,e.next_in=s,e.avail_in=a,n.hold=l,n.bits=d,Oa(e,u),o=e.next_out,i=e.output,c=e.avail_out,s=e.next_in,r=e.input,a=e.avail_in,l=n.hold,d=n.bits,n.mode===Ja&&(n.back=-1);break}for(n.back=0;x=n.lencode[l&(1<>>24,b=x>>>16&255,w=65535&x,!(g<=d);){if(0===a)break e;a--,l+=r[s++]<>y)],g=x>>>24,b=x>>>16&255,w=65535&x,!(y+g<=d);){if(0===a)break e;a--,l+=r[s++]<>>=y,d-=y,n.back+=y}if(l>>>=g,d-=g,n.back+=g,n.length=w,0===b){n.mode=16205;break}if(32&b){n.back=-1,n.mode=Ja;break}if(64&b){e.msg="invalid literal/length code",n.mode=rc;break}n.extra=15&b,n.mode=16201;case 16201:if(n.extra){for(T=n.extra;d>>=n.extra,d-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=16202;case 16202:for(;x=n.distcode[l&(1<>>24,b=x>>>16&255,w=65535&x,!(g<=d);){if(0===a)break e;a--,l+=r[s++]<>y)],g=x>>>24,b=x>>>16&255,w=65535&x,!(y+g<=d);){if(0===a)break e;a--,l+=r[s++]<>>=y,d-=y,n.back+=y}if(l>>>=g,d-=g,n.back+=g,64&b){e.msg="invalid distance code",n.mode=rc;break}n.offset=w,n.extra=15&b,n.mode=16203;case 16203:if(n.extra){for(T=n.extra;d>>=n.extra,d-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=rc;break}n.mode=16204;case 16204:if(0===c)break e;if(p=u-c,n.offset>p){if(p=n.offset-p,p>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=rc;break}p>n.wnext?(p-=n.wnext,f=n.wsize-p):f=n.wnext-p,p>n.length&&(p=n.length),m=n.window}else m=i,f=o-n.offset,p=n.length;p>c&&(p=c),c-=p,n.length-=p;do{i[o++]=m[f++]}while(--p);0===n.length&&(n.mode=tc);break;case 16205:if(0===c)break e;i[o++]=n.length,c--,n.mode=tc;break;case nc:if(n.wrap){for(;d<32;){if(0===a)break e;a--,l|=r[s++]<{if(oc(e))return Va;let t=e.state;return t.window&&(t.window=null),e.state=null,Fa},inflateGetHeader:(e,t)=>{if(oc(e))return Va;const n=e.state;return 2&n.wrap?(n.head=t,t.done=!1,Fa):Va},inflateSetDictionary:(e,t)=>{const n=t.length;let r,i,s;return oc(e)?Va:(r=e.state,0!==r.wrap&&r.mode!==Ya?Va:r.mode===Ya&&(i=1,i=lo(i,t,n,0),i!==r.check)?qa:(s=mc(e,t,n,n),s?(r.mode=16210,Wa):(r.havedict=1,Fa)))},inflateInfo:"pako inflate (from Nodeca project)"},bc=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const wc=Object.prototype.toString,{Z_NO_FLUSH:yc,Z_FINISH:vc,Z_OK:_c,Z_STREAM_END:kc,Z_NEED_DICT:Ec,Z_STREAM_ERROR:xc,Z_DATA_ERROR:Ac,Z_MEM_ERROR:Cc}=fo;function Tc(e){this.options=pa.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ba,this.strm.avail_out=0;let n=gc.inflateInit2(this.strm,t.windowBits);if(n!==_c)throw new Error(po[n]);if(this.header=new bc,gc.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=ga.string2buf(t.dictionary):"[object ArrayBuffer]"===wc.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=gc.inflateSetDictionary(this.strm,t.dictionary),n!==_c)))throw new Error(po[n])}function Sc(e,t){const n=new Tc(t);if(n.push(e),n.err)throw n.msg||po[n.err];return n.result}Tc.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let s,o,a;if(this.ended)return!1;for(o=t===~~t?t:!0===t?vc:yc,"[object ArrayBuffer]"===wc.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),s=gc.inflate(n,o),s===Ec&&i&&(s=gc.inflateSetDictionary(n,i),s===_c?s=gc.inflate(n,o):s===Ac&&(s=Ec));n.avail_in>0&&s===kc&&n.state.wrap>0&&0!==e[n.next_in];)gc.inflateReset(n),s=gc.inflate(n,o);switch(s){case xc:case Ac:case Ec:case Cc:return this.onEnd(s),this.ended=!0,!1}if(a=n.avail_out,n.next_out&&(0===n.avail_out||s===kc))if("string"===this.options.to){let e=ga.utf8border(n.output,n.next_out),t=n.next_out-e,i=ga.buf2string(n.output,e);n.next_out=t,n.avail_out=r-t,t&&n.output.set(n.output.subarray(e,e+t),0),this.onData(i)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(s!==_c||0!==a){if(s===kc)return s=gc.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===n.avail_in)break}}return!0},Tc.prototype.onData=function(e){this.chunks.push(e)},Tc.prototype.onEnd=function(e){e===_c&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=pa.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var Ic={Inflate:Tc,inflate:Sc,inflateRaw:function(e,t){return(t=t||{}).raw=!0,Sc(e,t)},ungzip:Sc,constants:fo};const{Deflate:jc,deflate:Lc,deflateRaw:Oc,gzip:Dc}=ja,{Inflate:Rc,inflate:Bc,inflateRaw:zc,ungzip:Nc}=Ic;var Pc=Lc,Uc=Bc;const Mc={encode:e=>{const t=Array.from(e).map((e=>e.codePointAt(0)||0)),n=[];for(const e of t)e<=127?n.push(e):e<=2047?(n.push(e>>6|192),n.push(63&e|128)):e<=65535?(n.push(e>>12|224),n.push(e>>6&63|128),n.push(63&e|128)):e<=1114111&&(n.push(e>>18|240),n.push(e>>12&63|128),n.push(e>>6&63|128),n.push(63&e|128));return Uint8Array.from(n).buffer},decode:e=>{const t=new Uint8Array(e);let n="",r=0;for(;r=n)return new ArrayBuffer(0);const i=Vc(this,Hc,qc(this,Hc,"f")+e,"f");return i>n?t.slice(r,n):t.slice(r,i)}};var Zc,Kc=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Zc=new WeakMap;const Gc=class{constructor(){Zc.set(this,[])}write(e){const t=Kc(this,Zc,"f");switch(typeof e){case"number":t.push(e);break;case"object":Array.isArray(e)?t.push(Uint8Array.from(e).buffer):ArrayBuffer.isView(e)?t.push(e.buffer):t.push(new DataView(e,0,0).buffer);break;default:throw new Error("Invalid value: "+e)}}toArrayBuffer(e){const t=Kc(this,Zc,"f");if((e||(e=0))<=0)for(const n of t)e+="number"==typeof n?1:n.byteLength;const n=new Uint8Array(new ArrayBuffer(e),0,e);e=0;for(const r of t){if("number"==typeof r){n[e++]=r;continue}const t=r.byteLength;n.set(new Uint8Array(r,0,t),e),e+=t}return n.buffer}};function Yc(e){try{return new DataView(e,0,0),!0}catch(e){return!1}}function Jc(e){const t=e.buffer,n=e.byteOffset,r=e.byteLength;return 0===n&&r===t.byteLength?t:t.slice(n,n+r)}function Xc(e,t){const n=Fc.encode(t),r=new DataView(new ArrayBuffer(4),0,4);r.setUint32(0,n.byteLength,!0),e.write(r),e.write(n)}function Qc(e,t){const n=new DataView(new ArrayBuffer(5),0,5);n.setUint8(0,102),n.setUint32(1,t.byteLength,!0),e.write(n),e.write(t)}function el(e,t){switch(typeof t){case"string":e.write(101),Xc(e,t);break;case"boolean":e.write([10,t?1:0]);break;case"undefined":e.write(0);break;case"number":{if(Number.isSafeInteger(t))if(t>=0){if(t<=255){const n=new DataView(new ArrayBuffer(2),0,2);return n.setUint8(0,10),n.setUint8(1,t),void e.write(n)}if(t<=65535){const n=new DataView(new ArrayBuffer(3),0,3);return n.setUint8(0,11),n.setUint16(1,t,!0),void e.write(n)}if(t<=4294967295){const n=new DataView(new ArrayBuffer(5),0,5);return n.setUint8(0,12),n.setUint32(1,t,!0),void e.write(n)}}else{if(t>=-128&&t<128){const n=new DataView(new ArrayBuffer(2),0,2);return n.setUint8(0,20),n.setInt8(1,t),void e.write(n)}if(t>=-32768&&t<32768){const n=new DataView(new ArrayBuffer(3),0,3);return n.setUint8(0,21),n.setInt16(1,t,!0),void e.write(n)}if(t>=-2147483648&&t<2147483648){const n=new DataView(new ArrayBuffer(5),0,5);return n.setUint8(0,22),n.setInt32(1,t,!0),void e.write(n)}}const n=new DataView(new ArrayBuffer(9),0,9);n.setUint8(0,33),n.setFloat64(1,t,!0),e.write(n)}break;case"bigint":{const n=new DataView(new ArrayBuffer(9),0,9);t>=0n?(n.setUint8(0,13),n.setBigUint64(1,t,!0)):(n.setUint8(0,23),n.setBigUint64(1,t,!0)),e.write(n)}break;case"object":null===t?e.write(255):Array.isArray(t)?function(e,t){const n=new DataView(new ArrayBuffer(5),0,5);n.setUint8(0,99),n.setUint32(1,t.length,!0),e.write(n);for(const n of t)el(e,n)}(e,t):Yc(t)?Qc(e,t):ArrayBuffer.isView(t)?Qc(e,Jc(t)):function(e,t){if("function"==typeof t.toJSON)return void el(e,t.toJSON());const n=Object.keys(t);{const t=new DataView(new ArrayBuffer(5),0,5);t.setUint8(0,100),t.setUint32(1,n.length,!0),e.write(t)}for(const r of n){const n=t[r];switch(typeof n){case"boolean":case"bigint":case"number":case"object":case"string":case"undefined":Xc(e,r),el(e,n)}}}(e,t)}}function tl(e,t){if("object"!=typeof e||null==e)throw new Error("Data must be a non-null object or array.");if("object"!=typeof(t||(t={})))throw new Error("The options parameter must be an object.");{const t=new Gc;el(t,e),e=t.toArrayBuffer()}const n=t.compressMethod||0,r=t.compressLevel||5;switch(n){case 0:break;case 1:e=Pc(e,{raw:!0,level:r,memLevel:9,chunkSize:8192,windowBits:15});break;case 3:e=Pc(e,{gzip:!0,level:r,memLevel:9,chunkSize:8192,windowBits:15});break;case 2:case 4:case 5:case 6:throw new Error("Not implemented");default:throw new Error("Unknown compress method: "+n)}const i=new Uint8Array(new ArrayBuffer(e.byteLength+7));return i[0]=128,i[1]=99,i[2]=98,i[3]=106,i[4]=102,i[5]=1,i[6]=n,i.set(new Uint8Array(e),7),i.buffer}function nl(e){const t=e.read();switch(t){case 0:return;case 255:return null;case 10:return e.read();case 11:return new DataView(e.readNBytes(2),0,2).getUint16(0,!0);case 12:return new DataView(e.readNBytes(4),0,4).getUint32(0,!0);case 13:return new DataView(e.readNBytes(8),0,8).getBigUint64(0,!0);case 20:return e.read()<<8>>8;case 21:return new DataView(e.readNBytes(2),0,2).getInt16(0,!0);case 22:return new DataView(e.readNBytes(4),0,4).getInt32(0,!0);case 23:return new DataView(e.readNBytes(8),0,8).getBigInt64(0,!0);case 32:return new DataView(e.readNBytes(4),0,4).getFloat32(0,!0);case 33:return new DataView(e.readNBytes(8),0,8).getFloat64(0,!0);case 99:return function(e){const t=new DataView(e.readNBytes(4),0,4).getUint32(0,!0),n=new Array(t);for(let r=0;r{function n(e){const n=t.getElementById(e);if(null==n)throw new Error("Element does not exist: "+e);return n}function r(e){const n=t.querySelector(e);if(n instanceof HTMLElement)return n;throw new Error("Failed to query selector: "+e)}function i(e){null!=e?(p.textContent=e,p.style.display="block"):p.style.display="none"}function s(e){f.appendChild(o(e)),m.style.display="block"}function o(n){if(e.crossOriginIsolated){const r=t.createElement("iframe");return r.setAttribute("width","1024"),r.setAttribute("height","768"),r.setAttribute("allowfullscreen","true"),r.setAttribute("allowpaymentrequest","true"),r.setAttribute("name","Frame"),r.setAttribute("allow","fullscreen payment"),r.setAttribute("loading","lazy"),r.setAttribute("frameborder","0"),r.setAttribute("credentialless","true"),r.setAttribute("referrerpolicy","no-referrer"),r.onload=()=>{r.onload=null,r.setAttribute("src","data:application/xhtml+xml;base64,"+ei.encode(ni.encode(`\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tGoogle\n\t\t\n\t\n\t\n\t\t\n\t\n`)))},r}const r=t.createElement("embed");return r.setAttribute("type","text/plain"),r.setAttribute("width","1024"),r.setAttribute("height","768"),r.setAttribute("src",n),r}function a(e){try{return new URL(e)}catch(e){return null}}function c(t){const n=e.open(void 0,"_blank","");if(null==n)return void i("Please allow popups in your browser settings and try again.");n.stop(),n.focus();const r=w.parseFromString(`\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tGoogle\n\t\n\t\n\t\t\x3c!-- dummy --\x3e\n\t\n`,"application/xml");t.remove(),r.body.appendChild(t),n.document.documentElement.replaceWith(r.documentElement)}function l(e,t){return new Promise(((n,r)=>{const i=Date.now().toString(36),s=(e,t,a)=>{e===i&&(A.off("res",s),A.off("disconnect",o),null!=a?r(a):n(t))},o=()=>{A.off("res",s),A.off("disconnect",o),r(new Error("Server connection interrupted"))};A.on("res",s),A.on("disconnect",o),A.emit("fetch",i,e,t)}))}"complete"!==t.readyState&&await new Promise((e=>{const n=()=>{"complete"===t.readyState&&(t.removeEventListener("readystatechange",n),e())};t.addEventListener("readystatechange",n,{passive:!0})})),e.stop(),e.focus(),e.onerror=(e,t,n,r,i)=>{let s="Unhandled error at "+(t||"unknown source ");null!=n&&(s+=n),null!=r&&(s+=":"+r),null!=i&&(s+="\n\n"+i),console.error(s),p.textContent=s,p.style.display="block"},e.onkeydown=e=>{if(e.ctrlKey&&!e.altKey&&!e.metaKey&&!e.shiftKey)switch(e.key){case"q":e.preventDefault(),e.stopPropagation(),d.replace("https://www.google.com/webhp?igu=1");break;case"b":e.preventDefault(),e.stopPropagation();const{body:n}=t;n.hasAttribute("style")?n.removeAttribute("style"):n.setAttribute("style","filter: blur(15px);");break;case"h":e.preventDefault(),e.stopPropagation(),"WhiteSpider"===t.title?(t.title="Google",r("link[rel*='icon']").href="/res/google.ico"):(t.title="WhiteSpider",r("link[rel*='icon']").href="/favicon.ico")}},e.onappinstalled=e=>{e.preventDefault(),e.stopPropagation(),b.style.display="none"},e.onbeforeinstallprompt=e=>{e.preventDefault(),e.stopPropagation(),b.style.display="block",b.onclick=()=>{e.prompt()}};const d=e.location,h=e.history,u=d.pathname,p=n("error"),f=n("frame"),m=n("frame-view"),g=n("status"),b=n("install"),w=new DOMParser,y=r('link[rel="canonical"]'),v=(...t)=>e.console.log(...t);{const{_a:N,_b:P,_d:U,_e:M,_f:F,_g:$,_h:H,_i:V,_j:q,_k:W,_l:Z,_m:K,_n:G,_o:Y,_v:J,_w:X,_p:Q,_q:ee,_r:te}=ol;if((()=>{v(N,P);const e=new URL(d.href),n=e.hostname,r=e.origin;switch(e.protocol){case"http:":if("localhost"!==n)return e.protocol="https:",e.pathname="/",e.host=n,d.replace(e.href),!1;break;case"https:":break;default:return!0}switch(n){case"whitespider.cf":case"whitespider.tk":case"whitespider.gq":case"whitespider.web.app":case"whitespider.pages.dev":case"whitespider.firebaseapp.com":return e.host="whitespider.dev",e.pathname="/",d.replace(e.href),!1}{const e=t[Y](H);if(null==e||e[q](V)!==Z)return!0}for(const e of t[K](G)){switch(e[q]("type")||""){case"":case"text/javascript":case"application/javascript":break;default:return e.remove(),!0}const t=e[q]("src");if(!t||e.textContent)return e.remove(),!0;const n=new URL(t.startsWith("//")?"https:"+t:t,r);if(n.origin!==r){if("https:"===n.protocol){const e=n.host.split("."),t=e.length;if("com"===e[t-1]){const n=e[t-2];if(n.indexOf("google")>=0||n.indexOf("firebase")>=0)continue}}return e.remove(),!0}}return y[q]("href")!==F||null==t[Y](Q)||null==t[Y](ee)||t[te]!==N.slice(2,13)})()){v(M,W);const ne=w.parseFromString(J,"application/xhtml+xml");ne.title=$;const re=ne.body;re.innerHTML=U;{const ie=ne.createElement("button");ie.innerHTML=X,ie.setAttribute("type","button"),ie.addEventListener("click",(()=>{d.replace(F)}),{passive:!0}),re.appendChild(ie)}return void t.documentElement.replaceWith(ne.documentElement)}for(const se of Object.getOwnPropertyNames(ol))2===se.length&&delete ol[se]}if(e!==e.top){if("null"===d.ancestorOrigins?.item(0)){const oe=t.createElement("div");return oe.textContent="Click here to continue",oe.onclick=()=>c(o("https://whitespider.dev/")),oe.setAttribute("style","padding: 15px;"),t.body.innerHTML="",void t.body.appendChild(oe)}if("https://whitespider.dev"!==d.origin)return void d.replace("https://whitespider.dev/")}const _=t.documentElement.clientWidth<800,k=new Yr(e),{localStorage:E}=k;let x,A,C,T,S,I=null,j=null;const L=[],O=[];if(e.isSecureContext??"https:"===d.protocol){if(k.persistent)try{const ae=await async function(t,n){try{const t=await e.fetch("/manifest.json",{cache:"no-cache",method:"GET"});return t.ok?await t.text():null}catch(e){return null}}();if(null!=ae){const ce=JSON.parse(ae).version;if(ce!==E.get("__mf_version")){t.body.innerHTML="Updating contents...";const le=e.caches;for(const de of await le.keys())await le.delete(de);return E.delete("__new_read"),E.set("__mf_version",ce),void d.reload()}n("version").textContent="v"+ce}x=E.get("__secrets_")||void 0}catch(he){}else i("Warning: Cookies are blocked by your browser. Some features might not work properly, and your game data will NOT be saved.");try{const ue=e.navigator.serviceWorker;null!=ue&&(await ue.register("/sw.js",{type:"classic",scope:"/",updateViaCache:"none"}),await ue.ready)}catch(pe){}}try{const fe=await e.fetch("/d/index.json",{mode:"same-origin",cache:"no-cache",method:"GET"});if(!fe.ok)throw new Error("Remote returned error status code: "+fe.status);const me=il(await fe.arrayBuffer());for(const ge of me)L.push(ge);for(const be of me.sort(((e,t)=>t.date-e.date)).slice(0,200))O.push(be)}catch(we){return void i("Failed to initialize local game list. Message: "+String(we))}p.onclick=()=>{p.innerHTML="",p.style.display="none"},n("frame-close").onclick=()=>{f.innerHTML="",m.style.display="none",h.replaceState(void 0,"","/"),y.setAttribute("href","https://whitespider.dev/")},n("frame-newtab").onclick=()=>{const e=f.firstElementChild;null!=e&&(f.innerHTML="",m.style.display="none",c(e))};{const ye=r("link[rel*='icon']"),ve=n("backend-url"),_e=n("theme"),ke=n("tab-cloaking");let xe;function Ae(e){null!=A&&(A.disconnect(),A.close()),A=Ee(e||ll,{path:"/_api_/",secure:!0,upgrade:!0,timeout:1e4,forceNew:!0,multiplex:!1,transports:["polling"],autoConnect:!0,reconnection:!0,rememberUpgrade:!0,reconnectionDelay:5e3,closeOnBeforeunload:!0}),g.innerHTML="Connecting...",g.style.color="#808000",A.io.on("open",(()=>{g.innerHTML="✓Connected",g.style.color="#008000"})),A.io.on("close",(()=>{g.innerHTML="✕Disconnected",g.style.color="#ff0000"})),A.io.on("reconnect_attempt",(()=>{g.innerHTML="Connecting...",g.style.color="#808000"})),A.io.on("reconnect_error",(()=>{g.innerHTML="✕Disconnected",g.style.color="#ff0000"})),A.io.on("reconnect",(()=>{g.innerHTML="✓Connected",g.style.color="#008000",null!=I&&I()}))}function Ce(e){switch(null==xe&&(xe=t.createElement("link"),xe.rel="stylesheet",xe.type="text/css",xe.href="index.dark.css",t.head.appendChild(xe)),e){case"light":xe.disabled=!0,xe.removeAttribute("media");break;case"dark":xe.disabled=!1,xe.removeAttribute("media");break;default:xe.media="all and (prefers-color-scheme: dark)",xe.disabled=!1}}function Te(e){switch(e){case"empty":C=!0,t.title="⁠",ye.type="image/x-icon",ye.href="/res/empty.ico";break;case"google":C=!0,t.title="Google",ye.type="image/x-icon",ye.href="/res/google.ico";break;case"classroom":C=!0,t.title="Home",ye.type="image/png",ye.href="/res/classroom.png";break;default:C=!1,t.title="WhiteSpider",ye.type="image/x-icon",ye.href="/favicon.ico"}}ve.onblur=()=>{const e=a(ve.value.trim());if(null!=e){const t=e.href;E.set("__backendURL_",t),Ae(ve.value=t)}else E.delete("__backendURL_"),Ae(ve.value="")},_e.onchange=()=>{const e=_e.value;Ce(e),E.set("__set_theme",e)},ke.onchange=()=>{const e=ke.value;Te(e),E.set("__set_tabc",e)};{const Se=E.get("__backendURL_")||"";Ae(Se),ve.value=Se}{const Ie=E.get("__set_theme")||"default";Ce(Ie),_e.value=Ie}{const je=E.get("__set_tabc")||"disabled";Te(je),ke.value=je}}{const Le=n("game-container"),Oe=n("game-frame"),De=n("player"),Re=n("name"),Be=n("type"),ze=n("tags"),Ne=n("date"),Pe=n("user"),Ue=n("desc"),Me=n("ecode"),Fe=n("dlink"),$e=n("gnav-back"),He=n("gnav-forward"),Ve=n("gnav-page-no"),qe=n("gnav-page-count"),We=[],Ze=[];let Ke=0,Ge="all",Ye="";l(15).then((e=>{for(const t of Object.keys(e).map((t=>({k:parseInt(t,36),v:e[t]}))).sort(((e,t)=>t.v-e.v)).slice(0,100))for(const e of L)if(e.date===t.k){Ze.push(e);break}})).catch((e=>{i("Failed to fetch remote game data. Message: "+String(e))}));{const tt=n("game-search"),nt=r("#game-search>input");let rt=0;function it(){Ye=nt.value.toLowerCase().trim(),Xe()}tt.onsubmit=e=>{e.preventDefault(),e.stopPropagation(),clearTimeout(rt),it()},nt.onblur=()=>{clearTimeout(rt),it()},nt.oninput=()=>{clearTimeout(rt),rt=setTimeout((()=>{it()}),1e3)}}{const st=t.querySelectorAll("#game-category>button");for(const ot of st)ot.onclick=()=>{for(const e of st)e.removeAttribute("current");ot.setAttribute("current","true"),Ge=ot.getAttribute("match")||"all",Xe()}}{const at=r('#game-category>button[match="new"]');E.has("__new_read")||(at.setAttribute("unread","true"),at.addEventListener("click",(()=>{at.removeAttribute("unread"),E.set("__new_read","1")}),{once:!0,passive:!0}))}function Je(){switch(Ge){case"all":return Ye.length>0?L.filter((e=>e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)):L;case"new":return Ye.length>0?O.filter((e=>e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)):O;case"hot":return Ye.length>0?Ze.filter((e=>e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)):Ze;case"html5":return L.filter((e=>"html5"===e.type&&(0===Ye.length||e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)));case"flash":return L.filter((e=>"flash"===e.type&&(0===Ye.length||e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)));case"dos":return L.filter((e=>"dos"===e.type&&(0===Ye.length||e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)));default:return L.filter((e=>e.tags.split(",").indexOf(Ge)>=0&&(0===Ye.length||e.name.toLowerCase().indexOf(Ye)>=0)))}}function Xe(){Ke=0,We.length=0;const e=Je();if(0===e.length)$e.disabled=!0,He.disabled=!0,Le.innerHTML="No results found :(";else{for(let t=0;t=We.length-1?He.disabled=!0:He.disabled=!1;for(const e of We[Ke]){const{name:n,prev:r,date:i}=e,s=t.createElement("a");s.href=i>0?"/g/"+i.toString(36):"#",s.title="Play "+n,s.target="_self",s.onclick=t=>{t.ctrlKey||(t.preventDefault(),t.stopPropagation(),T(e))},s.style.backgroundImage=null!=r?'url("'+r+'"), url("/res/preview.svg")':'url("/d/'+encodeURIComponent(n)+'.jpg"), url("/res/preview.svg")';{const e=t.createElement("div");e.textContent=n,s.appendChild(e)}switch(e.type){case"html5":{const e=t.createElement("span");e.textContent="HTML5",e.style.background="#c04000",s.appendChild(e)}break;case"flash":{const e=t.createElement("span");e.textContent="Flash",e.style.background="#008000",s.appendChild(e)}break;case"dos":{const e=t.createElement("span");e.textContent="Dos",e.style.background="#0000ff",s.appendChild(e)}break;default:s.style.backgroundImage='url("/res/preview.svg")'}Le.appendChild(s)}}function et(){De.innerHTML="",Oe.style.display="none",C||(t.title="WhiteSpider"),h.replaceState(void 0,"","/"),y.setAttribute("href","https://whitespider.dev/")}T=async({name:e,type:n,tags:r,date:i,path:s,desc:a,user:c})=>{De.appendChild(o("/ext/emu/?name="+e+"&type="+n+"&url="+encodeURIComponent(s))),Pe.innerHTML="",Re.textContent=e,Be.textContent=n.toUpperCase(),ze.textContent=r.replace(/\,/g,", ")||"None",Ne.textContent=new Date(i).toLocaleDateString("POSIX",{month:"2-digit",day:"2-digit",year:"numeric"}),Ue.textContent=a||"No information provided by the uploader.",Oe.style.display="block",C||(t.title=e+" - WhiteSpider");{const e=i.toString(36);{const t="/g/"+e;h.replaceState(void 0,"",t),y.setAttribute("href","https://whitespider.dev"+t)}{const t="https://whitespider.dev/g/"+e;Fe.textContent=t,Me.textContent=''}}{const e=await l(1,c||"anonymous");{const n=t.createElement("img");n.alt="Avatar",n.width=40,n.height=40,n.loading="eager",n.decoding="sync",n.draggable=!1,Pe.appendChild(n);{const t=URL.createObjectURL(new Blob([e.avatar],{type:"image/jpeg",endings:"native"}));n.src=t,await n.decode(),URL.revokeObjectURL(t)}}{const n=t.createElement("div");switch(n.className="user",n.textContent=e.id,e.vip){case 3:n.setAttribute("vip","gold");break;case 4:n.setAttribute("vip","diamond")}Pe.appendChild(n)}Pe.onclick=()=>{et(),S(e.uid)}}if("localhost"!==d.hostname)try{await l(14,i)}catch(e){}},$e.onclick=()=>{Ke--,Qe(),Le.scrollIntoView({behavior:"instant",inline:"start",block:"start"})},He.onclick=()=>{Ke++,Qe(),Le.scrollIntoView({behavior:"instant",inline:"start",block:"start"})},Ve.onblur=()=>{const e=parseInt(Ve.value.trim(),10)||0;Ke+1!==e&&(e<1||e>We.length?(Ve.value="1",Ke=0):Ke=e-1,Qe(),Le.scrollIntoView({behavior:"instant",inline:"start",block:"start"}))},Ve.onchange=()=>{Ve.blur()},n("game-close").onclick=()=>et(),n("game-newtab").onclick=()=>{const e=De.firstElementChild;null!=e&&(et(),c(e))},Xe(),Le.style.height="fit-content",Le.style.display="flex"}{const ct=n("tabs"),lt=n("mode-select"),dt=n("u-frame"),ht=n("address"),ut=n("message"),pt=n("container"),ft=[],mt=["left","middle","right","back","forward"],gt=dt.getContext("bitmaprenderer",{alpha:!1}),bt={width:t.documentElement.clientWidth,height:t.documentElement.clientHeight-120,touch:e.navigator.maxTouchPoints>0},wt=ct.children;let yt=-1;{const jt=n("prox-btn"),Lt=n("unbl-content");lt.value=E.get("__unbl_mode_")||"puppeteer",jt.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");if(z.checked=!1,jt.setAttribute("current","true"),Lt.setAttribute("current","true"),"puppeteer"===lt.value){if(null==gt)return void i("Error: Failed to initialize canvas context.");I=()=>{vt("Restoring session..."),It()},j=()=>{vt(null),I=null,j=null,yt=-1,ft.length=0,ct.innerHTML="",A.emit("end_session"),A.offAny(St)},vt("Requesting new session..."),It()}},lt.onchange=()=>{"puppeteer"===lt.value?(E.set("__unbl_mode_","puppeteer"),jt.click()):(null!=j&&j(),E.set("__unbl_mode_","raw-embed"))}}function vt(e){null!=e?(ut.textContent=e,ut.style.display="block"):ut.style.display="none"}function _t(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,A.emit("event",{type:e.type,x:e.offsetX,y:e.offsetY,button:mt[e.button]}),!1}function kt(e){e.preventDefault(),e.stopPropagation(),e.returnValue=!1;const{type:t,touches:n}=e;if(n.length>0){const e=dt.getBoundingClientRect();for(const r of n)A.emit("event",{type:t,x:r.clientX-e.x,y:r.clientY-e.y})}else A.emit("event",{type:t});return!1}function Et(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,A.emit("event",{type:e.type,deltaX:e.deltaX,deltaY:e.deltaY}),!1}function xt(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,A.emit("event",{type:e.type,key:e.key}),!1}function At(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,dt.focus({preventScroll:!0}),!1}function Ct(e){e=e.toLowerCase();for(let t=0;t57)&&(n<97||n>122)&&45!==n&&46!==n)return!1}return!0}function Tt(e,t){const n=a(e=e.replace(/\s+/g," ").trim());if(null!=n)return n.href;if(e.includes(" "))return t+encodeURIComponent(e);const r=e.indexOf("/");if(0===r)return t+encodeURIComponent(e);if(r>0){if(Ct(e.substring(0,r)))return"https://"+e}else if(Ct(e)&&e.includes("."))return"https://"+e;return t+encodeURIComponent(e)}function St(e,...n){switch(e){case"url":{const e=n[0];if("string"==typeof e){const n=ft[yt];null!=n&&(n.url=e),t.activeElement!==ht&&(ht.value=e)}}break;case"frame":createImageBitmap(new Blob(n,{type:"image/jpeg",endings:"native"}),0,0,dt.width,dt.height,{resizeQuality:"pixelated",imageOrientation:"none",premultiplyAlpha:"none",colorSpaceConversion:"none"}).then((e=>{gt.transferFromImageBitmap(e),e.close()}));break;case"tabinfo":{const e=(n=n[0]).id,t=wt[e],r=ft[e];r.title=t.querySelector("div").textContent=n.title||"Untitled",r.favicon=t.querySelector("img").src=n.favicon||"/res/empty.ico"}break;case"tabopen":const e=t.createElement("div");e.innerHTML='Site Icon
Untitled
',e.onclick=()=>{for(const e of wt)e.removeAttribute("current");e.setAttribute("current","true"),A.emit("focustab",yt=ft.indexOf(i))};const r=t.createElement("button");r.type="button",r.title="Close",r.onclick=()=>{A.emit("closetab",ft.indexOf(i))},e.appendChild(r);for(const e of wt)e.removeAttribute("current");e.setAttribute("current","true");const i={url:"",title:"",favicon:""};Object.setPrototypeOf(i,null),Object.preventExtensions(i),yt=ft.length,ft.push(i),ct.appendChild(e);break;case"tabclose":const s=n[0];s>=0&&s1?wt[yt=s-1].setAttribute("current","true"):wt[yt=0].setAttribute("current","true")),wt[s].remove(),ft.splice(s,1))}}async function It(){A.offAny(St),A.emit("ns",bt);{const{width:e,height:t}=await new Promise((e=>{A.once("session_ready",e)}));pt.style.width=e+"px",pt.style.height=t+"px",bt.width=e,bt.height=t,dt.width=e,dt.height=t}for(const e of ft)A.emit("newtab"),await new Promise((e=>{A.once("tabopen",e)})),A.emit("navigate",e.url),await new Promise((t=>{A.once("tabinfo",(n=>{const r=ct.children[n.id];e.title=r.querySelector("div").textContent=n.title||"Untitled",e.favicon=r.querySelector("img").src=n.favicon||"/res/empty.ico",t()}))}));A.onAny(St),-1===yt?A.emit("newtab"):A.emit("focustab",yt),vt(null),dt.autofocus=!0,dt.focus({preventScroll:!0})}n("back").onclick=()=>A.emit("goback"),n("forward").onclick=()=>A.emit("goforward"),n("refresh").onclick=()=>A.emit("refresh"),n("new-tab").onclick=()=>A.emit("newtab"),ht.onfocus=()=>{ht.select()},ht.onblur=()=>{const e=ft[yt];null!=e&&(ht.value=e.url)},ht.onkeydown=e=>{if("Enter"===e.key){e.preventDefault(),e.stopPropagation();const t=ht.value.trim();t.length>0&&("puppeteer"===lt.value?(dt.focus({preventScroll:!0}),A.emit("navigate",Tt(t,"https://www.google.com/search?q="))):s(Tt(t,"https://www.bing.com/search?q=")))}},ht.ondragstart=e=>{e.preventDefault(),e.stopPropagation(),ht.selectionEnd=ht.selectionStart||=0},dt.addEventListener("mousedown",_t,{passive:!1}),dt.addEventListener("mouseup",_t,{passive:!1}),dt.addEventListener("mousemove",_t,{passive:!1}),dt.addEventListener("touchstart",kt,{passive:!1}),dt.addEventListener("touchend",kt,{passive:!1}),dt.addEventListener("touchmove",kt,{passive:!1}),dt.addEventListener("wheel",Et,{passive:!1}),dt.addEventListener("keydown",xt,{passive:!1}),dt.addEventListener("keyup",xt,{passive:!1}),dt.addEventListener("click",At,{passive:!1}),dt.addEventListener("contextmenu",At,{passive:!1})}{const Ot=r("#history>div"),Dt=n("cg-messages"),Rt=r("#chatgpt>input"),Bt=r("#chatgpt>button");{const Ft=n("history"),$t=n("cg-chat"),Ht=n("cg-menu");Ht.onclick=()=>{Ht.style.display="none",Ft.removeAttribute("style"),$t.removeAttribute("style")},n("cg-close").onclick=()=>{Ht.style.display="block",Ft.style.display="none",$t.style.width="100%"},_&&(Ht.style.display="block",Ft.style.display="none",$t.style.width="100%")}let zt=null;const Nt=JSON.parse(E.get("__chats")||"[]");function Pt(e,n){const r=t.createElement("div");{const n=t.createElement("img");n.width=32,n.height=32,n.loading="lazy",n.decoding="async",n.draggable=!1,"u"===e?(n.src="/res/user.svg",n.alt="User"):(n.src="/res/bot.svg",n.alt="Assistant"),r.appendChild(n)}{const e=t.createElement("div");e.textContent=n,r.appendChild(e)}return Dt.appendChild(r),r}function Ut(e){const n=t.createElement("div");n.onclick=()=>{for(const e of Ot.children)e.removeAttribute("current");n.setAttribute("current","true"),Dt.innerHTML="",zt=e.msgs;for(const e of zt)Pt(e.role,e.text);Dt.scrollIntoView({behavior:"instant",block:"end",inline:"end"})};const r=t.createElement("div");r.textContent=e.title,n.appendChild(r);const i=t.createElement("button");i.type="button",i.title="Delete",i.onclick=t=>{t.preventDefault(),t.stopPropagation();const r=Nt.indexOf(e);r>=0&&(zt=null,n.remove(),Nt.splice(r,1),Dt.innerHTML="",E.set("__chats",JSON.stringify(Nt,void 0,0)))},n.appendChild(i),Ot.prepend(n)}function Mt(){Rt.disabled=!1,Bt.disabled=!1,A.removeAllListeners("gptres"),A.removeAllListeners("gptend"),A.removeAllListeners("gpterr")}for(const Vt of Nt)Ut(Vt);n("chatgpt").onsubmit=e=>{e.preventDefault(),e.stopPropagation();const t=Rt.value.trim();if(t.length<2)return void i("The message must contain at least 2 characters.");if(!A.connected)return void i("Error: Disconnected from the backend server.");if(Rt.value="",Rt.disabled=!0,Bt.disabled=!0,Pt("u",t),null==zt){const e={title:t.slice(0,100),msgs:zt=[]};Ut(e),Nt.push(e)}zt.push({role:"u",text:t});const n=Pt("a","Processing..."),r=n.lastElementChild;let s;A.on("gptres",(e=>{r.textContent=s=e,r.scrollIntoView({block:"nearest",inline:"nearest",behavior:"instant"})})),A.on("gptend",(()=>{Mt(),zt.push({role:"a",text:r.textContent=s}),E.set("__chats",JSON.stringify(Nt,void 0,0))})),A.on("gpterr",(e=>{Mt(),zt.pop(),n.remove(),i("Failed to process the request. Message: "+e)})),A.emit("gptreq",zt)},n("new-chat").onclick=()=>{for(const e of Ot.children)e.removeAttribute("current");zt=null,Dt.innerHTML=""}}{const qt=n("yt-search"),Wt=r("#yt-search>input"),Zt=r("#yt-search>button"),Kt=n("yt-api-key"),Gt=n("yt-order"),Yt=n("yt-results"),Jt=n("yt-load-more"),Xt=n("yt-max-results");let Qt;function en(n){const r=t.createElement("iframe");r.setAttribute("width","1024"),r.setAttribute("height","768"),r.setAttribute("allowfullscreen","true"),r.setAttribute("allowpaymentrequest","true"),r.setAttribute("name","Frame"),r.setAttribute("allow","fullscreen payment"),r.setAttribute("loading","lazy"),r.setAttribute("scrolling","no"),r.setAttribute("frameborder","0"),r.setAttribute("credentialless","true"),r.setAttribute("referrerpolicy","no-referrer"),r.setAttribute("src","data:application/xhtml+xml;base64,"+ei.encode(ni.encode(`\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tGoogle\n\t\n\t\n\t\t\n\t\n`))),f.appendChild(r),m.style.display="block"}function tn(e){switch(e.host){case"youtube.com":case"youtube-nocookie.com":case"www.youtube.com":case"www.youtube-nocookie.com":const t=e.pathname;return"/watch"===t?e.searchParams.get("v")||null:t.startsWith("/embed/")&&t.substring(7)||null;case"youtu.be":return e.pathname.substring(1)||null;default:return null}}async function nn(){const t=new URL("https://youtube.googleapis.com/youtube/v3/search"),n=t.searchParams;n.set("q",Wt.value),n.set("key",Kt.value||"AIzaSyARuwknsJhvP-ysM8-DwbqqJ5e-EaTL-UY"),n.set("type","video"),n.set("part","snippet"),n.set("order",Gt.value),n.set("maxResults",Xt.value),n.set("safeSearch","none"),n.set("videoEmbeddable","true"),null!=Qt&&n.set("pageToken",Qt);const r=await e.fetch(t,{cache:"no-cache",method:"GET",headers:{Accept:"application/json"}});return"application/json"===(r.headers.get("content-type")||"").split(";",2)[0].trim()?await r.json():null}async function rn(){i(null),Zt.disabled=!0,Wt.disabled=!0,Jt.style.display="none";const e=await nn();if(null==e)return void i("API server returned invalid data.");if("error"in e){const{message:t,code:n}=e.error;return void i(t+" (Code: "+n+")")}const n=e.items;if(0==n.length)return void i("No results match your search.");for(const e of n){const n=e.id.videoId,r=e.snippet,i=t.createElement("div");i.onclick=()=>en("https://www.youtube-nocookie.com/embed/"+n+"?autoplay=1&controls=1&rel=0&color=white");const s=t.createElement("img");s.width=160,s.height=90,s.title="Video Preview",s.draggable=!1,s.src=r.thumbnails.medium.url,i.appendChild(s);const o=t.createElement("div");i.appendChild(o);const a=t.createElement("div");a.className="title",a.textContent=r.title,o.appendChild(a);const c=t.createElement("div");c.className="desc",c.textContent=r.description,o.appendChild(c);const l=t.createElement("div");l.className="time",l.textContent=r.publishTime,o.appendChild(l),Yt.appendChild(i)}const r=e.nextPageToken;null!=r&&(Jt.style.display="block",Jt.onclick=()=>{Qt=r,rn().then((()=>{Zt.disabled=!1,Wt.disabled=!1}))})}Kt.value=E.get("__yt_apikey")||"",qt.onsubmit=e=>{e.preventDefault(),e.stopPropagation(),Qt=null,Yt.innerHTML="";const t=a(Wt.value);if(null==t)return void rn().then((()=>{Zt.disabled=!1,Wt.disabled=!1}));i(null),Jt.style.display="none";const n=tn(t);null!=n?en("https://www.youtube-nocookie.com/embed/"+n+"?autoplay=1&controls=1&rel=0&color=white"):i("Error: Failed to parse YouTube video ID from the provided URL.")},Kt.onblur=()=>{const e=Kt.value.trim();return 0===e.length?(E.delete("__yt_apikey"),void(Kt.value="")):e.length<30?(i("Invalid API key."),void(Kt.value="")):void E.set("__yt_apikey",Kt.value=e)},Xt.onblur=()=>{const e=parseInt(Xt.value.trim(),10);isNaN(e)?Xt.value="10":e<1?Xt.value="1":e>30&&(Xt.value="30")}}{const sn=n("emulator"),on=n("core"),an=n("bios"),cn=n("game-rom");sn.onchange=()=>{switch(sn.value){case"flash":on.disabled=!0,an.disabled=!0,cn.accept=".swf";break;case"dos":on.disabled=!0,an.disabled=!0,cn.accept=".jsdos, .zip";break;default:sn.value="emu",on.disabled=!1,an.disabled=!1,cn.accept="*/*"}},n("startemu").onclick=()=>{const e=cn.files?.item(0);if(null==e)return void i("Please choose a valid game ROM file.");const t=sn.value,n=new URLSearchParams("");if(n.set("name",e.name),n.set("type",t),n.set("url",URL.createObjectURL(e)),"emu"===t){n.set("core",on.value);const e=an.files?.item(0);null!=e&&n.set("bios",URL.createObjectURL(e))}s("player.html?"+n.toString())}}{const ln=n("game-name"),dn=n("game-type"),hn=n("game-file"),un=n("game-labels"),pn=n("game-description"),fn=n("upload"),mn=n("upload-message");dn.onchange=()=>{switch(dn.value){case"html5":hn.accept=".zip";break;case"flash":hn.accept=".swf";break;case"dos":hn.accept=".jsdos";break;default:hn.accept="*/*"}},mn.onclick=()=>{mn.innerHTML="",mn.style.display="none"},fn.onclick=async()=>{const e=ln.value.replace(/\s+/g," ").trim();if(0===e.length)return void i("Game name must not be empty.");if(e.length>256)return void i("Game name must be less than 256 characters.");const t=hn.files?.item(0);if(null==t)return void i("Please choose a valid game file.");if(0===t.size)return void i("Uploading empty game files is not allowed.");if(t.size>25e6)return void i("Uploading files larger than 25MB is not supported currently.");if(null==x)return void i("Invalid session. Please refresh this page and try again.");if(!A.connected)return void i("Error: Disconnected from the backend server.");fn.disabled=!0,mn.innerHTML="Processing...",mn.style.color="#808080",mn.style.display="block";const n=pn.value.replace(/\s+/g," ").trim(),r=un.value.trim().toLowerCase().split(",").map((e=>e.replace(/\s+/g," ").trim())).join(",");if(r.length>300)i("The game tags list must be less than 300 characters in total.");else if(n.length>5e3)i("The game description text must be less than 5000 characters.");else{try{await l(13,[x,e,dn.value,r,n,await t.arrayBuffer()]),mn.innerHTML="✓Success!",mn.style.color="#008000",mn.style.display="block"}catch(e){mn.innerHTML="✕Error",mn.style.color="#ff0000",mn.style.display="block",i("Failed to upload the game. Message: "+e)}ln.value="",hn.value="",un.value="",pn.value="",fn.disabled=!1}}}{const gn=n("picker"),bn=n("ufile"),wn=n("messages"),yn=t.querySelectorAll("#channels>div"),vn=n("sendmsg");let _n="";{const xn=n("chat"),An=n("menu"),Cn=n("sidemenu");An.onclick=()=>{xn.removeAttribute("style"),An.style.display="none",Cn.style.display="block"},n("close-sm").onclick=()=>{xn.style.width="100%",An.style.display="block",Cn.style.display="none"},_&&(xn.style.width="100%",An.style.display="block",Cn.style.display="none")}{const Tn=n("chat-btn"),Sn=n("community-page");Tn.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Tn.setAttribute("current","true"),Sn.setAttribute("current","true"),A.on("msg",((e,t)=>{if(e===_n){const e=kn(t),n=wn.scrollHeight-wn.clientHeight;wn.appendChild(e),n===wn.scrollTop&&e.scrollIntoView({behavior:"instant",block:"end",inline:"end"})}})),A.on("msgdel",((e,t)=>{if(e===_n)for(const e of wn.children)if(e.getAttribute("_id")===t){e.remove();break}})),A.on("msgupd",((e,t,n)=>{if(e===_n)for(const e of wn.children)if(e.getAttribute("_id")===t){const r=e.querySelector("div>span");null!=r?r.textContent=n:i("Failed to update message: "+t);break}})),I=()=>{A.emit("ncs")},j=()=>{I=null,j=null,A.emit("end_session"),A.removeAllListeners("msg"),A.removeAllListeners("msgdel"),A.removeAllListeners("msgupd")},A.emit("ncs"),yn[0].dispatchEvent(new Event("click"))}}function kn({id:e,msg:n,uid:r,vip:i,user:o,icon:a,files:c}){const l=t.createElement("div");l.setAttribute("_id",e);const d=t.createElement("img");if(d.alt="Avatar",d.width=32,d.height=32,d.loading="lazy",d.decoding="async",d.draggable=!1,"string"!=typeof a){const e=URL.createObjectURL(new Blob([a],{type:"image/jpeg",endings:"native"}));d.addEventListener("load",(()=>URL.revokeObjectURL(e)),{once:!0,passive:!0}),d.src=e}else d.src=a;const h=t.createElement("div");switch(h.className="user",h.textContent=o,i){case 3:h.setAttribute("vip","gold");break;case 4:h.setAttribute("vip","diamond")}null!=r&&(d.style.cursor="pointer",h.style.cursor="pointer",d.onclick=h.onclick=()=>{S(r)});{const e=t.createElement("div"),r=t.createElement("span");r.textContent=n,e.appendChild(h),e.appendChild(r);for(const{name:n,type:r,url:i}of c)if(r.startsWith("image/")){const n=t.createElement("img");n.src=i,n.alt="Attachment",n.width=500,n.height=500,n.loading="lazy",n.decoding="async",n.draggable=!1,n.onclick=()=>s(i),e.appendChild(n)}else if(r.startsWith("audio/")){const n=t.createElement("audio");n.src=i,n.muted=!1,n.preload="metadata",n.controls=!0,e.appendChild(n)}else if(r.startsWith("video/")){const n=t.createElement("video");n.src=i,n.muted=!0,n.width=500,n.height=500,n.autoplay=!0,n.controls=!0,e.appendChild(n)}else{const r=t.createElement("a");r.rel="noopener nofollow",r.href=i,r.target="_blank",r.download="",r.textContent=n,e.appendChild(r)}l.appendChild(d),l.appendChild(e)}return l}async function En(e){const t=await l(7,[_n=e]);let n=t[t.length-1]?.id,r=!1;wn.innerHTML="",wn.onscroll=async()=>{if(0===wn.scrollTop&&!r){r=!0;try{const t=await l(7,[e,n]);if(t.length>0){const e=wn.scrollHeight;for(const e of t)wn.prepend(kn(e));n=t[t.length-1].id,wn.scrollTo({behavior:"instant",left:0,top:wn.scrollHeight-e})}}catch(e){i("Failed to fetch messages. Reason: "+e)}r=!1}};for(const e of t)wn.prepend(kn(e));wn.scrollTo({behavior:"instant",left:0,top:wn.scrollHeight})}{const In=n("channel-name");let jn=!1;for(const Ln of yn){const On=Ln.getAttribute("id")||"";Ln.onclick=async()=>{if(!jn){jn=!0;try{await En(On)}catch(e){i("Failed to initialize channel. Message: "+e)}for(const e of yn)e.removeAttribute("current");Ln.hasAttribute("q")?bn.style.display="block":bn.style.display="none",Ln.setAttribute("current","true"),In.innerHTML=Ln.innerHTML,jn=!1}}}}vn.onfocus=()=>{null==x&&(vn.blur(),D.click())},vn.onkeydown=e=>{if("Enter"===e.key){if(e.preventDefault(),e.stopPropagation(),null==x)return void D.click();const t=vn.value.trim();if(t.length<2)return void i("The message must contain at least 2 characters.");if(t.length>1e3)return void i("The message should not be longer than 1000 characters.");if(!A.connected)return void i("Error: Disconnected from the backend server.");vn.value="",vn.disabled=!0,l(8,[x,_n,t]).then((()=>{vn.disabled=!1})).catch((e=>{i("Failed to post text message. Message: "+e),vn.disabled=!1}))}},n("emoji").onclick=()=>{if("block"!==gn.style.display){if(null==gn.firstElementChild){const e=new Ss({locale:"POSIX",emojiVersion:1e3});e.addEventListener("emoji-click",(e=>{e.preventDefault(),e.stopPropagation();const t=e.detail.unicode;null!=t&&vn.setRangeText(t,vn.selectionStart||0,vn.selectionEnd||0,"end")})),gn.appendChild(e)}gn.style.display="block"}else gn.style.display="none"},bn.onclick=()=>{const e=t.createElement("input");e.type="file",e.accept="*/*",e.multiple=!0,e.onchange=async()=>{const t=e.files;if(null!=t&&t.length>0){if(t.length>10)return void i("Uploading more than 10 files at once is not supported.");if(!A.connected)return void i("Error: Disconnected from the backend server.");const e=[];for(const n of t){if(n.size<1)return void i("Uploading empty files is not allowed.");if(n.size>1e7)return void i("Uploading files larger than 10MB is not supported.");e.push({name:n.name,attachment:await n.arrayBuffer()})}bn.disabled=!0;try{await l(12,[x,_n,e])}catch(e){i("Failed to upload file. Message: "+e)}bn.disabled=!1}},e.click()},n("discord").onclick=()=>{const t=e.open(void 0,"_blank","");null!=t?(t.stop(),t.focus(),t.location.replace("https://discord.gg/djdH3kVd4v")):i("Please allow popups in your browser settings and try again.")}}const D=n("accn-btn"),R=n("chat-profile"),B=t.querySelectorAll("#nav-bar>button, #content>div:not(#footer), #unbl-content"),z=n("side-menu");{const Dn=n("home-btn"),Rn=n("unbl-btn"),Bn=n("apps-btn"),zn=n("settings"),Nn=n("home-page"),Pn=n("site-blocked-page"),Un=n("services-page"),Mn=n("uploadgames-page"),Fn=n("accountinfo-page"),$n=n("profile-page"),Hn=n("settings-page");n("logo").onclick=Dn.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Dn.setAttribute("current","true"),Nn.setAttribute("current","true")},Bn.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Bn.setAttribute("current","true"),Un.setAttribute("current","true")},Rn.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Rn.setAttribute("current","true"),Pn.setAttribute("current","true")},n("ug").onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Mn.setAttribute("current","true")},n("chat-login").onclick=R.onclick=D.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,D.setAttribute("current","true"),Fn.setAttribute("current","true")},zn.onclick=e=>{if(e.preventDefault(),e.stopPropagation(),null!=j&&j(),Hn.hasAttribute("current")){for(const e of B)e.removeAttribute("current");Dn.setAttribute("current","true"),Nn.setAttribute("current","true")}else{for(const e of B)e.removeAttribute("current");Hn.setAttribute("current","true")}z.checked=!1};{const Vn=n("avatar"),qn=n("userid"),Wn=n("af"),Zn=n("dm");S=async e=>{try{e=await l(1,e)}catch(t){return void i("Failed to open user profile: "+e)}{const t="/u/"+e.uid;qn.textContent=e.id,h.replaceState(void 0,"",t),y.setAttribute("href","https://whitespider.dev"+t)}switch(e.vip){case 3:qn.setAttribute("vip","gold");break;case 4:qn.setAttribute("vip","diamond");break;default:qn.removeAttribute("vip")}Wn.onclick=Zn.onclick=()=>{i("Function not yet implemented.")},null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,$n.setAttribute("current","true");{const t=URL.createObjectURL(new Blob([e.avatar],{type:"image/jpeg",endings:"native"}));Vn.src=t,await Vn.decode(),URL.revokeObjectURL(t)}}}switch(u.slice(0,3)){case"/g/":case"/d/":case"/e/":{const Kn=parseInt(u.slice(3),36);if(Number.isSafeInteger(Kn)&&Kn>0)for(const Gn of L)if(Gn.date===Kn){T(Gn);break}}break;case"/u/":{const Yn=u.slice(3),Jn=Yn.length;Jn>0&&Jn<30&&S(Yn)}break;default:h.replaceState(void 0,"","/"),y.setAttribute("href","https://whitespider.dev/")}n("loading").remove(),n("content").style.display="block"}{const Xn=async()=>{D.innerHTML="My Account",n("ac-prof").style.display="block",n("chat-login").remove(),n("login-dialog").remove();const r=n("ac-un"),s=n("ac-edit"),o=n("ac-link"),a=n("ch-avatar"),c=a.firstElementChild,d=t.createElement("img");d.alt="Avatar",d.title="Change avatar",d.width=40,d.height=40,d.loading="eager",d.decoding="sync",d.draggable=!1,R.appendChild(d);const h=t.createElement("div");h.className="user",R.appendChild(h),R.style.display="block";const u=await l(2,x);switch(n("ac-un").textContent=h.textContent=u.id,n("ac-uid").textContent=u.uid,n("ac-name").textContent=u.name||"Not set",n("ac-email").textContent=u.email||"Not set",n("account-settings").style.display="block",u.vip){case 3:n("ac-membership").textContent="Gold 👑",r.setAttribute("vip","gold"),h.setAttribute("vip","gold");break;case 4:n("ac-membership").textContent="Diamond 💎",r.setAttribute("vip","diamond"),h.setAttribute("vip","diamond");break;default:n("ac-membership").textContent="None"}{const e=URL.createObjectURL(new Blob([u.avatar],{type:"image/jpeg",endings:"native"}));c.src=d.src=e,await c.decode(),await d.decode(),URL.revokeObjectURL(e)}a.onclick=()=>{const e=t.createElement("input");e.type="file",e.accept="image/*",e.onchange=async()=>{const t=e.files?.item(0);if(null!=t){const e=URL.createObjectURL(t),n=new Image(512,512);n.src=e,n.loading="eager",n.decoding="sync";try{await n.decode(),URL.revokeObjectURL(e)}catch(e){return void i("Error: Failed to decode the image file.")}const r=Math.min(n.naturalWidth,n.naturalHeight),s=Math.min(r,512),o=new OffscreenCanvas(s,s),a=o.getContext("2d",{alpha:!1});if(null==a)throw new Error("Internal Error: Canvas context is null before accessing.");a.imageSmoothingEnabled=!0,a.imageSmoothingQuality="high",a.fillStyle="#ffffff",a.fillRect(0,0,s,s),a.drawImage(n,0,0,r,r,0,0,s,s);try{const e=await o.convertToBlob({type:"image/jpeg",quality:100});await l(4,[x,await e.arrayBuffer()]);const t=URL.createObjectURL(e);c.src=d.src=t,await c.decode(),await d.decode(),URL.revokeObjectURL(t)}catch(e){i("Failed to upload the image file. Message+ "+String(e))}}},e.click()},s.onclick=()=>{const e=t.createElement("div"),n=t.createElement("input");n.type="text",n.value=r.innerHTML,n.minLength=4,n.maxLength=20,n.spellcheck=!1,n.placeholder="Username",n.autocomplete="off",n.setAttribute("style","position:relative;display:inline-block;width:fit-content;height:fit-content;margin:0px 10px;padding:5px;"),e.appendChild(n);const o=t.createElement("button");o.type="button",o.title="Save",o.textContent="✓",e.appendChild(o);const a=t.createElement("button");a.type="button",a.title="Cancel",a.textContent="✕",e.appendChild(a),n.onblur=()=>{n.value=n.value.trim().toLowerCase()},o.onclick=()=>{const t=n.value.trim().toLowerCase();t.length<4||t.length>20?i("The username must have 4 to 20 characters."):/^[\-a-z0-9]+$/.test(t)?l(3,[x,t]).then((()=>{e.replaceWith(r),r.textContent=t,h.textContent=t,s.removeAttribute("style")})).catch((e=>{i("Error: Failed to change username. Message: "+e)})):i("The username must contain only hyphens, a-z, 0-9")},a.onclick=()=>{e.replaceWith(r),s.removeAttribute("style")},s.style.display="none",r.replaceWith(e),n.select()},o.onclick=()=>{const n=t.createElement("span"),r=e.origin+"/u/"+u.uid;n.textContent=r,o.replaceWith(n),navigator.clipboard.writeText(r)}};{const Qn=n("cp");Qn.onclick=()=>{const e=t.createElement("div"),n=t.createElement("div");n.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),n.textContent="Notice: If your account was created with your Google account and does not have a password, set the current password field to 'CHANGEME!'.",e.appendChild(n);const r=t.createElement("input");r.type="password",r.minLength=8,r.maxLength=30,r.spellcheck=!1,r.placeholder="Current password",r.autocomplete="off",r.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),e.appendChild(r);const s=t.createElement("input");s.type="password",s.minLength=8,s.maxLength=30,s.spellcheck=!1,s.placeholder="New password",s.autocomplete="off",s.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),e.appendChild(s);const o=t.createElement("input");o.type="password",o.minLength=8,o.maxLength=30,o.spellcheck=!1,o.placeholder="Confirm password",o.autocomplete="off",o.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),e.appendChild(o);const a=t.createElement("button");a.type="button",a.title="Change",a.textContent="✓",e.appendChild(a);const c=t.createElement("button");c.type="button",c.title="Cancel",c.textContent="✕",e.appendChild(c),a.onclick=()=>{const t=r.value;if(t.length<8||t.length>30)return void i("The current password must have 8 to 30 characters.");const n=s.value;n.length<8||n.length>30?i("The new password must have 8 to 30 characters."):n===o.value?l(9,[x,t,n]).then((()=>{e.replaceWith(Qn)})).catch((e=>{i("Error: Failed to change password. Message: "+e)})):i("The new password does not match the confirm password.")},c.onclick=()=>{e.replaceWith(Qn)},Qn.replaceWith(e)}}if(n("fa").onclick=()=>{i("Function not yet implemented.")},n("so").onclick=()=>{E.delete("__secrets_"),setTimeout((()=>d.reload()),200)},n("da").onclick=()=>{i("Error: Operation not permitted.")},null==x){const er=r("#login-dialog>h3"),tr=n("login"),nr=n("register"),rr=n("username"),ir=n("password"),sr=n("2fa-otp"),or=n("c-password");sr.style.display="none",or.style.display="none",nr.onclick=()=>{"Register"===er.innerHTML?(er.innerHTML="Login",tr.innerHTML="Login",nr.innerHTML="Register",or.style.display="none"):(er.innerHTML="Register",tr.innerHTML="Register",nr.innerHTML="Login",or.style.display="block")},rr.onblur=()=>{rr.value=rr.value.trim().toLowerCase()},tr.onclick=()=>{const e=rr.value.trim().toLowerCase();if(e.length<4||e.length>20)return void i("The username must have 4 to 20 characters.");if(!/^[\-a-z0-9]+$/.test(e))return void i("The username must contain only hyphens, a-z, 0-9");const t=ir.value;if(t.length<8||t.length>30)i("The password must have 8 to 30 characters.");else if("Register"===er.innerHTML){if(t!==or.value)return void i("Confirm password does not match.");l(11,[e,t]).then((e=>{E.set("__secrets_",x=e),Xn()})).catch((e=>{i("Error: Failed to register. Message: "+e)}))}else l(10,[e,t]).then((e=>{E.set("__secrets_",x=e),Xn()})).catch((e=>{i("Error: Failed to login. Message: "+e)}))},n("login-google").onclick=()=>{const t=e.open(void 0,"_blank","width="+screen.availWidth+",height="+screen.availHeight+",left=0,top=0,popup");if(null==t)return void i("Please allow popups in your browser settings and try again.");t.stop(),t.focus();const n=new URLSearchParams;n.set("client_id","176227430389-qkdboctmfhe9jnvnk2vmarafc5p8amuf.apps.googleusercontent.com"),n.set("redirect_uri",e.origin+"/auth.xht"),n.set("response_type","token"),n.set("state","12"),n.set("scope","email profile"),n.set("include_granted_scopes","true"),n.set("enable_granular_consent","true"),t.location.replace("https://accounts.google.com/o/oauth2/v2/auth?"+n.toString())};{const ar=e=>{(e=new URLSearchParams(e).get("access_token")||"").length>0&&l(0,e).then((e=>{E.set("__secrets_",x=e),Xn()})).catch((e=>{i("Failed to retrieve login tokens. Message: "+String(e))}))},cr=E.get("_cre_");null==cr?e.addEventListener("message",(t=>{if(t.origin===e.origin){const e=t.data;"string"==typeof e&&e.length>0&&ar(e)}}),{once:!1,passive:!0}):(ar(cr),E.delete("_cre_"))}}else await Xn()}})(window)})(); \ No newline at end of file diff --git a/manifest.json b/manifest.json index 309053ce..4f96a423 100644 --- a/manifest.json +++ b/manifest.json @@ -1,10 +1,10 @@ { "id": "whitespider", "name": "WhiteSpider", - "version": "4.6.5", + "version": "4.6.6", "short_name": "WhiteSpider", "categories": ["games"], - "description": "Play 2000+ free online classic, HTML5, DOS, Flash, games at WhiteSpider. Free online games; Free unblocked games; Unblocked YouTube; Unblocked ChatGPT; ", + "description": "Play 2000+ free online classic, HTML5, DOS, Flash, games at WhiteSpider!", "scope": "/", "display": "fullscreen", "start_url": "/", diff --git a/res/edit-w.svg b/res/edit-w.svg new file mode 100644 index 00000000..ba6ee6e1 --- /dev/null +++ b/res/edit-w.svg @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/sitemap.txt b/sitemap.txt index 4cbb7b73..5f3f0fd3 100644 --- a/sitemap.txt +++ b/sitemap.txt @@ -43,9 +43,9 @@ https://whitespider.dev/g/lcgyaqgk https://whitespider.dev/g/luct7aoa https://whitespider.dev/g/lu01nu8b https://whitespider.dev/g/lubgbfcs -https://whitespider.dev/g/luct7aoa -https://whitespider.dev/g/luct7aoa -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/luctznz4 +https://whitespider.dev/g/luctem3b +https://whitespider.dev/g/lucti40f https://whitespider.dev/g/l9t5dxeb https://whitespider.dev/g/lr9ju5kn https://whitespider.dev/g/ljim726s @@ -60,41 +60,41 @@ https://whitespider.dev/g/lbcq9ab8 https://whitespider.dev/g/lk39fd8l https://whitespider.dev/g/lttde6tk https://whitespider.dev/g/l7uouvlg -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/lucu8txj https://whitespider.dev/g/l6mgf824 -https://whitespider.dev/g/luct7aoa -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/lucurzmq +https://whitespider.dev/g/lucv0xqa https://whitespider.dev/g/ljavfosf -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/lucu8bfj https://whitespider.dev/g/ltby6f7y https://whitespider.dev/g/lthf7kqw https://whitespider.dev/g/lt9nhfjy https://whitespider.dev/g/lml87r32 -https://whitespider.dev/g/luct7aoa -https://whitespider.dev/g/luct7aoa -https://whitespider.dev/g/luct7aoa -https://whitespider.dev/g/luct7aoa -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/lucu0xyo +https://whitespider.dev/g/luctiq4d +https://whitespider.dev/g/lucuxogf +https://whitespider.dev/g/lucuvhcl +https://whitespider.dev/g/lucup4vc https://whitespider.dev/g/lu8pqerb -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/lucu3p6j https://whitespider.dev/g/lu0xq210 https://whitespider.dev/g/lonl82tq https://whitespider.dev/g/lteh5k51 -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/lucuqtfl https://whitespider.dev/g/ltg2jvce -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/lucty83e https://whitespider.dev/g/ltefwll1 https://whitespider.dev/g/lu3a836a https://whitespider.dev/g/lu0n4tqj https://whitespider.dev/g/ltmno6sp -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/luctauut https://whitespider.dev/g/lu9v4ic0 -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/luctlp2h https://whitespider.dev/g/ltrrozrg -https://whitespider.dev/g/luct7aoa -https://whitespider.dev/g/luct7aoa -https://whitespider.dev/g/luct7aoa -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/lucuzjnv +https://whitespider.dev/g/lucu0ffl +https://whitespider.dev/g/lucu04vu +https://whitespider.dev/g/lucuqcan https://whitespider.dev/g/ltglf8bl https://whitespider.dev/g/lu4td3l7 https://whitespider.dev/g/ltk0eove @@ -620,7 +620,7 @@ https://whitespider.dev/g/ltyq22um https://whitespider.dev/g/lkk5h8vq https://whitespider.dev/g/ltfvh6rl https://whitespider.dev/g/lu1bo6q9 -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/luctrotr https://whitespider.dev/g/lvap5xl3 https://whitespider.dev/g/lvapcx2k https://whitespider.dev/g/lvapff9z @@ -849,7 +849,7 @@ https://whitespider.dev/g/lu2vq2wf https://whitespider.dev/g/lu5bxpp7 https://whitespider.dev/g/lvggeowa https://whitespider.dev/g/lvgggy3w -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/luctx6gn https://whitespider.dev/g/lugrwe52 https://whitespider.dev/g/lvht4shn https://whitespider.dev/g/lvht71hv @@ -2070,8 +2070,8 @@ https://whitespider.dev/g/lu0k48tc https://whitespider.dev/g/ltwoyvzp https://whitespider.dev/g/lubkbhp0 https://whitespider.dev/g/ltuzjzci -https://whitespider.dev/g/luct7aoa -https://whitespider.dev/g/luct7aoa +https://whitespider.dev/g/lucuo9mi +https://whitespider.dev/g/lucu8avd https://whitespider.dev/g/ludx2n4f https://whitespider.dev/g/lma42ags https://whitespider.dev/g/lugqp23s