@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
129 lines (128 loc) • 17.7 kB
JavaScript
"use strict";
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
const require_runtime = require("../../_virtual/_rolldown/runtime.cjs.cjs");
const require_network_NetworkUtil = require("../NetworkUtil.cjs.cjs");
const require_network_Identifiers = require("../Identifiers.cjs.cjs");
const require_network_packet_DataPacket = require("./DataPacket.cjs.cjs");
const require_utils_UUID = require("../../utils/UUID.cjs.cjs");
let _jsprismarine_jsbinaryutils = require("@jsprismarine/jsbinaryutils");
_jsprismarine_jsbinaryutils = require_runtime.__toESM(_jsprismarine_jsbinaryutils, 1);
let _jsprismarine_nbt = require("@jsprismarine/nbt");
let _jsprismarine_math = require("@jsprismarine/math");
//#region src/network/packet/StartGamePacket.ts
var StartGamePacket = class extends require_network_packet_DataPacket.default {
static NetID = require_network_Identifiers.default.StartGamePacket;
entityId;
runtimeEntityId;
gamemode;
defaultGamemode = 0;
playerPos = new _jsprismarine_math.Vector3(0, 5, 0);
pitch = 0;
yaw = 0;
serverIdentifier;
worldIdentifier;
scenarioIdentifier;
levelId;
worldName;
seed;
time = 0;
ticks = 0;
worldSpawnPos;
gamerules;
static cachedItemIds = null;
encodePayload() {
this.writeVarLong(this.entityId);
this.writeUnsignedVarLong(this.runtimeEntityId);
this.writeVarInt(this.gamemode);
require_network_NetworkUtil.NetworkUtil.writeVector3(this, this.playerPos);
this.writeFloatLE(this.pitch);
this.writeFloatLE(this.yaw);
this.writeLongLE(BigInt(this.seed));
this.writeUnsignedShortLE(0);
require_network_NetworkUtil.NetworkUtil.writeString(this, "plains");
this.writeVarInt(0);
this.writeVarInt(1);
this.writeVarInt(this.defaultGamemode);
this.writeBoolean(false);
this.writeVarInt(0);
this.writeVarInt(this.worldSpawnPos.getX());
this.writeUnsignedVarInt(this.worldSpawnPos.getY());
this.writeVarInt(this.worldSpawnPos.getZ());
this.writeBoolean(true);
this.writeVarInt(0);
this.writeBoolean(false);
this.writeBoolean(false);
this.writeVarInt(this.time);
this.writeVarInt(0);
this.writeBoolean(false);
require_network_NetworkUtil.NetworkUtil.writeString(this, "");
this.writeFloatLE(0);
this.writeFloatLE(0);
this.writeByte(0);
this.writeByte(1);
this.writeByte(1);
this.writeVarInt(4);
this.writeVarInt(4);
this.writeByte(1);
this.writeByte(0);
this.gamerules.networkSerialize(this);
this.writeUnsignedIntLE(0);
this.writeBoolean(false);
this.writeByte(0);
this.writeByte(0);
this.writeVarInt(1);
this.writeUnsignedIntLE(4);
this.writeByte(0);
this.writeByte(0);
this.writeByte(0);
this.writeByte(0);
this.writeByte(0);
this.writeByte(0);
this.writeByte(0);
this.writeByte(0);
this.writeByte(0);
this.writeByte(0);
require_network_NetworkUtil.NetworkUtil.writeString(this, "*");
this.writeUnsignedIntLE(0);
this.writeUnsignedIntLE(0);
this.writeBoolean(true);
require_network_NetworkUtil.NetworkUtil.writeString(this, "");
require_network_NetworkUtil.NetworkUtil.writeString(this, "");
this.writeBoolean(false);
this.writeByte(0);
this.writeByte(0);
require_network_NetworkUtil.NetworkUtil.writeString(this, this.serverIdentifier);
require_network_NetworkUtil.NetworkUtil.writeString(this, this.worldIdentifier);
require_network_NetworkUtil.NetworkUtil.writeString(this, this.scenarioIdentifier);
require_network_NetworkUtil.NetworkUtil.writeString(this, this.levelId);
require_network_NetworkUtil.NetworkUtil.writeString(this, this.worldName);
require_network_NetworkUtil.NetworkUtil.writeString(this, "00000000-0000-0000-0000-000000000000");
this.writeByte(0);
this.writeUnsignedVarInt(0);
this.writeVarInt(0);
this.writeBoolean(false);
this.writeLongLE(BigInt(this.ticks));
this.writeVarInt(0);
this.writeUnsignedVarInt(0);
this.writeUnsignedVarInt(0);
require_network_NetworkUtil.NetworkUtil.writeString(this, "");
this.writeBoolean(true);
require_network_NetworkUtil.NetworkUtil.writeString(this, require_network_Identifiers.default.MinecraftVersions.at(0));
const str = new _jsprismarine_jsbinaryutils.default();
const nbt = new _jsprismarine_nbt.NBTWriter(str, 1);
nbt.setUseVarint(true);
nbt.writeCompound(new _jsprismarine_nbt.NBTTagCompound());
this.write(str.getBuffer());
this.writeLongLE(0n);
require_utils_UUID.default.fromRandom().networkSerialize(this);
this.writeBoolean(true);
this.writeByte(0);
this.writeByte(0);
}
};
//#endregion
exports.default = StartGamePacket;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhcnRHYW1lUGFja2V0LmNqcy5janMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25ldHdvcmsvcGFja2V0L1N0YXJ0R2FtZVBhY2tldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmluYXJ5U3RyZWFtIGZyb20gJ0Bqc3ByaXNtYXJpbmUvanNiaW5hcnl1dGlscyc7XG5pbXBvcnQgeyBWZWN0b3IzIH0gZnJvbSAnQGpzcHJpc21hcmluZS9tYXRoJztcbmltcG9ydCB7IE5CVFRhZ0NvbXBvdW5kLCBOQlRXcml0ZXIgfSBmcm9tICdAanNwcmlzbWFyaW5lL25idCc7XG5pbXBvcnQgeyBOZXR3b3JrVXRpbCB9IGZyb20gJy4uLy4uL25ldHdvcmsvTmV0d29ya1V0aWwnO1xuaW1wb3J0IFVVSUQgZnJvbSAnLi4vLi4vdXRpbHMvVVVJRCc7XG5pbXBvcnQgdHlwZSBHYW1lcnVsZU1hbmFnZXIgZnJvbSAnLi4vLi4vd29ybGQvR2FtZXJ1bGVNYW5hZ2VyJztcbmltcG9ydCBJZGVudGlmaWVycyBmcm9tICcuLi9JZGVudGlmaWVycyc7XG5pbXBvcnQgRGF0YVBhY2tldCBmcm9tICcuL0RhdGFQYWNrZXQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGFydEdhbWVQYWNrZXQgZXh0ZW5kcyBEYXRhUGFja2V0IHtcbiAgICBwdWJsaWMgc3RhdGljIE5ldElEID0gSWRlbnRpZmllcnMuU3RhcnRHYW1lUGFja2V0O1xuXG4gICAgcHVibGljIGVudGl0eUlkITogYmlnaW50O1xuICAgIHB1YmxpYyBydW50aW1lRW50aXR5SWQhOiBiaWdpbnQ7XG4gICAgcHVibGljIGdhbWVtb2RlITogbnVtYmVyO1xuICAgIHB1YmxpYyBkZWZhdWx0R2FtZW1vZGU6IG51bWJlciA9IDA7XG5cbiAgICBwdWJsaWMgcGxheWVyUG9zOiBWZWN0b3IzID0gbmV3IFZlY3RvcjMoMCwgNSwgMCk7XG4gICAgcHVibGljIHBpdGNoOiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyB5YXc6IG51bWJlciA9IDA7XG5cbiAgICBwdWJsaWMgc2VydmVySWRlbnRpZmllciE6IHN0cmluZztcbiAgICBwdWJsaWMgd29ybGRJZGVudGlmaWVyITogc3RyaW5nO1xuICAgIHB1YmxpYyBzY2VuYXJpb0lkZW50aWZpZXIhOiBzdHJpbmc7XG4gICAgcHVibGljIGxldmVsSWQhOiBzdHJpbmc7XG4gICAgcHVibGljIHdvcmxkTmFtZSE6IHN0cmluZztcbiAgICBwdWJsaWMgc2VlZCE6IG51bWJlcjtcbiAgICBwdWJsaWMgdGltZTogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgdGlja3M6IG51bWJlciA9IDA7XG5cbiAgICBwdWJsaWMgd29ybGRTcGF3blBvcyE6IFZlY3RvcjM7XG5cbiAgICBwdWJsaWMgZ2FtZXJ1bGVzITogR2FtZXJ1bGVNYW5hZ2VyO1xuXG4gICAgLy8gQ2FjaGUgaXRlbSBJRHMgbWFwcGluZ3NcbiAgICBwdWJsaWMgc3RhdGljIGNhY2hlZEl0ZW1JZHM6IEJ1ZmZlciB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGVuY29kZVBheWxvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JpdGVWYXJMb25nKHRoaXMuZW50aXR5SWQpO1xuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRWYXJMb25nKHRoaXMucnVudGltZUVudGl0eUlkKTtcblxuICAgICAgICB0aGlzLndyaXRlVmFySW50KHRoaXMuZ2FtZW1vZGUpO1xuXG4gICAgICAgIE5ldHdvcmtVdGlsLndyaXRlVmVjdG9yMyh0aGlzLCB0aGlzLnBsYXllclBvcyk7XG4gICAgICAgIHRoaXMud3JpdGVGbG9hdExFKHRoaXMucGl0Y2gpO1xuICAgICAgICB0aGlzLndyaXRlRmxvYXRMRSh0aGlzLnlhdyk7XG5cbiAgICAgICAgdGhpcy53cml0ZUxvbmdMRShCaWdJbnQodGhpcy5zZWVkKSk7IC8vIFNlZWRcblxuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRTaG9ydExFKDB4MDApOyAvLyBEZWZhdWx0IHNwYXduIGJpb21lIHR5cGVcbiAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcodGhpcywgJ3BsYWlucycpOyAvLyBVc2VyIGRlZmluZWQgYmlvbWUgbmFtZVxuXG4gICAgICAgIHRoaXMud3JpdGVWYXJJbnQoMCk7IC8vIERpbWVuc2lvblxuXG4gICAgICAgIHRoaXMud3JpdGVWYXJJbnQoMSk7IC8vIEdlbmVyYXRvclxuICAgICAgICB0aGlzLndyaXRlVmFySW50KHRoaXMuZGVmYXVsdEdhbWVtb2RlKTsgLy8gRGVmYXVsdCBHYW1lbW9kZVxuXG4gICAgICAgIHRoaXMud3JpdGVCb29sZWFuKGZhbHNlKTsgLy8gSXMgaGFyZGNvcmUgZW5hYmxlZFxuXG4gICAgICAgIHRoaXMud3JpdGVWYXJJbnQoMCk7IC8vIERpZmZpY3VsdHlcblxuICAgICAgICAvLyB3b3JsZCBzcGF3biB2ZWN0b3IgM1xuICAgICAgICB0aGlzLndyaXRlVmFySW50KHRoaXMud29ybGRTcGF3blBvcy5nZXRYKCkpO1xuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRWYXJJbnQodGhpcy53b3JsZFNwYXduUG9zLmdldFkoKSk7XG4gICAgICAgIHRoaXMud3JpdGVWYXJJbnQodGhpcy53b3JsZFNwYXduUG9zLmdldFooKSk7XG5cbiAgICAgICAgLy8gUmVjZW50bHkgZm91bmQgdGhhdCBtYXkgY3Jhc2ggdGhlIGNsaWVudFxuICAgICAgICAvLyB3YWl0aW5nIGZvciBtb3JlIGluZm8gYWJvdXQgaXRcbiAgICAgICAgdGhpcy53cml0ZUJvb2xlYW4odHJ1ZSk7IC8vIEFjaGlldmVtZW50IGRpc2FibGVkXG5cbiAgICAgICAgdGhpcy53cml0ZVZhckludCgwKTsgLy8gRWRpdG9yIHdvcmxkIHR5cGU/XG4gICAgICAgIHRoaXMud3JpdGVCb29sZWFuKGZhbHNlKTsgLy8gQ3JlYXRlZCBpbiBlZGl0b3IgbW9kZT9cbiAgICAgICAgdGhpcy53cml0ZUJvb2xlYW4oZmFsc2UpOyAvLyBFeHBvcnRlZCBmcm9tIGVkaXRvciBtb2RlP1xuXG4gICAgICAgIHRoaXMud3JpdGVWYXJJbnQodGhpcy50aW1lKTsgLy8gRGF5IGN5Y2xlIC8gdGltZVxuICAgICAgICB0aGlzLndyaXRlVmFySW50KDApOyAvLyBFZHUgZWRpdGlvbiBvZmZlclxuICAgICAgICB0aGlzLndyaXRlQm9vbGVhbihmYWxzZSk7IC8vIEVkdSBmZWF0dXJlc1xuICAgICAgICBOZXR3b3JrVXRpbC53cml0ZVN0cmluZyh0aGlzLCAnJyk7IC8vIEVkdSBwcm9kdWN0IGlkXG5cbiAgICAgICAgdGhpcy53cml0ZUZsb2F0TEUoMCk7IC8vIFJhaW4gbHZsXG4gICAgICAgIHRoaXMud3JpdGVGbG9hdExFKDApOyAvLyBMaWdodG5pbmcgbHZsXG5cbiAgICAgICAgdGhpcy53cml0ZUJ5dGUoMCk7IC8vIENvbmZpcm1lZCBwbGF0Zm9ybSBsb2NrZWRcbiAgICAgICAgdGhpcy53cml0ZUJ5dGUoMSk7IC8vIE11bHRpIHBsYXllciBnYW1lXG4gICAgICAgIHRoaXMud3JpdGVCeXRlKDEpOyAvLyBCcm9hZGNhc3QgdG8gbGFuXG5cbiAgICAgICAgdGhpcy53cml0ZVZhckludCg0KTsgLy8gWGJsIGJyb2FkY2FzdCBtb2RlXG4gICAgICAgIHRoaXMud3JpdGVWYXJJbnQoNCk7IC8vIFBsYXRmb3JtIGJyb2FkY2FzdCBtb2RlXG5cbiAgICAgICAgdGhpcy53cml0ZUJ5dGUoMSk7IC8vIENvbW1hbmRzIGVuYWJsZWRcbiAgICAgICAgdGhpcy53cml0ZUJ5dGUoMCk7IC8vIFRleHR1cmUgcmVxdWlyZWRcblxuICAgICAgICB0aGlzLmdhbWVydWxlcy5uZXR3b3JrU2VyaWFsaXplKHRoaXMpO1xuXG4gICAgICAgIHRoaXMud3JpdGVVbnNpZ25lZEludExFKDApOyAvLyBFeHBlcmltZW50IGNvdW50XG4gICAgICAgIHRoaXMud3JpdGVCb29sZWFuKGZhbHNlKTsgLy8gRXhwZXJpbWVudHMgcHJldmlvdXNseSB0b2dnbGVkP1xuXG4gICAgICAgIHRoaXMud3JpdGVCeXRlKDApOyAvLyBCb251cyBjaGVzdFxuICAgICAgICB0aGlzLndyaXRlQnl0ZSgwKTsgLy8gU3RhcnQgd2l0aCBtYXBcblxuICAgICAgICB0aGlzLndyaXRlVmFySW50KDEpOyAvLyBQbGF5ZXIgcGVybXNcblxuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRJbnRMRSg0KTsgLy8gQ2h1bmsgdGljayByYW5nZVxuXG4gICAgICAgIHRoaXMud3JpdGVCeXRlKDApOyAvLyBMb2NrZWQgYmVoYXZpb3JcbiAgICAgICAgdGhpcy53cml0ZUJ5dGUoMCk7IC8vIExvY2tlZCB0ZXh0dXJlXG4gICAgICAgIHRoaXMud3JpdGVCeXRlKDApOyAvLyBGcm9tIGxvY2tlZCB0ZW1wbGF0ZVxuICAgICAgICB0aGlzLndyaXRlQnl0ZSgwKTsgLy8gTXNhIGdhbWVyIHRhZ3Mgb25seVxuICAgICAgICB0aGlzLndyaXRlQnl0ZSgwKTsgLy8gRnJvbSB3b3JsZCB0ZW1wbGF0ZVxuICAgICAgICB0aGlzLndyaXRlQnl0ZSgwKTsgLy8gV29ybGQgdGVtcGxhdGUgb3B0aW9uIGxvY2tlZFxuICAgICAgICB0aGlzLndyaXRlQnl0ZSgwKTsgLy8gT25seSBzcGF3biB2MSB2aWxsYWdlcnNcbiAgICAgICAgdGhpcy53cml0ZUJ5dGUoMCk7IC8vIERpc2FibGUgcGVyc29uYSBza2luc1xuICAgICAgICB0aGlzLndyaXRlQnl0ZSgwKTsgLy8gRGlzYWJsZSBjdXN0b20gc2tpbnNcbiAgICAgICAgdGhpcy53cml0ZUJ5dGUoMCk7IC8vIERpc2FibGUgZW1vdGVcbiAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcodGhpcywgJyonKTtcblxuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRJbnRMRSgwKTsgLy8gTGltaXRlZCB3b3JsZCBoZWlnaHRcbiAgICAgICAgdGhpcy53cml0ZVVuc2lnbmVkSW50TEUoMCk7IC8vIExpbWl0ZWQgd29ybGQgbGVuZ3RoXG5cbiAgICAgICAgdGhpcy53cml0ZUJvb2xlYW4odHJ1ZSk7IC8vIEhhcyBuZXcgbmV0aGVyXG5cbiAgICAgICAgLy8gVE9ET3NcbiAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcodGhpcywgJycpO1xuICAgICAgICBOZXR3b3JrVXRpbC53cml0ZVN0cmluZyh0aGlzLCAnJyk7XG5cbiAgICAgICAgdGhpcy53cml0ZUJvb2xlYW4oZmFsc2UpOyAvLyBFeHBlcmltZW50YWwgZ2FtZXBsYXlcblxuICAgICAgICB0aGlzLndyaXRlQnl0ZSgwKTsgLy8gQ2hhdCByZXN0cmljdGlvbiBsZXZlbFxuICAgICAgICB0aGlzLndyaXRlQnl0ZSgwKTsgLy8gRGlzYWJsZSBwbGF5ZXIgaW50ZXJhY3Rpb25zXG5cbiAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcodGhpcywgdGhpcy5zZXJ2ZXJJZGVudGlmaWVyKTtcbiAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcodGhpcywgdGhpcy53b3JsZElkZW50aWZpZXIpO1xuICAgICAgICBOZXR3b3JrVXRpbC53cml0ZVN0cmluZyh0aGlzLCB0aGlzLnNjZW5hcmlvSWRlbnRpZmllcik7XG4gICAgICAgIE5ldHdvcmtVdGlsLndyaXRlU3RyaW5nKHRoaXMsIHRoaXMubGV2ZWxJZCk7XG4gICAgICAgIE5ldHdvcmtVdGlsLndyaXRlU3RyaW5nKHRoaXMsIHRoaXMud29ybGROYW1lKTtcbiAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcodGhpcywgJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCcpOyAvLyBUZW1wbGF0ZSBjb250ZW50IGlkZW50aXR5XG5cbiAgICAgICAgdGhpcy53cml0ZUJ5dGUoMCk7IC8vIElzIHRyaWFsXG5cbiAgICAgICAgdGhpcy53cml0ZVVuc2lnbmVkVmFySW50KDApOyAvLyBTZXJ2ZXIgYXV0aCBtb3ZlbWVudFxuICAgICAgICB0aGlzLndyaXRlVmFySW50KDApOyAvLyBSZXdpbmQgSGlzdG9yeSBTaXplXG4gICAgICAgIHRoaXMud3JpdGVCb29sZWFuKGZhbHNlKTsgLy8gSXMgU2VydmVyIEF1dGhvcml0YXRpdmUgQmxvY2sgQnJlYWtpbmdcblxuICAgICAgICB0aGlzLndyaXRlTG9uZ0xFKEJpZ0ludCh0aGlzLnRpY2tzKSk7IC8vIFdvcmxkIHRpY2tzIChmb3IgdGltZSlcblxuICAgICAgICB0aGlzLndyaXRlVmFySW50KDApOyAvLyBFbmNoYW50bWVudCBzZWVkXG5cbiAgICAgICAgdGhpcy53cml0ZVVuc2lnbmVkVmFySW50KDApOyAvLyBCbG9ja3MgcGFsZXR0ZVxuXG4gICAgICAgIC8qIEl0ZW0gcGFsZXR0ZVxuICAgICAgICBpZiAoU3RhcnRHYW1lUGFja2V0LmNhY2hlZEl0ZW1JZHMpIHtcbiAgICAgICAgICAgIHRoaXMud3JpdGUoU3RhcnRHYW1lUGFja2V0LmNhY2hlZEl0ZW1JZHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGFsZXR0ZSA9IHRoaXMuZ2VuZXJhdGVJdGVtUGFsZXR0ZSgpO1xuICAgICAgICAgICAgU3RhcnRHYW1lUGFja2V0LmNhY2hlZEl0ZW1JZHMgPSBwYWxldHRlO1xuICAgICAgICAgICAgdGhpcy53cml0ZShwYWxldHRlKTtcbiAgICAgICAgfSAqL1xuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRWYXJJbnQoMCk7XG5cbiAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcodGhpcywgJycpO1xuICAgICAgICB0aGlzLndyaXRlQm9vbGVhbih0cnVlKTsgLy8gTmV3IGludmVudG9yeSBzeXN0ZW1cblxuICAgICAgICBOZXR3b3JrVXRpbC53cml0ZVN0cmluZyh0aGlzLCBJZGVudGlmaWVycy5NaW5lY3JhZnRWZXJzaW9ucy5hdCgwKSEpO1xuXG4gICAgICAgIC8vIFRPRE9cbiAgICAgICAgY29uc3Qgc3RyID0gbmV3IEJpbmFyeVN0cmVhbSgpO1xuICAgICAgICBjb25zdCBuYnQgPSBuZXcgTkJUV3JpdGVyKHN0ciwgMSk7XG4gICAgICAgIG5idC5zZXRVc2VWYXJpbnQodHJ1ZSk7XG4gICAgICAgIG5idC53cml0ZUNvbXBvdW5kKG5ldyBOQlRUYWdDb21wb3VuZCgpKTtcbiAgICAgICAgdGhpcy53cml0ZShzdHIuZ2V0QnVmZmVyKCkpO1xuXG4gICAgICAgIHRoaXMud3JpdGVMb25nTEUoMG4pOyAvLyBCbG9jayBwYWxldHRlIGNoZWNrc3VtXG5cbiAgICAgICAgLy8gVE9ETzogTm90IHN1cmUgaWYgYSByYW5kb20gb25lIHdpbGwgd29yaywgYnV0IGxldCdzIHRyeVxuICAgICAgICBVVUlELmZyb21SYW5kb20oKS5uZXR3b3JrU2VyaWFsaXplKHRoaXMpO1xuXG4gICAgICAgIHRoaXMud3JpdGVCb29sZWFuKHRydWUpOyAvLyBVc2UgY2xpZW50IHNpZGUgY2h1bmsgZ2VuZXJhdGlvblxuICAgICAgICB0aGlzLndyaXRlQnl0ZSgwKTsgLy8gQmxvY2sgTkVUIElEcyBhcmUgaGFzaGVzXG4gICAgICAgIHRoaXMud3JpdGVCeXRlKDApOyAvLyBEaXNhYmxlIGNsaWVudCBhdWRpb1xuICAgIH1cblxuICAgIC8qIHByaXZhdGUgZ2VuZXJhdGVJdGVtUGFsZXR0ZSgpOiBCdWZmZXIge1xuICAgICAgICBjb25zdCBzdHJlYW0gPSBuZXcgQmluYXJ5U3RyZWFtKCk7XG4gICAgICAgIGNvbnN0IGl0ZW1NYXBwaW5ncyA9IE9iamVjdC5lbnRyaWVzKGl0ZW1faWRfbWFwKTtcbiAgICAgICAgc3RyZWFtLndyaXRlVW5zaWduZWRWYXJJbnQoaXRlbU1hcHBpbmdzLmxlbmd0aCk7XG4gICAgICAgIGZvciAoY29uc3QgW25hbWUsIGRhdGFdIG9mIGl0ZW1NYXBwaW5ncykge1xuICAgICAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcoc3RyZWFtLCBuYW1lKTtcbiAgICAgICAgICAgIHN0cmVhbS53cml0ZVNob3J0TEUoKGRhdGEgYXMgYW55KS5ydW50aW1lX2lkIGFzIG51bWJlcik7XG4gICAgICAgICAgICBzdHJlYW0ud3JpdGVCeXRlKDApOyAvLyB1bmtub3duXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cmVhbS5nZXRC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