@glimmer/object
Advanced tools
Comparing version 0.34.6 to 0.34.7
@@ -46,2 +46,4 @@ 'use strict'; | ||
this.accessor = accessor; | ||
this.enumerable = false; | ||
this.configurable = false; | ||
} | ||
@@ -152,2 +154,2 @@ define(prototype, key, home) { | ||
function observer(..._args) {} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLEFBQU8sQUFBRSxBQUEwQixBQUFFLEFBQUksQUFBRSxBQUFNLEFBQTJCLEFBQUM7O0FBQzdFLEFBQU8sQUFBRSxBQUFXLEFBQWEsQUFBTSxBQUFVLEFBQUM7O0FBQ2xELEFBQU8sQUFBYyxBQUFTLEFBQUUsQUFBTSxBQUFTLEFBQUMsQUF5QmhELEFBQU07O01BQXlCLEFBQVEsQUFBUztnQkFLbEMsQUFBNEIsVUFBRSxPQUFtQixBQUFFLElBQzdELEFBQUssQUFBRSxBQUFDO0FBSEY7YUFBUSxXQUFXLEFBQUUsQUFBQyxBQUk1QixBQUFJO2FBQUMsQUFBUSxXQUFHLEFBQVEsQUFBQyxBQUN6QixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBVTtlQUFDLEFBQWUsU0FBRSxBQUFXLEtBQUUsQUFBb0IsV0FDM0QsQUFBUztrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBMEIsaURBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUFDLEFBQy9FLEFBQVM7a0JBQUMsQUFBbUIsb0JBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQyxBQUNsRCxBQUFTO2tCQUFDLEFBQVUsV0FBQyxBQUFHLEFBQUMsQUFBQyxBQUMxQixBQUFNO2VBQUMsSUFBSSxBQUFRLFNBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ3JDLEFBQUM7QUFFRCxBQUFRO2FBQUMsR0FBRyxBQUFlLE9BQ3pCLEFBQUk7YUFBQyxBQUFJLE9BQUcsQUFBSyxNQUFDLEFBQUcsSUFBQyxBQUFDLEtBQUksQUFBQyxFQUFDLEFBQUssTUFBQyxBQUFHLEFBQUMsQUFBQyxBQUFDLEFB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QyxPQUFPLEFBQUksU0FBSyxBQUFVLEFBQUMsWUFBQyxBQUFDLEFBQy9CLEFBQU07bUJBQUssQUFBaUI7aUJBQXJCLEFBQXNCLEFBQ3RCLEFBQXVELEFBQzdELEFBQUM7QUFEQSxBQUFHLFdBQ0YsQUFBUSxTQUFDLEdBQUcsQUFBSSxBQUFDLEFBQUMsQUFDdkIsQUFBQyxBQUFDLEFBQUk7ZUFBSyxPQUFPLEFBQUksU0FBSyxBQUFRLEFBQUMsVUFBQyxBQUFDLEFBQ3BDLEFBQU07ZUFBQyxJQUFJLEFBQWlCLGtCQUFDLEFBQTBCLEFBQUMsTUFBQyxBQUFRLFNBQUMsR0FBRyxBQUFJLEFBQUMsQUFBQyxBQUM3RSxBQUFDLEFBQUMsQUFBSTtBQUZDLEFBQUUsQUFBQyxXQUVILEFBQUMsQUFDTjtjQUFNLElBQUksQUFBUyxVQUFDLEFBQTJELEFBQUMsQUFBQyxBQUNuRixBQUFDLEFBQ0g7QUFBQztBQUVELEFBQU07a0JBQW1CLEdBQUcsQUFBWSxPQUFHLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludCwgTWV0YSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRU1QVFlfQ0FDSEUsIENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IERlc2NyaXB0b3IsIEJsdWVwcmludCB9IGZyb20gJy4vbWl4aW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gICh2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nLCB2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZERlc2NyaXB0b3Ige1xuICBnZXQ/OiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgc2V0PzogQ29tcHV0ZWRTZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2s7XG59XG5cbnR5cGUgQ29tcHV0ZWRBcmd1bWVudCA9IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBDb21wdXRlZERlc2NyaXB0b3I7XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgcHJpdmF0ZSBkZXBzOiBzdHJpbmdbXVtdO1xuICBwcml2YXRlIG1ldGFkYXRhOiBPYmplY3QgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yLCBkZXBzOiBzdHJpbmdbXVtdID0gW10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICB0aGlzLmRlcHMgPSBkZXBzO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGNsYXNzTWV0YS5hZGRSZWZlcmVuY2VUeXBlRm9yKGtleSwgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQoa2V5LCB0aGlzLmRlcHMpKTtcbiAgICBjbGFzc01ldGEuYWRkUHJvcGVydHlNZXRhZGF0YShrZXksIHRoaXMubWV0YWRhdGEpO1xuICAgIGNsYXNzTWV0YS5hZGRTbG90Rm9yKGtleSk7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZCh0aGlzLmFjY2Vzc29yKTtcbiAgfVxuXG4gIHByb3BlcnR5KC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVwcyA9IHBhdGhzLm1hcChkID0+IGQuc3BsaXQoJy4nKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtZXRhKG9iamVjdDogT2JqZWN0KSB7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG9iamVjdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZvbGF0aWxlKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmNsYXNzIENvbXB1dGVkIGltcGxlbWVudHMgRGVzY3JpcHRvciB7XG4gIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcblxuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yKSB7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICB9XG5cbiAgZGVmaW5lKHByb3RvdHlwZTogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwga2V5LCB3cmFwQWNjZXNzb3IoaG9tZSwga2V5LCB0aGlzLmFjY2Vzc29yKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gd3JhcEFjY2Vzc29yKFxuICBob21lOiBPYmplY3QsXG4gIGFjY2Vzc29yTmFtZTogc3RyaW5nLFxuICBfZGVzYzogQ29tcHV0ZWREZXNjcmlwdG9yXG4pOiBQcm9wZXJ0eURlc2NyaXB0b3Ige1xuICBsZXQgc3VwZXJEZXNjID0gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGhvbWUsIGFjY2Vzc29yTmFtZSk7XG5cbiAgbGV0IG9yaWdpbmFsR2V0OiBDb21wdXRlZEdldENhbGxiYWNrO1xuICBsZXQgb3JpZ2luYWxTZXQ6IENvbXB1dGVkU2V0Q2FsbGJhY2s7XG5cbiAgbGV0IGRlc2M6IFByb3BlcnR5RGVzY3JpcHRvciA9IHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgfTtcblxuICBsZXQgZ2V0ID0gX2Rlc2MuZ2V0O1xuXG4gIGlmIChnZXQgJiYgZ2V0Lmxlbmd0aCA+IDApIHtcbiAgICBvcmlnaW5hbEdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChnZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW5hbEdldCA9IF9kZXNjLmdldCBhcyBDb21wdXRlZEdldENhbGxiYWNrO1xuICB9XG5cbiAgbGV0IHNldCA9IF9kZXNjLnNldDtcblxuICBpZiAoc2V0ICYmIHNldC5sZW5ndGggPiAxKSB7XG4gICAgb3JpZ2luYWxTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc2V0IGFzIGFueSkuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUsIHZhbHVlKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsU2V0ID0gX2Rlc2Muc2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgY2FjaGVHZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBpZiAoTWV0YS5leGlzdHModGhpcykpIHtcbiAgICAgIGxldCBzbG90ID0gTWV0YS5mb3IodGhpcykuZ2V0U2xvdHMoKVthY2Nlc3Nvck5hbWVdO1xuICAgICAgaWYgKHNsb3QgIT09IEVNUFRZX0NBQ0hFKSByZXR1cm4gc2xvdDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JpZ2luYWxHZXQuY2FsbCh0aGlzKTtcbiAgfTtcblxuICBsZXQgY2FjaGVTZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGlmIChvcmlnaW5hbFNldCkge1xuICAgIGNhY2hlU2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKHRoaXMpO1xuICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuXG4gICAgICBsZXQgcmV0ID0gb3JpZ2luYWxTZXQuY2FsbCh0aGlzLCB2YWx1ZSk7XG5cbiAgICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzbG90c1thY2Nlc3Nvck5hbWVdID0gcmV0O1xuICAgICAgfVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgc2xvdHNbYWNjZXNzb3JOYW1lXSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBpZiAoIXN1cGVyRGVzYyB8fCAndmFsdWUnIGluIHN1cGVyRGVzYykge1xuICAgIGRlc2MuZ2V0ID0gY2FjaGVHZXQ7XG4gICAgZGVzYy5zZXQgPSBjYWNoZVNldDtcbiAgICByZXR1cm4gZGVzYztcbiAgfVxuXG4gIGRlc2MuZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKHN1cGVyRGVzYyBhcyBhbnkpLmdldC5jYWxsKHRoaXMpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlR2V0LmNhbGwodGhpcyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICBkZXNjLnNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuc2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjYWNoZVNldC5jYWxsKHRoaXMsIHZhbCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gZGVzYztcbn1cblxuZnVuY3Rpb24gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHN1YmplY3Q6IGFueSwgbmFtZTogc3RyaW5nKSB7XG4gIGxldCBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdCwgbmFtZSk7XG4gIGxldCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihzdWJqZWN0KTtcbiAgd2hpbGUgKHR5cGVvZiBwZCA9PT0gJ3VuZGVmaW5lZCcgJiYgcHJvdG8gIT09IG51bGwpIHtcbiAgICBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG5hbWUpO1xuICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKTtcbiAgfVxuICByZXR1cm4gcGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZChkZXNjOiBDb21wdXRlZERlc2NyaXB0b3IpOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZChcbiAgZ2V0dGVyOiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFja1xuKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pOiBDb21wdXRlZEJsdWVwcmludDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKC4uLmFyZ3M6IGFueVtdKSB7XG4gIGxldCBsYXN0OiBDb21wdXRlZEFyZ3VtZW50ID0gYXJncy5wb3AoKTtcbiAgbGV0IGRlcHMgPSBhcmdzO1xuXG4gIGlmICh0eXBlb2YgbGFzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQoe1xuICAgICAgZ2V0OiBsYXN0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrLFxuICAgIH0pLnByb3BlcnR5KC4uLmRlcHMpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBsYXN0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQobGFzdCBhcyBDb21wdXRlZERlc2NyaXB0b3IpLnByb3BlcnR5KC4uLmRlcHMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbXB1dGVkIGV4cGVjdHMgYSBmdW5jdGlvbiBvciBhbiBvYmplY3QgYXMgbGFzdCBhcmd1bWVudCcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlciguLi5fYXJnczogYW55W10pIHt9XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLEFBQU8sQUFBRSxBQUEwQixBQUFFLEFBQUksQUFBRSxBQUFNLEFBQTJCLEFBQUM7O0FBQzdFLEFBQU8sQUFBRSxBQUFXLEFBQWEsQUFBTSxBQUFVLEFBQUM7O0FBQ2xELEFBQU8sQUFBYyxBQUFTLEFBQUUsQUFBTSxBQUFTLEFBQUMsQUF5QmhELEFBQU07O01BQXlCLEFBQVEsQUFBUztnQkFLbEMsQUFBNEIsVUFBRSxPQUFtQixBQUFFLElBQzdELEFBQUssQUFBRSxBQUFDO0FBSEY7YUFBUSxXQUFXLEFBQUUsQUFBQyxBQUk1QixBQUFJO2FBQUMsQUFBUSxXQUFHLEFBQVEsQUFBQyxBQUN6QixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBVTtlQUFDLEFBQWUsU0FBRSxBQUFXLEtBQUUsQUFBb0IsV0FDM0QsQUFBUztrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBMEIsaURBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUFDLEFBQy9FLEFBQVM7a0JBQUMsQUFBbUIsb0JBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQyxBQUNsRCxBQUFTO2tCQUFDLEFBQVUsV0FBQyxBQUFHLEFBQUMsQUFBQyxBQUMxQjtlQUFPLElBQUksQUFBUSxTQUFDLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQyxBQUNyQyxBQUFDO0FBRUQsQUFBUTthQUFDLEdBQUcsQUFBZSxPQUN6QixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUssTUFBQyxBQUFHLElBQUMsQUFBQyxBQUFDLEFBQUUsS0FBQyxBQUFDLEVBQUMsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUFDLEFB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QUNsRixBQUNIO0FBQUM7QUFFRCxBQUFNO2tCQUFtQixHQUFHLEFBQVksT0FBRyxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQsIE1ldGEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IEVNUFRZX0NBQ0hFLCBDbGFzc01ldGEgfSBmcm9tICcuL29iamVjdCc7XG5pbXBvcnQgeyBEZXNjcmlwdG9yLCBCbHVlcHJpbnQgfSBmcm9tICcuL21peGluJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZEdldENhbGxiYWNrIHtcbiAgKCk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkU2V0Q2FsbGJhY2sge1xuICAodmFsOiBhbnkpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5Q29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gIChrZXk6IHN0cmluZywgdmFsOiBhbnkpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWREZXNjcmlwdG9yIHtcbiAgZ2V0PzogQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIHNldD86IENvbXB1dGVkU2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrO1xufVxuXG50eXBlIENvbXB1dGVkQXJndW1lbnQgPSBDb21wdXRlZEdldENhbGxiYWNrIHwgQ29tcHV0ZWREZXNjcmlwdG9yO1xuXG5leHBvcnQgY2xhc3MgQ29tcHV0ZWRCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gIHByaXZhdGUgZGVwczogc3RyaW5nW11bXTtcbiAgcHJpdmF0ZSBtZXRhZGF0YTogT2JqZWN0ID0ge307XG5cbiAgY29uc3RydWN0b3IoYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvciwgZGVwczogc3RyaW5nW11bXSA9IFtdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gICAgdGhpcy5kZXBzID0gZGVwcztcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBjbGFzc01ldGEuYWRkUmVmZXJlbmNlVHlwZUZvcihrZXksIENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50KGtleSwgdGhpcy5kZXBzKSk7XG4gICAgY2xhc3NNZXRhLmFkZFByb3BlcnR5TWV0YWRhdGEoa2V5LCB0aGlzLm1ldGFkYXRhKTtcbiAgICBjbGFzc01ldGEuYWRkU2xvdEZvcihrZXkpO1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWQodGhpcy5hY2Nlc3Nvcik7XG4gIH1cblxuICBwcm9wZXJ0eSguLi5wYXRoczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmRlcHMgPSBwYXRocy5tYXAoZCA9PiBkLnNwbGl0KCcuJykpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbWV0YShvYmplY3Q6IE9iamVjdCkge1xuICAgIHRoaXMubWV0YWRhdGEgPSBvYmplY3Q7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB2b2xhdGlsZSgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5jbGFzcyBDb21wdXRlZCBpbXBsZW1lbnRzIERlc2NyaXB0b3Ige1xuICBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBjb25maWd1cmFibGU6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yO1xuICAnNWQ5MGY4NGYtOTA4ZS00YTQyLTk3NDktM2QwZjUyM2MyNjJjJyA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcikge1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBmYWxzZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGZhbHNlO1xuICB9XG5cbiAgZGVmaW5lKHByb3RvdHlwZTogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwga2V5LCB3cmFwQWNjZXNzb3IoaG9tZSwga2V5LCB0aGlzLmFjY2Vzc29yKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gd3JhcEFjY2Vzc29yKFxuICBob21lOiBPYmplY3QsXG4gIGFjY2Vzc29yTmFtZTogc3RyaW5nLFxuICBfZGVzYzogQ29tcHV0ZWREZXNjcmlwdG9yXG4pOiBQcm9wZXJ0eURlc2NyaXB0b3Ige1xuICBsZXQgc3VwZXJEZXNjID0gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKGhvbWUsIGFjY2Vzc29yTmFtZSk7XG5cbiAgbGV0IG9yaWdpbmFsR2V0OiBDb21wdXRlZEdldENhbGxiYWNrO1xuICBsZXQgb3JpZ2luYWxTZXQ6IENvbXB1dGVkU2V0Q2FsbGJhY2s7XG5cbiAgbGV0IGRlc2M6IFByb3BlcnR5RGVzY3JpcHRvciA9IHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgfTtcblxuICBsZXQgZ2V0ID0gX2Rlc2MuZ2V0O1xuXG4gIGlmIChnZXQgJiYgZ2V0Lmxlbmd0aCA+IDApIHtcbiAgICBvcmlnaW5hbEdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChnZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW5hbEdldCA9IF9kZXNjLmdldCBhcyBDb21wdXRlZEdldENhbGxiYWNrO1xuICB9XG5cbiAgbGV0IHNldCA9IF9kZXNjLnNldDtcblxuICBpZiAoc2V0ICYmIHNldC5sZW5ndGggPiAxKSB7XG4gICAgb3JpZ2luYWxTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc2V0IGFzIGFueSkuY2FsbCh0aGlzLCBhY2Nlc3Nvck5hbWUsIHZhbHVlKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsU2V0ID0gX2Rlc2Muc2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgY2FjaGVHZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBpZiAoTWV0YS5leGlzdHModGhpcykpIHtcbiAgICAgIGxldCBzbG90ID0gTWV0YS5mb3IodGhpcykuZ2V0U2xvdHMoKVthY2Nlc3Nvck5hbWVdO1xuICAgICAgaWYgKHNsb3QgIT09IEVNUFRZX0NBQ0hFKSByZXR1cm4gc2xvdDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JpZ2luYWxHZXQuY2FsbCh0aGlzKTtcbiAgfTtcblxuICBsZXQgY2FjaGVTZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGlmIChvcmlnaW5hbFNldCkge1xuICAgIGNhY2hlU2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKHRoaXMpO1xuICAgICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuXG4gICAgICBsZXQgcmV0ID0gb3JpZ2luYWxTZXQuY2FsbCh0aGlzLCB2YWx1ZSk7XG5cbiAgICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzbG90c1thY2Nlc3Nvck5hbWVdID0gcmV0O1xuICAgICAgfVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgc2xvdHNbYWNjZXNzb3JOYW1lXSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBpZiAoIXN1cGVyRGVzYyB8fCAndmFsdWUnIGluIHN1cGVyRGVzYykge1xuICAgIGRlc2MuZ2V0ID0gY2FjaGVHZXQ7XG4gICAgZGVzYy5zZXQgPSBjYWNoZVNldDtcbiAgICByZXR1cm4gZGVzYztcbiAgfVxuXG4gIGRlc2MuZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKHN1cGVyRGVzYyBhcyBhbnkpLmdldC5jYWxsKHRoaXMpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlR2V0LmNhbGwodGhpcyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICBkZXNjLnNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuc2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjYWNoZVNldC5jYWxsKHRoaXMsIHZhbCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gZGVzYztcbn1cblxuZnVuY3Rpb24gZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHN1YmplY3Q6IGFueSwgbmFtZTogc3RyaW5nKSB7XG4gIGxldCBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdCwgbmFtZSk7XG4gIGxldCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihzdWJqZWN0KTtcbiAgd2hpbGUgKHR5cGVvZiBwZCA9PT0gJ3VuZGVmaW5lZCcgJiYgcHJvdG8gIT09IG51bGwpIHtcbiAgICBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8sIG5hbWUpO1xuICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKTtcbiAgfVxuICByZXR1cm4gcGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZChkZXNjOiBDb21wdXRlZERlc2NyaXB0b3IpOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZChcbiAgZ2V0dGVyOiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFja1xuKTogQ29tcHV0ZWRCbHVlcHJpbnQ7XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pOiBDb21wdXRlZEJsdWVwcmludDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKC4uLmFyZ3M6IGFueVtdKSB7XG4gIGxldCBsYXN0OiBDb21wdXRlZEFyZ3VtZW50ID0gYXJncy5wb3AoKTtcbiAgbGV0IGRlcHMgPSBhcmdzO1xuXG4gIGlmICh0eXBlb2YgbGFzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQoe1xuICAgICAgZ2V0OiBsYXN0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrLFxuICAgIH0pLnByb3BlcnR5KC4uLmRlcHMpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBsYXN0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBuZXcgQ29tcHV0ZWRCbHVlcHJpbnQobGFzdCBhcyBDb21wdXRlZERlc2NyaXB0b3IpLnByb3BlcnR5KC4uLmRlcHMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbXB1dGVkIGV4cGVjdHMgYSBmdW5jdGlvbiBvciBhbiBvYmplY3QgYXMgbGFzdCBhcmd1bWVudCcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvYnNlcnZlciguLi5fYXJnczogYW55W10pIHt9XG4iXX0= |
@@ -63,2 +63,2 @@ 'use strict'; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFFLEFBQVMsQUFBRSxBQUFVLEFBQUUsQUFBTSxBQUFTLEFBQUM7O0FBRWhELEFBQU8sQUFBRSxBQUFpQixBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUUvQyxNQUE0QixBQUFRLEFBQVU7Z0JBR2hDLEFBQVksTUFDdEIsQUFBSyxBQUFFLEFBQUM7QUFDUixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBTTtXQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBYSxPQUMvQztZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBYyxBQUFDLEFBRS9CLEFBQU07ZUFBQyxBQUFjLGVBQUMsQUFBTSxRQUFFLEFBQUc7d0JBQ25CLEFBQUksQUFDaEIsQUFBWTswQkFBRSxBQUFJLEFBQ2xCLEFBQUc7a0JBQ0QsQUFBTTt1QkFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDcEIsQUFBQyxBQUNGLEFBQUMsQUFBQyxBQUNMO0FBUHFDLEFBT3BDLEFBQ0Y7QUFQSyxBQUFVOztBQVRkO0FBa0JGLE1BQTJCLEFBQVEsQUFBUztnQkFHOUIsQUFBWSxNQUN0QixBQUFLLEFBQUUsQUFBQztBQUNSLEFBQUk7YUFBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CLEFBQUM7QUFFRCxBQUFVO2VBQUMsQUFBZSxTQUFFLEFBQVksTUFBRSxBQUFnQixPQUN4RCxBQUFNO2VBQUMsSUFBSSxBQUFxQixzQkFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDOUMsQUFBQyxBQUNGO0FBRUQsQUFBTTtBQVZKO3FCQVUwQixBQUFZLE1BQ3RDLEFBQU07V0FBQyxJQUFJLEFBQW9CLHFCQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3hDLEFBQUM7O0FBRUQsTUFBcUIsQUFBUSxBQUFpQjtnQkFHaEMsQUFBYyxNQUN4QjtZQUFJLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUMsR0FBRSxDQUFDLEFBQUMsQUFBQyxBQUFDLEFBQy9CO1lBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBTSxTQUFHLEFBQUMsQUFBQyxBQUFDLEFBRWpDO1lBQUksQUFBRyxNQUFHLFlBQ1IsQUFBTTttQkFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLENBQUMsQUFBRyxLQUFFLEFBQUMsTUFBSyxBQUFHLElBQUMsQUFBQyxBQUFDLElBQUUsQUFBSSxBQUFDLEFBQUMsQUFDL0MsQUFBQyxBQUFDO0FBRUY7WUFBSSxBQUFHLE1BQUcsVUFBb0IsQUFBVSxPQUN0QztnQkFBSSxBQUFDLElBQUcsQUFBTSxPQUFDLEFBQU0sT0FBQyxDQUFDLEFBQUcsS0FBRSxBQUFDLE1BQUssQUFBRyxJQUFDLEFBQUMsQUFBQyxJQUFFLEFBQUksQUFBQyxBQUFDLEFBQ2hELEFBQUM7Y0FBQyxBQUFJLEFBQUMsUUFBRyxBQUFLLEFBQUMsQUFDbEIsQUFBQyxBQUFDO0FBRUYsQUFBSztjQUFDLEVBQUUsQUFBRyxLQUFFLEFBQUcsQUFBRSxPQUFFLENBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUM1QixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBVTtlQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBZSxNQUNyRCxBQUFFLEFBQUM7WUFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQUMsQUFBQyxPQUFLLEFBQUcsQUFBQyxLQUFDLE1BQU0sSUFBSSxBQUFLLEFBQUMsd0JBQWtCLEFBQUcsQUFBVyxBQUFDLEFBQUMsR0FDNUUsQUFBTTtlQUFDLEFBQUssTUFBQyxBQUFVLFdBQUMsQUFBTSxRQUFFLEFBQUcsS0FBRSxBQUFJLEFBQUMsQUFBQyxBQUM3QyxBQUFDLEFBQ0Y7QUFFRCxBQUFNO0FBdkJKO2VBdUJvQixBQUFZLE1BQ2hDLEFBQU07V0FBQyxJQUFJLEFBQWMsZUFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUFDLEFBQUMsQUFDN0MsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsdWVwcmludCwgRGVzY3JpcHRvciB9IGZyb20gJy4vbWl4aW4nO1xuaW1wb3J0IHsgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgQ29tcHV0ZWRCbHVlcHJpbnQgfSBmcm9tICcuL2NvbXB1dGVkJztcblxuY2xhc3MgQWxpYXNNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lOiBPYmplY3QpIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMubmFtZSBhcyBzdHJpbmc7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQodGhpczogdHlwZW9mIHRhcmdldCkge1xuICAgICAgICByZXR1cm4gdGhpc1tuYW1lXTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgQWxpYXNNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZERlc2NyaXB0b3IodGhpcy5uYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXNNZXRob2QobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZEJsdWVwcmludChuYW1lKTtcbn1cblxuY2xhc3MgQWxpYXNCbHVlcHJpbnQgZXh0ZW5kcyBDb21wdXRlZEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nW10pIHtcbiAgICBsZXQgcGFyZW50ID0gbmFtZS5zbGljZSgwLCAtMSk7XG4gICAgbGV0IGxhc3QgPSBuYW1lW25hbWUubGVuZ3RoIC0gMV07XG5cbiAgICBsZXQgZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gbmFtZS5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICB9O1xuXG4gICAgbGV0IHNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IHAgPSBwYXJlbnQucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgICBwW2xhc3RdID0gdmFsdWU7XG4gICAgfTtcblxuICAgIHN1cGVyKHsgZ2V0LCBzZXQgfSwgW25hbWVdKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIG1ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGlmICh0aGlzLm5hbWVbMF0gPT09IGtleSkgdGhyb3cgbmV3IEVycm9yKGBTZXR0aW5nIGFsaWFzICcke2tleX0nIG9uIHNlbGZgKTtcbiAgICByZXR1cm4gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgbWV0YSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzKG5hbWU6IHN0cmluZyk6IEJsdWVwcmludCB7XG4gIHJldHVybiBuZXcgQWxpYXNCbHVlcHJpbnQobmFtZS5zcGxpdCgnLicpKTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFFLEFBQVMsQUFBRSxBQUFVLEFBQUUsQUFBTSxBQUFTLEFBQUM7O0FBRWhELEFBQU8sQUFBRSxBQUFpQixBQUFFLEFBQU0sQUFBWSxBQUFDOztBQUUvQyxNQUE0QixBQUFRLEFBQVU7Z0JBR2hDLEFBQVksTUFDdEIsQUFBSyxBQUFFLEFBQUM7QUFDUixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBTTtXQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBYSxPQUMvQztZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBYyxBQUFDLEFBRS9CLEFBQU07ZUFBQyxBQUFjLGVBQUMsQUFBTSxRQUFFLEFBQUc7d0JBQ25CLEFBQUksQUFDaEIsQUFBWTswQkFBRSxBQUFJLEFBQ2xCLEFBQUc7a0JBQ0Q7dUJBQU8sQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3BCLEFBQUMsQUFDRixBQUFDLEFBQUMsQUFDTDtBQVBxQyxBQU9wQyxBQUNGO0FBUEssQUFBVTs7QUFUZDtBQWtCRixNQUEyQixBQUFRLEFBQVM7Z0JBRzlCLEFBQVksTUFDdEIsQUFBSyxBQUFFLEFBQUM7QUFDUixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBVTtlQUFDLEFBQWUsU0FBRSxBQUFZLE1BQUUsQUFBZ0IsT0FDeEQ7ZUFBTyxJQUFJLEFBQXFCLHNCQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUM5QyxBQUFDLEFBQ0Y7QUFFRCxBQUFNO0FBVko7cUJBVTBCLEFBQVksTUFDdEM7V0FBTyxJQUFJLEFBQW9CLHFCQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3hDLEFBQUM7O0FBRUQsTUFBcUIsQUFBUSxBQUFpQjtnQkFHaEMsQUFBYyxNQUN4QjtZQUFJLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUMsR0FBRSxDQUFDLEFBQUMsQUFBQyxBQUFDLEFBQy9CO1lBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBTSxTQUFHLEFBQUMsQUFBQyxBQUFDLEFBRWpDO1lBQUksQUFBRyxNQUFHLFlBQ1I7bUJBQU8sQUFBSSxLQUFDLEFBQU0sT0FBQyxDQUFDLEFBQUcsS0FBRSxBQUFDLEFBQUUsQUFBRSxNQUFDLEFBQUcsSUFBQyxBQUFDLEFBQUMsSUFBRSxBQUFJLEFBQUMsQUFBQyxBQUMvQyxBQUFDLEFBQUM7QUFFRjtZQUFJLEFBQUcsTUFBRyxVQUFvQixBQUFVLE9BQ3RDO2dCQUFJLEFBQUMsSUFBRyxBQUFNLE9BQUMsQUFBTSxPQUFDLENBQUMsQUFBRyxLQUFFLEFBQUMsQUFBRSxBQUFFLE1BQUMsQUFBRyxJQUFDLEFBQUMsQUFBQyxJQUFFLEFBQUksQUFBQyxBQUFDLEFBQ2hELEFBQUM7Y0FBQyxBQUFJLEFBQUMsUUFBRyxBQUFLLEFBQUMsQUFDbEIsQUFBQyxBQUFDO0FBRUYsQUFBSztjQUFDLEVBQUUsQUFBRyxLQUFFLEFBQUcsQUFBRSxPQUFFLENBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUM1QixBQUFJO2FBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBVTtlQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBZSxNQUNyRDtZQUFJLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBQyxBQUFDLE9BQUssQUFBRyxLQUFFLE1BQU0sSUFBSSxBQUFLLEFBQUMsd0JBQWtCLEFBQUcsQUFBVyxBQUFDLEFBQUMsR0FDNUU7ZUFBTyxBQUFLLE1BQUMsQUFBVSxXQUFDLEFBQU0sUUFBRSxBQUFHLEtBQUUsQUFBSSxBQUFDLEFBQUMsQUFDN0MsQUFBQyxBQUNGO0FBRUQsQUFBTTtBQXZCSjtlQXVCb0IsQUFBWSxNQUNoQztXQUFPLElBQUksQUFBYyxlQUFDLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUMsQUFBQyxBQUM3QyxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmx1ZXByaW50LCBEZXNjcmlwdG9yIH0gZnJvbSAnLi9taXhpbic7XG5pbXBvcnQgeyBDbGFzc01ldGEgfSBmcm9tICcuL29iamVjdCc7XG5pbXBvcnQgeyBDb21wdXRlZEJsdWVwcmludCB9IGZyb20gJy4vY29tcHV0ZWQnO1xuXG5jbGFzcyBBbGlhc01ldGhvZERlc2NyaXB0b3IgZXh0ZW5kcyBEZXNjcmlwdG9yIHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgX2hvbWU6IE9iamVjdCkge1xuICAgIGxldCBuYW1lID0gdGhpcy5uYW1lIGFzIHN0cmluZztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiB0eXBlb2YgdGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzW25hbWVdO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBBbGlhc01ldGhvZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9tZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kRGVzY3JpcHRvcih0aGlzLm5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhc01ldGhvZChuYW1lOiBzdHJpbmcpOiBCbHVlcHJpbnQge1xuICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kQmx1ZXByaW50KG5hbWUpO1xufVxuXG5jbGFzcyBBbGlhc0JsdWVwcmludCBleHRlbmRzIENvbXB1dGVkQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmdbXSkge1xuICAgIGxldCBwYXJlbnQgPSBuYW1lLnNsaWNlKDAsIC0xKTtcbiAgICBsZXQgbGFzdCA9IG5hbWVbbmFtZS5sZW5ndGggLSAxXTtcblxuICAgIGxldCBnZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiBuYW1lLnJlZHVjZSgob2JqLCBuKSA9PiBvYmpbbl0sIHRoaXMpO1xuICAgIH07XG5cbiAgICBsZXQgc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICBsZXQgcCA9IHBhcmVudC5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICAgIHBbbGFzdF0gPSB2YWx1ZTtcbiAgICB9O1xuXG4gICAgc3VwZXIoeyBnZXQsIHNldCB9LCBbbmFtZV0pO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgaWYgKHRoaXMubmFtZVswXSA9PT0ga2V5KSB0aHJvdyBuZXcgRXJyb3IoYFNldHRpbmcgYWxpYXMgJyR7a2V5fScgb24gc2VsZmApO1xuICAgIHJldHVybiBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBtZXRhKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXMobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc0JsdWVwcmludChuYW1lLnNwbGl0KCcuJykpO1xufVxuIl19 |
@@ -278,2 +278,2 @@ 'use strict'; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFFLEFBQVUsQUFBRSxBQUFNLEFBQTJCLEFBQUM7O0FBQ3ZELEFBQU8sQUFBUSxBQUFJLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNuRCxBQUFzQixBQUVwQixBQUFTLEFBQ1QsQUFBWSxBQUNaLEFBQVcsQUFDWixBQUFNLEFBQVUsQUFBQzs7QUFFbEIsQUFBTyxBQUFFLEFBQUksQUFBRSxBQUFNLEFBQVMsQUFBQzs7QUFFL0IsTUFBTSxFQUFFLEFBQU8sQUFBRSxZQUFHLEFBQUssQUFBQyxBQUUxQixBQUFNO0FBQUMsTUFBTSxBQUFVLGtDQUFHLEFBQXNDLEFBQUMsQUFDakUsQUFBTTtBQUFDLE1BQU0sQUFBUyxnQ0FBRyxBQUFzQyxBQUFDLEFBRWhFLEFBQU07O2tCQUNKO2FBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRCxBQUFDO0FBRUQsQUFBTTtBQUxOOzs7a0JBTUU7YUFBc0MsMENBQUcsQUFBSSxBQUFDLEFBRWhELEFBQUM7QUFTRCxBQUFNO0FBWk47OztnQkF3Q2MsQUFBc0IsWUFBRSxBQUFlO2FBM0JqQyxhQUFjLEFBQVcsQUFBQyxLQUFwQyxDQUFxQyxBQUF1QixBQUM1RDthQUFzQix5QkFBYSxBQUFFLEFBQUMsQUFDdEM7YUFBZ0IsbUJBQWEsQUFBRSxBQUFDLEFBQ2hDO2FBQVksZUFBWSxBQUFFLEFBQUMsQUF5QmpDLEFBQUk7YUFBQyxBQUFNLE9BQUMsQUFBVSxBQUFDLEFBQUMsQUFDeEIsQUFBSTthQUFDLEFBQVksYUFBQyxBQUFJLEtBQUMsR0FBRyxBQUFNLEFBQUMsQUFBQyxBQUNwQyxBQUFDO0FBekJELEFBQU07V0FBQyxBQUFNLE9BQUMsR0FBRyxBQUE0QixNQUMzQztZQUFJLEFB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ZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBEaWN0LCBkaWN0LCBhc3NpZ24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCBHbGltbWVyT2JqZWN0LCB7XG4gIEdsaW1tZXJPYmplY3RGYWN0b3J5LFxuICBDbGFzc01ldGEsXG4gIEluc3RhbmNlTWV0YSxcbiAgdHVyYm9jaGFyZ2UsXG59IGZyb20gJy4vb2JqZWN0JztcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuXG5leHBvcnQgY29uc3QgREVTQ1JJUFRPUiA9ICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnO1xuZXhwb3J0IGNvbnN0IEJMVUVQUklOVCA9ICc4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVzY3JpcHRvciB7XG4gICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnID0gdHJ1ZTtcbiAgYWJzdHJhY3QgZGVmaW5lKHByb3RvdHlwZTogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsdWVwcmludCB7XG4gICc4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDUnID0gdHJ1ZTtcbiAgYWJzdHJhY3QgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25zIHtcbiAgY29uY2F0ZW5hdGVkUHJvcGVydGllcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbDtcbiAgbWVyZ2VkUHJvcGVydGllcz86IHN0cmluZ1tdIHwgc3RyaW5nO1xuICBfc3VwZXI/OiBGdW5jdGlvbjtcbiAgW2luZGV4OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBNaXhpbiB7XG4gIHByaXZhdGUgZXh0ZW5zaW9uczogRGljdDxhbnk+ID0gbnVsbCBhcyBhbnk7IC8vIGFzc2lnbmVkIGJlZm9yZSB1c2VkXG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGRlcGVuZGVuY2llczogTWl4aW5bXSA9IFtdO1xuXG4gIHN0YXRpYyBjcmVhdGUoLi4uYXJnczogKE1peGluIHwgRXh0ZW5zaW9ucylbXSkge1xuICAgIGxldCBleHRlbnNpb25zID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIFtdKTtcbiAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbnMgaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHt9LCBhcmdzIGFzIE1peGluW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGVwcyA9IGFyZ3Muc2xpY2UoMCwgLTEpLm1hcCh0b01peGluKTtcbiAgICAgIHJldHVybiBuZXcgdGhpcyhleHRlbnNpb25zIGFzIEV4dGVuc2lvbnMsIGRlcHMpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBtaXhpbnMob2JqOiBhbnkpOiBNaXhpbltdIHtcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSByZXR1cm4gW107XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICBpZiAoIW1ldGEpIHJldHVybiBbXTtcblxuICAgIHJldHVybiBtZXRhLmdldEFwcGxpZWRNaXhpbnMoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMsIG1peGluczogTWl4aW5bXSkge1xuICAgIHRoaXMucmVvcGVuKGV4dGVuc2lvbnMpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2goLi4ubWl4aW5zKTtcbiAgfVxuXG4gIGRldGVjdChvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgcmV0dXJuIG9iai5kZXBlbmRlbmNpZXMuaW5kZXhPZih0aGlzKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgbGV0IG1ldGEgPSBDbGFzc01ldGEuZm9yKG9iaik7XG4gICAgcmV0dXJuICEhbWV0YSAmJiBtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKTtcbiAgfVxuXG4gIHJlb3BlbihleHRlbnNpb25zOiBFeHRlbnNpb25zKSB7XG4gICAgaWYgKHRoaXMuZXh0ZW5zaW9ucykge1xuICAgICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCh0b01peGluKHRoaXMuZXh0ZW5zaW9ucykpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXh0ZW5zaW9ucyA9PT0gJ29iamVjdCcgJiYgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnIGluIGV4dGVuc2lvbnMpIHtcbiAgICAgIGxldCBjb25jYXQ6IHN0cmluZ1tdO1xuICAgICAgbGV0IHJhd0NvbmNhdCA9IGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcblxuICAgICAgaWYgKGlzQXJyYXkocmF3Q29uY2F0KSkge1xuICAgICAgICBjb25jYXQgPSAocmF3Q29uY2F0IGFzIHN0cmluZ1tdKS5zbGljZSgpO1xuICAgICAgfSBlbHNlIGlmIChyYXdDb25jYXQgPT09IG51bGwgfHwgcmF3Q29uY2F0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uY2F0ID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25jYXQgPSBbcmF3Q29uY2F0IGFzIHN0cmluZ107XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBjb25jYXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnbWVyZ2VkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IG1lcmdlZDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3TWVyZ2VkID0gZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdNZXJnZWQpKSB7XG4gICAgICAgIG1lcmdlZCA9IChyYXdNZXJnZWQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd01lcmdlZCA9PT0gbnVsbCB8fCByYXdNZXJnZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtZXJnZWQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZCA9IFtyYXdNZXJnZWQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IG1lcmdlZDtcbiAgICB9XG5cbiAgICBsZXQgbm9ybWFsaXplZDogRGljdDxCbHVlcHJpbnQ+ID0gT2JqZWN0LmtleXMoZXh0ZW5zaW9ucykucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gZXh0ZW5zaW9uc1trZXldO1xuXG4gICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgTWV0aG9kQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgaWYgKHZhbHVlICYmIEJMVUVQUklOVCBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIG9ialtrZXldID0gbmV3IERhdGFCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCBkaWN0PEJsdWVwcmludD4oKSk7XG5cbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBkaWN0PGFueT4oKTtcbiAgICBhc3NpZ24odGhpcy5leHRlbnNpb25zLCB0dXJib2NoYXJnZShub3JtYWxpemVkKSk7XG4gIH1cblxuICBhcHBseSh0YXJnZXQ6IGFueSkge1xuICAgIGxldCBtZXRhOiBDbGFzc01ldGEgPSAodGFyZ2V0W0NMQVNTX01FVEFdID0gdGFyZ2V0W0NMQVNTX01FVEFdIHx8IG5ldyBDbGFzc01ldGEoKSk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uYXBwbHkodGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXModGFyZ2V0LCB0YXJnZXQsIG1ldGEpO1xuICAgIG1ldGEuYWRkTWl4aW4odGhpcyk7XG4gICAgbWV0YS5zZWFsKCk7XG4gICAgbWV0YS5yZXNlYWwodGFyZ2V0KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGUoT3JpZ2luYWw6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICBPcmlnaW5hbC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE9yaWdpbmFsLnByb3RvdHlwZSk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kUHJvdG90eXBlKE9yaWdpbmFsKSk7XG4gICAgdGhpcy5leHRlbmRQcm90b3R5cGVPbnRvKE9yaWdpbmFsLCBPcmlnaW5hbCk7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhTdWJjbGFzcy5wcm90b3R5cGUsIFBhcmVudC5wcm90b3R5cGUsIFN1YmNsYXNzW0NMQVNTX01FVEFdKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbih0aGlzKTtcbiAgfVxuXG4gIGV4dGVuZFN0YXRpYyhUYXJnZXQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRTdGF0aWMoVGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXMoVGFyZ2V0LCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoVGFyZ2V0KSwgVGFyZ2V0W0NMQVNTX01FVEFdW0NMQVNTX01FVEFdKTtcbiAgICBUYXJnZXRbQ0xBU1NfTUVUQV0uYWRkU3RhdGljTWl4aW4odGhpcyk7XG4gIH1cblxuICBtZXJnZVByb3BlcnRpZXModGFyZ2V0OiBPYmplY3QsIHBhcmVudDogT2JqZWN0LCBtZXRhOiBDbGFzc01ldGEpIHtcbiAgICBpZiAobWV0YS5oYXNBcHBsaWVkTWl4aW4odGhpcykpIHJldHVybjtcbiAgICBtZXRhLmFkZEFwcGxpZWRNaXhpbih0aGlzKTtcblxuICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRNZXJnZWRQcm9wZXJ0eShrLCBwYXJlbnRba10pKTtcbiAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMuZm9yRWFjaChrID0+IG1ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoaywgW10pKTtcblxuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKFxuICAgICAgdGFyZ2V0LFxuICAgICAgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnXG4gICAgKTtcbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IG1ldGEuZ2V0TWVyZ2VkUHJvcGVydGllcygpIH0pLmRlZmluZSh0YXJnZXQsICdtZXJnZWRQcm9wZXJ0aWVzJyk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLmV4dGVuc2lvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGxldCBleHRlbnNpb246IEJsdWVwcmludCA9IHRoaXMuZXh0ZW5zaW9ucyFba2V5XTtcbiAgICAgIGxldCBkZXNjID0gZXh0ZW5zaW9uLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXkgYXMgc3RyaW5nLCBtZXRhKTtcbiAgICAgIGRlc2MuZGVmaW5lKHRhcmdldCwga2V5IGFzIHN0cmluZywgcGFyZW50KTtcbiAgICB9KTtcblxuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogUk9PVCB9KS5kZWZpbmUodGFyZ2V0LCAnX3N1cGVyJyBhcyBzdHJpbmcpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEV4dGVuc2lvbiA9IE1peGluIHwgRXh0ZW5zaW9ucztcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZDxUIGV4dGVuZHMgR2xpbW1lck9iamVjdD4oXG4gIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4sXG4gIC4uLmV4dGVuc2lvbnM6IEV4dGVuc2lvbltdXG4pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+IHtcbiAgbGV0IFN1cGVyID0gUGFyZW50IGFzIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuXG4gIGxldCBTdWJjbGFzcyA9IGNsYXNzIGV4dGVuZHMgU3VwZXIge307XG4gIFN1YmNsYXNzW0NMQVNTX01FVEFdID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQoUGFyZW50W0NMQVNTX01FVEFdKTtcblxuICBsZXQgbWl4aW5zID0gZXh0ZW5zaW9ucy5tYXAodG9NaXhpbik7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5hZGRTdWJjbGFzcyhTdWJjbGFzcyBhcyBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KTtcbiAgbWl4aW5zLmZvckVhY2gobSA9PiBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbihtKSk7XG5cbiAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudCk7XG5cbiAgcmV0dXJuIFN1YmNsYXNzIGFzIGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGlua1N1YmNsYXNzZXMoUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5nZXRTdWJjbGFzc2VzKCkuZm9yRWFjaCgoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pID0+IHtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5yZXNldChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUGFyZW50LnByb3RvdHlwZSk7XG5cbiAgICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MsIFBhcmVudCk7XG5cbiAgICAvLyByZWN1cnNlIGludG8gc3ViLXN1YmNsYXNzZXNcbiAgICByZWxpbmtTdWJjbGFzc2VzKFN1YmNsYXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b01peGluKGV4dGVuc2lvbjogRXh0ZW5zaW9uKTogTWl4aW4ge1xuICBpZiAoZXh0ZW5zaW9uIGluc3RhbmNlb2YgTWl4aW4pIHJldHVybiBleHRlbnNpb247XG4gIGVsc2UgcmV0dXJuIG5ldyBNaXhpbihleHRlbnNpb24gYXMgT2JqZWN0LCBbXSk7XG59XG5cbmNsYXNzIFZhbHVlRGVzY3JpcHRvciBleHRlbmRzIERlc2NyaXB0b3Ige1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHdyaXRhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgdmFsdWU6IGFueTtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICB3cml0YWJsZSA9IHRydWUsXG4gICAgdmFsdWUsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLndyaXRhYmxlID0gd3JpdGFibGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgX2hvbWU/OiBhbnkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICB3cml0YWJsZTogdGhpcy53cml0YWJsZSxcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgd3JpdGFibGUgPSB0cnVlLFxuICAgIHZhbHVlLFxuICB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBsZXQgeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9ID0gdGhpcztcblxuICAgIGlmIChjbGFzc01ldGEuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5IGFzIHN0cmluZykpIHtcbiAgICAgIGNsYXNzTWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nLCB2YWx1ZSk7XG4gICAgICB2YWx1ZSA9IGNsYXNzTWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKTtcbiAgICB9IGVsc2UgaWYgKGNsYXNzTWV0YS5oYXNNZXJnZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgY2xhc3NNZXRhLmFkZE1lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcsIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldE1lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjY2Vzc29yQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIGdldDogKCkgPT4gYW55O1xuICBzZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIGdldCxcbiAgICBzZXQsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvciAmIHsgZ2V0OiBhbnk7IHNldDogYW55IH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy5nZXQgPSBnZXQ7XG4gICAgdGhpcy5zZXQgPSBzZXQ7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gbmV3IFZhbHVlRGVzY3JpcHRvcih7XG4gICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgZ2V0OiB0aGlzLmdldCxcbiAgICAgIHNldDogdGhpcy5zZXQsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgTWV0aG9kRGVzY3JpcHRvciBleHRlbmRzIFZhbHVlRGVzY3JpcHRvciB7XG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGhvbWU6IE9iamVjdCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB3cmFwTWV0aG9kKGhvbWUsIGtleSwgdGhpcy52YWx1ZSk7XG4gICAgc3VwZXIuZGVmaW5lKHRhcmdldCwga2V5LCBob21lKTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBEYXRhQmx1ZXByaW50IHtcbiAgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogTWV0aG9kRGVzY3JpcHRvciB7XG4gICAgbGV0IGRlc2MgPSBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBjbGFzc01ldGEpO1xuICAgIHJldHVybiBuZXcgTWV0aG9kRGVzY3JpcHRvcihkZXNjIGFzIFByb3BlcnR5RGVzY3JpcHRvcik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBNZXRob2QoaG9tZTogT2JqZWN0LCBtZXRob2ROYW1lOiBzdHJpbmcsIG9yaWdpbmFsOiAoLi4uYXJnczogYW55W10pID0+IGFueSkge1xuICBpZiAoISgobWV0aG9kTmFtZSBhcyBzdHJpbmcpIGluIGhvbWUpKSByZXR1cm4gbWF5YmVXcmFwKG9yaWdpbmFsKTtcblxuICBsZXQgc3VwZXJNZXRob2QgPSBob21lW21ldGhvZE5hbWVdO1xuXG4gIGxldCBmdW5jID0gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IHN1cGVyTWV0aG9kO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIChmdW5jIGFzIGFueSkuX193cmFwcGVkID0gdHJ1ZTtcblxuICByZXR1cm4gZnVuYztcbn1cblxuZnVuY3Rpb24gbWF5YmVXcmFwKG9yaWdpbmFsOiBGdW5jdGlvbikge1xuICBpZiAoJ19fd3JhcHBlZCcgaW4gb3JpZ2luYWwpIHJldHVybiBvcmlnaW5hbDtcblxuICByZXR1cm4gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFFLEFBQVUsQUFBRSxBQUFNLEFBQTJCLEFBQUM7O0FBQ3ZELEFBQU8sQUFBUSxBQUFJLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNuRCxBQUFzQixBQUVwQixBQUFTLEFBQ1QsQUFBWSxBQUNaLEFBQVcsQUFDWixBQUFNLEFBQVUsQUFBQzs7QUFFbEIsQUFBTyxBQUFFLEFBQUksQUFBRSxBQUFNLEFBQVMsQUFBQzs7QUFFL0IsTUFBTSxFQUFFLEFBQU8sQUFBRSxZQUFHLEFBQUssQUFBQyxBQUUxQixBQUFNO0FBQUMsTUFBTSxBQUFVLGtDQUFHLEFBQXNDLEFBQUMsQUFDakUsQUFBTTtBQUFDLE1BQU0sQUFBUyxnQ0FBRyxBQUFzQyxBQUFDLEFBRWhFLEFBQU07O2tCQUNKO2FBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRCxBQUFDO0FBRUQsQUFBTTtBQUxOOzs7a0JBTUU7YUFBc0MsMENBQUcsQUFBSSxBQUFDLEFBRWhELEFBQUM7QUFTRCxBQUFNO0FBWk47OztnQkF3Q2MsQUFBc0IsWUFBRSxBQUFlO2FBM0JqQyxhQUFjLEFBQVcsQUFBQyxLQUFwQyxDQUFxQyxBQUF1QixBQUM1RDthQUFzQix5QkFBYSxBQUFFLEFBQUMsQUFDdEM7YUFBZ0IsbUJBQWEsQUFBRSxBQUFDLEFBQ2hDO2FBQVksZUFBWSxBQUFFLEFBQUMsQUF5QmpDLEFBQUk7YUFBQyxBQUFNLE9BQUMsQUFBVSxBQUFDLEFBQUMsQUFDeEIsQUFBSTthQUFDLEFBQVksYUFBQyxBQUFJLEtBQUMsR0FBRyxBQUFNLEFBQUMsQUFBQyxBQUNwQyxBQUFDO0FBekJELEFBQU07V0FBQyxBQUFNLE9BQUMsR0FBRyxBQUE0QixNQUMzQztZQUFJLEFB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QUFNLEFBQUcsQUFBSSxBQUFDLEFBRW5CO1lBQUksQUFDRjttQkFBTyxBQUFRLFNBQUMsQUFBSyxNQUFDLEFBQUksTUFBRSxBQUFJLEFBQUMsQUFBQyxBQUNuQztrQkFBUyxBQUNSLEFBQUk7aUJBQUMsQUFBTSxTQUFHLEFBQVMsQUFBQyxBQUN6QixBQUNIO0FBQUMsQUFBQyxBQUNKO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDTEFTU19NRVRBIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBEaWN0LCBkaWN0LCBhc3NpZ24gfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCBHbGltbWVyT2JqZWN0LCB7XG4gIEdsaW1tZXJPYmplY3RGYWN0b3J5LFxuICBDbGFzc01ldGEsXG4gIEluc3RhbmNlTWV0YSxcbiAgdHVyYm9jaGFyZ2UsXG59IGZyb20gJy4vb2JqZWN0JztcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuXG5leHBvcnQgY29uc3QgREVTQ1JJUFRPUiA9ICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnO1xuZXhwb3J0IGNvbnN0IEJMVUVQUklOVCA9ICc4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDUnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGVzY3JpcHRvciB7XG4gICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnID0gdHJ1ZTtcbiAgYWJzdHJhY3QgZGVmaW5lKHByb3RvdHlwZTogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZDtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsdWVwcmludCB7XG4gICc4ZDk3Y2Y1Zi1kYjllLTQ4ZDgtYTZiMi03YTc1YjcxNzA4MDUnID0gdHJ1ZTtcbiAgYWJzdHJhY3QgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25zIHtcbiAgY29uY2F0ZW5hdGVkUHJvcGVydGllcz86IHN0cmluZ1tdIHwgc3RyaW5nIHwgbnVsbDtcbiAgbWVyZ2VkUHJvcGVydGllcz86IHN0cmluZ1tdIHwgc3RyaW5nO1xuICBfc3VwZXI/OiBGdW5jdGlvbjtcbiAgW2luZGV4OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBNaXhpbiB7XG4gIHByaXZhdGUgZXh0ZW5zaW9uczogRGljdDxhbnk+ID0gbnVsbCBhcyBhbnk7IC8vIGFzc2lnbmVkIGJlZm9yZSB1c2VkXG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGRlcGVuZGVuY2llczogTWl4aW5bXSA9IFtdO1xuXG4gIHN0YXRpYyBjcmVhdGUoLi4uYXJnczogKE1peGluIHwgRXh0ZW5zaW9ucylbXSkge1xuICAgIGxldCBleHRlbnNpb25zID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIFtdKTtcbiAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbnMgaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKHt9LCBhcmdzIGFzIE1peGluW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGVwcyA9IGFyZ3Muc2xpY2UoMCwgLTEpLm1hcCh0b01peGluKTtcbiAgICAgIHJldHVybiBuZXcgdGhpcyhleHRlbnNpb25zIGFzIEV4dGVuc2lvbnMsIGRlcHMpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBtaXhpbnMob2JqOiBhbnkpOiBNaXhpbltdIHtcbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSByZXR1cm4gW107XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICBpZiAoIW1ldGEpIHJldHVybiBbXTtcblxuICAgIHJldHVybiBtZXRhLmdldEFwcGxpZWRNaXhpbnMoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMsIG1peGluczogTWl4aW5bXSkge1xuICAgIHRoaXMucmVvcGVuKGV4dGVuc2lvbnMpO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLnB1c2goLi4ubWl4aW5zKTtcbiAgfVxuXG4gIGRldGVjdChvYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBNaXhpbikge1xuICAgICAgcmV0dXJuIG9iai5kZXBlbmRlbmNpZXMuaW5kZXhPZih0aGlzKSAhPT0gLTE7XG4gICAgfVxuXG4gICAgbGV0IG1ldGEgPSBDbGFzc01ldGEuZm9yKG9iaik7XG4gICAgcmV0dXJuICEhbWV0YSAmJiBtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKTtcbiAgfVxuXG4gIHJlb3BlbihleHRlbnNpb25zOiBFeHRlbnNpb25zKSB7XG4gICAgaWYgKHRoaXMuZXh0ZW5zaW9ucykge1xuICAgICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCh0b01peGluKHRoaXMuZXh0ZW5zaW9ucykpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZXh0ZW5zaW9ucyA9PT0gJ29iamVjdCcgJiYgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnIGluIGV4dGVuc2lvbnMpIHtcbiAgICAgIGxldCBjb25jYXQ6IHN0cmluZ1tdO1xuICAgICAgbGV0IHJhd0NvbmNhdCA9IGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcblxuICAgICAgaWYgKGlzQXJyYXkocmF3Q29uY2F0KSkge1xuICAgICAgICBjb25jYXQgPSAocmF3Q29uY2F0IGFzIHN0cmluZ1tdKS5zbGljZSgpO1xuICAgICAgfSBlbHNlIGlmIChyYXdDb25jYXQgPT09IG51bGwgfHwgcmF3Q29uY2F0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uY2F0ID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25jYXQgPSBbcmF3Q29uY2F0IGFzIHN0cmluZ107XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBleHRlbnNpb25zLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBjb25jYXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnbWVyZ2VkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IG1lcmdlZDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3TWVyZ2VkID0gZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdNZXJnZWQpKSB7XG4gICAgICAgIG1lcmdlZCA9IChyYXdNZXJnZWQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd01lcmdlZCA9PT0gbnVsbCB8fCByYXdNZXJnZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtZXJnZWQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZCA9IFtyYXdNZXJnZWQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IG1lcmdlZDtcbiAgICB9XG5cbiAgICBsZXQgbm9ybWFsaXplZDogRGljdDxCbHVlcHJpbnQ+ID0gT2JqZWN0LmtleXMoZXh0ZW5zaW9ucykucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gZXh0ZW5zaW9uc1trZXldO1xuXG4gICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgTWV0aG9kQmx1ZXByaW50KHsgdmFsdWUgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgaWYgKHZhbHVlICYmIEJMVUVQUklOVCBpbiB2YWx1ZSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIG9ialtrZXldID0gbmV3IERhdGFCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCBkaWN0PEJsdWVwcmludD4oKSk7XG5cbiAgICB0aGlzLmV4dGVuc2lvbnMgPSBkaWN0PGFueT4oKTtcbiAgICBhc3NpZ24odGhpcy5leHRlbnNpb25zLCB0dXJib2NoYXJnZShub3JtYWxpemVkKSk7XG4gIH1cblxuICBhcHBseSh0YXJnZXQ6IGFueSkge1xuICAgIGxldCBtZXRhOiBDbGFzc01ldGEgPSAodGFyZ2V0W0NMQVNTX01FVEFdID0gdGFyZ2V0W0NMQVNTX01FVEFdIHx8IG5ldyBDbGFzc01ldGEoKSk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uYXBwbHkodGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXModGFyZ2V0LCB0YXJnZXQsIG1ldGEpO1xuICAgIG1ldGEuYWRkTWl4aW4odGhpcyk7XG4gICAgbWV0YS5zZWFsKCk7XG4gICAgbWV0YS5yZXNlYWwodGFyZ2V0KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGUoT3JpZ2luYWw6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICBPcmlnaW5hbC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE9yaWdpbmFsLnByb3RvdHlwZSk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChtID0+IG0uZXh0ZW5kUHJvdG90eXBlKE9yaWdpbmFsKSk7XG4gICAgdGhpcy5leHRlbmRQcm90b3R5cGVPbnRvKE9yaWdpbmFsLCBPcmlnaW5hbCk7XG4gIH1cblxuICBleHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhTdWJjbGFzcy5wcm90b3R5cGUsIFBhcmVudC5wcm90b3R5cGUsIFN1YmNsYXNzW0NMQVNTX01FVEFdKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbih0aGlzKTtcbiAgfVxuXG4gIGV4dGVuZFN0YXRpYyhUYXJnZXQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRTdGF0aWMoVGFyZ2V0KSk7XG4gICAgdGhpcy5tZXJnZVByb3BlcnRpZXMoVGFyZ2V0LCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoVGFyZ2V0KSwgVGFyZ2V0W0NMQVNTX01FVEFdW0NMQVNTX01FVEFdKTtcbiAgICBUYXJnZXRbQ0xBU1NfTUVUQV0uYWRkU3RhdGljTWl4aW4odGhpcyk7XG4gIH1cblxuICBtZXJnZVByb3BlcnRpZXModGFyZ2V0OiBPYmplY3QsIHBhcmVudDogT2JqZWN0LCBtZXRhOiBDbGFzc01ldGEpIHtcbiAgICBpZiAobWV0YS5oYXNBcHBsaWVkTWl4aW4odGhpcykpIHJldHVybjtcbiAgICBtZXRhLmFkZEFwcGxpZWRNaXhpbih0aGlzKTtcblxuICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRNZXJnZWRQcm9wZXJ0eShrLCBwYXJlbnRba10pKTtcbiAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMuZm9yRWFjaChrID0+IG1ldGEuYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkoaywgW10pKTtcblxuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKFxuICAgICAgdGFyZ2V0LFxuICAgICAgJ2NvbmNhdGVuYXRlZFByb3BlcnRpZXMnXG4gICAgKTtcbiAgICBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgdmFsdWU6IG1ldGEuZ2V0TWVyZ2VkUHJvcGVydGllcygpIH0pLmRlZmluZSh0YXJnZXQsICdtZXJnZWRQcm9wZXJ0aWVzJyk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLmV4dGVuc2lvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGxldCBleHRlbnNpb246IEJsdWVwcmludCA9IHRoaXMuZXh0ZW5zaW9ucyFba2V5XTtcbiAgICAgIGxldCBkZXNjID0gZXh0ZW5zaW9uLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXkgYXMgc3RyaW5nLCBtZXRhKTtcbiAgICAgIGRlc2MuZGVmaW5lKHRhcmdldCwga2V5IGFzIHN0cmluZywgcGFyZW50KTtcbiAgICB9KTtcblxuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogUk9PVCB9KS5kZWZpbmUodGFyZ2V0LCAnX3N1cGVyJyBhcyBzdHJpbmcpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIEV4dGVuc2lvbiA9IE1peGluIHwgRXh0ZW5zaW9ucztcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZDxUIGV4dGVuZHMgR2xpbW1lck9iamVjdD4oXG4gIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4sXG4gIC4uLmV4dGVuc2lvbnM6IEV4dGVuc2lvbltdXG4pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+IHtcbiAgbGV0IFN1cGVyID0gUGFyZW50IGFzIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuXG4gIGxldCBTdWJjbGFzcyA9IGNsYXNzIGV4dGVuZHMgU3VwZXIge307XG4gIFN1YmNsYXNzW0NMQVNTX01FVEFdID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQoUGFyZW50W0NMQVNTX01FVEFdKTtcblxuICBsZXQgbWl4aW5zID0gZXh0ZW5zaW9ucy5tYXAodG9NaXhpbik7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5hZGRTdWJjbGFzcyhTdWJjbGFzcyBhcyBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KTtcbiAgbWl4aW5zLmZvckVhY2gobSA9PiBTdWJjbGFzc1tDTEFTU19NRVRBXS5hZGRNaXhpbihtKSk7XG5cbiAgQ2xhc3NNZXRhLmFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudCk7XG5cbiAgcmV0dXJuIFN1YmNsYXNzIGFzIGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGlua1N1YmNsYXNzZXMoUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gIFBhcmVudFtDTEFTU19NRVRBXS5nZXRTdWJjbGFzc2VzKCkuZm9yRWFjaCgoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pID0+IHtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5yZXNldChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUGFyZW50LnByb3RvdHlwZSk7XG5cbiAgICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MsIFBhcmVudCk7XG5cbiAgICAvLyByZWN1cnNlIGludG8gc3ViLXN1YmNsYXNzZXNcbiAgICByZWxpbmtTdWJjbGFzc2VzKFN1YmNsYXNzKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b01peGluKGV4dGVuc2lvbjogRXh0ZW5zaW9uKTogTWl4aW4ge1xuICBpZiAoZXh0ZW5zaW9uIGluc3RhbmNlb2YgTWl4aW4pIHJldHVybiBleHRlbnNpb247XG4gIGVsc2UgcmV0dXJuIG5ldyBNaXhpbihleHRlbnNpb24gYXMgT2JqZWN0LCBbXSk7XG59XG5cbmNsYXNzIFZhbHVlRGVzY3JpcHRvciBleHRlbmRzIERlc2NyaXB0b3Ige1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHdyaXRhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgdmFsdWU6IGFueTtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICB3cml0YWJsZSA9IHRydWUsXG4gICAgdmFsdWUsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLndyaXRhYmxlID0gd3JpdGFibGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgX2hvbWU/OiBhbnkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICB3cml0YWJsZTogdGhpcy53cml0YWJsZSxcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgd3JpdGFibGUgPSB0cnVlLFxuICAgIHZhbHVlLFxuICB9OiBQcm9wZXJ0eURlc2NyaXB0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBsZXQgeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9ID0gdGhpcztcblxuICAgIGlmIChjbGFzc01ldGEuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkoa2V5IGFzIHN0cmluZykpIHtcbiAgICAgIGNsYXNzTWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nLCB2YWx1ZSk7XG4gICAgICB2YWx1ZSA9IGNsYXNzTWV0YS5nZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKTtcbiAgICB9IGVsc2UgaWYgKGNsYXNzTWV0YS5oYXNNZXJnZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgY2xhc3NNZXRhLmFkZE1lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcsIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldE1lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHsgZW51bWVyYWJsZSwgY29uZmlndXJhYmxlLCB3cml0YWJsZSwgdmFsdWUgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFjY2Vzc29yQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHVibGljIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW47XG4gIGdldDogKCkgPT4gYW55O1xuICBzZXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIGdldCxcbiAgICBzZXQsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvciAmIHsgZ2V0OiBhbnk7IHNldDogYW55IH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGVudW1lcmFibGU7XG4gICAgdGhpcy5jb25maWd1cmFibGUgPSBjb25maWd1cmFibGU7XG4gICAgdGhpcy5nZXQgPSBnZXQ7XG4gICAgdGhpcy5zZXQgPSBzZXQ7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gbmV3IFZhbHVlRGVzY3JpcHRvcih7XG4gICAgICBlbnVtZXJhYmxlOiB0aGlzLmVudW1lcmFibGUsXG4gICAgICBjb25maWd1cmFibGU6IHRoaXMuY29uZmlndXJhYmxlLFxuICAgICAgZ2V0OiB0aGlzLmdldCxcbiAgICAgIHNldDogdGhpcy5zZXQsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgTWV0aG9kRGVzY3JpcHRvciBleHRlbmRzIFZhbHVlRGVzY3JpcHRvciB7XG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGhvbWU6IE9iamVjdCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB3cmFwTWV0aG9kKGhvbWUsIGtleSwgdGhpcy52YWx1ZSk7XG4gICAgc3VwZXIuZGVmaW5lKHRhcmdldCwga2V5LCBob21lKTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBEYXRhQmx1ZXByaW50IHtcbiAgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogTWV0aG9kRGVzY3JpcHRvciB7XG4gICAgbGV0IGRlc2MgPSBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBjbGFzc01ldGEpO1xuICAgIHJldHVybiBuZXcgTWV0aG9kRGVzY3JpcHRvcihkZXNjIGFzIFByb3BlcnR5RGVzY3JpcHRvcik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBNZXRob2QoaG9tZTogT2JqZWN0LCBtZXRob2ROYW1lOiBzdHJpbmcsIG9yaWdpbmFsOiAoLi4uYXJnczogYW55W10pID0+IGFueSkge1xuICBpZiAoISgobWV0aG9kTmFtZSBhcyBzdHJpbmcpIGluIGhvbWUpKSByZXR1cm4gbWF5YmVXcmFwKG9yaWdpbmFsKTtcblxuICBsZXQgc3VwZXJNZXRob2QgPSBob21lW21ldGhvZE5hbWVdO1xuXG4gIGxldCBmdW5jID0gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IHN1cGVyTWV0aG9kO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIChmdW5jIGFzIGFueSkuX193cmFwcGVkID0gdHJ1ZTtcblxuICByZXR1cm4gZnVuYztcbn1cblxuZnVuY3Rpb24gbWF5YmVXcmFwKG9yaWdpbmFsOiBGdW5jdGlvbikge1xuICBpZiAoJ19fd3JhcHBlZCcgaW4gb3JpZ2luYWwpIHJldHVybiBvcmlnaW5hbDtcblxuICByZXR1cm4gZnVuY3Rpb24odGhpczogR2xpbW1lck9iamVjdCwgLi4uYXJnczogYW55W10pIHtcbiAgICBpZiAoIXRoaXMpIHJldHVybiBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcblxuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG59XG4iXX0= |
@@ -315,2 +315,2 @@ 'use strict'; | ||
GlimmerObject.isClass = true; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBSSxBQUF5QixBQUFpQixBQUFFLEFBQU0sQUFBMkIsQUFBQzs7QUFDM0YsQUFBTyxBQUFRLEFBQUksQUFBRSxBQUFNLEFBQUUsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNuRSxBQUFPLEFBQVMsQUFBTSxBQUFJLEFBQVcsQUFBRSxBQUFPLEFBQUUsQUFBZ0IsQUFBRSxBQUFVLEFBQUUsQUFBTSxBQUFTLEFBQUM7O0FBSTlGLEFBQU8sQUFBRSxBQUFJLEFBQUUsQUFBTSxBQUFTLEFBQUM7O0FBRS9CLEFBQU8sQUFBRSxBQUFJLEFBQUUsQUFBTSxBQUFvQixBQUFDLEFBRTFDLEFBQU07O0FBTk4sTUFBTSxFQUFFLEFBQU8sQUFBRSxZQUFHLEFBQUssQUFBQztBQU1uQixNQUFNLEFBQVcsb0NBQUcsdUJBQXdCLEFBQUMsQUFBQztBQUVyRCxNQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDLEFBd0IxRCxBQUFNO3FCQUF5QixBQUFNLEtBQ25DLEFBQXNCO0FBQ3RCLEFBQXlCO0FBQ3pCLEFBQU07V0FBQyxBQUFHLEFBQUMsQUFDYixBQUFDOztBQUVELE1BQTBCLEFBQVEsQUFBSTt3QkFDaEIsR0FBRyxBQUFZLE9BQ2pDO2NBQU0sSUFBSSxBQUFLLE1BQUMsQUFBZ0QsQUFBQyxBQUFDLEFBQ3BFLEFBQUMsQUFDRjtBQUVELEFBQU07QUFMSixBQUFtQjs7a0JBTVg7YUFBYyxpQkFBRyxBQUFJLEFBQThCLEFBQUMsQUFDcEQ7YUFBZ0IsbUJBQUcsQUFBSSxBQUFPLEFBQUMsQUFDL0I7YUFBc0IseUJBQUcsQUFBSSxBQUFTLEFBQUMsQUFDdkM7YUFBeUIsNEJBQUcsQUFBSyxBQUFDLEFBQ2xDO2FBQWdCLG1CQUFHLEFB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QUFBQztBQUVELEFBQU07V0FBQyxBQUFvQixxQkFBQyxBQUF3QyxVQUNsRTtZQUFJLEFBQVEsV0FBRyxBQUFJLEtBQUMsQUFBVSxBQUFDLFlBQUMsQUFBbUIsQUFBRSxBQUFDLEFBQ3RELEFBQUUsQUFBQztZQUFDLENBQUMsQUFBUSxBQUFDLFVBQUMsQUFBTSxBQUFDLEFBRXRCLEFBQUcsQUFBQzthQUFDLElBQUksQUFBSSxRQUFJLEFBQVEsQUFBQyxVQUFDLEFBQUMsQUFDMUIsQUFBUTtxQkFBQyxBQUFJLE1BQUUsQUFBUSxTQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDakMsQUFBQyxBQUNIO0FBQUM7QUFNRCxBQUFJO1dBQUksQUFBQyxDQVVULEFBQUc7UUFBQyxBQUFXLEtBQ2IsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFHLEFBQUMsQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBRztRQUFDLEFBQVcsS0FBRSxBQUFVLE9BQ3pCLEFBQUk7YUFBQyxBQUFHLEFBQUMsT0FBRyxBQUFLLEFBQUMsQUFDbEIsQUFBSSxBQUFFLEFBQUMsQUFDVDtBQUFDO0FBRUQsQUFBYTtrQkFBQyxBQUFhLE9BQ3pCLEFBQU07MEJBQUMsQUFBSSxNQUFFLEFBQUssQUFBQyxBQUFDLEFBQ3BCLEFBQUksQUFBRSxBQUFDLEFBQ1Q7QUFBQztBQUVELEFBQU87Y0FBSSxBQUFDO0FBdEJaOztBQW5ETyxjQUFzQywwQ0FBaUIsQUFBWSxhQUFDLEFBQVUsV0FBQyxBQUFJLEFBQUMsQUFBQztBQUNyRixjQUFPLFVBQUcsQUFBSSxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWV0YSwgSW5uZXJSZWZlcmVuY2VGYWN0b3J5LCBQcm9wZXJ0eVJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRGljdCwgZGljdCwgYXNzaWduLCBpbml0aWFsaXplR3VpZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgTWl4aW4sIGV4dGVuZCBhcyBleHRlbmRDbGFzcywgdG9NaXhpbiwgcmVsaW5rU3ViY2xhc3Nlcywgd3JhcE1ldGhvZCB9IGZyb20gJy4vbWl4aW4nO1xuXG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGJ1bXAgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfQ0FDSEUgPSBmdW5jdGlvbiBFTVBUWV9DQUNIRSgpIHt9O1xuXG5jb25zdCBDTEFTU19NRVRBID0gJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0V2l0aE1peGlucyB7XG4gICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBDbGFzc01ldGE7XG4gIF9tZXRhOiBNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlV2l0aE1peGlucyB7XG4gIGNvbnN0cnVjdG9yOiBPYmplY3RXaXRoTWl4aW5zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+IHtcbiAgbmV3IDxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxPYmplY3Q+O1xuICBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD47XG4gIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGNyZWF0ZTxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgcmVvcGVuQ2xhc3M8VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQ7XG4gIG1ldGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0O1xuICBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZDtcbiAgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1cmJvY2hhcmdlPFQ+KG9iajogVCk6IFQge1xuICAvLyBmdW5jdGlvbiBEdW1teSgpIHt9XG4gIC8vIER1bW15LnByb3RvdHlwZSA9IG9iajtcbiAgcmV0dXJuIG9iajtcbn1cblxuYWJzdHJhY3QgY2xhc3MgU2VhbGVkTWV0YSBleHRlbmRzIE1ldGEge1xuICBhZGRSZWZlcmVuY2VUeXBlRm9yKC4uLl9hcmdzOiBhbnlbXSk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBtb2RpZnkgcmVmZXJlbmNlIHR5cGVzIG9uIGEgc2VhbGVkIG1ldGEnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xhc3NNZXRhIHtcbiAgcHJpdmF0ZSByZWZlcmVuY2VUeXBlcyA9IGRpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+KCk7XG4gIHByaXZhdGUgcHJvcGVydHlNZXRhZGF0YSA9IGRpY3Q8YW55PigpO1xuICBwcml2YXRlIGNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0PGFueVtdPigpO1xuICBwcml2YXRlIGhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzID0gZGljdDxPYmplY3Q+KCk7XG4gIHByaXZhdGUgaGFzTWVyZ2VkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIGFwcGxpZWRNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGF0aWNNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJjbGFzc2VzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+W10gPSBbXTtcbiAgcHJpdmF0ZSBzbG90czogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIEluc3RhbmNlTWV0YUNvbnN0cnVjdG9yOiBPcHRpb248dHlwZW9mIE1ldGE+ID0gbnVsbDtcblxuICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQ6IE9wdGlvbjxDbGFzc01ldGE+KSB7XG4gICAgbGV0IG1ldGEgPSBuZXcgdGhpcygpO1xuICAgIG1ldGEucmVzZXQocGFyZW50KTtcbiAgICByZXR1cm4gbWV0YTtcbiAgfVxuXG4gIHN0YXRpYyBmb3Iob2JqZWN0OiBPYmplY3RXaXRoTWl4aW5zIHwgSW5zdGFuY2VXaXRoTWl4aW5zKTogT3B0aW9uPENsYXNzTWV0YT4ge1xuICAgIGlmIChDTEFTU19NRVRBIGluIG9iamVjdCkgcmV0dXJuIChvYmplY3QgYXMgT2JqZWN0V2l0aE1peGlucylbQ0xBU1NfTUVUQV07XG4gICAgZWxzZSBpZiAob2JqZWN0LmNvbnN0cnVjdG9yKVxuICAgICAgcmV0dXJuIChvYmplY3QgYXMgSW5zdGFuY2VXaXRoTWl4aW5zKS5jb25zdHJ1Y3RvcltDTEFTU19NRVRBXSB8fCBudWxsO1xuICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpbml0KG9iamVjdDogR2xpbW1lck9iamVjdCwgYXR0cnM6IE9wdGlvbjxPYmplY3Q+KSB7XG4gICAgaWYgKHR5cGVvZiBhdHRycyAhPT0gJ29iamVjdCcgfHwgYXR0cnMgPT09IG51bGwpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBjb25jYXRQcm9wcyA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gY29uY2F0UHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgY29uY2F0ID0gY29uY2F0UHJvcHNbcHJvcF0uc2xpY2UoKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBjb25jYXQuY29uY2F0KGF0dHJzW3Byb3BdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBtZXJnZWRQcm9wcyA9IHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gbWVyZ2VkUHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBtZXJnZWRQcm9wc1twcm9wXSk7XG4gICAgICAgICAgb2JqZWN0W3Byb3BdID0gYXNzaWduKG1lcmdlZCwgYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5zdGF0aWNNaXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBhZGRNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLm1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGdldFN0YXRpY01peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNNaXhpbnM7XG4gIH1cblxuICBnZXRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMubWl4aW5zO1xuICB9XG5cbiAgYWRkQXBwbGllZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMuYXBwbGllZE1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGhhc0FwcGxpZWRNaXhpbihtaXhpbjogTWl4aW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIGdldEFwcGxpZWRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucztcbiAgfVxuXG4gIGhhc1N0YXRpY01peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucy5pbmRleE9mKG1peGluKSAhPT0gLTE7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldE1peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldFN0YXRpY01peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFN0YXRpYyhTdWJjbGFzcykpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIGFkZFN1YmNsYXNzKGNvbnN0cnVjdG9yOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5zdWJjbGFzc2VzLnB1c2goY29uc3RydWN0b3IpO1xuICB9XG5cbiAgZ2V0U3ViY2xhc3NlcygpOiBGdW5jdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5zdWJjbGFzc2VzO1xuICB9XG5cbiAgYWRkUHJvcGVydHlNZXRhZGF0YShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhW3Byb3BlcnR5XSA9IHZhbHVlO1xuICB9XG5cbiAgbWV0YWRhdGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eU1ldGFkYXRhW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGFkZFJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZywgdHlwZTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzW3Byb3BlcnR5XSA9IHR5cGU7XG4gIH1cblxuICBhZGRTbG90Rm9yKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNsb3RzLnB1c2gocHJvcGVydHkpO1xuICB9XG5cbiAgaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldENvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV07XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSBhcyBzdHJpbmdbXTtcbiAgfVxuXG4gIGFkZENvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSB0cnVlO1xuXG4gICAgaWYgKChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgbGV0IHZhbCA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0uY29uY2F0KHZhbHVlKTtcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBoYXNNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV07XG4gIH1cblxuICBnZXRNZXJnZWRQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5tZXJnZWRQcm9wZXJ0aWVzKSBhcyBzdHJpbmdbXTtcbiAgfVxuXG4gIGFkZE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBPYmplY3QpIHtcbiAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSB0cnVlO1xuXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBZb3UgcGFzc2VkIGluIFxcYCR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgKX1cXGAgYXMgdGhlIHZhbHVlIGZvciBcXGBmb29cXGAgYnV0IFxcYGZvb1xcYCBjYW5ub3QgYmUgYW4gQXJyYXlgXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICgocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLm1lcmdlZFByb3BlcnRpZXMgJiYgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSAmJiB2YWx1ZSkge1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IG1lcmdlTWVyZ2VkUHJvcGVydGllcyhcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgPT09IG51bGwgPyB2YWx1ZSA6IHZhbHVlIHx8IHt9O1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldFJlZmVyZW5jZVR5cGVzKCk6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlcztcbiAgfVxuXG4gIGdldFByb3BlcnR5TWV0YWRhdGEoKTogRGljdDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eU1ldGFkYXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBPcHRpb248Q2xhc3NNZXRhPikge1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZXMgPSBkaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PigpO1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YSA9IGRpY3QoKTtcbiAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0PGFueVtdPigpO1xuICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IGRpY3Q8T2JqZWN0PigpO1xuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXSA9IHBhcmVudC5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BdLnNsaWNlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHBhcmVudC5oYXNNZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQubWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcF0gPSBhc3NpZ24oe30sIHBhcmVudC5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdKTtcbiAgICAgIH1cblxuICAgICAgYXNzaWduKHRoaXMucmVmZXJlbmNlVHlwZXMsIHBhcmVudC5yZWZlcmVuY2VUeXBlcyk7XG4gICAgICBhc3NpZ24odGhpcy5wcm9wZXJ0eU1ldGFkYXRhLCBwYXJlbnQucHJvcGVydHlNZXRhZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcmVzZWFsKG9iajogT2JqZWN0KSB7XG4gICAgbGV0IG1ldGEgPSBNZXRhLmZvcihvYmopO1xuICAgIGxldCBmcmVzaCA9IG5ldyB0aGlzLkluc3RhbmNlTWV0YUNvbnN0cnVjdG9yIShvYmosIHt9KTtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXMgPSBtZXRhLmdldFJlZmVyZW5jZVR5cGVzKCk7XG4gICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuXG4gICAgdHVyYm9jaGFyZ2UoYXNzaWduKHJlZmVyZW5jZVR5cGVzLCB0aGlzLnJlZmVyZW5jZVR5cGVzKSk7XG4gICAgdHVyYm9jaGFyZ2UoYXNzaWduKHNsb3RzLCBmcmVzaC5nZXRTbG90cygpKSk7XG4gIH1cblxuICBzZWFsKCkge1xuICAgIGxldCByZWZlcmVuY2VUeXBlczogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4gPSB0dXJib2NoYXJnZShcbiAgICAgIGFzc2lnbih7fSwgdGhpcy5yZWZlcmVuY2VUeXBlcylcbiAgICApO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyk7XG4gICAgdHVyYm9jaGFyZ2UodGhpcy5tZXJnZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzICYmICF0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uKCkge307XG4gICAgfVxuXG4gICAgbGV0IHNsb3RzID0gdGhpcy5zbG90cztcblxuICAgIGNsYXNzIFNsb3RzIHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzbG90cy5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgIHRoaXNbbmFtZV0gPSBFTVBUWV9DQUNIRTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciA9IGNsYXNzIGV4dGVuZHMgU2VhbGVkTWV0YSB7XG4gICAgICBwcm90ZWN0ZWQgc2xvdHM6IFNsb3RzID0gbmV3IFNsb3RzKCk7XG4gICAgICBwdWJsaWMgcmVmZXJlbmNlVHlwZXM6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+ID0gcmVmZXJlbmNlVHlwZXM7XG5cbiAgICAgIGdldFJlZmVyZW5jZVR5cGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlcztcbiAgICAgIH1cblxuICAgICAgcmVmZXJlbmNlVHlwZUZvcihwcm9wZXJ0eTogc3RyaW5nKTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gfHwgUHJvcGVydHlSZWZlcmVuY2U7XG4gICAgICB9XG5cbiAgICAgIGdldFNsb3RzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zbG90cztcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdHVyYm9jaGFyZ2UodGhpcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VNZXJnZWRQcm9wZXJ0aWVzKGF0dHJzOiBPYmplY3QsIHBhcmVudDogT2JqZWN0KSB7XG4gIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIHBhcmVudCk7XG5cbiAgZm9yIChsZXQgcHJvcCBpbiBhdHRycykge1xuICAgIGlmIChwcm9wIGluIHBhcmVudCAmJiB0eXBlb2YgcGFyZW50W3Byb3BdID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBhdHRyc1twcm9wXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwTWV0aG9kKHBhcmVudCwgcHJvcCwgYXR0cnNbcHJvcF0pO1xuICAgICAgbWVyZ2VkW3Byb3BdID0gd3JhcHBlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVyZ2VkW3Byb3BdID0gYXR0cnNbcHJvcF07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlZDtcbn1cblxuZXhwb3J0IGNsYXNzIEluc3RhbmNlTWV0YSBleHRlbmRzIENsYXNzTWV0YSB7XG4gIHB1YmxpYyAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogQ2xhc3NNZXRhID0gQ2xhc3NNZXRhLmZyb21QYXJlbnQobnVsbCk7XG5cbiAgc3RhdGljIGZyb21QYXJlbnQocGFyZW50OiBPcHRpb248SW5zdGFuY2VNZXRhPik6IEluc3RhbmNlTWV0YSB7XG4gICAgcmV0dXJuIHN1cGVyLmZyb21QYXJlbnQocGFyZW50KSBhcyBJbnN0YW5jZU1ldGE7XG4gIH1cblxuICByZXNldChwYXJlbnQ6IEluc3RhbmNlTWV0YSkge1xuICAgIHN1cGVyLnJlc2V0KHBhcmVudCk7XG4gICAgaWYgKHBhcmVudCkgdGhpc1tDTEFTU19NRVRBXS5yZXNldChwYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICB9XG5cbiAgc2VhbCgpIHtcbiAgICBzdXBlci5zZWFsKCk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2xpbW1lck9iamVjdCB7XG4gIHN0YXRpYyAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogSW5zdGFuY2VNZXRhID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQobnVsbCk7XG4gIHN0YXRpYyBpc0NsYXNzID0gdHJ1ZTtcblxuICBzdGF0aWMgZXh0ZW5kKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZDxUPihleHRlbnNpb246IFQpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuICBzdGF0aWMgZXh0ZW5kKC4uLmV4dGVuc2lvbnM6IE9iamVjdFtdKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuXG4gIHN0YXRpYyBleHRlbmQodGhpczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgLi4uZXh0ZW5zaW9uczogYW55W10pIHtcbiAgICByZXR1cm4gZXh0ZW5kQ2xhc3ModGhpcywgLi4uZXh0ZW5zaW9ucyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlKGF0dHJzPzogT2JqZWN0IHwgbnVsbCk6IEdsaW1tZXJPYmplY3Qge1xuICAgIHJldHVybiBuZXcgdGhpcyhhdHRycyk7XG4gIH1cblxuICBzdGF0aWMgcmVvcGVuPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFByb3RvdHlwZSh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcblxuICAgIHJlbGlua1N1YmNsYXNzZXModGhpcyk7XG4gIH1cblxuICBzdGF0aWMgcmVvcGVuQ2xhc3M8VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQge1xuICAgIHRvTWl4aW4oZXh0ZW5zaW9ucykuZXh0ZW5kU3RhdGljKHRoaXMpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG5cbiAgc3RhdGljIG1ldGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzW0NMQVNTX01FVEFdLm1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHkpO1xuICAgIGlmICghdmFsdWUpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBtZXRhRm9yUHJvcGVydHkoKSBjb3VsZCBub3QgZmluZCBhIGNvbXB1dGVkIHByb3BlcnR5IHdpdGgga2V5ICcke3Byb3BlcnR5fScuYFxuICAgICAgKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBzdGF0aWMgZWFjaENvbXB1dGVkUHJvcGVydHkoY2FsbGJhY2s6IChzOiBzdHJpbmcsIG86IE9iamVjdCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGxldCBtZXRhZGF0YSA9IHRoaXNbQ0xBU1NfTUVUQV0uZ2V0UHJvcGVydHlNZXRhZGF0YSgpO1xuICAgIGlmICghbWV0YWRhdGEpIHJldHVybjtcblxuICAgIGZvciAobGV0IHByb3AgaW4gbWV0YWRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKHByb3AsIG1ldGFkYXRhW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICBfc3VwZXIgPSBST09UO1xuICBfbWV0YSA9IG51bGw7XG4gIF9ndWlkOiBudW1iZXI7XG5cbiAgaW5pdCgpIHt9XG5cbiAgY29uc3RydWN0b3IoYXR0cnM/OiBPYmplY3QgfCBudWxsKSB7XG4gICAgaWYgKGF0dHJzKSBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBHbGltbWVyT2JqZWN0KVtDTEFTU19NRVRBXS5pbml0KHRoaXMsIGF0dHJzIHx8IG51bGwpO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcbiAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXNba2V5XTtcbiAgfVxuXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNba2V5XSA9IHZhbHVlO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMoYXR0cnM6IE9iamVjdCkge1xuICAgIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgYnVtcCgpO1xuICB9XG5cbiAgZGVzdHJveSgpIHt9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBSSxBQUF5QixBQUFpQixBQUFFLEFBQU0sQUFBMkIsQUFBQzs7QUFDM0YsQUFBTyxBQUFRLEFBQUksQUFBRSxBQUFNLEFBQUUsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNuRSxBQUFPLEFBQVMsQUFBTSxBQUFJLEFBQVcsQUFBRSxBQUFPLEFBQUUsQUFBZ0IsQUFBRSxBQUFVLEFBQUUsQUFBTSxBQUFTLEFBQUM7O0FBSTlGLEFBQU8sQUFBRSxBQUFJLEFBQUUsQUFBTSxBQUFTLEFBQUM7O0FBRS9CLEFBQU8sQUFBRSxBQUFJLEFBQUUsQUFBTSxBQUFvQixBQUFDLEFBRTFDLEFBQU07O0FBTk4sTUFBTSxFQUFFLEFBQU8sQUFBRSxZQUFHLEFBQUssQUFBQztBQU1uQixNQUFNLEFBQVcsb0NBQUcsdUJBQXdCLEFBQUMsQUFBQztBQUVyRCxNQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDLEFBd0IxRCxBQUFNO3FCQUF5QixBQUFNLEtBQ25DLEFBQXNCO0FBQ3RCLEFBQXlCO0FBQ3pCO1dBQU8sQUFBRyxBQUFDLEFBQ2IsQUFBQzs7QUFFRCxNQUEwQixBQUFRLEFBQUk7d0JBQ2hCLEdBQUcsQUFBWSxPQUNqQztjQUFNLElBQUksQUFBSyxNQUFDLEFBQWdELEFBQUMsQUFBQyxBQUNwRSxBQUFDLEFBQ0Y7QUFFRCxBQUFNO0FBTEosQUFBbUI7O2tCQU1YO2FBQWMsaUJBQUcsQUFBSSxBQUE4QixBQUFDLEFBQ3BEO2FBQWdCLG1CQUFHLEFBQUksQUFBTyxBQUFDLEFBQy9CO2FBQXNCLHlCQUFHLEFBQUksQUFBUyxBQUFDLEFBQ3ZDO2FBQXlCLDRCQUFHLEFBQUssQUFBQyxBQUNsQzthQUFnQixtQkFBRyxBQUFJLEFB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Y3RvcnksIFByb3BlcnR5UmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBEaWN0LCBkaWN0LCBhc3NpZ24sIGluaXRpYWxpemVHdWlkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBNaXhpbiwgZXh0ZW5kIGFzIGV4dGVuZENsYXNzLCB0b01peGluLCByZWxpbmtTdWJjbGFzc2VzLCB3cmFwTWV0aG9kIH0gZnJvbSAnLi9taXhpbic7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmltcG9ydCB7IFJPT1QgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYnVtcCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbmV4cG9ydCBjb25zdCBFTVBUWV9DQUNIRSA9IGZ1bmN0aW9uIEVNUFRZX0NBQ0hFKCkge307XG5cbmNvbnN0IENMQVNTX01FVEEgPSAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JztcblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RXaXRoTWl4aW5zIHtcbiAgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YTtcbiAgX21ldGE6IE1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VXaXRoTWl4aW5zIHtcbiAgY29uc3RydWN0b3I6IE9iamVjdFdpdGhNaXhpbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4ge1xuICBuZXcgPFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgZXh0ZW5kKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGV4dGVuZDxUPihleHRlbnNpb246IFQpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPjtcbiAgZXh0ZW5kKC4uLmV4dGVuc2lvbnM6IE9iamVjdFtdKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8T2JqZWN0PjtcbiAgY3JlYXRlPFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgcmVvcGVuPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkO1xuICByZW9wZW5DbGFzczxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Q7XG4gIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkO1xuICAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogSW5zdGFuY2VNZXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVyYm9jaGFyZ2U8VD4ob2JqOiBUKTogVCB7XG4gIC8vIGZ1bmN0aW9uIER1bW15KCkge31cbiAgLy8gRHVtbXkucHJvdG90eXBlID0gb2JqO1xuICByZXR1cm4gb2JqO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBTZWFsZWRNZXRhIGV4dGVuZHMgTWV0YSB7XG4gIGFkZFJlZmVyZW5jZVR5cGVGb3IoLi4uX2FyZ3M6IGFueVtdKTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IG1vZGlmeSByZWZlcmVuY2UgdHlwZXMgb24gYSBzZWFsZWQgbWV0YScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbGFzc01ldGEge1xuICBwcml2YXRlIHJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgcHJpdmF0ZSBwcm9wZXJ0eU1ldGFkYXRhID0gZGljdDxhbnk+KCk7XG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gIHByaXZhdGUgaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcbiAgcHJpdmF0ZSBoYXNNZXJnZWRQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHByaXZhdGUgbWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgYXBwbGllZE1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN0YXRpY01peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN1YmNsYXNzZXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSA9IFtdO1xuICBwcml2YXRlIHNsb3RzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgSW5zdGFuY2VNZXRhQ29uc3RydWN0b3I6IE9wdGlvbjx0eXBlb2YgTWV0YT4gPSBudWxsO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICBsZXQgbWV0YSA9IG5ldyB0aGlzKCk7XG4gICAgbWV0YS5yZXNldChwYXJlbnQpO1xuICAgIHJldHVybiBtZXRhO1xuICB9XG5cbiAgc3RhdGljIGZvcihvYmplY3Q6IE9iamVjdFdpdGhNaXhpbnMgfCBJbnN0YW5jZVdpdGhNaXhpbnMpOiBPcHRpb248Q2xhc3NNZXRhPiB7XG4gICAgaWYgKENMQVNTX01FVEEgaW4gb2JqZWN0KSByZXR1cm4gKG9iamVjdCBhcyBPYmplY3RXaXRoTWl4aW5zKVtDTEFTU19NRVRBXTtcbiAgICBlbHNlIGlmIChvYmplY3QuY29uc3RydWN0b3IpXG4gICAgICByZXR1cm4gKG9iamVjdCBhcyBJbnN0YW5jZVdpdGhNaXhpbnMpLmNvbnN0cnVjdG9yW0NMQVNTX01FVEFdIHx8IG51bGw7XG4gICAgZWxzZSByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGluaXQob2JqZWN0OiBHbGltbWVyT2JqZWN0LCBhdHRyczogT3B0aW9uPE9iamVjdD4pIHtcbiAgICBpZiAodHlwZW9mIGF0dHJzICE9PSAnb2JqZWN0JyB8fCBhdHRycyA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgbGV0IGNvbmNhdFByb3BzID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBjb25jYXRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBjb25jYXQgPSBjb25jYXRQcm9wc1twcm9wXS5zbGljZSgpO1xuICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGNvbmNhdC5jb25jYXQoYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgbGV0IG1lcmdlZFByb3BzID0gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBtZXJnZWRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIG1lcmdlZFByb3BzW3Byb3BdKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBhc3NpZ24obWVyZ2VkLCBhdHRyc1twcm9wXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLnN0YXRpY01peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGFkZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMubWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgZ2V0U3RhdGljTWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucztcbiAgfVxuXG4gIGdldE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5taXhpbnM7XG4gIH1cblxuICBhZGRBcHBsaWVkTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5hcHBsaWVkTWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgaGFzQXBwbGllZE1peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpZWRNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICB9XG5cbiAgZ2V0QXBwbGllZE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zO1xuICB9XG5cbiAgaGFzU3RhdGljTWl4aW4obWl4aW46IE1peGluKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUFsbE1peGlucyhTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0TWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0U3RhdGljTWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kU3RhdGljKFN1YmNsYXNzKSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG5cbiAgYWRkU3ViY2xhc3MoY29uc3RydWN0b3I6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLnN1YmNsYXNzZXMucHVzaChjb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBnZXRTdWJjbGFzc2VzKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViY2xhc3NlcztcbiAgfVxuXG4gIGFkZFByb3BlcnR5TWV0YWRhdGEocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgfVxuXG4gIG1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV07XG4gIH1cblxuICBhZGRSZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcsIHR5cGU6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gPSB0eXBlO1xuICB9XG5cbiAgYWRkU2xvdEZvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgdGhpcy5zbG90cy5wdXNoKHByb3BlcnR5KTtcbiAgfVxuXG4gIGhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmICgocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCB2YWwgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldLmNvbmNhdCh2YWx1ZSk7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaGFzTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWVyZ2VkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogT2JqZWN0KSB7XG4gICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IHBhc3NlZCBpbiBcXGAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgICl9XFxgIGFzIHRoZSB2YWx1ZSBmb3IgXFxgZm9vXFxgIGJ1dCBcXGBmb29cXGAgY2Fubm90IGJlIGFuIEFycmF5YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzICYmIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSBtZXJnZU1lcmdlZFByb3BlcnRpZXMoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlID09PSBudWxsID8gdmFsdWUgOiB2YWx1ZSB8fCB7fTtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZlcmVuY2VUeXBlcygpOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gIH1cblxuICBnZXRQcm9wZXJ0eU1ldGFkYXRhKCk6IERpY3Q8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGEgPSBkaWN0KCk7XG4gICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHBhcmVudC5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0gPSBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXS5zbGljZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzTWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50Lm1lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdID0gYXNzaWduKHt9LCBwYXJlbnQubWVyZ2VkUHJvcGVydGllc1twcm9wXSk7XG4gICAgICB9XG5cbiAgICAgIGFzc2lnbih0aGlzLnJlZmVyZW5jZVR5cGVzLCBwYXJlbnQucmVmZXJlbmNlVHlwZXMpO1xuICAgICAgYXNzaWduKHRoaXMucHJvcGVydHlNZXRhZGF0YSwgcGFyZW50LnByb3BlcnR5TWV0YWRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2VhbChvYmo6IE9iamVjdCkge1xuICAgIGxldCBtZXRhID0gTWV0YS5mb3Iob2JqKTtcbiAgICBsZXQgZnJlc2ggPSBuZXcgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciEob2JqLCB7fSk7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzID0gbWV0YS5nZXRSZWZlcmVuY2VUeXBlcygpO1xuICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcblxuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihyZWZlcmVuY2VUeXBlcywgdGhpcy5yZWZlcmVuY2VUeXBlcykpO1xuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihzbG90cywgZnJlc2guZ2V0U2xvdHMoKSkpO1xuICB9XG5cbiAgc2VhbCgpIHtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXM6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+ID0gdHVyYm9jaGFyZ2UoXG4gICAgICBhc3NpZ24oe30sIHRoaXMucmVmZXJlbmNlVHlwZXMpXG4gICAgKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMubWVyZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyAmJiAhdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbigpIHt9O1xuICAgIH1cblxuICAgIGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cbiAgICBjbGFzcyBTbG90cyB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc2xvdHMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICB0aGlzW25hbWVdID0gRU1QVFlfQ0FDSEU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIFNlYWxlZE1ldGEge1xuICAgICAgcHJvdGVjdGVkIHNsb3RzOiBTbG90cyA9IG5ldyBTbG90cygpO1xuICAgICAgcHVibGljIHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHJlZmVyZW5jZVR5cGVzO1xuXG4gICAgICBnZXRSZWZlcmVuY2VUeXBlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgICB9XG5cbiAgICAgIHJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZyk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldIHx8IFByb3BlcnR5UmVmZXJlbmNlO1xuICAgICAgfVxuXG4gICAgICBnZXRTbG90cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHM7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHR1cmJvY2hhcmdlKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWVyZ2VkUHJvcGVydGllcyhhdHRyczogT2JqZWN0LCBwYXJlbnQ6IE9iamVjdCkge1xuICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBwYXJlbnQpO1xuXG4gIGZvciAobGV0IHByb3AgaW4gYXR0cnMpIHtcbiAgICBpZiAocHJvcCBpbiBwYXJlbnQgJiYgdHlwZW9mIHBhcmVudFtwcm9wXSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgYXR0cnNbcHJvcF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCB3cmFwcGVkID0gd3JhcE1ldGhvZChwYXJlbnQsIHByb3AsIGF0dHJzW3Byb3BdKTtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IHdyYXBwZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IGF0dHJzW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZU1ldGEgZXh0ZW5kcyBDbGFzc01ldGEge1xuICBwdWJsaWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YSA9IENsYXNzTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPEluc3RhbmNlTWV0YT4pOiBJbnN0YW5jZU1ldGEge1xuICAgIHJldHVybiBzdXBlci5mcm9tUGFyZW50KHBhcmVudCkgYXMgSW5zdGFuY2VNZXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBJbnN0YW5jZU1ldGEpIHtcbiAgICBzdXBlci5yZXNldChwYXJlbnQpO1xuICAgIGlmIChwYXJlbnQpIHRoaXNbQ0xBU1NfTUVUQV0ucmVzZXQocGFyZW50W0NMQVNTX01FVEFdKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgc3VwZXIuc2VhbCgpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsaW1tZXJPYmplY3Qge1xuICBzdGF0aWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuICBzdGF0aWMgaXNDbGFzcyA9IHRydWU7XG5cbiAgc3RhdGljIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcblxuICBzdGF0aWMgZXh0ZW5kKHRoaXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIC4uLmV4dGVuc2lvbnM6IGFueVtdKSB7XG4gICAgcmV0dXJuIGV4dGVuZENsYXNzKHRoaXMsIC4uLmV4dGVuc2lvbnMpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShhdHRycz86IE9iamVjdCB8IG51bGwpOiBHbGltbWVyT2JqZWN0IHtcbiAgICByZXR1cm4gbmV3IHRoaXMoYXR0cnMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRQcm90b3R5cGUodGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG5cbiAgICByZWxpbmtTdWJjbGFzc2VzKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFN0YXRpYyh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIHN0YXRpYyBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgbGV0IHZhbHVlID0gdGhpc1tDTEFTU19NRVRBXS5tZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5KTtcbiAgICBpZiAoIXZhbHVlKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWV0YUZvclByb3BlcnR5KCkgY291bGQgbm90IGZpbmQgYSBjb21wdXRlZCBwcm9wZXJ0eSB3aXRoIGtleSAnJHtwcm9wZXJ0eX0nLmBcbiAgICAgICk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBsZXQgbWV0YWRhdGEgPSB0aGlzW0NMQVNTX01FVEFdLmdldFByb3BlcnR5TWV0YWRhdGEoKTtcbiAgICBpZiAoIW1ldGFkYXRhKSByZXR1cm47XG5cbiAgICBmb3IgKGxldCBwcm9wIGluIG1ldGFkYXRhKSB7XG4gICAgICBjYWxsYmFjayhwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgX3N1cGVyID0gUk9PVDtcbiAgX21ldGEgPSBudWxsO1xuICBfZ3VpZCE6IG51bWJlcjsgLy8gU2V0IGJ5IGluaXRpYWxpemVHdWlkKHRoaXMpIGluIGNvbnN0cnVjdG9yXG5cbiAgaW5pdCgpIHt9XG5cbiAgY29uc3RydWN0b3IoYXR0cnM/OiBPYmplY3QgfCBudWxsKSB7XG4gICAgaWYgKGF0dHJzKSBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBHbGltbWVyT2JqZWN0KVtDTEFTU19NRVRBXS5pbml0KHRoaXMsIGF0dHJzIHx8IG51bGwpO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcbiAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXNba2V5XTtcbiAgfVxuXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNba2V5XSA9IHZhbHVlO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMoYXR0cnM6IE9iamVjdCkge1xuICAgIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgYnVtcCgpO1xuICB9XG5cbiAgZGVzdHJveSgpIHt9XG59XG4iXX0= |
@@ -30,2 +30,2 @@ 'use strict'; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxNQUFNLEFBQWlCLG9CQUFHLEFBQW1DLEFBQUMsQUFFOUQsQUFBTTtNQUFPLEFBQWEsb0RBQ3hCO1FBQUksQUFBZSw4QkFFZixBQUFNO2VBQUMsQUFBSSxBQUFDLEFBQ2QsQUFBQztBQUZELE1BR0csQUFBUSxBQUFFLFdBQ1YsQUFBTyxRQUFDLEFBQWEsQUFBQyxpQkFBRyxDQUFDLEFBQUMsQUFBQyxBQUVqQyxBQUFFLEFBQUM7UUFBQyxBQUFlLEFBQUMsaUJBQUMsQUFBQyxBQUNwQixBQUFNO2VBQUMsdUJBQXVCLEFBQWMsTUFDMUMsQUFBTTttQkFBQyxBQUFpQixrQkFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQVEsQUFBRSxBQUFDLEFBQUMsQUFDakQsQUFBQyxBQUFDLEFBQ0o7QUFBQztBQUVELEFBQU07V0FBQyx5QkFDTCxBQUFNO2VBQUMsQUFBSSxBQUFDLEFBQ2QsQUFBQyxBQUFDLEFBQ0o7QUFBQyxBQUFDLEFBQUUsQUFBQztBQWpCRSxBQUFzQixBQW1CN0IsQUFBTSxDQW5Cd0I7Y0FtQlQsR0FBRyxBQUFZLE9BQUcsQUFBQztBQUN2QyxBQUFZLEtBQUMsQUFBVSxhQUFHLEFBQUssQUFBQyxBQUVqQyxBQUFNO2tCQUFtQixBQUFjLE1BQ3JDLEFBQUUsQUFBQztRQUFDLEFBQUksS0FBQyxBQUFZLEFBQUMsa0JBQUssQUFBUyxBQUFDLFdBQUMsQUFBQyxBQUNyQyxBQUFJO2FBQUMsQUFBWSxBQUFDLGdCQUFHLEFBQWEsY0FBQyxBQUFJLEFBQUMsQUFBQyxBQUMzQyxBQUFDO0FBQ0QsQUFBTTtXQUFDLEFBQUksS0FBQyxBQUFZLEFBQUMsQUFBQyxBQUM1QixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSEFTX1NVUEVSX1BBVFRFUk4gPSAvXFwuKF9zdXBlcnxjYWxsXFwodGhpc3xhcHBseVxcKHRoaXMpLztcblxuZXhwb3J0IGNvbnN0IGNoZWNrSGFzU3VwZXIgPSAoZnVuY3Rpb24oKSB7XG4gIGxldCBzb3VyY2VBdmFpbGFibGUgPVxuICAgIGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgICAgLnRvU3RyaW5nKClcbiAgICAgIC5pbmRleE9mKCdyZXR1cm4gdGhpcycpID4gLTE7XG5cbiAgaWYgKHNvdXJjZUF2YWlsYWJsZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gSEFTX1NVUEVSX1BBVFRFUk4udGVzdChmdW5jLnRvU3RyaW5nKCkpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn0pKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBST09UKC4uLl9hcmdzOiBhbnlbXSkge31cbihST09UIGFzIGFueSkuX19oYXNTdXBlciA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzU3VwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgaWYgKGZ1bmNbJ19faGFzU3VwZXInXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZnVuY1snX19oYXNTdXBlciddID0gY2hlY2tIYXNTdXBlcihmdW5jKTtcbiAgfVxuICByZXR1cm4gZnVuY1snX19oYXNTdXBlciddO1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxNQUFNLEFBQWlCLG9CQUFHLEFBQW1DLEFBQUMsQUFFOUQsQUFBTTtNQUFPLEFBQWEsb0RBQ3hCO1FBQUksQUFBZSw4QkFFZjtlQUFPLEFBQUksQUFBQyxBQUNkLEFBQUM7QUFGRCxNQUdHLEFBQVEsQUFBRSxXQUNWLEFBQU8sUUFBQyxBQUFhLEFBQUMsaUJBQUcsQ0FBQyxBQUFDLEFBQUMsQUFFakM7UUFBSSxBQUFlLGlCQUFFLEFBQ25CO2VBQU8sdUJBQXVCLEFBQWMsTUFDMUM7bUJBQU8sQUFBaUIsa0JBQUMsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFRLEFBQUUsQUFBQyxBQUFDLEFBQ2pELEFBQUMsQUFBQztBQUNIO0FBRUQ7V0FBTyx5QkFDTDtlQUFPLEFBQUksQUFBQyxBQUNkLEFBQUMsQUFBQyxBQUNKO0FBQUMsQUFBQyxBQUFFLEFBQUM7QUFqQkUsQUFBc0IsQUFtQjdCLEFBQU0sQ0FuQndCO2NBbUJULEdBQUcsQUFBWSxPQUFHLEFBQUM7QUFDdkMsQUFBWSxLQUFDLEFBQVUsYUFBRyxBQUFLLEFBQUMsQUFFakMsQUFBTTtrQkFBbUIsQUFBYyxNQUNyQztRQUFJLEFBQUksS0FBQyxBQUFZLEFBQUMsa0JBQUssQUFBUyxXQUFFLEFBQ3BDLEFBQUk7YUFBQyxBQUFZLEFBQUMsZ0JBQUcsQUFBYSxjQUFDLEFBQUksQUFBQyxBQUFDLEFBQzFDO0FBQ0Q7V0FBTyxBQUFJLEtBQUMsQUFBWSxBQUFDLEFBQUMsQUFDNUIsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEhBU19TVVBFUl9QQVRURVJOID0gL1xcLihfc3VwZXJ8Y2FsbFxcKHRoaXN8YXBwbHlcXCh0aGlzKS87XG5cbmV4cG9ydCBjb25zdCBjaGVja0hhc1N1cGVyID0gKGZ1bmN0aW9uKCkge1xuICBsZXQgc291cmNlQXZhaWxhYmxlID1cbiAgICBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAgIC50b1N0cmluZygpXG4gICAgICAuaW5kZXhPZigncmV0dXJuIHRoaXMnKSA+IC0xO1xuXG4gIGlmIChzb3VyY2VBdmFpbGFibGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcihmdW5jOiBGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIEhBU19TVVBFUl9QQVRURVJOLnRlc3QoZnVuYy50b1N0cmluZygpKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG59KSgpO1xuXG5leHBvcnQgZnVuY3Rpb24gUk9PVCguLi5fYXJnczogYW55W10pIHt9XG4oUk9PVCBhcyBhbnkpLl9faGFzU3VwZXIgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gIGlmIChmdW5jWydfX2hhc1N1cGVyJ10gPT09IHVuZGVmaW5lZCkge1xuICAgIGZ1bmNbJ19faGFzU3VwZXInXSA9IGNoZWNrSGFzU3VwZXIoZnVuYyk7XG4gIH1cbiAgcmV0dXJuIGZ1bmNbJ19faGFzU3VwZXInXTtcbn1cbiJdfQ== |
@@ -94,2 +94,4 @@ "use strict"; | ||
this.accessor = accessor; | ||
this.enumerable = false; | ||
this.configurable = false; | ||
} | ||
@@ -212,2 +214,2 @@ | ||
function observer() {} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztRQWdNeUI7UUFlQSxBQUFHLEFBQVk7O0FBL014QyxBQUFPLEFBQUUsQUFBMEIsQUFBRSxBQUFJLEFBQUUsQUFBTSxBQUEyQixBQUFDOztBQUM3RSxBQUFPLEFBQUUsQUFBVyxBQUFhLEFBQU0sQUFBVSxBQUFDOztBQUNsRCxBQUFPLEFBQWMsQUFBUyxBQUFFLEFBQU0sQUFBUyxBQUFDLEFBeUJoRCxBQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQXlCOzs7K0JBS2pCLEFBQTRCLFVBQ3RDLEFBQUssQUFBRSxBQUFDO1lBRGdDLDJFQUFtQixBQUFFOzs7O3FEQUZ2RDs7Y0FBUSxXQUFXLEFBQUUsQUFBQyxBQUk1QixBQUFJO2NBQUMsQUFBUSxXQUFHLEFBQVEsQUFBQyxBQUN6QixBQUFJO2NBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO2VBRUQsQUFBVTs7O2lFQUFDLEFBQWUsU0FBRSxBQUFXLEtBQUUsQUFBb0IsV0FDM0QsQUFBUztrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBMEIsaURBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUFDLEFBQy9FLEFBQVM7a0JBQUMsQUFBbUIsb0JBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQyxBQUNsRCxBQUFTO2tCQUFDLEFBQVUsV0FBQyxBQUFHLEFBQUMsQUFBQyxBQUMxQixBQUFNO2VBQUMsSUFBSSxBQUFRLFNBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ3JDLEFBQUMsQUFFRCxBQUFROzs7Z0NBQUMsK0JBQ1AsQUFBSTs4RkFETSxBQUFlOzs7O2FBQ3BCLEFBQUksYUFBUyxBQUFHLGlCQUFDLEFB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Q0o7K0ZBRDBCLEFBQVc7Ozs7UUFDakMsQUFBSSxPQUFxQixBQUFJLEtBQUMsQUFBRyxBQUFFLEFBQUMsQUFDeEM7UUFBSSxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBRWhCLEFBQUUsQUFBQztRQUFDLE9BQU8sQUFBSSxTQUFLLEFBQVUsQUFBQyxZQUFDLEFBQUMsQUFDL0IsQUFBTTs7OzJCQUFLLEFBQWlCO2lCQUFyQixBQUFzQixBQUMzQixBQUFHLEFBQUUsQUFBdUQsQUFDN0QsQUFBQztZQUFDLEFBQVEsQUFBQyxxQkFBRyxBQUFJLEFBQUMsQUFBQyxBQUN2QixBQUFDLEFBQUMsQUFBSTtlQUFLLE9BQU8sQUFBSSxTQUFLLEFBQVEsQUFBQyxVQUFDLEFBQUMsQUFDcEMsQUFBTTs7O2VBQUMsYUFBSSxBQUFpQixrQkFBQyxBQUEwQixBQUFDLE9BQUMsQUFBUSxBQUFDLHNCQUQ3RCxBQUFFLEFBQUMsQUFDNkQsQUFBSSxBQUFDLEFBQUMsQUFDN0UsQUFBQyxBQUFDLEFBQUk7V0FBQyxBQUFDLEFBQ047Y0FBTSxJQUFJLEFBQVMsVUFBQyxBQUEyRCxBQUFDLEFBQUMsQUFDbkYsQUFBQyxBQUNILEFBQUM7O0FBRUQsQUFBTTtvQkFBcUMsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50LCBNZXRhIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBFTVBUWV9DQUNIRSwgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgRGVzY3JpcHRvciwgQmx1ZXByaW50IH0gZnJvbSAnLi9taXhpbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRHZXRDYWxsYmFjayB7XG4gICgpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjayB7XG4gIChrZXk6IHN0cmluZyk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKHZhbDogYW55KTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcsIHZhbDogYW55KTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkRGVzY3JpcHRvciB7XG4gIGdldD86IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrO1xuICBzZXQ/OiBDb21wdXRlZFNldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRTZXRDYWxsYmFjaztcbn1cblxudHlwZSBDb21wdXRlZEFyZ3VtZW50ID0gQ29tcHV0ZWRHZXRDYWxsYmFjayB8IENvbXB1dGVkRGVzY3JpcHRvcjtcblxuZXhwb3J0IGNsYXNzIENvbXB1dGVkQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yO1xuICBwcml2YXRlIGRlcHM6IHN0cmluZ1tdW107XG4gIHByaXZhdGUgbWV0YWRhdGE6IE9iamVjdCA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3IsIGRlcHM6IHN0cmluZ1tdW10gPSBbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIHRoaXMuZGVwcyA9IGRlcHM7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgY2xhc3NNZXRhLmFkZFJlZmVyZW5jZVR5cGVGb3Ioa2V5LCBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludChrZXksIHRoaXMuZGVwcykpO1xuICAgIGNsYXNzTWV0YS5hZGRQcm9wZXJ0eU1ldGFkYXRhKGtleSwgdGhpcy5tZXRhZGF0YSk7XG4gICAgY2xhc3NNZXRhLmFkZFNsb3RGb3Ioa2V5KTtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkKHRoaXMuYWNjZXNzb3IpO1xuICB9XG5cbiAgcHJvcGVydHkoLi4ucGF0aHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5kZXBzID0gcGF0aHMubWFwKGQgPT4gZC5zcGxpdCgnLicpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG1ldGEob2JqZWN0OiBPYmplY3QpIHtcbiAgICB0aGlzLm1ldGFkYXRhID0gb2JqZWN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdm9sYXRpbGUoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuY2xhc3MgQ29tcHV0ZWQgaW1wbGVtZW50cyBEZXNjcmlwdG9yIHtcbiAgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgY29uZmlndXJhYmxlOiBib29sZWFuO1xuXG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYycgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3IpIHtcbiAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gIH1cblxuICBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHdyYXBBY2Nlc3Nvcihob21lLCBrZXksIHRoaXMuYWNjZXNzb3IpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cmFwQWNjZXNzb3IoXG4gIGhvbWU6IE9iamVjdCxcbiAgYWNjZXNzb3JOYW1lOiBzdHJpbmcsXG4gIF9kZXNjOiBDb21wdXRlZERlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB7XG4gIGxldCBzdXBlckRlc2MgPSBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoaG9tZSwgYWNjZXNzb3JOYW1lKTtcblxuICBsZXQgb3JpZ2luYWxHZXQ6IENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIGxldCBvcmlnaW5hbFNldDogQ29tcHV0ZWRTZXRDYWxsYmFjaztcblxuICBsZXQgZGVzYzogUHJvcGVydHlEZXNjcmlwdG9yID0ge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9O1xuXG4gIGxldCBnZXQgPSBfZGVzYy5nZXQ7XG5cbiAgaWYgKGdldCAmJiBnZXQubGVuZ3RoID4gMCkge1xuICAgIG9yaWdpbmFsR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKGdldCBhcyBhbnkpLmNhbGwodGhpcywgYWNjZXNzb3JOYW1lKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsR2V0ID0gX2Rlc2MuZ2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgc2V0ID0gX2Rlc2Muc2V0O1xuXG4gIGlmIChzZXQgJiYgc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICBvcmlnaW5hbFNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgcmV0dXJuIChzZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSwgdmFsdWUpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luYWxTZXQgPSBfZGVzYy5zZXQgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgfVxuXG4gIGxldCBjYWNoZUdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGlmIChNZXRhLmV4aXN0cyh0aGlzKSkge1xuICAgICAgbGV0IHNsb3QgPSBNZXRhLmZvcih0aGlzKS5nZXRTbG90cygpW2FjY2Vzc29yTmFtZV07XG4gICAgICBpZiAoc2xvdCAhPT0gRU1QVFlfQ0FDSEUpIHJldHVybiBzbG90O1xuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW5hbEdldC5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIGxldCBjYWNoZVNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgaWYgKG9yaWdpbmFsU2V0KSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICAgIGxldCByZXQgPSBvcmlnaW5hbFNldC5jYWxsKHRoaXMsIHZhbHVlKTtcblxuICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSByZXQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSBzbG90c1thY2Nlc3Nvck5hbWVdID0gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghc3VwZXJEZXNjIHx8ICd2YWx1ZScgaW4gc3VwZXJEZXNjKSB7XG4gICAgZGVzYy5nZXQgPSBjYWNoZUdldDtcbiAgICBkZXNjLnNldCA9IGNhY2hlU2V0O1xuICAgIHJldHVybiBkZXNjO1xuICB9XG5cbiAgZGVzYy5nZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuZ2V0LmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVHZXQuY2FsbCh0aGlzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIGRlc2Muc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWw6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MgYXMgYW55KS5zZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlU2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBkZXNjO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdDogYW55LCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKTtcbiAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHN1YmplY3QpO1xuICB3aGlsZSAodHlwZW9mIHBkID09PSAndW5kZWZpbmVkJyAmJiBwcm90byAhPT0gbnVsbCkge1xuICAgIHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbmFtZSk7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiBwZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKGRlc2M6IENvbXB1dGVkRGVzY3JpcHRvcik6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKFxuICBnZXR0ZXI6IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrXG4pOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSk6IENvbXB1dGVkQmx1ZXByaW50O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pIHtcbiAgbGV0IGxhc3Q6IENvbXB1dGVkQXJndW1lbnQgPSBhcmdzLnBvcCgpO1xuICBsZXQgZGVwcyA9IGFyZ3M7XG5cbiAgaWYgKHR5cGVvZiBsYXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludCh7XG4gICAgICBnZXQ6IGxhc3QgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2ssXG4gICAgfSkucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGxhc3QgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludChsYXN0IGFzIENvbXB1dGVkRGVzY3JpcHRvcikucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29tcHV0ZWQgZXhwZWN0cyBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCBhcyBsYXN0IGFyZ3VtZW50Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVyKC4uLl9hcmdzOiBhbnlbXSkge31cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztRQWtNeUI7UUFlQSxBQUFHLEFBQVk7O0FBak54QyxBQUFPLEFBQUUsQUFBMEIsQUFBRSxBQUFJLEFBQUUsQUFBTSxBQUEyQixBQUFDOztBQUM3RSxBQUFPLEFBQUUsQUFBVyxBQUFhLEFBQU0sQUFBVSxBQUFDOztBQUNsRCxBQUFPLEFBQWMsQUFBUyxBQUFFLEFBQU0sQUFBUyxBQUFDLEFBeUJoRCxBQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQXlCOzs7K0JBS2pCLEFBQTRCLFVBQ3RDLEFBQUssQUFBRSxBQUFDO1lBRGdDLDJFQUFtQixBQUFFOzs7O3FEQUZ2RDs7Y0FBUSxXQUFXLEFBQUUsQUFBQyxBQUk1QixBQUFJO2NBQUMsQUFBUSxXQUFHLEFBQVEsQUFBQyxBQUN6QixBQUFJO2NBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO2VBRUQsQUFBVTs7O2lFQUFDLEFBQWUsU0FBRSxBQUFXLEtBQUUsQUFBb0IsV0FDM0QsQUFBUztrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBMEIsaURBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUFDLEFBQy9FLEFBQVM7a0JBQUMsQUFBbUIsb0JBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQyxBQUNsRCxBQUFTO2tCQUFDLEFBQVUsV0FBQyxBQUFHLEFBQUMsQUFBQyxBQUMxQjtlQUFPLElBQUksQUFBUSxTQUFDLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQyxBQUNyQyxBQUFDLEFBRUQsQUFBUTs7O2dDQUFDLCtCQUNQLEFBQUk7OEZBRE0sQUFBZTs7OzthQUNwQixBQUFJLGFBQVMsQUFBRyxpQkFBQyxBQUFDLEFB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QUFpQixrQkFBQyxBQUEwQixBQUFDLE9BQUMsQUFBUSxBQUFDLHNCQUQ3RCxBQUNnRSxBQUFJLEFBQUMsQUFBQyxBQUM1RTtXQUFNLEFBQ0w7Y0FBTSxJQUFJLEFBQVMsVUFBQyxBQUEyRCxBQUFDLEFBQUMsQUFDbEYsQUFDSCxBQUFDOztBQUVELEFBQU07b0JBQXFDLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludCwgTWV0YSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRU1QVFlfQ0FDSEUsIENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IERlc2NyaXB0b3IsIEJsdWVwcmludCB9IGZyb20gJy4vbWl4aW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gICh2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nLCB2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZERlc2NyaXB0b3Ige1xuICBnZXQ/OiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgc2V0PzogQ29tcHV0ZWRTZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2s7XG59XG5cbnR5cGUgQ29tcHV0ZWRBcmd1bWVudCA9IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBDb21wdXRlZERlc2NyaXB0b3I7XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgcHJpdmF0ZSBkZXBzOiBzdHJpbmdbXVtdO1xuICBwcml2YXRlIG1ldGFkYXRhOiBPYmplY3QgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yLCBkZXBzOiBzdHJpbmdbXVtdID0gW10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICB0aGlzLmRlcHMgPSBkZXBzO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGNsYXNzTWV0YS5hZGRSZWZlcmVuY2VUeXBlRm9yKGtleSwgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQoa2V5LCB0aGlzLmRlcHMpKTtcbiAgICBjbGFzc01ldGEuYWRkUHJvcGVydHlNZXRhZGF0YShrZXksIHRoaXMubWV0YWRhdGEpO1xuICAgIGNsYXNzTWV0YS5hZGRTbG90Rm9yKGtleSk7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZCh0aGlzLmFjY2Vzc29yKTtcbiAgfVxuXG4gIHByb3BlcnR5KC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVwcyA9IHBhdGhzLm1hcChkID0+IGQuc3BsaXQoJy4nKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtZXRhKG9iamVjdDogT2JqZWN0KSB7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG9iamVjdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZvbGF0aWxlKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmNsYXNzIENvbXB1dGVkIGltcGxlbWVudHMgRGVzY3JpcHRvciB7XG4gIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcblxuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yKSB7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gZmFsc2U7XG4gIH1cblxuICBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHdyYXBBY2Nlc3Nvcihob21lLCBrZXksIHRoaXMuYWNjZXNzb3IpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cmFwQWNjZXNzb3IoXG4gIGhvbWU6IE9iamVjdCxcbiAgYWNjZXNzb3JOYW1lOiBzdHJpbmcsXG4gIF9kZXNjOiBDb21wdXRlZERlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB7XG4gIGxldCBzdXBlckRlc2MgPSBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoaG9tZSwgYWNjZXNzb3JOYW1lKTtcblxuICBsZXQgb3JpZ2luYWxHZXQ6IENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIGxldCBvcmlnaW5hbFNldDogQ29tcHV0ZWRTZXRDYWxsYmFjaztcblxuICBsZXQgZGVzYzogUHJvcGVydHlEZXNjcmlwdG9yID0ge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9O1xuXG4gIGxldCBnZXQgPSBfZGVzYy5nZXQ7XG5cbiAgaWYgKGdldCAmJiBnZXQubGVuZ3RoID4gMCkge1xuICAgIG9yaWdpbmFsR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKGdldCBhcyBhbnkpLmNhbGwodGhpcywgYWNjZXNzb3JOYW1lKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsR2V0ID0gX2Rlc2MuZ2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgc2V0ID0gX2Rlc2Muc2V0O1xuXG4gIGlmIChzZXQgJiYgc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICBvcmlnaW5hbFNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgcmV0dXJuIChzZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSwgdmFsdWUpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luYWxTZXQgPSBfZGVzYy5zZXQgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgfVxuXG4gIGxldCBjYWNoZUdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGlmIChNZXRhLmV4aXN0cyh0aGlzKSkge1xuICAgICAgbGV0IHNsb3QgPSBNZXRhLmZvcih0aGlzKS5nZXRTbG90cygpW2FjY2Vzc29yTmFtZV07XG4gICAgICBpZiAoc2xvdCAhPT0gRU1QVFlfQ0FDSEUpIHJldHVybiBzbG90O1xuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW5hbEdldC5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIGxldCBjYWNoZVNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgaWYgKG9yaWdpbmFsU2V0KSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICAgIGxldCByZXQgPSBvcmlnaW5hbFNldC5jYWxsKHRoaXMsIHZhbHVlKTtcblxuICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSByZXQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSBzbG90c1thY2Nlc3Nvck5hbWVdID0gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghc3VwZXJEZXNjIHx8ICd2YWx1ZScgaW4gc3VwZXJEZXNjKSB7XG4gICAgZGVzYy5nZXQgPSBjYWNoZUdldDtcbiAgICBkZXNjLnNldCA9IGNhY2hlU2V0O1xuICAgIHJldHVybiBkZXNjO1xuICB9XG5cbiAgZGVzYy5nZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuZ2V0LmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVHZXQuY2FsbCh0aGlzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIGRlc2Muc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWw6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MgYXMgYW55KS5zZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlU2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBkZXNjO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdDogYW55LCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKTtcbiAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHN1YmplY3QpO1xuICB3aGlsZSAodHlwZW9mIHBkID09PSAndW5kZWZpbmVkJyAmJiBwcm90byAhPT0gbnVsbCkge1xuICAgIHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbmFtZSk7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiBwZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKGRlc2M6IENvbXB1dGVkRGVzY3JpcHRvcik6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKFxuICBnZXR0ZXI6IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrXG4pOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSk6IENvbXB1dGVkQmx1ZXByaW50O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pIHtcbiAgbGV0IGxhc3Q6IENvbXB1dGVkQXJndW1lbnQgPSBhcmdzLnBvcCgpO1xuICBsZXQgZGVwcyA9IGFyZ3M7XG5cbiAgaWYgKHR5cGVvZiBsYXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludCh7XG4gICAgICBnZXQ6IGxhc3QgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2ssXG4gICAgfSkucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGxhc3QgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludChsYXN0IGFzIENvbXB1dGVkRGVzY3JpcHRvcikucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29tcHV0ZWQgZXhwZWN0cyBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCBhcyBsYXN0IGFyZ3VtZW50Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVyKC4uLl9hcmdzOiBhbnlbXSkge31cbiJdfQ== |
@@ -125,2 +125,2 @@ "use strict"; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFFLEFBQVMsQUFBRSxBQUFVLEFBQUUsQUFBTSxBQUFTLEFBQUM7O0FBRWhELEFBQU8sQUFBRSxBQUFpQixBQUFFLEFBQU0sQUFBWSxBQUFDLEFBRS9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQTRCOzs7bUNBR2QsQUFBWSxNQUN0QixBQUFLLEFBQUUsQUFBQzs7O3FEQUNSLEFBQUk7O2NBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO2VBRUQsQUFBTTs7OzZEQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBYSxPQUMvQztZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBYyxBQUFDLEFBRS9CLEFBQU07ZUFBQyxBQUFjLGVBQUMsQUFBTSxRQUFFLEFBQUc7d0JBQ25CLEFBQUksQUFDaEIsQUFBWTswQkFBRSxBQUFJLEFBQ2xCLEFBQUc7Z0NBQ0QsQUFBTTt1QkFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDcEIsQUFBQyxBQUNGLEFBQUMsQUFBQyxBQUNMLEFBUHFDLEFBT3BDLEFBQ0Y7QUFQSyxBQUFVLEFBU2hCOzs7OztBQXJCb0MsQUFBVSxBQUc1Qzs7SUFrQnlCOzs7a0NBR2IsQUFBWSxNQUN0QixBQUFLLEFBQUUsQUFBQzs7O3NEQUNSLEFBQUk7O2VBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO2VBRUQsQUFBVTs7O29FQUFDLEFBQWUsU0FBRSxBQUFZLE1BQUUsQUFBZ0IsT0FDeEQsQUFBTTtlQUFDLElBQUksQUFBcUIsc0JBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQzlDLEFBQUMsQUFDRjs7OztBQVhrQyxBQUFTLEFBRzFDLEFBVUYsQUFBTTs7cUJBQXNCLEFBQVksTUFDdEMsQUFBTTtXQUFDLElBQUksQUFBb0IscUJBQUMsQUFBSSxBQUFDLEFBQUMsQUFDeEMsQUFBQyxBQUVEOzs7SUFBcUI7Ozs0QkFHUCxBQUFjLE1BQ3hCOzs7WUFBSSxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFDLEdBQUUsQ0FBQyxBQUFDLEFBQUMsQUFBQyxBQUMvQjtZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsQUFBQyxBQUVqQztZQUFJLEFBQUcsTUFBRyxlQUNSLEFBQU07d0JBQU0sQUFBTSxpQkFBRSxBQUFHLEtBQUUsQUFBQyxHQUFQO3VCQUFZLEFBQUcsSUFBQyxBQUFDLEFBQUM7QUFBOUIsQUFBSSxlQUE0QixBQUFJLEFBQUMsQUFBQyxBQUMvQyxBQUFDLEFBQUMsQUFFRjs7WUFBSSxBQUFHLE1BQUcsYUFBb0IsQUFBVSxPQUN0QztnQkFBSSxBQUFDLFdBQVUsQUFBTSxpQkFBRSxBQUFHLEtBQUUsQUFBQyxHQUFQO3VCQUFZLEFBQUcsSUFBQyxBQUFDLEFBQUM7QUFBaEMsQUFBTSxlQUE0QixBQUFJLEFBQUMsQUFBQyxBQUNoRCxBQUFDO2NBQUMsQUFBSSxBQUFDLFFBQUcsQUFBSyxBQUFDLEFBQ2xCLEFBQUMsQUFBQyxBQUVGLEFBQUs7OztvRkFBQyxFQUFFLEFBQUcsVUFBRSxBQUFHLEFBQUUsWUFBRSxDQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDNUIsQUFBSTs7ZUFBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CLEFBQUM7ZUFFRCxBQUFVOzs7OERBQUMsQUFBYyxRQUFFLEFBQVcsS0FBRSxBQUFlLE1BQ3JELEFBQUUsQUFBQztZQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBQyxBQUFDLE9BQUssQUFBRyxBQUFDLEtBQUMsTUFBTSxJQUFJLEFBQUssQUFBQywyQkFBa0IsQUFBRyxBQUFXLEFBQUMsQUFBQyxBQUM1RSxBQUFNO2VBQUMsQUFBSyw2QkFBQyxBQUFVLHNCQUFDLEFBQU0sUUFBRSxBQUFHLEtBQUUsQUFBSSxBQUFDLEFBQUMsQUFDN0MsQUFBQyxBQUNGOzs7O0FBeEI0QixBQUFpQixBQUc1QyxBQXVCRixBQUFNOztlQUFnQixBQUFZLE1BQ2hDLEFBQU07V0FBQyxJQUFJLEFBQWMsZUFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUFDLEFBQUMsQUFDN0MsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsdWVwcmludCwgRGVzY3JpcHRvciB9IGZyb20gJy4vbWl4aW4nO1xuaW1wb3J0IHsgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgQ29tcHV0ZWRCbHVlcHJpbnQgfSBmcm9tICcuL2NvbXB1dGVkJztcblxuY2xhc3MgQWxpYXNNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lOiBPYmplY3QpIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMubmFtZSBhcyBzdHJpbmc7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQodGhpczogdHlwZW9mIHRhcmdldCkge1xuICAgICAgICByZXR1cm4gdGhpc1tuYW1lXTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgQWxpYXNNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZERlc2NyaXB0b3IodGhpcy5uYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXNNZXRob2QobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZEJsdWVwcmludChuYW1lKTtcbn1cblxuY2xhc3MgQWxpYXNCbHVlcHJpbnQgZXh0ZW5kcyBDb21wdXRlZEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nW10pIHtcbiAgICBsZXQgcGFyZW50ID0gbmFtZS5zbGljZSgwLCAtMSk7XG4gICAgbGV0IGxhc3QgPSBuYW1lW25hbWUubGVuZ3RoIC0gMV07XG5cbiAgICBsZXQgZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gbmFtZS5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICB9O1xuXG4gICAgbGV0IHNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IHAgPSBwYXJlbnQucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgICBwW2xhc3RdID0gdmFsdWU7XG4gICAgfTtcblxuICAgIHN1cGVyKHsgZ2V0LCBzZXQgfSwgW25hbWVdKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIG1ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGlmICh0aGlzLm5hbWVbMF0gPT09IGtleSkgdGhyb3cgbmV3IEVycm9yKGBTZXR0aW5nIGFsaWFzICcke2tleX0nIG9uIHNlbGZgKTtcbiAgICByZXR1cm4gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgbWV0YSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzKG5hbWU6IHN0cmluZyk6IEJsdWVwcmludCB7XG4gIHJldHVybiBuZXcgQWxpYXNCbHVlcHJpbnQobmFtZS5zcGxpdCgnLicpKTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFFLEFBQVMsQUFBRSxBQUFVLEFBQUUsQUFBTSxBQUFTLEFBQUM7O0FBRWhELEFBQU8sQUFBRSxBQUFpQixBQUFFLEFBQU0sQUFBWSxBQUFDLEFBRS9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQTRCOzs7bUNBR2QsQUFBWSxNQUN0QixBQUFLLEFBQUUsQUFBQzs7O3FEQUNSLEFBQUk7O2NBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQixBQUFDO2VBRUQsQUFBTTs7OzZEQUFDLEFBQWMsUUFBRSxBQUFXLEtBQUUsQUFBYSxPQUMvQztZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBYyxBQUFDLEFBRS9CLEFBQU07ZUFBQyxBQUFjLGVBQUMsQUFBTSxRQUFFLEFBQUc7d0JBQ25CLEFBQUksQUFDaEIsQUFBWTswQkFBRSxBQUFJLEFBQ2xCLEFBQUc7Z0NBQ0Q7dUJBQU8sQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3BCLEFBQUMsQUFDRixBQUFDLEFBQUMsQUFDTCxBQVBxQyxBQU9wQyxBQUNGO0FBUEssQUFBVSxBQVNoQjs7Ozs7QUFyQm9DLEFBQVUsQUFHNUM7O0lBa0J5Qjs7O2tDQUdiLEFBQVksTUFDdEIsQUFBSyxBQUFFLEFBQUM7OztzREFDUixBQUFJOztlQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQztlQUVELEFBQVU7OztvRUFBQyxBQUFlLFNBQUUsQUFBWSxNQUFFLEFBQWdCLE9BQ3hEO2VBQU8sSUFBSSxBQUFxQixzQkFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDOUMsQUFBQyxBQUNGOzs7O0FBWGtDLEFBQVMsQUFHMUMsQUFVRixBQUFNOztxQkFBc0IsQUFBWSxNQUN0QztXQUFPLElBQUksQUFBb0IscUJBQUMsQUFBSSxBQUFDLEFBQUMsQUFDeEMsQUFBQyxBQUVEOzs7SUFBcUI7Ozs0QkFHUCxBQUFjLE1BQ3hCOzs7WUFBSSxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFDLEdBQUUsQ0FBQyxBQUFDLEFBQUMsQUFBQyxBQUMvQjtZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsQUFBQyxBQUVqQztZQUFJLEFBQUcsTUFBRyxlQUNSO3dCQUFZLEFBQU0saUJBQUUsQUFBRyxLQUFFLEFBQUMsQUFBRSxBQUFFLEdBQVg7dUJBQVksQUFBRyxJQUFDLEFBQUMsQUFBQztBQUE5QixBQUFJLGVBQTRCLEFBQUksQUFBQyxBQUFDLEFBQy9DLEFBQUMsQUFBQyxBQUVGOztZQUFJLEFBQUcsTUFBRyxhQUFvQixBQUFVLE9BQ3RDO2dCQUFJLEFBQUMsV0FBVSxBQUFNLGlCQUFFLEFBQUcsS0FBRSxBQUFDLEFBQUUsQUFBRSxHQUFYO3VCQUFZLEFBQUcsSUFBQyxBQUFDLEFBQUM7QUFBaEMsQUFBTSxlQUE0QixBQUFJLEFBQUMsQUFBQyxBQUNoRCxBQUFDO2NBQUMsQUFBSSxBQUFDLFFBQUcsQUFBSyxBQUFDLEFBQ2xCLEFBQUMsQUFBQyxBQUVGLEFBQUs7OztvRkFBQyxFQUFFLEFBQUcsVUFBRSxBQUFHLEFBQUUsWUFBRSxDQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDNUIsQUFBSTs7ZUFBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CLEFBQUM7ZUFFRCxBQUFVOzs7OERBQUMsQUFBYyxRQUFFLEFBQVcsS0FBRSxBQUFlLE1BQ3JEO1lBQUksQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFDLEFBQUMsT0FBSyxBQUFHLEtBQUUsTUFBTSxJQUFJLEFBQUssQUFBQywyQkFBa0IsQUFBRyxBQUFXLEFBQUMsQUFBQyxBQUM1RTtlQUFPLEFBQUssNkJBQUMsQUFBVSxzQkFBQyxBQUFNLFFBQUUsQUFBRyxLQUFFLEFBQUksQUFBQyxBQUFDLEFBQzdDLEFBQUMsQUFDRjs7OztBQXhCNEIsQUFBaUIsQUFHNUMsQUF1QkYsQUFBTTs7ZUFBZ0IsQUFBWSxNQUNoQztXQUFPLElBQUksQUFBYyxlQUFDLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUMsQUFBQyxBQUM3QyxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmx1ZXByaW50LCBEZXNjcmlwdG9yIH0gZnJvbSAnLi9taXhpbic7XG5pbXBvcnQgeyBDbGFzc01ldGEgfSBmcm9tICcuL29iamVjdCc7XG5pbXBvcnQgeyBDb21wdXRlZEJsdWVwcmludCB9IGZyb20gJy4vY29tcHV0ZWQnO1xuXG5jbGFzcyBBbGlhc01ldGhvZERlc2NyaXB0b3IgZXh0ZW5kcyBEZXNjcmlwdG9yIHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgX2hvbWU6IE9iamVjdCkge1xuICAgIGxldCBuYW1lID0gdGhpcy5uYW1lIGFzIHN0cmluZztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiB0eXBlb2YgdGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzW25hbWVdO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBBbGlhc01ldGhvZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9tZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kRGVzY3JpcHRvcih0aGlzLm5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhc01ldGhvZChuYW1lOiBzdHJpbmcpOiBCbHVlcHJpbnQge1xuICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kQmx1ZXByaW50KG5hbWUpO1xufVxuXG5jbGFzcyBBbGlhc0JsdWVwcmludCBleHRlbmRzIENvbXB1dGVkQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmdbXSkge1xuICAgIGxldCBwYXJlbnQgPSBuYW1lLnNsaWNlKDAsIC0xKTtcbiAgICBsZXQgbGFzdCA9IG5hbWVbbmFtZS5sZW5ndGggLSAxXTtcblxuICAgIGxldCBnZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiBuYW1lLnJlZHVjZSgob2JqLCBuKSA9PiBvYmpbbl0sIHRoaXMpO1xuICAgIH07XG5cbiAgICBsZXQgc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICBsZXQgcCA9IHBhcmVudC5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICAgIHBbbGFzdF0gPSB2YWx1ZTtcbiAgICB9O1xuXG4gICAgc3VwZXIoeyBnZXQsIHNldCB9LCBbbmFtZV0pO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgaWYgKHRoaXMubmFtZVswXSA9PT0ga2V5KSB0aHJvdyBuZXcgRXJyb3IoYFNldHRpbmcgYWxpYXMgJyR7a2V5fScgb24gc2VsZmApO1xuICAgIHJldHVybiBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBtZXRhKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXMobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc0JsdWVwcmludChuYW1lLnNwbGl0KCcuJykpO1xufVxuIl19 |
@@ -437,2 +437,2 @@ "use strict"; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFFLEFBQVUsQUFBRSxBQUFNLEFBQTJCLEFBQUM7O0FBQ3ZELEFBQU8sQUFBUSxBQUFJLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNuRCxBQUFzQixBQUVwQixBQUFTLEFBQ1QsQUFBWSxBQUNaLEFBQVcsQUFDWixBQUFNLEFBQVUsQUFBQzs7QUFFbEIsQUFBTyxBQUFFLEFBQUksQUFBRSxBQUFNLEFBQVMsQUFBQyxBQUUvQixBQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUUsQUFBTyxBQUFFLFVBQUcsQUFBSyxBQUFDLE1BRTFCLEFBQU07O0FBQUMsSUFBTSxBQUFVLGtDQUFHLEFBQXNDLEFBQUMsQUFDakUsQUFBTTtBQUFDLElBQU0sQUFBUyxnQ0FBRyxBQUFzQyxBQUFDLEFBRWhFLEFBQU07SUFBTix3REFDRTs7O1NBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRCxBQUFDO0FBRUQsQUFBTTtJQUFOLHFEQUNFOzs7U0FBc0MsMENBQUcsQUFBSSxBQUFDLEFBRWhELEFBQUM7QUFTRCxBQUFNO0lBNEJKO21CQUFZLEFBQXNCLFlBQUUsQUFBZTs7Ozs7YUEzQmpDLGFBQWMsQUFBVyxBQUFDLEtBQXBDLENBQXFDLEFBQXVCLEFBQzVEO2FBQXNCLHlCQUFhLEFBQUUsQUFBQyxBQUN0QzthQUFnQixtQkFBYSxBQUFFLEFBQUMsQUFDaEM7YUFBWSxlQUFZLEFBQUUsQUFBQyxBQXlCakMsQUFBSTthQUFDLEFBQU0sT0FBQyxBQUFVLEFBQUMsQUFBQyxBQUN4QixBQUFJOzhCQUFDLEFBQVksY0FBQyxBQUFJLEFBQUMsMEJBeEJ6QixBQUFNLEFBd0JzQixBQUFNLEFBQUMsQUFBQyxBQUNwQyxBQUFD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LEFBQUMsQUFDSCxBQUFNO21CQUFDLEFBQVEsU0FBQyxBQUFLLE1BQUMsQUFBSSxNQUFFLEFBQUksQUFBQyxBQUFDLEFBQ3BDLEFBQUM7a0JBQVMsQUFBQyxBQUNULEFBQUk7aUJBQUMsQUFBTSxTQUFHLEFBQVMsQUFBQyxBQUMxQixBQUFDLEFBQ0gsQUFBQyxBQUFDLEFBQ0o7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENMQVNTX01FVEEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QsIGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IEdsaW1tZXJPYmplY3QsIHtcbiAgR2xpbW1lck9iamVjdEZhY3RvcnksXG4gIENsYXNzTWV0YSxcbiAgSW5zdGFuY2VNZXRhLFxuICB0dXJib2NoYXJnZSxcbn0gZnJvbSAnLi9vYmplY3QnO1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmV4cG9ydCBjb25zdCBERVNDUklQVE9SID0gJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYyc7XG5leHBvcnQgY29uc3QgQkxVRVBSSU5UID0gJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZXNjcmlwdG9yIHtcbiAgJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYycgPSB0cnVlO1xuICBhYnN0cmFjdCBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmx1ZXByaW50IHtcbiAgJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNScgPSB0cnVlO1xuICBhYnN0cmFjdCBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbnMge1xuICBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsO1xuICBtZXJnZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmc7XG4gIF9zdXBlcj86IEZ1bmN0aW9uO1xuICBbaW5kZXg6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIE1peGluIHtcbiAgcHJpdmF0ZSBleHRlbnNpb25zOiBEaWN0PGFueT4gPSBudWxsIGFzIGFueTsgLy8gYXNzaWduZWQgYmVmb3JlIHVzZWRcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZGVwZW5kZW5jaWVzOiBNaXhpbltdID0gW107XG5cbiAgc3RhdGljIGNyZWF0ZSguLi5hcmdzOiAoTWl4aW4gfCBFeHRlbnNpb25zKVtdKSB7XG4gICAgbGV0IGV4dGVuc2lvbnMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgW10pO1xuICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9ucyBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIGFyZ3MgYXMgTWl4aW5bXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkZXBzID0gYXJncy5zbGljZSgwLCAtMSkubWFwKHRvTWl4aW4pO1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKGV4dGVuc2lvbnMgYXMgRXh0ZW5zaW9ucywgZGVwcyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1peGlucyhvYmo6IGFueSk6IE1peGluW10ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBbXTtcblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIGlmICghbWV0YSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIG1ldGEuZ2V0QXBwbGllZE1peGlucygpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZXh0ZW5zaW9uczogRXh0ZW5zaW9ucywgbWl4aW5zOiBNaXhpbltdKSB7XG4gICAgdGhpcy5yZW9wZW4oZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCguLi5taXhpbnMpO1xuICB9XG5cbiAgZGV0ZWN0KG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gb2JqLmRlcGVuZGVuY2llcy5pbmRleE9mKHRoaXMpICE9PSAtMTtcbiAgICB9XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICByZXR1cm4gISFtZXRhICYmIG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpO1xuICB9XG5cbiAgcmVvcGVuKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMpIHtcbiAgICBpZiAodGhpcy5leHRlbnNpb25zKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKHRvTWl4aW4odGhpcy5leHRlbnNpb25zKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IGNvbmNhdDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3Q29uY2F0ID0gZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdDb25jYXQpKSB7XG4gICAgICAgIGNvbmNhdCA9IChyYXdDb25jYXQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd0NvbmNhdCA9PT0gbnVsbCB8fCByYXdDb25jYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25jYXQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmNhdCA9IFtyYXdDb25jYXQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGNvbmNhdDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdtZXJnZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICBsZXQgbWVyZ2VkOiBzdHJpbmdbXTtcbiAgICAgIGxldCByYXdNZXJnZWQgPSBleHRlbnNpb25zLm1lcmdlZFByb3BlcnRpZXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHJhd01lcmdlZCkpIHtcbiAgICAgICAgbWVyZ2VkID0gKHJhd01lcmdlZCBhcyBzdHJpbmdbXSkuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAocmF3TWVyZ2VkID09PSBudWxsIHx8IHJhd01lcmdlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1lcmdlZCA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkID0gW3Jhd01lcmdlZCBhcyBzdHJpbmddO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gbWVyZ2VkO1xuICAgIH1cblxuICAgIGxldCBub3JtYWxpemVkOiBEaWN0PEJsdWVwcmludD4gPSBPYmplY3Qua2V5cyhleHRlbnNpb25zKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBleHRlbnNpb25zW2tleV07XG5cbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBNZXRob2RCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBpZiAodmFsdWUgJiYgQkxVRVBSSU5UIGluIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgRGF0YUJsdWVwcmludCh7IHZhbHVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIGRpY3Q8Qmx1ZXByaW50PigpKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IGRpY3Q8YW55PigpO1xuICAgIGFzc2lnbih0aGlzLmV4dGVuc2lvbnMsIHR1cmJvY2hhcmdlKG5vcm1hbGl6ZWQpKTtcbiAgfVxuXG4gIGFwcGx5KHRhcmdldDogYW55KSB7XG4gICAgbGV0IG1ldGE6IENsYXNzTWV0YSA9ICh0YXJnZXRbQ0xBU1NfTUVUQV0gPSB0YXJnZXRbQ0xBU1NfTUVUQV0gfHwgbmV3IENsYXNzTWV0YSgpKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5hcHBseSh0YXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyh0YXJnZXQsIHRhcmdldCwgbWV0YSk7XG4gICAgbWV0YS5hZGRNaXhpbih0aGlzKTtcbiAgICBtZXRhLnNlYWwoKTtcbiAgICBtZXRhLnJlc2VhbCh0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZShPcmlnaW5hbDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIE9yaWdpbmFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3JpZ2luYWwucHJvdG90eXBlKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGUoT3JpZ2luYWwpKTtcbiAgICB0aGlzLmV4dGVuZFByb3RvdHlwZU9udG8oT3JpZ2luYWwsIE9yaWdpbmFsKTtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFN1YmNsYXNzLnByb3RvdHlwZSwgUGFyZW50LnByb3RvdHlwZSwgU3ViY2xhc3NbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKHRoaXMpO1xuICB9XG5cbiAgZXh0ZW5kU3RhdGljKFRhcmdldDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhUYXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhUYXJnZXQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihUYXJnZXQpLCBUYXJnZXRbQ0xBU1NfTUVUQV1bQ0xBU1NfTUVUQV0pO1xuICAgIFRhcmdldFtDTEFTU19NRVRBXS5hZGRTdGF0aWNNaXhpbih0aGlzKTtcbiAgfVxuXG4gIG1lcmdlUHJvcGVydGllcyh0YXJnZXQ6IE9iamVjdCwgcGFyZW50OiBPYmplY3QsIG1ldGE6IENsYXNzTWV0YSkge1xuICAgIGlmIChtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKSkgcmV0dXJuO1xuICAgIG1ldGEuYWRkQXBwbGllZE1peGluKHRoaXMpO1xuXG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZE1lcmdlZFByb3BlcnR5KGssIHBhcmVudFtrXSkpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrLCBbXSkpO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUoXG4gICAgICB0YXJnZXQsXG4gICAgICAnY29uY2F0ZW5hdGVkUHJvcGVydGllcydcbiAgICApO1xuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRNZXJnZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ21lcmdlZFByb3BlcnRpZXMnKTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZW5zaW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgbGV0IGV4dGVuc2lvbjogQmx1ZXByaW50ID0gdGhpcy5leHRlbnNpb25zIVtrZXldO1xuICAgICAgbGV0IGRlc2MgPSBleHRlbnNpb24uZGVzY3JpcHRvcih0YXJnZXQsIGtleSBhcyBzdHJpbmcsIG1ldGEpO1xuICAgICAgZGVzYy5kZWZpbmUodGFyZ2V0LCBrZXkgYXMgc3RyaW5nLCBwYXJlbnQpO1xuICAgIH0pO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBST09UIH0pLmRlZmluZSh0YXJnZXQsICdfc3VwZXInIGFzIHN0cmluZyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uID0gTWl4aW4gfCBFeHRlbnNpb25zO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kPFQgZXh0ZW5kcyBHbGltbWVyT2JqZWN0PihcbiAgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPixcbiAgLi4uZXh0ZW5zaW9uczogRXh0ZW5zaW9uW11cbik6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4ge1xuICBsZXQgU3VwZXIgPSBQYXJlbnQgYXMgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgbGV0IFN1YmNsYXNzID0gY2xhc3MgZXh0ZW5kcyBTdXBlciB7fTtcbiAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0gPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuXG4gIGxldCBtaXhpbnMgPSBleHRlbnNpb25zLm1hcCh0b01peGluKTtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmFkZFN1YmNsYXNzKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pO1xuICBtaXhpbnMuZm9yRWFjaChtID0+IFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKG0pKTtcblxuICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MgYXMgR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50KTtcblxuICByZXR1cm4gU3ViY2xhc3MgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsaW5rU3ViY2xhc3NlcyhQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmdldFN1YmNsYXNzZXMoKS5mb3JFYWNoKChTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PikgPT4ge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnJlc2V0KFBhcmVudFtDTEFTU19NRVRBXSk7XG4gICAgU3ViY2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQYXJlbnQucHJvdG90eXBlKTtcblxuICAgIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcywgUGFyZW50KTtcblxuICAgIC8vIHJlY3Vyc2UgaW50byBzdWItc3ViY2xhc3Nlc1xuICAgIHJlbGlua1N1YmNsYXNzZXMoU3ViY2xhc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTWl4aW4oZXh0ZW5zaW9uOiBFeHRlbnNpb24pOiBNaXhpbiB7XG4gIGlmIChleHRlbnNpb24gaW5zdGFuY2VvZiBNaXhpbikgcmV0dXJuIGV4dGVuc2lvbjtcbiAgZWxzZSByZXR1cm4gbmV3IE1peGluKGV4dGVuc2lvbiBhcyBPYmplY3QsIFtdKTtcbn1cblxuY2xhc3MgVmFsdWVEZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIHdyaXRhYmxlID0gdHJ1ZSxcbiAgICB2YWx1ZSxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBfaG9tZT86IGFueSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgIHdyaXRhYmxlOiB0aGlzLndyaXRhYmxlLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGFCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICB3cml0YWJsZSA9IHRydWUsXG4gICAgdmFsdWUsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGxldCB7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0gPSB0aGlzO1xuXG4gICAgaWYgKGNsYXNzTWV0YS5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgY2xhc3NNZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcsIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSBpZiAoY2xhc3NNZXRhLmhhc01lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkTWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZywgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0TWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9KTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWNjZXNzb3JCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgZ2V0OiAoKSA9PiBhbnk7XG4gIHNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgZ2V0LFxuICAgIHNldCxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yICYgeyBnZXQ6IGFueTsgc2V0OiBhbnkgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLmdldCA9IGdldDtcbiAgICB0aGlzLnNldCA9IHNldDtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9jbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICBnZXQ6IHRoaXMuZ2V0LFxuICAgICAgc2V0OiB0aGlzLnNldCxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgVmFsdWVEZXNjcmlwdG9yIHtcbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHdyYXBNZXRob2QoaG9tZSwga2V5LCB0aGlzLnZhbHVlKTtcbiAgICBzdXBlci5kZWZpbmUodGFyZ2V0LCBrZXksIGhvbWUpO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZEJsdWVwcmludCBleHRlbmRzIERhdGFCbHVlcHJpbnQge1xuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBNZXRob2REZXNjcmlwdG9yIHtcbiAgICBsZXQgZGVzYyA9IHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIGNsYXNzTWV0YSk7XG4gICAgcmV0dXJuIG5ldyBNZXRob2REZXNjcmlwdG9yKGRlc2MgYXMgUHJvcGVydHlEZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcE1ldGhvZChob21lOiBPYmplY3QsIG1ldGhvZE5hbWU6IHN0cmluZywgb3JpZ2luYWw6ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55KSB7XG4gIGlmICghKChtZXRob2ROYW1lIGFzIHN0cmluZykgaW4gaG9tZSkpIHJldHVybiBtYXliZVdyYXAob3JpZ2luYWwpO1xuXG4gIGxldCBzdXBlck1ldGhvZCA9IGhvbWVbbWV0aG9kTmFtZV07XG5cbiAgbGV0IGZ1bmMgPSBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gc3VwZXJNZXRob2Q7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgKGZ1bmMgYXMgYW55KS5fX3dyYXBwZWQgPSB0cnVlO1xuXG4gIHJldHVybiBmdW5jO1xufVxuXG5mdW5jdGlvbiBtYXliZVdyYXAob3JpZ2luYWw6IEZ1bmN0aW9uKSB7XG4gIGlmICgnX193cmFwcGVkJyBpbiBvcmlnaW5hbCkgcmV0dXJuIG9yaWdpbmFsO1xuXG4gIHJldHVybiBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsQUFBTyxBQUFFLEFBQVUsQUFBRSxBQUFNLEFBQTJCLEFBQUM7O0FBQ3ZELEFBQU8sQUFBUSxBQUFJLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNuRCxBQUFzQixBQUVwQixBQUFTLEFBQ1QsQUFBWSxBQUNaLEFBQVcsQUFDWixBQUFNLEFBQVUsQUFBQzs7QUFFbEIsQUFBTyxBQUFFLEFBQUksQUFBRSxBQUFNLEFBQVMsQUFBQyxBQUUvQixBQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUUsQUFBTyxBQUFFLFVBQUcsQUFBSyxBQUFDLE1BRTFCLEFBQU07O0FBQUMsSUFBTSxBQUFVLGtDQUFHLEFBQXNDLEFBQUMsQUFDakUsQUFBTTtBQUFDLElBQU0sQUFBUyxnQ0FBRyxBQUFzQyxBQUFDLEFBRWhFLEFBQU07SUFBTix3REFDRTs7O1NBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRCxBQUFDO0FBRUQsQUFBTTtJQUFOLHFEQUNFOzs7U0FBc0MsMENBQUcsQUFBSSxBQUFDLEFBRWhELEFBQUM7QUFTRCxBQUFNO0lBNEJKO21CQUFZLEFBQXNCLFlBQUUsQUFBZTs7Ozs7YUEzQmpDLGFBQWMsQUFBVyxBQUFDLEtBQXBDLENBQXFDLEFBQXVCLEFBQzVEO2FBQXNCLHlCQUFhLEFBQUUsQUFBQyxBQUN0QzthQUFnQixtQkFBYSxBQUFFLEFBQUMsQUFDaEM7YUFBWSxlQUFZLEFBQUUsQUFBQyxBQXlCakMsQUFBSTthQUFDLEFBQU0sT0FBQyxBQUFVLEFBQUMsQUFBQyxBQUN4QixBQUFJOzhCQUFDLEFBQVksY0FBQyxBQUFJLEFBQUMsMEJBeEJ6QixBQUFNLEFBd0JzQixBQUFNLEFBQUMsQUFBQyxBQUNwQyxBQUFDOzs7VUF6Qk0sQUFBTSxBQUFDLDJCQUNaO2dHQURlLEFBQTRCOzs7O1lBQ3ZDLEFBQVUsYUFBRyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsQUFBQyxBQUV2QztZQUFJLEFBQUksS0FBQyxBQUFNLFdBQUssQUFBQyxHQUFFLEFBQ3JCO21CQUFPLElBQUksQUFBSSxLQUFDLEFBQUUsSUFBRSxBQUFFLEFBQUMsQUFBQyxBQUN6QjttQkFBVSxBQUFVLHNCQUFZLEFBQUssT0FBRSxBQUN0QzttQkFBTyxJQUFJLEFBQUksS0FBQyxBQUFFLElBRGIsQUFDZSxBQUFlLEFBQUMsQUFBQyxBQUN0QztlQUFNLEFBQ0w7Z0JBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBQyxHQUFFLENBQUMsQUFBQyxBQUFDLEdBQUMsQUFBRyxJQUFDLEFBQU8sQUFBQyxBQUFDLEFBQzFDO21CQUFPLElBQUksQUFBSSxLQUFDLEFBQXdCLFlBQUUsQUFBSSxBQUFDLEFBQUMsQUFDakQsQUFDSCxBQUFDO0FBRUQsQUFBTTs7O1VBQUMsQUFBTSx5QkFBQyxBQUFRLEtBQ3BCO1lBQUksT0FBTyxBQUFHLFFBQUssQUFBUSxZQUFJLEFBQUcsUUFBSyxBQUFJLE1BQUUsT0FBTyxBQUFFLEFBQUMsQUFFdkQ7WUFBSSxBQUFJLE9BQUcsQUFBUyxrQkFBQyxBQUFHLElBQUMsQUFBRyxBQUFDLEFBQUMsQUFDOUI7WUFBSSxDQUFDLEFBQUksTUFBRSxPQUFPLEFBQUUsQUFBQyxBQUVyQjtlQUFPLEFBQUksS0FBQyxBQUFnQixBQUFFLEFBQUMsQUFDakMsQUFBQyxBQU9ELEFBQU07Ozs2Q0FBQyxBQUFRLEtBQ2I7WUFBSSxPQUFPLEFBQUcsUUFBSyxBQUFRLFlBQUksQUFBRyxRQUFLLEFBQUksTUFBRSxPQUFPLEFBQUssQUFBQyxBQUUxRDtZQUFJLEFBQUcsZUFBWSxBQUFLLE9BQUUsQUFDeEI7bUJBQU8sQUFBRyxJQUFDLEFBQVksYUFBQyxBQUFPLFFBQUMsQUFBSSxBQUFDLFVBQUssQ0FBQyxBQUFDLEFBQUMsQUFDOUMsQUFFRDs7WUFBSSxBQUFJLE9BQUcsQUFBUyxrQkFBQyxBQUFHLElBQUMsQUFBRyxBQUFDLEFBQUMsQUFDOUI7ZUFBTyxDQUFDLENBQUMsQUFBSSxRQUFJLEFBQUksS0FBQyxBQUFlLGdCQUFDLEFBQUksQUFBQyxBQUFDLEFBQzlDLEFBQUMsQUFFRCxBQUFNOzs7NkNBQUMsQUFBc0IsWUFDM0I7WUFBSSxBQUFJLEtBQUMsQUFBVSxZQUFFLEFBQ25CLEFBQUk7aUJBQUMsQUFBWSxhQUFDLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSSxLQUFDLEFBQVUsQUFBQyxBQUFDLEFBQUMsQUFDbEQsQUFFRDs7WUFBSSxPQUFPLEFBQVUsZUFBSyxBQUFRLFlBQUksQUFBd0IsNEJBQUksQUFBVSxZQUFFLEFBQzVFO2dCQUFJLEFBQWdCLEFBQUMsQUFDckI7Z0JBQUksQUFBUyxZQUFHLEFBQVUsV0FBQyxBQUFzQixBQUFDLEFBRWxEO2dCQUFJLEFBQU8sUUFBQyxBQUFTLEFBQUMsWUFBRSxBQUN0QixBQUFNO3lCQUFJLEFBQXNCLFVBQUMsQUFBSyxBQUFFLEFBQUMsQUFDMUM7dUJBQVUsQUFBUyxjQUFLLEFBQUksUUFBSSxBQUFTLGNBQUssQUFBUyxXQUFFLEFBQ3hELEFBQU07eUJBREQsQUFDSSxBQUFFLEFBQUMsQUFDYjttQkFBTSxBQUNMLEFBQU07eUJBQUcsQ0FBQyxBQUFtQixBQUFDLEFBQUMsQUFDaEMsQUFFRDs7bUJBQU8sQUFBVSxXQUFDLEFBQXNCLEFBQUMsQUFDekMsQUFBSTtpQkFBQyxBQUFzQix5QkFBRyxBQUFNLEFBQUMsQUFDdEMsQUFFRDs7WUFBSSxPQUFPLEFBQVUsZUFBSyxBQUFRLFlBQUksQUFBa0Isc0JBQUksQUFBVSxZQUFFLEFBQ3RFO2dCQUFJLEFBQWdCLEFBQUMsQUFDckI7Z0JBQUksQUFBUyxZQUFHLEFBQVUsV0FBQyxBQUFnQixBQUFDLEFBRTVDO2dCQUFJLEFBQU8sUUFBQyxBQUFTLEFBQUMsWUFBRSxBQUN0QixBQUFNO3lCQUFJLEFBQXNCLFVBQUMsQUFBSyxBQUFFLEFBQUMsQUFDMUM7dUJBQVUsQUFBUyxjQUFLLEFBQUksUUFBSSxBQUFTLGNBQUssQUFBUyxXQUFFLEFBQ3hELEFBQU07eUJBREQsQUFDSSxBQUFFLEFBQUMsQUFDYjttQkFBTSxBQUNMLEFBQU07eUJBQUcsQ0FBQyxBQUFtQixBQUFDLEFBQUMsQUFDaEMsQUFFRDs7bUJBQU8sQUFBVSxXQUFDLEFBQWdCLEFBQUMsQUFDbkMsQUFBSTtpQkFBQyxBQUFnQixtQkFBRyxBQUFNLEFBQUMsQUFDaEMsQUFFRDs7WUFBSSxBQUFVLG9CQUEyQixBQUFJLEtBQUMsQUFBVSxBQUFDLFlBQUMsQUFBTSxPQUFDLFVBQUMsQUFBRyxLQUFFLEFBQUcsQUFBRSxBQUFFLEtBQzVFO2dCQUFJLEFBQUssUUFBRyxBQUFVLFdBQUMsQUFBRyxBQUFDLEFBQUMsQUFFNUI7b0JBQVEsT0FBTyxBQUFLLEFBQUUsQUFDcEI7cUJBQUssQUFBVSxBQUNiLEFBQUc7d0JBQUMsQUFBRyxBQUFDLE9BQUcsSUFBSSxBQUFlLGdCQUFDLEVBQUUsQUFBSyxBQUFFLEFBQUMsQUFBQyxBQUMxQyxBQUFNLE9BQ1I7O3FCQUFLLEFBQVEsQUFDWDt3QkFBSSxBQUFLLFNBQUksQUFBUyxhQUFJLEFBQUssT0FBRSxBQUMvQixBQUFHOzRCQUFDLEFBQUcsQUFBQyxPQUFHLEFBQUssQUFBQyxBQUNqQixBQUFNLEFBQ1A7QUFDSCxBQUFtQjtBQUNuQjtBQUNFLEFBQUc7O3dCQUFDLEFBQUcsQUFBQyxPQUFHLElBQUksQUFBYSxjQUFDLEVBQUUsQUFBSyxBQUFFLEFBQUMsQUFBQyxBQUMzQyxBQUVEOzttQkFqQmdDLEFBQU0sQUFpQi9CLEFBQUcsQUFBQyxBQUNiLEFBQUM7V0FBRSxBQUFJLEFBQWEsQUFBQyxBQUFDLEFBRXRCLEFBQUk7YUFBQyxBQUFVLGFBQUcsQUFBSSxBQUFPLEFBQUMsQUFDOUIsQUFBTTswQkFBQyxBQUFJLEtBQUMsQUFBVSxZQUFFLEFBQVcseUJBQUMsQUFBVSxBQUFDLEFBQUMsQUFBQyxBQUNuRCxBQUFDLEFBRUQsQUFBSzs7OzJDQUFDLEFBQVcsUUFDZjtZQUFJLEFBQUksQUFBYyxPQUFDLEFBQU0sQUFBQyxBQUFVLEFBQUMsc0NBQUcsQUFBTSxBQUFDLEFBQVUsQUFBQyx1Q0FBSSxBQUFJLEFBQVMsQUFBRSxBQUFDLEFBQUMsQUFDbkYsQUFBSTthQUFDLEFBQVksYUFBQyxBQUFPLHFCQUFDLEFBQUMsQUFBQyxBQUFFO21CQUFDLEFBQUMsRUFBQyxBQUFLLE1BQUMsQUFBTSxBQUFDLEFBQUMsQUFBQyxBQUNoRCxBQUFJOzthQUFDLEFBQWUsZ0JBQUMsQUFBTSxRQUFFLEFBQU0sUUFBRSxBQUFJLEFBQUMsQUFBQyxBQUMzQyxBQUFJO2FBQUMsQUFBUSxTQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3BCLEFBQUk7YUFBQyxBQUFJLEFBQUUsQUFBQyxBQUNaLEFBQUk7YUFBQyxBQUFNLE9BQUMsQUFBTSxBQUFDLEFBQUMsQUFFcEI7ZUFBTyxBQUFNLEFBQUMsQUFDaEIsQUFBQyxBQUVELEFBQWU7OzsrREFBQyxBQUFtQyxVQUNqRCxBQUFRO2lCQUFDLEFBQVMsWUFBRyxBQUFNLE9BQUMsQUFBTSxPQUFDLEFBQVEsU0FBQyxBQUFTLEFBQUMsQUFBQyxBQUN2RCxBQUFJO2FBQUMsQUFBWSxhQUFDLEFBQU8scUJBQUMsQUFBQyxBQUFDLEFBQUU7bUJBQUMsQUFBQyxFQUFDLEFBQWUsZ0JBQUMsQUFBUSxBQUFDLEFBQUMsQUFBQyxBQUM1RCxBQUFJOzthQUFDLEFBQW1CLG9CQUFDLEFBQVEsVUFBRSxBQUFRLEFBQUMsQUFBQyxBQUMvQyxBQUFDLEFBRUQsQUFBbUI7Ozt1RUFBQyxBQUFtQyxVQUFFLEFBQWlDLFFBQ3hGLEFBQUk7YUFBQyxBQUFZLGFBQUMsQUFBTyxxQkFBQyxBQUFDLEFBQUMsQUFBRTttQkFBQyxBQUFDLEVBQUMsQUFBbUIsb0JBQUMsQUFBUSxVQUFFLEFBQU0sQUFBQyxBQUFDLEFBQUMsQUFDeEUsQUFBSTs7YUFBQyxBQUFlLGdCQUFDLEFBQVEsU0FBQyxBQUFTLFdBQUUsQUFBTSxPQUFDLEFBQVMsV0FBRSxBQUFRLEFBQUMsQUFBVSxBQUFDLEFBQUMsQUFBQyxBQUNqRixBQUFRO0FBQUMsQUFBVSxBQUFDLDhDQUFDLEFBQVEsU0FBQyxBQUFJLEFBQUMsQUFBQyxBQUN0QyxBQUFDLEFBRUQsQUFBWTs7O3lEQUFDLEFBQWlDLFFBQzVDLEFBQUk7YUFBQyxBQUFZLGFBQUMsQUFBTyxxQkFBQyxBQUFDLEFBQUMsQUFBRTttQkFBQyxBQUFDLEVBQUMsQUFBWSxhQUFDLEFBQU0sQUFBQyxBQUFDLEFBQUMsQUFDdkQsQUFBSTs7YUFBQyxBQUFlLGdCQUFDLEFBQU0sUUFBRSxBQUFNLE9BQUMsQUFBYyxlQUFDLEFBQU0sQUFBQyxTQUFFLEFBQU0sQUFBQyxBQUFVLEFBQUMsQUFBQyxBQUFVLEFBQUMsQUFBQyxBQUFDLEFBQzVGLEFBQU07QUFBQyxBQUFVLEFBQUMsNENBQUMsQUFBYyxlQUFDLEFBQUksQUFBQyxBQUFDLEFBQzFDLEFBQUMsQUFFRCxBQUFlOzs7K0RBQUMsQUFBYyxRQUFFLEFBQWMsUUFBRSxBQUFlLE1BQzdEOzs7WUFBSSxBQUFJLEtBQUMsQUFBZSxnQkFBQyxBQUFJLEFBQUMsT0FBRSxBQUFPLEFBQ3ZDLEFBQUk7YUFBQyxBQUFlLGdCQUFDLEFBQUksQUFBQyxBQUFDLEFBRTNCLEFBQUk7YUFBQyxBQUFnQixpQkFBQyxBQUFPLHFCQUFDLEFBQUMsQUFBQyxBQUFFO21CQUFDLEFBQUksS0FBQyxBQUFpQixrQkFBQyxBQUFDLEdBQUUsQUFBTSxPQUFDLEFBQUMsQUFBQyxBQUFDLEFBQUMsQUFBQyxBQUN6RSxBQUFJOzthQUFDLEFBQXNCLHVCQUFDLEFBQU8scUJBQUMsQUFBQyxBQUFDLEFBQUU7bUJBQUMsQUFBSSxLQUFDLEFBQXVCLHdCQUFDLEFBQUMsR0FBRSxBQUFFLEFBQUMsQUFBQyxBQUFDLEFBRTlFOztZQUFJLEFBQWUsZ0JBQUMsRUFBRSxBQUFLLE9BQUUsQUFBSSxLQUFDLEFBQXlCLEFBQUUsQUFBRSxBQUFDLCtCQUFDLEFBQU0sT0FDckUsQUFBTSxRQUNOLEFBQXdCLEFBQ3pCLEFBQUMsQUFDRjtZQUFJLEFBQWUsZ0JBQUMsRUFBRSxBQUFLLE9BQUUsQUFBSSxLQUFDLEFBQW1CLEFBQUUsQUFBRSxBQUFDLHlCQUFDLEFBQU0sT0FBQyxBQUFNLFFBQUUsQUFBa0IsQUFBQyxBQUFDLEFBRTlGLEFBQU07ZUFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQVUsQUFBQyxZQUFDLEFBQU8sUUFBQyxBQUFHLEFBQUMsQUFBRSxlQUN6QztnQkFBSSxBQUFTLFlBQWMsQUFBSSxNQUFDLEFBQVcsV0FBQyxBQUFHLEFBQUMsQUFBQyxBQUNqRDtnQkFBSSxBQUFJLE9BQUcsQUFBUyxVQUFDLEFBQVUsV0FBQyxBQUFNLFFBQUUsQUFBYSxLQUFFLEFBQUksQUFBQyxBQUFDLEFBQzdELEFBQUk7aUJBQUMsQUFBTSxPQUFDLEFBQU0sUUFBRSxBQUFhLEtBQUUsQUFBTSxBQUFDLEFBQUMsQUFDN0MsQUFBQyxBQUFDLEFBQUMsQUFFSDs7WUFBSSxBQUFlLGdCQUFDLEVBQUUsQUFBSyxBQUFFLEFBQUksQUFBRSxBQUFDLHNCQUFDLEFBQU0sT0FBQyxBQUFNLFFBQUUsQUFBa0IsQUFBQyxBQUFDLEFBQzFFLEFBQUMsQUFDRjs7OztBQUlELEFBQU07Z0JBQ0osQUFBK0IsQUFDL0I7UUFFSSxBQUFLLFFBQUcsQUFBOEIsQUFBQyxBQUUzQztxQ0FBSSxBQUFRLEFBQUcsQUFBTTs7Ozs7Ozs7OztNQUFRLEFBQUssQUFBRyxBQUFDLEFBQ3RDLEFBQVE7QUFBQyxBQUFVLEFBQUMsNENBQUcsQUFBWSxxQkFBQyxBQUFVLFdBSDlDLEFBRytDLEFBQU0sQUFBQyxBQUFVLEFBQUMsQUFBQyxBQUFDLEFBRW5FOzt5SEFQRyxBQUF1Qjs7OztRQU90QixBQUFNLFNBQUcsQUFBVSxXQUFDLEFBQUcsSUFBQyxBQUFPLEFBQUMsQUFBQyxBQUNyQyxBQUFNO0FBQUMsQUFBVSxBQUFDLHdDQUFDLEFBQVcsWUFBQyxBQUFxQyxBQUFDLEFBQUMsQUFDdEUsQUFBTTtXQUFDLEFBQU8scUJBQUMsQUFBQyxBQUFDLEFBQUU7ZUFBQyxBQUFRLEFBQUMsQUFBVSxBQUFDLHNDQUFDLEFBQVEsU0FBQyxBQUFDLEFBQUMsQUFBQyxBQUFDLEFBRXRELEFBQVM7O3NCQUFDLEFBQWMsZUFBQyxBQUFxQyxVQUFFLEFBQU0sQUFBQyxBQUFDLEFBRXhFO1dBQU8sQUFBZSxBQUFDLEFBQ3pCLEFBQUM7QUFFRCxBQUFNOzBCQUEyQixBQUFpQyxRQUNoRSxBQUFNO0FBQUMsQUFBVSxBQUFDLHdDQUFDLEFBQWEsQUFBRSxnQkFBQyxBQUFPLFFBQUMsQUFBQyxBQUFtQyxBQUFFLEFBQUUsb0JBQ2pGLEFBQVE7QUFBQyxBQUFVLEFBQUMsOENBQUMsQUFBSyxNQUFDLEFBQU0sQUFBQyxBQUFVLEFBQUMsQUFBQyxBQUFDLEFBQy9DLEFBQVE7aUJBQUMsQUFBUyxZQUFHLEFBQU0sT0FBQyxBQUFNLE9BQUMsQUFBTSxPQUFDLEFBQVMsQUFBQyxBQUFDLEFBRXJELEFBQVM7MEJBQUMsQUFBYyxlQUFDLEFBQVEsVUFBRSxBQUFNLEFBQUMsQUFBQyxBQUUzQyxBQUE4QixBQUM5QixBQUFnQjs7eUJBQUMsQUFBUSxBQUFDLEFBQUMsQUFDN0IsQUFBQyxBQUFDLEFBQUMsQUFDTCxBQUFDOztBQUVELEFBQU07aUJBQWtCLEFBQW9CLFdBQzFDO1FBQUksQUFBUyxxQkFBWSxBQUFLLE9BQUUsT0FBTyxBQUFTLEFBQUMsZUFDNUMsT0FBTyxJQUFJLEFBQUssTUFBQyxBQUFtQixXQUFFLEFBQUUsQUFBQyxBQUFDLEFBQ2pELEFBQUMsQUFFRDs7O0lBQXNCOytCQU1SOzttQ0FNVixBQUFLLEFBQUUsQUFBQzs7WUFMUixBQUFVLDZDQUFHLEFBQUk7O1lBQ2pCLEFBQVksaURBQUcsQUFBSTs7WUFDbkIsQUFBUSx5Q0FBRyxBQUFJO1lBQ2YsQUFBSyxBQUNjOzs7O3NEQUVuQixBQUFJOztlQUFDLEFBQVUsYUFBRyxBQUFVLEFBQUMsQUFDN0IsQUFBSTtlQUFDLEFBQVksZUFBRyxBQUFZLEFBQUMsQUFDakMsQUFBSTtlQUFDLEFBQVEsV0FBRyxBQUFRLEFBQUMsQUFDekIsQUFBSTtlQUFDLEFBQUssUUFBRyxBQUFLLEFBQUMsQUFDckIsQUFBQztlQUVELEFBQU07Ozt1REFBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQVcsT0FDN0MsQUFBTTtlQUFDLEFBQWMsZUFBQyxBQUFNLFFBQUUsQUFBRzt3QkFDbkIsQUFBSSxLQUFDLEFBQVUsQUFDM0IsQUFBWTswQkFBRSxBQUFJLEtBQUMsQUFBWSxBQUMvQixBQUFRO3NCQUFFLEFBQUksS0FBQyxBQUFRLEFBQ3ZCLEFBQUs7bUJBQUUsQUFBSSxLQUpzQixBQUNqQyxBQUFVLEFBR0UsQUFBSyxBQUNsQixBQUFDLEFBQUMsQUFDTCxBQUFDLEFBQ0Y7Ozs7O0VBM0I2QixBQUFVLEFBTXRDLEFBdUJGLEFBQU07O0lBQXFCOzZCQU1iOztrQ0FNVixBQUFLLEFBQUUsQUFBQzs7WUFMUixBQUFVLDhDQUFHLEFBQUk7O1lBQ2pCLEFBQVksa0RBQUcsQUFBSTs7WUFDbkIsQUFBUSwwQ0FBRyxBQUFJO1lBQ2YsQUFBSyxBQUNjOzs7O3NEQUVuQixBQUFJOztlQUFDLEFBQVUsYUFBRyxBQUFVLEFBQUMsQUFDN0IsQUFBSTtlQUFDLEFBQVksZUFBRyxBQUFZLEFBQUMsQUFDakMsQUFBSTtlQUFDLEFBQUssUUFBRyxBQUFLLEFBQUMsQUFDbkIsQUFBSTtlQUFDLEFBQVEsV0FBRyxBQUFRLEFBQUMsQUFDM0IsQUFBQztlQUVELEFBQVU7Ozs2REFBQyxBQUFlLFNBQUUsQUFBVyxLQUFFLEFBQW9CLFdBQzNELEFBQUk7WUFBRSxBQUFVO1lBQUUsQUFBWTtZQUFFLEFBQVE7WUFBRSxBQUFLLEFBQUUsUUFBRyxBQUFJLEFBQUMsQUFFekQ7O1lBQUksQUFBUyxVQUFDLEFBQXVCLHdCQUFDLEFBQWEsQUFBQyxNQUFFLEFBQ3BELEFBQVM7c0JBQUMsQUFBdUIsd0JBQUMsQUFBYSxLQUFFLEFBQUssQUFBQyxBQUFDLEFBQ3hELEFBQUs7b0JBQUcsQUFBUyxVQUFDLEFBQXVCLHdCQUFDLEFBQWEsQUFBQyxBQUFDLEFBQzFEO2VBQU0sSUFBSSxBQUFTLFVBQUMsQUFBaUIsa0JBQUMsQUFBYSxBQUFDLE1BQUUsQUFDckQsQUFBUztzQkFBQyxBQUFpQixrQkFBQyxBQUFhLEtBQUUsQUFBSyxBQUFDLEFBQUMsQUFDbEQsQUFBSztvQkFBRyxBQUFTLFVBQUMsQUFBaUIsa0JBQUMsQUFBYSxBQUFDLEFBQUMsQUFDcEQsQUFFRDs7ZUFBTyxJQUFJLEFBQWUsZ0JBQUMsRUFBRSxBQUFVLHdCQUFFLEFBQVksNEJBQUUsQUFBUSxvQkFBRSxBQUFLLEFBQUUsQUFBQyxBQUFDLEFBQzVFLEFBQUMsQUFDRjs7OztFQWhDa0MsQUFBUyxBQU0xQyxBQTRCRixBQUFNO0lBQWtDO2lDQU0xQjs7c0NBTVYsQUFBSyxBQUFFLEFBQUM7O1lBTFIsQUFBVSw4Q0FBRyxBQUFJOztZQUNqQixBQUFZLGtEQUFHLEFBQUk7WUFDbkIsQUFBRztZQUNILEFBQUcsQUFDeUM7Ozs7c0RBRTVDLEFBQUk7O2VBQUMsQUFBVSxhQUFHLEFBQVUsQUFBQyxBQUM3QixBQUFJO2VBQUMsQUFBWSxlQUFHLEFBQVksQUFBQyxBQUNqQyxBQUFJO2VBQUMsQUFBRyxNQUFHLEFBQUcsQUFBQyxBQUNmLEFBQUk7ZUFBQyxBQUFHLE1BQUcsQUFBRyxBQUFDLEFBQ2pCLEFBQUM7ZUFFRCxBQUFVOzs7aUVBQUMsQUFBZSxTQUFFLEFBQVksTUFBRSxBQUFxQixZQUM3RDttQkFBVyxBQUFlO3dCQUNaLEFBQUksS0FBQyxBQUFVLEFBQzNCLEFBQVk7MEJBQUUsQUFBSSxLQUFDLEFBQVksQUFDL0IsQUFBRztpQkFBRSxBQUFJLEtBQUMsQUFBRyxBQUNiLEFBQUc7aUJBQUUsQUFBSSxLQUpKLEFBQW9CLEFBQ3pCLEFBQVUsQUFHQSxBQUFHLEFBQ2QsQUFBQyxBQUFDLEFBQ0wsQUFBQyxBQUNGLEFBRUQ7Ozs7O0VBN0JnRCxBQUFTLEFBTXZEOztJQXVCcUI7Ozs7Ozs7Ozt3REFDZCxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQVksTUFDOUMsQUFBSTthQUFDLEFBQUssUUFBRyxBQUFVLFdBQUMsQUFBSSxNQUFFLEFBQUcsS0FBRSxBQUFJLEtBQUMsQUFBSyxBQUFDLEFBQUMsQUFDL0MsQUFBSzttQ0FBQyxBQUFNLGtCQUFDLEFBQU0sUUFBRSxBQUFHLEtBQUUsQUFBSSxBQUFDLEFBQUMsQUFDbEMsQUFBQyxBQUNGLEFBRUQ7Ozs7RUFQK0IsQUFBZSxBQUM1QyxBQUFNOztJQU1jOzs7Ozs7Ozs7K0RBQ1QsQUFBYyxRQUFFLEFBQVcsS0FBRSxBQUFvQixXQUMxRDtZQUFJLEFBQUksT0FBRyxBQUFLLHlCQUFDLEFBQVUsc0JBQUMsQUFBTSxRQUFFLEFBQUcsS0FBRSxBQUFTLEFBQUMsQUFBQyxBQUNwRDtlQUFPLElBQUksQUFBZ0IsaUJBQUMsQUFBMEIsQUFBQyxBQUFDLEFBQzFELEFBQUMsQUFDRjs7OztFQUw2QixBQUFhLEFBQ3pDLEFBQVUsQUFNWixBQUFNOztvQkFBcUIsQUFBWSxNQUFFLEFBQWtCLFlBQUUsQUFBaUMsVUFDNUY7UUFBSSxBQUFDLEVBQUUsQUFBcUIsY0FBSSxBQUFJLEFBQUMsT0FBRSxPQUFPLEFBQVMsVUFBQyxBQUFRLEFBQUMsQUFBQyxBQUVsRTtRQUFJLEFBQVcsY0FBRyxBQUFJLEtBQUMsQUFBVSxBQUFDLEFBQUMsQUFFbkM7UUFBSSxBQUFJLE9BQUcsQUFBOEIsZ0JBQ3ZDO21HQUQwQyxBQUFXOzs7O1lBQ2pELENBQUMsQUFBSSxNQUFFLE9BQU8sQUFBUSxTQUFDLEFBQUssTUFBQyxBQUFJLE1BQUUsQUFBSSxBQUFDLEFBQUMsQUFFN0M7WUFBSSxBQUFTLFlBQUcsQUFBSSxLQUFDLEFBQU0sQUFBQyxBQUM1QixBQUFJO2FBQUMsQUFBTSxTQUFHLEFBQVcsQUFBQyxBQUUxQjtZQUFJLEFBQ0Y7bUJBQU8sQUFBUSxTQUFDLEFBQUssTUFBQyxBQUFJLE1BQUUsQUFBSSxBQUFDLEFBQUMsQUFDbkM7a0JBQVMsQUFDUixBQUFJO2lCQUFDLEFBQU0sU0FBRyxBQUFTLEFBQUMsQUFDekIsQUFDSCxBQUFDLEFBQUM7QUFFRCxBQUFZOztTQUFDLEFBQVMsWUFBRyxBQUFJLEFBQUMsQUFFL0I7V0FBTyxBQUFJLEFBQUMsQUFDZCxBQUFDOztBQUVELG1CQUFtQixBQUFrQixVQUNuQztRQUFJLEFBQVcsZUFBSSxBQUFRLFVBQUUsT0FBTyxBQUFRLEFBQUMsQUFFN0M7V0FBTyxBQUE4QixZQUNuQzttR0FEc0MsQUFBVzs7OztZQUM3QyxDQUFDLEFBQUksTUFBRSxPQUFPLEFBQVEsU0FBQyxBQUFLLE1BQUMsQUFBSSxNQUFFLEFBQUksQUFBQyxBQUFDLEFBRTdDO1lBQUksQUFBUyxZQUFHLEFBQUksS0FBQyxBQUFNLEFBQUMsQUFDNUIsQUFBSTthQUFDLEFBQU0sQUFBRyxBQUFJLEFBQUMsQUFFbkI7WUFBSSxBQUNGO21CQUFPLEFBQVEsU0FBQyxBQUFLLE1BQUMsQUFBSSxNQUFFLEFBQUksQUFBQyxBQUFDLEFBQ25DO2tCQUFTLEFBQ1IsQUFBSTtpQkFBQyxBQUFNLFNBQUcsQUFBUyxBQUFDLEFBQ3pCLEFBQ0gsQUFBQyxBQUFDLEFBQ0o7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENMQVNTX01FVEEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QsIGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IEdsaW1tZXJPYmplY3QsIHtcbiAgR2xpbW1lck9iamVjdEZhY3RvcnksXG4gIENsYXNzTWV0YSxcbiAgSW5zdGFuY2VNZXRhLFxuICB0dXJib2NoYXJnZSxcbn0gZnJvbSAnLi9vYmplY3QnO1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmV4cG9ydCBjb25zdCBERVNDUklQVE9SID0gJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYyc7XG5leHBvcnQgY29uc3QgQkxVRVBSSU5UID0gJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZXNjcmlwdG9yIHtcbiAgJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYycgPSB0cnVlO1xuICBhYnN0cmFjdCBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmx1ZXByaW50IHtcbiAgJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNScgPSB0cnVlO1xuICBhYnN0cmFjdCBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbnMge1xuICBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsO1xuICBtZXJnZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmc7XG4gIF9zdXBlcj86IEZ1bmN0aW9uO1xuICBbaW5kZXg6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIE1peGluIHtcbiAgcHJpdmF0ZSBleHRlbnNpb25zOiBEaWN0PGFueT4gPSBudWxsIGFzIGFueTsgLy8gYXNzaWduZWQgYmVmb3JlIHVzZWRcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZGVwZW5kZW5jaWVzOiBNaXhpbltdID0gW107XG5cbiAgc3RhdGljIGNyZWF0ZSguLi5hcmdzOiAoTWl4aW4gfCBFeHRlbnNpb25zKVtdKSB7XG4gICAgbGV0IGV4dGVuc2lvbnMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgW10pO1xuICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9ucyBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIGFyZ3MgYXMgTWl4aW5bXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkZXBzID0gYXJncy5zbGljZSgwLCAtMSkubWFwKHRvTWl4aW4pO1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKGV4dGVuc2lvbnMgYXMgRXh0ZW5zaW9ucywgZGVwcyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1peGlucyhvYmo6IGFueSk6IE1peGluW10ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBbXTtcblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIGlmICghbWV0YSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIG1ldGEuZ2V0QXBwbGllZE1peGlucygpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZXh0ZW5zaW9uczogRXh0ZW5zaW9ucywgbWl4aW5zOiBNaXhpbltdKSB7XG4gICAgdGhpcy5yZW9wZW4oZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCguLi5taXhpbnMpO1xuICB9XG5cbiAgZGV0ZWN0KG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gb2JqLmRlcGVuZGVuY2llcy5pbmRleE9mKHRoaXMpICE9PSAtMTtcbiAgICB9XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICByZXR1cm4gISFtZXRhICYmIG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpO1xuICB9XG5cbiAgcmVvcGVuKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMpIHtcbiAgICBpZiAodGhpcy5leHRlbnNpb25zKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKHRvTWl4aW4odGhpcy5leHRlbnNpb25zKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IGNvbmNhdDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3Q29uY2F0ID0gZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdDb25jYXQpKSB7XG4gICAgICAgIGNvbmNhdCA9IChyYXdDb25jYXQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd0NvbmNhdCA9PT0gbnVsbCB8fCByYXdDb25jYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25jYXQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmNhdCA9IFtyYXdDb25jYXQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGNvbmNhdDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdtZXJnZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICBsZXQgbWVyZ2VkOiBzdHJpbmdbXTtcbiAgICAgIGxldCByYXdNZXJnZWQgPSBleHRlbnNpb25zLm1lcmdlZFByb3BlcnRpZXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHJhd01lcmdlZCkpIHtcbiAgICAgICAgbWVyZ2VkID0gKHJhd01lcmdlZCBhcyBzdHJpbmdbXSkuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAocmF3TWVyZ2VkID09PSBudWxsIHx8IHJhd01lcmdlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1lcmdlZCA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkID0gW3Jhd01lcmdlZCBhcyBzdHJpbmddO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gbWVyZ2VkO1xuICAgIH1cblxuICAgIGxldCBub3JtYWxpemVkOiBEaWN0PEJsdWVwcmludD4gPSBPYmplY3Qua2V5cyhleHRlbnNpb25zKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBleHRlbnNpb25zW2tleV07XG5cbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBNZXRob2RCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBpZiAodmFsdWUgJiYgQkxVRVBSSU5UIGluIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgRGF0YUJsdWVwcmludCh7IHZhbHVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIGRpY3Q8Qmx1ZXByaW50PigpKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IGRpY3Q8YW55PigpO1xuICAgIGFzc2lnbih0aGlzLmV4dGVuc2lvbnMsIHR1cmJvY2hhcmdlKG5vcm1hbGl6ZWQpKTtcbiAgfVxuXG4gIGFwcGx5KHRhcmdldDogYW55KSB7XG4gICAgbGV0IG1ldGE6IENsYXNzTWV0YSA9ICh0YXJnZXRbQ0xBU1NfTUVUQV0gPSB0YXJnZXRbQ0xBU1NfTUVUQV0gfHwgbmV3IENsYXNzTWV0YSgpKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5hcHBseSh0YXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyh0YXJnZXQsIHRhcmdldCwgbWV0YSk7XG4gICAgbWV0YS5hZGRNaXhpbih0aGlzKTtcbiAgICBtZXRhLnNlYWwoKTtcbiAgICBtZXRhLnJlc2VhbCh0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZShPcmlnaW5hbDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIE9yaWdpbmFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3JpZ2luYWwucHJvdG90eXBlKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGUoT3JpZ2luYWwpKTtcbiAgICB0aGlzLmV4dGVuZFByb3RvdHlwZU9udG8oT3JpZ2luYWwsIE9yaWdpbmFsKTtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFN1YmNsYXNzLnByb3RvdHlwZSwgUGFyZW50LnByb3RvdHlwZSwgU3ViY2xhc3NbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKHRoaXMpO1xuICB9XG5cbiAgZXh0ZW5kU3RhdGljKFRhcmdldDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhUYXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhUYXJnZXQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihUYXJnZXQpLCBUYXJnZXRbQ0xBU1NfTUVUQV1bQ0xBU1NfTUVUQV0pO1xuICAgIFRhcmdldFtDTEFTU19NRVRBXS5hZGRTdGF0aWNNaXhpbih0aGlzKTtcbiAgfVxuXG4gIG1lcmdlUHJvcGVydGllcyh0YXJnZXQ6IE9iamVjdCwgcGFyZW50OiBPYmplY3QsIG1ldGE6IENsYXNzTWV0YSkge1xuICAgIGlmIChtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKSkgcmV0dXJuO1xuICAgIG1ldGEuYWRkQXBwbGllZE1peGluKHRoaXMpO1xuXG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZE1lcmdlZFByb3BlcnR5KGssIHBhcmVudFtrXSkpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrLCBbXSkpO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUoXG4gICAgICB0YXJnZXQsXG4gICAgICAnY29uY2F0ZW5hdGVkUHJvcGVydGllcydcbiAgICApO1xuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRNZXJnZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ21lcmdlZFByb3BlcnRpZXMnKTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZW5zaW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgbGV0IGV4dGVuc2lvbjogQmx1ZXByaW50ID0gdGhpcy5leHRlbnNpb25zIVtrZXldO1xuICAgICAgbGV0IGRlc2MgPSBleHRlbnNpb24uZGVzY3JpcHRvcih0YXJnZXQsIGtleSBhcyBzdHJpbmcsIG1ldGEpO1xuICAgICAgZGVzYy5kZWZpbmUodGFyZ2V0LCBrZXkgYXMgc3RyaW5nLCBwYXJlbnQpO1xuICAgIH0pO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBST09UIH0pLmRlZmluZSh0YXJnZXQsICdfc3VwZXInIGFzIHN0cmluZyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uID0gTWl4aW4gfCBFeHRlbnNpb25zO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kPFQgZXh0ZW5kcyBHbGltbWVyT2JqZWN0PihcbiAgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPixcbiAgLi4uZXh0ZW5zaW9uczogRXh0ZW5zaW9uW11cbik6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4ge1xuICBsZXQgU3VwZXIgPSBQYXJlbnQgYXMgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgbGV0IFN1YmNsYXNzID0gY2xhc3MgZXh0ZW5kcyBTdXBlciB7fTtcbiAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0gPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuXG4gIGxldCBtaXhpbnMgPSBleHRlbnNpb25zLm1hcCh0b01peGluKTtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmFkZFN1YmNsYXNzKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pO1xuICBtaXhpbnMuZm9yRWFjaChtID0+IFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKG0pKTtcblxuICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MgYXMgR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50KTtcblxuICByZXR1cm4gU3ViY2xhc3MgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsaW5rU3ViY2xhc3NlcyhQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmdldFN1YmNsYXNzZXMoKS5mb3JFYWNoKChTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PikgPT4ge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnJlc2V0KFBhcmVudFtDTEFTU19NRVRBXSk7XG4gICAgU3ViY2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQYXJlbnQucHJvdG90eXBlKTtcblxuICAgIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcywgUGFyZW50KTtcblxuICAgIC8vIHJlY3Vyc2UgaW50byBzdWItc3ViY2xhc3Nlc1xuICAgIHJlbGlua1N1YmNsYXNzZXMoU3ViY2xhc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTWl4aW4oZXh0ZW5zaW9uOiBFeHRlbnNpb24pOiBNaXhpbiB7XG4gIGlmIChleHRlbnNpb24gaW5zdGFuY2VvZiBNaXhpbikgcmV0dXJuIGV4dGVuc2lvbjtcbiAgZWxzZSByZXR1cm4gbmV3IE1peGluKGV4dGVuc2lvbiBhcyBPYmplY3QsIFtdKTtcbn1cblxuY2xhc3MgVmFsdWVEZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIHdyaXRhYmxlID0gdHJ1ZSxcbiAgICB2YWx1ZSxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBfaG9tZT86IGFueSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgIHdyaXRhYmxlOiB0aGlzLndyaXRhYmxlLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGFCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICB3cml0YWJsZSA9IHRydWUsXG4gICAgdmFsdWUsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGxldCB7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0gPSB0aGlzO1xuXG4gICAgaWYgKGNsYXNzTWV0YS5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgY2xhc3NNZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcsIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSBpZiAoY2xhc3NNZXRhLmhhc01lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkTWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZywgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0TWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9KTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWNjZXNzb3JCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgZ2V0OiAoKSA9PiBhbnk7XG4gIHNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgZ2V0LFxuICAgIHNldCxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yICYgeyBnZXQ6IGFueTsgc2V0OiBhbnkgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLmdldCA9IGdldDtcbiAgICB0aGlzLnNldCA9IHNldDtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9jbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICBnZXQ6IHRoaXMuZ2V0LFxuICAgICAgc2V0OiB0aGlzLnNldCxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgVmFsdWVEZXNjcmlwdG9yIHtcbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHdyYXBNZXRob2QoaG9tZSwga2V5LCB0aGlzLnZhbHVlKTtcbiAgICBzdXBlci5kZWZpbmUodGFyZ2V0LCBrZXksIGhvbWUpO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZEJsdWVwcmludCBleHRlbmRzIERhdGFCbHVlcHJpbnQge1xuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBNZXRob2REZXNjcmlwdG9yIHtcbiAgICBsZXQgZGVzYyA9IHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIGNsYXNzTWV0YSk7XG4gICAgcmV0dXJuIG5ldyBNZXRob2REZXNjcmlwdG9yKGRlc2MgYXMgUHJvcGVydHlEZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcE1ldGhvZChob21lOiBPYmplY3QsIG1ldGhvZE5hbWU6IHN0cmluZywgb3JpZ2luYWw6ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55KSB7XG4gIGlmICghKChtZXRob2ROYW1lIGFzIHN0cmluZykgaW4gaG9tZSkpIHJldHVybiBtYXliZVdyYXAob3JpZ2luYWwpO1xuXG4gIGxldCBzdXBlck1ldGhvZCA9IGhvbWVbbWV0aG9kTmFtZV07XG5cbiAgbGV0IGZ1bmMgPSBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gc3VwZXJNZXRob2Q7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgKGZ1bmMgYXMgYW55KS5fX3dyYXBwZWQgPSB0cnVlO1xuXG4gIHJldHVybiBmdW5jO1xufVxuXG5mdW5jdGlvbiBtYXliZVdyYXAob3JpZ2luYWw6IEZ1bmN0aW9uKSB7XG4gIGlmICgnX193cmFwcGVkJyBpbiBvcmlnaW5hbCkgcmV0dXJuIG9yaWdpbmFsO1xuXG4gIHJldHVybiBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ== |
@@ -440,2 +440,2 @@ "use strict"; | ||
GlimmerObject.isClass = true; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBSSxBQUF5QixBQUFpQixBQUFFLEFBQU0sQUFBMkIsQUFBQzs7QUFDM0YsQUFBTyxBQUFRLEFBQUksQUFBRSxBQUFNLEFBQUUsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNuRSxBQUFPLEFBQVMsQUFBTSxBQUFJLEFBQVcsQUFBRSxBQUFPLEFBQUUsQUFBZ0IsQUFBRSxBQUFVLEFBQUUsQUFBTSxBQUFTLEFBQUMsQUFFOUYsQUFBTTs7QUFFTixBQUFPLEFBQUUsQUFBSSxBQUFFLEFBQU0sQUFBUyxBQUFDOztBQUUvQixBQUFPLEFBQUUsQUFBSSxBQUFFLEFBQU0sQUFBb0IsQUFBQyxBQUUxQyxBQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBTkUsQUFBTyxBQUFFLFVBQUcsQUFBSyxBQUFDOztBQU1uQixJQUFNLEFBQVcsb0NBQUcsdUJBQXdCLEFBQUMsQUFBQztBQUVyRCxJQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDLEFBd0IxRCxBQUFNO3FCQUF5QixBQUFNLEtBQ25DLEFBQXNCLEFBQ3RCLEFBQXlCO0FBQ3pCLEFBQU07O1dBQUMsQUFBRyxBQUFDLEFBQ2IsQUFBQyxBQUVEOzs7SUFBMEI7Ozs7Ozs7Ozt5QkFDSixBQUFHLEFBQVkscURBQ2pDO2NBQU0sSUFBSSxBQUFLLE1BQUMsQUFBZ0QsQUFBQyxBQUFDLEFBQ3BFLEFBQUMsQUFDRjs7OztBQUppQyxBQUFJLEFBQ3BDLEFBQW1CLEFBS3JCLEFBQU07O0lBQU47eUJBQ1U7OzthQUFjLGlCQUFHLEFBQUksQUFBOEIsQUFBQyxBQUNwRDthQUFnQixtQkFBRyxBQUFJLEFBQU8sQUFBQyxBQUMvQjthQUFzQix5QkFBRyxBQUFJLEFBQVMsQUFB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QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ldGEsIElubmVyUmVmZXJlbmNlRmFjdG9yeSwgUHJvcGVydHlSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QsIGFzc2lnbiwgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IE1peGluLCBleHRlbmQgYXMgZXh0ZW5kQ2xhc3MsIHRvTWl4aW4sIHJlbGlua1N1YmNsYXNzZXMsIHdyYXBNZXRob2QgfSBmcm9tICcuL21peGluJztcblxuY29uc3QgeyBpc0FycmF5IH0gPSBBcnJheTtcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBidW1wIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcblxuZXhwb3J0IGNvbnN0IEVNUFRZX0NBQ0hFID0gZnVuY3Rpb24gRU1QVFlfQ0FDSEUoKSB7fTtcblxuY29uc3QgQ0xBU1NfTUVUQSA9ICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdFdpdGhNaXhpbnMge1xuICAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogQ2xhc3NNZXRhO1xuICBfbWV0YTogTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZVdpdGhNaXhpbnMge1xuICBjb25zdHJ1Y3RvcjogT2JqZWN0V2l0aE1peGlucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPiB7XG4gIG5ldyA8VT4oYXR0cnM/OiBVKTogR2xpbW1lck9iamVjdCAmIFQgJiBVO1xuICBleHRlbmQoKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8T2JqZWN0PjtcbiAgZXh0ZW5kPFQ+KGV4dGVuc2lvbjogVCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+O1xuICBleHRlbmQoLi4uZXh0ZW5zaW9uczogT2JqZWN0W10pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxPYmplY3Q+O1xuICBjcmVhdGU8VT4oYXR0cnM/OiBVKTogR2xpbW1lck9iamVjdCAmIFQgJiBVO1xuICByZW9wZW48VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQ7XG4gIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkO1xuICBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdDtcbiAgZWFjaENvbXB1dGVkUHJvcGVydHkoY2FsbGJhY2s6IChzOiBzdHJpbmcsIG86IE9iamVjdCkgPT4gdm9pZCk6IHZvaWQ7XG4gICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBJbnN0YW5jZU1ldGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dXJib2NoYXJnZTxUPihvYmo6IFQpOiBUIHtcbiAgLy8gZnVuY3Rpb24gRHVtbXkoKSB7fVxuICAvLyBEdW1teS5wcm90b3R5cGUgPSBvYmo7XG4gIHJldHVybiBvYmo7XG59XG5cbmFic3RyYWN0IGNsYXNzIFNlYWxlZE1ldGEgZXh0ZW5kcyBNZXRhIHtcbiAgYWRkUmVmZXJlbmNlVHlwZUZvciguLi5fYXJnczogYW55W10pOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgbW9kaWZ5IHJlZmVyZW5jZSB0eXBlcyBvbiBhIHNlYWxlZCBtZXRhJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsYXNzTWV0YSB7XG4gIHByaXZhdGUgcmVmZXJlbmNlVHlwZXMgPSBkaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PigpO1xuICBwcml2YXRlIHByb3BlcnR5TWV0YWRhdGEgPSBkaWN0PGFueT4oKTtcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgcHJpdmF0ZSBoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHByaXZhdGUgbWVyZ2VkUHJvcGVydGllcyA9IGRpY3Q8T2JqZWN0PigpO1xuICBwcml2YXRlIGhhc01lcmdlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBhcHBsaWVkTWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgc3RhdGljTWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgc3ViY2xhc3NlczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PltdID0gW107XG4gIHByaXZhdGUgc2xvdHM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyBJbnN0YW5jZU1ldGFDb25zdHJ1Y3RvcjogT3B0aW9uPHR5cGVvZiBNZXRhPiA9IG51bGw7XG5cbiAgc3RhdGljIGZyb21QYXJlbnQocGFyZW50OiBPcHRpb248Q2xhc3NNZXRhPikge1xuICAgIGxldCBtZXRhID0gbmV3IHRoaXMoKTtcbiAgICBtZXRhLnJlc2V0KHBhcmVudCk7XG4gICAgcmV0dXJuIG1ldGE7XG4gIH1cblxuICBzdGF0aWMgZm9yKG9iamVjdDogT2JqZWN0V2l0aE1peGlucyB8IEluc3RhbmNlV2l0aE1peGlucyk6IE9wdGlvbjxDbGFzc01ldGE+IHtcbiAgICBpZiAoQ0xBU1NfTUVUQSBpbiBvYmplY3QpIHJldHVybiAob2JqZWN0IGFzIE9iamVjdFdpdGhNaXhpbnMpW0NMQVNTX01FVEFdO1xuICAgIGVsc2UgaWYgKG9iamVjdC5jb25zdHJ1Y3RvcilcbiAgICAgIHJldHVybiAob2JqZWN0IGFzIEluc3RhbmNlV2l0aE1peGlucykuY29uc3RydWN0b3JbQ0xBU1NfTUVUQV0gfHwgbnVsbDtcbiAgICBlbHNlIHJldHVybiBudWxsO1xuICB9XG5cbiAgaW5pdChvYmplY3Q6IEdsaW1tZXJPYmplY3QsIGF0dHJzOiBPcHRpb248T2JqZWN0Pikge1xuICAgIGlmICh0eXBlb2YgYXR0cnMgIT09ICdvYmplY3QnIHx8IGF0dHJzID09PSBudWxsKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgY29uY2F0UHJvcHMgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIGNvbmNhdFByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wIGluIGF0dHJzKSB7XG4gICAgICAgICAgbGV0IGNvbmNhdCA9IGNvbmNhdFByb3BzW3Byb3BdLnNsaWNlKCk7XG4gICAgICAgICAgb2JqZWN0W3Byb3BdID0gY29uY2F0LmNvbmNhdChhdHRyc1twcm9wXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgbWVyZ2VkUHJvcHMgPSB0aGlzLm1lcmdlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIG1lcmdlZFByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wIGluIGF0dHJzKSB7XG4gICAgICAgICAgbGV0IG1lcmdlZCA9IGFzc2lnbih7fSwgbWVyZ2VkUHJvcHNbcHJvcF0pO1xuICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGFzc2lnbihtZXJnZWQsIGF0dHJzW3Byb3BdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZFN0YXRpY01peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMuc3RhdGljTWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgYWRkTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5taXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBnZXRTdGF0aWNNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zO1xuICB9XG5cbiAgZ2V0TWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLm1peGlucztcbiAgfVxuXG4gIGFkZEFwcGxpZWRNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLmFwcGxpZWRNaXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBoYXNBcHBsaWVkTWl4aW4obWl4aW46IE1peGluKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucy5pbmRleE9mKG1peGluKSAhPT0gLTE7XG4gIH1cblxuICBnZXRBcHBsaWVkTWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpZWRNaXhpbnM7XG4gIH1cblxuICBoYXNTdGF0aWNNaXhpbihtaXhpbjogTWl4aW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5nZXRNaXhpbnMoKS5mb3JFYWNoKChtOiBNaXhpbikgPT4gbS5leHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5nZXRTdGF0aWNNaXhpbnMoKS5mb3JFYWNoKChtOiBNaXhpbikgPT4gbS5leHRlbmRTdGF0aWMoU3ViY2xhc3MpKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cblxuICBhZGRTdWJjbGFzcyhjb25zdHJ1Y3RvcjogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuc3ViY2xhc3Nlcy5wdXNoKGNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGdldFN1YmNsYXNzZXMoKTogRnVuY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViY2xhc3NlcztcbiAgfVxuXG4gIGFkZFByb3BlcnR5TWV0YWRhdGEocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgfVxuXG4gIG1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV07XG4gIH1cblxuICBhZGRSZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcsIHR5cGU6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gPSB0eXBlO1xuICB9XG5cbiAgYWRkU2xvdEZvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgdGhpcy5zbG90cy5wdXNoKHByb3BlcnR5KTtcbiAgfVxuXG4gIGhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmICgocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCB2YWwgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldLmNvbmNhdCh2YWx1ZSk7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaGFzTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWVyZ2VkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogT2JqZWN0KSB7XG4gICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IHBhc3NlZCBpbiBcXGAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgICl9XFxgIGFzIHRoZSB2YWx1ZSBmb3IgXFxgZm9vXFxgIGJ1dCBcXGBmb29cXGAgY2Fubm90IGJlIGFuIEFycmF5YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzICYmIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSBtZXJnZU1lcmdlZFByb3BlcnRpZXMoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlID09PSBudWxsID8gdmFsdWUgOiB2YWx1ZSB8fCB7fTtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZlcmVuY2VUeXBlcygpOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gIH1cblxuICBnZXRQcm9wZXJ0eU1ldGFkYXRhKCk6IERpY3Q8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGEgPSBkaWN0KCk7XG4gICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHBhcmVudC5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0gPSBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXS5zbGljZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzTWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50Lm1lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdID0gYXNzaWduKHt9LCBwYXJlbnQubWVyZ2VkUHJvcGVydGllc1twcm9wXSk7XG4gICAgICB9XG5cbiAgICAgIGFzc2lnbih0aGlzLnJlZmVyZW5jZVR5cGVzLCBwYXJlbnQucmVmZXJlbmNlVHlwZXMpO1xuICAgICAgYXNzaWduKHRoaXMucHJvcGVydHlNZXRhZGF0YSwgcGFyZW50LnByb3BlcnR5TWV0YWRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2VhbChvYmo6IE9iamVjdCkge1xuICAgIGxldCBtZXRhID0gTWV0YS5mb3Iob2JqKTtcbiAgICBsZXQgZnJlc2ggPSBuZXcgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciEob2JqLCB7fSk7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzID0gbWV0YS5nZXRSZWZlcmVuY2VUeXBlcygpO1xuICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcblxuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihyZWZlcmVuY2VUeXBlcywgdGhpcy5yZWZlcmVuY2VUeXBlcykpO1xuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihzbG90cywgZnJlc2guZ2V0U2xvdHMoKSkpO1xuICB9XG5cbiAgc2VhbCgpIHtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXM6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+ID0gdHVyYm9jaGFyZ2UoXG4gICAgICBhc3NpZ24oe30sIHRoaXMucmVmZXJlbmNlVHlwZXMpXG4gICAgKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMubWVyZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyAmJiAhdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbigpIHt9O1xuICAgIH1cblxuICAgIGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cbiAgICBjbGFzcyBTbG90cyB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc2xvdHMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICB0aGlzW25hbWVdID0gRU1QVFlfQ0FDSEU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIFNlYWxlZE1ldGEge1xuICAgICAgcHJvdGVjdGVkIHNsb3RzOiBTbG90cyA9IG5ldyBTbG90cygpO1xuICAgICAgcHVibGljIHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHJlZmVyZW5jZVR5cGVzO1xuXG4gICAgICBnZXRSZWZlcmVuY2VUeXBlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgICB9XG5cbiAgICAgIHJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZyk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldIHx8IFByb3BlcnR5UmVmZXJlbmNlO1xuICAgICAgfVxuXG4gICAgICBnZXRTbG90cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHM7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHR1cmJvY2hhcmdlKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWVyZ2VkUHJvcGVydGllcyhhdHRyczogT2JqZWN0LCBwYXJlbnQ6IE9iamVjdCkge1xuICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBwYXJlbnQpO1xuXG4gIGZvciAobGV0IHByb3AgaW4gYXR0cnMpIHtcbiAgICBpZiAocHJvcCBpbiBwYXJlbnQgJiYgdHlwZW9mIHBhcmVudFtwcm9wXSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgYXR0cnNbcHJvcF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCB3cmFwcGVkID0gd3JhcE1ldGhvZChwYXJlbnQsIHByb3AsIGF0dHJzW3Byb3BdKTtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IHdyYXBwZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IGF0dHJzW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZU1ldGEgZXh0ZW5kcyBDbGFzc01ldGEge1xuICBwdWJsaWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YSA9IENsYXNzTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPEluc3RhbmNlTWV0YT4pOiBJbnN0YW5jZU1ldGEge1xuICAgIHJldHVybiBzdXBlci5mcm9tUGFyZW50KHBhcmVudCkgYXMgSW5zdGFuY2VNZXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBJbnN0YW5jZU1ldGEpIHtcbiAgICBzdXBlci5yZXNldChwYXJlbnQpO1xuICAgIGlmIChwYXJlbnQpIHRoaXNbQ0xBU1NfTUVUQV0ucmVzZXQocGFyZW50W0NMQVNTX01FVEFdKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgc3VwZXIuc2VhbCgpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsaW1tZXJPYmplY3Qge1xuICBzdGF0aWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuICBzdGF0aWMgaXNDbGFzcyA9IHRydWU7XG5cbiAgc3RhdGljIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcblxuICBzdGF0aWMgZXh0ZW5kKHRoaXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIC4uLmV4dGVuc2lvbnM6IGFueVtdKSB7XG4gICAgcmV0dXJuIGV4dGVuZENsYXNzKHRoaXMsIC4uLmV4dGVuc2lvbnMpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShhdHRycz86IE9iamVjdCB8IG51bGwpOiBHbGltbWVyT2JqZWN0IHtcbiAgICByZXR1cm4gbmV3IHRoaXMoYXR0cnMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRQcm90b3R5cGUodGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG5cbiAgICByZWxpbmtTdWJjbGFzc2VzKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFN0YXRpYyh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIHN0YXRpYyBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgbGV0IHZhbHVlID0gdGhpc1tDTEFTU19NRVRBXS5tZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5KTtcbiAgICBpZiAoIXZhbHVlKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWV0YUZvclByb3BlcnR5KCkgY291bGQgbm90IGZpbmQgYSBjb21wdXRlZCBwcm9wZXJ0eSB3aXRoIGtleSAnJHtwcm9wZXJ0eX0nLmBcbiAgICAgICk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBsZXQgbWV0YWRhdGEgPSB0aGlzW0NMQVNTX01FVEFdLmdldFByb3BlcnR5TWV0YWRhdGEoKTtcbiAgICBpZiAoIW1ldGFkYXRhKSByZXR1cm47XG5cbiAgICBmb3IgKGxldCBwcm9wIGluIG1ldGFkYXRhKSB7XG4gICAgICBjYWxsYmFjayhwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgX3N1cGVyID0gUk9PVDtcbiAgX21ldGEgPSBudWxsO1xuICBfZ3VpZDogbnVtYmVyO1xuXG4gIGluaXQoKSB7fVxuXG4gIGNvbnN0cnVjdG9yKGF0dHJzPzogT2JqZWN0IHwgbnVsbCkge1xuICAgIGlmIChhdHRycykgYXNzaWduKHRoaXMsIGF0dHJzKTtcbiAgICAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgR2xpbW1lck9iamVjdClbQ0xBU1NfTUVUQV0uaW5pdCh0aGlzLCBhdHRycyB8fCBudWxsKTtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG4gICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzW2tleV07XG4gIH1cblxuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgICBidW1wKCk7XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKGF0dHJzOiBPYmplY3QpIHtcbiAgICBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7fVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFPLEFBQUUsQUFBSSxBQUF5QixBQUFpQixBQUFFLEFBQU0sQUFBMkIsQUFBQzs7QUFDM0YsQUFBTyxBQUFRLEFBQUksQUFBRSxBQUFNLEFBQUUsQUFBYyxBQUFFLEFBQU0sQUFBZSxBQUFDOztBQUNuRSxBQUFPLEFBQVMsQUFBTSxBQUFJLEFBQVcsQUFBRSxBQUFPLEFBQUUsQUFBZ0IsQUFBRSxBQUFVLEFBQUUsQUFBTSxBQUFTLEFBQUMsQUFFOUYsQUFBTTs7QUFFTixBQUFPLEFBQUUsQUFBSSxBQUFFLEFBQU0sQUFBUyxBQUFDOztBQUUvQixBQUFPLEFBQUUsQUFBSSxBQUFFLEFBQU0sQUFBb0IsQUFBQyxBQUUxQyxBQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBTkUsQUFBTyxBQUFFLFVBQUcsQUFBSyxBQUFDOztBQU1uQixJQUFNLEFBQVcsb0NBQUcsdUJBQXdCLEFBQUMsQUFBQztBQUVyRCxJQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDLEFBd0IxRCxBQUFNO3FCQUF5QixBQUFNLEtBQ25DLEFBQXNCLEFBQ3RCLEFBQXlCO0FBQ3pCOztXQUFPLEFBQUcsQUFBQyxBQUNiLEFBQUMsQUFFRDs7O0lBQTBCOzs7Ozs7Ozs7eUJBQ0osQUFBRyxBQUFZLHFEQUNqQztjQUFNLElBQUksQUFBSyxNQUFDLEFBQWdELEFBQUMsQUFBQyxBQUNwRSxBQUFDLEFBQ0Y7Ozs7QUFKaUMsQUFBSSxBQUNwQyxBQUFtQixBQUtyQixBQUFNOztJQUFOO3lCQUNVOzs7YUFBYyxpQkFBRyxBQUFJLEFBQThCLEFBQUMsQUFDcEQ7YUFBZ0IsbUJBQUcsQUFBSSxBQUFPLEFBQUMsQUFDL0I7YUFBc0IseUJBQUcsQUFBSSxBQUFTLEFBQUMsQUFD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MEJBQUMsQUFBSSxNQUFFLEFBQUssQUFBQyxBQUFDLEFBQ3BCLEFBQUksQUFBRSxBQUFDLEFBQ1QsQUFBQztBQUVELEFBQU87Ozt5REFBSSxBQUFDOzs7Ozs7OztBQXpFTCxjQUFzQywwQ0FBaUIsQUFBWSxhQUFDLEFBQVUsV0FBQyxBQUFJLEFBQUMsQUFBQztBQUNyRixjQUFPLFVBQUcsQUFBSSxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWV0YSwgSW5uZXJSZWZlcmVuY2VGYWN0b3J5LCBQcm9wZXJ0eVJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRGljdCwgZGljdCwgYXNzaWduLCBpbml0aWFsaXplR3VpZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgTWl4aW4sIGV4dGVuZCBhcyBleHRlbmRDbGFzcywgdG9NaXhpbiwgcmVsaW5rU3ViY2xhc3Nlcywgd3JhcE1ldGhvZCB9IGZyb20gJy4vbWl4aW4nO1xuXG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGJ1bXAgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfQ0FDSEUgPSBmdW5jdGlvbiBFTVBUWV9DQUNIRSgpIHt9O1xuXG5jb25zdCBDTEFTU19NRVRBID0gJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0V2l0aE1peGlucyB7XG4gICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBDbGFzc01ldGE7XG4gIF9tZXRhOiBNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlV2l0aE1peGlucyB7XG4gIGNvbnN0cnVjdG9yOiBPYmplY3RXaXRoTWl4aW5zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+IHtcbiAgbmV3IDxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxPYmplY3Q+O1xuICBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD47XG4gIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGNyZWF0ZTxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgcmVvcGVuQ2xhc3M8VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQ7XG4gIG1ldGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0O1xuICBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZDtcbiAgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1cmJvY2hhcmdlPFQ+KG9iajogVCk6IFQge1xuICAvLyBmdW5jdGlvbiBEdW1teSgpIHt9XG4gIC8vIER1bW15LnByb3RvdHlwZSA9IG9iajtcbiAgcmV0dXJuIG9iajtcbn1cblxuYWJzdHJhY3QgY2xhc3MgU2VhbGVkTWV0YSBleHRlbmRzIE1ldGEge1xuICBhZGRSZWZlcmVuY2VUeXBlRm9yKC4uLl9hcmdzOiBhbnlbXSk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBtb2RpZnkgcmVmZXJlbmNlIHR5cGVzIG9uIGEgc2VhbGVkIG1ldGEnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xhc3NNZXRhIHtcbiAgcHJpdmF0ZSByZWZlcmVuY2VUeXBlcyA9IGRpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+KCk7XG4gIHByaXZhdGUgcHJvcGVydHlNZXRhZGF0YSA9IGRpY3Q8YW55PigpO1xuICBwcml2YXRlIGNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0PGFueVtdPigpO1xuICBwcml2YXRlIGhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzID0gZGljdDxPYmplY3Q+KCk7XG4gIHByaXZhdGUgaGFzTWVyZ2VkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIGFwcGxpZWRNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGF0aWNNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJjbGFzc2VzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+W10gPSBbXTtcbiAgcHJpdmF0ZSBzbG90czogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIEluc3RhbmNlTWV0YUNvbnN0cnVjdG9yOiBPcHRpb248dHlwZW9mIE1ldGE+ID0gbnVsbDtcblxuICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQ6IE9wdGlvbjxDbGFzc01ldGE+KSB7XG4gICAgbGV0IG1ldGEgPSBuZXcgdGhpcygpO1xuICAgIG1ldGEucmVzZXQocGFyZW50KTtcbiAgICByZXR1cm4gbWV0YTtcbiAgfVxuXG4gIHN0YXRpYyBmb3Iob2JqZWN0OiBPYmplY3RXaXRoTWl4aW5zIHwgSW5zdGFuY2VXaXRoTWl4aW5zKTogT3B0aW9uPENsYXNzTWV0YT4ge1xuICAgIGlmIChDTEFTU19NRVRBIGluIG9iamVjdCkgcmV0dXJuIChvYmplY3QgYXMgT2JqZWN0V2l0aE1peGlucylbQ0xBU1NfTUVUQV07XG4gICAgZWxzZSBpZiAob2JqZWN0LmNvbnN0cnVjdG9yKVxuICAgICAgcmV0dXJuIChvYmplY3QgYXMgSW5zdGFuY2VXaXRoTWl4aW5zKS5jb25zdHJ1Y3RvcltDTEFTU19NRVRBXSB8fCBudWxsO1xuICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpbml0KG9iamVjdDogR2xpbW1lck9iamVjdCwgYXR0cnM6IE9wdGlvbjxPYmplY3Q+KSB7XG4gICAgaWYgKHR5cGVvZiBhdHRycyAhPT0gJ29iamVjdCcgfHwgYXR0cnMgPT09IG51bGwpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBjb25jYXRQcm9wcyA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gY29uY2F0UHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgY29uY2F0ID0gY29uY2F0UHJvcHNbcHJvcF0uc2xpY2UoKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBjb25jYXQuY29uY2F0KGF0dHJzW3Byb3BdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBtZXJnZWRQcm9wcyA9IHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gbWVyZ2VkUHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBtZXJnZWRQcm9wc1twcm9wXSk7XG4gICAgICAgICAgb2JqZWN0W3Byb3BdID0gYXNzaWduKG1lcmdlZCwgYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5zdGF0aWNNaXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBhZGRNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLm1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGdldFN0YXRpY01peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNNaXhpbnM7XG4gIH1cblxuICBnZXRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMubWl4aW5zO1xuICB9XG5cbiAgYWRkQXBwbGllZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMuYXBwbGllZE1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGhhc0FwcGxpZWRNaXhpbihtaXhpbjogTWl4aW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIGdldEFwcGxpZWRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucztcbiAgfVxuXG4gIGhhc1N0YXRpY01peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucy5pbmRleE9mKG1peGluKSAhPT0gLTE7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldE1peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldFN0YXRpY01peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFN0YXRpYyhTdWJjbGFzcykpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIGFkZFN1YmNsYXNzKGNvbnN0cnVjdG9yOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5zdWJjbGFzc2VzLnB1c2goY29uc3RydWN0b3IpO1xuICB9XG5cbiAgZ2V0U3ViY2xhc3NlcygpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+W10ge1xuICAgIHJldHVybiB0aGlzLnN1YmNsYXNzZXM7XG4gIH1cblxuICBhZGRQcm9wZXJ0eU1ldGFkYXRhKHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGFbcHJvcGVydHldID0gdmFsdWU7XG4gIH1cblxuICBtZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGFbcHJvcGVydHldO1xuICB9XG5cbiAgYWRkUmVmZXJlbmNlVHlwZUZvcihwcm9wZXJ0eTogc3RyaW5nLCB0eXBlOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldID0gdHlwZTtcbiAgfVxuXG4gIGFkZFNsb3RGb3IocHJvcGVydHk6IHN0cmluZykge1xuICAgIHRoaXMuc2xvdHMucHVzaChwcm9wZXJ0eSk7XG4gIH1cblxuICBoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIGFzIHN0cmluZ1tdO1xuICB9XG5cbiAgYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHRydWU7XG5cbiAgICBpZiAoKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgdmFsID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XS5jb25jYXQodmFsdWUpO1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGhhc01lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLm1lcmdlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm1lcmdlZFByb3BlcnRpZXMpIGFzIHN0cmluZ1tdO1xuICB9XG5cbiAgYWRkTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IE9iamVjdCkge1xuICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHRydWU7XG5cbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBwYXNzZWQgaW4gXFxgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICApfVxcYCBhcyB0aGUgdmFsdWUgZm9yIFxcYGZvb1xcYCBidXQgXFxgZm9vXFxgIGNhbm5vdCBiZSBhbiBBcnJheWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcyAmJiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gbWVyZ2VNZXJnZWRQcm9wZXJ0aWVzKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IHZhbHVlIDogdmFsdWUgfHwge307XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVmZXJlbmNlVHlwZXMoKTogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlNZXRhZGF0YSgpOiBEaWN0PGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGE7XG4gIH1cblxuICByZXNldChwYXJlbnQ6IE9wdGlvbjxDbGFzc01ldGE+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlcyA9IGRpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+KCk7XG4gICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhID0gZGljdCgpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gZGljdDxPYmplY3Q+KCk7XG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BdID0gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0uc2xpY2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc01lcmdlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5tZXJnZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wXSA9IGFzc2lnbih7fSwgcGFyZW50Lm1lcmdlZFByb3BlcnRpZXNbcHJvcF0pO1xuICAgICAgfVxuXG4gICAgICBhc3NpZ24odGhpcy5yZWZlcmVuY2VUeXBlcywgcGFyZW50LnJlZmVyZW5jZVR5cGVzKTtcbiAgICAgIGFzc2lnbih0aGlzLnByb3BlcnR5TWV0YWRhdGEsIHBhcmVudC5wcm9wZXJ0eU1ldGFkYXRhKTtcbiAgICB9XG4gIH1cblxuICByZXNlYWwob2JqOiBPYmplY3QpIHtcbiAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKG9iaik7XG4gICAgbGV0IGZyZXNoID0gbmV3IHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IhKG9iaiwge30pO1xuICAgIGxldCByZWZlcmVuY2VUeXBlcyA9IG1ldGEuZ2V0UmVmZXJlbmNlVHlwZXMoKTtcbiAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICB0dXJib2NoYXJnZShhc3NpZ24ocmVmZXJlbmNlVHlwZXMsIHRoaXMucmVmZXJlbmNlVHlwZXMpKTtcbiAgICB0dXJib2NoYXJnZShhc3NpZ24oc2xvdHMsIGZyZXNoLmdldFNsb3RzKCkpKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHR1cmJvY2hhcmdlKFxuICAgICAgYXNzaWduKHt9LCB0aGlzLnJlZmVyZW5jZVR5cGVzKVxuICAgICk7XG4gICAgdHVyYm9jaGFyZ2UodGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLm1lcmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgJiYgIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG5cbiAgICBsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xuXG4gICAgY2xhc3MgU2xvdHMge1xuICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHNsb3RzLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgdGhpc1tuYW1lXSA9IEVNUFRZX0NBQ0hFO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLkluc3RhbmNlTWV0YUNvbnN0cnVjdG9yID0gY2xhc3MgZXh0ZW5kcyBTZWFsZWRNZXRhIHtcbiAgICAgIHByb3RlY3RlZCBzbG90czogU2xvdHMgPSBuZXcgU2xvdHMoKTtcbiAgICAgIHB1YmxpYyByZWZlcmVuY2VUeXBlczogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4gPSByZWZlcmVuY2VUeXBlcztcblxuICAgICAgZ2V0UmVmZXJlbmNlVHlwZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzO1xuICAgICAgfVxuXG4gICAgICByZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcpOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzW3Byb3BlcnR5XSB8fCBQcm9wZXJ0eVJlZmVyZW5jZTtcbiAgICAgIH1cblxuICAgICAgZ2V0U2xvdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNsb3RzO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0dXJib2NoYXJnZSh0aGlzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZU1lcmdlZFByb3BlcnRpZXMoYXR0cnM6IE9iamVjdCwgcGFyZW50OiBPYmplY3QpIHtcbiAgbGV0IG1lcmdlZCA9IGFzc2lnbih7fSwgcGFyZW50KTtcblxuICBmb3IgKGxldCBwcm9wIGluIGF0dHJzKSB7XG4gICAgaWYgKHByb3AgaW4gcGFyZW50ICYmIHR5cGVvZiBwYXJlbnRbcHJvcF0gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGF0dHJzW3Byb3BdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBsZXQgd3JhcHBlZCA9IHdyYXBNZXRob2QocGFyZW50LCBwcm9wLCBhdHRyc1twcm9wXSk7XG4gICAgICBtZXJnZWRbcHJvcF0gPSB3cmFwcGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZWRbcHJvcF0gPSBhdHRyc1twcm9wXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkO1xufVxuXG5leHBvcnQgY2xhc3MgSW5zdGFuY2VNZXRhIGV4dGVuZHMgQ2xhc3NNZXRhIHtcbiAgcHVibGljICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBDbGFzc01ldGEgPSBDbGFzc01ldGEuZnJvbVBhcmVudChudWxsKTtcblxuICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQ6IE9wdGlvbjxJbnN0YW5jZU1ldGE+KTogSW5zdGFuY2VNZXRhIHtcbiAgICByZXR1cm4gc3VwZXIuZnJvbVBhcmVudChwYXJlbnQpIGFzIEluc3RhbmNlTWV0YTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogSW5zdGFuY2VNZXRhKSB7XG4gICAgc3VwZXIucmVzZXQocGFyZW50KTtcbiAgICBpZiAocGFyZW50KSB0aGlzW0NMQVNTX01FVEFdLnJlc2V0KHBhcmVudFtDTEFTU19NRVRBXSk7XG4gIH1cblxuICBzZWFsKCkge1xuICAgIHN1cGVyLnNlYWwoKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHbGltbWVyT2JqZWN0IHtcbiAgc3RhdGljICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBJbnN0YW5jZU1ldGEgPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChudWxsKTtcbiAgc3RhdGljIGlzQ2xhc3MgPSB0cnVlO1xuXG4gIHN0YXRpYyBleHRlbmQoKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuICBzdGF0aWMgZXh0ZW5kPFQ+KGV4dGVuc2lvbjogVCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQoLi4uZXh0ZW5zaW9uczogT2JqZWN0W10pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgc3RhdGljIGV4dGVuZCh0aGlzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCAuLi5leHRlbnNpb25zOiBhbnlbXSkge1xuICAgIHJldHVybiBleHRlbmRDbGFzcyh0aGlzLCAuLi5leHRlbnNpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUoYXR0cnM/OiBPYmplY3QgfCBudWxsKTogR2xpbW1lck9iamVjdCB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKGF0dHJzKTtcbiAgfVxuXG4gIHN0YXRpYyByZW9wZW48VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQge1xuICAgIHRvTWl4aW4oZXh0ZW5zaW9ucykuZXh0ZW5kUHJvdG90eXBlKHRoaXMpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuXG4gICAgcmVsaW5rU3ViY2xhc3Nlcyh0aGlzKTtcbiAgfVxuXG4gIHN0YXRpYyByZW9wZW5DbGFzczxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRTdGF0aWModGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cblxuICBzdGF0aWMgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIGxldCB2YWx1ZSA9IHRoaXNbQ0xBU1NfTUVUQV0ubWV0YWRhdGFGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgaWYgKCF2YWx1ZSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYG1ldGFGb3JQcm9wZXJ0eSgpIGNvdWxkIG5vdCBmaW5kIGEgY29tcHV0ZWQgcHJvcGVydHkgd2l0aCBrZXkgJyR7cHJvcGVydHl9Jy5gXG4gICAgICApO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IG1ldGFkYXRhID0gdGhpc1tDTEFTU19NRVRBXS5nZXRQcm9wZXJ0eU1ldGFkYXRhKCk7XG4gICAgaWYgKCFtZXRhZGF0YSkgcmV0dXJuO1xuXG4gICAgZm9yIChsZXQgcHJvcCBpbiBtZXRhZGF0YSkge1xuICAgICAgY2FsbGJhY2socHJvcCwgbWV0YWRhdGFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIF9zdXBlciA9IFJPT1Q7XG4gIF9tZXRhID0gbnVsbDtcbiAgX2d1aWQhOiBudW1iZXI7IC8vIFNldCBieSBpbml0aWFsaXplR3VpZCh0aGlzKSBpbiBjb25zdHJ1Y3RvclxuXG4gIGluaXQoKSB7fVxuXG4gIGNvbnN0cnVjdG9yKGF0dHJzPzogT2JqZWN0IHwgbnVsbCkge1xuICAgIGlmIChhdHRycykgYXNzaWduKHRoaXMsIGF0dHJzKTtcbiAgICAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgR2xpbW1lck9iamVjdClbQ0xBU1NfTUVUQV0uaW5pdCh0aGlzLCBhdHRycyB8fCBudWxsKTtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG4gICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzW2tleV07XG4gIH1cblxuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgICBidW1wKCk7XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKGF0dHJzOiBPYmplY3QpIHtcbiAgICBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7fVxufVxuIl19 |
@@ -30,2 +30,2 @@ 'use strict'; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O1FBcUJxQixBQUFHLEFBQVk7O0FBckJwQyxJQUFNLEFBQWlCLG9CQUFHLEFBQW1DLEFBQUMsQUFFOUQsQUFBTTtJQUFPLEFBQWEsb0RBQ3hCO1FBQUksQUFBZSw4QkFFZixBQUFNO2VBRFIsQUFDUyxBQUFJLEFBQUMsQUFDZCxBQUFDO01BQ0UsQUFBUSxBQUFFLFdBQ1YsQUFBTyxRQUFDLEFBQWEsQUFBQyxpQkFBRyxDQUFDLEFBQUMsQUFBQyxBQUVqQyxBQUFFLEFBQUM7UUFBQyxBQUFlLEFBQUMsaUJBQUMsQUFBQyxBQUNwQixBQUFNO2VBQUMsdUJBQXVCLEFBQWMsTUFDMUMsQUFBTTttQkFBQyxBQUFpQixrQkFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQVEsQUFBRSxBQUFDLEFBQUMsQUFDakQsQUFBQyxBQUFDLEFBQ0osQUFBQztBQUVELEFBQU07O1dBQUMseUJBQ0wsQUFBTTtlQUFDLEFBQUksQUFBQyxBQUNkLEFBQUMsQUFBQyxBQUNKLEFBQUMsQUFBQyxBQUFFLEFBQUM7QUFqQkUsQUFBc0I7QUFBQyxBQW1COUIsQUFBTTtnQkFBaUMsQUFBQztBQUN2QyxBQUFZLEtBQUMsQUFBVSxhQUFHLEFBQUssQUFBQyxBQUVqQyxBQUFNO2tCQUFtQixBQUFjLE1BQ3JDLEFBQUUsQUFBQztRQUFDLEFBQUksS0FBQyxBQUFZLEFBQUMsa0JBQUssQUFBUyxBQUFDLFdBQUMsQUFBQyxBQUNyQyxBQUFJO2FBQUMsQUFBWSxBQUFDLGdCQUFHLEFBQWEsY0FBQyxBQUFJLEFBQUMsQUFBQyxBQUMzQyxBQUFDLEFBQ0QsQUFBTTs7V0FBQyxBQUFJLEtBQUMsQUFBWSxBQUFDLEFBQUMsQUFDNUIsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEhBU19TVVBFUl9QQVRURVJOID0gL1xcLihfc3VwZXJ8Y2FsbFxcKHRoaXN8YXBwbHlcXCh0aGlzKS87XG5cbmV4cG9ydCBjb25zdCBjaGVja0hhc1N1cGVyID0gKGZ1bmN0aW9uKCkge1xuICBsZXQgc291cmNlQXZhaWxhYmxlID1cbiAgICBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAgIC50b1N0cmluZygpXG4gICAgICAuaW5kZXhPZigncmV0dXJuIHRoaXMnKSA+IC0xO1xuXG4gIGlmIChzb3VyY2VBdmFpbGFibGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcihmdW5jOiBGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIEhBU19TVVBFUl9QQVRURVJOLnRlc3QoZnVuYy50b1N0cmluZygpKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG59KSgpO1xuXG5leHBvcnQgZnVuY3Rpb24gUk9PVCguLi5fYXJnczogYW55W10pIHt9XG4oUk9PVCBhcyBhbnkpLl9faGFzU3VwZXIgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gIGlmIChmdW5jWydfX2hhc1N1cGVyJ10gPT09IHVuZGVmaW5lZCkge1xuICAgIGZ1bmNbJ19faGFzU3VwZXInXSA9IGNoZWNrSGFzU3VwZXIoZnVuYyk7XG4gIH1cbiAgcmV0dXJuIGZ1bmNbJ19faGFzU3VwZXInXTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O1FBcUJxQixBQUFHLEFBQVk7O0FBckJwQyxJQUFNLEFBQWlCLG9CQUFHLEFBQW1DLEFBQUMsQUFFOUQsQUFBTTtJQUFPLEFBQWEsb0RBQ3hCO1FBQUksQUFBZSw4QkFFZjtlQURGLEFBQ1MsQUFBSSxBQUFDLEFBQ2QsQUFBQztNQUNFLEFBQVEsQUFBRSxXQUNWLEFBQU8sUUFBQyxBQUFhLEFBQUMsaUJBQUcsQ0FBQyxBQUFDLEFBQUMsQUFFakM7UUFBSSxBQUFlLGlCQUFFLEFBQ25CO2VBQU8sdUJBQXVCLEFBQWMsTUFDMUM7bUJBQU8sQUFBaUIsa0JBQUMsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFRLEFBQUUsQUFBQyxBQUFDLEFBQ2pELEFBQUMsQUFBQyxBQUNIO0FBRUQ7O1dBQU8seUJBQ0w7ZUFBTyxBQUFJLEFBQUMsQUFDZCxBQUFDLEFBQUMsQUFDSixBQUFDLEFBQUMsQUFBRSxBQUFDO0FBakJFLEFBQXNCO0FBQUMsQUFtQjlCLEFBQU07Z0JBQWlDLEFBQUM7QUFDdkMsQUFBWSxLQUFDLEFBQVUsYUFBRyxBQUFLLEFBQUMsQUFFakMsQUFBTTtrQkFBbUIsQUFBYyxNQUNyQztRQUFJLEFBQUksS0FBQyxBQUFZLEFBQUMsa0JBQUssQUFBUyxXQUFFLEFBQ3BDLEFBQUk7YUFBQyxBQUFZLEFBQUMsZ0JBQUcsQUFBYSxjQUFDLEFBQUksQUFBQyxBQUFDLEFBQzFDLEFBQ0Q7O1dBQU8sQUFBSSxLQUFDLEFBQVksQUFBQyxBQUFDLEFBQzVCLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBIQVNfU1VQRVJfUEFUVEVSTiA9IC9cXC4oX3N1cGVyfGNhbGxcXCh0aGlzfGFwcGx5XFwodGhpcykvO1xuXG5leHBvcnQgY29uc3QgY2hlY2tIYXNTdXBlciA9IChmdW5jdGlvbigpIHtcbiAgbGV0IHNvdXJjZUF2YWlsYWJsZSA9XG4gICAgZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLmluZGV4T2YoJ3JldHVybiB0aGlzJykgPiAtMTtcblxuICBpZiAoc291cmNlQXZhaWxhYmxlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiBIQVNfU1VQRVJfUEFUVEVSTi50ZXN0KGZ1bmMudG9TdHJpbmcoKSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xufSkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIFJPT1QoLi4uX2FyZ3M6IGFueVtdKSB7fVxuKFJPT1QgYXMgYW55KS5fX2hhc1N1cGVyID0gZmFsc2U7XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNTdXBlcihmdW5jOiBGdW5jdGlvbikge1xuICBpZiAoZnVuY1snX19oYXNTdXBlciddID09PSB1bmRlZmluZWQpIHtcbiAgICBmdW5jWydfX2hhc1N1cGVyJ10gPSBjaGVja0hhc1N1cGVyKGZ1bmMpO1xuICB9XG4gIHJldHVybiBmdW5jWydfX2hhc1N1cGVyJ107XG59XG4iXX0= |
@@ -33,2 +33,4 @@ import { ComputedReferenceBlueprint, Meta } from '@glimmer/object-reference'; | ||
this.accessor = accessor; | ||
this.enumerable = false; | ||
this.configurable = false; | ||
} | ||
@@ -139,2 +141,2 @@ define(prototype, key, home) { | ||
export function observer(..._args) {} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQU8sU0FBRSxBQUEwQiw0QkFBRSxBQUFJLEFBQUUsWUFBTSxBQUEyQixBQUFDO0FBQzdFLEFBQU8sU0FBRSxBQUFXLEFBQWEsbUJBQU0sQUFBVSxBQUFDO0FBQ2xELEFBQU8sU0FBYyxBQUFTLEFBQUUsaUJBQU0sQUFBUyxBQUFDO0FBeUJoRCxBQUFNLGFBQXlCLDBCQUFRLEFBQVM7QUFLOUMsZ0JBQVksQUFBNEIsVUFBRSxPQUFtQixBQUFFO0FBQzdELEFBQUssQUFBRSxBQUFDO0FBSEYsYUFBUSxXQUFXLEFBQUUsQUFBQztBQUk1QixBQUFJLGFBQUMsQUFBUSxXQUFHLEFBQVEsQUFBQztBQUN6QixBQUFJLGFBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQjtBQUFDO0FBRUQsQUFBVSxlQUFDLEFBQWUsU0FBRSxBQUFXLEtBQUUsQUFBb0I7QUFDM0QsQUFBUyxrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBMEIsMkJBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUFDO0FBQy9FLEFBQVMsa0JBQUMsQUFBbUIsb0JBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQztBQUNsRCxBQUFTLGtCQUFDLEFBQVUsV0FBQyxBQUFHLEFBQUMsQUFBQztBQUMxQixBQUFNLGVBQUMsSUFBSSxBQUFRLFNBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ3JDO0FBQUM7QUFFRCxBQUFRLGFBQUMsR0FBRyxBQUFlO0FBQ3pCLEFBQUksYUFBQyxBQUFJLE9BQUcsQUFBSyxNQUFDLEFBQUcsSUFBQyxBQUFDLEtBQUksQUFBQyxFQUFDLEFBQUssTUFBQyxBQUFHLEFBQUMsQUFBQyxBQUFDO0FBQ3pD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LEFBQVUsQUFBQyxZQUFDLEFBQUM7QUFDL0IsQUFBTSxtQkFBSyxBQUFpQjtBQUMxQixBQUFHLGlCQUFFLEFBQXVELEFBQzdELEFBQUM7QUFGMkIsU0FBdEIsRUFFSixBQUFRLFNBQUMsR0FBRyxBQUFJLEFBQUMsQUFBQyxBQUN2QjtBQUFDLEFBQUMsQUFBSSxlQUFLLE9BQU8sQUFBSSxTQUFLLEFBQVEsQUFBQyxVQUFDLEFBQUM7QUFDcEMsQUFBTSxlQUFDLElBQUksQUFBaUIsa0JBQUMsQUFBMEIsQUFBQyxNQUFDLEFBQVEsU0FBQyxHQUFHLEFBQUksQUFBQyxBQUFDLEFBQzdFO0FBQUMsQUFBQyxBQUFJLEtBRkMsQUFBRSxBQUFDLE1BRUgsQUFBQztBQUNOLGNBQU0sSUFBSSxBQUFTLFVBQUMsQUFBMkQsQUFBQyxBQUFDLEFBQ25GO0FBQUMsQUFDSDtBQUFDO0FBRUQsQUFBTSx5QkFBbUIsR0FBRyxBQUFZLE9BQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50LCBNZXRhIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBFTVBUWV9DQUNIRSwgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgRGVzY3JpcHRvciwgQmx1ZXByaW50IH0gZnJvbSAnLi9taXhpbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRHZXRDYWxsYmFjayB7XG4gICgpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjayB7XG4gIChrZXk6IHN0cmluZyk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKHZhbDogYW55KTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcsIHZhbDogYW55KTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkRGVzY3JpcHRvciB7XG4gIGdldD86IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrO1xuICBzZXQ/OiBDb21wdXRlZFNldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRTZXRDYWxsYmFjaztcbn1cblxudHlwZSBDb21wdXRlZEFyZ3VtZW50ID0gQ29tcHV0ZWRHZXRDYWxsYmFjayB8IENvbXB1dGVkRGVzY3JpcHRvcjtcblxuZXhwb3J0IGNsYXNzIENvbXB1dGVkQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yO1xuICBwcml2YXRlIGRlcHM6IHN0cmluZ1tdW107XG4gIHByaXZhdGUgbWV0YWRhdGE6IE9iamVjdCA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3IsIGRlcHM6IHN0cmluZ1tdW10gPSBbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIHRoaXMuZGVwcyA9IGRlcHM7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgY2xhc3NNZXRhLmFkZFJlZmVyZW5jZVR5cGVGb3Ioa2V5LCBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludChrZXksIHRoaXMuZGVwcykpO1xuICAgIGNsYXNzTWV0YS5hZGRQcm9wZXJ0eU1ldGFkYXRhKGtleSwgdGhpcy5tZXRhZGF0YSk7XG4gICAgY2xhc3NNZXRhLmFkZFNsb3RGb3Ioa2V5KTtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkKHRoaXMuYWNjZXNzb3IpO1xuICB9XG5cbiAgcHJvcGVydHkoLi4ucGF0aHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5kZXBzID0gcGF0aHMubWFwKGQgPT4gZC5zcGxpdCgnLicpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG1ldGEob2JqZWN0OiBPYmplY3QpIHtcbiAgICB0aGlzLm1ldGFkYXRhID0gb2JqZWN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdm9sYXRpbGUoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuY2xhc3MgQ29tcHV0ZWQgaW1wbGVtZW50cyBEZXNjcmlwdG9yIHtcbiAgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgY29uZmlndXJhYmxlOiBib29sZWFuO1xuXG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYycgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3IpIHtcbiAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gIH1cblxuICBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHdyYXBBY2Nlc3Nvcihob21lLCBrZXksIHRoaXMuYWNjZXNzb3IpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cmFwQWNjZXNzb3IoXG4gIGhvbWU6IE9iamVjdCxcbiAgYWNjZXNzb3JOYW1lOiBzdHJpbmcsXG4gIF9kZXNjOiBDb21wdXRlZERlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB7XG4gIGxldCBzdXBlckRlc2MgPSBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoaG9tZSwgYWNjZXNzb3JOYW1lKTtcblxuICBsZXQgb3JpZ2luYWxHZXQ6IENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIGxldCBvcmlnaW5hbFNldDogQ29tcHV0ZWRTZXRDYWxsYmFjaztcblxuICBsZXQgZGVzYzogUHJvcGVydHlEZXNjcmlwdG9yID0ge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9O1xuXG4gIGxldCBnZXQgPSBfZGVzYy5nZXQ7XG5cbiAgaWYgKGdldCAmJiBnZXQubGVuZ3RoID4gMCkge1xuICAgIG9yaWdpbmFsR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKGdldCBhcyBhbnkpLmNhbGwodGhpcywgYWNjZXNzb3JOYW1lKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsR2V0ID0gX2Rlc2MuZ2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgc2V0ID0gX2Rlc2Muc2V0O1xuXG4gIGlmIChzZXQgJiYgc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICBvcmlnaW5hbFNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgcmV0dXJuIChzZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSwgdmFsdWUpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luYWxTZXQgPSBfZGVzYy5zZXQgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgfVxuXG4gIGxldCBjYWNoZUdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGlmIChNZXRhLmV4aXN0cyh0aGlzKSkge1xuICAgICAgbGV0IHNsb3QgPSBNZXRhLmZvcih0aGlzKS5nZXRTbG90cygpW2FjY2Vzc29yTmFtZV07XG4gICAgICBpZiAoc2xvdCAhPT0gRU1QVFlfQ0FDSEUpIHJldHVybiBzbG90O1xuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW5hbEdldC5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIGxldCBjYWNoZVNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgaWYgKG9yaWdpbmFsU2V0KSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICAgIGxldCByZXQgPSBvcmlnaW5hbFNldC5jYWxsKHRoaXMsIHZhbHVlKTtcblxuICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSByZXQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSBzbG90c1thY2Nlc3Nvck5hbWVdID0gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghc3VwZXJEZXNjIHx8ICd2YWx1ZScgaW4gc3VwZXJEZXNjKSB7XG4gICAgZGVzYy5nZXQgPSBjYWNoZUdldDtcbiAgICBkZXNjLnNldCA9IGNhY2hlU2V0O1xuICAgIHJldHVybiBkZXNjO1xuICB9XG5cbiAgZGVzYy5nZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuZ2V0LmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVHZXQuY2FsbCh0aGlzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIGRlc2Muc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWw6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MgYXMgYW55KS5zZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlU2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBkZXNjO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdDogYW55LCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKTtcbiAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHN1YmplY3QpO1xuICB3aGlsZSAodHlwZW9mIHBkID09PSAndW5kZWZpbmVkJyAmJiBwcm90byAhPT0gbnVsbCkge1xuICAgIHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbmFtZSk7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiBwZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKGRlc2M6IENvbXB1dGVkRGVzY3JpcHRvcik6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKFxuICBnZXR0ZXI6IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrXG4pOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSk6IENvbXB1dGVkQmx1ZXByaW50O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pIHtcbiAgbGV0IGxhc3Q6IENvbXB1dGVkQXJndW1lbnQgPSBhcmdzLnBvcCgpO1xuICBsZXQgZGVwcyA9IGFyZ3M7XG5cbiAgaWYgKHR5cGVvZiBsYXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludCh7XG4gICAgICBnZXQ6IGxhc3QgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2ssXG4gICAgfSkucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGxhc3QgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludChsYXN0IGFzIENvbXB1dGVkRGVzY3JpcHRvcikucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29tcHV0ZWQgZXhwZWN0cyBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCBhcyBsYXN0IGFyZ3VtZW50Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVyKC4uLl9hcmdzOiBhbnlbXSkge31cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQU8sU0FBRSxBQUEwQiw0QkFBRSxBQUFJLEFBQUUsWUFBTSxBQUEyQixBQUFDO0FBQzdFLEFBQU8sU0FBRSxBQUFXLEFBQWEsbUJBQU0sQUFBVSxBQUFDO0FBQ2xELEFBQU8sU0FBYyxBQUFTLEFBQUUsaUJBQU0sQUFBUyxBQUFDO0FBeUJoRCxBQUFNLGFBQXlCLDBCQUFRLEFBQVM7QUFLOUMsZ0JBQVksQUFBNEIsVUFBRSxPQUFtQixBQUFFO0FBQzdELEFBQUssQUFBRSxBQUFDO0FBSEYsYUFBUSxXQUFXLEFBQUUsQUFBQztBQUk1QixBQUFJLGFBQUMsQUFBUSxXQUFHLEFBQVEsQUFBQztBQUN6QixBQUFJLGFBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQjtBQUFDO0FBRUQsQUFBVSxlQUFDLEFBQWUsU0FBRSxBQUFXLEtBQUUsQUFBb0I7QUFDM0QsQUFBUyxrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBMEIsMkJBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUFDO0FBQy9FLEFBQVMsa0JBQUMsQUFBbUIsb0JBQUMsQUFBRyxLQUFFLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQztBQUNsRCxBQUFTLGtCQUFDLEFBQVUsV0FBQyxBQUFHLEFBQUMsQUFBQztBQUMxQixlQUFPLElBQUksQUFBUSxTQUFDLEFBQUksS0FBQyxBQUFRLEFBQUMsQUFBQyxBQUNyQztBQUFDO0FBRUQsQUFBUSxhQUFDLEdBQUcsQUFBZTtBQUN6QixBQUFJLGFBQUMsQUFBSSxPQUFHLEFBQUssTUFBQyxBQUFHLElBQUMsQUFBQyxBQUFDLEFBQUUsS0FBQyxBQUFDLEVBQUMsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUFDLEFBQUM7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QUVELEFBQU0seUJBQW1CLEdBQUcsQUFBWSxPQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludCwgTWV0YSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRU1QVFlfQ0FDSEUsIENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IERlc2NyaXB0b3IsIEJsdWVwcmludCB9IGZyb20gJy4vbWl4aW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gICh2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nLCB2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZERlc2NyaXB0b3Ige1xuICBnZXQ/OiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgc2V0PzogQ29tcHV0ZWRTZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2s7XG59XG5cbnR5cGUgQ29tcHV0ZWRBcmd1bWVudCA9IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBDb21wdXRlZERlc2NyaXB0b3I7XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgcHJpdmF0ZSBkZXBzOiBzdHJpbmdbXVtdO1xuICBwcml2YXRlIG1ldGFkYXRhOiBPYmplY3QgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yLCBkZXBzOiBzdHJpbmdbXVtdID0gW10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICB0aGlzLmRlcHMgPSBkZXBzO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGNsYXNzTWV0YS5hZGRSZWZlcmVuY2VUeXBlRm9yKGtleSwgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQoa2V5LCB0aGlzLmRlcHMpKTtcbiAgICBjbGFzc01ldGEuYWRkUHJvcGVydHlNZXRhZGF0YShrZXksIHRoaXMubWV0YWRhdGEpO1xuICAgIGNsYXNzTWV0YS5hZGRTbG90Rm9yKGtleSk7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZCh0aGlzLmFjY2Vzc29yKTtcbiAgfVxuXG4gIHByb3BlcnR5KC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVwcyA9IHBhdGhzLm1hcChkID0+IGQuc3BsaXQoJy4nKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtZXRhKG9iamVjdDogT2JqZWN0KSB7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG9iamVjdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZvbGF0aWxlKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmNsYXNzIENvbXB1dGVkIGltcGxlbWVudHMgRGVzY3JpcHRvciB7XG4gIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcblxuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yKSB7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gZmFsc2U7XG4gIH1cblxuICBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHdyYXBBY2Nlc3Nvcihob21lLCBrZXksIHRoaXMuYWNjZXNzb3IpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cmFwQWNjZXNzb3IoXG4gIGhvbWU6IE9iamVjdCxcbiAgYWNjZXNzb3JOYW1lOiBzdHJpbmcsXG4gIF9kZXNjOiBDb21wdXRlZERlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB7XG4gIGxldCBzdXBlckRlc2MgPSBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoaG9tZSwgYWNjZXNzb3JOYW1lKTtcblxuICBsZXQgb3JpZ2luYWxHZXQ6IENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIGxldCBvcmlnaW5hbFNldDogQ29tcHV0ZWRTZXRDYWxsYmFjaztcblxuICBsZXQgZGVzYzogUHJvcGVydHlEZXNjcmlwdG9yID0ge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9O1xuXG4gIGxldCBnZXQgPSBfZGVzYy5nZXQ7XG5cbiAgaWYgKGdldCAmJiBnZXQubGVuZ3RoID4gMCkge1xuICAgIG9yaWdpbmFsR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKGdldCBhcyBhbnkpLmNhbGwodGhpcywgYWNjZXNzb3JOYW1lKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsR2V0ID0gX2Rlc2MuZ2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgc2V0ID0gX2Rlc2Muc2V0O1xuXG4gIGlmIChzZXQgJiYgc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICBvcmlnaW5hbFNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgcmV0dXJuIChzZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSwgdmFsdWUpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luYWxTZXQgPSBfZGVzYy5zZXQgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgfVxuXG4gIGxldCBjYWNoZUdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGlmIChNZXRhLmV4aXN0cyh0aGlzKSkge1xuICAgICAgbGV0IHNsb3QgPSBNZXRhLmZvcih0aGlzKS5nZXRTbG90cygpW2FjY2Vzc29yTmFtZV07XG4gICAgICBpZiAoc2xvdCAhPT0gRU1QVFlfQ0FDSEUpIHJldHVybiBzbG90O1xuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW5hbEdldC5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIGxldCBjYWNoZVNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgaWYgKG9yaWdpbmFsU2V0KSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICAgIGxldCByZXQgPSBvcmlnaW5hbFNldC5jYWxsKHRoaXMsIHZhbHVlKTtcblxuICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSByZXQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSBzbG90c1thY2Nlc3Nvck5hbWVdID0gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghc3VwZXJEZXNjIHx8ICd2YWx1ZScgaW4gc3VwZXJEZXNjKSB7XG4gICAgZGVzYy5nZXQgPSBjYWNoZUdldDtcbiAgICBkZXNjLnNldCA9IGNhY2hlU2V0O1xuICAgIHJldHVybiBkZXNjO1xuICB9XG5cbiAgZGVzYy5nZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuZ2V0LmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVHZXQuY2FsbCh0aGlzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIGRlc2Muc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWw6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MgYXMgYW55KS5zZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlU2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBkZXNjO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdDogYW55LCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKTtcbiAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHN1YmplY3QpO1xuICB3aGlsZSAodHlwZW9mIHBkID09PSAndW5kZWZpbmVkJyAmJiBwcm90byAhPT0gbnVsbCkge1xuICAgIHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbmFtZSk7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiBwZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKGRlc2M6IENvbXB1dGVkRGVzY3JpcHRvcik6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKFxuICBnZXR0ZXI6IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrXG4pOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSk6IENvbXB1dGVkQmx1ZXByaW50O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pIHtcbiAgbGV0IGxhc3Q6IENvbXB1dGVkQXJndW1lbnQgPSBhcmdzLnBvcCgpO1xuICBsZXQgZGVwcyA9IGFyZ3M7XG5cbiAgaWYgKHR5cGVvZiBsYXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludCh7XG4gICAgICBnZXQ6IGxhc3QgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2ssXG4gICAgfSkucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGxhc3QgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludChsYXN0IGFzIENvbXB1dGVkRGVzY3JpcHRvcikucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29tcHV0ZWQgZXhwZWN0cyBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCBhcyBsYXN0IGFyZ3VtZW50Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVyKC4uLl9hcmdzOiBhbnlbXSkge31cbiJdfQ== |
@@ -53,2 +53,2 @@ import { Blueprint, Descriptor } from './mixin'; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQU8sU0FBRSxBQUFTLFdBQUUsQUFBVSxBQUFFLGtCQUFNLEFBQVMsQUFBQztBQUVoRCxBQUFPLFNBQUUsQUFBaUIsQUFBRSx5QkFBTSxBQUFZLEFBQUM7QUFFL0MsTUFBNEIsOEJBQVEsQUFBVTtBQUc1QyxnQkFBWSxBQUFZO0FBQ3RCLEFBQUssQUFBRSxBQUFDO0FBQ1IsQUFBSSxhQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkI7QUFBQztBQUVELEFBQU0sV0FBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQWE7QUFDL0MsWUFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQWMsQUFBQztBQUUvQixBQUFNLGVBQUMsQUFBYyxlQUFDLEFBQU0sUUFBRSxBQUFHO0FBQy9CLEFBQVUsd0JBQUUsQUFBSTtBQUNoQixBQUFZLDBCQUFFLEFBQUk7QUFDbEIsQUFBRztBQUNELEFBQU0sdUJBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3BCO0FBQUMsQUFDRixBQUFDLEFBQUMsQUFDTDtBQVBxQztBQU9wQyxBQUNGOztBQUVELE1BQTJCLDZCQUFRLEFBQVM7QUFHMUMsZ0JBQVksQUFBWTtBQUN0QixBQUFLLEFBQUUsQUFBQztBQUNSLEFBQUksYUFBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CO0FBQUM7QUFFRCxBQUFVLGVBQUMsQUFBZSxTQUFFLEFBQVksTUFBRSxBQUFnQjtBQUN4RCxBQUFNLGVBQUMsSUFBSSxBQUFxQixzQkFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDOUM7QUFBQyxBQUNGOztBQUVELEFBQU0sNEJBQXNCLEFBQVk7QUFDdEMsQUFBTSxXQUFDLElBQUksQUFBb0IscUJBQUMsQUFBSSxBQUFDLEFBQUMsQUFDeEM7QUFBQztBQUVELE1BQXFCLHVCQUFRLEFBQWlCO0FBRzVDLGdCQUFZLEFBQWM7QUFDeEIsWUFBSSxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFDLEdBQUUsQ0FBQyxBQUFDLEFBQUMsQUFBQztBQUMvQixZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsQUFBQztBQUVqQyxZQUFJLEFBQUcsTUFBRztBQUNSLEFBQU0sbUJBQUMsQUFBSSxLQUFDLEFBQU0sT0FBQyxDQUFDLEFBQUcsS0FBRSxBQUFDLE1BQUssQUFBRyxJQUFDLEFBQUMsQUFBQyxJQUFFLEFBQUksQUFBQyxBQUFDLEFBQy9DO0FBQUMsQUFBQztBQUVGLFlBQUksQUFBRyxNQUFHLFVBQW9CLEFBQVU7QUFDdEMsZ0JBQUksQUFBQyxJQUFHLEFBQU0sT0FBQyxBQUFNLE9BQUMsQ0FBQyxBQUFHLEtBQUUsQUFBQyxNQUFLLEFBQUcsSUFBQyxBQUFDLEFBQUMsSUFBRSxBQUFJLEFBQUMsQUFBQztBQUNoRCxBQUFDLGNBQUMsQUFBSSxBQUFDLFFBQUcsQUFBSyxBQUFDLEFBQ2xCO0FBQUMsQUFBQztBQUVGLEFBQUssY0FBQyxFQUFFLEFBQUcsS0FBRSxBQUFHLEFBQUUsT0FBRSxDQUFDLEFBQUksQUFBQyxBQUFDLEFBQUM7QUFDNUIsQUFBSSxhQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkI7QUFBQztBQUVELEFBQVUsZUFBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQWU7QUFDckQsQUFBRSxBQUFDLFlBQUMsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFDLEFBQUMsT0FBSyxBQUFHLEFBQUMsS0FBQyxNQUFNLElBQUksQUFBSyxBQUFDLHdCQUFrQixBQUFHLEdBQVcsQUFBQyxBQUFDO0FBQzVFLEFBQU0sZUFBQyxBQUFLLE1BQUMsQUFBVSxXQUFDLEFBQU0sUUFBRSxBQUFHLEtBQUUsQUFBSSxBQUFDLEFBQUMsQUFDN0M7QUFBQyxBQUNGOztBQUVELEFBQU0sc0JBQWdCLEFBQVk7QUFDaEMsQUFBTSxXQUFDLElBQUksQUFBYyxlQUFDLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUMsQUFBQyxBQUM3QztBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmx1ZXByaW50LCBEZXNjcmlwdG9yIH0gZnJvbSAnLi9taXhpbic7XG5pbXBvcnQgeyBDbGFzc01ldGEgfSBmcm9tICcuL29iamVjdCc7XG5pbXBvcnQgeyBDb21wdXRlZEJsdWVwcmludCB9IGZyb20gJy4vY29tcHV0ZWQnO1xuXG5jbGFzcyBBbGlhc01ldGhvZERlc2NyaXB0b3IgZXh0ZW5kcyBEZXNjcmlwdG9yIHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgX2hvbWU6IE9iamVjdCkge1xuICAgIGxldCBuYW1lID0gdGhpcy5uYW1lIGFzIHN0cmluZztcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldCh0aGlzOiB0eXBlb2YgdGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzW25hbWVdO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBBbGlhc01ldGhvZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9tZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kRGVzY3JpcHRvcih0aGlzLm5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhc01ldGhvZChuYW1lOiBzdHJpbmcpOiBCbHVlcHJpbnQge1xuICByZXR1cm4gbmV3IEFsaWFzTWV0aG9kQmx1ZXByaW50KG5hbWUpO1xufVxuXG5jbGFzcyBBbGlhc0JsdWVwcmludCBleHRlbmRzIENvbXB1dGVkQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmdbXSkge1xuICAgIGxldCBwYXJlbnQgPSBuYW1lLnNsaWNlKDAsIC0xKTtcbiAgICBsZXQgbGFzdCA9IG5hbWVbbmFtZS5sZW5ndGggLSAxXTtcblxuICAgIGxldCBnZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiBuYW1lLnJlZHVjZSgob2JqLCBuKSA9PiBvYmpbbl0sIHRoaXMpO1xuICAgIH07XG5cbiAgICBsZXQgc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICBsZXQgcCA9IHBhcmVudC5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICAgIHBbbGFzdF0gPSB2YWx1ZTtcbiAgICB9O1xuXG4gICAgc3VwZXIoeyBnZXQsIHNldCB9LCBbbmFtZV0pO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgaWYgKHRoaXMubmFtZVswXSA9PT0ga2V5KSB0aHJvdyBuZXcgRXJyb3IoYFNldHRpbmcgYWxpYXMgJyR7a2V5fScgb24gc2VsZmApO1xuICAgIHJldHVybiBzdXBlci5kZXNjcmlwdG9yKHRhcmdldCwga2V5LCBtZXRhKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXMobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc0JsdWVwcmludChuYW1lLnNwbGl0KCcuJykpO1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQU8sU0FBRSxBQUFTLFdBQUUsQUFBVSxBQUFFLGtCQUFNLEFBQVMsQUFBQztBQUVoRCxBQUFPLFNBQUUsQUFBaUIsQUFBRSx5QkFBTSxBQUFZLEFBQUM7QUFFL0MsTUFBNEIsOEJBQVEsQUFBVTtBQUc1QyxnQkFBWSxBQUFZO0FBQ3RCLEFBQUssQUFBRSxBQUFDO0FBQ1IsQUFBSSxhQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkI7QUFBQztBQUVELEFBQU0sV0FBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQWE7QUFDL0MsWUFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQWMsQUFBQztBQUUvQixBQUFNLGVBQUMsQUFBYyxlQUFDLEFBQU0sUUFBRSxBQUFHO0FBQy9CLEFBQVUsd0JBQUUsQUFBSTtBQUNoQixBQUFZLDBCQUFFLEFBQUk7QUFDbEIsQUFBRztBQUNELHVCQUFPLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUNwQjtBQUFDLEFBQ0YsQUFBQyxBQUFDLEFBQ0w7QUFQcUM7QUFPcEMsQUFDRjs7QUFFRCxNQUEyQiw2QkFBUSxBQUFTO0FBRzFDLGdCQUFZLEFBQVk7QUFDdEIsQUFBSyxBQUFFLEFBQUM7QUFDUixBQUFJLGFBQUMsQUFBSSxPQUFHLEFBQUksQUFBQyxBQUNuQjtBQUFDO0FBRUQsQUFBVSxlQUFDLEFBQWUsU0FBRSxBQUFZLE1BQUUsQUFBZ0I7QUFDeEQsZUFBTyxJQUFJLEFBQXFCLHNCQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUM5QztBQUFDLEFBQ0Y7O0FBRUQsQUFBTSw0QkFBc0IsQUFBWTtBQUN0QyxXQUFPLElBQUksQUFBb0IscUJBQUMsQUFBSSxBQUFDLEFBQUMsQUFDeEM7QUFBQztBQUVELE1BQXFCLHVCQUFRLEFBQWlCO0FBRzVDLGdCQUFZLEFBQWM7QUFDeEIsWUFBSSxBQUFNLFNBQUcsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFDLEdBQUUsQ0FBQyxBQUFDLEFBQUMsQUFBQztBQUMvQixZQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsQUFBQztBQUVqQyxZQUFJLEFBQUcsTUFBRztBQUNSLG1CQUFPLEFBQUksS0FBQyxBQUFNLE9BQUMsQ0FBQyxBQUFHLEtBQUUsQUFBQyxBQUFFLEFBQUUsTUFBQyxBQUFHLElBQUMsQUFBQyxBQUFDLElBQUUsQUFBSSxBQUFDLEFBQUMsQUFDL0M7QUFBQyxBQUFDO0FBRUYsWUFBSSxBQUFHLE1BQUcsVUFBb0IsQUFBVTtBQUN0QyxnQkFBSSxBQUFDLElBQUcsQUFBTSxPQUFDLEFBQU0sT0FBQyxDQUFDLEFBQUcsS0FBRSxBQUFDLEFBQUUsQUFBRSxNQUFDLEFBQUcsSUFBQyxBQUFDLEFBQUMsSUFBRSxBQUFJLEFBQUMsQUFBQztBQUNoRCxBQUFDLGNBQUMsQUFBSSxBQUFDLFFBQUcsQUFBSyxBQUFDLEFBQ2xCO0FBQUMsQUFBQztBQUVGLEFBQUssY0FBQyxFQUFFLEFBQUcsS0FBRSxBQUFHLEFBQUUsT0FBRSxDQUFDLEFBQUksQUFBQyxBQUFDLEFBQUM7QUFDNUIsQUFBSSxhQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkI7QUFBQztBQUVELEFBQVUsZUFBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQWU7QUFDckQsWUFBSSxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQUMsQUFBQyxPQUFLLEFBQUcsS0FBRSxNQUFNLElBQUksQUFBSyxBQUFDLHdCQUFrQixBQUFHLEdBQVcsQUFBQyxBQUFDO0FBQzVFLGVBQU8sQUFBSyxNQUFDLEFBQVUsV0FBQyxBQUFNLFFBQUUsQUFBRyxLQUFFLEFBQUksQUFBQyxBQUFDLEFBQzdDO0FBQUMsQUFDRjs7QUFFRCxBQUFNLHNCQUFnQixBQUFZO0FBQ2hDLFdBQU8sSUFBSSxBQUFjLGVBQUMsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFHLEFBQUMsQUFBQyxBQUFDLEFBQzdDO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCbHVlcHJpbnQsIERlc2NyaXB0b3IgfSBmcm9tICcuL21peGluJztcbmltcG9ydCB7IENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IENvbXB1dGVkQmx1ZXByaW50IH0gZnJvbSAnLi9jb21wdXRlZCc7XG5cbmNsYXNzIEFsaWFzTWV0aG9kRGVzY3JpcHRvciBleHRlbmRzIERlc2NyaXB0b3Ige1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBfaG9tZTogT2JqZWN0KSB7XG4gICAgbGV0IG5hbWUgPSB0aGlzLm5hbWUgYXMgc3RyaW5nO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0KHRoaXM6IHR5cGVvZiB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbbmFtZV07XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIEFsaWFzTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIF9rZXk6IHN0cmluZywgX21ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgQWxpYXNNZXRob2REZXNjcmlwdG9yKHRoaXMubmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzTWV0aG9kKG5hbWU6IHN0cmluZyk6IEJsdWVwcmludCB7XG4gIHJldHVybiBuZXcgQWxpYXNNZXRob2RCbHVlcHJpbnQobmFtZSk7XG59XG5cbmNsYXNzIEFsaWFzQmx1ZXByaW50IGV4dGVuZHMgQ29tcHV0ZWRCbHVlcHJpbnQge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZ1tdKSB7XG4gICAgbGV0IHBhcmVudCA9IG5hbWUuc2xpY2UoMCwgLTEpO1xuICAgIGxldCBsYXN0ID0gbmFtZVtuYW1lLmxlbmd0aCAtIDFdO1xuXG4gICAgbGV0IGdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIG5hbWUucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgfTtcblxuICAgIGxldCBzZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIGxldCBwID0gcGFyZW50LnJlZHVjZSgob2JqLCBuKSA9PiBvYmpbbl0sIHRoaXMpO1xuICAgICAgcFtsYXN0XSA9IHZhbHVlO1xuICAgIH07XG5cbiAgICBzdXBlcih7IGdldCwgc2V0IH0sIFtuYW1lXSk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBtZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBpZiAodGhpcy5uYW1lWzBdID09PSBrZXkpIHRocm93IG5ldyBFcnJvcihgU2V0dGluZyBhbGlhcyAnJHtrZXl9JyBvbiBzZWxmYCk7XG4gICAgcmV0dXJuIHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIG1ldGEpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhcyhuYW1lOiBzdHJpbmcpOiBCbHVlcHJpbnQge1xuICByZXR1cm4gbmV3IEFsaWFzQmx1ZXByaW50KG5hbWUuc3BsaXQoJy4nKSk7XG59XG4iXX0= |
@@ -258,2 +258,2 @@ import { CLASS_META } from '@glimmer/object-reference'; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQU8sU0FBRSxBQUFVLEFBQUUsa0JBQU0sQUFBMkIsQUFBQztBQUN2RCxBQUFPLFNBQVEsQUFBSSxNQUFFLEFBQU0sQUFBRSxjQUFNLEFBQWUsQUFBQztBQUNuRCxBQUFzQixTQUVwQixBQUFTLFdBQ1QsQUFBWSxjQUNaLEFBQVcsQUFDWixtQkFBTSxBQUFVLEFBQUM7QUFFbEIsQUFBTyxTQUFFLEFBQUksQUFBRSxZQUFNLEFBQVMsQUFBQztBQUUvQixNQUFNLEVBQUUsQUFBTyxBQUFFLFlBQUcsQUFBSyxBQUFDO0FBRTFCLEFBQU0sT0FBQyxNQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDO0FBQ2pFLEFBQU0sT0FBQyxNQUFNLEFBQVMsWUFBRyxBQUFzQyxBQUFDO0FBRWhFLEFBQU07QUFBTjtBQUNFLGFBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRDtBQUFDOztBQUVELEFBQU07QUFBTjtBQUNFLGFBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRDtBQUFDOztBQVNELEFBQU07QUE0QkosZ0JBQVksQUFBc0IsWUFBRSxBQUFlO0FBM0IzQyxhQUFVLGFBQWMsQUFBVyxBQUFDLE1BQUMsQUFBdUI7QUFDNUQsYUFBc0IseUJBQWEsQUFBRSxBQUFDO0FBQ3RDLGFBQWdCLG1CQUFhLEFBQUUsQUFBQztBQUNoQyxhQUFZLGVBQVksQUFBRSxBQUFDO0FBeUJqQyxBQUFJLGFBQUMsQUFBTSxPQUFDLEFBQVUsQUFBQyxBQUFDO0FBQ3hCLEFBQUksYUFBQyxBQUFZLGFBQUMsQUFBSSxLQUFDLEdBQUcsQUFBTSxBQUFDLEFBQUMsQUFDcEM7QUFBQztBQXpCRCxBQUFNLFdBQUMsQUFBTSxPQUFDLEdBQUcsQUFBNEI7QUFDM0MsWUFBSSxBQUFVLGFBQUcsQUFBSSxLQUFD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QUMsQUFBSSxNQUFFLEFBQUksQUFBQyxBQUFDO0FBRTdDLFlBQUksQUFBUyxZQUFHLEFBQUksS0FBQyxBQUFNLEFBQUM7QUFDNUIsQUFBSSxhQUFDLEFBQU0sU0FBRyxBQUFXLEFBQUM7QUFFMUIsWUFBSSxBQUFDO0FBQ0gsQUFBTSxtQkFBQyxBQUFRLFNBQUMsQUFBSyxNQUFDLEFBQUksTUFBRSxBQUFJLEFBQUMsQUFBQyxBQUNwQztBQUFDLGtCQUFTLEFBQUM7QUFDVCxBQUFJLGlCQUFDLEFBQU0sU0FBRyxBQUFTLEFBQUMsQUFDMUI7QUFBQyxBQUNIO0FBQUMsQUFBQztBQUVELEFBQVksU0FBQyxBQUFTLFlBQUcsQUFBSSxBQUFDO0FBRS9CLEFBQU0sV0FBQyxBQUFJLEFBQUMsQUFDZDtBQUFDO0FBRUQsbUJBQW1CLEFBQWtCO0FBQ25DLEFBQUUsQUFBQyxRQUFDLEFBQVcsZUFBSSxBQUFRLEFBQUMsVUFBQyxBQUFNLE9BQUMsQUFBUSxBQUFDO0FBRTdDLEFBQU0sV0FBQyxVQUE4QixHQUFHLEFBQVc7QUFDakQsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFJLEFBQUMsTUFBQyxBQUFNLE9BQUMsQUFBUSxTQUFDLEFBQUssTUFBQyxBQUFJLE1BQUUsQUFBSSxBQUFDLEFBQUM7QUFFN0MsWUFBSSxBQUFTLFlBQUcsQUFBSSxLQUFDLEFBQU0sQUFBQztBQUM1QixBQUFJLGFBQUMsQUFBTSxTQUFHLEFBQUksQUFBQztBQUVuQixZQUFJLEFBQUM7QUFDSCxBQUFNLG1CQUFDLEFBQVEsU0FBQyxBQUFLLE1BQUMsQUFBSSxNQUFFLEFBQUksQUFBQyxBQUFDLEFBQ3BDO0FBQUMsa0JBQVMsQUFBQztBQUNULEFBQUksaUJBQUMsQUFBTSxTQUFHLEFBQVMsQUFBQyxBQUMxQjtBQUFDLEFBQ0g7QUFBQyxBQUFDLEFBQ0o7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENMQVNTX01FVEEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QsIGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IEdsaW1tZXJPYmplY3QsIHtcbiAgR2xpbW1lck9iamVjdEZhY3RvcnksXG4gIENsYXNzTWV0YSxcbiAgSW5zdGFuY2VNZXRhLFxuICB0dXJib2NoYXJnZSxcbn0gZnJvbSAnLi9vYmplY3QnO1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmV4cG9ydCBjb25zdCBERVNDUklQVE9SID0gJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYyc7XG5leHBvcnQgY29uc3QgQkxVRVBSSU5UID0gJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZXNjcmlwdG9yIHtcbiAgJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYycgPSB0cnVlO1xuICBhYnN0cmFjdCBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmx1ZXByaW50IHtcbiAgJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNScgPSB0cnVlO1xuICBhYnN0cmFjdCBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbnMge1xuICBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsO1xuICBtZXJnZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmc7XG4gIF9zdXBlcj86IEZ1bmN0aW9uO1xuICBbaW5kZXg6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIE1peGluIHtcbiAgcHJpdmF0ZSBleHRlbnNpb25zOiBEaWN0PGFueT4gPSBudWxsIGFzIGFueTsgLy8gYXNzaWduZWQgYmVmb3JlIHVzZWRcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZGVwZW5kZW5jaWVzOiBNaXhpbltdID0gW107XG5cbiAgc3RhdGljIGNyZWF0ZSguLi5hcmdzOiAoTWl4aW4gfCBFeHRlbnNpb25zKVtdKSB7XG4gICAgbGV0IGV4dGVuc2lvbnMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgW10pO1xuICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9ucyBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIGFyZ3MgYXMgTWl4aW5bXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkZXBzID0gYXJncy5zbGljZSgwLCAtMSkubWFwKHRvTWl4aW4pO1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKGV4dGVuc2lvbnMgYXMgRXh0ZW5zaW9ucywgZGVwcyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1peGlucyhvYmo6IGFueSk6IE1peGluW10ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBbXTtcblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIGlmICghbWV0YSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIG1ldGEuZ2V0QXBwbGllZE1peGlucygpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZXh0ZW5zaW9uczogRXh0ZW5zaW9ucywgbWl4aW5zOiBNaXhpbltdKSB7XG4gICAgdGhpcy5yZW9wZW4oZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCguLi5taXhpbnMpO1xuICB9XG5cbiAgZGV0ZWN0KG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gb2JqLmRlcGVuZGVuY2llcy5pbmRleE9mKHRoaXMpICE9PSAtMTtcbiAgICB9XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICByZXR1cm4gISFtZXRhICYmIG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpO1xuICB9XG5cbiAgcmVvcGVuKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMpIHtcbiAgICBpZiAodGhpcy5leHRlbnNpb25zKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKHRvTWl4aW4odGhpcy5leHRlbnNpb25zKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IGNvbmNhdDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3Q29uY2F0ID0gZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdDb25jYXQpKSB7XG4gICAgICAgIGNvbmNhdCA9IChyYXdDb25jYXQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd0NvbmNhdCA9PT0gbnVsbCB8fCByYXdDb25jYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25jYXQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmNhdCA9IFtyYXdDb25jYXQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGNvbmNhdDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdtZXJnZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICBsZXQgbWVyZ2VkOiBzdHJpbmdbXTtcbiAgICAgIGxldCByYXdNZXJnZWQgPSBleHRlbnNpb25zLm1lcmdlZFByb3BlcnRpZXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHJhd01lcmdlZCkpIHtcbiAgICAgICAgbWVyZ2VkID0gKHJhd01lcmdlZCBhcyBzdHJpbmdbXSkuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAocmF3TWVyZ2VkID09PSBudWxsIHx8IHJhd01lcmdlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1lcmdlZCA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkID0gW3Jhd01lcmdlZCBhcyBzdHJpbmddO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gbWVyZ2VkO1xuICAgIH1cblxuICAgIGxldCBub3JtYWxpemVkOiBEaWN0PEJsdWVwcmludD4gPSBPYmplY3Qua2V5cyhleHRlbnNpb25zKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBleHRlbnNpb25zW2tleV07XG5cbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBNZXRob2RCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBpZiAodmFsdWUgJiYgQkxVRVBSSU5UIGluIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgRGF0YUJsdWVwcmludCh7IHZhbHVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIGRpY3Q8Qmx1ZXByaW50PigpKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IGRpY3Q8YW55PigpO1xuICAgIGFzc2lnbih0aGlzLmV4dGVuc2lvbnMsIHR1cmJvY2hhcmdlKG5vcm1hbGl6ZWQpKTtcbiAgfVxuXG4gIGFwcGx5KHRhcmdldDogYW55KSB7XG4gICAgbGV0IG1ldGE6IENsYXNzTWV0YSA9ICh0YXJnZXRbQ0xBU1NfTUVUQV0gPSB0YXJnZXRbQ0xBU1NfTUVUQV0gfHwgbmV3IENsYXNzTWV0YSgpKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5hcHBseSh0YXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyh0YXJnZXQsIHRhcmdldCwgbWV0YSk7XG4gICAgbWV0YS5hZGRNaXhpbih0aGlzKTtcbiAgICBtZXRhLnNlYWwoKTtcbiAgICBtZXRhLnJlc2VhbCh0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZShPcmlnaW5hbDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIE9yaWdpbmFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3JpZ2luYWwucHJvdG90eXBlKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGUoT3JpZ2luYWwpKTtcbiAgICB0aGlzLmV4dGVuZFByb3RvdHlwZU9udG8oT3JpZ2luYWwsIE9yaWdpbmFsKTtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFN1YmNsYXNzLnByb3RvdHlwZSwgUGFyZW50LnByb3RvdHlwZSwgU3ViY2xhc3NbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKHRoaXMpO1xuICB9XG5cbiAgZXh0ZW5kU3RhdGljKFRhcmdldDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhUYXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhUYXJnZXQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihUYXJnZXQpLCBUYXJnZXRbQ0xBU1NfTUVUQV1bQ0xBU1NfTUVUQV0pO1xuICAgIFRhcmdldFtDTEFTU19NRVRBXS5hZGRTdGF0aWNNaXhpbih0aGlzKTtcbiAgfVxuXG4gIG1lcmdlUHJvcGVydGllcyh0YXJnZXQ6IE9iamVjdCwgcGFyZW50OiBPYmplY3QsIG1ldGE6IENsYXNzTWV0YSkge1xuICAgIGlmIChtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKSkgcmV0dXJuO1xuICAgIG1ldGEuYWRkQXBwbGllZE1peGluKHRoaXMpO1xuXG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZE1lcmdlZFByb3BlcnR5KGssIHBhcmVudFtrXSkpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrLCBbXSkpO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUoXG4gICAgICB0YXJnZXQsXG4gICAgICAnY29uY2F0ZW5hdGVkUHJvcGVydGllcydcbiAgICApO1xuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRNZXJnZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ21lcmdlZFByb3BlcnRpZXMnKTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZW5zaW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgbGV0IGV4dGVuc2lvbjogQmx1ZXByaW50ID0gdGhpcy5leHRlbnNpb25zIVtrZXldO1xuICAgICAgbGV0IGRlc2MgPSBleHRlbnNpb24uZGVzY3JpcHRvcih0YXJnZXQsIGtleSBhcyBzdHJpbmcsIG1ldGEpO1xuICAgICAgZGVzYy5kZWZpbmUodGFyZ2V0LCBrZXkgYXMgc3RyaW5nLCBwYXJlbnQpO1xuICAgIH0pO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBST09UIH0pLmRlZmluZSh0YXJnZXQsICdfc3VwZXInIGFzIHN0cmluZyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uID0gTWl4aW4gfCBFeHRlbnNpb25zO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kPFQgZXh0ZW5kcyBHbGltbWVyT2JqZWN0PihcbiAgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPixcbiAgLi4uZXh0ZW5zaW9uczogRXh0ZW5zaW9uW11cbik6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4ge1xuICBsZXQgU3VwZXIgPSBQYXJlbnQgYXMgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgbGV0IFN1YmNsYXNzID0gY2xhc3MgZXh0ZW5kcyBTdXBlciB7fTtcbiAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0gPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuXG4gIGxldCBtaXhpbnMgPSBleHRlbnNpb25zLm1hcCh0b01peGluKTtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmFkZFN1YmNsYXNzKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pO1xuICBtaXhpbnMuZm9yRWFjaChtID0+IFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKG0pKTtcblxuICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MgYXMgR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50KTtcblxuICByZXR1cm4gU3ViY2xhc3MgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsaW5rU3ViY2xhc3NlcyhQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmdldFN1YmNsYXNzZXMoKS5mb3JFYWNoKChTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PikgPT4ge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnJlc2V0KFBhcmVudFtDTEFTU19NRVRBXSk7XG4gICAgU3ViY2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQYXJlbnQucHJvdG90eXBlKTtcblxuICAgIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcywgUGFyZW50KTtcblxuICAgIC8vIHJlY3Vyc2UgaW50byBzdWItc3ViY2xhc3Nlc1xuICAgIHJlbGlua1N1YmNsYXNzZXMoU3ViY2xhc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTWl4aW4oZXh0ZW5zaW9uOiBFeHRlbnNpb24pOiBNaXhpbiB7XG4gIGlmIChleHRlbnNpb24gaW5zdGFuY2VvZiBNaXhpbikgcmV0dXJuIGV4dGVuc2lvbjtcbiAgZWxzZSByZXR1cm4gbmV3IE1peGluKGV4dGVuc2lvbiBhcyBPYmplY3QsIFtdKTtcbn1cblxuY2xhc3MgVmFsdWVEZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIHdyaXRhYmxlID0gdHJ1ZSxcbiAgICB2YWx1ZSxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBfaG9tZT86IGFueSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgIHdyaXRhYmxlOiB0aGlzLndyaXRhYmxlLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGFCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICB3cml0YWJsZSA9IHRydWUsXG4gICAgdmFsdWUsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGxldCB7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0gPSB0aGlzO1xuXG4gICAgaWYgKGNsYXNzTWV0YS5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgY2xhc3NNZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcsIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSBpZiAoY2xhc3NNZXRhLmhhc01lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkTWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZywgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0TWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9KTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWNjZXNzb3JCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgZ2V0OiAoKSA9PiBhbnk7XG4gIHNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgZ2V0LFxuICAgIHNldCxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yICYgeyBnZXQ6IGFueTsgc2V0OiBhbnkgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLmdldCA9IGdldDtcbiAgICB0aGlzLnNldCA9IHNldDtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9jbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICBnZXQ6IHRoaXMuZ2V0LFxuICAgICAgc2V0OiB0aGlzLnNldCxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgVmFsdWVEZXNjcmlwdG9yIHtcbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHdyYXBNZXRob2QoaG9tZSwga2V5LCB0aGlzLnZhbHVlKTtcbiAgICBzdXBlci5kZWZpbmUodGFyZ2V0LCBrZXksIGhvbWUpO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZEJsdWVwcmludCBleHRlbmRzIERhdGFCbHVlcHJpbnQge1xuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBNZXRob2REZXNjcmlwdG9yIHtcbiAgICBsZXQgZGVzYyA9IHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIGNsYXNzTWV0YSk7XG4gICAgcmV0dXJuIG5ldyBNZXRob2REZXNjcmlwdG9yKGRlc2MgYXMgUHJvcGVydHlEZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcE1ldGhvZChob21lOiBPYmplY3QsIG1ldGhvZE5hbWU6IHN0cmluZywgb3JpZ2luYWw6ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55KSB7XG4gIGlmICghKChtZXRob2ROYW1lIGFzIHN0cmluZykgaW4gaG9tZSkpIHJldHVybiBtYXliZVdyYXAob3JpZ2luYWwpO1xuXG4gIGxldCBzdXBlck1ldGhvZCA9IGhvbWVbbWV0aG9kTmFtZV07XG5cbiAgbGV0IGZ1bmMgPSBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gc3VwZXJNZXRob2Q7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgKGZ1bmMgYXMgYW55KS5fX3dyYXBwZWQgPSB0cnVlO1xuXG4gIHJldHVybiBmdW5jO1xufVxuXG5mdW5jdGlvbiBtYXliZVdyYXAob3JpZ2luYWw6IEZ1bmN0aW9uKSB7XG4gIGlmICgnX193cmFwcGVkJyBpbiBvcmlnaW5hbCkgcmV0dXJuIG9yaWdpbmFsO1xuXG4gIHJldHVybiBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEFBQU8sU0FBRSxBQUFVLEFBQUUsa0JBQU0sQUFBMkIsQUFBQztBQUN2RCxBQUFPLFNBQVEsQUFBSSxNQUFFLEFBQU0sQUFBRSxjQUFNLEFBQWUsQUFBQztBQUNuRCxBQUFzQixTQUVwQixBQUFTLFdBQ1QsQUFBWSxjQUNaLEFBQVcsQUFDWixtQkFBTSxBQUFVLEFBQUM7QUFFbEIsQUFBTyxTQUFFLEFBQUksQUFBRSxZQUFNLEFBQVMsQUFBQztBQUUvQixNQUFNLEVBQUUsQUFBTyxBQUFFLFlBQUcsQUFBSyxBQUFDO0FBRTFCLEFBQU0sT0FBQyxNQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDO0FBQ2pFLEFBQU0sT0FBQyxNQUFNLEFBQVMsWUFBRyxBQUFzQyxBQUFDO0FBRWhFLEFBQU07QUFBTjtBQUNFLGFBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRDtBQUFDOztBQUVELEFBQU07QUFBTjtBQUNFLGFBQXNDLDBDQUFHLEFBQUksQUFBQyxBQUVoRDtBQUFDOztBQVNELEFBQU07QUE0QkosZ0JBQVksQUFBc0IsWUFBRSxBQUFlO0FBM0IzQyxhQUFVLGFBQWMsQUFBVyxBQUFDLE1BQUMsQUFBdUI7QUFDNUQsYUFBc0IseUJBQWEsQUFBRSxBQUFDO0FBQ3RDLGFBQWdCLG1CQUFhLEFBQUUsQUFBQztBQUNoQyxhQUFZLGVBQVksQUFBRSxBQUFDO0FBeUJqQyxBQUFJLGFBQUMsQUFBTSxPQUFDLEFBQVUsQUFBQyxBQUFDO0FBQ3hCLEFBQUksYUFBQyxBQUFZLGFBQUMsQUFBSSxLQUFDLEdBQUcsQUFBTSxBQUFDLEFBQUMsQUFDcEM7QUFBQztBQXpCRCxBQUFNLFdBQUMsQUFBTSxPQUFDLEdBQUcsQUFBNEI7QUFDM0MsWUFBSSxBQUFVLGFBQUcsQUFBSSxLQUFD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QVEsU0FBQyxBQUFLLE1BQUMsQUFBSSxNQUFFLEFBQUksQUFBQyxBQUFDO0FBQ25DLGtCQUFTO0FBQ1IsQUFBSSxpQkFBQyxBQUFNLFNBQUcsQUFBUyxBQUFDO0FBQ3pCLEFBQ0g7QUFBQyxBQUFDLEFBQ0o7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENMQVNTX01FVEEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QsIGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IEdsaW1tZXJPYmplY3QsIHtcbiAgR2xpbW1lck9iamVjdEZhY3RvcnksXG4gIENsYXNzTWV0YSxcbiAgSW5zdGFuY2VNZXRhLFxuICB0dXJib2NoYXJnZSxcbn0gZnJvbSAnLi9vYmplY3QnO1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmV4cG9ydCBjb25zdCBERVNDUklQVE9SID0gJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYyc7XG5leHBvcnQgY29uc3QgQkxVRVBSSU5UID0gJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZXNjcmlwdG9yIHtcbiAgJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYycgPSB0cnVlO1xuICBhYnN0cmFjdCBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmx1ZXByaW50IHtcbiAgJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNScgPSB0cnVlO1xuICBhYnN0cmFjdCBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbnMge1xuICBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsO1xuICBtZXJnZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmc7XG4gIF9zdXBlcj86IEZ1bmN0aW9uO1xuICBbaW5kZXg6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIE1peGluIHtcbiAgcHJpdmF0ZSBleHRlbnNpb25zOiBEaWN0PGFueT4gPSBudWxsIGFzIGFueTsgLy8gYXNzaWduZWQgYmVmb3JlIHVzZWRcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZGVwZW5kZW5jaWVzOiBNaXhpbltdID0gW107XG5cbiAgc3RhdGljIGNyZWF0ZSguLi5hcmdzOiAoTWl4aW4gfCBFeHRlbnNpb25zKVtdKSB7XG4gICAgbGV0IGV4dGVuc2lvbnMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgW10pO1xuICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9ucyBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIGFyZ3MgYXMgTWl4aW5bXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkZXBzID0gYXJncy5zbGljZSgwLCAtMSkubWFwKHRvTWl4aW4pO1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKGV4dGVuc2lvbnMgYXMgRXh0ZW5zaW9ucywgZGVwcyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1peGlucyhvYmo6IGFueSk6IE1peGluW10ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBbXTtcblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIGlmICghbWV0YSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIG1ldGEuZ2V0QXBwbGllZE1peGlucygpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZXh0ZW5zaW9uczogRXh0ZW5zaW9ucywgbWl4aW5zOiBNaXhpbltdKSB7XG4gICAgdGhpcy5yZW9wZW4oZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCguLi5taXhpbnMpO1xuICB9XG5cbiAgZGV0ZWN0KG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gb2JqLmRlcGVuZGVuY2llcy5pbmRleE9mKHRoaXMpICE9PSAtMTtcbiAgICB9XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICByZXR1cm4gISFtZXRhICYmIG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpO1xuICB9XG5cbiAgcmVvcGVuKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMpIHtcbiAgICBpZiAodGhpcy5leHRlbnNpb25zKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKHRvTWl4aW4odGhpcy5leHRlbnNpb25zKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IGNvbmNhdDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3Q29uY2F0ID0gZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdDb25jYXQpKSB7XG4gICAgICAgIGNvbmNhdCA9IChyYXdDb25jYXQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd0NvbmNhdCA9PT0gbnVsbCB8fCByYXdDb25jYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25jYXQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmNhdCA9IFtyYXdDb25jYXQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGNvbmNhdDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdtZXJnZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICBsZXQgbWVyZ2VkOiBzdHJpbmdbXTtcbiAgICAgIGxldCByYXdNZXJnZWQgPSBleHRlbnNpb25zLm1lcmdlZFByb3BlcnRpZXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHJhd01lcmdlZCkpIHtcbiAgICAgICAgbWVyZ2VkID0gKHJhd01lcmdlZCBhcyBzdHJpbmdbXSkuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAocmF3TWVyZ2VkID09PSBudWxsIHx8IHJhd01lcmdlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1lcmdlZCA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkID0gW3Jhd01lcmdlZCBhcyBzdHJpbmddO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gbWVyZ2VkO1xuICAgIH1cblxuICAgIGxldCBub3JtYWxpemVkOiBEaWN0PEJsdWVwcmludD4gPSBPYmplY3Qua2V5cyhleHRlbnNpb25zKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBleHRlbnNpb25zW2tleV07XG5cbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBNZXRob2RCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBpZiAodmFsdWUgJiYgQkxVRVBSSU5UIGluIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgRGF0YUJsdWVwcmludCh7IHZhbHVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIGRpY3Q8Qmx1ZXByaW50PigpKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IGRpY3Q8YW55PigpO1xuICAgIGFzc2lnbih0aGlzLmV4dGVuc2lvbnMsIHR1cmJvY2hhcmdlKG5vcm1hbGl6ZWQpKTtcbiAgfVxuXG4gIGFwcGx5KHRhcmdldDogYW55KSB7XG4gICAgbGV0IG1ldGE6IENsYXNzTWV0YSA9ICh0YXJnZXRbQ0xBU1NfTUVUQV0gPSB0YXJnZXRbQ0xBU1NfTUVUQV0gfHwgbmV3IENsYXNzTWV0YSgpKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5hcHBseSh0YXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyh0YXJnZXQsIHRhcmdldCwgbWV0YSk7XG4gICAgbWV0YS5hZGRNaXhpbih0aGlzKTtcbiAgICBtZXRhLnNlYWwoKTtcbiAgICBtZXRhLnJlc2VhbCh0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZShPcmlnaW5hbDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIE9yaWdpbmFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3JpZ2luYWwucHJvdG90eXBlKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGUoT3JpZ2luYWwpKTtcbiAgICB0aGlzLmV4dGVuZFByb3RvdHlwZU9udG8oT3JpZ2luYWwsIE9yaWdpbmFsKTtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFN1YmNsYXNzLnByb3RvdHlwZSwgUGFyZW50LnByb3RvdHlwZSwgU3ViY2xhc3NbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKHRoaXMpO1xuICB9XG5cbiAgZXh0ZW5kU3RhdGljKFRhcmdldDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhUYXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhUYXJnZXQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihUYXJnZXQpLCBUYXJnZXRbQ0xBU1NfTUVUQV1bQ0xBU1NfTUVUQV0pO1xuICAgIFRhcmdldFtDTEFTU19NRVRBXS5hZGRTdGF0aWNNaXhpbih0aGlzKTtcbiAgfVxuXG4gIG1lcmdlUHJvcGVydGllcyh0YXJnZXQ6IE9iamVjdCwgcGFyZW50OiBPYmplY3QsIG1ldGE6IENsYXNzTWV0YSkge1xuICAgIGlmIChtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKSkgcmV0dXJuO1xuICAgIG1ldGEuYWRkQXBwbGllZE1peGluKHRoaXMpO1xuXG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZE1lcmdlZFByb3BlcnR5KGssIHBhcmVudFtrXSkpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrLCBbXSkpO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUoXG4gICAgICB0YXJnZXQsXG4gICAgICAnY29uY2F0ZW5hdGVkUHJvcGVydGllcydcbiAgICApO1xuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRNZXJnZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ21lcmdlZFByb3BlcnRpZXMnKTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZW5zaW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgbGV0IGV4dGVuc2lvbjogQmx1ZXByaW50ID0gdGhpcy5leHRlbnNpb25zIVtrZXldO1xuICAgICAgbGV0IGRlc2MgPSBleHRlbnNpb24uZGVzY3JpcHRvcih0YXJnZXQsIGtleSBhcyBzdHJpbmcsIG1ldGEpO1xuICAgICAgZGVzYy5kZWZpbmUodGFyZ2V0LCBrZXkgYXMgc3RyaW5nLCBwYXJlbnQpO1xuICAgIH0pO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBST09UIH0pLmRlZmluZSh0YXJnZXQsICdfc3VwZXInIGFzIHN0cmluZyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uID0gTWl4aW4gfCBFeHRlbnNpb25zO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kPFQgZXh0ZW5kcyBHbGltbWVyT2JqZWN0PihcbiAgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPixcbiAgLi4uZXh0ZW5zaW9uczogRXh0ZW5zaW9uW11cbik6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4ge1xuICBsZXQgU3VwZXIgPSBQYXJlbnQgYXMgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgbGV0IFN1YmNsYXNzID0gY2xhc3MgZXh0ZW5kcyBTdXBlciB7fTtcbiAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0gPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuXG4gIGxldCBtaXhpbnMgPSBleHRlbnNpb25zLm1hcCh0b01peGluKTtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmFkZFN1YmNsYXNzKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pO1xuICBtaXhpbnMuZm9yRWFjaChtID0+IFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKG0pKTtcblxuICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MgYXMgR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50KTtcblxuICByZXR1cm4gU3ViY2xhc3MgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsaW5rU3ViY2xhc3NlcyhQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmdldFN1YmNsYXNzZXMoKS5mb3JFYWNoKChTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PikgPT4ge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnJlc2V0KFBhcmVudFtDTEFTU19NRVRBXSk7XG4gICAgU3ViY2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQYXJlbnQucHJvdG90eXBlKTtcblxuICAgIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcywgUGFyZW50KTtcblxuICAgIC8vIHJlY3Vyc2UgaW50byBzdWItc3ViY2xhc3Nlc1xuICAgIHJlbGlua1N1YmNsYXNzZXMoU3ViY2xhc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTWl4aW4oZXh0ZW5zaW9uOiBFeHRlbnNpb24pOiBNaXhpbiB7XG4gIGlmIChleHRlbnNpb24gaW5zdGFuY2VvZiBNaXhpbikgcmV0dXJuIGV4dGVuc2lvbjtcbiAgZWxzZSByZXR1cm4gbmV3IE1peGluKGV4dGVuc2lvbiBhcyBPYmplY3QsIFtdKTtcbn1cblxuY2xhc3MgVmFsdWVEZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIHdyaXRhYmxlID0gdHJ1ZSxcbiAgICB2YWx1ZSxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBfaG9tZT86IGFueSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgIHdyaXRhYmxlOiB0aGlzLndyaXRhYmxlLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGFCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICB3cml0YWJsZSA9IHRydWUsXG4gICAgdmFsdWUsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGxldCB7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0gPSB0aGlzO1xuXG4gICAgaWYgKGNsYXNzTWV0YS5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgY2xhc3NNZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcsIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSBpZiAoY2xhc3NNZXRhLmhhc01lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkTWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZywgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0TWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9KTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWNjZXNzb3JCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgZ2V0OiAoKSA9PiBhbnk7XG4gIHNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgZ2V0LFxuICAgIHNldCxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yICYgeyBnZXQ6IGFueTsgc2V0OiBhbnkgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLmdldCA9IGdldDtcbiAgICB0aGlzLnNldCA9IHNldDtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9jbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICBnZXQ6IHRoaXMuZ2V0LFxuICAgICAgc2V0OiB0aGlzLnNldCxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgVmFsdWVEZXNjcmlwdG9yIHtcbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHdyYXBNZXRob2QoaG9tZSwga2V5LCB0aGlzLnZhbHVlKTtcbiAgICBzdXBlci5kZWZpbmUodGFyZ2V0LCBrZXksIGhvbWUpO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZEJsdWVwcmludCBleHRlbmRzIERhdGFCbHVlcHJpbnQge1xuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBNZXRob2REZXNjcmlwdG9yIHtcbiAgICBsZXQgZGVzYyA9IHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIGNsYXNzTWV0YSk7XG4gICAgcmV0dXJuIG5ldyBNZXRob2REZXNjcmlwdG9yKGRlc2MgYXMgUHJvcGVydHlEZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcE1ldGhvZChob21lOiBPYmplY3QsIG1ldGhvZE5hbWU6IHN0cmluZywgb3JpZ2luYWw6ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55KSB7XG4gIGlmICghKChtZXRob2ROYW1lIGFzIHN0cmluZykgaW4gaG9tZSkpIHJldHVybiBtYXliZVdyYXAob3JpZ2luYWwpO1xuXG4gIGxldCBzdXBlck1ldGhvZCA9IGhvbWVbbWV0aG9kTmFtZV07XG5cbiAgbGV0IGZ1bmMgPSBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gc3VwZXJNZXRob2Q7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgKGZ1bmMgYXMgYW55KS5fX3dyYXBwZWQgPSB0cnVlO1xuXG4gIHJldHVybiBmdW5jO1xufVxuXG5mdW5jdGlvbiBtYXliZVdyYXAob3JpZ2luYWw6IEZ1bmN0aW9uKSB7XG4gIGlmICgnX193cmFwcGVkJyBpbiBvcmlnaW5hbCkgcmV0dXJuIG9yaWdpbmFsO1xuXG4gIHJldHVybiBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ== |
@@ -299,2 +299,2 @@ import { Meta, PropertyReference } from '@glimmer/object-reference'; | ||
GlimmerObject.isClass = true; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQUFBTyxTQUFFLEFBQUksTUFBeUIsQUFBaUIsQUFBRSx5QkFBTSxBQUEyQixBQUFDO0FBQzNGLEFBQU8sU0FBUSxBQUFJLE1BQUUsQUFBTSxRQUFFLEFBQWMsQUFBRSxzQkFBTSxBQUFlLEFBQUM7QUFDbkUsQUFBTyxTQUFTLEFBQU0sVUFBSSxBQUFXLGFBQUUsQUFBTyxTQUFFLEFBQWdCLGtCQUFFLEFBQVUsQUFBRSxrQkFBTSxBQUFTLEFBQUM7QUFFOUYsTUFBTSxFQUFFLEFBQU8sQUFBRSxZQUFHLEFBQUssQUFBQztBQUUxQixBQUFPLFNBQUUsQUFBSSxBQUFFLFlBQU0sQUFBUyxBQUFDO0FBRS9CLEFBQU8sU0FBRSxBQUFJLEFBQUUsWUFBTSxBQUFvQixBQUFDO0FBRTFDLEFBQU0sT0FBQyxNQUFNLEFBQVcsY0FBRyx1QkFBd0IsQ0FBQyxBQUFDO0FBRXJELE1BQU0sQUFBVSxhQUFHLEFBQXNDLEFBQUM7QUF3QjFELEFBQU0sNEJBQXlCLEFBQU07QUFDbkMsQUFBc0I7QUFDdEIsQUFBeUI7QUFDekIsQUFBTSxXQUFDLEFBQUcsQUFBQyxBQUNiO0FBQUM7QUFFRCxNQUEwQixtQkFBUSxBQUFJO0FBQ3BDLEFBQW1CLHdCQUFDLEdBQUcsQUFBWTtBQUNqQyxjQUFNLElBQUksQUFBSyxNQUFDLEFBQWdELEFBQUMsQUFBQyxBQUNwRTtBQUFDLEFBQ0Y7O0FBRUQsQUFBTTtBQUFOO0FBQ1UsYUFBYyxpQkFBRyxBQUFJLEFBQThCLEFBQUM7QUFDcEQsYUFBZ0IsbUJBQUcsQUFBSSxBQUFPLEFBQUM7QUFDL0IsYUFBc0IseUJBQUcsQUFBSSxBQUFTLEFBQUM7QUFDdkMsYUFBeUIsNEJBQUcsQUFBSyxBQUFDO0FBQ2xDLGFBQWdCLG1CQUFHLEFBQUksQUFB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O0FBQ2xFLFlBQUksQUFBUSxXQUFHLEFBQUksS0FBQyxBQUFVLEFBQUMsWUFBQyxBQUFtQixBQUFFLEFBQUM7QUFDdEQsQUFBRSxBQUFDLFlBQUMsQ0FBQyxBQUFRLEFBQUMsVUFBQyxBQUFNLEFBQUM7QUFFdEIsQUFBRyxBQUFDLGFBQUMsSUFBSSxBQUFJLFFBQUksQUFBUSxBQUFDLFVBQUMsQUFBQztBQUMxQixBQUFRLHFCQUFDLEFBQUksTUFBRSxBQUFRLFNBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUNqQztBQUFDLEFBQ0g7QUFBQztBQU1ELEFBQUksV0FBSSxDQUFDO0FBVVQsQUFBRyxRQUFDLEFBQVc7QUFDYixBQUFNLGVBQUMsQUFBSSxLQUFDLEFBQUcsQUFBQyxBQUFDLEFBQ25CO0FBQUM7QUFFRCxBQUFHLFFBQUMsQUFBVyxLQUFFLEFBQVU7QUFDekIsQUFBSSxhQUFDLEFBQUcsQUFBQyxPQUFHLEFBQUssQUFBQztBQUNsQixBQUFJLEFBQUUsQUFBQyxBQUNUO0FBQUM7QUFFRCxBQUFhLGtCQUFDLEFBQWE7QUFDekIsQUFBTSxlQUFDLEFBQUksTUFBRSxBQUFLLEFBQUMsQUFBQztBQUNwQixBQUFJLEFBQUUsQUFBQyxBQUNUO0FBQUM7QUFFRCxBQUFPLGNBQUksQ0FBQzs7QUF6RUwsY0FBc0MsMENBQWlCLEFBQVksYUFBQyxBQUFVLFdBQUMsQUFBSSxBQUFDLEFBQUM7QUFDckYsY0FBTyxVQUFHLEFBQUksQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ldGEsIElubmVyUmVmZXJlbmNlRmFjdG9yeSwgUHJvcGVydHlSZWZlcmVuY2UgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QsIGFzc2lnbiwgaW5pdGlhbGl6ZUd1aWQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IE1peGluLCBleHRlbmQgYXMgZXh0ZW5kQ2xhc3MsIHRvTWl4aW4sIHJlbGlua1N1YmNsYXNzZXMsIHdyYXBNZXRob2QgfSBmcm9tICcuL21peGluJztcblxuY29uc3QgeyBpc0FycmF5IH0gPSBBcnJheTtcblxuaW1wb3J0IHsgUk9PVCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBidW1wIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcblxuZXhwb3J0IGNvbnN0IEVNUFRZX0NBQ0hFID0gZnVuY3Rpb24gRU1QVFlfQ0FDSEUoKSB7fTtcblxuY29uc3QgQ0xBU1NfTUVUQSA9ICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdFdpdGhNaXhpbnMge1xuICAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogQ2xhc3NNZXRhO1xuICBfbWV0YTogTWV0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZVdpdGhNaXhpbnMge1xuICBjb25zdHJ1Y3RvcjogT2JqZWN0V2l0aE1peGlucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPiB7XG4gIG5ldyA8VT4oYXR0cnM/OiBVKTogR2xpbW1lck9iamVjdCAmIFQgJiBVO1xuICBleHRlbmQoKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8T2JqZWN0PjtcbiAgZXh0ZW5kPFQ+KGV4dGVuc2lvbjogVCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+O1xuICBleHRlbmQoLi4uZXh0ZW5zaW9uczogT2JqZWN0W10pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxPYmplY3Q+O1xuICBjcmVhdGU8VT4oYXR0cnM/OiBVKTogR2xpbW1lck9iamVjdCAmIFQgJiBVO1xuICByZW9wZW48VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQ7XG4gIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkO1xuICBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdDtcbiAgZWFjaENvbXB1dGVkUHJvcGVydHkoY2FsbGJhY2s6IChzOiBzdHJpbmcsIG86IE9iamVjdCkgPT4gdm9pZCk6IHZvaWQ7XG4gICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBJbnN0YW5jZU1ldGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dXJib2NoYXJnZTxUPihvYmo6IFQpOiBUIHtcbiAgLy8gZnVuY3Rpb24gRHVtbXkoKSB7fVxuICAvLyBEdW1teS5wcm90b3R5cGUgPSBvYmo7XG4gIHJldHVybiBvYmo7XG59XG5cbmFic3RyYWN0IGNsYXNzIFNlYWxlZE1ldGEgZXh0ZW5kcyBNZXRhIHtcbiAgYWRkUmVmZXJlbmNlVHlwZUZvciguLi5fYXJnczogYW55W10pOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgbW9kaWZ5IHJlZmVyZW5jZSB0eXBlcyBvbiBhIHNlYWxlZCBtZXRhJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsYXNzTWV0YSB7XG4gIHByaXZhdGUgcmVmZXJlbmNlVHlwZXMgPSBkaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PigpO1xuICBwcml2YXRlIHByb3BlcnR5TWV0YWRhdGEgPSBkaWN0PGFueT4oKTtcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgcHJpdmF0ZSBoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHByaXZhdGUgbWVyZ2VkUHJvcGVydGllcyA9IGRpY3Q8T2JqZWN0PigpO1xuICBwcml2YXRlIGhhc01lcmdlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBhcHBsaWVkTWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgc3RhdGljTWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgc3ViY2xhc3NlczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PltdID0gW107XG4gIHByaXZhdGUgc2xvdHM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyBJbnN0YW5jZU1ldGFDb25zdHJ1Y3RvcjogT3B0aW9uPHR5cGVvZiBNZXRhPiA9IG51bGw7XG5cbiAgc3RhdGljIGZyb21QYXJlbnQocGFyZW50OiBPcHRpb248Q2xhc3NNZXRhPikge1xuICAgIGxldCBtZXRhID0gbmV3IHRoaXMoKTtcbiAgICBtZXRhLnJlc2V0KHBhcmVudCk7XG4gICAgcmV0dXJuIG1ldGE7XG4gIH1cblxuICBzdGF0aWMgZm9yKG9iamVjdDogT2JqZWN0V2l0aE1peGlucyB8IEluc3RhbmNlV2l0aE1peGlucyk6IE9wdGlvbjxDbGFzc01ldGE+IHtcbiAgICBpZiAoQ0xBU1NfTUVUQSBpbiBvYmplY3QpIHJldHVybiAob2JqZWN0IGFzIE9iamVjdFdpdGhNaXhpbnMpW0NMQVNTX01FVEFdO1xuICAgIGVsc2UgaWYgKG9iamVjdC5jb25zdHJ1Y3RvcilcbiAgICAgIHJldHVybiAob2JqZWN0IGFzIEluc3RhbmNlV2l0aE1peGlucykuY29uc3RydWN0b3JbQ0xBU1NfTUVUQV0gfHwgbnVsbDtcbiAgICBlbHNlIHJldHVybiBudWxsO1xuICB9XG5cbiAgaW5pdChvYmplY3Q6IEdsaW1tZXJPYmplY3QsIGF0dHJzOiBPcHRpb248T2JqZWN0Pikge1xuICAgIGlmICh0eXBlb2YgYXR0cnMgIT09ICdvYmplY3QnIHx8IGF0dHJzID09PSBudWxsKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgY29uY2F0UHJvcHMgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIGNvbmNhdFByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wIGluIGF0dHJzKSB7XG4gICAgICAgICAgbGV0IGNvbmNhdCA9IGNvbmNhdFByb3BzW3Byb3BdLnNsaWNlKCk7XG4gICAgICAgICAgb2JqZWN0W3Byb3BdID0gY29uY2F0LmNvbmNhdChhdHRyc1twcm9wXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgbWVyZ2VkUHJvcHMgPSB0aGlzLm1lcmdlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIG1lcmdlZFByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wIGluIGF0dHJzKSB7XG4gICAgICAgICAgbGV0IG1lcmdlZCA9IGFzc2lnbih7fSwgbWVyZ2VkUHJvcHNbcHJvcF0pO1xuICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGFzc2lnbihtZXJnZWQsIGF0dHJzW3Byb3BdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZFN0YXRpY01peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMuc3RhdGljTWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgYWRkTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5taXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBnZXRTdGF0aWNNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zO1xuICB9XG5cbiAgZ2V0TWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLm1peGlucztcbiAgfVxuXG4gIGFkZEFwcGxpZWRNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLmFwcGxpZWRNaXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBoYXNBcHBsaWVkTWl4aW4obWl4aW46IE1peGluKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucy5pbmRleE9mKG1peGluKSAhPT0gLTE7XG4gIH1cblxuICBnZXRBcHBsaWVkTWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpZWRNaXhpbnM7XG4gIH1cblxuICBoYXNTdGF0aWNNaXhpbihtaXhpbjogTWl4aW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QWxsTWl4aW5zKFN1YmNsYXNzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCBQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5nZXRNaXhpbnMoKS5mb3JFYWNoKChtOiBNaXhpbikgPT4gbS5leHRlbmRQcm90b3R5cGVPbnRvKFN1YmNsYXNzLCBQYXJlbnQpKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5nZXRTdGF0aWNNaXhpbnMoKS5mb3JFYWNoKChtOiBNaXhpbikgPT4gbS5leHRlbmRTdGF0aWMoU3ViY2xhc3MpKTtcbiAgICBTdWJjbGFzc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cblxuICBhZGRTdWJjbGFzcyhjb25zdHJ1Y3RvcjogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuc3ViY2xhc3Nlcy5wdXNoKGNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGdldFN1YmNsYXNzZXMoKTogRnVuY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViY2xhc3NlcztcbiAgfVxuXG4gIGFkZFByb3BlcnR5TWV0YWRhdGEocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgfVxuXG4gIG1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV07XG4gIH1cblxuICBhZGRSZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcsIHR5cGU6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gPSB0eXBlO1xuICB9XG5cbiAgYWRkU2xvdEZvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgdGhpcy5zbG90cy5wdXNoKHByb3BlcnR5KTtcbiAgfVxuXG4gIGhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmICgocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCB2YWwgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldLmNvbmNhdCh2YWx1ZSk7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaGFzTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWVyZ2VkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogT2JqZWN0KSB7XG4gICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IHBhc3NlZCBpbiBcXGAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgICl9XFxgIGFzIHRoZSB2YWx1ZSBmb3IgXFxgZm9vXFxgIGJ1dCBcXGBmb29cXGAgY2Fubm90IGJlIGFuIEFycmF5YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzICYmIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSBtZXJnZU1lcmdlZFByb3BlcnRpZXMoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlID09PSBudWxsID8gdmFsdWUgOiB2YWx1ZSB8fCB7fTtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZlcmVuY2VUeXBlcygpOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gIH1cblxuICBnZXRQcm9wZXJ0eU1ldGFkYXRhKCk6IERpY3Q8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGEgPSBkaWN0KCk7XG4gICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHBhcmVudC5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0gPSBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXS5zbGljZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzTWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50Lm1lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdID0gYXNzaWduKHt9LCBwYXJlbnQubWVyZ2VkUHJvcGVydGllc1twcm9wXSk7XG4gICAgICB9XG5cbiAgICAgIGFzc2lnbih0aGlzLnJlZmVyZW5jZVR5cGVzLCBwYXJlbnQucmVmZXJlbmNlVHlwZXMpO1xuICAgICAgYXNzaWduKHRoaXMucHJvcGVydHlNZXRhZGF0YSwgcGFyZW50LnByb3BlcnR5TWV0YWRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2VhbChvYmo6IE9iamVjdCkge1xuICAgIGxldCBtZXRhID0gTWV0YS5mb3Iob2JqKTtcbiAgICBsZXQgZnJlc2ggPSBuZXcgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciEob2JqLCB7fSk7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzID0gbWV0YS5nZXRSZWZlcmVuY2VUeXBlcygpO1xuICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcblxuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihyZWZlcmVuY2VUeXBlcywgdGhpcy5yZWZlcmVuY2VUeXBlcykpO1xuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihzbG90cywgZnJlc2guZ2V0U2xvdHMoKSkpO1xuICB9XG5cbiAgc2VhbCgpIHtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXM6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+ID0gdHVyYm9jaGFyZ2UoXG4gICAgICBhc3NpZ24oe30sIHRoaXMucmVmZXJlbmNlVHlwZXMpXG4gICAgKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMubWVyZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyAmJiAhdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbigpIHt9O1xuICAgIH1cblxuICAgIGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cbiAgICBjbGFzcyBTbG90cyB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc2xvdHMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICB0aGlzW25hbWVdID0gRU1QVFlfQ0FDSEU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIFNlYWxlZE1ldGEge1xuICAgICAgcHJvdGVjdGVkIHNsb3RzOiBTbG90cyA9IG5ldyBTbG90cygpO1xuICAgICAgcHVibGljIHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHJlZmVyZW5jZVR5cGVzO1xuXG4gICAgICBnZXRSZWZlcmVuY2VUeXBlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgICB9XG5cbiAgICAgIHJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZyk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldIHx8IFByb3BlcnR5UmVmZXJlbmNlO1xuICAgICAgfVxuXG4gICAgICBnZXRTbG90cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHM7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHR1cmJvY2hhcmdlKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWVyZ2VkUHJvcGVydGllcyhhdHRyczogT2JqZWN0LCBwYXJlbnQ6IE9iamVjdCkge1xuICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBwYXJlbnQpO1xuXG4gIGZvciAobGV0IHByb3AgaW4gYXR0cnMpIHtcbiAgICBpZiAocHJvcCBpbiBwYXJlbnQgJiYgdHlwZW9mIHBhcmVudFtwcm9wXSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgYXR0cnNbcHJvcF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCB3cmFwcGVkID0gd3JhcE1ldGhvZChwYXJlbnQsIHByb3AsIGF0dHJzW3Byb3BdKTtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IHdyYXBwZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IGF0dHJzW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZU1ldGEgZXh0ZW5kcyBDbGFzc01ldGEge1xuICBwdWJsaWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YSA9IENsYXNzTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPEluc3RhbmNlTWV0YT4pOiBJbnN0YW5jZU1ldGEge1xuICAgIHJldHVybiBzdXBlci5mcm9tUGFyZW50KHBhcmVudCkgYXMgSW5zdGFuY2VNZXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBJbnN0YW5jZU1ldGEpIHtcbiAgICBzdXBlci5yZXNldChwYXJlbnQpO1xuICAgIGlmIChwYXJlbnQpIHRoaXNbQ0xBU1NfTUVUQV0ucmVzZXQocGFyZW50W0NMQVNTX01FVEFdKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgc3VwZXIuc2VhbCgpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsaW1tZXJPYmplY3Qge1xuICBzdGF0aWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuICBzdGF0aWMgaXNDbGFzcyA9IHRydWU7XG5cbiAgc3RhdGljIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcblxuICBzdGF0aWMgZXh0ZW5kKHRoaXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIC4uLmV4dGVuc2lvbnM6IGFueVtdKSB7XG4gICAgcmV0dXJuIGV4dGVuZENsYXNzKHRoaXMsIC4uLmV4dGVuc2lvbnMpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShhdHRycz86IE9iamVjdCB8IG51bGwpOiBHbGltbWVyT2JqZWN0IHtcbiAgICByZXR1cm4gbmV3IHRoaXMoYXR0cnMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRQcm90b3R5cGUodGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG5cbiAgICByZWxpbmtTdWJjbGFzc2VzKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFN0YXRpYyh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIHN0YXRpYyBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgbGV0IHZhbHVlID0gdGhpc1tDTEFTU19NRVRBXS5tZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5KTtcbiAgICBpZiAoIXZhbHVlKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWV0YUZvclByb3BlcnR5KCkgY291bGQgbm90IGZpbmQgYSBjb21wdXRlZCBwcm9wZXJ0eSB3aXRoIGtleSAnJHtwcm9wZXJ0eX0nLmBcbiAgICAgICk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBsZXQgbWV0YWRhdGEgPSB0aGlzW0NMQVNTX01FVEFdLmdldFByb3BlcnR5TWV0YWRhdGEoKTtcbiAgICBpZiAoIW1ldGFkYXRhKSByZXR1cm47XG5cbiAgICBmb3IgKGxldCBwcm9wIGluIG1ldGFkYXRhKSB7XG4gICAgICBjYWxsYmFjayhwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgX3N1cGVyID0gUk9PVDtcbiAgX21ldGEgPSBudWxsO1xuICBfZ3VpZDogbnVtYmVyO1xuXG4gIGluaXQoKSB7fVxuXG4gIGNvbnN0cnVjdG9yKGF0dHJzPzogT2JqZWN0IHwgbnVsbCkge1xuICAgIGlmIChhdHRycykgYXNzaWduKHRoaXMsIGF0dHJzKTtcbiAgICAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgR2xpbW1lck9iamVjdClbQ0xBU1NfTUVUQV0uaW5pdCh0aGlzLCBhdHRycyB8fCBudWxsKTtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG4gICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzW2tleV07XG4gIH1cblxuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgICBidW1wKCk7XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKGF0dHJzOiBPYmplY3QpIHtcbiAgICBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7fVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQUFBTyxTQUFFLEFBQUksTUFBeUIsQUFBaUIsQUFBRSx5QkFBTSxBQUEyQixBQUFDO0FBQzNGLEFBQU8sU0FBUSxBQUFJLE1BQUUsQUFBTSxRQUFFLEFBQWMsQUFBRSxzQkFBTSxBQUFlLEFBQUM7QUFDbkUsQUFBTyxTQUFTLEFBQU0sVUFBSSxBQUFXLGFBQUUsQUFBTyxTQUFFLEFBQWdCLGtCQUFFLEFBQVUsQUFBRSxrQkFBTSxBQUFTLEFBQUM7QUFFOUYsTUFBTSxFQUFFLEFBQU8sQUFBRSxZQUFHLEFBQUssQUFBQztBQUUxQixBQUFPLFNBQUUsQUFBSSxBQUFFLFlBQU0sQUFBUyxBQUFDO0FBRS9CLEFBQU8sU0FBRSxBQUFJLEFBQUUsWUFBTSxBQUFvQixBQUFDO0FBRTFDLEFBQU0sT0FBQyxNQUFNLEFBQVcsY0FBRyx1QkFBd0IsQ0FBQyxBQUFDO0FBRXJELE1BQU0sQUFBVSxhQUFHLEFBQXNDLEFBQUM7QUF3QjFELEFBQU0sNEJBQXlCLEFBQU07QUFDbkMsQUFBc0I7QUFDdEIsQUFBeUI7QUFDekIsV0FBTyxBQUFHLEFBQUMsQUFDYjtBQUFDO0FBRUQsTUFBMEIsbUJBQVEsQUFBSTtBQUNwQyxBQUFtQix3QkFBQyxHQUFHLEFBQVk7QUFDakMsY0FBTSxJQUFJLEFBQUssTUFBQyxBQUFnRCxBQUFDLEFBQUMsQUFDcEU7QUFBQyxBQUNGOztBQUVELEFBQU07QUFBTjtBQUNVLGFBQWMsaUJBQUcsQUFBSSxBQUE4QixBQUFDO0FBQ3BELGFBQWdCLG1CQUFHLEFBQUksQUFBTyxBQUFDO0FBQy9CLGFBQXNCLHlCQUFHLEFBQUksQUFBUyxBQUFDO0FBQ3ZDLGFBQXlCLDRCQUFHLEFBQUssQUFBQztBQUNsQyxhQUFnQixtQkFBRyxBQUFJLEFBQVUsQUFB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QkFBQyxBQUFnQjtBQUNyQyxZQUFJLEFBQUssUUFBRyxBQUFJLEtBQUMsQUFBVSxBQUFDLFlBQUMsQUFBbUIsb0JBQUMsQUFBUSxBQUFDLEFBQUM7QUFDM0QsWUFBSSxDQUFDLEFBQUssT0FDUixNQUFNLElBQUksQUFBSyxBQUNiLHdFQUFrRSxBQUFRLFFBQUksQUFDL0UsQUFBQztBQUNKLGVBQU8sQUFBSyxBQUFDLEFBQ2Y7QUFBQztBQUVELEFBQU0sV0FBQyxBQUFvQixxQkFBQyxBQUF3QztBQUNsRSxZQUFJLEFBQVEsV0FBRyxBQUFJLEtBQUMsQUFBVSxBQUFDLFlBQUMsQUFBbUIsQUFBRSxBQUFDO0FBQ3RELFlBQUksQ0FBQyxBQUFRLFVBQUUsQUFBTztBQUV0QixhQUFLLElBQUksQUFBSSxRQUFJLEFBQVEsVUFBRTtBQUN6QixBQUFRLHFCQUFDLEFBQUksTUFBRSxBQUFRLFNBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQztBQUNoQyxBQUNIO0FBQUM7QUFNRCxBQUFJLFdBQUksQ0FBQztBQVVULEFBQUcsUUFBQyxBQUFXO0FBQ2IsZUFBTyxBQUFJLEtBQUMsQUFBRyxBQUFDLEFBQUMsQUFDbkI7QUFBQztBQUVELEFBQUcsUUFBQyxBQUFXLEtBQUUsQUFBVTtBQUN6QixBQUFJLGFBQUMsQUFBRyxBQUFDLE9BQUcsQUFBSyxBQUFDO0FBQ2xCLEFBQUksQUFBRSxBQUFDLEFBQ1Q7QUFBQztBQUVELEFBQWEsa0JBQUMsQUFBYTtBQUN6QixBQUFNLGVBQUMsQUFBSSxNQUFFLEFBQUssQUFBQyxBQUFDO0FBQ3BCLEFBQUksQUFBRSxBQUFDLEFBQ1Q7QUFBQztBQUVELEFBQU8sY0FBSSxDQUFDOztBQXpFTCxjQUFzQywwQ0FBaUIsQUFBWSxhQUFDLEFBQVUsV0FBQyxBQUFJLEFBQUMsQUFBQztBQUNyRixjQUFPLFVBQUcsQUFBSSxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWV0YSwgSW5uZXJSZWZlcmVuY2VGYWN0b3J5LCBQcm9wZXJ0eVJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRGljdCwgZGljdCwgYXNzaWduLCBpbml0aWFsaXplR3VpZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgTWl4aW4sIGV4dGVuZCBhcyBleHRlbmRDbGFzcywgdG9NaXhpbiwgcmVsaW5rU3ViY2xhc3Nlcywgd3JhcE1ldGhvZCB9IGZyb20gJy4vbWl4aW4nO1xuXG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGJ1bXAgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfQ0FDSEUgPSBmdW5jdGlvbiBFTVBUWV9DQUNIRSgpIHt9O1xuXG5jb25zdCBDTEFTU19NRVRBID0gJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0V2l0aE1peGlucyB7XG4gICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBDbGFzc01ldGE7XG4gIF9tZXRhOiBNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlV2l0aE1peGlucyB7XG4gIGNvbnN0cnVjdG9yOiBPYmplY3RXaXRoTWl4aW5zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+IHtcbiAgbmV3IDxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxPYmplY3Q+O1xuICBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD47XG4gIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGNyZWF0ZTxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgcmVvcGVuQ2xhc3M8VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQ7XG4gIG1ldGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0O1xuICBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZDtcbiAgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1cmJvY2hhcmdlPFQ+KG9iajogVCk6IFQge1xuICAvLyBmdW5jdGlvbiBEdW1teSgpIHt9XG4gIC8vIER1bW15LnByb3RvdHlwZSA9IG9iajtcbiAgcmV0dXJuIG9iajtcbn1cblxuYWJzdHJhY3QgY2xhc3MgU2VhbGVkTWV0YSBleHRlbmRzIE1ldGEge1xuICBhZGRSZWZlcmVuY2VUeXBlRm9yKC4uLl9hcmdzOiBhbnlbXSk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBtb2RpZnkgcmVmZXJlbmNlIHR5cGVzIG9uIGEgc2VhbGVkIG1ldGEnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xhc3NNZXRhIHtcbiAgcHJpdmF0ZSByZWZlcmVuY2VUeXBlcyA9IGRpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+KCk7XG4gIHByaXZhdGUgcHJvcGVydHlNZXRhZGF0YSA9IGRpY3Q8YW55PigpO1xuICBwcml2YXRlIGNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0PGFueVtdPigpO1xuICBwcml2YXRlIGhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzID0gZGljdDxPYmplY3Q+KCk7XG4gIHByaXZhdGUgaGFzTWVyZ2VkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIGFwcGxpZWRNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGF0aWNNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJjbGFzc2VzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+W10gPSBbXTtcbiAgcHJpdmF0ZSBzbG90czogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIEluc3RhbmNlTWV0YUNvbnN0cnVjdG9yOiBPcHRpb248dHlwZW9mIE1ldGE+ID0gbnVsbDtcblxuICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQ6IE9wdGlvbjxDbGFzc01ldGE+KSB7XG4gICAgbGV0IG1ldGEgPSBuZXcgdGhpcygpO1xuICAgIG1ldGEucmVzZXQocGFyZW50KTtcbiAgICByZXR1cm4gbWV0YTtcbiAgfVxuXG4gIHN0YXRpYyBmb3Iob2JqZWN0OiBPYmplY3RXaXRoTWl4aW5zIHwgSW5zdGFuY2VXaXRoTWl4aW5zKTogT3B0aW9uPENsYXNzTWV0YT4ge1xuICAgIGlmIChDTEFTU19NRVRBIGluIG9iamVjdCkgcmV0dXJuIChvYmplY3QgYXMgT2JqZWN0V2l0aE1peGlucylbQ0xBU1NfTUVUQV07XG4gICAgZWxzZSBpZiAob2JqZWN0LmNvbnN0cnVjdG9yKVxuICAgICAgcmV0dXJuIChvYmplY3QgYXMgSW5zdGFuY2VXaXRoTWl4aW5zKS5jb25zdHJ1Y3RvcltDTEFTU19NRVRBXSB8fCBudWxsO1xuICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpbml0KG9iamVjdDogR2xpbW1lck9iamVjdCwgYXR0cnM6IE9wdGlvbjxPYmplY3Q+KSB7XG4gICAgaWYgKHR5cGVvZiBhdHRycyAhPT0gJ29iamVjdCcgfHwgYXR0cnMgPT09IG51bGwpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBjb25jYXRQcm9wcyA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gY29uY2F0UHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgY29uY2F0ID0gY29uY2F0UHJvcHNbcHJvcF0uc2xpY2UoKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBjb25jYXQuY29uY2F0KGF0dHJzW3Byb3BdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBtZXJnZWRQcm9wcyA9IHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gbWVyZ2VkUHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBtZXJnZWRQcm9wc1twcm9wXSk7XG4gICAgICAgICAgb2JqZWN0W3Byb3BdID0gYXNzaWduKG1lcmdlZCwgYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5zdGF0aWNNaXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBhZGRNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLm1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGdldFN0YXRpY01peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNNaXhpbnM7XG4gIH1cblxuICBnZXRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMubWl4aW5zO1xuICB9XG5cbiAgYWRkQXBwbGllZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMuYXBwbGllZE1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGhhc0FwcGxpZWRNaXhpbihtaXhpbjogTWl4aW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIGdldEFwcGxpZWRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucztcbiAgfVxuXG4gIGhhc1N0YXRpY01peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucy5pbmRleE9mKG1peGluKSAhPT0gLTE7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldE1peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldFN0YXRpY01peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFN0YXRpYyhTdWJjbGFzcykpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIGFkZFN1YmNsYXNzKGNvbnN0cnVjdG9yOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5zdWJjbGFzc2VzLnB1c2goY29uc3RydWN0b3IpO1xuICB9XG5cbiAgZ2V0U3ViY2xhc3NlcygpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+W10ge1xuICAgIHJldHVybiB0aGlzLnN1YmNsYXNzZXM7XG4gIH1cblxuICBhZGRQcm9wZXJ0eU1ldGFkYXRhKHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGFbcHJvcGVydHldID0gdmFsdWU7XG4gIH1cblxuICBtZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGFbcHJvcGVydHldO1xuICB9XG5cbiAgYWRkUmVmZXJlbmNlVHlwZUZvcihwcm9wZXJ0eTogc3RyaW5nLCB0eXBlOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldID0gdHlwZTtcbiAgfVxuXG4gIGFkZFNsb3RGb3IocHJvcGVydHk6IHN0cmluZykge1xuICAgIHRoaXMuc2xvdHMucHVzaChwcm9wZXJ0eSk7XG4gIH1cblxuICBoYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIGFzIHN0cmluZ1tdO1xuICB9XG5cbiAgYWRkQ29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHRydWU7XG5cbiAgICBpZiAoKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICBsZXQgdmFsID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XS5jb25jYXQodmFsdWUpO1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGhhc01lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLm1lcmdlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm1lcmdlZFByb3BlcnRpZXMpIGFzIHN0cmluZ1tdO1xuICB9XG5cbiAgYWRkTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IE9iamVjdCkge1xuICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHRydWU7XG5cbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFlvdSBwYXNzZWQgaW4gXFxgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICApfVxcYCBhcyB0aGUgdmFsdWUgZm9yIFxcYGZvb1xcYCBidXQgXFxgZm9vXFxgIGNhbm5vdCBiZSBhbiBBcnJheWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcyAmJiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gbWVyZ2VNZXJnZWRQcm9wZXJ0aWVzKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gbnVsbCA/IHZhbHVlIDogdmFsdWUgfHwge307XG4gICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0UmVmZXJlbmNlVHlwZXMoKTogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzO1xuICB9XG5cbiAgZ2V0UHJvcGVydHlNZXRhZGF0YSgpOiBEaWN0PGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5TWV0YWRhdGE7XG4gIH1cblxuICByZXNldChwYXJlbnQ6IE9wdGlvbjxDbGFzc01ldGE+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlcyA9IGRpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+KCk7XG4gICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhID0gZGljdCgpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gZGljdDxPYmplY3Q+KCk7XG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BdID0gcGFyZW50LmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0uc2xpY2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc01lcmdlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5tZXJnZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wXSA9IGFzc2lnbih7fSwgcGFyZW50Lm1lcmdlZFByb3BlcnRpZXNbcHJvcF0pO1xuICAgICAgfVxuXG4gICAgICBhc3NpZ24odGhpcy5yZWZlcmVuY2VUeXBlcywgcGFyZW50LnJlZmVyZW5jZVR5cGVzKTtcbiAgICAgIGFzc2lnbih0aGlzLnByb3BlcnR5TWV0YWRhdGEsIHBhcmVudC5wcm9wZXJ0eU1ldGFkYXRhKTtcbiAgICB9XG4gIH1cblxuICByZXNlYWwob2JqOiBPYmplY3QpIHtcbiAgICBsZXQgbWV0YSA9IE1ldGEuZm9yKG9iaik7XG4gICAgbGV0IGZyZXNoID0gbmV3IHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IhKG9iaiwge30pO1xuICAgIGxldCByZWZlcmVuY2VUeXBlcyA9IG1ldGEuZ2V0UmVmZXJlbmNlVHlwZXMoKTtcbiAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICB0dXJib2NoYXJnZShhc3NpZ24ocmVmZXJlbmNlVHlwZXMsIHRoaXMucmVmZXJlbmNlVHlwZXMpKTtcbiAgICB0dXJib2NoYXJnZShhc3NpZ24oc2xvdHMsIGZyZXNoLmdldFNsb3RzKCkpKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHR1cmJvY2hhcmdlKFxuICAgICAgYXNzaWduKHt9LCB0aGlzLnJlZmVyZW5jZVR5cGVzKVxuICAgICk7XG4gICAgdHVyYm9jaGFyZ2UodGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLm1lcmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgJiYgIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgdGhpcy5pbml0ID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG5cbiAgICBsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xuXG4gICAgY2xhc3MgU2xvdHMge1xuICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHNsb3RzLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAgICAgdGhpc1tuYW1lXSA9IEVNUFRZX0NBQ0hFO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLkluc3RhbmNlTWV0YUNvbnN0cnVjdG9yID0gY2xhc3MgZXh0ZW5kcyBTZWFsZWRNZXRhIHtcbiAgICAgIHByb3RlY3RlZCBzbG90czogU2xvdHMgPSBuZXcgU2xvdHMoKTtcbiAgICAgIHB1YmxpYyByZWZlcmVuY2VUeXBlczogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4gPSByZWZlcmVuY2VUeXBlcztcblxuICAgICAgZ2V0UmVmZXJlbmNlVHlwZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzO1xuICAgICAgfVxuXG4gICAgICByZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcpOiBJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVR5cGVzW3Byb3BlcnR5XSB8fCBQcm9wZXJ0eVJlZmVyZW5jZTtcbiAgICAgIH1cblxuICAgICAgZ2V0U2xvdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNsb3RzO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0dXJib2NoYXJnZSh0aGlzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZU1lcmdlZFByb3BlcnRpZXMoYXR0cnM6IE9iamVjdCwgcGFyZW50OiBPYmplY3QpIHtcbiAgbGV0IG1lcmdlZCA9IGFzc2lnbih7fSwgcGFyZW50KTtcblxuICBmb3IgKGxldCBwcm9wIGluIGF0dHJzKSB7XG4gICAgaWYgKHByb3AgaW4gcGFyZW50ICYmIHR5cGVvZiBwYXJlbnRbcHJvcF0gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGF0dHJzW3Byb3BdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBsZXQgd3JhcHBlZCA9IHdyYXBNZXRob2QocGFyZW50LCBwcm9wLCBhdHRyc1twcm9wXSk7XG4gICAgICBtZXJnZWRbcHJvcF0gPSB3cmFwcGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZWRbcHJvcF0gPSBhdHRyc1twcm9wXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkO1xufVxuXG5leHBvcnQgY2xhc3MgSW5zdGFuY2VNZXRhIGV4dGVuZHMgQ2xhc3NNZXRhIHtcbiAgcHVibGljICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBDbGFzc01ldGEgPSBDbGFzc01ldGEuZnJvbVBhcmVudChudWxsKTtcblxuICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQ6IE9wdGlvbjxJbnN0YW5jZU1ldGE+KTogSW5zdGFuY2VNZXRhIHtcbiAgICByZXR1cm4gc3VwZXIuZnJvbVBhcmVudChwYXJlbnQpIGFzIEluc3RhbmNlTWV0YTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogSW5zdGFuY2VNZXRhKSB7XG4gICAgc3VwZXIucmVzZXQocGFyZW50KTtcbiAgICBpZiAocGFyZW50KSB0aGlzW0NMQVNTX01FVEFdLnJlc2V0KHBhcmVudFtDTEFTU19NRVRBXSk7XG4gIH1cblxuICBzZWFsKCkge1xuICAgIHN1cGVyLnNlYWwoKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHbGltbWVyT2JqZWN0IHtcbiAgc3RhdGljICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBJbnN0YW5jZU1ldGEgPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChudWxsKTtcbiAgc3RhdGljIGlzQ2xhc3MgPSB0cnVlO1xuXG4gIHN0YXRpYyBleHRlbmQoKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuICBzdGF0aWMgZXh0ZW5kPFQ+KGV4dGVuc2lvbjogVCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQoLi4uZXh0ZW5zaW9uczogT2JqZWN0W10pOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgc3RhdGljIGV4dGVuZCh0aGlzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+LCAuLi5leHRlbnNpb25zOiBhbnlbXSkge1xuICAgIHJldHVybiBleHRlbmRDbGFzcyh0aGlzLCAuLi5leHRlbnNpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUoYXR0cnM/OiBPYmplY3QgfCBudWxsKTogR2xpbW1lck9iamVjdCB7XG4gICAgcmV0dXJuIG5ldyB0aGlzKGF0dHJzKTtcbiAgfVxuXG4gIHN0YXRpYyByZW9wZW48VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQge1xuICAgIHRvTWl4aW4oZXh0ZW5zaW9ucykuZXh0ZW5kUHJvdG90eXBlKHRoaXMpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuXG4gICAgcmVsaW5rU3ViY2xhc3Nlcyh0aGlzKTtcbiAgfVxuXG4gIHN0YXRpYyByZW9wZW5DbGFzczxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRTdGF0aWModGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cblxuICBzdGF0aWMgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIGxldCB2YWx1ZSA9IHRoaXNbQ0xBU1NfTUVUQV0ubWV0YWRhdGFGb3JQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgaWYgKCF2YWx1ZSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYG1ldGFGb3JQcm9wZXJ0eSgpIGNvdWxkIG5vdCBmaW5kIGEgY29tcHV0ZWQgcHJvcGVydHkgd2l0aCBrZXkgJyR7cHJvcGVydHl9Jy5gXG4gICAgICApO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IG1ldGFkYXRhID0gdGhpc1tDTEFTU19NRVRBXS5nZXRQcm9wZXJ0eU1ldGFkYXRhKCk7XG4gICAgaWYgKCFtZXRhZGF0YSkgcmV0dXJuO1xuXG4gICAgZm9yIChsZXQgcHJvcCBpbiBtZXRhZGF0YSkge1xuICAgICAgY2FsbGJhY2socHJvcCwgbWV0YWRhdGFbcHJvcF0pO1xuICAgIH1cbiAgfVxuXG4gIF9zdXBlciA9IFJPT1Q7XG4gIF9tZXRhID0gbnVsbDtcbiAgX2d1aWQhOiBudW1iZXI7IC8vIFNldCBieSBpbml0aWFsaXplR3VpZCh0aGlzKSBpbiBjb25zdHJ1Y3RvclxuXG4gIGluaXQoKSB7fVxuXG4gIGNvbnN0cnVjdG9yKGF0dHJzPzogT2JqZWN0IHwgbnVsbCkge1xuICAgIGlmIChhdHRycykgYXNzaWduKHRoaXMsIGF0dHJzKTtcbiAgICAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgR2xpbW1lck9iamVjdClbQ0xBU1NfTUVUQV0uaW5pdCh0aGlzLCBhdHRycyB8fCBudWxsKTtcbiAgICB0aGlzLl9zdXBlciA9IFJPT1Q7XG4gICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzW2tleV07XG4gIH1cblxuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzW2tleV0gPSB2YWx1ZTtcbiAgICBidW1wKCk7XG4gIH1cblxuICBzZXRQcm9wZXJ0aWVzKGF0dHJzOiBPYmplY3QpIHtcbiAgICBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7fVxufVxuIl19 |
@@ -23,2 +23,2 @@ const HAS_SUPER_PATTERN = /\.(_super|call\(this|apply\(this)/; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQUFBaUIsb0JBQUcsQUFBbUMsQUFBQztBQUU5RCxBQUFNLGFBQU8sQUFBYSxnQkFBSTtBQUM1QixRQUFJLEFBQWU7QUFFZixBQUFNLGVBQUMsQUFBSSxBQUFDLEFBQ2Q7QUFBQyxLQUZELENBR0csQUFBUSxBQUFFLFdBQ1YsQUFBTyxRQUFDLEFBQWEsQUFBQyxpQkFBRyxDQUFDLEFBQUMsQUFBQztBQUVqQyxBQUFFLEFBQUMsUUFBQyxBQUFlLEFBQUMsaUJBQUMsQUFBQztBQUNwQixBQUFNLGVBQUMsdUJBQXVCLEFBQWM7QUFDMUMsQUFBTSxtQkFBQyxBQUFpQixrQkFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQVEsQUFBRSxBQUFDLEFBQUMsQUFDakQ7QUFBQyxBQUFDLEFBQ0o7QUFBQztBQUVELEFBQU0sV0FBQztBQUNMLEFBQU0sZUFBQyxBQUFJLEFBQUMsQUFDZDtBQUFDLEFBQUMsQUFDSjtBQUFDLEFBQUMsQUFBRSxBQUFDLENBakJ3QixFQUF0QjtBQW1CUCxBQUFNLHFCQUFlLEdBQUcsQUFBWSxPQUFHLENBQUM7QUFDdkMsQUFBWSxLQUFDLEFBQVUsYUFBRyxBQUFLLEFBQUM7QUFFakMsQUFBTSx5QkFBbUIsQUFBYztBQUNyQyxBQUFFLEFBQUMsUUFBQyxBQUFJLEtBQUMsQUFBWSxBQUFDLGtCQUFLLEFBQVMsQUFBQyxXQUFDLEFBQUM7QUFDckMsQUFBSSxhQUFDLEFBQVksQUFBQyxnQkFBRyxBQUFhLGNBQUMsQUFBSSxBQUFDLEFBQUMsQUFDM0M7QUFBQztBQUNELEFBQU0sV0FBQyxBQUFJLEtBQUMsQUFBWSxBQUFDLEFBQUMsQUFDNUI7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEhBU19TVVBFUl9QQVRURVJOID0gL1xcLihfc3VwZXJ8Y2FsbFxcKHRoaXN8YXBwbHlcXCh0aGlzKS87XG5cbmV4cG9ydCBjb25zdCBjaGVja0hhc1N1cGVyID0gKGZ1bmN0aW9uKCkge1xuICBsZXQgc291cmNlQXZhaWxhYmxlID1cbiAgICBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAgIC50b1N0cmluZygpXG4gICAgICAuaW5kZXhPZigncmV0dXJuIHRoaXMnKSA+IC0xO1xuXG4gIGlmIChzb3VyY2VBdmFpbGFibGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcihmdW5jOiBGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIEhBU19TVVBFUl9QQVRURVJOLnRlc3QoZnVuYy50b1N0cmluZygpKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG59KSgpO1xuXG5leHBvcnQgZnVuY3Rpb24gUk9PVCguLi5fYXJnczogYW55W10pIHt9XG4oUk9PVCBhcyBhbnkpLl9faGFzU3VwZXIgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gIGlmIChmdW5jWydfX2hhc1N1cGVyJ10gPT09IHVuZGVmaW5lZCkge1xuICAgIGZ1bmNbJ19faGFzU3VwZXInXSA9IGNoZWNrSGFzU3VwZXIoZnVuYyk7XG4gIH1cbiAgcmV0dXJuIGZ1bmNbJ19faGFzU3VwZXInXTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQUFBaUIsb0JBQUcsQUFBbUMsQUFBQztBQUU5RCxBQUFNLGFBQU8sQUFBYSxnQkFBSTtBQUM1QixRQUFJLEFBQWU7QUFFZixlQUFPLEFBQUksQUFBQyxBQUNkO0FBQUMsS0FGRCxDQUdHLEFBQVEsQUFBRSxXQUNWLEFBQU8sUUFBQyxBQUFhLEFBQUMsaUJBQUcsQ0FBQyxBQUFDLEFBQUM7QUFFakMsUUFBSSxBQUFlLGlCQUFFO0FBQ25CLGVBQU8sdUJBQXVCLEFBQWM7QUFDMUMsbUJBQU8sQUFBaUIsa0JBQUMsQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFRLEFBQUUsQUFBQyxBQUFDLEFBQ2pEO0FBQUMsQUFBQztBQUNIO0FBRUQsV0FBTztBQUNMLGVBQU8sQUFBSSxBQUFDLEFBQ2Q7QUFBQyxBQUFDLEFBQ0o7QUFBQyxBQUFDLEFBQUUsQUFBQyxDQWpCd0IsRUFBdEI7QUFtQlAsQUFBTSxxQkFBZSxHQUFHLEFBQVksT0FBRyxDQUFDO0FBQ3ZDLEFBQVksS0FBQyxBQUFVLGFBQUcsQUFBSyxBQUFDO0FBRWpDLEFBQU0seUJBQW1CLEFBQWM7QUFDckMsUUFBSSxBQUFJLEtBQUMsQUFBWSxBQUFDLGtCQUFLLEFBQVMsV0FBRTtBQUNwQyxBQUFJLGFBQUMsQUFBWSxBQUFDLGdCQUFHLEFBQWEsY0FBQyxBQUFJLEFBQUMsQUFBQztBQUMxQztBQUNELFdBQU8sQUFBSSxLQUFDLEFBQVksQUFBQyxBQUFDLEFBQzVCO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBIQVNfU1VQRVJfUEFUVEVSTiA9IC9cXC4oX3N1cGVyfGNhbGxcXCh0aGlzfGFwcGx5XFwodGhpcykvO1xuXG5leHBvcnQgY29uc3QgY2hlY2tIYXNTdXBlciA9IChmdW5jdGlvbigpIHtcbiAgbGV0IHNvdXJjZUF2YWlsYWJsZSA9XG4gICAgZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLmluZGV4T2YoJ3JldHVybiB0aGlzJykgPiAtMTtcblxuICBpZiAoc291cmNlQXZhaWxhYmxlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiBIQVNfU1VQRVJfUEFUVEVSTi50ZXN0KGZ1bmMudG9TdHJpbmcoKSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xufSkoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIFJPT1QoLi4uX2FyZ3M6IGFueVtdKSB7fVxuKFJPT1QgYXMgYW55KS5fX2hhc1N1cGVyID0gZmFsc2U7XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNTdXBlcihmdW5jOiBGdW5jdGlvbikge1xuICBpZiAoZnVuY1snX19oYXNTdXBlciddID09PSB1bmRlZmluZWQpIHtcbiAgICBmdW5jWydfX2hhc1N1cGVyJ10gPSBjaGVja0hhc1N1cGVyKGZ1bmMpO1xuICB9XG4gIHJldHVybiBmdW5jWydfX2hhc1N1cGVyJ107XG59XG4iXX0= |
@@ -64,2 +64,4 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; } | ||
this.accessor = accessor; | ||
this.enumerable = false; | ||
this.configurable = false; | ||
} | ||
@@ -182,2 +184,2 @@ | ||
export function observer() {} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQTBCLDRCQUFFLEFBQUksQUFBRSxZQUFNLEFBQTJCLEFBQUM7QUFDN0UsQUFBTyxTQUFFLEFBQVcsQUFBYSxtQkFBTSxBQUFVLEFBQUM7QUFDbEQsQUFBTyxTQUFjLEFBQVMsQUFBRSxpQkFBTSxBQUFTLEFBQUM7QUF5QmhELEFBQU0sV0FBeUI7OzsrQkFLakIsQUFBNEI7QUFDdEMsQUFBSyxBQUFFLEFBQUMsWUFEZ0MsMkVBQW1CLEFBQUU7Ozs7cURBRnZEOztjQUFRLFdBQVcsQUFBRSxBQUFDLEFBSTVCLEFBQUk7Y0FBQyxBQUFRLFdBQUcsQUFBUSxBQUFDLEFBQ3pCLEFBQUk7Y0FBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CLEFBQUM7O0FBRUQsQUFBVTs7aUVBQUMsQUFBZSxTQUFFLEFBQVcsS0FBRSxBQUFvQixXQUMzRCxBQUFTO2tCQUFDLEFBQW1CLG9CQUFDLEFBQUcsS0FBRSxBQUEwQiwyQkFBQyxBQUFHLEtBQUUsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDL0UsQUFBUztrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ2xELEFBQVM7a0JBQUMsQUFBVSxXQUFDLEFBQUcsQUFBQyxBQUFDLEFBQzFCLEFBQU07ZUFBQyxJQUFJLEFBQVEsU0FBQyxBQUFJLEtBQUMsQUFBUSxBQUFDLEFBQUMsQUFDckMsQUFBQztBQUVELEFBQVE7O2dDQUFDO0FBQ1AsQUFBSTtBQURNLEFBQWU7OzthQUNwQixBQUFJLGFBQVMsQUFBRztBQUFDLEFBQUMsbUJBQUksQUFBQyxFQUFDLEFBQUssTUFBQyxBQUFHLEFBQUMsQUFBQyxBQUFDLEFBQ3pD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SSxPQUFHLEFBQUksQUFBQyxBQUVoQixBQUFFLEFBQUM7UUFBQyxPQUFPLEFBQUksU0FBSyxBQUFVLEFBQUM7QUFBQyxBQUFDLEFBQy9CLEFBQU07OzJCQUFLLEFBQWlCO2lCQUFyQixBQUFzQixBQUN0QixBQUF1RCxBQUM3RCxBQUFDO0FBREEsQUFBRyxZQUNGLEFBQVEsQUFBQyxxQkFBRyxBQUFJLEFBQUMsQUFBQyxBQUN2QixBQUFDLEFBQUMsQUFBSTtlQUFLLE9BQU8sQUFBSSxTQUFLLEFBQVEsQUFBQztBQUFDLEFBQUMsQUFDcEMsQUFBTTs7ZUFBQyxhQUFJLEFBQWlCLGtCQUFDLEFBQTBCLEFBQUMsT0FBQyxBQUFRLEFBQUMsc0JBQUcsQUFBSSxBQUFDLEFBQUMsQUFDN0UsQUFBQyxBQUFDLEFBQUk7QUFGQyxBQUFFLEFBQUMsV0FFSCxBQUFDLEFBQ047Y0FBTSxJQUFJLEFBQVMsVUFBQyxBQUEyRCxBQUFDLEFBQUMsQUFDbkYsQUFBQyxBQUNIO0FBQUM7O0FBRUQsQUFBTSxnQkFBbUIsQUFBRyxBQUFZLFdBQUcsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXB1dGVkUmVmZXJlbmNlQmx1ZXByaW50LCBNZXRhIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBFTVBUWV9DQUNIRSwgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgRGVzY3JpcHRvciwgQmx1ZXByaW50IH0gZnJvbSAnLi9taXhpbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRHZXRDYWxsYmFjayB7XG4gICgpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjayB7XG4gIChrZXk6IHN0cmluZyk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKHZhbDogYW55KTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcsIHZhbDogYW55KTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkRGVzY3JpcHRvciB7XG4gIGdldD86IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrO1xuICBzZXQ/OiBDb21wdXRlZFNldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRTZXRDYWxsYmFjaztcbn1cblxudHlwZSBDb21wdXRlZEFyZ3VtZW50ID0gQ29tcHV0ZWRHZXRDYWxsYmFjayB8IENvbXB1dGVkRGVzY3JpcHRvcjtcblxuZXhwb3J0IGNsYXNzIENvbXB1dGVkQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yO1xuICBwcml2YXRlIGRlcHM6IHN0cmluZ1tdW107XG4gIHByaXZhdGUgbWV0YWRhdGE6IE9iamVjdCA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3IsIGRlcHM6IHN0cmluZ1tdW10gPSBbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIHRoaXMuZGVwcyA9IGRlcHM7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIGNsYXNzTWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgY2xhc3NNZXRhLmFkZFJlZmVyZW5jZVR5cGVGb3Ioa2V5LCBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludChrZXksIHRoaXMuZGVwcykpO1xuICAgIGNsYXNzTWV0YS5hZGRQcm9wZXJ0eU1ldGFkYXRhKGtleSwgdGhpcy5tZXRhZGF0YSk7XG4gICAgY2xhc3NNZXRhLmFkZFNsb3RGb3Ioa2V5KTtcbiAgICByZXR1cm4gbmV3IENvbXB1dGVkKHRoaXMuYWNjZXNzb3IpO1xuICB9XG5cbiAgcHJvcGVydHkoLi4ucGF0aHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5kZXBzID0gcGF0aHMubWFwKGQgPT4gZC5zcGxpdCgnLicpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG1ldGEob2JqZWN0OiBPYmplY3QpIHtcbiAgICB0aGlzLm1ldGFkYXRhID0gb2JqZWN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdm9sYXRpbGUoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuY2xhc3MgQ29tcHV0ZWQgaW1wbGVtZW50cyBEZXNjcmlwdG9yIHtcbiAgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgY29uZmlndXJhYmxlOiBib29sZWFuO1xuXG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYycgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3IpIHtcbiAgICB0aGlzLmFjY2Vzc29yID0gYWNjZXNzb3I7XG4gIH1cblxuICBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHdyYXBBY2Nlc3Nvcihob21lLCBrZXksIHRoaXMuYWNjZXNzb3IpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cmFwQWNjZXNzb3IoXG4gIGhvbWU6IE9iamVjdCxcbiAgYWNjZXNzb3JOYW1lOiBzdHJpbmcsXG4gIF9kZXNjOiBDb21wdXRlZERlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB7XG4gIGxldCBzdXBlckRlc2MgPSBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoaG9tZSwgYWNjZXNzb3JOYW1lKTtcblxuICBsZXQgb3JpZ2luYWxHZXQ6IENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIGxldCBvcmlnaW5hbFNldDogQ29tcHV0ZWRTZXRDYWxsYmFjaztcblxuICBsZXQgZGVzYzogUHJvcGVydHlEZXNjcmlwdG9yID0ge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9O1xuXG4gIGxldCBnZXQgPSBfZGVzYy5nZXQ7XG5cbiAgaWYgKGdldCAmJiBnZXQubGVuZ3RoID4gMCkge1xuICAgIG9yaWdpbmFsR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKGdldCBhcyBhbnkpLmNhbGwodGhpcywgYWNjZXNzb3JOYW1lKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsR2V0ID0gX2Rlc2MuZ2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgc2V0ID0gX2Rlc2Muc2V0O1xuXG4gIGlmIChzZXQgJiYgc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICBvcmlnaW5hbFNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgcmV0dXJuIChzZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSwgdmFsdWUpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luYWxTZXQgPSBfZGVzYy5zZXQgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgfVxuXG4gIGxldCBjYWNoZUdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGlmIChNZXRhLmV4aXN0cyh0aGlzKSkge1xuICAgICAgbGV0IHNsb3QgPSBNZXRhLmZvcih0aGlzKS5nZXRTbG90cygpW2FjY2Vzc29yTmFtZV07XG4gICAgICBpZiAoc2xvdCAhPT0gRU1QVFlfQ0FDSEUpIHJldHVybiBzbG90O1xuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW5hbEdldC5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIGxldCBjYWNoZVNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgaWYgKG9yaWdpbmFsU2V0KSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICAgIGxldCByZXQgPSBvcmlnaW5hbFNldC5jYWxsKHRoaXMsIHZhbHVlKTtcblxuICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSByZXQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSBzbG90c1thY2Nlc3Nvck5hbWVdID0gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghc3VwZXJEZXNjIHx8ICd2YWx1ZScgaW4gc3VwZXJEZXNjKSB7XG4gICAgZGVzYy5nZXQgPSBjYWNoZUdldDtcbiAgICBkZXNjLnNldCA9IGNhY2hlU2V0O1xuICAgIHJldHVybiBkZXNjO1xuICB9XG5cbiAgZGVzYy5nZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuZ2V0LmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVHZXQuY2FsbCh0aGlzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIGRlc2Muc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWw6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MgYXMgYW55KS5zZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlU2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBkZXNjO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdDogYW55LCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKTtcbiAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHN1YmplY3QpO1xuICB3aGlsZSAodHlwZW9mIHBkID09PSAndW5kZWZpbmVkJyAmJiBwcm90byAhPT0gbnVsbCkge1xuICAgIHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbmFtZSk7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiBwZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKGRlc2M6IENvbXB1dGVkRGVzY3JpcHRvcik6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKFxuICBnZXR0ZXI6IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrXG4pOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSk6IENvbXB1dGVkQmx1ZXByaW50O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pIHtcbiAgbGV0IGxhc3Q6IENvbXB1dGVkQXJndW1lbnQgPSBhcmdzLnBvcCgpO1xuICBsZXQgZGVwcyA9IGFyZ3M7XG5cbiAgaWYgKHR5cGVvZiBsYXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludCh7XG4gICAgICBnZXQ6IGxhc3QgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2ssXG4gICAgfSkucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGxhc3QgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludChsYXN0IGFzIENvbXB1dGVkRGVzY3JpcHRvcikucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29tcHV0ZWQgZXhwZWN0cyBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCBhcyBsYXN0IGFyZ3VtZW50Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVyKC4uLl9hcmdzOiBhbnlbXSkge31cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2NvbXB1dGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQTBCLDRCQUFFLEFBQUksQUFBRSxZQUFNLEFBQTJCLEFBQUM7QUFDN0UsQUFBTyxTQUFFLEFBQVcsQUFBYSxtQkFBTSxBQUFVLEFBQUM7QUFDbEQsQUFBTyxTQUFjLEFBQVMsQUFBRSxpQkFBTSxBQUFTLEFBQUM7QUF5QmhELEFBQU0sV0FBeUI7OzsrQkFLakIsQUFBNEI7QUFDdEMsQUFBSyxBQUFFLEFBQUMsWUFEZ0MsMkVBQW1CLEFBQUU7Ozs7cURBRnZEOztjQUFRLFdBQVcsQUFBRSxBQUFDLEFBSTVCLEFBQUk7Y0FBQyxBQUFRLFdBQUcsQUFBUSxBQUFDLEFBQ3pCLEFBQUk7Y0FBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CLEFBQUM7O0FBRUQsQUFBVTs7aUVBQUMsQUFBZSxTQUFFLEFBQVcsS0FBRSxBQUFvQixXQUMzRCxBQUFTO2tCQUFDLEFBQW1CLG9CQUFDLEFBQUcsS0FBRSxBQUEwQiwyQkFBQyxBQUFHLEtBQUUsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDL0UsQUFBUztrQkFBQyxBQUFtQixvQkFBQyxBQUFHLEtBQUUsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ2xELEFBQVM7a0JBQUMsQUFBVSxXQUFDLEFBQUcsQUFBQyxBQUFDLEFBQzFCO2VBQU8sSUFBSSxBQUFRLFNBQUMsQUFBSSxLQUFDLEFBQVEsQUFBQyxBQUFDLEFBQ3JDLEFBQUM7QUFFRCxBQUFROztnQ0FBQztBQUNQLEFBQUk7QUFETSxBQUFlOzs7YUFDcEIsQUFBSSxhQUFTLEFBQUc7QUFBQyxBQUFDLEFBQUMsQUFBRSxtQkFBQyxBQUFDLEVBQUMsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUFDLEFBQUMsQUFDekM7U0FEWSxBQUFLO2VBQ1YsQUFBSSxBQUFDLEFBQ2QsQUFBQztBQUVELEFBQUk7O3FEQUFDLEFBQWMsUUFDakIsQUFBSTthQUFDLEFBQVEsV0FBRyxBQUFNLEFBQUMsQUFDdkI7ZUFBTyxBQUFJLEFBQUMsQUFDZCxBQUFDO0FBRUQsQUFBUTs7K0RBQ047ZUFBTyxBQUFJLEFBQUMsQUFDZCxBQUFDLEFBQ0Y7QUFFRDs7O0VBakN1QyxBQUFTLEFBSzlDOztJQW1DQTtzQkFBWSxBQUE0QjtBQUZ4Qzs7YUFBc0MsMENBQUcsQUFBSSxBQUFDLEFBRzVDLEFBQUk7YUFBQyxBQUFRLFdBQUcsQUFBUSxBQUFDLEFBQ3pCLEFBQUk7YUFBQyxBQUFVLGFBQUcsQUFBSyxBQUFDLEFBQ3hCLEFBQUk7YUFBQyxBQUFZLGVBQUcsQUFBSyxBQUFDLEFBQzVCLEFBQUM7QUFFRCxBQUFNOztnREFBQyxBQUFpQixXQUFFLEFBQVcsS0FBRSxBQUFZLE1BQ2pELEFBQU07ZUFBQyxBQUFjLGVBQUMsQUFBUyxXQUFFLEFBQUcsS0FBRSxBQUFZLGFBQUMsQUFBSSxNQUFFLEFBQUcsS0FBRSxBQUFJLEtBQUMsQUFBUSxBQUFDLEFBQUMsQUFBQyxBQUNoRixBQUFDLEFBQ0Y7Ozs7OztBQUVELHNCQUNFLEFBQVksTUFDWixBQUFvQixjQUNwQixBQUF5QixPQUV6QjtRQUFJLEFBQVMsWUFBRyxBQUFxQixzQkFBQyxBQUFJLE1BQUUsQUFBWSxBQUFDLEFBQUMsQUFFMUQ7UUFBSSxBQUFnQyxBQUFDLEFBQ3JDO1FBQUksQUFBZ0MsQUFBQyxBQUVyQztRQUFJLEFBQUk7b0JBQ00sQUFBSSxBQUNoQixBQUFZO3NCQUZpQixBQUVmLEFBQUksQUFDbkIsQUFBQyxBQUVGO0FBSkUsQUFBVTtRQUlSLEFBQUcsTUFBRyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBRXBCO1FBQUksQUFBRyxPQUFJLEFBQUcsSUFBQyxBQUFNLFNBQUcsQUFBQyxHQUFFLEFBQ3pCLEFBQVc7c0JBQUcsdUJBQ1o7bUJBQVEsQUFBVyxJQUFDLEFBQUksS0FBQyxBQUFJLE1BQUUsQUFBWSxBQUFDLEFBQUMsQUFDL0MsQUFBQyxBQUFDO0FBQ0g7V0FBTSxBQUNMLEFBQVc7c0JBQUcsQUFBSyxNQUFDLEFBQTBCLEFBQUMsQUFDaEQ7QUFFRDtRQUFJLEFBQUcsTUFBRyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBRXBCO1FBQUksQUFBRyxPQUFJLEFBQUcsSUFBQyxBQUFNLFNBQUcsQUFBQyxHQUFFLEFBQ3pCLEFBQVc7c0JBQUcscUJBQW9CLEFBQVUsT0FDMUM7bUJBQVEsQUFBVyxJQUFDLEFBQUksS0FBQyxBQUFJLE1BQUUsQUFBWSxjQUFFLEFBQUssQUFBQyxBQUFDLEFBQ3RELEFBQUMsQUFBQztBQUNIO1dBQU0sQUFDTCxBQUFXO3NCQUFHLEFBQUssTUFBQyxBQUEwQixBQUFDLEFBQ2hEO0FBRUQ7UUFBSSxBQUFRLFdBQUcsb0JBQ2I7WUFBSSxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQUksQUFBQyxPQUFFLEFBQ3JCO2dCQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBRyxJQUFDLEFBQUksQUFBQyxNQUFDLEFBQVEsQUFBRSxXQUFDLEFBQVksQUFBQyxBQUFDLEFBQ25EO2dCQUFJLEFBQUksU0FBSyxBQUFXLGFBQUUsT0FBTyxBQUFJLEFBQUMsQUFDdkM7QUFFRDtlQUFPLEFBQVcsWUFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDaEMsQUFBQyxBQUFDO0FBRUY7UUFBSSxBQUE4QixBQUFDLEFBRW5DO1FBQUksQUFBVyxhQUFFLEFBQ2YsQUFBUTttQkFBRyxrQkFBb0IsQUFBVSxPQUN2QztnQkFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQUcsSUFBQyxBQUFJLEFBQUMsQUFBQyxBQUMxQjtnQkFBSSxBQUFLLFFBQUcsQUFBSSxLQUFDLEFBQVEsQUFBRSxBQUFDLEFBRTVCO2dCQUFJLEFBQUcsTUFBRyxBQUFXLFlBQUMsQUFBSSxLQUFDLEFBQUksTUFBRSxBQUFLLEFBQUMsQUFBQyxBQUV4QztnQkFBSSxBQUFHLFFBQUssQUFBUyxXQUFFLEFBQ3JCLEFBQUs7c0JBQUMsQUFBWSxBQUFDLGdCQUFHLEFBQUcsQUFBQyxBQUMzQixBQUNIO0FBQUMsQUFBQztBQUNIO1dBQU0sQUFDTCxBQUFRO21CQUFHLGtCQUFvQixBQUFVLE9BQ3ZDO2dCQUFJLEFBQUksT0FBRyxBQUFJLEtBQUMsQUFBRyxJQUFDLEFBQUksQUFBQyxBQUFDLEFBQzFCO2dCQUFJLEFBQUssUUFBRyxBQUFJLEtBQUMsQUFBUSxBQUFFLEFBQUMsQUFDNUI7Z0JBQUksQUFBSyxVQUFLLEFBQVMsV0FBRSxBQUFLLE1BQUMsQUFBWSxBQUFDLGdCQUFHLEFBQUssQUFBQyxBQUN2RCxBQUFDLEFBQUM7QUFDSDtBQUVEO1FBQUksQ0FBQyxBQUFTLGFBQUksQUFBTyxXQUFJLEFBQVMsV0FBRSxBQUN0QyxBQUFJO2FBQUMsQUFBRyxNQUFHLEFBQVEsQUFBQyxBQUNwQixBQUFJO2FBQUMsQUFBRyxNQUFHLEFBQVEsQUFBQyxBQUNwQjtlQUFPLEFBQUksQUFBQyxBQUNiO0FBRUQsQUFBSTtTQUFDLEFBQUcsTUFBRyxZQUNUO1lBQUksQUFBUyxZQUFHLEFBQUksS0FBQyxBQUFNLEFBQUMsQUFDNUIsQUFBSTthQUFDLEFBQU0sU0FBRyxZQUNaO21CQUFRLEFBQWlCLFVBQUMsQUFBRyxJQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUMzQyxBQUFDLEFBQUM7QUFFRjtZQUFJLEFBQ0Y7bUJBQU8sQUFBUSxTQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUM1QjtrQkFBUyxBQUNSLEFBQUk7aUJBQUMsQUFBTSxTQUFHLEFBQVMsQUFBQyxBQUN6QixBQUNIO0FBQUMsQUFBQztBQUVGLEFBQUk7U0FBQyxBQUFHLE1BQUcsVUFBb0IsQUFBUSxLQUNyQztZQUFJLEFBQVMsWUFBRyxBQUFJLEtBQUMsQUFBTSxBQUFDLEFBQzVCLEFBQUk7YUFBQyxBQUFNLFNBQUcsWUFDWjttQkFBUSxBQUFpQixVQUFDLEFBQUcsSUFBQyxBQUFJLEtBQUMsQUFBSSxNQUFFLEFBQUcsQUFBQyxBQUFDLEFBQ2hELEFBQUMsQUFBQztBQUVGO1lBQUksQUFDRjttQkFBTyxBQUFRLFNBQUMsQUFBSSxLQUFDLEFBQUksTUFBRSxBQUFHLEFBQUMsQUFBQyxBQUNqQztrQkFBUyxBQUNSLEFBQUk7aUJBQUMsQUFBTSxTQUFHLEFBQVMsQUFBQyxBQUN6QixBQUNIO0FBQUMsQUFBQztBQUVGO1dBQU8sQUFBSSxBQUFDLEFBQ2QsQUFBQzs7QUFFRCwrQkFBK0IsQUFBWSxTQUFFLEFBQVksTUFDdkQ7UUFBSSxBQUFFLEtBQUcsQUFBTSxPQUFDLEFBQXdCLHlCQUFDLEFBQU8sU0FBRSxBQUFJLEFBQUMsQUFBQyxBQUN4RDtRQUFJLEFBQUssUUFBRyxBQUFNLE9BQUMsQUFBYyxlQUFDLEFBQU8sQUFBQyxBQUFDLEFBQzNDO1dBQU8sT0FBTyxBQUFFLE9BQUssQUFBVyxlQUFJLEFBQUssVUFBSyxBQUFJLE1BQUUsQUFDbEQsQUFBRTthQUFHLEFBQU0sT0FBQyxBQUF3Qix5QkFBQyxBQUFLLE9BQUUsQUFBSSxBQUFDLEFBQUMsQUFDbEQsQUFBSztnQkFBRyxBQUFNLE9BQUMsQUFBYyxlQUFDLEFBQUssQUFBQyxBQUFDLEFBQ3RDO0FBQ0Q7V0FBTyxBQUFFLEFBQUMsQUFDWixBQUFDOztBQVFELEFBQU0sZ0JBQW1CO0FBQ3ZCO0FBRDBCLEFBQVc7OztRQUNqQyxBQUFJLE9BQXFCLEFBQUksS0FBQyxBQUFHLEFBQUUsQUFBQyxBQUN4QztRQUFJLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFFaEI7UUFBSSxPQUFPLEFBQUksU0FBSyxBQUFVO0FBQUUsQUFDOUI7OzJCQUFXLEFBQWlCO2lCQUFyQixBQUFzQixBQUN0QixBQUF1RCxBQUM3RCxBQUFDO0FBREEsQUFBRyxZQUNGLEFBQVEsQUFBQyxxQkFBRyxBQUFJLEFBQUMsQUFBQyxBQUN0QjtlQUFVLE9BQU8sQUFBSSxTQUFLLEFBQVE7QUFBRSxBQUNuQzs7ZUFBTyxhQUFJLEFBQWlCLGtCQUFDLEFBQTBCLEFBQUMsT0FBQyxBQUFRLEFBQUMsc0JBQUcsQUFBSSxBQUFDLEFBQUMsQUFDNUU7QUFGTSxXQUVBLEFBQ0w7Y0FBTSxJQUFJLEFBQVMsVUFBQyxBQUEyRCxBQUFDLEFBQUMsQUFDbEYsQUFDSDtBQUFDOztBQUVELEFBQU0sZ0JBQW1CLEFBQUcsQUFBWSxXQUFHLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZFJlZmVyZW5jZUJsdWVwcmludCwgTWV0YSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRU1QVFlfQ0FDSEUsIENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IERlc2NyaXB0b3IsIEJsdWVwcmludCB9IGZyb20gJy4vbWl4aW4nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoKTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2sge1xuICAoa2V5OiBzdHJpbmcpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRTZXRDYWxsYmFjayB7XG4gICh2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZWdhY3lDb21wdXRlZFNldENhbGxiYWNrIHtcbiAgKGtleTogc3RyaW5nLCB2YWw6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZERlc2NyaXB0b3Ige1xuICBnZXQ/OiBDb21wdXRlZEdldENhbGxiYWNrIHwgTGVnYWN5Q29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgc2V0PzogQ29tcHV0ZWRTZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkU2V0Q2FsbGJhY2s7XG59XG5cbnR5cGUgQ29tcHV0ZWRBcmd1bWVudCA9IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBDb21wdXRlZERlc2NyaXB0b3I7XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlZEJsdWVwcmludCBleHRlbmRzIEJsdWVwcmludCB7XG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbXB1dGVkRGVzY3JpcHRvcjtcbiAgcHJpdmF0ZSBkZXBzOiBzdHJpbmdbXVtdO1xuICBwcml2YXRlIG1ldGFkYXRhOiBPYmplY3QgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yLCBkZXBzOiBzdHJpbmdbXVtdID0gW10pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWNjZXNzb3IgPSBhY2Nlc3NvcjtcbiAgICB0aGlzLmRlcHMgPSBkZXBzO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGNsYXNzTWV0YS5hZGRSZWZlcmVuY2VUeXBlRm9yKGtleSwgQ29tcHV0ZWRSZWZlcmVuY2VCbHVlcHJpbnQoa2V5LCB0aGlzLmRlcHMpKTtcbiAgICBjbGFzc01ldGEuYWRkUHJvcGVydHlNZXRhZGF0YShrZXksIHRoaXMubWV0YWRhdGEpO1xuICAgIGNsYXNzTWV0YS5hZGRTbG90Rm9yKGtleSk7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZCh0aGlzLmFjY2Vzc29yKTtcbiAgfVxuXG4gIHByb3BlcnR5KC4uLnBhdGhzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZGVwcyA9IHBhdGhzLm1hcChkID0+IGQuc3BsaXQoJy4nKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtZXRhKG9iamVjdDogT2JqZWN0KSB7XG4gICAgdGhpcy5tZXRhZGF0YSA9IG9iamVjdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZvbGF0aWxlKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG5cbmNsYXNzIENvbXB1dGVkIGltcGxlbWVudHMgRGVzY3JpcHRvciB7XG4gIGVudW1lcmFibGU6IGJvb2xlYW47XG4gIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcblxuICBwcml2YXRlIGFjY2Vzc29yOiBDb21wdXRlZERlc2NyaXB0b3I7XG4gICc1ZDkwZjg0Zi05MDhlLTRhNDItOTc0OS0zZDBmNTIzYzI2MmMnID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihhY2Nlc3NvcjogQ29tcHV0ZWREZXNjcmlwdG9yKSB7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIHRoaXMuZW51bWVyYWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gZmFsc2U7XG4gIH1cblxuICBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG90eXBlLCBrZXksIHdyYXBBY2Nlc3Nvcihob21lLCBrZXksIHRoaXMuYWNjZXNzb3IpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cmFwQWNjZXNzb3IoXG4gIGhvbWU6IE9iamVjdCxcbiAgYWNjZXNzb3JOYW1lOiBzdHJpbmcsXG4gIF9kZXNjOiBDb21wdXRlZERlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB7XG4gIGxldCBzdXBlckRlc2MgPSBnZXRQcm9wZXJ0eURlc2NyaXB0b3IoaG9tZSwgYWNjZXNzb3JOYW1lKTtcblxuICBsZXQgb3JpZ2luYWxHZXQ6IENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIGxldCBvcmlnaW5hbFNldDogQ29tcHV0ZWRTZXRDYWxsYmFjaztcblxuICBsZXQgZGVzYzogUHJvcGVydHlEZXNjcmlwdG9yID0ge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9O1xuXG4gIGxldCBnZXQgPSBfZGVzYy5nZXQ7XG5cbiAgaWYgKGdldCAmJiBnZXQubGVuZ3RoID4gMCkge1xuICAgIG9yaWdpbmFsR2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gKGdldCBhcyBhbnkpLmNhbGwodGhpcywgYWNjZXNzb3JOYW1lKTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIG9yaWdpbmFsR2V0ID0gX2Rlc2MuZ2V0IGFzIENvbXB1dGVkR2V0Q2FsbGJhY2s7XG4gIH1cblxuICBsZXQgc2V0ID0gX2Rlc2Muc2V0O1xuXG4gIGlmIChzZXQgJiYgc2V0Lmxlbmd0aCA+IDEpIHtcbiAgICBvcmlnaW5hbFNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgcmV0dXJuIChzZXQgYXMgYW55KS5jYWxsKHRoaXMsIGFjY2Vzc29yTmFtZSwgdmFsdWUpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgb3JpZ2luYWxTZXQgPSBfZGVzYy5zZXQgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjaztcbiAgfVxuXG4gIGxldCBjYWNoZUdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgIGlmIChNZXRhLmV4aXN0cyh0aGlzKSkge1xuICAgICAgbGV0IHNsb3QgPSBNZXRhLmZvcih0aGlzKS5nZXRTbG90cygpW2FjY2Vzc29yTmFtZV07XG4gICAgICBpZiAoc2xvdCAhPT0gRU1QVFlfQ0FDSEUpIHJldHVybiBzbG90O1xuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW5hbEdldC5jYWxsKHRoaXMpO1xuICB9O1xuXG4gIGxldCBjYWNoZVNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgaWYgKG9yaWdpbmFsU2V0KSB7XG4gICAgY2FjaGVTZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgIGxldCBtZXRhID0gTWV0YS5mb3IodGhpcyk7XG4gICAgICBsZXQgc2xvdHMgPSBtZXRhLmdldFNsb3RzKCk7XG5cbiAgICAgIGxldCByZXQgPSBvcmlnaW5hbFNldC5jYWxsKHRoaXMsIHZhbHVlKTtcblxuICAgICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNsb3RzW2FjY2Vzc29yTmFtZV0gPSByZXQ7XG4gICAgICB9XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjYWNoZVNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IG1ldGEgPSBNZXRhLmZvcih0aGlzKTtcbiAgICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSBzbG90c1thY2Nlc3Nvck5hbWVdID0gdmFsdWU7XG4gICAgfTtcbiAgfVxuXG4gIGlmICghc3VwZXJEZXNjIHx8ICd2YWx1ZScgaW4gc3VwZXJEZXNjKSB7XG4gICAgZGVzYy5nZXQgPSBjYWNoZUdldDtcbiAgICBkZXNjLnNldCA9IGNhY2hlU2V0O1xuICAgIHJldHVybiBkZXNjO1xuICB9XG5cbiAgZGVzYy5nZXQgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICBsZXQgbGFzdFN1cGVyID0gdGhpcy5fc3VwZXI7XG4gICAgdGhpcy5fc3VwZXIgPSBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiAoc3VwZXJEZXNjIGFzIGFueSkuZ2V0LmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2FjaGVHZXQuY2FsbCh0aGlzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIGRlc2Muc2V0ID0gZnVuY3Rpb24odGhpczogYW55LCB2YWw6IGFueSkge1xuICAgIGxldCBsYXN0U3VwZXIgPSB0aGlzLl9zdXBlcjtcbiAgICB0aGlzLl9zdXBlciA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIChzdXBlckRlc2MgYXMgYW55KS5zZXQuY2FsbCh0aGlzLCB2YWwpO1xuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhY2hlU2V0LmNhbGwodGhpcywgdmFsKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3VwZXIgPSBsYXN0U3VwZXI7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBkZXNjO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURlc2NyaXB0b3Ioc3ViamVjdDogYW55LCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzdWJqZWN0LCBuYW1lKTtcbiAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHN1YmplY3QpO1xuICB3aGlsZSAodHlwZW9mIHBkID09PSAndW5kZWZpbmVkJyAmJiBwcm90byAhPT0gbnVsbCkge1xuICAgIHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgbmFtZSk7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG4gIHJldHVybiBwZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKGRlc2M6IENvbXB1dGVkRGVzY3JpcHRvcik6IENvbXB1dGVkQmx1ZXByaW50O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVkKFxuICBnZXR0ZXI6IENvbXB1dGVkR2V0Q2FsbGJhY2sgfCBMZWdhY3lDb21wdXRlZEdldENhbGxiYWNrXG4pOiBDb21wdXRlZEJsdWVwcmludDtcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZCguLi5hcmdzOiBhbnlbXSk6IENvbXB1dGVkQmx1ZXByaW50O1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQoLi4uYXJnczogYW55W10pIHtcbiAgbGV0IGxhc3Q6IENvbXB1dGVkQXJndW1lbnQgPSBhcmdzLnBvcCgpO1xuICBsZXQgZGVwcyA9IGFyZ3M7XG5cbiAgaWYgKHR5cGVvZiBsYXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludCh7XG4gICAgICBnZXQ6IGxhc3QgYXMgQ29tcHV0ZWRHZXRDYWxsYmFjayB8IExlZ2FjeUNvbXB1dGVkR2V0Q2FsbGJhY2ssXG4gICAgfSkucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGxhc3QgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG5ldyBDb21wdXRlZEJsdWVwcmludChsYXN0IGFzIENvbXB1dGVkRGVzY3JpcHRvcikucHJvcGVydHkoLi4uZGVwcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29tcHV0ZWQgZXhwZWN0cyBhIGZ1bmN0aW9uIG9yIGFuIG9iamVjdCBhcyBsYXN0IGFyZ3VtZW50Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmVyKC4uLl9hcmdzOiBhbnlbXSkge31cbiJdfQ== |
@@ -98,2 +98,2 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; } | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQVMsV0FBRSxBQUFVLEFBQUUsa0JBQU0sQUFBUyxBQUFDO0FBRWhELEFBQU8sU0FBRSxBQUFpQixBQUFFLHlCQUFNLEFBQVksQUFBQyxBQUUvQzs7SUFBNEI7OzttQ0FHZCxBQUFZO0FBQ3RCLEFBQUssQUFBRSxBQUFDOztxREFDUixBQUFJOztjQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQzs7QUFFRCxBQUFNOzs2REFBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQWEsT0FDL0M7WUFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQWMsQUFBQyxBQUUvQixBQUFNO2VBQUMsQUFBYyxlQUFDLEFBQU0sUUFBRSxBQUFHO3dCQUNuQixBQUFJLEFBQ2hCLEFBQVk7MEJBQUUsQUFBSSxBQUNsQixBQUFHO2dDQUNELEFBQU07dUJBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3BCLEFBQUMsQUFDRixBQUFDLEFBQUMsQUFDTDtBQVBxQyxBQU9wQyxBQUNGO0FBUEssQUFBVTtBQVNoQjs7O0VBckJvQyxBQUFVLEFBRzVDOztJQWtCeUI7OztrQ0FHYixBQUFZO0FBQ3RCLEFBQUssQUFBRSxBQUFDOztzREFDUixBQUFJOztlQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQzs7QUFFRCxBQUFVOztvRUFBQyxBQUFlLFNBQUUsQUFBWSxNQUFFLEFBQWdCLE9BQ3hELEFBQU07ZUFBQyxJQUFJLEFBQXFCLHNCQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUM5QyxBQUFDLEFBQ0Y7Ozs7RUFYa0MsQUFBUyxBQUcxQzs7QUFVRixBQUFNLDRCQUFzQixBQUFZLE1BQ3RDLEFBQU07V0FBQyxJQUFJLEFBQW9CLHFCQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3hDLEFBQUM7QUFFRDs7SUFBcUI7Ozs0QkFHUCxBQUFjO0FBQ3hCOztZQUFJLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUMsR0FBRSxDQUFDLEFBQUMsQUFBQyxBQUFDLEFBQy9CO1lBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBTSxTQUFHLEFBQUMsQUFBQyxBQUFDLEFBRWpDO1lBQUksQUFBRyxNQUFHLGVBQ1IsQUFBTTt3QkFBTSxBQUFNLGlCQUFFLEFBQUcsS0FBRSxBQUFDO0FBQVAsdUJBQVksQUFBRyxJQUFDLEFBQUMsQUFBQzthQUE5QixBQUFJLEVBQTRCLEFBQUksQUFBQyxBQUFDLEFBQy9DLEFBQUMsQUFBQztBQUVGO1lBQUksQUFBRyxNQUFHLGFBQW9CLEFBQVUsT0FDdEM7Z0JBQUksQUFBQyxXQUFVLEFBQU0saUJBQUUsQUFBRyxLQUFFLEFBQUM7QUFBUCx1QkFBWSxBQUFHLElBQUMsQUFBQyxBQUFDO2FBQWhDLEFBQU0sRUFBNEIsQUFBSSxBQUFDLEFBQUMsQUFDaEQsQUFBQztjQUFDLEFBQUksQUFBQyxRQUFHLEFBQUssQUFBQyxBQUNsQixBQUFDLEFBQUM7QUFFRixBQUFLOztvRkFBQyxFQUFFLEFBQUcsVUFBRSxBQUFHLEFBQUUsWUFBRSxDQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDNUIsQUFBSTs7ZUFBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CLEFBQUM7O0FBRUQsQUFBVTs7OERBQUMsQUFBYyxRQUFFLEFBQVcsS0FBRSxBQUFlLE1BQ3JELEFBQUUsQUFBQztZQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBQyxBQUFDLE9BQUssQUFBRyxBQUFDLEtBQUMsTUFBTSxJQUFJLEFBQUssQUFBQywyQkFBa0IsQUFBRyxBQUFXLEFBQUMsQUFBQyxBQUM1RSxBQUFNO2VBQUMsQUFBSyw2QkFBQyxBQUFVLHNCQUFDLEFBQU0sUUFBRSxBQUFHLEtBQUUsQUFBSSxBQUFDLEFBQUMsQUFDN0MsQUFBQyxBQUNGOzs7O0VBeEI0QixBQUFpQixBQUc1Qzs7QUF1QkYsQUFBTSxzQkFBZ0IsQUFBWSxNQUNoQyxBQUFNO1dBQUMsSUFBSSxBQUFjLGVBQUMsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFHLEFBQUMsQUFBQyxBQUFDLEFBQzdDLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCbHVlcHJpbnQsIERlc2NyaXB0b3IgfSBmcm9tICcuL21peGluJztcbmltcG9ydCB7IENsYXNzTWV0YSB9IGZyb20gJy4vb2JqZWN0JztcbmltcG9ydCB7IENvbXB1dGVkQmx1ZXByaW50IH0gZnJvbSAnLi9jb21wdXRlZCc7XG5cbmNsYXNzIEFsaWFzTWV0aG9kRGVzY3JpcHRvciBleHRlbmRzIERlc2NyaXB0b3Ige1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBfaG9tZTogT2JqZWN0KSB7XG4gICAgbGV0IG5hbWUgPSB0aGlzLm5hbWUgYXMgc3RyaW5nO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0KHRoaXM6IHR5cGVvZiB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbbmFtZV07XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIEFsaWFzTWV0aG9kQmx1ZXByaW50IGV4dGVuZHMgQmx1ZXByaW50IHtcbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIF9rZXk6IHN0cmluZywgX21ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgQWxpYXNNZXRob2REZXNjcmlwdG9yKHRoaXMubmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzTWV0aG9kKG5hbWU6IHN0cmluZyk6IEJsdWVwcmludCB7XG4gIHJldHVybiBuZXcgQWxpYXNNZXRob2RCbHVlcHJpbnQobmFtZSk7XG59XG5cbmNsYXNzIEFsaWFzQmx1ZXByaW50IGV4dGVuZHMgQ29tcHV0ZWRCbHVlcHJpbnQge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZ1tdKSB7XG4gICAgbGV0IHBhcmVudCA9IG5hbWUuc2xpY2UoMCwgLTEpO1xuICAgIGxldCBsYXN0ID0gbmFtZVtuYW1lLmxlbmd0aCAtIDFdO1xuXG4gICAgbGV0IGdldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIG5hbWUucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgfTtcblxuICAgIGxldCBzZXQgPSBmdW5jdGlvbih0aGlzOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgIGxldCBwID0gcGFyZW50LnJlZHVjZSgob2JqLCBuKSA9PiBvYmpbbl0sIHRoaXMpO1xuICAgICAgcFtsYXN0XSA9IHZhbHVlO1xuICAgIH07XG5cbiAgICBzdXBlcih7IGdldCwgc2V0IH0sIFtuYW1lXSk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlc2NyaXB0b3IodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBtZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yIHtcbiAgICBpZiAodGhpcy5uYW1lWzBdID09PSBrZXkpIHRocm93IG5ldyBFcnJvcihgU2V0dGluZyBhbGlhcyAnJHtrZXl9JyBvbiBzZWxmYCk7XG4gICAgcmV0dXJuIHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIG1ldGEpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGlhcyhuYW1lOiBzdHJpbmcpOiBCbHVlcHJpbnQge1xuICByZXR1cm4gbmV3IEFsaWFzQmx1ZXByaW50KG5hbWUuc3BsaXQoJy4nKSk7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpcHRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL2Rlc2NyaXB0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQVMsV0FBRSxBQUFVLEFBQUUsa0JBQU0sQUFBUyxBQUFDO0FBRWhELEFBQU8sU0FBRSxBQUFpQixBQUFFLHlCQUFNLEFBQVksQUFBQyxBQUUvQzs7SUFBNEI7OzttQ0FHZCxBQUFZO0FBQ3RCLEFBQUssQUFBRSxBQUFDOztxREFDUixBQUFJOztjQUFDLEFBQUksT0FBRyxBQUFJLEFBQUMsQUFDbkIsQUFBQzs7QUFFRCxBQUFNOzs2REFBQyxBQUFjLFFBQUUsQUFBVyxLQUFFLEFBQWEsT0FDL0M7WUFBSSxBQUFJLE9BQUcsQUFBSSxLQUFDLEFBQWMsQUFBQyxBQUUvQixBQUFNO2VBQUMsQUFBYyxlQUFDLEFBQU0sUUFBRSxBQUFHO3dCQUNuQixBQUFJLEFBQ2hCLEFBQVk7MEJBQUUsQUFBSSxBQUNsQixBQUFHO2dDQUNEO3VCQUFPLEFBQUksS0FBQyxBQUFJLEFBQUMsQUFBQyxBQUNwQixBQUFDLEFBQ0YsQUFBQyxBQUFDLEFBQ0w7QUFQcUMsQUFPcEMsQUFDRjtBQVBLLEFBQVU7QUFTaEI7OztFQXJCb0MsQUFBVSxBQUc1Qzs7SUFrQnlCOzs7a0NBR2IsQUFBWTtBQUN0QixBQUFLLEFBQUUsQUFBQzs7c0RBQ1IsQUFBSTs7ZUFBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CLEFBQUM7O0FBRUQsQUFBVTs7b0VBQUMsQUFBZSxTQUFFLEFBQVksTUFBRSxBQUFnQixPQUN4RDtlQUFPLElBQUksQUFBcUIsc0JBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQzlDLEFBQUMsQUFDRjs7OztFQVhrQyxBQUFTLEFBRzFDOztBQVVGLEFBQU0sNEJBQXNCLEFBQVksTUFDdEM7V0FBTyxJQUFJLEFBQW9CLHFCQUFDLEFBQUksQUFBQyxBQUFDLEFBQ3hDLEFBQUM7QUFFRDs7SUFBcUI7Ozs0QkFHUCxBQUFjO0FBQ3hCOztZQUFJLEFBQU0sU0FBRyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUMsR0FBRSxDQUFDLEFBQUMsQUFBQyxBQUFDLEFBQy9CO1lBQUksQUFBSSxPQUFHLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBTSxTQUFHLEFBQUMsQUFBQyxBQUFDLEFBRWpDO1lBQUksQUFBRyxNQUFHLGVBQ1I7d0JBQVksQUFBTSxpQkFBRSxBQUFHLEtBQUUsQUFBQyxBQUFFLEFBQUU7QUFBWCx1QkFBWSxBQUFHLElBQUMsQUFBQyxBQUFDO2FBQTlCLEFBQUksRUFBNEIsQUFBSSxBQUFDLEFBQUMsQUFDL0MsQUFBQyxBQUFDO0FBRUY7WUFBSSxBQUFHLE1BQUcsYUFBb0IsQUFBVSxPQUN0QztnQkFBSSxBQUFDLFdBQVUsQUFBTSxpQkFBRSxBQUFHLEtBQUUsQUFBQyxBQUFFLEFBQUU7QUFBWCx1QkFBWSxBQUFHLElBQUMsQUFBQyxBQUFDO2FBQWhDLEFBQU0sRUFBNEIsQUFBSSxBQUFDLEFBQUMsQUFDaEQsQUFBQztjQUFDLEFBQUksQUFBQyxRQUFHLEFBQUssQUFBQyxBQUNsQixBQUFDLEFBQUM7QUFFRixBQUFLOztvRkFBQyxFQUFFLEFBQUcsVUFBRSxBQUFHLEFBQUUsWUFBRSxDQUFDLEFBQUksQUFBQyxBQUFDLEFBQUMsQUFDNUIsQUFBSTs7ZUFBQyxBQUFJLE9BQUcsQUFBSSxBQUFDLEFBQ25CLEFBQUM7O0FBRUQsQUFBVTs7OERBQUMsQUFBYyxRQUFFLEFBQVcsS0FBRSxBQUFlLE1BQ3JEO1lBQUksQUFBSSxLQUFDLEFBQUksS0FBQyxBQUFDLEFBQUMsT0FBSyxBQUFHLEtBQUUsTUFBTSxJQUFJLEFBQUssQUFBQywyQkFBa0IsQUFBRyxBQUFXLEFBQUMsQUFBQyxBQUM1RTtlQUFPLEFBQUssNkJBQUMsQUFBVSxzQkFBQyxBQUFNLFFBQUUsQUFBRyxLQUFFLEFBQUksQUFBQyxBQUFDLEFBQzdDLEFBQUMsQUFDRjs7OztFQXhCNEIsQUFBaUIsQUFHNUM7O0FBdUJGLEFBQU0sc0JBQWdCLEFBQVksTUFDaEM7V0FBTyxJQUFJLEFBQWMsZUFBQyxBQUFJLEtBQUMsQUFBSyxNQUFDLEFBQUcsQUFBQyxBQUFDLEFBQUMsQUFDN0MsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsdWVwcmludCwgRGVzY3JpcHRvciB9IGZyb20gJy4vbWl4aW4nO1xuaW1wb3J0IHsgQ2xhc3NNZXRhIH0gZnJvbSAnLi9vYmplY3QnO1xuaW1wb3J0IHsgQ29tcHV0ZWRCbHVlcHJpbnQgfSBmcm9tICcuL2NvbXB1dGVkJztcblxuY2xhc3MgQWxpYXNNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgfVxuXG4gIGRlZmluZSh0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIF9ob21lOiBPYmplY3QpIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMubmFtZSBhcyBzdHJpbmc7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQodGhpczogdHlwZW9mIHRhcmdldCkge1xuICAgICAgICByZXR1cm4gdGhpc1tuYW1lXTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgQWxpYXNNZXRob2RCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cblxuICBkZXNjcmlwdG9yKF90YXJnZXQ6IE9iamVjdCwgX2tleTogc3RyaW5nLCBfbWV0YTogQ2xhc3NNZXRhKTogRGVzY3JpcHRvciB7XG4gICAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZERlc2NyaXB0b3IodGhpcy5uYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxpYXNNZXRob2QobmFtZTogc3RyaW5nKTogQmx1ZXByaW50IHtcbiAgcmV0dXJuIG5ldyBBbGlhc01ldGhvZEJsdWVwcmludChuYW1lKTtcbn1cblxuY2xhc3MgQWxpYXNCbHVlcHJpbnQgZXh0ZW5kcyBDb21wdXRlZEJsdWVwcmludCB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nW10pIHtcbiAgICBsZXQgcGFyZW50ID0gbmFtZS5zbGljZSgwLCAtMSk7XG4gICAgbGV0IGxhc3QgPSBuYW1lW25hbWUubGVuZ3RoIC0gMV07XG5cbiAgICBsZXQgZ2V0ID0gZnVuY3Rpb24odGhpczogYW55KSB7XG4gICAgICByZXR1cm4gbmFtZS5yZWR1Y2UoKG9iaiwgbikgPT4gb2JqW25dLCB0aGlzKTtcbiAgICB9O1xuXG4gICAgbGV0IHNldCA9IGZ1bmN0aW9uKHRoaXM6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgbGV0IHAgPSBwYXJlbnQucmVkdWNlKChvYmosIG4pID0+IG9ialtuXSwgdGhpcyk7XG4gICAgICBwW2xhc3RdID0gdmFsdWU7XG4gICAgfTtcblxuICAgIHN1cGVyKHsgZ2V0LCBzZXQgfSwgW25hbWVdKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgZGVzY3JpcHRvcih0YXJnZXQ6IE9iamVjdCwga2V5OiBzdHJpbmcsIG1ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGlmICh0aGlzLm5hbWVbMF0gPT09IGtleSkgdGhyb3cgbmV3IEVycm9yKGBTZXR0aW5nIGFsaWFzICcke2tleX0nIG9uIHNlbGZgKTtcbiAgICByZXR1cm4gc3VwZXIuZGVzY3JpcHRvcih0YXJnZXQsIGtleSwgbWV0YSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsaWFzKG5hbWU6IHN0cmluZyk6IEJsdWVwcmludCB7XG4gIHJldHVybiBuZXcgQWxpYXNCbHVlcHJpbnQobmFtZS5zcGxpdCgnLicpKTtcbn1cbiJdfQ== |
@@ -404,2 +404,2 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; } | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQVUsQUFBRSxrQkFBTSxBQUEyQixBQUFDO0FBQ3ZELEFBQU8sU0FBUSxBQUFJLE1BQUUsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQ25ELEFBQXNCLFNBRXBCLEFBQVMsV0FDVCxBQUFZLGNBQ1osQUFBVyxBQUNaLG1CQUFNLEFBQVUsQUFBQztBQUVsQixBQUFPLFNBQUUsQUFBSSxBQUFFLFlBQU0sQUFBUyxBQUFDLEFBRS9CLEFBQU07SUFBRSxBQUFPLEFBQUUsVUFBRyxBQUFLLEFBQUM7O0FBRTFCLEFBQU0sT0FBQyxJQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDO0FBQ2pFLEFBQU0sT0FBQyxJQUFNLEFBQVMsWUFBRyxBQUFzQyxBQUFDO0FBRWhFLEFBQU0sV0FBTjtBQUNFOztTQUFzQywwQ0FBRyxBQUFJLEFBQUMsQUFFaEQsQUFBQzs7QUFFRCxBQUFNLFdBQU47QUFDRTs7U0FBc0MsMENBQUcsQUFBSSxBQUFDLEFBRWhELEFBQUM7O0FBU0QsQUFBTSxXQTRCSjttQkFBWSxBQUFzQixZQUFFLEFBQWU7QUEzQjNDOzs7O2FBQVUsYUFBYyxBQUFXLEFBQUMsTUFBQyxBQUF1QixBQUM1RDthQUFzQix5QkFBYSxBQUFFLEFBQUMsQUFDdEM7YUFBZ0IsbUJBQWEsQUFBRSxBQUFDLEFBQ2hDO2FBQVksZUFBWSxBQUFFLEFBQUMsQUF5QmpDLEFBQUk7YUFBQyxBQUFNLE9BQUMsQUFBVSxBQUFDLEFBQUMsQUFDeEIsQUFBSTs4QkFBQyxBQUFZLGNBQUMsQUFBSSxBQUFDLDBCQUFHLEFBQU0sQUFBQyxBQUFDLEFBQ3BDLEFBQUM7QUF6QkQsQUFBTTs7VUFBQyxBQUFNLEFBQUM7QUFDWjtBQURlLEFBQTRCOzs7WUFDdkMs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TSxTQUFHLEFBQVMsQUFBQyxBQUMxQixBQUFDLEFBQ0g7QUFBQyxBQUFDLEFBQ0o7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENMQVNTX01FVEEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QsIGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IEdsaW1tZXJPYmplY3QsIHtcbiAgR2xpbW1lck9iamVjdEZhY3RvcnksXG4gIENsYXNzTWV0YSxcbiAgSW5zdGFuY2VNZXRhLFxuICB0dXJib2NoYXJnZSxcbn0gZnJvbSAnLi9vYmplY3QnO1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmV4cG9ydCBjb25zdCBERVNDUklQVE9SID0gJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYyc7XG5leHBvcnQgY29uc3QgQkxVRVBSSU5UID0gJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZXNjcmlwdG9yIHtcbiAgJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYycgPSB0cnVlO1xuICBhYnN0cmFjdCBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmx1ZXByaW50IHtcbiAgJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNScgPSB0cnVlO1xuICBhYnN0cmFjdCBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbnMge1xuICBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsO1xuICBtZXJnZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmc7XG4gIF9zdXBlcj86IEZ1bmN0aW9uO1xuICBbaW5kZXg6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIE1peGluIHtcbiAgcHJpdmF0ZSBleHRlbnNpb25zOiBEaWN0PGFueT4gPSBudWxsIGFzIGFueTsgLy8gYXNzaWduZWQgYmVmb3JlIHVzZWRcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZGVwZW5kZW5jaWVzOiBNaXhpbltdID0gW107XG5cbiAgc3RhdGljIGNyZWF0ZSguLi5hcmdzOiAoTWl4aW4gfCBFeHRlbnNpb25zKVtdKSB7XG4gICAgbGV0IGV4dGVuc2lvbnMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgW10pO1xuICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9ucyBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIGFyZ3MgYXMgTWl4aW5bXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkZXBzID0gYXJncy5zbGljZSgwLCAtMSkubWFwKHRvTWl4aW4pO1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKGV4dGVuc2lvbnMgYXMgRXh0ZW5zaW9ucywgZGVwcyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1peGlucyhvYmo6IGFueSk6IE1peGluW10ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBbXTtcblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIGlmICghbWV0YSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIG1ldGEuZ2V0QXBwbGllZE1peGlucygpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZXh0ZW5zaW9uczogRXh0ZW5zaW9ucywgbWl4aW5zOiBNaXhpbltdKSB7XG4gICAgdGhpcy5yZW9wZW4oZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCguLi5taXhpbnMpO1xuICB9XG5cbiAgZGV0ZWN0KG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gb2JqLmRlcGVuZGVuY2llcy5pbmRleE9mKHRoaXMpICE9PSAtMTtcbiAgICB9XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICByZXR1cm4gISFtZXRhICYmIG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpO1xuICB9XG5cbiAgcmVvcGVuKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMpIHtcbiAgICBpZiAodGhpcy5leHRlbnNpb25zKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKHRvTWl4aW4odGhpcy5leHRlbnNpb25zKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IGNvbmNhdDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3Q29uY2F0ID0gZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdDb25jYXQpKSB7XG4gICAgICAgIGNvbmNhdCA9IChyYXdDb25jYXQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd0NvbmNhdCA9PT0gbnVsbCB8fCByYXdDb25jYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25jYXQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmNhdCA9IFtyYXdDb25jYXQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGNvbmNhdDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdtZXJnZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICBsZXQgbWVyZ2VkOiBzdHJpbmdbXTtcbiAgICAgIGxldCByYXdNZXJnZWQgPSBleHRlbnNpb25zLm1lcmdlZFByb3BlcnRpZXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHJhd01lcmdlZCkpIHtcbiAgICAgICAgbWVyZ2VkID0gKHJhd01lcmdlZCBhcyBzdHJpbmdbXSkuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAocmF3TWVyZ2VkID09PSBudWxsIHx8IHJhd01lcmdlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1lcmdlZCA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkID0gW3Jhd01lcmdlZCBhcyBzdHJpbmddO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gbWVyZ2VkO1xuICAgIH1cblxuICAgIGxldCBub3JtYWxpemVkOiBEaWN0PEJsdWVwcmludD4gPSBPYmplY3Qua2V5cyhleHRlbnNpb25zKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBleHRlbnNpb25zW2tleV07XG5cbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBNZXRob2RCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBpZiAodmFsdWUgJiYgQkxVRVBSSU5UIGluIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgRGF0YUJsdWVwcmludCh7IHZhbHVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIGRpY3Q8Qmx1ZXByaW50PigpKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IGRpY3Q8YW55PigpO1xuICAgIGFzc2lnbih0aGlzLmV4dGVuc2lvbnMsIHR1cmJvY2hhcmdlKG5vcm1hbGl6ZWQpKTtcbiAgfVxuXG4gIGFwcGx5KHRhcmdldDogYW55KSB7XG4gICAgbGV0IG1ldGE6IENsYXNzTWV0YSA9ICh0YXJnZXRbQ0xBU1NfTUVUQV0gPSB0YXJnZXRbQ0xBU1NfTUVUQV0gfHwgbmV3IENsYXNzTWV0YSgpKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5hcHBseSh0YXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyh0YXJnZXQsIHRhcmdldCwgbWV0YSk7XG4gICAgbWV0YS5hZGRNaXhpbih0aGlzKTtcbiAgICBtZXRhLnNlYWwoKTtcbiAgICBtZXRhLnJlc2VhbCh0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZShPcmlnaW5hbDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIE9yaWdpbmFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3JpZ2luYWwucHJvdG90eXBlKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGUoT3JpZ2luYWwpKTtcbiAgICB0aGlzLmV4dGVuZFByb3RvdHlwZU9udG8oT3JpZ2luYWwsIE9yaWdpbmFsKTtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFN1YmNsYXNzLnByb3RvdHlwZSwgUGFyZW50LnByb3RvdHlwZSwgU3ViY2xhc3NbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKHRoaXMpO1xuICB9XG5cbiAgZXh0ZW5kU3RhdGljKFRhcmdldDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhUYXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhUYXJnZXQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihUYXJnZXQpLCBUYXJnZXRbQ0xBU1NfTUVUQV1bQ0xBU1NfTUVUQV0pO1xuICAgIFRhcmdldFtDTEFTU19NRVRBXS5hZGRTdGF0aWNNaXhpbih0aGlzKTtcbiAgfVxuXG4gIG1lcmdlUHJvcGVydGllcyh0YXJnZXQ6IE9iamVjdCwgcGFyZW50OiBPYmplY3QsIG1ldGE6IENsYXNzTWV0YSkge1xuICAgIGlmIChtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKSkgcmV0dXJuO1xuICAgIG1ldGEuYWRkQXBwbGllZE1peGluKHRoaXMpO1xuXG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZE1lcmdlZFByb3BlcnR5KGssIHBhcmVudFtrXSkpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrLCBbXSkpO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUoXG4gICAgICB0YXJnZXQsXG4gICAgICAnY29uY2F0ZW5hdGVkUHJvcGVydGllcydcbiAgICApO1xuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRNZXJnZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ21lcmdlZFByb3BlcnRpZXMnKTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZW5zaW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgbGV0IGV4dGVuc2lvbjogQmx1ZXByaW50ID0gdGhpcy5leHRlbnNpb25zIVtrZXldO1xuICAgICAgbGV0IGRlc2MgPSBleHRlbnNpb24uZGVzY3JpcHRvcih0YXJnZXQsIGtleSBhcyBzdHJpbmcsIG1ldGEpO1xuICAgICAgZGVzYy5kZWZpbmUodGFyZ2V0LCBrZXkgYXMgc3RyaW5nLCBwYXJlbnQpO1xuICAgIH0pO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBST09UIH0pLmRlZmluZSh0YXJnZXQsICdfc3VwZXInIGFzIHN0cmluZyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uID0gTWl4aW4gfCBFeHRlbnNpb25zO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kPFQgZXh0ZW5kcyBHbGltbWVyT2JqZWN0PihcbiAgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPixcbiAgLi4uZXh0ZW5zaW9uczogRXh0ZW5zaW9uW11cbik6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4ge1xuICBsZXQgU3VwZXIgPSBQYXJlbnQgYXMgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgbGV0IFN1YmNsYXNzID0gY2xhc3MgZXh0ZW5kcyBTdXBlciB7fTtcbiAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0gPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuXG4gIGxldCBtaXhpbnMgPSBleHRlbnNpb25zLm1hcCh0b01peGluKTtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmFkZFN1YmNsYXNzKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pO1xuICBtaXhpbnMuZm9yRWFjaChtID0+IFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKG0pKTtcblxuICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MgYXMgR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50KTtcblxuICByZXR1cm4gU3ViY2xhc3MgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsaW5rU3ViY2xhc3NlcyhQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmdldFN1YmNsYXNzZXMoKS5mb3JFYWNoKChTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PikgPT4ge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnJlc2V0KFBhcmVudFtDTEFTU19NRVRBXSk7XG4gICAgU3ViY2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQYXJlbnQucHJvdG90eXBlKTtcblxuICAgIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcywgUGFyZW50KTtcblxuICAgIC8vIHJlY3Vyc2UgaW50byBzdWItc3ViY2xhc3Nlc1xuICAgIHJlbGlua1N1YmNsYXNzZXMoU3ViY2xhc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTWl4aW4oZXh0ZW5zaW9uOiBFeHRlbnNpb24pOiBNaXhpbiB7XG4gIGlmIChleHRlbnNpb24gaW5zdGFuY2VvZiBNaXhpbikgcmV0dXJuIGV4dGVuc2lvbjtcbiAgZWxzZSByZXR1cm4gbmV3IE1peGluKGV4dGVuc2lvbiBhcyBPYmplY3QsIFtdKTtcbn1cblxuY2xhc3MgVmFsdWVEZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIHdyaXRhYmxlID0gdHJ1ZSxcbiAgICB2YWx1ZSxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBfaG9tZT86IGFueSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgIHdyaXRhYmxlOiB0aGlzLndyaXRhYmxlLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGFCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICB3cml0YWJsZSA9IHRydWUsXG4gICAgdmFsdWUsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGxldCB7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0gPSB0aGlzO1xuXG4gICAgaWYgKGNsYXNzTWV0YS5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgY2xhc3NNZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcsIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSBpZiAoY2xhc3NNZXRhLmhhc01lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkTWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZywgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0TWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9KTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWNjZXNzb3JCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgZ2V0OiAoKSA9PiBhbnk7XG4gIHNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgZ2V0LFxuICAgIHNldCxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yICYgeyBnZXQ6IGFueTsgc2V0OiBhbnkgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLmdldCA9IGdldDtcbiAgICB0aGlzLnNldCA9IHNldDtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9jbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICBnZXQ6IHRoaXMuZ2V0LFxuICAgICAgc2V0OiB0aGlzLnNldCxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgVmFsdWVEZXNjcmlwdG9yIHtcbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHdyYXBNZXRob2QoaG9tZSwga2V5LCB0aGlzLnZhbHVlKTtcbiAgICBzdXBlci5kZWZpbmUodGFyZ2V0LCBrZXksIGhvbWUpO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZEJsdWVwcmludCBleHRlbmRzIERhdGFCbHVlcHJpbnQge1xuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBNZXRob2REZXNjcmlwdG9yIHtcbiAgICBsZXQgZGVzYyA9IHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIGNsYXNzTWV0YSk7XG4gICAgcmV0dXJuIG5ldyBNZXRob2REZXNjcmlwdG9yKGRlc2MgYXMgUHJvcGVydHlEZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcE1ldGhvZChob21lOiBPYmplY3QsIG1ldGhvZE5hbWU6IHN0cmluZywgb3JpZ2luYWw6ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55KSB7XG4gIGlmICghKChtZXRob2ROYW1lIGFzIHN0cmluZykgaW4gaG9tZSkpIHJldHVybiBtYXliZVdyYXAob3JpZ2luYWwpO1xuXG4gIGxldCBzdXBlck1ldGhvZCA9IGhvbWVbbWV0aG9kTmFtZV07XG5cbiAgbGV0IGZ1bmMgPSBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gc3VwZXJNZXRob2Q7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgKGZ1bmMgYXMgYW55KS5fX3dyYXBwZWQgPSB0cnVlO1xuXG4gIHJldHVybiBmdW5jO1xufVxuXG5mdW5jdGlvbiBtYXliZVdyYXAob3JpZ2luYWw6IEZ1bmN0aW9uKSB7XG4gIGlmICgnX193cmFwcGVkJyBpbiBvcmlnaW5hbCkgcmV0dXJuIG9yaWdpbmFsO1xuXG4gIHJldHVybiBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL21peGluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsQUFBTyxTQUFFLEFBQVUsQUFBRSxrQkFBTSxBQUEyQixBQUFDO0FBQ3ZELEFBQU8sU0FBUSxBQUFJLE1BQUUsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQ25ELEFBQXNCLFNBRXBCLEFBQVMsV0FDVCxBQUFZLGNBQ1osQUFBVyxBQUNaLG1CQUFNLEFBQVUsQUFBQztBQUVsQixBQUFPLFNBQUUsQUFBSSxBQUFFLFlBQU0sQUFBUyxBQUFDLEFBRS9CLEFBQU07SUFBRSxBQUFPLEFBQUUsVUFBRyxBQUFLLEFBQUM7O0FBRTFCLEFBQU0sT0FBQyxJQUFNLEFBQVUsYUFBRyxBQUFzQyxBQUFDO0FBQ2pFLEFBQU0sT0FBQyxJQUFNLEFBQVMsWUFBRyxBQUFzQyxBQUFDO0FBRWhFLEFBQU0sV0FBTjtBQUNFOztTQUFzQywwQ0FBRyxBQUFJLEFBQUMsQUFFaEQsQUFBQzs7QUFFRCxBQUFNLFdBQU47QUFDRTs7U0FBc0MsMENBQUcsQUFBSSxBQUFDLEFBRWhELEFBQUM7O0FBU0QsQUFBTSxXQTRCSjttQkFBWSxBQUFzQixZQUFFLEFBQWU7QUEzQjNDOzs7O2FBQVUsYUFBYyxBQUFXLEFBQUMsTUFBQyxBQUF1QixBQUM1RDthQUFzQix5QkFBYSxBQUFFLEFBQUMsQUFDdEM7YUFBZ0IsbUJBQWEsQUFBRSxBQUFDLEFBQ2hDO2FBQVksZUFBWSxBQUFFLEFBQUMsQUF5QmpDLEFBQUk7YUFBQyxBQUFNLE9BQUMsQUFBVSxBQUFDLEFBQUMsQUFDeEIsQUFBSTs4QkFBQyxBQUFZLGNBQUMsQUFBSSxBQUFDLDBCQUFHLEFBQU0sQUFBQyxBQUFDLEFBQ3BDLEFBQUM7QUF6QkQsQUFBTTs7VUFBQyxBQUFNLEFBQUM7QUFDWjtBQURlLEFBQTRCOzs7WUFDdkMs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TUFBRSxPQUFPLEFBQVEsU0FBQyxBQUFLLE1BQUMsQUFBSSxNQUFFLEFBQUksQUFBQyxBQUFDLEFBRTdDO1lBQUksQUFBUyxZQUFHLEFBQUksS0FBQyxBQUFNLEFBQUMsQUFDNUIsQUFBSTthQUFDLEFBQU0sU0FBRyxBQUFJLEFBQUMsQUFFbkI7WUFBSSxBQUNGO21CQUFPLEFBQVEsU0FBQyxBQUFLLE1BQUMsQUFBSSxNQUFFLEFBQUksQUFBQyxBQUFDLEFBQ25DO2tCQUFTLEFBQ1IsQUFBSTtpQkFBQyxBQUFNLFNBQUcsQUFBUyxBQUFDLEFBQ3pCLEFBQ0g7QUFBQyxBQUFDLEFBQ0o7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENMQVNTX01FVEEgfSBmcm9tICdAZ2xpbW1lci9vYmplY3QtcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QsIGFzc2lnbiB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IEdsaW1tZXJPYmplY3QsIHtcbiAgR2xpbW1lck9iamVjdEZhY3RvcnksXG4gIENsYXNzTWV0YSxcbiAgSW5zdGFuY2VNZXRhLFxuICB0dXJib2NoYXJnZSxcbn0gZnJvbSAnLi9vYmplY3QnO1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmV4cG9ydCBjb25zdCBERVNDUklQVE9SID0gJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYyc7XG5leHBvcnQgY29uc3QgQkxVRVBSSU5UID0gJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZXNjcmlwdG9yIHtcbiAgJzVkOTBmODRmLTkwOGUtNGE0Mi05NzQ5LTNkMGY1MjNjMjYyYycgPSB0cnVlO1xuICBhYnN0cmFjdCBkZWZpbmUocHJvdG90eXBlOiBPYmplY3QsIGtleTogc3RyaW5nLCBob21lOiBPYmplY3QpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmx1ZXByaW50IHtcbiAgJzhkOTdjZjVmLWRiOWUtNDhkOC1hNmIyLTdhNzViNzE3MDgwNScgPSB0cnVlO1xuICBhYnN0cmFjdCBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBEZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbnMge1xuICBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmcgfCBudWxsO1xuICBtZXJnZWRQcm9wZXJ0aWVzPzogc3RyaW5nW10gfCBzdHJpbmc7XG4gIF9zdXBlcj86IEZ1bmN0aW9uO1xuICBbaW5kZXg6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIE1peGluIHtcbiAgcHJpdmF0ZSBleHRlbnNpb25zOiBEaWN0PGFueT4gPSBudWxsIGFzIGFueTsgLy8gYXNzaWduZWQgYmVmb3JlIHVzZWRcbiAgcHJpdmF0ZSBjb25jYXRlbmF0ZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgZGVwZW5kZW5jaWVzOiBNaXhpbltdID0gW107XG5cbiAgc3RhdGljIGNyZWF0ZSguLi5hcmdzOiAoTWl4aW4gfCBFeHRlbnNpb25zKVtdKSB7XG4gICAgbGV0IGV4dGVuc2lvbnMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBuZXcgdGhpcyh7fSwgW10pO1xuICAgIH0gZWxzZSBpZiAoZXh0ZW5zaW9ucyBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gbmV3IHRoaXMoe30sIGFyZ3MgYXMgTWl4aW5bXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkZXBzID0gYXJncy5zbGljZSgwLCAtMSkubWFwKHRvTWl4aW4pO1xuICAgICAgcmV0dXJuIG5ldyB0aGlzKGV4dGVuc2lvbnMgYXMgRXh0ZW5zaW9ucywgZGVwcyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG1peGlucyhvYmo6IGFueSk6IE1peGluW10ge1xuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBbXTtcblxuICAgIGxldCBtZXRhID0gQ2xhc3NNZXRhLmZvcihvYmopO1xuICAgIGlmICghbWV0YSkgcmV0dXJuIFtdO1xuXG4gICAgcmV0dXJuIG1ldGEuZ2V0QXBwbGllZE1peGlucygpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZXh0ZW5zaW9uczogRXh0ZW5zaW9ucywgbWl4aW5zOiBNaXhpbltdKSB7XG4gICAgdGhpcy5yZW9wZW4oZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5kZXBlbmRlbmNpZXMucHVzaCguLi5taXhpbnMpO1xuICB9XG5cbiAgZGV0ZWN0KG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIE1peGluKSB7XG4gICAgICByZXR1cm4gb2JqLmRlcGVuZGVuY2llcy5pbmRleE9mKHRoaXMpICE9PSAtMTtcbiAgICB9XG5cbiAgICBsZXQgbWV0YSA9IENsYXNzTWV0YS5mb3Iob2JqKTtcbiAgICByZXR1cm4gISFtZXRhICYmIG1ldGEuaGFzQXBwbGllZE1peGluKHRoaXMpO1xuICB9XG5cbiAgcmVvcGVuKGV4dGVuc2lvbnM6IEV4dGVuc2lvbnMpIHtcbiAgICBpZiAodGhpcy5leHRlbnNpb25zKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcy5wdXNoKHRvTWl4aW4odGhpcy5leHRlbnNpb25zKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBleHRlbnNpb25zID09PSAnb2JqZWN0JyAmJiAnY29uY2F0ZW5hdGVkUHJvcGVydGllcycgaW4gZXh0ZW5zaW9ucykge1xuICAgICAgbGV0IGNvbmNhdDogc3RyaW5nW107XG4gICAgICBsZXQgcmF3Q29uY2F0ID0gZXh0ZW5zaW9ucy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuXG4gICAgICBpZiAoaXNBcnJheShyYXdDb25jYXQpKSB7XG4gICAgICAgIGNvbmNhdCA9IChyYXdDb25jYXQgYXMgc3RyaW5nW10pLnNsaWNlKCk7XG4gICAgICB9IGVsc2UgaWYgKHJhd0NvbmNhdCA9PT0gbnVsbCB8fCByYXdDb25jYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25jYXQgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmNhdCA9IFtyYXdDb25jYXQgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgZGVsZXRlIGV4dGVuc2lvbnMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGNvbmNhdDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV4dGVuc2lvbnMgPT09ICdvYmplY3QnICYmICdtZXJnZWRQcm9wZXJ0aWVzJyBpbiBleHRlbnNpb25zKSB7XG4gICAgICBsZXQgbWVyZ2VkOiBzdHJpbmdbXTtcbiAgICAgIGxldCByYXdNZXJnZWQgPSBleHRlbnNpb25zLm1lcmdlZFByb3BlcnRpZXM7XG5cbiAgICAgIGlmIChpc0FycmF5KHJhd01lcmdlZCkpIHtcbiAgICAgICAgbWVyZ2VkID0gKHJhd01lcmdlZCBhcyBzdHJpbmdbXSkuc2xpY2UoKTtcbiAgICAgIH0gZWxzZSBpZiAocmF3TWVyZ2VkID09PSBudWxsIHx8IHJhd01lcmdlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1lcmdlZCA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkID0gW3Jhd01lcmdlZCBhcyBzdHJpbmddO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZXh0ZW5zaW9ucy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzID0gbWVyZ2VkO1xuICAgIH1cblxuICAgIGxldCBub3JtYWxpemVkOiBEaWN0PEJsdWVwcmludD4gPSBPYmplY3Qua2V5cyhleHRlbnNpb25zKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSBleHRlbnNpb25zW2tleV07XG5cbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgICBvYmpba2V5XSA9IG5ldyBNZXRob2RCbHVlcHJpbnQoeyB2YWx1ZSB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICBpZiAodmFsdWUgJiYgQkxVRVBSSU5UIGluIHZhbHVlKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgb2JqW2tleV0gPSBuZXcgRGF0YUJsdWVwcmludCh7IHZhbHVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIGRpY3Q8Qmx1ZXByaW50PigpKTtcblxuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IGRpY3Q8YW55PigpO1xuICAgIGFzc2lnbih0aGlzLmV4dGVuc2lvbnMsIHR1cmJvY2hhcmdlKG5vcm1hbGl6ZWQpKTtcbiAgfVxuXG4gIGFwcGx5KHRhcmdldDogYW55KSB7XG4gICAgbGV0IG1ldGE6IENsYXNzTWV0YSA9ICh0YXJnZXRbQ0xBU1NfTUVUQV0gPSB0YXJnZXRbQ0xBU1NfTUVUQV0gfHwgbmV3IENsYXNzTWV0YSgpKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5hcHBseSh0YXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyh0YXJnZXQsIHRhcmdldCwgbWV0YSk7XG4gICAgbWV0YS5hZGRNaXhpbih0aGlzKTtcbiAgICBtZXRhLnNlYWwoKTtcbiAgICBtZXRhLnJlc2VhbCh0YXJnZXQpO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZShPcmlnaW5hbDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIE9yaWdpbmFsLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoT3JpZ2luYWwucHJvdG90eXBlKTtcbiAgICB0aGlzLmRlcGVuZGVuY2llcy5mb3JFYWNoKG0gPT4gbS5leHRlbmRQcm90b3R5cGUoT3JpZ2luYWwpKTtcbiAgICB0aGlzLmV4dGVuZFByb3RvdHlwZU9udG8oT3JpZ2luYWwsIE9yaWdpbmFsKTtcbiAgfVxuXG4gIGV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIHRoaXMubWVyZ2VQcm9wZXJ0aWVzKFN1YmNsYXNzLnByb3RvdHlwZSwgUGFyZW50LnByb3RvdHlwZSwgU3ViY2xhc3NbQ0xBU1NfTUVUQV0pO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKHRoaXMpO1xuICB9XG5cbiAgZXh0ZW5kU3RhdGljKFRhcmdldDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2gobSA9PiBtLmV4dGVuZFN0YXRpYyhUYXJnZXQpKTtcbiAgICB0aGlzLm1lcmdlUHJvcGVydGllcyhUYXJnZXQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihUYXJnZXQpLCBUYXJnZXRbQ0xBU1NfTUVUQV1bQ0xBU1NfTUVUQV0pO1xuICAgIFRhcmdldFtDTEFTU19NRVRBXS5hZGRTdGF0aWNNaXhpbih0aGlzKTtcbiAgfVxuXG4gIG1lcmdlUHJvcGVydGllcyh0YXJnZXQ6IE9iamVjdCwgcGFyZW50OiBPYmplY3QsIG1ldGE6IENsYXNzTWV0YSkge1xuICAgIGlmIChtZXRhLmhhc0FwcGxpZWRNaXhpbih0aGlzKSkgcmV0dXJuO1xuICAgIG1ldGEuYWRkQXBwbGllZE1peGluKHRoaXMpO1xuXG4gICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzLmZvckVhY2goayA9PiBtZXRhLmFkZE1lcmdlZFByb3BlcnR5KGssIHBhcmVudFtrXSkpO1xuICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcy5mb3JFYWNoKGsgPT4gbWV0YS5hZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShrLCBbXSkpO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBtZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnRpZXMoKSB9KS5kZWZpbmUoXG4gICAgICB0YXJnZXQsXG4gICAgICAnY29uY2F0ZW5hdGVkUHJvcGVydGllcydcbiAgICApO1xuICAgIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyB2YWx1ZTogbWV0YS5nZXRNZXJnZWRQcm9wZXJ0aWVzKCkgfSkuZGVmaW5lKHRhcmdldCwgJ21lcmdlZFByb3BlcnRpZXMnKTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZW5zaW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgbGV0IGV4dGVuc2lvbjogQmx1ZXByaW50ID0gdGhpcy5leHRlbnNpb25zIVtrZXldO1xuICAgICAgbGV0IGRlc2MgPSBleHRlbnNpb24uZGVzY3JpcHRvcih0YXJnZXQsIGtleSBhcyBzdHJpbmcsIG1ldGEpO1xuICAgICAgZGVzYy5kZWZpbmUodGFyZ2V0LCBrZXkgYXMgc3RyaW5nLCBwYXJlbnQpO1xuICAgIH0pO1xuXG4gICAgbmV3IFZhbHVlRGVzY3JpcHRvcih7IHZhbHVlOiBST09UIH0pLmRlZmluZSh0YXJnZXQsICdfc3VwZXInIGFzIHN0cmluZyk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uID0gTWl4aW4gfCBFeHRlbnNpb25zO1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kPFQgZXh0ZW5kcyBHbGltbWVyT2JqZWN0PihcbiAgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPixcbiAgLi4uZXh0ZW5zaW9uczogRXh0ZW5zaW9uW11cbik6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4ge1xuICBsZXQgU3VwZXIgPSBQYXJlbnQgYXMgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG5cbiAgbGV0IFN1YmNsYXNzID0gY2xhc3MgZXh0ZW5kcyBTdXBlciB7fTtcbiAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0gPSBJbnN0YW5jZU1ldGEuZnJvbVBhcmVudChQYXJlbnRbQ0xBU1NfTUVUQV0pO1xuXG4gIGxldCBtaXhpbnMgPSBleHRlbnNpb25zLm1hcCh0b01peGluKTtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmFkZFN1YmNsYXNzKFN1YmNsYXNzIGFzIEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pO1xuICBtaXhpbnMuZm9yRWFjaChtID0+IFN1YmNsYXNzW0NMQVNTX01FVEFdLmFkZE1peGluKG0pKTtcblxuICBDbGFzc01ldGEuYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3MgYXMgR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50KTtcblxuICByZXR1cm4gU3ViY2xhc3MgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVsaW5rU3ViY2xhc3NlcyhQYXJlbnQ6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgUGFyZW50W0NMQVNTX01FVEFdLmdldFN1YmNsYXNzZXMoKS5mb3JFYWNoKChTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PikgPT4ge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnJlc2V0KFBhcmVudFtDTEFTU19NRVRBXSk7XG4gICAgU3ViY2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQYXJlbnQucHJvdG90eXBlKTtcblxuICAgIENsYXNzTWV0YS5hcHBseUFsbE1peGlucyhTdWJjbGFzcywgUGFyZW50KTtcblxuICAgIC8vIHJlY3Vyc2UgaW50byBzdWItc3ViY2xhc3Nlc1xuICAgIHJlbGlua1N1YmNsYXNzZXMoU3ViY2xhc3MpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTWl4aW4oZXh0ZW5zaW9uOiBFeHRlbnNpb24pOiBNaXhpbiB7XG4gIGlmIChleHRlbnNpb24gaW5zdGFuY2VvZiBNaXhpbikgcmV0dXJuIGV4dGVuc2lvbjtcbiAgZWxzZSByZXR1cm4gbmV3IE1peGluKGV4dGVuc2lvbiBhcyBPYmplY3QsIFtdKTtcbn1cblxuY2xhc3MgVmFsdWVEZXNjcmlwdG9yIGV4dGVuZHMgRGVzY3JpcHRvciB7XG4gIHB1YmxpYyBlbnVtZXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgY29uZmlndXJhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgd3JpdGFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB2YWx1ZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBlbnVtZXJhYmxlID0gdHJ1ZSxcbiAgICBjb25maWd1cmFibGUgPSB0cnVlLFxuICAgIHdyaXRhYmxlID0gdHJ1ZSxcbiAgICB2YWx1ZSxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVudW1lcmFibGUgPSBlbnVtZXJhYmxlO1xuICAgIHRoaXMuY29uZmlndXJhYmxlID0gY29uZmlndXJhYmxlO1xuICAgIHRoaXMud3JpdGFibGUgPSB3cml0YWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBkZWZpbmUodGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBfaG9tZT86IGFueSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwge1xuICAgICAgZW51bWVyYWJsZTogdGhpcy5lbnVtZXJhYmxlLFxuICAgICAgY29uZmlndXJhYmxlOiB0aGlzLmNvbmZpZ3VyYWJsZSxcbiAgICAgIHdyaXRhYmxlOiB0aGlzLndyaXRhYmxlLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGFCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIHZhbHVlOiBhbnk7XG4gIHB1YmxpYyB3cml0YWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZW51bWVyYWJsZSA9IHRydWUsXG4gICAgY29uZmlndXJhYmxlID0gdHJ1ZSxcbiAgICB3cml0YWJsZSA9IHRydWUsXG4gICAgdmFsdWUsXG4gIH06IFByb3BlcnR5RGVzY3JpcHRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy53cml0YWJsZSA9IHdyaXRhYmxlO1xuICB9XG5cbiAgZGVzY3JpcHRvcihfdGFyZ2V0OiBPYmplY3QsIGtleTogc3RyaW5nLCBjbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIGxldCB7IGVudW1lcmFibGUsIGNvbmZpZ3VyYWJsZSwgd3JpdGFibGUsIHZhbHVlIH0gPSB0aGlzO1xuXG4gICAgaWYgKGNsYXNzTWV0YS5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0eShrZXkgYXMgc3RyaW5nKSkge1xuICAgICAgY2xhc3NNZXRhLmFkZENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcsIHZhbHVlKTtcbiAgICAgIHZhbHVlID0gY2xhc3NNZXRhLmdldENvbmNhdGVuYXRlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpO1xuICAgIH0gZWxzZSBpZiAoY2xhc3NNZXRhLmhhc01lcmdlZFByb3BlcnR5KGtleSBhcyBzdHJpbmcpKSB7XG4gICAgICBjbGFzc01ldGEuYWRkTWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZywgdmFsdWUpO1xuICAgICAgdmFsdWUgPSBjbGFzc01ldGEuZ2V0TWVyZ2VkUHJvcGVydHkoa2V5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBWYWx1ZURlc2NyaXB0b3IoeyBlbnVtZXJhYmxlLCBjb25maWd1cmFibGUsIHdyaXRhYmxlLCB2YWx1ZSB9KTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWNjZXNzb3JCbHVlcHJpbnQgZXh0ZW5kcyBCbHVlcHJpbnQge1xuICBwdWJsaWMgZW51bWVyYWJsZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbjtcbiAgZ2V0OiAoKSA9PiBhbnk7XG4gIHNldDogKHZhbHVlOiBhbnkpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGVudW1lcmFibGUgPSB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZSA9IHRydWUsXG4gICAgZ2V0LFxuICAgIHNldCxcbiAgfTogUHJvcGVydHlEZXNjcmlwdG9yICYgeyBnZXQ6IGFueTsgc2V0OiBhbnkgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lbnVtZXJhYmxlID0gZW51bWVyYWJsZTtcbiAgICB0aGlzLmNvbmZpZ3VyYWJsZSA9IGNvbmZpZ3VyYWJsZTtcbiAgICB0aGlzLmdldCA9IGdldDtcbiAgICB0aGlzLnNldCA9IHNldDtcbiAgfVxuXG4gIGRlc2NyaXB0b3IoX3RhcmdldDogT2JqZWN0LCBfa2V5OiBzdHJpbmcsIF9jbGFzc01ldGE6IENsYXNzTWV0YSk6IERlc2NyaXB0b3Ige1xuICAgIHJldHVybiBuZXcgVmFsdWVEZXNjcmlwdG9yKHtcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuZW51bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdGhpcy5jb25maWd1cmFibGUsXG4gICAgICBnZXQ6IHRoaXMuZ2V0LFxuICAgICAgc2V0OiB0aGlzLnNldCxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBNZXRob2REZXNjcmlwdG9yIGV4dGVuZHMgVmFsdWVEZXNjcmlwdG9yIHtcbiAgZGVmaW5lKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgaG9tZTogT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHdyYXBNZXRob2QoaG9tZSwga2V5LCB0aGlzLnZhbHVlKTtcbiAgICBzdXBlci5kZWZpbmUodGFyZ2V0LCBrZXksIGhvbWUpO1xuICB9XG59XG5cbmNsYXNzIE1ldGhvZEJsdWVwcmludCBleHRlbmRzIERhdGFCbHVlcHJpbnQge1xuICBkZXNjcmlwdG9yKHRhcmdldDogT2JqZWN0LCBrZXk6IHN0cmluZywgY2xhc3NNZXRhOiBDbGFzc01ldGEpOiBNZXRob2REZXNjcmlwdG9yIHtcbiAgICBsZXQgZGVzYyA9IHN1cGVyLmRlc2NyaXB0b3IodGFyZ2V0LCBrZXksIGNsYXNzTWV0YSk7XG4gICAgcmV0dXJuIG5ldyBNZXRob2REZXNjcmlwdG9yKGRlc2MgYXMgUHJvcGVydHlEZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JhcE1ldGhvZChob21lOiBPYmplY3QsIG1ldGhvZE5hbWU6IHN0cmluZywgb3JpZ2luYWw6ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55KSB7XG4gIGlmICghKChtZXRob2ROYW1lIGFzIHN0cmluZykgaW4gaG9tZSkpIHJldHVybiBtYXliZVdyYXAob3JpZ2luYWwpO1xuXG4gIGxldCBzdXBlck1ldGhvZCA9IGhvbWVbbWV0aG9kTmFtZV07XG5cbiAgbGV0IGZ1bmMgPSBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gc3VwZXJNZXRob2Q7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLl9zdXBlciA9IGxhc3RTdXBlcjtcbiAgICB9XG4gIH07XG5cbiAgKGZ1bmMgYXMgYW55KS5fX3dyYXBwZWQgPSB0cnVlO1xuXG4gIHJldHVybiBmdW5jO1xufVxuXG5mdW5jdGlvbiBtYXliZVdyYXAob3JpZ2luYWw6IEZ1bmN0aW9uKSB7XG4gIGlmICgnX193cmFwcGVkJyBpbiBvcmlnaW5hbCkgcmV0dXJuIG9yaWdpbmFsO1xuXG4gIHJldHVybiBmdW5jdGlvbih0aGlzOiBHbGltbWVyT2JqZWN0LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmICghdGhpcykgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuXG4gICAgbGV0IGxhc3RTdXBlciA9IHRoaXMuX3N1cGVyO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N1cGVyID0gbGFzdFN1cGVyO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ== |
@@ -408,2 +408,2 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; } | ||
GlimmerObject.isClass = true; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFPLFNBQUUsQUFBSSxNQUF5QixBQUFpQixBQUFFLHlCQUFNLEFBQTJCLEFBQUM7QUFDM0YsQUFBTyxTQUFRLEFBQUksTUFBRSxBQUFNLFFBQUUsQUFBYyxBQUFFLHNCQUFNLEFBQWUsQUFBQztBQUNuRSxBQUFPLFNBQVMsQUFBTSxVQUFJLEFBQVcsYUFBRSxBQUFPLFNBQUUsQUFBZ0Isa0JBQUUsQUFBVSxBQUFFLGtCQUFNLEFBQVMsQUFBQyxBQUU5RixBQUFNO0lBQUUsQUFBTyxBQUFFLFVBQUcsQUFBSyxBQUFDOztBQUUxQixBQUFPLFNBQUUsQUFBSSxBQUFFLFlBQU0sQUFBUyxBQUFDO0FBRS9CLEFBQU8sU0FBRSxBQUFJLEFBQUUsWUFBTSxBQUFvQixBQUFDO0FBRTFDLEFBQU0sT0FBQyxJQUFNLEFBQVcsY0FBRyx1QkFBd0IsQUFBQyxBQUFDO0FBRXJELElBQU0sQUFBVSxhQUFHLEFBQXNDLEFBQUM7QUF3QjFELEFBQU0sNEJBQXlCLEFBQU0sS0FDbkMsQUFBc0I7QUFDdEIsQUFBeUI7QUFDekIsQUFBTTtXQUFDLEFBQUcsQUFBQyxBQUNiLEFBQUM7QUFFRDs7SUFBMEI7Ozs7Ozs7Ozt5QkFDSixBQUFHLEFBQVkscURBQ2pDO2NBQU0sSUFBSSxBQUFLLE1BQUMsQUFBZ0QsQUFBQyxBQUFDLEFBQ3BFLEFBQUMsQUFDRjs7OztFQUppQyxBQUFJLEFBQ3BDLEFBQW1COztBQUtyQixBQUFNLFdBQU47O0FBQ1U7O2FBQWMsaUJBQUcsQUFBSSxBQUE4QixBQUFDLEFBQ3BEO2FBQWdCLG1CQUFHLEFBQUksQUFBTyxBQUFDLEFBQy9CO2FBQXNCLHlCQUFHLEFBQUksQUFBUyxBQUFDLEFBQ3ZDO2FBQXlCLDRCQUFHLEFBQUssQUFBQyxB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QztZQUFDLENBQUMsQUFBSyxBQUFDLE9BQ1QsTUFBTSxJQUFJLEFBQUssQUFDYiwyRUFBa0UsQUFBUSxBQUFJLEFBQy9FLEFBQUMsQUFDSixBQUFNO2VBQUMsQUFBSyxBQUFDLEFBQ2YsQUFBQztBQUVELEFBQU07O2tCQUFDLEFBQW9CLHFEQUFDLEFBQXdDLFVBQ2xFO1lBQUksQUFBUSxXQUFHLEFBQUksS0FBQyxBQUFVLEFBQUMsWUFBQyxBQUFtQixBQUFFLEFBQUMsQUFDdEQsQUFBRSxBQUFDO1lBQUMsQ0FBQyxBQUFRLEFBQUMsVUFBQyxBQUFNLEFBQUMsQUFFdEIsQUFBRyxBQUFDO2FBQUMsSUFBSSxBQUFJLFFBQUksQUFBUSxBQUFDLFVBQUMsQUFBQyxBQUMxQixBQUFRO3FCQUFDLEFBQUksTUFBRSxBQUFRLFNBQUMsQUFBSSxBQUFDLEFBQUMsQUFBQyxBQUNqQyxBQUFDLEFBQ0g7QUFBQztBQU1ELEFBQUk7O21EQUFJLEFBQUMsQ0FVVCxBQUFHOzsrQ0FBQyxBQUFXLEtBQ2IsQUFBTTtlQUFDLEFBQUksS0FBQyxBQUFHLEFBQUMsQUFBQyxBQUNuQixBQUFDO0FBRUQsQUFBRzs7K0NBQUMsQUFBVyxLQUFFLEFBQVUsT0FDekIsQUFBSTthQUFDLEFBQUcsQUFBQyxPQUFHLEFBQUssQUFBQyxBQUNsQixBQUFJLEFBQUUsQUFBQyxBQUNUO0FBQUM7QUFFRCxBQUFhOzttRUFBQyxBQUFhLE9BQ3pCLEFBQU07ZUFBQyxBQUFJLE1BQUUsQUFBSyxBQUFDLEFBQUMsQUFDcEIsQUFBSSxBQUFFLEFBQUMsQUFDVDtBQUFDO0FBRUQsQUFBTzs7eURBQUksQUFBQzs7Ozs7OztBQXpFTCxjQUFzQywwQ0FBaUIsQUFBWSxhQUFDLEFBQVUsV0FBQyxBQUFJLEFBQUMsQUFBQztBQUNyRixjQUFPLFVBQUcsQUFBSSxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWV0YSwgSW5uZXJSZWZlcmVuY2VGYWN0b3J5LCBQcm9wZXJ0eVJlZmVyZW5jZSB9IGZyb20gJ0BnbGltbWVyL29iamVjdC1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRGljdCwgZGljdCwgYXNzaWduLCBpbml0aWFsaXplR3VpZCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgTWl4aW4sIGV4dGVuZCBhcyBleHRlbmRDbGFzcywgdG9NaXhpbiwgcmVsaW5rU3ViY2xhc3Nlcywgd3JhcE1ldGhvZCB9IGZyb20gJy4vbWl4aW4nO1xuXG5jb25zdCB7IGlzQXJyYXkgfSA9IEFycmF5O1xuXG5pbXBvcnQgeyBST09UIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGJ1bXAgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuXG5leHBvcnQgY29uc3QgRU1QVFlfQ0FDSEUgPSBmdW5jdGlvbiBFTVBUWV9DQUNIRSgpIHt9O1xuXG5jb25zdCBDTEFTU19NRVRBID0gJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0V2l0aE1peGlucyB7XG4gICdkZjhiZTRjOC00ZTg5LTQ0ZTItYThmOS01NTBjOGRhY2RjYTcnOiBDbGFzc01ldGE7XG4gIF9tZXRhOiBNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlV2l0aE1peGlucyB7XG4gIGNvbnN0cnVjdG9yOiBPYmplY3RXaXRoTWl4aW5zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdsaW1tZXJPYmplY3RGYWN0b3J5PFQ+IHtcbiAgbmV3IDxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxPYmplY3Q+O1xuICBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD47XG4gIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGNyZWF0ZTxVPihhdHRycz86IFUpOiBHbGltbWVyT2JqZWN0ICYgVCAmIFU7XG4gIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgcmVvcGVuQ2xhc3M8VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQ7XG4gIG1ldGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0O1xuICBlYWNoQ29tcHV0ZWRQcm9wZXJ0eShjYWxsYmFjazogKHM6IHN0cmluZywgbzogT2JqZWN0KSA9PiB2b2lkKTogdm9pZDtcbiAgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1cmJvY2hhcmdlPFQ+KG9iajogVCk6IFQge1xuICAvLyBmdW5jdGlvbiBEdW1teSgpIHt9XG4gIC8vIER1bW15LnByb3RvdHlwZSA9IG9iajtcbiAgcmV0dXJuIG9iajtcbn1cblxuYWJzdHJhY3QgY2xhc3MgU2VhbGVkTWV0YSBleHRlbmRzIE1ldGEge1xuICBhZGRSZWZlcmVuY2VUeXBlRm9yKC4uLl9hcmdzOiBhbnlbXSk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBtb2RpZnkgcmVmZXJlbmNlIHR5cGVzIG9uIGEgc2VhbGVkIG1ldGEnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2xhc3NNZXRhIHtcbiAgcHJpdmF0ZSByZWZlcmVuY2VUeXBlcyA9IGRpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+KCk7XG4gIHByaXZhdGUgcHJvcGVydHlNZXRhZGF0YSA9IGRpY3Q8YW55PigpO1xuICBwcml2YXRlIGNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0PGFueVtdPigpO1xuICBwcml2YXRlIGhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSBtZXJnZWRQcm9wZXJ0aWVzID0gZGljdDxPYmplY3Q+KCk7XG4gIHByaXZhdGUgaGFzTWVyZ2VkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIGFwcGxpZWRNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdGF0aWNNaXhpbnM6IE1peGluW10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJjbGFzc2VzOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+W10gPSBbXTtcbiAgcHJpdmF0ZSBzbG90czogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIEluc3RhbmNlTWV0YUNvbnN0cnVjdG9yOiBPcHRpb248dHlwZW9mIE1ldGE+ID0gbnVsbDtcblxuICBzdGF0aWMgZnJvbVBhcmVudChwYXJlbnQ6IE9wdGlvbjxDbGFzc01ldGE+KSB7XG4gICAgbGV0IG1ldGEgPSBuZXcgdGhpcygpO1xuICAgIG1ldGEucmVzZXQocGFyZW50KTtcbiAgICByZXR1cm4gbWV0YTtcbiAgfVxuXG4gIHN0YXRpYyBmb3Iob2JqZWN0OiBPYmplY3RXaXRoTWl4aW5zIHwgSW5zdGFuY2VXaXRoTWl4aW5zKTogT3B0aW9uPENsYXNzTWV0YT4ge1xuICAgIGlmIChDTEFTU19NRVRBIGluIG9iamVjdCkgcmV0dXJuIChvYmplY3QgYXMgT2JqZWN0V2l0aE1peGlucylbQ0xBU1NfTUVUQV07XG4gICAgZWxzZSBpZiAob2JqZWN0LmNvbnN0cnVjdG9yKVxuICAgICAgcmV0dXJuIChvYmplY3QgYXMgSW5zdGFuY2VXaXRoTWl4aW5zKS5jb25zdHJ1Y3RvcltDTEFTU19NRVRBXSB8fCBudWxsO1xuICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpbml0KG9iamVjdDogR2xpbW1lck9iamVjdCwgYXR0cnM6IE9wdGlvbjxPYmplY3Q+KSB7XG4gICAgaWYgKHR5cGVvZiBhdHRycyAhPT0gJ29iamVjdCcgfHwgYXR0cnMgPT09IG51bGwpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBjb25jYXRQcm9wcyA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gY29uY2F0UHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgY29uY2F0ID0gY29uY2F0UHJvcHNbcHJvcF0uc2xpY2UoKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBjb25jYXQuY29uY2F0KGF0dHJzW3Byb3BdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCBtZXJnZWRQcm9wcyA9IHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gbWVyZ2VkUHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3AgaW4gYXR0cnMpIHtcbiAgICAgICAgICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBtZXJnZWRQcm9wc1twcm9wXSk7XG4gICAgICAgICAgb2JqZWN0W3Byb3BdID0gYXNzaWduKG1lcmdlZCwgYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkU3RhdGljTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5zdGF0aWNNaXhpbnMucHVzaChtaXhpbik7XG4gIH1cblxuICBhZGRNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLm1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGdldFN0YXRpY01peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0aWNNaXhpbnM7XG4gIH1cblxuICBnZXRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMubWl4aW5zO1xuICB9XG5cbiAgYWRkQXBwbGllZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMuYXBwbGllZE1peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGhhc0FwcGxpZWRNaXhpbihtaXhpbjogTWl4aW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIGdldEFwcGxpZWRNaXhpbnMoKTogTWl4aW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGllZE1peGlucztcbiAgfVxuXG4gIGhhc1N0YXRpY01peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucy5pbmRleE9mKG1peGluKSAhPT0gLTE7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBbGxNaXhpbnMoU3ViY2xhc3M6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIFBhcmVudDogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55Pikge1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldE1peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFByb3RvdHlwZU9udG8oU3ViY2xhc3MsIFBhcmVudCkpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLmdldFN0YXRpY01peGlucygpLmZvckVhY2goKG06IE1peGluKSA9PiBtLmV4dGVuZFN0YXRpYyhTdWJjbGFzcykpO1xuICAgIFN1YmNsYXNzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIGFkZFN1YmNsYXNzKGNvbnN0cnVjdG9yOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5zdWJjbGFzc2VzLnB1c2goY29uc3RydWN0b3IpO1xuICB9XG5cbiAgZ2V0U3ViY2xhc3NlcygpOiBGdW5jdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5zdWJjbGFzc2VzO1xuICB9XG5cbiAgYWRkUHJvcGVydHlNZXRhZGF0YShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5wcm9wZXJ0eU1ldGFkYXRhW3Byb3BlcnR5XSA9IHZhbHVlO1xuICB9XG5cbiAgbWV0YWRhdGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eU1ldGFkYXRhW3Byb3BlcnR5XTtcbiAgfVxuXG4gIGFkZFJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZywgdHlwZTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzW3Byb3BlcnR5XSA9IHR5cGU7XG4gIH1cblxuICBhZGRTbG90Rm9yKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNsb3RzLnB1c2gocHJvcGVydHkpO1xuICB9XG5cbiAgaGFzQ29uY2F0ZW5hdGVkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldENvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV07XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSBhcyBzdHJpbmdbXTtcbiAgfVxuXG4gIGFkZENvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSB0cnVlO1xuXG4gICAgaWYgKChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgbGV0IHZhbCA9IHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0uY29uY2F0KHZhbHVlKTtcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBoYXNNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV07XG4gIH1cblxuICBnZXRNZXJnZWRQcm9wZXJ0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5tZXJnZWRQcm9wZXJ0aWVzKSBhcyBzdHJpbmdbXTtcbiAgfVxuXG4gIGFkZE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBPYmplY3QpIHtcbiAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSB0cnVlO1xuXG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBZb3UgcGFzc2VkIGluIFxcYCR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgKX1cXGAgYXMgdGhlIHZhbHVlIGZvciBcXGBmb29cXGAgYnV0IFxcYGZvb1xcYCBjYW5ub3QgYmUgYW4gQXJyYXlgXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICgocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLm1lcmdlZFByb3BlcnRpZXMgJiYgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSAmJiB2YWx1ZSkge1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IG1lcmdlTWVyZ2VkUHJvcGVydGllcyhcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgPT09IG51bGwgPyB2YWx1ZSA6IHZhbHVlIHx8IHt9O1xuICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldFJlZmVyZW5jZVR5cGVzKCk6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+IHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlcztcbiAgfVxuXG4gIGdldFByb3BlcnR5TWV0YWRhdGEoKTogRGljdDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eU1ldGFkYXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBPcHRpb248Q2xhc3NNZXRhPikge1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZXMgPSBkaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PigpO1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YSA9IGRpY3QoKTtcbiAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMgPSBkaWN0PGFueVtdPigpO1xuICAgIHRoaXMubWVyZ2VkUHJvcGVydGllcyA9IGRpY3Q8T2JqZWN0PigpO1xuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gcGFyZW50Lmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gICAgICBmb3IgKGxldCBwcm9wIGluIHBhcmVudC5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXSA9IHBhcmVudC5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzW3Byb3BdLnNsaWNlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyA9IHBhcmVudC5oYXNNZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQubWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcF0gPSBhc3NpZ24oe30sIHBhcmVudC5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdKTtcbiAgICAgIH1cblxuICAgICAgYXNzaWduKHRoaXMucmVmZXJlbmNlVHlwZXMsIHBhcmVudC5yZWZlcmVuY2VUeXBlcyk7XG4gICAgICBhc3NpZ24odGhpcy5wcm9wZXJ0eU1ldGFkYXRhLCBwYXJlbnQucHJvcGVydHlNZXRhZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgcmVzZWFsKG9iajogT2JqZWN0KSB7XG4gICAgbGV0IG1ldGEgPSBNZXRhLmZvcihvYmopO1xuICAgIGxldCBmcmVzaCA9IG5ldyB0aGlzLkluc3RhbmNlTWV0YUNvbnN0cnVjdG9yIShvYmosIHt9KTtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXMgPSBtZXRhLmdldFJlZmVyZW5jZVR5cGVzKCk7XG4gICAgbGV0IHNsb3RzID0gbWV0YS5nZXRTbG90cygpO1xuXG4gICAgdHVyYm9jaGFyZ2UoYXNzaWduKHJlZmVyZW5jZVR5cGVzLCB0aGlzLnJlZmVyZW5jZVR5cGVzKSk7XG4gICAgdHVyYm9jaGFyZ2UoYXNzaWduKHNsb3RzLCBmcmVzaC5nZXRTbG90cygpKSk7XG4gIH1cblxuICBzZWFsKCkge1xuICAgIGxldCByZWZlcmVuY2VUeXBlczogRGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4gPSB0dXJib2NoYXJnZShcbiAgICAgIGFzc2lnbih7fSwgdGhpcy5yZWZlcmVuY2VUeXBlcylcbiAgICApO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcyk7XG4gICAgdHVyYm9jaGFyZ2UodGhpcy5tZXJnZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzICYmICF0aGlzLmhhc0NvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIHRoaXMuaW5pdCA9IGZ1bmN0aW9uKCkge307XG4gICAgfVxuXG4gICAgbGV0IHNsb3RzID0gdGhpcy5zbG90cztcblxuICAgIGNsYXNzIFNsb3RzIHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzbG90cy5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgIHRoaXNbbmFtZV0gPSBFTVBUWV9DQUNIRTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciA9IGNsYXNzIGV4dGVuZHMgU2VhbGVkTWV0YSB7XG4gICAgICBwcm90ZWN0ZWQgc2xvdHM6IFNsb3RzID0gbmV3IFNsb3RzKCk7XG4gICAgICBwdWJsaWMgcmVmZXJlbmNlVHlwZXM6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+ID0gcmVmZXJlbmNlVHlwZXM7XG5cbiAgICAgIGdldFJlZmVyZW5jZVR5cGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlcztcbiAgICAgIH1cblxuICAgICAgcmVmZXJlbmNlVHlwZUZvcihwcm9wZXJ0eTogc3RyaW5nKTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gfHwgUHJvcGVydHlSZWZlcmVuY2U7XG4gICAgICB9XG5cbiAgICAgIGdldFNsb3RzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zbG90cztcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdHVyYm9jaGFyZ2UodGhpcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VNZXJnZWRQcm9wZXJ0aWVzKGF0dHJzOiBPYmplY3QsIHBhcmVudDogT2JqZWN0KSB7XG4gIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIHBhcmVudCk7XG5cbiAgZm9yIChsZXQgcHJvcCBpbiBhdHRycykge1xuICAgIGlmIChwcm9wIGluIHBhcmVudCAmJiB0eXBlb2YgcGFyZW50W3Byb3BdID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBhdHRyc1twcm9wXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbGV0IHdyYXBwZWQgPSB3cmFwTWV0aG9kKHBhcmVudCwgcHJvcCwgYXR0cnNbcHJvcF0pO1xuICAgICAgbWVyZ2VkW3Byb3BdID0gd3JhcHBlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVyZ2VkW3Byb3BdID0gYXR0cnNbcHJvcF07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlZDtcbn1cblxuZXhwb3J0IGNsYXNzIEluc3RhbmNlTWV0YSBleHRlbmRzIENsYXNzTWV0YSB7XG4gIHB1YmxpYyAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogQ2xhc3NNZXRhID0gQ2xhc3NNZXRhLmZyb21QYXJlbnQobnVsbCk7XG5cbiAgc3RhdGljIGZyb21QYXJlbnQocGFyZW50OiBPcHRpb248SW5zdGFuY2VNZXRhPik6IEluc3RhbmNlTWV0YSB7XG4gICAgcmV0dXJuIHN1cGVyLmZyb21QYXJlbnQocGFyZW50KSBhcyBJbnN0YW5jZU1ldGE7XG4gIH1cblxuICByZXNldChwYXJlbnQ6IEluc3RhbmNlTWV0YSkge1xuICAgIHN1cGVyLnJlc2V0KHBhcmVudCk7XG4gICAgaWYgKHBhcmVudCkgdGhpc1tDTEFTU19NRVRBXS5yZXNldChwYXJlbnRbQ0xBU1NfTUVUQV0pO1xuICB9XG5cbiAgc2VhbCgpIHtcbiAgICBzdXBlci5zZWFsKCk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2xpbW1lck9iamVjdCB7XG4gIHN0YXRpYyAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogSW5zdGFuY2VNZXRhID0gSW5zdGFuY2VNZXRhLmZyb21QYXJlbnQobnVsbCk7XG4gIHN0YXRpYyBpc0NsYXNzID0gdHJ1ZTtcblxuICBzdGF0aWMgZXh0ZW5kKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZDxUPihleHRlbnNpb246IFQpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuICBzdGF0aWMgZXh0ZW5kKC4uLmV4dGVuc2lvbnM6IE9iamVjdFtdKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiAmIHR5cGVvZiBHbGltbWVyT2JqZWN0O1xuXG4gIHN0YXRpYyBleHRlbmQodGhpczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgLi4uZXh0ZW5zaW9uczogYW55W10pIHtcbiAgICByZXR1cm4gZXh0ZW5kQ2xhc3ModGhpcywgLi4uZXh0ZW5zaW9ucyk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlKGF0dHJzPzogT2JqZWN0IHwgbnVsbCk6IEdsaW1tZXJPYmplY3Qge1xuICAgIHJldHVybiBuZXcgdGhpcyhhdHRycyk7XG4gIH1cblxuICBzdGF0aWMgcmVvcGVuPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFByb3RvdHlwZSh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcblxuICAgIHJlbGlua1N1YmNsYXNzZXModGhpcyk7XG4gIH1cblxuICBzdGF0aWMgcmVvcGVuQ2xhc3M8VT4oZXh0ZW5zaW9uczogVSk6IHZvaWQge1xuICAgIHRvTWl4aW4oZXh0ZW5zaW9ucykuZXh0ZW5kU3RhdGljKHRoaXMpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG5cbiAgc3RhdGljIG1ldGFGb3JQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogT2JqZWN0IHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzW0NMQVNTX01FVEFdLm1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHkpO1xuICAgIGlmICghdmFsdWUpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBtZXRhRm9yUHJvcGVydHkoKSBjb3VsZCBub3QgZmluZCBhIGNvbXB1dGVkIHByb3BlcnR5IHdpdGgga2V5ICcke3Byb3BlcnR5fScuYFxuICAgICAgKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBzdGF0aWMgZWFjaENvbXB1dGVkUHJvcGVydHkoY2FsbGJhY2s6IChzOiBzdHJpbmcsIG86IE9iamVjdCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGxldCBtZXRhZGF0YSA9IHRoaXNbQ0xBU1NfTUVUQV0uZ2V0UHJvcGVydHlNZXRhZGF0YSgpO1xuICAgIGlmICghbWV0YWRhdGEpIHJldHVybjtcblxuICAgIGZvciAobGV0IHByb3AgaW4gbWV0YWRhdGEpIHtcbiAgICAgIGNhbGxiYWNrKHByb3AsIG1ldGFkYXRhW3Byb3BdKTtcbiAgICB9XG4gIH1cblxuICBfc3VwZXIgPSBST09UO1xuICBfbWV0YSA9IG51bGw7XG4gIF9ndWlkOiBudW1iZXI7XG5cbiAgaW5pdCgpIHt9XG5cbiAgY29uc3RydWN0b3IoYXR0cnM/OiBPYmplY3QgfCBudWxsKSB7XG4gICAgaWYgKGF0dHJzKSBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBHbGltbWVyT2JqZWN0KVtDTEFTU19NRVRBXS5pbml0KHRoaXMsIGF0dHJzIHx8IG51bGwpO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcbiAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXNba2V5XTtcbiAgfVxuXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNba2V5XSA9IHZhbHVlO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMoYXR0cnM6IE9iamVjdCkge1xuICAgIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgYnVtcCgpO1xuICB9XG5cbiAgZGVzdHJveSgpIHt9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvQGdsaW1tZXIvb2JqZWN0L2xpYi9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxBQUFPLFNBQUUsQUFBSSxNQUF5QixBQUFpQixBQUFFLHlCQUFNLEFBQTJCLEFBQUM7QUFDM0YsQUFBTyxTQUFRLEFBQUksTUFBRSxBQUFNLFFBQUUsQUFBYyxBQUFFLHNCQUFNLEFBQWUsQUFBQztBQUNuRSxBQUFPLFNBQVMsQUFBTSxVQUFJLEFBQVcsYUFBRSxBQUFPLFNBQUUsQUFBZ0Isa0JBQUUsQUFBVSxBQUFFLGtCQUFNLEFBQVMsQUFBQyxBQUU5RixBQUFNO0lBQUUsQUFBTyxBQUFFLFVBQUcsQUFBSyxBQUFDOztBQUUxQixBQUFPLFNBQUUsQUFBSSxBQUFFLFlBQU0sQUFBUyxBQUFDO0FBRS9CLEFBQU8sU0FBRSxBQUFJLEFBQUUsWUFBTSxBQUFvQixBQUFDO0FBRTFDLEFBQU0sT0FBQyxJQUFNLEFBQVcsY0FBRyx1QkFBd0IsQUFBQyxBQUFDO0FBRXJELElBQU0sQUFBVSxhQUFHLEFBQXNDLEFBQUM7QUF3QjFELEFBQU0sNEJBQXlCLEFBQU0sS0FDbkMsQUFBc0I7QUFDdEIsQUFBeUI7QUFDekI7V0FBTyxBQUFHLEFBQUMsQUFDYixBQUFDO0FBRUQ7O0lBQTBCOzs7Ozs7Ozs7eUJBQ0osQUFBRyxBQUFZLHFEQUNqQztjQUFNLElBQUksQUFBSyxNQUFDLEFBQWdELEFBQUMsQUFBQyxBQUNwRSxBQUFDLEFBQ0Y7Ozs7RUFKaUMsQUFBSSxBQUNwQyxBQUFtQjs7QUFLckIsQUFBTSxXQUFOOztBQUNVOzthQUFjLGlCQUFHLEFBQUksQUFBOEIsQUFBQyxBQUNwRDthQUFnQixtQkFBRyxBQUFJLEFBQU8sQUFBQyxBQUMvQjthQUFzQix5QkFBRyxBQUFJLEFBQVMsQUFBQyxBQUN2QzthQUF5Qiw0QkFBRyxBQUFLLEFBQUMsQUFDbEM7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QixBQUFZLGFBQUMsQUFBVSxXQUFDLEFBQUksQUFBQyxBQUFDO0FBQ3JGLGNBQU8sVUFBRyxBQUFJLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXRhLCBJbm5lclJlZmVyZW5jZUZhY3RvcnksIFByb3BlcnR5UmVmZXJlbmNlIH0gZnJvbSAnQGdsaW1tZXIvb2JqZWN0LXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBEaWN0LCBkaWN0LCBhc3NpZ24sIGluaXRpYWxpemVHdWlkIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBNaXhpbiwgZXh0ZW5kIGFzIGV4dGVuZENsYXNzLCB0b01peGluLCByZWxpbmtTdWJjbGFzc2VzLCB3cmFwTWV0aG9kIH0gZnJvbSAnLi9taXhpbic7XG5cbmNvbnN0IHsgaXNBcnJheSB9ID0gQXJyYXk7XG5cbmltcG9ydCB7IFJPT1QgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYnVtcCB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbmV4cG9ydCBjb25zdCBFTVBUWV9DQUNIRSA9IGZ1bmN0aW9uIEVNUFRZX0NBQ0hFKCkge307XG5cbmNvbnN0IENMQVNTX01FVEEgPSAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JztcblxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RXaXRoTWl4aW5zIHtcbiAgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YTtcbiAgX21ldGE6IE1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VXaXRoTWl4aW5zIHtcbiAgY29uc3RydWN0b3I6IE9iamVjdFdpdGhNaXhpbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4ge1xuICBuZXcgPFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgZXh0ZW5kKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PE9iamVjdD47XG4gIGV4dGVuZDxUPihleHRlbnNpb246IFQpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxUPjtcbiAgZXh0ZW5kKC4uLmV4dGVuc2lvbnM6IE9iamVjdFtdKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8T2JqZWN0PjtcbiAgY3JlYXRlPFU+KGF0dHJzPzogVSk6IEdsaW1tZXJPYmplY3QgJiBUICYgVTtcbiAgcmVvcGVuPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkO1xuICByZW9wZW5DbGFzczxVPihleHRlbnNpb25zOiBVKTogdm9pZDtcbiAgbWV0YUZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Q7XG4gIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkO1xuICAnZGY4YmU0YzgtNGU4OS00NGUyLWE4ZjktNTUwYzhkYWNkY2E3JzogSW5zdGFuY2VNZXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVyYm9jaGFyZ2U8VD4ob2JqOiBUKTogVCB7XG4gIC8vIGZ1bmN0aW9uIER1bW15KCkge31cbiAgLy8gRHVtbXkucHJvdG90eXBlID0gb2JqO1xuICByZXR1cm4gb2JqO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBTZWFsZWRNZXRhIGV4dGVuZHMgTWV0YSB7XG4gIGFkZFJlZmVyZW5jZVR5cGVGb3IoLi4uX2FyZ3M6IGFueVtdKTogSW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IG1vZGlmeSByZWZlcmVuY2UgdHlwZXMgb24gYSBzZWFsZWQgbWV0YScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbGFzc01ldGEge1xuICBwcml2YXRlIHJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgcHJpdmF0ZSBwcm9wZXJ0eU1ldGFkYXRhID0gZGljdDxhbnk+KCk7XG4gIHByaXZhdGUgY29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGRpY3Q8YW55W10+KCk7XG4gIHByaXZhdGUgaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IGZhbHNlO1xuICBwcml2YXRlIG1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcbiAgcHJpdmF0ZSBoYXNNZXJnZWRQcm9wZXJ0aWVzID0gZmFsc2U7XG4gIHByaXZhdGUgbWl4aW5zOiBNaXhpbltdID0gW107XG4gIHByaXZhdGUgYXBwbGllZE1peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN0YXRpY01peGluczogTWl4aW5bXSA9IFtdO1xuICBwcml2YXRlIHN1YmNsYXNzZXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSA9IFtdO1xuICBwcml2YXRlIHNsb3RzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgSW5zdGFuY2VNZXRhQ29uc3RydWN0b3I6IE9wdGlvbjx0eXBlb2YgTWV0YT4gPSBudWxsO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICBsZXQgbWV0YSA9IG5ldyB0aGlzKCk7XG4gICAgbWV0YS5yZXNldChwYXJlbnQpO1xuICAgIHJldHVybiBtZXRhO1xuICB9XG5cbiAgc3RhdGljIGZvcihvYmplY3Q6IE9iamVjdFdpdGhNaXhpbnMgfCBJbnN0YW5jZVdpdGhNaXhpbnMpOiBPcHRpb248Q2xhc3NNZXRhPiB7XG4gICAgaWYgKENMQVNTX01FVEEgaW4gb2JqZWN0KSByZXR1cm4gKG9iamVjdCBhcyBPYmplY3RXaXRoTWl4aW5zKVtDTEFTU19NRVRBXTtcbiAgICBlbHNlIGlmIChvYmplY3QuY29uc3RydWN0b3IpXG4gICAgICByZXR1cm4gKG9iamVjdCBhcyBJbnN0YW5jZVdpdGhNaXhpbnMpLmNvbnN0cnVjdG9yW0NMQVNTX01FVEFdIHx8IG51bGw7XG4gICAgZWxzZSByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGluaXQob2JqZWN0OiBHbGltbWVyT2JqZWN0LCBhdHRyczogT3B0aW9uPE9iamVjdD4pIHtcbiAgICBpZiAodHlwZW9mIGF0dHJzICE9PSAnb2JqZWN0JyB8fCBhdHRycyA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgbGV0IGNvbmNhdFByb3BzID0gdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBjb25jYXRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBjb25jYXQgPSBjb25jYXRQcm9wc1twcm9wXS5zbGljZSgpO1xuICAgICAgICAgIG9iamVjdFtwcm9wXSA9IGNvbmNhdC5jb25jYXQoYXR0cnNbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcykge1xuICAgICAgbGV0IG1lcmdlZFByb3BzID0gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBtZXJnZWRQcm9wcykge1xuICAgICAgICBpZiAocHJvcCBpbiBhdHRycykge1xuICAgICAgICAgIGxldCBtZXJnZWQgPSBhc3NpZ24oe30sIG1lcmdlZFByb3BzW3Byb3BdKTtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSBhc3NpZ24obWVyZ2VkLCBhdHRyc1twcm9wXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRTdGF0aWNNaXhpbihtaXhpbjogTWl4aW4pIHtcbiAgICB0aGlzLnN0YXRpY01peGlucy5wdXNoKG1peGluKTtcbiAgfVxuXG4gIGFkZE1peGluKG1peGluOiBNaXhpbikge1xuICAgIHRoaXMubWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgZ2V0U3RhdGljTWl4aW5zKCk6IE1peGluW10ge1xuICAgIHJldHVybiB0aGlzLnN0YXRpY01peGlucztcbiAgfVxuXG4gIGdldE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5taXhpbnM7XG4gIH1cblxuICBhZGRBcHBsaWVkTWl4aW4obWl4aW46IE1peGluKSB7XG4gICAgdGhpcy5hcHBsaWVkTWl4aW5zLnB1c2gobWl4aW4pO1xuICB9XG5cbiAgaGFzQXBwbGllZE1peGluKG1peGluOiBNaXhpbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwcGxpZWRNaXhpbnMuaW5kZXhPZihtaXhpbikgIT09IC0xO1xuICB9XG5cbiAgZ2V0QXBwbGllZE1peGlucygpOiBNaXhpbltdIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsaWVkTWl4aW5zO1xuICB9XG5cbiAgaGFzU3RhdGljTWl4aW4obWl4aW46IE1peGluKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGljTWl4aW5zLmluZGV4T2YobWl4aW4pICE9PSAtMTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUFsbE1peGlucyhTdWJjbGFzczogR2xpbW1lck9iamVjdEZhY3Rvcnk8YW55PiwgUGFyZW50OiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+KSB7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0TWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kUHJvdG90eXBlT250byhTdWJjbGFzcywgUGFyZW50KSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uZ2V0U3RhdGljTWl4aW5zKCkuZm9yRWFjaCgobTogTWl4aW4pID0+IG0uZXh0ZW5kU3RhdGljKFN1YmNsYXNzKSk7XG4gICAgU3ViY2xhc3NbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG5cbiAgYWRkU3ViY2xhc3MoY29uc3RydWN0b3I6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4pIHtcbiAgICB0aGlzLnN1YmNsYXNzZXMucHVzaChjb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBnZXRTdWJjbGFzc2VzKCk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT5bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViY2xhc3NlcztcbiAgfVxuXG4gIGFkZFByb3BlcnR5TWV0YWRhdGEocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgfVxuXG4gIG1ldGFkYXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YVtwcm9wZXJ0eV07XG4gIH1cblxuICBhZGRSZWZlcmVuY2VUeXBlRm9yKHByb3BlcnR5OiBzdHJpbmcsIHR5cGU6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+KSB7XG4gICAgdGhpcy5yZWZlcmVuY2VUeXBlc1twcm9wZXJ0eV0gPSB0eXBlO1xuICB9XG5cbiAgYWRkU2xvdEZvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgdGhpcy5zbG90cy5wdXNoKHByb3BlcnR5KTtcbiAgfVxuXG4gIGhhc0NvbmNhdGVuYXRlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0Q29uY2F0ZW5hdGVkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29uY2F0ZW5hdGVkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRDb25jYXRlbmF0ZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmICgocHJvcGVydHkgYXMgc3RyaW5nKSBpbiB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpIHtcbiAgICAgIGxldCB2YWwgPSB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldLmNvbmNhdCh2YWx1ZSk7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcGVydHldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgaGFzTWVyZ2VkUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChwcm9wZXJ0eSBhcyBzdHJpbmcpIGluIHRoaXMubWVyZ2VkUHJvcGVydGllcztcbiAgfVxuXG4gIGdldE1lcmdlZFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldO1xuICB9XG5cbiAgZ2V0TWVyZ2VkUHJvcGVydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWVyZ2VkUHJvcGVydGllcykgYXMgc3RyaW5nW107XG4gIH1cblxuICBhZGRNZXJnZWRQcm9wZXJ0eShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogT2JqZWN0KSB7XG4gICAgdGhpcy5oYXNNZXJnZWRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgWW91IHBhc3NlZCBpbiBcXGAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHZhbHVlXG4gICAgICAgICl9XFxgIGFzIHRoZSB2YWx1ZSBmb3IgXFxgZm9vXFxgIGJ1dCBcXGBmb29cXGAgY2Fubm90IGJlIGFuIEFycmF5YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoKHByb3BlcnR5IGFzIHN0cmluZykgaW4gdGhpcy5tZXJnZWRQcm9wZXJ0aWVzICYmIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSBtZXJnZU1lcmdlZFByb3BlcnRpZXMoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXNbcHJvcGVydHldXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlID09PSBudWxsID8gdmFsdWUgOiB2YWx1ZSB8fCB7fTtcbiAgICAgIHRoaXMubWVyZ2VkUHJvcGVydGllc1twcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWZlcmVuY2VUeXBlcygpOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gIH1cblxuICBnZXRQcm9wZXJ0eU1ldGFkYXRhKCk6IERpY3Q8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlNZXRhZGF0YTtcbiAgfVxuXG4gIHJlc2V0KHBhcmVudDogT3B0aW9uPENsYXNzTWV0YT4pIHtcbiAgICB0aGlzLnJlZmVyZW5jZVR5cGVzID0gZGljdDxJbm5lclJlZmVyZW5jZUZhY3Rvcnk8YW55Pj4oKTtcbiAgICB0aGlzLnByb3BlcnR5TWV0YWRhdGEgPSBkaWN0KCk7XG4gICAgdGhpcy5jb25jYXRlbmF0ZWRQcm9wZXJ0aWVzID0gZGljdDxhbnlbXT4oKTtcbiAgICB0aGlzLm1lcmdlZFByb3BlcnRpZXMgPSBkaWN0PE9iamVjdD4oKTtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIHRoaXMuaGFzQ29uY2F0ZW5hdGVkUHJvcGVydGllcyA9IHBhcmVudC5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzO1xuICAgICAgZm9yIChsZXQgcHJvcCBpbiBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllcykge1xuICAgICAgICB0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXNbcHJvcF0gPSBwYXJlbnQuY29uY2F0ZW5hdGVkUHJvcGVydGllc1twcm9wXS5zbGljZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmhhc01lcmdlZFByb3BlcnRpZXMgPSBwYXJlbnQuaGFzTWVyZ2VkUHJvcGVydGllcztcbiAgICAgIGZvciAobGV0IHByb3AgaW4gcGFyZW50Lm1lcmdlZFByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5tZXJnZWRQcm9wZXJ0aWVzW3Byb3BdID0gYXNzaWduKHt9LCBwYXJlbnQubWVyZ2VkUHJvcGVydGllc1twcm9wXSk7XG4gICAgICB9XG5cbiAgICAgIGFzc2lnbih0aGlzLnJlZmVyZW5jZVR5cGVzLCBwYXJlbnQucmVmZXJlbmNlVHlwZXMpO1xuICAgICAgYXNzaWduKHRoaXMucHJvcGVydHlNZXRhZGF0YSwgcGFyZW50LnByb3BlcnR5TWV0YWRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2VhbChvYmo6IE9iamVjdCkge1xuICAgIGxldCBtZXRhID0gTWV0YS5mb3Iob2JqKTtcbiAgICBsZXQgZnJlc2ggPSBuZXcgdGhpcy5JbnN0YW5jZU1ldGFDb25zdHJ1Y3RvciEob2JqLCB7fSk7XG4gICAgbGV0IHJlZmVyZW5jZVR5cGVzID0gbWV0YS5nZXRSZWZlcmVuY2VUeXBlcygpO1xuICAgIGxldCBzbG90cyA9IG1ldGEuZ2V0U2xvdHMoKTtcblxuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihyZWZlcmVuY2VUeXBlcywgdGhpcy5yZWZlcmVuY2VUeXBlcykpO1xuICAgIHR1cmJvY2hhcmdlKGFzc2lnbihzbG90cywgZnJlc2guZ2V0U2xvdHMoKSkpO1xuICB9XG5cbiAgc2VhbCgpIHtcbiAgICBsZXQgcmVmZXJlbmNlVHlwZXM6IERpY3Q8SW5uZXJSZWZlcmVuY2VGYWN0b3J5PGFueT4+ID0gdHVyYm9jaGFyZ2UoXG4gICAgICBhc3NpZ24oe30sIHRoaXMucmVmZXJlbmNlVHlwZXMpXG4gICAgKTtcbiAgICB0dXJib2NoYXJnZSh0aGlzLmNvbmNhdGVuYXRlZFByb3BlcnRpZXMpO1xuICAgIHR1cmJvY2hhcmdlKHRoaXMubWVyZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoIXRoaXMuaGFzTWVyZ2VkUHJvcGVydGllcyAmJiAhdGhpcy5oYXNDb25jYXRlbmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLmluaXQgPSBmdW5jdGlvbigpIHt9O1xuICAgIH1cblxuICAgIGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cbiAgICBjbGFzcyBTbG90cyB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc2xvdHMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgICAgICB0aGlzW25hbWVdID0gRU1QVFlfQ0FDSEU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuSW5zdGFuY2VNZXRhQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIFNlYWxlZE1ldGEge1xuICAgICAgcHJvdGVjdGVkIHNsb3RzOiBTbG90cyA9IG5ldyBTbG90cygpO1xuICAgICAgcHVibGljIHJlZmVyZW5jZVR5cGVzOiBEaWN0PElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+PiA9IHJlZmVyZW5jZVR5cGVzO1xuXG4gICAgICBnZXRSZWZlcmVuY2VUeXBlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXM7XG4gICAgICB9XG5cbiAgICAgIHJlZmVyZW5jZVR5cGVGb3IocHJvcGVydHk6IHN0cmluZyk6IElubmVyUmVmZXJlbmNlRmFjdG9yeTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVHlwZXNbcHJvcGVydHldIHx8IFByb3BlcnR5UmVmZXJlbmNlO1xuICAgICAgfVxuXG4gICAgICBnZXRTbG90cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2xvdHM7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHR1cmJvY2hhcmdlKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWVyZ2VkUHJvcGVydGllcyhhdHRyczogT2JqZWN0LCBwYXJlbnQ6IE9iamVjdCkge1xuICBsZXQgbWVyZ2VkID0gYXNzaWduKHt9LCBwYXJlbnQpO1xuXG4gIGZvciAobGV0IHByb3AgaW4gYXR0cnMpIHtcbiAgICBpZiAocHJvcCBpbiBwYXJlbnQgJiYgdHlwZW9mIHBhcmVudFtwcm9wXSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgYXR0cnNbcHJvcF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCB3cmFwcGVkID0gd3JhcE1ldGhvZChwYXJlbnQsIHByb3AsIGF0dHJzW3Byb3BdKTtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IHdyYXBwZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtwcm9wXSA9IGF0dHJzW3Byb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXJnZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZU1ldGEgZXh0ZW5kcyBDbGFzc01ldGEge1xuICBwdWJsaWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IENsYXNzTWV0YSA9IENsYXNzTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuXG4gIHN0YXRpYyBmcm9tUGFyZW50KHBhcmVudDogT3B0aW9uPEluc3RhbmNlTWV0YT4pOiBJbnN0YW5jZU1ldGEge1xuICAgIHJldHVybiBzdXBlci5mcm9tUGFyZW50KHBhcmVudCkgYXMgSW5zdGFuY2VNZXRhO1xuICB9XG5cbiAgcmVzZXQocGFyZW50OiBJbnN0YW5jZU1ldGEpIHtcbiAgICBzdXBlci5yZXNldChwYXJlbnQpO1xuICAgIGlmIChwYXJlbnQpIHRoaXNbQ0xBU1NfTUVUQV0ucmVzZXQocGFyZW50W0NMQVNTX01FVEFdKTtcbiAgfVxuXG4gIHNlYWwoKSB7XG4gICAgc3VwZXIuc2VhbCgpO1xuICAgIHRoaXNbQ0xBU1NfTUVUQV0uc2VhbCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsaW1tZXJPYmplY3Qge1xuICBzdGF0aWMgJ2RmOGJlNGM4LTRlODktNDRlMi1hOGY5LTU1MGM4ZGFjZGNhNyc6IEluc3RhbmNlTWV0YSA9IEluc3RhbmNlTWV0YS5mcm9tUGFyZW50KG51bGwpO1xuICBzdGF0aWMgaXNDbGFzcyA9IHRydWU7XG5cbiAgc3RhdGljIGV4dGVuZCgpOiBHbGltbWVyT2JqZWN0RmFjdG9yeTxhbnk+ICYgdHlwZW9mIEdsaW1tZXJPYmplY3Q7XG4gIHN0YXRpYyBleHRlbmQ8VD4oZXh0ZW5zaW9uOiBUKTogR2xpbW1lck9iamVjdEZhY3Rvcnk8VD4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcbiAgc3RhdGljIGV4dGVuZCguLi5leHRlbnNpb25zOiBPYmplY3RbXSk6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4gJiB0eXBlb2YgR2xpbW1lck9iamVjdDtcblxuICBzdGF0aWMgZXh0ZW5kKHRoaXM6IEdsaW1tZXJPYmplY3RGYWN0b3J5PGFueT4sIC4uLmV4dGVuc2lvbnM6IGFueVtdKSB7XG4gICAgcmV0dXJuIGV4dGVuZENsYXNzKHRoaXMsIC4uLmV4dGVuc2lvbnMpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShhdHRycz86IE9iamVjdCB8IG51bGwpOiBHbGltbWVyT2JqZWN0IHtcbiAgICByZXR1cm4gbmV3IHRoaXMoYXR0cnMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbjxVPihleHRlbnNpb25zOiBVKTogdm9pZCB7XG4gICAgdG9NaXhpbihleHRlbnNpb25zKS5leHRlbmRQcm90b3R5cGUodGhpcyk7XG4gICAgdGhpc1tDTEFTU19NRVRBXS5zZWFsKCk7XG5cbiAgICByZWxpbmtTdWJjbGFzc2VzKHRoaXMpO1xuICB9XG5cbiAgc3RhdGljIHJlb3BlbkNsYXNzPFU+KGV4dGVuc2lvbnM6IFUpOiB2b2lkIHtcbiAgICB0b01peGluKGV4dGVuc2lvbnMpLmV4dGVuZFN0YXRpYyh0aGlzKTtcbiAgICB0aGlzW0NMQVNTX01FVEFdLnNlYWwoKTtcbiAgfVxuXG4gIHN0YXRpYyBtZXRhRm9yUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IE9iamVjdCB7XG4gICAgbGV0IHZhbHVlID0gdGhpc1tDTEFTU19NRVRBXS5tZXRhZGF0YUZvclByb3BlcnR5KHByb3BlcnR5KTtcbiAgICBpZiAoIXZhbHVlKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWV0YUZvclByb3BlcnR5KCkgY291bGQgbm90IGZpbmQgYSBjb21wdXRlZCBwcm9wZXJ0eSB3aXRoIGtleSAnJHtwcm9wZXJ0eX0nLmBcbiAgICAgICk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGVhY2hDb21wdXRlZFByb3BlcnR5KGNhbGxiYWNrOiAoczogc3RyaW5nLCBvOiBPYmplY3QpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBsZXQgbWV0YWRhdGEgPSB0aGlzW0NMQVNTX01FVEFdLmdldFByb3BlcnR5TWV0YWRhdGEoKTtcbiAgICBpZiAoIW1ldGFkYXRhKSByZXR1cm47XG5cbiAgICBmb3IgKGxldCBwcm9wIGluIG1ldGFkYXRhKSB7XG4gICAgICBjYWxsYmFjayhwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgfVxuICB9XG5cbiAgX3N1cGVyID0gUk9PVDtcbiAgX21ldGEgPSBudWxsO1xuICBfZ3VpZCE6IG51bWJlcjsgLy8gU2V0IGJ5IGluaXRpYWxpemVHdWlkKHRoaXMpIGluIGNvbnN0cnVjdG9yXG5cbiAgaW5pdCgpIHt9XG5cbiAgY29uc3RydWN0b3IoYXR0cnM/OiBPYmplY3QgfCBudWxsKSB7XG4gICAgaWYgKGF0dHJzKSBhc3NpZ24odGhpcywgYXR0cnMpO1xuICAgICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBHbGltbWVyT2JqZWN0KVtDTEFTU19NRVRBXS5pbml0KHRoaXMsIGF0dHJzIHx8IG51bGwpO1xuICAgIHRoaXMuX3N1cGVyID0gUk9PVDtcbiAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXNba2V5XTtcbiAgfVxuXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXNba2V5XSA9IHZhbHVlO1xuICAgIGJ1bXAoKTtcbiAgfVxuXG4gIHNldFByb3BlcnRpZXMoYXR0cnM6IE9iamVjdCkge1xuICAgIGFzc2lnbih0aGlzLCBhdHRycyk7XG4gICAgYnVtcCgpO1xuICB9XG5cbiAgZGVzdHJveSgpIHt9XG59XG4iXX0= |
@@ -23,2 +23,2 @@ var HAS_SUPER_PATTERN = /\.(_super|call\(this|apply\(this)/; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQU0sQUFBaUIsb0JBQUcsQUFBbUMsQUFBQztBQUU5RCxBQUFNLFdBQU8sQUFBYSw0QkFDeEI7UUFBSSxBQUFlLDhCQUVmLEFBQU07ZUFBQyxBQUFJLEFBQUMsQUFDZCxBQUFDO0FBRkQsTUFHRyxBQUFRLEFBQUUsV0FDVixBQUFPLFFBQUMsQUFBYSxBQUFDLGlCQUFHLENBQUMsQUFBQyxBQUFDLEFBRWpDLEFBQUUsQUFBQztRQUFDLEFBQWUsQUFBQyxpQkFBQyxBQUFDLEFBQ3BCLEFBQU07ZUFBQyx1QkFBdUIsQUFBYyxNQUMxQyxBQUFNO21CQUFDLEFBQWlCLGtCQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBUSxBQUFFLEFBQUMsQUFBQyxBQUNqRCxBQUFDLEFBQUMsQUFDSjtBQUFDO0FBRUQsQUFBTTtXQUFDLHlCQUNMLEFBQU07ZUFBQyxBQUFJLEFBQUMsQUFDZCxBQUFDLEFBQUMsQUFDSjtBQUFDLEFBQUMsQUFBRSxBQUFDO0FBakJFLEFBQXNCLENBQUM7QUFtQjlCLEFBQU0sZ0JBQWUsQUFBRyxBQUFZLE9BQUcsQUFBQztBQUN2QyxBQUFZLEtBQUMsQUFBVSxhQUFHLEFBQUssQUFBQztBQUVqQyxBQUFNLHlCQUFtQixBQUFjLE1BQ3JDLEFBQUUsQUFBQztRQUFDLEFBQUksS0FBQyxBQUFZLEFBQUMsa0JBQUssQUFBUyxBQUFDLFdBQUMsQUFBQyxBQUNyQyxBQUFJO2FBQUMsQUFBWSxBQUFDLGdCQUFHLEFBQWEsY0FBQyxBQUFJLEFBQUMsQUFBQyxBQUMzQyxBQUFDO0FBQ0QsQUFBTTtXQUFDLEFBQUksS0FBQyxBQUFZLEFBQUMsQUFBQyxBQUM1QixBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSEFTX1NVUEVSX1BBVFRFUk4gPSAvXFwuKF9zdXBlcnxjYWxsXFwodGhpc3xhcHBseVxcKHRoaXMpLztcblxuZXhwb3J0IGNvbnN0IGNoZWNrSGFzU3VwZXIgPSAoZnVuY3Rpb24oKSB7XG4gIGxldCBzb3VyY2VBdmFpbGFibGUgPVxuICAgIGZ1bmN0aW9uKHRoaXM6IGFueSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgICAgLnRvU3RyaW5nKClcbiAgICAgIC5pbmRleE9mKCdyZXR1cm4gdGhpcycpID4gLTE7XG5cbiAgaWYgKHNvdXJjZUF2YWlsYWJsZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiBjaGVja0hhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gSEFTX1NVUEVSX1BBVFRFUk4udGVzdChmdW5jLnRvU3RyaW5nKCkpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn0pKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBST09UKC4uLl9hcmdzOiBhbnlbXSkge31cbihST09UIGFzIGFueSkuX19oYXNTdXBlciA9IGZhbHNlO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzU3VwZXIoZnVuYzogRnVuY3Rpb24pIHtcbiAgaWYgKGZ1bmNbJ19faGFzU3VwZXInXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZnVuY1snX19oYXNTdXBlciddID0gY2hlY2tIYXNTdXBlcihmdW5jKTtcbiAgfVxuICByZXR1cm4gZnVuY1snX19oYXNTdXBlciddO1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9vYmplY3QvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQU0sQUFBaUIsb0JBQUcsQUFBbUMsQUFBQztBQUU5RCxBQUFNLFdBQU8sQUFBYSw0QkFDeEI7UUFBSSxBQUFlLDhCQUVmO2VBQU8sQUFBSSxBQUFDLEFBQ2QsQUFBQztBQUZELE1BR0csQUFBUSxBQUFFLFdBQ1YsQUFBTyxRQUFDLEFBQWEsQUFBQyxpQkFBRyxDQUFDLEFBQUMsQUFBQyxBQUVqQztRQUFJLEFBQWUsaUJBQUUsQUFDbkI7ZUFBTyx1QkFBdUIsQUFBYyxNQUMxQzttQkFBTyxBQUFpQixrQkFBQyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQVEsQUFBRSxBQUFDLEFBQUMsQUFDakQsQUFBQyxBQUFDO0FBQ0g7QUFFRDtXQUFPLHlCQUNMO2VBQU8sQUFBSSxBQUFDLEFBQ2QsQUFBQyxBQUFDLEFBQ0o7QUFBQyxBQUFDLEFBQUUsQUFBQztBQWpCRSxBQUFzQixDQUFDO0FBbUI5QixBQUFNLGdCQUFlLEFBQUcsQUFBWSxPQUFHLEFBQUM7QUFDdkMsQUFBWSxLQUFDLEFBQVUsYUFBRyxBQUFLLEFBQUM7QUFFakMsQUFBTSx5QkFBbUIsQUFBYyxNQUNyQztRQUFJLEFBQUksS0FBQyxBQUFZLEFBQUMsa0JBQUssQUFBUyxXQUFFLEFBQ3BDLEFBQUk7YUFBQyxBQUFZLEFBQUMsZ0JBQUcsQUFBYSxjQUFDLEFBQUksQUFBQyxBQUFDLEFBQzFDO0FBQ0Q7V0FBTyxBQUFJLEtBQUMsQUFBWSxBQUFDLEFBQUMsQUFDNUIsQUFBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEhBU19TVVBFUl9QQVRURVJOID0gL1xcLihfc3VwZXJ8Y2FsbFxcKHRoaXN8YXBwbHlcXCh0aGlzKS87XG5cbmV4cG9ydCBjb25zdCBjaGVja0hhc1N1cGVyID0gKGZ1bmN0aW9uKCkge1xuICBsZXQgc291cmNlQXZhaWxhYmxlID1cbiAgICBmdW5jdGlvbih0aGlzOiBhbnkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAgIC50b1N0cmluZygpXG4gICAgICAuaW5kZXhPZigncmV0dXJuIHRoaXMnKSA+IC0xO1xuXG4gIGlmIChzb3VyY2VBdmFpbGFibGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2hlY2tIYXNTdXBlcihmdW5jOiBGdW5jdGlvbikge1xuICAgICAgcmV0dXJuIEhBU19TVVBFUl9QQVRURVJOLnRlc3QoZnVuYy50b1N0cmluZygpKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrSGFzU3VwZXIoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG59KSgpO1xuXG5leHBvcnQgZnVuY3Rpb24gUk9PVCguLi5fYXJnczogYW55W10pIHt9XG4oUk9PVCBhcyBhbnkpLl9faGFzU3VwZXIgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1N1cGVyKGZ1bmM6IEZ1bmN0aW9uKSB7XG4gIGlmIChmdW5jWydfX2hhc1N1cGVyJ10gPT09IHVuZGVmaW5lZCkge1xuICAgIGZ1bmNbJ19faGFzU3VwZXInXSA9IGNoZWNrSGFzU3VwZXIoZnVuYyk7XG4gIH1cbiAgcmV0dXJuIGZ1bmNbJ19faGFzU3VwZXInXTtcbn1cbiJdfQ== |
@@ -57,2 +57,2 @@ import GlimmerObject, { GlimmerObjectFactory, ClassMeta } from './object'; | ||
} | ||
export declare function wrapMethod(home: Object, methodName: string, original: (...args: any[]) => any): Function; | ||
export declare function wrapMethod(home: Object, methodName: string, original: (...args: any[]) => any): (this: GlimmerObject, ...args: any[]) => any; |
@@ -53,3 +53,3 @@ import { Meta, InnerReferenceFactory } from '@glimmer/object-reference'; | ||
addSubclass(constructor: GlimmerObjectFactory<any>): void; | ||
getSubclasses(): Function[]; | ||
getSubclasses(): GlimmerObjectFactory<any>[]; | ||
addPropertyMetadata(property: string, value: any): void; | ||
@@ -56,0 +56,0 @@ metadataForProperty(property: string): Object; |
{ | ||
"name": "@glimmer/object", | ||
"version": "0.34.6", | ||
"version": "0.34.7", | ||
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/object", | ||
"dependencies": { | ||
"@glimmer/object-reference": "^0.34.6", | ||
"@glimmer/util": "^0.34.6" | ||
"@glimmer/object-reference": "^0.34.7", | ||
"@glimmer/reference": "^0.34.7", | ||
"@glimmer/util": "^0.34.7" | ||
}, | ||
"devDependencies": { | ||
"typescript": "^2.2.0", | ||
"typescript": "^2.8.3", | ||
"@types/qunit": "^2.0.31" | ||
@@ -12,0 +13,0 @@ }, |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
4813
565947
3
+ Added@glimmer/reference@^0.34.7
Updated@glimmer/util@^0.34.7