Socket
Socket
Sign inDemoInstall

config-kit

Package Overview
Dependencies
Maintainers
2
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

config-kit - npm Package Compare versions

Comparing version 1.3.1 to 1.4.0

5

CHANGELOG.md

@@ -0,1 +1,6 @@

# v1.4.0 (Nov 18, 2020)
* feat(store): Added `keys()` method.
* fix(layer): Account for namespaced layers to be able to load already namespaced data.
# v1.3.1 (Nov 14, 2020)

@@ -2,0 +7,0 @@

72

dist/layer.js

@@ -238,3 +238,10 @@ "use strict";

if (key = this.resolveKey(key)) {
return this.store.delete(key);
const keys = this.namespace && this.store.keys();
if (keys && keys.length === 1 && keys[0] === this.namespace) {
// data is namespaced, so we need to add the namespace back
return this.store.delete([this.namespace, ...key]);
} else {
return this.store.delete(key);
}
}

@@ -255,21 +262,30 @@

get(key) {
const nsKey = this.resolveKey(key);
let nsKey = this.resolveKey(key);
if (nsKey !== null) {
let value = this.store.get(nsKey);
if (nsKey === null) {
return;
}
if (!(nsKey === null || nsKey === void 0 ? void 0 : nsKey.length) && value === undefined) {
// set to empty object if value
value = {};
}
const keys = this.namespace && this.store.keys();
let value;
if (key.length && this.namespace && key[0] === this.namespace) {
// return a specific value
return value;
}
if (keys && keys.length === 1 && keys[0] === this.namespace) {
// data is namespaced, so we need to add the namespace back
value = this.store.get([this.namespace, ...nsKey]);
} else {
value = this.store.get(nsKey);
}
return this.namespace ? {
[this.namespace]: value
} : value;
if (!(nsKey === null || nsKey === void 0 ? void 0 : nsKey.length) && value === undefined) {
// set to empty object if value
value = {};
}
if (key.length && this.namespace && key[0] === this.namespace) {
return value;
}
return this.namespace ? {
[this.namespace]: value
} : value;
}

@@ -288,11 +304,14 @@ /**

if (nsKey !== null) {
if (key.length === 1 && this.namespace && key[0] === this.namespace) {
return true;
}
if (nsKey === null) {
return false;
}
return this.store.has(nsKey);
const keys = this.namespace && this.store.keys();
if (keys && keys.length === 1 && keys[0] === this.namespace) {
// data is namespaced, so we need to add the namespace back
return this.store.has([this.namespace, ...nsKey]);
}
return false;
return this.store.has(nsKey);
}

@@ -538,3 +557,10 @@ /**

if (key = this.resolveKey(key)) {
this.store.set(key, value);
const keys = this.namespace && this.store.keys();
if (keys && keys.length === 1 && keys[0] === this.namespace) {
// data is namespaced, so we need to add the namespace back
this.store.set([this.namespace, ...key], value);
} else {
this.store.set(key, value);
}
}

@@ -634,2 +660,2 @@

exports.default = Layer;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxheWVyLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsInNub29wbG9nZyIsInN0eWxlcyIsIkxheWVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiTWFwIiwiYWxsb3dOdWxscyIsImlkIiwibmFtZXNwYWNlIiwib3JkZXIiLCJyZWFkb25seSIsInN0YXRpYyIsInZhbGlkYXRlIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwiZGVmYXVsdHMiLCJlbnYiLCJzY2hlbWEiLCJsb2FkU2NoZW1hIiwic3RvcmUiLCJTdG9yZSIsImRhdGEiLCJKU09OU3RvcmUiLCJtZXJnZSIsImZpbGUiLCJsb2FkIiwiZ3JhY2VmdWwiLCJkZWxldGUiLCJrZXkiLCJFcnJvciIsIlN0cmluZyIsImxlbmd0aCIsImFjdGlvbiIsInJlc29sdmVLZXkiLCJnZXQiLCJuc0tleSIsInZhbHVlIiwiaGFzIiwiZXhpc3RzIiwiZnMiLCJleGlzdHNTeW5jIiwibWVzc2FnZSIsImV4dCIsInBhdGgiLCJleHRuYW1lIiwicmVhZEpzb25TeW5jIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY3R4IiwiSm9pIiwiaXNTY2hlbWEiLCJ0eXBlIiwiZm91bmQiLCJpdGVtIiwiJF90ZXJtcyIsImtleXMiLCJvYmplY3QiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJjb21waWxlIiwid2FsayIsIl92YWxpZHMiLCJhZGQiLCJWYWx1ZXMiLCJmaW5kIiwicyIsInNsaWNlIiwic2F2ZSIsInNldCIsInRvU3RyaW5nIiwiYXJncyIsInVubG9hZCIsInVud2F0Y2giLCJoYW5kbGVyIiwid3JhcHBlZCIsIndhdGNoZXJNYXAiLCJ2YWxpZGF0b3IiLCJzY2hlbWFzIiwiZm4iLCJ3YXRjaCIsImZpbHRlciIsIm9iaiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7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VyxFQUFmO0FBSUE7O0FBRUQsTUFBSTdELFFBQUosQ0FBYXFFLEVBQWIsRUFBaUI7QUFDaEIsUUFBSSxDQUFDQSxFQUFELElBQU8sT0FBT0EsRUFBUCxLQUFjLFVBQXpCLEVBQXFDO0FBQ3BDLFlBQU0sSUFBSW5FLFNBQUosQ0FBYyxxQ0FBZCxDQUFOO0FBQ0E7O0FBQ0QsU0FBS2lFLFNBQUwsR0FBaUJFLEVBQWpCO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0MsRUFBQUEsS0FBSyxDQUFDQyxNQUFELEVBQVNQLE9BQVQsRUFBa0I7QUFDdEIsVUFBTUMsT0FBTyxHQUFHTyxHQUFHLElBQUlSLE9BQU8sQ0FBQ1EsR0FBRCxFQUFNLElBQU4sQ0FBOUI7O0FBQ0EsU0FBS04sVUFBTCxDQUFnQlAsR0FBaEIsQ0FBb0JLLE9BQXBCLEVBQTZCQyxPQUE3QjtBQUNBLFNBQUsxRCxLQUFMLENBQVcrRCxLQUFYLENBQWlCQyxNQUFqQixFQUF5Qk4sT0FBekI7QUFDQSxXQUFPLElBQVA7QUFDQTs7QUE1ZXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCBpbXBvcnRGcmVzaCBmcm9tICdpbXBvcnQtZnJlc2gnO1xuaW1wb3J0IEpvaSBmcm9tICdqb2knO1xuaW1wb3J0IEpTT05TdG9yZSBmcm9tICcuL3N0b3Jlcy9qc29uLXN0b3JlJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHNub29wbG9nZyBmcm9tICdzbm9vcGxvZ2cnO1xuaW1wb3J0IFN0b3JlIGZyb20gJy4vc3RvcmUnO1xuaW1wb3J0IFZhbHVlcyBmcm9tICdqb2kvbGliL3ZhbHVlcyc7XG5pbXBvcnQgeyBnZXRTY2hlbWFJbml0aWFsVmFsdWVzLCB2YWxpZGF0ZSB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IHsgbG9nIH0gPSBzbm9vcGxvZ2coJ2NvbmZpZy1raXQnKSgnanMtc3RvcmUnKTtcbmNvbnN0IHsgaGlnaGxpZ2h0IH0gPSBzbm9vcGxvZ2cuc3R5bGVzO1xuXG4vKipcbiAqIENvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGEgbGF5ZXIuIFRoZSBsYXllcidzIGRhdGEgaXMgbG9jYXRlZCBpbiB0aGUgbGF5ZXIncyBzdG9yZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGF5ZXIge1xuXHQvKipcblx0ICogRm9yY2VzIGFsbCBub2RlcyBvZiBhIHNjaGVtYSB0byBhbGxvdyBudWxscy5cblx0ICogQHR5cGUge0Jvb2xlYW59XG5cdCAqL1xuXHRhbGxvd051bGxzID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFRoZSBwYXRoIHRvIHRoZSBmaWxlIHRvIHdyaXRlIHRoZSBjb25maWcgZmlsZSB0by4gVGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcndyaXR0ZW4gd2l0aCBhIGZpbGVcblx0ICogcGF0aCBzcGVjaWZpZWQgcGFzc2VkIGluIHdoZW4gc2F2aW5nLlxuXHQgKiBAcGFyYW0ge1N0cmluZ31cblx0ICovXG5cdGZpbGUgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBUaGUgbGF5ZXIgaWRlbnRpZmllci5cblx0ICogQHR5cGUge1N0cmluZ3xTeW1ib2x9XG5cdCAqL1xuXHRpZCA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEFuIG9wdGlvbmFsIG5hbWUgb2YgdGhlIHNjb3BlIGVuY29tcGFzc2luZyB0aGlzIGxheWVyJ3MgZGF0YSBhbmQgc2NoZW1hLlxuXHQgKiBAdHlwZSB7U3RyaW5nfVxuXHQgKi9cblx0bmFtZXNwYWNlID0gbnVsbDtcblxuXHQvKipcblx0ICogVGhlIGxheWVyIHByZWNlZGVuY2UgaW4gdGhlIGxheWVyIGxpc3QuXG5cdCAqIEB0eXBlIHtOdW1iZXJ9XG5cdCAqL1xuXHRvcmRlciA9IDA7XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyBpZiB0aGUgdmFsdWVzIGluIHRoZSBzdG9yZSBjYW4gYmUgbW9kaWZpZWQuXG5cdCAqIEB0eXBlIHtCb29sZWFufVxuXHQgKi9cblx0cmVhZG9ubHkgPSBmYWxzZTtcblxuXHQvKipcblx0ICogVGhlIEpvaSBzY2hlbWEuXG5cdCAqIEB0eXBlIHtPYmplY3R9XG5cdCAqL1xuXHRzY2hlbWEgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBJbmRpY2F0ZXMgaWYgdGhpcyBsYXllciBjYW4gYmUgdW5sb2FkZWQuXG5cdCAqIEB0eXBlIHtCb29sZWFufVxuXHQgKi9cblx0c3RhdGljID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEEgcmVmZXJlbmNlIHRvIHRoZSBsYXllcidzIGRhdGEgc3RvcmUgaW5zdGFuY2UuXG5cdCAqIEB0eXBlIHtTdG9yZX1cblx0ICovXG5cdHN0b3JlID0gbnVsbDtcblxuXHQvKipcblx0ICogQSBjdXN0b20gdmFsaWRhdGlvbiBjYWxsYmFjay4gSWYgbm90IHNldCwgZGVmYXVsdHMgdG8gdmFsaWRhdGluZyBhZ2FpbnN0IHRoaXMgbGF5ZXInc1xuXHQgKiBzY2hlbWEuXG5cdCAqIEB0eXBlIHtGdW5jdGlvbn1cblx0ICovXG5cdHZhbGlkYXRvciA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEEgbG9va3VwIHRhYmxlIG9mIG9yaWdpbmFsIHdhdGNoIGhhbmRsZXJzIHRvIHRoZWlyIHdyYXBwZWQgY291bnRlcnBhcnRzIHNvIHRoYXQgaXQgY2FuXG5cdCAqIGFkZCBhIHJlZmVyZW5jZSB0byB0aGlzIGxheWVyIHRvIHRoZSBldmVudCBoYW5kbGVyLlxuXHQgKiBAdHlwZSB7TWFwfVxuXHQgKi9cblx0d2F0Y2hlck1hcCA9IG5ldyBNYXAoKTtcblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgdGhlIGxheWVyLCBsb2FkcyBhIGZpbGUsIGFuZCBpbml0aWFsaXplcyB0aGUgc2NoZW1hIG9iamVjdC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5hbGxvd051bGxzXSAtIEZvcmNlcyBhbGwgbm9kZXMgb2YgYSBzY2hlbWEgdG8gYWxsb3cgbnVsbHMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0cy5kYXRhXSAtIERhdGEgdG8gaW5pdGlhbGl6ZSB0aGUgYmFzZSBjb25maWcgbGF5ZXIgd2l0aC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmZpbGVdIC0gVGhlIGZpbGUgYmFja2luZyB0aGlzIGxheWVyJ3Mgc3RvcmUuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuZ3JhY2VmdWw9dHJ1ZV0gLSBUcnkgdG8gbG9hZCB0aGUgZmlsZSwgYnV0IGlmIGl0IGRvZXNuJ3QgZXhpc3QsIHRoZW5cblx0ICogZ3JhY2VmdWxseSBoYW5kbGUgdGhlIGVycm9yLlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xTeW1ib2x9IFtvcHRzLmlkXSAtIFRoZSBsYXllciBpZC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLm5hbWVzcGFjZV0gLSBUaGUgbmFtZSBvZiB0aGUgc2NvcGUgZW5jb21wYXNzaW5nIHRoaXMgbGF5ZXIncyBkYXRhIGFuZFxuXHQgKiBzY2hlbWEgaWYgbm90IGFscmVhZHkgZGVmaW5lZC5cblx0ICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLm9yZGVyPTBdIC0gVGhlIGxheWVyIHByZWNlZGVuY2UuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMucmVhZG9ubHldIC0gSW5kaWNhdGVzIGlmIHRoaXMgbGF5ZXIncyBkYXRhIGNhbiBiZSBjaGFuZ2VkLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHMuc2NoZW1hXSAtIEEgSm9pIHNjaGVtYSBvciBvYmplY3QgdG8gY29tcGlsZSBpbnRvIGEgSm9pIHNjaGVtYS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5zdGF0aWNdIC0gSW5kaWNhdGVzIGlmIHRoaXMgbGF5ZXIgY2FuIGJlIHVubG9hZGVkLlxuXHQgKiBAcGFyYW0ge1N0b3JlfSBbb3B0cy5zdG9yZV0gLSBUaGUgZGF0YSBzdG9yZS4gRGVmYXVsdHMgdG8gYSBgSlNPTlN0b3JlYCBpbnN0YW5jZS5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMudmFsaWRhdGVdIC0gQSBmdW5jdGlvbiB0byBjYWxsIGFuZCB2YWxpZGF0ZSBjaGFuZ2VzIGFnYWluc3QgYSBzY2hlbWEuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHR0aGlzLmFsbG93TnVsbHMgPSBvcHRzLmFsbG93TnVsbHM7XG5cdFx0dGhpcy5pZCAgICAgICAgID0gb3B0cy5pZCB8fCBudWxsO1xuXHRcdHRoaXMubmFtZXNwYWNlICA9IG9wdHMubmFtZXNwYWNlO1xuXHRcdHRoaXMub3JkZXIgICAgICA9IG9wdHMub3JkZXIgfHwgMDtcblx0XHR0aGlzLnJlYWRvbmx5ICAgPSAhIW9wdHMucmVhZG9ubHk7XG5cdFx0dGhpcy5zdGF0aWMgICAgID0gISFvcHRzLnN0YXRpYztcblxuXHRcdGlmIChvcHRzLnZhbGlkYXRlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICh0eXBlb2Ygb3B0cy52YWxpZGF0ZSAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB2YWxpZGF0ZSBjYWxsYmFjayB0byBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnZhbGlkYXRlID0gb3B0cy52YWxpZGF0ZTtcblx0XHR9XG5cblx0XHRsZXQgZGVmYXVsdHMsIGVudjtcblxuXHRcdGlmIChvcHRzLnNjaGVtYSkge1xuXHRcdFx0dGhpcy5sb2FkU2NoZW1hKG9wdHMuc2NoZW1hKTtcblx0XHRcdCh7IGRlZmF1bHRzLCBlbnYgfSA9IGdldFNjaGVtYUluaXRpYWxWYWx1ZXModGhpcy5zY2hlbWEpKTtcblx0XHR9XG5cblx0XHRpZiAob3B0cy5zdG9yZSBpbnN0YW5jZW9mIFN0b3JlKSB7XG5cdFx0XHR0aGlzLnN0b3JlID0gb3B0cy5zdG9yZTtcblx0XHRcdGlmICh0aGlzLnNjaGVtYSkge1xuXHRcdFx0XHR0aGlzLnN0b3JlLnNjaGVtYSA9IHRoaXMuc2NoZW1hO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAodHlwZW9mIG9wdHMuc3RvcmUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRoaXMuc3RvcmUgPSBuZXcgb3B0cy5zdG9yZSh7IGRhdGE6IGRlZmF1bHRzLCBzY2hlbWE6IHRoaXMuc2NoZW1hIH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnN0b3JlID0gbmV3IEpTT05TdG9yZShvcHRzLnN0b3JlIHx8IHsgZGF0YTogZGVmYXVsdHMsIHNjaGVtYTogdGhpcy5zY2hlbWEgfSk7XG5cdFx0fVxuXG5cdFx0bGV0IHsgZGF0YSB9ID0gb3B0cztcblx0XHRpZiAoZGF0YSkge1xuXHRcdFx0aWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBsYXllciBkYXRhIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0dGhpcy5tZXJnZSh0aGlzLm5hbWVzcGFjZSA/IHsgW3RoaXMubmFtZXNwYWNlXTogZGF0YSB9IDogZGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKG9wdHMuZmlsZSkge1xuXHRcdFx0dGhpcy5sb2FkKG9wdHMuZmlsZSwgb3B0cy5ncmFjZWZ1bCAhPT0gZmFsc2UpO1xuXHRcdH1cblxuXHRcdGlmIChlbnYpIHtcblx0XHRcdC8vIHdlIGNhbiBtZXJnZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzIGRpcmVjdGx5IGludG8gdGhlIHN0b3JlIHNpbmNlIHdlJ3ZlXG5cdFx0XHQvLyBhbHJlYWR5IGRvbmUgdGhlIHZhbGlkYXRpb24gaW4gYGdldFNjaGVtYUluaXRpYWxWYWx1ZXMoKWBcblx0XHRcdHRoaXMuc3RvcmUubWVyZ2UoZW52KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBzZXQuXG5cdCAqIEByZXR1cm5zIHtCb29sZWFufVxuXHQgKi9cblx0ZGVsZXRlKGtleSkge1xuXHRcdGlmICh0aGlzLnJlYWRvbmx5KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYExheWVyIFwiJHtTdHJpbmcodGhpcy5pZCl9XCIgaXMgcmVhZG9ubHlgKTtcblx0XHR9XG5cblx0XHRpZiAoIWtleSB8fCAha2V5Lmxlbmd0aCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIGNvbmZpZyBrZXknKTtcblx0XHR9XG5cblx0XHR0aGlzLnZhbGlkYXRlKHsgYWN0aW9uOiAnZGVsZXRlJywga2V5IH0pO1xuXHRcdGlmIChrZXkgPSB0aGlzLnJlc29sdmVLZXkoa2V5KSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuc3RvcmUuZGVsZXRlKGtleSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGdldC4gV2hlbiBgdW5kZWZpbmVkYCwgdGhlIGVudGlyZSBjb25maWcgaXNcblx0ICogcmV0dXJuZWQuXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0KGtleSkge1xuXHRcdGNvbnN0IG5zS2V5ID0gdGhpcy5yZXNvbHZlS2V5KGtleSk7XG5cdFx0aWYgKG5zS2V5ICE9PSBudWxsKSB7XG5cdFx0XHRsZXQgdmFsdWUgPSB0aGlzLnN0b3JlLmdldChuc0tleSk7XG5cdFx0XHRpZiAoIW5zS2V5Py5sZW5ndGggJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHQvLyBzZXQgdG8gZW1wdHkgb2JqZWN0IGlmIHZhbHVlXG5cdFx0XHRcdHZhbHVlID0ge307XG5cdFx0XHR9XG5cdFx0XHRpZiAoa2V5Lmxlbmd0aCAmJiB0aGlzLm5hbWVzcGFjZSAmJiBrZXlbMF0gPT09IHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHRcdC8vIHJldHVybiBhIHNwZWNpZmljIHZhbHVlXG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLm5hbWVzcGFjZSA/IHsgW3RoaXMubmFtZXNwYWNlXTogdmFsdWUgfSA6IHZhbHVlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIGlmIGEga2V5IGlzIHNldC5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyB7Qm9vbGVhbn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGhhcyhrZXkpIHtcblx0XHRjb25zdCBuc0tleSA9IHRoaXMucmVzb2x2ZUtleShrZXkpO1xuXHRcdGlmIChuc0tleSAhPT0gbnVsbCkge1xuXHRcdFx0aWYgKGtleS5sZW5ndGggPT09IDEgJiYgdGhpcy5uYW1lc3BhY2UgJiYga2V5WzBdID09PSB0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLnN0b3JlLmhhcyhuc0tleSk7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBhIGNvbmZpZyBmaWxlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBwYXRoIHRvIHRoZSBjb25maWcgZmlsZSB0byBsb2FkLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtncmFjZWZ1bD1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgZG9lc24ndCBlcnJvciBpZiB0aGUgY29uZmlnIGZpbGUgZG9lcyBub3Rcblx0ICogZXhpc3QuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGxvYWQoZmlsZSwgZ3JhY2VmdWwpIHtcblx0XHRpZiAoIWZpbGUgfHwgdHlwZW9mIGZpbGUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBjb25maWcgZmlsZSBwYXRoIHRvIGJlIGEgc3RyaW5nJyk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZXhpc3RzID0gZnMuZXhpc3RzU3luYyhmaWxlKTtcblx0XHR0aGlzLmZpbGUgPSBmaWxlO1xuXG5cdFx0aWYgKGdyYWNlZnVsICYmICFleGlzdHMpIHtcblx0XHRcdGxvZyhgJHtTdHJpbmcodGhpcy5pZCl9IEdyYWNlZnVsbHkgaGFuZGxpbmcgbm9uLWV4aXN0ZW50IGNvbmZpZyBmaWxlOiAke2hpZ2hsaWdodChmaWxlKX1gKTtcblx0XHR9XG5cblx0XHRpZiAoIWdyYWNlZnVsIHx8IGV4aXN0cykge1xuXHRcdFx0dGhpcy5zdG9yZS5sb2FkKGZpbGUpO1xuXHRcdFx0Y29uc3QgZGF0YSA9IHRoaXMuc3RvcmUuZ2V0KCk7XG5cdFx0XHR0aGlzLnZhbGlkYXRlKHtcblx0XHRcdFx0YWN0aW9uOiAnbG9hZCcsXG5cdFx0XHRcdG1lc3NhZ2U6ICdGYWlsZWQgdG8gbG9hZCBjb25maWcgZmlsZScsXG5cdFx0XHRcdHZhbHVlOiB0aGlzLm5hbWVzcGFjZSA/IHsgW3RoaXMubmFtZXNwYWNlXTogZGF0YSB9IDogZGF0YVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZHMgYSBzY2hlbWEgZnJvbSBhIGZpbGUgb3Igb2JqZWN0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IHNjaGVtYSAtIFRoZSBwYXRoIHRvIHRoZSBjb25maWcgZmlsZSB0byBsb2FkIG9yIEpvaSBzY2hlbWEuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGxvYWRTY2hlbWEoc2NoZW1hKSB7XG5cdFx0aWYgKCFzY2hlbWEpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHNjaGVtYSB0byBiZSBhbiBvYmplY3Qgb3IgZmlsZScpO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2Ygc2NoZW1hID09PSAnc3RyaW5nJykge1xuXHRcdFx0aWYgKCFmcy5leGlzdHNTeW5jKHNjaGVtYSkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtzY2hlbWF9YCk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGV4dCA9IHBhdGguZXh0bmFtZShzY2hlbWEpO1xuXHRcdFx0aWYgKGV4dCAhPT0gJy5qcycgJiYgZXh0ICE9PSAnLmpzb24nKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgc2NoZW1hIGZpbGUgdHlwZTogJHtleHR9YCk7XG5cdFx0XHR9XG5cblx0XHRcdGxvZyhgJHtTdHJpbmcodGhpcy5pZCl9IExvYWRpbmcgJHtoaWdobGlnaHQoc2NoZW1hKX1gKTtcblx0XHRcdGlmIChleHQgPT09ICcuanNvbicpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRzY2hlbWEgPSBmcy5yZWFkSnNvblN5bmMoc2NoZW1hKTtcblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIHNjaGVtYSBqc29uIGZpbGU6ICR7ZS5tZXNzYWdlfWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGV4dCA9PT0gJy5qcycpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRzY2hlbWEgPSBpbXBvcnRGcmVzaChzY2hlbWEpO1xuXHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2Ugc2NoZW1hIGpzIGZpbGU6ICR7ZS5tZXNzYWdlfWApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gY2hlY2sgaWYgd2UgaGF2ZSBhIGJhYmVsIHRyYW5zcGlsZWQgZmlsZVxuXHRcdFx0XHRpZiAoc2NoZW1hICYmIHR5cGVvZiBzY2hlbWEgPT09ICdvYmplY3QnICYmIHNjaGVtYS5fX2VzTW9kdWxlICYmIHNjaGVtYS5kZWZhdWx0KSB7XG5cdFx0XHRcdFx0c2NoZW1hID0gc2NoZW1hLmRlZmF1bHQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodHlwZW9mIHNjaGVtYSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdHNjaGVtYSA9IHNjaGVtYSh7IGN0eDogdGhpcywgSm9pIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCFzY2hlbWEgfHwgdHlwZW9mIHNjaGVtYSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHNjaGVtYSB0byBiZSBhbiBvYmplY3Qgb3IgZmlsZScpO1xuXHRcdH1cblxuXHRcdGlmIChKb2kuaXNTY2hlbWEoc2NoZW1hKSkge1xuXHRcdFx0aWYgKHNjaGVtYS50eXBlICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzY2hlbWEgcm9vdCB0byBiZSBhbiBvYmplY3QnKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHRcdGxldCBmb3VuZCA9IGZhbHNlO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2Ygc2NoZW1hLiRfdGVybXMua2V5cykge1xuXHRcdFx0XHRcdGlmIChpdGVtLmtleSA9PT0gdGhpcy5uYW1lc3BhY2UgJiYgaXRlbS5zY2hlbWEudHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHRcdGZvdW5kID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWZvdW5kKSB7XG5cdFx0XHRcdFx0c2NoZW1hID0gSm9pLm9iamVjdCh7IFt0aGlzLm5hbWVzcGFjZV06IHNjaGVtYSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAodGhpcy5uYW1lc3BhY2UgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzY2hlbWEsIHRoaXMubmFtZXNwYWNlKSkge1xuXHRcdFx0XHRzY2hlbWEgPSB7IFt0aGlzLm5hbWVzcGFjZV06IHNjaGVtYSB9O1xuXHRcdFx0fVxuXHRcdFx0bG9nKGAke1N0cmluZyh0aGlzLmlkKX0gQ29tcGlsaW5nIHNjaGVtYS4uLmApO1xuXHRcdFx0c2NoZW1hID0gSm9pLmNvbXBpbGUoc2NoZW1hKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5hbGxvd051bGxzKSB7XG5cdFx0XHRsb2coYCR7U3RyaW5nKHRoaXMuaWQpfSBGb3JjaW5nIG51bGxzIG9uIHNjaGVtYWApO1xuXHRcdFx0KGZ1bmN0aW9uIHdhbGsoc2NoZW1hKSB7XG5cdFx0XHRcdGlmIChzY2hlbWEuX3ZhbGlkcykge1xuXHRcdFx0XHRcdHNjaGVtYS5fdmFsaWRzLmFkZChudWxsKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzY2hlbWEuX3ZhbGlkcyA9IG5ldyBWYWx1ZXMoWyBudWxsIF0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHNjaGVtYS50eXBlID09PSAnb2JqZWN0JyAmJiBzY2hlbWEuJF90ZXJtcy5rZXlzKSB7XG5cdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIHNjaGVtYS4kX3Rlcm1zLmtleXMpIHtcblx0XHRcdFx0XHRcdHdhbGsoaXRlbS5zY2hlbWEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fShzY2hlbWEpKTtcblx0XHR9XG5cblx0XHR0aGlzLnNjaGVtYSA9IHNjaGVtYTtcblxuXHRcdC8vIHdoZW4gbG9hZFNjaGVtYSgpIGlzIGNhbGxlZCBmcm9tIHRoZSBjb25zdHJ1Y3RvciwgYHRoaXMuc3RvcmVgIHdpbGwgbm90IGhhdmUgYmVlbiBzZXRcblx0XHQvLyB5ZXQsIHNvIHRoaXMgaXMgcmVhbGx5IGZvciB0aGUgcHVibGljIEFQSVxuXHRcdGlmICh0aGlzLnN0b3JlKSB7XG5cdFx0XHR0aGlzLnN0b3JlLnNjaGVtYSA9IHRoaXMubmFtZXNwYWNlICYmIHNjaGVtYS4kX3Rlcm1zLmtleXM/LmZpbmQocyA9PiBzLmtleSA9PT0gdGhpcy5uYW1lc3BhY2UpPy5zY2hlbWEgfHwgc2NoZW1hO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlZXBseSBtZXJnZXMgYW4gb2JqZWN0IGludG8gYSBsYXllcidzIHN0b3JlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gdmFsdWUgLSBUaGUgZGF0YSB0byBtZXJnZS5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bWVyZ2UodmFsdWUpIHtcblx0XHRpZiAodGhpcy5yZWFkb25seSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBMYXllciBcIiR7U3RyaW5nKHRoaXMuaWQpfVwiIGlzIHJlYWRvbmx5YCk7XG5cdFx0fVxuXHRcdHRoaXMudmFsaWRhdGUoeyBhY3Rpb246ICdtZXJnZScsIHZhbHVlIH0pO1xuXHRcdGlmICgoIXRoaXMubmFtZXNwYWNlIHx8ICh2YWx1ZSA9IHZhbHVlW3RoaXMubmFtZXNwYWNlXSkpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdHRoaXMuc3RvcmUubWVyZ2UodmFsdWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhpcyBsYXllciBoYXMgYSBuYW1lc3BhY2VzIGFuZCBpZiB0aGUga2V5IGhhcyB0aGUgbmFtZXNwYWNlLCB0aGVuIHJldHVybnMgdGhlXG5cdCAqIHJlc29sdmVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byByZXNvbHZlLlxuXHQgKiBAcmV0dXJucyB7QXJyYXkuPFN0cmluZz59XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0cmVzb2x2ZUtleShrZXkpIHtcblx0XHRpZiAoa2V5Lmxlbmd0aCAmJiB0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0cmV0dXJuIGtleVswXSA9PT0gdGhpcy5uYW1lc3BhY2UgPyBrZXkuc2xpY2UoMSkgOiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4ga2V5O1xuXHR9XG5cblx0LyoqXG5cdCAqIFNhdmVzIGEgc3BlY2lmaWMgbGF5ZXIncyBzdG9yZSB0byBkaXNrLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW2ZpbGVdIC0gVGhlIGZpbGUgdG8gd3JpdGUgdGhlIGxheWVycyBzdG9yZSB0by5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2F2ZShmaWxlKSB7XG5cdFx0bG9nKGAke1N0cmluZyh0aGlzLmlkKX0gU2F2aW5nIHRvIGZpbGU6ICR7aGlnaGxpZ2h0KGZpbGUgfHwgdGhpcy5maWxlKX1gKTtcblx0XHR0aGlzLnN0b3JlLnNhdmUoZmlsZSB8fCB0aGlzLmZpbGUpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgYSB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGtleSAtIFRoZSBrZXkgdG8gc2V0LlxuXHQgKiBAcGFyYW0geyp9IFt2YWx1ZV0gLSBUaGUgdmFsdWU7XG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbYWN0aW9uPVwic2V0XCJdIC0gQW4gYWN0aW9uIGhpbnQgZm9yIHZhbGlkYXRpb24uXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICovXG5cdHNldChrZXksIHZhbHVlLCBhY3Rpb24gPSAnc2V0Jykge1xuXHRcdGlmICh0aGlzLnJlYWRvbmx5KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYExheWVyIFwiJHtTdHJpbmcodGhpcy5pZCl9XCIgaXMgcmVhZG9ubHlgKTtcblx0XHR9XG5cblx0XHRpZiAoIWtleSB8fCAha2V5Lmxlbmd0aCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHJlcXVpcmVkIGNvbmZpZyBrZXknKTtcblx0XHR9XG5cblx0XHR0aGlzLnZhbGlkYXRlKHsgYWN0aW9uLCBrZXksIHZhbHVlIH0pO1xuXHRcdGlmIChrZXkgPSB0aGlzLnJlc29sdmVLZXkoa2V5KSkge1xuXHRcdFx0dGhpcy5zdG9yZS5zZXQoa2V5LCB2YWx1ZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIHZhbHVlIG9mIHRoZSBzdG9yZSBhcyBhIHN0cmluZy5cblx0ICpcblx0ICogQHBhcmFtIHsqfSBbYXJnc10gLSBWYXJpb3VzIGFyZ3VtZW50cyB0byBwYXNzIGludG8gdGhlIHN0b3JlJ3MgYHRvU3RyaW5nKClgLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dG9TdHJpbmcoLi4uYXJncykge1xuXHRcdHJldHVybiB0aGlzLnN0b3JlPy50b1N0cmluZyguLi5hcmdzKSB8fCAnJztcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhpcyBsYXllciBjYW4gYmUgdW5sb2FkZWQuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHVubG9hZCgpIHtcblx0XHRpZiAodGhpcy5zdGF0aWMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVubG9hZCBzdGF0aWMgbGF5ZXInKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHVud2F0Y2goaGFuZGxlcikge1xuXHRcdGNvbnN0IHdyYXBwZWQgPSB0aGlzLndhdGNoZXJNYXAuZ2V0KGhhbmRsZXIpO1xuXHRcdGlmICh3cmFwcGVkKSB7XG5cdFx0XHR0aGlzLnN0b3JlLnVud2F0Y2god3JhcHBlZCk7XG5cdFx0XHR0aGlzLndhdGNoZXJNYXAuZGVsZXRlKGhhbmRsZXIpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgdmFsaWRhdG9yIGZ1bmN0aW9uIHRoYXQgZWl0aGVyIGludm9rZXMgdGhlIGN1c3RvbSB2YWxpZGF0b3Igb3IgdGhlIGRlZmF1bHRcblx0ICogdmFsaWRhdG9yLlxuXHQgKlxuXHQgKiBAdHlwZSB7RnVuY3Rpb259XG5cdCAqL1xuXHRnZXQgdmFsaWRhdGUoKSB7XG5cdFx0cmV0dXJuIGFyZ3MgPT4gKHRoaXMudmFsaWRhdG9yIHx8IHZhbGlkYXRlKSh7XG5cdFx0XHRzY2hlbWFzOiB0aGlzLnNjaGVtYSA/IFsgdGhpcy5zY2hlbWEgXSA6IFtdLFxuXHRcdFx0Li4uYXJnc1xuXHRcdH0pO1xuXHR9XG5cblx0c2V0IHZhbGlkYXRlKGZuKSB7XG5cdFx0aWYgKCFmbiB8fCB0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHZhbGlkYXRvciB0byBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0fVxuXHRcdHRoaXMudmFsaWRhdG9yID0gZm47XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2ZpbHRlcl0gLSBBIHByb3BlcnR5IG5hbWUgb3IgYXJyYXkgb2YgbmVzdGVkIHByb3BlcnRpZXMgdG8gd2F0Y2guXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHdhdGNoKGZpbHRlciwgaGFuZGxlcikge1xuXHRcdGNvbnN0IHdyYXBwZWQgPSBvYmogPT4gaGFuZGxlcihvYmosIHRoaXMpO1xuXHRcdHRoaXMud2F0Y2hlck1hcC5zZXQoaGFuZGxlciwgd3JhcHBlZCk7XG5cdFx0dGhpcy5zdG9yZS53YXRjaChmaWx0ZXIsIHdyYXBwZWQpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG4iXSwiZmlsZSI6ImxheWVyLmpzIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxheWVyLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsInNub29wbG9nZyIsInN0eWxlcyIsIkxheWVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiTWFwIiwiYWxsb3dOdWxscyIsImlkIiwibmFtZXNwYWNlIiwib3JkZXIiLCJyZWFkb25seSIsInN0YXRpYyIsInZhbGlkYXRlIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwiZGVmYXVsdHMiLCJlbnYiLCJzY2hlbWEiLCJsb2FkU2NoZW1hIiwic3RvcmUiLCJTdG9yZSIsImRhdGEiLCJKU09OU3RvcmUiLCJtZXJnZSIsImZpbGUiLCJsb2FkIiwiZ3JhY2VmdWwiLCJkZWxldGUiLCJrZXkiLCJFcnJvciIsIlN0cmluZyIsImxlbmd0aCIsImFjdGlvbiIsInJlc29sdmVLZXkiLCJrZXlzIiwiZ2V0IiwibnNLZXkiLCJ2YWx1ZSIsImhhcyIsImV4aXN0cyIsImZzIiwiZXhpc3RzU3luYyIsIm1lc3NhZ2UiLCJleHQiLCJwYXRoIiwiZXh0bmFtZSIsInJlYWRKc29uU3luYyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImN0eCIsIkpvaSIsImlzU2NoZW1hIiwidHlwZSIsImZvdW5kIiwiaXRlbSIsIiRfdGVybXMiLCJvYmplY3QiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJjb21waWxlIiwid2FsayIsIl92YWxpZHMiLCJhZGQiLCJWYWx1ZXMiLCJmaW5kIiwicyIsInNsaWNlIiwic2F2ZSIsInNldCIsInRvU3RyaW5nIiwiYXJncyIsInVubG9hZCIsInVud2F0Y2giLCJoYW5kbGVyIiwid3JhcHBlZCIsIndhdGNoZXJNYXAiLCJ2YWxpZGF0b3IiLCJzY2hlbWFzIiwiZm4iLCJ3YXRjaCIsImZpbHRlciIsIm9iaiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7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SSxJQUFJLENBQUMsS0FBS00sU0FBTCxJQUFrQm5FLGNBQW5CO0FBQ2RvRSxNQUFBQSxPQUFPLEVBQUUsS0FBSy9ELE1BQUwsR0FBYyxDQUFFLEtBQUtBLE1BQVAsQ0FBZCxHQUFnQztBQUQzQixPQUVYd0QsSUFGVyxFQUFmO0FBSUE7O0FBRUQsTUFBSTdELFFBQUosQ0FBYXFFLEVBQWIsRUFBaUI7QUFDaEIsUUFBSSxDQUFDQSxFQUFELElBQU8sT0FBT0EsRUFBUCxLQUFjLFVBQXpCLEVBQXFDO0FBQ3BDLFlBQU0sSUFBSW5FLFNBQUosQ0FBYyxxQ0FBZCxDQUFOO0FBQ0E7O0FBQ0QsU0FBS2lFLFNBQUwsR0FBaUJFLEVBQWpCO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0MsRUFBQUEsS0FBSyxDQUFDQyxNQUFELEVBQVNQLE9BQVQsRUFBa0I7QUFDdEIsVUFBTUMsT0FBTyxHQUFHTyxHQUFHLElBQUlSLE9BQU8sQ0FBQ1EsR0FBRCxFQUFNLElBQU4sQ0FBOUI7O0FBQ0EsU0FBS04sVUFBTCxDQUFnQlAsR0FBaEIsQ0FBb0JLLE9BQXBCLEVBQTZCQyxPQUE3QjtBQUNBLFNBQUsxRCxLQUFMLENBQVcrRCxLQUFYLENBQWlCQyxNQUFqQixFQUF5Qk4sT0FBekI7QUFDQSxXQUFPLElBQVA7QUFDQTs7QUF2Z0J5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgaW1wb3J0RnJlc2ggZnJvbSAnaW1wb3J0LWZyZXNoJztcbmltcG9ydCBKb2kgZnJvbSAnam9pJztcbmltcG9ydCBKU09OU3RvcmUgZnJvbSAnLi9zdG9yZXMvanNvbi1zdG9yZSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBzbm9vcGxvZ2cgZnJvbSAnc25vb3Bsb2dnJztcbmltcG9ydCBTdG9yZSBmcm9tICcuL3N0b3JlJztcbmltcG9ydCBWYWx1ZXMgZnJvbSAnam9pL2xpYi92YWx1ZXMnO1xuaW1wb3J0IHsgZ2V0U2NoZW1hSW5pdGlhbFZhbHVlcywgdmFsaWRhdGUgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCB7IGxvZyB9ID0gc25vb3Bsb2dnKCdjb25maWcta2l0JykoJ2pzLXN0b3JlJyk7XG5jb25zdCB7IGhpZ2hsaWdodCB9ID0gc25vb3Bsb2dnLnN0eWxlcztcblxuLyoqXG4gKiBDb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBhIGxheWVyLiBUaGUgbGF5ZXIncyBkYXRhIGlzIGxvY2F0ZWQgaW4gdGhlIGxheWVyJ3Mgc3RvcmUuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExheWVyIHtcblx0LyoqXG5cdCAqIEZvcmNlcyBhbGwgbm9kZXMgb2YgYSBzY2hlbWEgdG8gYWxsb3cgbnVsbHMuXG5cdCAqIEB0eXBlIHtCb29sZWFufVxuXHQgKi9cblx0YWxsb3dOdWxscyA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBUaGUgcGF0aCB0byB0aGUgZmlsZSB0byB3cml0ZSB0aGUgY29uZmlnIGZpbGUgdG8uIFRoaXMgdmFsdWUgY2FuIGJlIG92ZXJ3cml0dGVuIHdpdGggYSBmaWxlXG5cdCAqIHBhdGggc3BlY2lmaWVkIHBhc3NlZCBpbiB3aGVuIHNhdmluZy5cblx0ICogQHBhcmFtIHtTdHJpbmd9XG5cdCAqL1xuXHRmaWxlID0gbnVsbDtcblxuXHQvKipcblx0ICogVGhlIGxheWVyIGlkZW50aWZpZXIuXG5cdCAqIEB0eXBlIHtTdHJpbmd8U3ltYm9sfVxuXHQgKi9cblx0aWQgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBBbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBzY29wZSBlbmNvbXBhc3NpbmcgdGhpcyBsYXllcidzIGRhdGEgYW5kIHNjaGVtYS5cblx0ICogQHR5cGUge1N0cmluZ31cblx0ICovXG5cdG5hbWVzcGFjZSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIFRoZSBsYXllciBwcmVjZWRlbmNlIGluIHRoZSBsYXllciBsaXN0LlxuXHQgKiBAdHlwZSB7TnVtYmVyfVxuXHQgKi9cblx0b3JkZXIgPSAwO1xuXG5cdC8qKlxuXHQgKiBJbmRpY2F0ZXMgaWYgdGhlIHZhbHVlcyBpbiB0aGUgc3RvcmUgY2FuIGJlIG1vZGlmaWVkLlxuXHQgKiBAdHlwZSB7Qm9vbGVhbn1cblx0ICovXG5cdHJlYWRvbmx5ID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFRoZSBKb2kgc2NoZW1hLlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKi9cblx0c2NoZW1hID0gbnVsbDtcblxuXHQvKipcblx0ICogSW5kaWNhdGVzIGlmIHRoaXMgbGF5ZXIgY2FuIGJlIHVubG9hZGVkLlxuXHQgKiBAdHlwZSB7Qm9vbGVhbn1cblx0ICovXG5cdHN0YXRpYyA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBBIHJlZmVyZW5jZSB0byB0aGUgbGF5ZXIncyBkYXRhIHN0b3JlIGluc3RhbmNlLlxuXHQgKiBAdHlwZSB7U3RvcmV9XG5cdCAqL1xuXHRzdG9yZSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEEgY3VzdG9tIHZhbGlkYXRpb24gY2FsbGJhY2suIElmIG5vdCBzZXQsIGRlZmF1bHRzIHRvIHZhbGlkYXRpbmcgYWdhaW5zdCB0aGlzIGxheWVyJ3Ncblx0ICogc2NoZW1hLlxuXHQgKiBAdHlwZSB7RnVuY3Rpb259XG5cdCAqL1xuXHR2YWxpZGF0b3IgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBBIGxvb2t1cCB0YWJsZSBvZiBvcmlnaW5hbCB3YXRjaCBoYW5kbGVycyB0byB0aGVpciB3cmFwcGVkIGNvdW50ZXJwYXJ0cyBzbyB0aGF0IGl0IGNhblxuXHQgKiBhZGQgYSByZWZlcmVuY2UgdG8gdGhpcyBsYXllciB0byB0aGUgZXZlbnQgaGFuZGxlci5cblx0ICogQHR5cGUge01hcH1cblx0ICovXG5cdHdhdGNoZXJNYXAgPSBuZXcgTWFwKCk7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBsYXllciwgbG9hZHMgYSBmaWxlLCBhbmQgaW5pdGlhbGl6ZXMgdGhlIHNjaGVtYSBvYmplY3QuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuYWxsb3dOdWxsc10gLSBGb3JjZXMgYWxsIG5vZGVzIG9mIGEgc2NoZW1hIHRvIGFsbG93IG51bGxzLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHMuZGF0YV0gLSBEYXRhIHRvIGluaXRpYWxpemUgdGhlIGJhc2UgY29uZmlnIGxheWVyIHdpdGguXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5maWxlXSAtIFRoZSBmaWxlIGJhY2tpbmcgdGhpcyBsYXllcidzIHN0b3JlLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmdyYWNlZnVsPXRydWVdIC0gVHJ5IHRvIGxvYWQgdGhlIGZpbGUsIGJ1dCBpZiBpdCBkb2Vzbid0IGV4aXN0LCB0aGVuXG5cdCAqIGdyYWNlZnVsbHkgaGFuZGxlIHRoZSBlcnJvci5cblx0ICogQHBhcmFtIHtTdHJpbmd8U3ltYm9sfSBbb3B0cy5pZF0gLSBUaGUgbGF5ZXIgaWQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5uYW1lc3BhY2VdIC0gVGhlIG5hbWUgb2YgdGhlIHNjb3BlIGVuY29tcGFzc2luZyB0aGlzIGxheWVyJ3MgZGF0YSBhbmRcblx0ICogc2NoZW1hIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5vcmRlcj0wXSAtIFRoZSBsYXllciBwcmVjZWRlbmNlLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLnJlYWRvbmx5XSAtIEluZGljYXRlcyBpZiB0aGlzIGxheWVyJ3MgZGF0YSBjYW4gYmUgY2hhbmdlZC5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzLnNjaGVtYV0gLSBBIEpvaSBzY2hlbWEgb3Igb2JqZWN0IHRvIGNvbXBpbGUgaW50byBhIEpvaSBzY2hlbWEuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuc3RhdGljXSAtIEluZGljYXRlcyBpZiB0aGlzIGxheWVyIGNhbiBiZSB1bmxvYWRlZC5cblx0ICogQHBhcmFtIHtTdG9yZX0gW29wdHMuc3RvcmVdIC0gVGhlIGRhdGEgc3RvcmUuIERlZmF1bHRzIHRvIGEgYEpTT05TdG9yZWAgaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRzLnZhbGlkYXRlXSAtIEEgZnVuY3Rpb24gdG8gY2FsbCBhbmQgdmFsaWRhdGUgY2hhbmdlcyBhZ2FpbnN0IGEgc2NoZW1hLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0dGhpcy5hbGxvd051bGxzID0gb3B0cy5hbGxvd051bGxzO1xuXHRcdHRoaXMuaWQgICAgICAgICA9IG9wdHMuaWQgfHwgbnVsbDtcblx0XHR0aGlzLm5hbWVzcGFjZSAgPSBvcHRzLm5hbWVzcGFjZTtcblx0XHR0aGlzLm9yZGVyICAgICAgPSBvcHRzLm9yZGVyIHx8IDA7XG5cdFx0dGhpcy5yZWFkb25seSAgID0gISFvcHRzLnJlYWRvbmx5O1xuXHRcdHRoaXMuc3RhdGljICAgICA9ICEhb3B0cy5zdGF0aWM7XG5cblx0XHRpZiAob3B0cy52YWxpZGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAodHlwZW9mIG9wdHMudmFsaWRhdGUgIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgdmFsaWRhdGUgY2FsbGJhY2sgdG8gYmUgYSBmdW5jdGlvbicpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy52YWxpZGF0ZSA9IG9wdHMudmFsaWRhdGU7XG5cdFx0fVxuXG5cdFx0bGV0IGRlZmF1bHRzLCBlbnY7XG5cblx0XHRpZiAob3B0cy5zY2hlbWEpIHtcblx0XHRcdHRoaXMubG9hZFNjaGVtYShvcHRzLnNjaGVtYSk7XG5cdFx0XHQoeyBkZWZhdWx0cywgZW52IH0gPSBnZXRTY2hlbWFJbml0aWFsVmFsdWVzKHRoaXMuc2NoZW1hKSk7XG5cdFx0fVxuXG5cdFx0aWYgKG9wdHMuc3RvcmUgaW5zdGFuY2VvZiBTdG9yZSkge1xuXHRcdFx0dGhpcy5zdG9yZSA9IG9wdHMuc3RvcmU7XG5cdFx0XHRpZiAodGhpcy5zY2hlbWEpIHtcblx0XHRcdFx0dGhpcy5zdG9yZS5zY2hlbWEgPSB0aGlzLnNjaGVtYTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBvcHRzLnN0b3JlID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHR0aGlzLnN0b3JlID0gbmV3IG9wdHMuc3RvcmUoeyBkYXRhOiBkZWZhdWx0cywgc2NoZW1hOiB0aGlzLnNjaGVtYSB9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zdG9yZSA9IG5ldyBKU09OU3RvcmUob3B0cy5zdG9yZSB8fCB7IGRhdGE6IGRlZmF1bHRzLCBzY2hlbWE6IHRoaXMuc2NoZW1hIH0pO1xuXHRcdH1cblxuXHRcdGxldCB7IGRhdGEgfSA9IG9wdHM7XG5cdFx0aWYgKGRhdGEpIHtcblx0XHRcdGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgbGF5ZXIgZGF0YSB0byBiZSBhbiBvYmplY3QnKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdHRoaXMubWVyZ2UodGhpcy5uYW1lc3BhY2UgPyB7IFt0aGlzLm5hbWVzcGFjZV06IGRhdGEgfSA6IGRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvcHRzLmZpbGUpIHtcblx0XHRcdHRoaXMubG9hZChvcHRzLmZpbGUsIG9wdHMuZ3JhY2VmdWwgIT09IGZhbHNlKTtcblx0XHR9XG5cblx0XHRpZiAoZW52KSB7XG5cdFx0XHQvLyB3ZSBjYW4gbWVyZ2UgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHZhbHVlcyBkaXJlY3RseSBpbnRvIHRoZSBzdG9yZSBzaW5jZSB3ZSd2ZVxuXHRcdFx0Ly8gYWxyZWFkeSBkb25lIHRoZSB2YWxpZGF0aW9uIGluIGBnZXRTY2hlbWFJbml0aWFsVmFsdWVzKClgXG5cdFx0XHR0aGlzLnN0b3JlLm1lcmdlKGVudik7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgYSB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IGtleSAtIFRoZSBrZXkgdG8gc2V0LlxuXHQgKiBAcmV0dXJucyB7Qm9vbGVhbn1cblx0ICovXG5cdGRlbGV0ZShrZXkpIHtcblx0XHRpZiAodGhpcy5yZWFkb25seSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBMYXllciBcIiR7U3RyaW5nKHRoaXMuaWQpfVwiIGlzIHJlYWRvbmx5YCk7XG5cdFx0fVxuXG5cdFx0aWYgKCFrZXkgfHwgIWtleS5sZW5ndGgpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignTWlzc2luZyByZXF1aXJlZCBjb25maWcga2V5Jyk7XG5cdFx0fVxuXG5cdFx0dGhpcy52YWxpZGF0ZSh7IGFjdGlvbjogJ2RlbGV0ZScsIGtleSB9KTtcblx0XHRpZiAoa2V5ID0gdGhpcy5yZXNvbHZlS2V5KGtleSkpIHtcblx0XHRcdGNvbnN0IGtleXMgPSB0aGlzLm5hbWVzcGFjZSAmJiB0aGlzLnN0b3JlLmtleXMoKTtcblx0XHRcdGlmIChrZXlzICYmIGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09IHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHRcdC8vIGRhdGEgaXMgbmFtZXNwYWNlZCwgc28gd2UgbmVlZCB0byBhZGQgdGhlIG5hbWVzcGFjZSBiYWNrXG5cdFx0XHRcdHJldHVybiB0aGlzLnN0b3JlLmRlbGV0ZShbIHRoaXMubmFtZXNwYWNlLCAuLi5rZXkgXSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5zdG9yZS5kZWxldGUoa2V5KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBba2V5XSAtIFRoZSBrZXkgdG8gZ2V0LiBXaGVuIGB1bmRlZmluZWRgLCB0aGUgZW50aXJlIGNvbmZpZyBpc1xuXHQgKiByZXR1cm5lZC5cblx0ICogQHJldHVybnMgeyp9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQoa2V5KSB7XG5cdFx0bGV0IG5zS2V5ID0gdGhpcy5yZXNvbHZlS2V5KGtleSk7XG5cdFx0aWYgKG5zS2V5ID09PSBudWxsKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3Qga2V5cyA9IHRoaXMubmFtZXNwYWNlICYmIHRoaXMuc3RvcmUua2V5cygpO1xuXHRcdGxldCB2YWx1ZTtcblx0XHRpZiAoa2V5cyAmJiBrZXlzLmxlbmd0aCA9PT0gMSAmJiBrZXlzWzBdID09PSB0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0Ly8gZGF0YSBpcyBuYW1lc3BhY2VkLCBzbyB3ZSBuZWVkIHRvIGFkZCB0aGUgbmFtZXNwYWNlIGJhY2tcblx0XHRcdHZhbHVlID0gdGhpcy5zdG9yZS5nZXQoWyB0aGlzLm5hbWVzcGFjZSwgLi4ubnNLZXkgXSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhbHVlID0gdGhpcy5zdG9yZS5nZXQobnNLZXkpO1xuXHRcdH1cblxuXHRcdGlmICghbnNLZXk/Lmxlbmd0aCAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBzZXQgdG8gZW1wdHkgb2JqZWN0IGlmIHZhbHVlXG5cdFx0XHR2YWx1ZSA9IHt9O1xuXHRcdH1cblxuXHRcdGlmIChrZXkubGVuZ3RoICYmIHRoaXMubmFtZXNwYWNlICYmIGtleVswXSA9PT0gdGhpcy5uYW1lc3BhY2UpIHtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5uYW1lc3BhY2UgPyB7IFt0aGlzLm5hbWVzcGFjZV06IHZhbHVlIH0gOiB2YWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIGlmIGEga2V5IGlzIHNldC5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyB7Qm9vbGVhbn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGhhcyhrZXkpIHtcblx0XHRjb25zdCBuc0tleSA9IHRoaXMucmVzb2x2ZUtleShrZXkpO1xuXHRcdGlmIChuc0tleSA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGtleXMgPSB0aGlzLm5hbWVzcGFjZSAmJiB0aGlzLnN0b3JlLmtleXMoKTtcblx0XHRpZiAoa2V5cyAmJiBrZXlzLmxlbmd0aCA9PT0gMSAmJiBrZXlzWzBdID09PSB0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0Ly8gZGF0YSBpcyBuYW1lc3BhY2VkLCBzbyB3ZSBuZWVkIHRvIGFkZCB0aGUgbmFtZXNwYWNlIGJhY2tcblx0XHRcdHJldHVybiB0aGlzLnN0b3JlLmhhcyhbIHRoaXMubmFtZXNwYWNlLCAuLi5uc0tleSBdKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5zdG9yZS5oYXMobnNLZXkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWRzIGEgY29uZmlnIGZpbGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlIHRvIGxvYWQuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW2dyYWNlZnVsPWZhbHNlXSAtIFdoZW4gYHRydWVgLCBkb2Vzbid0IGVycm9yIGlmIHRoZSBjb25maWcgZmlsZSBkb2VzIG5vdFxuXHQgKiBleGlzdC5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bG9hZChmaWxlLCBncmFjZWZ1bCkge1xuXHRcdGlmICghZmlsZSB8fCB0eXBlb2YgZmlsZSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGNvbmZpZyBmaWxlIHBhdGggdG8gYmUgYSBzdHJpbmcnKTtcblx0XHR9XG5cblx0XHRjb25zdCBleGlzdHMgPSBmcy5leGlzdHNTeW5jKGZpbGUpO1xuXHRcdHRoaXMuZmlsZSA9IGZpbGU7XG5cblx0XHRpZiAoZ3JhY2VmdWwgJiYgIWV4aXN0cykge1xuXHRcdFx0bG9nKGAke1N0cmluZyh0aGlzLmlkKX0gR3JhY2VmdWxseSBoYW5kbGluZyBub24tZXhpc3RlbnQgY29uZmlnIGZpbGU6ICR7aGlnaGxpZ2h0KGZpbGUpfWApO1xuXHRcdH1cblxuXHRcdGlmICghZ3JhY2VmdWwgfHwgZXhpc3RzKSB7XG5cdFx0XHR0aGlzLnN0b3JlLmxvYWQoZmlsZSk7XG5cdFx0XHRjb25zdCBkYXRhID0gdGhpcy5zdG9yZS5nZXQoKTtcblx0XHRcdHRoaXMudmFsaWRhdGUoe1xuXHRcdFx0XHRhY3Rpb246ICdsb2FkJyxcblx0XHRcdFx0bWVzc2FnZTogJ0ZhaWxlZCB0byBsb2FkIGNvbmZpZyBmaWxlJyxcblx0XHRcdFx0dmFsdWU6IHRoaXMubmFtZXNwYWNlID8geyBbdGhpcy5uYW1lc3BhY2VdOiBkYXRhIH0gOiBkYXRhXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBhIHNjaGVtYSBmcm9tIGEgZmlsZSBvciBvYmplY3QuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gc2NoZW1hIC0gVGhlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlIHRvIGxvYWQgb3IgSm9pIHNjaGVtYS5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bG9hZFNjaGVtYShzY2hlbWEpIHtcblx0XHRpZiAoIXNjaGVtYSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc2NoZW1hIHRvIGJlIGFuIG9iamVjdCBvciBmaWxlJyk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBzY2hlbWEgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRpZiAoIWZzLmV4aXN0c1N5bmMoc2NoZW1hKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke3NjaGVtYX1gKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZXh0ID0gcGF0aC5leHRuYW1lKHNjaGVtYSk7XG5cdFx0XHRpZiAoZXh0ICE9PSAnLmpzJyAmJiBleHQgIT09ICcuanNvbicpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzY2hlbWEgZmlsZSB0eXBlOiAke2V4dH1gKTtcblx0XHRcdH1cblxuXHRcdFx0bG9nKGAke1N0cmluZyh0aGlzLmlkKX0gTG9hZGluZyAke2hpZ2hsaWdodChzY2hlbWEpfWApO1xuXHRcdFx0aWYgKGV4dCA9PT0gJy5qc29uJykge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHNjaGVtYSA9IGZzLnJlYWRKc29uU3luYyhzY2hlbWEpO1xuXHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2Ugc2NoZW1hIGpzb24gZmlsZTogJHtlLm1lc3NhZ2V9YCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoZXh0ID09PSAnLmpzJykge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdHNjaGVtYSA9IGltcG9ydEZyZXNoKHNjaGVtYSk7XG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBzY2hlbWEganMgZmlsZTogJHtlLm1lc3NhZ2V9YCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBjaGVjayBpZiB3ZSBoYXZlIGEgYmFiZWwgdHJhbnNwaWxlZCBmaWxlXG5cdFx0XHRcdGlmIChzY2hlbWEgJiYgdHlwZW9mIHNjaGVtYSA9PT0gJ29iamVjdCcgJiYgc2NoZW1hLl9fZXNNb2R1bGUgJiYgc2NoZW1hLmRlZmF1bHQpIHtcblx0XHRcdFx0XHRzY2hlbWEgPSBzY2hlbWEuZGVmYXVsdDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0eXBlb2Ygc2NoZW1hID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0c2NoZW1hID0gc2NoZW1hKHsgY3R4OiB0aGlzLCBKb2kgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIXNjaGVtYSB8fCB0eXBlb2Ygc2NoZW1hICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc2NoZW1hIHRvIGJlIGFuIG9iamVjdCBvciBmaWxlJyk7XG5cdFx0fVxuXG5cdFx0aWYgKEpvaS5pc1NjaGVtYShzY2hlbWEpKSB7XG5cdFx0XHRpZiAoc2NoZW1hLnR5cGUgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHNjaGVtYSByb290IHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5uYW1lc3BhY2UpIHtcblx0XHRcdFx0bGV0IGZvdW5kID0gZmFsc2U7XG5cdFx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBzY2hlbWEuJF90ZXJtcy5rZXlzKSB7XG5cdFx0XHRcdFx0aWYgKGl0ZW0ua2V5ID09PSB0aGlzLm5hbWVzcGFjZSAmJiBpdGVtLnNjaGVtYS50eXBlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdFx0Zm91bmQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghZm91bmQpIHtcblx0XHRcdFx0XHRzY2hlbWEgPSBKb2kub2JqZWN0KHsgW3RoaXMubmFtZXNwYWNlXTogc2NoZW1hIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICh0aGlzLm5hbWVzcGFjZSAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNjaGVtYSwgdGhpcy5uYW1lc3BhY2UpKSB7XG5cdFx0XHRcdHNjaGVtYSA9IHsgW3RoaXMubmFtZXNwYWNlXTogc2NoZW1hIH07XG5cdFx0XHR9XG5cdFx0XHRsb2coYCR7U3RyaW5nKHRoaXMuaWQpfSBDb21waWxpbmcgc2NoZW1hLi4uYCk7XG5cdFx0XHRzY2hlbWEgPSBKb2kuY29tcGlsZShzY2hlbWEpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmFsbG93TnVsbHMpIHtcblx0XHRcdGxvZyhgJHtTdHJpbmcodGhpcy5pZCl9IEZvcmNpbmcgbnVsbHMgb24gc2NoZW1hYCk7XG5cdFx0XHQoZnVuY3Rpb24gd2FsayhzY2hlbWEpIHtcblx0XHRcdFx0aWYgKHNjaGVtYS5fdmFsaWRzKSB7XG5cdFx0XHRcdFx0c2NoZW1hLl92YWxpZHMuYWRkKG51bGwpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHNjaGVtYS5fdmFsaWRzID0gbmV3IFZhbHVlcyhbIG51bGwgXSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoc2NoZW1hLnR5cGUgPT09ICdvYmplY3QnICYmIHNjaGVtYS4kX3Rlcm1zLmtleXMpIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2Ygc2NoZW1hLiRfdGVybXMua2V5cykge1xuXHRcdFx0XHRcdFx0d2FsayhpdGVtLnNjaGVtYSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KHNjaGVtYSkpO1xuXHRcdH1cblxuXHRcdHRoaXMuc2NoZW1hID0gc2NoZW1hO1xuXG5cdFx0Ly8gd2hlbiBsb2FkU2NoZW1hKCkgaXMgY2FsbGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yLCBgdGhpcy5zdG9yZWAgd2lsbCBub3QgaGF2ZSBiZWVuIHNldFxuXHRcdC8vIHlldCwgc28gdGhpcyBpcyByZWFsbHkgZm9yIHRoZSBwdWJsaWMgQVBJXG5cdFx0aWYgKHRoaXMuc3RvcmUpIHtcblx0XHRcdHRoaXMuc3RvcmUuc2NoZW1hID0gdGhpcy5uYW1lc3BhY2UgJiYgc2NoZW1hLiRfdGVybXMua2V5cz8uZmluZChzID0+IHMua2V5ID09PSB0aGlzLm5hbWVzcGFjZSk/LnNjaGVtYSB8fCBzY2hlbWE7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogRGVlcGx5IG1lcmdlcyBhbiBvYmplY3QgaW50byBhIGxheWVyJ3Mgc3RvcmUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZSAtIFRoZSBkYXRhIHRvIG1lcmdlLlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRtZXJnZSh2YWx1ZSkge1xuXHRcdGlmICh0aGlzLnJlYWRvbmx5KSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYExheWVyIFwiJHtTdHJpbmcodGhpcy5pZCl9XCIgaXMgcmVhZG9ubHlgKTtcblx0XHR9XG5cdFx0dGhpcy52YWxpZGF0ZSh7IGFjdGlvbjogJ21lcmdlJywgdmFsdWUgfSk7XG5cdFx0aWYgKCghdGhpcy5uYW1lc3BhY2UgfHwgKHZhbHVlID0gdmFsdWVbdGhpcy5uYW1lc3BhY2VdKSkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhpcy5zdG9yZS5tZXJnZSh2YWx1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiB0aGlzIGxheWVyIGhhcyBhIG5hbWVzcGFjZXMgYW5kIGlmIHRoZSBrZXkgaGFzIHRoZSBuYW1lc3BhY2UsIHRoZW4gcmV0dXJucyB0aGVcblx0ICogcmVzb2x2ZWQga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIHJlc29sdmUuXG5cdCAqIEByZXR1cm5zIHtBcnJheS48U3RyaW5nPn1cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHRyZXNvbHZlS2V5KGtleSkge1xuXHRcdGlmIChrZXkubGVuZ3RoICYmIHRoaXMubmFtZXNwYWNlKSB7XG5cdFx0XHRyZXR1cm4ga2V5WzBdID09PSB0aGlzLm5hbWVzcGFjZSA/IGtleS5zbGljZSgxKSA6IG51bGw7XG5cdFx0fVxuXHRcdHJldHVybiBrZXk7XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZXMgYSBzcGVjaWZpYyBsYXllcidzIHN0b3JlIHRvIGRpc2suXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbZmlsZV0gLSBUaGUgZmlsZSB0byB3cml0ZSB0aGUgbGF5ZXJzIHN0b3JlIHRvLlxuXHQgKiBAcmV0dXJucyB7TGF5ZXJ9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzYXZlKGZpbGUpIHtcblx0XHRsb2coYCR7U3RyaW5nKHRoaXMuaWQpfSBTYXZpbmcgdG8gZmlsZTogJHtoaWdobGlnaHQoZmlsZSB8fCB0aGlzLmZpbGUpfWApO1xuXHRcdHRoaXMuc3RvcmUuc2F2ZShmaWxlIHx8IHRoaXMuZmlsZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBzZXQuXG5cdCAqIEBwYXJhbSB7Kn0gW3ZhbHVlXSAtIFRoZSB2YWx1ZTtcblx0ICogQHBhcmFtIHtTdHJpbmd9IFthY3Rpb249XCJzZXRcIl0gLSBBbiBhY3Rpb24gaGludCBmb3IgdmFsaWRhdGlvbi5cblx0ICogQHJldHVybnMge0xheWVyfVxuXHQgKi9cblx0c2V0KGtleSwgdmFsdWUsIGFjdGlvbiA9ICdzZXQnKSB7XG5cdFx0aWYgKHRoaXMucmVhZG9ubHkpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgTGF5ZXIgXCIke1N0cmluZyh0aGlzLmlkKX1cIiBpcyByZWFkb25seWApO1xuXHRcdH1cblxuXHRcdGlmICgha2V5IHx8ICFrZXkubGVuZ3RoKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgY29uZmlnIGtleScpO1xuXHRcdH1cblxuXHRcdHRoaXMudmFsaWRhdGUoeyBhY3Rpb24sIGtleSwgdmFsdWUgfSk7XG5cdFx0aWYgKGtleSA9IHRoaXMucmVzb2x2ZUtleShrZXkpKSB7XG5cdFx0XHRjb25zdCBrZXlzID0gdGhpcy5uYW1lc3BhY2UgJiYgdGhpcy5zdG9yZS5rZXlzKCk7XG5cdFx0XHRpZiAoa2V5cyAmJiBrZXlzLmxlbmd0aCA9PT0gMSAmJiBrZXlzWzBdID09PSB0aGlzLm5hbWVzcGFjZSkge1xuXHRcdFx0XHQvLyBkYXRhIGlzIG5hbWVzcGFjZWQsIHNvIHdlIG5lZWQgdG8gYWRkIHRoZSBuYW1lc3BhY2UgYmFja1xuXHRcdFx0XHR0aGlzLnN0b3JlLnNldChbIHRoaXMubmFtZXNwYWNlLCAuLi5rZXkgXSwgdmFsdWUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5zdG9yZS5zZXQoa2V5LCB2YWx1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIHZhbHVlIG9mIHRoZSBzdG9yZSBhcyBhIHN0cmluZy5cblx0ICpcblx0ICogQHBhcmFtIHsqfSBbYXJnc10gLSBWYXJpb3VzIGFyZ3VtZW50cyB0byBwYXNzIGludG8gdGhlIHN0b3JlJ3MgYHRvU3RyaW5nKClgLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dG9TdHJpbmcoLi4uYXJncykge1xuXHRcdHJldHVybiB0aGlzLnN0b3JlPy50b1N0cmluZyguLi5hcmdzKSB8fCAnJztcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhpcyBsYXllciBjYW4gYmUgdW5sb2FkZWQuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHVubG9hZCgpIHtcblx0XHRpZiAodGhpcy5zdGF0aWMpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVubG9hZCBzdGF0aWMgbGF5ZXInKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHVud2F0Y2goaGFuZGxlcikge1xuXHRcdGNvbnN0IHdyYXBwZWQgPSB0aGlzLndhdGNoZXJNYXAuZ2V0KGhhbmRsZXIpO1xuXHRcdGlmICh3cmFwcGVkKSB7XG5cdFx0XHR0aGlzLnN0b3JlLnVud2F0Y2god3JhcHBlZCk7XG5cdFx0XHR0aGlzLndhdGNoZXJNYXAuZGVsZXRlKGhhbmRsZXIpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgdmFsaWRhdG9yIGZ1bmN0aW9uIHRoYXQgZWl0aGVyIGludm9rZXMgdGhlIGN1c3RvbSB2YWxpZGF0b3Igb3IgdGhlIGRlZmF1bHRcblx0ICogdmFsaWRhdG9yLlxuXHQgKlxuXHQgKiBAdHlwZSB7RnVuY3Rpb259XG5cdCAqL1xuXHRnZXQgdmFsaWRhdGUoKSB7XG5cdFx0cmV0dXJuIGFyZ3MgPT4gKHRoaXMudmFsaWRhdG9yIHx8IHZhbGlkYXRlKSh7XG5cdFx0XHRzY2hlbWFzOiB0aGlzLnNjaGVtYSA/IFsgdGhpcy5zY2hlbWEgXSA6IFtdLFxuXHRcdFx0Li4uYXJnc1xuXHRcdH0pO1xuXHR9XG5cblx0c2V0IHZhbGlkYXRlKGZuKSB7XG5cdFx0aWYgKCFmbiB8fCB0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHZhbGlkYXRvciB0byBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0fVxuXHRcdHRoaXMudmFsaWRhdG9yID0gZm47XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2ZpbHRlcl0gLSBBIHByb3BlcnR5IG5hbWUgb3IgYXJyYXkgb2YgbmVzdGVkIHByb3BlcnRpZXMgdG8gd2F0Y2guXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEByZXR1cm5zIHtMYXllcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHdhdGNoKGZpbHRlciwgaGFuZGxlcikge1xuXHRcdGNvbnN0IHdyYXBwZWQgPSBvYmogPT4gaGFuZGxlcihvYmosIHRoaXMpO1xuXHRcdHRoaXMud2F0Y2hlck1hcC5zZXQoaGFuZGxlciwgd3JhcHBlZCk7XG5cdFx0dGhpcy5zdG9yZS53YXRjaChmaWx0ZXIsIHdyYXBwZWQpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG4iXSwiZmlsZSI6ImxheWVyLmpzIn0=

@@ -82,2 +82,13 @@ "use strict";

/**
* Returns an array of the names of the keys defined on the object.
*
* @returns {Array.<String>}
* @access public
*/
keys() {
throw new Error('keys() not implemented');
}
/**
* Loads a config file.

@@ -172,2 +183,2 @@ *

_defineProperty(Store, "extension", null);
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3JlLmpzIl0sIm5hbWVzIjpbIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwibmV3IiwidGFyZ2V0IiwiVHlwZUVycm9yIiwiZGVsZXRlIiwia2V5IiwiRXJyb3IiLCJnZXQiLCJoYXMiLCJsb2FkIiwiZmlsZSIsIm1lcmdlIiwidmFsdWUiLCJzYXZlIiwic2NoZW1hIiwiX3NjaGVtYSIsIm5ld1NjaGVtYSIsIkpvaSIsImlzU2NoZW1hIiwidHlwZSIsInNldCIsInVud2F0Y2giLCJoYW5kbGVyIiwid2F0Y2giLCJmaWx0ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ2UsTUFBTUEsS0FBTixDQUFZO0FBQzFCO0FBQ0Q7QUFDQTtBQUNBOztBQUdDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7O0FBR0M7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ0MsRUFBQUEsV0FBVyxDQUFDQyxJQUFJLEdBQUcsRUFBUixFQUFZO0FBQUEscUNBVGIsSUFTYTs7QUFDdEIsUUFBSUMsR0FBRyxDQUFDQyxNQUFKLEtBQWVKLEtBQW5CLEVBQTBCO0FBQ3pCLFlBQU0sSUFBSUssU0FBSixDQUFjLGdEQUFkLENBQU47QUFDQTs7QUFFRCxRQUFJLENBQUNILElBQUQsSUFBUyxPQUFPQSxJQUFQLEtBQWdCLFFBQTdCLEVBQXVDO0FBQ3RDLFlBQU0sSUFBSUcsU0FBSixDQUFjLHdDQUFkLENBQU47QUFDQTtBQUNEO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0MsRUFBQUEsTUFBTSxDQUFDQyxHQUFELEVBQU07QUFDWCxVQUFNLElBQUlDLEtBQUosQ0FBVSwwQkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NDLEVBQUFBLEdBQUcsQ0FBQ0YsR0FBRCxFQUFNO0FBQ1IsVUFBTSxJQUFJQyxLQUFKLENBQVUsdUJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0UsRUFBQUEsR0FBRyxDQUFDSCxHQUFELEVBQU07QUFDUixVQUFNLElBQUlDLEtBQUosQ0FBVSx1QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDRyxFQUFBQSxJQUFJLENBQUNDLElBQUQsRUFBTztBQUNWLFVBQU0sSUFBSUosS0FBSixDQUFVLHdCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NLLEVBQUFBLEtBQUssQ0FBQ0MsS0FBRCxFQUFRO0FBQ1osVUFBTSxJQUFJTixLQUFKLENBQVUseUJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ08sRUFBQUEsSUFBSSxDQUFDSCxJQUFELEVBQU87QUFDVixVQUFNLElBQUlKLEtBQUosQ0FBVSx3QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQyxNQUFJUSxNQUFKLEdBQWE7QUFDWixXQUFPLEtBQUtDLE9BQVo7QUFDQTs7QUFFRCxNQUFJRCxNQUFKLENBQVdFLFNBQVgsRUFBc0I7QUFDckIsUUFBSUEsU0FBUyxLQUFLLENBQUNDLGFBQUlDLFFBQUosQ0FBYUYsU0FBYixDQUFELElBQTRCQSxTQUFTLENBQUNHLElBQVYsS0FBbUIsUUFBcEQsQ0FBYixFQUE0RTtBQUMzRSxZQUFNLElBQUloQixTQUFKLENBQWMsc0NBQWQsQ0FBTjtBQUNBOztBQUNELFNBQUtZLE9BQUwsR0FBZUMsU0FBZjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDSSxFQUFBQSxHQUFHLENBQUNmLEdBQUQsRUFBTU8sS0FBTixFQUFhO0FBQ2YsVUFBTSxJQUFJTixLQUFKLENBQVUsdUJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ2UsRUFBQUEsT0FBTyxDQUFDQyxPQUFELEVBQVUsQ0FDaEI7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0MsRUFBQUEsS0FBSyxDQUFDQyxNQUFELEVBQVNGLE9BQVQsRUFBa0IsQ0FDdEI7QUFDQTs7QUExSXlCOzs7O2dCQUFOeEIsSyxlQUtELEkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IDAgKi9cblxuaW1wb3J0IEpvaSBmcm9tICdqb2knO1xuXG4vKipcbiAqIEEgYmFzZSBjbGFzcyBmb3IgYWxsIHN0b3JlIGltcGxlbW50YXRpb25zLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdG9yZSB7XG5cdC8qKlxuXHQgKiBUaGUgZmlsZSBleHRlbnNpb24gYXNzb2NpYXRlZCB0byB0aGlzIHR5cGUgb2Ygc3RvcmUuXG5cdCAqIEB0eXBlIHtTdHJpbmd9XG5cdCAqL1xuXHRzdGF0aWMgZXh0ZW5zaW9uID0gbnVsbDtcblxuXHQvKipcblx0ICogQSBKb2kgc2NoZW1hLiBUaGUgYExheWVyYCB3aWxsIHBhc3MgaW4gdGhlIHNjaGVtYSBpbnRvIHRoZSBgc2NoZW1hYCBzZXR0ZXIgZHVyaW5nXG5cdCAqIGNvbnN0cnVjdGlvbiBvciB3aGVuIHRoZSBzY2hlbWEgaXMgbG9hZGVkLlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKi9cblx0X3NjaGVtYSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmZpbGVdIC0gVGhlIGZpbGUgYmFja2luZyB0aGlzIGxheWVyJ3Mgc3RvcmUuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHRpZiAobmV3LnRhcmdldCA9PT0gU3RvcmUpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjcmVhdGUgaW5zdGFuY2Ugb2YgYWJzdHJhY3QgU3RvcmUgY2xhc3MnKTtcblx0XHR9XG5cblx0XHRpZiAoIW9wdHMgfHwgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzdG9yZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGEgY29uZmlnIHZhbHVlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIGRlbGV0ZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGRlbGV0ZShrZXkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2RlbGV0ZSgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGdldC4gV2hlbiBgdW5kZWZpbmVkYCwgdGhlIGVudGlyZSBjb25maWcgaXNcblx0ICogcmV0dXJuZWQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQoa2V5KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdnZXQoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIGlmIGEga2V5IGlzIHNldC5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGNoZWNrLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0aGFzKGtleSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignaGFzKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogTG9hZHMgYSBjb25maWcgZmlsZS5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGZpbGUgLSBUaGUgcGF0aCB0byB0aGUgY29uZmlnIGZpbGUgdG8gbG9hZC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGxvYWQoZmlsZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignbG9hZCgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlZXBseSBtZXJnZXMgYW4gb2JqZWN0IGludG8gYSBsYXllcidzIHN0b3JlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gdmFsdWUgLSBUaGUgZGF0YSB0byBtZXJnZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdG1lcmdlKHZhbHVlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdtZXJnZSgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNhdmVzIHRoZSBkYXRhIHRvIGRpc2suXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIGZpbGVuYW1lIHRvIHNhdmUgdGhlIGRhdGEgdG8uXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzYXZlKGZpbGUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ3NhdmUoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIEpvaSBzY2hlbWEgb2JqZWN0LlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Z2V0IHNjaGVtYSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fc2NoZW1hO1xuXHR9XG5cblx0c2V0IHNjaGVtYShuZXdTY2hlbWEpIHtcblx0XHRpZiAobmV3U2NoZW1hICYmICghSm9pLmlzU2NoZW1hKG5ld1NjaGVtYSkgfHwgbmV3U2NoZW1hLnR5cGUgIT09ICdvYmplY3QnKSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc2NoZW1hIHJvb3QgdG8gYmUgYW4gb2JqZWN0Jyk7XG5cdFx0fVxuXHRcdHRoaXMuX3NjaGVtYSA9IG5ld1NjaGVtYTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgYSBnaXZlbiBjb25maWcga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIHNldC5cblx0ICogQHBhcmFtIHsqfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRzZXQoa2V5LCB2YWx1ZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignc2V0KCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR1bndhdGNoKGhhbmRsZXIpIHtcblx0XHQvLyBub3RoaW5nIHRvIGRvXG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2ZpbHRlcl0gLSBBIHByb3BlcnR5IG5hbWUgb3IgYXJyYXkgb2YgbmVzdGVkIHByb3BlcnRpZXMgdG8gd2F0Y2guXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR3YXRjaChmaWx0ZXIsIGhhbmRsZXIpIHtcblx0XHQvLyBub3RoaW5nIHRvIGRvXG5cdH1cbn1cbiJdLCJmaWxlIjoic3RvcmUuanMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3JlLmpzIl0sIm5hbWVzIjpbIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwibmV3IiwidGFyZ2V0IiwiVHlwZUVycm9yIiwiZGVsZXRlIiwia2V5IiwiRXJyb3IiLCJnZXQiLCJoYXMiLCJrZXlzIiwibG9hZCIsImZpbGUiLCJtZXJnZSIsInZhbHVlIiwic2F2ZSIsInNjaGVtYSIsIl9zY2hlbWEiLCJuZXdTY2hlbWEiLCJKb2kiLCJpc1NjaGVtYSIsInR5cGUiLCJzZXQiLCJ1bndhdGNoIiwiaGFuZGxlciIsIndhdGNoIiwiZmlsdGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUE7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNlLE1BQU1BLEtBQU4sQ0FBWTtBQUMxQjtBQUNEO0FBQ0E7QUFDQTs7QUFHQztBQUNEO0FBQ0E7QUFDQTtBQUNBOztBQUdDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NDLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHLEVBQVIsRUFBWTtBQUFBLHFDQVRiLElBU2E7O0FBQ3RCLFFBQUlDLEdBQUcsQ0FBQ0MsTUFBSixLQUFlSixLQUFuQixFQUEwQjtBQUN6QixZQUFNLElBQUlLLFNBQUosQ0FBYyxnREFBZCxDQUFOO0FBQ0E7O0FBRUQsUUFBSSxDQUFDSCxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUE3QixFQUF1QztBQUN0QyxZQUFNLElBQUlHLFNBQUosQ0FBYyx3Q0FBZCxDQUFOO0FBQ0E7QUFDRDtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NDLEVBQUFBLE1BQU0sQ0FBQ0MsR0FBRCxFQUFNO0FBQ1gsVUFBTSxJQUFJQyxLQUFKLENBQVUsMEJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDQyxFQUFBQSxHQUFHLENBQUNGLEdBQUQsRUFBTTtBQUNSLFVBQU0sSUFBSUMsS0FBSixDQUFVLHVCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NFLEVBQUFBLEdBQUcsQ0FBQ0gsR0FBRCxFQUFNO0FBQ1IsVUFBTSxJQUFJQyxLQUFKLENBQVUsdUJBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0csRUFBQUEsSUFBSSxHQUFHO0FBQ04sVUFBTSxJQUFJSCxLQUFKLENBQVUsd0JBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0ksRUFBQUEsSUFBSSxDQUFDQyxJQUFELEVBQU87QUFDVixVQUFNLElBQUlMLEtBQUosQ0FBVSx3QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDTSxFQUFBQSxLQUFLLENBQUNDLEtBQUQsRUFBUTtBQUNaLFVBQU0sSUFBSVAsS0FBSixDQUFVLHlCQUFWLENBQU47QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0NRLEVBQUFBLElBQUksQ0FBQ0gsSUFBRCxFQUFPO0FBQ1YsVUFBTSxJQUFJTCxLQUFKLENBQVUsd0JBQVYsQ0FBTjtBQUNBO0FBRUQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0MsTUFBSVMsTUFBSixHQUFhO0FBQ1osV0FBTyxLQUFLQyxPQUFaO0FBQ0E7O0FBRUQsTUFBSUQsTUFBSixDQUFXRSxTQUFYLEVBQXNCO0FBQ3JCLFFBQUlBLFNBQVMsS0FBSyxDQUFDQyxhQUFJQyxRQUFKLENBQWFGLFNBQWIsQ0FBRCxJQUE0QkEsU0FBUyxDQUFDRyxJQUFWLEtBQW1CLFFBQXBELENBQWIsRUFBNEU7QUFDM0UsWUFBTSxJQUFJakIsU0FBSixDQUFjLHNDQUFkLENBQU47QUFDQTs7QUFDRCxTQUFLYSxPQUFMLEdBQWVDLFNBQWY7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0ksRUFBQUEsR0FBRyxDQUFDaEIsR0FBRCxFQUFNUSxLQUFOLEVBQWE7QUFDZixVQUFNLElBQUlQLEtBQUosQ0FBVSx1QkFBVixDQUFOO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDZ0IsRUFBQUEsT0FBTyxDQUFDQyxPQUFELEVBQVUsQ0FDaEI7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0MsRUFBQUEsS0FBSyxDQUFDQyxNQUFELEVBQVNGLE9BQVQsRUFBa0IsQ0FDdEI7QUFDQTs7QUFwSnlCOzs7O2dCQUFOekIsSyxlQUtELEkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IDAgKi9cblxuaW1wb3J0IEpvaSBmcm9tICdqb2knO1xuXG4vKipcbiAqIEEgYmFzZSBjbGFzcyBmb3IgYWxsIHN0b3JlIGltcGxlbW50YXRpb25zLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdG9yZSB7XG5cdC8qKlxuXHQgKiBUaGUgZmlsZSBleHRlbnNpb24gYXNzb2NpYXRlZCB0byB0aGlzIHR5cGUgb2Ygc3RvcmUuXG5cdCAqIEB0eXBlIHtTdHJpbmd9XG5cdCAqL1xuXHRzdGF0aWMgZXh0ZW5zaW9uID0gbnVsbDtcblxuXHQvKipcblx0ICogQSBKb2kgc2NoZW1hLiBUaGUgYExheWVyYCB3aWxsIHBhc3MgaW4gdGhlIHNjaGVtYSBpbnRvIHRoZSBgc2NoZW1hYCBzZXR0ZXIgZHVyaW5nXG5cdCAqIGNvbnN0cnVjdGlvbiBvciB3aGVuIHRoZSBzY2hlbWEgaXMgbG9hZGVkLlxuXHQgKiBAdHlwZSB7T2JqZWN0fVxuXHQgKi9cblx0X3NjaGVtYSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmZpbGVdIC0gVGhlIGZpbGUgYmFja2luZyB0aGlzIGxheWVyJ3Mgc3RvcmUuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcblx0XHRpZiAobmV3LnRhcmdldCA9PT0gU3RvcmUpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjcmVhdGUgaW5zdGFuY2Ugb2YgYWJzdHJhY3QgU3RvcmUgY2xhc3MnKTtcblx0XHR9XG5cblx0XHRpZiAoIW9wdHMgfHwgdHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBzdG9yZSBvcHRpb25zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGEgY29uZmlnIHZhbHVlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIGRlbGV0ZS5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGRlbGV0ZShrZXkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2RlbGV0ZSgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGdldC4gV2hlbiBgdW5kZWZpbmVkYCwgdGhlIGVudGlyZSBjb25maWcgaXNcblx0ICogcmV0dXJuZWQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQoa2V5KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdnZXQoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIGlmIGEga2V5IGlzIHNldC5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGNoZWNrLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0aGFzKGtleSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignaGFzKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhbiBhcnJheSBvZiB0aGUgbmFtZXMgb2YgdGhlIGtleXMgZGVmaW5lZCBvbiB0aGUgb2JqZWN0LlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7QXJyYXkuPFN0cmluZz59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRrZXlzKCkge1xuXHRcdHRocm93IG5ldyBFcnJvcigna2V5cygpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWRzIGEgY29uZmlnIGZpbGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlIC0gVGhlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlIHRvIGxvYWQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRsb2FkKGZpbGUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ2xvYWQoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWVwbHkgbWVyZ2VzIGFuIG9iamVjdCBpbnRvIGEgbGF5ZXIncyBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IHZhbHVlIC0gVGhlIGRhdGEgdG8gbWVyZ2UuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRtZXJnZSh2YWx1ZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignbWVyZ2UoKSBub3QgaW1wbGVtZW50ZWQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTYXZlcyB0aGUgZGF0YSB0byBkaXNrLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBmaWxlbmFtZSB0byBzYXZlIHRoZSBkYXRhIHRvLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2F2ZShmaWxlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdzYXZlKCkgbm90IGltcGxlbWVudGVkJyk7XG5cdH1cblxuXHQvKipcblx0ICogQSBKb2kgc2NoZW1hIG9iamVjdC5cblx0ICogQHR5cGUge09iamVjdH1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdldCBzY2hlbWEoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3NjaGVtYTtcblx0fVxuXG5cdHNldCBzY2hlbWEobmV3U2NoZW1hKSB7XG5cdFx0aWYgKG5ld1NjaGVtYSAmJiAoIUpvaS5pc1NjaGVtYShuZXdTY2hlbWEpIHx8IG5ld1NjaGVtYS50eXBlICE9PSAnb2JqZWN0JykpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHNjaGVtYSByb290IHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblx0XHR0aGlzLl9zY2hlbWEgPSBuZXdTY2hlbWE7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gY29uZmlnIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBzZXQuXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2V0KGtleSwgdmFsdWUpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ3NldCgpIG5vdCBpbXBsZW1lbnRlZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYSB3YXRjaCBoYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dW53YXRjaChoYW5kbGVyKSB7XG5cdFx0Ly8gbm90aGluZyB0byBkb1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVycyBhIHdhdGNoIGhhbmRsZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtmaWx0ZXJdIC0gQSBwcm9wZXJ0eSBuYW1lIG9yIGFycmF5IG9mIG5lc3RlZCBwcm9wZXJ0aWVzIHRvIHdhdGNoLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0d2F0Y2goZmlsdGVyLCBoYW5kbGVyKSB7XG5cdFx0Ly8gbm90aGluZyB0byBkb1xuXHR9XG59XG4iXSwiZmlsZSI6InN0b3JlLmpzIn0=

@@ -154,2 +154,13 @@ "use strict";

/**
* Returns an array of the names of the keys defined on the object.
*
* @returns {Array.<String>}
* @access public
*/
keys() {
return Object.getOwnPropertyNames(this.data);
}
/**
* Loads a config file.

@@ -323,2 +334,2 @@ *

_defineProperty(JSONStore, "extension", '.json');
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3Jlcy9qc29uLXN0b3JlLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsInNub29wbG9nZyIsInN0eWxlcyIsIkpTT05TdG9yZSIsIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiZGF0YSIsIlR5cGVFcnJvciIsIk5vZGUiLCJkZWxldGUiLCJrZXkiLCJzdGFjayIsImxlbiIsImxlbmd0aCIsImZvdW5kIiwicHJvcCIsImkiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJwb3AiLCJrZXlzIiwicHVzaCIsImdldCIsIkFycmF5IiwiaXNBcnJheSIsImhhcyIsImxvYWQiLCJmaWxlIiwiZnMiLCJleGlzdHNTeW5jIiwiZXJyIiwiRXJyb3IiLCJjb2RlIiwiY29udGVudCIsInJlYWRGaWxlU3luYyIsImUiLCJtZXNzYWdlIiwiSlNPTiIsInBhcnNlIiwibWVyZ2UiLCJzYXZlIiwiZXh0IiwicGF0aCIsImV4dG5hbWUiLCJleHRlbnNpb24iLCJ0bXBGaWxlIiwiRGF0ZSIsIm5vdyIsIm91dHB1dEpzb25TeW5jIiwic3BhY2VzIiwibW92ZVN5bmMiLCJvdmVyd3JpdGUiLCJzZXQiLCJ2YWx1ZSIsInBhdXNlIiwib2JqIiwic2VnbWVudCIsInJlc3VtZSIsInRvU3RyaW5nIiwiaW5kZW50YXRpb24iLCJzdHJpbmdpZnkiLCJ1bndhdGNoIiwiaGFuZGxlciIsIndhdGNoIiwiZmlsdGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFVLHdCQUFVLFlBQVYsRUFBd0IsWUFBeEIsQ0FBaEI7QUFDQSxNQUFNO0FBQUVDLEVBQUFBO0FBQUYsSUFBZ0JDLG1CQUFVQyxNQUFoQztBQUVBO0FBQ0E7QUFDQTs7QUFDZSxNQUFNQyxTQUFOLFNBQXdCQyxjQUF4QixDQUE4QjtBQUM1QztBQUNE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QSxPQUxELE1BS087QUFDTkQsUUFBQUEsR0FBRyxDQUFDQyxPQUFELENBQUgsR0FBZUgsS0FBZjtBQUNBO0FBQ0Q7O0FBRURoRCxrQkFBS29ELE1BQUwsQ0FBWSxLQUFLdEQsSUFBakI7O0FBRUEsV0FBTyxJQUFQO0FBQ0E7QUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0N1RCxFQUFBQSxRQUFRLENBQUNDLFdBQUQsRUFBYztBQUNyQixXQUFPdEIsSUFBSSxDQUFDdUIsU0FBTCxDQUFlLEtBQUt6RCxJQUFwQixFQUEwQixJQUExQixFQUFnQ3dELFdBQWhDLENBQVA7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQ0UsRUFBQUEsT0FBTyxDQUFDQyxPQUFELEVBQVU7QUFDaEJ6RCxrQkFBS3dELE9BQUwsQ0FBYSxLQUFLMUQsSUFBbEIsRUFBd0IyRCxPQUF4Qjs7QUFDQSxXQUFPLElBQVA7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNDQyxFQUFBQSxLQUFLLENBQUNDLE1BQUQsRUFBU0YsT0FBVCxFQUFrQjtBQUN0QnpELGtCQUFLMEQsS0FBTCxDQUFXLEtBQUs1RCxJQUFoQixFQUFzQixDQUFBNkQsTUFBTSxTQUFOLElBQUFBLE1BQU0sV0FBTixZQUFBQSxNQUFNLENBQUV0RCxNQUFSLElBQWlCc0QsTUFBakIsR0FBMEIsSUFBaEQsRUFBc0RGLE9BQXREOztBQUNBLFdBQU8sSUFBUDtBQUNBOztBQTdQMkM7Ozs7Z0JBQXhCL0QsUyxlQUtELE8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IE5vZGUgZnJvbSAnLi4vbm9kZSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBzbm9vcGxvZ2cgZnJvbSAnc25vb3Bsb2dnJztcbmltcG9ydCBTdG9yZSBmcm9tICcuLi9zdG9yZSc7XG5cbmNvbnN0IHsgbG9nIH0gPSBzbm9vcGxvZ2coJ2NvbmZpZy1raXQnKSgnanNvbi1zdG9yZScpO1xuY29uc3QgeyBoaWdobGlnaHQgfSA9IHNub29wbG9nZy5zdHlsZXM7XG5cbi8qKlxuICogTG9hZHMgYC5qc29uYCBjb25maWcgZmlsZXMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEpTT05TdG9yZSBleHRlbmRzIFN0b3JlIHtcblx0LyoqXG5cdCAqIFRoZSBmaWxlIGV4dGVuc2lvbiBhc3NvY2lhdGVkIHRvIHRoaXMgdHlwZSBvZiBzdG9yZS5cblx0ICogQHR5cGUge1N0cmluZ31cblx0ICovXG5cdHN0YXRpYyBleHRlbnNpb24gPSAnLmpzb24nO1xuXG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgc3RvcmUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0cy5kYXRhXSAtIEEgZGF0YSBvYmplY3QgdG8gaW5pdGlhbGl6ZSB0aGUgc3RvcmUgd2l0aC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuXHRcdHN1cGVyKG9wdHMpO1xuXG5cdFx0Y29uc3QgZGF0YSA9IG9wdHMuZGF0YSB8fCB7fTtcblx0XHRpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBjb25maWcgZGF0YSB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHQvKipcblx0XHQgKiBUaGUgZGF0YSBpbiB0aGlzIHN0b3JlLlxuXHRcdCAqIEB0eXBlIHtPYmplY3R9XG5cdFx0ICovXG5cdFx0dGhpcy5kYXRhID0gbmV3IE5vZGUoZGF0YSk7XG5cdH1cblxuXHQvKipcblx0ICogRGVsZXRlcyBhIGNvbmZpZyB2YWx1ZS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBkZWxldGUuXG5cdCAqIEByZXR1cm5zIHtCb29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWUgd2FzIGRlbGV0ZWQuXG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRkZWxldGUoa2V5KSB7XG5cdFx0Y29uc3Qgc3RhY2sgPSBbXTtcblx0XHRjb25zdCBsZW4gPSBrZXkubGVuZ3RoO1xuXHRcdGxldCBmb3VuZCA9IGZhbHNlO1xuXHRcdGxldCB7IGRhdGEgfSA9IHRoaXM7XG5cdFx0bGV0IHByb3A7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgZGF0YSAhPT0gdW5kZWZpbmVkICYmIChwcm9wID0ga2V5W2ldKTsgaSsrKSB7XG5cdFx0XHRpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBwcm9wKSkge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0aWYgKGkgKyAxID09PSBsZW4pIHtcblx0XHRcdFx0Zm91bmQgPSB0cnVlO1xuXHRcdFx0XHRkZWxldGUgZGF0YVtwcm9wXTtcblxuXHRcdFx0XHR3aGlsZSAoZGF0YSA9IHN0YWNrLnBvcCgpKSB7XG5cdFx0XHRcdFx0aWYgKE9iamVjdC5rZXlzKGRhdGFba2V5Wy0taV1dKS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkZWxldGUgZGF0YVtrZXlbaV1dO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzdGFjay5wdXNoKGRhdGEpO1xuXHRcdFx0XHRkYXRhID0gZGF0YVtwcm9wXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZm91bmQ7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQga2V5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBba2V5XSAtIFRoZSBrZXkgdG8gZ2V0LiBXaGVuIGB1bmRlZmluZWRgLCB0aGUgZW50aXJlIGNvbmZpZyBpc1xuXHQgKiByZXR1cm5lZC5cblx0ICogQHJldHVybnMgeyp9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRnZXQoa2V5KSB7XG5cdFx0bGV0IHsgZGF0YSB9ID0gdGhpcztcblxuXHRcdGlmIChrZXk/Lmxlbmd0aCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIHByb3A7IGRhdGEgIT09IHVuZGVmaW5lZCAmJiAocHJvcCA9IGtleVtpKytdKTsgZGF0YSA9IGRhdGFbcHJvcF0pIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShkYXRhKSB8fCBPYmplY3Qua2V5cyhkYXRhKS5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBkYXRhO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIGlmIGEga2V5IGlzIHNldC5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2tleV0gLSBUaGUga2V5IHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJucyB7Qm9vbGVhbn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGhhcyhrZXkpIHtcblx0XHRsZXQgeyBkYXRhIH0gPSB0aGlzO1xuXG5cdFx0aWYgKGtleT8ubGVuZ3RoKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgcHJvcDsgZGF0YSAhPT0gdW5kZWZpbmVkICYmIChwcm9wID0ga2V5W2krK10pOyBkYXRhID0gZGF0YVtwcm9wXSkge1xuXHRcdFx0XHRpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGRhdGEgIT09IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBhIGNvbmZpZyBmaWxlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBwYXRoIHRvIHRoZSBjb25maWcgZmlsZSB0byBsb2FkLlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bG9hZChmaWxlKSB7XG5cdFx0aWYgKCFmcy5leGlzdHNTeW5jKGZpbGUpKSB7XG5cdFx0XHRjb25zdCBlcnIgPSBuZXcgRXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke2ZpbGV9YCk7XG5cdFx0XHRlcnIuY29kZSA9ICdFTk9FTlQnO1xuXHRcdFx0dGhyb3cgZXJyO1xuXHRcdH1cblxuXHRcdGxldCBjb250ZW50O1xuXHRcdGxldCBkYXRhO1xuXG5cdFx0bG9nKGBMb2FkaW5nICR7aGlnaGxpZ2h0KGZpbGUpfWApO1xuXHRcdHRyeSB7XG5cdFx0XHRjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGUsICd1dGY4Jyk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0ZS5tZXNzYWdlID0gYEZhaWxlZCB0byBsb2FkIGNvbmZpZyBmaWxlOiAke2UubWVzc2FnZX1gO1xuXHRcdFx0dGhyb3cgZTtcblx0XHR9XG5cblx0XHR0cnkge1xuXHRcdFx0ZGF0YSA9IEpTT04ucGFyc2UoY29udGVudCk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0ZS5tZXNzYWdlID0gYEZhaWxlZCB0byBsb2FkIGNvbmZpZyBmaWxlOiAke2UubWVzc2FnZX1gO1xuXHRcdFx0dGhyb3cgZTtcblx0XHR9XG5cblx0XHRpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBjb25maWcgZmlsZSB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHROb2RlLm1lcmdlKHRoaXMuZGF0YSwgZGF0YSk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWVwbHkgbWVyZ2VzIGFuIG9iamVjdCBpbnRvIGEgbGF5ZXIncyBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSB0byBtZXJnZS5cblx0ICogQHJldHVybnMge0pTT05TdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdG1lcmdlKGRhdGEpIHtcblx0XHROb2RlLm1lcmdlKHRoaXMuZGF0YSwgZGF0YSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZXMgdGhlIGRhdGEgdG8gZGlzay5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGZpbGUgLSBUaGUgZmlsZW5hbWUgdG8gc2F2ZSB0aGUgZGF0YSB0by5cblx0ICogQHJldHVybnMge0pTT05TdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNhdmUoZmlsZSkge1xuXHRcdGlmICghZmlsZSB8fCB0eXBlb2YgZmlsZSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGNvbmZpZyBmaWxlIHBhdGggdG8gYmUgYSBzdHJpbmcnKTtcblx0XHR9XG5cblx0XHRjb25zdCBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZSk7XG5cdFx0aWYgKGV4dCAhPT0gSlNPTlN0b3JlLmV4dGVuc2lvbikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBKU09OIGNvbmZpZyBmaWxlIHRvIGhhdmUgXCIke0pTT05TdG9yZS5leHRlbnNpb259XCIgZXh0ZW5zaW9uLCBmb3VuZCBcIiR7ZXh0fVwiYCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdG1wRmlsZSA9IGAke2ZpbGV9LiR7RGF0ZS5ub3coKX0udG1wYDtcblx0XHRmcy5vdXRwdXRKc29uU3luYyh0bXBGaWxlLCB0aGlzLmRhdGEsIHsgc3BhY2VzOiAyIH0pO1xuXHRcdGZzLm1vdmVTeW5jKHRtcEZpbGUsIGZpbGUsIHsgb3ZlcndyaXRlOiB0cnVlIH0pO1xuXHRcdGxvZyhgV3JvdGUgY29uZmlnIGZpbGU6ICR7aGlnaGxpZ2h0KGZpbGUpfWApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gY29uZmlnIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBzZXQuXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2V0KGtleSwgdmFsdWUpIHtcblx0XHROb2RlLnBhdXNlKHRoaXMuZGF0YSk7XG5cblx0XHRsZXQgb2JqID0gdGhpcy5kYXRhO1xuXHRcdGZvciAobGV0IGkgPSAwLCBsZW4gPSBrZXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdGNvbnN0IHNlZ21lbnQgPSBrZXlbaV07XG5cdFx0XHRpZiAoaSArIDEgPCBsZW4pIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBvYmpbc2VnbWVudF0gIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkob2JqW3NlZ21lbnRdKSkge1xuXHRcdFx0XHRcdG9ialtzZWdtZW50XSA9IHt9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9iaiA9IG9ialtzZWdtZW50XTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9ialtzZWdtZW50XSA9IHZhbHVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdE5vZGUucmVzdW1lKHRoaXMuZGF0YSk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBkYXRhIGFzIGEgSlNPTi1lbmNvZGVkIHN0cmluZy5cblx0ICpcblx0ICogQHBhcmFtIHtOdW1iZXJ9IFtpbmRlbnRhdGlvbj0yXSBUaGUgbnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgdGhlIEpTT04gZm9ybWF0dGVkIG91dHB1dC5cblx0ICogQHJldHVybnMge1N0cmluZ31cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHRvU3RyaW5nKGluZGVudGF0aW9uKSB7XG5cdFx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSwgbnVsbCwgaW5kZW50YXRpb24pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYSB3YXRjaCBoYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dW53YXRjaChoYW5kbGVyKSB7XG5cdFx0Tm9kZS51bndhdGNoKHRoaXMuZGF0YSwgaGFuZGxlcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2ZpbHRlcl0gLSBBIHByb3BlcnR5IG5hbWUgb3IgYXJyYXkgb2YgbmVzdGVkIHByb3BlcnRpZXMgdG8gd2F0Y2guXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEByZXR1cm5zIHtKU09OU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR3YXRjaChmaWx0ZXIsIGhhbmRsZXIpIHtcblx0XHROb2RlLndhdGNoKHRoaXMuZGF0YSwgZmlsdGVyPy5sZW5ndGggPyBmaWx0ZXIgOiBudWxsLCBoYW5kbGVyKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuIl0sImZpbGUiOiJzdG9yZXMvanNvbi1zdG9yZS5qcyJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0b3Jlcy9qc29uLXN0b3JlLmpzIl0sIm5hbWVzIjpbImxvZyIsImhpZ2hsaWdodCIsInNub29wbG9nZyIsInN0eWxlcyIsIkpTT05TdG9yZSIsIlN0b3JlIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiZGF0YSIsIlR5cGVFcnJvciIsIk5vZGUiLCJkZWxldGUiLCJrZXkiLCJzdGFjayIsImxlbiIsImxlbmd0aCIsImZvdW5kIiwicHJvcCIsImkiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJwb3AiLCJrZXlzIiwicHVzaCIsImdldCIsIkFycmF5IiwiaXNBcnJheSIsImhhcyIsImdldE93blByb3BlcnR5TmFtZXMiLCJsb2FkIiwiZmlsZSIsImZzIiwiZXhpc3RzU3luYyIsImVyciIsIkVycm9yIiwiY29kZSIsImNvbnRlbnQiLCJyZWFkRmlsZVN5bmMiLCJlIiwibWVzc2FnZSIsIkpTT04iLCJwYXJzZSIsIm1lcmdlIiwic2F2ZSIsImV4dCIsInBhdGgiLCJleHRuYW1lIiwiZXh0ZW5zaW9uIiwidG1wRmlsZSIsIkRhdGUiLCJub3ciLCJvdXRwdXRKc29uU3luYyIsInNwYWNlcyIsIm1vdmVTeW5jIiwib3ZlcndyaXRlIiwic2V0IiwidmFsdWUiLCJwYXVzZSIsIm9iaiIsInNlZ21lbnQiLCJyZXN1bWUiLCJ0b1N0cmluZyIsImluZGVudGF0aW9uIiwic3RyaW5naWZ5IiwidW53YXRjaCIsImhhbmRsZXIiLCJ3YXRjaCIsImZpbHRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBVSx3QkFBVSxZQUFWLEVBQXdCLFlBQXhCLENBQWhCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQWdCQyxtQkFBVUMsTUFBaEM7QUFFQTtBQUNBO0FBQ0E7O0FBQ2UsTUFBTUMsU0FBTixTQUF3QkMs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ICcuLi9ub2RlJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHNub29wbG9nZyBmcm9tICdzbm9vcGxvZ2cnO1xuaW1wb3J0IFN0b3JlIGZyb20gJy4uL3N0b3JlJztcblxuY29uc3QgeyBsb2cgfSA9IHNub29wbG9nZygnY29uZmlnLWtpdCcpKCdqc29uLXN0b3JlJyk7XG5jb25zdCB7IGhpZ2hsaWdodCB9ID0gc25vb3Bsb2dnLnN0eWxlcztcblxuLyoqXG4gKiBMb2FkcyBgLmpzb25gIGNvbmZpZyBmaWxlcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSlNPTlN0b3JlIGV4dGVuZHMgU3RvcmUge1xuXHQvKipcblx0ICogVGhlIGZpbGUgZXh0ZW5zaW9uIGFzc29jaWF0ZWQgdG8gdGhpcyB0eXBlIG9mIHN0b3JlLlxuXHQgKiBAdHlwZSB7U3RyaW5nfVxuXHQgKi9cblx0c3RhdGljIGV4dGVuc2lvbiA9ICcuanNvbic7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzLmRhdGFdIC0gQSBkYXRhIG9iamVjdCB0byBpbml0aWFsaXplIHRoZSBzdG9yZSB3aXRoLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0c3VwZXIob3B0cyk7XG5cblx0XHRjb25zdCBkYXRhID0gb3B0cy5kYXRhIHx8IHt9O1xuXHRcdGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGNvbmZpZyBkYXRhIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdC8qKlxuXHRcdCAqIFRoZSBkYXRhIGluIHRoaXMgc3RvcmUuXG5cdFx0ICogQHR5cGUge09iamVjdH1cblx0XHQgKi9cblx0XHR0aGlzLmRhdGEgPSBuZXcgTm9kZShkYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIGEgY29uZmlnIHZhbHVlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBrZXkgLSBUaGUga2V5IHRvIGRlbGV0ZS5cblx0ICogQHJldHVybnMge0Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZSB3YXMgZGVsZXRlZC5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGRlbGV0ZShrZXkpIHtcblx0XHRjb25zdCBzdGFjayA9IFtdO1xuXHRcdGNvbnN0IGxlbiA9IGtleS5sZW5ndGg7XG5cdFx0bGV0IGZvdW5kID0gZmFsc2U7XG5cdFx0bGV0IHsgZGF0YSB9ID0gdGhpcztcblx0XHRsZXQgcHJvcDtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBkYXRhICE9PSB1bmRlZmluZWQgJiYgKHByb3AgPSBrZXlbaV0pOyBpKyspIHtcblx0XHRcdGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIHByb3ApKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaSArIDEgPT09IGxlbikge1xuXHRcdFx0XHRmb3VuZCA9IHRydWU7XG5cdFx0XHRcdGRlbGV0ZSBkYXRhW3Byb3BdO1xuXG5cdFx0XHRcdHdoaWxlIChkYXRhID0gc3RhY2sucG9wKCkpIHtcblx0XHRcdFx0XHRpZiAoT2JqZWN0LmtleXMoZGF0YVtrZXlbLS1pXV0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRlbGV0ZSBkYXRhW2tleVtpXV07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN0YWNrLnB1c2goZGF0YSk7XG5cdFx0XHRcdGRhdGEgPSBkYXRhW3Byb3BdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmb3VuZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgYSB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IFtrZXldIC0gVGhlIGtleSB0byBnZXQuIFdoZW4gYHVuZGVmaW5lZGAsIHRoZSBlbnRpcmUgY29uZmlnIGlzXG5cdCAqIHJldHVybmVkLlxuXHQgKiBAcmV0dXJucyB7Kn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGdldChrZXkpIHtcblx0XHRsZXQgeyBkYXRhIH0gPSB0aGlzO1xuXG5cdFx0aWYgKGtleT8ubGVuZ3RoKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgcHJvcDsgZGF0YSAhPT0gdW5kZWZpbmVkICYmIChwcm9wID0ga2V5W2krK10pOyBkYXRhID0gZGF0YVtwcm9wXSkge1xuXHRcdFx0XHRpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGRhdGEpIHx8IE9iamVjdC5rZXlzKGRhdGEpLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgaWYgYSBrZXkgaXMgc2V0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0FycmF5LjxTdHJpbmc+fSBba2V5XSAtIFRoZSBrZXkgdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIHtCb29sZWFufVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0aGFzKGtleSkge1xuXHRcdGxldCB7IGRhdGEgfSA9IHRoaXM7XG5cblx0XHRpZiAoa2V5Py5sZW5ndGgpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwLCBwcm9wOyBkYXRhICE9PSB1bmRlZmluZWQgJiYgKHByb3AgPSBrZXlbaSsrXSk7IGRhdGEgPSBkYXRhW3Byb3BdKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZGF0YSAhPT0gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYW4gYXJyYXkgb2YgdGhlIG5hbWVzIG9mIHRoZSBrZXlzIGRlZmluZWQgb24gdGhlIG9iamVjdC5cblx0ICpcblx0ICogQHJldHVybnMge0FycmF5LjxTdHJpbmc+fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0a2V5cygpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5kYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBMb2FkcyBhIGNvbmZpZyBmaWxlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZmlsZSAtIFRoZSBwYXRoIHRvIHRoZSBjb25maWcgZmlsZSB0byBsb2FkLlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0bG9hZChmaWxlKSB7XG5cdFx0aWYgKCFmcy5leGlzdHNTeW5jKGZpbGUpKSB7XG5cdFx0XHRjb25zdCBlcnIgPSBuZXcgRXJyb3IoYEZpbGUgbm90IGZvdW5kOiAke2ZpbGV9YCk7XG5cdFx0XHRlcnIuY29kZSA9ICdFTk9FTlQnO1xuXHRcdFx0dGhyb3cgZXJyO1xuXHRcdH1cblxuXHRcdGxldCBjb250ZW50O1xuXHRcdGxldCBkYXRhO1xuXG5cdFx0bG9nKGBMb2FkaW5nICR7aGlnaGxpZ2h0KGZpbGUpfWApO1xuXHRcdHRyeSB7XG5cdFx0XHRjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGUsICd1dGY4Jyk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0ZS5tZXNzYWdlID0gYEZhaWxlZCB0byBsb2FkIGNvbmZpZyBmaWxlOiAke2UubWVzc2FnZX1gO1xuXHRcdFx0dGhyb3cgZTtcblx0XHR9XG5cblx0XHR0cnkge1xuXHRcdFx0ZGF0YSA9IEpTT04ucGFyc2UoY29udGVudCk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0ZS5tZXNzYWdlID0gYEZhaWxlZCB0byBsb2FkIGNvbmZpZyBmaWxlOiAke2UubWVzc2FnZX1gO1xuXHRcdFx0dGhyb3cgZTtcblx0XHR9XG5cblx0XHRpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBjb25maWcgZmlsZSB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHROb2RlLm1lcmdlKHRoaXMuZGF0YSwgZGF0YSk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWVwbHkgbWVyZ2VzIGFuIG9iamVjdCBpbnRvIGEgbGF5ZXIncyBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBUaGUgZGF0YSB0byBtZXJnZS5cblx0ICogQHJldHVybnMge0pTT05TdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdG1lcmdlKGRhdGEpIHtcblx0XHROb2RlLm1lcmdlKHRoaXMuZGF0YSwgZGF0YSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZXMgdGhlIGRhdGEgdG8gZGlzay5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IGZpbGUgLSBUaGUgZmlsZW5hbWUgdG8gc2F2ZSB0aGUgZGF0YSB0by5cblx0ICogQHJldHVybnMge0pTT05TdG9yZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHNhdmUoZmlsZSkge1xuXHRcdGlmICghZmlsZSB8fCB0eXBlb2YgZmlsZSAhPT0gJ3N0cmluZycpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGNvbmZpZyBmaWxlIHBhdGggdG8gYmUgYSBzdHJpbmcnKTtcblx0XHR9XG5cblx0XHRjb25zdCBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZSk7XG5cdFx0aWYgKGV4dCAhPT0gSlNPTlN0b3JlLmV4dGVuc2lvbikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBKU09OIGNvbmZpZyBmaWxlIHRvIGhhdmUgXCIke0pTT05TdG9yZS5leHRlbnNpb259XCIgZXh0ZW5zaW9uLCBmb3VuZCBcIiR7ZXh0fVwiYCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdG1wRmlsZSA9IGAke2ZpbGV9LiR7RGF0ZS5ub3coKX0udG1wYDtcblx0XHRmcy5vdXRwdXRKc29uU3luYyh0bXBGaWxlLCB0aGlzLmRhdGEsIHsgc3BhY2VzOiAyIH0pO1xuXHRcdGZzLm1vdmVTeW5jKHRtcEZpbGUsIGZpbGUsIHsgb3ZlcndyaXRlOiB0cnVlIH0pO1xuXHRcdGxvZyhgV3JvdGUgY29uZmlnIGZpbGU6ICR7aGlnaGxpZ2h0KGZpbGUpfWApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gY29uZmlnIGtleS5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0ga2V5IC0gVGhlIGtleSB0byBzZXQuXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0c2V0KGtleSwgdmFsdWUpIHtcblx0XHROb2RlLnBhdXNlKHRoaXMuZGF0YSk7XG5cblx0XHRsZXQgb2JqID0gdGhpcy5kYXRhO1xuXHRcdGZvciAobGV0IGkgPSAwLCBsZW4gPSBrZXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdGNvbnN0IHNlZ21lbnQgPSBrZXlbaV07XG5cdFx0XHRpZiAoaSArIDEgPCBsZW4pIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBvYmpbc2VnbWVudF0gIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkob2JqW3NlZ21lbnRdKSkge1xuXHRcdFx0XHRcdG9ialtzZWdtZW50XSA9IHt9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9iaiA9IG9ialtzZWdtZW50XTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9ialtzZWdtZW50XSA9IHZhbHVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdE5vZGUucmVzdW1lKHRoaXMuZGF0YSk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBkYXRhIGFzIGEgSlNPTi1lbmNvZGVkIHN0cmluZy5cblx0ICpcblx0ICogQHBhcmFtIHtOdW1iZXJ9IFtpbmRlbnRhdGlvbj0yXSBUaGUgbnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgdGhlIEpTT04gZm9ybWF0dGVkIG91dHB1dC5cblx0ICogQHJldHVybnMge1N0cmluZ31cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdHRvU3RyaW5nKGluZGVudGF0aW9uKSB7XG5cdFx0cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSwgbnVsbCwgaW5kZW50YXRpb24pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZXMgYSB3YXRjaCBoYW5kbGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kbGVyIC0gQSBjYWxsYmFjayB0byBmaXJlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzLlxuXHQgKiBAcmV0dXJucyB7SlNPTlN0b3JlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0dW53YXRjaChoYW5kbGVyKSB7XG5cdFx0Tm9kZS51bndhdGNoKHRoaXMuZGF0YSwgaGFuZGxlcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJzIGEgd2F0Y2ggaGFuZGxlci5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gW2ZpbHRlcl0gLSBBIHByb3BlcnR5IG5hbWUgb3IgYXJyYXkgb2YgbmVzdGVkIHByb3BlcnRpZXMgdG8gd2F0Y2guXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIgLSBBIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiBhIGNoYW5nZSBvY2N1cnMuXG5cdCAqIEByZXR1cm5zIHtKU09OU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHR3YXRjaChmaWx0ZXIsIGhhbmRsZXIpIHtcblx0XHROb2RlLndhdGNoKHRoaXMuZGF0YSwgZmlsdGVyPy5sZW5ndGggPyBmaWx0ZXIgOiBudWxsLCBoYW5kbGVyKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuIl0sImZpbGUiOiJzdG9yZXMvanNvbi1zdG9yZS5qcyJ9
{
"name": "config-kit",
"version": "1.3.1",
"version": "1.4.0",
"description": "A universal, layered configuration system.",

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

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