diff --git a/code/Adapter.ts b/code/Adapter.ts index 9ae539d..f06beab 100644 --- a/code/Adapter.ts +++ b/code/Adapter.ts @@ -46,7 +46,7 @@ export abstract class ClientAdapter { export abstract class ServerAdapter { /** Ensure returns a promise that resolves once fully connected to a server. */ - abstract prepare(): Promise; + abstract prepare(runtimeScene: gdjs.RuntimeScene): Promise; /** Called when the adapter is no longer needed to gracefully shutdown. */ abstract close(): void; diff --git a/code/adapters/geckos-client.ts b/code/adapters/geckos-client.ts index d4e3858..68ce18b 100644 --- a/code/adapters/geckos-client.ts +++ b/code/adapters/geckos-client.ts @@ -1,9 +1,10 @@ /// import { geckos, type ClientChannel } from "@geckos.io/client"; - const logger = new gdjs.Logger("THNK - Geckos.io Adapter"); -export class GeckosClientAdapter extends THNK.ClientAdapter { +THNK.GeckosClientAdapter = class GeckosClientAdapter extends ( + THNK.ClientAdapter +) { ip: string; port: number; connection: ClientChannel | null = null; @@ -41,4 +42,4 @@ export class GeckosClientAdapter extends THNK.ClientAdapter { message.buffer.slice(message.buffer.byteLength - message.byteLength) ); } -} +}; diff --git a/code/adapters/geckos-server.ts b/code/adapters/geckos-server.ts index de7e58f..b44e6a9 100644 --- a/code/adapters/geckos-server.ts +++ b/code/adapters/geckos-server.ts @@ -1,21 +1,25 @@ /// -import { - geckos, - iceServers, - type GeckosServer, - type ServerChannel, +import type { + geckos as GeckosType, + GeckosServer, + ServerChannel, } from "@geckos.io/server"; +import { async as StreamZip } from "node-stream-zip"; +import { FollowResponse, wrap } from "follow-redirects"; const getSomeNums = () => Math.random() .toFixed(Math.ceil(Math.random() * 6) + 2) .slice(2); -export class GeckosClientAdapter extends THNK.ServerAdapter { +THNK.GeckosServerAdapter = class GeckosServerAdapter extends ( + THNK.ServerAdapter +) { ip: string; port: number; id = 0; server: GeckosServer | null = null; + httpServer: import("http").Server | null = null; channels = new Map(); constructor(ip: string, port: number) { super(); @@ -23,8 +27,61 @@ export class GeckosClientAdapter extends THNK.ServerAdapter { this.port = port; } - async prepare(): Promise { - this.server = geckos({ iceServers, label: "THNK" }); + async prepare(runtimeScene: gdjs.RuntimeScene): Promise { + const electronRemote = runtimeScene + .getGame() + .getRenderer() + .getElectronRemote(); + + if (!electronRemote) { + throw new Error( + "The game does not seem to be running on a desktop, impossible to launch geckos server!" + ); + } + + const electronRequire = electronRemote.require as ( + moduleNameOrPath: string + ) => any; + + let geckos: typeof GeckosType | undefined; + if (!runtimeScene.getGame().isPreview()) { + geckos = electronRequire("@geckos.io/server").geckos as typeof GeckosType; + } else { + // On previews we need to download a prebuilt version of the module as it is not pre-installed + const fs = electronRequire("fs") as typeof import("fs"); + if (!fs.existsSync("./geckos-server")) { + console.info(`Geckos server not found, downloading it now!`); + + const { + https: { get }, + } = wrap({ https: electronRequire("https") as typeof import("https") }); + const { pipeline } = electronRequire( + "stream/promises" + ) as typeof import("stream/promises"); + + const response = (await new Promise((r) => + get( + "https://s3.arthuro555.com/geckos-server-electron.zip", + (response) => r(response as FollowResponse & NodeJS.ReadStream) + ) + )) as NodeJS.ReadStream; + + await pipeline(response, fs.createWriteStream("./geckos-server.zip")); + + const zip = new StreamZip({ file: "./geckos-server.zip" }); + + fs.mkdirSync("./geckos-server"); + await zip.extract(null, "./geckos-server"); + + await zip.close(); + } + geckos = electronRequire( + process.cwd() + "/geckos-server/index.js" + ).geckos; + } + if (!geckos) throw new Error("Geckos not found!"); + + this.server = geckos({ label: "THNK" }); this.server.onConnection((channel) => { // Generate a simple ID that is certainly unique, @@ -38,17 +95,33 @@ export class GeckosClientAdapter extends THNK.ServerAdapter { channel.onDisconnect(() => this.onDisconnection(id)); }); - this.server.listen(this.port); + this.httpServer = ( + electronRequire("http") as typeof import("http") + ).createServer(); + this.server.addServer(this.httpServer); + this.httpServer.listen(this.port); + + // Force close the server when closing the preview window + const close = (e: BeforeUnloadEvent) => { + e.returnValue = "false"; + this.close(); + window.removeEventListener("beforeunload", close); + window.close(); + }; + window.addEventListener("beforeunload", close); } close() { - if (this.server) { - // Close the HTTP server - this.server.server.close(); + if (this.server && this.httpServer) { + this.httpServer.close(); + if (this.httpServer.closeAllConnections) + this.httpServer.closeAllConnections(); // Close current connections for (const connection of this.channels.values()) connection.close(); // Clear everything out for GC this.channels.clear(); + // Close the HTTP server + this.httpServer = null; this.server = null; } } @@ -65,4 +138,4 @@ export class GeckosClientAdapter extends THNK.ServerAdapter { getServerID(): string { return `${getSomeNums()}-server-${getSomeNums()}`; } -} +}; diff --git a/code/global.d.ts b/code/global.d.ts index 7707d98..e9e6506 100644 --- a/code/global.d.ts +++ b/code/global.d.ts @@ -1,2 +1,9 @@ export * from "."; +import type { ClientAdapter, ServerAdapter } from "./Adapter"; +export class GeckosClientAdapter extends ClientAdapter { + constructor(ip: string, port: number) {} +} +export class GeckosServerAdapter extends ServerAdapter { + constructor(ip: string, port: number) {} +} export as namespace THNK; diff --git a/code/server/StartServer.ts b/code/server/StartServer.ts index 4650e82..fdb383e 100644 --- a/code/server/StartServer.ts +++ b/code/server/StartServer.ts @@ -14,7 +14,7 @@ export const startServer = async ( // The adapter is responsible for initiating a server on which we can listen to Uint8Arrays from clients. // Once the promise resolves, we assume we are all set to start receiving clients, and begin listening to // incoming messages. - await adapter.prepare(); + await adapter.prepare(runtimeScene); } catch (e) { logger.error("Adapter crashed while starting server! Error: ", e); // Abort server startup diff --git a/extensions/THNK.json b/extensions/THNK.json index 3392f2a..ccb72c1 100644 --- a/extensions/THNK.json +++ b/extensions/THNK.json @@ -37,7 +37,7 @@ "events": [ { "type": "BuiltinCommonInstructions::JsCode", - "inlineCode": "// Load THNK library (https://github.com/arthuro555/THNK)\nwindow.THNK=(()=>{var $e=Object.defineProperty;var Xr=Object.getOwnPropertyDescriptor;var Wr=Object.getOwnPropertyNames;var qr=Object.prototype.hasOwnProperty;var Kr=(t,e)=>{for(var s in e)$e(t,s,{get:e[s],enumerable:!0})},Qr=(t,e,s,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let i of Wr(e))!qr.call(t,i)&&i!==s&&$e(t,i,{get:()=>e[i],enumerable:!(r=Xr(e,i))||r.enumerable});return t};var $r=t=>Qr($e({},\"__esModule\",{value:!0}),t);var Ll={};Kr(Ll,{ClientAdapter:()=>Zl,ServerAdapter:()=>Pl,client:()=>lr,players:()=>tr,server:()=>Zi,settings:()=>er});var Jr=Object.defineProperty,Xe=(t,e)=>{for(var s in e)Jr(t,s,{get:e[s],enumerable:!0})},Zi={};Xe(Zi,{events:()=>Pa,startServer:()=>Za});var xt=new Int32Array(2),Ds=new Float32Array(xt.buffer),Zs=new Float64Array(xt.buffer),je=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1,ps;(function(t){t[t.UTF8_BYTES=1]=\"UTF8_BYTES\",t[t.UTF16_STRING=2]=\"UTF16_STRING\"})(ps||(ps={}));var ue=class{constructor(t){this.bytes_=t,this.position_=0,this.text_decoder_=new TextDecoder}static allocate(t){return new ue(new Uint8Array(t))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(t){this.position_=t}capacity(){return this.bytes_.length}readInt8(t){return this.readUint8(t)<<24>>24}readUint8(t){return this.bytes_[t]}readInt16(t){return this.readUint16(t)<<16>>16}readUint16(t){return this.bytes_[t]|this.bytes_[t+1]<<8}readInt32(t){return this.bytes_[t]|this.bytes_[t+1]<<8|this.bytes_[t+2]<<16|this.bytes_[t+3]<<24}readUint32(t){return this.readInt32(t)>>>0}readInt64(t){return BigInt.asIntN(64,BigInt(this.readUint32(t))+(BigInt(this.readUint32(t+4))<>8}writeUint16(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8}writeInt32(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24}writeUint32(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24}writeInt64(t,e){this.writeInt32(t,Number(BigInt.asIntN(32,e))),this.writeInt32(t+4,Number(BigInt.asIntN(32,e>>BigInt(32))))}writeUint64(t,e){this.writeUint32(t,Number(BigInt.asUintN(32,e))),this.writeUint32(t+4,Number(BigInt.asUintN(32,e>>BigInt(32))))}writeFloat32(t,e){Ds[0]=e,this.writeInt32(t,xt[0])}writeFloat64(t,e){Zs[0]=e,this.writeInt32(t,xt[je?0:1]),this.writeInt32(t+4,xt[je?1:0])}getBufferIdentifier(){if(this.bytes_.lengththis.minalign&&(this.minalign=t);let s=~(this.bb.capacity()-this.space+e)+1&t-1;for(;this.space=0&&this.vtable[e]==0;e--);let s=e+1;for(;e>=0;e--)this.addInt16(this.vtable[e]!=0?t-this.vtable[e]:0);let r=2;this.addInt16(t-this.object_start);let i=(s+r)*2;this.addInt16(i);let a=0,n=this.space;t:for(e=0;e=0;a--)this.writeInt8(i.charCodeAt(a))}this.prep(this.minalign,4+r),this.addOffset(t),r&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(t,e){this.finish(t,e,!0)}requiredField(t,e){let s=this.bb.capacity()-t,r=s-this.bb.readInt32(s);if(this.bb.readInt16(r+e)==0)throw new Error(\"FlatBuffers: field \"+e+\" must be set\")}startVector(t,e,s){this.notNested(),this.vector_num_elems=e,this.prep(4,t*e),this.prep(s,t*e)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(t){if(!t)return 0;if(this.string_maps||(this.string_maps=new Map),this.string_maps.has(t))return this.string_maps.get(t);let e=this.createString(t);return this.string_maps.set(t,e),e}createString(t){if(t==null)return 0;let e;t instanceof Uint8Array?e=t:e=this.text_encoder.encode(t),this.addInt8(0),this.startVector(1,e.length,1),this.bb.setPosition(this.space-=e.length);for(let s=0,r=this.space,i=this.bb.bytes();s=0;s--)t.addInt8(e[s]);return t.endVector()}static startContentVector(t,e){t.startVector(1,e,1)}static endClientInputMessage(t){let e=t.endObject();return t.requiredField(e,4),t.requiredField(e,6),e}static createClientInputMessage(t,e,s){return yt.startClientInputMessage(t),yt.addName(t,e),yt.addContent(t,s),yt.endClientInputMessage(t)}},Ut=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsConnectionRequestMessage(t,e){return(e||new Ut).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsConnectionRequestMessage(t,e){return t.setPosition(t.position()+4),(e||new Ut).__init(t.readInt32(t.position())+t.position(),t)}token(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}static startConnectionRequestMessage(t){t.startObject(1)}static addToken(t,e){t.addFieldOffset(0,e,0)}static endConnectionRequestMessage(t){return t.endObject()}static createConnectionRequestMessage(t,e){return Ut.startConnectionRequestMessage(t),Ut.addToken(t,e),Ut.endConnectionRequestMessage(t)}},vt=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsClientMessage(t,e){return(e||new vt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsClientMessage(t,e){return t.setPosition(t.position()+4),(e||new vt).__init(t.readInt32(t.position())+t.position(),t)}contentType(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint8(this.bb_pos+t):0}content(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__union(t,this.bb_pos+e):null}static startClientMessage(t){t.startObject(2)}static addContentType(t,e){t.addFieldInt8(0,e,0)}static addContent(t,e){t.addFieldOffset(1,e,0)}static endClientMessage(t){let e=t.endObject();return t.requiredField(e,6),e}static createClientMessage(t,e,s){return vt.startClientMessage(t),vt.addContentType(t,e),vt.addContent(t,s),vt.endClientMessage(t)}},D=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsVariable(t,e){return(e||new D).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsVariable(t,e){return t.setPosition(t.position()+4),(e||new D).__init(t.readInt32(t.position())+t.position(),t)}type(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint8(this.bb_pos+t):0}text(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}number(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readFloat32(this.bb_pos+t):0}boolean(){let t=this.bb.__offset(this.bb_pos,10);return t?!!this.bb.readInt8(this.bb_pos+t):!1}operations(t,e){let s=this.bb.__offset(this.bb_pos,12);return s?(e||new Y).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+s)+t*4),this.bb):null}operationsLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}static startVariable(t){t.startObject(5)}static addType(t,e){t.addFieldInt8(0,e,0)}static addText(t,e){t.addFieldOffset(1,e,0)}static addNumber(t,e){t.addFieldFloat32(2,e,0)}static addBoolean(t,e){t.addFieldInt8(3,+e,0)}static addOperations(t,e){t.addFieldOffset(4,e,0)}static createOperationsVector(t,e){t.startVector(4,e.length,4);for(let s=e.length-1;s>=0;s--)t.addOffset(e[s]);return t.endVector()}static startOperationsVector(t,e){t.startVector(4,e,4)}static endVariable(t){return t.endObject()}static createVariable(t,e,s,r,i,a){return D.startVariable(t),D.addType(t,e),D.addText(t,s),D.addNumber(t,r),D.addBoolean(t,i),D.addOperations(t,a),D.endVariable(t)}},Y=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsCollectionOperation(t,e){return(e||new Y).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsCollectionOperation(t,e){return t.setPosition(t.position()+4),(e||new Y).__init(t.readInt32(t.position())+t.position(),t)}operation(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint8(this.bb_pos+t):0}name(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}index(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readUint16(this.bb_pos+t):0}val(t){let e=this.bb.__offset(this.bb_pos,10);return e?(t||new D).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}static startCollectionOperation(t){t.startObject(4)}static addOperation(t,e){t.addFieldInt8(0,e,0)}static addName(t,e){t.addFieldOffset(1,e,0)}static addIndex(t,e){t.addFieldInt16(2,e,0)}static addVal(t,e){t.addFieldOffset(3,e,0)}static endCollectionOperation(t){return t.endObject()}},S=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsObjState(t,e){return(e||new S).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsObjState(t,e){return t.setPosition(t.position()+4),(e||new S).__init(t.readInt32(t.position())+t.position(),t)}x(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readFloat32(this.bb_pos+t):null}y(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readFloat32(this.bb_pos+t):null}height(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readFloat32(this.bb_pos+t):null}width(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readFloat32(this.bb_pos+t):null}angle(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readFloat32(this.bb_pos+t):null}scale(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.readFloat32(this.bb_pos+t):null}setXTo0(){let t=this.bb.__offset(this.bb_pos,16);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setYTo0(){let t=this.bb.__offset(this.bb_pos,18);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setHeightTo0(){let t=this.bb.__offset(this.bb_pos,20);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setWidthTo0(){let t=this.bb.__offset(this.bb_pos,22);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setAngleTo0(){let t=this.bb.__offset(this.bb_pos,24);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setScaleTo0(){let t=this.bb.__offset(this.bb_pos,26);return t?!!this.bb.readInt8(this.bb_pos+t):!1}zOrder(){let t=this.bb.__offset(this.bb_pos,28);return t?this.bb.readUint16(this.bb_pos+t):null}bigZOrder(){let t=this.bb.__offset(this.bb_pos,30);return t?this.bb.readUint32(this.bb_pos+t):null}visible(){let t=this.bb.__offset(this.bb_pos,32);return t?this.bb.readUint8(this.bb_pos+t):null}flippedX(){let t=this.bb.__offset(this.bb_pos,34);return t?this.bb.readUint8(this.bb_pos+t):null}flippedY(){let t=this.bb.__offset(this.bb_pos,36);return t?this.bb.readUint8(this.bb_pos+t):null}opacity(){let t=this.bb.__offset(this.bb_pos,38);return t?this.bb.readUint8(this.bb_pos+t):null}setOpacityTo0(){let t=this.bb.__offset(this.bb_pos,40);return t?!!this.bb.readInt8(this.bb_pos+t):!1}animation(){let t=this.bb.__offset(this.bb_pos,42);return t?this.bb.readUint8(this.bb_pos+t):null}text(t){let e=this.bb.__offset(this.bb_pos,44);return e?this.bb.__string(this.bb_pos+e,t):null}static startObjState(t){t.startObject(21)}static addX(t,e){t.addFieldFloat32(0,e,0)}static addY(t,e){t.addFieldFloat32(1,e,0)}static addHeight(t,e){t.addFieldFloat32(2,e,0)}static addWidth(t,e){t.addFieldFloat32(3,e,0)}static addAngle(t,e){t.addFieldFloat32(4,e,0)}static addScale(t,e){t.addFieldFloat32(5,e,0)}static addSetXTo0(t,e){t.addFieldInt8(6,+e,0)}static addSetYTo0(t,e){t.addFieldInt8(7,+e,0)}static addSetHeightTo0(t,e){t.addFieldInt8(8,+e,0)}static addSetWidthTo0(t,e){t.addFieldInt8(9,+e,0)}static addSetAngleTo0(t,e){t.addFieldInt8(10,+e,0)}static addSetScaleTo0(t,e){t.addFieldInt8(11,+e,0)}static addZOrder(t,e){t.addFieldInt16(12,e,0)}static addBigZOrder(t,e){t.addFieldInt32(13,e,0)}static addVisible(t,e){t.addFieldInt8(14,e,0)}static addFlippedX(t,e){t.addFieldInt8(15,e,0)}static addFlippedY(t,e){t.addFieldInt8(16,e,0)}static addOpacity(t,e){t.addFieldInt8(17,e,0)}static addSetOpacityTo0(t,e){t.addFieldInt8(18,+e,0)}static addAnimation(t,e){t.addFieldInt8(19,e,0)}static addText(t,e){t.addFieldOffset(20,e,0)}static endObjState(t){return t.endObject()}static createObjState(t,e,s,r,i,a,n,o,p,l,d,I,w,_,T,F,j,x,O,y,A,Z){return S.startObjState(t),e!==null&&S.addX(t,e),s!==null&&S.addY(t,s),r!==null&&S.addHeight(t,r),i!==null&&S.addWidth(t,i),a!==null&&S.addAngle(t,a),n!==null&&S.addScale(t,n),S.addSetXTo0(t,o),S.addSetYTo0(t,p),S.addSetHeightTo0(t,l),S.addSetWidthTo0(t,d),S.addSetAngleTo0(t,I),S.addSetScaleTo0(t,w),_!==null&&S.addZOrder(t,_),T!==null&&S.addBigZOrder(t,T),F!==null&&S.addVisible(t,F),j!==null&&S.addFlippedX(t,j),x!==null&&S.addFlippedY(t,x),O!==null&&S.addOpacity(t,O),S.addSetOpacityTo0(t,y),A!==null&&S.addAnimation(t,A),S.addText(t,Z),S.endObjState(t)}},J=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsGameObject(t,e){return(e||new J).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsGameObject(t,e){return t.setPosition(t.position()+4),(e||new J).__init(t.readInt32(t.position())+t.position(),t)}id(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint16(this.bb_pos+t):0}name(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}objState(t){let e=this.bb.__offset(this.bb_pos,8);return e?(t||new S).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}variables(t){let e=this.bb.__offset(this.bb_pos,10);return e?(t||new D).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}packedVariables(t){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}packedVariablesLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}packedVariablesArray(){let t=this.bb.__offset(this.bb_pos,12);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}static startGameObject(t){t.startObject(5)}static addId(t,e){t.addFieldInt16(0,e,0)}static addName(t,e){t.addFieldOffset(1,e,0)}static addObjState(t,e){t.addFieldOffset(2,e,0)}static addVariables(t,e){t.addFieldOffset(3,e,0)}static addPackedVariables(t,e){t.addFieldOffset(4,e,0)}static createPackedVariablesVector(t,e){t.startVector(1,e.length,1);for(let s=e.length-1;s>=0;s--)t.addInt8(e[s]);return t.endVector()}static startPackedVariablesVector(t,e){t.startVector(1,e,1)}static endGameObject(t){return t.endObject()}},st=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsGameStateSnapshot(t,e){return(e||new st).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsGameStateSnapshot(t,e){return t.setPosition(t.position()+4),(e||new st).__init(t.readInt32(t.position())+t.position(),t)}objects(t,e){let s=this.bb.__offset(this.bb_pos,4);return s?(e||new J).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+s)+t*4),this.bb):null}objectsLength(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__vector_len(this.bb_pos+t):0}variables(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}variablesLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}variablesArray(){let t=this.bb.__offset(this.bb_pos,6);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}static startGameStateSnapshot(t){t.startObject(2)}static addObjects(t,e){t.addFieldOffset(0,e,0)}static createObjectsVector(t,e){t.startVector(4,e.length,4);for(let s=e.length-1;s>=0;s--)t.addOffset(e[s]);return t.endVector()}static startObjectsVector(t,e){t.startVector(4,e,4)}static addVariables(t,e){t.addFieldOffset(1,e,0)}static createVariablesVector(t,e){t.startVector(1,e.length,1);for(let s=e.length-1;s>=0;s--)t.addInt8(e[s]);return t.endVector()}static startVariablesVector(t,e){t.startVector(1,e,1)}static endGameStateSnapshot(t){return t.endObject()}static createGameStateSnapshot(t,e,s){return st.startGameStateSnapshot(t),st.addObjects(t,e),st.addVariables(t,s),st.endGameStateSnapshot(t)}},Dt=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsConnectionStartMessage(t,e){return(e||new Dt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsConnectionStartMessage(t,e){return t.setPosition(t.position()+4),(e||new Dt).__init(t.readInt32(t.position())+t.position(),t)}sceneName(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}sceneSnapshot(t){let e=this.bb.__offset(this.bb_pos,6);return e?(t||new st).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}static startConnectionStartMessage(t){t.startObject(2)}static addSceneName(t,e){t.addFieldOffset(0,e,0)}static addSceneSnapshot(t,e){t.addFieldOffset(1,e,0)}static endConnectionStartMessage(t){let e=t.endObject();return t.requiredField(e,4),t.requiredField(e,6),e}},jt=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsCreatedObject(t,e){return(e||new jt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsCreatedObject(t,e){return t.setPosition(t.position()+4),(e||new jt).__init(t.readInt32(t.position())+t.position(),t)}id(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint16(this.bb_pos+t):0}name(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}static startCreatedObject(t){t.startObject(2)}static addId(t,e){t.addFieldInt16(0,e,0)}static addName(t,e){t.addFieldOffset(1,e,0)}static endCreatedObject(t){let e=t.endObject();return t.requiredField(e,6),e}static createCreatedObject(t,e,s){return jt.startCreatedObject(t),jt.addId(t,e),jt.addName(t,s),jt.endCreatedObject(t)}},nt=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsGameStateDiff(t,e){return(e||new nt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsGameStateDiff(t,e){return t.setPosition(t.position()+4),(e||new nt).__init(t.readInt32(t.position())+t.position(),t)}objects(t,e){let s=this.bb.__offset(this.bb_pos,4);return s?(e||new J).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+s)+t*4),this.bb):null}objectsLength(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__vector_len(this.bb_pos+t):0}createdObjects(t,e){let s=this.bb.__offset(this.bb_pos,6);return s?(e||new jt).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+s)+t*4),this.bb):null}createdObjectsLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}deletedObjects(t){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint16(this.bb.__vector(this.bb_pos+e)+t*2):0}deletedObjectsLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}deletedObjectsArray(){let t=this.bb.__offset(this.bb_pos,8);return t?new Uint16Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}variables(t){let e=this.bb.__offset(this.bb_pos,10);return e?(t||new D).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}static startGameStateDiff(t){t.startObject(4)}static addObjects(t,e){t.addFieldOffset(0,e,0)}static createObjectsVector(t,e){t.startVector(4,e.length,4);for(let s=e.length-1;s>=0;s--)t.addOffset(e[s]);return t.endVector()}static startObjectsVector(t,e){t.startVector(4,e,4)}static addCreatedObjects(t,e){t.addFieldOffset(1,e,0)}static createCreatedObjectsVector(t,e){t.startVector(4,e.length,4);for(let s=e.length-1;s>=0;s--)t.addOffset(e[s]);return t.endVector()}static startCreatedObjectsVector(t,e){t.startVector(4,e,4)}static addDeletedObjects(t,e){t.addFieldOffset(2,e,0)}static createDeletedObjectsVector(t,e){t.startVector(2,e.length,2);for(let s=e.length-1;s>=0;s--)t.addInt16(e[s]);return t.endVector()}static startDeletedObjectsVector(t,e){t.startVector(2,e,2)}static addVariables(t,e){t.addFieldOffset(3,e,0)}static endGameStateDiff(t){return t.endObject()}},Nt=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsGameStateUpdateMessage(t,e){return(e||new Nt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsGameStateUpdateMessage(t,e){return t.setPosition(t.position()+4),(e||new Nt).__init(t.readInt32(t.position())+t.position(),t)}newState(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new nt).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}static startGameStateUpdateMessage(t){t.startObject(1)}static addNewState(t,e){t.addFieldOffset(0,e,0)}static endGameStateUpdateMessage(t){let e=t.endObject();return t.requiredField(e,4),e}static createGameStateUpdateMessage(t,e){return Nt.startGameStateUpdateMessage(t),Nt.addNewState(t,e),Nt.endGameStateUpdateMessage(t)}},dt=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsResumePreviousSceneMessage(t,e){return(e||new dt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsResumePreviousSceneMessage(t,e){return t.setPosition(t.position()+4),(e||new dt).__init(t.readInt32(t.position())+t.position(),t)}snapshot(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new st).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}name(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}static startResumePreviousSceneMessage(t){t.startObject(2)}static addSnapshot(t,e){t.addFieldOffset(0,e,0)}static addName(t,e){t.addFieldOffset(1,e,0)}static endResumePreviousSceneMessage(t){return t.endObject()}static createResumePreviousSceneMessage(t,e,s){return dt.startResumePreviousSceneMessage(t),dt.addSnapshot(t,e),dt.addName(t,s),dt.endResumePreviousSceneMessage(t)}},ht=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsSceneSwitchMessage(t,e){return(e||new ht).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsSceneSwitchMessage(t,e){return t.setPosition(t.position()+4),(e||new ht).__init(t.readInt32(t.position())+t.position(),t)}sceneName(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}isPause(){let t=this.bb.__offset(this.bb_pos,6);return t?!!this.bb.readInt8(this.bb_pos+t):!1}static startSceneSwitchMessage(t){t.startObject(2)}static addSceneName(t,e){t.addFieldOffset(0,e,0)}static addIsPause(t,e){t.addFieldInt8(1,+e,0)}static endSceneSwitchMessage(t){let e=t.endObject();return t.requiredField(e,4),e}static createSceneSwitchMessage(t,e,s){return ht.startSceneSwitchMessage(t),ht.addSceneName(t,e),ht.addIsPause(t,s),ht.endSceneSwitchMessage(t)}},ct=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsServerMessage(t,e){return(e||new ct).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsServerMessage(t,e){return t.setPosition(t.position()+4),(e||new ct).__init(t.readInt32(t.position())+t.position(),t)}contentType(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint8(this.bb_pos+t):0}content(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__union(t,this.bb_pos+e):null}static startServerMessage(t){t.startObject(2)}static addContentType(t,e){t.addFieldInt8(0,e,0)}static addContent(t,e){t.addFieldOffset(1,e,0)}static endServerMessage(t){let e=t.endObject();return t.requiredField(e,6),e}static createServerMessage(t,e,s){return ct.startServerMessage(t),ct.addContentType(t,e),ct.addContent(t,s),ct.endServerMessage(t)}},gs;try{gs=new TextDecoder}catch{}var v,Ot,h=0,it={},B,Tt,lt=0,pt=0,K,It,at=[],E,Ps={useRecords:!1,mapsAsObjects:!0},Pi=class{},Li=new Pi;Li.name=\"MessagePack 0xC1\";var te=!1,Hi=2;try{new Function(\"\")}catch{Hi=1/0}var Ze=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.sequential&&t.trusted!==!1&&(t.trusted=!0,!t.structures&&t.useRecords!=!1&&(t.structures=[],t.maxSharedStructures||(t.maxSharedStructures=0))),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(v)return qi(()=>(ms(),this?this.unpack(t,e):Ze.prototype.unpack.call(Ps,t,e)));Ot=e>-1?e:t.length,h=0,pt=0,Tt=null,K=null,v=t;try{E=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(s){throw v=null,t instanceof Uint8Array?s:new Error(\"Source must be a Uint8Array or Buffer but was a \"+(t&&typeof t==\"object\"?t.constructor.name:typeof t))}if(this instanceof Ze){if(it=this,this.structures)return B=this.structures,Ue();(!B||B.length>0)&&(B=[])}else it=Ps,(!B||B.length>0)&&(B=[]);return Ue()}unpackMultiple(t,e){let s,r=0;try{te=!0;let i=t.length,a=this?this.unpack(t,i):Ki.unpack(t,i);if(e){for(e(a);h=32&&(i.highByte=s-32>>5))}t.sharedLength=t.length;for(let s in e||[])if(s>=0){let r=t[s],i=e[s];i&&(r&&((t.restoreStructures||(t.restoreStructures=[]))[s]=r),t[s]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Ue(){try{if(!it.trusted&&!te){let e=B.sharedLength||0;eOt)throw new Error(\"Unexpected end of MessagePack data\");if(!te)throw new Error(\"Data read, but end of buffer not reached \"+JSON.stringify(t).slice(0,100))}return t}catch(t){throw B.restoreStructures&&Ls(),ms(),(t instanceof RangeError||t.message.startsWith(\"Unexpected end of buffer\")||h>Ot)&&(t.incomplete=!0),t}}function Ls(){for(let t in B.restoreStructures)B[t]=B.restoreStructures[t];B.restoreStructures=null}function G(){let t=v[h++];if(t<160)if(t<128){if(t<64)return t;{let e=B[t&63]||it.getStructures&&Gi()[t&63];return e?(e.read||(e.read=js(e,t&63)),e.read()):t}}else if(t<144)if(t-=128,it.mapsAsObjects){let e={};for(let s=0;s=h)return Tt.slice(h-lt,(h+=e)-lt);if(pt==0&&Ot<140){let s=e<16?Us(e):Yi(e);if(s!=null)return s}return ws(e)}else{let e;switch(t){case 192:return null;case 193:return K?(e=G(),e>0?K[1].slice(K.position1,K.position1+=e):K[0].slice(K.position0,K.position0-=e)):Li;case 194:return!1;case 195:return!0;case 196:if(e=v[h++],e===void 0)throw new Error(\"Unexpected end of buffer\");return Je(e);case 197:return e=E.getUint16(h),h+=2,Je(e);case 198:return e=E.getUint32(h),h+=4,Je(e);case 199:return Bt(v[h++]);case 200:return e=E.getUint16(h),h+=2,Bt(e);case 201:return e=E.getUint32(h),h+=4,Bt(e);case 202:if(e=E.getFloat32(h),it.useFloat32>2){let s=Fs[(v[h]&127)<<1|v[h+1]>>7];return h+=4,(s*e+(e>0?.5:-.5)>>0)/s}return h+=4,e;case 203:return e=E.getFloat64(h),h+=8,e;case 204:return v[h++];case 205:return e=E.getUint16(h),h+=2,e;case 206:return e=E.getUint32(h),h+=4,e;case 207:return it.int64AsNumber?(e=E.getUint32(h)*4294967296,e+=E.getUint32(h+4)):e=E.getBigUint64(h),h+=8,e;case 208:return E.getInt8(h++);case 209:return e=E.getInt16(h),h+=2,e;case 210:return e=E.getInt32(h),h+=4,e;case 211:return it.int64AsNumber?(e=E.getInt32(h)*4294967296,e+=E.getUint32(h+4)):e=E.getBigInt64(h),h+=8,e;case 212:if(e=v[h++],e==114)return qs(v[h++]&63);{let s=at[e];if(s)return s.read?(h++,s.read(G())):s.noBuffer?(h++,s()):s(v.subarray(h,++h));throw new Error(\"Unknown extension \"+e)}case 213:return e=v[h],e==114?(h++,qs(v[h++]&63,v[h++])):Bt(2);case 214:return Bt(4);case 215:return Bt(8);case 216:return Bt(16);case 217:return e=v[h++],pt>=h?Tt.slice(h-lt,(h+=e)-lt):ea(e);case 218:return e=E.getUint16(h),h+=2,pt>=h?Tt.slice(h-lt,(h+=e)-lt):sa(e);case 219:return e=E.getUint32(h),h+=4,pt>=h?Tt.slice(h-lt,(h+=e)-lt):ia(e);case 220:return e=E.getUint16(h),h+=2,Gs(e);case 221:return e=E.getUint32(h),h+=4,Gs(e);case 222:return e=E.getUint16(h),h+=2,Ys(e);case 223:return e=E.getUint32(h),h+=4,Ys(e);default:if(t>=224)return t-256;if(t===void 0){let s=new Error(\"Unexpected end of MessagePack data\");throw s.incomplete=!0,s}throw new Error(\"Unknown MessagePack token \"+t)}}}var ta=/^[a-zA-Z_$][a-zA-Z\\d_$]*$/;function js(t,e){function s(){if(s.count++>Hi){let i=t.read=new Function(\"r\",\"return function(){return {\"+t.map(a=>a===\"__proto__\"?\"__proto_:r()\":ta.test(a)?a+\":r()\":\"[\"+JSON.stringify(a)+\"]:r()\").join(\",\")+\"}}\")(G);return t.highByte===0&&(t.read=Hs(e,t.read)),i()}let r={};for(let i=0,a=t.length;ifunction(){let s=v[h++];if(s===0)return e();let r=t<32?-(t+(s<<5)):t+(s<<5),i=B[r]||Gi()[r];if(!i)throw new Error(\"Record id is not defined for \"+r);return i.read||(i.read=js(i,t)),i.read()};function Gi(){let t=qi(()=>(v=null,it.getStructures()));return B=it._mergeStructures(t,B)}var ws=ke,ea=ke,sa=ke,ia=ke;function ke(t){let e;if(t<16&&(e=Us(t)))return e;if(t>64&&gs)return gs.decode(v.subarray(h,h+=t));let s=h+t,r=[];for(e=\"\";h65535&&(p-=65536,r.push(p>>>10&1023|55296),p=56320|p&1023),r.push(p)}else r.push(i);r.length>=4096&&(e+=W.apply(String,r),r.length=0)}return r.length>0&&(e+=W.apply(String,r)),e}function Gs(t){let e=new Array(t);for(let s=0;s0){h=e;return}s[r]=i}return W.apply(String,s)}function Us(t){if(t<4)if(t<2){if(t===0)return\"\";{let e=v[h++];if((e&128)>1){h-=1;return}return W(e)}}else{let e=v[h++],s=v[h++];if((e&128)>0||(s&128)>0){h-=2;return}if(t<3)return W(e,s);let r=v[h++];if((r&128)>0){h-=3;return}return W(e,s,r)}else{let e=v[h++],s=v[h++],r=v[h++],i=v[h++];if((e&128)>0||(s&128)>0||(r&128)>0||(i&128)>0){h-=4;return}if(t<6){if(t===4)return W(e,s,r,i);{let a=v[h++];if((a&128)>0){h-=5;return}return W(e,s,r,i,a)}}else if(t<8){let a=v[h++],n=v[h++];if((a&128)>0||(n&128)>0){h-=6;return}if(t<7)return W(e,s,r,i,a,n);let o=v[h++];if((o&128)>0){h-=7;return}return W(e,s,r,i,a,n,o)}else{let a=v[h++],n=v[h++],o=v[h++],p=v[h++];if((a&128)>0||(n&128)>0||(o&128)>0||(p&128)>0){h-=8;return}if(t<10){if(t===8)return W(e,s,r,i,a,n,o,p);{let l=v[h++];if((l&128)>0){h-=9;return}return W(e,s,r,i,a,n,o,p,l)}}else if(t<12){let l=v[h++],d=v[h++];if((l&128)>0||(d&128)>0){h-=10;return}if(t<11)return W(e,s,r,i,a,n,o,p,l,d);let I=v[h++];if((I&128)>0){h-=11;return}return W(e,s,r,i,a,n,o,p,l,d,I)}else{let l=v[h++],d=v[h++],I=v[h++],w=v[h++];if((l&128)>0||(d&128)>0||(I&128)>0||(w&128)>0){h-=12;return}if(t<14){if(t===12)return W(e,s,r,i,a,n,o,p,l,d,I,w);{let _=v[h++];if((_&128)>0){h-=13;return}return W(e,s,r,i,a,n,o,p,l,d,I,w,_)}}else{let _=v[h++],T=v[h++];if((_&128)>0||(T&128)>0){h-=14;return}if(t<15)return W(e,s,r,i,a,n,o,p,l,d,I,w,_,T);let F=v[h++];if((F&128)>0){h-=15;return}return W(e,s,r,i,a,n,o,p,l,d,I,w,_,T,F)}}}}}function Xs(){let t=v[h++],e;if(t<192)e=t-160;else switch(t){case 217:e=v[h++];break;case 218:e=E.getUint16(h),h+=2;break;case 219:e=E.getUint32(h),h+=4;break;default:throw new Error(\"Expected string\")}return ke(e)}function Je(t){return it.copyBuffers?Uint8Array.prototype.slice.call(v,h,h+=t):v.subarray(h,h+=t)}function Bt(t){let e=v[h++];if(at[e])return at[e](v.subarray(h,h+=t));throw new Error(\"Unknown extension type \"+e)}var Ws=new Array(4096);function Xi(){let t=v[h++];if(t>=160&&t<192){if(t=t-160,pt>=h)return Tt.slice(h-lt,(h+=t)-lt);if(!(pt==0&&Ot<180))return ws(t)}else return h--,G();let e=(t<<5^(t>1?E.getUint16(h):t>0?v[h]:0))&4095,s=Ws[e],r=h,i=h+t-3,a,n=0;if(s&&s.bytes==t){for(;r{var s=G();let r=t;e!==void 0&&(t=t<32?-((e<<5)+t):(e<<5)+t,s.highByte=e);let i=B[t];return i&&i.isShared&&((B.restoreStructures||(B.restoreStructures=[]))[t]=i),B[t]=s,s.read=js(s,r),s.read()};at[0]=()=>{};at[0].noBuffer=!0;at[101]=()=>{let t=G();return(globalThis[t[0]]||Error)(t[1])};at[105]=t=>{let e=E.getUint32(h-4);It||(It=new Map);let s=v[h],r;s>=144&&s<160||s==220||s==221?r=[]:r={};let i={target:r};It.set(e,i);let a=G();return i.used?Object.assign(r,a):(i.target=a,a)};at[112]=t=>{let e=E.getUint32(h-4),s=It.get(e);return s.used=!0,s.target};at[115]=()=>new Set(G());var Wi=[\"Int8\",\"Uint8\",\"Uint8Clamped\",\"Int16\",\"Uint16\",\"Int32\",\"Uint32\",\"Float32\",\"Float64\",\"BigInt64\",\"BigUint64\"].map(t=>t+\"Array\");at[116]=t=>{let e=t[0],s=Wi[e];if(!s)throw new Error(\"Could not find typed array for code \"+e);return new globalThis[s](Uint8Array.prototype.slice.call(t,1).buffer)};at[120]=()=>{let t=G();return new RegExp(t[0],t[1])};var ra=[];at[98]=t=>{let e=(t[0]<<24)+(t[1]<<16)+(t[2]<<8)+t[3],s=h;return h+=e-t.length,K=ra,K=[Xs(),Xs()],K.position0=0,K.position1=0,K.postBundlePosition=h,h=s,G()};at[255]=t=>t.length==4?new Date((t[0]*16777216+(t[1]<<16)+(t[2]<<8)+t[3])*1e3):t.length==8?new Date(((t[0]<<22)+(t[1]<<14)+(t[2]<<6)+(t[3]>>2))/1e6+((t[3]&3)*4294967296+t[4]*16777216+(t[5]<<16)+(t[6]<<8)+t[7])*1e3):t.length==12?new Date(((t[0]<<24)+(t[1]<<16)+(t[2]<<8)+t[3])/1e6+((t[4]&128?-281474976710656:0)+t[6]*1099511627776+t[7]*4294967296+t[8]*16777216+(t[9]<<16)+(t[10]<<8)+t[11])*1e3):new Date(\"invalid\");function qi(t){let e=Ot,s=h,r=lt,i=pt,a=Tt,n=It,o=K,p=new Uint8Array(v.slice(0,Ot)),l=B,d=B.slice(0,B.length),I=it,w=te,_=t();return Ot=e,h=s,lt=r,pt=i,Tt=a,It=n,K=o,v=p,te=w,B=l,B.splice(0,B.length,...d),it=I,E=new DataView(v.buffer,v.byteOffset,v.byteLength),_}function ms(){v=null,It=null,B=null}var Fs=new Array(147);for(let t=0;t<256;t++)Fs[t]=+(\"1e\"+Math.floor(45.15-t*.30103));var Ki=new Ze({useRecords:!1}),aa=Ki.unpack,Ve;try{Ve=new TextEncoder}catch{}var ys,Qi,We=typeof Buffer<\"u\",Fe=We?function(t){return Buffer.allocUnsafeSlow(t)}:Uint8Array,$i=We?Buffer:Uint8Array,Ks=We?4294967296:2144337920,u,ae,H,c=0,tt,X=null,na=61440,oa=/[\\u0080-\\uFFFF]/,qt=Symbol(\"record-id\"),la=class extends Ze{constructor(t){super(t),this.offset=0;let e,s,r,i,a=0,n=$i.prototype.utf8Write?function(b,k){return u.utf8Write(b,k,4294967295)}:Ve&&Ve.encodeInto?function(b,k){return Ve.encodeInto(b,u.subarray(k)).written}:!1,o=this;t||(t={});let p=t&&t.sequential,l=t.structures||t.saveStructures,d=t.maxSharedStructures;if(d==null&&(d=l?32:0),d>8160)throw new Error(\"Maximum maxSharedStructure is 8160\");t.structuredClone&&t.moreTypes==null&&(t.moreTypes=!0);let I=t.maxOwnStructures;I==null&&(I=l?32:64),!this.structures&&t.useRecords!=!1&&(this.structures=[]);let w=d>32||I+d>64,_=d+64,T=d+I+64;if(T>8256)throw new Error(\"Maximum maxSharedStructure + maxOwnStructure is 8192\");let F=[],j=0,x=0;this.pack=this.encode=function(b,k){if(u||(u=new Fe(8192),H=new DataView(u.buffer,0,8192),c=0),tt=u.length-10,tt-c<2048?(u=new Fe(u.length),H=new DataView(u.buffer,0,u.length),tt=u.length-10,c=0):c=c+7&2147483640,e=c,i=o.structuredClone?new Map:null,o.bundleStrings&&typeof b!=\"string\"?(X=[],X.size=1/0):X=null,r=o.structures,r){r.uninitialized&&(r=o._mergeStructures(o.getStructures()));let f=r.sharedLength||0;if(f>d)throw new Error(\"Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to \"+r.sharedLength);if(!r.transitions){r.transitions=Object.create(null);for(let g=0;gtt&&A(c),o.offset=c;let f=ha(u.subarray(e,c),i.idsToInsert);return i=null,f}return k&ua?(u.start=e,u.end=c,u):u.subarray(e,c)}finally{if(r){x<10&&x++;let f=r.sharedLength||d;if(r.length>f&&(r.length=f),j>1e4)r.transitions=null,x=0,j=0,F.length>0&&(F=[]);else if(F.length>0&&!p){for(let g=0,m=F.length;g{c>tt&&(u=A(c));var k=typeof b,f;if(k===\"string\"){let g=b.length;if(X&&g>=4&&g<4096){if((X.size+=g)>na){let U,L=(X[0]?X[0].length*3+X[1].length:0)+10;c+L>tt&&(u=A(c+L)),X.position?(u[c]=200,c+=3,u[c++]=98,U=c-e,c+=4,Js(e,O),H.setUint16(U+e-3,c-e-U)):(u[c++]=214,u[c++]=98,U=c-e,c+=4),X=[\"\",\"\"],X.size=0,X.position=U}let C=oa.test(b);X[C?0:1]+=b,u[c++]=193,O(C?-g:g);return}let m;g<32?m=1:g<256?m=2:g<65536?m=3:m=5;let z=g*3;if(c+z>tt&&(u=A(c+z)),g<64||!n){let C,U,L,N=c+m;for(C=0;C>6|192,u[N++]=U&63|128):(U&64512)===55296&&((L=b.charCodeAt(C+1))&64512)===56320?(U=65536+((U&1023)<<10)+(L&1023),C++,u[N++]=U>>18|240,u[N++]=U>>12&63|128,u[N++]=U>>6&63|128,u[N++]=U&63|128):(u[N++]=U>>12|224,u[N++]=U>>6&63|128,u[N++]=U&63|128);f=N-c-m}else f=n(b,c+m);f<32?u[c++]=160|f:f<256?(m<2&&u.copyWithin(c+2,c+1,c+1+f),u[c++]=217,u[c++]=f):f<65536?(m<3&&u.copyWithin(c+3,c+2,c+2+f),u[c++]=218,u[c++]=f>>8,u[c++]=f&255):(m<5&&u.copyWithin(c+5,c+3,c+3+f),u[c++]=219,H.setUint32(c,f),c+=4),c+=f}else if(k===\"number\")if(b>>>0===b)b<64||b<128&&this.useRecords===!1?u[c++]=b:b<256?(u[c++]=204,u[c++]=b):b<65536?(u[c++]=205,u[c++]=b>>8,u[c++]=b&255):(u[c++]=206,H.setUint32(c,b),c+=4);else if(b>>0===b)b>=-32?u[c++]=256+b:b>=-128?(u[c++]=208,u[c++]=b+256):b>=-32768?(u[c++]=209,H.setInt16(c,b),c+=2):(u[c++]=210,H.setInt32(c,b),c+=4);else{let g;if((g=this.useFloat32)>0&&b<4294967296&&b>=-2147483648){u[c++]=202,H.setFloat32(c,b);let m;if(g<4||(m=b*Fs[(u[c]&127)<<1|u[c+1]>>7])>>0===m){c+=4;return}else c--}u[c++]=203,H.setFloat64(c,b),c+=8}else if(k===\"object\")if(!b)u[c++]=192;else{if(i){let m=i.get(b);if(m){if(!m.id){let z=i.idsToInsert||(i.idsToInsert=[]);m.id=z.push(m)}u[c++]=214,u[c++]=112,H.setUint32(c,m.id),c+=4;return}else i.set(b,{offset:c-e})}let g=b.constructor;if(g===Object)y(b,!0);else if(g===Array){f=b.length,f<16?u[c++]=144|f:f<65536?(u[c++]=220,u[c++]=f>>8,u[c++]=f&255):(u[c++]=221,H.setUint32(c,f),c+=4);for(let m=0;m>8,u[c++]=f&255):(u[c++]=223,H.setUint32(c,f),c+=4);for(let[m,z]of b)O(m),O(z)}else{for(let m=0,z=ys.length;m(u=L,L=null,c+=re,c>tt&&A(c),{target:u,targetView:H,position:c-re}),O)}finally{L&&(u=L,H=N,c=et,tt=u.length-10)}Et&&(Et.length+c>tt&&A(Et.length+c),c=da(Et,u,c,U.type));return}}y(b,!b.hasOwnProperty)}}else if(k===\"boolean\")u[c++]=b?195:194;else if(k===\"bigint\"){if(b=-(BigInt(1)<0)u[c++]=207,H.setBigUint64(c,b);else if(this.largeBigIntToFloat)u[c++]=203,H.setFloat64(c,Number(b));else throw new RangeError(b+\" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64\");c+=8}else if(k===\"undefined\")this.encodeUndefinedAsNil?u[c++]=192:(u[c++]=212,u[c++]=0,u[c++]=0);else if(k===\"function\")O(this.writeFunction&&this.writeFunction());else throw new Error(\"Unknown type: \"+k)},y=this.useRecords===!1?this.variableMapSize?b=>{let k=Object.keys(b),f=k.length;f<16?u[c++]=128|f:f<65536?(u[c++]=222,u[c++]=f>>8,u[c++]=f&255):(u[c++]=223,H.setUint32(c,f),c+=4);let g;for(let m=0;m{u[c++]=222;let f=c-e;c+=2;let g=0;for(let m in b)(k||b.hasOwnProperty(m))&&(O(m),O(b[m]),g++);u[f+++e]=g>>8,u[f+e]=g&255}:t.progressiveRecords&&!w?(b,k)=>{let f,g=r.transitions||(r.transitions=Object.create(null)),m=c++-e,z;for(let C in b)if(k||b.hasOwnProperty(C)){if(f=g[C],f)g=f;else{let U=Object.keys(b),L=g;g=r.transitions;let N=0;for(let et=0,Et=U.length;et{let f,g=r.transitions||(r.transitions=Object.create(null)),m=0;for(let C in b)(k||b.hasOwnProperty(C))&&(f=g[C],f||(f=g[C]=Object.create(null),m++),g=f);let z=g[qt];z?z>=96&&w?(u[c++]=((z-=96)&31)+96,u[c++]=z>>5):u[c++]=z:Z(g,g.__keys__||Object.keys(b),m);for(let C in b)(k||b.hasOwnProperty(C))&&O(b[C])},A=b=>{let k;if(b>16777216){if(b-e>Ks)throw new Error(\"Packed buffer would be larger than maximum buffer size\");k=Math.min(Ks,Math.round(Math.max((b-e)*(b>67108864?1.25:2),4194304)/4096)*4096)}else k=(Math.max(b-e<<2,u.length-1)>>12)+1<<12;let f=new Fe(k);return H=new DataView(f.buffer,0,k),b=Math.min(b,u.length),u.copy?u.copy(f,0,e,b):f.set(u.slice(e,b)),c-=e,e=0,tt=f.length-10,u=f},Z=(b,k,f)=>{let g=r.nextId;g||(g=64),g<_&&this.shouldShareStructure&&!this.shouldShareStructure(k)?(g=r.nextOwnId,g=T&&(g=_),r.nextId=g+1);let m=k.highByte=g>=96&&w?g-96>>5:-1;b[qt]=g,b.__keys__=k,r[g-64]=k,g<_?(k.isShared=!0,r.sharedLength=g-63,s=!0,m>=0?(u[c++]=(g&31)+96,u[c++]=m):u[c++]=g):(m>=0?(u[c++]=213,u[c++]=114,u[c++]=(g&31)+96,u[c++]=m):(u[c++]=212,u[c++]=114,u[c++]=g),f&&(j+=x*f),F.length>=I&&(F.shift()[qt]=0),F.push(b),O(k))},R=(b,k,f,g)=>{let m=u,z=c,C=tt,U=e;u=ae,c=0,e=0,u||(ae=u=new Fe(8192)),tt=u.length-10,Z(b,k,g),ae=u;let L=c;if(u=m,c=z,tt=C,e=U,L>1){let N=c+L-1;N>tt&&A(N);let et=f+e;u.copyWithin(et+L,et+1,c),u.set(ae.slice(0,L),et),c=N}else u[f+e]=ae[0]}}useBuffer(t){u=t,H=new DataView(u.buffer,u.byteOffset,u.byteLength),c=0}clearSharedData(){this.structures&&(this.structures=[])}};Qi=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Pi];ys=[{pack(t,e,s){let r=t.getTime()/1e3;if((this.useTimestamp32||t.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:i,targetView:a,position:n}=e(6);i[n++]=214,i[n++]=255,a.setUint32(n,r)}else if(r>0&&r<4294967296){let{target:i,targetView:a,position:n}=e(10);i[n++]=215,i[n++]=255,a.setUint32(n,t.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),a.setUint32(n+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return e(0),s(this.onInvalidDate());let{target:i,targetView:a,position:n}=e(3);i[n++]=212,i[n++]=255,i[n++]=255}else{let{target:i,targetView:a,position:n}=e(15);i[n++]=199,i[n++]=12,i[n++]=255,a.setUint32(n,t.getMilliseconds()*1e6),a.setBigInt64(n+4,BigInt(Math.floor(r)))}}},{pack(t,e,s){let r=Array.from(t),{target:i,position:a}=e(this.moreTypes?3:0);this.moreTypes&&(i[a++]=212,i[a++]=115,i[a++]=0),s(r)}},{pack(t,e,s){let{target:r,position:i}=e(this.moreTypes?3:0);this.moreTypes&&(r[i++]=212,r[i++]=101,r[i++]=0),s([t.name,t.message])}},{pack(t,e,s){let{target:r,position:i}=e(this.moreTypes?3:0);this.moreTypes&&(r[i++]=212,r[i++]=120,r[i++]=0),s([t.source,t.flags])}},{pack(t,e){this.moreTypes?Qs(t,16,e):$s(We?Buffer.from(t):new Uint8Array(t),e)}},{pack(t,e){let s=t.constructor;s!==$i&&this.moreTypes?Qs(t,Wi.indexOf(s.name),e):$s(t,e)}},{pack(t,e){let{target:s,position:r}=e(1);s[r]=193}}];function Qs(t,e,s,r){let i=t.byteLength;if(i+1<256){var{target:a,position:n}=s(4+i);a[n++]=199,a[n++]=i+1}else if(i+1<65536){var{target:a,position:n}=s(5+i);a[n++]=200,a[n++]=i+1>>8,a[n++]=i+1&255}else{var{target:a,position:n,targetView:o}=s(7+i);a[n++]=201,o.setUint32(n,i+1),n+=4}a[n++]=116,a[n++]=e,a.set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength),n)}function $s(t,e){let s=t.byteLength;var r,i;if(s<256){var{target:r,position:i}=e(s+2);r[i++]=196,r[i++]=s}else if(s<65536){var{target:r,position:i}=e(s+3);r[i++]=197,r[i++]=s>>8,r[i++]=s&255}else{var{target:r,position:i,targetView:a}=e(s+5);r[i++]=198,a.setUint32(i,s),i+=4}r.set(t,i)}function da(t,e,s,r){let i=t.length;switch(i){case 1:e[s++]=212;break;case 2:e[s++]=213;break;case 4:e[s++]=214;break;case 8:e[s++]=215;break;case 16:e[s++]=216;break;default:i<256?(e[s++]=199,e[s++]=i):i<65536?(e[s++]=200,e[s++]=i>>8,e[s++]=i&255):(e[s++]=201,e[s++]=i>>24,e[s++]=i>>16&255,e[s++]=i>>8&255,e[s++]=i&255)}return e[s++]=r,e.set(t,s),s+=i,s}function ha(t,e){let s,r=e.length*6,i=t.length-r;for(e.sort((a,n)=>a.offset>n.offset?1:-1);s=e.pop();){let a=s.offset,n=s.id;t.copyWithin(a+r,a,i),r-=6;let o=a+r;t[o++]=214,t[o++]=105,t[o++]=n>>24,t[o++]=n>>16&255,t[o++]=n>>8&255,t[o++]=n&255,i=a}return t}function Js(t,e){if(X.length>0){H.setUint32(X.position+t,c-X.position-t);let s=X;X=null,e(s[0]),e(s[1])}}var ca=new la({useRecords:!1}),ba=ca.pack,ua=512,_a=1024,Ts=t=>ba(t.toJSObject()),Cs=(t,e)=>t.fromJSObject(aa(e)),Ji=(t,e)=>{if(!e.thnkServer)return-1;let{syncedVariable:s,objectsRegistery:r}=e.thnkServer,i=s.getChildrenCount()!==0?st.createVariablesVector(t,Ts(s)):null,a=r.createObjectsSnapshot(t),n=a.length?st.createObjectsVector(t,a):null;return st.startGameStateSnapshot(t),i&&st.addVariables(t,i),n&&st.addObjects(t,n),st.endGameStateSnapshot(t)},fa=(t,e)=>{if(!e.thnkServer)return-1;let{syncedVariable:s,objectsRegistery:r}=e.thnkServer,i=s.isDirty()?s.serialize(t):null,a=r.diffObjects(t),n=a.length?nt.createObjectsVector(t,a):null,o=r.getCreatedObjects(),p=o.length?nt.createCreatedObjectsVector(t,o.map(([I,w])=>{let _=t.createSharedString(w);return jt.createCreatedObject(t,I,_)})):null,l=r.getDeletedObjects(),d=l.length?nt.createDeletedObjectsVector(t,l):null;return nt.startGameStateDiff(t),i&&nt.addVariables(t,i),n&&nt.addObjects(t,n),p&&nt.addCreatedObjects(t,p),d&&nt.addDeletedObjects(t,d),nt.endGameStateDiff(t)},pa=(t,e,s)=>{let r=new Xt(512),i=r.createString(s.getName()),a=Ji(r,s);Dt.startConnectionStartMessage(r),Dt.addSceneName(r,i),Dt.addSceneSnapshot(r,a),e.sendServerMessageTo(t,r,ct.createServerMessage(r,1,Dt.endConnectionStartMessage(r)))},ga=(t,e)=>{let s=new Xt(256),r=fa(s,e);t.sendServerMessageToAll(s,ct.createServerMessage(s,2,Nt.createGameStateUpdateMessage(s,r)))},wa=(t,e,s)=>{let r=new Xt(512),i=r.createString(e);ht.startSceneSwitchMessage(r),ht.addSceneName(r,i),ht.addIsPause(r,s),t.sendServerMessageToAll(r,ct.createServerMessage(r,3,ht.endSceneSwitchMessage(r)))},ts=(t,e,s)=>{let r=new Xt(512),i=s?r.createString(s.getName()):null,a=s?Ji(r,s):null;dt.startResumePreviousSceneMessage(r),a&&i&&(dt.addSnapshot(r,a),dt.addName(r,i));let n=ct.createServerMessage(r,4,dt.endResumePreviousSceneMessage(r));for(let o of t)e.sendServerMessageTo(o,r,n)},tr={};Xe(tr,{getCurrentPlayerID:()=>ma,markObjectAsOwned:()=>ya,pickOwnedObjects:()=>va,switchPlayerContext:()=>Pe});var _e=\"\",vs=new Map,ma=()=>_e,Pe=t=>{_e=t},ya=t=>{let e=vs.get(_e);e||vs.set(_e,e=new gdjs.LongLivedObjectsList),e.addObject(t.getName(),t)},va=t=>{let e=vs.get(_e);if(e)for(let[s,r]of Object.entries(t.items))gdjs.copyArray(e.getObjects(s),r)},ti=new Map,Rs=t=>{let e=ti.get(t);return e||ti.set(t,e=[]),e},Sa=(t,e,s)=>{Rs(e).push({initiatorUserID:t,serializedExtraData:s})},ka=(t,e,s)=>{Rs(e).push({initiatorUserID:t,extraData:s})},Oa=(t,e)=>{let s=Rs(t);if(s.length){let r=s.shift();return Pe(r.initiatorUserID),r.serializedExtraData?Cs(e,r.serializedExtraData):r.extraData&&gdjs.Variable.copy(r.extraData,e),!0}return!1},Ia=t=>{var e;return!!((e=t.thnkServer)!=null&&e.playerManager.popConnection())},Aa=t=>{var e;return!!((e=t.thnkServer)!=null&&e.playerManager.popDisconnection())},er={};Xe(er,{getTickRate:()=>rr,isDedicated:()=>ar,setDedicated:()=>xa,setTickRate:()=>ja});var sr=!1,ir=120,xa=()=>{sr=!0},ja=t=>{ir=Math.max(1,t)},rr=()=>ir,ar=()=>sr,ot=class extends gdjs.Variable{constructor(){super(...arguments),this.dirty=!0,this.operations=[]}static setupSyncedVariable(t,e=\"State\"){let s=new ot;return t.has(e)&&gdjs.Variable.copy(t.get(e),s),t.add(e,s),s}reinitialize(t){if(this._type=\"number\",this._value=0,this._str=\"0\",this._bool=!1,this._children={},this._childrenArray=[],this._undefinedInContainer=!1,t!==void 0){if(this._type=t.type||\"number\",this._type===\"number\")this._value=parseFloat(t.value||\"0\"),this._value!==this._value&&(this._value=0);else if(this._type===\"string\")this._str=\"\"+t.value||\"0\";else if(this._type===\"boolean\")this._bool=!!t.value;else if(this._type===\"structure\"){if(t.children!==void 0)for(var e=0,s=t.children.length;e{let s=e.getString?t.createSharedString(e.getString()):null;S.startObjState(t),S.addX(t,e.getX()),S.addY(t,e.getY()),S.addHeight(t,e.getHeight()),S.addWidth(t,e.getWidth()),S.addAngle(t,e.getAngle()),e.getX()===0&&S.addSetXTo0(t,!0),e.getY()===0&&S.addSetYTo0(t,!0),e.getHeight()===0&&S.addSetHeightTo0(t,!0),e.getWidth()===0&&S.addSetWidthTo0(t,!0),e.getWidth()===0&&S.addSetAngleTo0(t,!0),e.getZOrder()<=65535?S.addZOrder(t,e.getZOrder()+1):S.addBigZOrder(t,e.getZOrder()+1),S.addVisible(t,e.isHidden()?1:2),e.isFlippedX&&S.addFlippedX(t,e.isFlippedX()?1:2),e.isFlippedY&&S.addFlippedY(t,e.isFlippedY()?1:2),e.getOpacity&&(e.getOpacity()!==0?S.addOpacity(t,e.getOpacity()):S.addSetOpacityTo0(t,!0)),e.getAnimation&&S.addAnimation(t,e.getAnimation()+1),s&&S.addText(t,s);let r=S.endObjState(t),{stateVariable:i}=e,a=i.getChildrenCount()!==0?J.createPackedVariablesVector(t,Ts(i)):null,n=t.createSharedString(e.getName());return J.startGameObject(t),J.addId(t,e.thnkID),J.addName(t,n),J.addObjState(t,r),a&&J.addPackedVariables(t,a),J.endGameObject(t)},Ca=(t,e)=>{let s=null;if(e.getX()!==e.prevX||e.getY()!==e.prevY||e.getHeight()!==e.prevHeight||e.getWidth()!==e.prevWidth||e.getAngle()!==e.prevAngle||e.getZOrder()!==e.prevZOrder||e.isHidden()!==e.prevVisibility||e.isFlippedX&&e.isFlippedX()!==e.prevFlippedX||e.isFlippedY&&e.isFlippedY()!==e.prevFlippedY||e.getOpacity&&e.getOpacity()!==e.prevOpacity||e.getAnimation&&e.getAnimation()!==e.prevAnimation||e.getString&&e.getString()!==e.prevText){let a=e.getString&&e.getString()!==e.prevText?t.createSharedString(e.getString()):null;S.startObjState(t),e.getX()!==e.prevX&&(e.prevX=e.getX(),e.getX()!==0?S.addX(t,e.getX()):S.addSetXTo0(t,!0)),e.getY()!==e.prevY&&(e.prevY=e.getY(),e.getY()!==0?S.addY(t,e.getY()):S.addSetYTo0(t,!0)),e.getHeight()!==e.prevHeight&&(e.prevHeight=e.getHeight(),e.getHeight()!==0?S.addHeight(t,e.getHeight()):S.addSetHeightTo0(t,!0)),e.getWidth()!==e.prevWidth&&(e.prevWidth=e.getWidth(),e.getWidth()!==0?S.addWidth(t,e.getWidth()):S.addSetWidthTo0(t,!0)),e.getAngle()!==e.prevAngle&&(e.prevAngle=e.getAngle(),e.getAngle()!==0?S.addAngle(t,e.getAngle()):S.addSetAngleTo0(t,!0)),e.getZOrder()!==e.prevZOrder&&(e.prevZOrder=e.getZOrder(),e.getZOrder()<=65535?S.addZOrder(t,e.getZOrder()+1):S.addBigZOrder(t,e.getZOrder()+1)),e.isHidden()!==e.prevVisibility&&(e.prevVisibility=e.isHidden(),S.addVisible(t,e.isHidden()?1:2)),e.isFlippedX&&e.isFlippedX()!==e.prevFlippedX&&(e.prevFlippedX=e.isFlippedX(),S.addFlippedX(t,e.isFlippedX()?1:2)),e.isFlippedY&&e.isFlippedY()!==e.prevFlippedY&&(e.prevFlippedY=e.isFlippedY(),S.addFlippedY(t,e.isFlippedY()?1:2)),e.getOpacity&&e.getOpacity()!==e.prevOpacity&&(e.prevOpacity=e.getOpacity(),e.getOpacity()!==0?S.addOpacity(t,e.getOpacity()):S.addSetOpacityTo0(t,!0)),e.getAnimation&&e.getAnimation()!==e.prevAnimation&&(e.prevAnimation=e.getAnimation(),S.addAnimation(t,e.getAnimation()+1)),e.getString&&a&&(e.prevText=e.getString(),S.addText(t,a)),s=S.endObjState(t)}let{stateVariable:r}=e,i=r.isDirty()?r.serialize(t):null;return!s&&!i?null:(J.startGameObject(t),J.addId(t,e.thnkID),s&&J.addObjState(t,s),i&&J.addVariables(t,i),J.endGameObject(t))},Ra=new gdjs.Logger(\"THNK - Objects replication\"),Ma=class{constructor(){this.recycledIDs=[],this.currentNewID=1,this.generateNewID=()=>{let t=this.recycledIDs.pop()??this.currentNewID++;return t>65535?(Ra.error(\"Maximum amount of simultaneously replicated objects reached! Weird stuff is going to happen...\"),t%65535):t},this.registeredObjects=new Map,this.createdObjects=new Map,this.deletedObjects=new Set}registerObject(t){t.thnkID=this.generateNewID(),this.registeredObjects.set(t.thnkID,t),this.createdObjects.set(t.thnkID,t.getName()),t.stateVariable=ot.setupSyncedVariable(t.getVariables())}unregisterObject(t){this.recycledIDs.push(t.thnkID),this.registeredObjects.delete(t.thnkID),this.deletedObjects.add(t.thnkID),this.createdObjects.delete(t.thnkID)}diffObjects(t){let e=[];for(let s of this.registeredObjects.values()){let r=Ca(t,s);r&&e.push(r)}return e}createObjectsSnapshot(t){let e=[];for(let s of this.registeredObjects.values())e.push(Ta(t,s));return e}getCreatedObjects(){let t=[...this.createdObjects.entries()];return this.createdObjects.clear(),t}getDeletedObjects(){let t=Uint16Array.from(this.deletedObjects.values());return this.deletedObjects.clear(),t}},za=class{constructor(t,e){this.objectsRegistery=new Ma,this.playerManager=new Fa,this.runServerCode=!0,this.adapter=t,this.syncedVariable=e}},nr=(t,e)=>{let s=ot.setupSyncedVariable(t.getVariables());t.getTimeManager().addTimer(\"__THNK_Ticker\"),t.thnkServer=new za(e,s),ar()||t.thnkServer.playerManager._onConnect(e.getServerID())},Ss=new gdjs.Logger(\"THNK - Server\"),es=0,Va=t=>{if(!t.thnkServer)return;let{adapter:e}=t.thnkServer;for(let[r,i]of e.getUsersPendingMessages()){for(let a of i)switch(a.contentType()){case 1:pa(r,e,t),t.thnkServer.playerManager._onConnect(r);continue;case 2:let n=a.content(new yt),o=n.name();if(!o)continue;let p=n.contentArray();Sa(r,o,p);continue;default:Ss.error(`Received message with unknown type '${a.contentType()}'`);continue}i.length=0}for(let r of e.getDisconnectedUsers())t.thnkServer.playerManager._onDisconnect(r);e.getDisconnectedUsers().length=0;let s=t.getTimeManager();es+=s.getElapsedTime()/s.getTimeScale(),es>1e3/rr()&&(es=0,t.thnkServer.runServerCode=!0)},Ea=t=>{!t.thnkServer||!t.thnkServer.runServerCode||(t.thnkServer.runServerCode=!1,ga(t.thnkServer.adapter,t))},$t=null,or=(t,e)=>{if(t.thnkServer){let{adapter:s}=t.thnkServer;$t={adapter:s,isPause:e},e&&(t.thnkServer.previouslyConnectedUsers=new Set(s.getConnectedUsers()))}},Ba=t=>{if($t){let{adapter:e,isPause:s}=$t;nr(t,e);for(let r of e.getConnectedUsers())t.thnkServer.playerManager._onConnect(r);wa(e,t.getName(),s),$t=null}},Na=t=>{if($t)if(t.thnkServer){let{adapter:e,previouslyConnectedUsers:s}=t.thnkServer;if(s){let r=[],i=[];for(let a of e.getConnectedUsers())s.has(a)?i.push(a):r.push(a);ts(r,e,t),ts(i,e)}else Ss.warn(\"List of previously connected players not found! A full snapshot will be sent to all players. This is likely a bug, please open an issue on the THNK GitHub page!\"),ts([...e.getConnectedUsers()],e,t)}else Ss.warn(\"Resumed a scene that is not a server, shutting the server down. This is likely a bug, please open an issue on the THNK GitHub page!\"),$t.adapter.close()};gdjs.registerRuntimeScenePreEventsCallback(Va);gdjs.registerRuntimeScenePostEventsCallback(Ea);gdjs.registerRuntimeSceneUnloadedCallback(t=>or(t,!1));gdjs.registerRuntimeScenePausedCallback(t=>or(t,!0));gdjs.registerRuntimeSceneLoadedCallback(Ba);gdjs.registerRuntimeSceneResumedCallback(Na);var Da=new gdjs.Logger(\"THNK - Server\"),Za=async(t,e,s)=>{try{await t.prepare()}catch(i){Da.error(\"Adapter crashed while starting server! Error: \",i);return}let r=s?e.getGame().getSceneStack().replace(s,!0):e;nr(r,t)},Pa={popMessage:Oa,addRawMessageToTheQueue:ka,popConnection:Ia,popDisconnection:Aa},lr={};Xe(lr,{getConnectionState:()=>Xa,messages:()=>$a,startClient:()=>Qa});var Le=(t,e)=>{switch(e.type()){case 1:return t.setString(e.text()),t;case 2:return t.setNumber(e.number()),t;case 3:return t.setBoolean(e.boolean()),t}if(e.type()===4){t.castTo(\"structure\");for(let s=e.operationsLength(),r=0,i=e.operations(0);r{let s=t.objState();if(s){let a=s.x();a!==null&&e.setX(a);let n=s.y();n!==null&&e.setY(n);let o=s.height();o!==null&&e.setHeight(o);let p=s.width();p!==null&&e.setWidth(p);let l=s.angle();l!==null&&e.setAngle(l),s.setXTo0()&&e.setX(0),s.setYTo0()&&e.setY(0),s.setHeightTo0()&&e.setHeight(0),s.setWidthTo0()&&e.setWidth(0),s.setAngleTo0()&&e.setAngle(0);{let T=s.visible();T!==null&&e.hide(T===1);let F=s.flippedX();F!==null&&e.flipX&&e.flipX(F===1);let j=s.flippedY();j!==null&&e.flipY&&e.flipY(j===1)}let d=s.zOrder()??s.bigZOrder();d!==null&&e.setZOrder(d-1);let I=s.opacity();e.setOpacity&&(I!==null&&e.setOpacity(I),s.setOpacityTo0()&&e.setOpacity(0));let w=s.animation();w!==null&&e.setAnimation&&e.setAnimation(w-1);let _=s.text();_!==null&&e.setString&&e.setString(_)}let r=e.getVariables().get(\"State\"),i=t.variables();if(i)Le(r,i);else{let a=t.packedVariablesArray();a&&Cs(r,a)}},hr=(t,e)=>{if(!e.thnkClient)return;let{objectsRegistery:s}=e.thnkClient,r=t.variablesArray();if(r&&Cs(e.getVariables().get(\"State\"),r),s.clear(),t.objectsLength()!==0)for(let i=t.objectsLength(),a=0,n=t.objects(0);a{if(!e.thnkClient)return;let{objectsRegistery:s}=e.thnkClient,r=t.variables();r&&Le(e.getVariables().get(\"State\"),r);let i=t.deletedObjectsArray();if(i)for(let a of i)s.deleteObject(a);if(t.createdObjectsLength()!==0)for(let a=t.createdObjectsLength(),n=0,o=t.createdObjects(0);n{if(!t.thnkClient)return;let{adapter:e}=t.thnkClient;for(let s of e.getPendingMessages())switch(s.contentType()){case 1:ei.warn(\"A second ConnectionStartMessage was received from the server. This is likely a bug, please open an issue on the THNK GitHub!\");continue;case 2:let r=s.content(new Nt).newState();r&&La(r,t);continue;case 3:let i=s.content(new ht),a=i.sceneName();if(!a){console.error(\"Server requested scene switch, but no scene name was sent! This is likely a bug, please open an issue on the THNK GitHub!\");continue}let n=i.isPause()?t.getGame().getSceneStack().push(a):t.getGame().getSceneStack().replace(a,!0);n.thnkClient=t.thnkClient,t=n;continue;case 4:let o=s.content(new dt),p=o.name(),l=null;try{l=p?t.getGame().getSceneStack().replace(p,!0):t.getGame().getSceneStack().pop()}catch{console.info(\"Error spotted!\")}if(!l)continue;let d=o.snapshot();d&&hr(d,l),l.thnkClient=t.thnkClient,t=l;continue;default:ei.error(`Received message with unknown type '${s.contentType()}'`)}e.markPendingMessagesAsRead()};gdjs.registerRuntimeScenePreEventsCallback(Ha);var Ga=(t,e)=>{let s=new Xt(32),r=e?s.createString(e):null;Ut.startConnectionRequestMessage(s),r&&Ut.addToken(s,r);let i=Ut.endConnectionRequestMessage(s);t.sendClientMessage(s,vt.createClientMessage(s,1,i))},Ya=(t,e,s)=>{let r=new Xt(256),i=r.createString(e),a=yt.createContentVector(r,Ts(s)),n=yt.createClientInputMessage(r,i,a);t.sendClientMessage(r,vt.createClientMessage(r,2,n))},cr=\"disconnected\",de=t=>cr=t,Xa=()=>cr,Wa=class{constructor(t){this.objectsRegistery=new Map,this.runtimeScene=t}registerObject(t,e){e.thnkID=t,this.objectsRegistery.set(t,e)}getObject(t){return this.objectsRegistery.get(t)}deleteObject(t){let e=this.objectsRegistery.get(t);!e||(e.deleteFromScene(this.runtimeScene),this.objectsRegistery.delete(t))}clear(){this.objectsRegistery.forEach(t=>t.deleteFromScene(this.runtimeScene)),this.objectsRegistery.clear()}},qa=class{constructor(t,e){this.adapter=t,this.objectsRegistery=new Wa(e)}},Ka=new gdjs.Logger(\"THNK - Client\"),si=t=>{de(\"failed\"),Ka.error(\"Connection failed: \"+t)},Qa=async(t,e)=>{de(\"connecting\");let s=t.getGame().getSceneStack();try{await e.prepare(t)}catch{si(\"Adapter crashed while starting server!\");return}de(\"loading\"),Ga(e);let r=setInterval(()=>{let i=e.getPendingMessages().shift();if(!!i&&i.contentType()===1){clearInterval(r);let a=i.content(new Dt),n=a.sceneName(),o=a.sceneSnapshot();if(!n||!o){si(\"Server Connection Start Message was invalid, couldn't finish setting up the connection.\");return}let p=s.replace(n,!0);p.thnkClient=new qa(e,p),hr(o,p),de(\"connected\")}},200)},$a={sendClientMessage:Ya};function ee(t){let e=t.length;for(;--e>=0;)t[e]=0}var Ja=0,br=1,tn=2,en=3,sn=258,Ms=29,Oe=256,fe=Oe+1+Ms,Jt=30,zs=19,ur=2*fe+1,Zt=15,ss=16,rn=7,Vs=256,_r=16,fr=17,pr=18,ks=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]),Ee=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]),an=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),gr=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),nn=512,St=new Array((fe+2)*2);ee(St);var he=new Array(Jt*2);ee(he);var pe=new Array(nn);ee(pe);var ge=new Array(sn-en+1);ee(ge);var Es=new Array(Ms);ee(Es);var He=new Array(Jt);ee(He);function is(t,e,s,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=s,this.elems=r,this.max_length=i,this.has_stree=t&&t.length}var wr,mr,yr;function rs(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}var vr=t=>t<256?pe[t]:pe[256+(t>>>7)],we=(t,e)=>{t.pending_buf[t.pending++]=e&255,t.pending_buf[t.pending++]=e>>>8&255},rt=(t,e,s)=>{t.bi_valid>ss-s?(t.bi_buf|=e<>ss-t.bi_valid,t.bi_valid+=s-ss):(t.bi_buf|=e<{rt(t,s[e*2],s[e*2+1])},Sr=(t,e)=>{let s=0;do s|=t&1,t>>>=1,s<<=1;while(--e>0);return s>>>1},on=t=>{t.bi_valid===16?(we(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=t.bi_buf&255,t.bi_buf>>=8,t.bi_valid-=8)},ln=(t,e)=>{let s=e.dyn_tree,r=e.max_code,i=e.stat_desc.static_tree,a=e.stat_desc.has_stree,n=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,p=e.stat_desc.max_length,l,d,I,w,_,T,F=0;for(w=0;w<=Zt;w++)t.bl_count[w]=0;for(s[t.heap[t.heap_max]*2+1]=0,l=t.heap_max+1;lp&&(w=p,F++),s[d*2+1]=w,!(d>r)&&(t.bl_count[w]++,_=0,d>=o&&(_=n[d-o]),T=s[d*2],t.opt_len+=T*(w+_),a&&(t.static_len+=T*(i[d*2+1]+_)));if(F!==0){do{for(w=p-1;t.bl_count[w]===0;)w--;t.bl_count[w]--,t.bl_count[w+1]+=2,t.bl_count[p]--,F-=2}while(F>0);for(w=p;w!==0;w--)for(d=t.bl_count[w];d!==0;)I=t.heap[--l],!(I>r)&&(s[I*2+1]!==w&&(t.opt_len+=(w-s[I*2+1])*s[I*2],s[I*2+1]=w),d--)}},kr=(t,e,s)=>{let r=new Array(Zt+1),i=0,a,n;for(a=1;a<=Zt;a++)r[a]=i=i+s[a-1]<<1;for(n=0;n<=e;n++){let o=t[n*2+1];o!==0&&(t[n*2]=Sr(r[o]++,o))}},dn=()=>{let t,e,s,r,i,a=new Array(Zt+1);for(s=0,r=0;r>=7;r{let e;for(e=0;e{t.bi_valid>8?we(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},hn=(t,e,s,r)=>{Ir(t),r&&(we(t,s),we(t,~s)),t.pending_buf.set(t.window.subarray(e,e+s),t.pending),t.pending+=s},ii=(t,e,s,r)=>{let i=e*2,a=s*2;return t[i]{let r=t.heap[s],i=s<<1;for(;i<=t.heap_len&&(i{let r,i,a=0,n,o;if(t.last_lit!==0)do r=t.pending_buf[t.d_buf+a*2]<<8|t.pending_buf[t.d_buf+a*2+1],i=t.pending_buf[t.l_buf+a],a++,r===0?gt(t,i,e):(n=ge[i],gt(t,n+Oe+1,e),o=ks[n],o!==0&&(i-=Es[n],rt(t,i,o)),r--,n=vr(r),gt(t,n,s),o=Ee[n],o!==0&&(r-=He[n],rt(t,r,o)));while(a{let s=e.dyn_tree,r=e.stat_desc.static_tree,i=e.stat_desc.has_stree,a=e.stat_desc.elems,n,o,p=-1,l;for(t.heap_len=0,t.heap_max=ur,n=0;n>1;n>=1;n--)as(t,s,n);l=a;do n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],as(t,s,1),o=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=o,s[l*2]=s[n*2]+s[o*2],t.depth[l]=(t.depth[n]>=t.depth[o]?t.depth[n]:t.depth[o])+1,s[n*2+1]=s[o*2+1]=l,t.heap[1]=l++,as(t,s,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],ln(t,e),kr(s,p,t.bl_count)},ai=(t,e,s)=>{let r,i=-1,a,n=e[0*2+1],o=0,p=7,l=4;for(n===0&&(p=138,l=3),e[(s+1)*2+1]=65535,r=0;r<=s;r++)a=n,n=e[(r+1)*2+1],!(++o{let r,i=-1,a,n=e[0*2+1],o=0,p=7,l=4;for(n===0&&(p=138,l=3),r=0;r<=s;r++)if(a=n,n=e[(r+1)*2+1],!(++o{let e;for(ai(t,t.dyn_ltree,t.l_desc.max_code),ai(t,t.dyn_dtree,t.d_desc.max_code),Os(t,t.bl_desc),e=zs-1;e>=3&&t.bl_tree[gr[e]*2+1]===0;e--);return t.opt_len+=3*(e+1)+5+5+4,e},bn=(t,e,s,r)=>{let i;for(rt(t,e-257,5),rt(t,s-1,5),rt(t,r-4,4),i=0;i{let e=4093624447,s;for(s=0;s<=31;s++,e>>>=1)if(e&1&&t.dyn_ltree[s*2]!==0)return 0;if(t.dyn_ltree[9*2]!==0||t.dyn_ltree[10*2]!==0||t.dyn_ltree[13*2]!==0)return 1;for(s=32;s{oi||(dn(),oi=!0),t.l_desc=new rs(t.dyn_ltree,wr),t.d_desc=new rs(t.dyn_dtree,mr),t.bl_desc=new rs(t.bl_tree,yr),t.bi_buf=0,t.bi_valid=0,Or(t)},Ar=(t,e,s,r)=>{rt(t,(Ja<<1)+(r?1:0),3),hn(t,e,s,!0)},fn=t=>{rt(t,br<<1,3),gt(t,Vs,St),on(t)},pn=(t,e,s,r)=>{let i,a,n=0;t.level>0?(t.strm.data_type===2&&(t.strm.data_type=un(t)),Os(t,t.l_desc),Os(t,t.d_desc),n=cn(t),i=t.opt_len+3+7>>>3,a=t.static_len+3+7>>>3,a<=i&&(i=a)):i=a=s+5,s+4<=i&&e!==-1?Ar(t,e,s,r):t.strategy===4||a===i?(rt(t,(br<<1)+(r?1:0),3),ri(t,St,he)):(rt(t,(tn<<1)+(r?1:0),3),bn(t,t.l_desc.max_code+1,t.d_desc.max_code+1,n+1),ri(t,t.dyn_ltree,t.dyn_dtree)),Or(t),r&&Ir(t)},gn=(t,e,s)=>(t.pending_buf[t.d_buf+t.last_lit*2]=e>>>8&255,t.pending_buf[t.d_buf+t.last_lit*2+1]=e&255,t.pending_buf[t.l_buf+t.last_lit]=s&255,t.last_lit++,e===0?t.dyn_ltree[s*2]++:(t.matches++,e--,t.dyn_ltree[(ge[s]+Oe+1)*2]++,t.dyn_dtree[vr(e)*2]++),t.last_lit===t.lit_bufsize-1),wn=_n,mn=Ar,yn=pn,vn=gn,Sn=fn,kn={_tr_init:wn,_tr_stored_block:mn,_tr_flush_block:yn,_tr_tally:vn,_tr_align:Sn},On=(t,e,s,r)=>{let i=t&65535|0,a=t>>>16&65535|0,n=0;for(;s!==0;){n=s>2e3?2e3:s,s-=n;do i=i+e[r++]|0,a=a+i|0;while(--n);i%=65521,a%=65521}return i|a<<16|0},me=On,In=()=>{let t,e=[];for(var s=0;s<256;s++){t=s;for(var r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[s]=t}return e},An=new Uint32Array(In()),xn=(t,e,s,r)=>{let i=An,a=r+s;t^=-1;for(let n=r;n>>8^i[(t^e[n])&255];return t^-1},q=xn,Lt={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\"},se={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},{_tr_init:jn,_tr_stored_block:Un,_tr_flush_block:Fn,_tr_tally:Mt,_tr_align:Tn}=kn,{Z_NO_FLUSH:Wt,Z_PARTIAL_FLUSH:Cn,Z_FULL_FLUSH:Rn,Z_FINISH:zt,Z_BLOCK:li,Z_OK:wt,Z_STREAM_END:di,Z_STREAM_ERROR:bt,Z_DATA_ERROR:Mn,Z_BUF_ERROR:ns,Z_DEFAULT_COMPRESSION:zn,Z_FILTERED:Vn,Z_HUFFMAN_ONLY:Te,Z_RLE:En,Z_FIXED:Bn,Z_DEFAULT_STRATEGY:Nn,Z_UNKNOWN:Dn,Z_DEFLATED:qe}=se,Zn=9,Pn=15,Ln=8,Hn=29,Gn=256,Is=Gn+1+Hn,Yn=30,Xn=19,Wn=2*Is+1,qn=15,M=3,Ct=258,ut=Ct+M+1,Kn=32,Ke=42,As=69,Be=73,Ne=91,De=103,Pt=113,oe=666,Q=1,Ie=2,Ht=3,ie=4,Qn=3,Rt=(t,e)=>(t.msg=Lt[e],e),hi=t=>(t<<1)-(t>4?9:0),Ft=t=>{let e=t.length;for(;--e>=0;)t[e]=0},$n=(t,e,s)=>(e<{let e=t.state,s=e.pending;s>t.avail_out&&(s=t.avail_out),s!==0&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+s),t.next_out),t.next_out+=s,e.pending_out+=s,t.total_out+=s,t.avail_out-=s,e.pending-=s,e.pending===0&&(e.pending_out=0))},$=(t,e)=>{Fn(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,At(t.strm)},V=(t,e)=>{t.pending_buf[t.pending++]=e},ne=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=e&255},Jn=(t,e,s,r)=>{let i=t.avail_in;return i>r&&(i=r),i===0?0:(t.avail_in-=i,e.set(t.input.subarray(t.next_in,t.next_in+i),s),t.state.wrap===1?t.adler=me(t.adler,e,i,s):t.state.wrap===2&&(t.adler=q(t.adler,e,i,s)),t.next_in+=i,t.total_in+=i,i)},xr=(t,e)=>{let s=t.max_chain_length,r=t.strstart,i,a,n=t.prev_length,o=t.nice_match,p=t.strstart>t.w_size-ut?t.strstart-(t.w_size-ut):0,l=t.window,d=t.w_mask,I=t.prev,w=t.strstart+Ct,_=l[r+n-1],T=l[r+n];t.prev_length>=t.good_match&&(s>>=2),o>t.lookahead&&(o=t.lookahead);do if(i=e,!(l[i+n]!==T||l[i+n-1]!==_||l[i]!==l[r]||l[++i]!==l[r+1])){r+=2,i++;do;while(l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&rn){if(t.match_start=e,n=a,a>=o)break;_=l[r+n-1],T=l[r+n]}}while((e=I[e&d])>p&&--s!==0);return n<=t.lookahead?n:t.lookahead},Gt=t=>{let e=t.w_size,s,r,i,a,n;do{if(a=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-ut)){t.window.set(t.window.subarray(e,e+e),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,r=t.hash_size,s=r;do i=t.head[--s],t.head[s]=i>=e?i-e:0;while(--r);r=e,s=r;do i=t.prev[--s],t.prev[s]=i>=e?i-e:0;while(--r);a+=e}if(t.strm.avail_in===0)break;if(r=Jn(t.strm,t.window,t.strstart+t.lookahead,a),t.lookahead+=r,t.lookahead+t.insert>=M)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=Vt(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=Vt(t,t.ins_h,t.window[n+M-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert{let s=65535;for(s>t.pending_buf_size-5&&(s=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Gt(t),t.lookahead===0&&e===Wt)return Q;if(t.lookahead===0)break}t.strstart+=t.lookahead,t.lookahead=0;let r=t.block_start+s;if((t.strstart===0||t.strstart>=r)&&(t.lookahead=t.strstart-r,t.strstart=r,$(t,!1),t.strm.avail_out===0)||t.strstart-t.block_start>=t.w_size-ut&&($(t,!1),t.strm.avail_out===0))return Q}return t.insert=0,e===zt?($(t,!0),t.strm.avail_out===0?Ht:ie):(t.strstart>t.block_start&&($(t,!1),t.strm.avail_out),Q)},os=(t,e)=>{let s,r;for(;;){if(t.lookahead=M&&(t.ins_h=Vt(t,t.ins_h,t.window[t.strstart+M-1]),s=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),s!==0&&t.strstart-s<=t.w_size-ut&&(t.match_length=xr(t,s)),t.match_length>=M)if(r=Mt(t,t.strstart-t.match_start,t.match_length-M),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=M){t.match_length--;do t.strstart++,t.ins_h=Vt(t,t.ins_h,t.window[t.strstart+M-1]),s=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart;while(--t.match_length!==0);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Vt(t,t.ins_h,t.window[t.strstart+1]);else r=Mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(r&&($(t,!1),t.strm.avail_out===0))return Q}return t.insert=t.strstart{let s,r,i;for(;;){if(t.lookahead=M&&(t.ins_h=Vt(t,t.ins_h,t.window[t.strstart+M-1]),s=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=M-1,s!==0&&t.prev_length4096)&&(t.match_length=M-1)),t.prev_length>=M&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-M,r=Mt(t,t.strstart-1-t.prev_match,t.prev_length-M),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=i&&(t.ins_h=Vt(t,t.ins_h,t.window[t.strstart+M-1]),s=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart);while(--t.prev_length!==0);if(t.match_available=0,t.match_length=M-1,t.strstart++,r&&($(t,!1),t.strm.avail_out===0))return Q}else if(t.match_available){if(r=Mt(t,0,t.window[t.strstart-1]),r&&$(t,!1),t.strstart++,t.lookahead--,t.strm.avail_out===0)return Q}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(r=Mt(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart{let s,r,i,a,n=t.window;for(;;){if(t.lookahead<=Ct){if(Gt(t),t.lookahead<=Ct&&e===Wt)return Q;if(t.lookahead===0)break}if(t.match_length=0,t.lookahead>=M&&t.strstart>0&&(i=t.strstart-1,r=n[i],r===n[++i]&&r===n[++i]&&r===n[++i])){a=t.strstart+Ct;do;while(r===n[++i]&&r===n[++i]&&r===n[++i]&&r===n[++i]&&r===n[++i]&&r===n[++i]&&r===n[++i]&&r===n[++i]&&it.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=M?(s=Mt(t,1,t.match_length-M),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(s=Mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),s&&($(t,!1),t.strm.avail_out===0))return Q}return t.insert=0,e===zt?($(t,!0),t.strm.avail_out===0?Ht:ie):t.last_lit&&($(t,!1),t.strm.avail_out===0)?Q:Ie},so=(t,e)=>{let s;for(;;){if(t.lookahead===0&&(Gt(t),t.lookahead===0)){if(e===Wt)return Q;break}if(t.match_length=0,s=Mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,s&&($(t,!1),t.strm.avail_out===0))return Q}return t.insert=0,e===zt?($(t,!0),t.strm.avail_out===0?Ht:ie):t.last_lit&&($(t,!1),t.strm.avail_out===0)?Q:Ie};function ft(t,e,s,r,i){this.good_length=t,this.max_lazy=e,this.nice_length=s,this.max_chain=r,this.func=i}var le=[new ft(0,0,0,0,to),new ft(4,4,8,4,os),new ft(4,5,16,8,os),new ft(4,6,32,32,os),new ft(4,4,16,16,Kt),new ft(8,16,32,32,Kt),new ft(8,16,128,128,Kt),new ft(8,32,128,256,Kt),new ft(32,128,258,1024,Kt),new ft(32,258,258,4096,Kt)],io=t=>{t.window_size=2*t.w_size,Ft(t.head),t.max_lazy_match=le[t.level].max_lazy,t.good_match=le[t.level].good_length,t.nice_match=le[t.level].nice_length,t.max_chain_length=le[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=M-1,t.match_available=0,t.ins_h=0};function ro(){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=qe,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(Wn*2),this.dyn_dtree=new Uint16Array((2*Yn+1)*2),this.bl_tree=new Uint16Array((2*Xn+1)*2),Ft(this.dyn_ltree),Ft(this.dyn_dtree),Ft(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(qn+1),this.heap=new Uint16Array(2*Is+1),Ft(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Is+1),Ft(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var jr=t=>{if(!t||!t.state)return Rt(t,bt);t.total_in=t.total_out=0,t.data_type=Dn;let e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?Ke:Pt,t.adler=e.wrap===2?0:1,e.last_flush=Wt,jn(e),wt},Ur=t=>{let e=jr(t);return e===wt&&io(t.state),e},ao=(t,e)=>!t||!t.state||t.state.wrap!==2?bt:(t.state.gzhead=e,wt),Fr=(t,e,s,r,i,a)=>{if(!t)return bt;let n=1;if(e===zn&&(e=6),r<0?(n=0,r=-r):r>15&&(n=2,r-=16),i<1||i>Zn||s!==qe||r<8||r>15||e<0||e>9||a<0||a>Bn)return Rt(t,bt);r===8&&(r=9);let o=new ro;return t.state=o,o.strm=t,o.wrap=n,o.gzhead=null,o.w_bits=r,o.w_size=1<Fr(t,e,qe,Pn,Ln,Nn),oo=(t,e)=>{let s,r;if(!t||!t.state||e>li||e<0)return t?Rt(t,bt):bt;let i=t.state;if(!t.output||!t.input&&t.avail_in!==0||i.status===oe&&e!==zt)return Rt(t,t.avail_out===0?ns:bt);i.strm=t;let a=i.last_flush;if(i.last_flush=e,i.status===Ke)if(i.wrap===2)t.adler=0,V(i,31),V(i,139),V(i,8),i.gzhead?(V(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),V(i,i.gzhead.time&255),V(i,i.gzhead.time>>8&255),V(i,i.gzhead.time>>16&255),V(i,i.gzhead.time>>24&255),V(i,i.level===9?2:i.strategy>=Te||i.level<2?4:0),V(i,i.gzhead.os&255),i.gzhead.extra&&i.gzhead.extra.length&&(V(i,i.gzhead.extra.length&255),V(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=q(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=As):(V(i,0),V(i,0),V(i,0),V(i,0),V(i,0),V(i,i.level===9?2:i.strategy>=Te||i.level<2?4:0),V(i,Qn),i.status=Pt);else{let n=qe+(i.w_bits-8<<4)<<8,o=-1;i.strategy>=Te||i.level<2?o=0:i.level<6?o=1:i.level===6?o=2:o=3,n|=o<<6,i.strstart!==0&&(n|=Kn),n+=31-n%31,i.status=Pt,ne(i,n),i.strstart!==0&&(ne(i,t.adler>>>16),ne(i,t.adler&65535)),t.adler=1}if(i.status===As)if(i.gzhead.extra){for(s=i.pending;i.gzindex<(i.gzhead.extra.length&65535)&&!(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(t.adler=q(t.adler,i.pending_buf,i.pending-s,s)),At(t),s=i.pending,i.pending===i.pending_buf_size));)V(i,i.gzhead.extra[i.gzindex]&255),i.gzindex++;i.gzhead.hcrc&&i.pending>s&&(t.adler=q(t.adler,i.pending_buf,i.pending-s,s)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=Be)}else i.status=Be;if(i.status===Be)if(i.gzhead.name){s=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(t.adler=q(t.adler,i.pending_buf,i.pending-s,s)),At(t),s=i.pending,i.pending===i.pending_buf_size)){r=1;break}i.gzindexs&&(t.adler=q(t.adler,i.pending_buf,i.pending-s,s)),r===0&&(i.gzindex=0,i.status=Ne)}else i.status=Ne;if(i.status===Ne)if(i.gzhead.comment){s=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(t.adler=q(t.adler,i.pending_buf,i.pending-s,s)),At(t),s=i.pending,i.pending===i.pending_buf_size)){r=1;break}i.gzindexs&&(t.adler=q(t.adler,i.pending_buf,i.pending-s,s)),r===0&&(i.status=De)}else i.status=De;if(i.status===De&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&At(t),i.pending+2<=i.pending_buf_size&&(V(i,t.adler&255),V(i,t.adler>>8&255),t.adler=0,i.status=Pt)):i.status=Pt),i.pending!==0){if(At(t),t.avail_out===0)return i.last_flush=-1,wt}else if(t.avail_in===0&&hi(e)<=hi(a)&&e!==zt)return Rt(t,ns);if(i.status===oe&&t.avail_in!==0)return Rt(t,ns);if(t.avail_in!==0||i.lookahead!==0||e!==Wt&&i.status!==oe){let n=i.strategy===Te?so(i,e):i.strategy===En?eo(i,e):le[i.level].func(i,e);if((n===Ht||n===ie)&&(i.status=oe),n===Q||n===Ht)return t.avail_out===0&&(i.last_flush=-1),wt;if(n===Ie&&(e===Cn?Tn(i):e!==li&&(Un(i,0,0,!1),e===Rn&&(Ft(i.head),i.lookahead===0&&(i.strstart=0,i.block_start=0,i.insert=0))),At(t),t.avail_out===0))return i.last_flush=-1,wt}return e!==zt?wt:i.wrap<=0?di:(i.wrap===2?(V(i,t.adler&255),V(i,t.adler>>8&255),V(i,t.adler>>16&255),V(i,t.adler>>24&255),V(i,t.total_in&255),V(i,t.total_in>>8&255),V(i,t.total_in>>16&255),V(i,t.total_in>>24&255)):(ne(i,t.adler>>>16),ne(i,t.adler&65535)),At(t),i.wrap>0&&(i.wrap=-i.wrap),i.pending!==0?wt:di)},lo=t=>{if(!t||!t.state)return bt;let e=t.state.status;return e!==Ke&&e!==As&&e!==Be&&e!==Ne&&e!==De&&e!==Pt&&e!==oe?Rt(t,bt):(t.state=null,e===Pt?Rt(t,Mn):wt)},ho=(t,e)=>{let s=e.length;if(!t||!t.state)return bt;let r=t.state,i=r.wrap;if(i===2||i===1&&r.status!==Ke||r.lookahead)return bt;if(i===1&&(t.adler=me(t.adler,e,s,0)),r.wrap=0,s>=r.w_size){i===0&&(Ft(r.head),r.strstart=0,r.block_start=0,r.insert=0);let p=new Uint8Array(r.w_size);p.set(e.subarray(s-r.w_size,s),0),e=p,s=r.w_size}let a=t.avail_in,n=t.next_in,o=t.input;for(t.avail_in=s,t.next_in=0,t.input=e,Gt(r);r.lookahead>=M;){let p=r.strstart,l=r.lookahead-(M-1);do r.ins_h=Vt(r,r.ins_h,r.window[p+M-1]),r.prev[p&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=p,p++;while(--l);r.strstart=p,r.lookahead=M-1,Gt(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=M-1,r.match_available=0,t.next_in=n,t.input=o,t.avail_in=a,r.wrap=i,wt},co=no,bo=Fr,uo=Ur,_o=jr,fo=ao,po=oo,go=lo,wo=ho,mo=\"pako deflate (from Nodeca project)\",ce={deflateInit:co,deflateInit2:bo,deflateReset:uo,deflateResetKeep:_o,deflateSetHeader:fo,deflate:po,deflateEnd:go,deflateSetDictionary:wo,deflateInfo:mo},yo=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),vo=function(t){let e=Array.prototype.slice.call(arguments,1);for(;e.length;){let s=e.shift();if(s){if(typeof s!=\"object\")throw new TypeError(s+\"must be non-object\");for(let r in s)yo(s,r)&&(t[r]=s[r])}}return t},So=t=>{let e=0;for(let r=0,i=t.length;r=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;ye[254]=ye[254]=1;var ko=t=>{if(typeof TextEncoder==\"function\"&&TextEncoder.prototype.encode)return new TextEncoder().encode(t);let e,s,r,i,a,n=t.length,o=0;for(i=0;i>>6,e[a++]=128|s&63):s<65536?(e[a++]=224|s>>>12,e[a++]=128|s>>>6&63,e[a++]=128|s&63):(e[a++]=240|s>>>18,e[a++]=128|s>>>12&63,e[a++]=128|s>>>6&63,e[a++]=128|s&63);return e},Oo=(t,e)=>{if(e<65534&&t.subarray&&Tr)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let s=\"\";for(let r=0;r{let s=e||t.length;if(typeof TextDecoder==\"function\"&&TextDecoder.prototype.decode)return new TextDecoder().decode(t.subarray(0,e));let r,i,a=new Array(s*2);for(i=0,r=0;r4){a[i++]=65533,r+=o-1;continue}for(n&=o===2?31:o===3?15:7;o>1&&r1){a[i++]=65533;continue}n<65536?a[i++]=n:(n-=65536,a[i++]=55296|n>>10&1023,a[i++]=56320|n&1023)}return Oo(a,i)},Ao=(t,e)=>{e=e||t.length,e>t.length&&(e=t.length);let s=e-1;for(;s>=0&&(t[s]&192)===128;)s--;return s<0||s===0?e:s+ye[t[s]]>e?s:e},ve={string2buf:ko,buf2string:Io,utf8border:Ao};function xo(){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}var Cr=xo,Rr=Object.prototype.toString,{Z_NO_FLUSH:jo,Z_SYNC_FLUSH:Uo,Z_FULL_FLUSH:Fo,Z_FINISH:To,Z_OK:Ge,Z_STREAM_END:Co,Z_DEFAULT_COMPRESSION:Ro,Z_DEFAULT_STRATEGY:Mo,Z_DEFLATED:zo}=se;function Ae(t){this.options=Qe.assign({level:Ro,method:zo,chunkSize:16384,windowBits:15,memLevel:8,strategy:Mo},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new Cr,this.strm.avail_out=0;let s=ce.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(s!==Ge)throw new Error(Lt[s]);if(e.header&&ce.deflateSetHeader(this.strm,e.header),e.dictionary){let r;if(typeof e.dictionary==\"string\"?r=ve.string2buf(e.dictionary):Rr.call(e.dictionary)===\"[object ArrayBuffer]\"?r=new Uint8Array(e.dictionary):r=e.dictionary,s=ce.deflateSetDictionary(this.strm,r),s!==Ge)throw new Error(Lt[s]);this._dict_set=!0}}Ae.prototype.push=function(t,e){let s=this.strm,r=this.options.chunkSize,i,a;if(this.ended)return!1;for(e===~~e?a=e:a=e===!0?To:jo,typeof t==\"string\"?s.input=ve.string2buf(t):Rr.call(t)===\"[object ArrayBuffer]\"?s.input=new Uint8Array(t):s.input=t,s.next_in=0,s.avail_in=s.input.length;;){if(s.avail_out===0&&(s.output=new Uint8Array(r),s.next_out=0,s.avail_out=r),(a===Uo||a===Fo)&&s.avail_out<=6){this.onData(s.output.subarray(0,s.next_out)),s.avail_out=0;continue}if(i=ce.deflate(s,a),i===Co)return s.next_out>0&&this.onData(s.output.subarray(0,s.next_out)),i=ce.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Ge;if(s.avail_out===0){this.onData(s.output);continue}if(a>0&&s.next_out>0){this.onData(s.output.subarray(0,s.next_out)),s.avail_out=0;continue}if(s.avail_in===0)break}return!0};Ae.prototype.onData=function(t){this.chunks.push(t)};Ae.prototype.onEnd=function(t){t===Ge&&(this.result=Qe.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Bs(t,e){let s=new Ae(e);if(s.push(t,!0),s.err)throw s.msg||Lt[s.err];return s.result}function Vo(t,e){return e=e||{},e.raw=!0,Bs(t,e)}function Eo(t,e){return e=e||{},e.gzip=!0,Bs(t,e)}var Bo=Ae,No=Bs,Do=Vo,Zo=Eo,Po=se,Lo={Deflate:Bo,deflate:No,deflateRaw:Do,gzip:Zo,constants:Po},Ce=30,Ho=12,Go=function(t,e){let s,r,i,a,n,o,p,l,d,I,w,_,T,F,j,x,O,y,A,Z,R,b,k,f,g=t.state;s=t.next_in,k=t.input,r=s+(t.avail_in-5),i=t.next_out,f=t.output,a=i-(e-t.avail_out),n=i+(t.avail_out-257),o=g.dmax,p=g.wsize,l=g.whave,d=g.wnext,I=g.window,w=g.hold,_=g.bits,T=g.lencode,F=g.distcode,j=(1<>>24,w>>>=y,_-=y,y=O>>>16&255,y===0)f[i++]=O&65535;else if(y&16){A=O&65535,y&=15,y&&(_>>=y,_-=y),_<15&&(w+=k[s++]<<_,_+=8,w+=k[s++]<<_,_+=8),O=F[w&x];s:for(;;){if(y=O>>>24,w>>>=y,_-=y,y=O>>>16&255,y&16){if(Z=O&65535,y&=15,_o){t.msg=\"invalid distance too far back\",g.mode=Ce;break t}if(w>>>=y,_-=y,y=i-a,Z>y){if(y=Z-y,y>l&&g.sane){t.msg=\"invalid distance too far back\",g.mode=Ce;break t}if(R=0,b=I,d===0){if(R+=p-y,y2;)f[i++]=b[R++],f[i++]=b[R++],f[i++]=b[R++],A-=3;A&&(f[i++]=b[R++],A>1&&(f[i++]=b[R++]))}else{R=i-Z;do f[i++]=f[R++],f[i++]=f[R++],f[i++]=f[R++],A-=3;while(A>2);A&&(f[i++]=f[R++],A>1&&(f[i++]=f[R++]))}}else if((y&64)===0){O=F[(O&65535)+(w&(1<>3,s-=A,_-=A<<3,w&=(1<<_)-1,t.next_in=s,t.next_out=i,t.avail_in=s{let p=o.bits,l=0,d=0,I=0,w=0,_=0,T=0,F=0,j=0,x=0,O=0,y,A,Z,R,b,k=null,f=0,g,m=new Uint16Array(Qt+1),z=new Uint16Array(Qt+1),C=null,U=0,L,N,et;for(l=0;l<=Qt;l++)m[l]=0;for(d=0;d=1&&m[w]===0;w--);if(_>w&&(_=w),w===0)return i[a++]=1<<24|64<<16|0,i[a++]=1<<24|64<<16|0,o.bits=1,0;for(I=1;I0&&(t===ui||w!==1))return-1;for(z[1]=0,l=1;lci||t===_i&&x>bi)return 1;for(;;){L=l-F,n[d]g?(N=C[U+n[d]],et=k[f+n[d]]):(N=32+64,et=0),y=1<>F)+A]=L<<24|N<<16|et|0;while(A!==0);for(y=1<>=1;if(y!==0?(O&=y-1,O+=y):O=0,d++,--m[l]===0){if(l===w)break;l=e[s+n[d]]}if(l>_&&(O&R)!==Z){for(F===0&&(F=_),b+=I,T=l-F,j=1<ci||t===_i&&x>bi)return 1;Z=O&R,i[Z]=_<<24|T<<16|b-a|0}}return O!==0&&(i[b+O]=l-F<<24|64<<16|0),o.bits=_,0},be=Ko,Qo=0,Mr=1,zr=2,{Z_FINISH:fi,Z_BLOCK:$o,Z_TREES:Re,Z_OK:Yt,Z_STREAM_END:Jo,Z_NEED_DICT:tl,Z_STREAM_ERROR:_t,Z_DATA_ERROR:Vr,Z_MEM_ERROR:Er,Z_BUF_ERROR:el,Z_DEFLATED:pi}=se,Br=1,gi=2,wi=3,mi=4,yi=5,vi=6,Si=7,ki=8,Oi=9,Ii=10,Ye=11,mt=12,ds=13,Ai=14,hs=15,xi=16,ji=17,Ui=18,Fi=19,Me=20,ze=21,Ti=22,Ci=23,Ri=24,Mi=25,zi=26,cs=27,Vi=28,Ei=29,P=30,Nr=31,sl=32,il=852,rl=592,al=15,nl=al,Bi=t=>(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24);function ol(){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}var Dr=t=>{if(!t||!t.state)return _t;let e=t.state;return t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=e.wrap&1),e.mode=Br,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(il),e.distcode=e.distdyn=new Int32Array(rl),e.sane=1,e.back=-1,Yt},Zr=t=>{if(!t||!t.state)return _t;let e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Dr(t)},Pr=(t,e)=>{let s;if(!t||!t.state)return _t;let r=t.state;return e<0?(s=0,e=-e):(s=(e>>4)+1,e<48&&(e&=15)),e&&(e<8||e>15)?_t:(r.window!==null&&r.wbits!==e&&(r.window=null),r.wrap=s,r.wbits=e,Zr(t))},Lr=(t,e)=>{if(!t)return _t;let s=new ol;t.state=s,s.window=null;let r=Pr(t,e);return r!==Yt&&(t.state=null),r},ll=t=>Lr(t,nl),Ni=!0,bs,us,dl=t=>{if(Ni){bs=new Int32Array(512),us=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(be(Mr,t.lens,0,288,bs,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;be(zr,t.lens,0,32,us,0,t.work,{bits:5}),Ni=!1}t.lencode=bs,t.lenbits=9,t.distcode=us,t.distbits=5},Hr=(t,e,s,r)=>{let i,a=t.state;return a.window===null&&(a.wsize=1<=a.wsize?(a.window.set(e.subarray(s-a.wsize,s),0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),a.window.set(e.subarray(s-r,s-r+i),a.wnext),r-=i,r?(a.window.set(e.subarray(s-r,s),0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave{let s,r,i,a,n,o,p,l,d,I,w,_,T,F,j=0,x,O,y,A,Z,R,b,k,f=new Uint8Array(4),g,m,z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!t||!t.state||!t.output||!t.input&&t.avail_in!==0)return _t;s=t.state,s.mode===mt&&(s.mode=ds),n=t.next_out,i=t.output,p=t.avail_out,a=t.next_in,r=t.input,o=t.avail_in,l=s.hold,d=s.bits,I=o,w=p,k=Yt;t:for(;;)switch(s.mode){case Br:if(s.wrap===0){s.mode=ds;break}for(;d<16;){if(o===0)break t;o--,l+=r[a++]<>>8&255,s.check=q(s.check,f,2,0),l=0,d=0,s.mode=gi;break}if(s.flags=0,s.head&&(s.head.done=!1),!(s.wrap&1)||(((l&255)<<8)+(l>>8))%31){t.msg=\"incorrect header check\",s.mode=P;break}if((l&15)!==pi){t.msg=\"unknown compression method\",s.mode=P;break}if(l>>>=4,d-=4,b=(l&15)+8,s.wbits===0)s.wbits=b;else if(b>s.wbits){t.msg=\"invalid window size\",s.mode=P;break}s.dmax=1<>8&1),s.flags&512&&(f[0]=l&255,f[1]=l>>>8&255,s.check=q(s.check,f,2,0)),l=0,d=0,s.mode=wi;case wi:for(;d<32;){if(o===0)break t;o--,l+=r[a++]<>>8&255,f[2]=l>>>16&255,f[3]=l>>>24&255,s.check=q(s.check,f,4,0)),l=0,d=0,s.mode=mi;case mi:for(;d<16;){if(o===0)break t;o--,l+=r[a++]<>8),s.flags&512&&(f[0]=l&255,f[1]=l>>>8&255,s.check=q(s.check,f,2,0)),l=0,d=0,s.mode=yi;case yi:if(s.flags&1024){for(;d<16;){if(o===0)break t;o--,l+=r[a++]<>>8&255,s.check=q(s.check,f,2,0)),l=0,d=0}else s.head&&(s.head.extra=null);s.mode=vi;case vi:if(s.flags&1024&&(_=s.length,_>o&&(_=o),_&&(s.head&&(b=s.head.extra_len-s.length,s.head.extra||(s.head.extra=new Uint8Array(s.head.extra_len)),s.head.extra.set(r.subarray(a,a+_),b)),s.flags&512&&(s.check=q(s.check,r,_,a)),o-=_,a+=_,s.length-=_),s.length))break t;s.length=0,s.mode=Si;case Si:if(s.flags&2048){if(o===0)break t;_=0;do b=r[a+_++],s.head&&b&&s.length<65536&&(s.head.name+=String.fromCharCode(b));while(b&&_>9&1,s.head.done=!0),t.adler=s.check=0,s.mode=mt;break;case Ii:for(;d<32;){if(o===0)break t;o--,l+=r[a++]<>>=d&7,d-=d&7,s.mode=cs;break}for(;d<3;){if(o===0)break t;o--,l+=r[a++]<>>=1,d-=1,l&3){case 0:s.mode=Ai;break;case 1:if(dl(s),s.mode=Me,e===Re){l>>>=2,d-=2;break t}break;case 2:s.mode=ji;break;case 3:t.msg=\"invalid block type\",s.mode=P}l>>>=2,d-=2;break;case Ai:for(l>>>=d&7,d-=d&7;d<32;){if(o===0)break t;o--,l+=r[a++]<>>16^65535)){t.msg=\"invalid stored block lengths\",s.mode=P;break}if(s.length=l&65535,l=0,d=0,s.mode=hs,e===Re)break t;case hs:s.mode=xi;case xi:if(_=s.length,_){if(_>o&&(_=o),_>p&&(_=p),_===0)break t;i.set(r.subarray(a,a+_),n),o-=_,a+=_,p-=_,n+=_,s.length-=_;break}s.mode=mt;break;case ji:for(;d<14;){if(o===0)break t;o--,l+=r[a++]<>>=5,d-=5,s.ndist=(l&31)+1,l>>>=5,d-=5,s.ncode=(l&15)+4,l>>>=4,d-=4,s.nlen>286||s.ndist>30){t.msg=\"too many length or distance symbols\",s.mode=P;break}s.have=0,s.mode=Ui;case Ui:for(;s.have>>=3,d-=3}for(;s.have<19;)s.lens[z[s.have++]]=0;if(s.lencode=s.lendyn,s.lenbits=7,g={bits:s.lenbits},k=be(Qo,s.lens,0,19,s.lencode,0,s.work,g),s.lenbits=g.bits,k){t.msg=\"invalid code lengths set\",s.mode=P;break}s.have=0,s.mode=Fi;case Fi:for(;s.have>>24,O=j>>>16&255,y=j&65535,!(x<=d);){if(o===0)break t;o--,l+=r[a++]<>>=x,d-=x,s.lens[s.have++]=y;else{if(y===16){for(m=x+2;d>>=x,d-=x,s.have===0){t.msg=\"invalid bit length repeat\",s.mode=P;break}b=s.lens[s.have-1],_=3+(l&3),l>>>=2,d-=2}else if(y===17){for(m=x+3;d>>=x,d-=x,b=0,_=3+(l&7),l>>>=3,d-=3}else{for(m=x+7;d>>=x,d-=x,b=0,_=11+(l&127),l>>>=7,d-=7}if(s.have+_>s.nlen+s.ndist){t.msg=\"invalid bit length repeat\",s.mode=P;break}for(;_--;)s.lens[s.have++]=b}}if(s.mode===P)break;if(s.lens[256]===0){t.msg=\"invalid code -- missing end-of-block\",s.mode=P;break}if(s.lenbits=9,g={bits:s.lenbits},k=be(Mr,s.lens,0,s.nlen,s.lencode,0,s.work,g),s.lenbits=g.bits,k){t.msg=\"invalid literal/lengths set\",s.mode=P;break}if(s.distbits=6,s.distcode=s.distdyn,g={bits:s.distbits},k=be(zr,s.lens,s.nlen,s.ndist,s.distcode,0,s.work,g),s.distbits=g.bits,k){t.msg=\"invalid distances set\",s.mode=P;break}if(s.mode=Me,e===Re)break t;case Me:s.mode=ze;case ze:if(o>=6&&p>=258){t.next_out=n,t.avail_out=p,t.next_in=a,t.avail_in=o,s.hold=l,s.bits=d,Go(t,w),n=t.next_out,i=t.output,p=t.avail_out,a=t.next_in,r=t.input,o=t.avail_in,l=s.hold,d=s.bits,s.mode===mt&&(s.back=-1);break}for(s.back=0;j=s.lencode[l&(1<>>24,O=j>>>16&255,y=j&65535,!(x<=d);){if(o===0)break t;o--,l+=r[a++]<>A)],x=j>>>24,O=j>>>16&255,y=j&65535,!(A+x<=d);){if(o===0)break t;o--,l+=r[a++]<>>=A,d-=A,s.back+=A}if(l>>>=x,d-=x,s.back+=x,s.length=y,O===0){s.mode=zi;break}if(O&32){s.back=-1,s.mode=mt;break}if(O&64){t.msg=\"invalid literal/length code\",s.mode=P;break}s.extra=O&15,s.mode=Ti;case Ti:if(s.extra){for(m=s.extra;d>>=s.extra,d-=s.extra,s.back+=s.extra}s.was=s.length,s.mode=Ci;case Ci:for(;j=s.distcode[l&(1<>>24,O=j>>>16&255,y=j&65535,!(x<=d);){if(o===0)break t;o--,l+=r[a++]<>A)],x=j>>>24,O=j>>>16&255,y=j&65535,!(A+x<=d);){if(o===0)break t;o--,l+=r[a++]<>>=A,d-=A,s.back+=A}if(l>>>=x,d-=x,s.back+=x,O&64){t.msg=\"invalid distance code\",s.mode=P;break}s.offset=y,s.extra=O&15,s.mode=Ri;case Ri:if(s.extra){for(m=s.extra;d>>=s.extra,d-=s.extra,s.back+=s.extra}if(s.offset>s.dmax){t.msg=\"invalid distance too far back\",s.mode=P;break}s.mode=Mi;case Mi:if(p===0)break t;if(_=w-p,s.offset>_){if(_=s.offset-_,_>s.whave&&s.sane){t.msg=\"invalid distance too far back\",s.mode=P;break}_>s.wnext?(_-=s.wnext,T=s.wsize-_):T=s.wnext-_,_>s.length&&(_=s.length),F=s.window}else F=i,T=n-s.offset,_=s.length;_>p&&(_=p),p-=_,s.length-=_;do i[n++]=F[T++];while(--_);s.length===0&&(s.mode=ze);break;case zi:if(p===0)break t;i[n++]=s.length,p--,s.mode=ze;break;case cs:if(s.wrap){for(;d<32;){if(o===0)break t;o--,l|=r[a++]<{if(!t||!t.state)return _t;let e=t.state;return e.window&&(e.window=null),t.state=null,Yt},bl=(t,e)=>{if(!t||!t.state)return _t;let s=t.state;return(s.wrap&2)===0?_t:(s.head=e,e.done=!1,Yt)},ul=(t,e)=>{let s=e.length,r,i,a;return!t||!t.state||(r=t.state,r.wrap!==0&&r.mode!==Ye)?_t:r.mode===Ye&&(i=1,i=me(i,e,s,0),i!==r.check)?Vr:(a=Hr(t,e,s,s),a?(r.mode=Nr,Er):(r.havedict=1,Yt))},_l=Zr,fl=Pr,pl=Dr,gl=ll,wl=Lr,ml=hl,yl=cl,vl=bl,Sl=ul,kl=\"pako inflate (from Nodeca project)\",kt={inflateReset:_l,inflateReset2:fl,inflateResetKeep:pl,inflateInit:gl,inflateInit2:wl,inflate:ml,inflateEnd:yl,inflateGetHeader:vl,inflateSetDictionary:Sl,inflateInfo:kl};function Ol(){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}var Il=Ol,Gr=Object.prototype.toString,{Z_NO_FLUSH:Al,Z_FINISH:xl,Z_OK:Se,Z_STREAM_END:_s,Z_NEED_DICT:fs,Z_STREAM_ERROR:jl,Z_DATA_ERROR:Di,Z_MEM_ERROR:Ul}=se;function xe(t){this.options=Qe.assign({chunkSize:1024*64,windowBits:15,to:\"\"},t||{});let e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new Cr,this.strm.avail_out=0;let s=kt.inflateInit2(this.strm,e.windowBits);if(s!==Se)throw new Error(Lt[s]);if(this.header=new Il,kt.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary==\"string\"?e.dictionary=ve.string2buf(e.dictionary):Gr.call(e.dictionary)===\"[object ArrayBuffer]\"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(s=kt.inflateSetDictionary(this.strm,e.dictionary),s!==Se)))throw new Error(Lt[s])}xe.prototype.push=function(t,e){let s=this.strm,r=this.options.chunkSize,i=this.options.dictionary,a,n,o;if(this.ended)return!1;for(e===~~e?n=e:n=e===!0?xl:Al,Gr.call(t)===\"[object ArrayBuffer]\"?s.input=new Uint8Array(t):s.input=t,s.next_in=0,s.avail_in=s.input.length;;){for(s.avail_out===0&&(s.output=new Uint8Array(r),s.next_out=0,s.avail_out=r),a=kt.inflate(s,n),a===fs&&i&&(a=kt.inflateSetDictionary(s,i),a===Se?a=kt.inflate(s,n):a===Di&&(a=fs));s.avail_in>0&&a===_s&&s.state.wrap>0&&t[s.next_in]!==0;)kt.inflateReset(s),a=kt.inflate(s,n);switch(a){case jl:case Di:case fs:case Ul:return this.onEnd(a),this.ended=!0,!1}if(o=s.avail_out,s.next_out&&(s.avail_out===0||a===_s))if(this.options.to===\"string\"){let p=ve.utf8border(s.output,s.next_out),l=s.next_out-p,d=ve.buf2string(s.output,p);s.next_out=l,s.avail_out=r-l,l&&s.output.set(s.output.subarray(p,p+l),0),this.onData(d)}else this.onData(s.output.length===s.next_out?s.output:s.output.subarray(0,s.next_out));if(!(a===Se&&o===0)){if(a===_s)return a=kt.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(s.avail_in===0)break}}return!0};xe.prototype.onData=function(t){this.chunks.push(t)};xe.prototype.onEnd=function(t){t===Se&&(this.options.to===\"string\"?this.result=this.chunks.join(\"\"):this.result=Qe.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Ns(t,e){let s=new xe(e);if(s.push(t),s.err)throw s.msg||Lt[s.err];return s.result}function Fl(t,e){return e=e||{},e.raw=!0,Ns(t,e)}var Tl=xe,Cl=Ns,Rl=Fl,Ml=Ns,zl=se,Vl={Inflate:Tl,inflate:Cl,inflateRaw:Rl,ungzip:Ml,constants:zl},{Deflate:Gl,deflate:Yl,deflateRaw:El,gzip:Xl}=Lo,{Inflate:Wl,inflate:ql,inflateRaw:Bl,ungzip:Kl}=Vl,Nl=El,Dl=Bl,Yr=t=>Dl(t),xs=t=>Nl(t,{level:9}),Zl=class{constructor(){this.pendingMessages=[]}sendClientMessage(t,e){t.finish(e),this.doSendMessage(xs(t.asUint8Array()))}getPendingMessages(){return this.pendingMessages}markPendingMessagesAsRead(){this.pendingMessages.length=0}onMessage(t){this.pendingMessages.push(ct.getRootAsServerMessage(new ue(Yr(t))))}onDisconnection(){de(\"disconnected\")}},Pl=class{constructor(){this.usersPendingMessages=new Map,this.disconnectedUsers=[]}sendServerMessageTo(t,e,s){e.finish(s),this.doSendMessageTo(t,xs(e.asUint8Array()))}sendServerMessageToAll(t,e){t.finish(e);let s=xs(t.asUint8Array());for(let r of this.usersPendingMessages.keys())this.doSendMessageTo(r,s)}getUsersPendingMessages(){return this.usersPendingMessages.entries()}getConnectedUsers(){return this.usersPendingMessages.keys()}getDisconnectedUsers(){return this.disconnectedUsers}onMessage(t,e){this.usersPendingMessages.get(t).push(vt.getRootAsClientMessage(new ue(Yr(e))))}onConnection(t){this.usersPendingMessages.set(t,[])}onDisconnection(t){this.usersPendingMessages.delete(t),this.disconnectedUsers.push(t)}};gdjs.BBTextRuntimeObject&&(gdjs.BBTextRuntimeObject.prototype.getString=gdjs.BBTextRuntimeObject.prototype.getBBText,gdjs.BBTextRuntimeObject.prototype.setString=gdjs.BBTextRuntimeObject.prototype.setBBText),gdjs.BitmapTextRuntimeObject&&(gdjs.BitmapTextRuntimeObject.prototype.getString=gdjs.BitmapTextRuntimeObject.prototype.getText,gdjs.BitmapTextRuntimeObject.prototype.setString=gdjs.BitmapTextRuntimeObject.prototype.setText);return $r(Ll);})();\n/*! pako 2.0.4 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n", + "inlineCode": "}// Load THNK library (https://github.com/arthuro555/THNK)\nwindow.THNK=(()=>{var $e=Object.defineProperty;var Xr=Object.getOwnPropertyDescriptor;var Wr=Object.getOwnPropertyNames;var qr=Object.prototype.hasOwnProperty;var Kr=(t,e)=>{for(var s in e)$e(t,s,{get:e[s],enumerable:!0})},Qr=(t,e,s,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let i of Wr(e))!qr.call(t,i)&&i!==s&&$e(t,i,{get:()=>e[i],enumerable:!(r=Xr(e,i))||r.enumerable});return t};var $r=t=>Qr($e({},\"__esModule\",{value:!0}),t);var Ll={};Kr(Ll,{ClientAdapter:()=>Zl,ServerAdapter:()=>Pl,client:()=>lr,players:()=>tr,server:()=>Zi,settings:()=>er});var Jr=Object.defineProperty,Xe=(t,e)=>{for(var s in e)Jr(t,s,{get:e[s],enumerable:!0})},Zi={};Xe(Zi,{events:()=>Pa,startServer:()=>Za});var xt=new Int32Array(2),Ds=new Float32Array(xt.buffer),Zs=new Float64Array(xt.buffer),je=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1,ps;(function(t){t[t.UTF8_BYTES=1]=\"UTF8_BYTES\",t[t.UTF16_STRING=2]=\"UTF16_STRING\"})(ps||(ps={}));var ue=class{constructor(t){this.bytes_=t,this.position_=0,this.text_decoder_=new TextDecoder}static allocate(t){return new ue(new Uint8Array(t))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(t){this.position_=t}capacity(){return this.bytes_.length}readInt8(t){return this.readUint8(t)<<24>>24}readUint8(t){return this.bytes_[t]}readInt16(t){return this.readUint16(t)<<16>>16}readUint16(t){return this.bytes_[t]|this.bytes_[t+1]<<8}readInt32(t){return this.bytes_[t]|this.bytes_[t+1]<<8|this.bytes_[t+2]<<16|this.bytes_[t+3]<<24}readUint32(t){return this.readInt32(t)>>>0}readInt64(t){return BigInt.asIntN(64,BigInt(this.readUint32(t))+(BigInt(this.readUint32(t+4))<>8}writeUint16(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8}writeInt32(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24}writeUint32(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24}writeInt64(t,e){this.writeInt32(t,Number(BigInt.asIntN(32,e))),this.writeInt32(t+4,Number(BigInt.asIntN(32,e>>BigInt(32))))}writeUint64(t,e){this.writeUint32(t,Number(BigInt.asUintN(32,e))),this.writeUint32(t+4,Number(BigInt.asUintN(32,e>>BigInt(32))))}writeFloat32(t,e){Ds[0]=e,this.writeInt32(t,xt[0])}writeFloat64(t,e){Zs[0]=e,this.writeInt32(t,xt[je?0:1]),this.writeInt32(t+4,xt[je?1:0])}getBufferIdentifier(){if(this.bytes_.lengththis.minalign&&(this.minalign=t);let s=~(this.bb.capacity()-this.space+e)+1&t-1;for(;this.space=0&&this.vtable[e]==0;e--);let s=e+1;for(;e>=0;e--)this.addInt16(this.vtable[e]!=0?t-this.vtable[e]:0);let r=2;this.addInt16(t-this.object_start);let i=(s+r)*2;this.addInt16(i);let a=0,n=this.space;t:for(e=0;e=0;a--)this.writeInt8(i.charCodeAt(a))}this.prep(this.minalign,4+r),this.addOffset(t),r&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(t,e){this.finish(t,e,!0)}requiredField(t,e){let s=this.bb.capacity()-t,r=s-this.bb.readInt32(s);if(this.bb.readInt16(r+e)==0)throw new Error(\"FlatBuffers: field \"+e+\" must be set\")}startVector(t,e,s){this.notNested(),this.vector_num_elems=e,this.prep(4,t*e),this.prep(s,t*e)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(t){if(!t)return 0;if(this.string_maps||(this.string_maps=new Map),this.string_maps.has(t))return this.string_maps.get(t);let e=this.createString(t);return this.string_maps.set(t,e),e}createString(t){if(t==null)return 0;let e;t instanceof Uint8Array?e=t:e=this.text_encoder.encode(t),this.addInt8(0),this.startVector(1,e.length,1),this.bb.setPosition(this.space-=e.length);for(let s=0,r=this.space,i=this.bb.bytes();s=0;s--)t.addInt8(e[s]);return t.endVector()}static startContentVector(t,e){t.startVector(1,e,1)}static endClientInputMessage(t){let e=t.endObject();return t.requiredField(e,4),t.requiredField(e,6),e}static createClientInputMessage(t,e,s){return yt.startClientInputMessage(t),yt.addName(t,e),yt.addContent(t,s),yt.endClientInputMessage(t)}},Ut=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsConnectionRequestMessage(t,e){return(e||new Ut).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsConnectionRequestMessage(t,e){return t.setPosition(t.position()+4),(e||new Ut).__init(t.readInt32(t.position())+t.position(),t)}token(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}static startConnectionRequestMessage(t){t.startObject(1)}static addToken(t,e){t.addFieldOffset(0,e,0)}static endConnectionRequestMessage(t){return t.endObject()}static createConnectionRequestMessage(t,e){return Ut.startConnectionRequestMessage(t),Ut.addToken(t,e),Ut.endConnectionRequestMessage(t)}},vt=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsClientMessage(t,e){return(e||new vt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsClientMessage(t,e){return t.setPosition(t.position()+4),(e||new vt).__init(t.readInt32(t.position())+t.position(),t)}contentType(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint8(this.bb_pos+t):0}content(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__union(t,this.bb_pos+e):null}static startClientMessage(t){t.startObject(2)}static addContentType(t,e){t.addFieldInt8(0,e,0)}static addContent(t,e){t.addFieldOffset(1,e,0)}static endClientMessage(t){let e=t.endObject();return t.requiredField(e,6),e}static createClientMessage(t,e,s){return vt.startClientMessage(t),vt.addContentType(t,e),vt.addContent(t,s),vt.endClientMessage(t)}},D=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsVariable(t,e){return(e||new D).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsVariable(t,e){return t.setPosition(t.position()+4),(e||new D).__init(t.readInt32(t.position())+t.position(),t)}type(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint8(this.bb_pos+t):0}text(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}number(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readFloat32(this.bb_pos+t):0}boolean(){let t=this.bb.__offset(this.bb_pos,10);return t?!!this.bb.readInt8(this.bb_pos+t):!1}operations(t,e){let s=this.bb.__offset(this.bb_pos,12);return s?(e||new Y).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+s)+t*4),this.bb):null}operationsLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}static startVariable(t){t.startObject(5)}static addType(t,e){t.addFieldInt8(0,e,0)}static addText(t,e){t.addFieldOffset(1,e,0)}static addNumber(t,e){t.addFieldFloat32(2,e,0)}static addBoolean(t,e){t.addFieldInt8(3,+e,0)}static addOperations(t,e){t.addFieldOffset(4,e,0)}static createOperationsVector(t,e){t.startVector(4,e.length,4);for(let s=e.length-1;s>=0;s--)t.addOffset(e[s]);return t.endVector()}static startOperationsVector(t,e){t.startVector(4,e,4)}static endVariable(t){return t.endObject()}static createVariable(t,e,s,r,i,a){return D.startVariable(t),D.addType(t,e),D.addText(t,s),D.addNumber(t,r),D.addBoolean(t,i),D.addOperations(t,a),D.endVariable(t)}},Y=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsCollectionOperation(t,e){return(e||new Y).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsCollectionOperation(t,e){return t.setPosition(t.position()+4),(e||new Y).__init(t.readInt32(t.position())+t.position(),t)}operation(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint8(this.bb_pos+t):0}name(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}index(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readUint16(this.bb_pos+t):0}val(t){let e=this.bb.__offset(this.bb_pos,10);return e?(t||new D).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}static startCollectionOperation(t){t.startObject(4)}static addOperation(t,e){t.addFieldInt8(0,e,0)}static addName(t,e){t.addFieldOffset(1,e,0)}static addIndex(t,e){t.addFieldInt16(2,e,0)}static addVal(t,e){t.addFieldOffset(3,e,0)}static endCollectionOperation(t){return t.endObject()}},S=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsObjState(t,e){return(e||new S).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsObjState(t,e){return t.setPosition(t.position()+4),(e||new S).__init(t.readInt32(t.position())+t.position(),t)}x(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readFloat32(this.bb_pos+t):null}y(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.readFloat32(this.bb_pos+t):null}height(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.readFloat32(this.bb_pos+t):null}width(){let t=this.bb.__offset(this.bb_pos,10);return t?this.bb.readFloat32(this.bb_pos+t):null}angle(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.readFloat32(this.bb_pos+t):null}scale(){let t=this.bb.__offset(this.bb_pos,14);return t?this.bb.readFloat32(this.bb_pos+t):null}setXTo0(){let t=this.bb.__offset(this.bb_pos,16);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setYTo0(){let t=this.bb.__offset(this.bb_pos,18);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setHeightTo0(){let t=this.bb.__offset(this.bb_pos,20);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setWidthTo0(){let t=this.bb.__offset(this.bb_pos,22);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setAngleTo0(){let t=this.bb.__offset(this.bb_pos,24);return t?!!this.bb.readInt8(this.bb_pos+t):!1}setScaleTo0(){let t=this.bb.__offset(this.bb_pos,26);return t?!!this.bb.readInt8(this.bb_pos+t):!1}zOrder(){let t=this.bb.__offset(this.bb_pos,28);return t?this.bb.readUint16(this.bb_pos+t):null}bigZOrder(){let t=this.bb.__offset(this.bb_pos,30);return t?this.bb.readUint32(this.bb_pos+t):null}visible(){let t=this.bb.__offset(this.bb_pos,32);return t?this.bb.readUint8(this.bb_pos+t):null}flippedX(){let t=this.bb.__offset(this.bb_pos,34);return t?this.bb.readUint8(this.bb_pos+t):null}flippedY(){let t=this.bb.__offset(this.bb_pos,36);return t?this.bb.readUint8(this.bb_pos+t):null}opacity(){let t=this.bb.__offset(this.bb_pos,38);return t?this.bb.readUint8(this.bb_pos+t):null}setOpacityTo0(){let t=this.bb.__offset(this.bb_pos,40);return t?!!this.bb.readInt8(this.bb_pos+t):!1}animation(){let t=this.bb.__offset(this.bb_pos,42);return t?this.bb.readUint8(this.bb_pos+t):null}text(t){let e=this.bb.__offset(this.bb_pos,44);return e?this.bb.__string(this.bb_pos+e,t):null}static startObjState(t){t.startObject(21)}static addX(t,e){t.addFieldFloat32(0,e,0)}static addY(t,e){t.addFieldFloat32(1,e,0)}static addHeight(t,e){t.addFieldFloat32(2,e,0)}static addWidth(t,e){t.addFieldFloat32(3,e,0)}static addAngle(t,e){t.addFieldFloat32(4,e,0)}static addScale(t,e){t.addFieldFloat32(5,e,0)}static addSetXTo0(t,e){t.addFieldInt8(6,+e,0)}static addSetYTo0(t,e){t.addFieldInt8(7,+e,0)}static addSetHeightTo0(t,e){t.addFieldInt8(8,+e,0)}static addSetWidthTo0(t,e){t.addFieldInt8(9,+e,0)}static addSetAngleTo0(t,e){t.addFieldInt8(10,+e,0)}static addSetScaleTo0(t,e){t.addFieldInt8(11,+e,0)}static addZOrder(t,e){t.addFieldInt16(12,e,0)}static addBigZOrder(t,e){t.addFieldInt32(13,e,0)}static addVisible(t,e){t.addFieldInt8(14,e,0)}static addFlippedX(t,e){t.addFieldInt8(15,e,0)}static addFlippedY(t,e){t.addFieldInt8(16,e,0)}static addOpacity(t,e){t.addFieldInt8(17,e,0)}static addSetOpacityTo0(t,e){t.addFieldInt8(18,+e,0)}static addAnimation(t,e){t.addFieldInt8(19,e,0)}static addText(t,e){t.addFieldOffset(20,e,0)}static endObjState(t){return t.endObject()}static createObjState(t,e,s,r,i,a,n,o,p,l,d,I,w,_,T,F,j,x,O,y,A,Z){return S.startObjState(t),e!==null&&S.addX(t,e),s!==null&&S.addY(t,s),r!==null&&S.addHeight(t,r),i!==null&&S.addWidth(t,i),a!==null&&S.addAngle(t,a),n!==null&&S.addScale(t,n),S.addSetXTo0(t,o),S.addSetYTo0(t,p),S.addSetHeightTo0(t,l),S.addSetWidthTo0(t,d),S.addSetAngleTo0(t,I),S.addSetScaleTo0(t,w),_!==null&&S.addZOrder(t,_),T!==null&&S.addBigZOrder(t,T),F!==null&&S.addVisible(t,F),j!==null&&S.addFlippedX(t,j),x!==null&&S.addFlippedY(t,x),O!==null&&S.addOpacity(t,O),S.addSetOpacityTo0(t,y),A!==null&&S.addAnimation(t,A),S.addText(t,Z),S.endObjState(t)}},J=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsGameObject(t,e){return(e||new J).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsGameObject(t,e){return t.setPosition(t.position()+4),(e||new J).__init(t.readInt32(t.position())+t.position(),t)}id(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint16(this.bb_pos+t):0}name(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}objState(t){let e=this.bb.__offset(this.bb_pos,8);return e?(t||new S).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}variables(t){let e=this.bb.__offset(this.bb_pos,10);return e?(t||new D).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}packedVariables(t){let e=this.bb.__offset(this.bb_pos,12);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}packedVariablesLength(){let t=this.bb.__offset(this.bb_pos,12);return t?this.bb.__vector_len(this.bb_pos+t):0}packedVariablesArray(){let t=this.bb.__offset(this.bb_pos,12);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}static startGameObject(t){t.startObject(5)}static addId(t,e){t.addFieldInt16(0,e,0)}static addName(t,e){t.addFieldOffset(1,e,0)}static addObjState(t,e){t.addFieldOffset(2,e,0)}static addVariables(t,e){t.addFieldOffset(3,e,0)}static addPackedVariables(t,e){t.addFieldOffset(4,e,0)}static createPackedVariablesVector(t,e){t.startVector(1,e.length,1);for(let s=e.length-1;s>=0;s--)t.addInt8(e[s]);return t.endVector()}static startPackedVariablesVector(t,e){t.startVector(1,e,1)}static endGameObject(t){return t.endObject()}},st=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsGameStateSnapshot(t,e){return(e||new st).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsGameStateSnapshot(t,e){return t.setPosition(t.position()+4),(e||new st).__init(t.readInt32(t.position())+t.position(),t)}objects(t,e){let s=this.bb.__offset(this.bb_pos,4);return s?(e||new J).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+s)+t*4),this.bb):null}objectsLength(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__vector_len(this.bb_pos+t):0}variables(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.readUint8(this.bb.__vector(this.bb_pos+e)+t):0}variablesLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}variablesArray(){let t=this.bb.__offset(this.bb_pos,6);return t?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}static startGameStateSnapshot(t){t.startObject(2)}static addObjects(t,e){t.addFieldOffset(0,e,0)}static createObjectsVector(t,e){t.startVector(4,e.length,4);for(let s=e.length-1;s>=0;s--)t.addOffset(e[s]);return t.endVector()}static startObjectsVector(t,e){t.startVector(4,e,4)}static addVariables(t,e){t.addFieldOffset(1,e,0)}static createVariablesVector(t,e){t.startVector(1,e.length,1);for(let s=e.length-1;s>=0;s--)t.addInt8(e[s]);return t.endVector()}static startVariablesVector(t,e){t.startVector(1,e,1)}static endGameStateSnapshot(t){return t.endObject()}static createGameStateSnapshot(t,e,s){return st.startGameStateSnapshot(t),st.addObjects(t,e),st.addVariables(t,s),st.endGameStateSnapshot(t)}},Dt=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsConnectionStartMessage(t,e){return(e||new Dt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsConnectionStartMessage(t,e){return t.setPosition(t.position()+4),(e||new Dt).__init(t.readInt32(t.position())+t.position(),t)}sceneName(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}sceneSnapshot(t){let e=this.bb.__offset(this.bb_pos,6);return e?(t||new st).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}static startConnectionStartMessage(t){t.startObject(2)}static addSceneName(t,e){t.addFieldOffset(0,e,0)}static addSceneSnapshot(t,e){t.addFieldOffset(1,e,0)}static endConnectionStartMessage(t){let e=t.endObject();return t.requiredField(e,4),t.requiredField(e,6),e}},jt=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsCreatedObject(t,e){return(e||new jt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsCreatedObject(t,e){return t.setPosition(t.position()+4),(e||new jt).__init(t.readInt32(t.position())+t.position(),t)}id(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint16(this.bb_pos+t):0}name(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}static startCreatedObject(t){t.startObject(2)}static addId(t,e){t.addFieldInt16(0,e,0)}static addName(t,e){t.addFieldOffset(1,e,0)}static endCreatedObject(t){let e=t.endObject();return t.requiredField(e,6),e}static createCreatedObject(t,e,s){return jt.startCreatedObject(t),jt.addId(t,e),jt.addName(t,s),jt.endCreatedObject(t)}},nt=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsGameStateDiff(t,e){return(e||new nt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsGameStateDiff(t,e){return t.setPosition(t.position()+4),(e||new nt).__init(t.readInt32(t.position())+t.position(),t)}objects(t,e){let s=this.bb.__offset(this.bb_pos,4);return s?(e||new J).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+s)+t*4),this.bb):null}objectsLength(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.__vector_len(this.bb_pos+t):0}createdObjects(t,e){let s=this.bb.__offset(this.bb_pos,6);return s?(e||new jt).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+s)+t*4),this.bb):null}createdObjectsLength(){let t=this.bb.__offset(this.bb_pos,6);return t?this.bb.__vector_len(this.bb_pos+t):0}deletedObjects(t){let e=this.bb.__offset(this.bb_pos,8);return e?this.bb.readUint16(this.bb.__vector(this.bb_pos+e)+t*2):0}deletedObjectsLength(){let t=this.bb.__offset(this.bb_pos,8);return t?this.bb.__vector_len(this.bb_pos+t):0}deletedObjectsArray(){let t=this.bb.__offset(this.bb_pos,8);return t?new Uint16Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+t),this.bb.__vector_len(this.bb_pos+t)):null}variables(t){let e=this.bb.__offset(this.bb_pos,10);return e?(t||new D).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}static startGameStateDiff(t){t.startObject(4)}static addObjects(t,e){t.addFieldOffset(0,e,0)}static createObjectsVector(t,e){t.startVector(4,e.length,4);for(let s=e.length-1;s>=0;s--)t.addOffset(e[s]);return t.endVector()}static startObjectsVector(t,e){t.startVector(4,e,4)}static addCreatedObjects(t,e){t.addFieldOffset(1,e,0)}static createCreatedObjectsVector(t,e){t.startVector(4,e.length,4);for(let s=e.length-1;s>=0;s--)t.addOffset(e[s]);return t.endVector()}static startCreatedObjectsVector(t,e){t.startVector(4,e,4)}static addDeletedObjects(t,e){t.addFieldOffset(2,e,0)}static createDeletedObjectsVector(t,e){t.startVector(2,e.length,2);for(let s=e.length-1;s>=0;s--)t.addInt16(e[s]);return t.endVector()}static startDeletedObjectsVector(t,e){t.startVector(2,e,2)}static addVariables(t,e){t.addFieldOffset(3,e,0)}static endGameStateDiff(t){return t.endObject()}},Nt=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsGameStateUpdateMessage(t,e){return(e||new Nt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsGameStateUpdateMessage(t,e){return t.setPosition(t.position()+4),(e||new Nt).__init(t.readInt32(t.position())+t.position(),t)}newState(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new nt).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}static startGameStateUpdateMessage(t){t.startObject(1)}static addNewState(t,e){t.addFieldOffset(0,e,0)}static endGameStateUpdateMessage(t){let e=t.endObject();return t.requiredField(e,4),e}static createGameStateUpdateMessage(t,e){return Nt.startGameStateUpdateMessage(t),Nt.addNewState(t,e),Nt.endGameStateUpdateMessage(t)}},dt=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsResumePreviousSceneMessage(t,e){return(e||new dt).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsResumePreviousSceneMessage(t,e){return t.setPosition(t.position()+4),(e||new dt).__init(t.readInt32(t.position())+t.position(),t)}snapshot(t){let e=this.bb.__offset(this.bb_pos,4);return e?(t||new st).__init(this.bb.__indirect(this.bb_pos+e),this.bb):null}name(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__string(this.bb_pos+e,t):null}static startResumePreviousSceneMessage(t){t.startObject(2)}static addSnapshot(t,e){t.addFieldOffset(0,e,0)}static addName(t,e){t.addFieldOffset(1,e,0)}static endResumePreviousSceneMessage(t){return t.endObject()}static createResumePreviousSceneMessage(t,e,s){return dt.startResumePreviousSceneMessage(t),dt.addSnapshot(t,e),dt.addName(t,s),dt.endResumePreviousSceneMessage(t)}},ht=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsSceneSwitchMessage(t,e){return(e||new ht).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsSceneSwitchMessage(t,e){return t.setPosition(t.position()+4),(e||new ht).__init(t.readInt32(t.position())+t.position(),t)}sceneName(t){let e=this.bb.__offset(this.bb_pos,4);return e?this.bb.__string(this.bb_pos+e,t):null}isPause(){let t=this.bb.__offset(this.bb_pos,6);return t?!!this.bb.readInt8(this.bb_pos+t):!1}static startSceneSwitchMessage(t){t.startObject(2)}static addSceneName(t,e){t.addFieldOffset(0,e,0)}static addIsPause(t,e){t.addFieldInt8(1,+e,0)}static endSceneSwitchMessage(t){let e=t.endObject();return t.requiredField(e,4),e}static createSceneSwitchMessage(t,e,s){return ht.startSceneSwitchMessage(t),ht.addSceneName(t,e),ht.addIsPause(t,s),ht.endSceneSwitchMessage(t)}},ct=class{constructor(){this.bb=null,this.bb_pos=0}__init(t,e){return this.bb_pos=t,this.bb=e,this}static getRootAsServerMessage(t,e){return(e||new ct).__init(t.readInt32(t.position())+t.position(),t)}static getSizePrefixedRootAsServerMessage(t,e){return t.setPosition(t.position()+4),(e||new ct).__init(t.readInt32(t.position())+t.position(),t)}contentType(){let t=this.bb.__offset(this.bb_pos,4);return t?this.bb.readUint8(this.bb_pos+t):0}content(t){let e=this.bb.__offset(this.bb_pos,6);return e?this.bb.__union(t,this.bb_pos+e):null}static startServerMessage(t){t.startObject(2)}static addContentType(t,e){t.addFieldInt8(0,e,0)}static addContent(t,e){t.addFieldOffset(1,e,0)}static endServerMessage(t){let e=t.endObject();return t.requiredField(e,6),e}static createServerMessage(t,e,s){return ct.startServerMessage(t),ct.addContentType(t,e),ct.addContent(t,s),ct.endServerMessage(t)}},gs;try{gs=new TextDecoder}catch{}var v,Ot,h=0,it={},B,Tt,lt=0,pt=0,K,It,at=[],E,Ps={useRecords:!1,mapsAsObjects:!0},Pi=class{},Li=new Pi;Li.name=\"MessagePack 0xC1\";var te=!1,Hi=2;try{new Function(\"\")}catch{Hi=1/0}var Ze=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.sequential&&t.trusted!==!1&&(t.trusted=!0,!t.structures&&t.useRecords!=!1&&(t.structures=[],t.maxSharedStructures||(t.maxSharedStructures=0))),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(v)return qi(()=>(ms(),this?this.unpack(t,e):Ze.prototype.unpack.call(Ps,t,e)));Ot=e>-1?e:t.length,h=0,pt=0,Tt=null,K=null,v=t;try{E=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(s){throw v=null,t instanceof Uint8Array?s:new Error(\"Source must be a Uint8Array or Buffer but was a \"+(t&&typeof t==\"object\"?t.constructor.name:typeof t))}if(this instanceof Ze){if(it=this,this.structures)return B=this.structures,Ue();(!B||B.length>0)&&(B=[])}else it=Ps,(!B||B.length>0)&&(B=[]);return Ue()}unpackMultiple(t,e){let s,r=0;try{te=!0;let i=t.length,a=this?this.unpack(t,i):Ki.unpack(t,i);if(e){for(e(a);h=32&&(i.highByte=s-32>>5))}t.sharedLength=t.length;for(let s in e||[])if(s>=0){let r=t[s],i=e[s];i&&(r&&((t.restoreStructures||(t.restoreStructures=[]))[s]=r),t[s]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Ue(){try{if(!it.trusted&&!te){let e=B.sharedLength||0;eOt)throw new Error(\"Unexpected end of MessagePack data\");if(!te)throw new Error(\"Data read, but end of buffer not reached \"+JSON.stringify(t).slice(0,100))}return t}catch(t){throw B.restoreStructures&&Ls(),ms(),(t instanceof RangeError||t.message.startsWith(\"Unexpected end of buffer\")||h>Ot)&&(t.incomplete=!0),t}}function Ls(){for(let t in B.restoreStructures)B[t]=B.restoreStructures[t];B.restoreStructures=null}function G(){let t=v[h++];if(t<160)if(t<128){if(t<64)return t;{let e=B[t&63]||it.getStructures&&Gi()[t&63];return e?(e.read||(e.read=js(e,t&63)),e.read()):t}}else if(t<144)if(t-=128,it.mapsAsObjects){let e={};for(let s=0;s=h)return Tt.slice(h-lt,(h+=e)-lt);if(pt==0&&Ot<140){let s=e<16?Us(e):Yi(e);if(s!=null)return s}return ws(e)}else{let e;switch(t){case 192:return null;case 193:return K?(e=G(),e>0?K[1].slice(K.position1,K.position1+=e):K[0].slice(K.position0,K.position0-=e)):Li;case 194:return!1;case 195:return!0;case 196:if(e=v[h++],e===void 0)throw new Error(\"Unexpected end of buffer\");return Je(e);case 197:return e=E.getUint16(h),h+=2,Je(e);case 198:return e=E.getUint32(h),h+=4,Je(e);case 199:return Bt(v[h++]);case 200:return e=E.getUint16(h),h+=2,Bt(e);case 201:return e=E.getUint32(h),h+=4,Bt(e);case 202:if(e=E.getFloat32(h),it.useFloat32>2){let s=Fs[(v[h]&127)<<1|v[h+1]>>7];return h+=4,(s*e+(e>0?.5:-.5)>>0)/s}return h+=4,e;case 203:return e=E.getFloat64(h),h+=8,e;case 204:return v[h++];case 205:return e=E.getUint16(h),h+=2,e;case 206:return e=E.getUint32(h),h+=4,e;case 207:return it.int64AsNumber?(e=E.getUint32(h)*4294967296,e+=E.getUint32(h+4)):e=E.getBigUint64(h),h+=8,e;case 208:return E.getInt8(h++);case 209:return e=E.getInt16(h),h+=2,e;case 210:return e=E.getInt32(h),h+=4,e;case 211:return it.int64AsNumber?(e=E.getInt32(h)*4294967296,e+=E.getUint32(h+4)):e=E.getBigInt64(h),h+=8,e;case 212:if(e=v[h++],e==114)return qs(v[h++]&63);{let s=at[e];if(s)return s.read?(h++,s.read(G())):s.noBuffer?(h++,s()):s(v.subarray(h,++h));throw new Error(\"Unknown extension \"+e)}case 213:return e=v[h],e==114?(h++,qs(v[h++]&63,v[h++])):Bt(2);case 214:return Bt(4);case 215:return Bt(8);case 216:return Bt(16);case 217:return e=v[h++],pt>=h?Tt.slice(h-lt,(h+=e)-lt):ea(e);case 218:return e=E.getUint16(h),h+=2,pt>=h?Tt.slice(h-lt,(h+=e)-lt):sa(e);case 219:return e=E.getUint32(h),h+=4,pt>=h?Tt.slice(h-lt,(h+=e)-lt):ia(e);case 220:return e=E.getUint16(h),h+=2,Gs(e);case 221:return e=E.getUint32(h),h+=4,Gs(e);case 222:return e=E.getUint16(h),h+=2,Ys(e);case 223:return e=E.getUint32(h),h+=4,Ys(e);default:if(t>=224)return t-256;if(t===void 0){let s=new Error(\"Unexpected end of MessagePack data\");throw s.incomplete=!0,s}throw new Error(\"Unknown MessagePack token \"+t)}}}var ta=/^[a-zA-Z_$][a-zA-Z\\d_$]*$/;function js(t,e){function s(){if(s.count++>Hi){let i=t.read=new Function(\"r\",\"return function(){return {\"+t.map(a=>a===\"__proto__\"?\"__proto_:r()\":ta.test(a)?a+\":r()\":\"[\"+JSON.stringify(a)+\"]:r()\").join(\",\")+\"}}\")(G);return t.highByte===0&&(t.read=Hs(e,t.read)),i()}let r={};for(let i=0,a=t.length;ifunction(){let s=v[h++];if(s===0)return e();let r=t<32?-(t+(s<<5)):t+(s<<5),i=B[r]||Gi()[r];if(!i)throw new Error(\"Record id is not defined for \"+r);return i.read||(i.read=js(i,t)),i.read()};function Gi(){let t=qi(()=>(v=null,it.getStructures()));return B=it._mergeStructures(t,B)}var ws=ke,ea=ke,sa=ke,ia=ke;function ke(t){let e;if(t<16&&(e=Us(t)))return e;if(t>64&&gs)return gs.decode(v.subarray(h,h+=t));let s=h+t,r=[];for(e=\"\";h65535&&(p-=65536,r.push(p>>>10&1023|55296),p=56320|p&1023),r.push(p)}else r.push(i);r.length>=4096&&(e+=W.apply(String,r),r.length=0)}return r.length>0&&(e+=W.apply(String,r)),e}function Gs(t){let e=new Array(t);for(let s=0;s0){h=e;return}s[r]=i}return W.apply(String,s)}function Us(t){if(t<4)if(t<2){if(t===0)return\"\";{let e=v[h++];if((e&128)>1){h-=1;return}return W(e)}}else{let e=v[h++],s=v[h++];if((e&128)>0||(s&128)>0){h-=2;return}if(t<3)return W(e,s);let r=v[h++];if((r&128)>0){h-=3;return}return W(e,s,r)}else{let e=v[h++],s=v[h++],r=v[h++],i=v[h++];if((e&128)>0||(s&128)>0||(r&128)>0||(i&128)>0){h-=4;return}if(t<6){if(t===4)return W(e,s,r,i);{let a=v[h++];if((a&128)>0){h-=5;return}return W(e,s,r,i,a)}}else if(t<8){let a=v[h++],n=v[h++];if((a&128)>0||(n&128)>0){h-=6;return}if(t<7)return W(e,s,r,i,a,n);let o=v[h++];if((o&128)>0){h-=7;return}return W(e,s,r,i,a,n,o)}else{let a=v[h++],n=v[h++],o=v[h++],p=v[h++];if((a&128)>0||(n&128)>0||(o&128)>0||(p&128)>0){h-=8;return}if(t<10){if(t===8)return W(e,s,r,i,a,n,o,p);{let l=v[h++];if((l&128)>0){h-=9;return}return W(e,s,r,i,a,n,o,p,l)}}else if(t<12){let l=v[h++],d=v[h++];if((l&128)>0||(d&128)>0){h-=10;return}if(t<11)return W(e,s,r,i,a,n,o,p,l,d);let I=v[h++];if((I&128)>0){h-=11;return}return W(e,s,r,i,a,n,o,p,l,d,I)}else{let l=v[h++],d=v[h++],I=v[h++],w=v[h++];if((l&128)>0||(d&128)>0||(I&128)>0||(w&128)>0){h-=12;return}if(t<14){if(t===12)return W(e,s,r,i,a,n,o,p,l,d,I,w);{let _=v[h++];if((_&128)>0){h-=13;return}return W(e,s,r,i,a,n,o,p,l,d,I,w,_)}}else{let _=v[h++],T=v[h++];if((_&128)>0||(T&128)>0){h-=14;return}if(t<15)return W(e,s,r,i,a,n,o,p,l,d,I,w,_,T);let F=v[h++];if((F&128)>0){h-=15;return}return W(e,s,r,i,a,n,o,p,l,d,I,w,_,T,F)}}}}}function Xs(){let t=v[h++],e;if(t<192)e=t-160;else switch(t){case 217:e=v[h++];break;case 218:e=E.getUint16(h),h+=2;break;case 219:e=E.getUint32(h),h+=4;break;default:throw new Error(\"Expected string\")}return ke(e)}function Je(t){return it.copyBuffers?Uint8Array.prototype.slice.call(v,h,h+=t):v.subarray(h,h+=t)}function Bt(t){let e=v[h++];if(at[e])return at[e](v.subarray(h,h+=t));throw new Error(\"Unknown extension type \"+e)}var Ws=new Array(4096);function Xi(){let t=v[h++];if(t>=160&&t<192){if(t=t-160,pt>=h)return Tt.slice(h-lt,(h+=t)-lt);if(!(pt==0&&Ot<180))return ws(t)}else return h--,G();let e=(t<<5^(t>1?E.getUint16(h):t>0?v[h]:0))&4095,s=Ws[e],r=h,i=h+t-3,a,n=0;if(s&&s.bytes==t){for(;r{var s=G();let r=t;e!==void 0&&(t=t<32?-((e<<5)+t):(e<<5)+t,s.highByte=e);let i=B[t];return i&&i.isShared&&((B.restoreStructures||(B.restoreStructures=[]))[t]=i),B[t]=s,s.read=js(s,r),s.read()};at[0]=()=>{};at[0].noBuffer=!0;at[101]=()=>{let t=G();return(globalThis[t[0]]||Error)(t[1])};at[105]=t=>{let e=E.getUint32(h-4);It||(It=new Map);let s=v[h],r;s>=144&&s<160||s==220||s==221?r=[]:r={};let i={target:r};It.set(e,i);let a=G();return i.used?Object.assign(r,a):(i.target=a,a)};at[112]=t=>{let e=E.getUint32(h-4),s=It.get(e);return s.used=!0,s.target};at[115]=()=>new Set(G());var Wi=[\"Int8\",\"Uint8\",\"Uint8Clamped\",\"Int16\",\"Uint16\",\"Int32\",\"Uint32\",\"Float32\",\"Float64\",\"BigInt64\",\"BigUint64\"].map(t=>t+\"Array\");at[116]=t=>{let e=t[0],s=Wi[e];if(!s)throw new Error(\"Could not find typed array for code \"+e);return new globalThis[s](Uint8Array.prototype.slice.call(t,1).buffer)};at[120]=()=>{let t=G();return new RegExp(t[0],t[1])};var ra=[];at[98]=t=>{let e=(t[0]<<24)+(t[1]<<16)+(t[2]<<8)+t[3],s=h;return h+=e-t.length,K=ra,K=[Xs(),Xs()],K.position0=0,K.position1=0,K.postBundlePosition=h,h=s,G()};at[255]=t=>t.length==4?new Date((t[0]*16777216+(t[1]<<16)+(t[2]<<8)+t[3])*1e3):t.length==8?new Date(((t[0]<<22)+(t[1]<<14)+(t[2]<<6)+(t[3]>>2))/1e6+((t[3]&3)*4294967296+t[4]*16777216+(t[5]<<16)+(t[6]<<8)+t[7])*1e3):t.length==12?new Date(((t[0]<<24)+(t[1]<<16)+(t[2]<<8)+t[3])/1e6+((t[4]&128?-281474976710656:0)+t[6]*1099511627776+t[7]*4294967296+t[8]*16777216+(t[9]<<16)+(t[10]<<8)+t[11])*1e3):new Date(\"invalid\");function qi(t){let e=Ot,s=h,r=lt,i=pt,a=Tt,n=It,o=K,p=new Uint8Array(v.slice(0,Ot)),l=B,d=B.slice(0,B.length),I=it,w=te,_=t();return Ot=e,h=s,lt=r,pt=i,Tt=a,It=n,K=o,v=p,te=w,B=l,B.splice(0,B.length,...d),it=I,E=new DataView(v.buffer,v.byteOffset,v.byteLength),_}function ms(){v=null,It=null,B=null}var Fs=new Array(147);for(let t=0;t<256;t++)Fs[t]=+(\"1e\"+Math.floor(45.15-t*.30103));var Ki=new Ze({useRecords:!1}),aa=Ki.unpack,Ve;try{Ve=new TextEncoder}catch{}var ys,Qi,We=typeof Buffer<\"u\",Fe=We?function(t){return Buffer.allocUnsafeSlow(t)}:Uint8Array,$i=We?Buffer:Uint8Array,Ks=We?4294967296:2144337920,u,ae,H,c=0,tt,X=null,na=61440,oa=/[\\u0080-\\uFFFF]/,qt=Symbol(\"record-id\"),la=class extends Ze{constructor(t){super(t),this.offset=0;let e,s,r,i,a=0,n=$i.prototype.utf8Write?function(b,k){return u.utf8Write(b,k,4294967295)}:Ve&&Ve.encodeInto?function(b,k){return Ve.encodeInto(b,u.subarray(k)).written}:!1,o=this;t||(t={});let p=t&&t.sequential,l=t.structures||t.saveStructures,d=t.maxSharedStructures;if(d==null&&(d=l?32:0),d>8160)throw new Error(\"Maximum maxSharedStructure is 8160\");t.structuredClone&&t.moreTypes==null&&(t.moreTypes=!0);let I=t.maxOwnStructures;I==null&&(I=l?32:64),!this.structures&&t.useRecords!=!1&&(this.structures=[]);let w=d>32||I+d>64,_=d+64,T=d+I+64;if(T>8256)throw new Error(\"Maximum maxSharedStructure + maxOwnStructure is 8192\");let F=[],j=0,x=0;this.pack=this.encode=function(b,k){if(u||(u=new Fe(8192),H=new DataView(u.buffer,0,8192),c=0),tt=u.length-10,tt-c<2048?(u=new Fe(u.length),H=new DataView(u.buffer,0,u.length),tt=u.length-10,c=0):c=c+7&2147483640,e=c,i=o.structuredClone?new Map:null,o.bundleStrings&&typeof b!=\"string\"?(X=[],X.size=1/0):X=null,r=o.structures,r){r.uninitialized&&(r=o._mergeStructures(o.getStructures()));let f=r.sharedLength||0;if(f>d)throw new Error(\"Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to \"+r.sharedLength);if(!r.transitions){r.transitions=Object.create(null);for(let g=0;gtt&&A(c),o.offset=c;let f=ha(u.subarray(e,c),i.idsToInsert);return i=null,f}return k&ua?(u.start=e,u.end=c,u):u.subarray(e,c)}finally{if(r){x<10&&x++;let f=r.sharedLength||d;if(r.length>f&&(r.length=f),j>1e4)r.transitions=null,x=0,j=0,F.length>0&&(F=[]);else if(F.length>0&&!p){for(let g=0,m=F.length;g{c>tt&&(u=A(c));var k=typeof b,f;if(k===\"string\"){let g=b.length;if(X&&g>=4&&g<4096){if((X.size+=g)>na){let U,L=(X[0]?X[0].length*3+X[1].length:0)+10;c+L>tt&&(u=A(c+L)),X.position?(u[c]=200,c+=3,u[c++]=98,U=c-e,c+=4,Js(e,O),H.setUint16(U+e-3,c-e-U)):(u[c++]=214,u[c++]=98,U=c-e,c+=4),X=[\"\",\"\"],X.size=0,X.position=U}let C=oa.test(b);X[C?0:1]+=b,u[c++]=193,O(C?-g:g);return}let m;g<32?m=1:g<256?m=2:g<65536?m=3:m=5;let z=g*3;if(c+z>tt&&(u=A(c+z)),g<64||!n){let C,U,L,N=c+m;for(C=0;C>6|192,u[N++]=U&63|128):(U&64512)===55296&&((L=b.charCodeAt(C+1))&64512)===56320?(U=65536+((U&1023)<<10)+(L&1023),C++,u[N++]=U>>18|240,u[N++]=U>>12&63|128,u[N++]=U>>6&63|128,u[N++]=U&63|128):(u[N++]=U>>12|224,u[N++]=U>>6&63|128,u[N++]=U&63|128);f=N-c-m}else f=n(b,c+m);f<32?u[c++]=160|f:f<256?(m<2&&u.copyWithin(c+2,c+1,c+1+f),u[c++]=217,u[c++]=f):f<65536?(m<3&&u.copyWithin(c+3,c+2,c+2+f),u[c++]=218,u[c++]=f>>8,u[c++]=f&255):(m<5&&u.copyWithin(c+5,c+3,c+3+f),u[c++]=219,H.setUint32(c,f),c+=4),c+=f}else if(k===\"number\")if(b>>>0===b)b<64||b<128&&this.useRecords===!1?u[c++]=b:b<256?(u[c++]=204,u[c++]=b):b<65536?(u[c++]=205,u[c++]=b>>8,u[c++]=b&255):(u[c++]=206,H.setUint32(c,b),c+=4);else if(b>>0===b)b>=-32?u[c++]=256+b:b>=-128?(u[c++]=208,u[c++]=b+256):b>=-32768?(u[c++]=209,H.setInt16(c,b),c+=2):(u[c++]=210,H.setInt32(c,b),c+=4);else{let g;if((g=this.useFloat32)>0&&b<4294967296&&b>=-2147483648){u[c++]=202,H.setFloat32(c,b);let m;if(g<4||(m=b*Fs[(u[c]&127)<<1|u[c+1]>>7])>>0===m){c+=4;return}else c--}u[c++]=203,H.setFloat64(c,b),c+=8}else if(k===\"object\")if(!b)u[c++]=192;else{if(i){let m=i.get(b);if(m){if(!m.id){let z=i.idsToInsert||(i.idsToInsert=[]);m.id=z.push(m)}u[c++]=214,u[c++]=112,H.setUint32(c,m.id),c+=4;return}else i.set(b,{offset:c-e})}let g=b.constructor;if(g===Object)y(b,!0);else if(g===Array){f=b.length,f<16?u[c++]=144|f:f<65536?(u[c++]=220,u[c++]=f>>8,u[c++]=f&255):(u[c++]=221,H.setUint32(c,f),c+=4);for(let m=0;m>8,u[c++]=f&255):(u[c++]=223,H.setUint32(c,f),c+=4);for(let[m,z]of b)O(m),O(z)}else{for(let m=0,z=ys.length;m(u=L,L=null,c+=re,c>tt&&A(c),{target:u,targetView:H,position:c-re}),O)}finally{L&&(u=L,H=N,c=et,tt=u.length-10)}Et&&(Et.length+c>tt&&A(Et.length+c),c=da(Et,u,c,U.type));return}}y(b,!b.hasOwnProperty)}}else if(k===\"boolean\")u[c++]=b?195:194;else if(k===\"bigint\"){if(b=-(BigInt(1)<0)u[c++]=207,H.setBigUint64(c,b);else if(this.largeBigIntToFloat)u[c++]=203,H.setFloat64(c,Number(b));else throw new RangeError(b+\" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64\");c+=8}else if(k===\"undefined\")this.encodeUndefinedAsNil?u[c++]=192:(u[c++]=212,u[c++]=0,u[c++]=0);else if(k===\"function\")O(this.writeFunction&&this.writeFunction());else throw new Error(\"Unknown type: \"+k)},y=this.useRecords===!1?this.variableMapSize?b=>{let k=Object.keys(b),f=k.length;f<16?u[c++]=128|f:f<65536?(u[c++]=222,u[c++]=f>>8,u[c++]=f&255):(u[c++]=223,H.setUint32(c,f),c+=4);let g;for(let m=0;m{u[c++]=222;let f=c-e;c+=2;let g=0;for(let m in b)(k||b.hasOwnProperty(m))&&(O(m),O(b[m]),g++);u[f+++e]=g>>8,u[f+e]=g&255}:t.progressiveRecords&&!w?(b,k)=>{let f,g=r.transitions||(r.transitions=Object.create(null)),m=c++-e,z;for(let C in b)if(k||b.hasOwnProperty(C)){if(f=g[C],f)g=f;else{let U=Object.keys(b),L=g;g=r.transitions;let N=0;for(let et=0,Et=U.length;et{let f,g=r.transitions||(r.transitions=Object.create(null)),m=0;for(let C in b)(k||b.hasOwnProperty(C))&&(f=g[C],f||(f=g[C]=Object.create(null),m++),g=f);let z=g[qt];z?z>=96&&w?(u[c++]=((z-=96)&31)+96,u[c++]=z>>5):u[c++]=z:Z(g,g.__keys__||Object.keys(b),m);for(let C in b)(k||b.hasOwnProperty(C))&&O(b[C])},A=b=>{let k;if(b>16777216){if(b-e>Ks)throw new Error(\"Packed buffer would be larger than maximum buffer size\");k=Math.min(Ks,Math.round(Math.max((b-e)*(b>67108864?1.25:2),4194304)/4096)*4096)}else k=(Math.max(b-e<<2,u.length-1)>>12)+1<<12;let f=new Fe(k);return H=new DataView(f.buffer,0,k),b=Math.min(b,u.length),u.copy?u.copy(f,0,e,b):f.set(u.slice(e,b)),c-=e,e=0,tt=f.length-10,u=f},Z=(b,k,f)=>{let g=r.nextId;g||(g=64),g<_&&this.shouldShareStructure&&!this.shouldShareStructure(k)?(g=r.nextOwnId,g=T&&(g=_),r.nextId=g+1);let m=k.highByte=g>=96&&w?g-96>>5:-1;b[qt]=g,b.__keys__=k,r[g-64]=k,g<_?(k.isShared=!0,r.sharedLength=g-63,s=!0,m>=0?(u[c++]=(g&31)+96,u[c++]=m):u[c++]=g):(m>=0?(u[c++]=213,u[c++]=114,u[c++]=(g&31)+96,u[c++]=m):(u[c++]=212,u[c++]=114,u[c++]=g),f&&(j+=x*f),F.length>=I&&(F.shift()[qt]=0),F.push(b),O(k))},R=(b,k,f,g)=>{let m=u,z=c,C=tt,U=e;u=ae,c=0,e=0,u||(ae=u=new Fe(8192)),tt=u.length-10,Z(b,k,g),ae=u;let L=c;if(u=m,c=z,tt=C,e=U,L>1){let N=c+L-1;N>tt&&A(N);let et=f+e;u.copyWithin(et+L,et+1,c),u.set(ae.slice(0,L),et),c=N}else u[f+e]=ae[0]}}useBuffer(t){u=t,H=new DataView(u.buffer,u.byteOffset,u.byteLength),c=0}clearSharedData(){this.structures&&(this.structures=[])}};Qi=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Pi];ys=[{pack(t,e,s){let r=t.getTime()/1e3;if((this.useTimestamp32||t.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:i,targetView:a,position:n}=e(6);i[n++]=214,i[n++]=255,a.setUint32(n,r)}else if(r>0&&r<4294967296){let{target:i,targetView:a,position:n}=e(10);i[n++]=215,i[n++]=255,a.setUint32(n,t.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),a.setUint32(n+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return e(0),s(this.onInvalidDate());let{target:i,targetView:a,position:n}=e(3);i[n++]=212,i[n++]=255,i[n++]=255}else{let{target:i,targetView:a,position:n}=e(15);i[n++]=199,i[n++]=12,i[n++]=255,a.setUint32(n,t.getMilliseconds()*1e6),a.setBigInt64(n+4,BigInt(Math.floor(r)))}}},{pack(t,e,s){let r=Array.from(t),{target:i,position:a}=e(this.moreTypes?3:0);this.moreTypes&&(i[a++]=212,i[a++]=115,i[a++]=0),s(r)}},{pack(t,e,s){let{target:r,position:i}=e(this.moreTypes?3:0);this.moreTypes&&(r[i++]=212,r[i++]=101,r[i++]=0),s([t.name,t.message])}},{pack(t,e,s){let{target:r,position:i}=e(this.moreTypes?3:0);this.moreTypes&&(r[i++]=212,r[i++]=120,r[i++]=0),s([t.source,t.flags])}},{pack(t,e){this.moreTypes?Qs(t,16,e):$s(We?Buffer.from(t):new Uint8Array(t),e)}},{pack(t,e){let s=t.constructor;s!==$i&&this.moreTypes?Qs(t,Wi.indexOf(s.name),e):$s(t,e)}},{pack(t,e){let{target:s,position:r}=e(1);s[r]=193}}];function Qs(t,e,s,r){let i=t.byteLength;if(i+1<256){var{target:a,position:n}=s(4+i);a[n++]=199,a[n++]=i+1}else if(i+1<65536){var{target:a,position:n}=s(5+i);a[n++]=200,a[n++]=i+1>>8,a[n++]=i+1&255}else{var{target:a,position:n,targetView:o}=s(7+i);a[n++]=201,o.setUint32(n,i+1),n+=4}a[n++]=116,a[n++]=e,a.set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength),n)}function $s(t,e){let s=t.byteLength;var r,i;if(s<256){var{target:r,position:i}=e(s+2);r[i++]=196,r[i++]=s}else if(s<65536){var{target:r,position:i}=e(s+3);r[i++]=197,r[i++]=s>>8,r[i++]=s&255}else{var{target:r,position:i,targetView:a}=e(s+5);r[i++]=198,a.setUint32(i,s),i+=4}r.set(t,i)}function da(t,e,s,r){let i=t.length;switch(i){case 1:e[s++]=212;break;case 2:e[s++]=213;break;case 4:e[s++]=214;break;case 8:e[s++]=215;break;case 16:e[s++]=216;break;default:i<256?(e[s++]=199,e[s++]=i):i<65536?(e[s++]=200,e[s++]=i>>8,e[s++]=i&255):(e[s++]=201,e[s++]=i>>24,e[s++]=i>>16&255,e[s++]=i>>8&255,e[s++]=i&255)}return e[s++]=r,e.set(t,s),s+=i,s}function ha(t,e){let s,r=e.length*6,i=t.length-r;for(e.sort((a,n)=>a.offset>n.offset?1:-1);s=e.pop();){let a=s.offset,n=s.id;t.copyWithin(a+r,a,i),r-=6;let o=a+r;t[o++]=214,t[o++]=105,t[o++]=n>>24,t[o++]=n>>16&255,t[o++]=n>>8&255,t[o++]=n&255,i=a}return t}function Js(t,e){if(X.length>0){H.setUint32(X.position+t,c-X.position-t);let s=X;X=null,e(s[0]),e(s[1])}}var ca=new la({useRecords:!1}),ba=ca.pack,ua=512,_a=1024,Ts=t=>ba(t.toJSObject()),Cs=(t,e)=>t.fromJSObject(aa(e)),Ji=(t,e)=>{if(!e.thnkServer)return-1;let{syncedVariable:s,objectsRegistery:r}=e.thnkServer,i=s.getChildrenCount()!==0?st.createVariablesVector(t,Ts(s)):null,a=r.createObjectsSnapshot(t),n=a.length?st.createObjectsVector(t,a):null;return st.startGameStateSnapshot(t),i&&st.addVariables(t,i),n&&st.addObjects(t,n),st.endGameStateSnapshot(t)},fa=(t,e)=>{if(!e.thnkServer)return-1;let{syncedVariable:s,objectsRegistery:r}=e.thnkServer,i=s.isDirty()?s.serialize(t):null,a=r.diffObjects(t),n=a.length?nt.createObjectsVector(t,a):null,o=r.getCreatedObjects(),p=o.length?nt.createCreatedObjectsVector(t,o.map(([I,w])=>{let _=t.createSharedString(w);return jt.createCreatedObject(t,I,_)})):null,l=r.getDeletedObjects(),d=l.length?nt.createDeletedObjectsVector(t,l):null;return nt.startGameStateDiff(t),i&&nt.addVariables(t,i),n&&nt.addObjects(t,n),p&&nt.addCreatedObjects(t,p),d&&nt.addDeletedObjects(t,d),nt.endGameStateDiff(t)},pa=(t,e,s)=>{let r=new Xt(512),i=r.createString(s.getName()),a=Ji(r,s);Dt.startConnectionStartMessage(r),Dt.addSceneName(r,i),Dt.addSceneSnapshot(r,a),e.sendServerMessageTo(t,r,ct.createServerMessage(r,1,Dt.endConnectionStartMessage(r)))},ga=(t,e)=>{let s=new Xt(256),r=fa(s,e);t.sendServerMessageToAll(s,ct.createServerMessage(s,2,Nt.createGameStateUpdateMessage(s,r)))},wa=(t,e,s)=>{let r=new Xt(512),i=r.createString(e);ht.startSceneSwitchMessage(r),ht.addSceneName(r,i),ht.addIsPause(r,s),t.sendServerMessageToAll(r,ct.createServerMessage(r,3,ht.endSceneSwitchMessage(r)))},ts=(t,e,s)=>{let r=new Xt(512),i=s?r.createString(s.getName()):null,a=s?Ji(r,s):null;dt.startResumePreviousSceneMessage(r),a&&i&&(dt.addSnapshot(r,a),dt.addName(r,i));let n=ct.createServerMessage(r,4,dt.endResumePreviousSceneMessage(r));for(let o of t)e.sendServerMessageTo(o,r,n)},tr={};Xe(tr,{getCurrentPlayerID:()=>ma,markObjectAsOwned:()=>ya,pickOwnedObjects:()=>va,switchPlayerContext:()=>Pe});var _e=\"\",vs=new Map,ma=()=>_e,Pe=t=>{_e=t},ya=t=>{let e=vs.get(_e);e||vs.set(_e,e=new gdjs.LongLivedObjectsList),e.addObject(t.getName(),t)},va=t=>{let e=vs.get(_e);if(e)for(let[s,r]of Object.entries(t.items))gdjs.copyArray(e.getObjects(s),r)},ti=new Map,Rs=t=>{let e=ti.get(t);return e||ti.set(t,e=[]),e},Sa=(t,e,s)=>{Rs(e).push({initiatorUserID:t,serializedExtraData:s})},ka=(t,e,s)=>{Rs(e).push({initiatorUserID:t,extraData:s})},Oa=(t,e)=>{let s=Rs(t);if(s.length){let r=s.shift();return Pe(r.initiatorUserID),r.serializedExtraData?Cs(e,r.serializedExtraData):r.extraData&&gdjs.Variable.copy(r.extraData,e),!0}return!1},Ia=t=>{var e;return!!((e=t.thnkServer)!=null&&e.playerManager.popConnection())},Aa=t=>{var e;return!!((e=t.thnkServer)!=null&&e.playerManager.popDisconnection())},er={};Xe(er,{getTickRate:()=>rr,isDedicated:()=>ar,setDedicated:()=>xa,setTickRate:()=>ja});var sr=!1,ir=120,xa=()=>{sr=!0},ja=t=>{ir=Math.max(1,t)},rr=()=>ir,ar=()=>sr,ot=class extends gdjs.Variable{constructor(){super(...arguments),this.dirty=!0,this.operations=[]}static setupSyncedVariable(t,e=\"State\"){let s=new ot;return t.has(e)&&gdjs.Variable.copy(t.get(e),s),t.add(e,s),s}reinitialize(t){if(this._type=\"number\",this._value=0,this._str=\"0\",this._bool=!1,this._children={},this._childrenArray=[],this._undefinedInContainer=!1,t!==void 0){if(this._type=t.type||\"number\",this._type===\"number\")this._value=parseFloat(t.value||\"0\"),this._value!==this._value&&(this._value=0);else if(this._type===\"string\")this._str=\"\"+t.value||\"0\";else if(this._type===\"boolean\")this._bool=!!t.value;else if(this._type===\"structure\"){if(t.children!==void 0)for(var e=0,s=t.children.length;e{let s=e.getString?t.createSharedString(e.getString()):null;S.startObjState(t),S.addX(t,e.getX()),S.addY(t,e.getY()),S.addHeight(t,e.getHeight()),S.addWidth(t,e.getWidth()),S.addAngle(t,e.getAngle()),e.getX()===0&&S.addSetXTo0(t,!0),e.getY()===0&&S.addSetYTo0(t,!0),e.getHeight()===0&&S.addSetHeightTo0(t,!0),e.getWidth()===0&&S.addSetWidthTo0(t,!0),e.getWidth()===0&&S.addSetAngleTo0(t,!0),e.getZOrder()<=65535?S.addZOrder(t,e.getZOrder()+1):S.addBigZOrder(t,e.getZOrder()+1),S.addVisible(t,e.isHidden()?1:2),e.isFlippedX&&S.addFlippedX(t,e.isFlippedX()?1:2),e.isFlippedY&&S.addFlippedY(t,e.isFlippedY()?1:2),e.getOpacity&&(e.getOpacity()!==0?S.addOpacity(t,e.getOpacity()):S.addSetOpacityTo0(t,!0)),e.getAnimation&&S.addAnimation(t,e.getAnimation()+1),s&&S.addText(t,s);let r=S.endObjState(t),{stateVariable:i}=e,a=i.getChildrenCount()!==0?J.createPackedVariablesVector(t,Ts(i)):null,n=t.createSharedString(e.getName());return J.startGameObject(t),J.addId(t,e.thnkID),J.addName(t,n),J.addObjState(t,r),a&&J.addPackedVariables(t,a),J.endGameObject(t)},Ca=(t,e)=>{let s=null;if(e.getX()!==e.prevX||e.getY()!==e.prevY||e.getHeight()!==e.prevHeight||e.getWidth()!==e.prevWidth||e.getAngle()!==e.prevAngle||e.getZOrder()!==e.prevZOrder||e.isHidden()!==e.prevVisibility||e.isFlippedX&&e.isFlippedX()!==e.prevFlippedX||e.isFlippedY&&e.isFlippedY()!==e.prevFlippedY||e.getOpacity&&e.getOpacity()!==e.prevOpacity||e.getAnimation&&e.getAnimation()!==e.prevAnimation||e.getString&&e.getString()!==e.prevText){let a=e.getString&&e.getString()!==e.prevText?t.createSharedString(e.getString()):null;S.startObjState(t),e.getX()!==e.prevX&&(e.prevX=e.getX(),e.getX()!==0?S.addX(t,e.getX()):S.addSetXTo0(t,!0)),e.getY()!==e.prevY&&(e.prevY=e.getY(),e.getY()!==0?S.addY(t,e.getY()):S.addSetYTo0(t,!0)),e.getHeight()!==e.prevHeight&&(e.prevHeight=e.getHeight(),e.getHeight()!==0?S.addHeight(t,e.getHeight()):S.addSetHeightTo0(t,!0)),e.getWidth()!==e.prevWidth&&(e.prevWidth=e.getWidth(),e.getWidth()!==0?S.addWidth(t,e.getWidth()):S.addSetWidthTo0(t,!0)),e.getAngle()!==e.prevAngle&&(e.prevAngle=e.getAngle(),e.getAngle()!==0?S.addAngle(t,e.getAngle()):S.addSetAngleTo0(t,!0)),e.getZOrder()!==e.prevZOrder&&(e.prevZOrder=e.getZOrder(),e.getZOrder()<=65535?S.addZOrder(t,e.getZOrder()+1):S.addBigZOrder(t,e.getZOrder()+1)),e.isHidden()!==e.prevVisibility&&(e.prevVisibility=e.isHidden(),S.addVisible(t,e.isHidden()?1:2)),e.isFlippedX&&e.isFlippedX()!==e.prevFlippedX&&(e.prevFlippedX=e.isFlippedX(),S.addFlippedX(t,e.isFlippedX()?1:2)),e.isFlippedY&&e.isFlippedY()!==e.prevFlippedY&&(e.prevFlippedY=e.isFlippedY(),S.addFlippedY(t,e.isFlippedY()?1:2)),e.getOpacity&&e.getOpacity()!==e.prevOpacity&&(e.prevOpacity=e.getOpacity(),e.getOpacity()!==0?S.addOpacity(t,e.getOpacity()):S.addSetOpacityTo0(t,!0)),e.getAnimation&&e.getAnimation()!==e.prevAnimation&&(e.prevAnimation=e.getAnimation(),S.addAnimation(t,e.getAnimation()+1)),e.getString&&a&&(e.prevText=e.getString(),S.addText(t,a)),s=S.endObjState(t)}let{stateVariable:r}=e,i=r.isDirty()?r.serialize(t):null;return!s&&!i?null:(J.startGameObject(t),J.addId(t,e.thnkID),s&&J.addObjState(t,s),i&&J.addVariables(t,i),J.endGameObject(t))},Ra=new gdjs.Logger(\"THNK - Objects replication\"),Ma=class{constructor(){this.recycledIDs=[],this.currentNewID=1,this.generateNewID=()=>{let t=this.recycledIDs.pop()??this.currentNewID++;return t>65535?(Ra.error(\"Maximum amount of simultaneously replicated objects reached! Weird stuff is going to happen...\"),t%65535):t},this.registeredObjects=new Map,this.createdObjects=new Map,this.deletedObjects=new Set}registerObject(t){t.thnkID=this.generateNewID(),this.registeredObjects.set(t.thnkID,t),this.createdObjects.set(t.thnkID,t.getName()),t.stateVariable=ot.setupSyncedVariable(t.getVariables())}unregisterObject(t){this.recycledIDs.push(t.thnkID),this.registeredObjects.delete(t.thnkID),this.deletedObjects.add(t.thnkID),this.createdObjects.delete(t.thnkID)}diffObjects(t){let e=[];for(let s of this.registeredObjects.values()){let r=Ca(t,s);r&&e.push(r)}return e}createObjectsSnapshot(t){let e=[];for(let s of this.registeredObjects.values())e.push(Ta(t,s));return e}getCreatedObjects(){let t=[...this.createdObjects.entries()];return this.createdObjects.clear(),t}getDeletedObjects(){let t=Uint16Array.from(this.deletedObjects.values());return this.deletedObjects.clear(),t}},za=class{constructor(t,e){this.objectsRegistery=new Ma,this.playerManager=new Fa,this.runServerCode=!0,this.adapter=t,this.syncedVariable=e}},nr=(t,e)=>{let s=ot.setupSyncedVariable(t.getVariables());t.getTimeManager().addTimer(\"__THNK_Ticker\"),t.thnkServer=new za(e,s),ar()||t.thnkServer.playerManager._onConnect(e.getServerID())},Ss=new gdjs.Logger(\"THNK - Server\"),es=0,Va=t=>{if(!t.thnkServer)return;let{adapter:e}=t.thnkServer;for(let[r,i]of e.getUsersPendingMessages()){for(let a of i)switch(a.contentType()){case 1:pa(r,e,t),t.thnkServer.playerManager._onConnect(r);continue;case 2:let n=a.content(new yt),o=n.name();if(!o)continue;let p=n.contentArray();Sa(r,o,p);continue;default:Ss.error(`Received message with unknown type '${a.contentType()}'`);continue}i.length=0}for(let r of e.getDisconnectedUsers())t.thnkServer.playerManager._onDisconnect(r);e.getDisconnectedUsers().length=0;let s=t.getTimeManager();es+=s.getElapsedTime()/s.getTimeScale(),es>1e3/rr()&&(es=0,t.thnkServer.runServerCode=!0)},Ea=t=>{!t.thnkServer||!t.thnkServer.runServerCode||(t.thnkServer.runServerCode=!1,ga(t.thnkServer.adapter,t))},$t=null,or=(t,e)=>{if(t.thnkServer){let{adapter:s}=t.thnkServer;$t={adapter:s,isPause:e},e&&(t.thnkServer.previouslyConnectedUsers=new Set(s.getConnectedUsers()))}},Ba=t=>{if($t){let{adapter:e,isPause:s}=$t;nr(t,e);for(let r of e.getConnectedUsers())t.thnkServer.playerManager._onConnect(r);wa(e,t.getName(),s),$t=null}},Na=t=>{if($t)if(t.thnkServer){let{adapter:e,previouslyConnectedUsers:s}=t.thnkServer;if(s){let r=[],i=[];for(let a of e.getConnectedUsers())s.has(a)?i.push(a):r.push(a);ts(r,e,t),ts(i,e)}else Ss.warn(\"List of previously connected players not found! A full snapshot will be sent to all players. This is likely a bug, please open an issue on the THNK GitHub page!\"),ts([...e.getConnectedUsers()],e,t)}else Ss.warn(\"Resumed a scene that is not a server, shutting the server down. This is likely a bug, please open an issue on the THNK GitHub page!\"),$t.adapter.close()};gdjs.registerRuntimeScenePreEventsCallback(Va);gdjs.registerRuntimeScenePostEventsCallback(Ea);gdjs.registerRuntimeSceneUnloadedCallback(t=>or(t,!1));gdjs.registerRuntimeScenePausedCallback(t=>or(t,!0));gdjs.registerRuntimeSceneLoadedCallback(Ba);gdjs.registerRuntimeSceneResumedCallback(Na);var Da=new gdjs.Logger(\"THNK - Server\"),Za=async(t,e,s)=>{try{await t.prepare(e)}catch(i){Da.error(\"Adapter crashed while starting server! Error: \",i);return}let r=s?e.getGame().getSceneStack().replace(s,!0):e;nr(r,t)},Pa={popMessage:Oa,addRawMessageToTheQueue:ka,popConnection:Ia,popDisconnection:Aa},lr={};Xe(lr,{getConnectionState:()=>Xa,messages:()=>$a,startClient:()=>Qa});var Le=(t,e)=>{switch(e.type()){case 1:return t.setString(e.text()),t;case 2:return t.setNumber(e.number()),t;case 3:return t.setBoolean(e.boolean()),t}if(e.type()===4){t.castTo(\"structure\");for(let s=e.operationsLength(),r=0,i=e.operations(0);r{let s=t.objState();if(s){let a=s.x();a!==null&&e.setX(a);let n=s.y();n!==null&&e.setY(n);let o=s.height();o!==null&&e.setHeight(o);let p=s.width();p!==null&&e.setWidth(p);let l=s.angle();l!==null&&e.setAngle(l),s.setXTo0()&&e.setX(0),s.setYTo0()&&e.setY(0),s.setHeightTo0()&&e.setHeight(0),s.setWidthTo0()&&e.setWidth(0),s.setAngleTo0()&&e.setAngle(0);{let T=s.visible();T!==null&&e.hide(T===1);let F=s.flippedX();F!==null&&e.flipX&&e.flipX(F===1);let j=s.flippedY();j!==null&&e.flipY&&e.flipY(j===1)}let d=s.zOrder()??s.bigZOrder();d!==null&&e.setZOrder(d-1);let I=s.opacity();e.setOpacity&&(I!==null&&e.setOpacity(I),s.setOpacityTo0()&&e.setOpacity(0));let w=s.animation();w!==null&&e.setAnimation&&e.setAnimation(w-1);let _=s.text();_!==null&&e.setString&&e.setString(_)}let r=e.getVariables().get(\"State\"),i=t.variables();if(i)Le(r,i);else{let a=t.packedVariablesArray();a&&Cs(r,a)}},hr=(t,e)=>{if(!e.thnkClient)return;let{objectsRegistery:s}=e.thnkClient,r=t.variablesArray();if(r&&Cs(e.getVariables().get(\"State\"),r),s.clear(),t.objectsLength()!==0)for(let i=t.objectsLength(),a=0,n=t.objects(0);a{if(!e.thnkClient)return;let{objectsRegistery:s}=e.thnkClient,r=t.variables();r&&Le(e.getVariables().get(\"State\"),r);let i=t.deletedObjectsArray();if(i)for(let a of i)s.deleteObject(a);if(t.createdObjectsLength()!==0)for(let a=t.createdObjectsLength(),n=0,o=t.createdObjects(0);n{if(!t.thnkClient)return;let{adapter:e}=t.thnkClient;for(let s of e.getPendingMessages())switch(s.contentType()){case 1:ei.warn(\"A second ConnectionStartMessage was received from the server. This is likely a bug, please open an issue on the THNK GitHub!\");continue;case 2:let r=s.content(new Nt).newState();r&&La(r,t);continue;case 3:let i=s.content(new ht),a=i.sceneName();if(!a){console.error(\"Server requested scene switch, but no scene name was sent! This is likely a bug, please open an issue on the THNK GitHub!\");continue}let n=i.isPause()?t.getGame().getSceneStack().push(a):t.getGame().getSceneStack().replace(a,!0);n.thnkClient=t.thnkClient,t=n;continue;case 4:let o=s.content(new dt),p=o.name(),l=null;try{l=p?t.getGame().getSceneStack().replace(p,!0):t.getGame().getSceneStack().pop()}catch{console.info(\"Error spotted!\")}if(!l)continue;let d=o.snapshot();d&&hr(d,l),l.thnkClient=t.thnkClient,t=l;continue;default:ei.error(`Received message with unknown type '${s.contentType()}'`)}e.markPendingMessagesAsRead()};gdjs.registerRuntimeScenePreEventsCallback(Ha);var Ga=(t,e)=>{let s=new Xt(32),r=e?s.createString(e):null;Ut.startConnectionRequestMessage(s),r&&Ut.addToken(s,r);let i=Ut.endConnectionRequestMessage(s);t.sendClientMessage(s,vt.createClientMessage(s,1,i))},Ya=(t,e,s)=>{let r=new Xt(256),i=r.createString(e),a=yt.createContentVector(r,Ts(s)),n=yt.createClientInputMessage(r,i,a);t.sendClientMessage(r,vt.createClientMessage(r,2,n))},cr=\"disconnected\",de=t=>cr=t,Xa=()=>cr,Wa=class{constructor(t){this.objectsRegistery=new Map,this.runtimeScene=t}registerObject(t,e){e.thnkID=t,this.objectsRegistery.set(t,e)}getObject(t){return this.objectsRegistery.get(t)}deleteObject(t){let e=this.objectsRegistery.get(t);!e||(e.deleteFromScene(this.runtimeScene),this.objectsRegistery.delete(t))}clear(){this.objectsRegistery.forEach(t=>t.deleteFromScene(this.runtimeScene)),this.objectsRegistery.clear()}},qa=class{constructor(t,e){this.adapter=t,this.objectsRegistery=new Wa(e)}},Ka=new gdjs.Logger(\"THNK - Client\"),si=t=>{de(\"failed\"),Ka.error(\"Connection failed: \"+t)},Qa=async(t,e)=>{de(\"connecting\");let s=t.getGame().getSceneStack();try{await e.prepare(t)}catch{si(\"Adapter crashed while starting server!\");return}de(\"loading\"),Ga(e);let r=setInterval(()=>{let i=e.getPendingMessages().shift();if(!!i&&i.contentType()===1){clearInterval(r);let a=i.content(new Dt),n=a.sceneName(),o=a.sceneSnapshot();if(!n||!o){si(\"Server Connection Start Message was invalid, couldn't finish setting up the connection.\");return}let p=s.replace(n,!0);p.thnkClient=new qa(e,p),hr(o,p),de(\"connected\")}},200)},$a={sendClientMessage:Ya};function ee(t){let e=t.length;for(;--e>=0;)t[e]=0}var Ja=0,br=1,tn=2,en=3,sn=258,Ms=29,Oe=256,fe=Oe+1+Ms,Jt=30,zs=19,ur=2*fe+1,Zt=15,ss=16,rn=7,Vs=256,_r=16,fr=17,pr=18,ks=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]),Ee=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]),an=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),gr=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),nn=512,St=new Array((fe+2)*2);ee(St);var he=new Array(Jt*2);ee(he);var pe=new Array(nn);ee(pe);var ge=new Array(sn-en+1);ee(ge);var Es=new Array(Ms);ee(Es);var He=new Array(Jt);ee(He);function is(t,e,s,r,i){this.static_tree=t,this.extra_bits=e,this.extra_base=s,this.elems=r,this.max_length=i,this.has_stree=t&&t.length}var wr,mr,yr;function rs(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}var vr=t=>t<256?pe[t]:pe[256+(t>>>7)],we=(t,e)=>{t.pending_buf[t.pending++]=e&255,t.pending_buf[t.pending++]=e>>>8&255},rt=(t,e,s)=>{t.bi_valid>ss-s?(t.bi_buf|=e<>ss-t.bi_valid,t.bi_valid+=s-ss):(t.bi_buf|=e<{rt(t,s[e*2],s[e*2+1])},Sr=(t,e)=>{let s=0;do s|=t&1,t>>>=1,s<<=1;while(--e>0);return s>>>1},on=t=>{t.bi_valid===16?(we(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=t.bi_buf&255,t.bi_buf>>=8,t.bi_valid-=8)},ln=(t,e)=>{let s=e.dyn_tree,r=e.max_code,i=e.stat_desc.static_tree,a=e.stat_desc.has_stree,n=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,p=e.stat_desc.max_length,l,d,I,w,_,T,F=0;for(w=0;w<=Zt;w++)t.bl_count[w]=0;for(s[t.heap[t.heap_max]*2+1]=0,l=t.heap_max+1;lp&&(w=p,F++),s[d*2+1]=w,!(d>r)&&(t.bl_count[w]++,_=0,d>=o&&(_=n[d-o]),T=s[d*2],t.opt_len+=T*(w+_),a&&(t.static_len+=T*(i[d*2+1]+_)));if(F!==0){do{for(w=p-1;t.bl_count[w]===0;)w--;t.bl_count[w]--,t.bl_count[w+1]+=2,t.bl_count[p]--,F-=2}while(F>0);for(w=p;w!==0;w--)for(d=t.bl_count[w];d!==0;)I=t.heap[--l],!(I>r)&&(s[I*2+1]!==w&&(t.opt_len+=(w-s[I*2+1])*s[I*2],s[I*2+1]=w),d--)}},kr=(t,e,s)=>{let r=new Array(Zt+1),i=0,a,n;for(a=1;a<=Zt;a++)r[a]=i=i+s[a-1]<<1;for(n=0;n<=e;n++){let o=t[n*2+1];o!==0&&(t[n*2]=Sr(r[o]++,o))}},dn=()=>{let t,e,s,r,i,a=new Array(Zt+1);for(s=0,r=0;r>=7;r{let e;for(e=0;e{t.bi_valid>8?we(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},hn=(t,e,s,r)=>{Ir(t),r&&(we(t,s),we(t,~s)),t.pending_buf.set(t.window.subarray(e,e+s),t.pending),t.pending+=s},ii=(t,e,s,r)=>{let i=e*2,a=s*2;return t[i]{let r=t.heap[s],i=s<<1;for(;i<=t.heap_len&&(i{let r,i,a=0,n,o;if(t.last_lit!==0)do r=t.pending_buf[t.d_buf+a*2]<<8|t.pending_buf[t.d_buf+a*2+1],i=t.pending_buf[t.l_buf+a],a++,r===0?gt(t,i,e):(n=ge[i],gt(t,n+Oe+1,e),o=ks[n],o!==0&&(i-=Es[n],rt(t,i,o)),r--,n=vr(r),gt(t,n,s),o=Ee[n],o!==0&&(r-=He[n],rt(t,r,o)));while(a{let s=e.dyn_tree,r=e.stat_desc.static_tree,i=e.stat_desc.has_stree,a=e.stat_desc.elems,n,o,p=-1,l;for(t.heap_len=0,t.heap_max=ur,n=0;n>1;n>=1;n--)as(t,s,n);l=a;do n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],as(t,s,1),o=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=o,s[l*2]=s[n*2]+s[o*2],t.depth[l]=(t.depth[n]>=t.depth[o]?t.depth[n]:t.depth[o])+1,s[n*2+1]=s[o*2+1]=l,t.heap[1]=l++,as(t,s,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],ln(t,e),kr(s,p,t.bl_count)},ai=(t,e,s)=>{let r,i=-1,a,n=e[0*2+1],o=0,p=7,l=4;for(n===0&&(p=138,l=3),e[(s+1)*2+1]=65535,r=0;r<=s;r++)a=n,n=e[(r+1)*2+1],!(++o{let r,i=-1,a,n=e[0*2+1],o=0,p=7,l=4;for(n===0&&(p=138,l=3),r=0;r<=s;r++)if(a=n,n=e[(r+1)*2+1],!(++o{let e;for(ai(t,t.dyn_ltree,t.l_desc.max_code),ai(t,t.dyn_dtree,t.d_desc.max_code),Os(t,t.bl_desc),e=zs-1;e>=3&&t.bl_tree[gr[e]*2+1]===0;e--);return t.opt_len+=3*(e+1)+5+5+4,e},bn=(t,e,s,r)=>{let i;for(rt(t,e-257,5),rt(t,s-1,5),rt(t,r-4,4),i=0;i{let e=4093624447,s;for(s=0;s<=31;s++,e>>>=1)if(e&1&&t.dyn_ltree[s*2]!==0)return 0;if(t.dyn_ltree[9*2]!==0||t.dyn_ltree[10*2]!==0||t.dyn_ltree[13*2]!==0)return 1;for(s=32;s{oi||(dn(),oi=!0),t.l_desc=new rs(t.dyn_ltree,wr),t.d_desc=new rs(t.dyn_dtree,mr),t.bl_desc=new rs(t.bl_tree,yr),t.bi_buf=0,t.bi_valid=0,Or(t)},Ar=(t,e,s,r)=>{rt(t,(Ja<<1)+(r?1:0),3),hn(t,e,s,!0)},fn=t=>{rt(t,br<<1,3),gt(t,Vs,St),on(t)},pn=(t,e,s,r)=>{let i,a,n=0;t.level>0?(t.strm.data_type===2&&(t.strm.data_type=un(t)),Os(t,t.l_desc),Os(t,t.d_desc),n=cn(t),i=t.opt_len+3+7>>>3,a=t.static_len+3+7>>>3,a<=i&&(i=a)):i=a=s+5,s+4<=i&&e!==-1?Ar(t,e,s,r):t.strategy===4||a===i?(rt(t,(br<<1)+(r?1:0),3),ri(t,St,he)):(rt(t,(tn<<1)+(r?1:0),3),bn(t,t.l_desc.max_code+1,t.d_desc.max_code+1,n+1),ri(t,t.dyn_ltree,t.dyn_dtree)),Or(t),r&&Ir(t)},gn=(t,e,s)=>(t.pending_buf[t.d_buf+t.last_lit*2]=e>>>8&255,t.pending_buf[t.d_buf+t.last_lit*2+1]=e&255,t.pending_buf[t.l_buf+t.last_lit]=s&255,t.last_lit++,e===0?t.dyn_ltree[s*2]++:(t.matches++,e--,t.dyn_ltree[(ge[s]+Oe+1)*2]++,t.dyn_dtree[vr(e)*2]++),t.last_lit===t.lit_bufsize-1),wn=_n,mn=Ar,yn=pn,vn=gn,Sn=fn,kn={_tr_init:wn,_tr_stored_block:mn,_tr_flush_block:yn,_tr_tally:vn,_tr_align:Sn},On=(t,e,s,r)=>{let i=t&65535|0,a=t>>>16&65535|0,n=0;for(;s!==0;){n=s>2e3?2e3:s,s-=n;do i=i+e[r++]|0,a=a+i|0;while(--n);i%=65521,a%=65521}return i|a<<16|0},me=On,In=()=>{let t,e=[];for(var s=0;s<256;s++){t=s;for(var r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[s]=t}return e},An=new Uint32Array(In()),xn=(t,e,s,r)=>{let i=An,a=r+s;t^=-1;for(let n=r;n>>8^i[(t^e[n])&255];return t^-1},q=xn,Lt={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\"},se={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},{_tr_init:jn,_tr_stored_block:Un,_tr_flush_block:Fn,_tr_tally:Mt,_tr_align:Tn}=kn,{Z_NO_FLUSH:Wt,Z_PARTIAL_FLUSH:Cn,Z_FULL_FLUSH:Rn,Z_FINISH:zt,Z_BLOCK:li,Z_OK:wt,Z_STREAM_END:di,Z_STREAM_ERROR:bt,Z_DATA_ERROR:Mn,Z_BUF_ERROR:ns,Z_DEFAULT_COMPRESSION:zn,Z_FILTERED:Vn,Z_HUFFMAN_ONLY:Te,Z_RLE:En,Z_FIXED:Bn,Z_DEFAULT_STRATEGY:Nn,Z_UNKNOWN:Dn,Z_DEFLATED:qe}=se,Zn=9,Pn=15,Ln=8,Hn=29,Gn=256,Is=Gn+1+Hn,Yn=30,Xn=19,Wn=2*Is+1,qn=15,M=3,Ct=258,ut=Ct+M+1,Kn=32,Ke=42,As=69,Be=73,Ne=91,De=103,Pt=113,oe=666,Q=1,Ie=2,Ht=3,ie=4,Qn=3,Rt=(t,e)=>(t.msg=Lt[e],e),hi=t=>(t<<1)-(t>4?9:0),Ft=t=>{let e=t.length;for(;--e>=0;)t[e]=0},$n=(t,e,s)=>(e<{let e=t.state,s=e.pending;s>t.avail_out&&(s=t.avail_out),s!==0&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+s),t.next_out),t.next_out+=s,e.pending_out+=s,t.total_out+=s,t.avail_out-=s,e.pending-=s,e.pending===0&&(e.pending_out=0))},$=(t,e)=>{Fn(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,At(t.strm)},V=(t,e)=>{t.pending_buf[t.pending++]=e},ne=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=e&255},Jn=(t,e,s,r)=>{let i=t.avail_in;return i>r&&(i=r),i===0?0:(t.avail_in-=i,e.set(t.input.subarray(t.next_in,t.next_in+i),s),t.state.wrap===1?t.adler=me(t.adler,e,i,s):t.state.wrap===2&&(t.adler=q(t.adler,e,i,s)),t.next_in+=i,t.total_in+=i,i)},xr=(t,e)=>{let s=t.max_chain_length,r=t.strstart,i,a,n=t.prev_length,o=t.nice_match,p=t.strstart>t.w_size-ut?t.strstart-(t.w_size-ut):0,l=t.window,d=t.w_mask,I=t.prev,w=t.strstart+Ct,_=l[r+n-1],T=l[r+n];t.prev_length>=t.good_match&&(s>>=2),o>t.lookahead&&(o=t.lookahead);do if(i=e,!(l[i+n]!==T||l[i+n-1]!==_||l[i]!==l[r]||l[++i]!==l[r+1])){r+=2,i++;do;while(l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&rn){if(t.match_start=e,n=a,a>=o)break;_=l[r+n-1],T=l[r+n]}}while((e=I[e&d])>p&&--s!==0);return n<=t.lookahead?n:t.lookahead},Gt=t=>{let e=t.w_size,s,r,i,a,n;do{if(a=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-ut)){t.window.set(t.window.subarray(e,e+e),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,r=t.hash_size,s=r;do i=t.head[--s],t.head[s]=i>=e?i-e:0;while(--r);r=e,s=r;do i=t.prev[--s],t.prev[s]=i>=e?i-e:0;while(--r);a+=e}if(t.strm.avail_in===0)break;if(r=Jn(t.strm,t.window,t.strstart+t.lookahead,a),t.lookahead+=r,t.lookahead+t.insert>=M)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=Vt(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=Vt(t,t.ins_h,t.window[n+M-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert{let s=65535;for(s>t.pending_buf_size-5&&(s=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Gt(t),t.lookahead===0&&e===Wt)return Q;if(t.lookahead===0)break}t.strstart+=t.lookahead,t.lookahead=0;let r=t.block_start+s;if((t.strstart===0||t.strstart>=r)&&(t.lookahead=t.strstart-r,t.strstart=r,$(t,!1),t.strm.avail_out===0)||t.strstart-t.block_start>=t.w_size-ut&&($(t,!1),t.strm.avail_out===0))return Q}return t.insert=0,e===zt?($(t,!0),t.strm.avail_out===0?Ht:ie):(t.strstart>t.block_start&&($(t,!1),t.strm.avail_out),Q)},os=(t,e)=>{let s,r;for(;;){if(t.lookahead=M&&(t.ins_h=Vt(t,t.ins_h,t.window[t.strstart+M-1]),s=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),s!==0&&t.strstart-s<=t.w_size-ut&&(t.match_length=xr(t,s)),t.match_length>=M)if(r=Mt(t,t.strstart-t.match_start,t.match_length-M),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=M){t.match_length--;do t.strstart++,t.ins_h=Vt(t,t.ins_h,t.window[t.strstart+M-1]),s=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart;while(--t.match_length!==0);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Vt(t,t.ins_h,t.window[t.strstart+1]);else r=Mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(r&&($(t,!1),t.strm.avail_out===0))return Q}return t.insert=t.strstart{let s,r,i;for(;;){if(t.lookahead=M&&(t.ins_h=Vt(t,t.ins_h,t.window[t.strstart+M-1]),s=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=M-1,s!==0&&t.prev_length4096)&&(t.match_length=M-1)),t.prev_length>=M&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-M,r=Mt(t,t.strstart-1-t.prev_match,t.prev_length-M),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=i&&(t.ins_h=Vt(t,t.ins_h,t.window[t.strstart+M-1]),s=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart);while(--t.prev_length!==0);if(t.match_available=0,t.match_length=M-1,t.strstart++,r&&($(t,!1),t.strm.avail_out===0))return Q}else if(t.match_available){if(r=Mt(t,0,t.window[t.strstart-1]),r&&$(t,!1),t.strstart++,t.lookahead--,t.strm.avail_out===0)return Q}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(r=Mt(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart{let s,r,i,a,n=t.window;for(;;){if(t.lookahead<=Ct){if(Gt(t),t.lookahead<=Ct&&e===Wt)return Q;if(t.lookahead===0)break}if(t.match_length=0,t.lookahead>=M&&t.strstart>0&&(i=t.strstart-1,r=n[i],r===n[++i]&&r===n[++i]&&r===n[++i])){a=t.strstart+Ct;do;while(r===n[++i]&&r===n[++i]&&r===n[++i]&&r===n[++i]&&r===n[++i]&&r===n[++i]&&r===n[++i]&&r===n[++i]&&it.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=M?(s=Mt(t,1,t.match_length-M),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(s=Mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),s&&($(t,!1),t.strm.avail_out===0))return Q}return t.insert=0,e===zt?($(t,!0),t.strm.avail_out===0?Ht:ie):t.last_lit&&($(t,!1),t.strm.avail_out===0)?Q:Ie},so=(t,e)=>{let s;for(;;){if(t.lookahead===0&&(Gt(t),t.lookahead===0)){if(e===Wt)return Q;break}if(t.match_length=0,s=Mt(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,s&&($(t,!1),t.strm.avail_out===0))return Q}return t.insert=0,e===zt?($(t,!0),t.strm.avail_out===0?Ht:ie):t.last_lit&&($(t,!1),t.strm.avail_out===0)?Q:Ie};function ft(t,e,s,r,i){this.good_length=t,this.max_lazy=e,this.nice_length=s,this.max_chain=r,this.func=i}var le=[new ft(0,0,0,0,to),new ft(4,4,8,4,os),new ft(4,5,16,8,os),new ft(4,6,32,32,os),new ft(4,4,16,16,Kt),new ft(8,16,32,32,Kt),new ft(8,16,128,128,Kt),new ft(8,32,128,256,Kt),new ft(32,128,258,1024,Kt),new ft(32,258,258,4096,Kt)],io=t=>{t.window_size=2*t.w_size,Ft(t.head),t.max_lazy_match=le[t.level].max_lazy,t.good_match=le[t.level].good_length,t.nice_match=le[t.level].nice_length,t.max_chain_length=le[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=M-1,t.match_available=0,t.ins_h=0};function ro(){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=qe,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(Wn*2),this.dyn_dtree=new Uint16Array((2*Yn+1)*2),this.bl_tree=new Uint16Array((2*Xn+1)*2),Ft(this.dyn_ltree),Ft(this.dyn_dtree),Ft(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(qn+1),this.heap=new Uint16Array(2*Is+1),Ft(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Is+1),Ft(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var jr=t=>{if(!t||!t.state)return Rt(t,bt);t.total_in=t.total_out=0,t.data_type=Dn;let e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?Ke:Pt,t.adler=e.wrap===2?0:1,e.last_flush=Wt,jn(e),wt},Ur=t=>{let e=jr(t);return e===wt&&io(t.state),e},ao=(t,e)=>!t||!t.state||t.state.wrap!==2?bt:(t.state.gzhead=e,wt),Fr=(t,e,s,r,i,a)=>{if(!t)return bt;let n=1;if(e===zn&&(e=6),r<0?(n=0,r=-r):r>15&&(n=2,r-=16),i<1||i>Zn||s!==qe||r<8||r>15||e<0||e>9||a<0||a>Bn)return Rt(t,bt);r===8&&(r=9);let o=new ro;return t.state=o,o.strm=t,o.wrap=n,o.gzhead=null,o.w_bits=r,o.w_size=1<Fr(t,e,qe,Pn,Ln,Nn),oo=(t,e)=>{let s,r;if(!t||!t.state||e>li||e<0)return t?Rt(t,bt):bt;let i=t.state;if(!t.output||!t.input&&t.avail_in!==0||i.status===oe&&e!==zt)return Rt(t,t.avail_out===0?ns:bt);i.strm=t;let a=i.last_flush;if(i.last_flush=e,i.status===Ke)if(i.wrap===2)t.adler=0,V(i,31),V(i,139),V(i,8),i.gzhead?(V(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),V(i,i.gzhead.time&255),V(i,i.gzhead.time>>8&255),V(i,i.gzhead.time>>16&255),V(i,i.gzhead.time>>24&255),V(i,i.level===9?2:i.strategy>=Te||i.level<2?4:0),V(i,i.gzhead.os&255),i.gzhead.extra&&i.gzhead.extra.length&&(V(i,i.gzhead.extra.length&255),V(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=q(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=As):(V(i,0),V(i,0),V(i,0),V(i,0),V(i,0),V(i,i.level===9?2:i.strategy>=Te||i.level<2?4:0),V(i,Qn),i.status=Pt);else{let n=qe+(i.w_bits-8<<4)<<8,o=-1;i.strategy>=Te||i.level<2?o=0:i.level<6?o=1:i.level===6?o=2:o=3,n|=o<<6,i.strstart!==0&&(n|=Kn),n+=31-n%31,i.status=Pt,ne(i,n),i.strstart!==0&&(ne(i,t.adler>>>16),ne(i,t.adler&65535)),t.adler=1}if(i.status===As)if(i.gzhead.extra){for(s=i.pending;i.gzindex<(i.gzhead.extra.length&65535)&&!(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(t.adler=q(t.adler,i.pending_buf,i.pending-s,s)),At(t),s=i.pending,i.pending===i.pending_buf_size));)V(i,i.gzhead.extra[i.gzindex]&255),i.gzindex++;i.gzhead.hcrc&&i.pending>s&&(t.adler=q(t.adler,i.pending_buf,i.pending-s,s)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=Be)}else i.status=Be;if(i.status===Be)if(i.gzhead.name){s=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(t.adler=q(t.adler,i.pending_buf,i.pending-s,s)),At(t),s=i.pending,i.pending===i.pending_buf_size)){r=1;break}i.gzindexs&&(t.adler=q(t.adler,i.pending_buf,i.pending-s,s)),r===0&&(i.gzindex=0,i.status=Ne)}else i.status=Ne;if(i.status===Ne)if(i.gzhead.comment){s=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(t.adler=q(t.adler,i.pending_buf,i.pending-s,s)),At(t),s=i.pending,i.pending===i.pending_buf_size)){r=1;break}i.gzindexs&&(t.adler=q(t.adler,i.pending_buf,i.pending-s,s)),r===0&&(i.status=De)}else i.status=De;if(i.status===De&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&At(t),i.pending+2<=i.pending_buf_size&&(V(i,t.adler&255),V(i,t.adler>>8&255),t.adler=0,i.status=Pt)):i.status=Pt),i.pending!==0){if(At(t),t.avail_out===0)return i.last_flush=-1,wt}else if(t.avail_in===0&&hi(e)<=hi(a)&&e!==zt)return Rt(t,ns);if(i.status===oe&&t.avail_in!==0)return Rt(t,ns);if(t.avail_in!==0||i.lookahead!==0||e!==Wt&&i.status!==oe){let n=i.strategy===Te?so(i,e):i.strategy===En?eo(i,e):le[i.level].func(i,e);if((n===Ht||n===ie)&&(i.status=oe),n===Q||n===Ht)return t.avail_out===0&&(i.last_flush=-1),wt;if(n===Ie&&(e===Cn?Tn(i):e!==li&&(Un(i,0,0,!1),e===Rn&&(Ft(i.head),i.lookahead===0&&(i.strstart=0,i.block_start=0,i.insert=0))),At(t),t.avail_out===0))return i.last_flush=-1,wt}return e!==zt?wt:i.wrap<=0?di:(i.wrap===2?(V(i,t.adler&255),V(i,t.adler>>8&255),V(i,t.adler>>16&255),V(i,t.adler>>24&255),V(i,t.total_in&255),V(i,t.total_in>>8&255),V(i,t.total_in>>16&255),V(i,t.total_in>>24&255)):(ne(i,t.adler>>>16),ne(i,t.adler&65535)),At(t),i.wrap>0&&(i.wrap=-i.wrap),i.pending!==0?wt:di)},lo=t=>{if(!t||!t.state)return bt;let e=t.state.status;return e!==Ke&&e!==As&&e!==Be&&e!==Ne&&e!==De&&e!==Pt&&e!==oe?Rt(t,bt):(t.state=null,e===Pt?Rt(t,Mn):wt)},ho=(t,e)=>{let s=e.length;if(!t||!t.state)return bt;let r=t.state,i=r.wrap;if(i===2||i===1&&r.status!==Ke||r.lookahead)return bt;if(i===1&&(t.adler=me(t.adler,e,s,0)),r.wrap=0,s>=r.w_size){i===0&&(Ft(r.head),r.strstart=0,r.block_start=0,r.insert=0);let p=new Uint8Array(r.w_size);p.set(e.subarray(s-r.w_size,s),0),e=p,s=r.w_size}let a=t.avail_in,n=t.next_in,o=t.input;for(t.avail_in=s,t.next_in=0,t.input=e,Gt(r);r.lookahead>=M;){let p=r.strstart,l=r.lookahead-(M-1);do r.ins_h=Vt(r,r.ins_h,r.window[p+M-1]),r.prev[p&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=p,p++;while(--l);r.strstart=p,r.lookahead=M-1,Gt(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=M-1,r.match_available=0,t.next_in=n,t.input=o,t.avail_in=a,r.wrap=i,wt},co=no,bo=Fr,uo=Ur,_o=jr,fo=ao,po=oo,go=lo,wo=ho,mo=\"pako deflate (from Nodeca project)\",ce={deflateInit:co,deflateInit2:bo,deflateReset:uo,deflateResetKeep:_o,deflateSetHeader:fo,deflate:po,deflateEnd:go,deflateSetDictionary:wo,deflateInfo:mo},yo=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),vo=function(t){let e=Array.prototype.slice.call(arguments,1);for(;e.length;){let s=e.shift();if(s){if(typeof s!=\"object\")throw new TypeError(s+\"must be non-object\");for(let r in s)yo(s,r)&&(t[r]=s[r])}}return t},So=t=>{let e=0;for(let r=0,i=t.length;r=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;ye[254]=ye[254]=1;var ko=t=>{if(typeof TextEncoder==\"function\"&&TextEncoder.prototype.encode)return new TextEncoder().encode(t);let e,s,r,i,a,n=t.length,o=0;for(i=0;i>>6,e[a++]=128|s&63):s<65536?(e[a++]=224|s>>>12,e[a++]=128|s>>>6&63,e[a++]=128|s&63):(e[a++]=240|s>>>18,e[a++]=128|s>>>12&63,e[a++]=128|s>>>6&63,e[a++]=128|s&63);return e},Oo=(t,e)=>{if(e<65534&&t.subarray&&Tr)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let s=\"\";for(let r=0;r{let s=e||t.length;if(typeof TextDecoder==\"function\"&&TextDecoder.prototype.decode)return new TextDecoder().decode(t.subarray(0,e));let r,i,a=new Array(s*2);for(i=0,r=0;r4){a[i++]=65533,r+=o-1;continue}for(n&=o===2?31:o===3?15:7;o>1&&r1){a[i++]=65533;continue}n<65536?a[i++]=n:(n-=65536,a[i++]=55296|n>>10&1023,a[i++]=56320|n&1023)}return Oo(a,i)},Ao=(t,e)=>{e=e||t.length,e>t.length&&(e=t.length);let s=e-1;for(;s>=0&&(t[s]&192)===128;)s--;return s<0||s===0?e:s+ye[t[s]]>e?s:e},ve={string2buf:ko,buf2string:Io,utf8border:Ao};function xo(){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}var Cr=xo,Rr=Object.prototype.toString,{Z_NO_FLUSH:jo,Z_SYNC_FLUSH:Uo,Z_FULL_FLUSH:Fo,Z_FINISH:To,Z_OK:Ge,Z_STREAM_END:Co,Z_DEFAULT_COMPRESSION:Ro,Z_DEFAULT_STRATEGY:Mo,Z_DEFLATED:zo}=se;function Ae(t){this.options=Qe.assign({level:Ro,method:zo,chunkSize:16384,windowBits:15,memLevel:8,strategy:Mo},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new Cr,this.strm.avail_out=0;let s=ce.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(s!==Ge)throw new Error(Lt[s]);if(e.header&&ce.deflateSetHeader(this.strm,e.header),e.dictionary){let r;if(typeof e.dictionary==\"string\"?r=ve.string2buf(e.dictionary):Rr.call(e.dictionary)===\"[object ArrayBuffer]\"?r=new Uint8Array(e.dictionary):r=e.dictionary,s=ce.deflateSetDictionary(this.strm,r),s!==Ge)throw new Error(Lt[s]);this._dict_set=!0}}Ae.prototype.push=function(t,e){let s=this.strm,r=this.options.chunkSize,i,a;if(this.ended)return!1;for(e===~~e?a=e:a=e===!0?To:jo,typeof t==\"string\"?s.input=ve.string2buf(t):Rr.call(t)===\"[object ArrayBuffer]\"?s.input=new Uint8Array(t):s.input=t,s.next_in=0,s.avail_in=s.input.length;;){if(s.avail_out===0&&(s.output=new Uint8Array(r),s.next_out=0,s.avail_out=r),(a===Uo||a===Fo)&&s.avail_out<=6){this.onData(s.output.subarray(0,s.next_out)),s.avail_out=0;continue}if(i=ce.deflate(s,a),i===Co)return s.next_out>0&&this.onData(s.output.subarray(0,s.next_out)),i=ce.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Ge;if(s.avail_out===0){this.onData(s.output);continue}if(a>0&&s.next_out>0){this.onData(s.output.subarray(0,s.next_out)),s.avail_out=0;continue}if(s.avail_in===0)break}return!0};Ae.prototype.onData=function(t){this.chunks.push(t)};Ae.prototype.onEnd=function(t){t===Ge&&(this.result=Qe.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Bs(t,e){let s=new Ae(e);if(s.push(t,!0),s.err)throw s.msg||Lt[s.err];return s.result}function Vo(t,e){return e=e||{},e.raw=!0,Bs(t,e)}function Eo(t,e){return e=e||{},e.gzip=!0,Bs(t,e)}var Bo=Ae,No=Bs,Do=Vo,Zo=Eo,Po=se,Lo={Deflate:Bo,deflate:No,deflateRaw:Do,gzip:Zo,constants:Po},Ce=30,Ho=12,Go=function(t,e){let s,r,i,a,n,o,p,l,d,I,w,_,T,F,j,x,O,y,A,Z,R,b,k,f,g=t.state;s=t.next_in,k=t.input,r=s+(t.avail_in-5),i=t.next_out,f=t.output,a=i-(e-t.avail_out),n=i+(t.avail_out-257),o=g.dmax,p=g.wsize,l=g.whave,d=g.wnext,I=g.window,w=g.hold,_=g.bits,T=g.lencode,F=g.distcode,j=(1<>>24,w>>>=y,_-=y,y=O>>>16&255,y===0)f[i++]=O&65535;else if(y&16){A=O&65535,y&=15,y&&(_>>=y,_-=y),_<15&&(w+=k[s++]<<_,_+=8,w+=k[s++]<<_,_+=8),O=F[w&x];s:for(;;){if(y=O>>>24,w>>>=y,_-=y,y=O>>>16&255,y&16){if(Z=O&65535,y&=15,_o){t.msg=\"invalid distance too far back\",g.mode=Ce;break t}if(w>>>=y,_-=y,y=i-a,Z>y){if(y=Z-y,y>l&&g.sane){t.msg=\"invalid distance too far back\",g.mode=Ce;break t}if(R=0,b=I,d===0){if(R+=p-y,y2;)f[i++]=b[R++],f[i++]=b[R++],f[i++]=b[R++],A-=3;A&&(f[i++]=b[R++],A>1&&(f[i++]=b[R++]))}else{R=i-Z;do f[i++]=f[R++],f[i++]=f[R++],f[i++]=f[R++],A-=3;while(A>2);A&&(f[i++]=f[R++],A>1&&(f[i++]=f[R++]))}}else if((y&64)===0){O=F[(O&65535)+(w&(1<>3,s-=A,_-=A<<3,w&=(1<<_)-1,t.next_in=s,t.next_out=i,t.avail_in=s{let p=o.bits,l=0,d=0,I=0,w=0,_=0,T=0,F=0,j=0,x=0,O=0,y,A,Z,R,b,k=null,f=0,g,m=new Uint16Array(Qt+1),z=new Uint16Array(Qt+1),C=null,U=0,L,N,et;for(l=0;l<=Qt;l++)m[l]=0;for(d=0;d=1&&m[w]===0;w--);if(_>w&&(_=w),w===0)return i[a++]=1<<24|64<<16|0,i[a++]=1<<24|64<<16|0,o.bits=1,0;for(I=1;I0&&(t===ui||w!==1))return-1;for(z[1]=0,l=1;lci||t===_i&&x>bi)return 1;for(;;){L=l-F,n[d]g?(N=C[U+n[d]],et=k[f+n[d]]):(N=32+64,et=0),y=1<>F)+A]=L<<24|N<<16|et|0;while(A!==0);for(y=1<>=1;if(y!==0?(O&=y-1,O+=y):O=0,d++,--m[l]===0){if(l===w)break;l=e[s+n[d]]}if(l>_&&(O&R)!==Z){for(F===0&&(F=_),b+=I,T=l-F,j=1<ci||t===_i&&x>bi)return 1;Z=O&R,i[Z]=_<<24|T<<16|b-a|0}}return O!==0&&(i[b+O]=l-F<<24|64<<16|0),o.bits=_,0},be=Ko,Qo=0,Mr=1,zr=2,{Z_FINISH:fi,Z_BLOCK:$o,Z_TREES:Re,Z_OK:Yt,Z_STREAM_END:Jo,Z_NEED_DICT:tl,Z_STREAM_ERROR:_t,Z_DATA_ERROR:Vr,Z_MEM_ERROR:Er,Z_BUF_ERROR:el,Z_DEFLATED:pi}=se,Br=1,gi=2,wi=3,mi=4,yi=5,vi=6,Si=7,ki=8,Oi=9,Ii=10,Ye=11,mt=12,ds=13,Ai=14,hs=15,xi=16,ji=17,Ui=18,Fi=19,Me=20,ze=21,Ti=22,Ci=23,Ri=24,Mi=25,zi=26,cs=27,Vi=28,Ei=29,P=30,Nr=31,sl=32,il=852,rl=592,al=15,nl=al,Bi=t=>(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24);function ol(){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}var Dr=t=>{if(!t||!t.state)return _t;let e=t.state;return t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=e.wrap&1),e.mode=Br,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(il),e.distcode=e.distdyn=new Int32Array(rl),e.sane=1,e.back=-1,Yt},Zr=t=>{if(!t||!t.state)return _t;let e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Dr(t)},Pr=(t,e)=>{let s;if(!t||!t.state)return _t;let r=t.state;return e<0?(s=0,e=-e):(s=(e>>4)+1,e<48&&(e&=15)),e&&(e<8||e>15)?_t:(r.window!==null&&r.wbits!==e&&(r.window=null),r.wrap=s,r.wbits=e,Zr(t))},Lr=(t,e)=>{if(!t)return _t;let s=new ol;t.state=s,s.window=null;let r=Pr(t,e);return r!==Yt&&(t.state=null),r},ll=t=>Lr(t,nl),Ni=!0,bs,us,dl=t=>{if(Ni){bs=new Int32Array(512),us=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(be(Mr,t.lens,0,288,bs,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;be(zr,t.lens,0,32,us,0,t.work,{bits:5}),Ni=!1}t.lencode=bs,t.lenbits=9,t.distcode=us,t.distbits=5},Hr=(t,e,s,r)=>{let i,a=t.state;return a.window===null&&(a.wsize=1<=a.wsize?(a.window.set(e.subarray(s-a.wsize,s),0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),a.window.set(e.subarray(s-r,s-r+i),a.wnext),r-=i,r?(a.window.set(e.subarray(s-r,s),0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave{let s,r,i,a,n,o,p,l,d,I,w,_,T,F,j=0,x,O,y,A,Z,R,b,k,f=new Uint8Array(4),g,m,z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!t||!t.state||!t.output||!t.input&&t.avail_in!==0)return _t;s=t.state,s.mode===mt&&(s.mode=ds),n=t.next_out,i=t.output,p=t.avail_out,a=t.next_in,r=t.input,o=t.avail_in,l=s.hold,d=s.bits,I=o,w=p,k=Yt;t:for(;;)switch(s.mode){case Br:if(s.wrap===0){s.mode=ds;break}for(;d<16;){if(o===0)break t;o--,l+=r[a++]<>>8&255,s.check=q(s.check,f,2,0),l=0,d=0,s.mode=gi;break}if(s.flags=0,s.head&&(s.head.done=!1),!(s.wrap&1)||(((l&255)<<8)+(l>>8))%31){t.msg=\"incorrect header check\",s.mode=P;break}if((l&15)!==pi){t.msg=\"unknown compression method\",s.mode=P;break}if(l>>>=4,d-=4,b=(l&15)+8,s.wbits===0)s.wbits=b;else if(b>s.wbits){t.msg=\"invalid window size\",s.mode=P;break}s.dmax=1<>8&1),s.flags&512&&(f[0]=l&255,f[1]=l>>>8&255,s.check=q(s.check,f,2,0)),l=0,d=0,s.mode=wi;case wi:for(;d<32;){if(o===0)break t;o--,l+=r[a++]<>>8&255,f[2]=l>>>16&255,f[3]=l>>>24&255,s.check=q(s.check,f,4,0)),l=0,d=0,s.mode=mi;case mi:for(;d<16;){if(o===0)break t;o--,l+=r[a++]<>8),s.flags&512&&(f[0]=l&255,f[1]=l>>>8&255,s.check=q(s.check,f,2,0)),l=0,d=0,s.mode=yi;case yi:if(s.flags&1024){for(;d<16;){if(o===0)break t;o--,l+=r[a++]<>>8&255,s.check=q(s.check,f,2,0)),l=0,d=0}else s.head&&(s.head.extra=null);s.mode=vi;case vi:if(s.flags&1024&&(_=s.length,_>o&&(_=o),_&&(s.head&&(b=s.head.extra_len-s.length,s.head.extra||(s.head.extra=new Uint8Array(s.head.extra_len)),s.head.extra.set(r.subarray(a,a+_),b)),s.flags&512&&(s.check=q(s.check,r,_,a)),o-=_,a+=_,s.length-=_),s.length))break t;s.length=0,s.mode=Si;case Si:if(s.flags&2048){if(o===0)break t;_=0;do b=r[a+_++],s.head&&b&&s.length<65536&&(s.head.name+=String.fromCharCode(b));while(b&&_>9&1,s.head.done=!0),t.adler=s.check=0,s.mode=mt;break;case Ii:for(;d<32;){if(o===0)break t;o--,l+=r[a++]<>>=d&7,d-=d&7,s.mode=cs;break}for(;d<3;){if(o===0)break t;o--,l+=r[a++]<>>=1,d-=1,l&3){case 0:s.mode=Ai;break;case 1:if(dl(s),s.mode=Me,e===Re){l>>>=2,d-=2;break t}break;case 2:s.mode=ji;break;case 3:t.msg=\"invalid block type\",s.mode=P}l>>>=2,d-=2;break;case Ai:for(l>>>=d&7,d-=d&7;d<32;){if(o===0)break t;o--,l+=r[a++]<>>16^65535)){t.msg=\"invalid stored block lengths\",s.mode=P;break}if(s.length=l&65535,l=0,d=0,s.mode=hs,e===Re)break t;case hs:s.mode=xi;case xi:if(_=s.length,_){if(_>o&&(_=o),_>p&&(_=p),_===0)break t;i.set(r.subarray(a,a+_),n),o-=_,a+=_,p-=_,n+=_,s.length-=_;break}s.mode=mt;break;case ji:for(;d<14;){if(o===0)break t;o--,l+=r[a++]<>>=5,d-=5,s.ndist=(l&31)+1,l>>>=5,d-=5,s.ncode=(l&15)+4,l>>>=4,d-=4,s.nlen>286||s.ndist>30){t.msg=\"too many length or distance symbols\",s.mode=P;break}s.have=0,s.mode=Ui;case Ui:for(;s.have>>=3,d-=3}for(;s.have<19;)s.lens[z[s.have++]]=0;if(s.lencode=s.lendyn,s.lenbits=7,g={bits:s.lenbits},k=be(Qo,s.lens,0,19,s.lencode,0,s.work,g),s.lenbits=g.bits,k){t.msg=\"invalid code lengths set\",s.mode=P;break}s.have=0,s.mode=Fi;case Fi:for(;s.have>>24,O=j>>>16&255,y=j&65535,!(x<=d);){if(o===0)break t;o--,l+=r[a++]<>>=x,d-=x,s.lens[s.have++]=y;else{if(y===16){for(m=x+2;d>>=x,d-=x,s.have===0){t.msg=\"invalid bit length repeat\",s.mode=P;break}b=s.lens[s.have-1],_=3+(l&3),l>>>=2,d-=2}else if(y===17){for(m=x+3;d>>=x,d-=x,b=0,_=3+(l&7),l>>>=3,d-=3}else{for(m=x+7;d>>=x,d-=x,b=0,_=11+(l&127),l>>>=7,d-=7}if(s.have+_>s.nlen+s.ndist){t.msg=\"invalid bit length repeat\",s.mode=P;break}for(;_--;)s.lens[s.have++]=b}}if(s.mode===P)break;if(s.lens[256]===0){t.msg=\"invalid code -- missing end-of-block\",s.mode=P;break}if(s.lenbits=9,g={bits:s.lenbits},k=be(Mr,s.lens,0,s.nlen,s.lencode,0,s.work,g),s.lenbits=g.bits,k){t.msg=\"invalid literal/lengths set\",s.mode=P;break}if(s.distbits=6,s.distcode=s.distdyn,g={bits:s.distbits},k=be(zr,s.lens,s.nlen,s.ndist,s.distcode,0,s.work,g),s.distbits=g.bits,k){t.msg=\"invalid distances set\",s.mode=P;break}if(s.mode=Me,e===Re)break t;case Me:s.mode=ze;case ze:if(o>=6&&p>=258){t.next_out=n,t.avail_out=p,t.next_in=a,t.avail_in=o,s.hold=l,s.bits=d,Go(t,w),n=t.next_out,i=t.output,p=t.avail_out,a=t.next_in,r=t.input,o=t.avail_in,l=s.hold,d=s.bits,s.mode===mt&&(s.back=-1);break}for(s.back=0;j=s.lencode[l&(1<>>24,O=j>>>16&255,y=j&65535,!(x<=d);){if(o===0)break t;o--,l+=r[a++]<>A)],x=j>>>24,O=j>>>16&255,y=j&65535,!(A+x<=d);){if(o===0)break t;o--,l+=r[a++]<>>=A,d-=A,s.back+=A}if(l>>>=x,d-=x,s.back+=x,s.length=y,O===0){s.mode=zi;break}if(O&32){s.back=-1,s.mode=mt;break}if(O&64){t.msg=\"invalid literal/length code\",s.mode=P;break}s.extra=O&15,s.mode=Ti;case Ti:if(s.extra){for(m=s.extra;d>>=s.extra,d-=s.extra,s.back+=s.extra}s.was=s.length,s.mode=Ci;case Ci:for(;j=s.distcode[l&(1<>>24,O=j>>>16&255,y=j&65535,!(x<=d);){if(o===0)break t;o--,l+=r[a++]<>A)],x=j>>>24,O=j>>>16&255,y=j&65535,!(A+x<=d);){if(o===0)break t;o--,l+=r[a++]<>>=A,d-=A,s.back+=A}if(l>>>=x,d-=x,s.back+=x,O&64){t.msg=\"invalid distance code\",s.mode=P;break}s.offset=y,s.extra=O&15,s.mode=Ri;case Ri:if(s.extra){for(m=s.extra;d>>=s.extra,d-=s.extra,s.back+=s.extra}if(s.offset>s.dmax){t.msg=\"invalid distance too far back\",s.mode=P;break}s.mode=Mi;case Mi:if(p===0)break t;if(_=w-p,s.offset>_){if(_=s.offset-_,_>s.whave&&s.sane){t.msg=\"invalid distance too far back\",s.mode=P;break}_>s.wnext?(_-=s.wnext,T=s.wsize-_):T=s.wnext-_,_>s.length&&(_=s.length),F=s.window}else F=i,T=n-s.offset,_=s.length;_>p&&(_=p),p-=_,s.length-=_;do i[n++]=F[T++];while(--_);s.length===0&&(s.mode=ze);break;case zi:if(p===0)break t;i[n++]=s.length,p--,s.mode=ze;break;case cs:if(s.wrap){for(;d<32;){if(o===0)break t;o--,l|=r[a++]<{if(!t||!t.state)return _t;let e=t.state;return e.window&&(e.window=null),t.state=null,Yt},bl=(t,e)=>{if(!t||!t.state)return _t;let s=t.state;return(s.wrap&2)===0?_t:(s.head=e,e.done=!1,Yt)},ul=(t,e)=>{let s=e.length,r,i,a;return!t||!t.state||(r=t.state,r.wrap!==0&&r.mode!==Ye)?_t:r.mode===Ye&&(i=1,i=me(i,e,s,0),i!==r.check)?Vr:(a=Hr(t,e,s,s),a?(r.mode=Nr,Er):(r.havedict=1,Yt))},_l=Zr,fl=Pr,pl=Dr,gl=ll,wl=Lr,ml=hl,yl=cl,vl=bl,Sl=ul,kl=\"pako inflate (from Nodeca project)\",kt={inflateReset:_l,inflateReset2:fl,inflateResetKeep:pl,inflateInit:gl,inflateInit2:wl,inflate:ml,inflateEnd:yl,inflateGetHeader:vl,inflateSetDictionary:Sl,inflateInfo:kl};function Ol(){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}var Il=Ol,Gr=Object.prototype.toString,{Z_NO_FLUSH:Al,Z_FINISH:xl,Z_OK:Se,Z_STREAM_END:_s,Z_NEED_DICT:fs,Z_STREAM_ERROR:jl,Z_DATA_ERROR:Di,Z_MEM_ERROR:Ul}=se;function xe(t){this.options=Qe.assign({chunkSize:1024*64,windowBits:15,to:\"\"},t||{});let e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new Cr,this.strm.avail_out=0;let s=kt.inflateInit2(this.strm,e.windowBits);if(s!==Se)throw new Error(Lt[s]);if(this.header=new Il,kt.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary==\"string\"?e.dictionary=ve.string2buf(e.dictionary):Gr.call(e.dictionary)===\"[object ArrayBuffer]\"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(s=kt.inflateSetDictionary(this.strm,e.dictionary),s!==Se)))throw new Error(Lt[s])}xe.prototype.push=function(t,e){let s=this.strm,r=this.options.chunkSize,i=this.options.dictionary,a,n,o;if(this.ended)return!1;for(e===~~e?n=e:n=e===!0?xl:Al,Gr.call(t)===\"[object ArrayBuffer]\"?s.input=new Uint8Array(t):s.input=t,s.next_in=0,s.avail_in=s.input.length;;){for(s.avail_out===0&&(s.output=new Uint8Array(r),s.next_out=0,s.avail_out=r),a=kt.inflate(s,n),a===fs&&i&&(a=kt.inflateSetDictionary(s,i),a===Se?a=kt.inflate(s,n):a===Di&&(a=fs));s.avail_in>0&&a===_s&&s.state.wrap>0&&t[s.next_in]!==0;)kt.inflateReset(s),a=kt.inflate(s,n);switch(a){case jl:case Di:case fs:case Ul:return this.onEnd(a),this.ended=!0,!1}if(o=s.avail_out,s.next_out&&(s.avail_out===0||a===_s))if(this.options.to===\"string\"){let p=ve.utf8border(s.output,s.next_out),l=s.next_out-p,d=ve.buf2string(s.output,p);s.next_out=l,s.avail_out=r-l,l&&s.output.set(s.output.subarray(p,p+l),0),this.onData(d)}else this.onData(s.output.length===s.next_out?s.output:s.output.subarray(0,s.next_out));if(!(a===Se&&o===0)){if(a===_s)return a=kt.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(s.avail_in===0)break}}return!0};xe.prototype.onData=function(t){this.chunks.push(t)};xe.prototype.onEnd=function(t){t===Se&&(this.options.to===\"string\"?this.result=this.chunks.join(\"\"):this.result=Qe.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function Ns(t,e){let s=new xe(e);if(s.push(t),s.err)throw s.msg||Lt[s.err];return s.result}function Fl(t,e){return e=e||{},e.raw=!0,Ns(t,e)}var Tl=xe,Cl=Ns,Rl=Fl,Ml=Ns,zl=se,Vl={Inflate:Tl,inflate:Cl,inflateRaw:Rl,ungzip:Ml,constants:zl},{Deflate:Gl,deflate:Yl,deflateRaw:El,gzip:Xl}=Lo,{Inflate:Wl,inflate:ql,inflateRaw:Bl,ungzip:Kl}=Vl,Nl=El,Dl=Bl,Yr=t=>Dl(t),xs=t=>Nl(t,{level:9}),Zl=class{constructor(){this.pendingMessages=[]}sendClientMessage(t,e){t.finish(e),this.doSendMessage(xs(t.asUint8Array()))}getPendingMessages(){return this.pendingMessages}markPendingMessagesAsRead(){this.pendingMessages.length=0}onMessage(t){this.pendingMessages.push(ct.getRootAsServerMessage(new ue(Yr(t))))}onDisconnection(){de(\"disconnected\")}},Pl=class{constructor(){this.usersPendingMessages=new Map,this.disconnectedUsers=[]}sendServerMessageTo(t,e,s){e.finish(s),this.doSendMessageTo(t,xs(e.asUint8Array()))}sendServerMessageToAll(t,e){t.finish(e);let s=xs(t.asUint8Array());for(let r of this.usersPendingMessages.keys())this.doSendMessageTo(r,s)}getUsersPendingMessages(){return this.usersPendingMessages.entries()}getConnectedUsers(){return this.usersPendingMessages.keys()}getDisconnectedUsers(){return this.disconnectedUsers}onMessage(t,e){this.usersPendingMessages.get(t).push(vt.getRootAsClientMessage(new ue(Yr(e))))}onConnection(t){this.usersPendingMessages.set(t,[])}onDisconnection(t){this.usersPendingMessages.delete(t),this.disconnectedUsers.push(t)}};gdjs.BBTextRuntimeObject&&(gdjs.BBTextRuntimeObject.prototype.getString=gdjs.BBTextRuntimeObject.prototype.getBBText,gdjs.BBTextRuntimeObject.prototype.setString=gdjs.BBTextRuntimeObject.prototype.setBBText),gdjs.BitmapTextRuntimeObject&&(gdjs.BitmapTextRuntimeObject.prototype.getString=gdjs.BitmapTextRuntimeObject.prototype.getText,gdjs.BitmapTextRuntimeObject.prototype.setString=gdjs.BitmapTextRuntimeObject.prototype.setText);return $r(Ll);})();\n/*! pako 2.0.4 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n{", "parameterObjects": "", "useStrict": true, "eventsSheetExpanded": false diff --git a/extensions/THNK_GeckosServer.json b/extensions/THNK_GeckosServer.json new file mode 100644 index 0000000..c3ad06e --- /dev/null +++ b/extensions/THNK_GeckosServer.json @@ -0,0 +1,90 @@ +{ + "author": "", + "category": "Network", + "description": "A THNK adapter to provide a server via [geckos.io](https://geckos.io).", + "extensionNamespace": "", + "fullName": "THNK Server (Geckos.io)", + "helpPath": "", + "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNlcnZlci1uZXR3b3JrIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEzLDE5SDE0QTEsMSAwIDAsMSAxNSwyMEgyMlYyMkgxNUExLDEgMCAwLDEgMTQsMjNIMTBBMSwxIDAgMCwxIDksMjJIMlYyMEg5QTEsMSAwIDAsMSAxMCwxOUgxMVYxN0g0QTEsMSAwIDAsMSAzLDE2VjEyQTEsMSAwIDAsMSA0LDExSDIwQTEsMSAwIDAsMSAyMSwxMlYxNkExLDEgMCAwLDEgMjAsMTdIMTNWMTlNNCwzSDIwQTEsMSAwIDAsMSAyMSw0VjhBMSwxIDAgMCwxIDIwLDlINEExLDEgMCAwLDEgMyw4VjRBMSwxIDAgMCwxIDQsM005LDdIMTBWNUg5VjdNOSwxNUgxMFYxM0g5VjE1TTUsNVY3SDdWNUg1TTUsMTNWMTVIN1YxM0g1WiIgLz48L3N2Zz4=", + "name": "THNK_GeckosServer", + "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/server-network.svg", + "shortDescription": "A THNK adapter to provide a server via geckos.io", + "version": "1.0.0", + "tags": [], + "authorIds": [ + "ZgrsWuRTAkXgeuPV9bo0zuEcA2w1" + ], + "dependencies": [ + { + "exportName": "@geckos.io/server", + "name": "Geckos server", + "type": "npm", + "version": "^2.2.3" + } + ], + "eventsFunctions": [ + { + "description": "", + "fullName": "", + "functionType": "Action", + "group": "", + "name": "onFirstSceneLoaded", + "private": false, + "sentence": "", + "events": [ + { + "type": "BuiltinCommonInstructions::JsCode", + "inlineCode": "// Load THNK Geckos Server Adapter (https://github.com/arthuro555/THNK)\n\"use strict\";var ft=Object.create;var xe=Object.defineProperty;var lt=Object.getOwnPropertyDescriptor;var dt=Object.getOwnPropertyNames;var pt=Object.getPrototypeOf,Et=Object.prototype.hasOwnProperty;var T=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var mt=(r,e,t,i)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let s of dt(e))!Et.call(r,s)&&s!==t&&xe(r,s,{get:()=>e[s],enumerable:!(i=lt(e,s))||i.enumerable});return r};var Te=(r,e,t)=>(t=r!=null?ft(pt(r)):{},mt(e||!r||!r.__esModule?xe(t,\"default\",{value:r,enumerable:!0}):t,r));var Ae=T((Yt,Pe)=>{var S=require(\"fs\"),Ct=require(\"util\"),W=require(\"path\"),_e=require(\"events\"),Ue=require(\"zlib\"),Be=require(\"stream\"),o={LOCHDR:30,LOCSIG:67324752,LOCVER:4,LOCFLG:6,LOCHOW:8,LOCTIM:10,LOCCRC:14,LOCSIZ:18,LOCLEN:22,LOCNAM:26,LOCEXT:28,EXTSIG:134695760,EXTHDR:16,EXTCRC:4,EXTSIZ:8,EXTLEN:12,CENHDR:46,CENSIG:33639248,CENVEM:4,CENVER:6,CENFLG:8,CENHOW:10,CENTIM:12,CENCRC:16,CENSIZ:20,CENLEN:24,CENNAM:28,CENEXT:30,CENCOM:32,CENDSK:34,CENATT:36,CENATX:38,CENOFF:42,ENDHDR:22,ENDSIG:101010256,ENDSIGFIRST:80,ENDSUB:8,ENDTOT:10,ENDSIZ:12,ENDOFF:16,ENDCOM:20,MAXFILECOMMENT:65535,ENDL64HDR:20,ENDL64SIG:117853008,ENDL64SIGFIRST:80,ENDL64OFS:8,END64HDR:56,END64SIG:101075792,END64SIGFIRST:80,END64SUB:24,END64TOT:32,END64SIZ:40,END64OFF:48,STORED:0,SHRUNK:1,REDUCED1:2,REDUCED2:3,REDUCED3:4,REDUCED4:5,IMPLODED:6,DEFLATED:8,ENHANCED_DEFLATED:9,PKWARE:10,BZIP2:12,LZMA:14,IBM_TERSE:18,IBM_LZ77:19,FLG_ENC:0,FLG_COMP1:1,FLG_COMP2:2,FLG_DESC:4,FLG_ENH:8,FLG_STR:16,FLG_LNG:1024,FLG_MSK:4096,FLG_ENTRY_ENC:1,EF_ID:0,EF_SIZE:2,ID_ZIP64:1,ID_AVINFO:7,ID_PFS:8,ID_OS2:9,ID_NTFS:10,ID_OPENVMS:12,ID_UNIX:13,ID_FORK:14,ID_PATCH:15,ID_X509_PKCS7:20,ID_X509_CERTID_F:21,ID_X509_CERTID_C:22,ID_STRONGENC:23,ID_RECORD_MGT:24,ID_X509_PKCS7_RL:25,ID_IBM1:101,ID_IBM2:102,ID_POSZIP:18064,EF_ZIP64_OR_32:4294967295,EF_ZIP64_OR_16:65535},G=function(r){let e,t,i,s,c,d,p=this,m=r.storeEntries!==!1?{}:null,a=r.file,l=r.nameEncoding?new TextDecoder(r.nameEncoding):null;C();function C(){r.fd?(e=r.fd,F()):S.open(a,\"r\",(n,h)=>{if(n)return p.emit(\"error\",n);e=h,F()})}function F(){S.fstat(e,(n,h)=>{if(n)return p.emit(\"error\",n);t=h.size,i=r.chunkSize||Math.round(t/1e3),i=Math.max(Math.min(i,Math.min(128*1024,t)),Math.min(1024,t)),N()})}function y(n,h){if(n||!h)return p.emit(\"error\",n||new Error(\"Archive read error\"));let f=s.lastPos,u=f-s.win.position,g=s.win.buffer,E=s.minPos;for(;--f>=E&&--u>=0;)if(g.length-u>=4&&g[u]===s.firstByte&&g.readUInt32LE(u)===s.sig){s.lastBufferPosition=u,s.lastBytesRead=h,s.complete();return}if(f===E)return p.emit(\"error\",new Error(\"Bad archive\"));if(s.lastPos=f+1,s.chunkSize*=2,f<=E)return p.emit(\"error\",new Error(\"Bad archive\"));let _=Math.min(s.chunkSize,f-E);s.win.expandLeft(_,y)}function N(){let n=Math.min(o.ENDHDR+o.MAXFILECOMMENT,t);s={win:new ne(e),totalReadLength:n,minPos:t-n,lastPos:t,chunkSize:Math.min(1024,i),firstByte:o.ENDSIGFIRST,sig:o.ENDSIG,complete:R},s.win.read(t-s.chunkSize,s.chunkSize,y)}function R(){let n=s.win.buffer,h=s.lastBufferPosition;try{c=new pe,c.read(n.slice(h,h+o.ENDHDR)),c.headerOffset=s.win.position+h,c.commentLength?p.comment=n.slice(h+o.ENDHDR,h+o.ENDHDR+c.commentLength).toString():p.comment=null,p.entriesCount=c.volumeEntries,p.centralDirectory=c,c.volumeEntries===o.EF_ZIP64_OR_16&&c.totalEntries===o.EF_ZIP64_OR_16||c.size===o.EF_ZIP64_OR_32||c.offset===o.EF_ZIP64_OR_32?U():(s={},H())}catch(f){p.emit(\"error\",f)}}function U(){let n=o.ENDL64HDR;s.lastBufferPosition>n?(s.lastBufferPosition-=n,k()):(s={win:s.win,totalReadLength:n,minPos:s.win.position-n,lastPos:s.win.position,chunkSize:s.chunkSize,firstByte:o.ENDL64SIGFIRST,sig:o.ENDL64SIG,complete:k},s.win.read(s.lastPos-s.chunkSize,s.chunkSize,y))}function k(){let n=s.win.buffer,h=new Ee;h.read(n.slice(s.lastBufferPosition,s.lastBufferPosition+o.ENDL64HDR));let f=t-h.headerOffset;s={win:s.win,totalReadLength:f,minPos:h.headerOffset,lastPos:s.lastPos,chunkSize:s.chunkSize,firstByte:o.END64SIGFIRST,sig:o.END64SIG,complete:fe},s.win.read(t-s.chunkSize,s.chunkSize,y)}function fe(){let n=s.win.buffer,h=new me;h.read(n.slice(s.lastBufferPosition,s.lastBufferPosition+o.END64HDR)),p.centralDirectory.volumeEntries=h.volumeEntries,p.centralDirectory.totalEntries=h.totalEntries,p.centralDirectory.size=h.size,p.centralDirectory.offset=h.offset,p.entriesCount=h.volumeEntries,s={},H()}function H(){s={win:new ne(e),pos:c.offset,chunkSize:i,entriesLeft:c.volumeEntries},s.win.read(s.pos,Math.min(i,t-s.pos),le)}function le(n,h){if(n||!h)return p.emit(\"error\",n||new Error(\"Entries read error\"));let f=s.pos-s.win.position,u=s.entry,g=s.win.buffer,E=g.length;try{for(;s.entriesLeft>0;){u||(u=new Ce,u.readHeader(g,f),u.headerOffset=s.win.position+f,s.entry=u,s.pos+=o.CENHDR,f+=o.CENHDR);let _=u.fnameLen+u.extraLen+u.comLen,v=_+(s.entriesLeft>1?o.CENHDR:0);if(E-f{if(f)return h(f);let g=ie(u),E=new ge(e,g,u.compressedSize);if(u.method!==o.STORED)if(u.method===o.DEFLATED)E=E.pipe(Ue.createInflateRaw());else return h(new Error(\"Unknown compression method: \"+u.method));J(u)&&(E=E.pipe(new we(E,u.crc,u.size))),h(null,E)},!1)},this.entryDataSync=function(n){let h=null;if(this.openEntry(n,(u,g)=>{h=u,n=g},!0),h)throw h;let f=Buffer.alloc(n.compressedSize);if(new B(e,f,0,n.compressedSize,ie(n),u=>{h=u}).read(!0),h)throw h;if(n.method!==o.STORED)if(n.method===o.DEFLATED||n.method===o.ENHANCED_DEFLATED)f=Ue.inflateRawSync(f);else throw new Error(\"Unknown compression method: \"+n.method);if(f.length!==n.size)throw new Error(\"Invalid size\");return J(n)&&new A(n.crc,n.size).data(f),f},this.openEntry=function(n,h,f){if(typeof n==\"string\"&&(Z(),n=m[n],!n))return h(new Error(\"Entry not found\"));if(!n.isFile)return h(new Error(\"Entry is not file\"));if(!e)return h(new Error(\"Archive closed\"));let u=Buffer.alloc(o.LOCHDR);new B(e,u,0,u.length,n.offset,g=>{if(g)return h(g);let E;try{n.readDataHeader(u),n.encrypted&&(E=new Error(\"Entry encrypted\"))}catch(_){E=_}h(E,n)}).read(f)};function ie(n){return n.offset+o.LOCHDR+n.fnameLen+n.extraLen}function J(n){return(n.flags&8)!==8}function Q(n,h,f){p.stream(n,(u,g)=>{if(u)f(u);else{let E,_;g.on(\"error\",v=>{_=v,E&&(g.unpipe(E),E.close(()=>{f(v)}))}),S.open(h,\"w\",(v,x)=>{if(v)return f(v);if(_){S.close(e,()=>{f(_)});return}E=S.createWriteStream(h,{fd:x}),E.on(\"finish\",()=>{p.emit(\"extract\",n,h),_||f()}),g.pipe(E)})}})}function Se(n,h,f){if(!h.length)return f();let u=h.shift();u=W.join(n,W.join(...u)),S.mkdir(u,{recursive:!0},g=>{if(g&&g.code!==\"EEXIST\")return f(g);Se(n,h,f)})}function de(n,h,f,u,g){if(!f.length)return u(null,g);let E=f.shift(),_=W.join(n,E.name.replace(h,\"\"));Q(E,_,v=>{if(v)return u(v,g);de(n,h,f,u,g+1)})}this.extract=function(n,h,f){let u=n||\"\";if(typeof n==\"string\"&&(n=this.entry(n),n?u=n.name:u.length&&u[u.length-1]!==\"/\"&&(u+=\"/\")),!n||n.isDirectory){let g=[],E=[],_={};for(let v in m)if(Object.prototype.hasOwnProperty.call(m,v)&&v.lastIndexOf(u,0)===0){let x=v.replace(u,\"\"),be=m[v];if(be.isFile&&(g.push(be),x=W.dirname(x)),x&&!_[x]&&x!==\".\"){_[x]=!0;let M=x.split(\"/\").filter(ee=>ee);for(M.length&&E.push(M);M.length>1;){M=M.slice(0,M.length-1);let ee=M.join(\"/\");if(_[ee]||ee===\".\")break;_[ee]=!0,E.push(M)}}}E.sort((v,x)=>v.length-x.length),E.length?Se(h,E,v=>{v?f(v):de(h,u,g,f,0)}):de(h,u,g,f,0)}else S.stat(h,(g,E)=>{E&&E.isDirectory()?Q(n,W.join(h,W.basename(n.name)),f):Q(n,h,f)})},this.close=function(n){d||!e?(d=!0,n&&n()):(d=!0,S.close(e,h=>{e=null,n&&n(h)}))};let ut=_e.EventEmitter.prototype.emit;this.emit=function(...n){if(!d)return ut.call(this,...n)}};G.setFs=function(r){S=r};G.debugLog=(...r)=>{G.debug&&console.log(...r)};Ct.inherits(G,_e.EventEmitter);var z=Symbol(\"zip\");G.async=class extends _e.EventEmitter{constructor(e){super();let t=new G(e);t.on(\"entry\",i=>this.emit(\"entry\",i)),t.on(\"extract\",(i,s)=>this.emit(\"extract\",i,s)),this[z]=new Promise((i,s)=>{t.on(\"ready\",()=>{t.removeListener(\"error\",s),i(t)}),t.on(\"error\",s)})}get entriesCount(){return this[z].then(e=>e.entriesCount)}get comment(){return this[z].then(e=>e.comment)}async entry(e){return(await this[z]).entry(e)}async entries(){return(await this[z]).entries()}async stream(e){let t=await this[z];return new Promise((i,s)=>{t.stream(e,(c,d)=>{c?s(c):i(d)})})}async entryData(e){let t=await this.stream(e);return new Promise((i,s)=>{let c=[];t.on(\"data\",d=>c.push(d)),t.on(\"end\",()=>{i(Buffer.concat(c))}),t.on(\"error\",d=>{t.removeAllListeners(\"end\"),s(d)})})}async extract(e,t){let i=await this[z];return new Promise((s,c)=>{i.extract(e,t,(d,w)=>{d?c(d):s(w)})})}async close(){let e=await this[z];return new Promise((t,i)=>{e.close(s=>{s?i(s):t()})})}};var pe=class{read(e){if(e.length!==o.ENDHDR||e.readUInt32LE(0)!==o.ENDSIG)throw new Error(\"Invalid central directory\");this.volumeEntries=e.readUInt16LE(o.ENDSUB),this.totalEntries=e.readUInt16LE(o.ENDTOT),this.size=e.readUInt32LE(o.ENDSIZ),this.offset=e.readUInt32LE(o.ENDOFF),this.commentLength=e.readUInt16LE(o.ENDCOM)}},Ee=class{read(e){if(e.length!==o.ENDL64HDR||e.readUInt32LE(0)!==o.ENDL64SIG)throw new Error(\"Invalid zip64 central directory locator\");this.headerOffset=P(e,o.ENDSUB)}},me=class{read(e){if(e.length!==o.END64HDR||e.readUInt32LE(0)!==o.END64SIG)throw new Error(\"Invalid central directory\");this.volumeEntries=P(e,o.END64SUB),this.totalEntries=P(e,o.END64TOT),this.size=P(e,o.END64SIZ),this.offset=P(e,o.END64OFF)}},Ce=class{readHeader(e,t){if(e.length=8&&this.size===o.EF_ZIP64_OR_32&&(this.size=P(e,t),t+=8,i-=8),i>=8&&this.compressedSize===o.EF_ZIP64_OR_32&&(this.compressedSize=P(e,t),t+=8,i-=8),i>=8&&this.offset===o.EF_ZIP64_OR_32&&(this.offset=P(e,t),t+=8,i-=8),i>=4&&this.diskStart===o.EF_ZIP64_OR_16&&(this.diskStart=e.readUInt32LE(t))}get encrypted(){return(this.flags&o.FLG_ENTRY_ENC)===o.FLG_ENTRY_ENC}get isFile(){return!this.isDirectory}},B=class{constructor(e,t,i,s,c,d){this.fd=e,this.buffer=t,this.offset=i,this.length=s,this.position=c,this.callback=d,this.bytesRead=0,this.waiting=!1}read(e){G.debugLog(\"read\",this.position,this.bytesRead,this.length,this.offset),this.waiting=!0;let t;if(e){let i=0;try{i=S.readSync(this.fd,this.buffer,this.offset+this.bytesRead,this.length-this.bytesRead,this.position+this.bytesRead)}catch(s){t=s}this.readCallback(e,t,t?i:null)}else S.read(this.fd,this.buffer,this.offset+this.bytesRead,this.length-this.bytesRead,this.position+this.bytesRead,this.readCallback.bind(this,e))}readCallback(e,t,i){if(typeof i==\"number\"&&(this.bytesRead+=i),t||!i||this.bytesRead===this.length)return this.waiting=!1,this.callback(t,this.bytesRead);this.read(e)}},ne=class{constructor(e){this.position=0,this.buffer=Buffer.alloc(0),this.fd=e,this.fsOp=null}checkOp(){if(this.fsOp&&this.fsOp.waiting)throw new Error(\"Operation in progress\")}read(e,t,i){this.checkOp(),this.buffer.length{this.emit(\"error\",s)})}_transform(e,t,i){let s;try{this.verify.data(e)}catch(c){s=c}i(s,e)}},A=class{constructor(e,t){this.crc=e,this.size=t,this.state={crc:-1,size:0}}data(e){let t=A.getCrcTable(),i=this.state.crc,s=0,c=e.length;for(;--c>=0;)i=t[(i^e[s++])&255]^i>>>8;if(this.state.crc=i,this.state.size+=e.length,this.state.size>=this.size){let d=Buffer.alloc(4);if(d.writeInt32LE(~this.state.crc&4294967295,0),i=d.readUInt32LE(0),i!==this.crc)throw new Error(\"Invalid CRC\");if(this.state.size!==this.size)throw new Error(\"Invalid size\")}}static getCrcTable(){let e=A.crcTable;if(!e){A.crcTable=e=[];let t=Buffer.alloc(4);for(let i=0;i<256;i++){let s=i;for(let c=8;--c>=0;)(s&1)!==0?s=3988292384^s>>>1:s=s>>>1;s<0&&(t.writeInt32LE(s,0),s=t.readUInt32LE(0)),e[i]=s}}return e}};function Me(r,e){let t=ze(r,16),i=ze(e,16),s={h:parseInt(t.slice(0,5).join(\"\"),2),m:parseInt(t.slice(5,11).join(\"\"),2),s:parseInt(t.slice(11,16).join(\"\"),2)*2,Y:parseInt(i.slice(0,7).join(\"\"),2)+1980,M:parseInt(i.slice(7,11).join(\"\"),2),D:parseInt(i.slice(11,16).join(\"\"),2)},c=[s.Y,s.M,s.D].join(\"-\")+\" \"+[s.h,s.m,s.s].join(\":\")+\" GMT+0\";return new Date(c).getTime()}function ze(r,e){let t=(r>>>0).toString(2);for(;t.length{var K=1e3,V=K*60,Y=V*60,j=Y*24,gt=j*7,wt=j*365.25;Ge.exports=function(r,e){e=e||{};var t=typeof r;if(t===\"string\"&&r.length>0)return _t(r);if(t===\"number\"&&isFinite(r))return e.long?Lt(r):vt(r);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(r))};function _t(r){if(r=String(r),!(r.length>100)){var e=/^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(!!e){var t=parseFloat(e[1]),i=(e[2]||\"ms\").toLowerCase();switch(i){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return t*wt;case\"weeks\":case\"week\":case\"w\":return t*gt;case\"days\":case\"day\":case\"d\":return t*j;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return t*Y;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return t*V;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return t*K;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return t;default:return}}}}function vt(r){var e=Math.abs(r);return e>=j?Math.round(r/j)+\"d\":e>=Y?Math.round(r/Y)+\"h\":e>=V?Math.round(r/V)+\"m\":e>=K?Math.round(r/K)+\"s\":r+\"ms\"}function Lt(r){var e=Math.abs(r);return e>=j?oe(r,e,j,\"day\"):e>=Y?oe(r,e,Y,\"hour\"):e>=V?oe(r,e,V,\"minute\"):e>=K?oe(r,e,K,\"second\"):r+\" ms\"}function oe(r,e,t,i){var s=e>=t*1.5;return Math.round(r/t)+\" \"+i+(s?\"s\":\"\")}});var ve=T((Qt,ke)=>{function It(r){t.debug=t,t.default=t,t.coerce=p,t.disable=c,t.enable=s,t.enabled=d,t.humanize=qe(),t.destroy=m,Object.keys(r).forEach(a=>{t[a]=r[a]}),t.names=[],t.skips=[],t.formatters={};function e(a){let l=0;for(let C=0;C{if(Z===\"%%\")return\"%\";H++;let J=t.formatters[ie];if(typeof J==\"function\"){let Q=R[H];Z=J.call(U,Q),R.splice(H,1),H--}return Z}),t.formatArgs.call(U,R),(U.log||t.log).apply(U,R)}return N.namespace=a,N.useColors=t.useColors(),N.color=t.selectColor(a),N.extend=i,N.destroy=t.destroy,Object.defineProperty(N,\"enabled\",{enumerable:!0,configurable:!1,get:()=>C!==null?C:(F!==t.namespaces&&(F=t.namespaces,y=t.enabled(a)),y),set:R=>{C=R}}),typeof t.init==\"function\"&&t.init(N),N}function i(a,l){let C=t(this.namespace+(typeof l>\"u\"?\":\":l)+a);return C.log=this.log,C}function s(a){t.save(a),t.namespaces=a,t.names=[],t.skips=[];let l,C=(typeof a==\"string\"?a:\"\").split(/[\\s,]+/),F=C.length;for(l=0;l\"-\"+l)].join(\",\");return t.enable(\"\"),a}function d(a){if(a[a.length-1]===\"*\")return!0;let l,C;for(l=0,C=t.skips.length;l{D.formatArgs=yt;D.save=Dt;D.load=Ot;D.useColors=Rt;D.storage=Ft();D.destroy=(()=>{let r=!1;return()=>{r||(r=!0,console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\"))}})();D.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"];function Rt(){return typeof window<\"u\"&&window.process&&(window.process.type===\"renderer\"||window.process.__nwjs)?!0:typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)?!1:typeof document<\"u\"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<\"u\"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)}function yt(r){if(r[0]=(this.useColors?\"%c\":\"\")+this.namespace+(this.useColors?\" %c\":\" \")+r[0]+(this.useColors?\"%c \":\" \")+\"+\"+ce.exports.humanize(this.diff),!this.useColors)return;let e=\"color: \"+this.color;r.splice(1,0,e,\"color: inherit\");let t=0,i=0;r[0].replace(/%[a-zA-Z%]/g,s=>{s!==\"%%\"&&(t++,s===\"%c\"&&(i=t))}),r.splice(i,0,e)}D.log=console.debug||console.log||(()=>{});function Dt(r){try{r?D.storage.setItem(\"debug\",r):D.storage.removeItem(\"debug\")}catch{}}function Ot(){let r;try{r=D.storage.getItem(\"debug\")}catch{}return!r&&typeof process<\"u\"&&\"env\"in process&&(r=process.env.DEBUG),r}function Ft(){try{return localStorage}catch{}}ce.exports=ve()(D);var{formatters:Nt}=ce.exports;Nt.j=function(r){try{return JSON.stringify(r)}catch(e){return\"[UnexpectedJSONParseError]: \"+e.message}}});var je=T((er,Ze)=>{\"use strict\";Ze.exports=(r,e=process.argv)=>{let t=r.startsWith(\"-\")?\"\":r.length===1?\"-\":\"--\",i=e.indexOf(t+r),s=e.indexOf(\"--\");return i!==-1&&(s===-1||i{\"use strict\";var St=require(\"os\"),Xe=require(\"tty\"),b=je(),{env:L}=process,q;b(\"no-color\")||b(\"no-colors\")||b(\"color=false\")||b(\"color=never\")?q=0:(b(\"color\")||b(\"colors\")||b(\"color=true\")||b(\"color=always\"))&&(q=1);\"FORCE_COLOR\"in L&&(L.FORCE_COLOR===\"true\"?q=1:L.FORCE_COLOR===\"false\"?q=0:q=L.FORCE_COLOR.length===0?1:Math.min(parseInt(L.FORCE_COLOR,10),3));function Le(r){return r===0?!1:{level:r,hasBasic:!0,has256:r>=2,has16m:r>=3}}function Ie(r,e){if(q===0)return 0;if(b(\"color=16m\")||b(\"color=full\")||b(\"color=truecolor\"))return 3;if(b(\"color=256\"))return 2;if(r&&!e&&q===void 0)return 0;let t=q||0;if(L.TERM===\"dumb\")return t;if(process.platform===\"win32\"){let i=St.release().split(\".\");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if(\"CI\"in L)return[\"TRAVIS\",\"CIRCLECI\",\"APPVEYOR\",\"GITLAB_CI\",\"GITHUB_ACTIONS\",\"BUILDKITE\"].some(i=>i in L)||L.CI_NAME===\"codeship\"?1:t;if(\"TEAMCITY_VERSION\"in L)return/^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(L.TEAMCITY_VERSION)?1:0;if(L.COLORTERM===\"truecolor\")return 3;if(\"TERM_PROGRAM\"in L){let i=parseInt((L.TERM_PROGRAM_VERSION||\"\").split(\".\")[0],10);switch(L.TERM_PROGRAM){case\"iTerm.app\":return i>=3?3:2;case\"Apple_Terminal\":return 2}}return/-256(color)?$/i.test(L.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(L.TERM)||\"COLORTERM\"in L?1:t}function bt(r){let e=Ie(r,r&&r.isTTY);return Le(e)}$e.exports={supportsColor:bt,stdout:Le(Ie(!0,Xe.isatty(1))),stderr:Le(Ie(!0,Xe.isatty(2)))}});var Ve=T((I,he)=>{var xt=require(\"tty\"),ae=require(\"util\");I.init=At;I.log=zt;I.formatArgs=Ut;I.save=Bt;I.load=Pt;I.useColors=Tt;I.destroy=ae.deprecate(()=>{},\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\");I.colors=[6,2,3,4,5,1];try{let r=We();r&&(r.stderr||r).level>=2&&(I.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}I.inspectOpts=Object.keys(process.env).filter(r=>/^debug_/i.test(r)).reduce((r,e)=>{let t=e.substring(6).toLowerCase().replace(/_([a-z])/g,(s,c)=>c.toUpperCase()),i=process.env[e];return/^(yes|on|true|enabled)$/i.test(i)?i=!0:/^(no|off|false|disabled)$/i.test(i)?i=!1:i===\"null\"?i=null:i=Number(i),r[t]=i,r},{});function Tt(){return\"colors\"in I.inspectOpts?Boolean(I.inspectOpts.colors):xt.isatty(process.stderr.fd)}function Ut(r){let{namespace:e,useColors:t}=this;if(t){let i=this.color,s=\"\\x1B[3\"+(i<8?i:\"8;5;\"+i),c=` ${s};1m${e} \\x1B[0m`;r[0]=c+r[0].split(`\n`).join(`\n`+c),r.push(s+\"m+\"+he.exports.humanize(this.diff)+\"\\x1B[0m\")}else r[0]=Mt()+e+\" \"+r[0]}function Mt(){return I.inspectOpts.hideDate?\"\":new Date().toISOString()+\" \"}function zt(...r){return process.stderr.write(ae.format(...r)+`\n`)}function Bt(r){r?process.env.DEBUG=r:delete process.env.DEBUG}function Pt(){return process.env.DEBUG}function At(r){r.inspectOpts={};let e=Object.keys(I.inspectOpts);for(let t=0;te.trim()).join(\" \")};Ke.O=function(r){return this.inspectOpts.colors=this.useColors,ae.inspect(r,this.inspectOpts)}});var Ye=T((rr,Re)=>{typeof process>\"u\"||process.type===\"renderer\"||process.browser===!0||process.__nwjs?Re.exports=He():Re.exports=Ve()});var Qe=T((sr,Je)=>{var te;Je.exports=function(){if(!te){try{te=Ye()(\"follow-redirects\")}catch{}typeof te!=\"function\"&&(te=function(){})}te.apply(null,arguments)}});var ct=T((ir,Ne)=>{var X=require(\"url\"),ye=X.URL,Gt=require(\"http\"),qt=require(\"https\"),rt=require(\"stream\").Writable,st=require(\"assert\"),it=Qe(),Oe=[\"abort\",\"aborted\",\"connect\",\"error\",\"socket\",\"timeout\"],Fe=Object.create(null);Oe.forEach(function(r){Fe[r]=function(e,t,i){this._redirectable.emit(r,e,t,i)}});var kt=se(\"ERR_INVALID_URL\",\"Invalid URL\",TypeError),et=se(\"ERR_FR_REDIRECTION_FAILURE\",\"Redirected request failed\"),Ht=se(\"ERR_FR_TOO_MANY_REDIRECTS\",\"Maximum number of redirects exceeded\"),Zt=se(\"ERR_FR_MAX_BODY_LENGTH_EXCEEDED\",\"Request body larger than maxBodyLength limit\"),jt=se(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\");function O(r,e){rt.call(this),this._sanitizeOptions(r),this._options=r,this._ended=!1,this._ending=!1,this._redirectCount=0,this._redirects=[],this._requestBodyLength=0,this._requestBodyBuffers=[],e&&this.on(\"response\",e);var t=this;this._onNativeResponse=function(i){t._processResponse(i)},this._performRequest()}O.prototype=Object.create(rt.prototype);O.prototype.abort=function(){ot(this._currentRequest),this.emit(\"abort\")};O.prototype.write=function(r,e,t){if(this._ending)throw new jt;if(!$(r)&&!Wt(r))throw new TypeError(\"data should be a string, Buffer or Uint8Array\");if(re(e)&&(t=e,e=null),r.length===0){t&&t();return}this._requestBodyLength+r.length<=this._options.maxBodyLength?(this._requestBodyLength+=r.length,this._requestBodyBuffers.push({data:r,encoding:e}),this._currentRequest.write(r,e,t)):(this.emit(\"error\",new Zt),this.abort())};O.prototype.end=function(r,e,t){if(re(r)?(t=r,r=e=null):re(e)&&(t=e,e=null),!r)this._ended=this._ending=!0,this._currentRequest.end(null,null,t);else{var i=this,s=this._currentRequest;this.write(r,e,function(){i._ended=!0,s.end(null,null,t)}),this._ending=!0}};O.prototype.setHeader=function(r,e){this._options.headers[r]=e,this._currentRequest.setHeader(r,e)};O.prototype.removeHeader=function(r){delete this._options.headers[r],this._currentRequest.removeHeader(r)};O.prototype.setTimeout=function(r,e){var t=this;function i(d){d.setTimeout(r),d.removeListener(\"timeout\",d.destroy),d.addListener(\"timeout\",d.destroy)}function s(d){t._timeout&&clearTimeout(t._timeout),t._timeout=setTimeout(function(){t.emit(\"timeout\"),c()},r),i(d)}function c(){t._timeout&&(clearTimeout(t._timeout),t._timeout=null),t.removeListener(\"abort\",c),t.removeListener(\"error\",c),t.removeListener(\"response\",c),e&&t.removeListener(\"timeout\",e),t.socket||t._currentRequest.removeListener(\"socket\",s)}return e&&this.on(\"timeout\",e),this.socket?s(this.socket):this._currentRequest.once(\"socket\",s),this.on(\"socket\",i),this.on(\"abort\",c),this.on(\"error\",c),this.on(\"response\",c),this};[\"flushHeaders\",\"getHeader\",\"setNoDelay\",\"setSocketKeepAlive\"].forEach(function(r){O.prototype[r]=function(e,t){return this._currentRequest[r](e,t)}});[\"aborted\",\"connection\",\"socket\"].forEach(function(r){Object.defineProperty(O.prototype,r,{get:function(){return this._currentRequest[r]}})});O.prototype._sanitizeOptions=function(r){if(r.headers||(r.headers={}),r.host&&(r.hostname||(r.hostname=r.host),delete r.host),!r.pathname&&r.path){var e=r.path.indexOf(\"?\");e<0?r.pathname=r.path:(r.pathname=r.path.substring(0,e),r.search=r.path.substring(e))}};O.prototype._performRequest=function(){var r=this._options.protocol,e=this._options.nativeProtocols[r];if(!e){this.emit(\"error\",new TypeError(\"Unsupported protocol \"+r));return}if(this._options.agents){var t=r.slice(0,-1);this._options.agent=this._options.agents[t]}var i=this._currentRequest=e.request(this._options,this._onNativeResponse);i._redirectable=this;for(var s of Oe)i.on(s,Fe[s]);if(this._currentUrl=/^\\//.test(this._options.path)?X.format(this._options):this._options.path,this._isRedirect){var c=0,d=this,w=this._requestBodyBuffers;(function p(m){if(i===d._currentRequest)if(m)d.emit(\"error\",m);else if(c=400){r.responseUrl=this._currentUrl,r.redirects=this._redirects,this.emit(\"response\",r),this._requestBodyBuffers=[];return}if(ot(this._currentRequest),r.destroy(),++this._redirectCount>this._options.maxRedirects){this.emit(\"error\",new Ht);return}var i,s=this._options.beforeRedirect;s&&(i=Object.assign({Host:r.req.getHeader(\"host\")},this._options.headers));var c=this._options.method;((e===301||e===302)&&this._options.method===\"POST\"||e===303&&!/^(?:GET|HEAD)$/.test(this._options.method))&&(this._options.method=\"GET\",this._requestBodyBuffers=[],De(/^content-/i,this._options.headers));var d=De(/^host$/i,this._options.headers),w=X.parse(this._currentUrl),p=d||w.host,m=/^\\w+:/.test(t)?this._currentUrl:X.format(Object.assign(w,{host:p})),a;try{a=X.resolve(m,t)}catch(y){this.emit(\"error\",new et({cause:y}));return}it(\"redirecting to\",a),this._isRedirect=!0;var l=X.parse(a);if(Object.assign(this._options,l),(l.protocol!==w.protocol&&l.protocol!==\"https:\"||l.host!==p&&!$t(l.host,p))&&De(/^(?:authorization|cookie)$/i,this._options.headers),re(s)){var C={headers:r.headers,statusCode:e},F={url:m,method:c,headers:i};try{s(this._options,C,F)}catch(y){this.emit(\"error\",y);return}this._sanitizeOptions(this._options)}try{this._performRequest()}catch(y){this.emit(\"error\",new et({cause:y}))}};function nt(r){var e={maxRedirects:21,maxBodyLength:10485760},t={};return Object.keys(r).forEach(function(i){var s=i+\":\",c=t[s]=r[i],d=e[i]=Object.create(c);function w(m,a,l){if($(m)){var C;try{C=tt(new ye(m))}catch{C=X.parse(m)}if(!$(C.protocol))throw new kt({input:m});m=C}else ye&&m instanceof ye?m=tt(m):(l=a,a=m,m={protocol:s});return re(a)&&(l=a,a=null),a=Object.assign({maxRedirects:e.maxRedirects,maxBodyLength:e.maxBodyLength},m,a),a.nativeProtocols=t,!$(a.host)&&!$(a.hostname)&&(a.hostname=\"::1\"),st.equal(a.protocol,s,\"protocol mismatch\"),it(\"options\",a),new O(a,l)}function p(m,a,l){var C=d.request(m,a,l);return C.end(),C}Object.defineProperties(d,{request:{value:w,configurable:!0,enumerable:!0,writable:!0},get:{value:p,configurable:!0,enumerable:!0,writable:!0}})}),e}function Xt(){}function tt(r){var e={protocol:r.protocol,hostname:r.hostname.startsWith(\"[\")?r.hostname.slice(1,-1):r.hostname,hash:r.hash,search:r.search,pathname:r.pathname,path:r.pathname+r.search,href:r.href};return r.port!==\"\"&&(e.port=Number(r.port)),e}function De(r,e){var t;for(var i in e)r.test(i)&&(t=e[i],delete e[i]);return t===null||typeof t>\"u\"?void 0:String(t).trim()}function se(r,e,t){function i(s){Error.captureStackTrace(this,this.constructor),Object.assign(this,s||{}),this.code=r,this.message=this.cause?e+\": \"+this.cause.message:e}return i.prototype=new(t||Error),i.prototype.constructor=i,i.prototype.name=\"Error [\"+r+\"]\",i}function ot(r){for(var e of Oe)r.removeListener(e,Fe[e]);r.on(\"error\",Xt),r.abort()}function $t(r,e){st($(r)&&$(e));var t=r.length-e.length-1;return t>0&&r[t]===\".\"&&r.endsWith(e)}function $(r){return typeof r==\"string\"||r instanceof String}function re(r){return typeof r==\"function\"}function Wt(r){return typeof r==\"object\"&&\"length\"in r}Ne.exports=nt({http:Gt,https:qt});Ne.exports.wrap=nt});var at=Te(Ae()),ht=Te(ct()),ue=()=>Math.random().toFixed(Math.ceil(Math.random()*6)+2).slice(2);THNK.GeckosServerAdapter=class extends THNK.ServerAdapter{constructor(t,i){super();this.id=0;this.server=null;this.httpServer=null;this.channels=new Map;this.ip=t,this.port=i}async prepare(t){let i=t.getGame().getRenderer().getElectronRemote();if(!i)throw new Error(\"The game does not seem to be running on a desktop, impossible to launch geckos server!\");let s=i.require,c;if(!t.getGame().isPreview())c=s(\"@geckos.io/server\").geckos;else{let w=s(\"fs\");if(!w.existsSync(\"./geckos-server\")){console.info(\"Geckos server not found, downloading it now!\");let{https:{get:p}}=(0,ht.wrap)({https:s(\"https\")}),{pipeline:m}=s(\"stream/promises\"),a=await new Promise(C=>p(\"https://s3.arthuro555.com/geckos-server-electron.zip\",F=>C(F)));await m(a,w.createWriteStream(\"./geckos-server.zip\"));let l=new at.async({file:\"./geckos-server.zip\"});w.mkdirSync(\"./geckos-server\"),await l.extract(null,\"./geckos-server\"),await l.close()}c=s(process.cwd()+\"/geckos-server/index.js\").geckos}if(!c)throw new Error(\"Geckos not found!\");this.server=c({label:\"THNK\"}),this.server.onConnection(w=>{let p=`${ue()}-${this.id++}-${ue()}`;this.onConnection(p),this.channels.set(p,w),w.onRaw(m=>this.onMessage(p,m)),w.onDisconnect(()=>this.onDisconnection(p))}),this.httpServer=s(\"http\").createServer(),this.server.addServer(this.httpServer),this.httpServer.listen(this.port);let d=w=>{w.returnValue=\"false\",this.close(),window.removeEventListener(\"beforeunload\",d),window.close()};window.addEventListener(\"beforeunload\",d)}close(){if(this.server&&this.httpServer){this.httpServer.close(),this.httpServer.closeAllConnections&&this.httpServer.closeAllConnections();for(let t of this.channels.values())t.close();this.channels.clear(),this.httpServer=null,this.server=null}}doSendMessageTo(t,i){let s=this.channels.get(t);s&&s.raw.emit(i.buffer.slice(i.buffer.byteLength-i.byteLength))}getServerID(){return`${ue()}-server-${ue()}`}};\n/**\n * @license node-stream-zip | (c) 2020 Antelle | https://github.com/antelle/node-stream-zip/blob/master/LICENSE\n * Portions copyright https://github.com/cthackers/adm-zip | https://raw.githubusercontent.com/cthackers/adm-zip/master/LICENSE\n */\n", + "parameterObjects": "", + "useStrict": true, + "eventsSheetExpanded": false + } + ], + "parameters": [], + "objectGroups": [] + }, + { + "description": "Hosts a THNK server on the local machine. Does not work on web or mobile builds.", + "fullName": "Host a server (desktop only)", + "functionType": "Action", + "group": "", + "name": "HostServer", + "private": false, + "sentence": "Host scene _PARAM2_ on a local server on port _PARAM1_", + "events": [ + { + "type": "BuiltinCommonInstructions::JsCode", + "inlineCode": "THNK.server.startServer(\n new THNK.GeckosServerAdapter(),\n runtimeScene,\n eventsFunctionContext.getArgument(\"Scene\")\n);\n", + "parameterObjects": "", + "useStrict": true, + "eventsSheetExpanded": false + } + ], + "parameters": [ + { + "codeOnly": false, + "defaultValue": "", + "description": "The port to host the server on", + "longDescription": "", + "name": "Port", + "optional": false, + "supplementaryInformation": "", + "type": "expression" + }, + { + "codeOnly": false, + "defaultValue": "", + "description": "The scene to start the server on.", + "longDescription": "", + "name": "Scene", + "optional": false, + "supplementaryInformation": "", + "type": "sceneName" + } + ], + "objectGroups": [] + } + ], + "eventsBasedBehaviors": [], + "eventsBasedObjects": [] +} \ No newline at end of file diff --git a/package.json b/package.json index 69416a8..e759958 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "generate-protocol": "node ./scripts/generate-protocol.js", "build:thnk": "tsup ./code/index.ts --format esm --platform=browser --treeshake smallest --minify && tsup ./dist/index.mjs --format iife --platform=browser --global-name THNK --minify && node -e \"fs.promises.rm('./dist/index.mjs', {force:true})\"", "build:thnk:dev": "tsup ./code/index.ts --format iife --platform=browser --global-name THNK", - "build:adapters": "tsup ./code/adapters/*.ts --format iife", + "build:adapters": "tsup ./code/adapters/*.ts --format iife && tsup ./code/adapters/geckos-server.ts --minify --format cjs", "build:extensions": "node ./scripts/generate-extensions.js", "build:clean": "node -e \"fs.promises.rm('./dist', {recursive:true,force:true})\"", "build": "npm run build:clean && npm run generate-protocol && npm run build:thnk && npm run build:adapters && npm run build:extensions" @@ -19,12 +19,15 @@ "devDependencies": { "@geckos.io/client": "^2.2.3", "@geckos.io/server": "^2.2.3", + "@types/follow-redirects": "^1.14.1", "@types/jest": "^29.0.3", - "@types/node": "^18.0.3", + "@types/node": "^18.7.18", "@types/pako": "^2.0.0", "flatbuffers": "^2.0.6", + "follow-redirects": "^1.15.2", "jest": "^29.0.3", "msgpackr": "^1.6.1", + "node-stream-zip": "^1.15.0", "pako": "^2.0.4", "prettier": "^2.7.1", "ts-jest": "^29.0.1", diff --git a/scripts/generate-extensions.js b/scripts/generate-extensions.js index c0dd359..d0a88a3 100644 --- a/scripts/generate-extensions.js +++ b/scripts/generate-extensions.js @@ -10,8 +10,8 @@ const fs = require("fs"); fs.readFileSync(extensionsPath + "THNK.json").toString() ); - thnkExt.eventsFunctions[0].events[0].inlineCode = `// Load THNK library (https://github.com/arthuro555/THNK) -window.${thnkCode.slice(`"use strict";var `.length)}`; + thnkExt.eventsFunctions[0].events[0].inlineCode = `}// Load THNK library (https://github.com/arthuro555/THNK) +window.${thnkCode.slice(`"use strict";var `.length)}{`; fs.writeFileSync( extensionsPath + "THNK.json", @@ -35,3 +35,22 @@ window.${thnkCode.slice(`"use strict";var `.length)}`; JSON.stringify(p2pExt, null, 2) ); } + +{ + const geckosServerCode = fs + .readFileSync(distPath + "geckos-server.js") + .toString(); + /** @type {{eventsFunctions: { name: string, events: { type: string, inlineCode: string }[] }[]}} */ + const geckosServerExt = JSON.parse( + fs.readFileSync(extensionsPath + "THNK_GeckosServer.json").toString() + ); + + geckosServerExt.eventsFunctions[0].events[0].inlineCode = + `// Load THNK Geckos Server Adapter (https://github.com/arthuro555/THNK)\n` + + geckosServerCode; + + fs.writeFileSync( + extensionsPath + "THNK_GeckosServer.json", + JSON.stringify(geckosServerExt, null, 2) + ); +} diff --git a/yarn.lock b/yarn.lock index 1d81c65..53e9980 100644 --- a/yarn.lock +++ b/yarn.lock @@ -684,6 +684,13 @@ dependencies: "@babel/types" "^7.3.0" +"@types/follow-redirects@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@types/follow-redirects/-/follow-redirects-1.14.1.tgz#c08b173be7517ddc53725d0faf9648d4dc7a9cdb" + integrity sha512-THBEFwqsLuU/K62B5JRwab9NW97cFmL4Iy34NTMX0bMycQVzq2q7PKOkhfivIwxdpa/J72RppgC42vCHfwKJ0Q== + dependencies: + "@types/node" "*" + "@types/graceful-fs@^4.1.3": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -718,7 +725,7 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/node@*", "@types/node@^18.0.3": +"@types/node@*", "@types/node@^18.7.18": version "18.7.18" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.18.tgz#633184f55c322e4fb08612307c274ee6d5ed3154" integrity sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg== @@ -1421,6 +1428,11 @@ flatbuffers@^2.0.6: resolved "https://registry.yarnpkg.com/flatbuffers/-/flatbuffers-2.0.7.tgz#3e8e2c46930820747578158cdf11c8b80f8abf89" integrity sha512-5JulPk3a7zTdb2p2ElkAT8hmw4udmSL8GoRKkDa/y9+qFwKbFrRgAbF4VgSt2oIGTEpBqz9CmsvwCstwJ5D9kg== +follow-redirects@^1.15.2: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" @@ -2264,6 +2276,11 @@ node-releases@^2.0.6: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== +node-stream-zip@^1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea" + integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"