Socket
Socket
Sign inDemoInstall

@notenoughupdates/discord-akairo

Package Overview
Dependencies
Maintainers
1
Versions
140
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@notenoughupdates/discord-akairo - npm Package Compare versions

Comparing version 9.0.6-dev.1635795375.6fd4260 to 9.0.6-dev.1635818696.927e76a

2

dist/package.json
{
"name": "@notenoughupdates/discord-akairo",
"version": "9.0.6-dev.1635795375.6fd4260",
"version": "9.0.6-dev.1635818696.927e76a",
"description": "A highly customizable bot framework for Discord.js.",

@@ -5,0 +5,0 @@ "main": "./dist/src/index.js",

@@ -92,3 +92,3 @@ "use strict";

const runFn = cases[arg.match];
if (runFn == null) {
if (runFn === null) {
throw new AkairoError_1.default("UNKNOWN_MATCH_TYPE", arg.match);

@@ -119,3 +119,3 @@ }

const res = await arg.cast(message, phrase);
if (res != null) {
if (res !== null) {
state.usedIndices.add(i);

@@ -128,5 +128,5 @@ return res;

}
const index = arg.index == null ? state.phraseIndex : arg.index;
const index = arg.index === null || arg.index === undefined ? state.phraseIndex : arg.index;
const ret = arg.process(message, parsed.phrases[index] ? parsed.phrases[index].value : "");
if (arg.index == null) {
if (arg.index === null) {
ArgumentRunner.increaseIndex(parsed, state);

@@ -144,3 +144,3 @@ }

async runRest(message, parsed, state, arg) {
const index = arg.index == null ? state.phraseIndex : arg.index;
const index = arg.index === null || arg.index === undefined ? state.phraseIndex : arg.index;
const rest = parsed.phrases

@@ -152,3 +152,3 @@ .slice(index, index + arg.limit)

const ret = await arg.process(message, rest);
if (arg.index == null) {
if (arg.index === null) {
ArgumentRunner.increaseIndex(parsed, state);

@@ -166,7 +166,7 @@ }

async runSeparate(message, parsed, state, arg) {
const index = arg.index == null ? state.phraseIndex : arg.index;
const index = arg.index === null || arg.index === undefined ? state.phraseIndex : arg.index;
const phrases = parsed.phrases.slice(index, index + arg.limit);
if (!phrases.length) {
const ret = await arg.process(message, "");
if (arg.index != null) {
if (arg.index !== null) {
ArgumentRunner.increaseIndex(parsed, state);

@@ -184,3 +184,3 @@ }

}
if (arg.index != null) {
if (arg.index !== null) {
ArgumentRunner.increaseIndex(parsed, state);

@@ -204,3 +204,3 @@ }

const flagFound = parsed.flags.some(flag => names.some(name => name?.toLowerCase() === flag.key.toLowerCase()));
return arg.default == null ? flagFound : !flagFound;
return arg.default === null ? flagFound : !flagFound;
}

@@ -228,3 +228,3 @@ /**

const foundFlag = parsed.optionFlags.find(flag => names.some(name => name?.toLowerCase() === flag.key.toLowerCase()));
return arg.process(message, foundFlag != null ? foundFlag.value : "");
return arg.process(message, foundFlag !== null && foundFlag !== undefined ? foundFlag.value : "");
}

@@ -239,3 +239,3 @@ /**

runText(message, parsed, state, arg) {
const index = arg.index == null ? 0 : arg.index;
const index = arg.index === null || arg.index === undefined ? 0 : arg.index;
const text = parsed.phrases

@@ -256,3 +256,3 @@ .slice(index, index + arg.limit)

runContent(message, parsed, state, arg) {
const index = arg.index == null ? 0 : arg.index;
const index = arg.index === null || arg.index === undefined ? 0 : arg.index;
const content = parsed.all

@@ -273,3 +273,3 @@ .slice(index, index + arg.limit)

async runRestContent(message, parsed, state, arg) {
const index = arg.index == null ? state.index : arg.index;
const index = arg.index === null || arg.index === undefined ? state.index : arg.index;
const rest = parsed.all

@@ -281,3 +281,3 @@ .slice(index, index + arg.limit)

const ret = await arg.process(message, rest);
if (arg.index == null) {
if (arg.index === null) {
ArgumentRunner.increaseIndex(parsed, state);

@@ -334,2 +334,2 @@ }

exports.default = ArgumentRunner;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJndW1lbnRSdW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc3RydWN0L2NvbW1hbmRzL2FyZ3VtZW50cy9Bcmd1bWVudFJ1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDRFQUFvRDtBQUNwRCx1REFBMEQ7QUFHMUQsbURBQTJCO0FBQzNCLDBEQUF1RDtBQUV2RDs7O0dBR0c7QUFDSCxNQUFxQixjQUFjO0lBQ2xDLFlBQW1CLE9BQWdCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBVTtJQUV4Qjs7T0FFRztJQUNILElBQVcsTUFBTTtRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsT0FBTztRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBZ0IsRUFBRSxNQUEyQixFQUFFLFNBQTRCO1FBQzNGLE1BQU0sS0FBSyxHQUFHO1lBQ2IsV0FBVyxFQUFFLElBQUksR0FBRyxFQUFVO1lBQzlCLFdBQVcsRUFBRSxDQUFDO1lBQ2QsS0FBSyxFQUFFLENBQUM7U0FDUixDQUFDO1FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUEyQixFQUFFLEVBQUU7WUFDbkQsSUFBSSxjQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRTtnQkFDNUIsR0FBVyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRztxQkFDNUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7cUJBQ2xCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7cUJBQ2YsSUFB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Q0YsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBVTtRQUN0QyxPQUFPLGNBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLGNBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLGNBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQXdDO1FBQ25FLE9BQU8sUUFBUSxDQUFDLENBQUMsUUFBUTtZQUN4QixNQUFNLEdBQUcsR0FBMkIsRUFBRSxDQUFDO1lBQ3ZDLEtBQUssTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUU7Z0JBQzdCLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQzthQUNwQjtZQUVELE9BQU8sR0FBRyxDQUFDO1FBQ1osQ0FBQyxDQUFDO0lBQ0gsQ0FBQztDQUNEO0FBclpELGlDQXFaQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lc3NhZ2UgfSBmcm9tIFwiZGlzY29yZC5qc1wiO1xuaW1wb3J0IEFrYWlyb0Vycm9yIGZyb20gXCIuLi8uLi8uLi91dGlsL0FrYWlyb0Vycm9yXCI7XG5pbXBvcnQgeyBBcmd1bWVudE1hdGNoZXMgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbC9Db25zdGFudHNcIjtcbmltcG9ydCBDb21tYW5kLCB7IEFyZ3VtZW50R2VuZXJhdG9yIH0gZnJvbSBcIi4uL0NvbW1hbmRcIjtcbmltcG9ydCB7IENvbnRlbnRQYXJzZXJSZXN1bHQgfSBmcm9tIFwiLi4vQ29udGVudFBhcnNlclwiO1xuaW1wb3J0IEZsYWcgZnJvbSBcIi4uL0ZsYWdcIjtcbmltcG9ydCBBcmd1bWVudCwgeyBBcmd1bWVudE9wdGlvbnMgfSBmcm9tIFwiLi9Bcmd1bWVudFwiO1xuXG4vKipcbiAqIFJ1bnMgYXJndW1lbnRzLlxuICogQHBhcmFtIGNvbW1hbmQgLSBDb21tYW5kIHRvIHJ1biBmb3IuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFyZ3VtZW50UnVubmVyIHtcblx0cHVibGljIGNvbnN0cnVjdG9yKGNvbW1hbmQ6IENvbW1hbmQpIHtcblx0XHR0aGlzLmNvbW1hbmQgPSBjb21tYW5kO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBjb21tYW5kIHRoZSBhcmd1bWVudHMgYXJlIGJlaW5nIHJ1biBmb3Jcblx0ICovXG5cdHB1YmxpYyBjb21tYW5kOiBDb21tYW5kO1xuXG5cdC8qKlxuXHQgKiBUaGUgQWthaXJvIGNsaWVudC5cblx0ICovXG5cdHB1YmxpYyBnZXQgY2xpZW50KCkge1xuXHRcdHJldHVybiB0aGlzLmNvbW1hbmQuY2xpZW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBjb21tYW5kIGhhbmRsZXIuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0IGhhbmRsZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuY29tbWFuZC5oYW5kbGVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJ1bnMgdGhlIGFyZ3VtZW50cy5cblx0ICogQHBhcmFtIG1lc3NhZ2UgLSBNZXNzYWdlIHRoYXQgdHJpZ2dlcmVkIHRoZSBjb21tYW5kLlxuXHQgKiBAcGFyYW0gcGFyc2VkIC0gUGFyc2VkIGRhdGEgZnJvbSBDb250ZW50UGFyc2VyLlxuXHQgKiBAcGFyYW0gZ2VuZXJhdG9yIC0gQXJndW1lbnQgZ2VuZXJhdG9yLlxuXHQgKi9cblx0cHVibGljIGFzeW5jIHJ1bihtZXNzYWdlOiBNZXNzYWdlLCBwYXJzZWQ6IENvbnRlbnRQYXJzZXJSZXN1bHQsIGdlbmVyYXRvcjogQXJndW1lbnRHZW5lcmF0b3IpOiBQcm9taXNlPEZsYWcgfCBhbnk+IHtcblx0XHRjb25zdCBzdGF0ZSA9IHtcblx0XHRcdHVzZWRJbmRpY2VzOiBuZXcgU2V0PG51bWJlcj4oKSxcblx0XHRcdHBocmFzZUluZGV4OiAwLFxuXHRcdFx0aW5kZXg6IDBcblx0XHR9O1xuXG5cdFx0Y29uc3QgYXVnbWVudFJlc3QgPSAodmFsOiBGbGFnIHwgQXJndW1lbnRPcHRpb25zKSA9PiB7XG5cdFx0XHRpZiAoRmxhZy5pcyh2YWwsIFwiY29udGludWVcIikpIHtcblx0XHRcdFx0KHZhbCBhcyBhbnkpLnJlc3QgPSBwYXJzZWQuYWxsXG5cdFx0XHRcdFx0LnNsaWNlKHN0YXRlLmluZGV4KVxuXHRcdFx0XHRcdC5tYXAoeCA9PiB4LnJhdylcblx0XHRcdFx0XHQuam9pbihcIlwiKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0Y29uc3QgaXRlciA9IGdlbmVyYXRvcihtZXNzYWdlLCBwYXJzZWQsIHN0YXRlKTtcblx0XHRsZXQgY3VyciA9IGF3YWl0IGl0ZXIubmV4dCgpO1xuXHRcdHdoaWxlICghY3Vyci5kb25lKSB7XG5cdFx0XHRjb25zdCB2YWx1ZSA9IGN1cnIudmFsdWU7XG5cdFx0XHRpZiAoQXJndW1lbnRSdW5uZXIuaXNTaG9ydENpcmN1aXQodmFsdWUpKSB7XG5cdFx0XHRcdGF1Z21lbnRSZXN0KHZhbHVlKTtcblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCByZXMgPSBhd2FpdCB0aGlzLnJ1bk9uZShtZXNzYWdlLCBwYXJzZWQsIHN0YXRlLCBuZXcgQXJndW1lbnQodGhpcy5jb21tYW5kLCB2YWx1ZSkpO1xuXHRcdFx0aWYgKEFyZ3VtZW50UnVubmVyLmlzU2hvcnRDaXJjdWl0KHJlcykpIHtcblx0XHRcdFx0YXVnbWVudFJlc3QocmVzKTtcblx0XHRcdFx0cmV0dXJuIHJlcztcblx0XHRcdH1cblxuXHRcdFx0Y3VyciA9IGF3YWl0IGl0ZXIubmV4dChyZXMpO1xuXHRcdH1cblxuXHRcdGF1Z21lbnRSZXN0KGN1cnIudmFsdWUpO1xuXHRcdHJldHVybiBjdXJyLnZhbHVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJ1bnMgb25lIGFyZ3VtZW50LlxuXHQgKiBAcGFyYW0gbWVzc2FnZSAtIE1lc3NhZ2UgdGhhdCB0cmlnZ2VyZWQgdGhlIGNvbW1hbmQuXG5cdCAqIEBwYXJhbSBwYXJzZWQgLSBQYXJzZWQgZGF0YSBmcm9tIENvbnRlbnRQYXJzZXIuXG5cdCAqIEBwYXJhbSBzdGF0ZSAtIEFyZ3VtZW50IGhhbmRsaW5nIHN0YXRlLlxuXHQgKiBAcGFyYW0gYXJnIC0gQ3VycmVudCBhcmd1bWVudC5cblx0ICovXG5cdHB1YmxpYyBydW5PbmUoXG5cdFx0bWVzc2FnZTogTWVzc2FnZSxcblx0XHRwYXJzZWQ6IENvbnRlbnRQYXJzZXJSZXN1bHQsXG5cdFx0c3RhdGU6IEFyZ3VtZW50UnVubmVyU3RhdGUsXG5cdFx0YXJnOiBBcmd1bWVudFxuXHQpOiBQcm9taXNlPEZsYWcgfCBhbnk+IHtcblx0XHRjb25zdCBjYXNlcyA9IHtcblx0XHRcdFtBcmd1bWVudE1hdGNoZXMuUEhSQVNFXTogdGhpcy5ydW5QaHJhc2UsXG5cdFx0XHRbQXJndW1lbnRNYXRjaGVzLkZMQUddOiB0aGlzLnJ1bkZsYWcsXG5cdFx0XHRbQXJndW1lbnRNYXRjaGVzLk9QVElPTl06IHRoaXMucnVuT3B0aW9uLFxuXHRcdFx0W0FyZ3VtZW50TWF0Y2hlcy5SRVNUXTogdGhpcy5ydW5SZXN0LFxuXHRcdFx0W0FyZ3VtZW50TWF0Y2hlcy5TRVBBUkFURV06IHRoaXMucnVuU2VwYXJhdGUsXG5cdFx0XHRbQXJndW1lbnRNYXRjaGVzLlRFWFRdOiB0aGlzLnJ1blRleHQsXG5cdFx0XHRbQXJndW1lbnRNYXRjaGVzLkNPTlRFTlRdOiB0aGlzLnJ1bkNvbnRlbnQsXG5cdFx0XHRbQXJndW1lbnRNYXRjaGVzLlJFU1RfQ09OVEVOVF06IHRoaXMucnVuUmVzdENvbnRlbnQsXG5cdFx0XHRbQXJndW1lbnRNYXRjaGVzLk5PTkVdOiB0aGlzLnJ1bk5vbmVcblx0XHR9O1xuXG5cdFx0Y29uc3QgcnVuRm4gPSBjYXNlc1thcmcubWF0Y2hdO1xuXHRcdGlmIChydW5GbiA9PSBudWxsKSB7XG5cdFx0XHR0aHJvdyBuZXcgQWthaXJvRXJyb3IoXCJVTktOT1dOX01BVENIX1RZUEVcIiwgYXJnLm1hdGNoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcnVuRm4uY2FsbCh0aGlzLCBtZXNzYWdlLCBwYXJzZWQsIHN0YXRlLCBhcmcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJ1bnMgYHBocmFzZWAgbWF0Y2guXG5cdCAqIEBwYXJhbSBtZXNzYWdlIC0gTWVzc2FnZSB0aGF0IHRyaWdnZXJlZCB0aGUgY29tbWFuZC5cblx0ICogQHBhcmFtIHBhcnNlZCAtIFBhcnNlZCBkYXRhIGZyb20gQ29udGVudFBhcnNlci5cblx0ICogQHBhcmFtIHN0YXRlIC0gQXJndW1lbnQgaGFuZGxpbmcgc3RhdGUuXG5cdCAqIEBwYXJhbSBhcmcgLSBDdXJyZW50IGFyZ3VtZW50LlxuXHQgKi9cblx0cHVibGljIGFzeW5jIHJ1blBocmFzZShcblx0XHRtZXNzYWdlOiBNZXNzYWdlLFxuXHRcdHBhcnNlZDogQ29udGVudFBhcnNlclJlc3VsdCxcblx0XHRzdGF0ZTogQXJndW1lbnRSdW5uZXJTdGF0ZSxcblx0XHRhcmc6IEFyZ3VtZW50XG5cdCk6IFByb21pc2U8RmxhZyB8IGFueT4ge1xuXHRcdGlmIChhcmcudW5vcmRlcmVkIHx8IGFyZy51bm9yZGVyZWQgPT09IDApIHtcblx0XHRcdGNvbnN0IGluZGljZXMgPVxuXHRcdFx0XHR0eXBlb2YgYXJnLnVub3JkZXJlZCA9PT0gXCJudW1iZXJcIlxuXHRcdFx0XHRcdD8gQXJyYXkuZnJvbShwYXJzZWQucGhyYXNlcy5rZXlzKCkpLnNsaWNlKGFyZy51bm9yZGVyZWQpXG5cdFx0XHRcdFx0OiBBcnJheS5pc0FycmF5KGFyZy51bm9yZGVyZWQpXG5cdFx0XHRcdFx0PyBhcmcudW5vcmRlcmVkXG5cdFx0XHRcdFx0OiBBcnJheS5mcm9tKHBhcnNlZC5waHJhc2VzLmtleXMoKSk7XG5cblx0XHRcdGZvciAoY29uc3QgaSBvZiBpbmRpY2VzKSB7XG5cdFx0XHRcdGlmIChzdGF0ZS51c2VkSW5kaWNlcy5oYXMoaSkpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHBocmFzZSA9IHBhcnNlZC5waHJhc2VzW2ldID8gcGFyc2VkLnBocmFzZXNbaV0udmFsdWUgOiBcIlwiO1xuXHRcdFx0XHQvLyBgY2FzdGAgaXMgdXNlZCBpbnN0ZWFkIG9mIGBwcm9jZXNzYCBzaW5jZSB3ZSBkbyBub3Qgd2FudCBwcm9tcHRzLlxuXHRcdFx0XHRjb25zdCByZXMgPSBhd2FpdCBhcmcuY2FzdChtZXNzYWdlLCBwaHJhc2UpO1xuXHRcdFx0XHRpZiAocmVzICE9IG51bGwpIHtcblx0XHRcdFx0XHRzdGF0ZS51c2VkSW5kaWNlcy5hZGQoaSk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlcztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBObyBpbmRpY2VzIG1hdGNoZWQuXG5cdFx0XHRyZXR1cm4gYXJnLnByb2Nlc3MobWVzc2FnZSwgXCJcIik7XG5cdFx0fVxuXG5cdFx0Y29uc3QgaW5kZXggPSBhcmcuaW5kZXggPT0gbnVsbCA/IHN0YXRlLnBocmFzZUluZGV4IDogYXJnLmluZGV4O1xuXHRcdGNvbnN0IHJldCA9IGFyZy5wcm9jZXNzKG1lc3NhZ2UsIHBhcnNlZC5waHJhc2VzW2luZGV4XSA/IHBhcnNlZC5waHJhc2VzW2luZGV4XS52YWx1ZSA6IFwiXCIpO1xuXHRcdGlmIChhcmcuaW5kZXggPT0gbnVsbCkge1xuXHRcdFx0QXJndW1lbnRSdW5uZXIuaW5jcmVhc2VJbmRleChwYXJzZWQsIHN0YXRlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmV0O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJ1bnMgYHJlc3RgIG1hdGNoLlxuXHQgKiBAcGFyYW0gbWVzc2FnZSAtIE1lc3NhZ2UgdGhhdCB0cmlnZ2VyZWQgdGhlIGNvbW1hbmQuXG5cdCAqIEBwYXJhbSBwYXJzZWQgLSBQYXJzZWQgZGF0YSBmcm9tIENvbnRlbnRQYXJzZXIuXG5cdCAqIEBwYXJhbSBzdGF0ZSAtIEFyZ3VtZW50IGhhbmRsaW5nIHN0YXRlLlxuXHQgKiBAcGFyYW0gYXJnIC0gQ3VycmVudCBhcmd1bWVudC5cblx0ICovXG5cdHB1YmxpYyBhc3luYyBydW5SZXN0KFxuXHRcdG1lc3NhZ2U6IE1lc3NhZ2UsXG5cdFx0cGFyc2VkOiBDb250ZW50UGFyc2VyUmVzdWx0LFxuXHRcdHN0YXRlOiBBcmd1bWVudFJ1bm5lclN0YXRlLFxuXHRcdGFyZzogQXJndW1lbnRcblx0KTogUHJvbWlzZTxGbGFnIHwgYW55PiB7XG5cdFx0Y29uc3QgaW5kZXggPSBhcmcuaW5kZXggPT0gbnVsbCA/IHN0YXRlLnBocmFzZUluZGV4IDogYXJnLmluZGV4O1xuXHRcdGNvbnN0IHJlc3QgPSBwYXJzZWQucGhyYXNlc1xuXHRcdFx0LnNsaWNlKGluZGV4LCBpbmRleCArIGFyZy5saW1pdClcblx0XHRcdC5tYXAoeCA9PiB4LnJhdylcblx0XHRcdC5qb2luKFwiXCIpXG5cdFx0XHQudHJpbSgpO1xuXHRcdGNvbnN0IHJldCA9IGF3YWl0IGFyZy5wcm9jZXNzKG1lc3NhZ2UsIHJlc3QpO1xuXHRcdGlmIChhcmcuaW5kZXggPT0gbnVsbCkge1xuXHRcdFx0QXJndW1lbnRSdW5uZXIuaW5jcmVhc2VJbmRleChwYXJzZWQsIHN0YXRlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmV0O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJ1bnMgYHNlcGFyYXRlYCBtYXRjaC5cblx0ICogQHBhcmFtIG1lc3NhZ2UgLSBNZXNzYWdlIHRoYXQgdHJpZ2dlcmVkIHRoZSBjb21tYW5kLlxuXHQgKiBAcGFyYW0gcGFyc2VkIC0gUGFyc2VkIGRhdGEgZnJvbSBDb250ZW50UGFyc2VyLlxuXHQgKiBAcGFyYW0gc3RhdGUgLSBBcmd1bWVudCBoYW5kbGluZyBzdGF0ZS5cblx0ICogQHBhcmFtIGFyZyAtIEN1cnJlbnQgYXJndW1lbnQuXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgcnVuU2VwYXJhdGUoXG5cdFx0bWVzc2FnZTogTWVzc2FnZSxcblx0XHRwYXJzZWQ6IENvbnRlbnRQYXJzZXJSZXN1bHQsXG5cdFx0c3RhdGU6IEFyZ3VtZW50UnVubmVyU3RhdGUsXG5cdFx0YXJnOiBBcmd1bWVudFxuXHQpOiBQcm9taXNlPEZsYWcgfCBhbnk+IHtcblx0XHRjb25zdCBpbmRleCA9IGFyZy5pbmRleCA9PSBudWxsID8gc3RhdGUucGhyYXNlSW5kZXggOiBhcmcuaW5kZXg7XG5cdFx0Y29uc3QgcGhyYXNlcyA9IHBhcnNlZC5waHJhc2VzLnNsaWNlKGluZGV4LCBpbmRleCArIGFyZy5saW1pdCk7XG5cdFx0aWYgKCFwaHJhc2VzLmxlbmd0aCkge1xuXHRcdFx0Y29uc3QgcmV0ID0gYXdhaXQgYXJnLnByb2Nlc3MobWVzc2FnZSwgXCJcIik7XG5cdFx0XHRpZiAoYXJnLmluZGV4ICE9IG51bGwpIHtcblx0XHRcdFx0QXJndW1lbnRSdW5uZXIuaW5jcmVhc2VJbmRleChwYXJzZWQsIHN0YXRlKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHJldDtcblx0XHR9XG5cblx0XHRjb25zdCByZXMgPSBbXTtcblx0XHRmb3IgKGNvbnN0IHBocmFzZSBvZiBwaHJhc2VzKSB7XG5cdFx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IGFyZy5wcm9jZXNzKG1lc3NhZ2UsIHBocmFzZS52YWx1ZSk7XG5cblx0XHRcdGlmIChGbGFnLmlzKHJlc3BvbnNlLCBcImNhbmNlbFwiKSkge1xuXHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U7XG5cdFx0XHR9XG5cblx0XHRcdHJlcy5wdXNoKHJlc3BvbnNlKTtcblx0XHR9XG5cblx0XHRpZiAoYXJnLmluZGV4ICE9IG51bGwpIHtcblx0XHRcdEFyZ3VtZW50UnVubmVyLmluY3JlYXNlSW5kZXgocGFyc2VkLCBzdGF0ZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSdW5zIGBmbGFnYCBtYXRjaC5cblx0ICogQHBhcmFtIG1lc3NhZ2UgLSBNZXNzYWdlIHRoYXQgdHJpZ2dlcmVkIHRoZSBjb21tYW5kLlxuXHQgKiBAcGFyYW0gcGFyc2VkIC0gUGFyc2VkIGRhdGEgZnJvbSBDb250ZW50UGFyc2VyLlxuXHQgKiBAcGFyYW0gc3RhdGUgLSBBcmd1bWVudCBoYW5kbGluZyBzdGF0ZS5cblx0ICogQHBhcmFtIGFyZyAtIEN1cnJlbnQgYXJndW1lbnQuXG5cdCAqL1xuXHRwdWJsaWMgcnVuRmxhZyhcblx0XHRtZXNzYWdlOiBNZXNzYWdlLFxuXHRcdHBhcnNlZDogQ29udGVudFBhcnNlclJlc3VsdCxcblx0XHRzdGF0ZTogQXJndW1lbnRSdW5uZXJTdGF0ZSxcblx0XHRhcmc6IEFyZ3VtZW50XG5cdCk6IFByb21pc2U8RmxhZz4gfCBhbnkge1xuXHRcdGNvbnN0IG5hbWVzID0gQXJyYXkuaXNBcnJheShhcmcuZmxhZykgPyBhcmcuZmxhZyA6IFthcmcuZmxhZ107XG5cdFx0aWYgKGFyZy5tdWx0aXBsZUZsYWdzKSB7XG5cdFx0XHRjb25zdCBhbW91bnQgPSBwYXJzZWQuZmxhZ3MuZmlsdGVyKGZsYWcgPT5cblx0XHRcdFx0bmFtZXMuc29tZShuYW1lID0+IG5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IGZsYWcua2V5LnRvTG93ZXJDYXNlKCkpXG5cdFx0XHQpLmxlbmd0aDtcblxuXHRcdFx0cmV0dXJuIGFtb3VudDtcblx0XHR9XG5cblx0XHRjb25zdCBmbGFnRm91bmQgPSBwYXJzZWQuZmxhZ3Muc29tZShmbGFnID0+IG5hbWVzLnNvbWUobmFtZSA9PiBuYW1lPy50b0xvd2VyQ2FzZSgpID09PSBmbGFnLmtleS50b0xvd2VyQ2FzZSgpKSk7XG5cblx0XHRyZXR1cm4gYXJnLmRlZmF1bHQgPT0gbnVsbCA/IGZsYWdGb3VuZCA6ICFmbGFnRm91bmQ7XG5cdH1cblxuXHQvKipcblx0ICogUnVucyBgb3B0aW9uYCBtYXRjaC5cblx0ICogQHBhcmFtIG1lc3NhZ2UgLSBNZXNzYWdlIHRoYXQgdHJpZ2dlcmVkIHRoZSBjb21tYW5kLlxuXHQgKiBAcGFyYW0gcGFyc2VkIC0gUGFyc2VkIGRhdGEgZnJvbSBDb250ZW50UGFyc2VyLlxuXHQgKiBAcGFyYW0gc3RhdGUgLSBBcmd1bWVudCBoYW5kbGluZyBzdGF0ZS5cblx0ICogQHBhcmFtIGFyZyAtIEN1cnJlbnQgYXJndW1lbnQuXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgcnVuT3B0aW9uKFxuXHRcdG1lc3NhZ2U6IE1lc3NhZ2UsXG5cdFx0cGFyc2VkOiBDb250ZW50UGFyc2VyUmVzdWx0LFxuXHRcdHN0YXRlOiBBcmd1bWVudFJ1bm5lclN0YXRlLFxuXHRcdGFyZzogQXJndW1lbnRcblx0KTogUHJvbWlzZTxGbGFnIHwgYW55PiB7XG5cdFx0Y29uc3QgbmFtZXMgPSBBcnJheS5pc0FycmF5KGFyZy5mbGFnKSA/IGFyZy5mbGFnIDogW2FyZy5mbGFnXTtcblx0XHRpZiAoYXJnLm11bHRpcGxlRmxhZ3MpIHtcblx0XHRcdGNvbnN0IHZhbHVlcyA9IHBhcnNlZC5vcHRpb25GbGFnc1xuXHRcdFx0XHQuZmlsdGVyKGZsYWcgPT4gbmFtZXMuc29tZShuYW1lID0+IG5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IGZsYWcua2V5LnRvTG93ZXJDYXNlKCkpKVxuXHRcdFx0XHQubWFwKHggPT4geC52YWx1ZSlcblx0XHRcdFx0LnNsaWNlKDAsIGFyZy5saW1pdCk7XG5cblx0XHRcdGNvbnN0IHJlcyA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcblx0XHRcdFx0cmVzLnB1c2goYXdhaXQgYXJnLnByb2Nlc3MobWVzc2FnZSwgdmFsdWUpKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHJlcztcblx0XHR9XG5cblx0XHRjb25zdCBmb3VuZEZsYWcgPSBwYXJzZWQub3B0aW9uRmxhZ3MuZmluZChmbGFnID0+XG5cdFx0XHRuYW1lcy5zb21lKG5hbWUgPT4gbmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gZmxhZy5rZXkudG9Mb3dlckNhc2UoKSlcblx0XHQpO1xuXG5cdFx0cmV0dXJuIGFyZy5wcm9jZXNzKG1lc3NhZ2UsIGZvdW5kRmxhZyAhPSBudWxsID8gZm91bmRGbGFnLnZhbHVlIDogXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogUnVucyBgdGV4dGAgbWF0Y2guXG5cdCAqIEBwYXJhbSBtZXNzYWdlIC0gTWVzc2FnZSB0aGF0IHRyaWdnZXJlZCB0aGUgY29tbWFuZC5cblx0ICogQHBhcmFtIHBhcnNlZCAtIFBhcnNlZCBkYXRhIGZyb20gQ29udGVudFBhcnNlci5cblx0ICogQHBhcmFtIHN0YXRlIC0gQXJndW1lbnQgaGFuZGxpbmcgc3RhdGUuXG5cdCAqIEBwYXJhbSBhcmcgLSBDdXJyZW50IGFyZ3VtZW50LlxuXHQgKi9cblx0cHVibGljIHJ1blRleHQoXG5cdFx0bWVzc2FnZTogTWVzc2FnZSxcblx0XHRwYXJzZWQ6IENvbnRlbnRQYXJzZXJSZXN1bHQsXG5cdFx0c3RhdGU6IEFyZ3VtZW50UnVubmVyU3RhdGUsXG5cdFx0YXJnOiBBcmd1bWVudFxuXHQpOiBQcm9taXNlPEZsYWcgfCBhbnk+IHtcblx0XHRjb25zdCBpbmRleCA9IGFyZy5pbmRleCA9PSBudWxsID8gMCA6IGFyZy5pbmRleDtcblx0XHRjb25zdCB0ZXh0ID0gcGFyc2VkLnBocmFzZXNcblx0XHRcdC5zbGljZShpbmRleCwgaW5kZXggKyBhcmcubGltaXQpXG5cdFx0XHQubWFwKHggPT4geC5yYXcpXG5cdFx0XHQuam9pbihcIlwiKVxuXHRcdFx0LnRyaW0oKTtcblx0XHRyZXR1cm4gYXJnLnByb2Nlc3MobWVzc2FnZSwgdGV4dCk7XG5cdH1cblxuXHQvKipcblx0ICogUnVucyBgY29udGVudGAgbWF0Y2guXG5cdCAqIEBwYXJhbSBtZXNzYWdlIC0gTWVzc2FnZSB0aGF0IHRyaWdnZXJlZCB0aGUgY29tbWFuZC5cblx0ICogQHBhcmFtIHBhcnNlZCAtIFBhcnNlZCBkYXRhIGZyb20gQ29udGVudFBhcnNlci5cblx0ICogQHBhcmFtIHN0YXRlIC0gQXJndW1lbnQgaGFuZGxpbmcgc3RhdGUuXG5cdCAqIEBwYXJhbSBhcmcgLSBDdXJyZW50IGFyZ3VtZW50LlxuXHQgKi9cblx0cHVibGljIHJ1bkNvbnRlbnQoXG5cdFx0bWVzc2FnZTogTWVzc2FnZSxcblx0XHRwYXJzZWQ6IENvbnRlbnRQYXJzZXJSZXN1bHQsXG5cdFx0c3RhdGU6IEFyZ3VtZW50UnVubmVyU3RhdGUsXG5cdFx0YXJnOiBBcmd1bWVudFxuXHQpOiBQcm9taXNlPEZsYWcgfCBhbnk+IHtcblx0XHRjb25zdCBpbmRleCA9IGFyZy5pbmRleCA9PSBudWxsID8gMCA6IGFyZy5pbmRleDtcblx0XHRjb25zdCBjb250ZW50ID0gcGFyc2VkLmFsbFxuXHRcdFx0LnNsaWNlKGluZGV4LCBpbmRleCArIGFyZy5saW1pdClcblx0XHRcdC5tYXAoeCA9PiB4LnJhdylcblx0XHRcdC5qb2luKFwiXCIpXG5cdFx0XHQudHJpbSgpO1xuXHRcdHJldHVybiBhcmcucHJvY2VzcyhtZXNzYWdlLCBjb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSdW5zIGByZXN0Q29udGVudGAgbWF0Y2guXG5cdCAqIEBwYXJhbSBtZXNzYWdlIC0gTWVzc2FnZSB0aGF0IHRyaWdnZXJlZCB0aGUgY29tbWFuZC5cblx0ICogQHBhcmFtIHBhcnNlZCAtIFBhcnNlZCBkYXRhIGZyb20gQ29udGVudFBhcnNlci5cblx0ICogQHBhcmFtIHN0YXRlIC0gQXJndW1lbnQgaGFuZGxpbmcgc3RhdGUuXG5cdCAqIEBwYXJhbSBhcmcgLSBDdXJyZW50IGFyZ3VtZW50LlxuXHQgKi9cblx0cHVibGljIGFzeW5jIHJ1blJlc3RDb250ZW50KFxuXHRcdG1lc3NhZ2U6IE1lc3NhZ2UsXG5cdFx0cGFyc2VkOiBDb250ZW50UGFyc2VyUmVzdWx0LFxuXHRcdHN0YXRlOiBBcmd1bWVudFJ1bm5lclN0YXRlLFxuXHRcdGFyZzogQXJndW1lbnRcblx0KTogUHJvbWlzZTxGbGFnIHwgYW55PiB7XG5cdFx0Y29uc3QgaW5kZXggPSBhcmcuaW5kZXggPT0gbnVsbCA/IHN0YXRlLmluZGV4IDogYXJnLmluZGV4O1xuXHRcdGNvbnN0IHJlc3QgPSBwYXJzZWQuYWxsXG5cdFx0XHQuc2xpY2UoaW5kZXgsIGluZGV4ICsgYXJnLmxpbWl0KVxuXHRcdFx0Lm1hcCh4ID0+IHgucmF3KVxuXHRcdFx0LmpvaW4oXCJcIilcblx0XHRcdC50cmltKCk7XG5cdFx0Y29uc3QgcmV0ID0gYXdhaXQgYXJnLnByb2Nlc3MobWVzc2FnZSwgcmVzdCk7XG5cdFx0aWYgKGFyZy5pbmRleCA9PSBudWxsKSB7XG5cdFx0XHRBcmd1bWVudFJ1bm5lci5pbmNyZWFzZUluZGV4KHBhcnNlZCwgc3RhdGUpO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXQ7XG5cdH1cblxuXHQvKipcblx0ICogUnVucyBgbm9uZWAgbWF0Y2guXG5cdCAqIEBwYXJhbSBtZXNzYWdlIC0gTWVzc2FnZSB0aGF0IHRyaWdnZXJlZCB0aGUgY29tbWFuZC5cblx0ICogQHBhcmFtIHBhcnNlZCAtIFBhcnNlZCBkYXRhIGZyb20gQ29udGVudFBhcnNlci5cblx0ICogQHBhcmFtIHN0YXRlIC0gQXJndW1lbnQgaGFuZGxpbmcgc3RhdGUuXG5cdCAqIEBwYXJhbSBhcmcgLSBDdXJyZW50IGFyZ3VtZW50LlxuXHQgKi9cblx0cHVibGljIHJ1bk5vbmUoXG5cdFx0bWVzc2FnZTogTWVzc2FnZSxcblx0XHRwYXJzZWQ6IENvbnRlbnRQYXJzZXJSZXN1bHQsXG5cdFx0c3RhdGU6IEFyZ3VtZW50UnVubmVyU3RhdGUsXG5cdFx0YXJnOiBBcmd1bWVudFxuXHQpOiBQcm9taXNlPEZsYWcgfCBhbnk+IHtcblx0XHRyZXR1cm4gYXJnLnByb2Nlc3MobWVzc2FnZSwgXCJcIik7XG5cdH1cblxuXHQvKipcblx0ICogTW9kaWZpZXMgc3RhdGUgYnkgaW5jcmVtZW50aW5nIHRoZSBpbmRpY2VzLlxuXHQgKiBAcGFyYW0gcGFyc2VkIC0gUGFyc2VkIGRhdGEgZnJvbSBDb250ZW50UGFyc2VyLlxuXHQgKiBAcGFyYW0gc3RhdGUgLSBBcmd1bWVudCBoYW5kbGluZyBzdGF0ZS5cblx0ICogQHBhcmFtIG4gLSBOdW1iZXIgb2YgaW5kaWNlcyB0byBpbmNyZWFzZSBieS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaW5jcmVhc2VJbmRleChwYXJzZWQ6IENvbnRlbnRQYXJzZXJSZXN1bHQsIHN0YXRlOiBBcmd1bWVudFJ1bm5lclN0YXRlLCBuID0gMSk6IHZvaWQge1xuXHRcdHN0YXRlLnBocmFzZUluZGV4ICs9IG47XG5cdFx0d2hpbGUgKG4gPiAwKSB7XG5cdFx0XHRkbyB7XG5cdFx0XHRcdHN0YXRlLmluZGV4Kys7XG5cdFx0XHR9IHdoaWxlIChwYXJzZWQuYWxsW3N0YXRlLmluZGV4XSAmJiBwYXJzZWQuYWxsW3N0YXRlLmluZGV4XS50eXBlICE9PSBcIlBocmFzZVwiKTtcblx0XHRcdG4tLTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2hlY2tzIGlmIHNvbWV0aGluZyBpcyBhIGZsYWcgdGhhdCBzaG9ydCBjaXJjdWl0cy5cblx0ICogQHBhcmFtIHZhbHVlIC0gQSB2YWx1ZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaXNTaG9ydENpcmN1aXQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBGbGFnLmlzKHZhbHVlLCBcImNhbmNlbFwiKSB8fCBGbGFnLmlzKHZhbHVlLCBcInJldHJ5XCIpIHx8IEZsYWcuaXModmFsdWUsIFwiY29udGludWVcIik7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBhcmd1bWVudCBnZW5lcmF0b3IgZnJvbSBhcmd1bWVudCBvcHRpb25zLlxuXHQgKiBAcGFyYW0gYXJncyAtIEFyZ3VtZW50IG9wdGlvbnMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGZyb21Bcmd1bWVudHMoYXJnczogW2lkOiBzdHJpbmcsIGFyZ3VtZW50OiBBcmd1bWVudF1bXSkge1xuXHRcdHJldHVybiBmdW5jdGlvbiogZ2VuZXJhdGUoKTogR2VuZXJhdG9yPEFyZ3VtZW50LCB7IFt4OiBzdHJpbmddOiBhbnkgfSwgQXJndW1lbnQ+IHtcblx0XHRcdGNvbnN0IHJlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXHRcdFx0Zm9yIChjb25zdCBbaWQsIGFyZ10gb2YgYXJncykge1xuXHRcdFx0XHRyZXNbaWRdID0geWllbGQgYXJnO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcmVzO1xuXHRcdH07XG5cdH1cbn1cblxuLyoqXG4gKiBTdGF0ZSBmb3IgdGhlIGFyZ3VtZW50IHJ1bm5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcmd1bWVudFJ1bm5lclN0YXRlIHtcblx0LyoqIEluZGV4IGluIHRlcm1zIG9mIHRoZSByYXcgc3RyaW5ncy4gKi9cblx0aW5kZXg6IG51bWJlcjtcblxuXHQvKiogSW5kZXggaW4gdGVybXMgb2YgcGhyYXNlcy4gKi9cblx0cGhyYXNlSW5kZXg6IG51bWJlcjtcblxuXHQvKiogSW5kaWNlcyBhbHJlYWR5IHVzZWQgZm9yIHVub3JkZXJlZCBtYXRjaC4gKi9cblx0dXNlZEluZGljZXM6IFNldDxudW1iZXI+O1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJndW1lbnRSdW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc3RydWN0L2NvbW1hbmRzL2FyZ3VtZW50cy9Bcmd1bWVudFJ1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDRFQUFvRDtBQUNwRCx1REFBMEQ7QUFHMUQsbURBQTJCO0FBQzNCLDBEQUF1RDtBQUV2RDs7O0dBR0c7QUFDSCxNQUFxQixjQUFjO0lBQ2xDLFlBQW1CLE9BQWdCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU8sQ0FBVTtJQUV4Qjs7T0FFRztJQUNILElBQVcsTUFBTTtRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsT0FBTztRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBZ0IsRUFBRSxNQUEyQixFQUFFLFNBQTRCO1FBQzNGLE1BQU0sS0FBSyxHQUFHO1lBQ2IsV0FBVyxFQUFFLElBQUksR0FBRyxFQUFVO1lBQzlCLFdBQVcsRUFBRSxDQUFDO1lBQ2QsS0FBSyxFQUFFLENBQUM7U0FDUixDQUFDO1FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUEyQixFQUFFLEVBQUU7WUFDbkQsSUFBSSxjQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRTtnQkFDNUIsR0FBVyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRztxQkFDNUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7cUJBQ2xCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7cUJBQ2YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ1g7UUFDRixDQUFDLENBQUM7UUFFRixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxJQUFJLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNsQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3pCLElBQUksY0FBYyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDekMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuQixPQUFPLEtBQUssQ0FBQzthQUNiO1lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksa0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDekYsSUFBSSxjQUFjLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN2QyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2pCLE9BQU8sR0FBRyxDQUFDO2FBQ1g7WUFFRCxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVCO1FBRUQsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FDWixPQUFnQixFQUNoQixNQUEyQixFQUMzQixLQUEwQixFQUMxQixHQUFhO1FBRWIsTUFBTSxLQUFLLEdBQUc7WUFDYixDQUFDLDJCQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDeEMsQ0FBQywyQkFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3BDLENBQUMsMkJBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN4QyxDQUFDLDJCQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDcEMsQ0FBQywyQkFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzVDLENBQUMsMkJBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTztZQUNwQyxDQUFDLDJCQUFlLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDMUMsQ0FBQywyQkFBZSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25ELENBQUMsMkJBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTztTQUNwQyxDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDbkIsTUFBTSxJQUFJLHFCQUFXLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLFNBQVMsQ0FDckIsT0FBZ0IsRUFDaEIsTUFBMkIsRUFDM0IsS0FBMEIsRUFDMUIsR0FBYTtRQUViLElBQUksR0FBRyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsU0FBUyxLQUFLLENBQUMsRUFBRTtZQUN6QyxNQUFNLE9BQU8sR0FDWixPQUFPLEdBQUcsQ0FBQyxTQUFTLEtBQUssUUFBUTtnQkFDaEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO2dCQUN4RCxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO29CQUM5QixDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVM7b0JBQ2YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRXRDLEtBQUssTUFBTSxDQUFDLElBQUksT0FBTyxFQUFFO2dCQUN4QixJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUM3QixTQUFTO2lCQUNUO2dCQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hFLG9FQUFvRTtnQkFDcEUsTUFBTSxHQUFHLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO29CQUNqQixLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekIsT0FBTyxHQUFHLENBQUM7aUJBQ1g7YUFDRDtZQUVELHNCQUFzQjtZQUN0QixPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDNUYsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDdkIsY0FBYyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDNUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNaLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsT0FBTyxDQUNuQixPQUFnQixFQUNoQixNQUEyQixFQUMzQixLQUEwQixFQUMxQixHQUFhO1FBRWIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDNUYsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU87YUFDekIsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQzthQUMvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2FBQ2YsSUFBSSxDQUFDLEVBQUUsQ0FBQzthQUNSLElBQUksRUFBRSxDQUFDO1FBQ1QsTUFBTSxHQUFHLEdBQUcsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3ZCLGNBQWMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzVDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FDdkIsT0FBZ0IsRUFDaEIsTUFBMkIsRUFDM0IsS0FBMEIsRUFDMUIsR0FBYTtRQUViLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQzVGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ3BCLE1BQU0sR0FBRyxHQUFHLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0MsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDdkIsY0FBYyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDNUM7WUFFRCxPQUFPLEdBQUcsQ0FBQztTQUNYO1FBRUQsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2YsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7WUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFMUQsSUFBSSxjQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRTtnQkFDaEMsT0FBTyxRQUFRLENBQUM7YUFDaEI7WUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25CO1FBRUQsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUN2QixjQUFjLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM1QztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE9BQU8sQ0FDYixPQUFnQixFQUNoQixNQUEyQixFQUMzQixLQUEwQixFQUMxQixHQUFhO1FBRWIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlELElBQUksR0FBRyxDQUFDLGFBQWEsRUFBRTtZQUN0QixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN6QyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDbEUsQ0FBQyxNQUFNLENBQUM7WUFFVCxPQUFPLE1BQU0sQ0FBQztTQUNkO1FBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWhILE9BQU8sR0FBRyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxTQUFTLENBQ3JCLE9BQWdCLEVBQ2hCLE1BQTJCLEVBQzNCLEtBQTBCLEVBQzFCLEdBQWE7UUFFYixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUQsSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFO1lBQ3RCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXO2lCQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztpQkFDbEYsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztpQkFDakIsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdEIsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ2YsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7Z0JBQzNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzVDO1lBRUQsT0FBTyxHQUFHLENBQUM7U0FDWDtRQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ2hELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUNsRSxDQUFDO1FBRUYsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxPQUFPLENBQ2IsT0FBZ0IsRUFDaEIsTUFBMkIsRUFDM0IsS0FBMEIsRUFDMUIsR0FBYTtRQUViLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDNUUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU87YUFDekIsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQzthQUMvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2FBQ2YsSUFBSSxDQUFDLEVBQUUsQ0FBQzthQUNSLElBQUksRUFBRSxDQUFDO1FBQ1QsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksVUFBVSxDQUNoQixPQUFnQixFQUNoQixNQUEyQixFQUMzQixLQUEwQixFQUMxQixHQUFhO1FBRWIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUM1RSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRzthQUN4QixLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2FBQy9CLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7YUFDZixJQUFJLENBQUMsRUFBRSxDQUFDO2FBQ1IsSUFBSSxFQUFFLENBQUM7UUFDVCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsY0FBYyxDQUMxQixPQUFnQixFQUNoQixNQUEyQixFQUMzQixLQUEwQixFQUMxQixHQUFhO1FBRWIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDdEYsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUc7YUFDckIsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQzthQUMvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2FBQ2YsSUFBSSxDQUFDLEVBQUUsQ0FBQzthQUNSLElBQUksRUFBRSxDQUFDO1FBQ1QsTUFBTSxHQUFHLEdBQUcsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3ZCLGNBQWMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzVDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksT0FBTyxDQUNiLE9BQWdCLEVBQ2hCLE1BQTJCLEVBQzNCLEtBQTBCLEVBQzFCLEdBQWE7UUFFYixPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBMkIsRUFBRSxLQUEwQixFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ3pGLEtBQUssQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNiLEdBQUc7Z0JBQ0YsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2QsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQy9FLENBQUMsRUFBRSxDQUFDO1NBQ0o7SUFDRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFVO1FBQ3RDLE9BQU8sY0FBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksY0FBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksY0FBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBd0M7UUFDbkUsT0FBTyxRQUFRLENBQUMsQ0FBQyxRQUFRO1lBQ3hCLE1BQU0sR0FBRyxHQUEyQixFQUFFLENBQUM7WUFDdkMsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDN0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDO2FBQ3BCO1lBRUQsT0FBTyxHQUFHLENBQUM7UUFDWixDQUFDLENBQUM7SUFDSCxDQUFDO0NBQ0Q7QUFyWkQsaUNBcVpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gXCJkaXNjb3JkLmpzXCI7XG5pbXBvcnQgQWthaXJvRXJyb3IgZnJvbSBcIi4uLy4uLy4uL3V0aWwvQWthaXJvRXJyb3JcIjtcbmltcG9ydCB7IEFyZ3VtZW50TWF0Y2hlcyB9IGZyb20gXCIuLi8uLi8uLi91dGlsL0NvbnN0YW50c1wiO1xuaW1wb3J0IENvbW1hbmQsIHsgQXJndW1lbnRHZW5lcmF0b3IgfSBmcm9tIFwiLi4vQ29tbWFuZFwiO1xuaW1wb3J0IHsgQ29udGVudFBhcnNlclJlc3VsdCB9IGZyb20gXCIuLi9Db250ZW50UGFyc2VyXCI7XG5pbXBvcnQgRmxhZyBmcm9tIFwiLi4vRmxhZ1wiO1xuaW1wb3J0IEFyZ3VtZW50LCB7IEFyZ3VtZW50T3B0aW9ucyB9IGZyb20gXCIuL0FyZ3VtZW50XCI7XG5cbi8qKlxuICogUnVucyBhcmd1bWVudHMuXG4gKiBAcGFyYW0gY29tbWFuZCAtIENvbW1hbmQgdG8gcnVuIGZvci5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXJndW1lbnRSdW5uZXIge1xuXHRwdWJsaWMgY29uc3RydWN0b3IoY29tbWFuZDogQ29tbWFuZCkge1xuXHRcdHRoaXMuY29tbWFuZCA9IGNvbW1hbmQ7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGNvbW1hbmQgdGhlIGFyZ3VtZW50cyBhcmUgYmVpbmcgcnVuIGZvclxuXHQgKi9cblx0cHVibGljIGNvbW1hbmQ6IENvbW1hbmQ7XG5cblx0LyoqXG5cdCAqIFRoZSBBa2Fpcm8gY2xpZW50LlxuXHQgKi9cblx0cHVibGljIGdldCBjbGllbnQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuY29tbWFuZC5jbGllbnQ7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGNvbW1hbmQgaGFuZGxlci5cblx0ICovXG5cdHB1YmxpYyBnZXQgaGFuZGxlcigpIHtcblx0XHRyZXR1cm4gdGhpcy5jb21tYW5kLmhhbmRsZXI7XG5cdH1cblxuXHQvKipcblx0ICogUnVucyB0aGUgYXJndW1lbnRzLlxuXHQgKiBAcGFyYW0gbWVzc2FnZSAtIE1lc3NhZ2UgdGhhdCB0cmlnZ2VyZWQgdGhlIGNvbW1hbmQuXG5cdCAqIEBwYXJhbSBwYXJzZWQgLSBQYXJzZWQgZGF0YSBmcm9tIENvbnRlbnRQYXJzZXIuXG5cdCAqIEBwYXJhbSBnZW5lcmF0b3IgLSBBcmd1bWVudCBnZW5lcmF0b3IuXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgcnVuKG1lc3NhZ2U6IE1lc3NhZ2UsIHBhcnNlZDogQ29udGVudFBhcnNlclJlc3VsdCwgZ2VuZXJhdG9yOiBBcmd1bWVudEdlbmVyYXRvcik6IFByb21pc2U8RmxhZyB8IGFueT4ge1xuXHRcdGNvbnN0IHN0YXRlID0ge1xuXHRcdFx0dXNlZEluZGljZXM6IG5ldyBTZXQ8bnVtYmVyPigpLFxuXHRcdFx0cGhyYXNlSW5kZXg6IDAsXG5cdFx0XHRpbmRleDogMFxuXHRcdH07XG5cblx0XHRjb25zdCBhdWdtZW50UmVzdCA9ICh2YWw6IEZsYWcgfCBBcmd1bWVudE9wdGlvbnMpID0+IHtcblx0XHRcdGlmIChGbGFnLmlzKHZhbCwgXCJjb250aW51ZVwiKSkge1xuXHRcdFx0XHQodmFsIGFzIGFueSkucmVzdCA9IHBhcnNlZC5hbGxcblx0XHRcdFx0XHQuc2xpY2Uoc3RhdGUuaW5kZXgpXG5cdFx0XHRcdFx0Lm1hcCh4ID0+IHgucmF3KVxuXHRcdFx0XHRcdC5qb2luKFwiXCIpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRjb25zdCBpdGVyID0gZ2VuZXJhdG9yKG1lc3NhZ2UsIHBhcnNlZCwgc3RhdGUpO1xuXHRcdGxldCBjdXJyID0gYXdhaXQgaXRlci5uZXh0KCk7XG5cdFx0d2hpbGUgKCFjdXJyLmRvbmUpIHtcblx0XHRcdGNvbnN0IHZhbHVlID0gY3Vyci52YWx1ZTtcblx0XHRcdGlmIChBcmd1bWVudFJ1bm5lci5pc1Nob3J0Q2lyY3VpdCh2YWx1ZSkpIHtcblx0XHRcdFx0YXVnbWVudFJlc3QodmFsdWUpO1xuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucnVuT25lKG1lc3NhZ2UsIHBhcnNlZCwgc3RhdGUsIG5ldyBBcmd1bWVudCh0aGlzLmNvbW1hbmQsIHZhbHVlKSk7XG5cdFx0XHRpZiAoQXJndW1lbnRSdW5uZXIuaXNTaG9ydENpcmN1aXQocmVzKSkge1xuXHRcdFx0XHRhdWdtZW50UmVzdChyZXMpO1xuXHRcdFx0XHRyZXR1cm4gcmVzO1xuXHRcdFx0fVxuXG5cdFx0XHRjdXJyID0gYXdhaXQgaXRlci5uZXh0KHJlcyk7XG5cdFx0fVxuXG5cdFx0YXVnbWVudFJlc3QoY3Vyci52YWx1ZSk7XG5cdFx0cmV0dXJuIGN1cnIudmFsdWU7XG5cdH1cblxuXHQvKipcblx0ICogUnVucyBvbmUgYXJndW1lbnQuXG5cdCAqIEBwYXJhbSBtZXNzYWdlIC0gTWVzc2FnZSB0aGF0IHRyaWdnZXJlZCB0aGUgY29tbWFuZC5cblx0ICogQHBhcmFtIHBhcnNlZCAtIFBhcnNlZCBkYXRhIGZyb20gQ29udGVudFBhcnNlci5cblx0ICogQHBhcmFtIHN0YXRlIC0gQXJndW1lbnQgaGFuZGxpbmcgc3RhdGUuXG5cdCAqIEBwYXJhbSBhcmcgLSBDdXJyZW50IGFyZ3VtZW50LlxuXHQgKi9cblx0cHVibGljIHJ1bk9uZShcblx0XHRtZXNzYWdlOiBNZXNzYWdlLFxuXHRcdHBhcnNlZDogQ29udGVudFBhcnNlclJlc3VsdCxcblx0XHRzdGF0ZTogQXJndW1lbnRSdW5uZXJTdGF0ZSxcblx0XHRhcmc6IEFyZ3VtZW50XG5cdCk6IFByb21pc2U8RmxhZyB8IGFueT4ge1xuXHRcdGNvbnN0IGNhc2VzID0ge1xuXHRcdFx0W0FyZ3VtZW50TWF0Y2hlcy5QSFJBU0VdOiB0aGlzLnJ1blBocmFzZSxcblx0XHRcdFtBcmd1bWVudE1hdGNoZXMuRkxBR106IHRoaXMucnVuRmxhZyxcblx0XHRcdFtBcmd1bWVudE1hdGNoZXMuT1BUSU9OXTogdGhpcy5ydW5PcHRpb24sXG5cdFx0XHRbQXJndW1lbnRNYXRjaGVzLlJFU1RdOiB0aGlzLnJ1blJlc3QsXG5cdFx0XHRbQXJndW1lbnRNYXRjaGVzLlNFUEFSQVRFXTogdGhpcy5ydW5TZXBhcmF0ZSxcblx0XHRcdFtBcmd1bWVudE1hdGNoZXMuVEVYVF06IHRoaXMucnVuVGV4dCxcblx0XHRcdFtBcmd1bWVudE1hdGNoZXMuQ09OVEVOVF06IHRoaXMucnVuQ29udGVudCxcblx0XHRcdFtBcmd1bWVudE1hdGNoZXMuUkVTVF9DT05URU5UXTogdGhpcy5ydW5SZXN0Q29udGVudCxcblx0XHRcdFtBcmd1bWVudE1hdGNoZXMuTk9ORV06IHRoaXMucnVuTm9uZVxuXHRcdH07XG5cblx0XHRjb25zdCBydW5GbiA9IGNhc2VzW2FyZy5tYXRjaF07XG5cdFx0aWYgKHJ1bkZuID09PSBudWxsKSB7XG5cdFx0XHR0aHJvdyBuZXcgQWthaXJvRXJyb3IoXCJVTktOT1dOX01BVENIX1RZUEVcIiwgYXJnLm1hdGNoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcnVuRm4uY2FsbCh0aGlzLCBtZXNzYWdlLCBwYXJzZWQsIHN0YXRlLCBhcmcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJ1bnMgYHBocmFzZWAgbWF0Y2guXG5cdCAqIEBwYXJhbSBtZXNzYWdlIC0gTWVzc2FnZSB0aGF0IHRyaWdnZXJlZCB0aGUgY29tbWFuZC5cblx0ICogQHBhcmFtIHBhcnNlZCAtIFBhcnNlZCBkYXRhIGZyb20gQ29udGVudFBhcnNlci5cblx0ICogQHBhcmFtIHN0YXRlIC0gQXJndW1lbnQgaGFuZGxpbmcgc3RhdGUuXG5cdCAqIEBwYXJhbSBhcmcgLSBDdXJyZW50IGFyZ3VtZW50LlxuXHQgKi9cblx0cHVibGljIGFzeW5jIHJ1blBocmFzZShcblx0XHRtZXNzYWdlOiBNZXNzYWdlLFxuXHRcdHBhcnNlZDogQ29udGVudFBhcnNlclJlc3VsdCxcblx0XHRzdGF0ZTogQXJndW1lbnRSdW5uZXJTdGF0ZSxcblx0XHRhcmc6IEFyZ3VtZW50XG5cdCk6IFByb21pc2U8RmxhZyB8IGFueT4ge1xuXHRcdGlmIChhcmcudW5vcmRlcmVkIHx8IGFyZy51bm9yZGVyZWQgPT09IDApIHtcblx0XHRcdGNvbnN0IGluZGljZXMgPVxuXHRcdFx0XHR0eXBlb2YgYXJnLnVub3JkZXJlZCA9PT0gXCJudW1iZXJcIlxuXHRcdFx0XHRcdD8gQXJyYXkuZnJvbShwYXJzZWQucGhyYXNlcy5rZXlzKCkpLnNsaWNlKGFyZy51bm9yZGVyZWQpXG5cdFx0XHRcdFx0OiBBcnJheS5pc0FycmF5KGFyZy51bm9yZGVyZWQpXG5cdFx0XHRcdFx0PyBhcmcudW5vcmRlcmVkXG5cdFx0XHRcdFx0OiBBcnJheS5mcm9tKHBhcnNlZC5waHJhc2VzLmtleXMoKSk7XG5cblx0XHRcdGZvciAoY29uc3QgaSBvZiBpbmRpY2VzKSB7XG5cdFx0XHRcdGlmIChzdGF0ZS51c2VkSW5kaWNlcy5oYXMoaSkpIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHBocmFzZSA9IHBhcnNlZC5waHJhc2VzW2ldID8gcGFyc2VkLnBocmFzZXNbaV0udmFsdWUgOiBcIlwiO1xuXHRcdFx0XHQvLyBgY2FzdGAgaXMgdXNlZCBpbnN0ZWFkIG9mIGBwcm9jZXNzYCBzaW5jZSB3ZSBkbyBub3Qgd2FudCBwcm9tcHRzLlxuXHRcdFx0XHRjb25zdCByZXMgPSBhd2FpdCBhcmcuY2FzdChtZXNzYWdlLCBwaHJhc2UpO1xuXHRcdFx0XHRpZiAocmVzICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0c3RhdGUudXNlZEluZGljZXMuYWRkKGkpO1xuXHRcdFx0XHRcdHJldHVybiByZXM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gTm8gaW5kaWNlcyBtYXRjaGVkLlxuXHRcdFx0cmV0dXJuIGFyZy5wcm9jZXNzKG1lc3NhZ2UsIFwiXCIpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGluZGV4ID0gYXJnLmluZGV4ID09PSBudWxsIHx8IGFyZy5pbmRleCA9PT0gdW5kZWZpbmVkID8gc3RhdGUucGhyYXNlSW5kZXggOiBhcmcuaW5kZXg7XG5cdFx0Y29uc3QgcmV0ID0gYXJnLnByb2Nlc3MobWVzc2FnZSwgcGFyc2VkLnBocmFzZXNbaW5kZXhdID8gcGFyc2VkLnBocmFzZXNbaW5kZXhdLnZhbHVlIDogXCJcIik7XG5cdFx0aWYgKGFyZy5pbmRleCA9PT0gbnVsbCkge1xuXHRcdFx0QXJndW1lbnRSdW5uZXIuaW5jcmVhc2VJbmRleChwYXJzZWQsIHN0YXRlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmV0O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJ1bnMgYHJlc3RgIG1hdGNoLlxuXHQgKiBAcGFyYW0gbWVzc2FnZSAtIE1lc3NhZ2UgdGhhdCB0cmlnZ2VyZWQgdGhlIGNvbW1hbmQuXG5cdCAqIEBwYXJhbSBwYXJzZWQgLSBQYXJzZWQgZGF0YSBmcm9tIENvbnRlbnRQYXJzZXIuXG5cdCAqIEBwYXJhbSBzdGF0ZSAtIEFyZ3VtZW50IGhhbmRsaW5nIHN0YXRlLlxuXHQgKiBAcGFyYW0gYXJnIC0gQ3VycmVudCBhcmd1bWVudC5cblx0ICovXG5cdHB1YmxpYyBhc3luYyBydW5SZXN0KFxuXHRcdG1lc3NhZ2U6IE1lc3NhZ2UsXG5cdFx0cGFyc2VkOiBDb250ZW50UGFyc2VyUmVzdWx0LFxuXHRcdHN0YXRlOiBBcmd1bWVudFJ1bm5lclN0YXRlLFxuXHRcdGFyZzogQXJndW1lbnRcblx0KTogUHJvbWlzZTxGbGFnIHwgYW55PiB7XG5cdFx0Y29uc3QgaW5kZXggPSBhcmcuaW5kZXggPT09IG51bGwgfHwgYXJnLmluZGV4ID09PSB1bmRlZmluZWQgPyBzdGF0ZS5waHJhc2VJbmRleCA6IGFyZy5pbmRleDtcblx0XHRjb25zdCByZXN0ID0gcGFyc2VkLnBocmFzZXNcblx0XHRcdC5zbGljZShpbmRleCwgaW5kZXggKyBhcmcubGltaXQpXG5cdFx0XHQubWFwKHggPT4geC5yYXcpXG5cdFx0XHQuam9pbihcIlwiKVxuXHRcdFx0LnRyaW0oKTtcblx0XHRjb25zdCByZXQgPSBhd2FpdCBhcmcucHJvY2VzcyhtZXNzYWdlLCByZXN0KTtcblx0XHRpZiAoYXJnLmluZGV4ID09PSBudWxsKSB7XG5cdFx0XHRBcmd1bWVudFJ1bm5lci5pbmNyZWFzZUluZGV4KHBhcnNlZCwgc3RhdGUpO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXQ7XG5cdH1cblxuXHQvKipcblx0ICogUnVucyBgc2VwYXJhdGVgIG1hdGNoLlxuXHQgKiBAcGFyYW0gbWVzc2FnZSAtIE1lc3NhZ2UgdGhhdCB0cmlnZ2VyZWQgdGhlIGNvbW1hbmQuXG5cdCAqIEBwYXJhbSBwYXJzZWQgLSBQYXJzZWQgZGF0YSBmcm9tIENvbnRlbnRQYXJzZXIuXG5cdCAqIEBwYXJhbSBzdGF0ZSAtIEFyZ3VtZW50IGhhbmRsaW5nIHN0YXRlLlxuXHQgKiBAcGFyYW0gYXJnIC0gQ3VycmVudCBhcmd1bWVudC5cblx0ICovXG5cdHB1YmxpYyBhc3luYyBydW5TZXBhcmF0ZShcblx0XHRtZXNzYWdlOiBNZXNzYWdlLFxuXHRcdHBhcnNlZDogQ29udGVudFBhcnNlclJlc3VsdCxcblx0XHRzdGF0ZTogQXJndW1lbnRSdW5uZXJTdGF0ZSxcblx0XHRhcmc6IEFyZ3VtZW50XG5cdCk6IFByb21pc2U8RmxhZyB8IGFueT4ge1xuXHRcdGNvbnN0IGluZGV4ID0gYXJnLmluZGV4ID09PSBudWxsIHx8IGFyZy5pbmRleCA9PT0gdW5kZWZpbmVkID8gc3RhdGUucGhyYXNlSW5kZXggOiBhcmcuaW5kZXg7XG5cdFx0Y29uc3QgcGhyYXNlcyA9IHBhcnNlZC5waHJhc2VzLnNsaWNlKGluZGV4LCBpbmRleCArIGFyZy5saW1pdCk7XG5cdFx0aWYgKCFwaHJhc2VzLmxlbmd0aCkge1xuXHRcdFx0Y29uc3QgcmV0ID0gYXdhaXQgYXJnLnByb2Nlc3MobWVzc2FnZSwgXCJcIik7XG5cdFx0XHRpZiAoYXJnLmluZGV4ICE9PSBudWxsKSB7XG5cdFx0XHRcdEFyZ3VtZW50UnVubmVyLmluY3JlYXNlSW5kZXgocGFyc2VkLCBzdGF0ZSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzID0gW107XG5cdFx0Zm9yIChjb25zdCBwaHJhc2Ugb2YgcGhyYXNlcykge1xuXHRcdFx0Y29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcmcucHJvY2VzcyhtZXNzYWdlLCBwaHJhc2UudmFsdWUpO1xuXG5cdFx0XHRpZiAoRmxhZy5pcyhyZXNwb25zZSwgXCJjYW5jZWxcIikpIHtcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXMucHVzaChyZXNwb25zZSk7XG5cdFx0fVxuXG5cdFx0aWYgKGFyZy5pbmRleCAhPT0gbnVsbCkge1xuXHRcdFx0QXJndW1lbnRSdW5uZXIuaW5jcmVhc2VJbmRleChwYXJzZWQsIHN0YXRlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJ1bnMgYGZsYWdgIG1hdGNoLlxuXHQgKiBAcGFyYW0gbWVzc2FnZSAtIE1lc3NhZ2UgdGhhdCB0cmlnZ2VyZWQgdGhlIGNvbW1hbmQuXG5cdCAqIEBwYXJhbSBwYXJzZWQgLSBQYXJzZWQgZGF0YSBmcm9tIENvbnRlbnRQYXJzZXIuXG5cdCAqIEBwYXJhbSBzdGF0ZSAtIEFyZ3VtZW50IGhhbmRsaW5nIHN0YXRlLlxuXHQgKiBAcGFyYW0gYXJnIC0gQ3VycmVudCBhcmd1bWVudC5cblx0ICovXG5cdHB1YmxpYyBydW5GbGFnKFxuXHRcdG1lc3NhZ2U6IE1lc3NhZ2UsXG5cdFx0cGFyc2VkOiBDb250ZW50UGFyc2VyUmVzdWx0LFxuXHRcdHN0YXRlOiBBcmd1bWVudFJ1bm5lclN0YXRlLFxuXHRcdGFyZzogQXJndW1lbnRcblx0KTogUHJvbWlzZTxGbGFnPiB8IGFueSB7XG5cdFx0Y29uc3QgbmFtZXMgPSBBcnJheS5pc0FycmF5KGFyZy5mbGFnKSA/IGFyZy5mbGFnIDogW2FyZy5mbGFnXTtcblx0XHRpZiAoYXJnLm11bHRpcGxlRmxhZ3MpIHtcblx0XHRcdGNvbnN0IGFtb3VudCA9IHBhcnNlZC5mbGFncy5maWx0ZXIoZmxhZyA9PlxuXHRcdFx0XHRuYW1lcy5zb21lKG5hbWUgPT4gbmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gZmxhZy5rZXkudG9Mb3dlckNhc2UoKSlcblx0XHRcdCkubGVuZ3RoO1xuXG5cdFx0XHRyZXR1cm4gYW1vdW50O1xuXHRcdH1cblxuXHRcdGNvbnN0IGZsYWdGb3VuZCA9IHBhcnNlZC5mbGFncy5zb21lKGZsYWcgPT4gbmFtZXMuc29tZShuYW1lID0+IG5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IGZsYWcua2V5LnRvTG93ZXJDYXNlKCkpKTtcblxuXHRcdHJldHVybiBhcmcuZGVmYXVsdCA9PT0gbnVsbCA/IGZsYWdGb3VuZCA6ICFmbGFnRm91bmQ7XG5cdH1cblxuXHQvKipcblx0ICogUnVucyBgb3B0aW9uYCBtYXRjaC5cblx0ICogQHBhcmFtIG1lc3NhZ2UgLSBNZXNzYWdlIHRoYXQgdHJpZ2dlcmVkIHRoZSBjb21tYW5kLlxuXHQgKiBAcGFyYW0gcGFyc2VkIC0gUGFyc2VkIGRhdGEgZnJvbSBDb250ZW50UGFyc2VyLlxuXHQgKiBAcGFyYW0gc3RhdGUgLSBBcmd1bWVudCBoYW5kbGluZyBzdGF0ZS5cblx0ICogQHBhcmFtIGFyZyAtIEN1cnJlbnQgYXJndW1lbnQuXG5cdCAqL1xuXHRwdWJsaWMgYXN5bmMgcnVuT3B0aW9uKFxuXHRcdG1lc3NhZ2U6IE1lc3NhZ2UsXG5cdFx0cGFyc2VkOiBDb250ZW50UGFyc2VyUmVzdWx0LFxuXHRcdHN0YXRlOiBBcmd1bWVudFJ1bm5lclN0YXRlLFxuXHRcdGFyZzogQXJndW1lbnRcblx0KTogUHJvbWlzZTxGbGFnIHwgYW55PiB7XG5cdFx0Y29uc3QgbmFtZXMgPSBBcnJheS5pc0FycmF5KGFyZy5mbGFnKSA/IGFyZy5mbGFnIDogW2FyZy5mbGFnXTtcblx0XHRpZiAoYXJnLm11bHRpcGxlRmxhZ3MpIHtcblx0XHRcdGNvbnN0IHZhbHVlcyA9IHBhcnNlZC5vcHRpb25GbGFnc1xuXHRcdFx0XHQuZmlsdGVyKGZsYWcgPT4gbmFtZXMuc29tZShuYW1lID0+IG5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IGZsYWcua2V5LnRvTG93ZXJDYXNlKCkpKVxuXHRcdFx0XHQubWFwKHggPT4geC52YWx1ZSlcblx0XHRcdFx0LnNsaWNlKDAsIGFyZy5saW1pdCk7XG5cblx0XHRcdGNvbnN0IHJlcyA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcblx0XHRcdFx0cmVzLnB1c2goYXdhaXQgYXJnLnByb2Nlc3MobWVzc2FnZSwgdmFsdWUpKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHJlcztcblx0XHR9XG5cblx0XHRjb25zdCBmb3VuZEZsYWcgPSBwYXJzZWQub3B0aW9uRmxhZ3MuZmluZChmbGFnID0+XG5cdFx0XHRuYW1lcy5zb21lKG5hbWUgPT4gbmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gZmxhZy5rZXkudG9Mb3dlckNhc2UoKSlcblx0XHQpO1xuXG5cdFx0cmV0dXJuIGFyZy5wcm9jZXNzKG1lc3NhZ2UsIGZvdW5kRmxhZyAhPT0gbnVsbCAmJiBmb3VuZEZsYWcgIT09IHVuZGVmaW5lZCA/IGZvdW5kRmxhZy52YWx1ZSA6IFwiXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJ1bnMgYHRleHRgIG1hdGNoLlxuXHQgKiBAcGFyYW0gbWVzc2FnZSAtIE1lc3NhZ2UgdGhhdCB0cmlnZ2VyZWQgdGhlIGNvbW1hbmQuXG5cdCAqIEBwYXJhbSBwYXJzZWQgLSBQYXJzZWQgZGF0YSBmcm9tIENvbnRlbnRQYXJzZXIuXG5cdCAqIEBwYXJhbSBzdGF0ZSAtIEFyZ3VtZW50IGhhbmRsaW5nIHN0YXRlLlxuXHQgKiBAcGFyYW0gYXJnIC0gQ3VycmVudCBhcmd1bWVudC5cblx0ICovXG5cdHB1YmxpYyBydW5UZXh0KFxuXHRcdG1lc3NhZ2U6IE1lc3NhZ2UsXG5cdFx0cGFyc2VkOiBDb250ZW50UGFyc2VyUmVzdWx0LFxuXHRcdHN0YXRlOiBBcmd1bWVudFJ1bm5lclN0YXRlLFxuXHRcdGFyZzogQXJndW1lbnRcblx0KTogUHJvbWlzZTxGbGFnIHwgYW55PiB7XG5cdFx0Y29uc3QgaW5kZXggPSBhcmcuaW5kZXggPT09IG51bGwgfHwgYXJnLmluZGV4ID09PSB1bmRlZmluZWQgPyAwIDogYXJnLmluZGV4O1xuXHRcdGNvbnN0IHRleHQgPSBwYXJzZWQucGhyYXNlc1xuXHRcdFx0LnNsaWNlKGluZGV4LCBpbmRleCArIGFyZy5saW1pdClcblx0XHRcdC5tYXAoeCA9PiB4LnJhdylcblx0XHRcdC5qb2luKFwiXCIpXG5cdFx0XHQudHJpbSgpO1xuXHRcdHJldHVybiBhcmcucHJvY2VzcyhtZXNzYWdlLCB0ZXh0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSdW5zIGBjb250ZW50YCBtYXRjaC5cblx0ICogQHBhcmFtIG1lc3NhZ2UgLSBNZXNzYWdlIHRoYXQgdHJpZ2dlcmVkIHRoZSBjb21tYW5kLlxuXHQgKiBAcGFyYW0gcGFyc2VkIC0gUGFyc2VkIGRhdGEgZnJvbSBDb250ZW50UGFyc2VyLlxuXHQgKiBAcGFyYW0gc3RhdGUgLSBBcmd1bWVudCBoYW5kbGluZyBzdGF0ZS5cblx0ICogQHBhcmFtIGFyZyAtIEN1cnJlbnQgYXJndW1lbnQuXG5cdCAqL1xuXHRwdWJsaWMgcnVuQ29udGVudChcblx0XHRtZXNzYWdlOiBNZXNzYWdlLFxuXHRcdHBhcnNlZDogQ29udGVudFBhcnNlclJlc3VsdCxcblx0XHRzdGF0ZTogQXJndW1lbnRSdW5uZXJTdGF0ZSxcblx0XHRhcmc6IEFyZ3VtZW50XG5cdCk6IFByb21pc2U8RmxhZyB8IGFueT4ge1xuXHRcdGNvbnN0IGluZGV4ID0gYXJnLmluZGV4ID09PSBudWxsIHx8IGFyZy5pbmRleCA9PT0gdW5kZWZpbmVkID8gMCA6IGFyZy5pbmRleDtcblx0XHRjb25zdCBjb250ZW50ID0gcGFyc2VkLmFsbFxuXHRcdFx0LnNsaWNlKGluZGV4LCBpbmRleCArIGFyZy5saW1pdClcblx0XHRcdC5tYXAoeCA9PiB4LnJhdylcblx0XHRcdC5qb2luKFwiXCIpXG5cdFx0XHQudHJpbSgpO1xuXHRcdHJldHVybiBhcmcucHJvY2VzcyhtZXNzYWdlLCBjb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSdW5zIGByZXN0Q29udGVudGAgbWF0Y2guXG5cdCAqIEBwYXJhbSBtZXNzYWdlIC0gTWVzc2FnZSB0aGF0IHRyaWdnZXJlZCB0aGUgY29tbWFuZC5cblx0ICogQHBhcmFtIHBhcnNlZCAtIFBhcnNlZCBkYXRhIGZyb20gQ29udGVudFBhcnNlci5cblx0ICogQHBhcmFtIHN0YXRlIC0gQXJndW1lbnQgaGFuZGxpbmcgc3RhdGUuXG5cdCAqIEBwYXJhbSBhcmcgLSBDdXJyZW50IGFyZ3VtZW50LlxuXHQgKi9cblx0cHVibGljIGFzeW5jIHJ1blJlc3RDb250ZW50KFxuXHRcdG1lc3NhZ2U6IE1lc3NhZ2UsXG5cdFx0cGFyc2VkOiBDb250ZW50UGFyc2VyUmVzdWx0LFxuXHRcdHN0YXRlOiBBcmd1bWVudFJ1bm5lclN0YXRlLFxuXHRcdGFyZzogQXJndW1lbnRcblx0KTogUHJvbWlzZTxGbGFnIHwgYW55PiB7XG5cdFx0Y29uc3QgaW5kZXggPSBhcmcuaW5kZXggPT09IG51bGwgfHwgYXJnLmluZGV4ID09PSB1bmRlZmluZWQgPyBzdGF0ZS5pbmRleCA6IGFyZy5pbmRleDtcblx0XHRjb25zdCByZXN0ID0gcGFyc2VkLmFsbFxuXHRcdFx0LnNsaWNlKGluZGV4LCBpbmRleCArIGFyZy5saW1pdClcblx0XHRcdC5tYXAoeCA9PiB4LnJhdylcblx0XHRcdC5qb2luKFwiXCIpXG5cdFx0XHQudHJpbSgpO1xuXHRcdGNvbnN0IHJldCA9IGF3YWl0IGFyZy5wcm9jZXNzKG1lc3NhZ2UsIHJlc3QpO1xuXHRcdGlmIChhcmcuaW5kZXggPT09IG51bGwpIHtcblx0XHRcdEFyZ3VtZW50UnVubmVyLmluY3JlYXNlSW5kZXgocGFyc2VkLCBzdGF0ZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJldDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSdW5zIGBub25lYCBtYXRjaC5cblx0ICogQHBhcmFtIG1lc3NhZ2UgLSBNZXNzYWdlIHRoYXQgdHJpZ2dlcmVkIHRoZSBjb21tYW5kLlxuXHQgKiBAcGFyYW0gcGFyc2VkIC0gUGFyc2VkIGRhdGEgZnJvbSBDb250ZW50UGFyc2VyLlxuXHQgKiBAcGFyYW0gc3RhdGUgLSBBcmd1bWVudCBoYW5kbGluZyBzdGF0ZS5cblx0ICogQHBhcmFtIGFyZyAtIEN1cnJlbnQgYXJndW1lbnQuXG5cdCAqL1xuXHRwdWJsaWMgcnVuTm9uZShcblx0XHRtZXNzYWdlOiBNZXNzYWdlLFxuXHRcdHBhcnNlZDogQ29udGVudFBhcnNlclJlc3VsdCxcblx0XHRzdGF0ZTogQXJndW1lbnRSdW5uZXJTdGF0ZSxcblx0XHRhcmc6IEFyZ3VtZW50XG5cdCk6IFByb21pc2U8RmxhZyB8IGFueT4ge1xuXHRcdHJldHVybiBhcmcucHJvY2VzcyhtZXNzYWdlLCBcIlwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBNb2RpZmllcyBzdGF0ZSBieSBpbmNyZW1lbnRpbmcgdGhlIGluZGljZXMuXG5cdCAqIEBwYXJhbSBwYXJzZWQgLSBQYXJzZWQgZGF0YSBmcm9tIENvbnRlbnRQYXJzZXIuXG5cdCAqIEBwYXJhbSBzdGF0ZSAtIEFyZ3VtZW50IGhhbmRsaW5nIHN0YXRlLlxuXHQgKiBAcGFyYW0gbiAtIE51bWJlciBvZiBpbmRpY2VzIHRvIGluY3JlYXNlIGJ5LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpbmNyZWFzZUluZGV4KHBhcnNlZDogQ29udGVudFBhcnNlclJlc3VsdCwgc3RhdGU6IEFyZ3VtZW50UnVubmVyU3RhdGUsIG4gPSAxKTogdm9pZCB7XG5cdFx0c3RhdGUucGhyYXNlSW5kZXggKz0gbjtcblx0XHR3aGlsZSAobiA+IDApIHtcblx0XHRcdGRvIHtcblx0XHRcdFx0c3RhdGUuaW5kZXgrKztcblx0XHRcdH0gd2hpbGUgKHBhcnNlZC5hbGxbc3RhdGUuaW5kZXhdICYmIHBhcnNlZC5hbGxbc3RhdGUuaW5kZXhdLnR5cGUgIT09IFwiUGhyYXNlXCIpO1xuXHRcdFx0bi0tO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgc29tZXRoaW5nIGlzIGEgZmxhZyB0aGF0IHNob3J0IGNpcmN1aXRzLlxuXHQgKiBAcGFyYW0gdmFsdWUgLSBBIHZhbHVlLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc1Nob3J0Q2lyY3VpdCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIEZsYWcuaXModmFsdWUsIFwiY2FuY2VsXCIpIHx8IEZsYWcuaXModmFsdWUsIFwicmV0cnlcIikgfHwgRmxhZy5pcyh2YWx1ZSwgXCJjb250aW51ZVwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGFyZ3VtZW50IGdlbmVyYXRvciBmcm9tIGFyZ3VtZW50IG9wdGlvbnMuXG5cdCAqIEBwYXJhbSBhcmdzIC0gQXJndW1lbnQgb3B0aW9ucy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZnJvbUFyZ3VtZW50cyhhcmdzOiBbaWQ6IHN0cmluZywgYXJndW1lbnQ6IEFyZ3VtZW50XVtdKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uKiBnZW5lcmF0ZSgpOiBHZW5lcmF0b3I8QXJndW1lbnQsIHsgW3g6IHN0cmluZ106IGFueSB9LCBBcmd1bWVudD4ge1xuXHRcdFx0Y29uc3QgcmVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG5cdFx0XHRmb3IgKGNvbnN0IFtpZCwgYXJnXSBvZiBhcmdzKSB7XG5cdFx0XHRcdHJlc1tpZF0gPSB5aWVsZCBhcmc7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiByZXM7XG5cdFx0fTtcblx0fVxufVxuXG4vKipcbiAqIFN0YXRlIGZvciB0aGUgYXJndW1lbnQgcnVubmVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFyZ3VtZW50UnVubmVyU3RhdGUge1xuXHQvKiogSW5kZXggaW4gdGVybXMgb2YgdGhlIHJhdyBzdHJpbmdzLiAqL1xuXHRpbmRleDogbnVtYmVyO1xuXG5cdC8qKiBJbmRleCBpbiB0ZXJtcyBvZiBwaHJhc2VzLiAqL1xuXHRwaHJhc2VJbmRleDogbnVtYmVyO1xuXG5cdC8qKiBJbmRpY2VzIGFscmVhZHkgdXNlZCBmb3IgdW5vcmRlcmVkIG1hdGNoLiAqL1xuXHR1c2VkSW5kaWNlczogU2V0PG51bWJlcj47XG59XG4iXX0=

@@ -133,3 +133,3 @@ "use strict";

runQuote() {
if (this.separator == null && this.quoted && this.startsWith('"')) {
if (this.separator === null && this.quoted && this.startsWith('"')) {
if (this.state === 1) {

@@ -148,3 +148,3 @@ this.state = 0;

runOpenQuote() {
if (this.separator == null && this.quoted && this.startsWith('"')) {
if (this.separator === null && this.quoted && this.startsWith('"')) {
if (this.state === 0) {

@@ -160,3 +160,3 @@ this.state = 2;

runEndQuote() {
if (this.separator == null && this.quoted && this.startsWith("”")) {
if (this.separator === null && this.quoted && this.startsWith("”")) {
if (this.state === 2) {

@@ -172,3 +172,3 @@ this.state = 0;

runSeparator() {
if (this.separator != null && this.startsWith(this.separator)) {
if (this.separator !== null && this.separator !== undefined && this.startsWith(this.separator)) {
this.addToken("Separator", this.slice(0, this.separator.length));

@@ -241,3 +241,3 @@ this.advance(this.separator.length);

lookaheadN(n, ...types) {
return this.tokens[this.position + n] != null && types.includes(this.tokens[this.position + n].type);
return this.tokens[this.position + n] !== null && types.includes(this.tokens[this.position + n].type);
}

@@ -300,7 +300,7 @@ lookahead(...types) {

const ws = this.lookahead("WS") ? this.match("WS") : null;
if (ws != null) {
if (ws !== null) {
parsed.raw += ws.value;
}
const phrase = this.lookahead("Quote", "OpenQuote", "EndQuote", "Word") ? this.parsePhrase() : null;
if (phrase != null) {
if (phrase !== null) {
parsed.value = phrase.value;

@@ -323,3 +323,3 @@ parsed.raw += phrase.raw;

const endQuote = this.lookahead("Quote") ? this.match("Quote") : null;
if (endQuote != null) {
if (endQuote !== null) {
parsed.raw += endQuote.value;

@@ -344,3 +344,3 @@ }

const endQuote = this.lookahead("EndQuote") ? this.match("EndQuote") : null;
if (endQuote != null) {
if (endQuote !== null) {
parsed.raw += endQuote.value;

@@ -416,3 +416,3 @@ }

}).tokenize();
return new Parser(tokens, { separated: this.separator != null }).parse();
return new Parser(tokens, { separated: this.separator !== null }).parse();
}

@@ -443,2 +443,2 @@ /**

exports.default = ContentParser;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudFBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdHJ1Y3QvY29tbWFuZHMvQ29udGVudFBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG9EQUF1RDtBQUd2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbURHO0FBRUgsTUFBTSxTQUFTO0lBQ2QsWUFDQyxPQUFlLEVBQ2YsRUFBRSxTQUFTLEdBQUcsRUFBRSxFQUFFLGVBQWUsR0FBRyxFQUFFLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxTQUFTLEtBQTJCLEVBQUU7UUFFN0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsMkRBQTJEO1FBQzNELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVNLE9BQU8sQ0FBUztJQUNoQixTQUFTLENBQVc7SUFDcEIsZUFBZSxDQUFXO0lBQzFCLE1BQU0sQ0FBVTtJQUNoQixTQUFTLENBQVU7SUFDbkIsUUFBUSxDQUFTO0lBQ2pCLEtBQUssQ0FBUztJQUNkLE1BQU0sQ0FBUTtJQUVkLFVBQVUsQ0FBQyxHQUFXO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFX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N0MsTUFBTSxHQUFHLEdBQUc7WUFDWCxTQUFTLEVBQUUsRUFBRTtZQUNiLGVBQWUsRUFBRSxFQUFFO1NBQ25CLENBQUM7UUFFRixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUN2QixNQUFNLEdBQUcsR0FBZ0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssMkJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNuRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssMkJBQWUsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSywyQkFBZSxDQUFDLE1BQU0sRUFBRTtnQkFDL0UsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDNUIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDdEI7cUJBQU07b0JBQ04sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ25CO2FBQ0Q7U0FDRDtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQztDQUNEO0FBdEVELGdDQXNFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyZ3VtZW50TWF0Y2hlcyB9IGZyb20gXCIuLi8uLi91dGlsL0NvbnN0YW50c1wiO1xuaW1wb3J0IHsgQXJndW1lbnRPcHRpb25zIH0gZnJvbSBcIi4vYXJndW1lbnRzL0FyZ3VtZW50XCI7XG5cbi8qXG4gKiBHcmFtbWFyOlxuICpcbiAqIEFyZ3VtZW50c1xuICogID0gKEFyZ3VtZW50IChXUz8gQXJndW1lbnQpKik/IEVPRlxuICpcbiAqIEFyZ3VtZW50XG4gKiAgPSBGbGFnXG4gKiAgfCBQaHJhc2VcbiAqXG4gKiBGbGFnXG4gKiAgPSBGbGFnV29yZFxuICogIHwgT3B0aW9uRmxhZ1dvcmQgV1M/IFBocmFzZT9cbiAqXG4gKiBQaHJhc2VcbiAqICA9IFF1b3RlIChXb3JkIHwgV1MpKiBRdW90ZT9cbiAqICB8IE9wZW5RdW90ZSAoV29yZCB8IE9wZW5RdW90ZSB8IFF1b3RlIHwgV1MpKiBFbmRRdW90ZT9cbiAqICB8IEVuZFF1b3RlXG4gKiAgfCBXb3JkXG4gKlxuICogRmxhZ1dvcmQgPSBHaXZlblxuICogT3B0aW9uRmxhZ1dvcmQgPSBHaXZlblxuICogUXVvdGUgPSBcIlxuICogT3BlblF1b3RlID0g4oCcXG4gKiBFbmRRdW90ZSA9IOKAnVxuICogV29yZCA9IC9eXFxTKy8gKGFuZCBub3QgaW4gRmxhZ1dvcmQgb3IgT3B0aW9uRmxhZ1dvcmQpXG4gKiBXUyA9IC9eXFxzKy9cbiAqIEVPRiA9IC9eJC9cbiAqXG4gKiBXaXRoIGEgc2VwYXJhdG9yOlxuICpcbiAqIEFyZ3VtZW50c1xuICogID0gKEFyZ3VtZW50IChXUz8gU2VwYXJhdG9yIFdTPyBBcmd1bWVudCkqKT8gRU9GXG4gKlxuICogQXJndW1lbnRcbiAqICA9IEZsYWdcbiAqICB8IFBocmFzZVxuICpcbiAqIEZsYWdcbiAqICA9IEZsYWdXb3JkXG4gKiAgfCBPcHRpb25GbGFnV29yZCBXUz8gUGhyYXNlP1xuICpcbiAqIFBocmFzZVxuICogID0gV29yZCAoV1MgV29yZCkqXG4gKlxuICogRmxhZ1dvcmQgPSBHaXZlblxuICogT3B0aW9uRmxhZ1dvcmQgPSBHaXZlblxuICogU2VwYXJhdG9yID0gR2l2ZW5cbiAqIFdvcmQgPSAvXlxcUysvIChhbmQgbm90IGluIEZsYWdXb3JkIG9yIE9wdGlvbkZsYWdXb3JkIG9yIGVxdWFsIHRvIFNlcGFyYXRvcilcbiAqIFdTID0gL15cXHMrL1xuICogRU9GID0gL14kL1xuICovXG5cbmNsYXNzIFRva2VuaXplciB7XG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihcblx0XHRjb250ZW50OiBzdHJpbmcsXG5cdFx0eyBmbGFnV29yZHMgPSBbXSwgb3B0aW9uRmxhZ1dvcmRzID0gW10sIHF1b3RlZCA9IHRydWUsIHNlcGFyYXRvciB9OiBDb250ZW50UGFyc2VyT3B0aW9ucyA9IHt9XG5cdCkge1xuXHRcdHRoaXMuY29udGVudCA9IGNvbnRlbnQ7XG5cdFx0dGhpcy5mbGFnV29yZHMgPSBmbGFnV29yZHM7XG5cdFx0dGhpcy5vcHRpb25GbGFnV29yZHMgPSBvcHRpb25GbGFnV29yZHM7XG5cdFx0dGhpcy5xdW90ZWQgPSBxdW90ZWQ7XG5cdFx0dGhpcy5zZXBhcmF0b3IgPSBzZXBhcmF0b3I7XG5cdFx0dGhpcy5wb3NpdGlvbiA9IDA7XG5cdFx0Ly8gMCAtPiBEZWZhdWx0LCAxIC0+IFF1b3RlcyAoXCJcIiksIDIgLT4gU3BlY2lhbCBRdW90ZXMgKOKAnOKAnSlcblx0XHR0aGlzLnN0YXRlID0gMDtcblx0XHR0aGlzLnRva2VucyA9IFtdO1xuXHR9XG5cblx0cHVibGljIGNvbnRlbnQ6IHN0cmluZztcblx0cHVibGljIGZsYWdXb3Jkczogc3RyaW5nW107XG5cdHB1YmxpYyBvcHRpb25GbGFnV29yZHM6IHN0cmluZ1tdO1xuXHRwdWJsaWMgcXVvdGVkOiBib29sZWFuO1xuXHRwdWJsaWMgc2VwYXJhdG9yPzogc3RyaW5nO1xuXHRwdWJsaWMgcG9zaXRpb246IG51bWJlcjtcblx0cHVibGljIHN0YXRlOiBudW1iZXI7XG5cdHB1YmxpYyB0b2tlbnM6IGFueVtdO1xuXG5cdHB1YmxpYyBzdGFydHNXaXRoKHN0cjogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudC5zbGljZSh0aGlzLnBvc2l0aW9uLCB0aGlzLnBvc2l0aW9uICsgc3RyLmxlbmd0aCkudG9Mb3dlckNhc2UoKSA9PT0gc3RyLnRvTG93ZXJDYXNlKCk7XG5cdH1cblxuXHRwdWJsaWMgbWF0Y2gocmVnZXg6IFJlZ0V4cCkge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQuc2xpY2UodGhpcy5wb3NpdGlvbikubWF0Y2gocmVnZXgpO1xuXHR9XG5cblx0cHVibGljIHNsaWNlKGZyb206IG51bWJlciwgdG86IG51bWJlcikge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQuc2xpY2UodGhpcy5wb3NpdGlvbiArIGZyb20sIHRoaXMucG9zaXRpb24gKyB0byk7XG5cdH1cblxuXHRwdWJsaWMgYWRkVG9rZW4odHlwZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG5cdFx0dGhpcy50b2tlbnMucHVzaCh7IHR5cGUsIHZhbHVlIH0pO1xuXHR9XG5cblx0cHVibGljIGFkdmFuY2UobjogbnVtYmVyKSB7XG5cdFx0dGhpcy5wb3NpdGlvbiArPSBuO1xuXHR9XG5cblx0cHVibGljIGNob2ljZSguLi5hY3Rpb25zOiB7ICgpOiBib29sZWFuIH1bXSkge1xuXHRcdGZvciAoY29uc3QgYWN0aW9uIG9mIGFjdGlvbnMpIHtcblx0XHRcdGlmIChhY3Rpb24uY2FsbCh0aGlzKSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIHRva2VuaXplKCkge1xuXHRcdHdoaWxlICh0aGlzLnBvc2l0aW9uIDwgdGhpcy5jb250ZW50Lmxlbmd0aCkge1xuXHRcdFx0dGhpcy5ydW5PbmUoKTtcblx0XHR9XG5cblx0XHR0aGlzLmFkZFRva2VuKFwiRU9GXCIsIFwiXCIpO1xuXHRcdHJldHVybiB0aGlzLnRva2Vucztcblx0fVxuXG5cdHB1YmxpYyBydW5PbmUoKSB7XG5cdFx0dGhpcy5jaG9pY2UoXG5cdFx0XHR0aGlzLnJ1bldoaXRlc3BhY2UsXG5cdFx0XHR0aGlzLnJ1bkZsYWdzLFxuXHRcdFx0dGhpcy5ydW5PcHRpb25GbGFncyxcblx0XHRcdHRoaXMucnVuUXVvdGUsXG5cdFx0XHR0aGlzLnJ1bk9wZW5RdW90ZSxcblx0XHRcdHRoaXMucnVuRW5kUXVvdGUsXG5cdFx0XHR0aGlzLnJ1blNlcGFyYXRvcixcblx0XHRcdHRoaXMucnVuV29yZFxuXHRcdCk7XG5cdH1cblxuXHRwdWJsaWMgcnVuRmxhZ3MoKSB7XG5cdFx0aWYgKHRoaXMuc3RhdGUgPT09IDApIHtcblx0XHRcdGZvciAoY29uc3Qgd29yZCBvZiB0aGlzLmZsYWdXb3Jkcykge1xuXHRcdFx0XHRpZiAodGhpcy5zdGFydHNXaXRoKHdvcmQpKSB7XG5cdFx0XHRcdFx0dGhpcy5hZGRUb2tlbihcIkZsYWdXb3JkXCIsIHRoaXMuc2xpY2UoMCwgd29yZC5sZW5ndGgpKTtcblx0XHRcdFx0XHR0aGlzLmFkdmFuY2Uod29yZC5sZW5ndGgpO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHVibGljIHJ1bk9wdGlvbkZsYWdzKCkge1xuXHRcdGlmICh0aGlzLnN0YXRlID09PSAwKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHdvcmQgb2YgdGhpcy5vcHRpb25GbGFnV29yZHMpIHtcblx0XHRcdFx0aWYgKHRoaXMuc3RhcnRzV2l0aCh3b3JkKSkge1xuXHRcdFx0XHRcdHRoaXMuYWRkVG9rZW4oXCJPcHRpb25GbGFnV29yZFwiLCB0aGlzLnNsaWNlKDAsIHdvcmQubGVuZ3RoKSk7XG5cdFx0XHRcdFx0dGhpcy5hZHZhbmNlKHdvcmQubGVuZ3RoKTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHB1YmxpYyBydW5RdW90ZSgpIHtcblx0XHRpZiAodGhpcy5zZXBhcmF0b3IgPT0gbnVsbCAmJiB0aGlzLnF1b3RlZCAmJiB0aGlzLnN0YXJ0c1dpdGgoJ1wiJykpIHtcblx0XHRcdGlmICh0aGlzLnN0YXRlID09PSAxKSB7XG5cdFx0XHRcdHRoaXMuc3RhdGUgPSAwO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnN0YXRlID09PSAwKSB7XG5cdFx0XHRcdHRoaXMuc3RhdGUgPSAxO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmFkZFRva2VuKFwiUXVvdGVcIiwgJ1wiJyk7XG5cdFx0XHR0aGlzLmFkdmFuY2UoMSk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgcnVuT3BlblF1b3RlKCkge1xuXHRcdGlmICh0aGlzLnNlcGFyYXRvciA9PSBudWxsICYmIHRoaXMucXVvdGVkICYmIHRoaXMuc3RhcnRzV2l0aCgnXCInKSkge1xuXHRcdFx0aWYgKHRoaXMuc3RhdGUgPT09IDApIHtcblx0XHRcdFx0dGhpcy5zdGF0ZSA9IDI7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYWRkVG9rZW4oXCJPcGVuUXVvdGVcIiwgJ1wiJyk7XG5cdFx0XHR0aGlzLmFkdmFuY2UoMSk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgcnVuRW5kUXVvdGUoKSB7XG5cdFx0aWYgKHRoaXMuc2VwYXJhdG9yID09IG51bGwgJiYgdGhpcy5xdW90ZWQgJiYgdGhpcy5zdGFydHNXaXRoKFwi4oCdXCIpKSB7XG5cdFx0XHRpZiAodGhpcy5zdGF0ZSA9PT0gMikge1xuXHRcdFx0XHR0aGlzLnN0YXRlID0gMDtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5hZGRUb2tlbihcIkVuZFF1b3RlXCIsIFwi4oCdXCIpO1xuXHRcdFx0dGhpcy5hZHZhbmNlKDEpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHVibGljIHJ1blNlcGFyYXRvcigpIHtcblx0XHRpZiAodGhpcy5zZXBhcmF0b3IgIT0gbnVsbCAmJiB0aGlzLnN0YXJ0c1dpdGgodGhpcy5zZXBhcmF0b3IpKSB7XG5cdFx0XHR0aGlzLmFkZFRva2VuKFwiU2VwYXJhdG9yXCIsIHRoaXMuc2xpY2UoMCwgdGhpcy5zZXBhcmF0b3IubGVuZ3RoKSk7XG5cdFx0XHR0aGlzLmFkdmFuY2UodGhpcy5zZXBhcmF0b3IubGVuZ3RoKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHB1YmxpYyBydW5Xb3JkKCkge1xuXHRcdGNvbnN0IHdvcmRSZWdleCA9IHRoaXMuc3RhdGUgPT09IDAgPyAvXlxcUysvIDogdGhpcy5zdGF0ZSA9PT0gMSA/IC9eW15cXHNcIl0rLyA6IC9eW15cXHPigJ1dKy87XG5cblx0XHRjb25zdCB3b3JkTWF0Y2ggPSB0aGlzLm1hdGNoKHdvcmRSZWdleCk7XG5cdFx0aWYgKHdvcmRNYXRjaCkge1xuXHRcdFx0aWYgKHRoaXMuc2VwYXJhdG9yKSB7XG5cdFx0XHRcdGlmICh3b3JkTWF0Y2hbMF0udG9Mb3dlckNhc2UoKSA9PT0gdGhpcy5zZXBhcmF0b3IudG9Mb3dlckNhc2UoKSkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGluZGV4ID0gd29yZE1hdGNoWzBdLmluZGV4T2YodGhpcy5zZXBhcmF0b3IpO1xuXHRcdFx0XHRpZiAoaW5kZXggPT09IC0xKSB7XG5cdFx0XHRcdFx0dGhpcy5hZGRUb2tlbihcIldvcmRcIiwgd29yZE1hdGNoWzBdKTtcblx0XHRcdFx0XHR0aGlzLmFkdmFuY2Uod29yZE1hdGNoWzBdLmxlbmd0aCk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBhY3R1YWwgPSB3b3JkTWF0Y2hbMF0uc2xpY2UoMCwgaW5kZXgpO1xuXHRcdFx0XHR0aGlzLmFkZFRva2VuKFwiV29yZFwiLCBhY3R1YWwpO1xuXHRcdFx0XHR0aGlzLmFkdmFuY2UoYWN0dWFsLmxlbmd0aCk7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmFkZFRva2VuKFwiV29yZFwiLCB3b3JkTWF0Y2hbMF0pO1xuXHRcdFx0dGhpcy5hZHZhbmNlKHdvcmRNYXRjaFswXS5sZW5ndGgpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0cHVibGljIHJ1bldoaXRlc3BhY2UoKSB7XG5cdFx0Y29uc3Qgd3NNYXRjaCA9IHRoaXMubWF0Y2goL15cXHMrLyk7XG5cdFx0aWYgKHdzTWF0Y2gpIHtcblx0XHRcdHRoaXMuYWRkVG9rZW4oXCJXU1wiLCB3c01hdGNoWzBdKTtcblx0XHRcdHRoaXMuYWR2YW5jZSh3c01hdGNoWzBdLmxlbmd0aCk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxuY2xhc3MgUGFyc2VyIHtcblx0cHVibGljIGNvbnN0cnVjdG9yKHRva2VuczogYW55W10sIHsgc2VwYXJhdGVkIH06IHsgc2VwYXJhdGVkOiBib29sZWFuIH0pIHtcblx0XHR0aGlzLnRva2VucyA9IHRva2Vucztcblx0XHR0aGlzLnNlcGFyYXRlZCA9IHNlcGFyYXRlZDtcblx0XHR0aGlzLnBvc2l0aW9uID0gMDtcblxuXHRcdHRoaXMucmVzdWx0cyA9IHtcblx0XHRcdGFsbDogW10sXG5cdFx0XHRwaHJhc2VzOiBbXSxcblx0XHRcdGZsYWdzOiBbXSxcblx0XHRcdG9wdGlvbkZsYWdzOiBbXVxuXHRcdH07XG5cdH1cblxuXHRwdWJsaWMgdG9rZW5zOiBhbnk7XG5cdHB1YmxpYyBzZXBhcmF0ZWQ6IGFueTtcblx0cHVibGljIHBvc2l0aW9uOiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIFBocmFzZXMgYXJlIGB7IHR5cGU6ICdQaHJhc2UnLCB2YWx1ZSwgcmF3IH1gLlxuXHQgKiBGbGFncyBhcmUgYHsgdHlwZTogJ0ZsYWcnLCBrZXksIHJhdyB9YC5cblx0ICogT3B0aW9uIGZsYWdzIGFyZSBgeyB0eXBlOiAnT3B0aW9uRmxhZycsIGtleSwgdmFsdWUsIHJhdyB9YC5cblx0ICogVGhlIGBhbGxgIHByb3BlcnR5IGlzIHBhcnRpdGlvbmVkIGludG8gYHBocmFzZXNgLCBgZmxhZ3NgLCBhbmQgYG9wdGlvbkZsYWdzYC5cblx0ICovXG5cdHB1YmxpYyByZXN1bHRzOiB7XG5cdFx0YWxsOiBhbnlbXTtcblx0XHRwaHJhc2VzOiBhbnlbXTtcblx0XHRmbGFnczogYW55W107XG5cdFx0b3B0aW9uRmxhZ3M6IGFueVtdO1xuXHR9O1xuXG5cdHB1YmxpYyBuZXh0KCkge1xuXHRcdHRoaXMucG9zaXRpb24rKztcblx0fVxuXG5cdHB1YmxpYyBsb29rYWhlYWROKG46IG51bWJlciwgLi4udHlwZXM6IHN0cmluZ1tdKSB7XG5cdFx0cmV0dXJuIHRoaXMudG9rZW5zW3RoaXMucG9zaXRpb24gKyBuXSAhPSBudWxsICYmIHR5cGVzLmluY2x1ZGVzKHRoaXMudG9rZW5zW3RoaXMucG9zaXRpb24gKyBuXS50eXBlKTtcblx0fVxuXG5cdHB1YmxpYyBsb29rYWhlYWQoLi4udHlwZXM6IHN0cmluZ1tdKSB7XG5cdFx0cmV0dXJuIHRoaXMubG9va2FoZWFkTigwLCAuLi50eXBlcyk7XG5cdH1cblxuXHRwdWJsaWMgbWF0Y2goLi4udHlwZXM6IHN0cmluZ1tdKSB7XG5cdFx0aWYgKHRoaXMubG9va2FoZWFkKC4uLnR5cGVzKSkge1xuXHRcdFx0dGhpcy5uZXh0KCk7XG5cdFx0XHRyZXR1cm4gdGhpcy50b2tlbnNbdGhpcy5wb3NpdGlvbiAtIDFdO1xuXHRcdH1cblxuXHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdGBVbmV4cGVjdGVkIHRva2VuICR7dGhpcy50b2tlbnNbdGhpcy5wb3NpdGlvbl0udmFsdWV9IG9mIHR5cGUgJHtcblx0XHRcdFx0dGhpcy50b2tlbnNbdGhpcy5wb3NpdGlvbl0udHlwZVxuXHRcdFx0fSAodGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuKWBcblx0XHQpO1xuXHR9XG5cblx0cHVibGljIHBhcnNlKCkge1xuXHRcdC8vIC0xIGZvciBFT0YuXG5cdFx0d2hpbGUgKHRoaXMucG9zaXRpb24gPCB0aGlzLnRva2Vucy5sZW5ndGggLSAxKSB7XG5cdFx0XHR0aGlzLnJ1bkFyZ3VtZW50KCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5tYXRjaChcIkVPRlwiKTtcblx0XHRyZXR1cm4gdGhpcy5yZXN1bHRzO1xuXHR9XG5cblx0cHVibGljIHJ1bkFyZ3VtZW50KCkge1xuXHRcdGNvbnN0IGxlYWRpbmcgPSB0aGlzLmxvb2thaGVhZChcIldTXCIpID8gdGhpcy5tYXRjaChcIldTXCIpLnZhbHVlIDogXCJcIjtcblx0XHRpZiAodGhpcy5sb29rYWhlYWQoXCJGbGFnV29yZFwiLCBcIk9wdGlvbkZsYWdXb3JkXCIpKSB7XG5cdFx0XHRjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlRmxhZygpO1xuXHRcdFx0Y29uc3QgdHJhaWxpbmcgPSB0aGlzLmxvb2thaGVhZChcIldTXCIpID8gdGhpcy5tYXRjaChcIldTXCIpLnZhbHVlIDogXCJcIjtcblx0XHRcdGNvbnN0IHNlcGFyYXRvciA9IHRoaXMubG9va2FoZWFkKFwiU2VwYXJhdG9yXCIpID8gdGhpcy5tYXRjaChcIlNlcGFyYXRvclwiKS52YWx1ZSA6IFwiXCI7XG5cdFx0XHRwYXJzZWQucmF3ID0gYCR7bGVhZGluZ30ke3BhcnNlZC5yYXd9JHt0cmFpbGluZ30ke3NlcGFyYXRvcn1gO1xuXHRcdFx0dGhpcy5yZXN1bHRzLmFsbC5wdXNoKHBhcnNlZCk7XG5cdFx0XHRpZiAocGFyc2VkLnR5cGUgPT09IFwiRmxhZ1wiKSB7XG5cdFx0XHRcdHRoaXMucmVzdWx0cy5mbGFncy5wdXNoKHBhcnNlZCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnJlc3VsdHMub3B0aW9uRmxhZ3MucHVzaChwYXJzZWQpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZVBocmFzZSgpO1xuXHRcdGNvbnN0IHRyYWlsaW5nID0gdGhpcy5sb29rYWhlYWQoXCJXU1wiKSA/IHRoaXMubWF0Y2goXCJXU1wiKS52YWx1ZSA6IFwiXCI7XG5cdFx0Y29uc3Qgc2VwYXJhdG9yID0gdGhpcy5sb29rYWhlYWQoXCJTZXBhcmF0b3JcIikgPyB0aGlzLm1hdGNoKFwiU2VwYXJhdG9yXCIpLnZhbHVlIDogXCJcIjtcblx0XHRwYXJzZWQucmF3ID0gYCR7bGVhZGluZ30ke3BhcnNlZC5yYXd9JHt0cmFpbGluZ30ke3NlcGFyYXRvcn1gO1xuXHRcdHRoaXMucmVzdWx0cy5hbGwucHVzaChwYXJzZWQpO1xuXHRcdHRoaXMucmVzdWx0cy5waHJhc2VzLnB1c2gocGFyc2VkKTtcblx0fVxuXG5cdHB1YmxpYyBwYXJzZUZsYWcoKSB7XG5cdFx0aWYgKHRoaXMubG9va2FoZWFkKFwiRmxhZ1dvcmRcIikpIHtcblx0XHRcdGNvbnN0IGZsYWcgPSB0aGlzLm1hdGNoKFwiRmxhZ1dvcmRcIik7XG5cdFx0XHRjb25zdCBwYXJzZWQgPSB7IHR5cGU6IFwiRmxhZ1wiLCBrZXk6IGZsYWcudmFsdWUsIHJhdzogZmxhZy52YWx1ZSB9O1xuXHRcdFx0cmV0dXJuIHBhcnNlZDtcblx0XHR9XG5cblx0XHQvLyBPdGhlcndpc2UsIGB0aGlzLmxvb2thaGVhZCgnT3B0aW9uRmxhZ1dvcmQnKWAgc2hvdWxkIGJlIHRydWUuXG5cdFx0Y29uc3QgZmxhZyA9IHRoaXMubWF0Y2goXCJPcHRpb25GbGFnV29yZFwiKTtcblx0XHRjb25zdCBwYXJzZWQgPSB7XG5cdFx0XHR0eXBlOiBcIk9wdGlvbkZsYWdcIixcblx0XHRcdGtleTogZmxhZy52YWx1ZSxcblx0XHRcdHZhbHVlOiBcIlwiLFxuXHRcdFx0cmF3OiBmbGFnLnZhbHVlXG5cdFx0fTtcblx0XHRjb25zdCB3cyA9IHRoaXMubG9va2FoZWFkKFwiV1NcIikgPyB0aGlzLm1hdGNoKFwiV1NcIikgOiBudWxsO1xuXHRcdGlmICh3cyAhPSBudWxsKSB7XG5cdFx0XHRwYXJzZWQucmF3ICs9IHdzLnZhbHVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IHBocmFzZSA9IHRoaXMubG9va2FoZWFkKFwiUXVvdGVcIiwgXCJPcGVuUXVvdGVcIiwgXCJFbmRRdW90ZVwiLCBcIldvcmRcIikgPyB0aGlzLnBhcnNlUGhyYXNlKCkgOiBudWxsO1xuXG5cdFx0aWYgKHBocmFzZSAhPSBudWxsKSB7XG5cdFx0XHRwYXJzZWQudmFsdWUgPSBwaHJhc2UudmFsdWU7XG5cdFx0XHRwYXJzZWQucmF3ICs9IHBocmFzZS5yYXc7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHBhcnNlZDtcblx0fVxuXG5cdHB1YmxpYyBwYXJzZVBocmFzZSgpIHtcblx0XHRpZiAoIXRoaXMuc2VwYXJhdGVkKSB7XG5cdFx0XHRpZiAodGhpcy5sb29rYWhlYWQoXCJRdW90ZVwiKSkge1xuXHRcdFx0XHRjb25zdCBwYXJzZWQgPSB7IHR5cGU6IFwiUGhyYXNlXCIsIHZhbHVlOiBcIlwiLCByYXc6IFwiXCIgfTtcblx0XHRcdFx0Y29uc3Qgb3BlblF1b3RlID0gdGhpcy5tYXRjaChcIlF1b3RlXCIpO1xuXHRcdFx0XHRwYXJzZWQucmF3ICs9IG9wZW5RdW90ZS52YWx1ZTtcblx0XHRcdFx0d2hpbGUgKHRoaXMubG9va2FoZWFkKFwiV29yZFwiLCBcIldTXCIpKSB7XG5cdFx0XHRcdFx0Y29uc3QgbWF0Y2ggPSB0aGlzLm1hdGNoKFwiV29yZFwiLCBcIldTXCIpO1xuXHRcdFx0XHRcdHBhcnNlZC52YWx1ZSArPSBtYXRjaC52YWx1ZTtcblx0XHRcdFx0XHRwYXJzZWQucmF3ICs9IG1hdGNoLnZhbHVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgZW5kUXVvdGUgPSB0aGlzLmxvb2thaGVhZChcIlF1b3RlXCIpID8gdGhpcy5tYXRjaChcIlF1b3RlXCIpIDogbnVsbDtcblx0XHRcdFx0aWYgKGVuZFF1b3RlICE9IG51bGwpIHtcblx0XHRcdFx0XHRwYXJzZWQucmF3ICs9IGVuZFF1b3RlLnZhbHVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHBhcnNlZDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoaXMubG9va2FoZWFkKFwiT3BlblF1b3RlXCIpKSB7XG5cdFx0XHRcdGNvbnN0IHBhcnNlZCA9IHsgdHlwZTogXCJQaHJhc2VcIiwgdmFsdWU6IFwiXCIsIHJhdzogXCJcIiB9O1xuXHRcdFx0XHRjb25zdCBvcGVuUXVvdGUgPSB0aGlzLm1hdGNoKFwiT3BlblF1b3RlXCIpO1xuXHRcdFx0XHRwYXJzZWQucmF3ICs9IG9wZW5RdW90ZS52YWx1ZTtcblx0XHRcdFx0d2hpbGUgKHRoaXMubG9va2FoZWFkKFwiV29yZFwiLCBcIldTXCIpKSB7XG5cdFx0XHRcdFx0Y29uc3QgbWF0Y2ggPSB0aGlzLm1hdGNoKFwiV29yZFwiLCBcIldTXCIpO1xuXHRcdFx0XHRcdGlmIChtYXRjaC50eXBlID09PSBcIldvcmRcIikge1xuXHRcdFx0XHRcdFx0cGFyc2VkLnZhbHVlICs9IG1hdGNoLnZhbHVlO1xuXHRcdFx0XHRcdFx0cGFyc2VkLnJhdyArPSBtYXRjaC52YWx1ZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cGFyc2VkLnJhdyArPSBtYXRjaC52YWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBlbmRRdW90ZSA9IHRoaXMubG9va2FoZWFkKFwiRW5kUXVvdGVcIikgPyB0aGlzLm1hdGNoKFwiRW5kUXVvdGVcIikgOiBudWxsO1xuXHRcdFx0XHRpZiAoZW5kUXVvdGUgIT0gbnVsbCkge1xuXHRcdFx0XHRcdHBhcnNlZC5yYXcgKz0gZW5kUXVvdGUudmFsdWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gcGFyc2VkO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5sb29rYWhlYWQoXCJFbmRRdW90ZVwiKSkge1xuXHRcdFx0XHRjb25zdCBlbmRRdW90ZSA9IHRoaXMubWF0Y2goXCJFbmRRdW90ZVwiKTtcblx0XHRcdFx0Y29uc3QgcGFyc2VkID0ge1xuXHRcdFx0XHRcdHR5cGU6IFwiUGhyYXNlXCIsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZFF1b3RlLnZhbHVlLFxuXHRcdFx0XHRcdHJhdzogZW5kUXVvdGUudmFsdWVcblx0XHRcdFx0fTtcblx0XHRcdFx0cmV0dXJuIHBhcnNlZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5zZXBhcmF0ZWQpIHtcblx0XHRcdGNvbnN0IGluaXQgPSB0aGlzLm1hdGNoKFwiV29yZFwiKTtcblx0XHRcdGNvbnN0IHBhcnNlZCA9IHsgdHlwZTogXCJQaHJhc2VcIiwgdmFsdWU6IGluaXQudmFsdWUsIHJhdzogaW5pdC52YWx1ZSB9O1xuXHRcdFx0d2hpbGUgKHRoaXMubG9va2FoZWFkKFwiV1NcIikgJiYgdGhpcy5sb29rYWhlYWROKDEsIFwiV29yZFwiKSkge1xuXHRcdFx0XHRjb25zdCB3cyA9IHRoaXMubWF0Y2goXCJXU1wiKTtcblx0XHRcdFx0Y29uc3Qgd29yZCA9IHRoaXMubWF0Y2goXCJXb3JkXCIpO1xuXHRcdFx0XHRwYXJzZWQudmFsdWUgKz0gd3MudmFsdWUgKyB3b3JkLnZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHRwYXJzZWQucmF3ID0gcGFyc2VkLnZhbHVlO1xuXHRcdFx0cmV0dXJuIHBhcnNlZDtcblx0XHR9XG5cblx0XHRjb25zdCB3b3JkID0gdGhpcy5tYXRjaChcIldvcmRcIik7XG5cdFx0Y29uc3QgcGFyc2VkID0geyB0eXBlOiBcIlBocmFzZVwiLCB2YWx1ZTogd29yZC52YWx1ZSwgcmF3OiB3b3JkLnZhbHVlIH07XG5cdFx0cmV0dXJuIHBhcnNlZDtcblx0fVxufVxuXG4vKipcbiAqIFBhcnNlcyBjb250ZW50LlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZW50UGFyc2VyIHtcblx0cHVibGljIGNvbnN0cnVjdG9yKHsgZmxhZ1dvcmRzID0gW10sIG9wdGlvbkZsYWdXb3JkcyA9IFtdLCBxdW90ZWQgPSB0cnVlLCBzZXBhcmF0b3IgfTogQ29udGVudFBhcnNlck9wdGlvbnMgPSB7fSkge1xuXHRcdHRoaXMuZmxhZ1dvcmRzID0gZmxhZ1dvcmRzO1xuXHRcdHRoaXMuZmxhZ1dvcmRzLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpO1xuXG5cdFx0dGhpcy5vcHRpb25GbGFnV29yZHMgPSBvcHRpb25GbGFnV29yZHM7XG5cdFx0dGhpcy5vcHRpb25GbGFnV29yZHMuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XG5cblx0XHR0aGlzLnF1b3RlZCA9IEJvb2xlYW4ocXVvdGVkKTtcblx0XHR0aGlzLnNlcGFyYXRvciA9IHNlcGFyYXRvcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBXb3JkcyBjb25zaWRlcmVkIGZsYWdzLlxuXHQgKi9cblx0cHVibGljIGZsYWdXb3Jkczogc3RyaW5nW107XG5cblx0LyoqXG5cdCAqIFdvcmRzIGNvbnNpZGVyZWQgb3B0aW9uIGZsYWdzLlxuXHQgKi9cblx0cHVibGljIG9wdGlvbkZsYWdXb3Jkczogc3RyaW5nW107XG5cblx0LyoqXG5cdCAqIFdoZXRoZXIgdG8gcGFyc2UgcXVvdGVzLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG5cdCAqL1xuXHRwdWJsaWMgcXVvdGVkOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBXaGV0aGVyIHRvIHBhcnNlIGEgc2VwYXJhdG9yLlxuXHQgKi9cblx0cHVibGljIHNlcGFyYXRvcj86IHN0cmluZztcblxuXHQvKipcblx0ICogUGFyc2VzIGNvbnRlbnQuXG5cdCAqIEBwYXJhbSBjb250ZW50IC0gQ29udGVudCB0byBwYXJzZS5cblx0ICovXG5cdHB1YmxpYyBwYXJzZShjb250ZW50OiBzdHJpbmcpOiBDb250ZW50UGFyc2VyUmVzdWx0IHtcblx0XHRjb25zdCB0b2tlbnMgPSBuZXcgVG9rZW5pemVyKGNvbnRlbnQsIHtcblx0XHRcdGZsYWdXb3JkczogdGhpcy5mbGFnV29yZHMsXG5cdFx0XHRvcHRpb25GbGFnV29yZHM6IHRoaXMub3B0aW9uRmxhZ1dvcmRzLFxuXHRcdFx0cXVvdGVkOiB0aGlzLnF1b3RlZCxcblx0XHRcdHNlcGFyYXRvcjogdGhpcy5zZXBhcmF0b3Jcblx0XHR9KS50b2tlbml6ZSgpO1xuXG5cdFx0cmV0dXJuIG5ldyBQYXJzZXIodG9rZW5zLCB7IHNlcGFyYXRlZDogdGhpcy5zZXBhcmF0b3IgIT0gbnVsbCB9KS5wYXJzZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV4dHJhY3RzIHRoZSBmbGFncyBmcm9tIGFyZ3VtZW50IG9wdGlvbnMuXG5cdCAqIEBwYXJhbSBhcmdzIC0gQXJndW1lbnQgb3B0aW9ucy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZ2V0RmxhZ3MoYXJnczogQXJndW1lbnRPcHRpb25zW10pOiBFeHRyYWN0ZWRGbGFncyB7XG5cdFx0Y29uc3QgcmVzID0ge1xuXHRcdFx0ZmxhZ1dvcmRzOiBbXSxcblx0XHRcdG9wdGlvbkZsYWdXb3JkczogW11cblx0XHR9O1xuXG5cdFx0Zm9yIChjb25zdCBhcmcgb2YgYXJncykge1xuXHRcdFx0Y29uc3QgYXJyOiBhbnlbXSB8IGFueSA9IHJlc1thcmcubWF0Y2ggPT09IEFyZ3VtZW50TWF0Y2hlcy5GTEFHID8gXCJmbGFnV29yZHNcIiA6IFwib3B0aW9uRmxhZ1dvcmRzXCJdO1xuXHRcdFx0aWYgKGFyZy5tYXRjaCA9PT0gQXJndW1lbnRNYXRjaGVzLkZMQUcgfHwgYXJnLm1hdGNoID09PSBBcmd1bWVudE1hdGNoZXMuT1BUSU9OKSB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGFyZy5mbGFnKSkge1xuXHRcdFx0XHRcdGFyci5wdXNoKC4uLmFyZy5mbGFnKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhcnIucHVzaChhcmcuZmxhZyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzO1xuXHR9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGNvbnRlbnQgcGFyc2VyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRQYXJzZXJPcHRpb25zIHtcblx0LyoqXG5cdCAqIFdvcmRzIGNvbnNpZGVyZWQgZmxhZ3MuXG5cdCAqL1xuXHRmbGFnV29yZHM/OiBzdHJpbmdbXTtcblx0LyoqXG5cdCAqIFdvcmRzIGNvbnNpZGVyZWQgb3B0aW9uIGZsYWdzLlxuXHQgKi9cblx0b3B0aW9uRmxhZ1dvcmRzPzogc3RyaW5nW107XG5cdC8qKlxuXHQgKiBXaGV0aGVyIHRvIHBhcnNlIHF1b3Rlcy4gRGVmYXVsdHMgdG8gYHRydWVgLlxuXHQgKi9cblx0cXVvdGVkPzogYm9vbGVhbjtcblx0LyoqXG5cdCAqIFdoZXRoZXIgdG8gcGFyc2UgYSBzZXBhcmF0b3IuXG5cdCAqL1xuXHRzZXBhcmF0b3I/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIHBhcnNpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudFBhcnNlclJlc3VsdCB7XG5cdC8qKlxuXHQgKiBBbGwgcGhyYXNlcyBhbmQgZmxhZ3MuXG5cdCAqL1xuXHRhbGw6IFN0cmluZ0RhdGFbXTtcblxuXHQvKipcblx0ICogUGhyYXNlcy5cblx0ICovXG5cdHBocmFzZXM6IFN0cmluZ0RhdGFbXTtcblxuXHQvKipcblx0ICogRmxhZ3MuXG5cdCAqL1xuXHRmbGFnczogU3RyaW5nRGF0YVtdO1xuXG5cdC8qKlxuXHQgKiBPcHRpb24gZmxhZ3MuXG5cdCAqL1xuXHRvcHRpb25GbGFnczogU3RyaW5nRGF0YVtdO1xufVxuXG4vKipcbiAqIEEgc2luZ2xlIHBocmFzZSBvciBmbGFnLlxuICovXG5leHBvcnQgdHlwZSBTdHJpbmdEYXRhID0ge1xuXHQvKipcblx0ICogT25lIG9mICdQaHJhc2UnLCAnRmxhZycsICdPcHRpb25GbGFnJy5cblx0ICovXG5cdHR5cGU6IFwiUGhyYXNlXCIgfCBcIkZsYWdcIiB8IFwiT3B0aW9uRmxhZ1wiO1xuXG5cdC8qKlxuXHQgKiBUaGUga2V5IG9mIGEgJ0ZsYWcnIG9yICdPcHRpb25GbGFnJy5cblx0ICovXG5cdGtleTogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgdmFsdWUgb2YgYSAnUGhyYXNlJyBvciAnT3B0aW9uRmxhZycuXG5cdCAqL1xuXHR2YWx1ZTogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgcmF3IHN0cmluZyB3aXRoIHdoaXRlc3BhY2UgYW5kL29yIHNlcGFyYXRvci5cblx0ICovXG5cdHJhdzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBGbGFncyBleHRyYWN0ZWQgZnJvbSBhbiBhcmd1bWVudCBsaXN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dHJhY3RlZEZsYWdzIHtcblx0LyoqXG5cdCAqIFdvcmRzIGNvbnNpZGVyZWQgZmxhZ3MuXG5cdCAqL1xuXHRmbGFnV29yZHM/OiBzdHJpbmdbXTtcblx0LyoqXG5cdCAqIFdvcmRzIGNvbnNpZGVyZWQgb3B0aW9uIGZsYWdzLlxuXHQgKi9cblx0b3B0aW9uRmxhZ1dvcmRzPzogc3RyaW5nW107XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGVudFBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdHJ1Y3QvY29tbWFuZHMvQ29udGVudFBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLG9EQUF1RDtBQUd2RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbURHO0FBRUgsTUFBTSxTQUFTO0lBQ2QsWUFDQyxPQUFlLEVBQ2YsRUFBRSxTQUFTLEdBQUcsRUFBRSxFQUFFLGVBQWUsR0FBRyxFQUFFLEVBQUUsTUFBTSxHQUFHLElBQUksRUFBRSxTQUFTLEtBQTJCLEVBQUU7UUFFN0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsMkRBQTJEO1FBQzNELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVNLE9BQU8sQ0FBUztJQUNoQixTQUFTLENBQVc7SUFDcEIsZUFBZSxDQUFXO0lBQzFCLE1BQU0sQ0FBVTtJQUNoQixTQUFTLENBQVU7SUFDbkIsUUFBUSxDQUFTO0lBQ2pCLEtBQUssQ0FBUztJQUNkLE1BQU0sQ0FBUTtJQUVkLFVBQVUsQ0FBQyxHQUFXO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFX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SSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQXVCO1FBQzdDLE1BQU0sR0FBRyxHQUFHO1lBQ1gsU0FBUyxFQUFFLEVBQUU7WUFDYixlQUFlLEVBQUUsRUFBRTtTQUNuQixDQUFDO1FBRUYsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDdkIsTUFBTSxHQUFHLEdBQWdCLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLDJCQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbkcsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLDJCQUFlLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssMkJBQWUsQ0FBQyxNQUFNLEVBQUU7Z0JBQy9FLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzVCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3RCO3FCQUFNO29CQUNOLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNuQjthQUNEO1NBQ0Q7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNaLENBQUM7Q0FDRDtBQXRFRCxnQ0FzRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcmd1bWVudE1hdGNoZXMgfSBmcm9tIFwiLi4vLi4vdXRpbC9Db25zdGFudHNcIjtcbmltcG9ydCB7IEFyZ3VtZW50T3B0aW9ucyB9IGZyb20gXCIuL2FyZ3VtZW50cy9Bcmd1bWVudFwiO1xuXG4vKlxuICogR3JhbW1hcjpcbiAqXG4gKiBBcmd1bWVudHNcbiAqICA9IChBcmd1bWVudCAoV1M/IEFyZ3VtZW50KSopPyBFT0ZcbiAqXG4gKiBBcmd1bWVudFxuICogID0gRmxhZ1xuICogIHwgUGhyYXNlXG4gKlxuICogRmxhZ1xuICogID0gRmxhZ1dvcmRcbiAqICB8IE9wdGlvbkZsYWdXb3JkIFdTPyBQaHJhc2U/XG4gKlxuICogUGhyYXNlXG4gKiAgPSBRdW90ZSAoV29yZCB8IFdTKSogUXVvdGU/XG4gKiAgfCBPcGVuUXVvdGUgKFdvcmQgfCBPcGVuUXVvdGUgfCBRdW90ZSB8IFdTKSogRW5kUXVvdGU/XG4gKiAgfCBFbmRRdW90ZVxuICogIHwgV29yZFxuICpcbiAqIEZsYWdXb3JkID0gR2l2ZW5cbiAqIE9wdGlvbkZsYWdXb3JkID0gR2l2ZW5cbiAqIFF1b3RlID0gXCJcbiAqIE9wZW5RdW90ZSA9IOKAnFxuICogRW5kUXVvdGUgPSDigJ1cbiAqIFdvcmQgPSAvXlxcUysvIChhbmQgbm90IGluIEZsYWdXb3JkIG9yIE9wdGlvbkZsYWdXb3JkKVxuICogV1MgPSAvXlxccysvXG4gKiBFT0YgPSAvXiQvXG4gKlxuICogV2l0aCBhIHNlcGFyYXRvcjpcbiAqXG4gKiBBcmd1bWVudHNcbiAqICA9IChBcmd1bWVudCAoV1M/IFNlcGFyYXRvciBXUz8gQXJndW1lbnQpKik/IEVPRlxuICpcbiAqIEFyZ3VtZW50XG4gKiAgPSBGbGFnXG4gKiAgfCBQaHJhc2VcbiAqXG4gKiBGbGFnXG4gKiAgPSBGbGFnV29yZFxuICogIHwgT3B0aW9uRmxhZ1dvcmQgV1M/IFBocmFzZT9cbiAqXG4gKiBQaHJhc2VcbiAqICA9IFdvcmQgKFdTIFdvcmQpKlxuICpcbiAqIEZsYWdXb3JkID0gR2l2ZW5cbiAqIE9wdGlvbkZsYWdXb3JkID0gR2l2ZW5cbiAqIFNlcGFyYXRvciA9IEdpdmVuXG4gKiBXb3JkID0gL15cXFMrLyAoYW5kIG5vdCBpbiBGbGFnV29yZCBvciBPcHRpb25GbGFnV29yZCBvciBlcXVhbCB0byBTZXBhcmF0b3IpXG4gKiBXUyA9IC9eXFxzKy9cbiAqIEVPRiA9IC9eJC9cbiAqL1xuXG5jbGFzcyBUb2tlbml6ZXIge1xuXHRwdWJsaWMgY29uc3RydWN0b3IoXG5cdFx0Y29udGVudDogc3RyaW5nLFxuXHRcdHsgZmxhZ1dvcmRzID0gW10sIG9wdGlvbkZsYWdXb3JkcyA9IFtdLCBxdW90ZWQgPSB0cnVlLCBzZXBhcmF0b3IgfTogQ29udGVudFBhcnNlck9wdGlvbnMgPSB7fVxuXHQpIHtcblx0XHR0aGlzLmNvbnRlbnQgPSBjb250ZW50O1xuXHRcdHRoaXMuZmxhZ1dvcmRzID0gZmxhZ1dvcmRzO1xuXHRcdHRoaXMub3B0aW9uRmxhZ1dvcmRzID0gb3B0aW9uRmxhZ1dvcmRzO1xuXHRcdHRoaXMucXVvdGVkID0gcXVvdGVkO1xuXHRcdHRoaXMuc2VwYXJhdG9yID0gc2VwYXJhdG9yO1xuXHRcdHRoaXMucG9zaXRpb24gPSAwO1xuXHRcdC8vIDAgLT4gRGVmYXVsdCwgMSAtPiBRdW90ZXMgKFwiXCIpLCAyIC0+IFNwZWNpYWwgUXVvdGVzICjigJzigJ0pXG5cdFx0dGhpcy5zdGF0ZSA9IDA7XG5cdFx0dGhpcy50b2tlbnMgPSBbXTtcblx0fVxuXG5cdHB1YmxpYyBjb250ZW50OiBzdHJpbmc7XG5cdHB1YmxpYyBmbGFnV29yZHM6IHN0cmluZ1tdO1xuXHRwdWJsaWMgb3B0aW9uRmxhZ1dvcmRzOiBzdHJpbmdbXTtcblx0cHVibGljIHF1b3RlZDogYm9vbGVhbjtcblx0cHVibGljIHNlcGFyYXRvcj86IHN0cmluZztcblx0cHVibGljIHBvc2l0aW9uOiBudW1iZXI7XG5cdHB1YmxpYyBzdGF0ZTogbnVtYmVyO1xuXHRwdWJsaWMgdG9rZW5zOiBhbnlbXTtcblxuXHRwdWJsaWMgc3RhcnRzV2l0aChzdHI6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLmNvbnRlbnQuc2xpY2UodGhpcy5wb3NpdGlvbiwgdGhpcy5wb3NpdGlvbiArIHN0ci5sZW5ndGgpLnRvTG93ZXJDYXNlKCkgPT09IHN0ci50b0xvd2VyQ2FzZSgpO1xuXHR9XG5cblx0cHVibGljIG1hdGNoKHJlZ2V4OiBSZWdFeHApIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50LnNsaWNlKHRoaXMucG9zaXRpb24pLm1hdGNoKHJlZ2V4KTtcblx0fVxuXG5cdHB1YmxpYyBzbGljZShmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5jb250ZW50LnNsaWNlKHRoaXMucG9zaXRpb24gKyBmcm9tLCB0aGlzLnBvc2l0aW9uICsgdG8pO1xuXHR9XG5cblx0cHVibGljIGFkZFRva2VuKHR5cGU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuXHRcdHRoaXMudG9rZW5zLnB1c2goeyB0eXBlLCB2YWx1ZSB9KTtcblx0fVxuXG5cdHB1YmxpYyBhZHZhbmNlKG46IG51bWJlcikge1xuXHRcdHRoaXMucG9zaXRpb24gKz0gbjtcblx0fVxuXG5cdHB1YmxpYyBjaG9pY2UoLi4uYWN0aW9uczogeyAoKTogYm9vbGVhbiB9W10pIHtcblx0XHRmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG5cdFx0XHRpZiAoYWN0aW9uLmNhbGwodGhpcykpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyB0b2tlbml6ZSgpIHtcblx0XHR3aGlsZSAodGhpcy5wb3NpdGlvbiA8IHRoaXMuY29udGVudC5sZW5ndGgpIHtcblx0XHRcdHRoaXMucnVuT25lKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5hZGRUb2tlbihcIkVPRlwiLCBcIlwiKTtcblx0XHRyZXR1cm4gdGhpcy50b2tlbnM7XG5cdH1cblxuXHRwdWJsaWMgcnVuT25lKCkge1xuXHRcdHRoaXMuY2hvaWNlKFxuXHRcdFx0dGhpcy5ydW5XaGl0ZXNwYWNlLFxuXHRcdFx0dGhpcy5ydW5GbGFncyxcblx0XHRcdHRoaXMucnVuT3B0aW9uRmxhZ3MsXG5cdFx0XHR0aGlzLnJ1blF1b3RlLFxuXHRcdFx0dGhpcy5ydW5PcGVuUXVvdGUsXG5cdFx0XHR0aGlzLnJ1bkVuZFF1b3RlLFxuXHRcdFx0dGhpcy5ydW5TZXBhcmF0b3IsXG5cdFx0XHR0aGlzLnJ1bldvcmRcblx0XHQpO1xuXHR9XG5cblx0cHVibGljIHJ1bkZsYWdzKCkge1xuXHRcdGlmICh0aGlzLnN0YXRlID09PSAwKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHdvcmQgb2YgdGhpcy5mbGFnV29yZHMpIHtcblx0XHRcdFx0aWYgKHRoaXMuc3RhcnRzV2l0aCh3b3JkKSkge1xuXHRcdFx0XHRcdHRoaXMuYWRkVG9rZW4oXCJGbGFnV29yZFwiLCB0aGlzLnNsaWNlKDAsIHdvcmQubGVuZ3RoKSk7XG5cdFx0XHRcdFx0dGhpcy5hZHZhbmNlKHdvcmQubGVuZ3RoKTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHB1YmxpYyBydW5PcHRpb25GbGFncygpIHtcblx0XHRpZiAodGhpcy5zdGF0ZSA9PT0gMCkge1xuXHRcdFx0Zm9yIChjb25zdCB3b3JkIG9mIHRoaXMub3B0aW9uRmxhZ1dvcmRzKSB7XG5cdFx0XHRcdGlmICh0aGlzLnN0YXJ0c1dpdGgod29yZCkpIHtcblx0XHRcdFx0XHR0aGlzLmFkZFRva2VuKFwiT3B0aW9uRmxhZ1dvcmRcIiwgdGhpcy5zbGljZSgwLCB3b3JkLmxlbmd0aCkpO1xuXHRcdFx0XHRcdHRoaXMuYWR2YW5jZSh3b3JkLmxlbmd0aCk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgcnVuUXVvdGUoKSB7XG5cdFx0aWYgKHRoaXMuc2VwYXJhdG9yID09PSBudWxsICYmIHRoaXMucXVvdGVkICYmIHRoaXMuc3RhcnRzV2l0aCgnXCInKSkge1xuXHRcdFx0aWYgKHRoaXMuc3RhdGUgPT09IDEpIHtcblx0XHRcdFx0dGhpcy5zdGF0ZSA9IDA7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuc3RhdGUgPT09IDApIHtcblx0XHRcdFx0dGhpcy5zdGF0ZSA9IDE7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYWRkVG9rZW4oXCJRdW90ZVwiLCAnXCInKTtcblx0XHRcdHRoaXMuYWR2YW5jZSgxKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHB1YmxpYyBydW5PcGVuUXVvdGUoKSB7XG5cdFx0aWYgKHRoaXMuc2VwYXJhdG9yID09PSBudWxsICYmIHRoaXMucXVvdGVkICYmIHRoaXMuc3RhcnRzV2l0aCgnXCInKSkge1xuXHRcdFx0aWYgKHRoaXMuc3RhdGUgPT09IDApIHtcblx0XHRcdFx0dGhpcy5zdGF0ZSA9IDI7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYWRkVG9rZW4oXCJPcGVuUXVvdGVcIiwgJ1wiJyk7XG5cdFx0XHR0aGlzLmFkdmFuY2UoMSk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgcnVuRW5kUXVvdGUoKSB7XG5cdFx0aWYgKHRoaXMuc2VwYXJhdG9yID09PSBudWxsICYmIHRoaXMucXVvdGVkICYmIHRoaXMuc3RhcnRzV2l0aChcIuKAnVwiKSkge1xuXHRcdFx0aWYgKHRoaXMuc3RhdGUgPT09IDIpIHtcblx0XHRcdFx0dGhpcy5zdGF0ZSA9IDA7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYWRkVG9rZW4oXCJFbmRRdW90ZVwiLCBcIuKAnVwiKTtcblx0XHRcdHRoaXMuYWR2YW5jZSgxKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHB1YmxpYyBydW5TZXBhcmF0b3IoKSB7XG5cdFx0aWYgKHRoaXMuc2VwYXJhdG9yICE9PSBudWxsICYmIHRoaXMuc2VwYXJhdG9yICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zdGFydHNXaXRoKHRoaXMuc2VwYXJhdG9yKSkge1xuXHRcdFx0dGhpcy5hZGRUb2tlbihcIlNlcGFyYXRvclwiLCB0aGlzLnNsaWNlKDAsIHRoaXMuc2VwYXJhdG9yLmxlbmd0aCkpO1xuXHRcdFx0dGhpcy5hZHZhbmNlKHRoaXMuc2VwYXJhdG9yLmxlbmd0aCk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgcnVuV29yZCgpIHtcblx0XHRjb25zdCB3b3JkUmVnZXggPSB0aGlzLnN0YXRlID09PSAwID8gL15cXFMrLyA6IHRoaXMuc3RhdGUgPT09IDEgPyAvXlteXFxzXCJdKy8gOiAvXlteXFxz4oCdXSsvO1xuXG5cdFx0Y29uc3Qgd29yZE1hdGNoID0gdGhpcy5tYXRjaCh3b3JkUmVnZXgpO1xuXHRcdGlmICh3b3JkTWF0Y2gpIHtcblx0XHRcdGlmICh0aGlzLnNlcGFyYXRvcikge1xuXHRcdFx0XHRpZiAod29yZE1hdGNoWzBdLnRvTG93ZXJDYXNlKCkgPT09IHRoaXMuc2VwYXJhdG9yLnRvTG93ZXJDYXNlKCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBpbmRleCA9IHdvcmRNYXRjaFswXS5pbmRleE9mKHRoaXMuc2VwYXJhdG9yKTtcblx0XHRcdFx0aWYgKGluZGV4ID09PSAtMSkge1xuXHRcdFx0XHRcdHRoaXMuYWRkVG9rZW4oXCJXb3JkXCIsIHdvcmRNYXRjaFswXSk7XG5cdFx0XHRcdFx0dGhpcy5hZHZhbmNlKHdvcmRNYXRjaFswXS5sZW5ndGgpO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgYWN0dWFsID0gd29yZE1hdGNoWzBdLnNsaWNlKDAsIGluZGV4KTtcblx0XHRcdFx0dGhpcy5hZGRUb2tlbihcIldvcmRcIiwgYWN0dWFsKTtcblx0XHRcdFx0dGhpcy5hZHZhbmNlKGFjdHVhbC5sZW5ndGgpO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5hZGRUb2tlbihcIldvcmRcIiwgd29yZE1hdGNoWzBdKTtcblx0XHRcdHRoaXMuYWR2YW5jZSh3b3JkTWF0Y2hbMF0ubGVuZ3RoKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHB1YmxpYyBydW5XaGl0ZXNwYWNlKCkge1xuXHRcdGNvbnN0IHdzTWF0Y2ggPSB0aGlzLm1hdGNoKC9eXFxzKy8pO1xuXHRcdGlmICh3c01hdGNoKSB7XG5cdFx0XHR0aGlzLmFkZFRva2VuKFwiV1NcIiwgd3NNYXRjaFswXSk7XG5cdFx0XHR0aGlzLmFkdmFuY2Uod3NNYXRjaFswXS5sZW5ndGgpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbmNsYXNzIFBhcnNlciB7XG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcih0b2tlbnM6IGFueVtdLCB7IHNlcGFyYXRlZCB9OiB7IHNlcGFyYXRlZDogYm9vbGVhbiB9KSB7XG5cdFx0dGhpcy50b2tlbnMgPSB0b2tlbnM7XG5cdFx0dGhpcy5zZXBhcmF0ZWQgPSBzZXBhcmF0ZWQ7XG5cdFx0dGhpcy5wb3NpdGlvbiA9IDA7XG5cblx0XHR0aGlzLnJlc3VsdHMgPSB7XG5cdFx0XHRhbGw6IFtdLFxuXHRcdFx0cGhyYXNlczogW10sXG5cdFx0XHRmbGFnczogW10sXG5cdFx0XHRvcHRpb25GbGFnczogW11cblx0XHR9O1xuXHR9XG5cblx0cHVibGljIHRva2VuczogYW55O1xuXHRwdWJsaWMgc2VwYXJhdGVkOiBhbnk7XG5cdHB1YmxpYyBwb3NpdGlvbjogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBQaHJhc2VzIGFyZSBgeyB0eXBlOiAnUGhyYXNlJywgdmFsdWUsIHJhdyB9YC5cblx0ICogRmxhZ3MgYXJlIGB7IHR5cGU6ICdGbGFnJywga2V5LCByYXcgfWAuXG5cdCAqIE9wdGlvbiBmbGFncyBhcmUgYHsgdHlwZTogJ09wdGlvbkZsYWcnLCBrZXksIHZhbHVlLCByYXcgfWAuXG5cdCAqIFRoZSBgYWxsYCBwcm9wZXJ0eSBpcyBwYXJ0aXRpb25lZCBpbnRvIGBwaHJhc2VzYCwgYGZsYWdzYCwgYW5kIGBvcHRpb25GbGFnc2AuXG5cdCAqL1xuXHRwdWJsaWMgcmVzdWx0czoge1xuXHRcdGFsbDogYW55W107XG5cdFx0cGhyYXNlczogYW55W107XG5cdFx0ZmxhZ3M6IGFueVtdO1xuXHRcdG9wdGlvbkZsYWdzOiBhbnlbXTtcblx0fTtcblxuXHRwdWJsaWMgbmV4dCgpIHtcblx0XHR0aGlzLnBvc2l0aW9uKys7XG5cdH1cblxuXHRwdWJsaWMgbG9va2FoZWFkTihuOiBudW1iZXIsIC4uLnR5cGVzOiBzdHJpbmdbXSkge1xuXHRcdHJldHVybiB0aGlzLnRva2Vuc1t0aGlzLnBvc2l0aW9uICsgbl0gIT09IG51bGwgJiYgdHlwZXMuaW5jbHVkZXModGhpcy50b2tlbnNbdGhpcy5wb3NpdGlvbiArIG5dLnR5cGUpO1xuXHR9XG5cblx0cHVibGljIGxvb2thaGVhZCguLi50eXBlczogc3RyaW5nW10pIHtcblx0XHRyZXR1cm4gdGhpcy5sb29rYWhlYWROKDAsIC4uLnR5cGVzKTtcblx0fVxuXG5cdHB1YmxpYyBtYXRjaCguLi50eXBlczogc3RyaW5nW10pIHtcblx0XHRpZiAodGhpcy5sb29rYWhlYWQoLi4udHlwZXMpKSB7XG5cdFx0XHR0aGlzLm5leHQoKTtcblx0XHRcdHJldHVybiB0aGlzLnRva2Vuc1t0aGlzLnBvc2l0aW9uIC0gMV07XG5cdFx0fVxuXG5cdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0YFVuZXhwZWN0ZWQgdG9rZW4gJHt0aGlzLnRva2Vuc1t0aGlzLnBvc2l0aW9uXS52YWx1ZX0gb2YgdHlwZSAke1xuXHRcdFx0XHR0aGlzLnRva2Vuc1t0aGlzLnBvc2l0aW9uXS50eXBlXG5cdFx0XHR9ICh0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4pYFxuXHRcdCk7XG5cdH1cblxuXHRwdWJsaWMgcGFyc2UoKSB7XG5cdFx0Ly8gLTEgZm9yIEVPRi5cblx0XHR3aGlsZSAodGhpcy5wb3NpdGlvbiA8IHRoaXMudG9rZW5zLmxlbmd0aCAtIDEpIHtcblx0XHRcdHRoaXMucnVuQXJndW1lbnQoKTtcblx0XHR9XG5cblx0XHR0aGlzLm1hdGNoKFwiRU9GXCIpO1xuXHRcdHJldHVybiB0aGlzLnJlc3VsdHM7XG5cdH1cblxuXHRwdWJsaWMgcnVuQXJndW1lbnQoKSB7XG5cdFx0Y29uc3QgbGVhZGluZyA9IHRoaXMubG9va2FoZWFkKFwiV1NcIikgPyB0aGlzLm1hdGNoKFwiV1NcIikudmFsdWUgOiBcIlwiO1xuXHRcdGlmICh0aGlzLmxvb2thaGVhZChcIkZsYWdXb3JkXCIsIFwiT3B0aW9uRmxhZ1dvcmRcIikpIHtcblx0XHRcdGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VGbGFnKCk7XG5cdFx0XHRjb25zdCB0cmFpbGluZyA9IHRoaXMubG9va2FoZWFkKFwiV1NcIikgPyB0aGlzLm1hdGNoKFwiV1NcIikudmFsdWUgOiBcIlwiO1xuXHRcdFx0Y29uc3Qgc2VwYXJhdG9yID0gdGhpcy5sb29rYWhlYWQoXCJTZXBhcmF0b3JcIikgPyB0aGlzLm1hdGNoKFwiU2VwYXJhdG9yXCIpLnZhbHVlIDogXCJcIjtcblx0XHRcdHBhcnNlZC5yYXcgPSBgJHtsZWFkaW5nfSR7cGFyc2VkLnJhd30ke3RyYWlsaW5nfSR7c2VwYXJhdG9yfWA7XG5cdFx0XHR0aGlzLnJlc3VsdHMuYWxsLnB1c2gocGFyc2VkKTtcblx0XHRcdGlmIChwYXJzZWQudHlwZSA9PT0gXCJGbGFnXCIpIHtcblx0XHRcdFx0dGhpcy5yZXN1bHRzLmZsYWdzLnB1c2gocGFyc2VkKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMucmVzdWx0cy5vcHRpb25GbGFncy5wdXNoKHBhcnNlZCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlUGhyYXNlKCk7XG5cdFx0Y29uc3QgdHJhaWxpbmcgPSB0aGlzLmxvb2thaGVhZChcIldTXCIpID8gdGhpcy5tYXRjaChcIldTXCIpLnZhbHVlIDogXCJcIjtcblx0XHRjb25zdCBzZXBhcmF0b3IgPSB0aGlzLmxvb2thaGVhZChcIlNlcGFyYXRvclwiKSA/IHRoaXMubWF0Y2goXCJTZXBhcmF0b3JcIikudmFsdWUgOiBcIlwiO1xuXHRcdHBhcnNlZC5yYXcgPSBgJHtsZWFkaW5nfSR7cGFyc2VkLnJhd30ke3RyYWlsaW5nfSR7c2VwYXJhdG9yfWA7XG5cdFx0dGhpcy5yZXN1bHRzLmFsbC5wdXNoKHBhcnNlZCk7XG5cdFx0dGhpcy5yZXN1bHRzLnBocmFzZXMucHVzaChwYXJzZWQpO1xuXHR9XG5cblx0cHVibGljIHBhcnNlRmxhZygpIHtcblx0XHRpZiAodGhpcy5sb29rYWhlYWQoXCJGbGFnV29yZFwiKSkge1xuXHRcdFx0Y29uc3QgZmxhZyA9IHRoaXMubWF0Y2goXCJGbGFnV29yZFwiKTtcblx0XHRcdGNvbnN0IHBhcnNlZCA9IHsgdHlwZTogXCJGbGFnXCIsIGtleTogZmxhZy52YWx1ZSwgcmF3OiBmbGFnLnZhbHVlIH07XG5cdFx0XHRyZXR1cm4gcGFyc2VkO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyd2lzZSwgYHRoaXMubG9va2FoZWFkKCdPcHRpb25GbGFnV29yZCcpYCBzaG91bGQgYmUgdHJ1ZS5cblx0XHRjb25zdCBmbGFnID0gdGhpcy5tYXRjaChcIk9wdGlvbkZsYWdXb3JkXCIpO1xuXHRcdGNvbnN0IHBhcnNlZCA9IHtcblx0XHRcdHR5cGU6IFwiT3B0aW9uRmxhZ1wiLFxuXHRcdFx0a2V5OiBmbGFnLnZhbHVlLFxuXHRcdFx0dmFsdWU6IFwiXCIsXG5cdFx0XHRyYXc6IGZsYWcudmFsdWVcblx0XHR9O1xuXHRcdGNvbnN0IHdzID0gdGhpcy5sb29rYWhlYWQoXCJXU1wiKSA/IHRoaXMubWF0Y2goXCJXU1wiKSA6IG51bGw7XG5cdFx0aWYgKHdzICE9PSBudWxsKSB7XG5cdFx0XHRwYXJzZWQucmF3ICs9IHdzLnZhbHVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IHBocmFzZSA9IHRoaXMubG9va2FoZWFkKFwiUXVvdGVcIiwgXCJPcGVuUXVvdGVcIiwgXCJFbmRRdW90ZVwiLCBcIldvcmRcIikgPyB0aGlzLnBhcnNlUGhyYXNlKCkgOiBudWxsO1xuXG5cdFx0aWYgKHBocmFzZSAhPT0gbnVsbCkge1xuXHRcdFx0cGFyc2VkLnZhbHVlID0gcGhyYXNlLnZhbHVlO1xuXHRcdFx0cGFyc2VkLnJhdyArPSBwaHJhc2UucmF3O1xuXHRcdH1cblxuXHRcdHJldHVybiBwYXJzZWQ7XG5cdH1cblxuXHRwdWJsaWMgcGFyc2VQaHJhc2UoKSB7XG5cdFx0aWYgKCF0aGlzLnNlcGFyYXRlZCkge1xuXHRcdFx0aWYgKHRoaXMubG9va2FoZWFkKFwiUXVvdGVcIikpIHtcblx0XHRcdFx0Y29uc3QgcGFyc2VkID0geyB0eXBlOiBcIlBocmFzZVwiLCB2YWx1ZTogXCJcIiwgcmF3OiBcIlwiIH07XG5cdFx0XHRcdGNvbnN0IG9wZW5RdW90ZSA9IHRoaXMubWF0Y2goXCJRdW90ZVwiKTtcblx0XHRcdFx0cGFyc2VkLnJhdyArPSBvcGVuUXVvdGUudmFsdWU7XG5cdFx0XHRcdHdoaWxlICh0aGlzLmxvb2thaGVhZChcIldvcmRcIiwgXCJXU1wiKSkge1xuXHRcdFx0XHRcdGNvbnN0IG1hdGNoID0gdGhpcy5tYXRjaChcIldvcmRcIiwgXCJXU1wiKTtcblx0XHRcdFx0XHRwYXJzZWQudmFsdWUgKz0gbWF0Y2gudmFsdWU7XG5cdFx0XHRcdFx0cGFyc2VkLnJhdyArPSBtYXRjaC52YWx1ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGVuZFF1b3RlID0gdGhpcy5sb29rYWhlYWQoXCJRdW90ZVwiKSA/IHRoaXMubWF0Y2goXCJRdW90ZVwiKSA6IG51bGw7XG5cdFx0XHRcdGlmIChlbmRRdW90ZSAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdHBhcnNlZC5yYXcgKz0gZW5kUXVvdGUudmFsdWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gcGFyc2VkO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5sb29rYWhlYWQoXCJPcGVuUXVvdGVcIikpIHtcblx0XHRcdFx0Y29uc3QgcGFyc2VkID0geyB0eXBlOiBcIlBocmFzZVwiLCB2YWx1ZTogXCJcIiwgcmF3OiBcIlwiIH07XG5cdFx0XHRcdGNvbnN0IG9wZW5RdW90ZSA9IHRoaXMubWF0Y2goXCJPcGVuUXVvdGVcIik7XG5cdFx0XHRcdHBhcnNlZC5yYXcgKz0gb3BlblF1b3RlLnZhbHVlO1xuXHRcdFx0XHR3aGlsZSAodGhpcy5sb29rYWhlYWQoXCJXb3JkXCIsIFwiV1NcIikpIHtcblx0XHRcdFx0XHRjb25zdCBtYXRjaCA9IHRoaXMubWF0Y2goXCJXb3JkXCIsIFwiV1NcIik7XG5cdFx0XHRcdFx0aWYgKG1hdGNoLnR5cGUgPT09IFwiV29yZFwiKSB7XG5cdFx0XHRcdFx0XHRwYXJzZWQudmFsdWUgKz0gbWF0Y2gudmFsdWU7XG5cdFx0XHRcdFx0XHRwYXJzZWQucmF3ICs9IG1hdGNoLnZhbHVlO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRwYXJzZWQucmF3ICs9IG1hdGNoLnZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IGVuZFF1b3RlID0gdGhpcy5sb29rYWhlYWQoXCJFbmRRdW90ZVwiKSA/IHRoaXMubWF0Y2goXCJFbmRRdW90ZVwiKSA6IG51bGw7XG5cdFx0XHRcdGlmIChlbmRRdW90ZSAhPT0gbnVsbCkge1xuXHRcdFx0XHRcdHBhcnNlZC5yYXcgKz0gZW5kUXVvdGUudmFsdWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gcGFyc2VkO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5sb29rYWhlYWQoXCJFbmRRdW90ZVwiKSkge1xuXHRcdFx0XHRjb25zdCBlbmRRdW90ZSA9IHRoaXMubWF0Y2goXCJFbmRRdW90ZVwiKTtcblx0XHRcdFx0Y29uc3QgcGFyc2VkID0ge1xuXHRcdFx0XHRcdHR5cGU6IFwiUGhyYXNlXCIsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZFF1b3RlLnZhbHVlLFxuXHRcdFx0XHRcdHJhdzogZW5kUXVvdGUudmFsdWVcblx0XHRcdFx0fTtcblx0XHRcdFx0cmV0dXJuIHBhcnNlZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5zZXBhcmF0ZWQpIHtcblx0XHRcdGNvbnN0IGluaXQgPSB0aGlzLm1hdGNoKFwiV29yZFwiKTtcblx0XHRcdGNvbnN0IHBhcnNlZCA9IHsgdHlwZTogXCJQaHJhc2VcIiwgdmFsdWU6IGluaXQudmFsdWUsIHJhdzogaW5pdC52YWx1ZSB9O1xuXHRcdFx0d2hpbGUgKHRoaXMubG9va2FoZWFkKFwiV1NcIikgJiYgdGhpcy5sb29rYWhlYWROKDEsIFwiV29yZFwiKSkge1xuXHRcdFx0XHRjb25zdCB3cyA9IHRoaXMubWF0Y2goXCJXU1wiKTtcblx0XHRcdFx0Y29uc3Qgd29yZCA9IHRoaXMubWF0Y2goXCJXb3JkXCIpO1xuXHRcdFx0XHRwYXJzZWQudmFsdWUgKz0gd3MudmFsdWUgKyB3b3JkLnZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHRwYXJzZWQucmF3ID0gcGFyc2VkLnZhbHVlO1xuXHRcdFx0cmV0dXJuIHBhcnNlZDtcblx0XHR9XG5cblx0XHRjb25zdCB3b3JkID0gdGhpcy5tYXRjaChcIldvcmRcIik7XG5cdFx0Y29uc3QgcGFyc2VkID0geyB0eXBlOiBcIlBocmFzZVwiLCB2YWx1ZTogd29yZC52YWx1ZSwgcmF3OiB3b3JkLnZhbHVlIH07XG5cdFx0cmV0dXJuIHBhcnNlZDtcblx0fVxufVxuXG4vKipcbiAqIFBhcnNlcyBjb250ZW50LlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250ZW50UGFyc2VyIHtcblx0cHVibGljIGNvbnN0cnVjdG9yKHsgZmxhZ1dvcmRzID0gW10sIG9wdGlvbkZsYWdXb3JkcyA9IFtdLCBxdW90ZWQgPSB0cnVlLCBzZXBhcmF0b3IgfTogQ29udGVudFBhcnNlck9wdGlvbnMgPSB7fSkge1xuXHRcdHRoaXMuZmxhZ1dvcmRzID0gZmxhZ1dvcmRzO1xuXHRcdHRoaXMuZmxhZ1dvcmRzLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpO1xuXG5cdFx0dGhpcy5vcHRpb25GbGFnV29yZHMgPSBvcHRpb25GbGFnV29yZHM7XG5cdFx0dGhpcy5vcHRpb25GbGFnV29yZHMuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XG5cblx0XHR0aGlzLnF1b3RlZCA9IEJvb2xlYW4ocXVvdGVkKTtcblx0XHR0aGlzLnNlcGFyYXRvciA9IHNlcGFyYXRvcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBXb3JkcyBjb25zaWRlcmVkIGZsYWdzLlxuXHQgKi9cblx0cHVibGljIGZsYWdXb3Jkczogc3RyaW5nW107XG5cblx0LyoqXG5cdCAqIFdvcmRzIGNvbnNpZGVyZWQgb3B0aW9uIGZsYWdzLlxuXHQgKi9cblx0cHVibGljIG9wdGlvbkZsYWdXb3Jkczogc3RyaW5nW107XG5cblx0LyoqXG5cdCAqIFdoZXRoZXIgdG8gcGFyc2UgcXVvdGVzLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG5cdCAqL1xuXHRwdWJsaWMgcXVvdGVkOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBXaGV0aGVyIHRvIHBhcnNlIGEgc2VwYXJhdG9yLlxuXHQgKi9cblx0cHVibGljIHNlcGFyYXRvcj86IHN0cmluZztcblxuXHQvKipcblx0ICogUGFyc2VzIGNvbnRlbnQuXG5cdCAqIEBwYXJhbSBjb250ZW50IC0gQ29udGVudCB0byBwYXJzZS5cblx0ICovXG5cdHB1YmxpYyBwYXJzZShjb250ZW50OiBzdHJpbmcpOiBDb250ZW50UGFyc2VyUmVzdWx0IHtcblx0XHRjb25zdCB0b2tlbnMgPSBuZXcgVG9rZW5pemVyKGNvbnRlbnQsIHtcblx0XHRcdGZsYWdXb3JkczogdGhpcy5mbGFnV29yZHMsXG5cdFx0XHRvcHRpb25GbGFnV29yZHM6IHRoaXMub3B0aW9uRmxhZ1dvcmRzLFxuXHRcdFx0cXVvdGVkOiB0aGlzLnF1b3RlZCxcblx0XHRcdHNlcGFyYXRvcjogdGhpcy5zZXBhcmF0b3Jcblx0XHR9KS50b2tlbml6ZSgpO1xuXG5cdFx0cmV0dXJuIG5ldyBQYXJzZXIodG9rZW5zLCB7IHNlcGFyYXRlZDogdGhpcy5zZXBhcmF0b3IgIT09IG51bGwgfSkucGFyc2UoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeHRyYWN0cyB0aGUgZmxhZ3MgZnJvbSBhcmd1bWVudCBvcHRpb25zLlxuXHQgKiBAcGFyYW0gYXJncyAtIEFyZ3VtZW50IG9wdGlvbnMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldEZsYWdzKGFyZ3M6IEFyZ3VtZW50T3B0aW9uc1tdKTogRXh0cmFjdGVkRmxhZ3Mge1xuXHRcdGNvbnN0IHJlcyA9IHtcblx0XHRcdGZsYWdXb3JkczogW10sXG5cdFx0XHRvcHRpb25GbGFnV29yZHM6IFtdXG5cdFx0fTtcblxuXHRcdGZvciAoY29uc3QgYXJnIG9mIGFyZ3MpIHtcblx0XHRcdGNvbnN0IGFycjogYW55W10gfCBhbnkgPSByZXNbYXJnLm1hdGNoID09PSBBcmd1bWVudE1hdGNoZXMuRkxBRyA/IFwiZmxhZ1dvcmRzXCIgOiBcIm9wdGlvbkZsYWdXb3Jkc1wiXTtcblx0XHRcdGlmIChhcmcubWF0Y2ggPT09IEFyZ3VtZW50TWF0Y2hlcy5GTEFHIHx8IGFyZy5tYXRjaCA9PT0gQXJndW1lbnRNYXRjaGVzLk9QVElPTikge1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhcmcuZmxhZykpIHtcblx0XHRcdFx0XHRhcnIucHVzaCguLi5hcmcuZmxhZyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YXJyLnB1c2goYXJnLmZsYWcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlcztcblx0fVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBjb250ZW50IHBhcnNlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250ZW50UGFyc2VyT3B0aW9ucyB7XG5cdC8qKlxuXHQgKiBXb3JkcyBjb25zaWRlcmVkIGZsYWdzLlxuXHQgKi9cblx0ZmxhZ1dvcmRzPzogc3RyaW5nW107XG5cdC8qKlxuXHQgKiBXb3JkcyBjb25zaWRlcmVkIG9wdGlvbiBmbGFncy5cblx0ICovXG5cdG9wdGlvbkZsYWdXb3Jkcz86IHN0cmluZ1tdO1xuXHQvKipcblx0ICogV2hldGhlciB0byBwYXJzZSBxdW90ZXMuIERlZmF1bHRzIHRvIGB0cnVlYC5cblx0ICovXG5cdHF1b3RlZD86IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBXaGV0aGVyIHRvIHBhcnNlIGEgc2VwYXJhdG9yLlxuXHQgKi9cblx0c2VwYXJhdG9yPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBwYXJzaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRQYXJzZXJSZXN1bHQge1xuXHQvKipcblx0ICogQWxsIHBocmFzZXMgYW5kIGZsYWdzLlxuXHQgKi9cblx0YWxsOiBTdHJpbmdEYXRhW107XG5cblx0LyoqXG5cdCAqIFBocmFzZXMuXG5cdCAqL1xuXHRwaHJhc2VzOiBTdHJpbmdEYXRhW107XG5cblx0LyoqXG5cdCAqIEZsYWdzLlxuXHQgKi9cblx0ZmxhZ3M6IFN0cmluZ0RhdGFbXTtcblxuXHQvKipcblx0ICogT3B0aW9uIGZsYWdzLlxuXHQgKi9cblx0b3B0aW9uRmxhZ3M6IFN0cmluZ0RhdGFbXTtcbn1cblxuLyoqXG4gKiBBIHNpbmdsZSBwaHJhc2Ugb3IgZmxhZy5cbiAqL1xuZXhwb3J0IHR5cGUgU3RyaW5nRGF0YSA9IHtcblx0LyoqXG5cdCAqIE9uZSBvZiAnUGhyYXNlJywgJ0ZsYWcnLCAnT3B0aW9uRmxhZycuXG5cdCAqL1xuXHR0eXBlOiBcIlBocmFzZVwiIHwgXCJGbGFnXCIgfCBcIk9wdGlvbkZsYWdcIjtcblxuXHQvKipcblx0ICogVGhlIGtleSBvZiBhICdGbGFnJyBvciAnT3B0aW9uRmxhZycuXG5cdCAqL1xuXHRrZXk6IHN0cmluZztcblxuXHQvKipcblx0ICogVGhlIHZhbHVlIG9mIGEgJ1BocmFzZScgb3IgJ09wdGlvbkZsYWcnLlxuXHQgKi9cblx0dmFsdWU6IHN0cmluZztcblxuXHQvKipcblx0ICogVGhlIHJhdyBzdHJpbmcgd2l0aCB3aGl0ZXNwYWNlIGFuZC9vciBzZXBhcmF0b3IuXG5cdCAqL1xuXHRyYXc6IHN0cmluZztcbn07XG5cbi8qKlxuICogRmxhZ3MgZXh0cmFjdGVkIGZyb20gYW4gYXJndW1lbnQgbGlzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRyYWN0ZWRGbGFncyB7XG5cdC8qKlxuXHQgKiBXb3JkcyBjb25zaWRlcmVkIGZsYWdzLlxuXHQgKi9cblx0ZmxhZ1dvcmRzPzogc3RyaW5nW107XG5cdC8qKlxuXHQgKiBXb3JkcyBjb25zaWRlcmVkIG9wdGlvbiBmbGFncy5cblx0ICovXG5cdG9wdGlvbkZsYWdXb3Jkcz86IHN0cmluZ1tdO1xufVxuIl19

@@ -27,3 +27,3 @@ "use strict";

constructor(key, ...args) {
if (Messages[key] == null)
if (Messages[key] === null)
throw new TypeError(`Error key '${key}' does not exist`);

@@ -46,2 +46,2 @@ const message = typeof Messages[key] === "function" ? Messages[key](...args) : Messages[key];

exports.default = AkairoError;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWthaXJvRXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC9Ba2Fpcm9FcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU0sUUFBUSxHQUFHO0lBQ2hCLGlCQUFpQjtJQUNqQixjQUFjLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFNBQVMsUUFBUSxhQUFhO0lBQ2pFLGdCQUFnQixFQUFFLENBQUMsV0FBZ0IsRUFBRSxFQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsV0FBVyxLQUFLLEVBQUUsa0JBQWtCO0lBQ3hGLGNBQWMsRUFBRSxDQUFDLFdBQWdCLEVBQUUsRUFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFdBQVcsS0FBSyxFQUFFLHFCQUFxQjtJQUN6RixjQUFjLEVBQUUsQ0FBQyxXQUFnQixFQUFFLEVBQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxXQUFXLEtBQUssRUFBRSxxQkFBcUI7SUFDekYsdUJBQXVCLEVBQUUsQ0FBQyxLQUFVLEVBQUUsUUFBYSxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsS0FBSyx5QkFBeUIsUUFBUSxFQUFFO0lBRW5ILGtCQUFrQjtJQUNsQixjQUFjLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBTyxFQUFFLFFBQWEsRUFBRSxFQUFFLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSx3QkFBd0IsUUFBUSxHQUFHO0lBRXJILGtCQUFrQjtJQUNsQixxQkFBcUIsRUFDcEIsMkdBQTJHO0lBQzVHLGtCQUFrQixFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsS0FBSyxHQUFHO0lBRW5FLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBRSxDQUFDLFdBQWdCLEVBQUUsRUFBRSxDQUFDLEdBQUcsV0FBVyxzQkFBc0I7SUFDNUUsZUFBZSxFQUFFLENBQUMsV0FBZ0IsRUFBRSxNQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsV0FBVyxJQUFJLE1BQU0sMkJBQTJCO0lBQ3ZHLFlBQVksRUFBRSxDQUFDLElBQVMsRUFBRSxRQUFhLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxFQUFFLENBQ3pELGFBQWEsSUFBSSxhQUFhLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksUUFBUSxFQUFFO0NBQy9ELENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBcUIsV0FBWSxTQUFRLEtBQUs7SUFDN0MsWUFBbUIsR0FBMEIsRUFBRSxHQUFHLElBQTBCO1FBQzNFLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUk7WUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sT0FBTyxHQUNaLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBMEIsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFTO0lBRXBCOztPQUVHO0lBQ0gsSUFBb0IsSUFBSTtRQUN2QixPQUFPLGdCQUFnQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDckMsQ0FBQztDQUNEO0FBckJELDhCQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IE1lc3NhZ2VzID0ge1xuXHQvLyBNb2R1bGUtcmVsYXRlZFxuXHRGSUxFX05PVF9GT1VORDogKGZpbGVuYW1lOiBhbnkpID0+IGBGaWxlICcke2ZpbGVuYW1lfScgbm90IGZvdW5kYCxcblx0TU9EVUxFX05PVF9GT1VORDogKGNvbnN0cnVjdG9yOiBhbnksIGlkOiBhbnkpID0+IGAke2NvbnN0cnVjdG9yfSAnJHtpZH0nIGRvZXMgbm90IGV4aXN0YCxcblx0QUxSRUFEWV9MT0FERUQ6IChjb25zdHJ1Y3RvcjogYW55LCBpZDogYW55KSA9PiBgJHtjb25zdHJ1Y3Rvcn0gJyR7aWR9JyBpcyBhbHJlYWR5IGxvYWRlZGAsXG5cdE5PVF9SRUxPQURBQkxFOiAoY29uc3RydWN0b3I6IGFueSwgaWQ6IGFueSkgPT4gYCR7Y29uc3RydWN0b3J9ICcke2lkfScgaXMgbm90IHJlbG9hZGFibGVgLFxuXHRJTlZBTElEX0NMQVNTX1RPX0hBTkRMRTogKGdpdmVuOiBhbnksIGV4cGVjdGVkOiBhbnkpID0+IGBDbGFzcyB0byBoYW5kbGUgJHtnaXZlbn0gaXMgbm90IGEgc3ViY2xhc3Mgb2YgJHtleHBlY3RlZH1gLFxuXG5cdC8vIENvbW1hbmQtcmVsYXRlZFxuXHRBTElBU19DT05GTElDVDogKGFsaWFzOiBhbnksIGlkOiBhbnksIGNvbmZsaWN0OiBhbnkpID0+IGBBbGlhcyAnJHthbGlhc30nIG9mICcke2lkfScgYWxyZWFkeSBleGlzdHMgb24gJyR7Y29uZmxpY3R9J2AsXG5cblx0Ly8gT3B0aW9ucy1yZWxhdGVkXG5cdENPTU1BTkRfVVRJTF9FWFBMSUNJVDpcblx0XHRcIlRoZSBjb21tYW5kIGhhbmRsZXIgb3B0aW9ucyBgaGFuZGxlRWRpdHNgIGFuZCBgc3RvcmVNZXNzYWdlc2AgcmVxdWlyZSB0aGUgYGNvbW1hbmRVdGlsYCBvcHRpb24gdG8gYmUgdHJ1ZVwiLFxuXHRVTktOT1dOX01BVENIX1RZUEU6IChtYXRjaDogYW55KSA9PiBgVW5rbm93biBtYXRjaCB0eXBlICcke21hdGNofSdgLFxuXG5cdC8vIEdlbmVyaWMgZXJyb3JzXG5cdE5PVF9JTlNUQU5USUFCTEU6IChjb25zdHJ1Y3RvcjogYW55KSA9PiBgJHtjb25zdHJ1Y3Rvcn0gaXMgbm90IGluc3RhbnRpYWJsZWAsXG5cdE5PVF9JTVBMRU1FTlRFRDogKGNvbnN0cnVjdG9yOiBhbnksIG1ldGhvZDogYW55KSA9PiBgJHtjb25zdHJ1Y3Rvcn0jJHttZXRob2R9IGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZGAsXG5cdElOVkFMSURfVFlQRTogKG5hbWU6IGFueSwgZXhwZWN0ZWQ6IGFueSwgdm93ZWwgPSBmYWxzZSkgPT5cblx0XHRgVmFsdWUgb2YgJyR7bmFtZX0nIHdhcyBub3QgJHt2b3dlbCA/IFwiYW5cIiA6IFwiYVwifSAke2V4cGVjdGVkfWBcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBlcnJvciBmb3IgQWthaXJvLlxuICogQHBhcmFtIGtleSAtIEVycm9yIGtleS5cbiAqIEBwYXJhbSBhcmdzIC0gQXJndW1lbnRzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBa2Fpcm9FcnJvciBleHRlbmRzIEVycm9yIHtcblx0cHVibGljIGNvbnN0cnVjdG9yKGtleToga2V5b2YgdHlwZW9mIE1lc3NhZ2VzLCAuLi5hcmdzOiAoc3RyaW5nIHwgYm9vbGVhbilbXSkge1xuXHRcdGlmIChNZXNzYWdlc1trZXldID09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoYEVycm9yIGtleSAnJHtrZXl9JyBkb2VzIG5vdCBleGlzdGApO1xuXHRcdGNvbnN0IG1lc3NhZ2UgPVxuXHRcdFx0dHlwZW9mIE1lc3NhZ2VzW2tleV0gPT09IFwiZnVuY3Rpb25cIiA/IChNZXNzYWdlc1trZXldIGFzICguLi5hOiBhbnlbXSkgPT4gYW55KSguLi5hcmdzKSA6IE1lc3NhZ2VzW2tleV07XG5cblx0XHRzdXBlcihtZXNzYWdlKTtcblx0XHR0aGlzLmNvZGUgPSBrZXk7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGVycm9yIGNvZGUuXG5cdCAqL1xuXHRwdWJsaWMgY29kZTogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgZXJyb3IgbmFtZS5cblx0ICovXG5cdHB1YmxpYyBvdmVycmlkZSBnZXQgbmFtZSgpIHtcblx0XHRyZXR1cm4gYEFrYWlyb0Vycm9yIFske3RoaXMuY29kZX1dYDtcblx0fVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWthaXJvRXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC9Ba2Fpcm9FcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU0sUUFBUSxHQUFHO0lBQ2hCLGlCQUFpQjtJQUNqQixjQUFjLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFNBQVMsUUFBUSxhQUFhO0lBQ2pFLGdCQUFnQixFQUFFLENBQUMsV0FBZ0IsRUFBRSxFQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsV0FBVyxLQUFLLEVBQUUsa0JBQWtCO0lBQ3hGLGNBQWMsRUFBRSxDQUFDLFdBQWdCLEVBQUUsRUFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFdBQVcsS0FBSyxFQUFFLHFCQUFxQjtJQUN6RixjQUFjLEVBQUUsQ0FBQyxXQUFnQixFQUFFLEVBQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxXQUFXLEtBQUssRUFBRSxxQkFBcUI7SUFDekYsdUJBQXVCLEVBQUUsQ0FBQyxLQUFVLEVBQUUsUUFBYSxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsS0FBSyx5QkFBeUIsUUFBUSxFQUFFO0lBRW5ILGtCQUFrQjtJQUNsQixjQUFjLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBTyxFQUFFLFFBQWEsRUFBRSxFQUFFLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSx3QkFBd0IsUUFBUSxHQUFHO0lBRXJILGtCQUFrQjtJQUNsQixxQkFBcUIsRUFDcEIsMkdBQTJHO0lBQzVHLGtCQUFrQixFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsS0FBSyxHQUFHO0lBRW5FLGlCQUFpQjtJQUNqQixnQkFBZ0IsRUFBRSxDQUFDLFdBQWdCLEVBQUUsRUFBRSxDQUFDLEdBQUcsV0FBVyxzQkFBc0I7SUFDNUUsZUFBZSxFQUFFLENBQUMsV0FBZ0IsRUFBRSxNQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsV0FBVyxJQUFJLE1BQU0sMkJBQTJCO0lBQ3ZHLFlBQVksRUFBRSxDQUFDLElBQVMsRUFBRSxRQUFhLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxFQUFFLENBQ3pELGFBQWEsSUFBSSxhQUFhLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksUUFBUSxFQUFFO0NBQy9ELENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBcUIsV0FBWSxTQUFRLEtBQUs7SUFDN0MsWUFBbUIsR0FBMEIsRUFBRSxHQUFHLElBQTBCO1FBQzNFLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUk7WUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sT0FBTyxHQUNaLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBMEIsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFTO0lBRXBCOztPQUVHO0lBQ0gsSUFBb0IsSUFBSTtRQUN2QixPQUFPLGdCQUFnQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDckMsQ0FBQztDQUNEO0FBckJELDhCQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IE1lc3NhZ2VzID0ge1xuXHQvLyBNb2R1bGUtcmVsYXRlZFxuXHRGSUxFX05PVF9GT1VORDogKGZpbGVuYW1lOiBhbnkpID0+IGBGaWxlICcke2ZpbGVuYW1lfScgbm90IGZvdW5kYCxcblx0TU9EVUxFX05PVF9GT1VORDogKGNvbnN0cnVjdG9yOiBhbnksIGlkOiBhbnkpID0+IGAke2NvbnN0cnVjdG9yfSAnJHtpZH0nIGRvZXMgbm90IGV4aXN0YCxcblx0QUxSRUFEWV9MT0FERUQ6IChjb25zdHJ1Y3RvcjogYW55LCBpZDogYW55KSA9PiBgJHtjb25zdHJ1Y3Rvcn0gJyR7aWR9JyBpcyBhbHJlYWR5IGxvYWRlZGAsXG5cdE5PVF9SRUxPQURBQkxFOiAoY29uc3RydWN0b3I6IGFueSwgaWQ6IGFueSkgPT4gYCR7Y29uc3RydWN0b3J9ICcke2lkfScgaXMgbm90IHJlbG9hZGFibGVgLFxuXHRJTlZBTElEX0NMQVNTX1RPX0hBTkRMRTogKGdpdmVuOiBhbnksIGV4cGVjdGVkOiBhbnkpID0+IGBDbGFzcyB0byBoYW5kbGUgJHtnaXZlbn0gaXMgbm90IGEgc3ViY2xhc3Mgb2YgJHtleHBlY3RlZH1gLFxuXG5cdC8vIENvbW1hbmQtcmVsYXRlZFxuXHRBTElBU19DT05GTElDVDogKGFsaWFzOiBhbnksIGlkOiBhbnksIGNvbmZsaWN0OiBhbnkpID0+IGBBbGlhcyAnJHthbGlhc30nIG9mICcke2lkfScgYWxyZWFkeSBleGlzdHMgb24gJyR7Y29uZmxpY3R9J2AsXG5cblx0Ly8gT3B0aW9ucy1yZWxhdGVkXG5cdENPTU1BTkRfVVRJTF9FWFBMSUNJVDpcblx0XHRcIlRoZSBjb21tYW5kIGhhbmRsZXIgb3B0aW9ucyBgaGFuZGxlRWRpdHNgIGFuZCBgc3RvcmVNZXNzYWdlc2AgcmVxdWlyZSB0aGUgYGNvbW1hbmRVdGlsYCBvcHRpb24gdG8gYmUgdHJ1ZVwiLFxuXHRVTktOT1dOX01BVENIX1RZUEU6IChtYXRjaDogYW55KSA9PiBgVW5rbm93biBtYXRjaCB0eXBlICcke21hdGNofSdgLFxuXG5cdC8vIEdlbmVyaWMgZXJyb3JzXG5cdE5PVF9JTlNUQU5USUFCTEU6IChjb25zdHJ1Y3RvcjogYW55KSA9PiBgJHtjb25zdHJ1Y3Rvcn0gaXMgbm90IGluc3RhbnRpYWJsZWAsXG5cdE5PVF9JTVBMRU1FTlRFRDogKGNvbnN0cnVjdG9yOiBhbnksIG1ldGhvZDogYW55KSA9PiBgJHtjb25zdHJ1Y3Rvcn0jJHttZXRob2R9IGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZGAsXG5cdElOVkFMSURfVFlQRTogKG5hbWU6IGFueSwgZXhwZWN0ZWQ6IGFueSwgdm93ZWwgPSBmYWxzZSkgPT5cblx0XHRgVmFsdWUgb2YgJyR7bmFtZX0nIHdhcyBub3QgJHt2b3dlbCA/IFwiYW5cIiA6IFwiYVwifSAke2V4cGVjdGVkfWBcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBlcnJvciBmb3IgQWthaXJvLlxuICogQHBhcmFtIGtleSAtIEVycm9yIGtleS5cbiAqIEBwYXJhbSBhcmdzIC0gQXJndW1lbnRzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBa2Fpcm9FcnJvciBleHRlbmRzIEVycm9yIHtcblx0cHVibGljIGNvbnN0cnVjdG9yKGtleToga2V5b2YgdHlwZW9mIE1lc3NhZ2VzLCAuLi5hcmdzOiAoc3RyaW5nIHwgYm9vbGVhbilbXSkge1xuXHRcdGlmIChNZXNzYWdlc1trZXldID09PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKGBFcnJvciBrZXkgJyR7a2V5fScgZG9lcyBub3QgZXhpc3RgKTtcblx0XHRjb25zdCBtZXNzYWdlID1cblx0XHRcdHR5cGVvZiBNZXNzYWdlc1trZXldID09PSBcImZ1bmN0aW9uXCIgPyAoTWVzc2FnZXNba2V5XSBhcyAoLi4uYTogYW55W10pID0+IGFueSkoLi4uYXJncykgOiBNZXNzYWdlc1trZXldO1xuXG5cdFx0c3VwZXIobWVzc2FnZSk7XG5cdFx0dGhpcy5jb2RlID0ga2V5O1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBlcnJvciBjb2RlLlxuXHQgKi9cblx0cHVibGljIGNvZGU6IHN0cmluZztcblxuXHQvKipcblx0ICogVGhlIGVycm9yIG5hbWUuXG5cdCAqL1xuXHRwdWJsaWMgb3ZlcnJpZGUgZ2V0IG5hbWUoKSB7XG5cdFx0cmV0dXJuIGBBa2Fpcm9FcnJvciBbJHt0aGlzLmNvZGV9XWA7XG5cdH1cbn1cbiJdfQ==

@@ -77,2 +77,9 @@ import { APIInteractionGuildMember, APIMessage } from "discord-api-types/v9";

/**
* Indicates whether this interaction is received from a guild.
*/
inGuild(): this is this & {
guild: Guild;
member: GuildMember;
};
/**
* Deletes the reply to the command.

@@ -79,0 +86,0 @@ */

@@ -24,9 +24,6 @@ "use strict";

if (interaction.command?.type === "CHAT_INPUT") {
// @ts-expect-error: djs stripped privates accidentally ig
if (interaction.options["_group"])
this.content += `group: ${interaction.options["_group"]}`;
// @ts-expect-error: djs stripped privates accidentally ig
if (interaction.options["_subcommand"])
this.content += `subcommand: ${interaction.options["_subcommand"]}`;
// @ts-expect-error: djs stripped privates accidentally ig
for (const option of interaction.options["_hoistedOptions"]) {

@@ -39,3 +36,2 @@ if (["SUB_COMMAND", "SUB_COMMAND_GROUP"].includes(option.type))

else if (interaction.command?.type === "MESSAGE") {
// @ts-expect-error: the method will exist if the type equals `MESSAGE`
this.content += ` message: ${interaction.options.getMessage("message").id}`;

@@ -70,3 +66,3 @@ }

get cleanContent() {
return this.content != null ? discord_js_1.Util.cleanContent(this.content, this.channel) : null;
return this.content !== null ? discord_js_1.Util.cleanContent(this.content, this.channel) : null;
}

@@ -124,2 +120,8 @@ /**

/**
* Indicates whether this interaction is received from a guild.
*/
inGuild() {
return Boolean(this.guildId && this.member);
}
/**
* Deletes the reply to the command.

@@ -139,2 +141,2 @@ */

exports.default = AkairoMessage;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWthaXJvTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsL0FrYWlyb01lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwyQ0FZb0I7QUFJcEI7Ozs7O0dBS0c7QUFDSCxNQUFxQixhQUFjLFNBQVEsaUJBQUk7SUFDOUMsWUFBbUIsTUFBb0IsRUFBRSxXQUErQjtRQUN2RSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFZCxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQzdGLFdBQVcsQ0FBQyxXQUNiLEVBQUUsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQ25DLElBQUksQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFFckIsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksS0FBSyxZQUFZLEVBQUU7WUFDL0MsMERBQTBEO1lBQzFELElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFR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LE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLE9BQTBEO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNEO0FBNUlELGdDQTRJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQSUludGVyYWN0aW9uR3VpbGRNZW1iZXIsIEFQSU1lc3NhZ2UgfSBmcm9tIFwiZGlzY29yZC1hcGktdHlwZXMvdjlcIjtcbmltcG9ydCB7XG5cdEJhc2UsXG5cdENvbW1hbmRJbnRlcmFjdGlvbixcblx0R3VpbGQsXG5cdEd1aWxkTWVtYmVyLFxuXHRJbnRlcmFjdGlvblJlcGx5T3B0aW9ucyxcblx0TWVzc2FnZSxcblx0TWVzc2FnZVBheWxvYWQsXG5cdFNub3dmbGFrZSxcblx0VGV4dEJhc2VkQ2hhbm5lbHMsXG5cdFVzZXIsXG5cdFV0aWxcbn0gZnJvbSBcImRpc2NvcmQuanNcIjtcbmltcG9ydCBBa2Fpcm9DbGllbnQgZnJvbSBcIi4uL3N0cnVjdC9Ba2Fpcm9DbGllbnRcIjtcbmltcG9ydCBDb21tYW5kVXRpbCBmcm9tIFwiLi4vc3RydWN0L2NvbW1hbmRzL0NvbW1hbmRVdGlsXCI7XG5cbi8qKlxuICogQSBjb21tYW5kIGludGVyYWN0aW9uIHJlcHJlc2VudGVkIGFzIGEgbWVzc2FnZS5cbiAqIEBwYXJhbSBjbGllbnQgLSBBa2Fpcm9DbGllbnRcbiAqIEBwYXJhbSBpbnRlcmFjdGlvbiAtIENvbW1hbmRJbnRlcmFjdGlvblxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCBvZiB0aGUgaW50ZXJhY3Rpb25cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWthaXJvTWVzc2FnZSBleHRlbmRzIEJhc2Uge1xuXHRwdWJsaWMgY29uc3RydWN0b3IoY2xpZW50OiBBa2Fpcm9DbGllbnQsIGludGVyYWN0aW9uOiBDb21tYW5kSW50ZXJhY3Rpb24pIHtcblx0XHRzdXBlcihjbGllbnQpO1xuXG5cdFx0dGhpcy5hdXRob3IgPSBpbnRlcmFjdGlvbi51c2VyO1xuXHRcdHRoaXMuYXBwbGljYXRpb25JZCA9IGludGVyYWN0aW9uLmFwcGxpY2F0aW9uSWQ7XG5cdFx0dGhpcy5jaGFubmVsSWQgPSBpbnRlcmFjdGlvbi5jaGFubmVsSWQ7XG5cdFx0dGhpcy5jb250ZW50ID0gYCR7IWludGVyYWN0aW9uLmNvbW1hbmQgfHwgaW50ZXJhY3Rpb24uY29tbWFuZC50eXBlID09PSBcIkNIQVRfSU5QVVRcIiA/IFwiL1wiIDogXCJcIn0ke1xuXHRcdFx0aW50ZXJhY3Rpb24uY29tbWFuZE5hbWVcblx0XHR9YDtcblx0XHR0aGlzLmNyZWF0ZWRUaW1lc3RhbXAgPSBpbnRlcmFjdGlvbi5jcmVhdGVkVGltZXN0YW1wO1xuXHRcdHRoaXMuZ3VpbGRJZCA9IGludGVyYWN0aW9uLmd1aWxkSWQ7XG5cdFx0dGhpcy5pZCA9IGludGVyYWN0aW9uLmlkO1xuXHRcdHRoaXMuaW50ZXJhY3Rpb24gPSBpbnRlcmFjdGlvbjtcblx0XHR0aGlzLm1lbWJlciA9IGludGVyYWN0aW9uLm1lbWJlcjtcblx0XHR0aGlzLnBhcnRpYWwgPSBmYWxzZTtcblxuXHRcdGlmIChpbnRlcmFjdGlvbi5jb21tYW5kPy50eXBlID09PSBcIkNIQVRfSU5QVVRcIikge1xuXHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvcjogZGpzIHN0cmlwcGVkIHByaXZhdGVzIGFjY2lkZW50YWxseSBpZ1xuXHRcdFx0aWYgKGludGVyYWN0aW9uLm9wdGlvbnNbXCJfZ3JvdXBcIl0pIHRoaXMuY29udGVudCArPSBgZ3JvdXA6ICR7aW50ZXJhY3Rpb24ub3B0aW9uc1tcIl9ncm91cFwiXX1gO1xuXHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvcjogZGpzIHN0cmlwcGVkIHByaXZhdGVzIGFjY2lkZW50YWxseSBpZ1xuXHRcdFx0aWYgKGludGVyYWN0aW9uLm9wdGlvbnNbXCJfc3ViY29tbWFuZFwiXSkgdGhpcy5jb250ZW50ICs9IGBzdWJjb21tYW5kOiAke2ludGVyYWN0aW9uLm9wdGlvbnNbXCJfc3ViY29tbWFuZFwiXX1gO1xuXHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvcjogZGpzIHN0cmlwcGVkIHByaXZhdGVzIGFjY2lkZW50YWxseSBpZ1xuXHRcdFx0Zm9yIChjb25zdCBvcHRpb24gb2YgaW50ZXJhY3Rpb24ub3B0aW9uc1tcIl9ob2lzdGVkT3B0aW9uc1wiXSkge1xuXHRcdFx0XHRpZiAoW1wiU1VCX0NPTU1BTkRcIiwgXCJTVUJfQ09NTUFORF9HUk9VUFwiXS5pbmNsdWRlcyhvcHRpb24udHlwZSkpIGNvbnRpbnVlO1xuXHRcdFx0XHR0aGlzLmNvbnRlbnQgKz0gYCAke29wdGlvbi5uYW1lfTogJHtpbnRlcmFjdGlvbi5vcHRpb25zLmdldChvcHRpb24ubmFtZSwgZmFsc2UpPy52YWx1ZX1gO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoaW50ZXJhY3Rpb24uY29tbWFuZD8udHlwZSA9PT0gXCJNRVNTQUdFXCIpIHtcblx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3I6IHRoZSBtZXRob2Qgd2lsbCBleGlzdCBpZiB0aGUgdHlwZSBlcXVhbHMgYE1FU1NBR0VgXG5cdFx0XHR0aGlzLmNvbnRlbnQgKz0gYCBtZXNzYWdlOiAke2ludGVyYWN0aW9uLm9wdGlvbnMuZ2V0TWVzc2FnZShcIm1lc3NhZ2VcIikhLmlkfWA7XG5cdFx0fSBlbHNlIGlmIChpbnRlcmFjdGlvbi5jb21tYW5kPy50eXBlID09PSBcIlVTRVJcIikge1xuXHRcdFx0dGhpcy5jb250ZW50ICs9IGAgbWVzc2FnZTogJHtpbnRlcmFjdGlvbi5vcHRpb25zLmdldFVzZXIoXCJ1c2VyXCIpIS5pZH1gO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgYXV0aG9yIG9mIHRoZSBpbnRlcmFjdGlvbi5cblx0ICovXG5cdHB1YmxpYyBhdXRob3I6IFVzZXI7XG5cblx0LyoqXG5cdCAqIFRoZSBhcHBsaWNhdGlvbidzIGlkXG5cdCAqL1xuXHRwdWJsaWMgYXBwbGljYXRpb25JZDogU25vd2ZsYWtlO1xuXG5cdC8qKlxuXHQgKiBUaGUgY2hhbm5lbCB0aGF0IHRoZSBpbnRlcmFjdGlvbiB3YXMgc2VudCBpbi5cblx0ICovXG5cdHB1YmxpYyBnZXQgY2hhbm5lbCgpOiBUZXh0QmFzZWRDaGFubmVscyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmludGVyYWN0aW9uLmNoYW5uZWw7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGlkIG9mIHRoZSBjaGFubmVsIHRoaXMgaW50ZXJhY3Rpb24gd2FzIHNlbnQgaW5cblx0ICovXG5cdHB1YmxpYyBjaGFubmVsSWQ6IFNub3dmbGFrZSB8IG51bGw7XG5cblx0LyoqXG5cdCAqIFRoZSBtZXNzYWdlIGNvbnRlbnRzIHdpdGggYWxsIG1lbnRpb25zIHJlcGxhY2VkIGJ5IHRoZSBlcXVpdmFsZW50IHRleHQuXG5cdCAqIElmIG1lbnRpb25zIGNhbm5vdCBiZSByZXNvbHZlZCB0byBhIG5hbWUsIHRoZSByZWxldmFudCBtZW50aW9uIGluIHRoZSBtZXNzYWdlIGNvbnRlbnQgd2lsbCBub3QgYmUgY29udmVydGVkLlxuXHQgKi9cblx0cHVibGljIGdldCBjbGVhbkNvbnRlbnQoKTogc3RyaW5nIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudCAhPSBudWxsID8gVXRpbC5jbGVhbkNvbnRlbnQodGhpcy5jb250ZW50LCB0aGlzLmNoYW5uZWwhKSA6IG51bGw7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGNvbW1hbmQgbmFtZSBhbmQgYXJndW1lbnRzIHJlcHJlc2VudGVkIGFzIGEgc3RyaW5nLlxuXHQgKi9cblx0cHVibGljIGNvbnRlbnQ6IHN0cmluZztcblxuXHQvKipcblx0ICogVGhlIHRpbWUgdGhlIG1lc3NhZ2Ugd2FzIHNlbnQgYXRcblx0ICovXG5cdHB1YmxpYyBnZXQgY3JlYXRlZEF0KCk6IERhdGUge1xuXHRcdHJldHVybiB0aGlzLmludGVyYWN0aW9uLmNyZWF0ZWRBdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgdGltZXN0YW1wIHRoZSBpbnRlcmFjdGlvbiB3YXMgc2VudCBhdC5cblx0ICovXG5cdHB1YmxpYyBjcmVhdGVkVGltZXN0YW1wOiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIFRoZSBndWlsZCB0aGUgaW50ZXJhY3Rpb24gd2FzIHNlbnQgaW4gKGlmIGluIGEgZ3VpbGQgY2hhbm5lbCkuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0IGd1aWxkKCk6IEd1aWxkIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMuaW50ZXJhY3Rpb24uZ3VpbGQ7XG5cdH1cblxuXHRwdWJsaWMgZ3VpbGRJZDogU25vd2ZsYWtlIHwgbnVsbDtcblxuXHQvKipcblx0ICogVGhlIElEIG9mIHRoZSBpbnRlcmFjdGlvbi5cblx0ICovXG5cdHB1YmxpYyBpZDogU25vd2ZsYWtlO1xuXG5cdC8qKlxuXHQgKiBUaGUgY29tbWFuZCBpbnRlcmFjdGlvbi5cblx0ICovXG5cdHB1YmxpYyBpbnRlcmFjdGlvbjogQ29tbWFuZEludGVyYWN0aW9uO1xuXG5cdC8qKlxuXHQgKiBSZXByZXNlbnRzIHRoZSBhdXRob3Igb2YgdGhlIGludGVyYWN0aW9uIGFzIGEgZ3VpbGQgbWVtYmVyLlxuXHQgKiBPbmx5IGF2YWlsYWJsZSBpZiB0aGUgaW50ZXJhY3Rpb24gY29tZXMgZnJvbSBhIGd1aWxkIHdoZXJlIHRoZSBhdXRob3IgaXMgc3RpbGwgYSBtZW1iZXIuXG5cdCAqL1xuXHRwdWJsaWMgbWVtYmVyOiBHdWlsZE1lbWJlciB8IEFQSUludGVyYWN0aW9uR3VpbGRNZW1iZXIgfCBudWxsO1xuXG5cdC8qKlxuXHQgKiBXaGV0aGVyIG9yIG5vdCB0aGlzIG1lc3NhZ2UgaXMgYSBwYXJ0aWFsXG5cdCAqL1xuXHRwdWJsaWMgcmVhZG9ubHkgcGFydGlhbDogZmFsc2U7XG5cblx0LyoqXG5cdCAqIFV0aWxpdGllcyBmb3IgY29tbWFuZCByZXNwb25kaW5nLlxuXHQgKi9cblx0cHVibGljIHV0aWwhOiBDb21tYW5kVXRpbDxBa2Fpcm9NZXNzYWdlPjtcblxuXHQvKipcblx0ICogVGhlIHVybCB0byBqdW1wIHRvIHRoaXMgbWVzc2FnZVxuXHQgKi9cblx0cHVibGljIGdldCB1cmwoKTogc3RyaW5nIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMuaW50ZXJhY3Rpb24uZXBoZW1lcmFsXG5cdFx0XHQ/IG51bGxcblx0XHRcdDogYGh0dHBzOi8vZGlzY29yZC5jb20vY2hhbm5lbHMvJHt0aGlzLmd1aWxkID8gdGhpcy5ndWlsZC5pZCA6IFwiQG1lXCJ9LyR7dGhpcy5jaGFubmVsPy5pZH0vJHt0aGlzLmlkfWA7XG5cdH1cblxuXHQvKipcblx0ICogRGVsZXRlcyB0aGUgcmVwbHkgdG8gdGhlIGNvbW1hbmQuXG5cdCAqL1xuXHRwdWJsaWMgZGVsZXRlKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiB0aGlzLmludGVyYWN0aW9uLmRlbGV0ZVJlcGx5KCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVwbGllcyBvciBlZGl0cyB0aGUgcmVwbHkgb2YgdGhlIHNsYXNoIGNvbW1hbmQuXG5cdCAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHRvIGVkaXQgdGhlIHJlcGx5LlxuXHQgKi9cblx0cHVibGljIHJlcGx5KG9wdGlvbnM6IHN0cmluZyB8IE1lc3NhZ2VQYXlsb2FkIHwgSW50ZXJhY3Rpb25SZXBseU9wdGlvbnMpOiBQcm9taXNlPE1lc3NhZ2UgfCBBUElNZXNzYWdlPiB7XG5cdFx0cmV0dXJuIHRoaXMudXRpbC5yZXBseShvcHRpb25zKTtcblx0fVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWthaXJvTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsL0FrYWlyb01lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSwyQ0Fhb0I7QUFJcEI7Ozs7O0dBS0c7QUFDSCxNQUFxQixhQUFjLFNBQVEsaUJBQUk7SUFDOUMsWUFBbUIsTUFBb0IsRUFBRSxXQUErQjtRQUN2RSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFZCxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQzdGLFdBQVcsQ0FBQyxXQUNiLEVBQUUsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQ25DLElBQUksQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFFckIsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksS0FBSyxZQUFZLEVBQUU7WUFDL0MsSUFBSyxXQUFXLENBQUMsT0FBNEMsQ0FBQyxRQUFRLENBQUM7Z0JBQ3RF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QUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLE9BQTBEO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNEO0FBbkpELGdDQW1KQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQSUludGVyYWN0aW9uR3VpbGRNZW1iZXIsIEFQSU1lc3NhZ2UgfSBmcm9tIFwiZGlzY29yZC1hcGktdHlwZXMvdjlcIjtcbmltcG9ydCB7XG5cdEJhc2UsXG5cdENvbW1hbmRJbnRlcmFjdGlvbixcblx0Q29tbWFuZEludGVyYWN0aW9uT3B0aW9uUmVzb2x2ZXIsXG5cdEd1aWxkLFxuXHRHdWlsZE1lbWJlcixcblx0SW50ZXJhY3Rpb25SZXBseU9wdGlvbnMsXG5cdE1lc3NhZ2UsXG5cdE1lc3NhZ2VQYXlsb2FkLFxuXHRTbm93Zmxha2UsXG5cdFRleHRCYXNlZENoYW5uZWxzLFxuXHRVc2VyLFxuXHRVdGlsXG59IGZyb20gXCJkaXNjb3JkLmpzXCI7XG5pbXBvcnQgQWthaXJvQ2xpZW50IGZyb20gXCIuLi9zdHJ1Y3QvQWthaXJvQ2xpZW50XCI7XG5pbXBvcnQgQ29tbWFuZFV0aWwgZnJvbSBcIi4uL3N0cnVjdC9jb21tYW5kcy9Db21tYW5kVXRpbFwiO1xuXG4vKipcbiAqIEEgY29tbWFuZCBpbnRlcmFjdGlvbiByZXByZXNlbnRlZCBhcyBhIG1lc3NhZ2UuXG4gKiBAcGFyYW0gY2xpZW50IC0gQWthaXJvQ2xpZW50XG4gKiBAcGFyYW0gaW50ZXJhY3Rpb24gLSBDb21tYW5kSW50ZXJhY3Rpb25cbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgb2YgdGhlIGludGVyYWN0aW9uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFrYWlyb01lc3NhZ2UgZXh0ZW5kcyBCYXNlIHtcblx0cHVibGljIGNvbnN0cnVjdG9yKGNsaWVudDogQWthaXJvQ2xpZW50LCBpbnRlcmFjdGlvbjogQ29tbWFuZEludGVyYWN0aW9uKSB7XG5cdFx0c3VwZXIoY2xpZW50KTtcblxuXHRcdHRoaXMuYXV0aG9yID0gaW50ZXJhY3Rpb24udXNlcjtcblx0XHR0aGlzLmFwcGxpY2F0aW9uSWQgPSBpbnRlcmFjdGlvbi5hcHBsaWNhdGlvbklkO1xuXHRcdHRoaXMuY2hhbm5lbElkID0gaW50ZXJhY3Rpb24uY2hhbm5lbElkO1xuXHRcdHRoaXMuY29udGVudCA9IGAkeyFpbnRlcmFjdGlvbi5jb21tYW5kIHx8IGludGVyYWN0aW9uLmNvbW1hbmQudHlwZSA9PT0gXCJDSEFUX0lOUFVUXCIgPyBcIi9cIiA6IFwiXCJ9JHtcblx0XHRcdGludGVyYWN0aW9uLmNvbW1hbmROYW1lXG5cdFx0fWA7XG5cdFx0dGhpcy5jcmVhdGVkVGltZXN0YW1wID0gaW50ZXJhY3Rpb24uY3JlYXRlZFRpbWVzdGFtcDtcblx0XHR0aGlzLmd1aWxkSWQgPSBpbnRlcmFjdGlvbi5ndWlsZElkO1xuXHRcdHRoaXMuaWQgPSBpbnRlcmFjdGlvbi5pZDtcblx0XHR0aGlzLmludGVyYWN0aW9uID0gaW50ZXJhY3Rpb247XG5cdFx0dGhpcy5tZW1iZXIgPSBpbnRlcmFjdGlvbi5tZW1iZXI7XG5cdFx0dGhpcy5wYXJ0aWFsID0gZmFsc2U7XG5cblx0XHRpZiAoaW50ZXJhY3Rpb24uY29tbWFuZD8udHlwZSA9PT0gXCJDSEFUX0lOUFVUXCIpIHtcblx0XHRcdGlmICgoaW50ZXJhY3Rpb24ub3B0aW9ucyBhcyBDb21tYW5kSW50ZXJhY3Rpb25PcHRpb25SZXNvbHZlcilbXCJfZ3JvdXBcIl0pXG5cdFx0XHRcdHRoaXMuY29udGVudCArPSBgZ3JvdXA6ICR7KGludGVyYWN0aW9uLm9wdGlvbnMgYXMgQ29tbWFuZEludGVyYWN0aW9uT3B0aW9uUmVzb2x2ZXIpW1wiX2dyb3VwXCJdfWA7XG5cdFx0XHRpZiAoKGludGVyYWN0aW9uLm9wdGlvbnMgYXMgQ29tbWFuZEludGVyYWN0aW9uT3B0aW9uUmVzb2x2ZXIpW1wiX3N1YmNvbW1hbmRcIl0pXG5cdFx0XHRcdHRoaXMuY29udGVudCArPSBgc3ViY29tbWFuZDogJHsoaW50ZXJhY3Rpb24ub3B0aW9ucyBhcyBDb21tYW5kSW50ZXJhY3Rpb25PcHRpb25SZXNvbHZlcilbXCJfc3ViY29tbWFuZFwiXX1gO1xuXHRcdFx0Zm9yIChjb25zdCBvcHRpb24gb2YgKGludGVyYWN0aW9uLm9wdGlvbnMgYXMgQ29tbWFuZEludGVyYWN0aW9uT3B0aW9uUmVzb2x2ZXIpW1wiX2hvaXN0ZWRPcHRpb25zXCJdKSB7XG5cdFx0XHRcdGlmIChbXCJTVUJfQ09NTUFORFwiLCBcIlNVQl9DT01NQU5EX0dST1VQXCJdLmluY2x1ZGVzKG9wdGlvbi50eXBlKSkgY29udGludWU7XG5cdFx0XHRcdHRoaXMuY29udGVudCArPSBgICR7b3B0aW9uLm5hbWV9OiAke2ludGVyYWN0aW9uLm9wdGlvbnMuZ2V0KG9wdGlvbi5uYW1lLCBmYWxzZSk/LnZhbHVlfWA7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChpbnRlcmFjdGlvbi5jb21tYW5kPy50eXBlID09PSBcIk1FU1NBR0VcIikge1xuXHRcdFx0dGhpcy5jb250ZW50ICs9IGAgbWVzc2FnZTogJHtcblx0XHRcdFx0KGludGVyYWN0aW9uLm9wdGlvbnMgYXMgQ29tbWFuZEludGVyYWN0aW9uT3B0aW9uUmVzb2x2ZXIpLmdldE1lc3NhZ2UoXCJtZXNzYWdlXCIpIS5pZFxuXHRcdFx0fWA7XG5cdFx0fSBlbHNlIGlmIChpbnRlcmFjdGlvbi5jb21tYW5kPy50eXBlID09PSBcIlVTRVJcIikge1xuXHRcdFx0dGhpcy5jb250ZW50ICs9IGAgbWVzc2FnZTogJHtpbnRlcmFjdGlvbi5vcHRpb25zLmdldFVzZXIoXCJ1c2VyXCIpIS5pZH1gO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgYXV0aG9yIG9mIHRoZSBpbnRlcmFjdGlvbi5cblx0ICovXG5cdHB1YmxpYyBhdXRob3I6IFVzZXI7XG5cblx0LyoqXG5cdCAqIFRoZSBhcHBsaWNhdGlvbidzIGlkXG5cdCAqL1xuXHRwdWJsaWMgYXBwbGljYXRpb25JZDogU25vd2ZsYWtlO1xuXG5cdC8qKlxuXHQgKiBUaGUgY2hhbm5lbCB0aGF0IHRoZSBpbnRlcmFjdGlvbiB3YXMgc2VudCBpbi5cblx0ICovXG5cdHB1YmxpYyBnZXQgY2hhbm5lbCgpOiBUZXh0QmFzZWRDaGFubmVscyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmludGVyYWN0aW9uLmNoYW5uZWw7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGlkIG9mIHRoZSBjaGFubmVsIHRoaXMgaW50ZXJhY3Rpb24gd2FzIHNlbnQgaW5cblx0ICovXG5cdHB1YmxpYyBjaGFubmVsSWQ6IFNub3dmbGFrZSB8IG51bGw7XG5cblx0LyoqXG5cdCAqIFRoZSBtZXNzYWdlIGNvbnRlbnRzIHdpdGggYWxsIG1lbnRpb25zIHJlcGxhY2VkIGJ5IHRoZSBlcXVpdmFsZW50IHRleHQuXG5cdCAqIElmIG1lbnRpb25zIGNhbm5vdCBiZSByZXNvbHZlZCB0byBhIG5hbWUsIHRoZSByZWxldmFudCBtZW50aW9uIGluIHRoZSBtZXNzYWdlIGNvbnRlbnQgd2lsbCBub3QgYmUgY29udmVydGVkLlxuXHQgKi9cblx0cHVibGljIGdldCBjbGVhbkNvbnRlbnQoKTogc3RyaW5nIHwgbnVsbCB7XG5cdFx0cmV0dXJuIHRoaXMuY29udGVudCAhPT0gbnVsbCA/IFV0aWwuY2xlYW5Db250ZW50KHRoaXMuY29udGVudCwgdGhpcy5jaGFubmVsISkgOiBudWxsO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBjb21tYW5kIG5hbWUgYW5kIGFyZ3VtZW50cyByZXByZXNlbnRlZCBhcyBhIHN0cmluZy5cblx0ICovXG5cdHB1YmxpYyBjb250ZW50OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFRoZSB0aW1lIHRoZSBtZXNzYWdlIHdhcyBzZW50IGF0XG5cdCAqL1xuXHRwdWJsaWMgZ2V0IGNyZWF0ZWRBdCgpOiBEYXRlIHtcblx0XHRyZXR1cm4gdGhpcy5pbnRlcmFjdGlvbi5jcmVhdGVkQXQ7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIHRpbWVzdGFtcCB0aGUgaW50ZXJhY3Rpb24gd2FzIHNlbnQgYXQuXG5cdCAqL1xuXHRwdWJsaWMgY3JlYXRlZFRpbWVzdGFtcDogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBUaGUgZ3VpbGQgdGhlIGludGVyYWN0aW9uIHdhcyBzZW50IGluIChpZiBpbiBhIGd1aWxkIGNoYW5uZWwpLlxuXHQgKi9cblx0cHVibGljIGdldCBndWlsZCgpOiBHdWlsZCB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmludGVyYWN0aW9uLmd1aWxkO1xuXHR9XG5cblx0cHVibGljIGd1aWxkSWQ6IFNub3dmbGFrZSB8IG51bGw7XG5cblx0LyoqXG5cdCAqIFRoZSBJRCBvZiB0aGUgaW50ZXJhY3Rpb24uXG5cdCAqL1xuXHRwdWJsaWMgaWQ6IFNub3dmbGFrZTtcblxuXHQvKipcblx0ICogVGhlIGNvbW1hbmQgaW50ZXJhY3Rpb24uXG5cdCAqL1xuXHRwdWJsaWMgaW50ZXJhY3Rpb246IENvbW1hbmRJbnRlcmFjdGlvbjtcblxuXHQvKipcblx0ICogUmVwcmVzZW50cyB0aGUgYXV0aG9yIG9mIHRoZSBpbnRlcmFjdGlvbiBhcyBhIGd1aWxkIG1lbWJlci5cblx0ICogT25seSBhdmFpbGFibGUgaWYgdGhlIGludGVyYWN0aW9uIGNvbWVzIGZyb20gYSBndWlsZCB3aGVyZSB0aGUgYXV0aG9yIGlzIHN0aWxsIGEgbWVtYmVyLlxuXHQgKi9cblx0cHVibGljIG1lbWJlcjogR3VpbGRNZW1iZXIgfCBBUElJbnRlcmFjdGlvbkd1aWxkTWVtYmVyIHwgbnVsbDtcblxuXHQvKipcblx0ICogV2hldGhlciBvciBub3QgdGhpcyBtZXNzYWdlIGlzIGEgcGFydGlhbFxuXHQgKi9cblx0cHVibGljIHJlYWRvbmx5IHBhcnRpYWw6IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBVdGlsaXRpZXMgZm9yIGNvbW1hbmQgcmVzcG9uZGluZy5cblx0ICovXG5cdHB1YmxpYyB1dGlsITogQ29tbWFuZFV0aWw8QWthaXJvTWVzc2FnZT47XG5cblx0LyoqXG5cdCAqIFRoZSB1cmwgdG8ganVtcCB0byB0aGlzIG1lc3NhZ2Vcblx0ICovXG5cdHB1YmxpYyBnZXQgdXJsKCk6IHN0cmluZyB8IG51bGwge1xuXHRcdHJldHVybiB0aGlzLmludGVyYWN0aW9uLmVwaGVtZXJhbFxuXHRcdFx0PyBudWxsXG5cdFx0XHQ6IGBodHRwczovL2Rpc2NvcmQuY29tL2NoYW5uZWxzLyR7dGhpcy5ndWlsZCA/IHRoaXMuZ3VpbGQuaWQgOiBcIkBtZVwifS8ke3RoaXMuY2hhbm5lbD8uaWR9LyR7dGhpcy5pZH1gO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgaW50ZXJhY3Rpb24gaXMgcmVjZWl2ZWQgZnJvbSBhIGd1aWxkLlxuXHQgKi9cblx0cHVibGljIGluR3VpbGQoKTogdGhpcyBpcyB0aGlzICYgeyBndWlsZDogR3VpbGQ7IG1lbWJlcjogR3VpbGRNZW1iZXIgfSB7XG5cdFx0cmV0dXJuIEJvb2xlYW4odGhpcy5ndWlsZElkICYmIHRoaXMubWVtYmVyKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIHRoZSByZXBseSB0byB0aGUgY29tbWFuZC5cblx0ICovXG5cdHB1YmxpYyBkZWxldGUoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0cmV0dXJuIHRoaXMuaW50ZXJhY3Rpb24uZGVsZXRlUmVwbHkoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXBsaWVzIG9yIGVkaXRzIHRoZSByZXBseSBvZiB0aGUgc2xhc2ggY29tbWFuZC5cblx0ICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgdG8gZWRpdCB0aGUgcmVwbHkuXG5cdCAqL1xuXHRwdWJsaWMgcmVwbHkob3B0aW9uczogc3RyaW5nIHwgTWVzc2FnZVBheWxvYWQgfCBJbnRlcmFjdGlvblJlcGx5T3B0aW9ucyk6IFByb21pc2U8TWVzc2FnZSB8IEFQSU1lc3NhZ2U+IHtcblx0XHRyZXR1cm4gdGhpcy51dGlsLnJlcGx5KG9wdGlvbnMpO1xuXHR9XG59XG4iXX0=

@@ -13,3 +13,3 @@ "use strict";

for (const x of xs) {
if (x != null) {
if (x !== null) {
return x;

@@ -110,2 +110,2 @@ }

exports.default = Util;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsL1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQTs7R0FFRztBQUNILE1BQXFCLElBQUk7SUFDeEI7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBSSxHQUFHLEVBQU87UUFDakMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxDQUFDO2FBQ1Q7U0FDRDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFPLE1BQVMsRUFBRSxHQUFHLEVBQU87UUFDbkQsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sYUFBYSxHQUFHLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7Z0JBQ3pELE1BQU0saUJBQWlCLEdBQ3RCLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO29CQUNqRCxNQUFNLENBQUMsR0FBMEIsQ0FBQztvQkFDbEMsT0FBTyxNQUFNLENBQUMsR0FBMEIsQ0FBQyxLQUFLLFFBQVEsQ0FBQztnQkFDeEQsSUFBSSxhQUFhLElBQUksaUJBQWlCLEVBQUU7b0JBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQTBCLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDM0Q7cUJBQU07b0JBQ04sTUFBTSxDQUFDLEdBQTBCLENBQUMsR0FBRyxLQUFLLENBQUM7aUJBQzNDO2FBQ0Q7U0FDRDtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUluQixRQUF3QixFQUFFLE1BQVk7UUFDdkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssTUFBTSxDQUFDLElBQUksUUFBUSxFQUFFO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxQjtRQUVELE9BQU8sTUFBeUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FBSSxDQUFVO1FBQ3BDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyQixPQUFPLENBQUMsQ0FBQztTQUNUO1FBRUQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUksS0FBa0M7UUFDL0QsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7WUFDaEMsT0FBTyxLQUFnQixDQUFDO1NBQ3hCO1FBRUQsT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBVTtRQUN0QyxPQUFPLEtBQUssSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLEtBQUssVUFBVSxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUNqQyxPQUFPLEtBQUssSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUM7SUFDdkYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUMxQixJQUF3QyxFQUN4QyxJQUF3QztRQUV4QyxJQUFJLElBQUksS0FBSyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUU7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6QyxJQUFJLElBQUksS0FBSyxFQUFFO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUIsSUFBSSxJQUFJLEtBQUssRUFBRTtZQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLElBQUksT0FBTyxJQUFJLEtBQUssVUFBVTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksT0FBTyxJQUFJLEtBQUssVUFBVTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLElBQUksT0FBTyxJQUFJLEtBQUssVUFBVTtZQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMzRixDQUFDO0NBQ0Q7QUFsSEQsdUJBa0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tIFwiZXZlbnRzXCI7XG5cbi8qKlxuICogQWthaXJvIFV0aWxpdGllcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXRpbCB7XG5cdC8qKlxuXHQgKiBDaG9vc2UgdGhlIGZpcnN0IG5vbi1udWxsIGVsZW1lbnQgaW4gYW4gYXJyYXlcblx0ICogQHBhcmFtIHhzXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNob2ljZTxUPiguLi54czogVFtdKTogVCB8IG51bGwge1xuXHRcdGZvciAoY29uc3QgeCBvZiB4cykge1xuXHRcdFx0aWYgKHggIT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm4geDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWVwIGFzc2lnbiBwcm9wZXJ0aWVzIHRvIGFuIG9iamVjdC5cblx0ICogQHBhcmFtIHRhcmdldFxuXHQgKiBAcGFyYW0gb3Ncblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZGVlcEFzc2lnbjxBLCBCPih0YXJnZXQ6IEEsIC4uLm9zOiBCW10pIHtcblx0XHRmb3IgKGNvbnN0IG8gb2Ygb3MpIHtcblx0XHRcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG8pKSB7XG5cdFx0XHRcdGNvbnN0IHZhbHVlSXNPYmplY3QgPSB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG5cdFx0XHRcdGNvbnN0IHRhcmdldEtleUlzT2JqZWN0ID1cblx0XHRcdFx0XHRPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGFyZ2V0LCBrZXkpICYmXG5cdFx0XHRcdFx0dGFyZ2V0W2tleSBhcyBrZXlvZiB0eXBlb2YgdGFyZ2V0XSAmJlxuXHRcdFx0XHRcdHR5cGVvZiB0YXJnZXRba2V5IGFzIGtleW9mIHR5cGVvZiB0YXJnZXRdID09PSBcIm9iamVjdFwiO1xuXHRcdFx0XHRpZiAodmFsdWVJc09iamVjdCAmJiB0YXJnZXRLZXlJc09iamVjdCkge1xuXHRcdFx0XHRcdFV0aWwuZGVlcEFzc2lnbih0YXJnZXRba2V5IGFzIGtleW9mIHR5cGVvZiB0YXJnZXRdLCB2YWx1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGFyZ2V0W2tleSBhcyBrZXlvZiB0eXBlb2YgdGFyZ2V0XSA9IHZhbHVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRhcmdldDtcblx0fVxuXG5cdC8qKlxuXHQgKiBNYXAgYW4gaXRlcmFibGUgb2JqZWN0IGFuZCB0aGVuIGZsYXR0ZW4gaXQgaXQgaW50byBhbiBhcnJheVxuXHQgKiBAcGFyYW0gaXRlcmFibGUgLSB0aGUgb2JqZWN0IHRvIG1hcCBhbmQgZmxhdHRlblxuXHQgKiBAcGFyYW0gZmlsdGVyIC0gdGhlIGZpbHRlciB0byBtYXAgd2l0aFxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBmbGF0TWFwPFxuXHRcdFR5cGUsXG5cdFx0UmV0IGV4dGVuZHMgeyBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYXRvcjx1bmtub3duPiB9LFxuXHRcdEZ1bmMgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IFJldFxuXHQ+KGl0ZXJhYmxlOiBJdGVyYWJsZTxUeXBlPiwgZmlsdGVyOiBGdW5jKTogVHlwZSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gW107XG5cdFx0Zm9yIChjb25zdCB4IG9mIGl0ZXJhYmxlKSB7XG5cdFx0XHRyZXN1bHQucHVzaCguLi5maWx0ZXIoeCkpO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQgYXMgdW5rbm93biBhcyBUeXBlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIHRoZSBzdXBwbGllZCB2YWx1ZSBpbnRvIGFuIGFycmF5IGlmIGl0IGlzIG5vdCBhbHJlYWR5IG9uZS5cblx0ICogQHBhcmFtIHggLSBWYWx1ZSB0byBjb252ZXJ0LlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpbnRvQXJyYXk8VD4oeDogVCB8IFRbXSk6IFRbXSB7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoeCkpIHtcblx0XHRcdHJldHVybiB4O1xuXHRcdH1cblxuXHRcdHJldHVybiBbeF07XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgc29tZXRoaW5nIHRvIGJlY29tZSBjYWxsYWJsZS5cblx0ICogQHBhcmFtIHRoaW5nIC0gV2hhdCB0byB0dXJuIGludG8gYSBjYWxsYWJsZS5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaW50b0NhbGxhYmxlPFQ+KHRoaW5nOiBUIHwgKCguLi5hcmdzOiBhbnlbXSkgPT4gVCkpOiAoLi4uYXJnczogYW55W10pID0+IFQge1xuXHRcdGlmICh0eXBlb2YgdGhpbmcgPT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0cmV0dXJuIHRoaW5nIGFzICgpID0+IFQ7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICgpID0+IHRoaW5nO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgc3VwcGxpZWQgdmFsdWUgaXMgYW4gZXZlbnQgZW1pdHRlci5cblx0ICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gY2hlY2suXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGlzRXZlbnRFbWl0dGVyKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBFdmVudEVtaXR0ZXIge1xuXHRcdHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUub24gPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgdmFsdWUuZW1pdCA9PT0gXCJmdW5jdGlvblwiO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGUgc3VwcGxpZWQgdmFsdWUgaXMgYSBwcm9taXNlLlxuXHQgKiBAcGFyYW0gdmFsdWUgLSBWYWx1ZSB0byBjaGVjay5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaXNQcm9taXNlKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBQcm9taXNlPGFueT4ge1xuXHRcdHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiB2YWx1ZS5jYXRjaCA9PT0gXCJmdW5jdGlvblwiO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbXBhcmVzIHR3byBwcmVmaXhlcy5cblx0ICogQHBhcmFtIGFLZXkgLSBGaXJzdCBwcmVmaXguXG5cdCAqIEBwYXJhbSBiS2V5IC0gU2Vjb25kIHByZWZpeC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgcHJlZml4Q29tcGFyZShcblx0XHRhS2V5OiBzdHJpbmcgfCAoKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpLFxuXHRcdGJLZXk6IHN0cmluZyB8ICgoLi4uYXJnczogYW55W10pID0+IGFueSlcblx0KTogbnVtYmVyIHtcblx0XHRpZiAoYUtleSA9PT0gXCJcIiAmJiBiS2V5ID09PSBcIlwiKSByZXR1cm4gMDtcblx0XHRpZiAoYUtleSA9PT0gXCJcIikgcmV0dXJuIDE7XG5cdFx0aWYgKGJLZXkgPT09IFwiXCIpIHJldHVybiAtMTtcblx0XHRpZiAodHlwZW9mIGFLZXkgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgYktleSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gMDtcblx0XHRpZiAodHlwZW9mIGFLZXkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIDE7XG5cdFx0aWYgKHR5cGVvZiBiS2V5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiAtMTtcblx0XHRyZXR1cm4gYUtleS5sZW5ndGggPT09IGJLZXkubGVuZ3RoID8gYUtleS5sb2NhbGVDb21wYXJlKGJLZXkpIDogYktleS5sZW5ndGggLSBhS2V5Lmxlbmd0aDtcblx0fVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlsL1V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQTs7R0FFRztBQUNILE1BQXFCLElBQUk7SUFDeEI7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBSSxHQUFHLEVBQU87UUFDakMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNmLE9BQU8sQ0FBQyxDQUFDO2FBQ1Q7U0FDRDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFPLE1BQVMsRUFBRSxHQUFHLEVBQU87UUFDbkQsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sYUFBYSxHQUFHLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7Z0JBQ3pELE1BQU0saUJBQWlCLEdBQ3RCLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO29CQUNqRCxNQUFNLENBQUMsR0FBMEIsQ0FBQztvQkFDbEMsT0FBTyxNQUFNLENBQUMsR0FBMEIsQ0FBQyxLQUFLLFFBQVEsQ0FBQztnQkFDeEQsSUFBSSxhQUFhLElBQUksaUJBQWlCLEVBQUU7b0JBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQTBCLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDM0Q7cUJBQU07b0JBQ04sTUFBTSxDQUFDLEdBQTBCLENBQUMsR0FBRyxLQUFLLENBQUM7aUJBQzNDO2FBQ0Q7U0FDRDtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUluQixRQUF3QixFQUFFLE1BQVk7UUFDdkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssTUFBTSxDQUFDLElBQUksUUFBUSxFQUFFO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxQjtRQUVELE9BQU8sTUFBeUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FBSSxDQUFVO1FBQ3BDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyQixPQUFPLENBQUMsQ0FBQztTQUNUO1FBRUQsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUksS0FBa0M7UUFDL0QsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7WUFDaEMsT0FBTyxLQUFnQixDQUFDO1NBQ3hCO1FBRUQsT0FBTyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBVTtRQUN0QyxPQUFPLEtBQUssSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLEtBQUssVUFBVSxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUNqQyxPQUFPLEtBQUssSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUM7SUFDdkYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUMxQixJQUF3QyxFQUN4QyxJQUF3QztRQUV4QyxJQUFJLElBQUksS0FBSyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUU7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUN6QyxJQUFJLElBQUksS0FBSyxFQUFFO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUIsSUFBSSxJQUFJLEtBQUssRUFBRTtZQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLElBQUksT0FBTyxJQUFJLEtBQUssVUFBVTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksT0FBTyxJQUFJLEtBQUssVUFBVTtZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLElBQUksT0FBTyxJQUFJLEtBQUssVUFBVTtZQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMzRixDQUFDO0NBQ0Q7QUFsSEQsdUJBa0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tIFwiZXZlbnRzXCI7XG5cbi8qKlxuICogQWthaXJvIFV0aWxpdGllcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXRpbCB7XG5cdC8qKlxuXHQgKiBDaG9vc2UgdGhlIGZpcnN0IG5vbi1udWxsIGVsZW1lbnQgaW4gYW4gYXJyYXlcblx0ICogQHBhcmFtIHhzXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGNob2ljZTxUPiguLi54czogVFtdKTogVCB8IG51bGwge1xuXHRcdGZvciAoY29uc3QgeCBvZiB4cykge1xuXHRcdFx0aWYgKHggIT09IG51bGwpIHtcblx0XHRcdFx0cmV0dXJuIHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvKipcblx0ICogRGVlcCBhc3NpZ24gcHJvcGVydGllcyB0byBhbiBvYmplY3QuXG5cdCAqIEBwYXJhbSB0YXJnZXRcblx0ICogQHBhcmFtIG9zXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGRlZXBBc3NpZ248QSwgQj4odGFyZ2V0OiBBLCAuLi5vczogQltdKSB7XG5cdFx0Zm9yIChjb25zdCBvIG9mIG9zKSB7XG5cdFx0XHRmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvKSkge1xuXHRcdFx0XHRjb25zdCB2YWx1ZUlzT2JqZWN0ID0gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiO1xuXHRcdFx0XHRjb25zdCB0YXJnZXRLZXlJc09iamVjdCA9XG5cdFx0XHRcdFx0T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwga2V5KSAmJlxuXHRcdFx0XHRcdHRhcmdldFtrZXkgYXMga2V5b2YgdHlwZW9mIHRhcmdldF0gJiZcblx0XHRcdFx0XHR0eXBlb2YgdGFyZ2V0W2tleSBhcyBrZXlvZiB0eXBlb2YgdGFyZ2V0XSA9PT0gXCJvYmplY3RcIjtcblx0XHRcdFx0aWYgKHZhbHVlSXNPYmplY3QgJiYgdGFyZ2V0S2V5SXNPYmplY3QpIHtcblx0XHRcdFx0XHRVdGlsLmRlZXBBc3NpZ24odGFyZ2V0W2tleSBhcyBrZXlvZiB0eXBlb2YgdGFyZ2V0XSwgdmFsdWUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRhcmdldFtrZXkgYXMga2V5b2YgdHlwZW9mIHRhcmdldF0gPSB2YWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0YXJnZXQ7XG5cdH1cblxuXHQvKipcblx0ICogTWFwIGFuIGl0ZXJhYmxlIG9iamVjdCBhbmQgdGhlbiBmbGF0dGVuIGl0IGl0IGludG8gYW4gYXJyYXlcblx0ICogQHBhcmFtIGl0ZXJhYmxlIC0gdGhlIG9iamVjdCB0byBtYXAgYW5kIGZsYXR0ZW5cblx0ICogQHBhcmFtIGZpbHRlciAtIHRoZSBmaWx0ZXIgdG8gbWFwIHdpdGhcblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZmxhdE1hcDxcblx0XHRUeXBlLFxuXHRcdFJldCBleHRlbmRzIHsgW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmF0b3I8dW5rbm93bj4gfSxcblx0XHRGdW5jIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBSZXRcblx0PihpdGVyYWJsZTogSXRlcmFibGU8VHlwZT4sIGZpbHRlcjogRnVuYyk6IFR5cGUge1xuXHRcdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRcdGZvciAoY29uc3QgeCBvZiBpdGVyYWJsZSkge1xuXHRcdFx0cmVzdWx0LnB1c2goLi4uZmlsdGVyKHgpKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0IGFzIHVua25vd24gYXMgVHlwZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyB0aGUgc3VwcGxpZWQgdmFsdWUgaW50byBhbiBhcnJheSBpZiBpdCBpcyBub3QgYWxyZWFkeSBvbmUuXG5cdCAqIEBwYXJhbSB4IC0gVmFsdWUgdG8gY29udmVydC5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgaW50b0FycmF5PFQ+KHg6IFQgfCBUW10pOiBUW10ge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG5cdFx0XHRyZXR1cm4geDtcblx0XHR9XG5cblx0XHRyZXR1cm4gW3hdO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIHNvbWV0aGluZyB0byBiZWNvbWUgY2FsbGFibGUuXG5cdCAqIEBwYXJhbSB0aGluZyAtIFdoYXQgdG8gdHVybiBpbnRvIGEgY2FsbGFibGUuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGludG9DYWxsYWJsZTxUPih0aGluZzogVCB8ICgoLi4uYXJnczogYW55W10pID0+IFQpKTogKC4uLmFyZ3M6IGFueVtdKSA9PiBUIHtcblx0XHRpZiAodHlwZW9mIHRoaW5nID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdHJldHVybiB0aGluZyBhcyAoKSA9PiBUO1xuXHRcdH1cblxuXHRcdHJldHVybiAoKSA9PiB0aGluZztcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIHN1cHBsaWVkIHZhbHVlIGlzIGFuIGV2ZW50IGVtaXR0ZXIuXG5cdCAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIGNoZWNrLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBpc0V2ZW50RW1pdHRlcih2YWx1ZTogYW55KTogdmFsdWUgaXMgRXZlbnRFbWl0dGVyIHtcblx0XHRyZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlLm9uID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIHZhbHVlLmVtaXQgPT09IFwiZnVuY3Rpb25cIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhlIHN1cHBsaWVkIHZhbHVlIGlzIGEgcHJvbWlzZS5cblx0ICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gY2hlY2suXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGlzUHJvbWlzZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgUHJvbWlzZTxhbnk+IHtcblx0XHRyZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgdmFsdWUuY2F0Y2ggPT09IFwiZnVuY3Rpb25cIjtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb21wYXJlcyB0d28gcHJlZml4ZXMuXG5cdCAqIEBwYXJhbSBhS2V5IC0gRmlyc3QgcHJlZml4LlxuXHQgKiBAcGFyYW0gYktleSAtIFNlY29uZCBwcmVmaXguXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHByZWZpeENvbXBhcmUoXG5cdFx0YUtleTogc3RyaW5nIHwgKCguLi5hcmdzOiBhbnlbXSkgPT4gYW55KSxcblx0XHRiS2V5OiBzdHJpbmcgfCAoKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpXG5cdCk6IG51bWJlciB7XG5cdFx0aWYgKGFLZXkgPT09IFwiXCIgJiYgYktleSA9PT0gXCJcIikgcmV0dXJuIDA7XG5cdFx0aWYgKGFLZXkgPT09IFwiXCIpIHJldHVybiAxO1xuXHRcdGlmIChiS2V5ID09PSBcIlwiKSByZXR1cm4gLTE7XG5cdFx0aWYgKHR5cGVvZiBhS2V5ID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIGJLZXkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIDA7XG5cdFx0aWYgKHR5cGVvZiBhS2V5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiAxO1xuXHRcdGlmICh0eXBlb2YgYktleSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gLTE7XG5cdFx0cmV0dXJuIGFLZXkubGVuZ3RoID09PSBiS2V5Lmxlbmd0aCA/IGFLZXkubG9jYWxlQ29tcGFyZShiS2V5KSA6IGJLZXkubGVuZ3RoIC0gYUtleS5sZW5ndGg7XG5cdH1cbn1cbiJdfQ==
{
"name": "@notenoughupdates/discord-akairo",
"version": "9.0.6-dev.1635795375.6fd4260",
"version": "9.0.6-dev.1635818696.927e76a",
"description": "A highly customizable bot framework for Discord.js.",

@@ -5,0 +5,0 @@ "main": "./dist/src/index.js",

@@ -347,3 +347,3 @@ import { Message, MessageOptions, MessagePayload } from "discord.js";

if (!phrase && optional) {
if (this.otherwise != null) {
if (this.otherwise !== null) {
return doOtherwise(null);

@@ -360,11 +360,11 @@ }

if (Argument.isFailure(res)) {
if (this.otherwise != null) {
if (this.otherwise !== null) {
return doOtherwise(res);
}
if (this.prompt != null) {
if (this.prompt !== null) {
return this.collect(message, phrase, res);
}
return this.default == null ? res : Util.intoCallable(this.default)(message, { phrase, failure: res });
return this.default === null ? res : Util.intoCallable(this.default)(message, { phrase, failure: res });
}

@@ -417,3 +417,3 @@

while ((matched = type.exec(phrase)) != null) {
while ((matched = type.exec(phrase)) !== null) {
matches.push(matched);

@@ -475,3 +475,3 @@ }

public static isFailure(value: any): value is null | undefined | (Flag & { value: any }) {
return value == null || Flag.is(value, "fail");
return value === null || Flag.is(value, "fail");
}

@@ -513,3 +513,9 @@

const o =
typeof x === "number" || typeof x === "bigint" ? x : x.length != null ? x.length : x.size != null ? x.size : x;
typeof x === "number" || typeof x === "bigint"
? x
: x.length !== null
? x.length
: x.size !== null
? x.size
: x;

@@ -516,0 +522,0 @@ return o >= min && (inclusive ? o <= max : o < max);

@@ -107,3 +107,3 @@ import { Message } from "discord.js";

const runFn = cases[arg.match];
if (runFn == null) {
if (runFn === null) {
throw new AkairoError("UNKNOWN_MATCH_TYPE", arg.match);

@@ -144,3 +144,3 @@ }

const res = await arg.cast(message, phrase);
if (res != null) {
if (res !== null) {
state.usedIndices.add(i);

@@ -155,5 +155,5 @@ return res;

const index = arg.index == null ? state.phraseIndex : arg.index;
const index = arg.index === null || arg.index === undefined ? state.phraseIndex : arg.index;
const ret = arg.process(message, parsed.phrases[index] ? parsed.phrases[index].value : "");
if (arg.index == null) {
if (arg.index === null) {
ArgumentRunner.increaseIndex(parsed, state);

@@ -178,3 +178,3 @@ }

): Promise<Flag | any> {
const index = arg.index == null ? state.phraseIndex : arg.index;
const index = arg.index === null || arg.index === undefined ? state.phraseIndex : arg.index;
const rest = parsed.phrases

@@ -186,3 +186,3 @@ .slice(index, index + arg.limit)

const ret = await arg.process(message, rest);
if (arg.index == null) {
if (arg.index === null) {
ArgumentRunner.increaseIndex(parsed, state);

@@ -207,7 +207,7 @@ }

): Promise<Flag | any> {
const index = arg.index == null ? state.phraseIndex : arg.index;
const index = arg.index === null || arg.index === undefined ? state.phraseIndex : arg.index;
const phrases = parsed.phrases.slice(index, index + arg.limit);
if (!phrases.length) {
const ret = await arg.process(message, "");
if (arg.index != null) {
if (arg.index !== null) {
ArgumentRunner.increaseIndex(parsed, state);

@@ -230,3 +230,3 @@ }

if (arg.index != null) {
if (arg.index !== null) {
ArgumentRunner.increaseIndex(parsed, state);

@@ -262,3 +262,3 @@ }

return arg.default == null ? flagFound : !flagFound;
return arg.default === null ? flagFound : !flagFound;
}

@@ -298,3 +298,3 @@

return arg.process(message, foundFlag != null ? foundFlag.value : "");
return arg.process(message, foundFlag !== null && foundFlag !== undefined ? foundFlag.value : "");
}

@@ -315,3 +315,3 @@

): Promise<Flag | any> {
const index = arg.index == null ? 0 : arg.index;
const index = arg.index === null || arg.index === undefined ? 0 : arg.index;
const text = parsed.phrases

@@ -338,3 +338,3 @@ .slice(index, index + arg.limit)

): Promise<Flag | any> {
const index = arg.index == null ? 0 : arg.index;
const index = arg.index === null || arg.index === undefined ? 0 : arg.index;
const content = parsed.all

@@ -361,3 +361,3 @@ .slice(index, index + arg.limit)

): Promise<Flag | any> {
const index = arg.index == null ? state.index : arg.index;
const index = arg.index === null || arg.index === undefined ? state.index : arg.index;
const rest = parsed.all

@@ -369,3 +369,3 @@ .slice(index, index + arg.limit)

const ret = await arg.process(message, rest);
if (arg.index == null) {
if (arg.index === null) {
ArgumentRunner.increaseIndex(parsed, state);

@@ -372,0 +372,0 @@ }

@@ -556,3 +556,3 @@ import {

if (command.prefix != null) {
if (command.prefix !== null && command.prefix !== undefined) {
let newEntry = false;

@@ -601,3 +601,3 @@

if (command.prefix != null) {
if (command.prefix !== null && command.prefix !== undefined) {
if (Array.isArray(command.prefix)) {

@@ -655,3 +655,3 @@ for (const prefix of command.prefix) {

const overParsed = await this.parseCommandOverwrittenPrefixes(message);
if (overParsed.command || (parsed.prefix == null && overParsed.prefix != null)) {
if (overParsed.command || (parsed.prefix === null && overParsed.prefix !== null)) {
parsed = overParsed;

@@ -729,3 +729,3 @@ }

const overParsed = await this.parseCommandOverwrittenPrefixes(message);
if (overParsed.command || (parsed.prefix == null && overParsed.prefix != null)) {
if (overParsed.command || (parsed.prefix === null && overParsed.prefix !== null)) {
parsed = overParsed;

@@ -744,8 +744,7 @@ }

// @ts-expect-error: djs stripped privates accidentally ig
if (interaction.options["_group"]) convertedOptions["subcommandGroup"] = interaction.options["_group"];
// @ts-expect-error: djs stripped privates accidentally ig
if (interaction.options["_subcommand"]) convertedOptions["subcommand"] = interaction.options["_subcommand"];
// @ts-expect-error: djs stripped privates accidentally ig
for (const option of interaction.options["_hoistedOptions"]) {
if ((interaction.options as CommandInteractionOptionResolver)["_group"])
convertedOptions["subcommandGroup"] = (interaction.options as CommandInteractionOptionResolver)["_group"];
if ((interaction.options as CommandInteractionOptionResolver)["_subcommand"])
convertedOptions["subcommand"] = (interaction.options as CommandInteractionOptionResolver)["_subcommand"];
for (const option of (interaction.options as CommandInteractionOptionResolver)["_hoistedOptions"]) {
if (["SUB_COMMAND", "SUB_COMMAND_GROUP"].includes(option.type)) continue;

@@ -955,3 +954,3 @@ const originalOption = commandModule.slashOptions?.find(o => o.name === option.name);

while ((matched = entry.regex.exec(message.content)) != null) {
while ((matched = entry.regex.exec(message.content)) !== null) {
matches.push(matched);

@@ -1043,3 +1042,3 @@ }

if (reason != null) {
if (reason !== null) {
this.emit(CommandHandlerEvents.MESSAGE_BLOCKED, message, reason);

@@ -1068,3 +1067,3 @@ } else if (!message.author) {

if (reason != null) {
if (reason !== null) {
this.emit(CommandHandlerEvents.MESSAGE_BLOCKED, message, reason);

@@ -1132,3 +1131,3 @@ } else {

if (this.skipBuiltInPostInhibitors) {
if (this.skipBuiltInPostInhibitors && reason !== null) {
if (await this.runPermissionChecks(message, command, slash)) {

@@ -1139,3 +1138,3 @@ return true;

if (reason != null) {
if (reason !== null) {
this.emit(event, message, command, reason);

@@ -1169,3 +1168,3 @@ return true;

if (missing != null) {
if (missing !== null) {
this.emit(event, message, command, "client", missing);

@@ -1197,3 +1196,3 @@ return true;

if (missing != null) {
if (missing !== null) {
this.emit(event, message, command, "user", missing);

@@ -1232,3 +1231,3 @@ return true;

const time = command.cooldown != null ? command.cooldown : this.defaultCooldown;
const time = command.cooldown !== null ? command.cooldown : this.defaultCooldown;
if (!time) return false;

@@ -1344,3 +1343,3 @@

const guess = parses.find(parsed => parsed.prefix != null);
const guess = parses.find(parsed => parsed.prefix !== null);
if (guess) {

@@ -1381,4 +1380,4 @@ return guess;

if (associatedCommands == null) {
if (command.prefix != null) {
if (associatedCommands === null) {
if (command.prefix !== null) {
return { prefix, alias, content, afterPrefix };

@@ -1385,0 +1384,0 @@ }

@@ -161,3 +161,3 @@ import { ArgumentMatches } from "../../util/Constants";

public runQuote() {
if (this.separator == null && this.quoted && this.startsWith('"')) {
if (this.separator === null && this.quoted && this.startsWith('"')) {
if (this.state === 1) {

@@ -178,3 +178,3 @@ this.state = 0;

public runOpenQuote() {
if (this.separator == null && this.quoted && this.startsWith('"')) {
if (this.separator === null && this.quoted && this.startsWith('"')) {
if (this.state === 0) {

@@ -193,3 +193,3 @@ this.state = 2;

public runEndQuote() {
if (this.separator == null && this.quoted && this.startsWith("”")) {
if (this.separator === null && this.quoted && this.startsWith("”")) {
if (this.state === 2) {

@@ -208,3 +208,3 @@ this.state = 0;

public runSeparator() {
if (this.separator != null && this.startsWith(this.separator)) {
if (this.separator !== null && this.separator !== undefined && this.startsWith(this.separator)) {
this.addToken("Separator", this.slice(0, this.separator.length));

@@ -297,3 +297,3 @@ this.advance(this.separator.length);

public lookaheadN(n: number, ...types: string[]) {
return this.tokens[this.position + n] != null && types.includes(this.tokens[this.position + n].type);
return this.tokens[this.position + n] !== null && types.includes(this.tokens[this.position + n].type);
}

@@ -369,3 +369,3 @@

const ws = this.lookahead("WS") ? this.match("WS") : null;
if (ws != null) {
if (ws !== null) {
parsed.raw += ws.value;

@@ -376,3 +376,3 @@ }

if (phrase != null) {
if (phrase !== null) {
parsed.value = phrase.value;

@@ -398,3 +398,3 @@ parsed.raw += phrase.raw;

const endQuote = this.lookahead("Quote") ? this.match("Quote") : null;
if (endQuote != null) {
if (endQuote !== null) {
parsed.raw += endQuote.value;

@@ -421,3 +421,3 @@ }

const endQuote = this.lookahead("EndQuote") ? this.match("EndQuote") : null;
if (endQuote != null) {
if (endQuote !== null) {
parsed.raw += endQuote.value;

@@ -507,3 +507,3 @@ }

return new Parser(tokens, { separated: this.separator != null }).parse();
return new Parser(tokens, { separated: this.separator !== null }).parse();
}

@@ -510,0 +510,0 @@

@@ -31,3 +31,3 @@ const Messages = {

public constructor(key: keyof typeof Messages, ...args: (string | boolean)[]) {
if (Messages[key] == null) throw new TypeError(`Error key '${key}' does not exist`);
if (Messages[key] === null) throw new TypeError(`Error key '${key}' does not exist`);
const message =

@@ -34,0 +34,0 @@ typeof Messages[key] === "function" ? (Messages[key] as (...a: any[]) => any)(...args) : Messages[key];

@@ -5,2 +5,3 @@ import { APIInteractionGuildMember, APIMessage } from "discord-api-types/v9";

CommandInteraction,
CommandInteractionOptionResolver,
Guild,

@@ -43,8 +44,7 @@ GuildMember,

if (interaction.command?.type === "CHAT_INPUT") {
// @ts-expect-error: djs stripped privates accidentally ig
if (interaction.options["_group"]) this.content += `group: ${interaction.options["_group"]}`;
// @ts-expect-error: djs stripped privates accidentally ig
if (interaction.options["_subcommand"]) this.content += `subcommand: ${interaction.options["_subcommand"]}`;
// @ts-expect-error: djs stripped privates accidentally ig
for (const option of interaction.options["_hoistedOptions"]) {
if ((interaction.options as CommandInteractionOptionResolver)["_group"])
this.content += `group: ${(interaction.options as CommandInteractionOptionResolver)["_group"]}`;
if ((interaction.options as CommandInteractionOptionResolver)["_subcommand"])
this.content += `subcommand: ${(interaction.options as CommandInteractionOptionResolver)["_subcommand"]}`;
for (const option of (interaction.options as CommandInteractionOptionResolver)["_hoistedOptions"]) {
if (["SUB_COMMAND", "SUB_COMMAND_GROUP"].includes(option.type)) continue;

@@ -54,4 +54,5 @@ this.content += ` ${option.name}: ${interaction.options.get(option.name, false)?.value}`;

} else if (interaction.command?.type === "MESSAGE") {
// @ts-expect-error: the method will exist if the type equals `MESSAGE`
this.content += ` message: ${interaction.options.getMessage("message")!.id}`;
this.content += ` message: ${
(interaction.options as CommandInteractionOptionResolver).getMessage("message")!.id
}`;
} else if (interaction.command?.type === "USER") {

@@ -89,3 +90,3 @@ this.content += ` message: ${interaction.options.getUser("user")!.id}`;

public get cleanContent(): string | null {
return this.content != null ? Util.cleanContent(this.content, this.channel!) : null;
return this.content !== null ? Util.cleanContent(this.content, this.channel!) : null;
}

@@ -155,2 +156,9 @@

/**
* Indicates whether this interaction is received from a guild.
*/
public inGuild(): this is this & { guild: Guild; member: GuildMember } {
return Boolean(this.guildId && this.member);
}
/**
* Deletes the reply to the command.

@@ -157,0 +165,0 @@ */

@@ -13,3 +13,3 @@ import EventEmitter from "events";

for (const x of xs) {
if (x != null) {
if (x !== null) {
return x;

@@ -16,0 +16,0 @@ }

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc